@creatornader/agent-bridge 0.3.0 → 0.3.1
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 +25 -5
- package/README.md +102 -28
- package/ROADMAP.md +22 -12
- package/SECURITY.md +18 -1
- package/SKILL.md +1 -1
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/docs/architecture-v2.md +26 -7
- package/docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md +2 -2
- package/docs/decisions/0003-host-adapters-and-consumer-instance-keys.md +88 -0
- package/docs/ecosystem.md +35 -3
- package/llms.txt +12 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,8 +6,25 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
## [0.3.1] - 2026-07-15
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Add `agent-bridge --version` and `agent-bridge -V` commands that print the
|
|
14
|
+
installed package version without loading backend configuration.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Clarify the boundary between agent harnesses, host applications, host adapters, and
|
|
19
|
+
MCP, CLI, HTTPS, and Node library access. Define `AGENT_BRIDGE_INSTANCE` as the
|
|
20
|
+
stable consumer key used for cursor paths, leases, and presence. Supported installers
|
|
21
|
+
generate this key, while direct clients may supply it. Document the released
|
|
22
|
+
no-instance fallbacks and the fact that the key is not a unique live process or
|
|
23
|
+
session.
|
|
24
|
+
- Require manual release recovery to run the workflow at the tag it publishes so npm
|
|
25
|
+
provenance identifies the checked-out release source.
|
|
26
|
+
|
|
27
|
+
## [0.3.0] - 2026-07-15
|
|
11
28
|
|
|
12
29
|
### Control, portability, and recovery
|
|
13
30
|
|
|
@@ -77,7 +94,7 @@ not released until the matching tag, GitHub release, and npm package exist.
|
|
|
77
94
|
- SQLite gateway outbox, inbox cache, restart-safe synchronization, and explicit stale-cache results.
|
|
78
95
|
- Cross-platform Node CLI with init, health, delivery, sync, presence, watch, migration, and client installation commands.
|
|
79
96
|
- Cheap `pending` process gate for unread context or due delivery work.
|
|
80
|
-
-
|
|
97
|
+
- Host-adapter manifests and native installers for Codex, Claude Code, and Claude Desktop.
|
|
81
98
|
- Runtime-neutral `SKILL.md` guidance and an `llms.txt` package map.
|
|
82
99
|
- PostgreSQL migrations with checksum validation and runtime schema readiness checks.
|
|
83
100
|
- Restricted PostgreSQL runtime grants separated from schema migration credentials.
|
|
@@ -86,7 +103,8 @@ not released until the matching tag, GitHub release, and npm package exist.
|
|
|
86
103
|
### Changed
|
|
87
104
|
|
|
88
105
|
- Package identity is `@creatornader/agent-bridge` at version `0.2.0`. The first npm publication was performed manually. OIDC trusted publishing was configured afterward for later releases.
|
|
89
|
-
- Agent
|
|
106
|
+
- Agent principal is injected through the client process. Shared config no longer
|
|
107
|
+
supplies `AGENT_BRIDGE_AGENT`.
|
|
90
108
|
- Exact idempotent replays deduplicate. Reusing a key for changed content returns a conflict.
|
|
91
109
|
- Gateway clients authenticate through separate principal-bound credentials stored in owner-only client backend files.
|
|
92
110
|
- Package-root imports expose the provider-neutral API without starting the MCP server.
|
|
@@ -118,5 +136,7 @@ First tagged release. Marks the point where agent-bridge has shipped its initial
|
|
|
118
136
|
- Narrative-leak detection in CI + on commit via `creatornader/textleaks@v0.2.0` (renamed from leakguard).
|
|
119
137
|
|
|
120
138
|
[0.1.0]: https://github.com/creatornader/agent-bridge/releases/tag/v0.1.0
|
|
121
|
-
[Unreleased]: https://github.com/creatornader/agent-bridge/compare/v0.
|
|
139
|
+
[Unreleased]: https://github.com/creatornader/agent-bridge/compare/v0.3.1...HEAD
|
|
140
|
+
[0.3.1]: https://github.com/creatornader/agent-bridge/compare/v0.3.0...v0.3.1
|
|
141
|
+
[0.3.0]: https://github.com/creatornader/agent-bridge/compare/v0.2.0...v0.3.0
|
|
122
142
|
[0.2.0]: https://github.com/creatornader/agent-bridge/compare/v0.1.0...v0.2.0
|
package/README.md
CHANGED
|
@@ -54,8 +54,9 @@ client configuration, and recovery steps.
|
|
|
54
54
|
- Idempotency conflict detection. Exact replay deduplicates; changed content under the same key fails.
|
|
55
55
|
- Scoped credentials that bind a remote workspace and agent principal.
|
|
56
56
|
- SQLite outbox and inbox cache for gateway clients.
|
|
57
|
-
- Leased
|
|
58
|
-
- MCP, CLI,
|
|
57
|
+
- Leased instance-keyed presence with capabilities.
|
|
58
|
+
- MCP, CLI, HTTPS, and Node library access, plus host adapters for Codex, Claude Code,
|
|
59
|
+
Claude Desktop, OpenClaw, and generic MCP clients.
|
|
59
60
|
- Canonical portable archives for messages and read receipts across local SQLite and shared PostgreSQL stores.
|
|
60
61
|
- Native SQLite and PostgreSQL backup, verification, and restore.
|
|
61
62
|
- Existing `post_context`, `get_context`, `ack_context`, `post`, and `get` behavior during migration.
|
|
@@ -70,30 +71,75 @@ The OpenAPI paths describe protocol 2.1. The embedded `x-agent-bridge-protocol-2
|
|
|
70
71
|
|
|
71
72
|
## Architecture
|
|
72
73
|
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
74
|
+
```mermaid
|
|
75
|
+
flowchart TB
|
|
76
|
+
subgraph execution["Agent execution"]
|
|
77
|
+
harnesses["Agent harnesses<br/>product-specific or custom"]
|
|
78
|
+
callers["Non-harness callers<br/>scripts, CI jobs, and application services"]
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
subgraph hosts["Host surfaces"]
|
|
82
|
+
clis["Command-line hosts<br/>Codex CLI and Claude Code CLI"]
|
|
83
|
+
desktops["Desktop hosts<br/>Codex in ChatGPT and Claude Desktop"]
|
|
84
|
+
daemons["Daemons and custom MCP hosts"]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
subgraph access["Integration and access"]
|
|
88
|
+
adapter["Host adapter or MCP registration"]
|
|
89
|
+
mcp["MCP over stdio: agent-bridge-mcp"]
|
|
90
|
+
cli["CLI: agent-bridge"]
|
|
91
|
+
library["Node library"]
|
|
92
|
+
direct["Direct HTTPS client"]
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
harnesses --> clis
|
|
96
|
+
harnesses --> desktops
|
|
97
|
+
harnesses --> daemons
|
|
98
|
+
clis --> adapter
|
|
99
|
+
desktops --> adapter
|
|
100
|
+
daemons --> adapter
|
|
101
|
+
adapter --> mcp
|
|
102
|
+
callers --> cli
|
|
103
|
+
callers --> library
|
|
104
|
+
callers --> direct
|
|
105
|
+
|
|
106
|
+
mcp --> core["Agent Bridge client core<br/>principal plus optional consumer instance key"]
|
|
107
|
+
cli --> core
|
|
108
|
+
library --> core
|
|
109
|
+
|
|
110
|
+
core --> local["Local mode<br/>SQLite authority"]
|
|
111
|
+
core --> edge["Gateway client mode<br/>SQLite edge outbox and cache"]
|
|
112
|
+
edge -->|"HTTPS protocol 2.1"| gateway["Agent Bridge gateway"]
|
|
113
|
+
direct -->|"HTTPS protocol 2.1"| gateway
|
|
114
|
+
gateway --> postgres["PostgreSQL authority"]
|
|
90
115
|
```
|
|
91
116
|
|
|
117
|
+
The diagram shows concepts, not exclusive product categories. A product may package a
|
|
118
|
+
harness and a host together. A harness is the agent execution environment. A host is
|
|
119
|
+
the CLI, desktop app, or daemon where it runs. A host adapter registers an access
|
|
120
|
+
surface. Scripts are orthogonal callers: they can invoke the CLI, call HTTPS, or embed
|
|
121
|
+
the Node library without becoming agent harnesses.
|
|
122
|
+
|
|
123
|
+
| Adapter or integration | Host coverage | Access | Installation status |
|
|
124
|
+
| --- | --- | --- | --- |
|
|
125
|
+
| `codex` | Codex CLI and Codex in the ChatGPT desktop app through their shared profile | MCP stdio | Automated |
|
|
126
|
+
| `claude-code` | Claude Code terminal harness | MCP stdio | Automated |
|
|
127
|
+
| `claude-desktop` | Claude Desktop application | MCP stdio | Automated |
|
|
128
|
+
| `openclaw` | OpenClaw host or daemon | MCP stdio | Manifest included; operator-managed |
|
|
129
|
+
| `generic-mcp` | Any compatible stdio MCP host | MCP stdio | Manifest included; operator-managed |
|
|
130
|
+
| Scripts and services | Shell jobs, CI, daemons, and application code | CLI, HTTPS, or Node library | Direct integration |
|
|
131
|
+
| Hermes, Pi, and other harnesses | Depends on the host's supported interface | No interface assumed | No dedicated adapter or conformance claim yet |
|
|
132
|
+
|
|
133
|
+
`agent-bridge-mcp` is a stdio server. The gateway exposes the Agent Bridge HTTPS API;
|
|
134
|
+
it is not MCP over HTTP. A direct HTTPS client can bypass MCP, the CLI, and the local
|
|
135
|
+
edge store, but then owns its own retry and offline behavior.
|
|
136
|
+
|
|
92
137
|
Realtime notifications or hooks may wake a client, but cursored reads remain authoritative. A missed notification does not lose a message.
|
|
93
138
|
|
|
94
|
-
A2A and application task semantics sit above Agent Bridge. MCP, CLI, and
|
|
139
|
+
A2A and application task semantics sit above Agent Bridge. MCP, CLI, HTTPS, and the Node library are access surfaces. Optional transports such as SLIM or NATS may provide wakeups or transport below the core, but authoritative recovery still uses cursored pull. agmsg remains a reference for adapters, interoperability, and client experience.
|
|
95
140
|
|
|
96
141
|
[ADR-0001](docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md) defines this boundary and the distinct acknowledgment meanings.
|
|
142
|
+
[ADR-0003](docs/decisions/0003-host-adapters-and-consumer-instance-keys.md) defines the host layers and consumer instance-key contract.
|
|
97
143
|
|
|
98
144
|
Agent Bridge is not a workflow engine, scheduler, memory system, terminal manager, or
|
|
99
145
|
new universal agent protocol. See [Agent Bridge in the agent ecosystem](docs/ecosystem.md)
|
|
@@ -308,9 +354,10 @@ directory durability proof. Successful Windows commands report
|
|
|
308
354
|
library API is available from
|
|
309
355
|
`@creatornader/agent-bridge/dr`.
|
|
310
356
|
|
|
311
|
-
## Install
|
|
357
|
+
## Install host adapters
|
|
312
358
|
|
|
313
|
-
Agent identity and gateway credentials belong to each client
|
|
359
|
+
Agent identity and gateway credentials belong to each installed client, not the shared
|
|
360
|
+
`~/.agent-bridge/config` file.
|
|
314
361
|
|
|
315
362
|
```bash
|
|
316
363
|
agent-bridge clients install codex --identity codex
|
|
@@ -330,11 +377,19 @@ AGENT_BRIDGE_CLIENT_TOKEN=<claude-desktop token> \
|
|
|
330
377
|
agent-bridge clients install claude-desktop --identity claude-desktop
|
|
331
378
|
```
|
|
332
379
|
|
|
333
|
-
`--token` accepts the same value, but the environment form avoids putting a credential in shell history. Each install writes an owner-only backend file under `~/.agent-bridge/clients/`. The host MCP registration receives that file path, the client identity, and a generated instance
|
|
380
|
+
`--token` accepts the same value, but the environment form avoids putting a credential in shell history. Each install writes an owner-only backend file under `~/.agent-bridge/clients/`. The host MCP registration receives that file path, the client identity, and a generated stable instance key. Tokens are not copied into the shared config, and one client cannot reuse a token bound to another principal.
|
|
334
381
|
|
|
335
|
-
|
|
382
|
+
The `codex` adapter uses the Codex profile shared by the Codex CLI and the Codex
|
|
383
|
+
surface in the ChatGPT desktop app; it does not install two independent registrations.
|
|
384
|
+
Claude Code installation uses its native MCP command. Claude Desktop installation
|
|
385
|
+
merges the `agent-bridge` server into its JSON config with an atomic write. Restart the
|
|
386
|
+
client after installation.
|
|
336
387
|
|
|
337
|
-
The
|
|
388
|
+
The v1 host-adapter manifests are under [`clients/`](clients/). Their compatibility
|
|
389
|
+
field is named `runtime`, but its value identifies the installation target, not a
|
|
390
|
+
unique process. OpenClaw and generic MCP manifests declare the required environment
|
|
391
|
+
variables and command but leave config mutation to the operator because their host
|
|
392
|
+
config shapes vary.
|
|
338
393
|
|
|
339
394
|
[`SKILL.md`](SKILL.md) provides concise runtime-neutral operating instructions for agents. [`llms.txt`](llms.txt) gives tools and model crawlers a compact map of the package, modes, commands, and identity rules.
|
|
340
395
|
|
|
@@ -575,6 +630,7 @@ Normal inbox and pending reads fall back to the local cache when the gateway is
|
|
|
575
630
|
## CLI
|
|
576
631
|
|
|
577
632
|
```bash
|
|
633
|
+
agent-bridge --version
|
|
578
634
|
agent-bridge init --provider local
|
|
579
635
|
agent-bridge doctor
|
|
580
636
|
agent-bridge status
|
|
@@ -647,6 +703,22 @@ The acknowledgment names depend on the interface. MCP `ack_context` and CLI `ack
|
|
|
647
703
|
## Identity and security
|
|
648
704
|
|
|
649
705
|
- `~/.agent-bridge/config` contains backend settings only. A stored `AGENT_BRIDGE_AGENT` value is ignored.
|
|
706
|
+
- Workspace is the tenant boundary. Principal is the durable agent identity and message source.
|
|
707
|
+
- `AGENT_BRIDGE_INSTANCE` is an optional caller-supplied stable consumer key. Supported
|
|
708
|
+
installers generate and persist one for each installed client. Direct clients should
|
|
709
|
+
do the same when they need separate consumer state or presence.
|
|
710
|
+
- Unless `AGENT_BRIDGE_CURSOR` sets an explicit path, a present instance key selects
|
|
711
|
+
the cursor path. The key also selects the delivery lease owner and presence row.
|
|
712
|
+
Processes that share a key also share those resources. The gateway does not bind the
|
|
713
|
+
key to an installer registration. It is not a PID, unique live process, or
|
|
714
|
+
conversation ID.
|
|
715
|
+
- When the key and explicit cursor path are both omitted, cursor storage uses
|
|
716
|
+
`default`. Delivery leases fall back to the principal, and presence operations reject
|
|
717
|
+
the request because presence requires an instance key.
|
|
718
|
+
- Presence is instance-keyed in the released protocol. Per-process presence requires
|
|
719
|
+
an additive identity instead of a silent change to lease ownership or cursor paths.
|
|
720
|
+
- Session and thread identifiers are message and application context. They do not
|
|
721
|
+
select credentials, workspace, principal, or delivery ownership.
|
|
650
722
|
- Local clients bind identity through their process environment or an explicit CLI send argument.
|
|
651
723
|
- Gateway tokens bind workspace and principal. The API ignores caller-supplied source and workspace fields.
|
|
652
724
|
- Gateway clients use separate owner-only backend files and principal-bound tokens.
|
|
@@ -654,7 +726,8 @@ The acknowledgment names depend on the interface. MCP `ack_context` and CLI `ack
|
|
|
654
726
|
- Remote HTTP must use TLS. Plain HTTP is accepted only on loopback.
|
|
655
727
|
- Local config, database, WAL, and shared-memory files use owner-only permissions where the platform supports POSIX modes.
|
|
656
728
|
- The private `agent_bridge` schema is denied to Supabase `anon` and `authenticated` Data API roles.
|
|
657
|
-
- Expired presence rows are pruned during heartbeat and listing. Each agent
|
|
729
|
+
- Expired instance-presence rows are pruned during heartbeat and listing. Each agent
|
|
730
|
+
is capped at 128 active instance keys, and each workspace is capped at 4,096.
|
|
658
731
|
- Errors expose stable codes without database URLs, tokens, or provider response bodies.
|
|
659
732
|
- Delivery work is at least once, not exactly once. Consumers must make external side effects idempotent.
|
|
660
733
|
|
|
@@ -681,7 +754,7 @@ The original v1 schema remains in [`sql/setup.sql`](sql/setup.sql). Ordered gate
|
|
|
681
754
|
`status` is a passive snapshot. It does not synchronize or probe a remote provider. An unprobed remote reports `status: "unknown"`, `connected: false`, and `remoteReachable: null`. Passive status still exits 0. `doctor` evaluates named checks and exits 0 for `ok`, 2 for `degraded`, and 1 for `failed`. Both return JSON with:
|
|
682
755
|
|
|
683
756
|
- Provider and actual schema version.
|
|
684
|
-
- Bound workspace, agent, and instance.
|
|
757
|
+
- Bound workspace, agent, and consumer instance key.
|
|
685
758
|
- Endpoint or database path.
|
|
686
759
|
- Cursor and queue state.
|
|
687
760
|
- Pending, claimed, retrying, and dead delivery counts, plus due versus scheduled work, expired leases, oldest-due time, and bounded queue lag.
|
|
@@ -759,11 +832,12 @@ durability behavior has not yet been proved on a dedicated Windows host.
|
|
|
759
832
|
## Documentation
|
|
760
833
|
|
|
761
834
|
- [ROADMAP.md](ROADMAP.md): released work, unreleased implementation, and the remaining program.
|
|
762
|
-
- [SECURITY.md](SECURITY.md): supported versions, private vulnerability reporting, and security boundaries.
|
|
835
|
+
- [SECURITY.md](SECURITY.md): supported versions, release integrity, private vulnerability reporting, and security boundaries.
|
|
763
836
|
- [docs/ecosystem.md](docs/ecosystem.md): product boundary, adjacent systems, and interoperability direction.
|
|
764
837
|
- [docs/troubleshooting.md](docs/troubleshooting.md): MCP startup, identity, backend, and client recovery.
|
|
765
838
|
- [ADR-0001](docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md): protocol layers and acknowledgment semantics.
|
|
766
839
|
- [ADR-0002](docs/decisions/0002-canonical-operation-contract-registry.md): canonical contracts, generated artifacts, discovery, and version negotiation.
|
|
840
|
+
- [ADR-0003](docs/decisions/0003-host-adapters-and-consumer-instance-keys.md): host layers and consumer instance-key semantics.
|
|
767
841
|
- [docs/architecture-v2.md](docs/architecture-v2.md): protocol and storage decisions.
|
|
768
842
|
- [SKILL.md](SKILL.md): runtime-neutral agent operating instructions.
|
|
769
843
|
- [llms.txt](llms.txt): compact machine-readable project map.
|
package/ROADMAP.md
CHANGED
|
@@ -9,17 +9,17 @@ published and the supported clients pass a fresh end-to-end check.
|
|
|
9
9
|
|
|
10
10
|
## Status
|
|
11
11
|
|
|
12
|
-
### Released
|
|
12
|
+
### Released by 0.3.0
|
|
13
13
|
|
|
14
14
|
- Local SQLite and shared PostgreSQL storage behind provider-neutral interfaces.
|
|
15
15
|
- An authenticated HTTPS gateway and a named legacy Supabase adapter.
|
|
16
16
|
- Immutable messages, caller receipts, delivery leases, retries, dead letters, and
|
|
17
17
|
presence.
|
|
18
18
|
- Durable SQLite edge outbox and inbox cache for gateway clients.
|
|
19
|
-
- CLI, MCP,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
- CLI, MCP, HTTPS, and Node library access surfaces.
|
|
20
|
+
- Automated host adapters for Codex, Claude Code, and Claude Desktop. The Codex
|
|
21
|
+
adapter configures the profile shared by the Codex CLI and the Codex surface in the
|
|
22
|
+
ChatGPT desktop app.
|
|
23
23
|
- Caller-bound inbox, sent, and combined history with scope-bound cursors.
|
|
24
24
|
- Publisher-owned delivery policy, priority claims, cancel, requeue, and delivery event
|
|
25
25
|
inspection.
|
|
@@ -34,13 +34,14 @@ published and the supported clients pass a fresh end-to-end check.
|
|
|
34
34
|
- Portable workspace archives across canonical SQLite and PostgreSQL stores.
|
|
35
35
|
- Native SQLite and PostgreSQL backup, verification, and restore.
|
|
36
36
|
|
|
37
|
-
###
|
|
37
|
+
### Post-release validation and adoption
|
|
38
38
|
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
- Prove
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
- Move the project's own normal traffic to the authenticated gateway while retaining a
|
|
40
|
+
tested legacy rollback path.
|
|
41
|
+
- Prove cross-machine claim, settlement, offline replay, and restart behavior against
|
|
42
|
+
the published package and a deployed v2 gateway. The 0.3.0 live release check covered
|
|
43
|
+
startup, private mailbox sends, caller-scoped history, receipts, and client restart
|
|
44
|
+
through the legacy compatibility backend; it could not prove gateway-only behavior.
|
|
44
45
|
- Replace remaining direct legacy table pollers with the v2 cursor protocol.
|
|
45
46
|
- Confirm the README, npm metadata, GitHub metadata, release notes, and package contents
|
|
46
47
|
match the released artifact.
|
|
@@ -64,6 +65,11 @@ published and the supported clients pass a fresh end-to-end check.
|
|
|
64
65
|
|
|
65
66
|
### Presence and wakeups
|
|
66
67
|
|
|
68
|
+
- Separate the stable consumer instance key from a live process identity. Supported
|
|
69
|
+
installers generate one key per installed client, while direct clients may supply
|
|
70
|
+
their own. Processes that share a key also share presence in 0.3.
|
|
71
|
+
- Add per-process presence and session correlation only through an additive protocol
|
|
72
|
+
change with migration and conformance coverage.
|
|
67
73
|
- Maintain heartbeat and expiry automatically for supported long-lived clients.
|
|
68
74
|
- Add wake adapters only where they reduce latency. Lost wakeups must never lose data.
|
|
69
75
|
- Keep cursored pull as the authoritative recovery path.
|
|
@@ -83,7 +89,11 @@ published and the supported clients pass a fresh end-to-end check.
|
|
|
83
89
|
- Carry A2A envelopes without implementing a competing task state machine.
|
|
84
90
|
- Publish conformance fixtures and an adapter template.
|
|
85
91
|
- Add client libraries where real integrations need them.
|
|
86
|
-
-
|
|
92
|
+
- Rename the compatibility `runtime` manifest key to an explicit host-adapter key in a
|
|
93
|
+
versioned manifest contract.
|
|
94
|
+
- Expand host installers after each product has a stable configuration contract.
|
|
95
|
+
Hermes, Pi, and similar harnesses can use a generic access surface when their host
|
|
96
|
+
supports one, but they do not have a dedicated adapter or conformance claim.
|
|
87
97
|
|
|
88
98
|
See [docs/ecosystem.md](docs/ecosystem.md) for the product boundary.
|
|
89
99
|
|
package/SECURITY.md
CHANGED
|
@@ -4,13 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
| Version | Security updates |
|
|
6
6
|
| --- | --- |
|
|
7
|
-
| 0.
|
|
7
|
+
| 0.3.x | Supported |
|
|
8
|
+
| 0.2.x | Not supported |
|
|
8
9
|
| 0.1.x | Not supported |
|
|
9
10
|
| Unreleased development code | No public support guarantee |
|
|
10
11
|
|
|
11
12
|
Upgrade to the latest published package before reporting a defect that may already be
|
|
12
13
|
fixed. The npm package and GitHub release page are the public version authorities.
|
|
13
14
|
|
|
15
|
+
## Release integrity
|
|
16
|
+
|
|
17
|
+
GitHub immutable releases are enabled, and GitHub reports release `v0.3.0` as
|
|
18
|
+
immutable. A repository ruleset also blocks updates and deletion for every `v*` tag
|
|
19
|
+
without a bypass actor. The `v0.3.0` tag is unsigned.
|
|
20
|
+
|
|
21
|
+
npm publication uses a protected GitHub environment, an OIDC trusted-publisher
|
|
22
|
+
binding, and provenance for the package artifact. Verify the package digest and
|
|
23
|
+
attestation before treating provenance as source identity. The `v0.3.0`
|
|
24
|
+
[recovery run](https://github.com/creatornader/agent-bridge/actions/runs/29461308262)
|
|
25
|
+
checked out package commit `95eb861`, while its attestation names recovery commit
|
|
26
|
+
`c23d9df` as the workflow identity. GitHub Actions logs expire, so the
|
|
27
|
+
[release notes](https://github.com/creatornader/agent-bridge/releases/tag/v0.3.0)
|
|
28
|
+
also record this boundary. Future recovery dispatches must run at the release tag, and
|
|
29
|
+
the workflow enforces that match before packaging.
|
|
30
|
+
|
|
14
31
|
## Report a vulnerability
|
|
15
32
|
|
|
16
33
|
Use [GitHub private vulnerability reporting](https://github.com/creatornader/agent-bridge/security/advisories/new).
|
package/SKILL.md
CHANGED
|
@@ -87,4 +87,4 @@ the source.
|
|
|
87
87
|
|
|
88
88
|
Use `project` only as an optional message label. Workspace remains the tenant and credential boundary. Omit a project filter to read labeled and unlabeled messages, or provide one for an exact match. Reusing a workspace/source idempotency key with a different project is a conflict.
|
|
89
89
|
|
|
90
|
-
For gateway mode, treat the credential-bound workspace and principal returned by the server as authoritative. Instance
|
|
90
|
+
For gateway mode, treat the credential-bound workspace and principal returned by the server as authoritative. Instance is an optional caller-supplied stable consumer key; it cannot select a workspace, agent, or scopes. Supported installers generate and persist it. Direct clients may do so when they need separate consumer state or presence. The gateway does not bind the key to an installer registration. Unless `AGENT_BRIDGE_CURSOR` is explicit, processes that share one key also share its cursor path. They also share delivery lease ownership and instance-keyed presence. Without a key or explicit cursor path, cursor storage uses `default`. Leases use the principal, and presence is unavailable. Instance is not a PID, unique live process, session, or thread. A production gateway reports row isolation only when transaction-bound request authority and every database readiness check pass. RLS isolates workspace and principal rows. The service still enforces lease transitions and target-to-delivery membership.
|
package/dist/cli.js
CHANGED
|
@@ -3437,6 +3437,11 @@ function watchCursorPath(path, project) {
|
|
|
3437
3437
|
const scope = createHash4("sha256").update(project).digest("hex").slice(0, 16);
|
|
3438
3438
|
return `${path}.project-${scope}`;
|
|
3439
3439
|
}
|
|
3440
|
+
function packageVersion() {
|
|
3441
|
+
const manifest = JSON.parse(readFileSync3(fileURLToPath2(new URL("../package.json", import.meta.url)), "utf8"));
|
|
3442
|
+
if (typeof manifest.version !== "string" || !manifest.version) throw new Error("package version is unavailable");
|
|
3443
|
+
return manifest.version;
|
|
3444
|
+
}
|
|
3440
3445
|
function help() {
|
|
3441
3446
|
process.stdout.write(`agent-bridge: provider-neutral agent messaging
|
|
3442
3447
|
|
|
@@ -3448,6 +3453,10 @@ Commands:
|
|
|
3448
3453
|
archive <export|verify|import>
|
|
3449
3454
|
dr <backup|verify|restore>
|
|
3450
3455
|
clients install <codex|claude-code|claude-desktop> --identity <name>
|
|
3456
|
+
|
|
3457
|
+
Options:
|
|
3458
|
+
-V, --version Print the installed package version
|
|
3459
|
+
-h, --help Show this help
|
|
3451
3460
|
`);
|
|
3452
3461
|
}
|
|
3453
3462
|
function rejectUnknownOptions(options) {
|
|
@@ -3629,6 +3638,11 @@ async function runCli(argv = process.argv.slice(2)) {
|
|
|
3629
3638
|
}
|
|
3630
3639
|
const { command: raw, options, positionals } = parse3(argv);
|
|
3631
3640
|
const command = { post: "send", get: "inbox", receipt: "acknowledge" }[raw] ?? raw;
|
|
3641
|
+
if (["-V", "--version"].includes(command)) {
|
|
3642
|
+
process.stdout.write(`${packageVersion()}
|
|
3643
|
+
`);
|
|
3644
|
+
return;
|
|
3645
|
+
}
|
|
3632
3646
|
if (["help", "-h", "--help"].includes(command)) {
|
|
3633
3647
|
help();
|
|
3634
3648
|
return;
|