@cotal-ai/cli 0.51.0 → 0.52.0

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.
Files changed (113) hide show
  1. package/dist/command.d.ts.map +1 -1
  2. package/dist/command.js +8 -0
  3. package/dist/command.js.map +1 -1
  4. package/dist/commands/agents.d.ts +41 -2
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +67 -18
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/clean.d.ts.map +1 -1
  9. package/dist/commands/clean.js +5 -1
  10. package/dist/commands/clean.js.map +1 -1
  11. package/dist/commands/console.d.ts.map +1 -1
  12. package/dist/commands/console.js +9 -1
  13. package/dist/commands/console.js.map +1 -1
  14. package/dist/commands/doctor.d.ts.map +1 -1
  15. package/dist/commands/doctor.js +13 -8
  16. package/dist/commands/doctor.js.map +1 -1
  17. package/dist/commands/down.d.ts.map +1 -1
  18. package/dist/commands/down.js +38 -3
  19. package/dist/commands/down.js.map +1 -1
  20. package/dist/commands/setup.d.ts.map +1 -1
  21. package/dist/commands/setup.js +9 -8
  22. package/dist/commands/setup.js.map +1 -1
  23. package/dist/commands/spawn.d.ts.map +1 -1
  24. package/dist/commands/spawn.js +18 -2
  25. package/dist/commands/spawn.js.map +1 -1
  26. package/dist/commands/status.d.ts.map +1 -1
  27. package/dist/commands/status.js +122 -35
  28. package/dist/commands/status.js.map +1 -1
  29. package/dist/commands/up.d.ts +7 -0
  30. package/dist/commands/up.d.ts.map +1 -1
  31. package/dist/commands/up.js +104 -11
  32. package/dist/commands/up.js.map +1 -1
  33. package/dist/commands/update.d.ts +12 -0
  34. package/dist/commands/update.d.ts.map +1 -1
  35. package/dist/commands/update.js +58 -5
  36. package/dist/commands/update.js.map +1 -1
  37. package/dist/console/app.d.ts +14 -6
  38. package/dist/console/app.d.ts.map +1 -1
  39. package/dist/console/app.js +308 -40
  40. package/dist/console/app.js.map +1 -1
  41. package/dist/console/commands.d.ts +29 -1
  42. package/dist/console/commands.d.ts.map +1 -1
  43. package/dist/console/commands.js +109 -13
  44. package/dist/console/commands.js.map +1 -1
  45. package/dist/console/control.d.ts +141 -0
  46. package/dist/console/control.d.ts.map +1 -0
  47. package/dist/console/control.js +189 -0
  48. package/dist/console/control.js.map +1 -0
  49. package/dist/console/mesh.d.ts +1 -1
  50. package/dist/console/mesh.d.ts.map +1 -1
  51. package/dist/console/root.d.ts +13 -1
  52. package/dist/console/root.d.ts.map +1 -1
  53. package/dist/console/root.js +25 -5
  54. package/dist/console/root.js.map +1 -1
  55. package/dist/console/ui/CommandPalette.d.ts +2 -1
  56. package/dist/console/ui/CommandPalette.d.ts.map +1 -1
  57. package/dist/console/ui/CommandPalette.js +3 -2
  58. package/dist/console/ui/CommandPalette.js.map +1 -1
  59. package/dist/console/ui/Confirm.d.ts +13 -4
  60. package/dist/console/ui/Confirm.d.ts.map +1 -1
  61. package/dist/console/ui/Confirm.js +13 -5
  62. package/dist/console/ui/Confirm.js.map +1 -1
  63. package/dist/console/ui/Detail.d.ts +8 -1
  64. package/dist/console/ui/Detail.d.ts.map +1 -1
  65. package/dist/console/ui/Detail.js +11 -4
  66. package/dist/console/ui/Detail.js.map +1 -1
  67. package/dist/console/ui/Help.d.ts.map +1 -1
  68. package/dist/console/ui/Help.js +3 -2
  69. package/dist/console/ui/Help.js.map +1 -1
  70. package/dist/console/ui/Roster.d.ts +9 -1
  71. package/dist/console/ui/Roster.d.ts.map +1 -1
  72. package/dist/console/ui/Roster.js +16 -5
  73. package/dist/console/ui/Roster.js.map +1 -1
  74. package/dist/console/ui/Sparkline.d.ts +13 -0
  75. package/dist/console/ui/Sparkline.d.ts.map +1 -0
  76. package/dist/console/ui/Sparkline.js +21 -0
  77. package/dist/console/ui/Sparkline.js.map +1 -0
  78. package/dist/console/ui/StatusBar.d.ts +4 -1
  79. package/dist/console/ui/StatusBar.d.ts.map +1 -1
  80. package/dist/console/ui/StatusBar.js +5 -3
  81. package/dist/console/ui/StatusBar.js.map +1 -1
  82. package/dist/console/ui/Tabs.d.ts +4 -2
  83. package/dist/console/ui/Tabs.d.ts.map +1 -1
  84. package/dist/console/ui/Tabs.js +5 -3
  85. package/dist/console/ui/Tabs.js.map +1 -1
  86. package/dist/console/ui/topo/Map.d.ts.map +1 -1
  87. package/dist/console/ui/topo/Map.js +34 -2
  88. package/dist/console/ui/topo/Map.js.map +1 -1
  89. package/dist/console/ui/topo/Matrix.d.ts.map +1 -1
  90. package/dist/console/ui/topo/Matrix.js +12 -3
  91. package/dist/console/ui/topo/Matrix.js.map +1 -1
  92. package/dist/console/ui/topo/Sequence.js +1 -1
  93. package/dist/console/ui/topo/Sequence.js.map +1 -1
  94. package/dist/console/ui/topo/Topo.d.ts +10 -2
  95. package/dist/console/ui/topo/Topo.d.ts.map +1 -1
  96. package/dist/console/ui/topo/Topo.js +6 -4
  97. package/dist/console/ui/topo/Topo.js.map +1 -1
  98. package/dist/console/ui/topo/model.d.ts +50 -2
  99. package/dist/console/ui/topo/model.d.ts.map +1 -1
  100. package/dist/console/ui/topo/model.js +69 -6
  101. package/dist/console/ui/topo/model.js.map +1 -1
  102. package/dist/lib/attach-client.d.ts.map +1 -1
  103. package/dist/lib/attach-client.js +7 -1
  104. package/dist/lib/attach-client.js.map +1 -1
  105. package/dist/lib/delivery-proc.d.ts +10 -2
  106. package/dist/lib/delivery-proc.d.ts.map +1 -1
  107. package/dist/lib/delivery-proc.js +7 -1
  108. package/dist/lib/delivery-proc.js.map +1 -1
  109. package/dist/view/mesh-view.d.ts +41 -1
  110. package/dist/view/mesh-view.d.ts.map +1 -1
  111. package/dist/view/mesh-view.js +107 -8
  112. package/dist/view/mesh-view.js.map +1 -1
  113. package/package.json +13 -6
@@ -1,11 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
2
+ import { writeSync } from "node:fs";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
4
  import { Box, Text, useApp, useFocusManager, useInput, useStdout } from "ink";
4
- import { DEV_OWNER } from "@cotal-ai/core";
5
5
  import { useMesh } from "./mesh.js";
6
+ import { control, controlPs, createManagedPoller, deleteChannel } from "./control.js";
7
+ import { attachSeat } from "../commands/agents.js";
8
+ import { detachKey } from "../lib/attach-client.js";
6
9
  import { Tabs } from "./ui/Tabs.js";
7
10
  import { Tiles } from "./ui/Tiles.js";
8
- import { Roster } from "./ui/Roster.js";
11
+ import { Roster, harnessTag } from "./ui/Roster.js";
9
12
  import { Feed } from "./ui/Feed.js";
10
13
  import { NeedsYou } from "./ui/NeedsYou.js";
11
14
  import { Dm } from "./ui/Dm.js";
@@ -19,14 +22,20 @@ import { Prompt } from "./ui/Prompt.js";
19
22
  import { Detail } from "./ui/Detail.js";
20
23
  import { runCommand } from "./commands.js";
21
24
  import { mentionsIn } from "../lib/mentions.js";
25
+ /** How often the console re-reads the manager's managed rows (which harness runs each seat). Each
26
+ * poll is a full per-action control call (resolve, mint, connect, describe, invoke), so it is
27
+ * deliberately slow. */
28
+ const PS_POLL_MS = 10_000;
22
29
  /**
23
30
  * The lazygit-style console: channel tabs · golden-signal tiles · roster · live feed · status bar,
24
- * plus the NEEDS-YOU rail (`n`), the DM lens (`d`), the `:` operator command palette, and `D` to
25
- * kill a selected agent. `useMesh` owns the observer endpoint; panels lay out `mesh` and (when
26
- * `canWrite`) the palette/`D` publish + control over the same endpoint. Input is single-source:
31
+ * plus the NEEDS-YOU rail (`n`), the DM lens (`d`), and the `:` operator command palette. `useMesh`
32
+ * owns the observer endpoint; panels lay out `mesh` and (when `canWrite`) the palette publishes
33
+ * chat over the same endpoint. Control (`D` kill, `:spawn` / `:purge` / `:status` / `:ps`)
34
+ * never rides the observer: each action is one call through the CLI's
35
+ * per-action control path (console/control.ts), gated on `canControl`. Input is single-source:
27
36
  * this global handler owns the keys/overlays; panels' keys are gated on focus and `blocked`.
28
37
  */
29
- export function App({ ep, tapSubject, onBack, canWrite, }) {
38
+ export function App({ ep, tapSubject, onBack, canWrite, canControl, controlCtx, makeParticipant, }) {
30
39
  const mesh = useMesh(ep, { tapSubject });
31
40
  const { exit } = useApp();
32
41
  const { stdout } = useStdout();
@@ -44,6 +53,7 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
44
53
  const [confirm, setConfirm] = useState(null);
45
54
  const [compose, setCompose] = useState(null);
46
55
  const [notice, setNotice] = useState();
56
+ const [attachTarget, setAttachTarget] = useState(null);
47
57
  const overlay = helpOpen || detail !== null;
48
58
  const blocked = overlay || search.active || palette.active || confirm !== null || compose !== null;
49
59
  // ---- geometry (pure from size / mode / rail / search / palette / compose) ---
@@ -76,7 +86,7 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
76
86
  const normalFocus = focusedId === "roster" ? "roster" : focusedId === "needsyou" && railAsColumn ? "needsyou" : "feed";
77
87
  // Focus the right pane after an overlay closes, or when switching into/out of a view.
78
88
  useEffect(() => {
79
- if (overlay || confirm)
89
+ if (overlay || confirm || attachTarget)
80
90
  return;
81
91
  if (railOverlay)
82
92
  focus("needsyou");
@@ -87,7 +97,56 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
87
97
  else
88
98
  focus(normalFocus);
89
99
  // eslint-disable-next-line react-hooks/exhaustive-deps
90
- }, [helpOpen, detail, mode, railOpen, confirm]);
100
+ }, [helpOpen, detail, mode, railOpen, confirm, attachTarget]);
101
+ // One control call against the manager of THIS space (console/control.ts): resolve, mint a
102
+ // one-shot instrument, call, drop. The observer endpoint is never involved.
103
+ const ctl = useCallback((op, args) => control({ ...controlCtx, space: ep.space }, op, args), [ep.space, controlCtx]);
104
+ // Managed state lives in the manager, not in presence: only the manager knows WHICH harness it
105
+ // launched (`agent` = connector, `mode` = runtime) for a seat whose card carries no meta. Poll
106
+ // the manager's rows at a low rate and merge by the non-forgeable id; stop polling when nothing
107
+ // answers, so an open mesh without a supervisor does not spin on every tick.
108
+ //
109
+ // Stopping is SAID ONCE rather than swallowed. A refused permission, an expired credential and
110
+ // a mesh that simply has no manager all end the poll, and they are different facts: without the
111
+ // notice the harness tags and the detail card's `runs` just stay blank for the rest of the
112
+ // session with nothing to tell the operator which of the three happened.
113
+ const [managed, setManaged] = useState(new Map());
114
+ useEffect(() => {
115
+ if (!canControl || !controlCtx)
116
+ return;
117
+ let alive = true;
118
+ // The poller owns the per-instance rows, the single-flight guard and the announce-once state;
119
+ // a new space or credential builds a new one, so nothing is carried over.
120
+ const poller = createManagedPoller(() => controlPs({ ...controlCtx, space: ep.space }), {
121
+ rows: (flat) => setManaged((prev) => {
122
+ const same = flat.size === prev.size &&
123
+ [...flat].every(([id, m]) => {
124
+ const p = prev.get(id);
125
+ return p !== undefined && p.agent === m.agent && p.mode === m.mode;
126
+ });
127
+ return same ? prev : flat;
128
+ }),
129
+ partial: (silent, failed) => {
130
+ const parts = [
131
+ ...failed.map((f) => `${f.instanceId}: ${f.error}`),
132
+ ...(silent.length ? [`${silent.length} manager instance(s) gave no answer: ${silent.join(", ")}`] : []),
133
+ ];
134
+ setNotice(`managed rows are partial: ${parts.join("; ")}`);
135
+ },
136
+ stopped: (error) => setNotice(`no managed-agent rows: ${error}`),
137
+ });
138
+ const tick = async () => {
139
+ if (!alive)
140
+ return;
141
+ await poller.tick();
142
+ };
143
+ void tick();
144
+ const t = setInterval(() => void tick(), PS_POLL_MS);
145
+ return () => {
146
+ alive = false;
147
+ clearInterval(t);
148
+ };
149
+ }, [canControl, controlCtx, ep.space]);
91
150
  // Keep last-seen ages fresh.
92
151
  const [, tick] = useState(0);
93
152
  useEffect(() => {
@@ -101,6 +160,42 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
101
160
  const t = setTimeout(() => setNotice(undefined), 3000);
102
161
  return () => clearTimeout(t);
103
162
  }, [notice]);
163
+ // Suspend the console and hand the terminal to the seat. The `attachTarget` render commits
164
+ // App→null and gates the top-level useInput, so Ink releases stdin (ref-counted raw mode) BEFORE
165
+ // the attach loop takes it. The loop is the CLI's own (`attachSeat`): seat locality, the
166
+ // one-use holder-bound session over the mesh, reconnect with backoff, end-reason classification,
167
+ // the abandoned-session hand-back, and the terminal given back before the verdict returns. The
168
+ // observer endpoint + MeshView keep running in the background (App stays mounted). On return,
169
+ // re-assert the console's alt-screen / alt-scroll / cursor (the loop leaves us in the main
170
+ // buffer after a full-screen child) and show the verdict.
171
+ useEffect(() => {
172
+ if (!attachTarget)
173
+ return;
174
+ let cancelled = false;
175
+ const { name } = attachTarget;
176
+ void (async () => {
177
+ let verdict;
178
+ try {
179
+ verdict = await attachSeat({ ...controlCtx, space: ep.space, name }, { reconnect: true, onRefusal: "throw" });
180
+ }
181
+ catch (e) {
182
+ verdict = { kind: "failed", message: e.message };
183
+ }
184
+ try {
185
+ writeSync(process.stdout.fd, "\x1b[?1049h\x1b[?1007h\x1b[?25h");
186
+ }
187
+ catch {
188
+ /* stdout gone */
189
+ }
190
+ if (cancelled)
191
+ return;
192
+ setAttachTarget(null);
193
+ setNotice(verdict.kind === "ended" ? `detached from ${name}` : verdict.kind === "gone" ? `seat ${name} is gone` : `attach: ${verdict.message}`);
194
+ })();
195
+ return () => {
196
+ cancelled = true;
197
+ };
198
+ }, [attachTarget, controlCtx, ep.space]);
104
199
  useEffect(() => {
105
200
  const onResize = () => setSize({ cols: stdout.columns || 80, rows: stdout.rows || 24 });
106
201
  stdout.on("resize", onResize);
@@ -112,10 +207,79 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
112
207
  const counts = {};
113
208
  for (const ch of mesh.channels)
114
209
  counts[ch.channel] = ch.messages;
210
+ // Per-channel unread: pure client state over MeshView's live ARRIVAL counters (the web
211
+ // sidebar's badges are the same kind of state). The broker's retained count is not the base: it
212
+ // is capped per sender, so it stops climbing under live traffic and a badge built on it goes
213
+ // quiet at the cap. Arrivals start at zero for every channel when the console starts, so history
214
+ // is not unread and no baseline snapshot is needed: a channel with no watermark, including one
215
+ // that first appears on a mesh that was empty at start, has every arrival unread. Viewing a
216
+ // concrete channel keeps its watermark pinned to the arrivals so far (viewing clears).
217
+ const [seen, setSeen] = useState({});
218
+ useEffect(() => {
219
+ setSeen((s) => {
220
+ let next = s;
221
+ const bump = (channel, v) => {
222
+ if (next === s)
223
+ next = { ...s };
224
+ next[channel] = v;
225
+ };
226
+ // A channel that left the strip (deleted) drops its watermark once it is gone, not before:
227
+ // dropping it while the tab is still listed would badge everything seen so far as unread.
228
+ // MeshView drops its arrivals with the channel, so a channel created again later is new, and
229
+ // every arrival on it is unread, like any channel that appears after the baseline.
230
+ const listed = new Set(mesh.channels.map((ch) => ch.channel));
231
+ for (const channel of Object.keys(next))
232
+ if (!listed.has(channel)) {
233
+ if (next === s)
234
+ next = { ...s };
235
+ delete next[channel];
236
+ }
237
+ const cur = mesh.channels.find((ch) => ch.channel === activeChannel)?.arrivals;
238
+ if (activeChannel !== "all" && cur !== undefined && next[activeChannel] !== cur)
239
+ bump(activeChannel, cur);
240
+ return next;
241
+ });
242
+ // an activeChannel change must also re-pin the watermark.
243
+ // eslint-disable-next-line react-hooks/exhaustive-deps
244
+ }, [mesh.channels, activeChannel]);
245
+ const unread = {};
246
+ for (const ch of mesh.channels) {
247
+ const n = ch.arrivals - (seen[ch.channel] ?? 0);
248
+ if (n > 0 && ch.channel !== activeChannel)
249
+ unread[ch.channel] = n;
250
+ }
251
+ // id → short harness tag for the roster (what the agent IS): the card's self-published
252
+ // meta.connector first, the manager's launch record for a seat whose card carries no meta.
253
+ const harness = useMemo(() => {
254
+ const m = new Map();
255
+ for (const p of mesh.agents) {
256
+ const meta = p.card.meta;
257
+ const connector = typeof meta?.connector === "string" ? meta.connector : managed.get(p.card.id)?.agent;
258
+ const tag = harnessTag(connector);
259
+ if (tag)
260
+ m.set(p.card.id, tag);
261
+ }
262
+ return m;
263
+ }, [mesh.agents, managed]);
115
264
  const onFocus = useCallback((id) => setFocusedId(id), []);
116
265
  const openAgent = useCallback((p) => setDetail({ kind: "agent", agent: p }), []);
117
266
  const openMessage = useCallback((e) => setDetail({ kind: "message", entry: e }), []);
118
267
  const handleKill = useCallback((p) => setConfirm({ kind: "kill", name: p.card.name }), []);
268
+ // Attach: open the seat's live terminal. Keyed by NAME (a managed seat need not be a roster peer,
269
+ // same as `cotal attach --name`). A bad COTAL_DETACH_KEY is refused BEFORE suspending, as a
270
+ // notice: the loop would only throw it after the takeover, with the screen already gone.
271
+ const handleAttach = useCallback((name) => {
272
+ if (!canControl)
273
+ return setNotice("no control path - a raw --creds file cannot drive the manager; run against a registered mesh");
274
+ try {
275
+ detachKey();
276
+ }
277
+ catch (e) {
278
+ return setNotice("attach: " + e.message);
279
+ }
280
+ setNotice(`attaching to ${name}…`);
281
+ setAttachTarget({ name });
282
+ }, [canControl]);
119
283
  const feedCompose = useCallback(() => setCompose({ kind: "channel", channel: activeChannel === "all" ? "general" : activeChannel, value: "" }), [activeChannel]);
120
284
  const feedReply = useCallback((e) => setCompose({ kind: "reply", entry: e, value: "" }), []);
121
285
  const rosterCompose = useCallback((p) => setCompose({ kind: "dm", toId: p.card.id, toName: p.card.name, value: "" }), []);
@@ -124,6 +288,88 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
124
288
  : c.kind === "dm"
125
289
  ? "→ @" + c.toName
126
290
  : "↩ " + c.entry.from.name + (c.entry.delivery === "multicast" && c.entry.channel ? " #" + c.entry.channel : "");
291
+ // First time the operator sends anything, put the operator on the roster: start the presence
292
+ // peer (root.tsx's makeParticipant, the observer's own card), so agents see the operator and
293
+ // their DM replies have a peer to land on; the whole-space tap the open-mesh console already
294
+ // runs is what shows them in the DM lens. Idempotent, canWrite-gated (a pure-watch session never
295
+ // calls it). A refused start leaves the operator invisible and is shown; the next send retries.
296
+ //
297
+ // OPEN MESH ONLY, and said so rather than degraded: Root offers no peer under auth, where the
298
+ // tap is narrowed to chat and an agent-grade credential holds no live read of its own DM inbox
299
+ // (DMs ride its lifecycle-keyed durable, which the observer does not consume), so a reply could
300
+ // never be shown here. A send there is one-way, and the status line says exactly that once.
301
+ const participant = useRef(null);
302
+ const activatedRef = useRef(false);
303
+ const participantStart = useRef(null);
304
+ const [onRoster, setOnRoster] = useState(false);
305
+ const ensureParticipant = useCallback(async () => {
306
+ if (activatedRef.current || !canWrite)
307
+ return true;
308
+ if (participantStart.current)
309
+ return participantStart.current;
310
+ if (!makeParticipant) {
311
+ activatedRef.current = true;
312
+ setNotice("sent one-way: under this credential replies cannot land in the console");
313
+ return true;
314
+ }
315
+ const start = (async () => {
316
+ const peer = makeParticipant();
317
+ // The status bar's "on roster" is a claim about a LIVE presence peer, so it follows the peer's
318
+ // own connection state rather than being set once and left. `error` only says something went
319
+ // wrong; `connection` says whether the operator is actually on the roster right now, and the
320
+ // endpoint re-establishes itself after a terminal close, so a fault is usually followed by a
321
+ // recovery that must put the claim back. The peer is deliberately RETAINED across a fault:
322
+ // dropping the reference would leave a live endpoint that still republishes presence, that
323
+ // the console no longer stops on exit, and that a later send would duplicate under the same
324
+ // principal.
325
+ peer.on("connection", ({ connected }) => {
326
+ if (participant.current === peer)
327
+ setOnRoster(connected);
328
+ });
329
+ peer.on("error", (e) => {
330
+ if (participant.current === peer)
331
+ setNotice("participant: " + e.message);
332
+ });
333
+ try {
334
+ await peer.start();
335
+ participant.current = peer;
336
+ activatedRef.current = true;
337
+ setOnRoster(true);
338
+ return true;
339
+ }
340
+ catch (e) {
341
+ // A peer that never started is dropped, so it must not keep this component's handlers or a
342
+ // half-open connection behind it. The next send builds a fresh one.
343
+ peer.removeAllListeners("connection");
344
+ peer.removeAllListeners("error");
345
+ peer.on("error", () => { });
346
+ void peer.stop().catch(() => undefined);
347
+ setNotice("participant: " + e.message);
348
+ return false;
349
+ }
350
+ })();
351
+ participantStart.current = start;
352
+ try {
353
+ return await start;
354
+ }
355
+ finally {
356
+ if (participantStart.current === start)
357
+ participantStart.current = null;
358
+ }
359
+ }, [canWrite, makeParticipant]);
360
+ // The peer leaves with the console (an offline record, like the observer's own stop in useMesh).
361
+ // Its handlers go first: `stop()` closes the connection, which is itself a disconnect, and a
362
+ // setState from a component being torn down is a warning at best and a wrong repaint at worst.
363
+ useEffect(() => () => {
364
+ const peer = participant.current;
365
+ participant.current = null;
366
+ if (!peer)
367
+ return;
368
+ peer.removeAllListeners("connection");
369
+ peer.removeAllListeners("error");
370
+ peer.on("error", () => { }); // the factory's guard, restored: a stray error must not throw
371
+ void peer.stop();
372
+ }, []);
127
373
  // Send the in-progress compose over the live endpoint.
128
374
  const submitCompose = () => {
129
375
  const c = compose;
@@ -135,17 +381,21 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
135
381
  return;
136
382
  const ok = (label) => () => setNotice(label);
137
383
  const fail = (e) => setNotice("send: " + e.message);
138
- if (c.kind === "channel")
139
- void ep.multicast(text, { channel: c.channel, mentions: mentionsIn(text) }).then(ok("→ #" + c.channel)).catch(fail);
140
- else if (c.kind === "dm")
141
- void ep.unicast(c.toId, text).then(ok("→ " + c.toName)).catch(fail);
142
- else {
143
- const e = c.entry;
144
- const send = e.delivery === "multicast" && e.channel
145
- ? ep.multicast(text, { channel: e.channel, replyTo: e.id, mentions: mentionsIn(text) })
146
- : ep.unicast(e.from.id, text, { replyTo: e.id });
147
- void send.then(ok("↩ " + e.from.name)).catch(fail);
148
- }
384
+ void ensureParticipant().then((ready) => {
385
+ if (!ready)
386
+ return;
387
+ if (c.kind === "channel")
388
+ void ep.multicast(text, { channel: c.channel, mentions: mentionsIn(text) }).then(ok("→ #" + c.channel)).catch(fail);
389
+ else if (c.kind === "dm")
390
+ void ep.unicast(c.toId, text).then(ok("→ " + c.toName)).catch(fail);
391
+ else {
392
+ const e = c.entry;
393
+ const send = e.delivery === "multicast" && e.channel
394
+ ? ep.multicast(text, { channel: e.channel, replyTo: e.id, mentions: mentionsIn(text) })
395
+ : ep.unicast(e.from.id, text, { replyTo: e.id });
396
+ void send.then(ok("↩ " + e.from.name)).catch(fail);
397
+ }
398
+ }, fail); // a participant start that throws before its own catch must not drop the message silently
149
399
  };
150
400
  // Run a typed palette line against the live endpoint.
151
401
  const runPaletteLine = (line) => {
@@ -161,28 +411,42 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
161
411
  back: onBack,
162
412
  exit,
163
413
  notify: setNotice,
414
+ control: ctl,
415
+ ps: () => controlPs({ ...controlCtx, space: ep.space }),
416
+ confirmPurge: () => setConfirm({ kind: "purge", space: ep.space }),
417
+ confirmDelchan: (channel) => setConfirm({ kind: "delchan", channel }),
418
+ startAttach: handleAttach,
419
+ ensureParticipant,
164
420
  };
165
- runCommand(line, ctx, !!canWrite);
421
+ runCommand(line, ctx, !!canWrite, !!canControl);
166
422
  };
167
- // Confirmed destructive action (kill only; space-delete is handled in the picker). Resolve the
168
- // alias to its principal triple via the manager's `inspect` read, then `despawn` over the ep
169
- // rails (1d: the manager's ctl door is gone). Any-mode reach - the console's operator stop is
170
- // cross-agent; on an open mesh the broker enforces nothing, on an authed mesh the read-only
171
- // console cred is cleanly denied (its stop never functioned there).
172
- const onConfirmed = () => {
423
+ // Confirmed destructive action (kill / purge; space-delete is handled in the picker). Both go
424
+ // through the control door: `stop` is the CLI's own `cotal stop` (seat locality, then the
425
+ // targeted despawn with any-mode reach on a static or open mesh, owner reach on a user mesh);
426
+ // `purge` is the manager.admin op behind the typed-name confirm.
427
+ const onConfirmed = (opts) => {
173
428
  const c = confirm;
174
429
  setConfirm(null);
175
430
  if (c?.kind === "kill") {
176
- void (async () => {
177
- const info = await ep.invokeService("manager", "inspect", { name: c.name });
178
- if (info.reply.ok !== true)
179
- return setNotice(`stop: ${info.reply.error?.message ?? info.reply.error?.code ?? "failed"}`);
180
- const row = info.reply.data;
181
- const dot = row.id.indexOf(".");
182
- const [owner, actor] = dot > 0 ? [row.id.slice(0, dot), row.id.slice(dot + 1)] : [DEV_OWNER, row.id];
183
- const r = await ep.invokeService("manager", "despawn", undefined, { target: { mode: "any", owner, actor, lifecycleUid: row.lifecycleUid } });
184
- setNotice(r.reply.ok === true ? `stopped ${c.name}` : `stop: ${r.reply.error?.message ?? r.reply.error?.code ?? "failed"}`);
185
- })().catch((e) => setNotice("stop: " + e.message));
431
+ const graceful = !opts?.force;
432
+ setNotice(`${graceful ? "stopping" : "force-killing"} ${c.name}…`);
433
+ void ctl("stop", { name: c.name, graceful }).then((r) => setNotice(r.ok ? `${graceful ? "stopped" : "force-killed"} ${c.name}` : `stop: ${r.error ?? "failed"}`));
434
+ }
435
+ else if (c?.kind === "purge") {
436
+ setNotice(`purging ${c.space}…`);
437
+ void ctl("purge", {}).then((r) => setNotice(r.ok ? "purged space history" : `purge: ${r.error ?? "failed"}`));
438
+ }
439
+ else if (c?.kind === "delchan") {
440
+ // Core's clearChannel with the web's per-action authority (console/control.ts). The tab
441
+ // vanishes on the next channel poll (MeshView rebuilds the list from the broker) and its
442
+ // unread bookkeeping goes with it; leave it now if it is the one being viewed.
443
+ setNotice(`deleting #${c.channel}…`);
444
+ void deleteChannel({ ...controlCtx, space: ep.space }, c.channel).then((r) => {
445
+ if (!r.ok)
446
+ return setNotice(`delchan: ${r.error}`);
447
+ setNotice(`deleted #${c.channel} · ${r.purged} messages purged`);
448
+ setActiveChannel((ch) => (ch === c.channel ? "all" : ch));
449
+ });
186
450
  }
187
451
  };
188
452
  useInput((input, key) => {
@@ -238,15 +502,19 @@ export function App({ ep, tapSubject, onBack, canWrite, }) {
238
502
  if (idx < tabs.length)
239
503
  setActiveChannel(tabs[idx]);
240
504
  }
241
- }, { isActive: !palette.active && confirm === null && compose === null });
505
+ }, { isActive: !attachTarget && !palette.active && confirm === null && compose === null });
506
+ // Attached: render nothing so Ink releases stdin/stdout to the seat (the suspend effect owns the
507
+ // terminal). App stays mounted, so the observer endpoint + MeshView survive in the background.
508
+ if (attachTarget)
509
+ return null;
242
510
  if (helpOpen)
243
511
  return _jsx(Help, { focusedId: focusedId, width: size.cols, height: size.rows });
244
512
  if (detail)
245
- return _jsx(Detail, { target: detail, feed: mesh.feed, width: size.cols, height: size.rows });
513
+ return _jsx(Detail, { target: detail, feed: mesh.feed, width: size.cols, height: size.rows, managed: managed });
246
514
  if (confirm)
247
515
  return (_jsx(Confirm, { target: confirm, width: size.cols, height: size.rows, onConfirm: onConfirmed, onCancel: () => setConfirm(null) }));
248
516
  if (railOverlay)
249
517
  return (_jsx(NeedsYou, { waiting: mesh.signals.waiting, boxWidth: size.cols, boxHeight: size.rows, blocked: blocked, onFocus: onFocus, onOpenDetail: openAgent }));
250
- return (_jsxs(Box, { flexDirection: "column", width: size.cols, height: size.rows, children: [_jsx(Tabs, { tabs: tabs, active: activeChannel, counts: counts, width: size.cols }), _jsx(Tiles, { counts: mesh.signals.counts, stalestLiveTs: mesh.signals.stalestLiveTs, width: size.cols }), mode === "dm" ? (_jsx(Dm, { dms: mesh.signals.dms, dmVisible: mesh.status.dmVisible, width: size.cols, height: bodyH, narrow: narrow, blocked: blocked, onFocus: onFocus })) : mode === "topo" ? (_jsx(Topo, { feed: mesh.feed, agents: mesh.agents, variant: topoVariant, width: size.cols, height: bodyH, blocked: blocked, onFocus: onFocus, onOpenAgent: openAgent, onOpenMessage: openMessage })) : (_jsxs(Box, { flexDirection: narrow ? "column" : "row", height: bodyH, children: [_jsxs(Box, { flexDirection: narrow ? "column" : "row", width: bodyW, height: bodyH, children: [_jsx(Roster, { agents: mesh.agents, endpoints: mesh.endpoints, query: search.query, boxWidth: roster.w, boxHeight: roster.h, wide: !narrow, blocked: blocked, onFocus: onFocus, onOpenDetail: openAgent, onKill: canWrite ? handleKill : undefined, onCompose: canWrite ? rosterCompose : undefined }), _jsx(Feed, { entries: mesh.feed, activeChannel: activeChannel, query: search.query, boxWidth: feed.w, boxHeight: feed.h, blocked: blocked, onFocus: onFocus, onOpenDetail: openMessage, onCompose: canWrite ? feedCompose : undefined, onReply: canWrite ? feedReply : undefined })] }), railAsColumn ? (_jsx(NeedsYou, { waiting: mesh.signals.waiting, boxWidth: railW, boxHeight: bodyH, blocked: blocked, onFocus: onFocus, onOpenDetail: openAgent })) : null] })), notice ? (_jsx(Box, { width: size.cols, paddingX: 1, children: _jsx(Text, { color: "cyan", wrap: "truncate-end", children: notice }) })) : null, compose ? (_jsx(Prompt, { label: composeLabel(compose), value: compose.value, width: size.cols, onChange: (v) => setCompose((c) => (c ? { ...c, value: v } : c)), onSubmit: submitCompose, onCancel: () => setCompose(null) })) : palette.active ? (_jsx(CommandPalette, { active: palette.active, query: palette.query, snapshot: mesh, canWrite: !!canWrite, width: size.cols, onChange: (q) => setPalette((p) => ({ ...p, query: q })), onRun: runPaletteLine, onCancel: () => setPalette({ active: false, query: "" }) })) : searchRow ? (_jsx(Search, { query: search.query, active: search.active, width: size.cols, onChange: (q) => setSearch((s) => ({ ...s, query: q })), onSubmit: () => setSearch((s) => ({ ...s, active: false })), onCancel: () => setSearch({ active: false, query: "" }) })) : null, _jsx(StatusBar, { status: mesh.status, rates: mesh.rates, activeChannel: activeChannel, agentCount: mesh.agents.length, mode: mode, railOpen: railOpen, canBack: !!onBack, canWrite: !!canWrite, width: size.cols })] }));
518
+ return (_jsxs(Box, { flexDirection: "column", width: size.cols, height: size.rows, children: [_jsx(Tabs, { tabs: tabs, active: activeChannel, counts: counts, unread: unread, width: size.cols }), _jsx(Tiles, { counts: mesh.signals.counts, stalestLiveTs: mesh.signals.stalestLiveTs, width: size.cols }), mode === "dm" ? (_jsx(Dm, { dms: mesh.signals.dms, dmVisible: mesh.status.dmVisible, width: size.cols, height: bodyH, narrow: narrow, blocked: blocked, onFocus: onFocus })) : mode === "topo" ? (_jsx(Topo, { feed: mesh.feed, agents: mesh.agents, membership: mesh.membership, channels: mesh.channels, nameOf: mesh.nameOf, variant: topoVariant, width: size.cols, height: bodyH, blocked: blocked, onFocus: onFocus, onOpenAgent: openAgent, onOpenMessage: openMessage })) : (_jsxs(Box, { flexDirection: narrow ? "column" : "row", height: bodyH, children: [_jsxs(Box, { flexDirection: narrow ? "column" : "row", width: bodyW, height: bodyH, children: [_jsx(Roster, { agents: mesh.agents, endpoints: mesh.endpoints, query: search.query, boxWidth: roster.w, boxHeight: roster.h, wide: !narrow, blocked: blocked, onFocus: onFocus, onOpenDetail: openAgent, onKill: canControl ? handleKill : undefined, onAttach: canControl ? (p) => handleAttach(p.card.name) : undefined, harness: harness, onCompose: canWrite ? rosterCompose : undefined }), _jsx(Feed, { entries: mesh.feed, activeChannel: activeChannel, query: search.query, boxWidth: feed.w, boxHeight: feed.h, blocked: blocked, onFocus: onFocus, onOpenDetail: openMessage, onCompose: canWrite ? feedCompose : undefined, onReply: canWrite ? feedReply : undefined })] }), railAsColumn ? (_jsx(NeedsYou, { waiting: mesh.signals.waiting, boxWidth: railW, boxHeight: bodyH, blocked: blocked, onFocus: onFocus, onOpenDetail: openAgent })) : null] })), notice ? (_jsx(Box, { width: size.cols, paddingX: 1, children: _jsx(Text, { color: "cyan", wrap: "truncate-end", children: notice }) })) : null, compose ? (_jsx(Prompt, { label: composeLabel(compose), value: compose.value, width: size.cols, onChange: (v) => setCompose((c) => (c ? { ...c, value: v } : c)), onSubmit: submitCompose, onCancel: () => setCompose(null) })) : palette.active ? (_jsx(CommandPalette, { active: palette.active, query: palette.query, snapshot: mesh, canWrite: !!canWrite, canControl: !!canControl, width: size.cols, onChange: (q) => setPalette((p) => ({ ...p, query: q })), onRun: runPaletteLine, onCancel: () => setPalette({ active: false, query: "" }) })) : searchRow ? (_jsx(Search, { query: search.query, active: search.active, width: size.cols, onChange: (q) => setSearch((s) => ({ ...s, query: q })), onSubmit: () => setSearch((s) => ({ ...s, active: false })), onCancel: () => setSearch({ active: false, query: "" }) })) : null, _jsx(StatusBar, { status: mesh.status, rates: mesh.rates, activeChannel: activeChannel, agentCount: mesh.agents.length, mode: mode, railOpen: railOpen, canBack: !!onBack, canWrite: !!canWrite, canControl: !!canControl, onRoster: onRoster, width: size.cols })] }));
251
519
  }
252
520
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/console/app.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/console/app.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { type CotalEndpoint } from "@cotal-ai/core";
2
2
  import type { MeshSnapshot } from "../view/mesh-view.js";
3
+ import type { ManagerReply } from "../lib/control.js";
4
+ import type { ControlOp, ManagedRow, PsReply } from "./control.js";
3
5
  export interface CommandCtx {
4
6
  ep: CotalEndpoint;
5
7
  snapshot: MeshSnapshot;
@@ -11,15 +13,41 @@ export interface CommandCtx {
11
13
  back?: () => void;
12
14
  exit: () => void;
13
15
  notify: (msg: string) => void;
16
+ /** One control call against this space's manager (console/control.ts). */
17
+ control: (op: ControlOp, args?: Record<string, unknown>) => Promise<ManagerReply>;
18
+ /** The managed rows of EVERY reachable manager in the space (the `cotal ps` scatter, merged):
19
+ * a single class-queue call would answer for one manager and omit the others' seats. `silent`
20
+ * names the instances that did not answer and `failed` names reachable error replies, so a
21
+ * partial list is never shown as a whole one and an error is never mislabeled as silence. */
22
+ ps: () => Promise<PsReply>;
23
+ /** Open the type-the-space-name purge confirm (the palette never purges directly). */
24
+ confirmPurge: () => void;
25
+ /** Open the type-the-channel-name delete confirm for one channel's history and registry entry. */
26
+ confirmDelchan: (channel: string) => void;
27
+ /** Attach to a managed seat's live terminal (suspends the console until detach). */
28
+ startAttach: (name: string) => void;
29
+ /** Put the operator on the roster on its first send (presence, so agents can reply). Idempotent,
30
+ * canWrite-gated; open mesh only, a one-way notice elsewhere. Await before the send. */
31
+ ensureParticipant: () => Promise<boolean>;
14
32
  }
15
33
  export interface ConsoleCommand {
16
34
  name: string;
17
35
  summary: string;
18
36
  usage?: string;
19
37
  write?: boolean;
38
+ control?: boolean;
20
39
  run(ctx: CommandCtx, rest: string): Promise<void> | void;
21
40
  }
41
+ /** One managed-agent row as `:status` prints it. Two facts, printed as two facts, the way
42
+ * `cotal ps` prints them: `status` is the PROCESS the manager runs and `mesh` is that seat's
43
+ * presence, and they disagree in the common failure (running for days, offline on the mesh).
44
+ *
45
+ * Presence `working` is the one word that needs qualifying. It records that the seat said it was
46
+ * working, never that anyone observed progress, so it reaches the reader as `working · progress
47
+ * unknown` here exactly as it does from `cotal ps`, the roster, and the connector's orientation.
48
+ * A bare `working` would claim an observation the manager never made. */
49
+ export declare function formatManagedRow(a: ManagedRow): string;
22
50
  export declare const COMMANDS: ConsoleCommand[];
23
51
  /** Parse + dispatch a typed palette line. Unknown / read-only-blocked commands notify and no-op. */
24
- export declare function runCommand(line: string, ctx: CommandCtx, canWrite: boolean): void;
52
+ export declare function runCommand(line: string, ctx: CommandCtx, canWrite: boolean, canControl: boolean): void;
25
53
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1D;AAcD,eAAO,MAAM,QAAQ,EAAE,cAAc,EA2FpC,CAAC;AAEF,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CASjF"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/console/commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGnE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClF;;;kGAG8F;IAC9F,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,sFAAsF;IACtF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,kGAAkG;IAClG,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,oFAAoF;IACpF,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;6FACyF;IACzF,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1D;AAKD;;;;;;;0EAO0E;AAC1E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAItD;AAcD,eAAO,MAAM,QAAQ,EAAE,cAAc,EA6JpC,CAAC;AAEF,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAYtG"}