openhorse 0.2.9 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +7 -1
  2. package/dist/commands/index.d.ts.map +1 -1
  3. package/dist/commands/index.js +50 -2
  4. package/dist/commands/index.js.map +1 -1
  5. package/dist/framework/prompt.d.ts.map +1 -1
  6. package/dist/framework/prompt.js +15 -2
  7. package/dist/framework/prompt.js.map +1 -1
  8. package/dist/framework/query.d.ts +2 -0
  9. package/dist/framework/query.d.ts.map +1 -1
  10. package/dist/framework/query.js +82 -10
  11. package/dist/framework/query.js.map +1 -1
  12. package/dist/framework/tool-scheduler.d.ts +3 -0
  13. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  14. package/dist/framework/tool-scheduler.js +9 -0
  15. package/dist/framework/tool-scheduler.js.map +1 -1
  16. package/dist/harness/intent.d.ts.map +1 -1
  17. package/dist/harness/intent.js +6 -0
  18. package/dist/harness/intent.js.map +1 -1
  19. package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -1
  20. package/dist/ink-ui/components/RunningHorseIndicator.js +2 -1
  21. package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -1
  22. package/dist/runtime/agent-runtime-controller.d.ts +1 -0
  23. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  24. package/dist/runtime/agent-runtime-controller.js +22 -1
  25. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  26. package/dist/runtime/agent-status.d.ts +4 -0
  27. package/dist/runtime/agent-status.d.ts.map +1 -0
  28. package/dist/runtime/agent-status.js +15 -0
  29. package/dist/runtime/agent-status.js.map +1 -0
  30. package/dist/runtime/chat-controller.d.ts.map +1 -1
  31. package/dist/runtime/chat-controller.js +40 -8
  32. package/dist/runtime/chat-controller.js.map +1 -1
  33. package/dist/services/compact/auto-compact.d.ts +19 -0
  34. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  35. package/dist/services/compact/auto-compact.js +55 -7
  36. package/dist/services/compact/auto-compact.js.map +1 -1
  37. package/dist/services/config-dir.d.ts +2 -0
  38. package/dist/services/config-dir.d.ts.map +1 -1
  39. package/dist/services/config-dir.js +5 -0
  40. package/dist/services/config-dir.js.map +1 -1
  41. package/dist/services/config.d.ts +4 -2
  42. package/dist/services/config.d.ts.map +1 -1
  43. package/dist/services/config.js +43 -4
  44. package/dist/services/config.js.map +1 -1
  45. package/dist/services/doctor.d.ts.map +1 -1
  46. package/dist/services/doctor.js +33 -0
  47. package/dist/services/doctor.js.map +1 -1
  48. package/dist/services/global-config.d.ts +14 -6
  49. package/dist/services/global-config.d.ts.map +1 -1
  50. package/dist/services/global-config.js +5 -20
  51. package/dist/services/global-config.js.map +1 -1
  52. package/dist/services/llm.d.ts +2 -0
  53. package/dist/services/llm.d.ts.map +1 -1
  54. package/dist/services/llm.js +95 -20
  55. package/dist/services/llm.js.map +1 -1
  56. package/dist/services/model-context.d.ts +10 -1
  57. package/dist/services/model-context.d.ts.map +1 -1
  58. package/dist/services/model-context.js +53 -14
  59. package/dist/services/model-context.js.map +1 -1
  60. package/dist/services/usage-state.d.ts +20 -0
  61. package/dist/services/usage-state.d.ts.map +1 -0
  62. package/dist/services/usage-state.js +128 -0
  63. package/dist/services/usage-state.js.map +1 -0
  64. package/dist/skills/loader.d.ts +2 -1
  65. package/dist/skills/loader.d.ts.map +1 -1
  66. package/dist/skills/loader.js +135 -13
  67. package/dist/skills/loader.js.map +1 -1
  68. package/dist/skills/types.d.ts +2 -2
  69. package/dist/skills/types.d.ts.map +1 -1
  70. package/dist/terminal-ui/completion.d.ts +7 -0
  71. package/dist/terminal-ui/completion.d.ts.map +1 -1
  72. package/dist/terminal-ui/completion.js +22 -10
  73. package/dist/terminal-ui/completion.js.map +1 -1
  74. package/dist/terminal-ui/launch.d.ts +20 -0
  75. package/dist/terminal-ui/launch.d.ts.map +1 -1
  76. package/dist/terminal-ui/launch.js +190 -32
  77. package/dist/terminal-ui/launch.js.map +1 -1
  78. package/dist/terminal-ui/raw-editor.d.ts +3 -0
  79. package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
  80. package/dist/terminal-ui/raw-editor.js +42 -2
  81. package/dist/terminal-ui/raw-editor.js.map +1 -1
  82. package/dist/tools/index.d.ts.map +1 -1
  83. package/dist/tools/index.js +288 -48
  84. package/dist/tools/index.js.map +1 -1
  85. package/dist/tui-core/input-parser.d.ts +4 -0
  86. package/dist/tui-core/input-parser.d.ts.map +1 -1
  87. package/dist/tui-core/input-parser.js +30 -0
  88. package/dist/tui-core/input-parser.js.map +1 -1
  89. package/dist/tui-ui/runner.d.ts.map +1 -1
  90. package/dist/tui-ui/runner.js +6 -0
  91. package/dist/tui-ui/runner.js.map +1 -1
  92. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"raw-editor.js","sourceRoot":"","sources":["../../src/terminal-ui/raw-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raw-editor.js","sourceRoot":"","sources":["../../src/terminal-ui/raw-editor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAa,KAAK,aAAa,EAAmB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAqCrG,eAAO,MAAM,KAAK,EAAE,aAAa,EAyrBhC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAEjD;AAmTD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAicD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAUD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAGD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,KAAK,cAAc,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAa,KAAK,aAAa,EAAmB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiErG,eAAO,MAAM,KAAK,EAAE,aAAa,EA2uBhC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAEjD;AAgWD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AA0nBD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAUD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAGD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,KAAK,cAAc,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -32,6 +32,30 @@ const plan_1 = require("./plan");
32
32
  const git_1 = require("./git");
33
33
  const lsp_1 = require("./lsp");
34
34
  const bash_security_1 = require("./bash_security");
35
+ const BATCH_READ_ALLOWED_TOOLS = new Set(['git_status', 'list_files', 'glob', 'grep', 'read_file']);
36
+ const BATCH_READ_MAX_STEPS = 8;
37
+ const BATCH_READ_STEP_OUTPUT_MAX_BYTES = 1600;
38
+ function compactOneLine(text, maxLength) {
39
+ const compact = text.replace(/\s+/g, ' ').trim();
40
+ if (compact.length <= maxLength)
41
+ return compact;
42
+ if (maxLength <= 3)
43
+ return compact.slice(0, maxLength);
44
+ const headLength = Math.ceil((maxLength - 3) * 0.55);
45
+ const tailLength = Math.floor((maxLength - 3) * 0.45);
46
+ return `${compact.slice(0, headLength)}...${compact.slice(-tailLength)}`;
47
+ }
48
+ function summarizeFailedToolResult(result) {
49
+ const details = [];
50
+ if (result.error) {
51
+ details.push(compactOneLine(result.error, 80));
52
+ }
53
+ const output = result.output ? compactOneLine(result.output, 120) : '';
54
+ if (output && output !== result.error) {
55
+ details.push(`output: ${output}`);
56
+ }
57
+ return details.join('; ');
58
+ }
35
59
  // ============================================================================
36
60
  // 工具集
37
61
  // ============================================================================
@@ -72,9 +96,10 @@ exports.TOOLS = [
72
96
  if (!path || typeof path !== 'string') {
73
97
  return { success: false, output: '', error: 'read_file requires a path parameter' };
74
98
  }
75
- return readFileSync_(path, args.maxLines);
99
+ return readFileSync_(path, args.maxLines, context.cwd);
76
100
  },
77
101
  isReadOnly: () => true,
102
+ isConcurrencySafe: () => true,
78
103
  userFacingName: (args) => `Read ${args.path}`,
79
104
  getSummary: (args, result) => {
80
105
  const path = args.path;
@@ -112,7 +137,7 @@ exports.TOOLS = [
112
137
  if (typeof content !== 'string') {
113
138
  return { success: false, output: '', error: 'write_file requires a content parameter' };
114
139
  }
115
- return writeFileSync_(path, content);
140
+ return writeFileSync_(path, content, context.cwd);
116
141
  },
117
142
  isDestructive: () => true,
118
143
  checkPermissions: (args, context) => {
@@ -145,13 +170,13 @@ exports.TOOLS = [
145
170
  },
146
171
  required: ['path'],
147
172
  },
148
- execute: async (args) => {
173
+ execute: async (args, context) => {
149
174
  // Ensure path is a valid string
150
175
  const path = args.path;
151
176
  if (!path || typeof path !== 'string') {
152
177
  return { success: false, output: '', error: 'list_files requires a path parameter' };
153
178
  }
154
- return listFiles_(path, args.maxDepth);
179
+ return listFiles_(path, args.maxDepth, context.cwd);
155
180
  },
156
181
  isReadOnly: () => true,
157
182
  isConcurrencySafe: () => true,
@@ -196,7 +221,7 @@ exports.TOOLS = [
196
221
  return { success: false, output: '', error: 'exec_command requires a command parameter' };
197
222
  }
198
223
  // Issue #32 #3.2: 传递 abortSignal
199
- return execCommand_(command, args.cwd, args.timeout, args.maxOutput, context.abortSignal);
224
+ return execCommand_(command, args.cwd, args.timeout, args.maxOutput, context.abortSignal, context.cwd);
200
225
  },
201
226
  isDestructive: (args) => {
202
227
  const cmd = args.command || '';
@@ -222,13 +247,20 @@ exports.TOOLS = [
222
247
  const cmd = args.command || '';
223
248
  return (0, bash_security_1.isReadOnlyCommand)(cmd);
224
249
  },
225
- userFacingName: (args) => `Exec ${args.command?.slice(0, 60) || ''}`,
250
+ isConcurrencySafe: (args) => {
251
+ const cmd = args.command || '';
252
+ return (0, bash_security_1.isReadOnlyCommand)(cmd);
253
+ },
254
+ userFacingName: (args) => `Exec ${compactOneLine(args.command || '', 80)}`,
226
255
  getSummary: (args, result) => {
227
- const cmd = args.command?.slice(0, 40) || '';
228
- if (!result.success)
229
- return `🔧 exec: ${cmd} → error`;
256
+ const command = args.command || '';
257
+ const commandSummary = command ? `\n $ ${compactOneLine(command, 160)}` : '';
258
+ if (!result.success) {
259
+ const detail = summarizeFailedToolResult(result);
260
+ return `🔧 exec → error${detail ? ` (${detail})` : ''}${commandSummary}`;
261
+ }
230
262
  const bytes = Buffer.byteLength(result.output, 'utf8');
231
- return `🔧 exec: ${cmd} (${bytes}B output)`;
263
+ return `🔧 exec (${bytes}B output)${commandSummary}`;
232
264
  },
233
265
  }),
234
266
  (0, tool_1.buildTool)({
@@ -289,7 +321,7 @@ exports.TOOLS = [
289
321
  lastEditFileArgs.turnId = context.turnId;
290
322
  lastEditFileArgs.updatedAt = Date.now();
291
323
  (0, tool_state_1.setToolState)({ lastEditFileArgs });
292
- return editFile_(path, old_string, new_string, args.replace_all, args.fuzzy_match, args.preview);
324
+ return editFile_(path, old_string, new_string, args.replace_all, args.fuzzy_match, args.preview, context.cwd);
293
325
  },
294
326
  isDestructive: () => true,
295
327
  checkPermissions: (args, context) => {
@@ -321,13 +353,13 @@ exports.TOOLS = [
321
353
  },
322
354
  required: ['pattern'],
323
355
  },
324
- execute: async (args) => {
356
+ execute: async (args, context) => {
325
357
  // Ensure pattern is a valid string
326
358
  const pattern = args.pattern;
327
359
  if (!pattern || typeof pattern !== 'string') {
328
360
  return { success: false, output: '', error: 'glob requires a pattern parameter' };
329
361
  }
330
- return glob_(pattern, args.path);
362
+ return glob_(pattern, args.path, context.cwd);
331
363
  },
332
364
  isReadOnly: () => true,
333
365
  isConcurrencySafe: () => true,
@@ -365,13 +397,13 @@ exports.TOOLS = [
365
397
  },
366
398
  required: ['pattern'],
367
399
  },
368
- execute: async (args) => {
400
+ execute: async (args, context) => {
369
401
  // Ensure pattern is a valid string
370
402
  const pattern = args.pattern;
371
403
  if (!pattern || typeof pattern !== 'string') {
372
404
  return { success: false, output: '', error: 'grep requires a pattern parameter' };
373
405
  }
374
- return grep_(pattern, args.path, args.glob, args.context);
406
+ return grep_(pattern, args.path, args.glob, args.context, context.cwd);
375
407
  },
376
408
  isReadOnly: () => true,
377
409
  isConcurrencySafe: () => true,
@@ -384,6 +416,46 @@ exports.TOOLS = [
384
416
  return `🔎 grep /${pattern}/ → ${count} matches`;
385
417
  },
386
418
  }),
419
+ (0, tool_1.buildTool)({
420
+ name: 'batch_read',
421
+ description: 'Run up to 8 read-only exploration tool calls in one ordered batch. Allowed tools: git_status, list_files, glob, grep, read_file.',
422
+ parameters: {
423
+ type: 'object',
424
+ properties: {
425
+ steps: {
426
+ type: 'array',
427
+ description: 'Array of steps: [{ "tool": "read_file", "args": { "path": "package.json" } }]. Max 8 steps.',
428
+ items: {
429
+ type: 'object',
430
+ properties: {
431
+ tool: { type: 'string', description: 'Allowed read-only tool name' },
432
+ args: { type: 'object', description: 'Arguments for the tool' },
433
+ },
434
+ required: ['tool', 'args'],
435
+ },
436
+ maxItems: BATCH_READ_MAX_STEPS,
437
+ },
438
+ reason: {
439
+ type: 'string',
440
+ description: 'Optional reason for this read-only batch.',
441
+ },
442
+ },
443
+ required: ['steps'],
444
+ },
445
+ execute: async (args, context) => executeBatchRead(args, context),
446
+ isReadOnly: () => true,
447
+ isConcurrencySafe: () => true,
448
+ userFacingName: (args) => {
449
+ const count = Array.isArray(args.steps) ? args.steps.length : 0;
450
+ return `Batch read ${count} steps`;
451
+ },
452
+ getSummary: (args, result) => {
453
+ if (!result.success)
454
+ return '📚 batch_read → error';
455
+ const count = Array.isArray(args.steps) ? args.steps.length : 0;
456
+ return `📚 batch_read → ${count} steps`;
457
+ },
458
+ }),
387
459
  // Memory tools
388
460
  (0, tool_1.buildTool)({
389
461
  name: 'memory_save',
@@ -710,23 +782,55 @@ function getRuntimeTools() {
710
782
  // ============================================================================
711
783
  // 工具实现
712
784
  // ============================================================================
713
- /** 安全路径解析 防止路径遍历攻击 */
714
- function safePath(input) {
715
- const resolved = (0, path_1.resolve)(input);
716
- const cwd = process.cwd();
717
- if ((0, path_1.relative)(cwd, resolved).startsWith('..')) {
718
- return cwd;
785
+ /** Normalize model/tool path strings before resolving them on disk. */
786
+ function normalizeToolPath(input) {
787
+ let value = input.trim();
788
+ const markdownLink = value.match(/^!?\[[^\]]*\]\(([\s\S]+)\)$/u);
789
+ if (markdownLink) {
790
+ value = markdownLink[1].trim();
791
+ if (value.startsWith('<')) {
792
+ const end = value.indexOf('>');
793
+ if (end >= 0) {
794
+ value = value.slice(1, end);
795
+ }
796
+ }
797
+ else {
798
+ value = value.replace(/\s+["'][\s\S]*["']$/u, '');
799
+ }
800
+ }
801
+ if ((value.startsWith('`') && value.endsWith('`')) ||
802
+ (value.startsWith('"') && value.endsWith('"')) ||
803
+ (value.startsWith("'") && value.endsWith("'"))) {
804
+ value = value.slice(1, -1);
805
+ }
806
+ if (value.startsWith('file://')) {
807
+ try {
808
+ return decodeURIComponent(new URL(value).pathname);
809
+ }
810
+ catch {
811
+ value = value.replace(/^file:\/\//u, '');
812
+ }
813
+ }
814
+ try {
815
+ return decodeURIComponent(value);
816
+ }
817
+ catch {
818
+ return value;
719
819
  }
720
- return resolved;
721
820
  }
722
- async function readFileSync_(path, maxLines) {
821
+ /** Resolve tool path parameters relative to the current tool cwd. */
822
+ function safePath(input, cwd = process.cwd()) {
823
+ return (0, path_1.resolve)(cwd, normalizeToolPath(input));
824
+ }
825
+ async function readFileSync_(path, maxLines, cwd) {
723
826
  try {
724
- const resolved = safePath(path);
827
+ const normalizedPath = normalizeToolPath(path);
828
+ const resolved = safePath(path, cwd);
725
829
  if (!(0, fs_1.existsSync)(resolved)) {
726
- return { success: false, output: '', error: `File not found: ${path}` };
830
+ return { success: false, output: '', error: `File not found: ${normalizedPath}` };
727
831
  }
728
832
  if ((0, fs_1.statSync)(resolved).isDirectory()) {
729
- return { success: false, output: '', error: `Path is a directory, not a file: ${path}` };
833
+ return { success: false, output: '', error: `Path is a directory, not a file: ${normalizedPath}` };
730
834
  }
731
835
  const content = (0, fs_1.readFileSync)(resolved, 'utf-8');
732
836
  const lines = content.split('\n');
@@ -755,23 +859,25 @@ async function readFileSync_(path, maxLines) {
755
859
  return { success: false, output: '', error: String(err.message) };
756
860
  }
757
861
  }
758
- async function writeFileSync_(path, content) {
862
+ async function writeFileSync_(path, content, cwd) {
759
863
  try {
760
- const resolved = safePath(path);
864
+ const normalizedPath = normalizeToolPath(path);
865
+ const resolved = safePath(path, cwd);
761
866
  (0, fs_1.writeFileSync)(resolved, content, 'utf-8');
762
- return { success: true, output: `Wrote ${content.split('\n').length} lines to ${path}` };
867
+ return { success: true, output: `Wrote ${content.split('\n').length} lines to ${normalizedPath}` };
763
868
  }
764
869
  catch (err) {
765
870
  return { success: false, output: '', error: String(err.message) };
766
871
  }
767
872
  }
768
- async function listFiles_(path, maxDepth) {
769
- const resolved = safePath(path);
873
+ async function listFiles_(path, maxDepth, cwd) {
874
+ const normalizedPath = normalizeToolPath(path);
875
+ const resolved = safePath(path, cwd);
770
876
  if (!(0, fs_1.existsSync)(resolved)) {
771
- return { success: false, output: '', error: `Path not found: ${path}` };
877
+ return { success: false, output: '', error: `Path not found: ${normalizedPath}` };
772
878
  }
773
879
  if (!(0, fs_1.statSync)(resolved).isDirectory()) {
774
- return { success: true, output: path };
880
+ return { success: true, output: normalizedPath };
775
881
  }
776
882
  const depth = maxDepth ?? 2;
777
883
  const results = [];
@@ -807,9 +913,9 @@ async function listFiles_(path, maxDepth) {
807
913
  return { success: true, output };
808
914
  }
809
915
  // Issue #32 #3.2: execCommand_ 支持 abortSignal
810
- async function execCommand_(command, cwd, timeout, maxOutput, abortSignal) {
916
+ async function execCommand_(command, cwd, timeout, maxOutput, abortSignal, baseCwd) {
811
917
  return new Promise((resolve) => {
812
- const workdir = cwd ? safePath(cwd) : process.cwd();
918
+ const workdir = cwd ? safePath(cwd, baseCwd) : baseCwd ?? process.cwd();
813
919
  const timeoutMs = timeout ?? 30000;
814
920
  const maxBytes = maxOutput ?? 51200; // Default 50KB, Issue #28 fix
815
921
  // Use spawn for streaming output with truncation support
@@ -1072,14 +1178,15 @@ function fuzzyMatch(content, oldString) {
1072
1178
  }
1073
1179
  return null;
1074
1180
  }
1075
- async function editFile_(path, old_string, new_string, replace_all, fuzzy_match, preview) {
1181
+ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match, preview, cwd) {
1076
1182
  try {
1077
- const resolved = safePath(path);
1183
+ const normalizedPath = normalizeToolPath(path);
1184
+ const resolved = safePath(path, cwd);
1078
1185
  if (!(0, fs_1.existsSync)(resolved)) {
1079
- return { success: false, output: '', error: `File not found: ${path}` };
1186
+ return { success: false, output: '', error: `File not found: ${normalizedPath}` };
1080
1187
  }
1081
1188
  if ((0, fs_1.statSync)(resolved).isDirectory()) {
1082
- return { success: false, output: '', error: `Path is a directory, not a file: ${path}` };
1189
+ return { success: false, output: '', error: `Path is a directory, not a file: ${normalizedPath}` };
1083
1190
  }
1084
1191
  const content = (0, fs_1.readFileSync)(resolved, 'utf-8');
1085
1192
  // Check if old_string exists exactly
@@ -1154,7 +1261,7 @@ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match,
1154
1261
  (0, fs_1.writeFileSync)(resolved, newContent, 'utf-8');
1155
1262
  return {
1156
1263
  success: true,
1157
- output: `Fuzzy edited ${path} (matched by ${fuzzyResult.strategy}, "${match.slice(0, 50)}...")`,
1264
+ output: `Fuzzy edited ${normalizedPath} (matched by ${fuzzyResult.strategy}, "${match.slice(0, 50)}...")`,
1158
1265
  };
1159
1266
  }
1160
1267
  // If not replace_all, require unique match
@@ -1178,7 +1285,7 @@ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match,
1178
1285
  (0, fs_1.writeFileSync)(resolved, newContent, 'utf-8');
1179
1286
  return {
1180
1287
  success: true,
1181
- output: `Replaced ${count} occurrence(s) of old_string with new_string in ${path}`,
1288
+ output: `Replaced ${count} occurrence(s) of old_string with new_string in ${normalizedPath}`,
1182
1289
  };
1183
1290
  }
1184
1291
  catch (err) {
@@ -1196,14 +1303,15 @@ function escapeRegExp(str) {
1196
1303
  * Glob 模式匹配 - 简化版实现
1197
1304
  * 支持: **(递归目录)、*(任意字符)、?(单个字符)
1198
1305
  */
1199
- async function glob_(pattern, basePath) {
1306
+ async function glob_(pattern, basePath, cwd) {
1200
1307
  try {
1201
- const base = basePath ? safePath(basePath) : process.cwd();
1308
+ const normalizedBasePath = basePath ? normalizeToolPath(basePath) : cwd ?? process.cwd();
1309
+ const base = basePath ? safePath(basePath, cwd) : cwd ?? process.cwd();
1202
1310
  if (!(0, fs_1.existsSync)(base)) {
1203
- return { success: false, output: '', error: `Path not found: ${basePath}` };
1311
+ return { success: false, output: '', error: `Path not found: ${normalizedBasePath}` };
1204
1312
  }
1205
1313
  if (!(0, fs_1.statSync)(base).isDirectory()) {
1206
- return { success: false, output: '', error: `Path is not a directory: ${basePath}` };
1314
+ return { success: false, output: '', error: `Path is not a directory: ${normalizedBasePath}` };
1207
1315
  }
1208
1316
  const results = [];
1209
1317
  // Convert glob pattern to regex
@@ -1270,11 +1378,12 @@ async function glob_(pattern, basePath) {
1270
1378
  /**
1271
1379
  * Grep 搜索 - 在文件中搜索正则表达式
1272
1380
  */
1273
- async function grep_(pattern, basePath, globPattern, contextLines) {
1381
+ async function grep_(pattern, basePath, globPattern, contextLines, cwd) {
1274
1382
  try {
1275
- const base = basePath ? safePath(basePath) : process.cwd();
1383
+ const normalizedBasePath = basePath ? normalizeToolPath(basePath) : cwd ?? process.cwd();
1384
+ const base = basePath ? safePath(basePath, cwd) : cwd ?? process.cwd();
1276
1385
  if (!(0, fs_1.existsSync)(base)) {
1277
- return { success: false, output: '', error: `Path not found: ${basePath}` };
1386
+ return { success: false, output: '', error: `Path not found: ${normalizedBasePath}` };
1278
1387
  }
1279
1388
  const regex = new RegExp(pattern);
1280
1389
  const context = contextLines ?? 0;
@@ -1368,6 +1477,137 @@ async function grep_(pattern, basePath, globPattern, contextLines) {
1368
1477
  return { success: false, output: '', error: String(err.message) };
1369
1478
  }
1370
1479
  }
1480
+ function isRecord(value) {
1481
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
1482
+ }
1483
+ function parseBatchReadSteps(rawSteps) {
1484
+ let value = rawSteps;
1485
+ if (typeof value === 'string') {
1486
+ try {
1487
+ value = JSON.parse(value);
1488
+ }
1489
+ catch {
1490
+ return { error: 'batch_read steps must be an array or a valid JSON array string' };
1491
+ }
1492
+ }
1493
+ if (!Array.isArray(value)) {
1494
+ return { error: 'batch_read requires steps to be an array' };
1495
+ }
1496
+ if (value.length === 0) {
1497
+ return { error: 'batch_read requires at least one step' };
1498
+ }
1499
+ if (value.length > BATCH_READ_MAX_STEPS) {
1500
+ return { error: `batch_read supports at most ${BATCH_READ_MAX_STEPS} steps` };
1501
+ }
1502
+ const steps = [];
1503
+ for (let i = 0; i < value.length; i++) {
1504
+ const step = value[i];
1505
+ if (!isRecord(step)) {
1506
+ return { error: `batch_read step ${i + 1} must be an object` };
1507
+ }
1508
+ if (typeof step.tool !== 'string' || !step.tool) {
1509
+ return { error: `batch_read step ${i + 1} requires a tool string` };
1510
+ }
1511
+ let stepArgs = step.args;
1512
+ if (typeof stepArgs === 'string') {
1513
+ try {
1514
+ stepArgs = JSON.parse(stepArgs);
1515
+ }
1516
+ catch {
1517
+ return { error: `batch_read step ${i + 1} args must be an object or valid JSON object string` };
1518
+ }
1519
+ }
1520
+ if (!isRecord(stepArgs)) {
1521
+ return { error: `batch_read step ${i + 1} requires args to be an object` };
1522
+ }
1523
+ steps.push({ tool: step.tool, args: stepArgs });
1524
+ }
1525
+ return { steps };
1526
+ }
1527
+ function buildBatchReadPayload(success, summary, steps, error) {
1528
+ const payload = {
1529
+ success,
1530
+ output: steps.map(step => `${step.index}. ${step.tool}: ${step.summary || (step.success ? 'ok' : step.error || 'error')}`).join('\n'),
1531
+ summary,
1532
+ steps,
1533
+ };
1534
+ if (error) {
1535
+ payload.error = error;
1536
+ }
1537
+ return {
1538
+ success,
1539
+ output: JSON.stringify(payload, null, 2),
1540
+ summary,
1541
+ error,
1542
+ };
1543
+ }
1544
+ async function executeBatchRead(args, context) {
1545
+ const parsed = parseBatchReadSteps(args.steps);
1546
+ if (parsed.error || !parsed.steps) {
1547
+ return buildBatchReadPayload(false, parsed.error || 'Invalid batch_read request', [], parsed.error);
1548
+ }
1549
+ const runtimeTools = getRuntimeTools();
1550
+ for (let i = 0; i < parsed.steps.length; i++) {
1551
+ const step = parsed.steps[i];
1552
+ const tool = runtimeTools.find(t => t.name === step.tool);
1553
+ if (!BATCH_READ_ALLOWED_TOOLS.has(step.tool)) {
1554
+ const error = `Tool ${step.tool} is not allowed in batch_read`;
1555
+ return buildBatchReadPayload(false, error, [{
1556
+ index: i + 1,
1557
+ tool: step.tool,
1558
+ args: step.args,
1559
+ success: false,
1560
+ error,
1561
+ output: '',
1562
+ }], error);
1563
+ }
1564
+ if (!tool || tool.isReadOnly?.(step.args) !== true) {
1565
+ const error = `Tool ${step.tool} is unavailable or not read-only`;
1566
+ return buildBatchReadPayload(false, error, [{
1567
+ index: i + 1,
1568
+ tool: step.tool,
1569
+ args: step.args,
1570
+ success: false,
1571
+ error,
1572
+ output: '',
1573
+ }], error);
1574
+ }
1575
+ }
1576
+ const stepResults = [];
1577
+ for (let i = 0; i < parsed.steps.length; i++) {
1578
+ const step = parsed.steps[i];
1579
+ try {
1580
+ const rawResult = await executeTool(step.tool, step.args, context.abortSignal, context);
1581
+ const envelope = JSON.parse(rawResult);
1582
+ const output = typeof envelope.output === 'string'
1583
+ ? envelope.output
1584
+ : JSON.stringify(envelope.output ?? '');
1585
+ stepResults.push({
1586
+ index: i + 1,
1587
+ tool: step.tool,
1588
+ args: step.args,
1589
+ success: envelope.success === true,
1590
+ summary: typeof envelope.summary === 'string' ? envelope.summary : undefined,
1591
+ error: typeof envelope.error === 'string' ? envelope.error : undefined,
1592
+ output: (0, tool_artifacts_1.truncateForContext)(output, BATCH_READ_STEP_OUTPUT_MAX_BYTES),
1593
+ });
1594
+ }
1595
+ catch (err) {
1596
+ stepResults.push({
1597
+ index: i + 1,
1598
+ tool: step.tool,
1599
+ args: step.args,
1600
+ success: false,
1601
+ error: err?.message || String(err),
1602
+ output: '',
1603
+ });
1604
+ }
1605
+ }
1606
+ const okCount = stepResults.filter(step => step.success).length;
1607
+ const success = okCount === stepResults.length;
1608
+ const summary = `batch_read completed ${okCount}/${stepResults.length} steps`;
1609
+ return buildBatchReadPayload(success, summary, stepResults, success ? undefined : summary);
1610
+ }
1371
1611
  // ============================================================================
1372
1612
  // 统一执行入口
1373
1613
  // ============================================================================