codebase-cli 2.0.0-pre.1 → 2.0.0-pre.11
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/dist/agent/agent.js +16 -1
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/config.js +71 -9
- package/dist/agent/config.js.map +1 -1
- package/dist/app-server/protocol.js +7 -0
- package/dist/app-server/protocol.js.map +1 -0
- package/dist/app-server/server.js +241 -0
- package/dist/app-server/server.js.map +1 -0
- package/dist/auth/flow.js +174 -41
- package/dist/auth/flow.js.map +1 -1
- package/dist/cli.js +60 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/builtins.js +272 -1
- package/dist/commands/builtins.js.map +1 -1
- package/dist/config/store.js +125 -0
- package/dist/config/store.js.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/headless/run.js +129 -21
- package/dist/headless/run.js.map +1 -1
- package/dist/permissions/store.js +105 -3
- package/dist/permissions/store.js.map +1 -1
- package/dist/projects/cli.js +92 -0
- package/dist/projects/cli.js.map +1 -0
- package/dist/projects/client.js +120 -0
- package/dist/projects/client.js.map +1 -0
- package/dist/projects/types.js +2 -0
- package/dist/projects/types.js.map +1 -0
- package/dist/skills/platform-loader.js +133 -38
- package/dist/skills/platform-loader.js.map +1 -1
- package/dist/tools/config.js +74 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/dispatch-agent.js +16 -0
- package/dist/tools/dispatch-agent.js.map +1 -1
- package/dist/tools/registry.js +4 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/ui/App.js +1 -1
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/FirstRunSetup.js +92 -15
- package/dist/ui/FirstRunSetup.js.map +1 -1
- package/dist/ui/Message.js +80 -1
- package/dist/ui/Message.js.map +1 -1
- package/dist/ui/PixelC.js +40 -0
- package/dist/ui/PixelC.js.map +1 -0
- package/dist/ui/Status.js +13 -2
- package/dist/ui/Status.js.map +1 -1
- package/dist/ui/Throbber.js +11 -7
- package/dist/ui/Throbber.js.map +1 -1
- package/package.json +3 -1
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { CredentialsStore } from "../auth/credentials.js";
|
|
1
6
|
import { copyToClipboard, extractLastCodeBlock } from "../clipboard/copy.js";
|
|
7
|
+
import { NotAuthenticatedError, ProjectClient, ProjectClientError } from "../projects/client.js";
|
|
2
8
|
const help = {
|
|
3
9
|
name: "help",
|
|
4
10
|
description: "List available slash commands.",
|
|
@@ -199,5 +205,270 @@ function extractText(message) {
|
|
|
199
205
|
}
|
|
200
206
|
return parts.join("");
|
|
201
207
|
}
|
|
202
|
-
|
|
208
|
+
// ─── git surface ──────────────────────────────────────────────────────
|
|
209
|
+
const diff = {
|
|
210
|
+
name: "diff",
|
|
211
|
+
description: "Show the working-tree diff (`git diff` shortstat then full).",
|
|
212
|
+
handler: (args, ctx) => {
|
|
213
|
+
const cwd = ctx.bundle.toolContext.cwd;
|
|
214
|
+
const target = args.trim() || "HEAD";
|
|
215
|
+
try {
|
|
216
|
+
const stat = execSync(`git diff --stat ${target}`, { cwd, encoding: "utf8" }).trim();
|
|
217
|
+
const full = execSync(`git diff ${target}`, { cwd, encoding: "utf8" });
|
|
218
|
+
if (!stat && !full) {
|
|
219
|
+
ctx.emit("no changes vs HEAD.");
|
|
220
|
+
return { handled: true };
|
|
221
|
+
}
|
|
222
|
+
ctx.emit(`${stat}\n\n${full}`);
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
ctx.emit(`/diff failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
226
|
+
}
|
|
227
|
+
return { handled: true };
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
const commit = {
|
|
231
|
+
name: "commit",
|
|
232
|
+
description: "Generate a commit message for the current diff via the smart glue model. Does not commit.",
|
|
233
|
+
handler: async (_args, ctx) => {
|
|
234
|
+
const cwd = ctx.bundle.toolContext.cwd;
|
|
235
|
+
try {
|
|
236
|
+
const diffText = execSync("git diff --staged", { cwd, encoding: "utf8" });
|
|
237
|
+
if (!diffText.trim()) {
|
|
238
|
+
ctx.emit("nothing staged. Run `git add <files>` first, then /commit.");
|
|
239
|
+
return { handled: true };
|
|
240
|
+
}
|
|
241
|
+
const system = "You write Conventional Commits messages. Subject ≤72 chars, imperative mood. " +
|
|
242
|
+
"Body 1–3 short lines explaining WHY, not WHAT. No bullet lists. No file inventory.";
|
|
243
|
+
const message = await ctx.bundle.glue.smart(`Generate a commit message for this diff:\n\n${diffText}`, system);
|
|
244
|
+
ctx.emit(`suggested commit message:\n\n${message.trim()}\n\nIf you like it: git commit -m "..." (with the subject above).`);
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
ctx.emit(`/commit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
248
|
+
}
|
|
249
|
+
return { handled: true };
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
const review = {
|
|
253
|
+
name: "review",
|
|
254
|
+
description: "Have the smart glue model review your uncommitted changes.",
|
|
255
|
+
handler: async (_args, ctx) => {
|
|
256
|
+
const cwd = ctx.bundle.toolContext.cwd;
|
|
257
|
+
try {
|
|
258
|
+
const diffText = execSync("git diff HEAD", { cwd, encoding: "utf8" });
|
|
259
|
+
if (!diffText.trim()) {
|
|
260
|
+
ctx.emit("no changes to review (working tree matches HEAD).");
|
|
261
|
+
return { handled: true };
|
|
262
|
+
}
|
|
263
|
+
const system = "You are a senior engineer doing a code review. Be concise and concrete. " +
|
|
264
|
+
"Call out: bugs, missing edge cases, security issues, naming nits, simpler alternatives. " +
|
|
265
|
+
"Skip praise. If the diff is clean, say so in one line.";
|
|
266
|
+
const text = await ctx.bundle.glue.smart(`Review this diff:\n\n${diffText}`, system);
|
|
267
|
+
ctx.emit(text.trim());
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
ctx.emit(`/review failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
271
|
+
}
|
|
272
|
+
return { handled: true };
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
// ─── memory + context ─────────────────────────────────────────────────
|
|
276
|
+
const memory = {
|
|
277
|
+
name: "memory",
|
|
278
|
+
description: "Show the MEMORY.md index of saved cross-session memories for this project.",
|
|
279
|
+
handler: (_args, ctx) => {
|
|
280
|
+
const index = ctx.bundle.memory.index();
|
|
281
|
+
if (!index.trim()) {
|
|
282
|
+
ctx.emit("no memories saved yet. The agent can write them via the save_memory tool.");
|
|
283
|
+
return { handled: true };
|
|
284
|
+
}
|
|
285
|
+
ctx.emit(index);
|
|
286
|
+
return { handled: true };
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
const context = {
|
|
290
|
+
name: "context",
|
|
291
|
+
description: "Visualize how full the context window is right now.",
|
|
292
|
+
handler: (_args, ctx) => {
|
|
293
|
+
const u = ctx.state.usage;
|
|
294
|
+
const used = u.input + u.cacheRead;
|
|
295
|
+
// Anthropic Claude Sonnet 4.x is 200K input by default; Opus is 200K too.
|
|
296
|
+
// pi-ai's model.contextLength would be the source of truth; for now use
|
|
297
|
+
// 200K as the floor and clamp.
|
|
298
|
+
const window = ctx.state.model.contextLength ?? 200_000;
|
|
299
|
+
const ratio = Math.min(1, used / window);
|
|
300
|
+
const compactAt = ctx.bundle.compaction.threshold();
|
|
301
|
+
const barWidth = 40;
|
|
302
|
+
const filled = Math.round(ratio * barWidth);
|
|
303
|
+
const compactMark = Math.round((compactAt / window) * barWidth);
|
|
304
|
+
let bar = "";
|
|
305
|
+
for (let i = 0; i < barWidth; i++) {
|
|
306
|
+
if (i < filled)
|
|
307
|
+
bar += "█";
|
|
308
|
+
else if (i === compactMark)
|
|
309
|
+
bar += "│";
|
|
310
|
+
else
|
|
311
|
+
bar += "░";
|
|
312
|
+
}
|
|
313
|
+
const pct = `${(ratio * 100).toFixed(1)}%`;
|
|
314
|
+
const compactPct = `${((compactAt / window) * 100).toFixed(0)}%`;
|
|
315
|
+
ctx.emit(`context window:\n ${bar}\n ${used.toLocaleString()} / ${window.toLocaleString()} tokens (${pct})\n │ = compaction triggers at ${compactAt.toLocaleString()} (${compactPct})`);
|
|
316
|
+
return { handled: true };
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
// ─── auth / session ───────────────────────────────────────────────────
|
|
320
|
+
const login = {
|
|
321
|
+
name: "login",
|
|
322
|
+
description: "Sign in via codebase.design OAuth (run from a fresh terminal: `codebase auth login`).",
|
|
323
|
+
handler: (_args, ctx) => {
|
|
324
|
+
ctx.emit("to sign in, exit (Ctrl-C) and run:\n codebase auth login\n\n" +
|
|
325
|
+
"that opens your browser to codebase.design and persists tokens to ~/.codebase/credentials.json. " +
|
|
326
|
+
"after sign-in, restart codebase to use the new credentials.");
|
|
327
|
+
return { handled: true };
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
const logout = {
|
|
331
|
+
name: "logout",
|
|
332
|
+
description: "Clear saved credentials. Restart to take effect.",
|
|
333
|
+
mutates: true,
|
|
334
|
+
handler: (_args, ctx) => {
|
|
335
|
+
const store = new CredentialsStore();
|
|
336
|
+
const cleared = store.clear();
|
|
337
|
+
if (cleared) {
|
|
338
|
+
ctx.emit("cleared ~/.codebase/credentials.json. Restart codebase to use a different provider/sign-in.");
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
ctx.emit("no saved credentials to clear.");
|
|
342
|
+
}
|
|
343
|
+
return { handled: true };
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
const resume = {
|
|
347
|
+
name: "resume",
|
|
348
|
+
description: "Resume a previous session (run with the --resume flag at startup).",
|
|
349
|
+
handler: (_args, ctx) => {
|
|
350
|
+
const cwd = ctx.bundle.toolContext.cwd;
|
|
351
|
+
ctx.emit("to resume, exit (Ctrl-C) and start with:\n codebase --resume\n\n" +
|
|
352
|
+
`session files live at ~/.codebase/sessions/ keyed off this directory (${cwd}).`);
|
|
353
|
+
return { handled: true };
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
// ─── project + extensions ─────────────────────────────────────────────
|
|
357
|
+
const init = {
|
|
358
|
+
name: "init",
|
|
359
|
+
description: "Drop a starter CLAUDE.md at the project root with instructions for the agent.",
|
|
360
|
+
mutates: true,
|
|
361
|
+
handler: (_args, ctx) => {
|
|
362
|
+
const cwd = ctx.bundle.toolContext.cwd;
|
|
363
|
+
const target = join(cwd, "CLAUDE.md");
|
|
364
|
+
if (existsSync(target)) {
|
|
365
|
+
ctx.emit(`CLAUDE.md already exists at ${target}. Edit it directly; it's auto-injected on session start.`);
|
|
366
|
+
return { handled: true };
|
|
367
|
+
}
|
|
368
|
+
const template = [
|
|
369
|
+
"# Project Instructions",
|
|
370
|
+
"",
|
|
371
|
+
"This file is auto-loaded by `codebase` (and Claude Code) on session start.",
|
|
372
|
+
"Use it to capture project-specific rules and context the agent should follow.",
|
|
373
|
+
"",
|
|
374
|
+
"## What this project is",
|
|
375
|
+
"",
|
|
376
|
+
"Replace this with a one-paragraph summary of what the codebase does, the",
|
|
377
|
+
"primary language(s), and the user-visible product.",
|
|
378
|
+
"",
|
|
379
|
+
"## Commands",
|
|
380
|
+
"",
|
|
381
|
+
"- Build: `…`",
|
|
382
|
+
"- Test: `…`",
|
|
383
|
+
"- Lint: `…`",
|
|
384
|
+
"",
|
|
385
|
+
"## Coding conventions",
|
|
386
|
+
"",
|
|
387
|
+
"- …",
|
|
388
|
+
"",
|
|
389
|
+
"## Don'ts",
|
|
390
|
+
"",
|
|
391
|
+
"- …",
|
|
392
|
+
"",
|
|
393
|
+
].join("\n");
|
|
394
|
+
writeFileSync(target, template);
|
|
395
|
+
ctx.emit(`wrote ${target}. Edit it to capture project-specific guidance for the agent.`);
|
|
396
|
+
return { handled: true };
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
const projects = {
|
|
400
|
+
name: "projects",
|
|
401
|
+
aliases: ["project"],
|
|
402
|
+
description: "List your projects from codebase.design (requires sign-in via `codebase auth login`).",
|
|
403
|
+
handler: async (_args, ctx) => {
|
|
404
|
+
const client = new ProjectClient();
|
|
405
|
+
if (!client.hasCredentials()) {
|
|
406
|
+
ctx.emit("not signed in. Run `codebase auth login` from a fresh terminal, then come back. " +
|
|
407
|
+
"Env-var providers (ANTHROPIC_API_KEY etc.) work fine for inference but the projects " +
|
|
408
|
+
"endpoint is gated on a codebase.design account.");
|
|
409
|
+
return { handled: true };
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
const list = await client.list();
|
|
413
|
+
if (list.length === 0) {
|
|
414
|
+
ctx.emit("(no projects yet — build one at https://codebase.design)");
|
|
415
|
+
return { handled: true };
|
|
416
|
+
}
|
|
417
|
+
const lines = [`${list.length} project${list.length === 1 ? "" : "s"} on your account:`, ""];
|
|
418
|
+
for (const p of list) {
|
|
419
|
+
const tag = p.source === "storage-only" ? " [storage]" : "";
|
|
420
|
+
const date = p.publishedAt ? ` · ${p.publishedAt.slice(0, 10)}` : "";
|
|
421
|
+
lines.push(` ${p.id} ${p.title ?? "(untitled)"}${tag}${date}`);
|
|
422
|
+
}
|
|
423
|
+
lines.push("");
|
|
424
|
+
lines.push("pull one with: codebase project pull <id>");
|
|
425
|
+
ctx.emit(lines.join("\n"));
|
|
426
|
+
}
|
|
427
|
+
catch (err) {
|
|
428
|
+
if (err instanceof NotAuthenticatedError) {
|
|
429
|
+
ctx.emit(err.message);
|
|
430
|
+
}
|
|
431
|
+
else if (err instanceof ProjectClientError) {
|
|
432
|
+
ctx.emit(`/projects failed: ${err.message}`);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
ctx.emit(`/projects failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return { handled: true };
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
const mcp = {
|
|
442
|
+
name: "mcp",
|
|
443
|
+
description: "Manage MCP (Model Context Protocol) servers — placeholder until Phase 9 lands.",
|
|
444
|
+
handler: (_args, ctx) => {
|
|
445
|
+
const configPath = join(homedir(), ".codebase", "config.json");
|
|
446
|
+
ctx.emit("MCP support is on the Phase 9 roadmap; the runtime hasn't shipped it yet.\n" +
|
|
447
|
+
`when it lands, server config will live at ${configPath} under "mcp_servers", ` +
|
|
448
|
+
"matching Claude Code's shape so existing config files port over.");
|
|
449
|
+
return { handled: true };
|
|
450
|
+
},
|
|
451
|
+
};
|
|
452
|
+
export const BUILTIN_COMMANDS = [
|
|
453
|
+
help,
|
|
454
|
+
clear,
|
|
455
|
+
compact,
|
|
456
|
+
session,
|
|
457
|
+
cost,
|
|
458
|
+
modelCmd,
|
|
459
|
+
whoami,
|
|
460
|
+
copy,
|
|
461
|
+
diff,
|
|
462
|
+
commit,
|
|
463
|
+
review,
|
|
464
|
+
memory,
|
|
465
|
+
context,
|
|
466
|
+
login,
|
|
467
|
+
logout,
|
|
468
|
+
resume,
|
|
469
|
+
init,
|
|
470
|
+
projects,
|
|
471
|
+
mcp,
|
|
472
|
+
exit,
|
|
473
|
+
];
|
|
203
474
|
//# sourceMappingURL=builtins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/commands/builtins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/commands/builtins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { EMPTY_CONFIG } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Layered config loader. Reads three files in priority order (later
|
|
7
|
+
* overrides earlier) and returns one merged Config:
|
|
8
|
+
*
|
|
9
|
+
* 1. ~/.codebase/config.json — user defaults
|
|
10
|
+
* 2. <cwd>/.codebase/config.json — project (committed)
|
|
11
|
+
* 3. ~/.codebase/config.local.json — local overrides (gitignored)
|
|
12
|
+
*
|
|
13
|
+
* Merge semantics: object keys deep-merge. Arrays inside known
|
|
14
|
+
* additive keys (currently `permissions.allow` and `permissions.deny`)
|
|
15
|
+
* are concatenated and de-duplicated; arrays elsewhere are replaced.
|
|
16
|
+
*
|
|
17
|
+
* Missing files are silently empty. Malformed JSON throws ConfigError
|
|
18
|
+
* with the offending path so the user can fix it (we don't want to
|
|
19
|
+
* silently ignore typos in their settings).
|
|
20
|
+
*/
|
|
21
|
+
export class ConfigStore {
|
|
22
|
+
userPath;
|
|
23
|
+
projectPath;
|
|
24
|
+
localPath;
|
|
25
|
+
cached = null;
|
|
26
|
+
constructor(options = {}) {
|
|
27
|
+
const home = options.home ?? homedir();
|
|
28
|
+
const cwd = options.cwd ?? process.cwd();
|
|
29
|
+
this.userPath = join(home, ".codebase", "config.json");
|
|
30
|
+
this.projectPath = join(cwd, ".codebase", "config.json");
|
|
31
|
+
this.localPath = join(home, ".codebase", "config.local.json");
|
|
32
|
+
}
|
|
33
|
+
/** Resolved layered paths, in merge order (low → high priority). */
|
|
34
|
+
get sources() {
|
|
35
|
+
return [this.userPath, this.projectPath, this.localPath];
|
|
36
|
+
}
|
|
37
|
+
/** Force re-read on next load(). */
|
|
38
|
+
invalidate() {
|
|
39
|
+
this.cached = null;
|
|
40
|
+
}
|
|
41
|
+
load() {
|
|
42
|
+
if (this.cached)
|
|
43
|
+
return this.cached;
|
|
44
|
+
let merged = { ...EMPTY_CONFIG };
|
|
45
|
+
for (const path of this.sources) {
|
|
46
|
+
const layer = readLayer(path);
|
|
47
|
+
if (layer)
|
|
48
|
+
merged = mergeConfig(merged, layer);
|
|
49
|
+
}
|
|
50
|
+
this.cached = merged;
|
|
51
|
+
return merged;
|
|
52
|
+
}
|
|
53
|
+
/** Convenience: get the resolved permission allow patterns. */
|
|
54
|
+
allowPatterns() {
|
|
55
|
+
return this.load().permissions?.allow ?? [];
|
|
56
|
+
}
|
|
57
|
+
/** Convenience: get the resolved permission deny patterns. */
|
|
58
|
+
denyPatterns() {
|
|
59
|
+
return this.load().permissions?.deny ?? [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class ConfigError extends Error {
|
|
63
|
+
path;
|
|
64
|
+
constructor(message, path) {
|
|
65
|
+
super(message);
|
|
66
|
+
this.path = path;
|
|
67
|
+
this.name = "ConfigError";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function readLayer(path) {
|
|
71
|
+
if (!existsSync(path))
|
|
72
|
+
return null;
|
|
73
|
+
let raw;
|
|
74
|
+
try {
|
|
75
|
+
raw = readFileSync(path, "utf8");
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
let parsed;
|
|
81
|
+
try {
|
|
82
|
+
parsed = JSON.parse(raw);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
throw new ConfigError(`could not parse ${path} as JSON: ${err instanceof Error ? err.message : String(err)}`, path);
|
|
86
|
+
}
|
|
87
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
88
|
+
throw new ConfigError(`${path} must contain a JSON object at the top level`, path);
|
|
89
|
+
}
|
|
90
|
+
return parsed;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Deep-merge two Configs. The right operand wins for scalars and
|
|
94
|
+
* non-array fields. For the additive arrays under `permissions`,
|
|
95
|
+
* concatenate + de-duplicate so users can layer rules without losing
|
|
96
|
+
* earlier-layer entries.
|
|
97
|
+
*/
|
|
98
|
+
export function mergeConfig(base, overlay) {
|
|
99
|
+
const out = { ...base };
|
|
100
|
+
for (const [key, value] of Object.entries(overlay)) {
|
|
101
|
+
if (key === "permissions" && isObject(value) && isObject(out.permissions)) {
|
|
102
|
+
out.permissions = mergePermissions(out.permissions, value);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
out[key] = value;
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
function mergePermissions(base, overlay) {
|
|
110
|
+
const merged = { ...base, ...overlay };
|
|
111
|
+
if (overlay.allow && base.allow) {
|
|
112
|
+
merged.allow = dedupe([...base.allow, ...overlay.allow]);
|
|
113
|
+
}
|
|
114
|
+
if (overlay.deny && base.deny) {
|
|
115
|
+
merged.deny = dedupe([...base.deny, ...overlay.deny]);
|
|
116
|
+
}
|
|
117
|
+
return merged;
|
|
118
|
+
}
|
|
119
|
+
function isObject(v) {
|
|
120
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
121
|
+
}
|
|
122
|
+
function dedupe(arr) {
|
|
123
|
+
return Array.from(new Set(arr));
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAC,MAAM,YAAY,GAAW,MAAM,CAAC,MAAM,CAAC,EAAE,CAAW,CAAC"}
|
package/dist/headless/run.js
CHANGED
|
@@ -1,32 +1,154 @@
|
|
|
1
1
|
import { createAgent } from "../agent/agent.js";
|
|
2
2
|
import { ConfigError } from "../agent/config.js";
|
|
3
|
+
const EMPTY_USAGE = {
|
|
4
|
+
input: 0,
|
|
5
|
+
output: 0,
|
|
6
|
+
cacheRead: 0,
|
|
7
|
+
cacheWrite: 0,
|
|
8
|
+
totalTokens: 0,
|
|
9
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
10
|
+
};
|
|
3
11
|
/**
|
|
4
|
-
* Run a single prompt without the TUI:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
12
|
+
* Run a single prompt without the TUI:
|
|
13
|
+
*
|
|
14
|
+
* • text (default) — assistant text to stdout, tool
|
|
15
|
+
* activity to stderr, plain text. Pipe-friendly:
|
|
16
|
+
* `codebase run "…" > out.md`.
|
|
17
|
+
* • stream-json — every AgentEvent as a JSONL line on stdout, in
|
|
18
|
+
* real time. Suitable for an upstream consumer
|
|
19
|
+
* (CI, IDE integration) that wants progress events.
|
|
20
|
+
* • json — buffer everything; on completion emit ONE JSON
|
|
21
|
+
* object with the final transcript + usage + exit
|
|
22
|
+
* metadata. Suitable for one-shot CI calls that
|
|
23
|
+
* just want the final answer + cost.
|
|
24
|
+
*
|
|
25
|
+
* In stream-json/json modes errors land in stdout as a structured
|
|
26
|
+
* event with `type: "error"` so consumers don't have to merge
|
|
27
|
+
* stdout+stderr. Setup errors (e.g. ConfigError before the loop
|
|
28
|
+
* starts) still go to stderr because they predate the JSON
|
|
29
|
+
* envelope.
|
|
8
30
|
*/
|
|
9
31
|
export async function runHeadless(opts) {
|
|
10
32
|
const out = opts.stdout ?? ((c) => process.stdout.write(c));
|
|
11
33
|
const err = opts.stderr ?? ((c) => process.stderr.write(c));
|
|
34
|
+
const format = opts.outputFormat ?? "text";
|
|
12
35
|
let bundle;
|
|
13
36
|
try {
|
|
14
|
-
bundle = createAgent({ resume: opts.resume });
|
|
37
|
+
bundle = createAgent({ resume: opts.resume, autoApprove: opts.autoApprove });
|
|
15
38
|
}
|
|
16
39
|
catch (e) {
|
|
17
40
|
const msg = e instanceof ConfigError ? e.message : e instanceof Error ? e.message : String(e);
|
|
18
41
|
err(`error: ${msg}\n`);
|
|
19
42
|
return 1;
|
|
20
43
|
}
|
|
21
|
-
|
|
44
|
+
const startedAt = Date.now();
|
|
22
45
|
let aborted = false;
|
|
23
46
|
let errored = false;
|
|
47
|
+
let errorMessage;
|
|
48
|
+
let totalUsage = { ...EMPTY_USAGE, cost: { ...EMPTY_USAGE.cost } };
|
|
49
|
+
// Always tap the event stream for usage accumulation, regardless of
|
|
50
|
+
// output format — pi-agent-core surfaces per-turn usage on
|
|
51
|
+
// message_end events; the JSON output reports the running total.
|
|
52
|
+
const usageUnsub = bundle.subscribe((event) => {
|
|
53
|
+
if (event.type !== "message_end")
|
|
54
|
+
return;
|
|
55
|
+
const candidate = event.message.usage;
|
|
56
|
+
if (candidate)
|
|
57
|
+
totalUsage = mergeUsage(totalUsage, candidate);
|
|
58
|
+
});
|
|
24
59
|
const onSigInt = () => {
|
|
25
60
|
aborted = true;
|
|
26
61
|
bundle.agent.abort();
|
|
27
62
|
};
|
|
28
63
|
process.on("SIGINT", onSigInt);
|
|
29
|
-
|
|
64
|
+
let unsubscribe;
|
|
65
|
+
if (format === "stream-json") {
|
|
66
|
+
unsubscribe = subscribeStreamJson(bundle, out);
|
|
67
|
+
}
|
|
68
|
+
else if (format === "json") {
|
|
69
|
+
unsubscribe = () => {
|
|
70
|
+
// JSON mode buffers via the agent's own state.messages; the
|
|
71
|
+
// subscribe handler is a no-op so we don't spam stderr.
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
unsubscribe = subscribeText(bundle, out, err);
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
await bundle.agent.prompt(opts.prompt);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
errored = true;
|
|
82
|
+
errorMessage = e instanceof Error ? e.message : String(e);
|
|
83
|
+
if (format === "stream-json") {
|
|
84
|
+
out(`${JSON.stringify({ type: "error", error: errorMessage, ts: Date.now() })}\n`);
|
|
85
|
+
}
|
|
86
|
+
else if (format !== "json") {
|
|
87
|
+
err(`agent error: ${errorMessage}\n`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
unsubscribe();
|
|
92
|
+
usageUnsub();
|
|
93
|
+
process.off("SIGINT", onSigInt);
|
|
94
|
+
}
|
|
95
|
+
const exitCode = aborted ? 130 : errored ? 1 : 0;
|
|
96
|
+
if (format === "json") {
|
|
97
|
+
const payload = buildJsonResult({
|
|
98
|
+
ok: !errored && !aborted,
|
|
99
|
+
exitCode,
|
|
100
|
+
error: errorMessage,
|
|
101
|
+
messages: bundle.agent.state.messages,
|
|
102
|
+
usage: totalUsage,
|
|
103
|
+
model: { provider: bundle.model.provider, id: bundle.model.id, name: bundle.model.name },
|
|
104
|
+
source: bundle.source,
|
|
105
|
+
durationMs: Date.now() - startedAt,
|
|
106
|
+
});
|
|
107
|
+
out(`${JSON.stringify(payload)}\n`);
|
|
108
|
+
}
|
|
109
|
+
return exitCode;
|
|
110
|
+
}
|
|
111
|
+
function mergeUsage(a, b) {
|
|
112
|
+
return {
|
|
113
|
+
input: a.input + b.input,
|
|
114
|
+
output: a.output + b.output,
|
|
115
|
+
cacheRead: a.cacheRead + b.cacheRead,
|
|
116
|
+
cacheWrite: a.cacheWrite + b.cacheWrite,
|
|
117
|
+
totalTokens: a.totalTokens + b.totalTokens,
|
|
118
|
+
cost: {
|
|
119
|
+
input: a.cost.input + b.cost.input,
|
|
120
|
+
output: a.cost.output + b.cost.output,
|
|
121
|
+
cacheRead: a.cost.cacheRead + b.cost.cacheRead,
|
|
122
|
+
cacheWrite: a.cost.cacheWrite + b.cost.cacheWrite,
|
|
123
|
+
total: a.cost.total + b.cost.total,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function buildJsonResult(input) {
|
|
128
|
+
const lastAssistant = [...input.messages].reverse().find((m) => m.role === "assistant");
|
|
129
|
+
return {
|
|
130
|
+
ok: input.ok,
|
|
131
|
+
exitCode: input.exitCode,
|
|
132
|
+
...(input.error ? { error: input.error } : {}),
|
|
133
|
+
model: input.model,
|
|
134
|
+
source: input.source,
|
|
135
|
+
durationMs: input.durationMs,
|
|
136
|
+
usage: input.usage,
|
|
137
|
+
messageCount: input.messages.length,
|
|
138
|
+
finalText: lastAssistant ? extractText(lastAssistant) : "",
|
|
139
|
+
messages: input.messages,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function subscribeStreamJson(bundle, out) {
|
|
143
|
+
return bundle.subscribe((event) => {
|
|
144
|
+
// One AgentEvent per line. Inject a timestamp so consumers can
|
|
145
|
+
// reason about latency without re-deriving from clock skew.
|
|
146
|
+
out(`${JSON.stringify({ ...event, ts: Date.now() })}\n`);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function subscribeText(bundle, out, err) {
|
|
150
|
+
let lastStreamLen = 0;
|
|
151
|
+
return bundle.subscribe((event) => {
|
|
30
152
|
switch (event.type) {
|
|
31
153
|
case "tool_execution_start":
|
|
32
154
|
err(`[${event.toolName}…]\n`);
|
|
@@ -59,20 +181,6 @@ export async function runHeadless(opts) {
|
|
|
59
181
|
return;
|
|
60
182
|
}
|
|
61
183
|
});
|
|
62
|
-
try {
|
|
63
|
-
await bundle.agent.prompt(opts.prompt);
|
|
64
|
-
}
|
|
65
|
-
catch (e) {
|
|
66
|
-
errored = true;
|
|
67
|
-
err(`agent error: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
unsubscribe();
|
|
71
|
-
process.off("SIGINT", onSigInt);
|
|
72
|
-
}
|
|
73
|
-
if (aborted)
|
|
74
|
-
return 130;
|
|
75
|
-
return errored ? 1 : 0;
|
|
76
184
|
}
|
|
77
185
|
function extractText(message) {
|
|
78
186
|
if (typeof message.content === "string")
|