zelari-code 0.6.2 → 0.7.5

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 (95) hide show
  1. package/bin/zelari-code.js +1 -1
  2. package/dist/agents/councilApi.js +7 -7
  3. package/dist/agents/councilApi.js.map +1 -1
  4. package/dist/agents/councilDirectives.js +3 -3
  5. package/dist/agents/promoteMember.js +2 -2
  6. package/dist/agents/roles.js +50 -32
  7. package/dist/agents/roles.js.map +1 -1
  8. package/dist/agents/skills/builtin/debugging.js +4 -4
  9. package/dist/agents/skills/builtin/debugging.js.map +1 -1
  10. package/dist/agents/skills/builtin/docs.js +23 -13
  11. package/dist/agents/skills/builtin/docs.js.map +1 -1
  12. package/dist/agents/skills/builtin/git-ops.js +3 -3
  13. package/dist/agents/skills/builtin/git-ops.js.map +1 -1
  14. package/dist/agents/skills/builtin/planning.js +4 -4
  15. package/dist/agents/skills/builtin/planning.js.map +1 -1
  16. package/dist/agents/skills/builtin/refactoring.js +3 -3
  17. package/dist/agents/skills/builtin/refactoring.js.map +1 -1
  18. package/dist/agents/skills/builtin/review.js +9 -9
  19. package/dist/agents/skills/builtin/review.js.map +1 -1
  20. package/dist/agents/skills/builtin/testing.js +3 -3
  21. package/dist/agents/skills/builtin/testing.js.map +1 -1
  22. package/dist/agents/tools.js +2 -9
  23. package/dist/agents/tools.js.map +1 -1
  24. package/dist/cli/app.js +63 -29
  25. package/dist/cli/app.js.map +1 -1
  26. package/dist/cli/components/ChatStream.js +40 -126
  27. package/dist/cli/components/ChatStream.js.map +1 -1
  28. package/dist/cli/components/CollapsibleToolOutput.js +8 -26
  29. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  30. package/dist/cli/components/Header.js +6 -18
  31. package/dist/cli/components/Header.js.map +1 -1
  32. package/dist/cli/components/LiveRegion.js +54 -0
  33. package/dist/cli/components/LiveRegion.js.map +1 -0
  34. package/dist/cli/components/Sidebar.js +33 -31
  35. package/dist/cli/components/Sidebar.js.map +1 -1
  36. package/dist/cli/components/StatusBar.js +42 -0
  37. package/dist/cli/components/StatusBar.js.map +1 -0
  38. package/dist/cli/components/ToolOutput.js +68 -0
  39. package/dist/cli/components/ToolOutput.js.map +1 -0
  40. package/dist/cli/components/toolFormat.js +195 -0
  41. package/dist/cli/components/toolFormat.js.map +1 -0
  42. package/dist/cli/grokOAuth.js +93 -75
  43. package/dist/cli/grokOAuth.js.map +1 -1
  44. package/dist/cli/hooks/chatState.js +139 -0
  45. package/dist/cli/hooks/chatState.js.map +1 -0
  46. package/dist/cli/hooks/eventsToMessages.js +1 -1
  47. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  48. package/dist/cli/hooks/messageHelpers.js +11 -4
  49. package/dist/cli/hooks/messageHelpers.js.map +1 -1
  50. package/dist/cli/hooks/useBatchedMessages.js +14 -10
  51. package/dist/cli/hooks/useBatchedMessages.js.map +1 -1
  52. package/dist/cli/hooks/useChatTurn.js +400 -87
  53. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  54. package/dist/cli/hooks/useSession.js +23 -11
  55. package/dist/cli/hooks/useSession.js.map +1 -1
  56. package/dist/cli/hooks/useSlashDispatch.js +9 -1
  57. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  58. package/dist/cli/main.bundled.js +16972 -15277
  59. package/dist/cli/main.bundled.js.map +4 -4
  60. package/dist/cli/main.js +35 -1
  61. package/dist/cli/main.js.map +1 -1
  62. package/dist/cli/mcp/mcpClient.js +152 -0
  63. package/dist/cli/mcp/mcpClient.js.map +1 -0
  64. package/dist/cli/mcp/mcpManager.js +139 -0
  65. package/dist/cli/mcp/mcpManager.js.map +1 -0
  66. package/dist/cli/refreshRegistry.js +9 -6
  67. package/dist/cli/refreshRegistry.js.map +1 -1
  68. package/dist/cli/skillsMd.js +155 -0
  69. package/dist/cli/skillsMd.js.map +1 -0
  70. package/dist/cli/slashHandlers/skills.js +16 -0
  71. package/dist/cli/slashHandlers/skills.js.map +1 -1
  72. package/dist/cli/toolRegistry.js +31 -0
  73. package/dist/cli/toolRegistry.js.map +1 -1
  74. package/dist/cli/wizard/index.js +1 -1
  75. package/dist/cli/workspace/paths.js +20 -13
  76. package/dist/cli/workspace/paths.js.map +1 -1
  77. package/dist/cli/workspace/storage.js +7 -3
  78. package/dist/cli/workspace/storage.js.map +1 -1
  79. package/dist/cli/workspace/stubs.js +122 -44
  80. package/dist/cli/workspace/stubs.js.map +1 -1
  81. package/dist/cli/workspace/workspaceSummary.js +255 -0
  82. package/dist/cli/workspace/workspaceSummary.js.map +1 -0
  83. package/dist/main/core/AgentHarness.js +36 -7
  84. package/dist/main/core/AgentHarness.js.map +1 -1
  85. package/dist/main/core/tools/builtin/listFiles.js +43 -5
  86. package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
  87. package/dist/main/core/tools/builtin/search.js +28 -120
  88. package/dist/main/core/tools/builtin/search.js.map +1 -1
  89. package/package.json +2 -2
  90. package/dist/cli/oauthCallbackServer.js +0 -207
  91. package/dist/cli/oauthCallbackServer.js.map +0 -1
  92. package/dist/main/core/tools/builtin/_walk.js +0 -129
  93. package/dist/main/core/tools/builtin/_walk.js.map +0 -1
  94. package/dist/main/core/tools/builtin/diff.js +0 -477
  95. package/dist/main/core/tools/builtin/diff.js.map +0 -1
@@ -0,0 +1,255 @@
1
+ /**
2
+ * workspaceSummary — v0.7.2 build the workspace-context string the council
3
+ * receives so its members know which project they are operating on.
4
+ *
5
+ * Before this, `/council` got `workspaceContext=''` and `ragContext=''`: the
6
+ * members had no idea of the cwd, tech stack, or file layout, so they
7
+ * projected their hardcoded AnathemaBrain identity onto whatever the user
8
+ * asked. This module gives the council the same project awareness the
9
+ * single-prompt path has (cwd + tool list), plus the parsed tech stack and
10
+ * a shallow file listing.
11
+ *
12
+ * Pure (no React, no Ink); safe to call from the event loop. Best-effort:
13
+ * missing package.json or unreadable dirs degrade gracefully to a shorter
14
+ * summary rather than throwing.
15
+ */
16
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
17
+ import { join, relative } from 'node:path';
18
+ import { projectName, resolveWorkspaceRoot } from './paths.js';
19
+ /**
20
+ * Build a markdown workspace summary for the council system prompt.
21
+ *
22
+ * @param projectRoot defaults to process.cwd()
23
+ */
24
+ export function buildWorkspaceSummary(projectRoot = process.cwd(), options = {}) {
25
+ const { maxEntries = 30 } = options;
26
+ const name = safeProjectName(projectRoot);
27
+ const parts = [
28
+ `# Project: ${name}`,
29
+ `Working directory: ${projectRoot}`,
30
+ ];
31
+ // Tech stack from package.json (if present).
32
+ const stack = readTechStack(projectRoot);
33
+ if (stack) {
34
+ parts.push("", "## Tech stack (from package.json)", stack);
35
+ }
36
+ // Shallow directory listing (depth 2).
37
+ const tree = listShallow(projectRoot, maxEntries);
38
+ if (tree.length > 0) {
39
+ parts.push("", "## Top-level files & directories", tree.join("\n"));
40
+ }
41
+ // Build scripts (if present) — tells the council how to run/test/build.
42
+ const scripts = readBuildScripts(projectRoot);
43
+ if (scripts) {
44
+ parts.push("", "## npm scripts", scripts);
45
+ }
46
+ return parts.join("\n");
47
+ }
48
+ /** Max tasks listed individually in the plan summary (rest is counted). */
49
+ const PLAN_SUMMARY_MAX_TASKS = 15;
50
+ /**
51
+ * Build a compact markdown summary of the council plan in `.zelari/plan.json`
52
+ * (v0.7.3 — the plan's machine-readable source of truth).
53
+ *
54
+ * Consumed by BOTH dispatch paths:
55
+ * - single-prompt system prompt, so the agent knows the plan exists and
56
+ * where the per-task detail files live without the user pasting paths;
57
+ * - `/council` workspaceContext, so a follow-up council run continues the
58
+ * existing plan instead of re-planning from scratch.
59
+ *
60
+ * Returns `null` when there is no plan (or it is empty) so callers can skip
61
+ * the section entirely — a fresh project pays zero prompt-token cost.
62
+ */
63
+ export function buildPlanSummary(projectRoot = process.cwd()) {
64
+ const planPath = join(resolveWorkspaceRoot(projectRoot), "plan.json");
65
+ if (!existsSync(planPath))
66
+ return null;
67
+ let plan;
68
+ try {
69
+ plan = JSON.parse(readFileSync(planPath, "utf8"));
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ const phases = Array.isArray(plan.phases) ? plan.phases : [];
75
+ const tasks = Array.isArray(plan.tasks) ? plan.tasks : [];
76
+ const milestones = Array.isArray(plan.milestones) ? plan.milestones : [];
77
+ if (phases.length === 0 && tasks.length === 0 && milestones.length === 0)
78
+ return null;
79
+ const parts = [
80
+ "# Project Plan (created by /council — lives in .zelari/)",
81
+ ];
82
+ // Open (pending/in_progress/blocked) tasks first; done tasks are counted only.
83
+ const open = tasks.filter((t) => t.status !== "done");
84
+ const done = tasks.length - open.length;
85
+ for (const phase of [...phases].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))) {
86
+ const phaseTasks = open.filter((t) => t.phaseId === phase.id);
87
+ parts.push("", `## ${phase.order ?? "?"}. ${phase.name ?? phase.id}`);
88
+ if (phase.description)
89
+ parts.push(phase.description);
90
+ for (const t of phaseTasks.slice(0, PLAN_SUMMARY_MAX_TASKS)) {
91
+ parts.push(`- [${t.status ?? "pending"}/${t.priority ?? "medium"}] ${t.name ?? t.id} → .zelari/plan-tasks/${t.id}.md`);
92
+ }
93
+ if (phaseTasks.length > PLAN_SUMMARY_MAX_TASKS) {
94
+ parts.push(`- … (+${phaseTasks.length - PLAN_SUMMARY_MAX_TASKS} more open tasks)`);
95
+ }
96
+ if (phaseTasks.length === 0)
97
+ parts.push("_(no open tasks)_");
98
+ }
99
+ // Tasks without a matching phase (defensive — plan edited by hand).
100
+ const orphans = open.filter((t) => !phases.some((p) => p.id === t.phaseId));
101
+ if (orphans.length > 0) {
102
+ parts.push("", "## (unassigned)");
103
+ for (const t of orphans.slice(0, PLAN_SUMMARY_MAX_TASKS)) {
104
+ parts.push(`- [${t.status ?? "pending"}/${t.priority ?? "medium"}] ${t.name ?? t.id} → .zelari/plan-tasks/${t.id}.md`);
105
+ }
106
+ }
107
+ if (milestones.length > 0) {
108
+ parts.push("", "## Milestones");
109
+ for (const m of milestones) {
110
+ parts.push(`- ${m.name ?? m.id}${m.targetVersion ? ` (target: ${m.targetVersion})` : ""}`);
111
+ }
112
+ }
113
+ // v0.7.4: point the agent at ONE concrete task so "implement the plan"
114
+ // starts immediately instead of asking the user which task to pick.
115
+ // First in_progress wins (finish what's started); else highest priority.
116
+ const next = pickNextTask(open);
117
+ if (next) {
118
+ parts.push("", "**Next task to work on:**", `- ${next.name ?? next.id} (${next.status ?? "pending"}/${next.priority ?? "medium"}) → .zelari/plan-tasks/${next.id}.md`);
119
+ }
120
+ parts.push("", `${tasks.length} task(s) total — ${open.length} open, ${done} done.`, "When asked to implement the plan (or a task), read the task file(s) above with read_file first, then work ONE task at a time.");
121
+ return parts.join("\n");
122
+ }
123
+ /** Priority rank for next-task selection (higher = more urgent). */
124
+ const PRIORITY_RANK = {
125
+ critical: 3,
126
+ high: 2,
127
+ medium: 1,
128
+ low: 0,
129
+ };
130
+ /** First in_progress task, else the highest-priority open task. */
131
+ function pickNextTask(open) {
132
+ if (open.length === 0)
133
+ return null;
134
+ const inProgress = open.find((t) => t.status === "in_progress");
135
+ if (inProgress)
136
+ return inProgress;
137
+ return [...open].sort((a, b) => (PRIORITY_RANK[b.priority ?? "medium"] ?? 1) -
138
+ (PRIORITY_RANK[a.priority ?? "medium"] ?? 1))[0];
139
+ }
140
+ /**
141
+ * v0.7.4: short system-prompt hint telling the single agent that a council
142
+ * workspace exists and how to read it. Unlike {@link buildPlanSummary} (the
143
+ * full rendered plan), this is a cheap pointer the agent can follow with its
144
+ * own tools. Returns "" when there is no plan so fresh projects pay nothing.
145
+ */
146
+ export function buildZelariReadHint(projectRoot = process.cwd()) {
147
+ const planPath = join(resolveWorkspaceRoot(projectRoot), "plan.json");
148
+ if (!existsSync(planPath))
149
+ return "";
150
+ return [
151
+ "# Council workspace detected (.zelari/)",
152
+ "This project has a council workspace: .zelari/plan.json holds the plan (phases, tasks, milestones) and .zelari/plan-tasks/ holds one detail file per task.",
153
+ "Before working on the plan, use list_files on .zelari/ and read_file on .zelari/plan.json (and the relevant task files) to load the current state.",
154
+ ].join("\n");
155
+ }
156
+ function safeProjectName(root) {
157
+ try {
158
+ return projectName(root);
159
+ }
160
+ catch {
161
+ return "unknown";
162
+ }
163
+ }
164
+ function readPackageJson(projectRoot) {
165
+ const p = join(projectRoot, "package.json");
166
+ if (!existsSync(p))
167
+ return null;
168
+ try {
169
+ return JSON.parse(readFileSync(p, "utf8"));
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ /** Markdown bullet list of runtime + dev deps. */
176
+ function readTechStack(projectRoot) {
177
+ const pkg = readPackageJson(projectRoot);
178
+ if (!pkg)
179
+ return null;
180
+ const fmt = (entries) => entries && Object.keys(entries).length > 0
181
+ ? Object.entries(entries)
182
+ .sort(([a], [b]) => a.localeCompare(b))
183
+ .map(([k, v]) => `- ${k} \`${v}\``)
184
+ .join("\n")
185
+ : "_none_";
186
+ return `**Runtime:**\n${fmt(pkg.dependencies)}\n\n**Dev:**\n${fmt(pkg.devDependencies)}`;
187
+ }
188
+ /** Markdown bullet list of npm scripts (name: command). */
189
+ function readBuildScripts(projectRoot) {
190
+ const pkg = readPackageJson(projectRoot);
191
+ if (!pkg?.scripts)
192
+ return null;
193
+ const entries = Object.entries(pkg.scripts);
194
+ if (entries.length === 0)
195
+ return null;
196
+ return entries
197
+ .sort(([a], [b]) => a.localeCompare(b))
198
+ .map(([k, v]) => `- \`${k}\`: ${v}`)
199
+ .join("\n");
200
+ }
201
+ /** Shallow listing of top-level entries + one level of subdirectories. */
202
+ function listShallow(projectRoot, maxEntries) {
203
+ const out = [];
204
+ try {
205
+ const top = readdirSync(projectRoot, { withFileTypes: true })
206
+ .filter((e) => !e.name.startsWith(".") &&
207
+ e.name !== "node_modules" &&
208
+ e.name !== "dist")
209
+ .sort((a, b) => a.name.localeCompare(b.name));
210
+ let count = 0;
211
+ for (const entry of top) {
212
+ if (count >= maxEntries) {
213
+ out.push(`… (+${top.length - count} more)`);
214
+ break;
215
+ }
216
+ const rel = relative(projectRoot, join(projectRoot, entry.name));
217
+ if (entry.isDirectory()) {
218
+ // Peek one level inside.
219
+ let inner = "";
220
+ try {
221
+ const sub = readdirSync(join(projectRoot, entry.name), {
222
+ withFileTypes: true,
223
+ })
224
+ .filter((e) => !e.name.startsWith("."))
225
+ .slice(0, 4)
226
+ .map((e) => e.name);
227
+ if (sub.length > 0)
228
+ inner = ` (${sub.join(", ")}${sub.length === 4 ? ", …" : ""})`;
229
+ }
230
+ catch {
231
+ // unreadable subdir — skip the peek
232
+ }
233
+ out.push(`- ${rel}/${inner}`);
234
+ }
235
+ else {
236
+ out.push(`- ${rel}`);
237
+ }
238
+ count++;
239
+ }
240
+ }
241
+ catch {
242
+ // unreadable root — return empty
243
+ }
244
+ return out;
245
+ }
246
+ /** Exported for tests: check whether statSync would succeed (exists helper). */
247
+ export function _isDir(p) {
248
+ try {
249
+ return statSync(p).isDirectory();
250
+ }
251
+ catch {
252
+ return false;
253
+ }
254
+ }
255
+ //# sourceMappingURL=workspaceSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceSummary.js","sourceRoot":"","sources":["../../../src/cli/workspace/workspaceSummary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAQ/D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAsB,OAAO,CAAC,GAAG,EAAE,EACnC,UAAmC,EAAE;IAErC,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAa;QACtB,cAAc,IAAI,EAAE;QACpB,sBAAsB,WAAW,EAAE;KACpC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,uCAAuC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,wEAAwE;IACxE,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,IAIH,CAAC;IACF,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACtE,OAAO,IAAI,CAAC;IAEd,MAAM,KAAK,GAAa;QACtB,0DAA0D;KAC3D,CAAC;IAEF,+EAA+E;IAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAC1C,EAAE,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAE,KAAK,CAC3G,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CACR,SAAS,UAAU,CAAC,MAAM,GAAG,sBAAsB,mBAAmB,CACvE,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAE,KAAK,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,oEAAoE;IACpE,yEAAyE;IACzE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CACR,EAAE,EACF,2BAA2B,EAC3B,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,0BAA0B,IAAI,CAAC,EAAE,KAAK,CAC1H,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,KAAK,CAAC,MAAM,oBAAoB,IAAI,CAAC,MAAM,UAAU,IAAI,QAAQ,EACpE,+HAA+H,CAChI,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,oEAAoE;AACpE,MAAM,aAAa,GAA2B;IAC5C,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,mEAAmE;AACnE,SAAS,YAAY,CAAC,IAAuB;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAChE,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO;QACL,yCAAyC;QACzC,4JAA4J;QAC5J,oJAAoJ;KACrJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AASD,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAe,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,OAA2C,EAAU,EAAE,CAClE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aACpB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;aAClC,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,QAAQ,CAAC;IACf,OAAO,iBAAiB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,iBAAiB,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,2DAA2D;AAC3D,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,OAAO;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,OAAO;SACX,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,WAAmB,EAAE,UAAkB;IAC1D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC1D,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,IAAI,KAAK,cAAc;YACzB,CAAC,CAAC,IAAI,KAAK,MAAM,CACpB;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,KAAK,QAAQ,CAAC,CAAC;gBAC5C,MAAM;YACR,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,yBAAyB;gBACzB,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;wBACrD,aAAa,EAAE,IAAI;qBACpB,CAAC;yBACC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;yBACtC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;yBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;wBAChB,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;gBACnE,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;gBACtC,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACvB,CAAC;YACD,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -19,6 +19,20 @@
19
19
  */
20
20
  import { createBrainEvent, } from '../../shared/events.js';
21
21
  // --- Harness ----------------------------------------------------------------
22
+ /**
23
+ * The agent loop's primary output is the async generator returned by
24
+ * `run()`: every BrainEvent is yielded exactly once, in order. The
25
+ * optional `eventBus` config field is a SIDE-CAR for listeners that
26
+ * want to observe events without consuming the generator — e.g.
27
+ * a metrics collector, a logging sink, or an external UI.
28
+ *
29
+ * **B18 contract**: consumers should EITHER iterate the `run()`
30
+ * generator OR subscribe to the event bus, not both. The same
31
+ * event would otherwise be processed twice (once by the iterator
32
+ * consumer, once by the listener). Today only `app.tsx` iterates
33
+ * `run()`, so no double-processing occurs — but adding a bus
34
+ * listener in the future requires care.
35
+ */
22
36
  export class AgentHarness {
23
37
  config;
24
38
  eventBus;
@@ -425,13 +439,28 @@ export class AgentHarness {
425
439
  }
426
440
  }
427
441
  emit(event) {
428
- if (this.eventBus) {
429
- try {
430
- this.eventBus.emit(event);
431
- }
432
- catch (err) {
433
- console.error('[AgentHarness] eventBus.emit failed:', err);
434
- }
442
+ if (!this.eventBus)
443
+ return;
444
+ // B24 fix — surface listener errors instead of silently swallowing
445
+ // them. Previously a misbehaving listener would log to console.error
446
+ // (invisible in the Ink UI) and the run would continue, leaving the
447
+ // user with a hung tool or missing UI update. We still don't crash
448
+ // the agent loop, but the failure is observable: each listener error
449
+ // is yielded as a synthetic `error` BrainEvent so the UI can show it.
450
+ try {
451
+ this.eventBus.emit(event);
452
+ }
453
+ catch (err) {
454
+ const message = err instanceof Error ? err.message : String(err);
455
+ // Use console.error as last resort so it's visible even when no
456
+ // consumer is iterating run() (e.g. test harnesses that only listen
457
+ // to the bus).
458
+ console.error('[AgentHarness] eventBus listener threw:', message);
459
+ // We don't yield here (emit is sync, run() is the yield path).
460
+ // Document the contract: callers iterating run() will see the
461
+ // original event; the bus-listener error is logged but does not
462
+ // crash the run. For caller-side visibility, callers should still
463
+ // catch errors inside their own listeners.
435
464
  }
436
465
  }
437
466
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentHarness.js","sourceRoot":"","sources":["../../../src/main/core/AgentHarness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentHarness.js","sourceRoot":"","sources":["../../../src/main/core/AgentHarness.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,55 @@
1
1
  import { z } from 'zod';
2
+ import { promises as fs } from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { typedOk, typedErr } from '../toolTypes.js';
4
- import { walk, DEFAULT_EXCLUDES, } from './_walk.js';
5
5
  const ListFilesArgsSchema = z.object({
6
6
  /** Directory to list (relative to cwd or absolute). Defaults to cwd. */
7
7
  path: z.string().optional(),
8
8
  /** Max traversal depth. 1 = immediate children only (default). */
9
9
  maxDepth: z.number().int().positive().max(10).default(1),
10
10
  /** Glob-style patterns to exclude (matched against each entry name). */
11
- exclude: z.array(z.string()).default(DEFAULT_EXCLUDES),
11
+ exclude: z.array(z.string()).default([
12
+ 'node_modules', '.git', 'dist', 'build', '.next', '__pycache__', '.cache',
13
+ ]),
12
14
  });
15
+ function matchesAny(name, patterns) {
16
+ return patterns.some((p) => {
17
+ // Simple glob: '*' wildcard.
18
+ if (p.includes('*')) {
19
+ const regex = new RegExp('^' + p.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*') + '$');
20
+ return regex.test(name);
21
+ }
22
+ return name === p;
23
+ });
24
+ }
25
+ async function walk(dir, baseRel, depth, maxDepth, exclude, entries, signal) {
26
+ if (depth > maxDepth)
27
+ return;
28
+ let dirents;
29
+ try {
30
+ dirents = await fs.readdir(dir, { withFileTypes: true });
31
+ }
32
+ catch {
33
+ return; // unreadable subdirectory — skip silently
34
+ }
35
+ // Honor the abort signal between reads (fs.readdir options.signal typing
36
+ // varies across Node versions, so we check manually here).
37
+ if (signal?.aborted)
38
+ return;
39
+ for (const dirent of dirents) {
40
+ if (matchesAny(dirent.name, exclude))
41
+ continue;
42
+ const rel = baseRel ? `${baseRel}/${dirent.name}` : dirent.name;
43
+ const isDir = dirent.isDirectory();
44
+ entries.push({
45
+ name: rel,
46
+ type: isDir ? 'directory' : dirent.isFile() ? 'file' : 'other',
47
+ });
48
+ if (isDir && depth < maxDepth) {
49
+ await walk(path.join(dir, dirent.name), rel, depth + 1, maxDepth, exclude, entries, signal);
50
+ }
51
+ }
52
+ }
13
53
  export const listFilesTool = {
14
54
  name: 'list_files',
15
55
  description: 'List files and directories in the given path (defaults to the working directory). ' +
@@ -25,9 +65,7 @@ export const listFilesTool = {
25
65
  ? (path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path))
26
66
  : ctx.cwd;
27
67
  const entries = [];
28
- // API: maxDepth=1 means "root only". Internally: depth=0 at root,
29
- // so we subtract 1 from the user-facing maxDepth.
30
- await walk(target, '', 0, args.maxDepth - 1, args.exclude, entries, ctx.signal);
68
+ await walk(target, '', 1, args.maxDepth, args.exclude, entries, ctx.signal);
31
69
  // Sort: directories first, then files, alphabetically.
32
70
  entries.sort((a, b) => {
33
71
  if (a.type === 'directory' && b.type !== 'directory')
@@ -1 +1 @@
1
- {"version":3,"file":"listFiles.js","sourceRoot":"","sources":["../../../../../src/main/core/tools/builtin/listFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAuB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,IAAI,EACJ,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AAEpB,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,wEAAwE;IACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,wEAAwE;IACxE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;CACvD,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,aAAa,GAAmD;IAC3E,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,oFAAoF;QACpF,wFAAwF;QACxF,wFAAwF;QACxF,iDAAiD;IACnD,WAAW,EAAE,CAAC,MAAM,CAAC;IACrB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI;gBACtB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACZ,MAAM,OAAO,GAAgB,EAAE,CAAC;YAChC,kEAAkE;YAClE,kDAAkD;YAClD,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAChF,uDAAuD;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;oBAAE,OAAO,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;oBAAE,OAAO,CAAC,CAAC;gBAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;YAC/C,OAAO,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"listFiles.js","sourceRoot":"","sources":["../../../../../src/main/core/tools/builtin/listFiles.ts"],"names":[],"mappings":"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"}
@@ -2,143 +2,51 @@ import { z } from 'zod';
2
2
  import { promises as fs } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { typedOk, typedErr } from '../toolTypes.js';
5
- import { walk, filterByInclude, DEFAULT_EXCLUDES, } from './_walk.js';
6
- /**
7
- * grep_content — Regex search across one file OR a directory tree.
8
- *
9
- * Two modes:
10
- * 1. Single-file: `path` is a regular file → search it.
11
- * 2. Recursive: `path` is a directory → walk it (respecting `include` /
12
- * `exclude` globs and `maxDepth`) and search each matched file.
13
- *
14
- * Backward-compatible: existing callers passing a single-file `path`
15
- * keep the v0.3.x behavior unchanged.
16
- *
17
- * Glob syntax: `*`, `?`, `[abc]`, `**` (recursive). See _walk.ts.
18
- */
19
5
  const GrepContentArgsSchema = z.object({
20
- /** File OR directory to search (relative to cwd or absolute). */
21
6
  path: z.string().min(1),
22
- /** Regex pattern (no flags — gm is hardcoded). */
23
7
  pattern: z.string().min(1),
24
- /** Context lines before/after each match. */
25
8
  contextLines: z.number().int().nonnegative().default(2),
26
- /** Max matches returned (total matches still counted). */
27
9
  maxMatches: z.number().int().positive().max(1000).default(50),
28
- /**
29
- * Glob patterns to INCLUDE when path is a directory (e.g. ['*.ts', '*.tsx']).
30
- * Default ['*'] = all files. Ignored when path is a file.
31
- */
32
- include: z.array(z.string()).default(['*']),
33
- /**
34
- * Glob patterns to EXCLUDE when path is a directory (e.g. ['*.test.ts']).
35
- * Defaults to common noise dirs. Ignored when path is a file.
36
- */
37
- exclude: z.array(z.string()).default(DEFAULT_EXCLUDES),
38
- /** Max recursion depth when path is a directory (default 8). */
39
- maxDepth: z.number().int().positive().max(15).default(8),
40
10
  });
41
- export { GrepContentArgsSchema };
42
- async function searchFile(absPath, relPath, regex, contextLines, remainingSlots) {
43
- let buf;
44
- try {
45
- buf = await fs.readFile(absPath, 'utf-8');
46
- }
47
- catch {
48
- return { matches: [], total: 0, truncated: false }; // unreadable file → skip
49
- }
50
- const lines = buf.split('\n');
51
- const matches = [];
52
- let total = 0;
53
- let truncated = false;
54
- for (let i = 0; i < lines.length; i++) {
55
- regex.lastIndex = 0;
56
- if (regex.test(lines[i])) {
57
- total++;
58
- if (matches.length < remainingSlots) {
59
- const startBefore = Math.max(0, i - contextLines);
60
- const endAfter = Math.min(lines.length - 1, i + contextLines);
61
- matches.push({
62
- file: absPath,
63
- relPath,
64
- line: i + 1,
65
- text: lines[i],
66
- context: {
67
- before: lines.slice(startBefore, i),
68
- after: lines.slice(i + 1, endAfter + 1),
69
- },
70
- });
71
- }
72
- else {
73
- truncated = true;
74
- }
75
- }
76
- }
77
- return { matches, total, truncated };
78
- }
79
- async function isDirectory(p) {
80
- try {
81
- const stat = await fs.stat(p);
82
- return stat.isDirectory();
83
- }
84
- catch {
85
- return false;
86
- }
87
- }
88
11
  export const grepContentTool = {
89
12
  name: 'grep_content',
90
- description: 'Regex search for content in a file OR recursively in a directory. ' +
91
- 'When path is a directory, include/exclude globs filter which files are searched ' +
92
- '(default: all files, excluding node_modules/dist/.git/etc.). Returns matches with ' +
93
- 'line numbers and surrounding context. Single-file mode preserves v0.3.x behavior.',
13
+ description: 'Regex search for content in a file. Returns matches with line numbers and context.',
94
14
  permissions: ['read'],
95
- timeoutMs: 30000,
15
+ timeoutMs: 10000,
96
16
  inputSchema: GrepContentArgsSchema,
97
17
  execute: async (args, ctx) => {
98
18
  try {
99
- const absRoot = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);
19
+ const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);
20
+ const content = await fs.readFile(absPath, { encoding: 'utf-8', signal: ctx.signal });
21
+ const text = typeof content === 'string' ? content : content.toString('utf-8');
22
+ const lines = text.split('\n');
100
23
  const regex = new RegExp(args.pattern, 'gm');
101
- // ── Single-file mode ────────────────────────────────────────
102
- if (!(await isDirectory(absRoot))) {
103
- const single = await searchFile(absRoot, args.path, regex, args.contextLines, args.maxMatches);
104
- return typedOk({
105
- matches: single.matches,
106
- totalMatches: single.total,
107
- truncated: single.truncated,
108
- filesSearched: 1,
109
- filesInTree: 1,
110
- });
111
- }
112
- // ── Recursive (directory) mode ──────────────────────────────
113
- const allEntries = [];
114
- await walk(absRoot, '', 0, args.maxDepth, args.exclude, allEntries, ctx.signal);
115
- const matchedFiles = filterByInclude(allEntries, args.include);
116
- const allMatches = [];
24
+ const matches = [];
117
25
  let totalMatches = 0;
118
26
  let truncated = false;
119
- let filesSearched = 0;
120
- for (const entry of matchedFiles) {
121
- if (ctx.signal?.aborted)
122
- break;
123
- if (allMatches.length >= args.maxMatches) {
124
- truncated = true;
125
- break;
27
+ for (let i = 0; i < lines.length; i++) {
28
+ if (regex.test(lines[i])) {
29
+ regex.lastIndex = 0; // Reset global regex state
30
+ totalMatches++;
31
+ if (matches.length < args.maxMatches) {
32
+ const startBefore = Math.max(0, i - args.contextLines);
33
+ const endAfter = Math.min(lines.length - 1, i + args.contextLines);
34
+ matches.push({
35
+ file: absPath,
36
+ line: i + 1,
37
+ text: lines[i],
38
+ context: {
39
+ before: lines.slice(startBefore, i),
40
+ after: lines.slice(i + 1, endAfter + 1),
41
+ },
42
+ });
43
+ }
44
+ else {
45
+ truncated = true;
46
+ }
126
47
  }
127
- const absFile = path.join(absRoot, entry.name);
128
- const result = await searchFile(absFile, entry.name, regex, args.contextLines, args.maxMatches - allMatches.length);
129
- filesSearched++;
130
- totalMatches += result.total;
131
- if (result.truncated)
132
- truncated = true;
133
- allMatches.push(...result.matches);
134
48
  }
135
- return typedOk({
136
- matches: allMatches,
137
- totalMatches,
138
- truncated,
139
- filesSearched,
140
- filesInTree: matchedFiles.length,
141
- });
49
+ return typedOk({ matches, totalMatches, truncated });
142
50
  }
143
51
  catch (err) {
144
52
  return typedErr(err instanceof Error ? err.message : String(err));