agent-embassy 4.3.0 → 4.4.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 +15 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +174 -156
- package/SECURITY.md +13 -11
- package/dist/src/gateway/core-cli.js +2 -1
- package/dist/src/gateway/core-cli.js.map +1 -1
- package/dist/src/gateway/core-version.d.ts +1 -1
- package/dist/src/gateway/core-version.js +1 -1
- package/dist/src/gateway/tui-model.d.ts +67 -0
- package/dist/src/gateway/tui-model.js +136 -0
- package/dist/src/gateway/tui-model.js.map +1 -0
- package/dist/src/gateway/tui-view.d.ts +11 -0
- package/dist/src/gateway/tui-view.js +206 -0
- package/dist/src/gateway/tui-view.js.map +1 -0
- package/dist/src/gateway/tui.d.ts +7 -41
- package/dist/src/gateway/tui.js +43 -234
- package/dist/src/gateway/tui.js.map +1 -1
- package/docs/CONFIGURATION.md +33 -32
- package/docs/GATEWAY-ARCHITECTURE.md +18 -19
- package/package.json +7 -2
- package/skills/embassy-peer/SKILL.md +1 -1
|
@@ -8,10 +8,8 @@ pairs are supported. Sending is one `embassy send` command; receiving wakes the
|
|
|
8
8
|
target through its native interface. A receipt proves delivery machinery, not
|
|
9
9
|
model comprehension.
|
|
10
10
|
|
|
11
|
-
The design optimizes for this steady state
|
|
12
|
-
|
|
13
|
-
Codex output forwarding, persistent remote mirrors, general activity streams,
|
|
14
|
-
and migration compatibility.
|
|
11
|
+
The design optimizes for this steady state; everything it deliberately leaves
|
|
12
|
+
out is listed under [Responsibility exclusions](#responsibility-exclusions).
|
|
15
13
|
|
|
16
14
|
## Topology
|
|
17
15
|
|
|
@@ -31,8 +29,8 @@ Claude/Codex CLI
|
|
|
31
29
|
remote broker ledger
|
|
32
30
|
```
|
|
33
31
|
|
|
34
|
-
There is one broker per login user and host. The broker owns one
|
|
35
|
-
document and one private control socket. It does not listen on a network port.
|
|
32
|
+
There is one broker per login user and host. The broker owns one private JSON
|
|
33
|
+
state document and one private control socket. It does not listen on a network port.
|
|
36
34
|
launchd may supervise the same foreground `serve` entry point.
|
|
37
35
|
|
|
38
36
|
## Endpoint directory
|
|
@@ -139,8 +137,8 @@ guessing. The live host lease is checked before a transaction, before
|
|
|
139
137
|
persistence, and immediately before rename.
|
|
140
138
|
|
|
141
139
|
No-op transactions write nothing. Unsupported or corrupt state refuses before
|
|
142
|
-
mutation.
|
|
143
|
-
|
|
140
|
+
mutation. A valid schema-6 document from an earlier 4.x release reads forward
|
|
141
|
+
with all existing rows retained; schema ≤5 needs a reset.
|
|
144
142
|
|
|
145
143
|
## Coordinator
|
|
146
144
|
|
|
@@ -239,9 +237,8 @@ reset.
|
|
|
239
237
|
|
|
240
238
|
## Local control and CLI
|
|
241
239
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
socket. A mutating request whose reply is lost after write reports
|
|
240
|
+
Each private control connection carries one bounded JSON request and one
|
|
241
|
+
closed JSON response over the expected private Unix socket. A mutating request whose reply is lost after write reports
|
|
245
242
|
`CONTROL_WRITE_OUTCOME_AMBIGUOUS`; the CLI does not retry it.
|
|
246
243
|
|
|
247
244
|
The public CLI is:
|
|
@@ -257,8 +254,9 @@ serve service peer-stdio
|
|
|
257
254
|
`send` accepts exactly one of `--to` and `--conversation`; it has no `--from`.
|
|
258
255
|
Human `status` is a rendering of the same closed body-free JSON shape. Its
|
|
259
256
|
health word describes control/ledger health, local route rows expose their last
|
|
260
|
-
native operation, and Codex rows expose busy, waiting, idle, dormant
|
|
261
|
-
status, without parent references or
|
|
257
|
+
native operation, and Codex rows expose busy, waiting, idle, dormant,
|
|
258
|
+
systemError or unknown status, without parent references or
|
|
259
|
+
registration-origin labels. The federation section
|
|
262
260
|
exposes only the last bounded catalog observation. `health` is a control-path probe. `check` creates temporary
|
|
263
261
|
private loopback endpoints and uses the real ledger/coordinator/receipt path,
|
|
264
262
|
then retires them; no provider or model is contacted. It is not a
|
|
@@ -283,7 +281,7 @@ Startup order is ownership-sensitive:
|
|
|
283
281
|
1. load the private node inventory, or derive a transient first-boot default,
|
|
284
282
|
and load configuration;
|
|
285
283
|
2. acquire the fixed host-wide kernel lease;
|
|
286
|
-
3. open and validate
|
|
284
|
+
3. open and validate the private state without changing the inventory;
|
|
287
285
|
4. atomically install and reload the default inventory when first boot needs
|
|
288
286
|
one;
|
|
289
287
|
5. construct native and SSH adapters;
|
|
@@ -304,7 +302,7 @@ model interrupt.
|
|
|
304
302
|
|
|
305
303
|
| Surface | Version | Compatibility policy |
|
|
306
304
|
|---|---:|---|
|
|
307
|
-
| Private state (`gateway-state.json`) | 7 |
|
|
305
|
+
| Private state (`gateway-state.json`) | 7 | A valid schema-6 document is read forward with rows retained; ≤5 and unknown refuse without mutation (reset) |
|
|
308
306
|
| Private control (CLI ↔ broker) | 6 | CLI and broker must come from one installation |
|
|
309
307
|
| Federation (`peer-stdio`) | 3 | Exact version and host handshake; no compatibility mode |
|
|
310
308
|
| Consumed Claude peer protocol | 1 | Incompatible records are rejected in isolation |
|
|
@@ -314,10 +312,11 @@ each use boundary. Version or build metadata is never routing authority.
|
|
|
314
312
|
|
|
315
313
|
## Responsibility exclusions
|
|
316
314
|
|
|
317
|
-
The
|
|
315
|
+
The core intentionally has no shell-peer registration/token/mailbox/await
|
|
318
316
|
system, no native Claude advertisement helper, no automatic provider-output
|
|
319
317
|
reply capture, no persisted remote route mirror, no pair/selection graph, no
|
|
320
|
-
dashboard/watch event system, no notice-mode machinery, and no
|
|
321
|
-
reader.
|
|
318
|
+
dashboard/watch event system, no notice-mode machinery, and no old-state
|
|
319
|
+
migration reader. Its responsibilities are endpoint identity, bounded
|
|
322
320
|
delivery, native wake, exact replies, direct federation, status, retirement,
|
|
323
|
-
service supervision, and loopback verification.
|
|
321
|
+
service supervision, and loopback verification. The reasons are recorded in
|
|
322
|
+
the repository's `docs/DECLINED.md`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-embassy",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "A local gateway for bidirectional messaging between Claude Code sessions and Codex tasks.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -62,13 +62,18 @@
|
|
|
62
62
|
"soak": "tsx --test test/soak/core-soak.test.ts"
|
|
63
63
|
},
|
|
64
64
|
"engines": {
|
|
65
|
-
"node": ">=
|
|
65
|
+
"node": ">=22"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
+
"ink": "7.1.1",
|
|
69
|
+
"react": "19.2.8",
|
|
70
|
+
"string-width": "8.2.2",
|
|
71
|
+
"wrap-ansi": "10.0.1",
|
|
68
72
|
"ws": "8.21.3"
|
|
69
73
|
},
|
|
70
74
|
"devDependencies": {
|
|
71
75
|
"@types/node": "24.10.1",
|
|
76
|
+
"@types/react": "19.2.18",
|
|
72
77
|
"@types/ws": "8.18.1",
|
|
73
78
|
"tsx": "4.20.6",
|
|
74
79
|
"typescript": "5.9.3"
|
|
@@ -100,4 +100,4 @@ For operator-authorized removal use `embassy retire --alias <local-alias>`. It r
|
|
|
100
100
|
|
|
101
101
|
When a name collides, operator-authorized `embassy retire --endpoint <public-id>` removes just that local endpoint using its opaque ID from status. Use exactly one of `--alias` or `--endpoint`; never substitute a native session ID. A partial discovery cannot clear a known collision; exact user-supplied UUID addressing remains available until a complete scan proves uniqueness.
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
`embassy --help` lists the whole public CLI; do not fall back to a command that is not listed there or to direct provider sockets; report the precise refusal.
|