@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.
- package/CHANGELOG.md +61 -0
- package/README.md +31 -10
- package/dist/adapters/antigravity-cli.d.ts +2 -0
- package/dist/adapters/antigravity-cli.js +27 -4
- package/dist/adapters/antigravity-cli.js.map +1 -1
- package/dist/adapters/model.js +1 -1
- package/dist/adapters/model.js.map +1 -1
- package/dist/adapters/opencode.d.ts +4 -0
- package/dist/adapters/opencode.js +18 -0
- package/dist/adapters/opencode.js.map +1 -1
- package/dist/cli/doctor.d.ts +38 -1
- package/dist/cli/doctor.js +157 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.js +357 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui.js +11 -7
- package/dist/cli/ui.js.map +1 -1
- package/dist/core/auto-policy.d.ts +46 -0
- package/dist/core/auto-policy.js +181 -0
- package/dist/core/auto-policy.js.map +1 -0
- package/dist/core/council.d.ts +55 -0
- package/dist/core/council.js +73 -0
- package/dist/core/council.js.map +1 -0
- package/dist/core/crew-protocol.js +4 -1
- package/dist/core/crew-protocol.js.map +1 -1
- package/dist/core/crew.d.ts +13 -1
- package/dist/core/crew.js +40 -6
- package/dist/core/crew.js.map +1 -1
- package/dist/core/digest.d.ts +2 -0
- package/dist/core/digest.js +9 -0
- package/dist/core/digest.js.map +1 -1
- package/dist/core/loops.js +22 -2
- package/dist/core/loops.js.map +1 -1
- package/dist/core/orchestra.d.ts +16 -0
- package/dist/core/orchestra.js +45 -2
- package/dist/core/orchestra.js.map +1 -1
- package/dist/core/permissions.js +2 -2
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/prices.d.ts +66 -0
- package/dist/core/prices.js +109 -0
- package/dist/core/prices.js.map +1 -0
- package/dist/core/proof.d.ts +13 -1
- package/dist/core/proof.js +89 -17
- package/dist/core/proof.js.map +1 -1
- package/dist/core/providers.d.ts +13 -0
- package/dist/core/providers.js +17 -0
- package/dist/core/providers.js.map +1 -1
- package/dist/core/replay.js +14 -0
- package/dist/core/replay.js.map +1 -1
- package/dist/core/review.d.ts +60 -0
- package/dist/core/review.js +121 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/routes.js +14 -0
- package/dist/core/routes.js.map +1 -1
- package/dist/core/setup.d.ts +27 -0
- package/dist/core/setup.js +39 -7
- package/dist/core/setup.js.map +1 -1
- package/dist/core/shield.js +7 -3
- package/dist/core/shield.js.map +1 -1
- package/dist/core/shift.d.ts +2 -0
- package/dist/core/shift.js +14 -2
- package/dist/core/shift.js.map +1 -1
- package/dist/core/turn-wait.d.ts +20 -0
- package/dist/core/turn-wait.js +39 -0
- package/dist/core/turn-wait.js.map +1 -0
- package/dist/core/usage.d.ts +7 -1
- package/dist/core/usage.js +11 -3
- package/dist/core/usage.js.map +1 -1
- package/dist/daemon/client.d.ts +60 -1
- package/dist/daemon/client.js +40 -1
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/council.d.ts +98 -0
- package/dist/daemon/council.js +254 -0
- package/dist/daemon/council.js.map +1 -0
- package/dist/daemon/proof.d.ts +6 -0
- package/dist/daemon/proof.js +32 -9
- package/dist/daemon/proof.js.map +1 -1
- package/dist/daemon/push.js +7 -0
- package/dist/daemon/push.js.map +1 -1
- package/dist/daemon/review.d.ts +95 -0
- package/dist/daemon/review.js +154 -0
- package/dist/daemon/review.js.map +1 -0
- package/dist/daemon/routes/council.d.ts +4 -0
- package/dist/daemon/routes/council.js +29 -0
- package/dist/daemon/routes/council.js.map +1 -0
- package/dist/daemon/routes/crews.js +2 -0
- package/dist/daemon/routes/crews.js.map +1 -1
- package/dist/daemon/routes/messages.js +8 -2
- package/dist/daemon/routes/messages.js.map +1 -1
- package/dist/daemon/routes/review.d.ts +4 -0
- package/dist/daemon/routes/review.js +40 -0
- package/dist/daemon/routes/review.js.map +1 -0
- package/dist/daemon/routes/routing.js +2 -1
- package/dist/daemon/routes/routing.js.map +1 -1
- package/dist/daemon/routes/setup.d.ts +2 -1
- package/dist/daemon/routes/setup.js +22 -6
- package/dist/daemon/routes/setup.js.map +1 -1
- package/dist/daemon/runtime/accounting.d.ts +6 -0
- package/dist/daemon/runtime/accounting.js +37 -1
- package/dist/daemon/runtime/accounting.js.map +1 -1
- package/dist/daemon/runtime/briefings.d.ts +8 -3
- package/dist/daemon/runtime/briefings.js +26 -14
- package/dist/daemon/runtime/briefings.js.map +1 -1
- package/dist/daemon/runtime/queue.d.ts +7 -0
- package/dist/daemon/runtime/queue.js +13 -1
- package/dist/daemon/runtime/queue.js.map +1 -1
- package/dist/daemon/runtime/relay.d.ts +2 -0
- package/dist/daemon/runtime/relay.js +7 -0
- package/dist/daemon/runtime/relay.js.map +1 -1
- package/dist/daemon/runtime/turns.d.ts +2 -0
- package/dist/daemon/runtime/turns.js +1 -0
- package/dist/daemon/runtime/turns.js.map +1 -1
- package/dist/daemon/runtime-support.js +1 -1
- package/dist/daemon/runtime-support.js.map +1 -1
- package/dist/daemon/runtime.d.ts +65 -3
- package/dist/daemon/runtime.js +238 -5
- package/dist/daemon/runtime.js.map +1 -1
- package/dist/daemon/server.js +5 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/shift.js +1 -1
- package/dist/daemon/shift.js.map +1 -1
- package/dist/providers/agent.js +6 -0
- package/dist/providers/agent.js.map +1 -1
- package/dist/providers/claude/adapter.d.ts +3 -0
- package/dist/providers/claude/adapter.js +20 -1
- package/dist/providers/claude/adapter.js.map +1 -1
- package/dist/types.d.ts +31 -1
- package/dist/types.js.map +1 -1
- package/dist/web/app.css +51 -0
- package/dist/web/app.js +172 -18
- package/dist/web/app.js.map +3 -3
- package/docs/release-notes/v1.2.0.md +48 -0
- package/docs/release-notes/v1.2.1.md +40 -0
- package/package.json +1 -1
package/dist/cli/ui.js
CHANGED
|
@@ -117,7 +117,9 @@ export function formatEvent(e) {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
export function formatProjectRow(p) {
|
|
120
|
-
|
|
120
|
+
// an agent mid-turn is working, whatever the last event was (#252)
|
|
121
|
+
const working = [...(p.agents ?? []).filter((a) => a.busy).map((a) => a.id), ...(p.activity ?? [])];
|
|
122
|
+
const flag = p.needsInput ? pc.yellow("● needs input") : working.length ? pc.cyan(`◐ working (${working.join(", ")})`) : pc.dim("○ idle");
|
|
121
123
|
const holder = p.holder ? agentColor(p.holder)(p.holder) : pc.dim("—");
|
|
122
124
|
const last = p.lastEvent
|
|
123
125
|
? pc.dim(`${timeShort(p.lastEvent.ts)} ${p.lastEvent.kind}`)
|
|
@@ -129,20 +131,22 @@ export function formatProjectRow(p) {
|
|
|
129
131
|
const cost = p.costUsd && p.costUsd > 0 ? pc.dim(` ${fmtUsd(p.costUsd)}`) : "";
|
|
130
132
|
return `${flag} ${pc.bold(p.name)} ${pc.dim(`(${p.id})`)} baton: ${holder}${route}${cost} ${last}`;
|
|
131
133
|
}
|
|
134
|
+
/** Installed and signed in is ready; installed and signed out isn't — it would fail its first turn (#251). */
|
|
135
|
+
const readyMark = (a) => (a.available && !a.signedOut ? pc.green("●") : pc.red("○"));
|
|
136
|
+
const signInNote = (a) => (a.signedOut ? pc.red(` not signed in: ${a.signedOut}`) : "");
|
|
132
137
|
export function formatAgentRow(a) {
|
|
133
138
|
const paint = agentColor(a.id);
|
|
134
139
|
const baton = a.holdsBaton ? pc.magenta(" ⟵ baton") : "";
|
|
135
|
-
const avail = a.available ? pc.green("●") : pc.red("○");
|
|
136
140
|
const busy = a.busy ? pc.yellow(" (busy)") : "";
|
|
137
|
-
const tier = a.tier === "bridge" ? pc.dim(" [bridge]") : "";
|
|
138
|
-
return ` ${
|
|
141
|
+
const tier = a.tier === "bridge" ? pc.dim(" [bridge]") : a.readOnly ? pc.dim(" [read-only]") : "";
|
|
142
|
+
return ` ${readyMark(a)} ${paint(pc.bold(a.id))} ${pc.dim(a.kind)} — ${a.role}${tier}${busy}${baton}${signInNote(a)}`;
|
|
139
143
|
}
|
|
140
144
|
/** A complete agent roster entry for `loom agents`. */
|
|
141
145
|
export function formatAgentRosterRow(a) {
|
|
142
146
|
const paint = agentColor(a.id);
|
|
143
|
-
const avail = a.available ? pc.green("●") : pc.red("○");
|
|
144
147
|
const model = a.model || "default";
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
// a read-only model agent can answer, not change files — say that, not "can hold" (#257)
|
|
149
|
+
const baton = a.tier !== "adapter" ? pc.dim("cannot hold") : a.readOnly ? pc.yellow("read-only (answers, can't edit)") : pc.green("can hold");
|
|
150
|
+
return ` ${readyMark(a)} ${paint(pc.bold(a.id))} ${pc.dim(a.kind)} role: ${a.role} model: ${model} baton: ${baton}${signInNote(a)}`;
|
|
147
151
|
}
|
|
148
152
|
//# sourceMappingURL=ui.js.map
|
package/dist/cli/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Loom's "Auto" lets an agent do, for the CLIs whose own Auto stops at
|
|
3
|
+
* file edits (Claude Code's acceptEdits asks about every other tool, and Auto
|
|
4
|
+
* never stops to ask — so before this, Auto refused every command that wasn't
|
|
5
|
+
* read-only, and an agent could never run its own tests).
|
|
6
|
+
*
|
|
7
|
+
* Auto means the same thing it means for Codex (workspace-write): edit files
|
|
8
|
+
* and run commands **inside the project**. Refused, with the rule that fired:
|
|
9
|
+
*
|
|
10
|
+
* - a path outside the project (unless it's one of the project's readPaths —
|
|
11
|
+
* sibling folders an agent may read, never write),
|
|
12
|
+
* - a command that can't be taken back (the Blast-Radius Shield's list),
|
|
13
|
+
* - an MCP tool nobody allowed.
|
|
14
|
+
*
|
|
15
|
+
* `permissions.allow` in .loom/config.json allows more: a command prefix
|
|
16
|
+
* ("docker compose up"), a tool name ("WebFetch"), or a glob ("mcp__github__*").
|
|
17
|
+
* It never overrides the destructive-command rule. Pure.
|
|
18
|
+
*/
|
|
19
|
+
export interface AutoPolicy {
|
|
20
|
+
projectDir: string;
|
|
21
|
+
/** Extra folders the agent may read (absolute). */
|
|
22
|
+
readPaths: string[];
|
|
23
|
+
/** Commands, tools or globs explicitly allowed (permissions.allow, plus the project's test command). */
|
|
24
|
+
allow: string[];
|
|
25
|
+
}
|
|
26
|
+
export declare function registerAutoPolicy(projectId: string, get: () => AutoPolicy): () => void;
|
|
27
|
+
export declare function autoPolicyFor(projectId: string | undefined): AutoPolicy | undefined;
|
|
28
|
+
/** The policy as it applies in `cwd` — an agent's own worktree is its project; the main checkout stays readable. */
|
|
29
|
+
export declare function policyIn(policy: AutoPolicy, cwd: string | undefined): AutoPolicy;
|
|
30
|
+
export type AutoDecision = {
|
|
31
|
+
allow: true;
|
|
32
|
+
rule?: string;
|
|
33
|
+
} | {
|
|
34
|
+
allow: false;
|
|
35
|
+
rule: string;
|
|
36
|
+
detail: string;
|
|
37
|
+
};
|
|
38
|
+
/** Shell words, quotes respected: "a b" and 'a b' are one word; \ escapes a space. */
|
|
39
|
+
export declare function shellWords(command: string): string[];
|
|
40
|
+
/** Glob-ish match: "*" anywhere, otherwise a prefix on a word boundary ("npm test" allows "npm test -- --run"). */
|
|
41
|
+
export declare function allowMatches(pattern: string, value: string): boolean;
|
|
42
|
+
export declare function decideAuto(tool: string, input: Record<string, unknown>, policy: AutoPolicy): AutoDecision;
|
|
43
|
+
/** The refusal the agent reads: what fired, on what, and how to allow it. */
|
|
44
|
+
export declare function refusalText(d: Extract<AutoDecision, {
|
|
45
|
+
allow: false;
|
|
46
|
+
}>): string;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Loom's "Auto" lets an agent do, for the CLIs whose own Auto stops at
|
|
3
|
+
* file edits (Claude Code's acceptEdits asks about every other tool, and Auto
|
|
4
|
+
* never stops to ask — so before this, Auto refused every command that wasn't
|
|
5
|
+
* read-only, and an agent could never run its own tests).
|
|
6
|
+
*
|
|
7
|
+
* Auto means the same thing it means for Codex (workspace-write): edit files
|
|
8
|
+
* and run commands **inside the project**. Refused, with the rule that fired:
|
|
9
|
+
*
|
|
10
|
+
* - a path outside the project (unless it's one of the project's readPaths —
|
|
11
|
+
* sibling folders an agent may read, never write),
|
|
12
|
+
* - a command that can't be taken back (the Blast-Radius Shield's list),
|
|
13
|
+
* - an MCP tool nobody allowed.
|
|
14
|
+
*
|
|
15
|
+
* `permissions.allow` in .loom/config.json allows more: a command prefix
|
|
16
|
+
* ("docker compose up"), a tool name ("WebFetch"), or a glob ("mcp__github__*").
|
|
17
|
+
* It never overrides the destructive-command rule. Pure.
|
|
18
|
+
*/
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import os from "node:os";
|
|
21
|
+
import { dangerOf } from "./shield.js";
|
|
22
|
+
/**
|
|
23
|
+
* Each open project's live policy, by project id. Agents' options must stay plain data (native
|
|
24
|
+
* continuity clones them), so the policy is looked up here rather than carried in them.
|
|
25
|
+
*/
|
|
26
|
+
const policies = new Map();
|
|
27
|
+
export function registerAutoPolicy(projectId, get) {
|
|
28
|
+
policies.set(projectId, get);
|
|
29
|
+
return () => { if (policies.get(projectId) === get)
|
|
30
|
+
policies.delete(projectId); };
|
|
31
|
+
}
|
|
32
|
+
export function autoPolicyFor(projectId) {
|
|
33
|
+
return projectId ? policies.get(projectId)?.() : undefined;
|
|
34
|
+
}
|
|
35
|
+
/** The policy as it applies in `cwd` — an agent's own worktree is its project; the main checkout stays readable. */
|
|
36
|
+
export function policyIn(policy, cwd) {
|
|
37
|
+
if (!cwd || path.resolve(cwd) === path.resolve(policy.projectDir))
|
|
38
|
+
return policy;
|
|
39
|
+
return { ...policy, projectDir: path.resolve(cwd), readPaths: [...policy.readPaths, policy.projectDir] };
|
|
40
|
+
}
|
|
41
|
+
const READ_TOOLS = new Set(["Read", "Glob", "Grep", "LS", "NotebookRead"]);
|
|
42
|
+
const WRITE_TOOLS = new Set(["Edit", "Write", "MultiEdit", "NotebookEdit"]);
|
|
43
|
+
/** Tools that touch nothing on disk, or that stay governed by this same policy (subagents ask here too). */
|
|
44
|
+
const SAFE_TOOLS = new Set(["Task", "Agent", "TodoWrite", "WebSearch", "WebFetch", "BashOutput", "KillShell", "KillBash", "ListMcpResourcesTool", "ReadMcpResourceTool", "SlashCommand", "Skill"]);
|
|
45
|
+
/** System locations a command may name without leaving the project: the tools themselves, temp, devices. */
|
|
46
|
+
const SYSTEM = ["/usr", "/bin", "/sbin", "/opt/homebrew", "/opt/local", "/Library/Developer", "/Applications/Xcode.app", "/dev", "/tmp", "/private/tmp", "/var/folders", "/private/var/folders", "/etc/hosts", "/System"];
|
|
47
|
+
const within = (p, root) => {
|
|
48
|
+
const rel = path.relative(root, p);
|
|
49
|
+
return rel === "" || (!rel.startsWith("..") && !path.isAbsolute(rel));
|
|
50
|
+
};
|
|
51
|
+
function resolveIn(dir, p) {
|
|
52
|
+
const home = os.homedir();
|
|
53
|
+
const expanded = p === "~" ? home : p.startsWith("~/") ? path.join(home, p.slice(2)) : p.replace(/^\$HOME(?=\/|$)/, home);
|
|
54
|
+
return path.resolve(dir, expanded);
|
|
55
|
+
}
|
|
56
|
+
/** Shell words, quotes respected: "a b" and 'a b' are one word; \ escapes a space. */
|
|
57
|
+
export function shellWords(command) {
|
|
58
|
+
const words = [];
|
|
59
|
+
let cur = "", quote = null, any = false;
|
|
60
|
+
for (let i = 0; i < command.length; i++) {
|
|
61
|
+
const c = command[i];
|
|
62
|
+
if (quote) {
|
|
63
|
+
if (c === quote)
|
|
64
|
+
quote = null;
|
|
65
|
+
else if (c === "\\" && quote === '"' && i + 1 < command.length)
|
|
66
|
+
cur += command[++i];
|
|
67
|
+
else
|
|
68
|
+
cur += c;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (c === "'" || c === '"') {
|
|
72
|
+
quote = c;
|
|
73
|
+
any = true;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (c === "\\" && i + 1 < command.length) {
|
|
77
|
+
cur += command[++i];
|
|
78
|
+
any = true;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (/\s/.test(c) || ";&|<>()".includes(c)) {
|
|
82
|
+
if (cur || any)
|
|
83
|
+
words.push(cur);
|
|
84
|
+
cur = "";
|
|
85
|
+
any = false;
|
|
86
|
+
if (!/\s/.test(c))
|
|
87
|
+
words.push(c);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
cur += c;
|
|
91
|
+
any = true;
|
|
92
|
+
}
|
|
93
|
+
if (cur || any)
|
|
94
|
+
words.push(cur);
|
|
95
|
+
return words;
|
|
96
|
+
}
|
|
97
|
+
/** Glob-ish match: "*" anywhere, otherwise a prefix on a word boundary ("npm test" allows "npm test -- --run"). */
|
|
98
|
+
export function allowMatches(pattern, value) {
|
|
99
|
+
const p = pattern.trim();
|
|
100
|
+
if (!p)
|
|
101
|
+
return false;
|
|
102
|
+
if (p.includes("*"))
|
|
103
|
+
return new RegExp("^" + p.split("*").map((s) => s.replace(/[.+?^${}()|[\]\\]/g, "\\$&")).join(".*") + "$").test(value);
|
|
104
|
+
return value === p || value.startsWith(p + " ");
|
|
105
|
+
}
|
|
106
|
+
/** Where a path may be read or written from, given the policy. */
|
|
107
|
+
function placeOf(p, policy) {
|
|
108
|
+
if (within(p, policy.projectDir))
|
|
109
|
+
return "project";
|
|
110
|
+
if (policy.readPaths.some((r) => within(p, r)))
|
|
111
|
+
return "read";
|
|
112
|
+
if (SYSTEM.some((s) => within(p, s)))
|
|
113
|
+
return "system";
|
|
114
|
+
return "outside";
|
|
115
|
+
}
|
|
116
|
+
/** A command's working directory after a leading `cd X &&`, and the rest. */
|
|
117
|
+
function stripCd(words, dir) {
|
|
118
|
+
let i = 0, cwd = dir;
|
|
119
|
+
while (words[i] === "cd" && words[i + 1] !== undefined && (words[i + 2] === "&" || words[i + 2] === ";" || words[i + 2] === undefined)) {
|
|
120
|
+
cwd = resolveIn(cwd, words[i + 1]);
|
|
121
|
+
i += 2;
|
|
122
|
+
while (words[i] === "&" || words[i] === ";")
|
|
123
|
+
i++;
|
|
124
|
+
}
|
|
125
|
+
return { dir: cwd, rest: words.slice(i) };
|
|
126
|
+
}
|
|
127
|
+
export function decideAuto(tool, input, policy) {
|
|
128
|
+
const allowedByName = policy.allow.some((a) => allowMatches(a, tool));
|
|
129
|
+
if (tool === "Bash") {
|
|
130
|
+
const command = String(input.command ?? "").trim();
|
|
131
|
+
if (!command)
|
|
132
|
+
return { allow: true };
|
|
133
|
+
const danger = dangerOf(command, policy.projectDir);
|
|
134
|
+
if (danger)
|
|
135
|
+
return { allow: false, rule: `a command that can't be taken back (${danger.what})`, detail: `\`${command.slice(0, 200)}\` — ${danger.why}` };
|
|
136
|
+
const words = shellWords(command);
|
|
137
|
+
const { dir, rest } = stripCd(words, policy.projectDir);
|
|
138
|
+
const body = rest.filter((w) => !"&;|<>()".includes(w)).join(" ");
|
|
139
|
+
if (policy.allow.some((a) => allowMatches(a, body) || allowMatches(a, command)))
|
|
140
|
+
return { allow: true, rule: "permissions.allow" };
|
|
141
|
+
if (placeOf(dir, policy) === "outside")
|
|
142
|
+
return { allow: false, rule: "a command run outside the project", detail: `it changes directory to ${dir}` };
|
|
143
|
+
for (const w of rest) {
|
|
144
|
+
// a word that names a path: absolute, home-relative, or climbing out with ..
|
|
145
|
+
const m = /^(?:[\w.-]+=)?((?:\/|~|\$HOME|\.\.)(?:[^\s]*))$/.exec(w);
|
|
146
|
+
if (!m || /^\/\/|^\/?[a-z]+:\/\//i.test(m[1]))
|
|
147
|
+
continue;
|
|
148
|
+
const p = resolveIn(dir, m[1]);
|
|
149
|
+
const where = placeOf(p, policy);
|
|
150
|
+
if (where === "outside")
|
|
151
|
+
return { allow: false, rule: "a path outside the project", detail: `\`${m[1]}\` resolves to ${p}, outside ${policy.projectDir}${policy.readPaths.length ? " and its readPaths" : ""}` };
|
|
152
|
+
}
|
|
153
|
+
return { allow: true };
|
|
154
|
+
}
|
|
155
|
+
if (READ_TOOLS.has(tool) || WRITE_TOOLS.has(tool)) {
|
|
156
|
+
const raw = input.file_path ?? input.path ?? input.notebook_path;
|
|
157
|
+
if (typeof raw !== "string" || !raw)
|
|
158
|
+
return { allow: true };
|
|
159
|
+
const p = resolveIn(policy.projectDir, raw);
|
|
160
|
+
const where = placeOf(p, policy);
|
|
161
|
+
if (WRITE_TOOLS.has(tool)) {
|
|
162
|
+
if (where === "project")
|
|
163
|
+
return { allow: true };
|
|
164
|
+
return { allow: false, rule: where === "read" ? "a write to a read-only path" : "a write outside the project", detail: `${tool} on ${p}${where === "read" ? " — readPaths can be read, not written" : ""}` };
|
|
165
|
+
}
|
|
166
|
+
if (where !== "outside")
|
|
167
|
+
return { allow: true };
|
|
168
|
+
return { allow: false, rule: "a read outside the project", detail: `${tool} on ${p} — add its folder to readPaths in .loom/config.json to allow it` };
|
|
169
|
+
}
|
|
170
|
+
if (SAFE_TOOLS.has(tool) || allowedByName)
|
|
171
|
+
return { allow: true };
|
|
172
|
+
if (tool.startsWith("mcp__"))
|
|
173
|
+
return { allow: false, rule: "an MCP tool nobody allowed", detail: `${tool} — add it (or "mcp__server__*") to permissions.allow` };
|
|
174
|
+
return { allow: false, rule: "a tool Auto doesn't cover", detail: `${tool} — add it to permissions.allow` };
|
|
175
|
+
}
|
|
176
|
+
/** The refusal the agent reads: what fired, on what, and how to allow it. */
|
|
177
|
+
export function refusalText(d) {
|
|
178
|
+
return `Loom's Auto mode refused ${d.rule}: ${d.detail}. Auto edits files and runs commands inside the project; ` +
|
|
179
|
+
`to allow more, add it to permissions.allow (or a folder to readPaths) in .loom/config.json, or switch this agent to Always ask or Bypass.`;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=auto-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-policy.js","sourceRoot":"","sources":["../../src/core/auto-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Council: one planner, several reviewers, one goal — planned, backtested,
|
|
3
|
+
* decided, built, proved, forward-tested and fixed, in that order. The
|
|
4
|
+
* planner is the only agent that writes; the reviewers only read. This file
|
|
5
|
+
* is the pure part: the stages, what each turn is asked, and the reading of
|
|
6
|
+
* the planner's verdicts. daemon/council.ts runs it.
|
|
7
|
+
*/
|
|
8
|
+
import type { Finding } from "./review.js";
|
|
9
|
+
export declare const STAGES: readonly [{
|
|
10
|
+
readonly key: "plan";
|
|
11
|
+
readonly name: "Plan";
|
|
12
|
+
readonly what: "the planner plans — no edits";
|
|
13
|
+
}, {
|
|
14
|
+
readonly key: "backtest";
|
|
15
|
+
readonly name: "Backtest";
|
|
16
|
+
readonly what: "reviewers test the plan, read-only, in parallel";
|
|
17
|
+
}, {
|
|
18
|
+
readonly key: "decide";
|
|
19
|
+
readonly name: "Decide";
|
|
20
|
+
readonly what: "the planner accepts or rejects each finding — recorded as decisions";
|
|
21
|
+
}, {
|
|
22
|
+
readonly key: "build";
|
|
23
|
+
readonly name: "Build";
|
|
24
|
+
readonly what: "only the planner implements";
|
|
25
|
+
}, {
|
|
26
|
+
readonly key: "prove";
|
|
27
|
+
readonly name: "Prove";
|
|
28
|
+
readonly what: "Proof re-runs the tests in a clean checkout";
|
|
29
|
+
}, {
|
|
30
|
+
readonly key: "forward";
|
|
31
|
+
readonly name: "Forward-test";
|
|
32
|
+
readonly what: "reviewers read the diff, read-only, in parallel";
|
|
33
|
+
}, {
|
|
34
|
+
readonly key: "fix";
|
|
35
|
+
readonly name: "Fix";
|
|
36
|
+
readonly what: "the planner fixes what it agrees with, then Proof again";
|
|
37
|
+
}];
|
|
38
|
+
export type StageKey = (typeof STAGES)[number]["key"];
|
|
39
|
+
export type StageStatus = "waiting" | "running" | "done" | "skipped" | "failed" | "unverified";
|
|
40
|
+
/** How a Proof verdict shows on the Prove stage: only a verified one is a tick (#276). */
|
|
41
|
+
export declare const proofStage: (verdict: string | undefined) => StageStatus;
|
|
42
|
+
/** A plan a reviewer brief can carry: the subtask limit is 10k, and the review's own instructions need room. */
|
|
43
|
+
export declare const PLAN_ROOM = 6500;
|
|
44
|
+
export declare function planPrompt(goal: string): string;
|
|
45
|
+
export declare function backtestText(goal: string, plan: string): string;
|
|
46
|
+
export declare const BACKTEST_FOCUS = "backtest the plan: what it misses, what breaks, wrong assumptions about the code (read the files it names), and a test it should add";
|
|
47
|
+
export declare const FORWARD_FOCUS = "forward-test the change against the goal and the plan: bugs, missed cases, broken tests, anything the plan promised that isn't there";
|
|
48
|
+
export declare function decidePrompt(findings: Finding[]): string;
|
|
49
|
+
export declare function buildPrompt(goal: string, accepted: Finding[], rejected: Finding[]): string;
|
|
50
|
+
export declare function fixPrompt(findings: Finding[], proofHeadline?: string): string;
|
|
51
|
+
/** The planner's verdicts: `ACCEPT r1.2 — …`, `REJECT r1.3: …`, `FIXED r1.4 …` (FIXED is an accept). */
|
|
52
|
+
export declare function parseVerdicts(reply: string, ids: string[]): Map<string, {
|
|
53
|
+
decision: "accepted" | "rejected";
|
|
54
|
+
note?: string;
|
|
55
|
+
}>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Council: one planner, several reviewers, one goal — planned, backtested,
|
|
3
|
+
* decided, built, proved, forward-tested and fixed, in that order. The
|
|
4
|
+
* planner is the only agent that writes; the reviewers only read. This file
|
|
5
|
+
* is the pure part: the stages, what each turn is asked, and the reading of
|
|
6
|
+
* the planner's verdicts. daemon/council.ts runs it.
|
|
7
|
+
*/
|
|
8
|
+
export const STAGES = [
|
|
9
|
+
{ key: "plan", name: "Plan", what: "the planner plans — no edits" },
|
|
10
|
+
{ key: "backtest", name: "Backtest", what: "reviewers test the plan, read-only, in parallel" },
|
|
11
|
+
{ key: "decide", name: "Decide", what: "the planner accepts or rejects each finding — recorded as decisions" },
|
|
12
|
+
{ key: "build", name: "Build", what: "only the planner implements" },
|
|
13
|
+
{ key: "prove", name: "Prove", what: "Proof re-runs the tests in a clean checkout" },
|
|
14
|
+
{ key: "forward", name: "Forward-test", what: "reviewers read the diff, read-only, in parallel" },
|
|
15
|
+
{ key: "fix", name: "Fix", what: "the planner fixes what it agrees with, then Proof again" },
|
|
16
|
+
];
|
|
17
|
+
/** How a Proof verdict shows on the Prove stage: only a verified one is a tick (#276). */
|
|
18
|
+
export const proofStage = (verdict) => verdict === "verified" ? "done" : verdict === "contradicted" ? "failed" : "unverified";
|
|
19
|
+
/** A plan a reviewer brief can carry: the subtask limit is 10k, and the review's own instructions need room. */
|
|
20
|
+
export const PLAN_ROOM = 6_500;
|
|
21
|
+
export function planPrompt(goal) {
|
|
22
|
+
return [
|
|
23
|
+
`[Loom council] Goal: ${goal}`,
|
|
24
|
+
"Plan it — do not edit anything yet. Reviewers will test this plan before any code is written, so make it checkable:",
|
|
25
|
+
"numbered steps; the files each step touches; the risky parts; and how you will test that it works (the exact command).",
|
|
26
|
+
].join("\n");
|
|
27
|
+
}
|
|
28
|
+
export function backtestText(goal, plan) {
|
|
29
|
+
const p = plan.length > PLAN_ROOM ? `${plan.slice(0, PLAN_ROOM)}\n… (plan cut at ${PLAN_ROOM} characters)` : plan;
|
|
30
|
+
return `this plan, before any code is written, for the goal "${goal}":\n\n${p}`;
|
|
31
|
+
}
|
|
32
|
+
export const BACKTEST_FOCUS = "backtest the plan: what it misses, what breaks, wrong assumptions about the code (read the files it names), and a test it should add";
|
|
33
|
+
export const FORWARD_FOCUS = "forward-test the change against the goal and the plan: bugs, missed cases, broken tests, anything the plan promised that isn't there";
|
|
34
|
+
const line = (f) => `${f.id} [${f.severity ?? "note"}] ${f.agent}${f.agreed?.length ? ` + ${f.agreed.map((a) => a.agent).join(" + ")}` : ""}: ${f.file ? `${f.file}${f.line ? `:${f.line}` : ""} — ` : ""}${f.text}`;
|
|
35
|
+
export function decidePrompt(findings) {
|
|
36
|
+
return [
|
|
37
|
+
"[Loom council] The reviewers backtested your plan. Their findings:",
|
|
38
|
+
findings.map(line).join("\n"),
|
|
39
|
+
"Decide each one — still no edits. Answer with one line per finding, exactly:\nACCEPT <id> — what you'll change in the plan\nREJECT <id> — why it doesn't apply",
|
|
40
|
+
].join("\n\n");
|
|
41
|
+
}
|
|
42
|
+
export function buildPrompt(goal, accepted, rejected) {
|
|
43
|
+
return [
|
|
44
|
+
`[Loom council] Build it now: ${goal}`,
|
|
45
|
+
"Implement your plan. You are the only agent changing files in this council.",
|
|
46
|
+
accepted.length ? `Fold in the findings you accepted:\n${accepted.map(line).join("\n")}` : "",
|
|
47
|
+
rejected.length ? `You rejected these — leave them:\n${rejected.map((f) => f.id).join(", ")}` : "",
|
|
48
|
+
"Run the tests before you finish, and say what you ran and what it printed.",
|
|
49
|
+
].filter(Boolean).join("\n\n");
|
|
50
|
+
}
|
|
51
|
+
export function fixPrompt(findings, proofHeadline) {
|
|
52
|
+
return [
|
|
53
|
+
"[Loom council] Fix round. The reviewers read your diff" + (proofHeadline ? `, and Proof said: ${proofHeadline}` : "") + ".",
|
|
54
|
+
findings.length ? `Their findings — every one, low ones included (a low one can still be something you promised):\n${findings.map(line).join("\n")}` : "",
|
|
55
|
+
"Fix what you agree with. Then answer with one line per finding: FIXED <id> — what you changed, or REJECT <id> — why. Run the tests again before you finish.",
|
|
56
|
+
].filter(Boolean).join("\n\n");
|
|
57
|
+
}
|
|
58
|
+
/** The planner's verdicts: `ACCEPT r1.2 — …`, `REJECT r1.3: …`, `FIXED r1.4 …` (FIXED is an accept). */
|
|
59
|
+
export function parseVerdicts(reply, ids) {
|
|
60
|
+
const known = new Set(ids);
|
|
61
|
+
const out = new Map();
|
|
62
|
+
for (const raw of reply.split("\n")) {
|
|
63
|
+
// the verdict and the id may be dressed in Markdown (**ACCEPT** `r1.2`); the note is kept exactly as written —
|
|
64
|
+
// stripping `_` from it turned test_reach.py into testreach.py in project memory (#275)
|
|
65
|
+
const m = raw.match(/^\s*(?:[-*•]|\d+[.)])?\s*(?:[*_`]+\s*)?(ACCEPT(?:ED)?|REJECT(?:ED)?|FIXED)(?:\s*[*_`]+)?\s*:?\s*[*_`]*([\w-]+\.\d+)[*_`]*\s*[:—–-]*\s*(.*)$/i);
|
|
66
|
+
if (!m || !known.has(m[2]))
|
|
67
|
+
continue;
|
|
68
|
+
const note = m[3].trim();
|
|
69
|
+
out.set(m[2], { decision: /^reject/i.test(m[1]) ? "rejected" : "accepted", ...(note ? { note: note.slice(0, 300) } : {}) });
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=council.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"council.js","sourceRoot":"","sources":["../../src/core/council.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,7 +88,10 @@ function toAction(raw) {
|
|
|
88
88
|
}
|
|
89
89
|
if (type === "review") {
|
|
90
90
|
const v = str(a.verdict, 20).toLowerCase();
|
|
91
|
-
|
|
91
|
+
// reviewers spell it many ways — GitHub's "changes_requested" among them (#282)
|
|
92
|
+
const w = v.replace(/[\s-]+/g, "_");
|
|
93
|
+
const verdict = /^(approve|approved|lgtm|pass|passed|ok|accept|accepted|ship_it)$/.test(w) ? "approve"
|
|
94
|
+
: /^(changes|changes_requested|request_changes|requested_changes|needs_changes|needs_work|revise|reject|rejected|fail|failed|block|blocked)$/.test(w) ? "changes" : null;
|
|
92
95
|
return verdict ? { type, verdict, notes: str(a.notes ?? a.text) } : null;
|
|
93
96
|
}
|
|
94
97
|
if (type === "test") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crew-protocol.js","sourceRoot":"","sources":["../../src/core/crew-protocol.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crew-protocol.js","sourceRoot":"","sources":["../../src/core/crew-protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/core/crew.d.ts
CHANGED
|
@@ -236,6 +236,15 @@ export interface CrewHost {
|
|
|
236
236
|
export declare const CREW_TEMPLATES: string[];
|
|
237
237
|
/** Fill a template's roles from the roster; the reviewer avoids the builders' vendor when it can. */
|
|
238
238
|
export declare function teammatesFromTemplate(template: string, roster: AgentConfig[]): CrewTeammate[];
|
|
239
|
+
/** Who sits where, when you say so: `--lead`, `--builders a,b`, `--reviewer`, `--tester` on create. */
|
|
240
|
+
export interface CrewSeats {
|
|
241
|
+
lead?: string;
|
|
242
|
+
builders?: string[];
|
|
243
|
+
reviewer?: string;
|
|
244
|
+
tester?: string;
|
|
245
|
+
}
|
|
246
|
+
/** The template's seats, with the ones you named filled by those agents (builders in turn). */
|
|
247
|
+
export declare function seatCrew(teammates: CrewTeammate[], seats?: CrewSeats): CrewTeammate[];
|
|
239
248
|
export declare class CrewEngine {
|
|
240
249
|
private readonly host;
|
|
241
250
|
private states;
|
|
@@ -247,6 +256,8 @@ export declare class CrewEngine {
|
|
|
247
256
|
/** A teammate's live instance by its id (`crew-<crew>-<seat>.<agent>`), for answering its questions. */
|
|
248
257
|
liveAgent(instanceId: string): Adapter | undefined;
|
|
249
258
|
private running;
|
|
259
|
+
/** Crews working right now (for "is this project busy"). */
|
|
260
|
+
get workingCrews(): string[];
|
|
250
261
|
private turnText;
|
|
251
262
|
private turnError;
|
|
252
263
|
private turnQuestion;
|
|
@@ -270,6 +281,7 @@ export declare class CrewEngine {
|
|
|
270
281
|
name?: string;
|
|
271
282
|
template?: string;
|
|
272
283
|
teammates?: CrewTeammate[];
|
|
284
|
+
seats?: CrewSeats;
|
|
273
285
|
planApproval?: boolean;
|
|
274
286
|
testCommand?: string;
|
|
275
287
|
play?: CrewConfig["play"];
|
|
@@ -337,7 +349,7 @@ export declare class CrewEngine {
|
|
|
337
349
|
private waitForTeam;
|
|
338
350
|
decideOverlap(id: string, cardId: string, decision: string, touches?: string[]): CrewGoal;
|
|
339
351
|
pause(id: string): CrewGoal;
|
|
340
|
-
raiseBudget(id: string, amount: number): CrewGoal;
|
|
352
|
+
raiseBudget(id: string, amount: number): CrewGoal | null;
|
|
341
353
|
private validParallel;
|
|
342
354
|
private validBudget;
|
|
343
355
|
/** A bounded wave owns its declared file scopes through review and test. */
|