seatmesh 0.1.25 → 0.1.27

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 (90) hide show
  1. package/dist/commands/chat-cli.d.ts +4 -0
  2. package/dist/commands/chat-cli.d.ts.map +1 -0
  3. package/dist/commands/chat-cli.js +162 -0
  4. package/dist/commands/chat-cli.js.map +1 -0
  5. package/dist/commands/checkback-cli.d.ts +4 -0
  6. package/dist/commands/checkback-cli.d.ts.map +1 -0
  7. package/dist/commands/checkback-cli.js +203 -0
  8. package/dist/commands/checkback-cli.js.map +1 -0
  9. package/dist/commands/contract-lock-cli.d.ts +4 -0
  10. package/dist/commands/contract-lock-cli.d.ts.map +1 -0
  11. package/dist/commands/contract-lock-cli.js +180 -0
  12. package/dist/commands/contract-lock-cli.js.map +1 -0
  13. package/dist/commands/coord-cli.d.ts +3 -0
  14. package/dist/commands/coord-cli.d.ts.map +1 -0
  15. package/dist/commands/coord-cli.js +15 -0
  16. package/dist/commands/coord-cli.js.map +1 -0
  17. package/dist/commands/notify-cli.d.ts +4 -0
  18. package/dist/commands/notify-cli.d.ts.map +1 -0
  19. package/dist/commands/notify-cli.js +59 -0
  20. package/dist/commands/notify-cli.js.map +1 -0
  21. package/dist/commands/preview-cli.d.ts +4 -0
  22. package/dist/commands/preview-cli.d.ts.map +1 -0
  23. package/dist/commands/preview-cli.js +39 -0
  24. package/dist/commands/preview-cli.js.map +1 -0
  25. package/dist/commands/room-cli.d.ts +5 -0
  26. package/dist/commands/room-cli.d.ts.map +1 -0
  27. package/dist/commands/room-cli.js +316 -0
  28. package/dist/commands/room-cli.js.map +1 -0
  29. package/dist/commands/seat-cli.d.ts +3 -0
  30. package/dist/commands/seat-cli.d.ts.map +1 -0
  31. package/dist/commands/seat-cli.js +73 -0
  32. package/dist/commands/seat-cli.js.map +1 -0
  33. package/dist/commands/sessions-cli.d.ts +11 -0
  34. package/dist/commands/sessions-cli.d.ts.map +1 -0
  35. package/dist/commands/sessions-cli.js +178 -0
  36. package/dist/commands/sessions-cli.js.map +1 -0
  37. package/dist/main.js +48 -18
  38. package/dist/main.js.map +1 -1
  39. package/dist/notify-cli.d.ts.map +1 -1
  40. package/dist/notify-cli.js +18 -2
  41. package/dist/notify-cli.js.map +1 -1
  42. package/dist/report/discovery-report.d.ts +15 -0
  43. package/dist/report/discovery-report.d.ts.map +1 -0
  44. package/dist/report/discovery-report.js +42 -0
  45. package/dist/report/discovery-report.js.map +1 -0
  46. package/dist/report/status-report.d.ts +22 -0
  47. package/dist/report/status-report.d.ts.map +1 -0
  48. package/dist/report/status-report.js +231 -0
  49. package/dist/report/status-report.js.map +1 -0
  50. package/dist/setup/agent-context-init.d.ts +5 -0
  51. package/dist/setup/agent-context-init.d.ts.map +1 -0
  52. package/dist/setup/agent-context-init.js +41 -0
  53. package/dist/setup/agent-context-init.js.map +1 -0
  54. package/dist/setup/init.d.ts +23 -0
  55. package/dist/setup/init.d.ts.map +1 -0
  56. package/dist/setup/init.js +75 -0
  57. package/dist/setup/init.js.map +1 -0
  58. package/dist/setup/init.test.d.ts +2 -0
  59. package/dist/setup/init.test.d.ts.map +1 -0
  60. package/dist/setup/init.test.js +37 -0
  61. package/dist/setup/init.test.js.map +1 -0
  62. package/dist/setup/migrate-runtime.d.ts +15 -0
  63. package/dist/setup/migrate-runtime.d.ts.map +1 -0
  64. package/dist/setup/migrate-runtime.js +67 -0
  65. package/dist/setup/migrate-runtime.js.map +1 -0
  66. package/dist/setup/update.d.ts +15 -0
  67. package/dist/setup/update.d.ts.map +1 -0
  68. package/dist/setup/update.js +90 -0
  69. package/dist/setup/update.js.map +1 -0
  70. package/dist/ui/banner.d.ts +9 -0
  71. package/dist/ui/banner.d.ts.map +1 -0
  72. package/dist/ui/banner.js +113 -0
  73. package/dist/ui/banner.js.map +1 -0
  74. package/dist/ui/logo-art.d.ts +4 -0
  75. package/dist/ui/logo-art.d.ts.map +1 -0
  76. package/dist/ui/logo-art.js +134 -0
  77. package/dist/ui/logo-art.js.map +1 -0
  78. package/dist/ui/logo-color.d.ts +16 -0
  79. package/dist/ui/logo-color.d.ts.map +1 -0
  80. package/dist/ui/logo-color.js +65 -0
  81. package/dist/ui/logo-color.js.map +1 -0
  82. package/dist/ui/version-nudge.d.ts +20 -0
  83. package/dist/ui/version-nudge.d.ts.map +1 -0
  84. package/dist/ui/version-nudge.js +108 -0
  85. package/dist/ui/version-nudge.js.map +1 -0
  86. package/dist/ui/version-nudge.test.d.ts +2 -0
  87. package/dist/ui/version-nudge.test.d.ts.map +1 -0
  88. package/dist/ui/version-nudge.test.js +16 -0
  89. package/dist/ui/version-nudge.test.js.map +1 -0
  90. package/package.json +7 -7
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LoadedProfile } from "@seat-mesh/core";
3
+ export declare function buildChatCommands(getLoaded: () => LoadedProfile): Command;
4
+ //# sourceMappingURL=chat-cli.d.ts.map
@@ -0,0 +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,EASnB,MAAM,iBAAiB,CAAC;AA+BzB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAoKzE"}
@@ -0,0 +1,162 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { Command } from "commander";
3
+ import { chatFileConfig, appendSlotPrompt, tailSlotPrompts, querySlotPrompts, recordPromptFromPane, recordAllPanes, resolveAgentId, resolveSlotKeyFromPane, } from "@seat-mesh/core";
4
+ import { createRegistryForProfile } from "@seat-mesh/providers";
5
+ import { runWhoami, capturePaneSnapshot, listSessionPanes } from "@seat-mesh/tmux";
6
+ function tmuxOpt(pane, key) {
7
+ const r = spawnSync("tmux", ["display-message", "-t", pane, "-p", key], { encoding: "utf8" });
8
+ if (r.status !== 0)
9
+ return "";
10
+ return (r.stdout ?? "").trim();
11
+ }
12
+ function resolveSlotFromWhere(loaded, explicit) {
13
+ if (explicit)
14
+ return explicit;
15
+ const w = runWhoami(loaded);
16
+ const mini = tmuxOpt(w.paneId ?? "", "#{@mesh_mini}");
17
+ return resolveAgentId({ role: w.role, slot: w.slot, mini: mini || null });
18
+ }
19
+ function printRecords(rows, json) {
20
+ if (json) {
21
+ console.log(JSON.stringify(rows, null, 2));
22
+ return;
23
+ }
24
+ for (const r of rows) {
25
+ const sid = r.sessionId ?? "-";
26
+ const model = r.model ?? "-";
27
+ console.log(`${r.ts}\t${r.slot}\t${r.providerId}\t${sid}\t${model}\thuman=${r.humanPrompt.slice(0, 60).replace(/\n/g, " ")}`);
28
+ }
29
+ }
30
+ export function buildChatCommands(getLoaded) {
31
+ const chat = new Command("chat").description("Per-slot prompt log (CHAT.jsonl) — session, model, human prompt, agent response");
32
+ chat
33
+ .command("tail")
34
+ .description("Last N records for a slot (default: current pane slot)")
35
+ .option("--slot <key>", "worker-1, mini-3, manager, ...")
36
+ .option("--lines <n>", "line count", "30")
37
+ .option("--json", "JSON output")
38
+ .action(async (opts) => {
39
+ const loaded = getLoaded();
40
+ const cfg = chatFileConfig(loaded.profile);
41
+ const slot = resolveSlotFromWhere(loaded, opts.slot);
42
+ const rows = await tailSlotPrompts(loaded.workspace, cfg, slot, Number.parseInt(opts.lines, 10));
43
+ printRecords(rows, Boolean(opts.json));
44
+ });
45
+ chat
46
+ .command("query")
47
+ .description("Filter records across slots")
48
+ .option("--slot <key>")
49
+ .option("--session <id>")
50
+ .option("--provider <id>")
51
+ .option("--model <name>")
52
+ .option("--since <iso>")
53
+ .option("--limit <n>", "max rows", "100")
54
+ .option("--json", "JSON output")
55
+ .action(async (opts) => {
56
+ const loaded = getLoaded();
57
+ const cfg = chatFileConfig(loaded.profile);
58
+ const rows = await querySlotPrompts(loaded.workspace, cfg, {
59
+ slot: opts.slot,
60
+ sessionId: opts.session,
61
+ providerId: opts.provider,
62
+ model: opts.model,
63
+ since: opts.since,
64
+ limit: Number.parseInt(opts.limit, 10),
65
+ });
66
+ printRecords(rows, Boolean(opts.json));
67
+ });
68
+ chat
69
+ .command("append")
70
+ .description("Append one turn explicitly (inject hook or manual)")
71
+ .requiredOption("--human <text>", "human prompt")
72
+ .option("--response <text>", "agent response")
73
+ .option("--slot <key>", "default: current pane")
74
+ .option("--session <id>")
75
+ .option("--model <name>")
76
+ .option("--provider <id>", "default: detected provider or unknown")
77
+ .option("--pane <id>", "tmux pane id for metadata")
78
+ .action(async (opts) => {
79
+ const loaded = getLoaded();
80
+ const cfg = chatFileConfig(loaded.profile);
81
+ const slot = resolveSlotFromWhere(loaded, opts.slot);
82
+ const reg = createRegistryForProfile(loaded.profile);
83
+ let providerId = opts.provider ?? "unknown";
84
+ if (!opts.provider && opts.pane) {
85
+ const snap = capturePaneSnapshot(opts.pane);
86
+ if (snap)
87
+ providerId = reg.detect(snap)?.id ?? providerId;
88
+ }
89
+ else if (!opts.provider) {
90
+ const w = runWhoami(loaded);
91
+ if (w.paneId) {
92
+ const snap = capturePaneSnapshot(w.paneId);
93
+ if (snap)
94
+ providerId = reg.detect(snap)?.id ?? providerId;
95
+ }
96
+ }
97
+ const row = await appendSlotPrompt(loaded.workspace, cfg, {
98
+ slot,
99
+ paneId: opts.pane,
100
+ providerId,
101
+ sessionId: opts.session,
102
+ model: opts.model,
103
+ humanPrompt: opts.human,
104
+ agentResponse: opts.response,
105
+ });
106
+ console.log(`ok id=${row.id} slot=${row.slot} turnHash=${row.turnHash}`);
107
+ });
108
+ chat
109
+ .command("record")
110
+ .description("Scrape pane(s) via AgentProvider and append new turns")
111
+ .option("--pane <id>", "single tmux pane")
112
+ .option("--all", "every pane in session")
113
+ .option("--session <name>", "tmux session name")
114
+ .action(async (opts) => {
115
+ const loaded = getLoaded();
116
+ const cfg = chatFileConfig(loaded.profile);
117
+ const reg = createRegistryForProfile(loaded.profile);
118
+ if (opts.all) {
119
+ const session = opts.session ?? loaded.sessionName;
120
+ const panes = listSessionPanes(session);
121
+ const snaps = panes
122
+ .map((id) => capturePaneSnapshot(id))
123
+ .filter((s) => s != null);
124
+ const results = await recordAllPanes(loaded.workspace, cfg, reg, snaps);
125
+ let recorded = 0;
126
+ for (const r of results) {
127
+ if (r.recorded)
128
+ recorded++;
129
+ }
130
+ console.log(`ok scanned=${snaps.length} recorded=${recorded}`);
131
+ return;
132
+ }
133
+ const paneId = opts.pane ?? process.env.TMUX_PANE;
134
+ if (!paneId) {
135
+ console.error("record: need --pane, --all, or TMUX_PANE");
136
+ process.exit(2);
137
+ }
138
+ const snap = capturePaneSnapshot(paneId);
139
+ if (!snap) {
140
+ console.error(`record: could not capture ${paneId}`);
141
+ process.exit(1);
142
+ }
143
+ const provider = reg.detect(snap);
144
+ if (!provider || provider.id === "empty") {
145
+ console.error("record: no agent provider on pane");
146
+ process.exit(1);
147
+ }
148
+ const detection = provider.detect(snap);
149
+ if (!detection) {
150
+ console.error("record: provider detect failed");
151
+ process.exit(1);
152
+ }
153
+ const result = await recordPromptFromPane(loaded.workspace, cfg, provider, snap, detection);
154
+ if (!result.recorded) {
155
+ console.log(`skip: ${result.reason ?? "not recorded"}`);
156
+ return;
157
+ }
158
+ console.log(`ok id=${result.record?.id} slot=${resolveSlotKeyFromPane(snap)} session=${result.record?.sessionId ?? "-"}`);
159
+ });
160
+ return chat;
161
+ }
162
+ //# sourceMappingURL=chat-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-cli.js","sourceRoot":"","sources":["../../src/commands/chat-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LoadedProfile } from "@seat-mesh/core";
3
+ export declare function buildCheckbackCommands(getLoaded: () => LoadedProfile): Command;
4
+ //# sourceMappingURL=checkback-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkback-cli.d.ts","sourceRoot":"","sources":["../../src/commands/checkback-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAWnB,MAAM,iBAAiB,CAAC;AA2DzB,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAoK9E"}
@@ -0,0 +1,203 @@
1
+ import { Command } from "commander";
2
+ import { armCheckback, ackCheckback, cancelAllCheckbacks, cancelCheckback, chatRoomConfigForLoaded, expiresAtUtcFromDuration, listCheckbacks, parseDurationToSeconds, resetCheckback, } from "@seat-mesh/core";
3
+ import { ensureMeshInbox, meshInboxPort, resolvePaneTarget, runWhoami, } from "@seat-mesh/tmux";
4
+ function requireMeshInbox(loaded) {
5
+ if (ensureMeshInbox(loaded, { quiet: true }))
6
+ return;
7
+ const port = meshInboxPort(loaded);
8
+ console.error(`FAIL: mesh inbox down on :${port} (auto-start failed) — run: seatmesh inbox restart`);
9
+ process.exit(1);
10
+ }
11
+ function parseAckAnswer(raw) {
12
+ const a = raw.trim().toLowerCase();
13
+ if (a === "y" || a === "yes" || a === "true" || a === "1")
14
+ return true;
15
+ if (a === "n" || a === "no" || a === "false" || a === "0")
16
+ return false;
17
+ return null;
18
+ }
19
+ function resolveTargetPane(loaded, opts) {
20
+ if (opts.pane) {
21
+ const hit = resolvePaneTarget(opts.pane, loaded);
22
+ if ("error" in hit)
23
+ throw new Error(hit.error);
24
+ return hit.paneId;
25
+ }
26
+ if (opts.mini) {
27
+ const hit = resolvePaneTarget(`mini-${opts.mini}`, loaded);
28
+ if ("error" in hit)
29
+ throw new Error(hit.error);
30
+ return hit.paneId;
31
+ }
32
+ if (opts.slot) {
33
+ const hit = resolvePaneTarget(opts.slot, loaded);
34
+ if ("error" in hit)
35
+ throw new Error(hit.error);
36
+ return hit.paneId;
37
+ }
38
+ if (opts.here || !opts.pane) {
39
+ const hit = resolvePaneTarget("here", loaded);
40
+ if ("error" in hit)
41
+ throw new Error(hit.error);
42
+ return hit.paneId;
43
+ }
44
+ throw new Error("checkback start: no target pane (--here|--slot N|--mini N|--pane %id)");
45
+ }
46
+ function printEntry(e) {
47
+ const left = e.expiresAt ? `exp=${e.expiresAt}` : "exp=n/a";
48
+ const renew = e.renewSec ? `renew=${e.renewSec}s` : "renew=-";
49
+ console.log(`${e.id}\t${e.status}\t${e.kind}\t${left}\t${renew}\t${e.ownerPane ?? "-"}\t${(e.expect ?? "-").slice(0, 80)}`);
50
+ }
51
+ export function buildCheckbackCommands(getLoaded) {
52
+ const checkback = new Command("checkback")
53
+ .alias("patience")
54
+ .description("Mesh inbox poll-later (daemon injects Check: on expiry)");
55
+ checkback
56
+ .command("start <duration>")
57
+ .description('Arm checkback — harness shape: start 5m --expect "topic" [--renew 3m] [--here|--slot N|--mini N]')
58
+ .option("--expect <text>", "what to verify when timer fires")
59
+ .option("--renew <dur>", "re-arm interval after fire", "3m")
60
+ .option("--here", "target current tmux pane")
61
+ .option("--slot <n>", "target worker slot pane")
62
+ .option("--mini <n>", "target mini pane")
63
+ .option("--pane <id>", "target tmux pane id")
64
+ .option("--kind <kind>", "entry kind", "checkback")
65
+ .allowExcessArguments(true)
66
+ .action(async (duration, opts, cmd) => {
67
+ const loaded = getLoaded();
68
+ requireMeshInbox(loaded);
69
+ const cfg = chatRoomConfigForLoaded(loaded);
70
+ if (parseDurationToSeconds(duration) == null) {
71
+ console.error(`checkback start: bad duration '${duration}' (use 30s, 5m, 1h)`);
72
+ process.exit(2);
73
+ }
74
+ const trailing = cmd.args.slice(1).filter(Boolean);
75
+ let expect = opts.expect?.trim() ?? "";
76
+ if (!expect && trailing.length) {
77
+ expect = trailing.join(" ").trim();
78
+ }
79
+ if (!expect) {
80
+ console.error('usage: checkback start <duration> --expect "topic" [--renew 3m] [--here|--slot N|--mini N]');
81
+ process.exit(2);
82
+ }
83
+ let ownerPane;
84
+ try {
85
+ ownerPane = resolveTargetPane(loaded, {
86
+ here: opts.here,
87
+ slot: opts.slot,
88
+ mini: opts.mini,
89
+ pane: opts.pane,
90
+ });
91
+ }
92
+ catch (e) {
93
+ console.error(e.message);
94
+ process.exit(1);
95
+ }
96
+ const res = await armCheckback({
97
+ inboxBase: cfg.inboxBase,
98
+ ownerPane,
99
+ expect,
100
+ duration,
101
+ renew: opts.renew,
102
+ kind: opts.kind,
103
+ senderPane: runWhoami(loaded).paneId ?? ownerPane,
104
+ });
105
+ if (!res.ok) {
106
+ console.error(`checkback start: FAIL ${res.reason ?? "?"}`);
107
+ process.exit(1);
108
+ }
109
+ const entry = res.response?.entry;
110
+ if (!entry) {
111
+ console.error("checkback start: FAIL no entry returned");
112
+ process.exit(1);
113
+ }
114
+ console.log(`ok id=${entry.id} expiresAt=${entry.expiresAt ?? "-"} expect=${expect}`);
115
+ });
116
+ checkback
117
+ .command("list")
118
+ .alias("ls")
119
+ .description("List checkback entries (active by default)")
120
+ .option("--all", "include cancelled entries")
121
+ .option("--json", "raw JSON")
122
+ .action(async (opts) => {
123
+ const loaded = getLoaded();
124
+ requireMeshInbox(loaded);
125
+ const cfg = chatRoomConfigForLoaded(loaded);
126
+ const out = await listCheckbacks(cfg.inboxBase, { all: opts.all });
127
+ if (opts.json) {
128
+ console.log(JSON.stringify(out, null, 2));
129
+ return;
130
+ }
131
+ if (!out.entries.length) {
132
+ console.log("no checkbacks");
133
+ return;
134
+ }
135
+ for (const e of out.entries)
136
+ printEntry(e);
137
+ });
138
+ checkback
139
+ .command("cancel")
140
+ .description("Cancel a checkback by id (id prefix ok)")
141
+ .argument("<id>", "checkback id or prefix")
142
+ .action(async (id) => {
143
+ const loaded = getLoaded();
144
+ requireMeshInbox(loaded);
145
+ const cfg = chatRoomConfigForLoaded(loaded);
146
+ const res = await cancelCheckback(cfg.inboxBase, id);
147
+ console.log(`ok cancelled=${res.cancelled}`);
148
+ });
149
+ checkback
150
+ .command("cancel-all")
151
+ .description("Cancel every active checkback (mesh inbox poll-later)")
152
+ .action(async () => {
153
+ const loaded = getLoaded();
154
+ requireMeshInbox(loaded);
155
+ const cfg = chatRoomConfigForLoaded(loaded);
156
+ const res = await cancelAllCheckbacks(cfg.inboxBase);
157
+ console.log(`ok cancelled=${res.cancelled}`);
158
+ });
159
+ checkback
160
+ .command("reset")
161
+ .description("Reset checkback expiry (harness: reset <id> <duration>)")
162
+ .argument("<id>", "checkback id or prefix")
163
+ .argument("<duration>", "new duration from now (30s, 5m, 1h)")
164
+ .action(async (id, duration) => {
165
+ const loaded = getLoaded();
166
+ requireMeshInbox(loaded);
167
+ const cfg = chatRoomConfigForLoaded(loaded);
168
+ const expiresAt = expiresAtUtcFromDuration(duration);
169
+ if (!expiresAt) {
170
+ console.error(`checkback reset: bad duration '${duration}'`);
171
+ process.exit(2);
172
+ }
173
+ const res = await resetCheckback(cfg.inboxBase, id, expiresAt);
174
+ if (!res.ok || !res.entry) {
175
+ console.error(`checkback reset: FAIL ${res.error ?? "?"}`);
176
+ process.exit(1);
177
+ }
178
+ console.log(`ok id=${res.entry.id} expiresAt=${res.entry.expiresAt ?? "-"}`);
179
+ });
180
+ checkback
181
+ .command("ack")
182
+ .description("Ack CHECKBACK? intercept — yes cancels (matched), no ignores")
183
+ .argument("<id>", "checkback id or prefix")
184
+ .argument("<answer>", "yes|no")
185
+ .action(async (id, answer) => {
186
+ const loaded = getLoaded();
187
+ requireMeshInbox(loaded);
188
+ const cfg = chatRoomConfigForLoaded(loaded);
189
+ const yes = parseAckAnswer(answer);
190
+ if (yes == null) {
191
+ console.error("checkback ack: want yes|no");
192
+ process.exit(2);
193
+ }
194
+ const res = await ackCheckback(cfg.inboxBase, id, yes);
195
+ if (!res.ok) {
196
+ console.error(`checkback ack: FAIL ${res.error ?? "?"}`);
197
+ process.exit(1);
198
+ }
199
+ console.log(`ok action=${res.action ?? "?"} id=${res.id ?? id}`);
200
+ });
201
+ return checkback;
202
+ }
203
+ //# sourceMappingURL=checkback-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkback-cli.js","sourceRoot":"","sources":["../../src/commands/checkback-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type LoadedProfile } from "@seat-mesh/core";
3
+ export declare function buildContractLockCommands(getLoaded: () => LoadedProfile): Command;
4
+ //# sourceMappingURL=contract-lock-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-lock-cli.d.ts","sourceRoot":"","sources":["../../src/commands/contract-lock-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAUL,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AAmFzB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CA6GjF"}
@@ -0,0 +1,180 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { Command } from "commander";
3
+ import { armContractLock, chatRoomConfigForLoaded, contractsDirFor, createRoom, disarmContractLock, isGlobalSlug, listContractLocks, loadVendorContract, resolveAgentId, upsertContractRoom, } from "@seat-mesh/core";
4
+ import { createRegistryForProfile } from "@seat-mesh/providers";
5
+ import { runWhoami, secretarySupervise } from "@seat-mesh/tmux";
6
+ function tmuxOpt(pane, key) {
7
+ const r = spawnSync("tmux", ["display-message", "-t", pane, "-p", key], { encoding: "utf8" });
8
+ if (r.status !== 0)
9
+ return "";
10
+ return (r.stdout ?? "").trim();
11
+ }
12
+ function resolveFrom(loaded, explicit) {
13
+ if (explicit)
14
+ return explicit;
15
+ const w = runWhoami(loaded);
16
+ const mini = tmuxOpt(w.paneId ?? "", "#{@mesh_mini}");
17
+ return resolveAgentId({ role: w.role, slot: w.slot, mini: mini || null });
18
+ }
19
+ function armSuperviseContract(loaded, agentId, from) {
20
+ const contractsDir = contractsDirFor(loaded);
21
+ const doc = loadVendorContract(contractsDir, "supervise");
22
+ if (agentId !== doc.supervisor) {
23
+ throw new Error(`supervise contract binds supervisor=${doc.supervisor}, not ${agentId}`);
24
+ }
25
+ const lock = armContractLock(contractsDir, doc.id, agentId);
26
+ const cfg = chatRoomConfigForLoaded(loaded);
27
+ const room = upsertContractRoom({
28
+ workspace: loaded.workspace,
29
+ cfg,
30
+ slug: doc.room_slug,
31
+ createdBy: from,
32
+ kind: "contract",
33
+ scope: doc.scope,
34
+ members: doc.members,
35
+ leads: doc.leads,
36
+ supervisor: doc.supervisor,
37
+ });
38
+ const managers = upsertContractRoom({
39
+ workspace: loaded.workspace,
40
+ cfg,
41
+ slug: "managers",
42
+ createdBy: from,
43
+ kind: "contract",
44
+ scope: "Manager coord digest — profile manager columns",
45
+ members: doc.leads ?? ["manager"],
46
+ leads: doc.leads,
47
+ });
48
+ console.log(`OK: contract ${doc.id} ON agent=${agentId}`);
49
+ console.log(` lock=${lock}`);
50
+ console.log(` room=${room.slug} supervisor=${room.supervisor ?? "-"}`);
51
+ console.log(` room=${managers.slug} members=${(managers.members ?? []).join(",")}`);
52
+ try {
53
+ const reg = createRegistryForProfile(loaded.profile);
54
+ secretarySupervise(loaded, reg, "on", "5m");
55
+ console.log(" secretary supervise loop armed");
56
+ }
57
+ catch (e) {
58
+ console.log(` secretary supervise skipped (${e.message})`);
59
+ }
60
+ }
61
+ function disarmSuperviseContract(loaded, agentId) {
62
+ const contractsDir = contractsDirFor(loaded);
63
+ const doc = loadVendorContract(contractsDir, "supervise");
64
+ if (agentId !== doc.supervisor) {
65
+ throw new Error(`supervise contract binds supervisor=${doc.supervisor}, not ${agentId}`);
66
+ }
67
+ const removed = disarmContractLock(contractsDir, doc.id, agentId);
68
+ try {
69
+ const reg = createRegistryForProfile(loaded.profile);
70
+ secretarySupervise(loaded, reg, "off");
71
+ }
72
+ catch {
73
+ /* session may be down */
74
+ }
75
+ console.log(removed
76
+ ? `OK: contract ${doc.id} OFF agent=${agentId}`
77
+ : `OK: contract ${doc.id} already off for agent=${agentId}`);
78
+ }
79
+ export function buildContractLockCommands(getLoaded) {
80
+ const contract = new Command("contract").description("Harness contracts — vendor yaml + lock files under .sm/contracts/");
81
+ contract
82
+ .command("list")
83
+ .description("List armed contract locks")
84
+ .action(() => {
85
+ const loaded = getLoaded();
86
+ const rows = listContractLocks(contractsDirFor(loaded));
87
+ if (!rows.length) {
88
+ console.log("(no contract locks)");
89
+ return;
90
+ }
91
+ for (const row of rows) {
92
+ console.log(`${row.contractId}\t${row.agentId}\t${row.path}`);
93
+ }
94
+ });
95
+ contract
96
+ .command("create")
97
+ .alias("open")
98
+ .description("Open a named chat contract (not global)")
99
+ .argument("<slug>", "room slug")
100
+ .option("--scope <text>", "contract scope")
101
+ .option("--lead <id>", "lead agent id")
102
+ .option("--supervisor <id>", "supervisor agent id")
103
+ .option("--members <ids>", "comma-separated member ids")
104
+ .option("--from <id>", "creator agent id")
105
+ .action((slug, opts) => {
106
+ const loaded = getLoaded();
107
+ const cfg = chatRoomConfigForLoaded(loaded);
108
+ if (isGlobalSlug(cfg, slug)) {
109
+ console.error(`slug "${slug}" is reserved for the global room`);
110
+ process.exit(2);
111
+ }
112
+ const profile = createRoom({
113
+ workspace: loaded.workspace,
114
+ cfg,
115
+ slug,
116
+ createdBy: resolveFrom(loaded, opts.from),
117
+ kind: "contract",
118
+ scope: opts.scope,
119
+ lead: opts.lead,
120
+ supervisor: opts.supervisor,
121
+ members: opts.members?.split(",").map((s) => s.trim()),
122
+ });
123
+ console.log(`room=${profile.slug}`);
124
+ console.log(`createdBy=${profile.createdBy}`);
125
+ });
126
+ contract
127
+ .command("on")
128
+ .description("Arm a vendor contract (creates lock + contract room)")
129
+ .argument("<id>", "contract id (e.g. supervise)")
130
+ .requiredOption("--agent <id>", "agent bound to the lock (supervise: secretary)")
131
+ .option("--from <id>", "creator agent id")
132
+ .action((id, opts) => {
133
+ const loaded = getLoaded();
134
+ const from = resolveFrom(loaded, opts.from);
135
+ if (id === "supervise") {
136
+ armSuperviseContract(loaded, opts.agent, from);
137
+ return;
138
+ }
139
+ const contractsDir = contractsDirFor(loaded);
140
+ const doc = loadVendorContract(contractsDir, id);
141
+ if (opts.agent !== doc.supervisor) {
142
+ throw new Error(`contract ${id} supervisor=${doc.supervisor}, not ${opts.agent}`);
143
+ }
144
+ const lock = armContractLock(contractsDir, doc.id, opts.agent);
145
+ const cfg = chatRoomConfigForLoaded(loaded);
146
+ upsertContractRoom({
147
+ workspace: loaded.workspace,
148
+ cfg,
149
+ slug: doc.room_slug,
150
+ createdBy: from,
151
+ kind: "contract",
152
+ scope: doc.scope,
153
+ members: doc.members,
154
+ leads: doc.leads,
155
+ supervisor: doc.supervisor,
156
+ });
157
+ console.log(`OK: contract ${doc.id} ON lock=${lock}`);
158
+ });
159
+ contract
160
+ .command("off")
161
+ .description("Disarm a contract lock")
162
+ .argument("<id>", "contract id")
163
+ .requiredOption("--agent <id>", "agent that holds the lock")
164
+ .action((id, opts) => {
165
+ const loaded = getLoaded();
166
+ if (id === "supervise") {
167
+ disarmSuperviseContract(loaded, opts.agent);
168
+ return;
169
+ }
170
+ const contractsDir = contractsDirFor(loaded);
171
+ const doc = loadVendorContract(contractsDir, id);
172
+ if (opts.agent !== doc.supervisor) {
173
+ throw new Error(`contract ${id} supervisor=${doc.supervisor}, not ${opts.agent}`);
174
+ }
175
+ const removed = disarmContractLock(contractsDir, doc.id, opts.agent);
176
+ console.log(removed ? `OK: contract ${doc.id} OFF` : `OK: contract ${doc.id} already off`);
177
+ });
178
+ return contract;
179
+ }
180
+ //# sourceMappingURL=contract-lock-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-lock-cli.js","sourceRoot":"","sources":["../../src/commands/contract-lock-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LoadedProfile, ProviderRegistry } from "@seat-mesh/core";
2
+ export declare function coordCommand(loaded: LoadedProfile, _registry: ProviderRegistry, sub: string, args: string[]): void;
3
+ //# sourceMappingURL=coord-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coord-cli.d.ts","sourceRoot":"","sources":["../../src/commands/coord-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGvE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,gBAAgB,EAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,GACb,IAAI,CAYN"}
@@ -0,0 +1,15 @@
1
+ import { armCoordExpectAfterAssign, formatCoordExpect } from "@seat-mesh/tmux";
2
+ export function coordCommand(loaded, _registry, sub, args) {
3
+ if (sub !== "expect") {
4
+ throw new Error("usage: coord expect <target> <hub> <snippet...>");
5
+ }
6
+ const [target, hub, ...rest] = args;
7
+ if (!target || !hub || rest.length === 0) {
8
+ throw new Error("usage: coord expect <target> <hub> <snippet...>");
9
+ }
10
+ const snippet = rest.join(" ");
11
+ armCoordExpectAfterAssign(loaded, { target, assignText: `${hub} ${snippet}` });
12
+ console.log(`OK: coord-expect armed -> manager pane`);
13
+ console.log(` expect: ${formatCoordExpect(target, hub, snippet)}`);
14
+ }
15
+ //# sourceMappingURL=coord-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coord-cli.js","sourceRoot":"","sources":["../../src/commands/coord-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,MAAM,UAAU,YAAY,CAC1B,MAAqB,EACrB,SAA2B,EAC3B,GAAW,EACX,IAAc;IAEd,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,yBAAyB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,aAAa,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC"}