@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 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.6.4...HEAD
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. The release environment
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
@@ -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. The release job
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 basic Codex, Claude Code, and Claude Desktop availability.
5
+ Resolved for Codex, Claude Code, and Claude Desktop availability.
6
6
 
7
- Codex, Claude Code, and Claude Desktop now launch the source repo MCP server
8
- directly from its built `dist/index.js` entrypoint with a pinned Node binary.
9
- The direct server reads credentials from `~/.agent-bridge/config`, so client
10
- configs no longer need to duplicate the Supabase URL or anon key.
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 code still exists as an optional signed attribution
15
- layer.
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
- - `src/server.ts` now reads `~/.agent-bridge/config` when env credentials are
50
- absent. Env values still take precedence.
51
- - `test/server_factory.test.ts` covers config-file fallback, env precedence,
52
- quoted config values, explicit config paths, and missing credentials.
53
- - Local Codex, Claude Code, and Claude Desktop configs now launch the source
54
- MCP server directly with `/opt/homebrew/bin/node` and only set
55
- `AGENT_BRIDGE_AGENT`.
56
- - The dead Codex, Claude Code, and Claude Desktop wrapper launchd jobs were
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
- - The internal wrapper installer now prefers `/opt/homebrew/bin/node` by default
59
- while still honoring `NODE_BIN`.
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
- Keep the signed wrapper for attribution receipts and local-substrate metadata.
64
- Do not make it the only Agent Bridge path for Codex, Claude Code, or Claude
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
- Only reinstall those wrapper jobs as active client targets after the wrapper has
68
- health-based supervision. A loaded launchd label is not proof that Agent Bridge
69
- MCP is available. The proof is a successful `/mcp/health` probe and a real MCP
70
- tool call.
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
- - `npm test`: 24 tests passed.
75
- - `npm run build`: passed.
76
- - Direct stdio MCP smoke: listed `post_context`, `get_context`, and
77
- `ack_context`, then read live context.
78
- - CLI status: returned `{"status":"ok","message":"Agent Bridge is connected to Supabase"}`.
79
- - Claude Desktop launch proof: fresh Desktop log showed `initialize` and
80
- `tools/list` succeeding against the direct source MCP entrypoint.
81
- - Wrapper cleanup: Codex, Claude Code, and Claude Desktop wrapper labels are
82
- absent, and their launchd plist files are absent.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creatornader/agent-bridge",
3
- "version": "0.7.4",
3
+ "version": "0.7.7",
4
4
  "description": "Let AI agents message each other and hand off work across tools, sessions, and machines.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",