Version Packages - #198
Conversation
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved GitHub Actions PR — 4d87f8e0
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.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: github_actions_author · 2026-08-16T12:05:32Z
Every internal consumer moves from the exact 1.0.0 that changesets wrote to ^1.0.0. One installed copy now spans every later additive minor, so a consumer tree that holds two first-party packages resolves a single agent-interface. The range rides this release because ^1.0.0 does not satisfy a workspace at 0.56.0, so it could not land on the release PR, and doing it here avoids a second agent-core and six-provider round.
The seven internal ranges ride this release —
|
| package | version | @tangle-network/agent-interface |
|---|---|---|
agent-core |
0.9.4 | ^1.0.0 |
agent-provider-cli-bridge |
0.7.6 | ^1.0.0 |
agent-provider-computesdk |
0.3.14 | ^1.0.0 |
agent-provider-daytona |
0.3.14 | ^1.0.0 |
agent-provider-e2b |
0.3.14 | ^1.0.0 |
agent-provider-tangle |
0.12.2 | ^1.0.0 |
agent-provider-testkit |
0.8.2 | ^1.0.0 |
Why it cannot land on #195 instead
satisfies("0.56.0", "^1.0.0") is false. On #195 the workspace still published 0.56.0, so the artifact check refuses the caret range — correctly. The range only becomes declarable once the workspace manifest reads 1.0.0, which is true here and nowhere earlier. Landing it here also avoids publishing agent-core and six providers twice.
Proof on this head
pnpm install --lockfile-only exit 0 (lockfile unchanged: workspace copies stay link:../agent-interface)
pnpm build exit 0
pnpm check-types exit 0
pnpm check:package-artifacts exit 0 9 packages, 28 exports, 56 export targets
pnpm check:control-artifacts 131 passed
packed tangle-network-agent-interface-1.0.0.tgz
pnpm test 1439 passed
Per-package: interface 438, core 505, cli-bridge 144, tangle 140, trace-contract 182, testkit 24, computesdk/daytona/e2b 2 each.
The diff is 7 files, 7 lines. The lockfile does not move because ^1.0.0 still resolves the workspace copy.
Surface equality, checked rather than asserted
No commit since the #195 merge-base touches packages/agent-interface/src, and #195 changed only that package's README. The published surface of 1.0.0 equals the published surface of 0.56.0.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved GitHub Actions PR — a4f8a335
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.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: github_actions_author · 2026-08-16T12:09:13Z
tangletools
left a comment
There was a problem hiding this comment.
🟢 Value Audit — sound
| Verdict | sound |
| Coverage | 2 of 2 lenses (value, usefulness) |
| Concerns | 0 (none) |
| Heuristic | 0.0s |
| Duplication | 0.0s |
| Interrogation | 145.9s (2 bridge agents) |
| Total | 145.9s |
💰 Value — sound
Standard changesets release that publishes agent-interface 1.0.0 (surface identical to 0.56.0, now with a stated semver promise) and converts every internal consumer from exact pins to ^1.0.0 so one installed copy spans all additive minors — coherent, guarded by existing repo tooling, and shipped in
- What it does: Two commits: (1) the changesets 'Version Packages' bump — agent-interface 0.56.0→1.0.0 with the compatibility-promise changelog, plus patch bumps (agent-core 0.9.4, six providers) with changelogs across 17 files; (2) a manual follow-up (a4f8a33) that rewrites the internal agent-interface dependency in all 7 consuming package.json files from the exact '1.0.0' changesets wrote to '^1.0.0'. No source
- Goals it achieves: Makes the compatibility promise operational: with a stated semver contract (minor=additive, patch=fix, major=removal), a caret range lets a consumer tree holding two first-party packages (e.g. agent-core + a provider) resolve a single agent-interface instead of exact-pin-forced duplicate copies. Riding the release PR is also the only place the caret COULD land — on main the workspace is at 0.56.0,
- Assessment: Good on its merits. The design was prepared in ca3901d (already on main): scripts/check-package-artifacts.mjs:347-388 was extended to require internal ranges to admit the workspace version AND stop below the next major (probing majors +1, +2, 999999), with comments explicitly endorsing caret over exact pins ('an exact pin pulls a second copy into a tree that already holds another') — '^1.0.0' is e
- Better / existing approach: none — this is the right approach. Considered alternatives: (a) pnpm 'workspace:^' protocol, which auto-expands to ^version at publish — but the repo's artifact checker deliberately rejects workspace: specifiers (check-package-artifacts.mjs:341-345) and validates packed-vs-source dependency metadata, so literal ranges are the chosen grain; (b) changesets 'fixed'/'linked' lockstep versioning — woul
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 2
- Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error
🎯 Usefulness — sound
A changesets release PR that publishes agent-interface 1.0.0 (surface-identical to 0.56.0, per the changeset in ca3901d) and consistently moves all 7 internal dependents from exact 0.56.0 pins to ^1.0.0 caret ranges, matching the compatibility promise and its CI enforcement landed in #195.
- Integration: Fully wired. Merging triggers the established release path: .github/workflows/release.yml:35-38 runs changesets/action@v1 with
publish: pnpm changeset:publish(OIDC trusted publishing), the same mechanism as the prior release merge 66cd90b (#197). All consumers of agent-interface were found by grep across package.json files: exactly the 7 dependents bumped here (agent-core, cli-bridge, computesd - Fit with existing patterns: Fits the grain precisely. The caret range is not an arbitrary style choice: scripts/check-package-artifacts.mjs:347-388 (landed in the same series, ca3901d) requires every internal range to admit the workspace version and stop below the next major, and its comment explains that an exact pin pulls a second copy into a tree that already holds another.
^1.0.0satisfies the rule (admits 1.0.0, rejec - Real-world viability: Holds up. For npm consumers, the published dependents now declare ^1.0.0, so a single agent-interface copy satisfies the whole tree under additive minors — the exact failure mode the artifact check documents. The known sharp edge of a caret-on-major (a minor adding a union member breaking
never-based exhaustiveness checks, and consumers needing ^1..0) is explicitly stated as outsid - Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 1
No concerns — sound change, no better or existing approach found. ✅
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/agent-interface@1.0.0
Major Changes
ca3901d: Adopt a stated compatibility promise and release it as 1.0.0.
The published surface of 1.0.0 equals the published surface of 0.56.0.
No export is added, removed, or narrowed by this release.
The version number changes so that a caret range can read the promise the package already keeps.
The promise from this release forward:
Two limits of that promise, stated because a caret range makes them reachable:
switchover an exported union must have adefaultbranch. An exhaustiveness check that assigns the remaining case toneverfails when a minor adds a member, and this promise does not cover it.^1.4.0, because^1.0.0lets a resolver keep 1.0.0.Consumers must declare
^1.<lowest minor used>.0.A caret range admits every later additive minor without a consumer release.
The single-generation window
>=X.Y.0 <X.(Y+1).0is retired and must not be reintroduced.@tangle-network/agent-core@0.9.4
Patch Changes
@tangle-network/agent-provider-cli-bridge@0.7.6
Patch Changes
@tangle-network/agent-provider-computesdk@0.3.14
Patch Changes
@tangle-network/agent-provider-daytona@0.3.14
Patch Changes
@tangle-network/agent-provider-e2b@0.3.14
Patch Changes
@tangle-network/agent-provider-tangle@0.12.2
Patch Changes
@tangle-network/agent-provider-testkit@0.8.2
Patch Changes