@cotal-ai/cli 0.50.1 → 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.
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +32 -1
- package/dist/command.js.map +1 -1
- package/dist/commands/agents.d.ts +41 -2
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +85 -19
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +5 -1
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +9 -1
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +13 -8
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +151 -7
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/endpoints.d.ts.map +1 -1
- package/dist/commands/endpoints.js +2 -1
- package/dist/commands/endpoints.js.map +1 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +25 -0
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/meshes-add.d.ts +2 -54
- package/dist/commands/meshes-add.d.ts.map +1 -1
- package/dist/commands/meshes-add.js +20 -105
- package/dist/commands/meshes-add.js.map +1 -1
- package/dist/commands/meshes.d.ts.map +1 -1
- package/dist/commands/meshes.js +5 -2
- package/dist/commands/meshes.js.map +1 -1
- package/dist/commands/service.d.ts +17 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +541 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +9 -8
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn.d.ts +44 -2
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +310 -47
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +133 -39
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +50 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +284 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/up.d.ts +7 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +174 -23
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/update.d.ts +12 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +83 -9
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/use.js +1 -1
- package/dist/commands/use.js.map +1 -1
- package/dist/console/app.d.ts +14 -6
- package/dist/console/app.d.ts.map +1 -1
- package/dist/console/app.js +308 -40
- package/dist/console/app.js.map +1 -1
- package/dist/console/commands.d.ts +29 -1
- package/dist/console/commands.d.ts.map +1 -1
- package/dist/console/commands.js +109 -13
- package/dist/console/commands.js.map +1 -1
- package/dist/console/control.d.ts +141 -0
- package/dist/console/control.d.ts.map +1 -0
- package/dist/console/control.js +189 -0
- package/dist/console/control.js.map +1 -0
- package/dist/console/mesh.d.ts +1 -1
- package/dist/console/mesh.d.ts.map +1 -1
- package/dist/console/root.d.ts +13 -1
- package/dist/console/root.d.ts.map +1 -1
- package/dist/console/root.js +25 -5
- package/dist/console/root.js.map +1 -1
- package/dist/console/ui/CommandPalette.d.ts +2 -1
- package/dist/console/ui/CommandPalette.d.ts.map +1 -1
- package/dist/console/ui/CommandPalette.js +3 -2
- package/dist/console/ui/CommandPalette.js.map +1 -1
- package/dist/console/ui/Confirm.d.ts +13 -4
- package/dist/console/ui/Confirm.d.ts.map +1 -1
- package/dist/console/ui/Confirm.js +13 -5
- package/dist/console/ui/Confirm.js.map +1 -1
- package/dist/console/ui/Detail.d.ts +8 -1
- package/dist/console/ui/Detail.d.ts.map +1 -1
- package/dist/console/ui/Detail.js +11 -4
- package/dist/console/ui/Detail.js.map +1 -1
- package/dist/console/ui/Help.d.ts.map +1 -1
- package/dist/console/ui/Help.js +3 -2
- package/dist/console/ui/Help.js.map +1 -1
- package/dist/console/ui/Roster.d.ts +9 -1
- package/dist/console/ui/Roster.d.ts.map +1 -1
- package/dist/console/ui/Roster.js +16 -5
- package/dist/console/ui/Roster.js.map +1 -1
- package/dist/console/ui/Sparkline.d.ts +13 -0
- package/dist/console/ui/Sparkline.d.ts.map +1 -0
- package/dist/console/ui/Sparkline.js +21 -0
- package/dist/console/ui/Sparkline.js.map +1 -0
- package/dist/console/ui/StatusBar.d.ts +4 -1
- package/dist/console/ui/StatusBar.d.ts.map +1 -1
- package/dist/console/ui/StatusBar.js +5 -3
- package/dist/console/ui/StatusBar.js.map +1 -1
- package/dist/console/ui/Tabs.d.ts +4 -2
- package/dist/console/ui/Tabs.d.ts.map +1 -1
- package/dist/console/ui/Tabs.js +5 -3
- package/dist/console/ui/Tabs.js.map +1 -1
- package/dist/console/ui/topo/Map.d.ts.map +1 -1
- package/dist/console/ui/topo/Map.js +34 -2
- package/dist/console/ui/topo/Map.js.map +1 -1
- package/dist/console/ui/topo/Matrix.d.ts.map +1 -1
- package/dist/console/ui/topo/Matrix.js +12 -3
- package/dist/console/ui/topo/Matrix.js.map +1 -1
- package/dist/console/ui/topo/Sequence.js +1 -1
- package/dist/console/ui/topo/Sequence.js.map +1 -1
- package/dist/console/ui/topo/Topo.d.ts +10 -2
- package/dist/console/ui/topo/Topo.d.ts.map +1 -1
- package/dist/console/ui/topo/Topo.js +6 -4
- package/dist/console/ui/topo/Topo.js.map +1 -1
- package/dist/console/ui/topo/model.d.ts +50 -2
- package/dist/console/ui/topo/model.d.ts.map +1 -1
- package/dist/console/ui/topo/model.js +69 -6
- package/dist/console/ui/topo/model.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/attach-client.d.ts.map +1 -1
- package/dist/lib/attach-client.js +7 -1
- package/dist/lib/attach-client.js.map +1 -1
- package/dist/lib/delivery-proc.d.ts +10 -2
- package/dist/lib/delivery-proc.d.ts.map +1 -1
- package/dist/lib/delivery-proc.js +7 -1
- package/dist/lib/delivery-proc.js.map +1 -1
- package/dist/lib/manifest/apply.d.ts.map +1 -1
- package/dist/lib/manifest/apply.js +2 -0
- package/dist/lib/manifest/apply.js.map +1 -1
- package/dist/lib/manifest/model.d.ts +2 -0
- package/dist/lib/manifest/model.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.d.ts +2 -0
- package/dist/lib/manifest/prepare.d.ts.map +1 -1
- package/dist/lib/manifest/prepare.js +1 -0
- package/dist/lib/manifest/prepare.js.map +1 -1
- package/dist/lib/manifest/resolve.js +1 -0
- package/dist/lib/manifest/resolve.js.map +1 -1
- package/dist/lib/manifest/schema.d.ts +2 -0
- package/dist/lib/manifest/schema.d.ts.map +1 -1
- package/dist/lib/manifest/schema.js +2 -0
- package/dist/lib/manifest/schema.js.map +1 -1
- package/dist/lib/restore.d.ts +3 -0
- package/dist/lib/restore.d.ts.map +1 -1
- package/dist/lib/restore.js +17 -0
- package/dist/lib/restore.js.map +1 -1
- package/dist/lib/seat-admission.d.ts +51 -0
- package/dist/lib/seat-admission.d.ts.map +1 -0
- package/dist/lib/seat-admission.js +81 -0
- package/dist/lib/seat-admission.js.map +1 -0
- package/dist/lib/seat-capture.d.ts +47 -0
- package/dist/lib/seat-capture.d.ts.map +1 -0
- package/dist/lib/seat-capture.js +195 -0
- package/dist/lib/seat-capture.js.map +1 -0
- package/dist/lib/seat-restore.d.ts +39 -0
- package/dist/lib/seat-restore.d.ts.map +1 -0
- package/dist/lib/seat-restore.js +249 -0
- package/dist/lib/seat-restore.js.map +1 -0
- package/dist/lib/seat-resume.d.ts +24 -0
- package/dist/lib/seat-resume.d.ts.map +1 -0
- package/dist/lib/seat-resume.js +127 -0
- package/dist/lib/seat-resume.js.map +1 -0
- package/dist/view/mesh-view.d.ts +41 -1
- package/dist/view/mesh-view.d.ts.map +1 -1
- package/dist/view/mesh-view.js +107 -8
- package/dist/view/mesh-view.js.map +1 -1
- package/package.json +14 -7
- package/dist/lib/join-target.d.ts +0 -173
- package/dist/lib/join-target.d.ts.map +0 -1
- package/dist/lib/join-target.js +0 -335
- package/dist/lib/join-target.js.map +0 -1
package/dist/console/app.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
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
|
|
25
|
-
*
|
|
26
|
-
*
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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:
|
|
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
|
package/dist/console/app.js.map
CHANGED
|
@@ -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":"
|
|
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"}
|