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.
Files changed (49) hide show
  1. package/dist/agent/agent.js +16 -1
  2. package/dist/agent/agent.js.map +1 -1
  3. package/dist/agent/config.js +71 -9
  4. package/dist/agent/config.js.map +1 -1
  5. package/dist/app-server/protocol.js +7 -0
  6. package/dist/app-server/protocol.js.map +1 -0
  7. package/dist/app-server/server.js +241 -0
  8. package/dist/app-server/server.js.map +1 -0
  9. package/dist/auth/flow.js +174 -41
  10. package/dist/auth/flow.js.map +1 -1
  11. package/dist/cli.js +60 -3
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/builtins.js +272 -1
  14. package/dist/commands/builtins.js.map +1 -1
  15. package/dist/config/store.js +125 -0
  16. package/dist/config/store.js.map +1 -0
  17. package/dist/config/types.js +2 -0
  18. package/dist/config/types.js.map +1 -0
  19. package/dist/headless/run.js +129 -21
  20. package/dist/headless/run.js.map +1 -1
  21. package/dist/permissions/store.js +105 -3
  22. package/dist/permissions/store.js.map +1 -1
  23. package/dist/projects/cli.js +92 -0
  24. package/dist/projects/cli.js.map +1 -0
  25. package/dist/projects/client.js +120 -0
  26. package/dist/projects/client.js.map +1 -0
  27. package/dist/projects/types.js +2 -0
  28. package/dist/projects/types.js.map +1 -0
  29. package/dist/skills/platform-loader.js +133 -38
  30. package/dist/skills/platform-loader.js.map +1 -1
  31. package/dist/tools/config.js +74 -0
  32. package/dist/tools/config.js.map +1 -0
  33. package/dist/tools/dispatch-agent.js +16 -0
  34. package/dist/tools/dispatch-agent.js.map +1 -1
  35. package/dist/tools/registry.js +4 -0
  36. package/dist/tools/registry.js.map +1 -1
  37. package/dist/ui/App.js +1 -1
  38. package/dist/ui/App.js.map +1 -1
  39. package/dist/ui/FirstRunSetup.js +92 -15
  40. package/dist/ui/FirstRunSetup.js.map +1 -1
  41. package/dist/ui/Message.js +80 -1
  42. package/dist/ui/Message.js.map +1 -1
  43. package/dist/ui/PixelC.js +40 -0
  44. package/dist/ui/PixelC.js.map +1 -0
  45. package/dist/ui/Status.js +13 -2
  46. package/dist/ui/Status.js.map +1 -1
  47. package/dist/ui/Throbber.js +11 -7
  48. package/dist/ui/Throbber.js.map +1 -1
  49. 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
- export const BUILTIN_COMMANDS = [help, clear, compact, session, cost, modelCmd, whoami, copy, exit];
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":"AACA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG7E,MAAM,IAAI,GAAY;IACrB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,gCAAgC;IAC7C,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,KAAK,GAAa,CAAC,2BAA2B,CAAC,CAAC;QACtD,MAAM,GAAG,GAAI,GAA2D,CAAC,QAAQ,CAAC;QAClF,sEAAsE;QACtE,uEAAuE;QACvE,8BAA8B;QAC9B,IAAI,GAAG,EAAE,CAAC;YACT,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,SAAS,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,KAAK,GAAY;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,iEAAiE;IAC9E,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,GAAG,CAAC,YAAY,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,OAAO,GAAY;IACxB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oDAAoD;IACjE,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClD,GAAG,CAAC,IAAI,CACP,aAAa,MAAM,CAAC,OAAO,CAAC,qBAAqB,eAAe,MAAM,CAAC,OAAO,CAAC,eAAe,YAAY;YACzG,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,oBAAoB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,qCAAqC,CAC/H,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,OAAO,GAAY;IACxB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,WAAW,EAAE,mDAAmD;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG;YACb,aAAa,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG;YAC3E,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpC,cAAc,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,EAAE;YAC3E,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvC,aAAa,MAAM,CAAC,MAAM,EAAE;SAC5B,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,IAAI,GAAY;IACrB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,oFAAoF;IACjG,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QAC1E,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC;QAC3C,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/F,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExF,MAAM,KAAK,GAAG;YACb,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE;YACvD,EAAE;YACF,SAAS;YACT,mBAAmB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACrE,mBAAmB,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACvE,mBAAmB,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,WAAW;YAClG,mBAAmB,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC/E,EAAE;YACF,KAAK,GAAG,CAAC;gBACR,CAAC,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBACjF,CAAC,CAAC,yBAAyB;SAC5B,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,SAAS,MAAM,CAAC,CAAS,EAAE,KAAa;IACvC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,QAAQ,GAAY;IACzB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,MAAM,GAAY;IACvB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,8BAA8B;IAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,IAAI,CACP,MAAM,KAAK,OAAO;YACjB,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,MAAM,KAAK,UAAU;gBACtB,CAAC,CAAC,6DAA6D;gBAC/D,CAAC,CAAC,uCAAuC,CAC3C,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,IAAI,GAAY;IACrB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAEF,MAAM,IAAI,GAAY;IACrB,IAAI,EAAE,MAAM;IACZ,WAAW,EACV,yHAAyH;IAC1H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,SAAS,CAAC;YACvG,GAAG,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC;AAOF,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAAiC;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiC;IAC3D,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,OAAqB;IACzC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAiD,EAAE,CAAC;QAC/E,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC"}
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,2 @@
1
+ export const EMPTY_CONFIG = Object.freeze({});
2
+ //# sourceMappingURL=types.js.map
@@ -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"}
@@ -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: stream assistant text to stdout,
5
- * tool activity to stderr (for diagnostic visibility without polluting
6
- * piped output), exit on agent_end. Designed for CI / scripting use:
7
- * `codebase run "summarize this repo" > out.md`.
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
- let lastStreamLen = 0;
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
- const unsubscribe = bundle.subscribe((event) => {
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")