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.
@@ -1,5 +1,7 @@
1
1
  import { type Readable, type Writable } from "node:stream";
2
2
  import type { BrokerCommand } from "./broker-control.js";
3
+ import { type TuiModel } from "./tui-model.js";
4
+ export type { TuiModel } from "./tui-model.js";
3
5
  type Input = Pick<Readable, "on" | "off"> & {
4
6
  isTTY?: boolean;
5
7
  isRaw?: boolean;
@@ -28,47 +30,11 @@ export type TuiDependencies = Readonly<{
28
30
  close: () => void;
29
31
  }>;
30
32
  signal?: AbortSignal;
31
- }>;
32
- type Obj = Record<string, unknown>;
33
- type Section = "endpoints" | "deliveries" | "retirements" | "result";
34
- type Mode = "browse" | "token" | "confirm";
35
- type EndpointRow = Readonly<{
36
- id: string;
37
- alias: string;
38
- provider: string;
39
- host: string;
40
- local: boolean;
41
- queueDepth?: number;
42
- lastOperation?: Obj;
43
- observedAt?: string;
44
- safeErrorCode?: string;
45
- codex?: Obj;
46
- placeholder?: boolean;
47
- }>;
48
- export type TuiModel = {
49
- snapshot?: Obj;
50
- snapshotAt?: number;
51
- staleSince?: number;
52
- error?: string;
53
- errorDetail?: string;
54
- action?: string;
55
- actionRunning?: boolean;
56
- host?: string;
57
- restarted?: boolean;
58
- section: Section;
59
- previousSection?: Exclude<Section, "result">;
60
- selected: Record<Exclude<Section, "result">, number> & Partial<Record<"result", number>>;
61
- selectedEndpoint?: string;
62
- mode: Mode;
63
- token: string;
64
- retiring?: EndpointRow;
65
- result?: Readonly<{
66
- label: string;
67
- value: string;
33
+ terminal?: Readonly<{
34
+ noColor?: boolean;
35
+ dumb?: boolean;
68
36
  }>;
69
- };
70
- /** Pure screen renderer. It emits no ANSI so all dynamic values remain inert. */
71
- export declare function renderTui(model: Readonly<TuiModel>, columns?: number, rows?: number, now?: number): string;
37
+ }>;
38
+ export declare function renderTui(model: Readonly<TuiModel>, columns?: number, rows?: number, now?: number, color?: boolean): string;
72
39
  /** Interactive, dependency-free client over the existing broker commands. */
73
40
  export declare function runTui(dependencies: TuiDependencies): Promise<void>;
74
- export {};
@@ -1,217 +1,15 @@
1
1
  import { PassThrough } from "node:stream";
2
- import { emitKeypressEvents } from "node:readline";
3
- const object = (value) => !!value && typeof value === "object" && !Array.isArray(value);
4
- const list = (value) => Array.isArray(value) ? value.filter(object) : [];
5
- const text = (value, fallback = "not reported") => typeof value === "string" && value.length > 0 ? value : fallback;
6
- const clean = (value) => text(value, "").replace(/[\u0000-\u001f\u007f-\u009f]/g, (character) => character === "\n" || character === "\r" || character === "\t" ? " " : "?");
7
- const errorText = (error) => {
8
- if (object(error) && typeof error.code === "string")
9
- return clean(error.code);
10
- if (error instanceof Error && typeof error.code === "string")
11
- return clean(error.code);
12
- return "CONTROL_UNAVAILABLE";
13
- };
14
- const age = (milliseconds) => {
15
- const ms = typeof milliseconds === "number" && Number.isFinite(milliseconds) ? Math.max(0, milliseconds) : 0;
16
- if (ms < 1_000)
17
- return `${Math.round(ms)}ms`;
18
- if (ms < 60_000)
19
- return `${Math.floor(ms / 1_000)}s`;
20
- if (ms < 3_600_000)
21
- return `${Math.floor(ms / 60_000)}m`;
22
- return `${Math.floor(ms / 3_600_000)}h`;
23
- };
24
- const observedAge = (value, now) => {
25
- const parsed = typeof value === "string" ? Date.parse(value) : Number.NaN;
26
- return Number.isFinite(parsed) ? `${age(now - parsed)} ago` : "not yet refreshed";
27
- };
28
- const fit = (value, width) => {
29
- if (width < 1)
30
- return "";
31
- const safe = clean(value);
32
- return safe.length <= width ? safe : width === 1 ? "…" : `${safe.slice(0, width - 1)}…`;
33
- };
34
- const wrap = (value, width) => {
35
- const safe = clean(value), size = Math.max(1, width);
36
- return safe.length
37
- ? Array.from({ length: Math.ceil(safe.length / size) }, (_, i) => safe.slice(i * size, (i + 1) * size))
38
- : [""];
39
- };
40
- const json = (value) => {
41
- try {
42
- return clean(JSON.stringify(value));
43
- }
44
- catch {
45
- return "unprintable result";
46
- }
47
- };
48
- const endpointKey = (row) => `${row.host}\0${row.id}`;
49
- const loopback = (value) => typeof value === "string" && /^loopback-[ab]-[0-9a-f]{8}@/.test(value);
50
- const unsuccessful = new Set(["failed", "cancelled", "expired", "ambiguous", "unconfirmed"]);
51
- const deliveryToken = /^dlv_[A-Za-z0-9_-]{24}$/;
52
- function tokenFeedback(token) {
53
- if (deliveryToken.test(token))
54
- return "format valid";
55
- if ("dlv_".startsWith(token) || /^dlv_[A-Za-z0-9_-]{0,23}$/.test(token))
56
- return "format incomplete";
57
- return "format invalid";
58
- }
59
- function endpointRows(snapshot) {
60
- const local = list(snapshot?.routes).map((row) => ({ id: text(row.id), alias: text(row.alias), provider: text(row.provider),
61
- host: text(row.host), local: true, ...(typeof row.queueDepth === "number" ? { queueDepth: row.queueDepth } : {}),
62
- ...(object(row.lastOperation) ? { lastOperation: row.lastOperation } : {}), ...(object(row.codex) ? { codex: row.codex } : {}) }));
63
- const federation = object(snapshot?.federation) ? snapshot.federation : undefined;
64
- const remote = list(federation?.nodes).flatMap((node) => {
65
- const common = { host: text(node.host), local: false,
66
- ...(typeof node.observedAt === "string" ? { observedAt: node.observedAt } : {}),
67
- ...(typeof node.safeErrorCode === "string" ? { safeErrorCode: node.safeErrorCode } : {}) };
68
- const routes = list(node.routes);
69
- return routes.length ? routes.map((row) => ({ ...common, id: text(row.id), alias: text(row.alias),
70
- provider: text(row.provider), host: text(row.host, common.host) }))
71
- : [{ ...common, id: "", alias: "No cached endpoints", provider: "-", placeholder: true }];
72
- });
73
- return [...local, ...remote];
74
- }
75
- function deliveryRows(snapshot) {
76
- const sorted = list(snapshot?.messages).sort((a, b) => (typeof a.ageMs === "number" ? a.ageMs : Number.MAX_SAFE_INTEGER) -
77
- (typeof b.ageMs === "number" ? b.ageMs : Number.MAX_SAFE_INTEGER));
78
- const result = [];
79
- for (const row of sorted) {
80
- const anonymous = typeof row.source !== "string" && typeof row.target !== "string", last = result.at(-1);
81
- if (anonymous && object(last) && last.summary === true && Array.isArray(last.rows))
82
- result[result.length - 1] = { summary: true, rows: [...last.rows.filter(object), row] };
83
- else if (anonymous)
84
- result.push({ summary: true, rows: [row] });
85
- else
86
- result.push(row);
87
- }
88
- return result;
89
- }
90
- function sectionRows(model, width = 80) {
91
- if (model.section === "endpoints")
92
- return endpointRows(model.snapshot);
93
- if (model.section === "deliveries")
94
- return deliveryRows(model.snapshot);
95
- if (model.section === "result")
96
- return model.result ? [`${model.result.label}:`, ...wrap(model.result.value, Math.max(1, width - 2))] : [];
97
- return list(model.snapshot?.retirements);
98
- }
99
- function operation(row) {
100
- if (!row.lastOperation)
101
- return "not yet observed";
102
- const outcome = text(row.lastOperation.outcome);
103
- return outcome === "delivered" ? "delivered" : `${outcome} !${text(row.lastOperation.code)}`;
104
- }
105
- function summaryLine(row) {
106
- const counts = new Map();
107
- for (const item of row.rows) {
108
- const state = text(item.state);
109
- const label = `${state}${unsuccessful.has(state) && item.safeErrorCode ? ` !${text(item.safeErrorCode)}` : ""}`;
110
- counts.set(label, (counts.get(label) ?? 0) + 1);
111
- }
112
- return `${row.rows.length} unattributed deliveries · ${[...counts].map(([label, count]) => `${label} ${count}`).join(" · ")}`;
113
- }
114
- function lineFor(row, section, now, collisions) {
115
- if (typeof row === "string")
116
- return row;
117
- if ("summary" in row && row.summary === true)
118
- return summaryLine(row);
119
- if (section === "endpoints") {
120
- const endpoint = row;
121
- const collision = collisions.has(endpoint.alias) ? ` [ambiguous; …${endpoint.id.slice(-8)}]` : "";
122
- const codex = endpoint.codex ? ` ${text(endpoint.codex.state)}` : "";
123
- return endpoint.local ? `${endpoint.alias}${collision} ${endpoint.provider}${codex} queued ${endpoint.queueDepth ?? 0} last ${operation(endpoint)}`
124
- : `SSH ${endpoint.host} · catalog ${observedAge(endpoint.observedAt, now)}${endpoint.safeErrorCode ? ` / ${endpoint.safeErrorCode}` : ""}` +
125
- ` · ${endpoint.alias}${collision} ${endpoint.provider} queue/last not reported`;
126
- }
127
- const item = row;
128
- if (section === "deliveries") {
129
- const state = text(item.state);
130
- const code = unsuccessful.has(state) && item.safeErrorCode ? ` !${text(item.safeErrorCode)}` : "";
131
- const source = text(item.source, "unavailable sender"), target = text(item.target, "unavailable recipient");
132
- return `${age(item.ageMs)} ago ${state}${code} ${source} -> ${target}${loopback(source) || loopback(target) ? " (loopback check)" : ""}`;
133
- }
134
- const alias = text(item.alias), parsed = typeof item.at === "string" ? Date.parse(item.at) : Number.NaN;
135
- return `${Number.isFinite(parsed) ? `${age(now - parsed)} ago` : text(item.at)} ${alias}${loopback(alias) ? " (loopback check)" : ""}`;
136
- }
137
- function collisionAliases(snapshot) {
138
- const counts = new Map();
139
- for (const row of endpointRows(snapshot))
140
- if (!row.placeholder)
141
- counts.set(row.alias, (counts.get(row.alias) ?? 0) + 1);
142
- return new Set([...counts].filter(([, count]) => count > 1).map(([alias]) => alias));
143
- }
144
- function retirementLines(row, width) {
145
- return ["Embassy retirement confirmation", ...wrap(`Host: ${row.host}`, width), ...wrap(`Alias: ${row.alias}`, width), ...wrap(`Endpoint ID: ${row.id}`, width),
146
- ...wrap(`${row.provider} · queued ${row.queueDepth ?? 0} · last ${operation(row)}`, width),
147
- ...wrap("queued/reserved work is cancelled, armed work becomes ambiguous, accepted work becomes unconfirmed — cannot be undone.", width),
148
- "y confirm · N cancel"];
149
- }
150
- /** Pure screen renderer. It emits no ANSI so all dynamic values remain inert. */
151
- export function renderTui(model, columns = 80, rows = 24, now = Date.now()) {
152
- const width = Math.max(1, columns || 80), height = Math.max(1, rows || 24);
153
- if (model.mode === "confirm" && model.retiring) {
154
- const confirmation = retirementLines(model.retiring, width);
155
- if (confirmation.length > height)
156
- return ["Embassy · terminal too small", "Resize to show the exact endpoint ID and consequences.", "N cancel"]
157
- .slice(0, height).map((line) => fit(line, width)).join("\n");
158
- return [...confirmation, ...Array.from({ length: height - confirmation.length }, () => "")]
159
- .map((line) => fit(line, width)).join("\n");
160
- }
161
- if (height < 6 || width < 24)
162
- return ["Embassy · terminal too small", "Resize · q quit"]
163
- .slice(0, height).map((line) => fit(line, width)).join("\n");
164
- const snapshot = model.snapshot, host = model.host ? ` ${model.host}` : "", lines = [];
165
- if (model.error) {
166
- const elapsed = model.staleSince ? `, ${age(now - model.staleSince)}` : "";
167
- lines.push(`Embassy${host} · broker UNREACHABLE (${model.error}${elapsed})`);
168
- lines.push(`${snapshot ? `Last-known: ${text(snapshot.health, "unknown")} · ledger rev ${snapshot.revision ?? "-"}. ` : ""}Run embassy service status${model.host ? ` on ${model.host}` : ""}.`);
169
- lines.push("STALE data · not a provider readiness proof");
170
- if (model.errorDetail)
171
- lines.push(...wrap(model.errorDetail, width));
172
- }
173
- else {
174
- const broker = snapshot ? text(snapshot.health, "unknown") : "not reachable";
175
- const fault = snapshot?.safeErrorCode ? ` !${text(snapshot.safeErrorCode)}` : "";
176
- lines.push(`Embassy${host} · broker ${broker}${fault} · ledger rev ${snapshot?.revision ?? "-"}`);
177
- lines.push(`Updated ${model.snapshotAt ? `${age(now - model.snapshotAt)} ago` : "never"} · not a provider readiness proof`);
178
- }
179
- if (model.restarted)
180
- lines.push("Ledger revision decreased; broker restarted/reset.");
181
- if (object(snapshot?.codex))
182
- lines.push(`Codex discovery ${snapshot.codex.complete ? "up to 20 most recent" : "partial"}${snapshot.codex.truncated ? " · truncated" : ""} · ${observedAge(snapshot.codex.observedAt, now)}${snapshot.codex.safeErrorCode ? ` !${text(snapshot.codex.safeErrorCode)}` : ""}`);
183
- const failed = list(snapshot?.messages).filter((row) => row.state === "failed").length;
184
- const tabs = ["endpoints", "deliveries", "retirements", "result"];
185
- const tabName = (tab) => tab === "deliveries" && failed ? `deliveries (${failed} failed)` : tab;
186
- lines.push(tabs.map((tab) => tab === model.section ? `[${tabName(tab)}]` : ` ${tabName(tab)} `).join(" "));
187
- const source = sectionRows(model, width);
188
- let selected = Math.max(0, Math.min(model.selected[model.section] ?? 0, Math.max(0, source.length - 1)));
189
- if (model.section === "endpoints" && model.selectedEndpoint)
190
- selected = source.findIndex((row) => endpointKey(row) === model.selectedEndpoint);
191
- const bodyHeight = Math.max(1, height - 9), start = selected < 0 ? 0
192
- : Math.max(0, Math.min(selected - Math.floor(bodyHeight / 2), Math.max(0, source.length - bodyHeight)));
193
- const visible = source.slice(start, start + bodyHeight);
194
- if (visible.length === 0)
195
- lines.push(" No rows.");
196
- else
197
- visible.forEach((row, offset) => lines.push(`${start + offset === selected ? ">" : " "} ${lineFor(row, model.section, now, collisionAliases(snapshot))}`));
198
- lines.push(`${model.section} ${source.length ? `${selected < 0 ? "-" : selected + 1}/${source.length}` : "0/0"}`);
199
- if (model.mode === "token")
200
- lines.push(`Delivery token: ${model.token || "dlv_…"} · ${tokenFeedback(model.token)}`, "Enter look up · Esc cancel");
201
- else
202
- lines.push("Tab/Shift-Tab or 1–4 sections · ↑/↓ j/k g/G select", "r refresh · c check · d delivery · x retire · q quit");
203
- if (model.actionRunning)
204
- lines.push(...wrap(`${model.action ?? "action in progress"} — polling paused`, width - 2).map((line) => ` ${line}`));
205
- else if (model.action)
206
- lines.push(...wrap(model.action, width - 2).map((line) => ` ${line}`));
207
- while (lines.length < height)
208
- lines.push("");
209
- return lines.slice(0, height).map((line) => fit(line, width)).join("\n");
2
+ import { createElement } from "react";
3
+ import { render, renderToString, useInput } from "ink";
4
+ import { TuiView, modalFits } from "./tui-view.js";
5
+ import { object, text, clean, errorText, json, endpointRows, endpointKey, sectionRows, deliveryToken } from "./tui-model.js";
6
+ export function renderTui(model, columns = 80, rows = 24, now = Date.now(), color = false) {
7
+ return renderToString(createElement(TuiView, { model, columns, rows, now, color }), { columns });
210
8
  }
211
9
  /** Interactive, dependency-free client over the existing broker commands. */
212
10
  export async function runTui(dependencies) {
213
11
  const { input, output, call, renderStatus, signal } = dependencies;
214
- if (!output.isTTY || !input.isTTY) {
12
+ if (!output.isTTY || !input.isTTY || (dependencies.terminal?.dumb ?? process.env.TERM === "dumb")) {
215
13
  output.write(renderStatus(await call({ method: "list_snapshot", params: {} })));
216
14
  return;
217
15
  }
@@ -226,32 +24,44 @@ export async function runTui(dependencies) {
226
24
  }));
227
25
  let active = 0, model = panes[0].model;
228
26
  const priorRaw = input.isRaw === true, priorFlowing = input.readableFlowing;
229
- let closed = false, lastFrame = "";
27
+ const color = !(dependencies.terminal?.noColor ?? process.env.NO_COLOR !== undefined);
28
+ let closed = false, ink;
230
29
  let drawTimer;
231
30
  let resolveDone;
232
31
  const done = new Promise((resolve) => { resolveDone = resolve; });
233
- const keyInput = new PassThrough();
32
+ const keyInput = Object.assign(new PassThrough(), {
33
+ isTTY: true, setRawMode: () => keyInput, ref: () => keyInput, unref: () => keyInput,
34
+ });
35
+ const screen = () => {
36
+ useInput((value, key) => {
37
+ const name = key.ctrl ? value : key.upArrow ? "up" : key.downArrow ? "down" : key.escape ? "escape"
38
+ : key.return ? "return" : key.tab ? "tab" : key.backspace || key.delete ? "backspace" : undefined;
39
+ if (!name && !key.ctrl && value.length > 1) {
40
+ for (const character of value) {
41
+ if (character === "\r" || character === "\n")
42
+ onKeypress("", { name: "return" });
43
+ else
44
+ onKeypress(character);
45
+ }
46
+ }
47
+ else
48
+ onKeypress(value, { ...(name ? { name } : {}), ctrl: key.ctrl, shift: key.shift });
49
+ });
50
+ return createElement(TuiView, { model, columns: output.columns || 80,
51
+ rows: Math.max(1, (output.rows || 24) - 1), now: Date.now(), color });
52
+ };
234
53
  const draw = () => {
235
54
  if (closed)
236
55
  return;
237
- const width = output.columns || 80, height = output.rows || 24;
238
- const overview = [];
239
- if (panes.length > 1 && model.mode !== "confirm") {
240
- overview.push("Hosts: [ / ] switch · each pane reports its own broker");
241
- const visible = Math.min(4, Math.max(1, height - 10));
242
- const start = Math.max(0, Math.min(active - 1, panes.length - visible));
243
- panes.slice(start, start + visible).forEach((pane, offset) => {
244
- const m = pane.model;
245
- const state = m.error ? `STALE !${m.error}` : m.snapshot ? text(m.snapshot.health) : "connecting";
246
- const elapsed = m.snapshotAt === undefined ? "not observed" : `${age(Date.now() - m.snapshotAt)} ago`;
247
- overview.push(`${start + offset === active ? ">" : " "} ${m.host} · ${state} · ${elapsed}`);
248
- });
249
- }
250
- const frame = [...overview.map((line) => fit(line, width)), renderTui(model, width, Math.max(1, height - overview.length))].join("\n");
251
- if (frame === lastFrame)
252
- return;
253
- lastFrame = frame;
254
- output.write(`\x1b[H\x1b[2J${frame}\x1b[0m`);
56
+ model.hosts = panes.map((pane, index) => ({ host: pane.model.host, selected: index === active,
57
+ state: pane.model.error ? "stale" : pane.model.snapshot ? text(pane.model.snapshot.health) : "connecting" }));
58
+ if (ink)
59
+ ink.rerender(createElement(screen));
60
+ else
61
+ ink = render(createElement(screen), { stdout: output,
62
+ stdin: keyInput, stderr: output,
63
+ patchConsole: false, exitOnCtrlC: false, incrementalRendering: true, interactive: true, maxFps: 30 });
64
+ void ink.waitUntilRenderFlush().catch(finish);
255
65
  };
256
66
  const replaceSnapshot = (pane, value) => {
257
67
  if (!object(value))
@@ -427,7 +237,8 @@ export async function runTui(dependencies) {
427
237
  input.off("data", onInputData);
428
238
  input.off("end", finish);
429
239
  input.off("error", finish);
430
- keyInput.off("keypress", onKeypress);
240
+ ink?.unmount();
241
+ ink?.cleanup();
431
242
  keyInput.destroy();
432
243
  output.off?.("resize", draw);
433
244
  signal?.removeEventListener("abort", finish);
@@ -448,7 +259,7 @@ export async function runTui(dependencies) {
448
259
  }
449
260
  catch { /* input may already be closed */ }
450
261
  remote?.close();
451
- output.write("\x1b[0m\x1b[?25h\x1b[?1049l");
262
+ output.write(`${color ? "\x1b[0m" : ""}\x1b[?25h\x1b[?1049l`);
452
263
  resolveDone();
453
264
  };
454
265
  const onKeypress = (sequence, details) => {
@@ -480,7 +291,7 @@ export async function runTui(dependencies) {
480
291
  const retiring = model.retiring;
481
292
  model.mode = "browse";
482
293
  delete model.retiring;
483
- const visible = retiring ? retirementLines(retiring, output.columns || 80).length <= (output.rows || 24) : false;
294
+ const visible = retiring ? modalFits({ ...model, mode: "confirm", retiring }, output.columns || 80, (output.rows || 24) - 1) : false;
484
295
  if (key.toLowerCase() === "y" && retiring && visible)
485
296
  queueAction("retire", { method: "retire_route", params: { endpoint: retiring.id } });
486
297
  else
@@ -537,8 +348,6 @@ export async function runTui(dependencies) {
537
348
  };
538
349
  const onInputData = (chunk) => { if (!closed)
539
350
  keyInput.write(chunk); };
540
- emitKeypressEvents(keyInput);
541
- keyInput.on("keypress", onKeypress);
542
351
  input.on("data", onInputData);
543
352
  input.on("end", finish);
544
353
  input.on("error", finish);
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/gateway/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/gateway/tui.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  # Configuration
2
2
 
3
+ Embassy requires macOS and Node.js 22 or newer.
4
+
3
5
  Embassy has one broker per login user and machine. Configuration is inherited
4
6
  when the broker starts; changing it requires a broker restart. Provider build
5
7
  or version metadata never grants routing authority.
@@ -121,19 +123,18 @@ the ID is not a command argument or public output. A fallback registration is
121
123
  the same endpoint kind as discovery, and a matching native identity cannot
122
124
  create a duplicate. Each delivery independently attests the current App Server
123
125
  interface and exact task before authorization.
124
- Explicit registration sets a private retention marker, so older roots remain
125
- listed after restart even outside the discovery window. Window aging preserves
126
- automatic rows referenced by pending work, but drops unused automatic rows to
127
- release capacity. No retirement, suppression or settlement occurs. A returning
128
- root keeps its ID while retained/pending; after pruning it receives a fresh ID,
129
- and old receipts never retarget. An unnamed root gets a new generated alias
130
- after pruning. The existing 128-endpoint bound remains.
131
- No discovered/registered badge is exposed.
132
- Explicitly registered rows keep their registered aliases through native scans;
133
- native names drive automatic rows only. A later explicit registration can rename
134
- the retained row without moving its identity or admitted work.
135
- The ellipsis in `--alias ...` is a substitution: use the task's chosen
136
- `codex-` name with this machine's exact `@host` suffix.
126
+ Explicit registration sets a private retention marker, so registered roots
127
+ remain listed after restart even outside the discovery window, and keep their
128
+ registered aliases through native scans; native names drive automatic rows
129
+ only. A later explicit registration can rename the retained row without moving
130
+ its identity or admitted work. Window aging preserves automatic rows referenced
131
+ by pending work but drops unused automatic rows to release capacity, without
132
+ retirement, suppression or settlement. A returning root keeps its ID while
133
+ retained or pending; after pruning it receives a fresh ID (and, if unnamed, a
134
+ new generated alias), and old receipts never retarget. The 128-endpoint bound
135
+ applies to discovered and registered rows alike, and public output carries no
136
+ discovered/registered badge. The ellipsis in `--alias ...` is a substitution:
137
+ use the task's chosen `codex-` name with this machine's exact `@host` suffix.
137
138
 
138
139
  `register-codex --succeeds <old-alias>` atomically retires a predecessor and
139
140
  installs the caller. It never reanchors pending work to a new identity.
@@ -235,11 +236,11 @@ before provider setup, so only one broker can run.
235
236
 
236
237
  ## Private state reset
237
238
 
238
- This release reads valid schema-6 `gateway-state.json` forward, treating every
239
- existing row as retained; new writes use schema 7. The retention marker is the
240
- only added field. Back up state before upgrading 4.2.0; no reset is required,
241
- but 4.2.0 refuses schema 7 and rollback requires the pre-upgrade backup.
242
- There is no 3.x converter. Schema ≤5 or unknown schemas refuse with
239
+ `gateway-state.json` is written as schema 7. A valid schema-6 document from an
240
+ earlier 4.x release is read forward with every existing row retained; no reset
241
+ is required, but back up state before upgrading, because an earlier 4.x binary
242
+ refuses schema 7 and rollback requires the pre-upgrade backup. There is no 3.x
243
+ converter. Schema ≤5 or unknown schemas refuse with
243
244
  `GATEWAY_STATE_SCHEMA_UNSUPPORTED`; malformed accepted schemas refuse with
244
245
  `CORRUPT_GATEWAY_STATE`. Refusal does not mutate the installed file.
245
246
 
@@ -251,20 +252,20 @@ Reset procedure:
251
252
  serve process) and confirm it is stopped with `embassy service status`.
252
253
  3. Back up and move aside only `gateway-state.json` in that broker's state
253
254
  directory. Keep the valid `nodes.json`.
254
- 4. Install the current discovery-enabled 4.x release, then run
255
- `embassy service install`.
256
- 5. The broker creates fresh schema-7 state.
257
- 6. Let current Codex agents be discovered. Use fallback registration only for
258
- non-native harnesses. Claude endpoints are recorded on discovery/use.
255
+ 4. Install the current release, then run `embassy service install`. The
256
+ broker creates fresh schema-7 state.
257
+ 5. Let current Codex agents be discovered. Use fallback registration only for
258
+ non-native harnesses. Claude endpoints are recorded on discovery or use.
259
259
 
260
- All state produced by Embassy 3.x is unsupported by 4.x; preserve the matching
261
- old binary as well as its old state if rollback may be needed, and never run
262
- the old and new brokers together.
260
+ All state produced by Embassy 3.x is unsupported; preserve the matching old
261
+ binary as well as its old state if rollback may be needed, and never run the
262
+ old and new brokers together.
263
263
 
264
264
  A reset abandons unsettled work and invalidates delivery tokens and
265
- conversation references. Rollback means stopping v4 and restoring both the old
266
- binary and its untouched old state. Never hand-edit either schema.
267
- After v4 has accepted work, the old backup does not contain that work. Before
268
- rolling back, inspect and drain or explicitly abandon v4 deliveries, and keep
269
- a separate backup of the v4 state. Restoring v3 is not a rollback of those
270
- delivery effects and must never silently discard unsettled v4 work.
265
+ conversation references. Rollback means stopping the current broker and
266
+ restoring both the old binary and its untouched old state. Never hand-edit
267
+ either schema. Work accepted after the upgrade is absent from the old backup:
268
+ before rolling back, inspect and drain or explicitly abandon those deliveries
269
+ and keep a separate backup of the current state. Restoring the old binary is
270
+ not a rollback of those delivery effects and must never silently discard
271
+ unsettled work.