codebase-cli 2.0.0-pre.1 → 2.0.0-pre.3

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.
@@ -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,14 +1,37 @@
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
37
  bundle = createAgent({ resume: opts.resume });
@@ -18,15 +41,114 @@ export async function runHeadless(opts) {
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")
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/headless/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/headless/run.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,80 @@
1
1
  import { shellNeedsPermission } from "../tools/permission.js";
2
+ /**
3
+ * Convert a permission pattern's arg-glob portion into a regex.
4
+ * `*` → `.*`, `?` → `.`, everything else escaped. Anchored.
5
+ */
6
+ function compileGlob(glob) {
7
+ const escaped = glob
8
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
9
+ .replace(/\*/g, ".*")
10
+ .replace(/\?/g, ".");
11
+ return new RegExp(`^${escaped}$`);
12
+ }
13
+ /**
14
+ * Pull the "primary string arg" from a tool-call args object. This
15
+ * is the value users typically want to glob against — the shell
16
+ * command, the file path, the URL, etc. Falls back to the JSON
17
+ * stringification so unknown tools still match in some way.
18
+ */
19
+ function primaryArgString(toolName, args) {
20
+ const a = (args ?? {});
21
+ const pick = (k) => (typeof a[k] === "string" ? a[k] : "");
22
+ switch (toolName) {
23
+ case "shell":
24
+ return pick("command") || pick("cmd");
25
+ case "read_file":
26
+ case "write_file":
27
+ case "edit_file":
28
+ case "multi_edit":
29
+ case "notebook_edit":
30
+ return pick("path") || pick("file_path");
31
+ case "list_files":
32
+ return pick("path");
33
+ case "glob":
34
+ case "grep":
35
+ return pick("pattern");
36
+ case "web_fetch":
37
+ return pick("url");
38
+ case "web_search":
39
+ return pick("query");
40
+ default:
41
+ try {
42
+ return JSON.stringify(args);
43
+ }
44
+ catch {
45
+ return "";
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Compile a config-supplied list of `tool` or `tool:glob` patterns.
51
+ * Returns a matcher closure; the closure returns true when the tool
52
+ * call matches any pattern in the list.
53
+ */
54
+ function compileMatcher(patterns) {
55
+ if (patterns.length === 0)
56
+ return () => false;
57
+ const compiled = patterns.map((pattern) => {
58
+ const colonIdx = pattern.indexOf(":");
59
+ if (colonIdx < 0) {
60
+ return { tool: pattern, regex: null };
61
+ }
62
+ const tool = pattern.slice(0, colonIdx);
63
+ const glob = pattern.slice(colonIdx + 1);
64
+ return { tool, regex: compileGlob(glob) };
65
+ });
66
+ return (toolName, args) => {
67
+ for (const { tool, regex } of compiled) {
68
+ if (tool !== toolName)
69
+ continue;
70
+ if (!regex)
71
+ return true;
72
+ if (regex.test(primaryArgString(toolName, args)))
73
+ return true;
74
+ }
75
+ return false;
76
+ };
77
+ }
2
78
  /**
3
79
  * Tools that never need a permission prompt. The full read-only set
4
80
  * (audit-flagged "read-only allowlist" from permission.go) plus the task
@@ -26,14 +102,26 @@ const ALWAYS_ALLOWED = new Set([
26
102
  // Memory tools are user-context, not destructive code edits — auto-allow.
27
103
  "save_memory",
28
104
  "read_memory",
105
+ // `config` is read-only.
106
+ "config",
29
107
  ]);
30
108
  /**
31
109
  * Per-agent-instance permission store. Used by the agent's
32
110
  * beforeToolCall hook to decide whether to allow, prompt, or block.
33
111
  *
34
- * Trust state is in-memory and session-scoped — restarting the CLI
35
- * resets all per-tool/global trust. Persisting trust across sessions
36
- * lands in Phase 6 (config) so users can choose what to remember.
112
+ * Decision order, highest priority first:
113
+ * 1. config-supplied deny patterns → block immediately
114
+ * 2. session-scoped "trust-all" response allow
115
+ * 3. session-scoped "trust-tool" response → allow for that tool
116
+ * 4. built-in ALWAYS_ALLOWED read-only set → allow
117
+ * 5. config-supplied allow patterns → allow
118
+ * 6. shell-/git-branch-specific read heuristics → allow
119
+ * 7. otherwise → prompt the user
120
+ *
121
+ * Trust state from interactive responses is in-memory (session-only).
122
+ * Persisting it across sessions is what the config layer is for —
123
+ * users can promote a session-scoped trust to a config entry by
124
+ * editing ~/.codebase/config.json.
37
125
  */
38
126
  export class PermissionStore {
39
127
  trustAll = false;
@@ -41,9 +129,19 @@ export class PermissionStore {
41
129
  queue = [];
42
130
  listeners = new Set();
43
131
  counter = 0;
132
+ matchAllow;
133
+ matchDeny;
134
+ constructor(options = {}) {
135
+ this.matchAllow = compileMatcher(options.allowPatterns ?? []);
136
+ this.matchDeny = compileMatcher(options.denyPatterns ?? []);
137
+ }
44
138
  async evaluate(toolName, args) {
139
+ if (this.matchDeny(toolName, args))
140
+ return "block";
45
141
  if (this.shouldAutoAllow(toolName, args))
46
142
  return "allow";
143
+ if (this.matchAllow(toolName, args))
144
+ return "allow";
47
145
  return new Promise((resolve) => {
48
146
  const request = {
49
147
  id: `perm-${++this.counter}`,
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/permissions/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/permissions/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { Type } from "typebox";
2
+ import { ConfigStore } from "../config/store.js";
3
+ const Params = Type.Object({
4
+ path: Type.Optional(Type.String({
5
+ description: "Dotted path to read a single value (e.g. `permissions.allow`). Omit to return the whole merged config.",
6
+ })),
7
+ });
8
+ const DESCRIPTION = `Read the merged codebase-cli config (user defaults + project overrides + local overrides).
9
+
10
+ The config has three layers, merged later-wins for scalars, additive-merge for permission patterns:
11
+ 1. ~/.codebase/config.json — user defaults
12
+ 2. <cwd>/.codebase/config.json — project, committed
13
+ 3. ~/.codebase/config.local.json — local override, gitignored
14
+
15
+ Useful for: checking which permission allowlists are active, reading user-set theme/model preferences, debugging why a tool was/wasn't auto-allowed.
16
+
17
+ This tool is read-only. To change config, edit the JSON files directly or ask the user to run a slash command.`;
18
+ export function createConfig(ctx) {
19
+ return {
20
+ name: "config",
21
+ label: "Config",
22
+ description: DESCRIPTION,
23
+ parameters: Params,
24
+ executionMode: "parallel",
25
+ execute: async (_toolCallId, params) => {
26
+ const store = new ConfigStore({ cwd: ctx.cwd });
27
+ const merged = store.load();
28
+ const value = params.path ? readPath(merged, params.path) : merged;
29
+ const formatted = JSON.stringify(value, null, 2);
30
+ return {
31
+ content: [
32
+ {
33
+ type: "text",
34
+ text: params.path
35
+ ? `${params.path}:\n${formatted}`
36
+ : `merged config (sources: ${store.sources.join(", ")}):\n${formatted}`,
37
+ },
38
+ ],
39
+ details: {
40
+ path: params.path,
41
+ sources: store.sources,
42
+ value,
43
+ },
44
+ };
45
+ },
46
+ };
47
+ }
48
+ /**
49
+ * Resolve a dotted path against an object. Missing intermediate keys
50
+ * yield `undefined`. Array indices via numeric segments are supported
51
+ * (`messages.3.content`).
52
+ */
53
+ function readPath(obj, path) {
54
+ const segments = path.split(".").filter((s) => s.length > 0);
55
+ let current = obj;
56
+ for (const seg of segments) {
57
+ if (current === null || current === undefined)
58
+ return undefined;
59
+ if (Array.isArray(current)) {
60
+ const idx = Number.parseInt(seg, 10);
61
+ if (Number.isNaN(idx))
62
+ return undefined;
63
+ current = current[idx];
64
+ continue;
65
+ }
66
+ if (typeof current === "object") {
67
+ current = current[seg];
68
+ continue;
69
+ }
70
+ return undefined;
71
+ }
72
+ return current;
73
+ }
74
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EACV,wGAAwG;KACzG,CAAC,CACF;CACD,CAAC,CAAC;AAUH,MAAM,WAAW,GAAG;;;;;;;;;+GAS2F,CAAC;AAEhH,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC5C,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,UAAU;QACzB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO;gBACN,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,CAAC,IAAI;4BAChB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,MAAM,SAAS,EAAE;4BACjC,CAAC,CAAC,2BAA2B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,SAAS,EAAE;qBACxE;iBACD;gBACD,OAAO,EAAE;oBACR,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK;iBACL;aACD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,SAAS;QACV,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;YACpD,SAAS;QACV,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -58,6 +58,15 @@ export function createDispatchAgent(ctx) {
58
58
  const toolsUsed = [];
59
59
  let lastAssistantText = "";
60
60
  let usage = EMPTY_USAGE;
61
+ let success = false;
62
+ await ctx.hooks?.dispatch("SubagentStart", {
63
+ event: "SubagentStart",
64
+ workingDir: ctx.cwd,
65
+ // dispatch_agent currently only ships a read-only subagent type;
66
+ // when planAgent / generalAgent variants land we'll surface them.
67
+ subagentType: "read-only",
68
+ subagentPrompt: params.task,
69
+ }, parentSignal);
61
70
  const subagent = ctx.spawnSubagent({
62
71
  systemPrompt: subagentSystemPrompt(params.task, ctx.cwd),
63
72
  tools: buildSubagentTools(ctx),
@@ -90,6 +99,7 @@ export function createDispatchAgent(ctx) {
90
99
  });
91
100
  try {
92
101
  await subagent.prompt(params.task);
102
+ success = true;
93
103
  }
94
104
  catch (err) {
95
105
  if (parentSignal?.aborted)
@@ -103,6 +113,12 @@ export function createDispatchAgent(ctx) {
103
113
  finally {
104
114
  unsubscribe();
105
115
  parentSignal?.removeEventListener("abort", onParentAbort);
116
+ await ctx.hooks?.dispatch("SubagentStop", {
117
+ event: "SubagentStop",
118
+ workingDir: ctx.cwd,
119
+ subagentType: "read-only",
120
+ subagentSuccess: success,
121
+ }, parentSignal);
106
122
  }
107
123
  const finalText = lastAssistantText || "(subagent completed without producing a summary)";
108
124
  const summary = maxTurnsReached
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch-agent.js","sourceRoot":"","sources":["../../src/tools/dispatch-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch-agent.js","sourceRoot":"","sources":["../../src/tools/dispatch-agent.ts"],"names":[],"mappings":"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"}