pi-agent-flow 2.2.32 → 2.3.0

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 (184) hide show
  1. package/agents/craft.md +2 -1
  2. package/agents/debug.md +2 -1
  3. package/agents/ideas.md +2 -1
  4. package/agents/scout.md +1 -0
  5. package/dist/batch/apply-patch.d.ts.map +1 -1
  6. package/dist/batch/apply-patch.js +22 -0
  7. package/dist/batch/apply-patch.js.map +1 -1
  8. package/dist/batch/batch-bash.d.ts +5 -3
  9. package/dist/batch/batch-bash.d.ts.map +1 -1
  10. package/dist/batch/batch-bash.js +6 -13
  11. package/dist/batch/batch-bash.js.map +1 -1
  12. package/dist/batch/constants.d.ts +4 -0
  13. package/dist/batch/constants.d.ts.map +1 -1
  14. package/dist/batch/constants.js +1 -0
  15. package/dist/batch/constants.js.map +1 -1
  16. package/dist/batch/execute.d.ts.map +1 -1
  17. package/dist/batch/execute.js +117 -4
  18. package/dist/batch/execute.js.map +1 -1
  19. package/dist/batch/format-directory-listing.d.ts +26 -0
  20. package/dist/batch/format-directory-listing.d.ts.map +1 -0
  21. package/dist/batch/format-directory-listing.js +89 -0
  22. package/dist/batch/format-directory-listing.js.map +1 -0
  23. package/dist/batch/fuzzy-edit.d.ts +1 -1
  24. package/dist/batch/fuzzy-edit.d.ts.map +1 -1
  25. package/dist/batch/fuzzy-edit.js +53 -17
  26. package/dist/batch/fuzzy-edit.js.map +1 -1
  27. package/dist/batch/index.d.ts +6 -68
  28. package/dist/batch/index.d.ts.map +1 -1
  29. package/dist/batch/index.js +7 -494
  30. package/dist/batch/index.js.map +1 -1
  31. package/dist/batch/summary.d.ts.map +1 -1
  32. package/dist/batch/summary.js +146 -0
  33. package/dist/batch/summary.js.map +1 -1
  34. package/dist/cli/batch-read.d.ts +20 -0
  35. package/dist/cli/batch-read.d.ts.map +1 -0
  36. package/dist/cli/batch-read.js +267 -0
  37. package/dist/cli/batch-read.js.map +1 -0
  38. package/dist/cli/batch.d.ts +20 -0
  39. package/dist/cli/batch.d.ts.map +1 -0
  40. package/dist/cli/batch.js +252 -0
  41. package/dist/cli/batch.js.map +1 -0
  42. package/dist/cli/chain.d.ts +24 -0
  43. package/dist/cli/chain.d.ts.map +1 -0
  44. package/dist/cli/chain.js +166 -0
  45. package/dist/cli/chain.js.map +1 -0
  46. package/dist/cli/exec/bash.d.ts +11 -0
  47. package/dist/cli/exec/bash.d.ts.map +1 -0
  48. package/dist/cli/exec/bash.js +63 -0
  49. package/dist/cli/exec/bash.js.map +1 -0
  50. package/dist/cli/exec/delete.d.ts +10 -0
  51. package/dist/cli/exec/delete.d.ts.map +1 -0
  52. package/dist/cli/exec/delete.js +21 -0
  53. package/dist/cli/exec/delete.js.map +1 -0
  54. package/dist/cli/exec/edit.d.ts +10 -0
  55. package/dist/cli/exec/edit.d.ts.map +1 -0
  56. package/dist/cli/exec/edit.js +47 -0
  57. package/dist/cli/exec/edit.js.map +1 -0
  58. package/dist/cli/exec/index.d.ts +10 -0
  59. package/dist/cli/exec/index.d.ts.map +1 -0
  60. package/dist/cli/exec/index.js +10 -0
  61. package/dist/cli/exec/index.js.map +1 -0
  62. package/dist/cli/exec/patch.d.ts +10 -0
  63. package/dist/cli/exec/patch.d.ts.map +1 -0
  64. package/dist/cli/exec/patch.js +23 -0
  65. package/dist/cli/exec/patch.js.map +1 -0
  66. package/dist/cli/exec/poll.d.ts +12 -0
  67. package/dist/cli/exec/poll.d.ts.map +1 -0
  68. package/dist/cli/exec/poll.js +59 -0
  69. package/dist/cli/exec/poll.js.map +1 -0
  70. package/dist/cli/exec/read.d.ts +10 -0
  71. package/dist/cli/exec/read.d.ts.map +1 -0
  72. package/dist/cli/exec/read.js +54 -0
  73. package/dist/cli/exec/read.js.map +1 -0
  74. package/dist/cli/exec/rg.d.ts +10 -0
  75. package/dist/cli/exec/rg.d.ts.map +1 -0
  76. package/dist/cli/exec/rg.js +32 -0
  77. package/dist/cli/exec/rg.js.map +1 -0
  78. package/dist/cli/exec/web.d.ts +13 -0
  79. package/dist/cli/exec/web.d.ts.map +1 -0
  80. package/dist/cli/exec/web.js +47 -0
  81. package/dist/cli/exec/web.js.map +1 -0
  82. package/dist/cli/exec/write.d.ts +10 -0
  83. package/dist/cli/exec/write.d.ts.map +1 -0
  84. package/dist/cli/exec/write.js +26 -0
  85. package/dist/cli/exec/write.js.map +1 -0
  86. package/dist/cli/flags/bash.d.ts +3 -0
  87. package/dist/cli/flags/bash.d.ts.map +1 -0
  88. package/dist/cli/flags/bash.js +6 -0
  89. package/dist/cli/flags/bash.js.map +1 -0
  90. package/dist/cli/flags/delete.d.ts +3 -0
  91. package/dist/cli/flags/delete.d.ts.map +1 -0
  92. package/dist/cli/flags/delete.js +2 -0
  93. package/dist/cli/flags/delete.js.map +1 -0
  94. package/dist/cli/flags/edit.d.ts +3 -0
  95. package/dist/cli/flags/edit.d.ts.map +1 -0
  96. package/dist/cli/flags/edit.js +7 -0
  97. package/dist/cli/flags/edit.js.map +1 -0
  98. package/dist/cli/flags/index.d.ts +10 -0
  99. package/dist/cli/flags/index.d.ts.map +1 -0
  100. package/dist/cli/flags/index.js +10 -0
  101. package/dist/cli/flags/index.js.map +1 -0
  102. package/dist/cli/flags/patch.d.ts +3 -0
  103. package/dist/cli/flags/patch.d.ts.map +1 -0
  104. package/dist/cli/flags/patch.js +4 -0
  105. package/dist/cli/flags/patch.js.map +1 -0
  106. package/dist/cli/flags/poll.d.ts +3 -0
  107. package/dist/cli/flags/poll.d.ts.map +1 -0
  108. package/dist/cli/flags/poll.js +4 -0
  109. package/dist/cli/flags/poll.js.map +1 -0
  110. package/dist/cli/flags/read.d.ts +3 -0
  111. package/dist/cli/flags/read.d.ts.map +1 -0
  112. package/dist/cli/flags/read.js +6 -0
  113. package/dist/cli/flags/read.js.map +1 -0
  114. package/dist/cli/flags/rg.d.ts +3 -0
  115. package/dist/cli/flags/rg.d.ts.map +1 -0
  116. package/dist/cli/flags/rg.js +9 -0
  117. package/dist/cli/flags/rg.js.map +1 -0
  118. package/dist/cli/flags/web.d.ts +3 -0
  119. package/dist/cli/flags/web.d.ts.map +1 -0
  120. package/dist/cli/flags/web.js +6 -0
  121. package/dist/cli/flags/web.js.map +1 -0
  122. package/dist/cli/flags/write.d.ts +3 -0
  123. package/dist/cli/flags/write.d.ts.map +1 -0
  124. package/dist/cli/flags/write.js +4 -0
  125. package/dist/cli/flags/write.js.map +1 -0
  126. package/dist/cli/flow.d.ts +33 -0
  127. package/dist/cli/flow.d.ts.map +1 -0
  128. package/dist/cli/flow.js +345 -0
  129. package/dist/cli/flow.js.map +1 -0
  130. package/dist/cli/format.d.ts +12 -0
  131. package/dist/cli/format.d.ts.map +1 -0
  132. package/dist/cli/format.js +29 -0
  133. package/dist/cli/format.js.map +1 -0
  134. package/dist/cli/help.d.ts +14 -0
  135. package/dist/cli/help.d.ts.map +1 -0
  136. package/dist/cli/help.js +31 -0
  137. package/dist/cli/help.js.map +1 -0
  138. package/dist/cli/parse.d.ts +24 -0
  139. package/dist/cli/parse.d.ts.map +1 -0
  140. package/dist/cli/parse.js +165 -0
  141. package/dist/cli/parse.js.map +1 -0
  142. package/dist/cli/register.d.ts +73 -0
  143. package/dist/cli/register.d.ts.map +1 -0
  144. package/dist/cli/register.js +105 -0
  145. package/dist/cli/register.js.map +1 -0
  146. package/dist/cli/tokenize.d.ts +9 -0
  147. package/dist/cli/tokenize.d.ts.map +1 -0
  148. package/dist/cli/tokenize.js +80 -0
  149. package/dist/cli/tokenize.js.map +1 -0
  150. package/dist/core2/snapshot.d.ts.map +1 -1
  151. package/dist/core2/snapshot.js +22 -0
  152. package/dist/core2/snapshot.js.map +1 -1
  153. package/dist/flow/agents.d.ts +2 -0
  154. package/dist/flow/agents.d.ts.map +1 -1
  155. package/dist/flow/agents.js +2 -0
  156. package/dist/flow/agents.js.map +1 -1
  157. package/dist/flow/executor.d.ts.map +1 -1
  158. package/dist/flow/executor.js +1 -0
  159. package/dist/flow/executor.js.map +1 -1
  160. package/dist/flow/flow-args.d.ts.map +1 -1
  161. package/dist/flow/flow-args.js +1 -0
  162. package/dist/flow/flow-args.js.map +1 -1
  163. package/dist/index.d.ts +1 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +159 -214
  166. package/dist/index.js.map +1 -1
  167. package/dist/steering/flow-prompt.js +2 -2
  168. package/dist/steering/flow-prompt.js.map +1 -1
  169. package/dist/steering/sliding-prompt.d.ts.map +1 -1
  170. package/dist/steering/sliding-prompt.js +9 -20
  171. package/dist/steering/sliding-prompt.js.map +1 -1
  172. package/dist/tools/ask-user.d.ts +1 -4
  173. package/dist/tools/ask-user.d.ts.map +1 -1
  174. package/dist/tools/ask-user.js +7 -33
  175. package/dist/tools/ask-user.js.map +1 -1
  176. package/dist/tools/trace.d.ts +12 -6
  177. package/dist/tools/trace.d.ts.map +1 -1
  178. package/dist/tools/trace.js +157 -163
  179. package/dist/tools/trace.js.map +1 -1
  180. package/dist/tools/web-ops.d.ts +40 -0
  181. package/dist/tools/web-ops.d.ts.map +1 -1
  182. package/dist/tools/web-ops.js +2 -2
  183. package/dist/tools/web-ops.js.map +1 -1
  184. package/package.json +1 -1
@@ -1,171 +1,112 @@
1
1
  /**
2
2
  * Trace tool — standalone quick verbatim reads and checks.
3
3
  *
4
- * Split from the `flow` tool to eliminate the confusion where the agent
5
- * nested dispatch ops as siblings in the `flow[]` array instead of inside
6
- * a task object. Trace is self-defining (agents/trace.md already
7
- * contains the full mission), so it needs zero required fields.
4
+ * Bash-style CLI: single `cmd` field with optional flags and pre-flight dispatch.
8
5
  */
9
6
  import { Type } from "@sinclair/typebox";
10
7
  import { runFlowWithLiveSession } from "../flow/flow-live.js";
11
- import { discoverFlows, getFlowTier } from "../flow/agents.js";
8
+ import { discoverFlows } from "../flow/agents.js";
12
9
  import { buildSnapshotWithCompression, parseSharedContext } from "../core2/snapshot.js";
13
10
  import { resolveFlowModelCandidates, resolveModelContextWindow, selectFlowModelStrategy, } from "../config/config.js";
14
11
  import { renderFlowCall, renderFlowResult } from "../tui/render.js";
15
12
  import { getFlowLiveState } from "../tui/flow-live-state.js";
16
13
  import { DEFAULT_FLOW_COLORS } from "../tui/flow-colors.js";
17
14
  import { getFlowOutput } from "../types/flow.js";
18
- import { executeOperations } from "../batch/execute.js";
19
- import { runBashWithLimits } from "../batch/batch-bash.js";
20
15
  import { logWarn } from "../config/log.js";
21
- import { runWebOps } from "./web-ops.js";
22
- import { BASH_DEFAULT_TIMEOUT_MS } from "../batch/constants.js";
23
16
  import { extractTraceStructuredOutput, resolveToolEvidence } from "../snapshot/trace-output.js";
17
+ import { runBatchCli } from "../cli/batch.js";
18
+ import { splitOnDoubleDash } from "../cli/chain.js";
19
+ import { tokenize } from "../cli/tokenize.js";
20
+ import { parseCommand, CliError } from "../cli/parse.js";
24
21
  // ---------------------------------------------------------------------------
25
- // Dispatch schemas — mirror of the flow-tool dispatch (kept here to avoid
26
- // circular imports with src/index.ts).
22
+ // Help text
27
23
  // ---------------------------------------------------------------------------
28
- const BatchDispatchOp = Type.Object({
29
- tool: Type.Literal("batch"),
30
- ops: Type.Array(Type.Object({
31
- o: Type.String(),
32
- p: Type.Optional(Type.String()),
33
- s: Type.Optional(Type.Number()),
34
- l: Type.Optional(Type.Number()),
35
- i: Type.Optional(Type.Union([Type.String(), Type.Boolean()])),
36
- t: Type.Optional(Type.Union([Type.Number(), Type.String()])),
37
- c: Type.Optional(Type.String()),
38
- e: Type.Optional(Type.Array(Type.Object({ f: Type.String(), r: Type.String() }))),
39
- h: Type.Optional(Type.String()),
40
- q: Type.Optional(Type.String()),
41
- n: Type.Optional(Type.Number()),
42
- u: Type.Optional(Type.Number()),
43
- }), { description: "File/batch operations matching the batch tool schema." }),
44
- });
45
- const BashDispatchOp = Type.Object({
46
- tool: Type.Literal("bash"),
47
- ops: Type.Array(Type.Object({
48
- c: Type.String({ description: "Shell command" }),
49
- h: Type.Optional(Type.String({ description: "Working directory override" })),
50
- t: Type.Optional(Type.Number({ description: "Timeout in ms" })),
51
- }), { description: "Bash command objects." }),
52
- });
53
- const WebDispatchOp = Type.Object({
54
- tool: Type.Literal("web"),
55
- ops: Type.Array(Type.Object({
56
- o: Type.Union([Type.Literal("search"), Type.Literal("fetch")]),
57
- q: Type.Optional(Type.String()),
58
- u: Type.Optional(Type.String()),
59
- f: Type.Optional(Type.String()),
60
- }), { description: "Web operations matching the web tool schema." }),
61
- });
62
- const DispatchOpSchema = Type.Union([BatchDispatchOp, BashDispatchOp, WebDispatchOp], {
63
- description: "Pre-dispatch tool call with discriminated tool type and typed ops array.",
64
- });
65
- async function executeDispatchOps(dispatch, cwd, ctx, signal) {
66
- const parts = [];
67
- const messages = [];
68
- let toolCallIndex = 0;
69
- for (const group of dispatch) {
70
- if (signal?.aborted)
71
- break;
72
- const toolCallId = `pre_dispatch_${group.tool}_${toolCallIndex++}`;
73
- let resultString = "";
74
- try {
75
- if (group.tool === "batch") {
76
- const fileOps = group.ops.filter((op) => op.o !== "bash");
77
- const bashOps = group.ops.filter((op) => op.o === "bash");
78
- const subParts = [];
79
- if (fileOps.length > 0) {
80
- const fileOutput = await executeOperations(fileOps, cwd, signal, { includeLimitWarnings: true });
81
- subParts.push(fileOutput.contentText);
82
- }
83
- if (bashOps.length > 0) {
84
- for (const op of bashOps) {
85
- const { stdout, stderr, exitCode } = await runBashWithLimits(op.c ?? "", op.h ?? cwd, op.t ?? BASH_DEFAULT_TIMEOUT_MS, signal);
86
- subParts.push(`stdout:\n${stdout}${stderr ? `\nstderr:\n${stderr}` : ""}${exitCode !== 0 ? `\nexitCode: ${exitCode}` : ""}`);
87
- }
88
- }
89
- resultString = subParts.join("\n\n");
90
- parts.push(`### batch (file ops)\n\ntool_call_id: ${toolCallId}\n\n${resultString}`);
91
- }
92
- else if (group.tool === "bash") {
93
- const subParts = [];
94
- for (const cmd of group.ops) {
95
- const { stdout, stderr, exitCode } = await runBashWithLimits(cmd.c, cmd.h ?? cwd, cmd.t ?? BASH_DEFAULT_TIMEOUT_MS, signal);
96
- subParts.push(`stdout:\n${stdout}${stderr ? `\nstderr:\n${stderr}` : ""}${exitCode !== 0 ? `\nexitCode: ${exitCode}` : ""}`);
97
- }
98
- resultString = subParts.join("\n\n");
99
- parts.push(`### bash\n\ntool_call_id: ${toolCallId}\n\n${resultString}`);
100
- }
101
- else if (group.tool === "web") {
102
- const webOutput = await runWebOps({ op: group.ops }, ctx, signal);
103
- resultString = webOutput.content[0].text;
104
- parts.push(`### web\n\ntool_call_id: ${toolCallId}\n\n${resultString}`);
105
- }
106
- }
107
- catch (err) {
108
- resultString = `Error: ${err instanceof Error ? err.message : String(err)}`;
109
- parts.push(`### ${group.tool}\n\ntool_call_id: ${toolCallId}\n\n${resultString}`);
110
- }
111
- // Add mock messages
112
- messages.push({
113
- role: "assistant",
114
- content: [
115
- {
116
- type: "toolCall",
117
- toolCallId,
118
- name: group.tool,
119
- arguments: group.tool === "batch"
120
- ? { o: group.ops }
121
- : group.tool === "bash"
122
- ? { ops: group.ops }
123
- : { op: group.ops },
124
- }
125
- ]
126
- });
127
- messages.push({
128
- role: "tool",
129
- toolCallId,
130
- content: [
131
- {
132
- type: "text",
133
- text: resultString,
134
- }
135
- ]
136
- });
24
+ const TRACE_HELP = `trace — read-first investigation tool
25
+
26
+ USAGE:
27
+ trace [flags] [-- <batch-dispatch>]
28
+
29
+ FLAGS:
30
+ --intent <text> Mission override. Default: trace agent's built-in description.
31
+ --cwd <path> Working directory override. Default: session cwd.
32
+ --complexity <level> snap | simple | moderate | complex | intricate. Default: simple.
33
+ --help, -h Show this help text.
34
+
35
+ DISPATCH:
36
+ Everything after the first top-level \`--\` is a batch-style command.
37
+ Examples:
38
+ trace -- batch read src/index.ts
39
+ trace --intent "verify auth" -- batch read src/auth.ts; batch rg -q "password" src/
40
+
41
+ EXAMPLES:
42
+ trace # default mission, no dispatch
43
+ trace --intent "verify auth" # override mission
44
+ trace --cwd /tmp # override cwd
45
+ trace --complexity moderate # override budget
46
+ trace -- batch read foo.txt # pre-flight read
47
+ trace help # show this help
48
+ `;
49
+ // ---------------------------------------------------------------------------
50
+ // Flag spec
51
+ // ---------------------------------------------------------------------------
52
+ const TRACE_FLAG_SPEC = {
53
+ intent: { short: "i", type: "string", description: "Mission override" },
54
+ cwd: { type: "string", description: "Working directory override" },
55
+ complexity: { short: "c", type: "string", description: "Budget level: snap, simple, moderate, complex, intricate" },
56
+ help: { short: "h", type: "boolean", description: "Show help" },
57
+ };
58
+ const VALID_COMPLEXITY = ["snap", "simple", "moderate", "complex", "intricate"];
59
+ // ---------------------------------------------------------------------------
60
+ // Command parser
61
+ // ---------------------------------------------------------------------------
62
+ export function parseTraceCmd(cmd) {
63
+ const trimmed = cmd.trim();
64
+ if (trimmed.length === 0 || trimmed === "help" || trimmed === "--help" || trimmed === "-h") {
65
+ return { flags: {}, dispatch: "", help: true };
137
66
  }
138
- return {
139
- promptString: parts.join("\n\n"),
140
- messages,
141
- };
67
+ const { pre, post } = splitOnDoubleDash(trimmed);
68
+ let tokens = tokenize(pre);
69
+ if (tokens[0] === "trace") {
70
+ tokens.shift();
71
+ }
72
+ if (tokens.length > 0 && (tokens[0] === "help" || tokens[0] === "--help" || tokens[0] === "-h")) {
73
+ return { flags: {}, dispatch: "", help: true };
74
+ }
75
+ if (tokens.length === 0) {
76
+ return { flags: {}, dispatch: post.trim(), help: false };
77
+ }
78
+ // Prepend dummy subcommand so parseCommand can parse flags
79
+ tokens.unshift("trace");
80
+ const parsed = parseCommand(tokens, TRACE_FLAG_SPEC);
81
+ if (parsed.flags.help) {
82
+ return { flags: {}, dispatch: "", help: true };
83
+ }
84
+ const flags = {};
85
+ if (parsed.flags.intent) {
86
+ flags.intent = String(parsed.flags.intent);
87
+ }
88
+ if (parsed.flags.cwd) {
89
+ flags.cwd = String(parsed.flags.cwd);
90
+ }
91
+ if (parsed.flags.complexity) {
92
+ flags.complexity = String(parsed.flags.complexity);
93
+ }
94
+ if (flags.complexity && !VALID_COMPLEXITY.includes(flags.complexity)) {
95
+ throw new CliError(`Invalid complexity: ${flags.complexity}`, `Valid levels: ${VALID_COMPLEXITY.join(", ")}`);
96
+ }
97
+ return { flags, dispatch: post.trim(), help: false };
142
98
  }
143
99
  // ---------------------------------------------------------------------------
144
- // Override tool params — zero required fields
100
+ // Schema
145
101
  // ---------------------------------------------------------------------------
146
- export const TraceParams = Type.Object({
147
- intent: Type.Optional(Type.String({
148
- description: "Optional mission override. Defaults to the trace agent's built-in description.",
149
- })),
150
- dispatch: Type.Optional(Type.Array(DispatchOpSchema, {
151
- description: "Tools to run before the trace starts (results injected into prompt).",
152
- })),
153
- cwd: Type.Optional(Type.String({ description: "Working directory override." })),
154
- complexity: Type.Optional(Type.Union([
155
- Type.Literal("snap"),
156
- Type.Literal("simple"),
157
- Type.Literal("moderate"),
158
- Type.Literal("complex"),
159
- Type.Literal("intricate"),
160
- ], { description: "Budget level. Default: simple." })),
161
- }, {
162
- title: "TraceToolParams",
163
- description: "Activate trace mode — read files verbatim, run checks, explore codebase. All fields optional.",
164
- examples: [
165
- {},
166
- { dispatch: [{ tool: "batch", ops: [{ o: "read", p: "src/main.ts" }] }] },
167
- ],
102
+ export const TraceCliParams = Type.Object({
103
+ cmd: Type.String({
104
+ description: "Trace command. Optional flags (--intent, --cwd, --complexity) followed by optional pre-flight dispatch after `--`. Run with `cmd: 'help'` for the man page.",
105
+ }),
168
106
  });
107
+ // ---------------------------------------------------------------------------
108
+ // Runtime resolution
109
+ // ---------------------------------------------------------------------------
169
110
  function resolveTraceRuntime(opts, traceFlow, ctx, toolCallId, intent) {
170
111
  const tier = (traceFlow.tier ?? "lite");
171
112
  let selectedStrategy;
@@ -185,8 +126,6 @@ function resolveTraceRuntime(opts, traceFlow, ctx, toolCallId, intent) {
185
126
  const maxContextTokens = resolveModelContextWindow(resolvedModel);
186
127
  const { snapshot: forkSessionSnapshotJsonl, stats: compressionStats } = buildSnapshotWithCompression(ctx.sessionManager, {
187
128
  activeToolCallId: toolCallId,
188
- tier: traceFlow.tier ?? getFlowTier("trace"),
189
- compressionProfile: traceFlow.contextProfile,
190
129
  compressionLevel: opts.getSettings?.()?.contextCompression,
191
130
  }, maxContextTokens);
192
131
  const sharedContext = parseSharedContext(forkSessionSnapshotJsonl);
@@ -202,19 +141,23 @@ function resolveTraceRuntime(opts, traceFlow, ctx, toolCallId, intent) {
202
141
  intent,
203
142
  };
204
143
  }
144
+ // ---------------------------------------------------------------------------
145
+ // Tool factory
146
+ // ---------------------------------------------------------------------------
205
147
  export function createTraceTool(opts = {}) {
206
148
  let lastResolvedModel;
207
149
  let lastResolvedMaxCtx;
150
+ let lastResolvedIntent;
208
151
  return {
209
152
  name: "trace",
210
153
  label: "Trace",
211
154
  promptSnippet: "Quick verbatim reads, checks, and exploration. All fields optional.",
212
155
  promptGuidelines: [
213
156
  "All fields optional — the trace agent infers its mission from context.",
214
- "Optional `dispatch` runs pre-flight reads, writes, edits, or bash commands before the trace starts.",
157
+ "Optional pre-flight dispatch runs batch-style commands before the trace starts.",
215
158
  ],
216
- description: "Read files verbatim, run checks, explore the codebase. All fields optional.",
217
- parameters: TraceParams,
159
+ description: "Spawn the `trace` agent for read-first investigation. Pass flags (`--intent`, `--cwd`, `--complexity`) and optional pre-flight ops after `--`. Examples: `trace` • `trace --intent \"verify auth\"` • `trace -- batch read src/auth.ts`. NOT a shell. Defaults to `simple` budget. Use for code investigation, exploration, and verification. Pass [cmd]: \"help\" for the man page.",
160
+ parameters: TraceCliParams,
218
161
  async execute(toolCallId, params, signal, onUpdate, ctx) {
219
162
  if (!opts.getSettings?.()) {
220
163
  throw new Error("Error: session not initialized");
@@ -222,14 +165,40 @@ export function createTraceTool(opts = {}) {
222
165
  const depthConfig = opts.getDepthConfig?.();
223
166
  const parentDepth = depthConfig?.currentDepth ?? 0;
224
167
  const parentFlowStack = depthConfig?.ancestorFlowStack ?? [];
225
- const maxDepth = 0; // trace is a leaf — never transitions further
168
+ const maxDepth = 0;
226
169
  const preventCycles = depthConfig?.preventCycles ?? true;
227
170
  const discovery = discoverFlows(ctx.cwd, "all");
228
171
  const traceFlow = discovery.flows.find(f => f.name === "trace");
229
172
  if (!traceFlow) {
230
173
  throw new Error("Trace agent not found. Expected agents/trace.md to be present.");
231
174
  }
232
- const intent = params.intent ?? traceFlow.description;
175
+ // Parse the trace command
176
+ let parsed;
177
+ try {
178
+ parsed = parseTraceCmd(params.cmd ?? "");
179
+ }
180
+ catch (err) {
181
+ if (err instanceof CliError) {
182
+ const text = err.hint ? `${err.message} (hint: ${err.hint})` : err.message;
183
+ return {
184
+ content: [{ type: "text", text }],
185
+ details: undefined,
186
+ failed: true,
187
+ _toolCallId: toolCallId,
188
+ };
189
+ }
190
+ throw err;
191
+ }
192
+ // Help response
193
+ if (parsed.help) {
194
+ return {
195
+ content: [{ type: "text", text: TRACE_HELP }],
196
+ details: undefined,
197
+ failed: false,
198
+ _toolCallId: toolCallId,
199
+ };
200
+ }
201
+ const intent = parsed.flags.intent ?? traceFlow.description;
233
202
  const runtime = resolveTraceRuntime(opts, traceFlow, ctx, toolCallId, intent);
234
203
  const { resolvedModel, maxContextTokens, forkSessionSnapshotJsonl, sharedContext, compressionStats, } = runtime;
235
204
  const makeDetails = (results) => ({
@@ -241,11 +210,37 @@ export function createTraceTool(opts = {}) {
241
210
  });
242
211
  lastResolvedModel = resolvedModel;
243
212
  lastResolvedMaxCtx = maxContextTokens;
244
- const preDispatch = params.dispatch?.length
245
- ? await executeDispatchOps(params.dispatch, params.cwd ?? ctx.cwd, ctx, signal)
246
- : undefined;
247
- const preDispatchResults = preDispatch?.promptString;
248
- const preDispatchMessages = preDispatch?.messages ?? [];
213
+ lastResolvedIntent = intent;
214
+ // Pre-flight dispatch via batch CLI
215
+ let preDispatchResults;
216
+ const preDispatchMessages = [];
217
+ const resolvedCwd = parsed.flags.cwd ?? ctx.cwd;
218
+ if (parsed.dispatch.length > 0) {
219
+ const dispatchResult = await runBatchCli(parsed.dispatch, resolvedCwd, undefined, ctx.sessionManager, signal);
220
+ preDispatchResults = dispatchResult.text;
221
+ const preDispatchToolCallId = "pre_dispatch_batch_0";
222
+ preDispatchMessages.push({
223
+ role: "assistant",
224
+ content: [
225
+ {
226
+ type: "toolCall",
227
+ toolCallId: preDispatchToolCallId,
228
+ name: "batch",
229
+ arguments: { cmd: parsed.dispatch },
230
+ },
231
+ ],
232
+ });
233
+ preDispatchMessages.push({
234
+ role: "tool",
235
+ toolCallId: preDispatchToolCallId,
236
+ content: [
237
+ {
238
+ type: "text",
239
+ text: dispatchResult.text,
240
+ },
241
+ ],
242
+ });
243
+ }
249
244
  const result = await runFlowWithLiveSession(toolCallId, {
250
245
  sharedContext,
251
246
  model: resolvedModel,
@@ -258,7 +253,7 @@ export function createTraceTool(opts = {}) {
258
253
  flowName: "trace",
259
254
  intent,
260
255
  aim: "",
261
- taskCwd: params.cwd,
256
+ taskCwd: parsed.flags.cwd,
262
257
  forkSessionSnapshotJsonl,
263
258
  parentDepth,
264
259
  parentFlowStack,
@@ -266,7 +261,7 @@ export function createTraceTool(opts = {}) {
266
261
  preventCycles,
267
262
  toolOptimize: opts.getSettings?.()?.toolOptimize,
268
263
  structuredOutput: opts.getSettings?.()?.structuredOutput,
269
- complexity: params.complexity ?? "simple",
264
+ complexity: (parsed.flags.complexity ?? "simple"),
270
265
  model: resolvedModel,
271
266
  maxContextTokens,
272
267
  compressionStats,
@@ -282,7 +277,6 @@ export function createTraceTool(opts = {}) {
282
277
  if (evidence) {
283
278
  outputText += "\n\n" + evidence;
284
279
  }
285
- // Inject enriched evidence into messages so renderer shows it after completion.
286
280
  result.messages.push({
287
281
  role: "assistant",
288
282
  content: [{ type: "text", text: outputText }],
@@ -308,7 +302,7 @@ export function createTraceTool(opts = {}) {
308
302
  flow: [
309
303
  {
310
304
  type: "trace",
311
- intent: args?.intent || "Trace mode",
305
+ intent: lastResolvedIntent || "Trace mode",
312
306
  aim: "",
313
307
  model: live?.model ?? lastResolvedModel,
314
308
  maxContextTokens: live?.maxContextTokens ?? lastResolvedMaxCtx,
@@ -1 +1 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/tools/trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/tools/trace.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
+ type SearchResult = {
2
+ title: string;
3
+ url: string;
4
+ snippet: string;
5
+ source: "brave" | "duckduckgo";
6
+ };
1
7
  export type WebOpInput = {
2
8
  o: "search";
3
9
  q: string;
@@ -22,6 +28,39 @@ export declare function runWebOps(params: WebOpsParams, ctx: {
22
28
  ops: Record<string, unknown>[];
23
29
  };
24
30
  }>;
31
+ export declare function runWebSearch(params: {
32
+ query: string;
33
+ }, signal?: AbortSignal): Promise<{
34
+ content: {
35
+ type: "text";
36
+ text: string;
37
+ }[];
38
+ details: {
39
+ query: string;
40
+ results: SearchResult[];
41
+ errors: string[] | undefined;
42
+ };
43
+ }>;
44
+ export declare function runWebFetch(params: {
45
+ url: string;
46
+ format?: string;
47
+ }, ctx: {
48
+ sessionManager: {
49
+ getSessionDir(): string;
50
+ };
51
+ }, signal?: AbortSignal): Promise<{
52
+ content: {
53
+ type: "text";
54
+ text: string;
55
+ }[];
56
+ details: {
57
+ url: string;
58
+ title: string;
59
+ filePath: string;
60
+ contentLength: number;
61
+ format: string;
62
+ };
63
+ }>;
25
64
  export declare function extractSnippet(raw: string, title: string): string;
26
65
  export declare function validateFetchUrl(url: string): void;
27
66
  export declare function htmlToMarkdown(html: string, baseUrl: string): {
@@ -33,4 +72,5 @@ export declare function stripMarkdownFormatting(markdown: string): string;
33
72
  export declare function urlToHash(url: string): string;
34
73
  export declare function looksLikeUrlPrompt(prompt: string | undefined): boolean;
35
74
  export declare function looksLikeWebSearchPrompt(prompt: string | undefined): boolean;
75
+ export {};
36
76
  //# sourceMappingURL=web-ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-ops.d.ts","sourceRoot":"","sources":["../../src/tools/web-ops.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GACnB;IAAE,CAAC,EAAE,QAAQ,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,UAAU,EAAE,CAAC;CACjB,CAAC;AAuBF,wBAAsB,SAAS,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE;IAAE,cAAc,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,CAAA;CAAE,EACpD,MAAM,CAAC,EAAE,WAAW;;;;;;;;GA4CpB;AA0VD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BlD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAyCjG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY5E;AAOD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AA6BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGtE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAkB5E"}
1
+ {"version":3,"file":"web-ops.d.ts","sourceRoot":"","sources":["../../src/tools/web-ops.ts"],"names":[],"mappings":"AAaA,KAAK,YAAY,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GACnB;IAAE,CAAC,EAAE,QAAQ,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,UAAU,EAAE,CAAC;CACjB,CAAC;AAuBF,wBAAsB,SAAS,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE;IAAE,cAAc,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,CAAA;CAAE,EACpD,MAAM,CAAC,EAAE,WAAW;;;;;;;;GA4CpB;AAMD,wBAAsB,YAAY,CACjC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACzB,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;GA4BpB;AA2JD,wBAAsB,WAAW,CAChC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACxC,GAAG,EAAE;IAAE,cAAc,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,CAAA;CAAE,EACpD,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;GAqEpB;AAmFD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BlD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAyCjG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY5E;AAOD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AA6BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGtE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAkB5E"}
@@ -72,7 +72,7 @@ export async function runWebOps(params, ctx, signal) {
72
72
  // ---------------------------------------------------------------------------
73
73
  // Search
74
74
  // ---------------------------------------------------------------------------
75
- async function runWebSearch(params, signal) {
75
+ export async function runWebSearch(params, signal) {
76
76
  const { results, errors } = await searchKeyless(params.query, signal);
77
77
  let text;
78
78
  if (results.length > 0) {
@@ -222,7 +222,7 @@ async function duckDuckGoHtmlSearch(query, signal) {
222
222
  // ---------------------------------------------------------------------------
223
223
  // Fetch
224
224
  // ---------------------------------------------------------------------------
225
- async function runWebFetch(params, ctx, signal) {
225
+ export async function runWebFetch(params, ctx, signal) {
226
226
  validateFetchUrl(params.url);
227
227
  const format = params.format ?? "markdown";
228
228
  const html = await fetchHtml(params.url, signal);