Release: version packages#132
Conversation
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved GitHub Actions PR — 8c4110d1
This PR was opened by trusted GitHub Actions automation.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
tangletools · auto-approval · reason: github_actions_author · 2026-07-13T14:41:16Z
✅ No Blockers —
|
tangletools
left a comment
There was a problem hiding this comment.
✅ Clean — 8c4110d1
Full multi-shot audit completed 2/2 planned shots over 2 changed files. Global verifier still owns final merge decision.
Full immutable report for this review: trace
Summary comment for this run: full summary
tangletools · 2026-07-13T14:49:54Z · immutable trace
tangletools
left a comment
There was a problem hiding this comment.
🟢 Value Audit — sound
| Verdict | sound |
| Concerns | 1 (1 weak-concern) |
| Heuristic | 0.0s |
| Duplication | 0.0s |
| Interrogation | 92.0s (2 bridge agents) |
| Total | 92.0s |
💰 Value — sound
Release PR bumps 0.35.2→0.35.3 to ship moving 3 heavy native-binary deps to optionalDependencies with a clean, tested actionable-error helper — idiomatic npm pattern, ships as-is.
- What it does: Ships commit 135558e (PR #131): moves
ai-sdk-provider-codex-cli,ai-sdk-provider-claude-code, andffmpeg-staticfromdependenciestooptionalDependenciesin package.json, and adds aloadOptionalModule()helper (src/optional-dependency.ts) that wraps the 5 dynamic-import sites for the two CLI providers (src/brain/model-client.ts:194,210,255 and src/supervisor/critic.ts:317,332) so a mis - Goals it achieves: Let slim consumers (e.g. agent-thin sandbox runtime images that only run
--provider openai) install withnpm install --omit=optionaland skip ~300MB of platform-native binaries (bundled Codex CLI, Claude Agent SDK's per-platform ripgrep, static ffmpeg). Default installs are unchanged because optionalDependencies install by default — so the full provider/showcase surface keeps working out of th - Assessment: Sound and well-executed.
optionalDependenciesis the correct, idiomatic npm mechanism for exactly this case (heavy optional native binaries). TheloadOptionalModulehelper is the right abstraction: centralized, type-preserving via the thunk, applied consistently at all 5 import sites, unit-tested for the present/missing/unrelated-error paths (tests/optional-dependency.test.ts). ffmpeg-static's - Better / existing approach: none — this is the right approach.
optionalDependenciesis the standard npm mechanism for optional native binaries; no better architecture exists. I searched for a pre-existing optional-dep loader (git log -S 'loadOptionalModule', grep across src/) and found none — this helper is new and not duplicating anything. The two error-handling styles in the codebase (assemble.ts graceful-null vs loadOpt - Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 2
- Bridge warning: opencode/kimi-for-coding/k2p7: bridge stream ended without value-audit content
🎯 Usefulness — sound
Moves heavy CLI-provider/ffmpeg deps to optionalDependencies with a clean runtime loader that turns missing-module errors into actionable guidance — serves a real slim-image use case, fits the codebase's existing graceful-degradation pattern, and breaks nothing on default installs.
- Integration: All three moved packages are reachable and correctly wired. The two CLI-provider adapters are dynamically imported at exactly 5 call sites (model-client.ts:195,211,256 and critic.ts:318,333) and every one now routes through
loadOptionalModule. Grep confirms no remaining bareawait import('ai-sdk-provider-*')outside the wrapper. ffmpeg-static in showcase/assemble.ts:19 was already wrapped in a - Fit with existing patterns: Matches the codebase's established grain. assemble.ts already practiced graceful optional-dep degradation (try ffmpeg-static → fallback system ffmpeg → null). This change extends the same philosophy to the CLI providers with a reusable, unit-tested primitive (optional-dependency.ts, 3 tests covering present/missing/unrelated-error). No competing or duplicated abstraction exists — grep found no oth
- Real-world viability: Holds up on the edge paths that matter. The error matcher checks both Node ESM (
ERR_MODULE_NOT_FOUND) and CJS (MODULE_NOT_FOUND) codes plus a/Cannot find (module|package)/imessage regex (optional-dependency.ts:27-30), so it survives across Node 20/22 and bundler-resolved imports. Unrelated errors pass through unchanged (tested). Default installs are unaffected since optionalDependencies in - Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 1
💰 Value Audit
🟡 Changeset overstates ffmpeg showcase behavior [maintenance] ``
The changeset (which lands verbatim in CHANGELOG.md:7) claims 'bad showcase is run without [ffmpeg-static], the driver now throws an actionable reinstall error.' But src/showcase/assemble.ts:15-31 uses a separate inline try/catch in getFfmpeg() that returns null and makes assembleGif/assembleVideo return false (graceful degradation, no throw). The changeset conflates the two code paths. Functionally fine — the showcase behavior is arguably better than throwing — but the published changelog is in
What this audit checks
It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.
| Pass | What it asks |
|---|---|
| Heuristic | Vague title? Whitespace-only or cruft-bearing diff? (content signals only) |
| Duplication | Do added function/class names already exist elsewhere in the repo? |
| Value Audit | What does it do? What goal does it achieve? Is it good? Better architecture or already-exists? |
| Usefulness Audit | Does it integrate and fit? Will it hold up in real use and actually get used? |
Findings are concerns, not blocks — the human reviewer decides what to do with them.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@tangle-network/browser-agent-driver@0.35.3
Patch Changes
135558eThanks @AtelyPham! - Move the CLI-backed provider adapters (ai-sdk-provider-codex-cli,ai-sdk-provider-claude-code) andffmpeg-statictooptionalDependencies. Consumers that only drive--provider openai— e.g. slim sandbox runtime images — can now install withnpm install --omit=optionalto skip ~300 MB of platform-native binaries (the bundled Codex CLI, the Claude Agent SDK's per-platform ripgrep, and the static ffmpeg). Default installs are unchanged: optional dependencies still install by default, so the full provider/showcase surface works out of the box. When an omitted dependency's provider is selected (including the keylessclaude-codedefault) orbad showcaseis run without it, the driver now throws an actionable "reinstall without --omit=optional" error instead of a rawERR_MODULE_NOT_FOUND.