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
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { useEffect, useState } from "react";
4
+ /**
5
+ * Animated pixel-C brand mark. Mirrors `web/public/favicon.svg`:
6
+ * 5-row × 4-col grid, 9 filled pixels (3 top + 3 left + 3 bottom).
7
+ * Each SVG pixel renders as two block chars wide so the C reads
8
+ * proportionally in a 1:2 cell-ratio terminal.
9
+ *
10
+ * When `animate` is false, renders a static cyan C — used in the
11
+ * wizard header and OAuth-running screen as a brand mark.
12
+ *
13
+ * When `animate` is true, scans a "bright" row top → bottom through
14
+ * the C every cycle. Subtle but unmistakably alive — gives the agent
15
+ * a heartbeat during long thinking turns without burning attention.
16
+ */
17
+ const FILL = "██";
18
+ const GAP = " ";
19
+ const ROWS = [
20
+ { text: `${GAP}${FILL}${FILL}${FILL}`, step: 0 },
21
+ { text: FILL, step: 1 },
22
+ { text: FILL, step: 2 },
23
+ { text: FILL, step: 3 },
24
+ { text: `${GAP}${FILL}${FILL}${FILL}`, step: 4 },
25
+ ];
26
+ const STEPS = ROWS.length;
27
+ export function PixelC({ animate = false, color = "cyan", dimColor = "gray", intervalMs = 180 }) {
28
+ const [activeStep, setActiveStep] = useState(0);
29
+ useEffect(() => {
30
+ if (!animate)
31
+ return;
32
+ const id = setInterval(() => setActiveStep((s) => (s + 1) % STEPS), intervalMs);
33
+ return () => clearInterval(id);
34
+ }, [animate, intervalMs]);
35
+ return (_jsx(Box, { flexDirection: "column", children: ROWS.map((row) => {
36
+ const rowColor = !animate ? color : row.step === activeStep ? color : dimColor;
37
+ return (_jsx(Text, { bold: true, color: rowColor, children: row.text }, `pixc-${row.step}`));
38
+ }) }));
39
+ }
40
+ //# sourceMappingURL=PixelC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelC.js","sourceRoot":"","sources":["../../src/ui/PixelC.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;;;;;;;GAYG;AAEH,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,GAAG,GAAG,IAAI,CAAC;AAgBjB,MAAM,IAAI,GAAuB;IAChC,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IACvB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IACvB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;IACvB,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;CAChD,CAAC;AACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAE1B,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,UAAU,GAAG,GAAG,EAAe;IAC3G,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;QAChF,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,OAAO,CACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC/E,OAAO,CACN,KAAC,IAAI,IAA0B,IAAI,QAAC,KAAK,EAAE,QAAQ,YACjD,GAAG,CAAC,IAAI,IADC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAEtB,CACP,CAAC;QACH,CAAC,CAAC,GACG,CACN,CAAC;AACH,CAAC"}
package/dist/ui/Status.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { basename } from "node:path";
2
3
  import { Box, Text } from "ink";
3
4
  import { Throbber } from "./Throbber.js";
4
5
  const STATUS_LABEL = {
@@ -17,12 +18,22 @@ const STATUS_COLOR = {
17
18
  aborted: "red",
18
19
  error: "red",
19
20
  };
20
- export function Status({ state }) {
21
+ /**
22
+ * Bottom status line — matches Claude Code's pattern: spinner + state
23
+ * on the left, model + cwd + context % + cost on the right. Stays on
24
+ * one row in normal terminal widths; the cwd basename is the only
25
+ * dynamic-length piece so we always show what matters.
26
+ */
27
+ export function Status({ state, cwd, contextWindow = 200_000 }) {
21
28
  const busy = state.status === "thinking" || state.status === "streaming" || state.status === "tool";
22
29
  const label = STATUS_LABEL[state.status];
23
30
  const color = STATUS_COLOR[state.status];
24
31
  const u = state.usage;
25
- return (_jsxs(Box, { flexDirection: "column", children: [state.error ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "red", children: ["! ", state.error] }) })) : null, _jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [busy ? (_jsxs(_Fragment, { children: [_jsx(Throbber, { color: color }), _jsx(Text, { children: " " })] })) : null, _jsx(Text, { color: color, children: label })] }), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [state.model.provider, "/", state.model.id, " \u00B7 \u2193", u.input, " \u2191", u.output, " $", formatCost(u.cost.total)] }) })] })] }));
32
+ const usedTokens = u.input + u.cacheRead;
33
+ const ctxPct = contextWindow > 0 ? Math.min(100, Math.round((usedTokens / contextWindow) * 100)) : 0;
34
+ const cwdLabel = cwd ? basename(cwd) || "/" : "";
35
+ const modelLabel = state.model.name || state.model.id;
36
+ return (_jsxs(Box, { flexDirection: "column", children: [state.error ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: "red", children: ["! ", state.error] }) })) : null, _jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { children: [busy ? (_jsxs(_Fragment, { children: [_jsx(Throbber, { color: color }), _jsx(Text, { children: " " })] })) : null, _jsx(Text, { color: color, children: label })] }), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [modelLabel, cwdLabel ? ` · ${cwdLabel}` : "", " \u00B7 ", ctxPct, "% ctx \u00B7 $", formatCost(u.cost.total)] }) })] })] }));
26
37
  }
27
38
  function formatCost(value) {
28
39
  if (value === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../src/ui/Status.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC,MAAM,YAAY,GAAwC;IACzD,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,YAAY,GAAwC;IACzD,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAe;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;IACpG,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAEtB,OAAO,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACd,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACf,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,mBAAI,KAAK,CAAC,KAAK,IAAQ,GACnC,CACN,CAAC,CAAC,CAAC,IAAI,EACR,MAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe,aAC/C,MAAC,GAAG,eACF,IAAI,CAAC,CAAC,CAAC,CACP,8BACC,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,EAC1B,KAAC,IAAI,oBAAS,IACZ,CACH,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,KAAK,GAAQ,IAC7B,EACN,KAAC,GAAG,cACH,MAAC,IAAI,IAAC,QAAQ,mBACZ,KAAK,CAAC,KAAK,CAAC,QAAQ,OAAG,KAAK,CAAC,KAAK,CAAC,EAAE,oBAAM,CAAC,CAAC,KAAK,aAAI,CAAC,CAAC,MAAM,QAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IACrF,GACF,IACD,IACD,CACN,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../src/ui/Status.tsx"],"names":[],"mappings":"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"}
@@ -1,20 +1,24 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Text } from "ink";
3
3
  import { useEffect, useState } from "react";
4
- const FRAMES = ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"];
5
4
  /**
6
- * Self-throttling spinner. Owns its own interval so the parent's reducer
7
- * state isn't ticked on every frame a hot stream of message_update events
8
- * + a 100ms spinner would otherwise compound into needless full re-renders.
5
+ * 8-frame pulse cycle the codebase pixel-C "scanning" through brightness
6
+ * levels. The compact (1-char) variant cycles a single block-glyph: ░▒▓█▓▒░.
7
+ * The full pixel-C variant scans a highlight row across the C shape.
8
+ *
9
+ * Self-throttling: owns its own interval so the parent's reducer state
10
+ * doesn't tick on every frame. A hot message_update stream + a 100ms
11
+ * spinner would otherwise compound into full re-renders 10× a second.
9
12
  */
10
- export function Throbber({ color = "cyan", intervalMs = 80 }) {
13
+ const COMPACT_FRAMES = ["░", "▒", "", "█", "█", "▓", "▒", "░"];
14
+ export function Throbber({ color = "cyan", intervalMs = 90 }) {
11
15
  const [frame, setFrame] = useState(0);
12
16
  useEffect(() => {
13
17
  const id = setInterval(() => {
14
- setFrame((f) => (f + 1) % FRAMES.length);
18
+ setFrame((f) => (f + 1) % COMPACT_FRAMES.length);
15
19
  }, intervalMs);
16
20
  return () => clearInterval(id);
17
21
  }, [intervalMs]);
18
- return _jsx(Text, { color: color, children: FRAMES[frame] });
22
+ return _jsx(Text, { color: color, children: COMPACT_FRAMES[frame] });
19
23
  }
20
24
  //# sourceMappingURL=Throbber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Throbber.js","sourceRoot":"","sources":["../../src/ui/Throbber.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAOxD;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,EAAE,EAAiB;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,MAAM,CAAC,KAAK,CAAC,GAAQ,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"Throbber.js","sourceRoot":"","sources":["../../src/ui/Throbber.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;;;GAQG;AAEH,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAOhE,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,EAAE,EAAiB;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,cAAc,CAAC,KAAK,CAAC,GAAQ,CAAC;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebase-cli",
3
- "version": "2.0.0-pre.1",
3
+ "version": "2.0.0-pre.11",
4
4
  "description": "Codebase CLI — a TypeScript coding agent on the pi-mono runtime. OAuth-aware, any LLM provider, single install.",
5
5
  "keywords": [
6
6
  "ai",
@@ -52,6 +52,8 @@
52
52
  "test": "vitest --run",
53
53
  "test:watch": "vitest",
54
54
  "check": "npm run typecheck && npm run lint && npm test",
55
+ "bench": "node bench/run.mjs",
56
+ "bench:report": "node bench/aggregate.mjs",
55
57
  "prepublishOnly": "npm run clean && npm run check && npm run build",
56
58
  "prepack": "npm run build"
57
59
  },