@loompad/cli 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +20 -5
  3. package/dist/adapters/antigravity-cli.d.ts +2 -0
  4. package/dist/adapters/antigravity-cli.js +20 -1
  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/cli/doctor.d.ts +30 -1
  9. package/dist/cli/doctor.js +117 -1
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/cli/index.js +294 -14
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/ui.js +11 -7
  14. package/dist/cli/ui.js.map +1 -1
  15. package/dist/core/auto-policy.d.ts +46 -0
  16. package/dist/core/auto-policy.js +181 -0
  17. package/dist/core/auto-policy.js.map +1 -0
  18. package/dist/core/council.d.ts +55 -0
  19. package/dist/core/council.js +71 -0
  20. package/dist/core/council.js.map +1 -0
  21. package/dist/core/permissions.js +2 -2
  22. package/dist/core/permissions.js.map +1 -1
  23. package/dist/core/prices.d.ts +55 -0
  24. package/dist/core/prices.js +99 -0
  25. package/dist/core/prices.js.map +1 -0
  26. package/dist/core/proof.d.ts +2 -0
  27. package/dist/core/proof.js +33 -10
  28. package/dist/core/proof.js.map +1 -1
  29. package/dist/core/providers.d.ts +13 -0
  30. package/dist/core/providers.js +17 -0
  31. package/dist/core/providers.js.map +1 -1
  32. package/dist/core/replay.js +14 -0
  33. package/dist/core/replay.js.map +1 -1
  34. package/dist/core/review.d.ts +60 -0
  35. package/dist/core/review.js +121 -0
  36. package/dist/core/review.js.map +1 -0
  37. package/dist/core/setup.d.ts +13 -0
  38. package/dist/core/setup.js +17 -1
  39. package/dist/core/setup.js.map +1 -1
  40. package/dist/core/turn-wait.d.ts +20 -0
  41. package/dist/core/turn-wait.js +39 -0
  42. package/dist/core/turn-wait.js.map +1 -0
  43. package/dist/core/usage.d.ts +7 -1
  44. package/dist/core/usage.js +11 -3
  45. package/dist/core/usage.js.map +1 -1
  46. package/dist/daemon/client.d.ts +46 -0
  47. package/dist/daemon/client.js +34 -0
  48. package/dist/daemon/client.js.map +1 -1
  49. package/dist/daemon/council.d.ts +98 -0
  50. package/dist/daemon/council.js +248 -0
  51. package/dist/daemon/council.js.map +1 -0
  52. package/dist/daemon/proof.d.ts +6 -0
  53. package/dist/daemon/proof.js +22 -3
  54. package/dist/daemon/proof.js.map +1 -1
  55. package/dist/daemon/push.js +7 -0
  56. package/dist/daemon/push.js.map +1 -1
  57. package/dist/daemon/review.d.ts +89 -0
  58. package/dist/daemon/review.js +136 -0
  59. package/dist/daemon/review.js.map +1 -0
  60. package/dist/daemon/routes/council.d.ts +4 -0
  61. package/dist/daemon/routes/council.js +29 -0
  62. package/dist/daemon/routes/council.js.map +1 -0
  63. package/dist/daemon/routes/review.d.ts +4 -0
  64. package/dist/daemon/routes/review.js +40 -0
  65. package/dist/daemon/routes/review.js.map +1 -0
  66. package/dist/daemon/routes/routing.js +2 -1
  67. package/dist/daemon/routes/routing.js.map +1 -1
  68. package/dist/daemon/routes/setup.d.ts +2 -1
  69. package/dist/daemon/routes/setup.js +13 -5
  70. package/dist/daemon/routes/setup.js.map +1 -1
  71. package/dist/daemon/runtime/accounting.d.ts +6 -0
  72. package/dist/daemon/runtime/accounting.js +37 -1
  73. package/dist/daemon/runtime/accounting.js.map +1 -1
  74. package/dist/daemon/runtime/briefings.d.ts +8 -3
  75. package/dist/daemon/runtime/briefings.js +26 -14
  76. package/dist/daemon/runtime/briefings.js.map +1 -1
  77. package/dist/daemon/runtime.d.ts +40 -1
  78. package/dist/daemon/runtime.js +171 -2
  79. package/dist/daemon/runtime.js.map +1 -1
  80. package/dist/daemon/server.js +5 -1
  81. package/dist/daemon/server.js.map +1 -1
  82. package/dist/providers/agent.js +3 -0
  83. package/dist/providers/agent.js.map +1 -1
  84. package/dist/providers/claude/adapter.d.ts +3 -0
  85. package/dist/providers/claude/adapter.js +20 -1
  86. package/dist/providers/claude/adapter.js.map +1 -1
  87. package/dist/types.d.ts +19 -1
  88. package/dist/types.js.map +1 -1
  89. package/dist/web/app.css +44 -0
  90. package/dist/web/app.js +143 -12
  91. package/dist/web/app.js.map +3 -3
  92. package/docs/release-notes/v1.2.0.md +48 -0
  93. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"briefings.js","sourceRoot":"","sources":["../../../src/daemon/runtime/briefings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"briefings.js","sourceRoot":"","sources":["../../../src/daemon/runtime/briefings.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { NativeUsage } from "./runtime/native-usage.js";
7
7
  import { OrchestraEngine, type OrchestraCoordinator } from "../core/orchestra.js";
8
8
  import { CrewEngine } from "../core/crew.js";
9
9
  import { type Loop } from "../core/loops.js";
10
+ import { type AutoPolicy } from "../core/auto-policy.js";
10
11
  import { QuotaRelay } from "./runtime/relay.js";
11
12
  import { ProofRunner } from "./proof.js";
12
13
  import { NightShift } from "./shift.js";
@@ -29,6 +30,9 @@ import { ServerFrame, TeamBrainHook } from './runtime-support.js';
29
30
  import { type TurnOptions, type TurnResult } from './runtime/turns.js';
30
31
  import { ContinuityEngine } from "../core/continuity/engine.js";
31
32
  import { HarnessMonitor } from "../core/continuity/capabilities.js";
33
+ import { type ReviewTarget } from "../core/review.js";
34
+ import { ReviewRunner } from "./review.js";
35
+ import { CouncilRunner } from "./council.js";
32
36
  import { type LiveFrame } from "../providers/live.js";
33
37
  import { type AgentCheck } from "../adapters/base.js";
34
38
  import type { LiveText } from "../types.js";
@@ -58,8 +62,12 @@ export declare class ProjectRuntime {
58
62
  readonly relay: QuotaRelay;
59
63
  /** Proof: checks an agent's "done" against what ran and a clean re-run of the tests. */
60
64
  readonly proofs: ProofRunner;
65
+ /** Loom's Auto policy, registered by project id for this project's agents (core/auto-policy.ts). */
66
+ private readonly unregisterAutoPolicy;
61
67
  /** Night Shift: a line of tasks run while you're away, then one report (daemon/shift.ts). */
62
68
  readonly shifts: NightShift;
69
+ readonly reviews: ReviewRunner;
70
+ readonly councils: CouncilRunner;
63
71
  /** Adapter kinds installed on this machine, probed once at open. */
64
72
  private installedKinds;
65
73
  /** Memory as units — see core/brain.ts. Reads and writes through `log`. */
@@ -739,6 +747,11 @@ export declare class ProjectRuntime {
739
747
  * project, a dropped table. Said at once, in its chat and as a push; with
740
748
  * shield.auto "stop" (the default on a night shift) the turn is stopped too.
741
749
  */
750
+ /** Agents whose last turn failed on sign-in, and the message — until a turn succeeds (#251). */
751
+ private readonly signedOutAgents;
752
+ private noteSignIn;
753
+ /** What status says about an agent's sign-in: a real failure beats the CLI's own (cached) check. */
754
+ private signInState;
742
755
  private shield;
743
756
  /** The loop card's buttons: stop the turn, nudge the agent, or hand the task to another agent. */
744
757
  actOnLoop(chat: string, agentId: string, action: "stop" | "nudge" | "handoff", to?: string, loop?: Loop): Promise<{
@@ -814,7 +827,7 @@ export declare class ProjectRuntime {
814
827
  * each child is a real CLI process with its own model calls. The cap is per
815
828
  * project rather than global so one busy project can't starve the others.
816
829
  */
817
- private static readonly MAX_CONCURRENT_SUBTASKS;
830
+ static readonly MAX_CONCURRENT_SUBTASKS = 4;
818
831
  /** In-flight subtasks, by the id minted when they started. */
819
832
  private subtasks;
820
833
  /** Subtasks currently running, for the status payload and the cap. */
@@ -849,10 +862,34 @@ export declare class ProjectRuntime {
849
862
  agentId: string;
850
863
  task: string;
851
864
  chat?: string;
865
+ /** Investigate and report, change nothing: the agent's own plan mode where it has one, and said in the brief either way (a review). */
866
+ readOnly?: boolean;
867
+ /** Told once the child's turn has ended, however it ended. */
868
+ onSettled?: (outcome: {
869
+ ok: boolean;
870
+ message?: string;
871
+ }) => void;
852
872
  }): Promise<{
853
873
  id: string;
854
874
  agentId: string;
855
875
  }>;
876
+ /**
877
+ * `loom review`: these agents read the same thing at once, read-only, off
878
+ * the baton (daemon/review.ts). The target is a file, free text, or —
879
+ * by default — the uncommitted changes.
880
+ */
881
+ startReview(input: {
882
+ agents: string[];
883
+ file?: string;
884
+ text?: string;
885
+ focus?: string;
886
+ chat?: string;
887
+ }): Promise<import("./review.js").ReviewState>;
888
+ /** What a review reads: a file, free text, or the uncommitted changes. Throws when there's nothing to read. */
889
+ reviewTarget(input: {
890
+ file?: string;
891
+ text?: string;
892
+ }): ReviewTarget;
856
893
  private subtaskBriefing;
857
894
  private defaultAdapterId;
858
895
  private consumePendingBriefing;
@@ -931,6 +968,8 @@ export declare class ProjectRuntime {
931
968
  * at the ceiling. Plan mode can't be known when an agent is built, so
932
969
  * `bypassRequiresPlan` treats it as off — the stricter reading.
933
970
  */
971
+ /** Loom's Auto policy for this project, read live by agents (core/auto-policy.ts). */
972
+ autoPolicy(): AutoPolicy;
934
973
  private policyOptions;
935
974
  /** Phase 5: this project is a runner's workspace for one goal (D70). */
936
975
  runnerMode: boolean;
@@ -1,4 +1,4 @@
1
- import { execSync } from "node:child_process";
1
+ import { execFileSync, execSync } from "node:child_process";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { createAgent, isWithdrawnKind, knownAgentKinds, tierForKind } from "../adapters/index.js";
@@ -20,6 +20,11 @@ import { OrchestraEngine } from "../core/orchestra.js";
20
20
  import { CrewEngine } from "../core/crew.js";
21
21
  import { LoopWatch, nudgeText } from "../core/loops.js";
22
22
  import { commandOf, dangerOf } from "../core/shield.js";
23
+ import { registerAutoPolicy } from "../core/auto-policy.js";
24
+ import { detectTestCommand } from "../core/proof.js";
25
+ import { knownAuth, signInCommand } from "../core/setup.js";
26
+ /** What a CLI says when it isn't signed in. */
27
+ const SIGNED_OUT = /\b(?:not signed in|not logged in|please (?:run )?\S*\s*\/?login|run `?[\w-]+ (?:auth )?login|sign in (?:first|again)|authentication (?:required|failed)|unauthori[sz]ed|invalid (?:api key|credentials)|401\b)/i;
23
28
  import { QuotaRelay } from "./runtime/relay.js";
24
29
  import { ProofRunner } from "./proof.js";
25
30
  import { NightShift } from "./shift.js";
@@ -50,6 +55,9 @@ import { ContinuityEngine } from "../core/continuity/engine.js";
50
55
  import { ContinuityError } from "../core/continuity/contracts.js";
51
56
  import { HarnessMonitor, isNativeKind } from "../core/continuity/capabilities.js";
52
57
  import { ProviderAgent } from "../providers/agent.js";
58
+ import { READ_ONLY_RULE } from "../core/review.js";
59
+ import { ReviewRunner } from "./review.js";
60
+ import { CouncilRunner } from "./council.js";
53
61
  import { LiveDeltaThrottle } from "../providers/live.js";
54
62
  import { AdapterBase } from "../adapters/base.js";
55
63
  export { BudgetExceededError, CLOCK_TICK_MS, LOOM_ASK_TIMEOUT_MESSAGE, LOOM_ASK_TIMEOUT_MS, LoomAskTimeoutError, QuarantinedError, activityLine, planModeBriefing, relativeToProject, withLoomAskTimeout } from './runtime-support.js';
@@ -112,8 +120,12 @@ export class ProjectRuntime {
112
120
  relay;
113
121
  /** Proof: checks an agent's "done" against what ran and a clean re-run of the tests. */
114
122
  proofs;
123
+ /** Loom's Auto policy, registered by project id for this project's agents (core/auto-policy.ts). */
124
+ unregisterAutoPolicy;
115
125
  /** Night Shift: a line of tasks run while you're away, then one report (daemon/shift.ts). */
116
126
  shifts;
127
+ reviews;
128
+ councils;
117
129
  /** Adapter kinds installed on this machine, probed once at open. */
118
130
  installedKinds = [];
119
131
  /** Memory as units — see core/brain.ts. Reads and writes through `log`. */
@@ -357,6 +369,7 @@ export class ProjectRuntime {
357
369
  append: (e) => (this.closed ? { ...e, id: -1, ts: Date.now() } : this.log.append(e)),
358
370
  warn: (message, detail) => logbook.warn("relay", message, String(detail), this.info.id),
359
371
  });
372
+ this.unregisterAutoPolicy = registerAutoPolicy(info.id, () => this.autoPolicy());
360
373
  this.proofs = new ProofRunner({
361
374
  projectId: info.id,
362
375
  dir: info.dir,
@@ -384,6 +397,61 @@ export class ProjectRuntime {
384
397
  append: (e) => (this.closed ? { ...e, id: -1, ts: Date.now() } : this.log.append(e)),
385
398
  warn: (message, detail) => logbook.warn("shift", message, String(detail), this.info.id),
386
399
  });
400
+ this.reviews = new ReviewRunner({
401
+ hasAgent: (id) => this.config.agents.some((a) => a.id === id),
402
+ canReview: (id) => {
403
+ const cfg = this.config.agents.find((a) => a.id === id);
404
+ return Boolean(cfg && cfg.enabled !== false && this.agents.has(id) && isAdapter(this.agent(id)));
405
+ },
406
+ holder: () => this.baton.holder() ?? undefined,
407
+ createChat: (title) => this.createChat(title),
408
+ spawn: (parent, opts) => this.spawnSubAgent(parent, opts),
409
+ list: (opts) => this.log.list(opts),
410
+ append: (e) => (this.closed ? { ...e, id: -1, ts: Date.now() } : this.log.append(e)),
411
+ // an accepted finding is a decision like `loom decision`: the event, and the memory every briefing carries
412
+ decide: (text) => {
413
+ if (this.closed)
414
+ return;
415
+ const event = this.log.append({ kind: "decision", payload: { text, source: "review" } });
416
+ this.brain.add({ kind: "decision", text, provenance: { agentId: "user", eventId: event.id, ts: event.ts } });
417
+ },
418
+ maxReviewers: ProjectRuntime.MAX_CONCURRENT_SUBTASKS,
419
+ });
420
+ this.councils = new CouncilRunner({
421
+ hasAgent: (id) => this.config.agents.some((a) => a.id === id),
422
+ canWrite: (id) => {
423
+ const cfg = this.config.agents.find((a) => a.id === id);
424
+ if (!cfg || cfg.enabled === false || !this.agents.has(id) || !isAdapter(this.agent(id)))
425
+ return false;
426
+ return cfg.kind !== "model" || Boolean(cfg.options?.write); // a model agent without write only answers
427
+ },
428
+ createChat: (title) => this.createChat(title),
429
+ holder: () => this.baton.holder() ?? undefined,
430
+ handoff: (to) => this.handoff(to, { source: "route" }),
431
+ send: (agentId, text, opts) => this.sendMessage(text, agentId, { chat: opts.chat, plan: opts.plan, source: "route" }),
432
+ interrupt: (chat) => this.interrupt({ chat, source: "route" }),
433
+ checkReviewers: (ids) => this.reviews.check(ids),
434
+ startReview: (input) => this.reviews.start(input),
435
+ reviewStatus: (id) => this.reviews.status(id),
436
+ diffTarget: () => this.reviewTarget({}),
437
+ decide: (id, decision, note) => void this.reviews.decide(id, decision, note),
438
+ // the turn may already be being checked (Proof checks a reply that claims something by itself): use that one
439
+ prove: async (chat) => {
440
+ const t = this.proofs.turn(chat);
441
+ if (!t)
442
+ return null;
443
+ for (let i = 0; i < 1200 && this.proofs.busy; i++)
444
+ await new Promise((r) => setTimeout(r, 250));
445
+ const had = this.log.list({ kinds: ["proof"], chat }).reverse().find((e) => e.payload.turn?.done === t.done.id);
446
+ if (had)
447
+ return { verdict: String(had.payload.verdict), headline: String(had.payload.headline) };
448
+ return this.proofs.prove(chat);
449
+ },
450
+ list: (opts) => this.log.list(opts),
451
+ append: (e) => (this.closed ? { ...e, id: -1, ts: Date.now() } : this.log.append(e)),
452
+ lastId: () => this.log.list({ limit: 1 }).at(-1)?.id ?? 0,
453
+ warn: (message, detail) => logbook.warn("council", message, String(detail), this.info.id),
454
+ });
387
455
  this.crews = new CrewEngine({
388
456
  projectId: info.id,
389
457
  projectName: info.name,
@@ -1976,6 +2044,7 @@ export class ProjectRuntime {
1976
2044
  afterAgentEvent(event) {
1977
2045
  this.trackCost(event);
1978
2046
  this.shield(event);
2047
+ this.noteSignIn(event);
1979
2048
  const loop = this.loops.observe(event);
1980
2049
  if (loop)
1981
2050
  void this.onLoop(loop).catch((err) => logbook.warn("loops", "couldn't act on a loop", String(err), this.info.id));
@@ -2420,6 +2489,29 @@ export class ProjectRuntime {
2420
2489
  * project, a dropped table. Said at once, in its chat and as a push; with
2421
2490
  * shield.auto "stop" (the default on a night shift) the turn is stopped too.
2422
2491
  */
2492
+ /** Agents whose last turn failed on sign-in, and the message — until a turn succeeds (#251). */
2493
+ signedOutAgents = new Map();
2494
+ noteSignIn(event) {
2495
+ if (!event.agentId)
2496
+ return;
2497
+ if (event.kind === "run_complete" && !event.payload.error) {
2498
+ this.signedOutAgents.delete(event.agentId);
2499
+ return;
2500
+ }
2501
+ const message = event.kind === "error" ? String(event.payload.message ?? "") : event.kind === "run_complete" ? String(event.payload.error ?? "") : "";
2502
+ if (message && SIGNED_OUT.test(message))
2503
+ this.signedOutAgents.set(event.agentId, message.split("\n")[0].slice(0, 200));
2504
+ }
2505
+ /** What status says about an agent's sign-in: a real failure beats the CLI's own (cached) check. */
2506
+ signInState(agentId, kind) {
2507
+ const learned = this.signedOutAgents.get(agentId);
2508
+ if (learned)
2509
+ return { signedOut: `${learned}${signInCommand(kind) ? ` — ${signInCommand(kind)}` : ""}` };
2510
+ if (!signInCommand(kind) || process.env.LOOM_NO_AUTH_PROBE)
2511
+ return {};
2512
+ const auth = knownAuth(kind);
2513
+ return auth?.authed === false ? { signedOut: `${auth.detail ?? "not signed in"} — ${signInCommand(kind)}` } : {};
2514
+ }
2423
2515
  shield(event) {
2424
2516
  if (!event.agentId)
2425
2517
  return;
@@ -2697,25 +2789,42 @@ export class ProjectRuntime {
2697
2789
  });
2698
2790
  await this.ensureStarted(opts.agentId);
2699
2791
  const mcp = child.capabilities.mcp ? writeMcpSession(this.healthyMcps()) : null;
2792
+ const brief = this.subtaskBriefing(parentAgentId, opts.agentId, task);
2700
2793
  const input = {
2701
2794
  text: task,
2702
2795
  chat,
2703
- briefing: this.subtaskBriefing(parentAgentId, opts.agentId, task),
2796
+ briefing: opts.readOnly ? `${brief}\n\n${READ_ONLY_RULE}` : brief,
2797
+ ...(opts.readOnly && child instanceof ProviderAgent ? { interactionMode: "plan" } : {}),
2704
2798
  ...(mcp ? { mcp: { configPath: mcp.configPath, servers: mcp.servers } } : {}),
2705
2799
  };
2800
+ const startedAt = Date.now();
2801
+ // the child's reply belongs to the chat it was asked in, not wherever it last talked
2802
+ this.turns.turnChat.set(opts.agentId, chat);
2706
2803
  void child
2707
2804
  .send(input)
2708
2805
  .then(() => {
2709
2806
  this.subtasks.delete(id);
2807
+ // an adapter can report a failed turn as an error event and still resolve: that subtask
2808
+ // failed — it isn't "done" (#247)
2809
+ const failed = this.log.list({ chat, agentId: opts.agentId, kinds: ["error", "run_complete"], sinceTs: startedAt })
2810
+ .reverse().find((e) => e.kind === "error" || Boolean(e.payload.error));
2811
+ if (failed) {
2812
+ const message = String(failed.payload.message ?? failed.payload.error ?? "the turn failed").slice(0, 500);
2813
+ this.appendIfOpen({ kind: "subtask_failed", agentId: opts.agentId, chat, payload: { subtaskId: id, parent: parentAgentId, task, message } });
2814
+ opts.onSettled?.({ ok: false, message });
2815
+ return;
2816
+ }
2710
2817
  this.appendIfOpen({
2711
2818
  kind: "subtask_done",
2712
2819
  agentId: opts.agentId,
2713
2820
  chat,
2714
2821
  payload: { subtaskId: id, parent: parentAgentId, task },
2715
2822
  });
2823
+ opts.onSettled?.({ ok: true });
2716
2824
  })
2717
2825
  .catch((err) => {
2718
2826
  this.subtasks.delete(id);
2827
+ opts.onSettled?.({ ok: false, message: String(err instanceof Error ? err.message : err) });
2719
2828
  this.appendIfOpen({
2720
2829
  kind: "subtask_failed",
2721
2830
  agentId: opts.agentId,
@@ -2731,6 +2840,51 @@ export class ProjectRuntime {
2731
2840
  .finally(() => mcp?.cleanup());
2732
2841
  return { id, agentId: opts.agentId };
2733
2842
  }
2843
+ /**
2844
+ * `loom review`: these agents read the same thing at once, read-only, off
2845
+ * the baton (daemon/review.ts). The target is a file, free text, or —
2846
+ * by default — the uncommitted changes.
2847
+ */
2848
+ async startReview(input) {
2849
+ this.reviews.check(input.agents); // who, before reading any diff
2850
+ const target = this.reviewTarget(input);
2851
+ return this.reviews.start({ agents: input.agents, target, ...(input.focus ? { focus: input.focus } : {}), ...(input.chat ? { chat: input.chat } : {}) });
2852
+ }
2853
+ /** What a review reads: a file, free text, or the uncommitted changes. Throws when there's nothing to read. */
2854
+ reviewTarget(input) {
2855
+ let target;
2856
+ if (input.file?.trim()) {
2857
+ const rel = path.relative(this.info.dir, path.resolve(this.info.dir, input.file.trim()));
2858
+ if (rel.startsWith("..") || path.isAbsolute(rel))
2859
+ throw new Error(`${input.file} is outside the project`);
2860
+ if (!fs.existsSync(path.join(this.info.dir, rel)))
2861
+ throw new Error(`no file ${rel} in this project`);
2862
+ target = { kind: "file", file: rel.split(path.sep).join("/") };
2863
+ }
2864
+ else if (input.text?.trim()) {
2865
+ target = { kind: "text", text: input.text.trim() };
2866
+ }
2867
+ else {
2868
+ const git = (...args) => execFileSync("git", args, { cwd: this.info.dir, encoding: "utf8", maxBuffer: 32 * 1024 * 1024, timeout: 15_000, stdio: ["ignore", "pipe", "ignore"] });
2869
+ let diff = "", untracked = [];
2870
+ try {
2871
+ try {
2872
+ diff = git("diff", "HEAD");
2873
+ }
2874
+ catch {
2875
+ diff = git("diff");
2876
+ } // no commits yet
2877
+ untracked = git("ls-files", "--others", "--exclude-standard").split("\n").filter(Boolean);
2878
+ }
2879
+ catch {
2880
+ throw new Error("--diff needs a git repository — review a --file instead");
2881
+ }
2882
+ if (!diff.trim() && !untracked.length)
2883
+ throw new Error("there are no uncommitted changes to review — name a --file instead");
2884
+ target = { kind: "diff", diff, untracked };
2885
+ }
2886
+ return target;
2887
+ }
2734
2888
  subtaskBriefing(parent, childId, task) { return this.briefings.subtaskBriefing(parent, childId, task); }
2735
2889
  defaultAdapterId() {
2736
2890
  const cfg = (this.config.defaultAgent &&
@@ -2984,6 +3138,8 @@ export class ProjectRuntime {
2984
3138
  // which chat that turn is in, so a client shows Stop only where it applies
2985
3139
  ...(isAdapter(live) && (live.busy() || this.turns.busySince.has(cfg.id)) ? { chat: this.turns.turnChat.get(cfg.id) ?? MAIN_CHAT } : {}),
2986
3140
  holdsBaton: holder === cfg.id,
3141
+ ...this.signInState(cfg.id, cfg.kind),
3142
+ ...(cfg.kind === "model" && !cfg.options?.write ? { readOnly: true } : {}),
2987
3143
  model,
2988
3144
  permissions: permissionFor(cfg.kind, cfg.options),
2989
3145
  enabled: true,
@@ -3131,6 +3287,17 @@ export class ProjectRuntime {
3131
3287
  * at the ceiling. Plan mode can't be known when an agent is built, so
3132
3288
  * `bypassRequiresPlan` treats it as off — the stricter reading.
3133
3289
  */
3290
+ /** Loom's Auto policy for this project, read live by agents (core/auto-policy.ts). */
3291
+ autoPolicy() {
3292
+ const dir = this.info.dir;
3293
+ const test = this.config.proof?.testCommand ?? detectTestCommand(dir);
3294
+ return {
3295
+ projectDir: dir,
3296
+ readPaths: (this.config.readPaths ?? []).filter((p) => typeof p === "string" && p.trim()).map((p) => path.resolve(dir, p)),
3297
+ // the project's own test command always runs: an agent has to be able to check its work
3298
+ allow: [...(this.config.permissions?.allow ?? []).filter((a) => typeof a === "string"), ...(test ? [test] : [])],
3299
+ };
3300
+ }
3134
3301
  policyOptions(cfg) {
3135
3302
  const opts = { ...(cfg.options ?? {}) };
3136
3303
  if (this.runnerMode) {
@@ -3252,9 +3419,11 @@ export class ProjectRuntime {
3252
3419
  };
3253
3420
  }
3254
3421
  async close() {
3422
+ this.unregisterAutoPolicy();
3255
3423
  await this.orchestra.shutdown().catch(() => { });
3256
3424
  this.relay.stop();
3257
3425
  this.shifts.close();
3426
+ this.councils.close();
3258
3427
  await this.crews.shutdown().catch(() => { });
3259
3428
  this.closed = true;
3260
3429
  this.harnesses.stop();