openhorse 0.2.4 → 0.2.6

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 (119) hide show
  1. package/dist/commands/index.d.ts.map +1 -1
  2. package/dist/commands/index.js +141 -3
  3. package/dist/commands/index.js.map +1 -1
  4. package/dist/commands/types.d.ts +21 -0
  5. package/dist/commands/types.d.ts.map +1 -1
  6. package/dist/commands/types.js.map +1 -1
  7. package/dist/core/tool-artifacts.d.ts +38 -0
  8. package/dist/core/tool-artifacts.d.ts.map +1 -0
  9. package/dist/core/tool-artifacts.js +134 -0
  10. package/dist/core/tool-artifacts.js.map +1 -0
  11. package/dist/core/warn-dedup.d.ts +39 -0
  12. package/dist/core/warn-dedup.d.ts.map +1 -0
  13. package/dist/core/warn-dedup.js +80 -0
  14. package/dist/core/warn-dedup.js.map +1 -0
  15. package/dist/framework/index.d.ts +2 -0
  16. package/dist/framework/index.d.ts.map +1 -1
  17. package/dist/framework/index.js +5 -1
  18. package/dist/framework/index.js.map +1 -1
  19. package/dist/framework/query.d.ts +6 -0
  20. package/dist/framework/query.d.ts.map +1 -1
  21. package/dist/framework/query.js +56 -133
  22. package/dist/framework/query.js.map +1 -1
  23. package/dist/framework/tool-scheduler.d.ts +103 -0
  24. package/dist/framework/tool-scheduler.d.ts.map +1 -0
  25. package/dist/framework/tool-scheduler.js +242 -0
  26. package/dist/framework/tool-scheduler.js.map +1 -0
  27. package/dist/framework/tool-state.d.ts +13 -0
  28. package/dist/framework/tool-state.d.ts.map +1 -1
  29. package/dist/framework/tool-state.js +1 -0
  30. package/dist/framework/tool-state.js.map +1 -1
  31. package/dist/framework/tool.d.ts +13 -0
  32. package/dist/framework/tool.d.ts.map +1 -1
  33. package/dist/framework/tool.js.map +1 -1
  34. package/dist/harness/context-harness.d.ts +1 -0
  35. package/dist/harness/context-harness.d.ts.map +1 -1
  36. package/dist/harness/context-harness.js +9 -10
  37. package/dist/harness/context-harness.js.map +1 -1
  38. package/dist/harness/harness.d.ts +4 -42
  39. package/dist/harness/harness.d.ts.map +1 -1
  40. package/dist/harness/harness.js +7 -48
  41. package/dist/harness/harness.js.map +1 -1
  42. package/dist/harness/ledger.d.ts +1 -0
  43. package/dist/harness/ledger.d.ts.map +1 -1
  44. package/dist/harness/ledger.js +2 -1
  45. package/dist/harness/ledger.js.map +1 -1
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +4 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  51. package/dist/ink-ui/screens/ReplScreen.js +29 -0
  52. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  53. package/dist/print-ui/launch.d.ts.map +1 -1
  54. package/dist/print-ui/launch.js +7 -0
  55. package/dist/print-ui/launch.js.map +1 -1
  56. package/dist/runtime/agent-runtime-controller.js +1 -1
  57. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  58. package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
  59. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  60. package/dist/runtime/agent-runtime-protocol.js +6 -0
  61. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  62. package/dist/runtime/chat-controller.d.ts +1 -0
  63. package/dist/runtime/chat-controller.d.ts.map +1 -1
  64. package/dist/runtime/chat-controller.js +50 -11
  65. package/dist/runtime/chat-controller.js.map +1 -1
  66. package/dist/runtime/ui-events.d.ts +17 -0
  67. package/dist/runtime/ui-events.d.ts.map +1 -1
  68. package/dist/services/compact/auto-compact.d.ts +3 -0
  69. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  70. package/dist/services/compact/auto-compact.js +5 -0
  71. package/dist/services/compact/auto-compact.js.map +1 -1
  72. package/dist/services/llm.d.ts +17 -0
  73. package/dist/services/llm.d.ts.map +1 -1
  74. package/dist/services/llm.js +11 -0
  75. package/dist/services/llm.js.map +1 -1
  76. package/dist/services/session-index.d.ts +5 -0
  77. package/dist/services/session-index.d.ts.map +1 -1
  78. package/dist/services/session-index.js +19 -10
  79. package/dist/services/session-index.js.map +1 -1
  80. package/dist/services/session-storage.d.ts +10 -0
  81. package/dist/services/session-storage.d.ts.map +1 -1
  82. package/dist/services/session-storage.js +81 -11
  83. package/dist/services/session-storage.js.map +1 -1
  84. package/dist/services/web-search-adapters.d.ts.map +1 -1
  85. package/dist/services/web-search-adapters.js +20 -1
  86. package/dist/services/web-search-adapters.js.map +1 -1
  87. package/dist/services/web-search-mcp.d.ts.map +1 -1
  88. package/dist/services/web-search-mcp.js +20 -1
  89. package/dist/services/web-search-mcp.js.map +1 -1
  90. package/dist/skills/loader.d.ts.map +1 -1
  91. package/dist/skills/loader.js +4 -3
  92. package/dist/skills/loader.js.map +1 -1
  93. package/dist/terminal-ui/launch.d.ts.map +1 -1
  94. package/dist/terminal-ui/launch.js +40 -18
  95. package/dist/terminal-ui/launch.js.map +1 -1
  96. package/dist/tools/index.d.ts +10 -2
  97. package/dist/tools/index.d.ts.map +1 -1
  98. package/dist/tools/index.js +196 -74
  99. package/dist/tools/index.js.map +1 -1
  100. package/dist/tui-ui/layout.js +22 -0
  101. package/dist/tui-ui/layout.js.map +1 -1
  102. package/dist/tui-ui/runner.d.ts.map +1 -1
  103. package/dist/tui-ui/runner.js +21 -0
  104. package/dist/tui-ui/runner.js.map +1 -1
  105. package/dist/tui-ui/state.d.ts +8 -1
  106. package/dist/tui-ui/state.d.ts.map +1 -1
  107. package/dist/tui-ui/state.js +8 -0
  108. package/dist/tui-ui/state.js.map +1 -1
  109. package/dist/ui-v2/components/edit-preview-picker.d.ts +26 -0
  110. package/dist/ui-v2/components/edit-preview-picker.d.ts.map +1 -0
  111. package/dist/ui-v2/components/edit-preview-picker.js +79 -0
  112. package/dist/ui-v2/components/edit-preview-picker.js.map +1 -0
  113. package/dist/ui-v2/index.d.ts +1 -0
  114. package/dist/ui-v2/index.d.ts.map +1 -1
  115. package/dist/ui-v2/index.js +1 -0
  116. package/dist/ui-v2/index.js.map +1 -1
  117. package/dist/ui-v2/types.d.ts +1 -1
  118. package/dist/ui-v2/types.d.ts.map +1 -1
  119. package/package.json +1 -1
@@ -104,6 +104,7 @@ class TerminalEventSink {
104
104
  this.pendingAssistantOutput = new Map();
105
105
  this.idCounter = 0;
106
106
  this.pendingPicker = null;
107
+ this.pendingEditPreview = null;
107
108
  }
108
109
  append(entry) {
109
110
  const id = `terminal-${++this.idCounter}`;
@@ -176,32 +177,53 @@ class TerminalEventSink {
176
177
  });
177
178
  this.writer.write(`${DIM('Type a number, session id/name, or /resume --last. Empty input cancels.')}\n`);
178
179
  }
180
+ showEditPreview(request) {
181
+ this.pendingEditPreview = request;
182
+ const kindLabel = request.kind === 'fuzzy' ? `fuzzy (${request.strategy ?? 'match'})` : 'exact';
183
+ this.writer.write(`\n${ACCENT(`Edit Preview: ${request.path} (${kindLabel})`)}\n`);
184
+ this.writer.write(`${BORDER('─'.repeat(Math.min(process.stdout.columns || 80, 96)))}\n`);
185
+ request.candidates.slice(0, 10).forEach(c => {
186
+ const matchPreview = c.match.length > 60 ? c.match.slice(0, 57) + '...' : c.match;
187
+ const newPreview = request.newString.length > 40 ? request.newString.slice(0, 37) + '...' : request.newString;
188
+ this.writer.write(` line ${String(c.line).padStart(3, ' ')} "${matchPreview}" → "${newPreview}"\n`);
189
+ });
190
+ if (request.candidates.length > 10) {
191
+ this.writer.write(`${DIM(` ... ${request.candidates.length - 10} more candidates`)}\n`);
192
+ }
193
+ this.writer.write(`${DIM('Press Enter to dismiss.')}\n`);
194
+ }
179
195
  setProcessing(_processing) {
180
196
  // The stable terminal UI is append-only, so there is no live spinner state.
181
197
  }
182
198
  consumePendingSelection(input) {
183
199
  const picker = this.pendingPicker;
184
- if (!picker)
185
- return null;
186
- const trimmed = input.trim();
187
- this.pendingPicker = null;
188
- if (!trimmed) {
189
- this.writer.write(`${DIM('Session picker cancelled.')}\n`);
190
- return '';
191
- }
192
- if (trimmed.startsWith('/'))
193
- return trimmed;
194
- const numeric = trimmed.match(/^#?(\d+)$/);
195
- if (numeric) {
196
- const index = Number(numeric[1]) - 1;
197
- const selected = picker.sessions[index];
198
- if (!selected) {
199
- this.writer.write(`${ERROR(`No session at index ${numeric[1]}.`)}\n`);
200
+ if (picker) {
201
+ const trimmed = input.trim();
202
+ this.pendingPicker = null;
203
+ if (!trimmed) {
204
+ this.writer.write(`${DIM('Session picker cancelled.')}\n`);
200
205
  return '';
201
206
  }
202
- return { type: 'select_session', sessionId: selected.id, allProjects: picker.allProjects, source: 'picker' };
207
+ if (trimmed.startsWith('/'))
208
+ return trimmed;
209
+ const numeric = trimmed.match(/^#?(\d+)$/);
210
+ if (numeric) {
211
+ const index = Number(numeric[1]) - 1;
212
+ const selected = picker.sessions[index];
213
+ if (!selected) {
214
+ this.writer.write(`${ERROR(`No session at index ${numeric[1]}.`)}\n`);
215
+ return '';
216
+ }
217
+ return { type: 'select_session', sessionId: selected.id, allProjects: picker.allProjects, source: 'picker' };
218
+ }
219
+ return { type: 'select_session', sessionId: trimmed, allProjects: picker.allProjects, source: 'picker' };
220
+ }
221
+ // Dismiss pending edit preview on any input
222
+ if (this.pendingEditPreview) {
223
+ this.pendingEditPreview = null;
224
+ return '';
203
225
  }
204
- return { type: 'select_session', sessionId: trimmed, allProjects: picker.allProjects, source: 'picker' };
226
+ return null;
205
227
  }
206
228
  printEntry(entry, finalized) {
207
229
  if (!entry.content)
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/terminal-ui/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/terminal-ui/launch.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * 使用 buildTool() 工厂模式。
11
11
  */
12
- import { type OpenHorseTool } from '../framework/tool';
12
+ import { type OpenHorseTool, type ToolContext } from '../framework/tool';
13
13
  export declare const TOOLS: OpenHorseTool[];
14
14
  /**
15
15
  * Runtime tool pool.
@@ -19,11 +19,19 @@ export declare const TOOLS: OpenHorseTool[];
19
19
  * convention used by Claude Code, Codex, and OpenClaude.
20
20
  */
21
21
  export declare function getRuntimeTools(): OpenHorseTool[];
22
+ export interface EditPreviewCandidate {
23
+ index: number;
24
+ line: number;
25
+ match: string;
26
+ contextBefore: string;
27
+ contextAfter: string;
28
+ isReplaceAll: boolean;
29
+ }
22
30
  /**
23
31
  * 执行一个工具调用,返回结构化结果字符串
24
32
  * Issue #32 #3.2: 支持 abortSignal
25
33
  */
26
- export declare function executeTool(name: string, args: Record<string, unknown>, abortSignal?: AbortSignal): Promise<string>;
34
+ export declare function executeTool(name: string, args: Record<string, unknown>, abortSignal?: AbortSignal, toolContext?: ToolContext): Promise<string>;
27
35
  /**
28
36
  * 获取可用工具名称列表
29
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAa,KAAK,aAAa,EAAqC,MAAM,mBAAmB,CAAC;AA+BrG,eAAO,MAAM,KAAK,EAAE,aAAa,EA0pBhC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAEjD;AA8oBD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCzH;AAED;;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;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"}
@@ -20,6 +20,8 @@ const fs_1 = require("fs");
20
20
  const path_1 = require("path");
21
21
  const readline_1 = require("readline");
22
22
  const tool_1 = require("../framework/tool");
23
+ const tool_state_1 = require("../framework/tool-state");
24
+ const tool_artifacts_1 = require("../core/tool-artifacts");
23
25
  const memory_1 = require("../memory");
24
26
  const semantic_search_1 = require("../memory/semantic-search");
25
27
  const session_storage_1 = require("../services/session-storage");
@@ -231,7 +233,7 @@ exports.TOOLS = [
231
233
  }),
232
234
  (0, tool_1.buildTool)({
233
235
  name: 'edit_file',
234
- description: '对文件进行精确字符串替换。old_string 必须在文件中唯一匹配,否则拒绝执行。使用 replace_all 可替换所有匹配。',
236
+ description: '对文件进行精确字符串替换。old_string 必须在文件中唯一匹配,否则拒绝执行。使用 replace_all 可替换所有精确匹配;只有显式 fuzzy_match=true 时才尝试宽松空白匹配。',
235
237
  parameters: {
236
238
  type: 'object',
237
239
  properties: {
@@ -251,10 +253,18 @@ exports.TOOLS = [
251
253
  type: 'boolean',
252
254
  description: '是否替换所有匹配(可选,默认 false)',
253
255
  },
256
+ fuzzy_match: {
257
+ type: 'boolean',
258
+ description: '精确匹配失败时是否允许宽松空白匹配(可选,默认 false;多候选时总是拒绝)',
259
+ },
260
+ preview: {
261
+ type: 'boolean',
262
+ description: '预览匹配结果而不写入文件(可选,默认 false)',
263
+ },
254
264
  },
255
265
  required: ['path', 'old_string', 'new_string'],
256
266
  },
257
- execute: async (args) => {
267
+ execute: async (args, context) => {
258
268
  // Ensure required parameters are valid strings
259
269
  const path = args.path;
260
270
  const old_string = args.old_string;
@@ -268,7 +278,18 @@ exports.TOOLS = [
268
278
  if (typeof new_string !== 'string') {
269
279
  return { success: false, output: '', error: 'edit_file requires a new_string parameter' };
270
280
  }
271
- return editFile_(path, old_string, new_string, args.replace_all);
281
+ const lastEditFileArgs = { path, old_string, new_string, updatedAt: Date.now() };
282
+ if (typeof args.replace_all === 'boolean')
283
+ lastEditFileArgs.replace_all = args.replace_all;
284
+ if (typeof args.fuzzy_match === 'boolean')
285
+ lastEditFileArgs.fuzzy_match = args.fuzzy_match;
286
+ if (context?.sessionId)
287
+ lastEditFileArgs.sessionId = context.sessionId;
288
+ if (context?.turnId)
289
+ lastEditFileArgs.turnId = context.turnId;
290
+ lastEditFileArgs.updatedAt = Date.now();
291
+ (0, tool_state_1.setToolState)({ lastEditFileArgs });
292
+ return editFile_(path, old_string, new_string, args.replace_all, args.fuzzy_match, args.preview);
272
293
  },
273
294
  isDestructive: () => true,
274
295
  checkPermissions: (args, context) => {
@@ -946,53 +967,69 @@ async function execCommand_(command, cwd, timeout, maxOutput, abortSignal) {
946
967
  });
947
968
  });
948
969
  }
970
+ function lineNumberForIndex(content, index) {
971
+ return content.slice(0, Math.max(0, index)).split('\n').length;
972
+ }
973
+ function findAllMatchIndexes(content, needle, limit = 20) {
974
+ const indexes = [];
975
+ let cursor = 0;
976
+ while (indexes.length < limit) {
977
+ const index = content.indexOf(needle, cursor);
978
+ if (index < 0)
979
+ break;
980
+ indexes.push(index);
981
+ cursor = index + Math.max(needle.length, 1);
982
+ }
983
+ return indexes;
984
+ }
985
+ function previewLine(text) {
986
+ return text.replace(/\s+/g, ' ').trim().slice(0, 120);
987
+ }
988
+ function buildEditCandidates(params) {
989
+ const cursorByMatch = new Map();
990
+ return params.matches.slice(0, 20).map((match, index) => {
991
+ const cursor = cursorByMatch.get(match) ?? 0;
992
+ const matchIndex = params.content.indexOf(match, cursor);
993
+ cursorByMatch.set(match, matchIndex >= 0 ? matchIndex + Math.max(match.length, 1) : cursor);
994
+ const lineNum = matchIndex >= 0 ? lineNumberForIndex(params.content, matchIndex) : 0;
995
+ // Get context lines (3 before, 3 after)
996
+ const allLines = params.content.split('\n');
997
+ const contextBefore = allLines.slice(Math.max(0, lineNum - 4), lineNum).join('\n');
998
+ const contextAfter = allLines.slice(lineNum + 1, lineNum + 4).join('\n');
999
+ return {
1000
+ index,
1001
+ line: lineNum,
1002
+ match,
1003
+ contextBefore,
1004
+ contextAfter,
1005
+ isReplaceAll: (params.count ?? 1) > 1,
1006
+ };
1007
+ });
1008
+ }
1009
+ function formatEditPreview(params) {
1010
+ const cursorByMatch = new Map();
1011
+ const lines = [
1012
+ `Preview: ${params.kind === 'fuzzy' ? `Fuzzy ${params.strategy ?? 'match'}` : 'Exact match'} candidates (${params.matches.length})`,
1013
+ ];
1014
+ params.matches.slice(0, 20).forEach((match, index) => {
1015
+ const cursor = cursorByMatch.get(match) ?? 0;
1016
+ const matchIndex = params.content.indexOf(match, cursor);
1017
+ cursorByMatch.set(match, matchIndex >= 0 ? matchIndex + Math.max(match.length, 1) : cursor);
1018
+ const lineNum = matchIndex >= 0 ? lineNumberForIndex(params.content, matchIndex) : '?';
1019
+ lines.push(`${index + 1}. line ${lineNum}: "${previewLine(match)}"`);
1020
+ });
1021
+ if (params.matches.length > 20) {
1022
+ lines.push(`... ${params.matches.length - 20} more candidates omitted`);
1023
+ }
1024
+ lines.push(`Would replace with: "${previewLine(params.newString)}"`);
1025
+ return lines.join('\n');
1026
+ }
949
1027
  /**
950
1028
  * Attempt to find old_string in content using fuzzy matching strategies.
951
1029
  * Returns null if no match found, or the matched strings.
952
1030
  */
953
1031
  function fuzzyMatch(content, oldString) {
954
- // Strategy 1: Normalize whitespace (collapse multiple spaces/tabs)
955
- const normalizedOld = oldString.replace(/\s+/g, ' ').trim();
956
- const normalizedContent = content.replace(/\s+/g, ' ');
957
- const wsMatches = [];
958
- // Find positions of normalized match in original content
959
- let searchFrom = 0;
960
- while (true) {
961
- const normIdx = normalizedContent.indexOf(normalizedOld, searchFrom);
962
- if (normIdx === -1)
963
- break;
964
- // Map back to original content position
965
- // Count non-whitespace chars before normIdx in normalized content
966
- let charCount = 0;
967
- let origIdx = 0;
968
- for (let i = 0; i < normIdx && i < content.length; i++) {
969
- if (!/\s/.test(content[i]) || (i > 0 && /\s/.test(content[i]) && !/\s/.test(content[i - 1]))) {
970
- charCount++;
971
- }
972
- origIdx = i + 1;
973
- }
974
- // Find the corresponding end position
975
- const endNormIdx = normIdx + normalizedOld.length;
976
- let endCharCount = 0;
977
- let endOrigIdx = origIdx;
978
- for (let i = origIdx; i < content.length && endCharCount < normalizedOld.length; i++) {
979
- if (!/\s/.test(content[i]) || (i > 0 && /\s/.test(content[i]) && !/\s/.test(content[i - 1]))) {
980
- endCharCount++;
981
- }
982
- endOrigIdx = i + 1;
983
- }
984
- const matchedStr = content.slice(origIdx, endOrigIdx);
985
- if (matchedStr && !wsMatches.includes(matchedStr)) {
986
- wsMatches.push(matchedStr);
987
- }
988
- searchFrom = normIdx + 1;
989
- if (wsMatches.length > 5)
990
- break; // Safety limit
991
- }
992
- if (wsMatches.length > 0) {
993
- return { matches: wsMatches, strategy: 'whitespace' };
994
- }
995
- // Strategy 2: Line-by-line matching (allow different indentation)
1032
+ // Strategy 1: Line-by-line matching (allow different indentation)
996
1033
  const oldLines = oldString.split('\n').map(l => l.trim()).filter(Boolean);
997
1034
  const contentLines = content.split('\n');
998
1035
  const lineMatches = [];
@@ -1012,9 +1049,30 @@ function fuzzyMatch(content, oldString) {
1012
1049
  if (lineMatches.length > 0) {
1013
1050
  return { matches: lineMatches, strategy: 'line' };
1014
1051
  }
1052
+ // Strategy 2: Whitespace-tolerant token match. This preserves the actual
1053
+ // matched span without consuming unrelated leading/trailing blank lines.
1054
+ const tokens = oldString.trim().split(/\s+/).filter(Boolean);
1055
+ if (tokens.length === 0)
1056
+ return null;
1057
+ const pattern = tokens.map(escapeRegExp).join('\\s+');
1058
+ const regex = new RegExp(pattern, 'g');
1059
+ const wsMatches = [];
1060
+ let match;
1061
+ while ((match = regex.exec(content)) !== null) {
1062
+ if (match[0]) {
1063
+ wsMatches.push(match[0]);
1064
+ }
1065
+ if (wsMatches.length > 5)
1066
+ break; // Safety limit
1067
+ if (match.index === regex.lastIndex)
1068
+ regex.lastIndex++;
1069
+ }
1070
+ if (wsMatches.length > 0) {
1071
+ return { matches: wsMatches, strategy: 'whitespace' };
1072
+ }
1015
1073
  return null;
1016
1074
  }
1017
- async function editFile_(path, old_string, new_string, replace_all) {
1075
+ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match, preview) {
1018
1076
  try {
1019
1077
  const resolved = safePath(path);
1020
1078
  if (!(0, fs_1.existsSync)(resolved)) {
@@ -1026,36 +1084,77 @@ async function editFile_(path, old_string, new_string, replace_all) {
1026
1084
  const content = (0, fs_1.readFileSync)(resolved, 'utf-8');
1027
1085
  // Check if old_string exists exactly
1028
1086
  const count = (content.match(new RegExp(escapeRegExp(old_string), 'g')) || []).length;
1087
+ if (count > 0 && preview) {
1088
+ const matchIndexes = findAllMatchIndexes(content, old_string);
1089
+ const matches = matchIndexes.map(() => old_string);
1090
+ return {
1091
+ success: true,
1092
+ output: formatEditPreview({
1093
+ kind: 'exact',
1094
+ content,
1095
+ matches,
1096
+ newString: new_string,
1097
+ }),
1098
+ metadata: {
1099
+ candidates: buildEditCandidates({
1100
+ kind: 'exact',
1101
+ content,
1102
+ matches,
1103
+ newString: new_string,
1104
+ count,
1105
+ }),
1106
+ },
1107
+ };
1108
+ }
1029
1109
  if (count === 0) {
1110
+ if (!fuzzy_match) {
1111
+ return {
1112
+ success: false,
1113
+ output: '',
1114
+ error: `old_string not found in file: ${old_string.slice(0, 100)}...`,
1115
+ };
1116
+ }
1030
1117
  // Try fuzzy match strategies
1031
1118
  const fuzzyResult = fuzzyMatch(content, old_string);
1032
1119
  if (fuzzyResult === null) {
1033
1120
  return { success: false, output: '', error: `old_string not found in file: ${old_string.slice(0, 100)}...` };
1034
1121
  }
1035
- if (fuzzyResult.matches.length > 1 && !replace_all) {
1122
+ if (preview) {
1123
+ return {
1124
+ success: true,
1125
+ output: formatEditPreview({
1126
+ kind: 'fuzzy',
1127
+ content,
1128
+ matches: fuzzyResult.matches,
1129
+ newString: new_string,
1130
+ strategy: fuzzyResult.strategy,
1131
+ }),
1132
+ metadata: {
1133
+ candidates: buildEditCandidates({
1134
+ kind: 'fuzzy',
1135
+ content,
1136
+ matches: fuzzyResult.matches,
1137
+ newString: new_string,
1138
+ strategy: fuzzyResult.strategy,
1139
+ }),
1140
+ },
1141
+ };
1142
+ }
1143
+ if (fuzzyResult.matches.length > 1) {
1036
1144
  return {
1037
1145
  success: false,
1038
1146
  output: '',
1039
1147
  error: `Fuzzy match found ${fuzzyResult.matches.length} candidates. Provide a more specific string. First 3 candidates:\n${fuzzyResult.matches.slice(0, 3).map((m, i) => ` ${i + 1}: "${m.slice(0, 80)}..."`).join('\n')}`,
1040
1148
  };
1041
1149
  }
1042
- // Use the fuzzy match (single match or replace_all)
1043
- let newContent;
1044
- if (replace_all) {
1045
- newContent = content;
1046
- for (const match of fuzzyResult.matches) {
1047
- newContent = newContent.replace(match, new_string);
1048
- }
1049
- }
1050
- else {
1051
- const match = fuzzyResult.matches[0];
1052
- const idx = content.indexOf(match);
1053
- newContent = content.slice(0, idx) + new_string + content.slice(idx + match.length);
1054
- }
1150
+ // Use the single fuzzy match only.
1151
+ const match = fuzzyResult.matches[0];
1152
+ const idx = content.indexOf(match);
1153
+ const newContent = content.slice(0, idx) + new_string + content.slice(idx + match.length);
1055
1154
  (0, fs_1.writeFileSync)(resolved, newContent, 'utf-8');
1056
1155
  return {
1057
1156
  success: true,
1058
- output: `Fuzzy edited ${path} (${fuzzyResult.matches.length} replacement(s), matched with "${fuzzyResult.matches[0].slice(0, 50)}...")`,
1157
+ output: `Fuzzy edited ${path} (matched by ${fuzzyResult.strategy}, "${match.slice(0, 50)}...")`,
1059
1158
  };
1060
1159
  }
1061
1160
  // If not replace_all, require unique match
@@ -1276,7 +1375,7 @@ async function grep_(pattern, basePath, globPattern, contextLines) {
1276
1375
  * 执行一个工具调用,返回结构化结果字符串
1277
1376
  * Issue #32 #3.2: 支持 abortSignal
1278
1377
  */
1279
- async function executeTool(name, args, abortSignal) {
1378
+ async function executeTool(name, args, abortSignal, toolContext) {
1280
1379
  const runtimeTools = getRuntimeTools();
1281
1380
  const tool = runtimeTools.find(t => t.name === name);
1282
1381
  if (!tool) {
@@ -1286,25 +1385,48 @@ async function executeTool(name, args, abortSignal) {
1286
1385
  });
1287
1386
  }
1288
1387
  const context = {
1289
- cwd: process.cwd(),
1290
- config: {
1291
- name: 'openhorse',
1388
+ cwd: toolContext?.cwd || process.cwd(),
1389
+ config: toolContext?.config || {
1390
+ name: process.env.OPENHORSE_NAME || 'openhorse',
1292
1391
  mode: process.env.OPENHORSE_MODE || 'development',
1293
1392
  },
1294
1393
  abortSignal, // Issue #32 #3.2: 透传 abortSignal
1394
+ sessionId: toolContext?.sessionId,
1395
+ turnId: toolContext?.turnId,
1295
1396
  };
1296
1397
  const result = await tool.execute(args, context);
1398
+ const summary = summarizeToolResult(tool, args, result);
1399
+ const outputBytes = Buffer.byteLength(result.output || '', 'utf8');
1400
+ let output = result.output || '';
1401
+ let artifactRef;
1402
+ if (outputBytes > tool_artifacts_1.ARTIFACT_THRESHOLD) {
1403
+ const artifact = (0, tool_artifacts_1.storeArtifact)(context.cwd, name, output, outputBytes);
1404
+ if (artifact) {
1405
+ artifactRef = { id: artifact.id, outputBytes: artifact.outputBytes };
1406
+ output = (0, tool_artifacts_1.truncateForContext)(output);
1407
+ }
1408
+ }
1409
+ const payload = {
1410
+ success: result.success,
1411
+ output,
1412
+ summary,
1413
+ outputBytes,
1414
+ };
1297
1415
  if (!result.success) {
1298
- return JSON.stringify({
1299
- success: false,
1300
- error: result.error,
1301
- output: result.output,
1302
- });
1416
+ payload.error = result.error;
1417
+ }
1418
+ if (artifactRef) {
1419
+ payload.artifactRef = artifactRef;
1420
+ }
1421
+ return JSON.stringify(payload);
1422
+ }
1423
+ function summarizeToolResult(tool, args, result) {
1424
+ try {
1425
+ return tool.getSummary?.(args, result);
1426
+ }
1427
+ catch {
1428
+ return undefined;
1303
1429
  }
1304
- return JSON.stringify({
1305
- success: true,
1306
- output: result.output,
1307
- });
1308
1430
  }
1309
1431
  /**
1310
1432
  * 获取可用工具名称列表