@loompad/cli 1.1.2 โ†’ 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +31 -10
  3. package/dist/adapters/antigravity-cli.d.ts +2 -0
  4. package/dist/adapters/antigravity-cli.js +27 -4
  5. package/dist/adapters/antigravity-cli.js.map +1 -1
  6. package/dist/adapters/model.js +1 -1
  7. package/dist/adapters/model.js.map +1 -1
  8. package/dist/adapters/opencode.d.ts +4 -0
  9. package/dist/adapters/opencode.js +18 -0
  10. package/dist/adapters/opencode.js.map +1 -1
  11. package/dist/cli/doctor.d.ts +38 -1
  12. package/dist/cli/doctor.js +157 -3
  13. package/dist/cli/doctor.js.map +1 -1
  14. package/dist/cli/index.js +357 -20
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/ui.js +11 -7
  17. package/dist/cli/ui.js.map +1 -1
  18. package/dist/core/auto-policy.d.ts +46 -0
  19. package/dist/core/auto-policy.js +181 -0
  20. package/dist/core/auto-policy.js.map +1 -0
  21. package/dist/core/council.d.ts +55 -0
  22. package/dist/core/council.js +73 -0
  23. package/dist/core/council.js.map +1 -0
  24. package/dist/core/crew-protocol.js +4 -1
  25. package/dist/core/crew-protocol.js.map +1 -1
  26. package/dist/core/crew.d.ts +13 -1
  27. package/dist/core/crew.js +40 -6
  28. package/dist/core/crew.js.map +1 -1
  29. package/dist/core/digest.d.ts +2 -0
  30. package/dist/core/digest.js +9 -0
  31. package/dist/core/digest.js.map +1 -1
  32. package/dist/core/loops.js +22 -2
  33. package/dist/core/loops.js.map +1 -1
  34. package/dist/core/orchestra.d.ts +16 -0
  35. package/dist/core/orchestra.js +45 -2
  36. package/dist/core/orchestra.js.map +1 -1
  37. package/dist/core/permissions.js +2 -2
  38. package/dist/core/permissions.js.map +1 -1
  39. package/dist/core/prices.d.ts +66 -0
  40. package/dist/core/prices.js +109 -0
  41. package/dist/core/prices.js.map +1 -0
  42. package/dist/core/proof.d.ts +13 -1
  43. package/dist/core/proof.js +89 -17
  44. package/dist/core/proof.js.map +1 -1
  45. package/dist/core/providers.d.ts +13 -0
  46. package/dist/core/providers.js +17 -0
  47. package/dist/core/providers.js.map +1 -1
  48. package/dist/core/replay.js +14 -0
  49. package/dist/core/replay.js.map +1 -1
  50. package/dist/core/review.d.ts +60 -0
  51. package/dist/core/review.js +121 -0
  52. package/dist/core/review.js.map +1 -0
  53. package/dist/core/routes.js +14 -0
  54. package/dist/core/routes.js.map +1 -1
  55. package/dist/core/setup.d.ts +27 -0
  56. package/dist/core/setup.js +39 -7
  57. package/dist/core/setup.js.map +1 -1
  58. package/dist/core/shield.js +7 -3
  59. package/dist/core/shield.js.map +1 -1
  60. package/dist/core/shift.d.ts +2 -0
  61. package/dist/core/shift.js +14 -2
  62. package/dist/core/shift.js.map +1 -1
  63. package/dist/core/turn-wait.d.ts +20 -0
  64. package/dist/core/turn-wait.js +39 -0
  65. package/dist/core/turn-wait.js.map +1 -0
  66. package/dist/core/usage.d.ts +7 -1
  67. package/dist/core/usage.js +11 -3
  68. package/dist/core/usage.js.map +1 -1
  69. package/dist/daemon/client.d.ts +60 -1
  70. package/dist/daemon/client.js +40 -1
  71. package/dist/daemon/client.js.map +1 -1
  72. package/dist/daemon/council.d.ts +98 -0
  73. package/dist/daemon/council.js +254 -0
  74. package/dist/daemon/council.js.map +1 -0
  75. package/dist/daemon/proof.d.ts +6 -0
  76. package/dist/daemon/proof.js +32 -9
  77. package/dist/daemon/proof.js.map +1 -1
  78. package/dist/daemon/push.js +7 -0
  79. package/dist/daemon/push.js.map +1 -1
  80. package/dist/daemon/review.d.ts +95 -0
  81. package/dist/daemon/review.js +154 -0
  82. package/dist/daemon/review.js.map +1 -0
  83. package/dist/daemon/routes/council.d.ts +4 -0
  84. package/dist/daemon/routes/council.js +29 -0
  85. package/dist/daemon/routes/council.js.map +1 -0
  86. package/dist/daemon/routes/crews.js +2 -0
  87. package/dist/daemon/routes/crews.js.map +1 -1
  88. package/dist/daemon/routes/messages.js +8 -2
  89. package/dist/daemon/routes/messages.js.map +1 -1
  90. package/dist/daemon/routes/review.d.ts +4 -0
  91. package/dist/daemon/routes/review.js +40 -0
  92. package/dist/daemon/routes/review.js.map +1 -0
  93. package/dist/daemon/routes/routing.js +2 -1
  94. package/dist/daemon/routes/routing.js.map +1 -1
  95. package/dist/daemon/routes/setup.d.ts +2 -1
  96. package/dist/daemon/routes/setup.js +22 -6
  97. package/dist/daemon/routes/setup.js.map +1 -1
  98. package/dist/daemon/runtime/accounting.d.ts +6 -0
  99. package/dist/daemon/runtime/accounting.js +37 -1
  100. package/dist/daemon/runtime/accounting.js.map +1 -1
  101. package/dist/daemon/runtime/briefings.d.ts +8 -3
  102. package/dist/daemon/runtime/briefings.js +26 -14
  103. package/dist/daemon/runtime/briefings.js.map +1 -1
  104. package/dist/daemon/runtime/queue.d.ts +7 -0
  105. package/dist/daemon/runtime/queue.js +13 -1
  106. package/dist/daemon/runtime/queue.js.map +1 -1
  107. package/dist/daemon/runtime/relay.d.ts +2 -0
  108. package/dist/daemon/runtime/relay.js +7 -0
  109. package/dist/daemon/runtime/relay.js.map +1 -1
  110. package/dist/daemon/runtime/turns.d.ts +2 -0
  111. package/dist/daemon/runtime/turns.js +1 -0
  112. package/dist/daemon/runtime/turns.js.map +1 -1
  113. package/dist/daemon/runtime-support.js +1 -1
  114. package/dist/daemon/runtime-support.js.map +1 -1
  115. package/dist/daemon/runtime.d.ts +65 -3
  116. package/dist/daemon/runtime.js +238 -5
  117. package/dist/daemon/runtime.js.map +1 -1
  118. package/dist/daemon/server.js +5 -1
  119. package/dist/daemon/server.js.map +1 -1
  120. package/dist/daemon/shift.js +1 -1
  121. package/dist/daemon/shift.js.map +1 -1
  122. package/dist/providers/agent.js +6 -0
  123. package/dist/providers/agent.js.map +1 -1
  124. package/dist/providers/claude/adapter.d.ts +3 -0
  125. package/dist/providers/claude/adapter.js +20 -1
  126. package/dist/providers/claude/adapter.js.map +1 -1
  127. package/dist/types.d.ts +31 -1
  128. package/dist/types.js.map +1 -1
  129. package/dist/web/app.css +51 -0
  130. package/dist/web/app.js +172 -18
  131. package/dist/web/app.js.map +3 -3
  132. package/docs/release-notes/v1.2.0.md +48 -0
  133. package/docs/release-notes/v1.2.1.md +40 -0
  134. package/package.json +1 -1
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Council: the runner. One planner and up to four reviewers take a goal
3
+ * through core/council.ts's stages, in one chat:
4
+ *
5
+ * plan โ†’ backtest โ†’ decide โ†’ build โ†’ prove โ†’ forward-test โ†’ fix
6
+ *
7
+ * Only the planner ever writes (it holds the baton; the reviewers run as
8
+ * read-only reviews beside it), every finding the planner accepts or rejects
9
+ * is recorded as a decision, and Proof โ€” not the planner โ€” says whether the
10
+ * tests pass. Each stage is a `council` event, so the card in the thread
11
+ * (and `loom council`) shows where it is.
12
+ *
13
+ * Events, one kind, `payload.phase`:
14
+ * started { councilId, goal, planner, reviewers, chat, stages }
15
+ * stage { councilId, stage, status, detail? }
16
+ * done { councilId, status: done | failed | stopped, summary }
17
+ */
18
+ import { randomUUID } from "node:crypto";
19
+ import { BACKTEST_FOCUS, FORWARD_FOCUS, STAGES, backtestText, buildPrompt, decidePrompt, fixPrompt, parseVerdicts, planPrompt, proofStage, } from "../core/council.js";
20
+ import { turnOutcome } from "../core/turn-wait.js";
21
+ class Stopped extends Error {
22
+ }
23
+ /** How long one turn or one review may take before the council gives up on it. */
24
+ const STEP_MS = 45 * 60_000;
25
+ export class CouncilRunner {
26
+ host;
27
+ running = null;
28
+ /** For tests: how often to look at the log while waiting. */
29
+ pollMs = 400;
30
+ constructor(host) {
31
+ this.host = host;
32
+ // a council the daemon restarted under won't pick up mid-stage: close it, saying where it was
33
+ for (const e of host.list({ kinds: ["council"] })) {
34
+ if (e.payload.phase !== "started")
35
+ continue;
36
+ const id = String(e.payload.councilId);
37
+ const s = this.status(id);
38
+ if (!s || s.status !== "running")
39
+ continue;
40
+ const at = s.stages.find((x) => x.status === "running");
41
+ if (at)
42
+ this.stage(id, s.chat, at.key, "failed", "Loom restarted during this stage");
43
+ this.host.append({ kind: "council", chat: s.chat, payload: { phase: "done", councilId: id, status: "failed", summary: `stopped at ${at?.name ?? "the start"}: Loom restarted` } });
44
+ }
45
+ }
46
+ closed = false;
47
+ get active() { return Boolean(this.running); }
48
+ /** The project is closing: whatever is waiting stops waiting. */
49
+ close() { this.closed = true; }
50
+ start(input) {
51
+ if (this.running)
52
+ throw new Error("a council is already running in this project โ€” stop it first");
53
+ const goal = input.goal?.trim();
54
+ if (!goal)
55
+ throw new Error("a council needs a goal");
56
+ if (!this.host.hasAgent(input.planner))
57
+ throw new Error(`no agent "${input.planner}" in this project`);
58
+ if (!this.host.canWrite(input.planner))
59
+ throw new Error(`"${input.planner}" can't plan and build (a bridge, switched off, or a read-only model agent)`);
60
+ const reviewers = input.reviewers.length ? this.host.checkReviewers(input.reviewers.filter((r) => r !== input.planner)) : [];
61
+ if (!reviewers.length)
62
+ throw new Error("name at least one reviewer other than the planner");
63
+ const councilId = randomUUID().slice(0, 6);
64
+ const chat = this.host.createChat(`๐Ÿ› Council ยท ${goal.replace(/\s+/g, " ")}`.slice(0, 60)).id;
65
+ this.running = { id: councilId, chat, stop: false };
66
+ this.host.append({ kind: "council", chat, payload: { phase: "started", councilId, goal, planner: input.planner, reviewers, chat, stages: STAGES.map((s) => ({ key: s.key, name: s.name, what: s.what })) } });
67
+ void this.run(councilId, chat, goal, input.planner, reviewers)
68
+ .catch((err) => this.host.warn("council failed", err))
69
+ .finally(() => { if (this.running?.id === councilId)
70
+ this.running = null; });
71
+ return this.status(councilId);
72
+ }
73
+ /** Stop after the current stage; a turn in progress is interrupted. */
74
+ async stop() {
75
+ const r = this.running;
76
+ if (!r)
77
+ return null;
78
+ r.stop = true;
79
+ await this.host.interrupt(r.chat).catch(() => { });
80
+ return this.status(r.id);
81
+ }
82
+ stage(councilId, chat, stage, status, detail) {
83
+ this.host.append({ kind: "council", chat, payload: { phase: "stage", councilId, stage, status, ...(detail ? { detail: detail.slice(0, 400) } : {}) } });
84
+ }
85
+ async sleep() {
86
+ if (this.closed)
87
+ throw new Stopped();
88
+ await new Promise((r) => setTimeout(r, this.pollMs));
89
+ }
90
+ check(councilId) {
91
+ if (this.running?.id === councilId && this.running.stop)
92
+ throw new Stopped();
93
+ }
94
+ /** Send the planner one turn in the council's chat and wait for it to end. */
95
+ async turn(councilId, chat, planner, text, plan) {
96
+ const since = this.host.lastId();
97
+ await this.host.send(planner, text, { chat, plan });
98
+ const deadline = Date.now() + STEP_MS;
99
+ // the answer is the turn after OUR request: the planner may be finishing another turn first (a relay, a
100
+ // queued message), and that turn's end isn't this one's (#289)
101
+ let asked = null;
102
+ while (Date.now() < deadline) {
103
+ asked ??= this.host.list({ chat, kinds: ["message"], limit: 500 }).find((e) => e.id > since && !e.agentId && String(e.payload.text ?? "").trim() === text.trim())?.id ?? null;
104
+ const out = asked === null ? null : turnOutcome(this.host.list({ chat, agentId: planner, limit: 2000 }).filter((e) => e.id > asked), planner, asked);
105
+ if (out)
106
+ return out;
107
+ if (this.running?.stop) {
108
+ // a stopped turn ends with an interrupted status, not run_complete
109
+ if (this.host.list({ chat, agentId: planner, kinds: ["status"] }).some((e) => e.id > since && (e.payload.state === "interrupted" || e.payload.state === "stopped")))
110
+ throw new Stopped();
111
+ }
112
+ await this.sleep();
113
+ }
114
+ throw new Error(`${planner} didn't finish within ${STEP_MS / 60_000} minutes`);
115
+ }
116
+ async review(councilId, chat, reviewers, target, focus) {
117
+ const started = await this.host.startReview({ agents: reviewers, target, focus, chat });
118
+ const deadline = Date.now() + STEP_MS;
119
+ while (Date.now() < deadline) {
120
+ const s = this.host.reviewStatus(started.reviewId);
121
+ if (s?.status === "done")
122
+ return s;
123
+ this.check(councilId);
124
+ await this.sleep();
125
+ }
126
+ throw new Error(`the reviewers didn't finish within ${STEP_MS / 60_000} minutes`);
127
+ }
128
+ record(findings, reply) {
129
+ const verdicts = parseVerdicts(reply, findings.map((f) => f.id));
130
+ const accepted = [], rejected = [];
131
+ for (const f of findings) {
132
+ const v = verdicts.get(f.id);
133
+ if (!v)
134
+ continue;
135
+ try {
136
+ this.host.decide(f.id, v.decision, v.note);
137
+ }
138
+ catch (err) {
139
+ this.host.warn("council couldn't record a verdict", err);
140
+ }
141
+ (v.decision === "accepted" ? accepted : rejected).push(f);
142
+ }
143
+ return { accepted, rejected, open: findings.length - accepted.length - rejected.length };
144
+ }
145
+ async run(councilId, chat, goal, planner, reviewers) {
146
+ let current = "plan";
147
+ const go = (k) => { current = k; this.check(councilId); this.stage(councilId, chat, k, "running"); };
148
+ const tally = (r) => [`${r.accepted.length} accepted`, `${r.rejected.length} rejected`, r.open ? `${r.open} undecided` : ""].filter(Boolean).join(" ยท ");
149
+ const failed = (o) => o.status === "error" ? o.error ?? "the turn failed" : o.status === "needs_input" ? `${planner} asked: ${o.question} โ€” answer it in this chat` : "";
150
+ const summary = [];
151
+ try {
152
+ if (this.host.holder() !== planner)
153
+ await this.host.handoff(planner);
154
+ go("plan");
155
+ const planned = await this.turn(councilId, chat, planner, planPrompt(goal), true);
156
+ if (failed(planned) || !planned.reply.trim())
157
+ throw Object.assign(new Error(failed(planned) || `${planner} answered with no plan`), { stage: "plan" });
158
+ this.stage(councilId, chat, "plan", "done", `${planned.reply.split("\n").filter((l) => l.trim()).length} lines`);
159
+ go("backtest");
160
+ const back = await this.review(councilId, chat, reviewers, { kind: "text", text: backtestText(goal, planned.reply) }, BACKTEST_FOCUS);
161
+ this.stage(councilId, chat, "backtest", "done", back.summary);
162
+ let accepted = [], rejected = [];
163
+ const found = back.findings ?? [];
164
+ if (!found.length)
165
+ this.stage(councilId, chat, "decide", "skipped", "the reviewers found nothing to decide");
166
+ else {
167
+ go("decide");
168
+ const decided = await this.turn(councilId, chat, planner, decidePrompt(found), true);
169
+ if (failed(decided))
170
+ throw Object.assign(new Error(failed(decided)), { stage: "decide" });
171
+ const r = this.record(found, decided.reply);
172
+ ({ accepted, rejected } = r);
173
+ this.stage(councilId, chat, "decide", "done", tally(r));
174
+ summary.push(`plan: ${tally(r)}`);
175
+ }
176
+ go("build");
177
+ const built = await this.turn(councilId, chat, planner, buildPrompt(goal, accepted, rejected), false);
178
+ if (failed(built))
179
+ throw Object.assign(new Error(failed(built)), { stage: "build" });
180
+ this.stage(councilId, chat, "build", "done");
181
+ go("prove");
182
+ let proof = await this.host.prove(chat);
183
+ // a "didn't hold" is marked as one, and the council carries on to the fix round with it
184
+ this.stage(councilId, chat, "prove", proof ? proofStage(proof.verdict) : "skipped", proof?.headline ?? "nothing to check");
185
+ let target = null;
186
+ try {
187
+ target = this.host.diffTarget();
188
+ }
189
+ catch { /* the build changed nothing */ }
190
+ let toFix = [];
191
+ if (!target)
192
+ this.stage(councilId, chat, "forward", "skipped", "the build changed no files");
193
+ else {
194
+ go("forward");
195
+ const fwd = await this.review(councilId, chat, reviewers, target, FORWARD_FOCUS);
196
+ // every finding goes to the fix round: the planner rejects what it won't do, out loud (#277)
197
+ toFix = fwd.findings ?? [];
198
+ this.stage(councilId, chat, "forward", "done", fwd.summary);
199
+ }
200
+ const contradicted = proof?.verdict === "contradicted";
201
+ if (!toFix.length && !contradicted)
202
+ this.stage(councilId, chat, "fix", "skipped", "nothing to fix");
203
+ else {
204
+ go("fix");
205
+ const fixed = await this.turn(councilId, chat, planner, fixPrompt(toFix, contradicted ? proof.headline : undefined), false);
206
+ if (failed(fixed))
207
+ throw Object.assign(new Error(failed(fixed)), { stage: "fix" });
208
+ const r = this.record(toFix, fixed.reply);
209
+ proof = await this.host.prove(chat) ?? proof;
210
+ this.stage(councilId, chat, "fix", "done", [toFix.length ? tally(r).replace("accepted", "fixed") : "", proof ? `Proof: ${proof.headline}` : ""].filter(Boolean).join(" ยท "));
211
+ if (toFix.length)
212
+ summary.push(`diff: ${tally(r).replace("accepted", "fixed")}`);
213
+ }
214
+ const verdict = proof ? { verified: "verified", contradicted: "didn't hold", unverified: "unverified" }[proof.verdict] ?? proof.verdict : "not checked";
215
+ this.host.append({ kind: "council", chat, payload: { phase: "done", councilId, status: "done", summary: [`built ยท Proof ${verdict}`, ...summary].join(" ยท ") } });
216
+ }
217
+ catch (err) {
218
+ const stopped = err instanceof Stopped;
219
+ const where = err.stage ?? current;
220
+ const message = stopped ? "you stopped it" : err instanceof Error ? err.message : String(err);
221
+ this.stage(councilId, chat, where, stopped ? "skipped" : "failed", message);
222
+ const name = STAGES.find((s) => s.key === where)?.name ?? where;
223
+ this.host.append({ kind: "council", chat, payload: { phase: "done", councilId, status: stopped ? "stopped" : "failed", summary: `${stopped ? "stopped" : "failed"} at ${name}: ${message}` } });
224
+ }
225
+ }
226
+ status(councilId) {
227
+ const evs = this.host.list({ kinds: ["council"] }).filter((e) => e.payload.councilId === councilId);
228
+ const started = evs.find((e) => e.payload.phase === "started");
229
+ if (!started)
230
+ return null;
231
+ const p = started.payload;
232
+ const stages = STAGES.map((s) => ({ key: s.key, name: s.name, status: "waiting" }));
233
+ for (const e of evs) {
234
+ if (e.payload.phase !== "stage")
235
+ continue;
236
+ const st = stages.find((s) => s.key === e.payload.stage);
237
+ if (st) {
238
+ st.status = e.payload.status;
239
+ if (e.payload.detail)
240
+ st.detail = String(e.payload.detail);
241
+ else
242
+ delete st.detail;
243
+ }
244
+ }
245
+ const done = evs.find((e) => e.payload.phase === "done");
246
+ return { councilId, goal: String(p.goal), planner: String(p.planner), reviewers: p.reviewers, chat: String(p.chat), stages,
247
+ status: done ? done.payload.status : "running", ...(done ? { summary: String(done.payload.summary) } : {}) };
248
+ }
249
+ recent(limit = 10) {
250
+ return this.host.list({ kinds: ["council"] }).filter((e) => e.payload.phase === "started").slice(-limit).reverse()
251
+ .map((e) => this.status(String(e.payload.councilId))).filter(Boolean);
252
+ }
253
+ }
254
+ //# sourceMappingURL=council.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"council.js","sourceRoot":"","sources":["../../src/daemon/council.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,13 @@ export declare class ProofRunner {
46
46
  reply: LoomEvent | null;
47
47
  done: LoomEvent;
48
48
  events: LoomEvent[];
49
+ request: LoomEvent | null;
49
50
  } | null;
51
+ /** A turn that was asked for a plan and changed nothing: there's no work to check yet (#245). */
52
+ planOnly(t: {
53
+ events: LoomEvent[];
54
+ request: LoomEvent | null;
55
+ }): boolean;
50
56
  /** Should this finished turn be checked without being asked? (Its reply claims something.) */
51
57
  wantsAuto(done: LoomEvent): boolean;
52
58
  /** Check the newest finished turn in `chat`. One proof at a time per project; a second ask for the same turn joins the first. */
@@ -14,7 +14,7 @@ import { randomUUID } from "node:crypto";
14
14
  import { promisify } from "node:util";
15
15
  import { execFile } from "../core/process.js";
16
16
  import { runCommand } from "../core/run-command.js";
17
- import { detectTestCommand, evidenceFrom, extractClaims, judge, parseCounts } from "../core/proof.js";
17
+ import { detectTestCommand, ranTestCommand, evidenceFrom, extractClaims, isPlanRequest, judge, parseCounts } from "../core/proof.js";
18
18
  import { loomHome } from "../core/registry.js";
19
19
  import { MAIN_CHAT } from "../types.js";
20
20
  const exec = promisify(execFile);
@@ -47,14 +47,24 @@ export class ProofRunner {
47
47
  }
48
48
  const events = recent.slice(start, di + 1).filter((e) => !e.agentId || e.agentId === agentId);
49
49
  const reply = [...events].reverse().find((e) => e.kind === "message" && e.agentId === agentId && !e.payload.reasoning && typeof e.payload.text === "string") ?? null;
50
- return { agentId, reply, done, events };
50
+ const before = recent[start - 1];
51
+ const request = before && before.kind === "message" && !before.agentId ? before : null;
52
+ return { agentId, reply, done, events, request };
53
+ }
54
+ /** A turn that was asked for a plan and changed nothing: there's no work to check yet (#245). */
55
+ planOnly(t) {
56
+ const edited = t.events.some((e) => e.kind === "file_edit" || e.kind === "turn_diff");
57
+ const asked = t.request ? isPlanRequest(String(t.request.payload.text ?? "")) || t.request.payload.plan === true : false;
58
+ return asked && !edited;
51
59
  }
52
60
  /** Should this finished turn be checked without being asked? (Its reply claims something.) */
53
61
  wantsAuto(done) {
54
62
  if ((this.host.config().auto ?? "claims") === "off" || !done.agentId)
55
63
  return false;
56
64
  const t = this.turn(done.chat ?? MAIN_CHAT, done.id);
57
- return Boolean(t?.reply && extractClaims(String(t.reply.payload.text)).length);
65
+ if (!t || this.planOnly(t))
66
+ return false;
67
+ return Boolean(t.reply && extractClaims(String(t.reply.payload.text)).length);
58
68
  }
59
69
  /** Check the newest finished turn in `chat`. One proof at a time per project; a second ask for the same turn joins the first. */
60
70
  prove(chat = MAIN_CHAT, opts = {}) {
@@ -76,10 +86,20 @@ export class ProofRunner {
76
86
  return null;
77
87
  this.running.add(key);
78
88
  try {
89
+ // asked for a plan, and nothing changed: say so โ€” "the tests fail" about a plan is noise
90
+ if (this.planOnly(t)) {
91
+ const result = { verdict: "unverified", headline: "A plan, not a change โ€” nothing to check until it's built", claims: [], ran: evidenceFrom(t.events), rerun: null };
92
+ const event = this.host.append({ kind: "proof", chat: chat === MAIN_CHAT ? undefined : chat, payload: {
93
+ verdict: result.verdict, headline: result.headline, about: t.agentId, turn: { done: t.done.id, ...(t.reply ? { reply: t.reply.id } : {}) },
94
+ claims: [], ran: result.ran.slice(-12), plan: true, ...(opts.auto ? { auto: true } : {})
95
+ } });
96
+ return { ...result, eventId: event.id };
97
+ }
79
98
  const text = t.reply ? String(t.reply.payload.text) : "";
80
99
  const claims = extractClaims(text);
81
100
  const ran = evidenceFrom(t.events);
82
- const command = opts.testCommand ?? this.host.config().testCommand ?? detectTestCommand(this.host.dir);
101
+ // what was asked, what's configured, the test command this turn ran and passed, then a guess (#276)
102
+ const command = opts.testCommand ?? this.host.config().testCommand ?? ranTestCommand(ran, this.host.dir) ?? detectTestCommand(this.host.dir);
83
103
  const rerun = command ? await this.rerun(command) : null;
84
104
  const result = judge(claims, ran, rerun);
85
105
  const event = this.host.append({ kind: "proof", chat: chat === MAIN_CHAT ? undefined : chat, payload: {
@@ -108,15 +128,18 @@ export class ProofRunner {
108
128
  await exec("git", ["worktree", "add", "--detach", "-q", dir, "HEAD"], { cwd: repo });
109
129
  try {
110
130
  await this.copyWorkingTree(repo, dir);
111
- for (const dep of DEP_DIRS) {
112
- const from = path.join(repo, dep), to = path.join(dir, dep);
113
- if (fs.existsSync(from) && !fs.existsSync(to))
114
- fs.symlinkSync(from, to, process.platform === "win32" ? "junction" : "dir");
115
- }
116
131
  // where the project sits in the repo, as git sees it โ€” comparing paths ourselves trips on
117
132
  // /private/var vs /var (macOS) and short 8.3 names like RUNNER~1 (Windows)
118
133
  const { stdout: prefix } = await exec("git", ["rev-parse", "--show-prefix"], { cwd: this.host.dir });
119
134
  const sub = prefix.trim().replace(/\/$/, "");
135
+ // dependency folders are gitignored, so the checkout borrows them โ€” from the repo root, and from the project's own folder when it's deeper
136
+ const pairs = [[repo, dir], ...(sub ? [[this.host.dir, path.join(dir, ...sub.split("/"))]] : [])];
137
+ for (const [base, into] of pairs)
138
+ for (const dep of DEP_DIRS) {
139
+ const from = path.join(base, dep), to = path.join(into, dep);
140
+ if (fs.existsSync(from) && !fs.existsSync(to))
141
+ fs.symlinkSync(from, to, process.platform === "win32" ? "junction" : "dir");
142
+ }
120
143
  const r = await runCommand(command, sub ? path.join(dir, ...sub.split("/")) : dir, { timeoutMs, keep: 64_000 });
121
144
  return this.toRerun(command, r, true);
122
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"proof.js","sourceRoot":"","sources":["../../src/daemon/proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proof.js","sourceRoot":"","sources":["../../src/daemon/proof.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,9 @@ export function pushCategory(event) {
29
29
  case "approval": return p.phase === "requested" ? "approvals" : null;
30
30
  // the morning report: a night shift's work, done
31
31
  case "shift": return p.phase === "report" ? "goals" : null;
32
+ // the reviewers have all answered: findings to accept or reject
33
+ case "review": return p.phase === "done" ? "goals" : null;
34
+ case "council": return p.phase === "done" ? "goals" : null;
32
35
  case "orchestra":
33
36
  if (p.phase === "alert" || p.phase === "completed" || p.phase === "failed" || p.phase === "aborted")
34
37
  return "goals";
@@ -81,6 +84,10 @@ export function pushContent(projectName, event, extra = {}) {
81
84
  if (p.phase === "report")
82
85
  return { title: `๐ŸŒ™ Night shift done ยท ${projectName}`, body: `${clip(p.summary, 140)}${p.stopped ? ` โ€” stopped: ${clip(p.stopped, 60)}` : ""}` };
83
86
  return { title, body: "night shift started" };
87
+ case "council":
88
+ return { title: `๐Ÿ› Council ${p.status === "done" ? "done" : String(p.status ?? "ended")} ยท ${projectName}`, body: clip(p.summary, 160) };
89
+ case "review":
90
+ return { title: `๐Ÿ” Review done ยท ${projectName}`, body: clip(p.summary, 160) || "the reviewers answered" };
84
91
  case "route_completed":
85
92
  return { title, body: `โœ” route complete (${Number(p.steps ?? 0)} steps)` };
86
93
  case "route_failed":
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/daemon/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/daemon/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Review: the runner (#253). Each reviewer is a read-only subtask in the
3
+ * review's own chat โ€” none takes the baton, so nobody is asked to hand off
4
+ * for a read โ€” and once the last one has answered, one `review` card collects
5
+ * every finding to accept (it becomes a project decision) or reject. The
6
+ * reading of replies is core/review.ts.
7
+ *
8
+ * Events, one kind, `payload.phase`:
9
+ * started { reviewId, chat, target, agents, focus? }
10
+ * done { reviewId, chat, target, results[], findings[], summary }
11
+ * decided { reviewId, findingId, decision, note? }
12
+ */
13
+ import type { ListOpts } from "../core/events/contracts.js";
14
+ import { type Finding, type FindingDecision, type ReviewTarget } from "../core/review.js";
15
+ import type { LoomEvent, NewEvent } from "../types.js";
16
+ export interface ReviewHost {
17
+ hasAgent(id: string): boolean;
18
+ /** An agent that can run a subtask (an adapter, enabled). */
19
+ canReview(id: string): boolean;
20
+ holder(): string | undefined;
21
+ createChat(title: string): {
22
+ id: string;
23
+ };
24
+ spawn(parent: string, opts: {
25
+ agentId: string;
26
+ task: string;
27
+ chat: string;
28
+ readOnly: true;
29
+ onSettled: (o: {
30
+ ok: boolean;
31
+ message?: string;
32
+ }) => void;
33
+ }): Promise<unknown>;
34
+ list(opts: ListOpts): LoomEvent[];
35
+ append(e: NewEvent): LoomEvent;
36
+ decide(text: string): void;
37
+ maxReviewers: number;
38
+ /** How long one reviewer may take (ms); past it, it's stopped and left out so the others' findings land. */
39
+ reviewerTimeoutMs?: () => number;
40
+ /** Stop a reviewer that ran out of time. */
41
+ stopReviewer?: (agentId: string) => Promise<unknown>;
42
+ }
43
+ export interface ReviewResult {
44
+ agent: string;
45
+ status: "done" | "failed";
46
+ error?: string;
47
+ reply: string;
48
+ /** Files it changed anyway. A review is read-only: an agent without a plan mode is only told so, and this is how you'd know it didn't listen. */
49
+ edited?: string[];
50
+ }
51
+ export interface ReviewState {
52
+ reviewId: string;
53
+ chat: string;
54
+ target: {
55
+ kind: string;
56
+ file?: string;
57
+ label?: string;
58
+ };
59
+ agents: string[];
60
+ status: "running" | "done";
61
+ results?: ReviewResult[];
62
+ findings?: Array<Finding & {
63
+ decision?: FindingDecision;
64
+ note?: string;
65
+ }>;
66
+ summary?: string;
67
+ }
68
+ export declare class ReviewRunner {
69
+ private readonly host;
70
+ private pending;
71
+ /** Reviews still waiting on a reviewer. */
72
+ get running(): number;
73
+ constructor(host: ReviewHost);
74
+ /** The reviewers, deduplicated โ€” or why they can't review. */
75
+ check(names: string[]): string[];
76
+ start(input: {
77
+ agents: string[];
78
+ target: ReviewTarget;
79
+ focus?: string;
80
+ chat?: string;
81
+ }): Promise<ReviewState>;
82
+ /** The reviewer's answer: its last reply in the review's chat. */
83
+ private replyOf;
84
+ private editsOf;
85
+ private finish;
86
+ private doneEvent;
87
+ status(reviewId: string): ReviewState | null;
88
+ /** Accept (it becomes a project decision every agent is briefed with) or reject one finding. */
89
+ decide(findingId: string, decision: FindingDecision, note?: string): {
90
+ finding: Finding;
91
+ decision: FindingDecision;
92
+ };
93
+ /** The latest reviews, newest first. */
94
+ recent(limit?: number): ReviewState[];
95
+ }