seatmesh 1.2.4 → 1.3.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/bin/seatmesh +6 -1
- package/dist/commands/agent-forum.d.ts +6 -0
- package/dist/commands/agent-forum.d.ts.map +1 -0
- package/dist/commands/agent-forum.js +26 -0
- package/dist/commands/agent-forum.js.map +1 -0
- package/dist/commands/campaign-cli.d.ts +10 -0
- package/dist/commands/campaign-cli.d.ts.map +1 -0
- package/dist/commands/campaign-cli.js +136 -0
- package/dist/commands/campaign-cli.js.map +1 -0
- package/dist/commands/chat-cli.d.ts.map +1 -1
- package/dist/commands/chat-cli.js +55 -0
- package/dist/commands/chat-cli.js.map +1 -1
- package/dist/commands/cli-speed.test.d.ts +2 -0
- package/dist/commands/cli-speed.test.d.ts.map +1 -0
- package/dist/commands/cli-speed.test.js +39 -0
- package/dist/commands/cli-speed.test.js.map +1 -0
- package/dist/commands/cli-vocal.test.d.ts +2 -0
- package/dist/commands/cli-vocal.test.d.ts.map +1 -0
- package/dist/commands/cli-vocal.test.js +58 -0
- package/dist/commands/cli-vocal.test.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +55 -14
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/completion.test.js +37 -2
- package/dist/commands/completion.test.js.map +1 -1
- package/dist/commands/contract-lock-cli.d.ts.map +1 -1
- package/dist/commands/contract-lock-cli.js +150 -29
- package/dist/commands/contract-lock-cli.js.map +1 -1
- package/dist/commands/help-text.d.ts.map +1 -1
- package/dist/commands/help-text.js +90 -26
- package/dist/commands/help-text.js.map +1 -1
- package/dist/commands/host-cli.d.ts +5 -0
- package/dist/commands/host-cli.d.ts.map +1 -0
- package/dist/commands/host-cli.js +120 -0
- package/dist/commands/host-cli.js.map +1 -0
- package/dist/commands/nav-cli.d.ts +8 -0
- package/dist/commands/nav-cli.d.ts.map +1 -0
- package/dist/commands/nav-cli.js +54 -0
- package/dist/commands/nav-cli.js.map +1 -0
- package/dist/commands/notify-cli.d.ts.map +1 -1
- package/dist/commands/notify-cli.js +38 -3
- package/dist/commands/notify-cli.js.map +1 -1
- package/dist/commands/room-cli.d.ts.map +1 -1
- package/dist/commands/room-cli.js +23 -6
- package/dist/commands/room-cli.js.map +1 -1
- package/dist/commands/schedule-cli.d.ts +13 -0
- package/dist/commands/schedule-cli.d.ts.map +1 -0
- package/dist/commands/schedule-cli.js +74 -0
- package/dist/commands/schedule-cli.js.map +1 -0
- package/dist/commands/schedule-cli.test.d.ts +2 -0
- package/dist/commands/schedule-cli.test.d.ts.map +1 -0
- package/dist/commands/schedule-cli.test.js +29 -0
- package/dist/commands/schedule-cli.test.js.map +1 -0
- package/dist/commands/todo-give.test.js +21 -5
- package/dist/commands/todo-give.test.js.map +1 -1
- package/dist/fast-spawn.d.ts +3 -0
- package/dist/fast-spawn.d.ts.map +1 -0
- package/dist/fast-spawn.js +107 -0
- package/dist/fast-spawn.js.map +1 -0
- package/dist/main.js +323 -44
- package/dist/main.js.map +1 -1
- package/dist/setup/init.d.ts +11 -0
- package/dist/setup/init.d.ts.map +1 -1
- package/dist/setup/init.js +38 -0
- package/dist/setup/init.js.map +1 -1
- package/dist/setup/init.test.js +3 -2
- package/dist/setup/init.test.js.map +1 -1
- package/dist/setup/install.js +2 -2
- package/dist/setup/install.js.map +1 -1
- package/package.json +8 -7
- package/profiles/minimal/mesh.config.yaml +1 -0
- package/templates/cursor/rules/seatmesh-agent.mdc +40 -0
- package/templates/docs/RELEASE.md +9 -3
- package/templates/docs/cli/README.md +110 -11
- package/templates/docs/cli/chat.md +4 -3
- package/templates/docs/cli/contract.md +15 -15
- package/templates/docs/cli/host.md +12 -0
- package/templates/docs/cli/human.md +15 -7
- package/templates/docs/cli/kind.md +4 -2
- package/templates/docs/cli/nav.md +12 -0
- package/templates/docs/cli/{oc-proxy.md → opencode-cpe.md} +10 -10
- package/templates/docs/cli/rebuild.md +3 -0
- package/templates/docs/cli/reload.md +8 -5
- package/templates/docs/cli/room.md +5 -7
- package/templates/docs/cli/schedule.md +13 -0
- package/templates/docs/cli/secretary.md +1 -1
- package/templates/docs/cli/spawn.md +13 -0
- package/templates/docs/cli/switch.md +4 -4
- package/templates/init/AGENTS.md +10 -10
- package/templates/init/mesh.config.yaml +11 -4
package/bin/seatmesh
CHANGED
|
@@ -38,6 +38,11 @@ for a in "$@"; do
|
|
|
38
38
|
PROFILE="${a#--profile=}"
|
|
39
39
|
continue
|
|
40
40
|
fi
|
|
41
|
+
# Global boolean flags (main.ts strips these itself) — skip in ARGS so
|
|
42
|
+
# is_attach_cmd/allow_outside_mesh see the real command, e.g. `--agents help`.
|
|
43
|
+
if [[ "$a" == "--agents" || "$a" == "--agent-help" ]]; then
|
|
44
|
+
continue
|
|
45
|
+
fi
|
|
41
46
|
ARGS+=("$a")
|
|
42
47
|
done
|
|
43
48
|
[[ -n "$prev" ]] && ARGS+=("$prev")
|
|
@@ -128,7 +133,7 @@ in_mesh_context() {
|
|
|
128
133
|
allow_outside_mesh() {
|
|
129
134
|
local a0="${ARGS[0]:-}"
|
|
130
135
|
case "$a0" in
|
|
131
|
-
""|help|-h|--help|start|attach|session|sessions|init|version|install|update|completion|migrate-runtime|roles) return 0 ;;
|
|
136
|
+
""|help|-h|--help|start|attach|session|sessions|init|version|install|update|completion|migrate-runtime|roles|host) return 0 ;;
|
|
132
137
|
esac
|
|
133
138
|
return 1
|
|
134
139
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-forum.d.ts","sourceRoot":"","sources":["../../src/commands/agent-forum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAoBtC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent golf / shorthand forum — printed by `sm agent forum` (alias: golf).
|
|
3
|
+
* This is what "shorthand" means: collapse bash magic into one sm verb + Ruby ranges.
|
|
4
|
+
*/
|
|
5
|
+
export function printAgentForum() {
|
|
6
|
+
console.log(`--- golf / shorthand ---
|
|
7
|
+
NOT synonym soup. Shorthand = collapse bash into one sm verb + Ruby ranges.
|
|
8
|
+
|
|
9
|
+
| Job | Type this | Not this |
|
|
10
|
+
|-----|-----------|----------|
|
|
11
|
+
| Tell seats | sm agent peer 1..4 "…" | for i in 1 2 3 4; do … peer slot-$i |
|
|
12
|
+
| Tell list | sm agent peer 1,3,5 "…" | three peer calls / bash loop |
|
|
13
|
+
| Empty→CLI | sm agent spawn slot-1 opencode | type opencode by hand / slow switch |
|
|
14
|
+
| Fast paste | spawn (default --fast) | switch (waits verify+summon) |
|
|
15
|
+
| Replace live | sm agent switch slot-1 claude | C-c; opencode; hope |
|
|
16
|
+
| Resume cfg | sm agent launch 1..4 | bash paste each pane |
|
|
17
|
+
| Give work | sm agent todo give slot-2 "…" | edit TASKS.md |
|
|
18
|
+
| Close ask | sm agent ack <id> | chat "ACK" |
|
|
19
|
+
| Eyes | sm agent notify … | ./scripts/notify.sh |
|
|
20
|
+
|
|
21
|
+
Ranges: 1..4 · slot-2..5 · mini-1..3 · 1,3,5
|
|
22
|
+
Gateway: sm agent whoami · sm agent (every turn)
|
|
23
|
+
Bin: sm (not seatmesh --profile .sm · not ./sm.sh · not npx --prefix)
|
|
24
|
+
`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=agent-forum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-forum.js","sourceRoot":"","sources":["../../src/commands/agent-forum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBb,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `sm campaign ...` (TODO 8.2/8.4) — ticket-style campaigns, the narrowest slice
|
|
3
|
+
* of the campaign-contract vision (docs/HANDOUT-CAMPAIGN-CONTRACT.md). One atomic
|
|
4
|
+
* unit of work: title, objective (what "done" means), status, optional assignee.
|
|
5
|
+
* No dependency graph, no supervisor/balancer roles — those stay open questions.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { type LoadedProfile } from "@seat-mesh/core";
|
|
9
|
+
export declare function buildCampaignCommands(getLoaded: () => LoadedProfile): Command;
|
|
10
|
+
//# sourceMappingURL=campaign-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-cli.d.ts","sourceRoot":"","sources":["../../src/commands/campaign-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EASL,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAqH7E"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `sm campaign ...` (TODO 8.2/8.4) — ticket-style campaigns, the narrowest slice
|
|
3
|
+
* of the campaign-contract vision (docs/HANDOUT-CAMPAIGN-CONTRACT.md). One atomic
|
|
4
|
+
* unit of work: title, objective (what "done" means), status, optional assignee.
|
|
5
|
+
* No dependency graph, no supervisor/balancer roles — those stay open questions.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { assignCampaign, createCampaign, findCampaign, noteCampaign, readCampaigns, setCampaignStatus, } from "@seat-mesh/core";
|
|
9
|
+
function printCampaignLine(c) {
|
|
10
|
+
console.log(`${c.id}\t${c.status}\t${c.title}\tassignee=${c.assignee ?? "-"}\tcreated=${c.createdAt}`);
|
|
11
|
+
}
|
|
12
|
+
function printCampaignDetail(c) {
|
|
13
|
+
console.log(`id: ${c.id}`);
|
|
14
|
+
console.log(`title: ${c.title}`);
|
|
15
|
+
console.log(`objective: ${c.objective ?? "(none)"}`);
|
|
16
|
+
console.log(`status: ${c.status}`);
|
|
17
|
+
console.log(`assignee: ${c.assignee ?? "-"}`);
|
|
18
|
+
console.log(`created: ${c.createdAt}`);
|
|
19
|
+
console.log(`updated: ${c.updatedAt}`);
|
|
20
|
+
if (c.doneAt)
|
|
21
|
+
console.log(`done: ${c.doneAt}`);
|
|
22
|
+
if (c.notes.length) {
|
|
23
|
+
console.log("notes:");
|
|
24
|
+
for (const n of c.notes)
|
|
25
|
+
console.log(` ${n.at}\t${n.by ?? "?"}\t${n.note}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function requireCampaign(loaded, id) {
|
|
29
|
+
const c = await findCampaign(loaded, id);
|
|
30
|
+
if (!c) {
|
|
31
|
+
console.error(`campaign not found: ${id}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
return c;
|
|
35
|
+
}
|
|
36
|
+
export function buildCampaignCommands(getLoaded) {
|
|
37
|
+
const campaign = new Command("campaign").description("Ticket-style campaigns — atomic work units with a status and an objective");
|
|
38
|
+
campaign
|
|
39
|
+
.command("create <title>")
|
|
40
|
+
.description("Create a new open campaign")
|
|
41
|
+
.option("--objective <text>", "what \"done\" means for this campaign")
|
|
42
|
+
.option("--assign <seat>", "assignee (seat id / persona column)")
|
|
43
|
+
.option("--by <seat>", "who filed this (defaults to operator)")
|
|
44
|
+
.option("--json", "JSON output")
|
|
45
|
+
.action(async (title, opts) => {
|
|
46
|
+
const loaded = getLoaded();
|
|
47
|
+
const c = await createCampaign(loaded, {
|
|
48
|
+
title,
|
|
49
|
+
objective: opts.objective,
|
|
50
|
+
assignee: opts.assign,
|
|
51
|
+
by: opts.by,
|
|
52
|
+
});
|
|
53
|
+
if (opts.json) {
|
|
54
|
+
console.log(JSON.stringify(c, null, 2));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
console.log(`created ${c.id}`);
|
|
58
|
+
printCampaignDetail(c);
|
|
59
|
+
});
|
|
60
|
+
campaign
|
|
61
|
+
.command("list")
|
|
62
|
+
.description("List campaigns, most recently created first")
|
|
63
|
+
.option("--status <status>", "filter: open|done|cancelled|all", "open")
|
|
64
|
+
.option("--json", "JSON output")
|
|
65
|
+
.action(async (opts) => {
|
|
66
|
+
const loaded = getLoaded();
|
|
67
|
+
const all = await readCampaigns(loaded);
|
|
68
|
+
const rows = opts.status === "all" ? all : all.filter((c) => c.status === opts.status);
|
|
69
|
+
if (opts.json) {
|
|
70
|
+
console.log(JSON.stringify(rows, null, 2));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (!rows.length) {
|
|
74
|
+
console.log(`(no ${opts.status === "all" ? "" : `${opts.status} `}campaigns)`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
for (const c of rows)
|
|
78
|
+
printCampaignLine(c);
|
|
79
|
+
});
|
|
80
|
+
campaign
|
|
81
|
+
.command("show <id>")
|
|
82
|
+
.description("Show one campaign's full detail, including notes")
|
|
83
|
+
.option("--json", "JSON output")
|
|
84
|
+
.action(async (id, opts) => {
|
|
85
|
+
const loaded = getLoaded();
|
|
86
|
+
const c = await requireCampaign(loaded, id);
|
|
87
|
+
if (opts.json) {
|
|
88
|
+
console.log(JSON.stringify(c, null, 2));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
printCampaignDetail(c);
|
|
92
|
+
});
|
|
93
|
+
campaign
|
|
94
|
+
.command("assign <id> <seat>")
|
|
95
|
+
.description("Assign (or reassign) a campaign to a seat")
|
|
96
|
+
.option("--by <seat>", "who filed this")
|
|
97
|
+
.action(async (id, seat, opts) => {
|
|
98
|
+
const loaded = getLoaded();
|
|
99
|
+
await requireCampaign(loaded, id);
|
|
100
|
+
await assignCampaign(loaded, id, seat, opts.by);
|
|
101
|
+
console.log(`${id} assigned -> ${seat}`);
|
|
102
|
+
});
|
|
103
|
+
const setStatus = (status, verb) => async (id, opts) => {
|
|
104
|
+
const loaded = getLoaded();
|
|
105
|
+
await requireCampaign(loaded, id);
|
|
106
|
+
await setCampaignStatus(loaded, id, status, opts.by);
|
|
107
|
+
console.log(`${id} ${verb}`);
|
|
108
|
+
};
|
|
109
|
+
campaign
|
|
110
|
+
.command("done <id>")
|
|
111
|
+
.description("Mark a campaign done")
|
|
112
|
+
.option("--by <seat>", "who filed this")
|
|
113
|
+
.action(setStatus("done", "done"));
|
|
114
|
+
campaign
|
|
115
|
+
.command("cancel <id>")
|
|
116
|
+
.description("Cancel a campaign")
|
|
117
|
+
.option("--by <seat>", "who filed this")
|
|
118
|
+
.action(setStatus("cancelled", "cancelled"));
|
|
119
|
+
campaign
|
|
120
|
+
.command("reopen <id>")
|
|
121
|
+
.description("Reopen a done/cancelled campaign")
|
|
122
|
+
.option("--by <seat>", "who filed this")
|
|
123
|
+
.action(setStatus("open", "reopened"));
|
|
124
|
+
campaign
|
|
125
|
+
.command("note <id> <text>")
|
|
126
|
+
.description("Append a progress note to a campaign")
|
|
127
|
+
.option("--by <seat>", "who filed this")
|
|
128
|
+
.action(async (id, text, opts) => {
|
|
129
|
+
const loaded = getLoaded();
|
|
130
|
+
await requireCampaign(loaded, id);
|
|
131
|
+
await noteCampaign(loaded, id, text, opts.by);
|
|
132
|
+
console.log(`${id} noted`);
|
|
133
|
+
});
|
|
134
|
+
return campaign;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=campaign-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-cli.js","sourceRoot":"","sources":["../../src/commands/campaign-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-cli.d.ts","sourceRoot":"","sources":["../../src/commands/chat-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAUnB,MAAM,iBAAiB,CAAC;AA4BzB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"chat-cli.d.ts","sourceRoot":"","sources":["../../src/commands/chat-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAUnB,MAAM,iBAAiB,CAAC;AA4BzB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CA4OzE"}
|
|
@@ -106,6 +106,61 @@ export function buildChatCommands(getLoaded) {
|
|
|
106
106
|
});
|
|
107
107
|
console.log(`ok id=${row.id} slot=${row.slot} agent=${row.agent} humanKind=${row.humanKind} turnHash=${row.turnHash}`);
|
|
108
108
|
});
|
|
109
|
+
chat
|
|
110
|
+
.command("put")
|
|
111
|
+
.description("Positional upsert — same as `chat append --human` (dedup by turnHash)")
|
|
112
|
+
.argument("<slot>", "worker-1, mini-3, manager, ...")
|
|
113
|
+
.argument("<human...>", "human prompt text")
|
|
114
|
+
.option("--response <text>", "agent response")
|
|
115
|
+
.option("--session <id>")
|
|
116
|
+
.option("--model <name>")
|
|
117
|
+
.option("--provider <id>", "default: unknown")
|
|
118
|
+
.action(async (slot, humanParts, opts) => {
|
|
119
|
+
const loaded = getLoaded();
|
|
120
|
+
const cfg = chatFileConfigForLoaded(loaded);
|
|
121
|
+
const human = humanParts.join(" ").trim();
|
|
122
|
+
if (!human) {
|
|
123
|
+
console.error("chat put: human prompt required");
|
|
124
|
+
process.exit(2);
|
|
125
|
+
}
|
|
126
|
+
const row = await appendSlotPrompt(loaded.workspace, cfg, {
|
|
127
|
+
slot,
|
|
128
|
+
providerId: opts.provider ?? "unknown",
|
|
129
|
+
sessionId: opts.session,
|
|
130
|
+
model: opts.model,
|
|
131
|
+
humanPrompt: human,
|
|
132
|
+
agentResponse: opts.response,
|
|
133
|
+
});
|
|
134
|
+
console.log(`ok id=${row.id} slot=${row.slot} agent=${row.agent} turnHash=${row.turnHash}`);
|
|
135
|
+
});
|
|
136
|
+
chat
|
|
137
|
+
.command("get")
|
|
138
|
+
.description("Look up one chat record by id or turnHash (full or 8-char prefix)")
|
|
139
|
+
.argument("<id>", "record id or turnHash, full or 8-char prefix")
|
|
140
|
+
.option("--slot <key>", "search only this slot (default: all slots)")
|
|
141
|
+
.option("--json", "JSON output")
|
|
142
|
+
.action(async (id, opts) => {
|
|
143
|
+
const loaded = getLoaded();
|
|
144
|
+
const cfg = chatFileConfigForLoaded(loaded);
|
|
145
|
+
const rows = await querySlotPrompts(loaded.workspace, cfg, {
|
|
146
|
+
slot: opts.slot,
|
|
147
|
+
limit: Number.MAX_SAFE_INTEGER,
|
|
148
|
+
});
|
|
149
|
+
const row = rows.find((r) => r.id === id ||
|
|
150
|
+
r.id.startsWith(id) ||
|
|
151
|
+
r.turnHash === id ||
|
|
152
|
+
Boolean(r.turnHash?.startsWith(id)));
|
|
153
|
+
if (!row) {
|
|
154
|
+
console.error(`chat get: no record ${id}${opts.slot ? ` in slot=${opts.slot}` : ""}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
if (opts.json) {
|
|
158
|
+
console.log(JSON.stringify(row, null, 2));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
console.log(formatChatTranscript(row));
|
|
162
|
+
}
|
|
163
|
+
});
|
|
109
164
|
chat
|
|
110
165
|
.command("record")
|
|
111
166
|
.description("Scrape pane(s) via AgentProvider and append new turns")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-cli.js","sourceRoot":"","sources":["../../src/commands/chat-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAEL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,cAAc,EAEd,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnF,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW;IACxC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqB,EAAE,QAAiB;IACpE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IACtD,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,IAAiD,EAAE,IAAa;IACpF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAA8B;IAC9D,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAC1C,iFAAiF,CAClF,CAAC;IAEF,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,cAAc,EAAE,gCAAgC,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC;SACzC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CAAC,KAAK,EAAE,IAAsD,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACjG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,cAAc,CAAC;SACtB,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,cAAc,EAAE,wCAAwC,CAAC;SAChE,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC;SACxC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC/B,MAAM,CACL,KAAK,EAAE,IASN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;SACvC,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SAC7C,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;SAC/C,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;SAClE,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;SAClD,MAAM,CACL,KAAK,EAAE,IAQN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI;gBAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,UAAU,CAAC;QAC5D,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,IAAI;oBAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,UAAU,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;YACxD,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,UAAU;YACV,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC7B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CACT,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,KAAK,cAAc,GAAG,CAAC,SAAS,aAAa,GAAG,CAAC,QAAQ,EAAE,CAC1G,CAAC;IACJ,CAAC,CACF,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;SACzC,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC;SACxC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAwD,EAAE,EAAE;QACzE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;YACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK;iBAChB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;iBACpC,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACxE,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,QAAQ;oBAAE,QAAQ,EAAE,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,aAAa,QAAQ,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,MAAM,CAAC,SAAS,EAChB,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,SAAS,CACV,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CACT,SAAS,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,UAAU,MAAM,CAAC,MAAM,EAAE,KAAK,cAAc,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG,EAAE,CACxK,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"chat-cli.js","sourceRoot":"","sources":["../../src/commands/chat-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-speed.test.d.ts","sourceRoot":"","sources":["../../src/commands/cli-speed.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI speed budget — >1s wall for spawn --fast is a regression.
|
|
3
|
+
* Needs live mesh tmux (skips otherwise).
|
|
4
|
+
*/
|
|
5
|
+
import { describe, expect, it } from "vitest";
|
|
6
|
+
import { spawnSync } from "node:child_process";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../..");
|
|
10
|
+
const bin = path.join(repoRoot, "bin/seatmesh");
|
|
11
|
+
const inMesh = Boolean(process.env.TMUX_PANE) && Boolean(process.env.TMUX);
|
|
12
|
+
describe("cli speed budget", () => {
|
|
13
|
+
it.skipIf(!inMesh)("spawn --fast wall clock < 1000ms", () => {
|
|
14
|
+
// Ensure empty shell first (also must be fast)
|
|
15
|
+
spawnSync(bin, ["switch", "slot-1", "empty", "--fast"], {
|
|
16
|
+
encoding: "utf8",
|
|
17
|
+
cwd: repoRoot,
|
|
18
|
+
env: process.env,
|
|
19
|
+
});
|
|
20
|
+
const t0 = Date.now();
|
|
21
|
+
const r = spawnSync(bin, ["spawn", "slot-1", "opencode"], {
|
|
22
|
+
encoding: "utf8",
|
|
23
|
+
cwd: repoRoot,
|
|
24
|
+
env: process.env,
|
|
25
|
+
});
|
|
26
|
+
const ms = Date.now() - t0;
|
|
27
|
+
expect(r.status, r.stderr || r.stdout).toBe(0);
|
|
28
|
+
expect(r.stdout + r.stderr).toMatch(/\[fast\]|already live|launched\[fast\]/);
|
|
29
|
+
expect(ms, `spawn --fast took ${ms}ms (budget 1000ms)`).toBeLessThan(1000);
|
|
30
|
+
});
|
|
31
|
+
it("help spawn wall < 1000ms (cold-ish)", () => {
|
|
32
|
+
const t0 = Date.now();
|
|
33
|
+
const r = spawnSync(bin, ["help", "spawn"], { encoding: "utf8", cwd: repoRoot });
|
|
34
|
+
const ms = Date.now() - t0;
|
|
35
|
+
expect(r.status).toBe(0);
|
|
36
|
+
expect(ms, `help spawn took ${ms}ms`).toBeLessThan(1000);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=cli-speed.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-speed.test.js","sourceRoot":"","sources":["../../src/commands/cli-speed.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAChD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1D,+CAA+C;QAC/C,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;YACtD,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;YACxD,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC9E,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-vocal.test.d.ts","sourceRoot":"","sources":["../../src/commands/cli-vocal.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { printAgentForum } from "./agent-forum.js";
|
|
6
|
+
import { printCmdHelp, resolveHelpVerb, listHelpVerbs } from "./help-text.js";
|
|
7
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../..");
|
|
8
|
+
const bin = path.join(repoRoot, "bin/seatmesh");
|
|
9
|
+
describe("cli vocal + shorthand coverage", () => {
|
|
10
|
+
it("help covers spawn, rebuild, forum", () => {
|
|
11
|
+
const verbs = new Set(listHelpVerbs());
|
|
12
|
+
expect(verbs.has("spawn")).toBe(true);
|
|
13
|
+
expect(verbs.has("rebuild") || resolveHelpVerb("rebuild") === "reload").toBe(true);
|
|
14
|
+
expect(printCmdHelp("spawn")).toBe(true);
|
|
15
|
+
expect(printCmdHelp("forum")).toBe(true);
|
|
16
|
+
expect(printCmdHelp("reload")).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
it("spawn help mentions fast + ranges", () => {
|
|
19
|
+
const r = spawnSync(bin, ["help", "spawn"], { encoding: "utf8", cwd: repoRoot });
|
|
20
|
+
expect(r.status).toBe(0);
|
|
21
|
+
expect(r.stdout).toMatch(/--fast/);
|
|
22
|
+
expect(r.stdout).toMatch(/1\.\.4|ranges/i);
|
|
23
|
+
});
|
|
24
|
+
it("rebuild aliases to reload help", () => {
|
|
25
|
+
expect(resolveHelpVerb("rebuild")).toBe("reload");
|
|
26
|
+
const r = spawnSync(bin, ["help", "rebuild"], { encoding: "utf8", cwd: repoRoot });
|
|
27
|
+
expect(r.status).toBe(0);
|
|
28
|
+
expect(r.stdout).toMatch(/npm build|labels/i);
|
|
29
|
+
});
|
|
30
|
+
it("forum table prints Ruby ranges + no bash", () => {
|
|
31
|
+
const lines = [];
|
|
32
|
+
const orig = console.log;
|
|
33
|
+
console.log = (...a) => {
|
|
34
|
+
lines.push(a.map(String).join(" "));
|
|
35
|
+
};
|
|
36
|
+
try {
|
|
37
|
+
printAgentForum();
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
console.log = orig;
|
|
41
|
+
}
|
|
42
|
+
const body = lines.join("\n");
|
|
43
|
+
expect(body).toMatch(/1\.\.4/);
|
|
44
|
+
expect(body).toMatch(/peer 1\.\.4/);
|
|
45
|
+
expect(body).toMatch(/spawn/);
|
|
46
|
+
expect(body).toMatch(/NOT synonym soup|Ruby ranges/i);
|
|
47
|
+
});
|
|
48
|
+
it("agent forum exits 0", () => {
|
|
49
|
+
const r = spawnSync(bin, ["agent", "forum"], {
|
|
50
|
+
encoding: "utf8",
|
|
51
|
+
cwd: repoRoot,
|
|
52
|
+
env: { ...process.env, TMUX: "", TMUX_PANE: "" },
|
|
53
|
+
});
|
|
54
|
+
expect(r.status).toBe(0);
|
|
55
|
+
expect(r.stdout).toMatch(/1\.\.4/);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=cli-vocal.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-vocal.test.js","sourceRoot":"","sources":["../../src/commands/cli-vocal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** Test-only: resolveCliTypes() memoizes per process; tests that chdir between a
|
|
2
|
+
* profile and no-profile cwd need to clear this between cases. */
|
|
3
|
+
export declare function __resetCliTypesCacheForTests(): void;
|
|
1
4
|
/** Top-level verbs + aliases (+ completion itself). */
|
|
2
5
|
export declare function listTopLevelCompletionWords(): string[];
|
|
3
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAqKA;kEACkE;AAClE,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAwBD,uDAAuD;AACvD,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAGtD;AAUD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAmDhE;AAaD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA0FrE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIzE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAyB7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAa5C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAgB7C;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAoBjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAsCzD"}
|
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
* Source of truth for top-level verbs: help-text.ts.
|
|
4
4
|
*/
|
|
5
5
|
import { listHelpAliases, listHelpVerbs } from "./help-text.js";
|
|
6
|
+
import { findDotSmConfig, knownAgentKindIds, loadProfile } from "@seat-mesh/core";
|
|
7
|
+
import { resolveKindsForProfile } from "@seat-mesh/providers";
|
|
6
8
|
const GLOBAL_FLAGS = ["--profile", "-p", "--help", "-h"];
|
|
9
|
+
/** Builtin fallback — used when no `.sm/` profile is discoverable from cwd, or it
|
|
10
|
+
* fails to load. `switch`/`handoff`/`set`/`secretary switch` prefer the live
|
|
11
|
+
* resolveCliTypes() below (profile-aware: custom agents.kinds + their aliases). */
|
|
7
12
|
const CLI_TYPES = [
|
|
8
13
|
"agent",
|
|
9
14
|
"claude",
|
|
10
15
|
"opencode",
|
|
11
|
-
"
|
|
16
|
+
"opencode-cpe",
|
|
12
17
|
"kiro",
|
|
13
18
|
"empty",
|
|
14
19
|
"cc",
|
|
@@ -34,19 +39,20 @@ const SUBS = {
|
|
|
34
39
|
web: ["status", "up", "down", "restart", "open", "url", "help"],
|
|
35
40
|
session: ["attach", "up", "down", "status", "sync", "check", "repair", "init"],
|
|
36
41
|
sessions: ["list", "attach", "forget", "register", "pick"],
|
|
37
|
-
layout: ["column"],
|
|
42
|
+
layout: ["column", "scale", "reload", "realign"],
|
|
38
43
|
ops: ["list", "clear"],
|
|
39
44
|
inbox: ["list", "resolve", "log", "instances", "stop", "restart"],
|
|
40
45
|
mini: ["list", "spawn", "prompt", "done", "kill", "reassign", "dispatch-all"],
|
|
41
|
-
secretary: ["start", "status", "digest", "restart", "supervise", "switch", "watch"],
|
|
46
|
+
secretary: ["start", "stop", "status", "digest", "restart", "supervise", "switch", "watch"],
|
|
42
47
|
roles: ["status", "migrate", "steps"],
|
|
43
48
|
night: ["on", "off", "status"],
|
|
44
49
|
ack: ["list", "reply", "clear", "redirect"],
|
|
45
50
|
cb: ["list", "start", "cancel", "cancel-all", "reset", "ack"],
|
|
46
51
|
checkback: ["list", "start", "cancel", "cancel-all", "reset", "ack"],
|
|
47
52
|
patience: ["list", "start", "cancel", "cancel-all", "reset", "ack"],
|
|
48
|
-
room: ["tail", "say", "broadcast", "read", "call", "accept"],
|
|
49
|
-
chat: ["tail", "query", "append", "record"],
|
|
53
|
+
room: ["tail", "say", "broadcast", "read", "call", "accept", "get"],
|
|
54
|
+
chat: ["tail", "query", "append", "record", "put", "get"],
|
|
55
|
+
nav: ["log", "summary"],
|
|
50
56
|
hub: ["contexts", "todos", "acks", "cbs", "chat", "room", "shared", "sessions"],
|
|
51
57
|
get: ["contexts", "todos", "acks", "cbs", "chat", "room", "shared", "sessions"],
|
|
52
58
|
seat: ["init", "task", "todo", "now", "mark", "remind", "assign"],
|
|
@@ -58,7 +64,7 @@ const SUBS = {
|
|
|
58
64
|
reply: [],
|
|
59
65
|
todo: ["give", "send", "to", "list", "add", "check", "ls", "show"],
|
|
60
66
|
todos: ["give", "send", "to", "list", "add", "check", "ls", "show"],
|
|
61
|
-
notify: ["info", "md", "details", "yesno", "desktop"],
|
|
67
|
+
notify: ["info", "md", "details", "yesno", "run", "cmd", "desktop"],
|
|
62
68
|
mds: ["hosted", "agent-self", "agent", "status", "list", "help"],
|
|
63
69
|
preview: [],
|
|
64
70
|
limit: ["idle", "idle-clear"],
|
|
@@ -81,6 +87,7 @@ const SUBS = {
|
|
|
81
87
|
continue: ["all", "1", "2", "3"],
|
|
82
88
|
switch: [...COMMON_TARGETS],
|
|
83
89
|
handoff: [...COMMON_TARGETS],
|
|
90
|
+
spawn: [...COMMON_TARGETS],
|
|
84
91
|
set: [...COMMON_TARGETS],
|
|
85
92
|
swap: [...COMMON_TARGETS],
|
|
86
93
|
ppa: ["--raw", "--idle", "perf-index", "index"],
|
|
@@ -92,6 +99,7 @@ const SUBS = {
|
|
|
92
99
|
version: ["--json", "--check-registry"],
|
|
93
100
|
update: ["--dry-run", "--migrate", "--no-restart-inbox"],
|
|
94
101
|
reload: ["--layout"],
|
|
102
|
+
rebuild: ["--layout"],
|
|
95
103
|
save: ["--json", "--no-labels"],
|
|
96
104
|
auto: ["--json", "--no-labels"],
|
|
97
105
|
init: ["--force", "--seats-root", "--name"],
|
|
@@ -106,6 +114,8 @@ const SUBS = {
|
|
|
106
114
|
const DEEPER = {
|
|
107
115
|
layout: {
|
|
108
116
|
column: ["list", "add", "remove"],
|
|
117
|
+
scale: ["workers", "minis", "up", "down"],
|
|
118
|
+
reload: ["--yes", "--no-leads", "--no-resume"],
|
|
109
119
|
},
|
|
110
120
|
seat: {
|
|
111
121
|
task: ["list", "add", "check"],
|
|
@@ -114,7 +124,7 @@ const DEEPER = {
|
|
|
114
124
|
secretary: {
|
|
115
125
|
supervise: ["on", "run", "off"],
|
|
116
126
|
watch: ["on", "off"],
|
|
117
|
-
switch:
|
|
127
|
+
// switch: handled earlier via resolveCliTypes() (profile-aware, TODO 6.3)
|
|
118
128
|
},
|
|
119
129
|
session: {
|
|
120
130
|
init: [],
|
|
@@ -132,9 +142,8 @@ const DEEPER = {
|
|
|
132
142
|
peek: {
|
|
133
143
|
// after target
|
|
134
144
|
},
|
|
135
|
-
switch
|
|
136
|
-
|
|
137
|
-
set: Object.fromEntries(COMMON_TARGETS.map((t) => [t, CLI_TYPES])),
|
|
145
|
+
// switch/handoff/set <target> <cli>: handled earlier via resolveCliTypes()
|
|
146
|
+
// (profile-aware, TODO 6.3) — not listed here.
|
|
138
147
|
pane: {
|
|
139
148
|
resume: COMMON_TARGETS.filter((t) => t !== "all"),
|
|
140
149
|
},
|
|
@@ -145,6 +154,36 @@ const DEEPER = {
|
|
|
145
154
|
function uniqSorted(words) {
|
|
146
155
|
return [...new Set(words.filter(Boolean))].sort((a, b) => a.localeCompare(b));
|
|
147
156
|
}
|
|
157
|
+
let cachedCliTypes;
|
|
158
|
+
/** Test-only: resolveCliTypes() memoizes per process; tests that chdir between a
|
|
159
|
+
* profile and no-profile cwd need to clear this between cases. */
|
|
160
|
+
export function __resetCliTypesCacheForTests() {
|
|
161
|
+
cachedCliTypes = undefined;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Profile-aware CLI type completions (TODO 6.3): resolved kinds — provider
|
|
165
|
+
* kindBase ⊎ this profile's agents.kinds overlay ⊎ runners shim — instead of just
|
|
166
|
+
* the builtin CLI_TYPES list, so a custom `agents.kinds.my-oc: {...}` overlay tab-
|
|
167
|
+
* completes too. Cheap (yaml parse only, no tmux/network) and memoized per process;
|
|
168
|
+
* falls back to CLI_TYPES on any failure or when no `.sm/` is discoverable from cwd.
|
|
169
|
+
*/
|
|
170
|
+
function resolveCliTypes() {
|
|
171
|
+
if (cachedCliTypes)
|
|
172
|
+
return cachedCliTypes;
|
|
173
|
+
try {
|
|
174
|
+
const profilePath = findDotSmConfig();
|
|
175
|
+
if (!profilePath)
|
|
176
|
+
return CLI_TYPES;
|
|
177
|
+
const loaded = loadProfile(profilePath);
|
|
178
|
+
const kinds = resolveKindsForProfile(loaded.profile, loaded.profileDir);
|
|
179
|
+
const ids = [...knownAgentKindIds(kinds)];
|
|
180
|
+
cachedCliTypes = ids.length ? uniqSorted([...ids, ...CLI_TYPES]) : CLI_TYPES;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
cachedCliTypes = CLI_TYPES;
|
|
184
|
+
}
|
|
185
|
+
return cachedCliTypes;
|
|
186
|
+
}
|
|
148
187
|
/** Top-level verbs + aliases (+ completion itself). */
|
|
149
188
|
export function listTopLevelCompletionWords() {
|
|
150
189
|
const aliases = listHelpAliases().map((a) => a.alias);
|
|
@@ -271,14 +310,16 @@ export function completeArgv(words, cword) {
|
|
|
271
310
|
// Deeper: cmd sub …
|
|
272
311
|
if (before.length >= 2) {
|
|
273
312
|
const sub = before[1];
|
|
313
|
+
// switch/handoff/set <target> <cli> and secretary switch <cli> — profile-aware
|
|
314
|
+
// kinds take precedence over the static DEEPER entries below (TODO 6.3).
|
|
315
|
+
if (((cmd === "switch" || cmd === "handoff" || cmd === "set") && before.length === 2) ||
|
|
316
|
+
(cmd === "secretary" && sub === "switch" && before.length === 2)) {
|
|
317
|
+
return filterPrefix(resolveCliTypes(), cur);
|
|
318
|
+
}
|
|
274
319
|
const deep = DEEPER[cmd]?.[sub];
|
|
275
320
|
if (deep && before.length === 2) {
|
|
276
321
|
return filterPrefix(uniqSorted(deep), cur);
|
|
277
322
|
}
|
|
278
|
-
// switch <target> <cli>
|
|
279
|
-
if ((cmd === "switch" || cmd === "handoff" || cmd === "set") && before.length === 2) {
|
|
280
|
-
return filterPrefix(CLI_TYPES, cur);
|
|
281
|
-
}
|
|
282
323
|
if (cmd === "peek" && before.length === 2) {
|
|
283
324
|
return filterPrefix(["status", "full"], cur);
|
|
284
325
|
}
|