@creatornader/agent-bridge 0.7.4 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/README.md +3 -1
- package/docs/deployment.md +9 -1
- package/docs/postmortems/2026-07-08-wrapper-source-drift.md +48 -33
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,31 @@ All notable changes to agent-bridge are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.7.7] - 2026-07-30
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Publish the packed package before checking npm for immutable release recovery.
|
|
14
|
+
|
|
15
|
+
## [0.7.6] - 2026-07-30
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Read release package metadata directly from the verified tarball before checking
|
|
20
|
+
the immutable npm version during recovery.
|
|
21
|
+
|
|
22
|
+
## [0.7.5] - 2026-07-30
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Create a canonical immutable GitHub Release only after the tagged gateway and npm
|
|
27
|
+
publication gates succeed. Release pages now use the same tag and `Agent Bridge
|
|
28
|
+
v<version>` title for every new version.
|
|
29
|
+
- Make release recovery verify an already published package from the packed artifact
|
|
30
|
+
instead of failing on an immutable npm version.
|
|
31
|
+
|
|
7
32
|
## [0.7.4] - 2026-07-30
|
|
8
33
|
|
|
9
34
|
### Fixed
|
|
@@ -528,7 +553,14 @@ First tagged release. Marks the point where agent-bridge has shipped its initial
|
|
|
528
553
|
- Narrative-leak detection in CI + on commit via `creatornader/textleaks@v0.2.0` (renamed from leakguard).
|
|
529
554
|
|
|
530
555
|
[0.1.0]: https://github.com/creatornader/agent-bridge/releases/tag/v0.1.0
|
|
531
|
-
[Unreleased]: https://github.com/creatornader/agent-bridge/compare/v0.
|
|
556
|
+
[Unreleased]: https://github.com/creatornader/agent-bridge/compare/v0.7.7...HEAD
|
|
557
|
+
[0.7.7]: https://github.com/creatornader/agent-bridge/compare/v0.7.6...v0.7.7
|
|
558
|
+
[0.7.6]: https://github.com/creatornader/agent-bridge/compare/v0.7.5...v0.7.6
|
|
559
|
+
[0.7.5]: https://github.com/creatornader/agent-bridge/compare/v0.7.4...v0.7.5
|
|
560
|
+
[0.7.4]: https://github.com/creatornader/agent-bridge/compare/v0.7.3...v0.7.4
|
|
561
|
+
[0.7.3]: https://github.com/creatornader/agent-bridge/compare/v0.7.2...v0.7.3
|
|
562
|
+
[0.7.2]: https://github.com/creatornader/agent-bridge/compare/v0.7.1...v0.7.2
|
|
563
|
+
[0.7.1]: https://github.com/creatornader/agent-bridge/compare/v0.7.0...v0.7.1
|
|
532
564
|
[0.6.4]: https://github.com/creatornader/agent-bridge/compare/v0.6.3...v0.6.4
|
|
533
565
|
[0.6.3]: https://github.com/creatornader/agent-bridge/compare/v0.6.2...v0.6.3
|
|
534
566
|
[0.6.2]: https://github.com/creatornader/agent-bridge/compare/v0.6.1...v0.6.2
|
package/README.md
CHANGED
|
@@ -150,7 +150,9 @@ The authenticated check compares the running package and Git revision with the
|
|
|
150
150
|
intended release. It also requires protocol 2.1, request authority, and row isolation.
|
|
151
151
|
It prints no credential. A missing or different revision stops the rollout.
|
|
152
152
|
|
|
153
|
-
Release tags run this deployment gate before npm publication.
|
|
153
|
+
Release tags run this deployment gate before npm publication. After the package is
|
|
154
|
+
published, the workflow creates the immutable GitHub Release for the same tag with
|
|
155
|
+
the canonical title `Agent Bridge v<version>`. The release environment
|
|
154
156
|
must define `AGENT_BRIDGE_FLY_APP` and `AGENT_BRIDGE_GATEWAY_ORIGIN`, and keep
|
|
155
157
|
`FLY_API_TOKEN` plus `RELEASE_VERIFY_TOKEN` as protected secrets. The manual `gateway
|
|
156
158
|
production proof` workflow tests the deployed gateway after this gate passes. GitHub
|
package/docs/deployment.md
CHANGED
|
@@ -271,7 +271,9 @@ messages before choosing one authority. If schema or data recovery is required,
|
|
|
271
271
|
restore the verified native DR bundle into a fresh target and switch authority once.
|
|
272
272
|
Do not run the source and restored database as active authorities at the same time.
|
|
273
273
|
|
|
274
|
-
Release tags deploy the exact tagged revision before npm publication.
|
|
274
|
+
Release tags deploy the exact tagged revision before npm publication. After successful
|
|
275
|
+
package publication, the release job creates the immutable GitHub Release for that
|
|
276
|
+
same tag. The release job
|
|
275
277
|
uses the approval-protected `agent-bridge-production-proof` environment. Configure
|
|
276
278
|
`AGENT_BRIDGE_FLY_APP` and `AGENT_BRIDGE_GATEWAY_ORIGIN` as environment variables, and
|
|
277
279
|
configure `PROOF_SENDER_TOKEN`, `PROOF_RECEIVER_TOKEN`, `PROOF_HOST_SALT`, and
|
|
@@ -280,6 +282,12 @@ for the release job. It runs the read-only Fly preflight, deploys the image with
|
|
|
280
282
|
checked-out revision, requires `/readyz`, and verifies the running package version and
|
|
281
283
|
revision. A failed deployment or identity check stops npm publication.
|
|
282
284
|
|
|
285
|
+
To recover a release workflow, dispatch it from the release tag itself and provide the
|
|
286
|
+
same tag as the input. The workflow verifies an already published package by its name
|
|
287
|
+
and version from the packed artifact, then leaves that immutable npm version intact.
|
|
288
|
+
It also leaves an existing GitHub Release intact. A recovery run cannot publish a
|
|
289
|
+
different package under the tag.
|
|
290
|
+
|
|
283
291
|
The manual `gateway production proof` GitHub Actions workflow runs its acceptance
|
|
284
292
|
proof against that deployed HTTPS gateway. GitHub restricts it to `main`, and every job
|
|
285
293
|
uses the same approval-protected environment. Use a release-specific proof workspace
|
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
4
|
|
|
5
|
-
Resolved for
|
|
5
|
+
Resolved for Codex, Claude Code, and Claude Desktop availability.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
The public package now owns the local MCP path. Each client has a public
|
|
8
|
+
`agent-bridge-loopback-host` launchd service that binds only its assigned
|
|
9
|
+
loopback port and serves `/mcp/health` plus Streamable HTTP MCP. Claude Desktop
|
|
10
|
+
uses the public `agent-bridge-stdio-http-proxy` to reach its local host. The
|
|
11
|
+
client services read owner-private backend files, so registrations do not need
|
|
12
|
+
to duplicate gateway credentials.
|
|
11
13
|
|
|
12
14
|
The broken Codex, Claude Code, and Claude Desktop signed-wrapper launchd jobs
|
|
13
15
|
were removed after their labels stayed loaded while `/mcp/health` refused
|
|
14
|
-
connections. The wrapper
|
|
15
|
-
|
|
16
|
+
connections. The wrapper remains an optional signed attribution layer outside
|
|
17
|
+
the public Agent Bridge runtime.
|
|
16
18
|
|
|
17
19
|
## Impact
|
|
18
20
|
|
|
@@ -40,43 +42,56 @@ it required `AGENT_BRIDGE_URL` and `AGENT_BRIDGE_KEY` in process env. The CLI
|
|
|
40
42
|
already read `~/.agent-bridge/config`, so the two source-repo entrypoints had
|
|
41
43
|
drifted.
|
|
42
44
|
|
|
45
|
+
The first public-host release also exposed a package-distribution defect. npm
|
|
46
|
+
executes package bins through a symlink, while the host and proxy used a source
|
|
47
|
+
file entrypoint check that compared the unresolved `argv[1]` path. Their
|
|
48
|
+
install commands therefore returned success without starting a service.
|
|
49
|
+
|
|
50
|
+
The release workflow published valid npm versions but did not create matching
|
|
51
|
+
GitHub Release objects. This made the release page incomplete and left older
|
|
52
|
+
titles inconsistent.
|
|
53
|
+
|
|
43
54
|
During recovery, the wrapper installer also selected `node` from ambient
|
|
44
55
|
`PATH`. That allowed restarts to drift to a local Node shim instead of the
|
|
45
56
|
Homebrew Node binary that had previously run the service.
|
|
46
57
|
|
|
47
58
|
## Fixes
|
|
48
59
|
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
- The public package provides a long-lived loopback host, health endpoint, and
|
|
61
|
+
Claude Desktop stdio proxy. It installs launchd services only after health
|
|
62
|
+
proves the socket is listening, and uninstalls them only after the socket
|
|
63
|
+
closes.
|
|
64
|
+
- The host and proxy resolve the invoked file before deciding whether to run as
|
|
65
|
+
a CLI. Their global npm bins now work through npm's symlink layout.
|
|
66
|
+
- Package-install smoke invokes both public binaries. This catches a silent
|
|
67
|
+
entrypoint failure before publication.
|
|
68
|
+
- Local Codex, Claude Code, and Claude Desktop registrations now point to the
|
|
69
|
+
public client-owned loopback services. The dead private wrapper jobs were
|
|
57
70
|
uninstalled.
|
|
58
|
-
-
|
|
59
|
-
|
|
71
|
+
- Tagged releases now create one immutable GitHub Release after the gateway and
|
|
72
|
+
npm gates pass. New release pages use `Agent Bridge v<version>`. A tag-based
|
|
73
|
+
recovery verifies the immutable package already in npm before continuing.
|
|
60
74
|
|
|
61
75
|
## Wrapper Policy
|
|
62
76
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
Desktop
|
|
77
|
+
Agent Bridge must run fully from its public package. Keep the signed wrapper
|
|
78
|
+
for attribution receipts and local-substrate metadata only. Do not make it an
|
|
79
|
+
availability boundary for Codex, Claude Code, Claude Desktop, or another MCP
|
|
80
|
+
client.
|
|
66
81
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
An active launchd label is not proof that Agent Bridge MCP is available. The
|
|
83
|
+
proof is a successful public `/mcp/health` probe and a real MCP tool call. New
|
|
84
|
+
versions use an immutable `v<version>` tag and the GitHub Release title `Agent
|
|
85
|
+
Bridge v<version>`.
|
|
71
86
|
|
|
72
87
|
## Verification
|
|
73
88
|
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
|
|
89
|
+
- A global-package launchd install bound a disposable loopback port, passed
|
|
90
|
+
`/mcp/health`, then unbound the port after uninstall.
|
|
91
|
+
- Each production Codex, Claude Code, and Claude Desktop public host passed
|
|
92
|
+
`/mcp/health`, completed an MCP handshake, listed 17 tools, and accepted a
|
|
93
|
+
`post_context` write.
|
|
94
|
+
- Each client registration and its identity, instance, and private backend file
|
|
95
|
+
passed managed-client inspection.
|
|
96
|
+
- The three private wrapper labels are absent. The three public launchd labels
|
|
97
|
+
are running and own ports 8794, 8793, and 8791.
|
package/package.json
CHANGED