@creatornader/agent-bridge 0.7.0 → 0.7.3

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,43 @@ 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
+ ## [0.7.3] - 2026-07-30
8
+
9
+ ### Added
10
+
11
+ - Add a public loopback Streamable HTTP MCP host for one exact client identity and
12
+ private backend, plus the public Claude Desktop stdio proxy for the same endpoint.
13
+ The macOS lifecycle installer requires a socket-backed health check before a managed
14
+ Codex or Claude Code registration can depend on that endpoint.
15
+
16
+ ### Changed
17
+
18
+ - Make private wrappers optional observation layers. The published Agent Bridge package
19
+ now owns the client-critical HTTP host and its launchd contract omits the macOS
20
+ scheduler hints that can leave Node running without a listening socket.
21
+
22
+ ### Fixed
23
+
24
+ - Keep the native SQLite backup worker termination check bounded while allowing an
25
+ in-flight SQLite backup enough time to release its worker before cleanup proceeds.
26
+
27
+ ## [0.7.2] - 2026-07-30
28
+
29
+ ### Fixed
30
+
31
+ - Use a dedicated release verification credential. The release gate no longer shares
32
+ the manual production-proof sender credential.
33
+
34
+ ## [0.7.1] - 2026-07-30
35
+
36
+ ### Fixed
37
+
38
+ - Keep a long-lived edge client available after a remote protocol mismatch. The
39
+ affected publication remains blocked, while background synchronization re-probes
40
+ the gateway without replaying that publication.
41
+ - Deploy and verify the exact gateway revision before npm publication. A release now
42
+ stops when the production gateway and package release do not match.
43
+
7
44
  ## [0.7.0] - 2026-07-29
8
45
 
9
46
  ### Added
package/README.md CHANGED
@@ -45,6 +45,36 @@ Restart the client, then run `agent-bridge doctor --json` if the MCP server does
45
45
  attach. The [troubleshooting guide](docs/troubleshooting.md) covers executable paths,
46
46
  client configuration, and recovery steps.
47
47
 
48
+ ## Long-lived loopback MCP host
49
+
50
+ The normal adapters start Agent Bridge through stdio. A machine with many long-lived
51
+ agent sessions can instead run one public Agent Bridge loopback host for each client
52
+ identity. This reduces duplicate edge-store writers without turning the host into a
53
+ shared identity or credential boundary.
54
+
55
+ On macOS, use the public package to install the host with the backend path and stable
56
+ instance returned by `clients install` or `clients inspect`:
57
+
58
+ ```bash
59
+ agent-bridge-loopback-host --install-launchd \
60
+ --service-name codex \
61
+ --config ~/.agent-bridge/clients/<codex-backend>.config \
62
+ --agent codex \
63
+ --instance <stable-key> \
64
+ --port 8794
65
+ curl --fail http://127.0.0.1:8794/mcp/health
66
+ agent-bridge clients update codex --identity codex --instance <stable-key> \
67
+ --mcp-url http://127.0.0.1:8794/mcp --apply
68
+ ```
69
+
70
+ Run the same command with a distinct service name, backend file, identity, stable
71
+ instance, and port for Claude Code. The readiness check is the health request, not a
72
+ launchd process state or a log line. The launchd contract intentionally omits priority
73
+ and background process hints because macOS can keep a Node process alive without
74
+ letting it bind its socket under those hints. Use `--uninstall-launchd --service-name
75
+ <name> --port <port>` only after the client has moved back to a direct stdio
76
+ registration or another verified host. It waits for the listener to close.
77
+
48
78
  ## Run the gateway with Compose
49
79
 
50
80
  The repository includes a loopback-only Compose stack for development and evaluation.
@@ -120,8 +150,11 @@ The authenticated check compares the running package and Git revision with the
120
150
  intended release. It also requires protocol 2.1, request authority, and row isolation.
121
151
  It prints no credential. A missing or different revision stops the rollout.
122
152
 
123
- The manual `gateway production proof` workflow tests an existing gateway after this
124
- deployment gate passes. GitHub must run it from `main` in the protected
153
+ Release tags run this deployment gate before npm publication. The release environment
154
+ must define `AGENT_BRIDGE_FLY_APP` and `AGENT_BRIDGE_GATEWAY_ORIGIN`, and keep
155
+ `FLY_API_TOKEN` plus `RELEASE_VERIFY_TOKEN` as protected secrets. The manual `gateway
156
+ production proof` workflow tests the deployed gateway after this gate passes. GitHub
157
+ must run it from `main` in the protected
125
158
  `agent-bridge-production-proof` environment. Separate sender and receiver jobs prove
126
159
  offline outbox replay, exact idempotency, claim, and acknowledgment. The workflow then
127
160
  restarts the single Fly machine, requires a later successful machine start event, and
@@ -536,8 +569,8 @@ agent-bridge clients update claude-code --identity claude-code --instance <stabl
536
569
  --mcp-url http://127.0.0.1:8793/mcp --apply
537
570
  agent-bridge clients update claude-desktop --identity claude-desktop --instance <stable-key> \
538
571
  --mcp-url http://127.0.0.1:8791/mcp \
539
- --proxy-command /absolute/path/to/node \
540
- --proxy-args-json '["/absolute/path/to/stdio-http-proxy.js","--transport","stdio-http-proxy","--endpoint","http://127.0.0.1:8791/mcp"]' \
572
+ --proxy-command "$(command -v agent-bridge-stdio-http-proxy)" \
573
+ --proxy-args-json '["--endpoint","http://127.0.0.1:8791/mcp"]' \
541
574
  --apply
542
575
  agent-bridge clients repair codex --identity codex --instance <stable-key> \
543
576
  --apply --resume <operation-uuid>
@@ -565,8 +598,9 @@ stays in place because it remains lifecycle and rollback authority even though t
565
598
  native HTTP registration does not receive backend environment variables.
566
599
 
567
600
  Claude Desktop represents the endpoint as stdio. For that runtime, `--mcp-url`
568
- requires an existing absolute `--proxy-command`. `--proxy-args-json` must be a JSON
569
- array of strings. The arguments must contain the exact endpoint and cannot contain
601
+ requires the public absolute `agent-bridge-stdio-http-proxy` command.
602
+ `--proxy-args-json` must be a JSON array of strings. The arguments must contain the
603
+ exact endpoint and cannot contain
570
604
  credential-like flags or values. Claude Desktop replaces only `mcpServers.agent-bridge`,
571
605
  preserves unrelated JSON values in memory, publishes through a private operation-scoped
572
606
  temporary file, and verifies the new entry. Node cannot provide an OS transaction with
package/ROADMAP.md CHANGED
@@ -17,6 +17,9 @@ published and the supported clients pass a fresh end-to-end check.
17
17
  proxy launch for its loopback endpoint. The update preserves backend credentials,
18
18
  upgrades v1 managed metadata to a versioned target contract, and keeps restart and
19
19
  rollback classification intact.
20
+ - The published package can own one socket-checked loopback MCP host per client
21
+ identity. macOS lifecycle installation stays in the public package, and private
22
+ observation wrappers are no longer a client availability dependency.
20
23
 
21
24
  ### Released by 0.3.1
22
25
 
package/SKILL.md CHANGED
@@ -107,6 +107,12 @@ the Agent Bridge entry and retain unrelated JSON values in memory. It publishes
107
107
  a private operation-scoped temporary file. A concurrent same-user Desktop writer can
108
108
  still race this advisory single-file update because Node cannot provide an OS transaction.
109
109
 
110
+ For a long-lived HTTP target, run the public `agent-bridge-loopback-host` with the
111
+ same private backend path, identity, and stable instance that the managed registration
112
+ records. On macOS, `--install-launchd` writes the public lifecycle contract. Verify
113
+ `/mcp/health` before applying a client update. A private wrapper may observe this host,
114
+ but must never be the only client route.
115
+
110
116
  Use `clients uninstall <runtime> --identity <name> --instance <key>` to preview a
111
117
  forward-only removal. With `--apply`, it proves and removes the managed registration,
112
118
  deletes the already private backend file, then deletes metadata. It refuses a backend
package/dist/bridge.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  inspectEdgeScopeReadOnly,
16
16
  isRetryableSyncError,
17
17
  stableIdempotency
18
- } from "./chunk-J6GHXVHC.js";
18
+ } from "./chunk-7EQXQVPD.js";
19
19
  import {
20
20
  SQLiteBridgeStore
21
21
  } from "./chunk-SBVZVXGK.js";
@@ -1053,12 +1053,10 @@ var SyncingBridgeStore = class {
1053
1053
  continue;
1054
1054
  }
1055
1055
  if (report.failureRetryable === false) {
1056
- this.backgroundError = Object.assign(
1057
- new Error(`gateway synchronization failed permanently: ${report.lastError ?? "sync_error"}`),
1058
- { code: report.lastError ?? "sync_error" }
1059
- );
1060
- this.loopState = "failed";
1061
- return;
1056
+ failures = Math.min(failures + 1, 20);
1057
+ this.loopState = "backoff";
1058
+ await this.wait(this.idleDelayMs);
1059
+ continue;
1062
1060
  }
1063
1061
  failures = report.online ? 0 : Math.min(failures + 1, 20);
1064
1062
  this.loopState = report.online ? "idle" : "backoff";
@@ -1521,4 +1519,4 @@ export {
1521
1519
  isRetryableSyncError,
1522
1520
  SyncingBridgeStore
1523
1521
  };
1524
- //# sourceMappingURL=chunk-J6GHXVHC.js.map
1522
+ //# sourceMappingURL=chunk-7EQXQVPD.js.map