openhorse 0.2.9 → 0.2.10
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.
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +50 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +15 -2
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts +2 -0
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +82 -4
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/tool-scheduler.d.ts +3 -0
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +9 -0
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.js +2 -1
- package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +1 -0
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +22 -1
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-status.d.ts +4 -0
- package/dist/runtime/agent-status.d.ts.map +1 -0
- package/dist/runtime/agent-status.js +15 -0
- package/dist/runtime/agent-status.js.map +1 -0
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +19 -3
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/services/compact/auto-compact.d.ts +19 -0
- package/dist/services/compact/auto-compact.d.ts.map +1 -1
- package/dist/services/compact/auto-compact.js +55 -7
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/config-dir.d.ts +2 -0
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +5 -0
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +23 -4
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +33 -0
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/global-config.d.ts +7 -6
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +5 -20
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts +2 -0
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +57 -20
- package/dist/services/llm.js.map +1 -1
- package/dist/services/model-context.d.ts +10 -1
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +53 -14
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/usage-state.d.ts +20 -0
- package/dist/services/usage-state.d.ts.map +1 -0
- package/dist/services/usage-state.js +128 -0
- package/dist/services/usage-state.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts +14 -0
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +96 -22
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/terminal-ui/raw-editor.d.ts +2 -0
- package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
- package/dist/terminal-ui/raw-editor.js +30 -1
- package/dist/terminal-ui/raw-editor.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +259 -43
- package/dist/tools/index.js.map +1 -1
- package/dist/tui-core/input-parser.d.ts +4 -0
- package/dist/tui-core/input-parser.d.ts.map +1 -1
- package/dist/tui-core/input-parser.js +30 -0
- package/dist/tui-core/input-parser.js.map +1 -1
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +6 -0
- package/dist/tui-ui/runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,8 @@ const readline_1 = __importDefault(require("readline"));
|
|
|
8
8
|
const string_width_1 = __importDefault(require("string-width"));
|
|
9
9
|
const input_parser_1 = require("../tui-core/input-parser");
|
|
10
10
|
const completion_1 = require("./completion");
|
|
11
|
+
const BRACKETED_PASTE_ENABLE = '\x1b[?2004h';
|
|
12
|
+
const BRACKETED_PASTE_DISABLE = '\x1b[?2004l';
|
|
11
13
|
class RawTerminalEditor {
|
|
12
14
|
constructor(options) {
|
|
13
15
|
this.options = options;
|
|
@@ -38,6 +40,9 @@ class RawTerminalEditor {
|
|
|
38
40
|
if (this.input.isTTY && typeof this.input.setRawMode === 'function') {
|
|
39
41
|
this.input.setRawMode(true);
|
|
40
42
|
}
|
|
43
|
+
if (this.output.isTTY !== false) {
|
|
44
|
+
this.output.write(BRACKETED_PASTE_ENABLE);
|
|
45
|
+
}
|
|
41
46
|
this.input.on('data', this.handleData);
|
|
42
47
|
}
|
|
43
48
|
stop() {
|
|
@@ -45,6 +50,9 @@ class RawTerminalEditor {
|
|
|
45
50
|
return;
|
|
46
51
|
this.running = false;
|
|
47
52
|
this.input.off('data', this.handleData);
|
|
53
|
+
if (this.output.isTTY !== false) {
|
|
54
|
+
this.output.write(BRACKETED_PASTE_DISABLE);
|
|
55
|
+
}
|
|
48
56
|
if (this.input.isTTY && typeof this.input.setRawMode === 'function') {
|
|
49
57
|
this.input.setRawMode(this.wasRaw);
|
|
50
58
|
}
|
|
@@ -101,6 +109,12 @@ class RawTerminalEditor {
|
|
|
101
109
|
this.render();
|
|
102
110
|
}
|
|
103
111
|
feed(chunk) {
|
|
112
|
+
const raw = Buffer.isBuffer(chunk) ? chunk.toString('utf8') : chunk;
|
|
113
|
+
if (!this.parser.isPasting() && !this.parser.hasPendingEscape() && (0, input_parser_1.isLikelyUnbracketedMultilinePaste)(raw)) {
|
|
114
|
+
const event = { type: 'paste', value: (0, input_parser_1.normalizePastedText)(raw) };
|
|
115
|
+
this.applyEvent(event);
|
|
116
|
+
return [event];
|
|
117
|
+
}
|
|
104
118
|
const events = this.parser.feed(chunk);
|
|
105
119
|
for (const event of events) {
|
|
106
120
|
this.applyEvent(event);
|
|
@@ -113,10 +127,20 @@ class RawTerminalEditor {
|
|
|
113
127
|
applyEvent(event) {
|
|
114
128
|
if (event.type === 'text' || event.type === 'paste') {
|
|
115
129
|
this.insert(event.value);
|
|
130
|
+
if (event.type === 'paste') {
|
|
131
|
+
this.emitPasteNotice(event.value);
|
|
132
|
+
}
|
|
116
133
|
return;
|
|
117
134
|
}
|
|
118
135
|
this.applyKey(event.key);
|
|
119
136
|
}
|
|
137
|
+
emitPasteNotice(value) {
|
|
138
|
+
const lines = (0, input_parser_1.normalizePastedText)(value).split('\n').length;
|
|
139
|
+
if (lines < 2)
|
|
140
|
+
return;
|
|
141
|
+
const suffix = lines >= 20 ? ' /edit is better for very long drafts.' : '';
|
|
142
|
+
this.options.onNotice?.(`Pasted ${lines} lines. Enter sends once; Ctrl+U clears.${suffix}`);
|
|
143
|
+
}
|
|
120
144
|
applyKey(key) {
|
|
121
145
|
switch (key) {
|
|
122
146
|
case 'enter':
|
|
@@ -245,7 +269,9 @@ class RawTerminalEditor {
|
|
|
245
269
|
const width = Math.max(20, this.output.columns || 80);
|
|
246
270
|
const promptCells = (0, string_width_1.default)(stripAnsi(prompt));
|
|
247
271
|
const available = Math.max(1, width - promptCells - 1);
|
|
248
|
-
const
|
|
272
|
+
const displayValue = displayInputValue(this.value);
|
|
273
|
+
const displayCursor = displayInputValue(this.value.slice(0, clampCursor(this.value, this.cursor))).length;
|
|
274
|
+
const window = fitInputWindow(displayValue, displayCursor, available);
|
|
249
275
|
this.clearPromptLine();
|
|
250
276
|
this.output.write(`${prompt}${window.visible}`);
|
|
251
277
|
readline_1.default.cursorTo(this.output, Math.min(width - 1, promptCells + window.cursorColumn));
|
|
@@ -258,6 +284,9 @@ class RawTerminalEditor {
|
|
|
258
284
|
}
|
|
259
285
|
}
|
|
260
286
|
exports.RawTerminalEditor = RawTerminalEditor;
|
|
287
|
+
function displayInputValue(value) {
|
|
288
|
+
return value.replace(/\n/g, '⏎ ');
|
|
289
|
+
}
|
|
261
290
|
function fitInputWindow(value, cursor, available) {
|
|
262
291
|
if ((0, string_width_1.default)(value) <= available) {
|
|
263
292
|
return { visible: value, cursorColumn: (0, string_width_1.default)(value.slice(0, cursor)) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-editor.js","sourceRoot":"","sources":["../../src/terminal-ui/raw-editor.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,gEAAuC;AACvC,2DAA2F;AAC3F,6CAA0D;AAmB1D,MAAa,iBAAiB;IAe5B,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAZ7C,WAAM,GAAG,IAAI,6BAAc,EAAE,CAAC;QACvC,UAAK,GAAG,EAAE,CAAC;QACX,WAAM,GAAG,CAAC,CAAC;QACX,gBAAW,GAAG,EAAE,CAAC;QACjB,mBAAc,GAAkB,IAAI,CAAC;QACrC,oBAAe,GAAsC,IAAI,CAAC;QACjD,YAAO,GAAa,EAAE,CAAC;QAChC,iBAAY,GAAkB,IAAI,CAAC;QACnC,iBAAY,GAAG,EAAE,CAAC;QAClB,YAAO,GAAG,KAAK,CAAC;QAChB,WAAM,GAAG,KAAK,CAAC;QA6FN,eAAU,GAAG,CAAC,KAAsB,EAAQ,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC;QA5FA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,WAAyB;QAC3C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,MAAM,GAAG,CAAC,MAAc,EAAQ,EAAE;gBACtC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM,CAAC,EAAE,CAAC,CAAC;YACb,CAAC,CAAC;YAEF,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC9B,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,IAAI,WAAW,EAAE,OAAO;gBAAE,OAAO,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,KAAsB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS;QACP,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpD,CAAC;IAMO,UAAU,CAAC,KAAoB;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACT,KAAK,KAAK;gBACR,IAAI,CAAC,QAAQ,CAAC,IAAA,uCAA0B,EAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/E,OAAO;YACT,KAAK,WAAW;gBACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACT,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACT,KAAK,KAAK;gBACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACT,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO;YACT,KAAK,MAAM;gBACT,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpB,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO;YACT,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACb,OAAO;QACX,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,IAAY;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEO,QAAQ,CAAC,KAAa;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,kBAAkB;QACxB,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO;QAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,sBAAsB;QAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,KAAa;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;YACpD,CAAC,CAAC,IAAI,CAAC,YAAY;YACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAA,sBAAW,EAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,kBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO;QACxC,kBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClC,kBAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;CACF;AA1QD,8CA0QC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB;IACtE,IAAI,IAAA,sBAAW,EAAC,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAA,sBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,WAAW,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAA,sBAAW,EAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC;IACrD,OAAO;QACL,OAAO;QACP,YAAY,EAAE,WAAW,GAAG,IAAA,sBAAW,EAAC,UAAU,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,QAAgB;IACpD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,IAAA,sBAAW,EAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG,QAAQ;YAAE,MAAM;QACtD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,QAAgB;IACrD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,IAAA,sBAAW,EAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ;YAAE,MAAM;QACtD,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAc;IACrD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,QAAQ,IAAI,UAAU;YAAE,MAAM;QAClC,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,MAAc;IACjD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,QAAQ,GAAG,UAAU;YAAE,OAAO,QAAQ,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,SAAS,GAAI,IAAY,CAAC,SAAS,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAiD,EAAE,CAAC;QAC5F,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACjE,CAAC"}
|
|
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;
|
|
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;AAyCrG,eAAO,MAAM,KAAK,EAAE,aAAa,EAuuBhC,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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -32,6 +32,9 @@ 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;
|
|
35
38
|
// ============================================================================
|
|
36
39
|
// 工具集
|
|
37
40
|
// ============================================================================
|
|
@@ -72,9 +75,10 @@ exports.TOOLS = [
|
|
|
72
75
|
if (!path || typeof path !== 'string') {
|
|
73
76
|
return { success: false, output: '', error: 'read_file requires a path parameter' };
|
|
74
77
|
}
|
|
75
|
-
return readFileSync_(path, args.maxLines);
|
|
78
|
+
return readFileSync_(path, args.maxLines, context.cwd);
|
|
76
79
|
},
|
|
77
80
|
isReadOnly: () => true,
|
|
81
|
+
isConcurrencySafe: () => true,
|
|
78
82
|
userFacingName: (args) => `Read ${args.path}`,
|
|
79
83
|
getSummary: (args, result) => {
|
|
80
84
|
const path = args.path;
|
|
@@ -112,7 +116,7 @@ exports.TOOLS = [
|
|
|
112
116
|
if (typeof content !== 'string') {
|
|
113
117
|
return { success: false, output: '', error: 'write_file requires a content parameter' };
|
|
114
118
|
}
|
|
115
|
-
return writeFileSync_(path, content);
|
|
119
|
+
return writeFileSync_(path, content, context.cwd);
|
|
116
120
|
},
|
|
117
121
|
isDestructive: () => true,
|
|
118
122
|
checkPermissions: (args, context) => {
|
|
@@ -145,13 +149,13 @@ exports.TOOLS = [
|
|
|
145
149
|
},
|
|
146
150
|
required: ['path'],
|
|
147
151
|
},
|
|
148
|
-
execute: async (args) => {
|
|
152
|
+
execute: async (args, context) => {
|
|
149
153
|
// Ensure path is a valid string
|
|
150
154
|
const path = args.path;
|
|
151
155
|
if (!path || typeof path !== 'string') {
|
|
152
156
|
return { success: false, output: '', error: 'list_files requires a path parameter' };
|
|
153
157
|
}
|
|
154
|
-
return listFiles_(path, args.maxDepth);
|
|
158
|
+
return listFiles_(path, args.maxDepth, context.cwd);
|
|
155
159
|
},
|
|
156
160
|
isReadOnly: () => true,
|
|
157
161
|
isConcurrencySafe: () => true,
|
|
@@ -196,7 +200,7 @@ exports.TOOLS = [
|
|
|
196
200
|
return { success: false, output: '', error: 'exec_command requires a command parameter' };
|
|
197
201
|
}
|
|
198
202
|
// Issue #32 #3.2: 传递 abortSignal
|
|
199
|
-
return execCommand_(command, args.cwd, args.timeout, args.maxOutput, context.abortSignal);
|
|
203
|
+
return execCommand_(command, args.cwd, args.timeout, args.maxOutput, context.abortSignal, context.cwd);
|
|
200
204
|
},
|
|
201
205
|
isDestructive: (args) => {
|
|
202
206
|
const cmd = args.command || '';
|
|
@@ -222,6 +226,10 @@ exports.TOOLS = [
|
|
|
222
226
|
const cmd = args.command || '';
|
|
223
227
|
return (0, bash_security_1.isReadOnlyCommand)(cmd);
|
|
224
228
|
},
|
|
229
|
+
isConcurrencySafe: (args) => {
|
|
230
|
+
const cmd = args.command || '';
|
|
231
|
+
return (0, bash_security_1.isReadOnlyCommand)(cmd);
|
|
232
|
+
},
|
|
225
233
|
userFacingName: (args) => `Exec ${args.command?.slice(0, 60) || ''}`,
|
|
226
234
|
getSummary: (args, result) => {
|
|
227
235
|
const cmd = args.command?.slice(0, 40) || '';
|
|
@@ -289,7 +297,7 @@ exports.TOOLS = [
|
|
|
289
297
|
lastEditFileArgs.turnId = context.turnId;
|
|
290
298
|
lastEditFileArgs.updatedAt = Date.now();
|
|
291
299
|
(0, tool_state_1.setToolState)({ lastEditFileArgs });
|
|
292
|
-
return editFile_(path, old_string, new_string, args.replace_all, args.fuzzy_match, args.preview);
|
|
300
|
+
return editFile_(path, old_string, new_string, args.replace_all, args.fuzzy_match, args.preview, context.cwd);
|
|
293
301
|
},
|
|
294
302
|
isDestructive: () => true,
|
|
295
303
|
checkPermissions: (args, context) => {
|
|
@@ -321,13 +329,13 @@ exports.TOOLS = [
|
|
|
321
329
|
},
|
|
322
330
|
required: ['pattern'],
|
|
323
331
|
},
|
|
324
|
-
execute: async (args) => {
|
|
332
|
+
execute: async (args, context) => {
|
|
325
333
|
// Ensure pattern is a valid string
|
|
326
334
|
const pattern = args.pattern;
|
|
327
335
|
if (!pattern || typeof pattern !== 'string') {
|
|
328
336
|
return { success: false, output: '', error: 'glob requires a pattern parameter' };
|
|
329
337
|
}
|
|
330
|
-
return glob_(pattern, args.path);
|
|
338
|
+
return glob_(pattern, args.path, context.cwd);
|
|
331
339
|
},
|
|
332
340
|
isReadOnly: () => true,
|
|
333
341
|
isConcurrencySafe: () => true,
|
|
@@ -365,13 +373,13 @@ exports.TOOLS = [
|
|
|
365
373
|
},
|
|
366
374
|
required: ['pattern'],
|
|
367
375
|
},
|
|
368
|
-
execute: async (args) => {
|
|
376
|
+
execute: async (args, context) => {
|
|
369
377
|
// Ensure pattern is a valid string
|
|
370
378
|
const pattern = args.pattern;
|
|
371
379
|
if (!pattern || typeof pattern !== 'string') {
|
|
372
380
|
return { success: false, output: '', error: 'grep requires a pattern parameter' };
|
|
373
381
|
}
|
|
374
|
-
return grep_(pattern, args.path, args.glob, args.context);
|
|
382
|
+
return grep_(pattern, args.path, args.glob, args.context, context.cwd);
|
|
375
383
|
},
|
|
376
384
|
isReadOnly: () => true,
|
|
377
385
|
isConcurrencySafe: () => true,
|
|
@@ -384,6 +392,46 @@ exports.TOOLS = [
|
|
|
384
392
|
return `🔎 grep /${pattern}/ → ${count} matches`;
|
|
385
393
|
},
|
|
386
394
|
}),
|
|
395
|
+
(0, tool_1.buildTool)({
|
|
396
|
+
name: 'batch_read',
|
|
397
|
+
description: 'Run up to 8 read-only exploration tool calls in one ordered batch. Allowed tools: git_status, list_files, glob, grep, read_file.',
|
|
398
|
+
parameters: {
|
|
399
|
+
type: 'object',
|
|
400
|
+
properties: {
|
|
401
|
+
steps: {
|
|
402
|
+
type: 'array',
|
|
403
|
+
description: 'Array of steps: [{ "tool": "read_file", "args": { "path": "package.json" } }]. Max 8 steps.',
|
|
404
|
+
items: {
|
|
405
|
+
type: 'object',
|
|
406
|
+
properties: {
|
|
407
|
+
tool: { type: 'string', description: 'Allowed read-only tool name' },
|
|
408
|
+
args: { type: 'object', description: 'Arguments for the tool' },
|
|
409
|
+
},
|
|
410
|
+
required: ['tool', 'args'],
|
|
411
|
+
},
|
|
412
|
+
maxItems: BATCH_READ_MAX_STEPS,
|
|
413
|
+
},
|
|
414
|
+
reason: {
|
|
415
|
+
type: 'string',
|
|
416
|
+
description: 'Optional reason for this read-only batch.',
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
required: ['steps'],
|
|
420
|
+
},
|
|
421
|
+
execute: async (args, context) => executeBatchRead(args, context),
|
|
422
|
+
isReadOnly: () => true,
|
|
423
|
+
isConcurrencySafe: () => true,
|
|
424
|
+
userFacingName: (args) => {
|
|
425
|
+
const count = Array.isArray(args.steps) ? args.steps.length : 0;
|
|
426
|
+
return `Batch read ${count} steps`;
|
|
427
|
+
},
|
|
428
|
+
getSummary: (args, result) => {
|
|
429
|
+
if (!result.success)
|
|
430
|
+
return '📚 batch_read → error';
|
|
431
|
+
const count = Array.isArray(args.steps) ? args.steps.length : 0;
|
|
432
|
+
return `📚 batch_read → ${count} steps`;
|
|
433
|
+
},
|
|
434
|
+
}),
|
|
387
435
|
// Memory tools
|
|
388
436
|
(0, tool_1.buildTool)({
|
|
389
437
|
name: 'memory_save',
|
|
@@ -710,23 +758,55 @@ function getRuntimeTools() {
|
|
|
710
758
|
// ============================================================================
|
|
711
759
|
// 工具实现
|
|
712
760
|
// ============================================================================
|
|
713
|
-
/**
|
|
714
|
-
function
|
|
715
|
-
|
|
716
|
-
const
|
|
717
|
-
if (
|
|
718
|
-
|
|
761
|
+
/** Normalize model/tool path strings before resolving them on disk. */
|
|
762
|
+
function normalizeToolPath(input) {
|
|
763
|
+
let value = input.trim();
|
|
764
|
+
const markdownLink = value.match(/^!?\[[^\]]*\]\(([\s\S]+)\)$/u);
|
|
765
|
+
if (markdownLink) {
|
|
766
|
+
value = markdownLink[1].trim();
|
|
767
|
+
if (value.startsWith('<')) {
|
|
768
|
+
const end = value.indexOf('>');
|
|
769
|
+
if (end >= 0) {
|
|
770
|
+
value = value.slice(1, end);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
else {
|
|
774
|
+
value = value.replace(/\s+["'][\s\S]*["']$/u, '');
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
if ((value.startsWith('`') && value.endsWith('`')) ||
|
|
778
|
+
(value.startsWith('"') && value.endsWith('"')) ||
|
|
779
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
780
|
+
value = value.slice(1, -1);
|
|
781
|
+
}
|
|
782
|
+
if (value.startsWith('file://')) {
|
|
783
|
+
try {
|
|
784
|
+
return decodeURIComponent(new URL(value).pathname);
|
|
785
|
+
}
|
|
786
|
+
catch {
|
|
787
|
+
value = value.replace(/^file:\/\//u, '');
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
try {
|
|
791
|
+
return decodeURIComponent(value);
|
|
792
|
+
}
|
|
793
|
+
catch {
|
|
794
|
+
return value;
|
|
719
795
|
}
|
|
720
|
-
return resolved;
|
|
721
796
|
}
|
|
722
|
-
|
|
797
|
+
/** Resolve tool path parameters relative to the current tool cwd. */
|
|
798
|
+
function safePath(input, cwd = process.cwd()) {
|
|
799
|
+
return (0, path_1.resolve)(cwd, normalizeToolPath(input));
|
|
800
|
+
}
|
|
801
|
+
async function readFileSync_(path, maxLines, cwd) {
|
|
723
802
|
try {
|
|
724
|
-
const
|
|
803
|
+
const normalizedPath = normalizeToolPath(path);
|
|
804
|
+
const resolved = safePath(path, cwd);
|
|
725
805
|
if (!(0, fs_1.existsSync)(resolved)) {
|
|
726
|
-
return { success: false, output: '', error: `File not found: ${
|
|
806
|
+
return { success: false, output: '', error: `File not found: ${normalizedPath}` };
|
|
727
807
|
}
|
|
728
808
|
if ((0, fs_1.statSync)(resolved).isDirectory()) {
|
|
729
|
-
return { success: false, output: '', error: `Path is a directory, not a file: ${
|
|
809
|
+
return { success: false, output: '', error: `Path is a directory, not a file: ${normalizedPath}` };
|
|
730
810
|
}
|
|
731
811
|
const content = (0, fs_1.readFileSync)(resolved, 'utf-8');
|
|
732
812
|
const lines = content.split('\n');
|
|
@@ -755,23 +835,25 @@ async function readFileSync_(path, maxLines) {
|
|
|
755
835
|
return { success: false, output: '', error: String(err.message) };
|
|
756
836
|
}
|
|
757
837
|
}
|
|
758
|
-
async function writeFileSync_(path, content) {
|
|
838
|
+
async function writeFileSync_(path, content, cwd) {
|
|
759
839
|
try {
|
|
760
|
-
const
|
|
840
|
+
const normalizedPath = normalizeToolPath(path);
|
|
841
|
+
const resolved = safePath(path, cwd);
|
|
761
842
|
(0, fs_1.writeFileSync)(resolved, content, 'utf-8');
|
|
762
|
-
return { success: true, output: `Wrote ${content.split('\n').length} lines to ${
|
|
843
|
+
return { success: true, output: `Wrote ${content.split('\n').length} lines to ${normalizedPath}` };
|
|
763
844
|
}
|
|
764
845
|
catch (err) {
|
|
765
846
|
return { success: false, output: '', error: String(err.message) };
|
|
766
847
|
}
|
|
767
848
|
}
|
|
768
|
-
async function listFiles_(path, maxDepth) {
|
|
769
|
-
const
|
|
849
|
+
async function listFiles_(path, maxDepth, cwd) {
|
|
850
|
+
const normalizedPath = normalizeToolPath(path);
|
|
851
|
+
const resolved = safePath(path, cwd);
|
|
770
852
|
if (!(0, fs_1.existsSync)(resolved)) {
|
|
771
|
-
return { success: false, output: '', error: `Path not found: ${
|
|
853
|
+
return { success: false, output: '', error: `Path not found: ${normalizedPath}` };
|
|
772
854
|
}
|
|
773
855
|
if (!(0, fs_1.statSync)(resolved).isDirectory()) {
|
|
774
|
-
return { success: true, output:
|
|
856
|
+
return { success: true, output: normalizedPath };
|
|
775
857
|
}
|
|
776
858
|
const depth = maxDepth ?? 2;
|
|
777
859
|
const results = [];
|
|
@@ -807,9 +889,9 @@ async function listFiles_(path, maxDepth) {
|
|
|
807
889
|
return { success: true, output };
|
|
808
890
|
}
|
|
809
891
|
// Issue #32 #3.2: execCommand_ 支持 abortSignal
|
|
810
|
-
async function execCommand_(command, cwd, timeout, maxOutput, abortSignal) {
|
|
892
|
+
async function execCommand_(command, cwd, timeout, maxOutput, abortSignal, baseCwd) {
|
|
811
893
|
return new Promise((resolve) => {
|
|
812
|
-
const workdir = cwd ? safePath(cwd) : process.cwd();
|
|
894
|
+
const workdir = cwd ? safePath(cwd, baseCwd) : baseCwd ?? process.cwd();
|
|
813
895
|
const timeoutMs = timeout ?? 30000;
|
|
814
896
|
const maxBytes = maxOutput ?? 51200; // Default 50KB, Issue #28 fix
|
|
815
897
|
// Use spawn for streaming output with truncation support
|
|
@@ -1072,14 +1154,15 @@ function fuzzyMatch(content, oldString) {
|
|
|
1072
1154
|
}
|
|
1073
1155
|
return null;
|
|
1074
1156
|
}
|
|
1075
|
-
async function editFile_(path, old_string, new_string, replace_all, fuzzy_match, preview) {
|
|
1157
|
+
async function editFile_(path, old_string, new_string, replace_all, fuzzy_match, preview, cwd) {
|
|
1076
1158
|
try {
|
|
1077
|
-
const
|
|
1159
|
+
const normalizedPath = normalizeToolPath(path);
|
|
1160
|
+
const resolved = safePath(path, cwd);
|
|
1078
1161
|
if (!(0, fs_1.existsSync)(resolved)) {
|
|
1079
|
-
return { success: false, output: '', error: `File not found: ${
|
|
1162
|
+
return { success: false, output: '', error: `File not found: ${normalizedPath}` };
|
|
1080
1163
|
}
|
|
1081
1164
|
if ((0, fs_1.statSync)(resolved).isDirectory()) {
|
|
1082
|
-
return { success: false, output: '', error: `Path is a directory, not a file: ${
|
|
1165
|
+
return { success: false, output: '', error: `Path is a directory, not a file: ${normalizedPath}` };
|
|
1083
1166
|
}
|
|
1084
1167
|
const content = (0, fs_1.readFileSync)(resolved, 'utf-8');
|
|
1085
1168
|
// Check if old_string exists exactly
|
|
@@ -1154,7 +1237,7 @@ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match,
|
|
|
1154
1237
|
(0, fs_1.writeFileSync)(resolved, newContent, 'utf-8');
|
|
1155
1238
|
return {
|
|
1156
1239
|
success: true,
|
|
1157
|
-
output: `Fuzzy edited ${
|
|
1240
|
+
output: `Fuzzy edited ${normalizedPath} (matched by ${fuzzyResult.strategy}, "${match.slice(0, 50)}...")`,
|
|
1158
1241
|
};
|
|
1159
1242
|
}
|
|
1160
1243
|
// If not replace_all, require unique match
|
|
@@ -1178,7 +1261,7 @@ async function editFile_(path, old_string, new_string, replace_all, fuzzy_match,
|
|
|
1178
1261
|
(0, fs_1.writeFileSync)(resolved, newContent, 'utf-8');
|
|
1179
1262
|
return {
|
|
1180
1263
|
success: true,
|
|
1181
|
-
output: `Replaced ${count} occurrence(s) of old_string with new_string in ${
|
|
1264
|
+
output: `Replaced ${count} occurrence(s) of old_string with new_string in ${normalizedPath}`,
|
|
1182
1265
|
};
|
|
1183
1266
|
}
|
|
1184
1267
|
catch (err) {
|
|
@@ -1196,14 +1279,15 @@ function escapeRegExp(str) {
|
|
|
1196
1279
|
* Glob 模式匹配 - 简化版实现
|
|
1197
1280
|
* 支持: **(递归目录)、*(任意字符)、?(单个字符)
|
|
1198
1281
|
*/
|
|
1199
|
-
async function glob_(pattern, basePath) {
|
|
1282
|
+
async function glob_(pattern, basePath, cwd) {
|
|
1200
1283
|
try {
|
|
1201
|
-
const
|
|
1284
|
+
const normalizedBasePath = basePath ? normalizeToolPath(basePath) : cwd ?? process.cwd();
|
|
1285
|
+
const base = basePath ? safePath(basePath, cwd) : cwd ?? process.cwd();
|
|
1202
1286
|
if (!(0, fs_1.existsSync)(base)) {
|
|
1203
|
-
return { success: false, output: '', error: `Path not found: ${
|
|
1287
|
+
return { success: false, output: '', error: `Path not found: ${normalizedBasePath}` };
|
|
1204
1288
|
}
|
|
1205
1289
|
if (!(0, fs_1.statSync)(base).isDirectory()) {
|
|
1206
|
-
return { success: false, output: '', error: `Path is not a directory: ${
|
|
1290
|
+
return { success: false, output: '', error: `Path is not a directory: ${normalizedBasePath}` };
|
|
1207
1291
|
}
|
|
1208
1292
|
const results = [];
|
|
1209
1293
|
// Convert glob pattern to regex
|
|
@@ -1270,11 +1354,12 @@ async function glob_(pattern, basePath) {
|
|
|
1270
1354
|
/**
|
|
1271
1355
|
* Grep 搜索 - 在文件中搜索正则表达式
|
|
1272
1356
|
*/
|
|
1273
|
-
async function grep_(pattern, basePath, globPattern, contextLines) {
|
|
1357
|
+
async function grep_(pattern, basePath, globPattern, contextLines, cwd) {
|
|
1274
1358
|
try {
|
|
1275
|
-
const
|
|
1359
|
+
const normalizedBasePath = basePath ? normalizeToolPath(basePath) : cwd ?? process.cwd();
|
|
1360
|
+
const base = basePath ? safePath(basePath, cwd) : cwd ?? process.cwd();
|
|
1276
1361
|
if (!(0, fs_1.existsSync)(base)) {
|
|
1277
|
-
return { success: false, output: '', error: `Path not found: ${
|
|
1362
|
+
return { success: false, output: '', error: `Path not found: ${normalizedBasePath}` };
|
|
1278
1363
|
}
|
|
1279
1364
|
const regex = new RegExp(pattern);
|
|
1280
1365
|
const context = contextLines ?? 0;
|
|
@@ -1368,6 +1453,137 @@ async function grep_(pattern, basePath, globPattern, contextLines) {
|
|
|
1368
1453
|
return { success: false, output: '', error: String(err.message) };
|
|
1369
1454
|
}
|
|
1370
1455
|
}
|
|
1456
|
+
function isRecord(value) {
|
|
1457
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1458
|
+
}
|
|
1459
|
+
function parseBatchReadSteps(rawSteps) {
|
|
1460
|
+
let value = rawSteps;
|
|
1461
|
+
if (typeof value === 'string') {
|
|
1462
|
+
try {
|
|
1463
|
+
value = JSON.parse(value);
|
|
1464
|
+
}
|
|
1465
|
+
catch {
|
|
1466
|
+
return { error: 'batch_read steps must be an array or a valid JSON array string' };
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
if (!Array.isArray(value)) {
|
|
1470
|
+
return { error: 'batch_read requires steps to be an array' };
|
|
1471
|
+
}
|
|
1472
|
+
if (value.length === 0) {
|
|
1473
|
+
return { error: 'batch_read requires at least one step' };
|
|
1474
|
+
}
|
|
1475
|
+
if (value.length > BATCH_READ_MAX_STEPS) {
|
|
1476
|
+
return { error: `batch_read supports at most ${BATCH_READ_MAX_STEPS} steps` };
|
|
1477
|
+
}
|
|
1478
|
+
const steps = [];
|
|
1479
|
+
for (let i = 0; i < value.length; i++) {
|
|
1480
|
+
const step = value[i];
|
|
1481
|
+
if (!isRecord(step)) {
|
|
1482
|
+
return { error: `batch_read step ${i + 1} must be an object` };
|
|
1483
|
+
}
|
|
1484
|
+
if (typeof step.tool !== 'string' || !step.tool) {
|
|
1485
|
+
return { error: `batch_read step ${i + 1} requires a tool string` };
|
|
1486
|
+
}
|
|
1487
|
+
let stepArgs = step.args;
|
|
1488
|
+
if (typeof stepArgs === 'string') {
|
|
1489
|
+
try {
|
|
1490
|
+
stepArgs = JSON.parse(stepArgs);
|
|
1491
|
+
}
|
|
1492
|
+
catch {
|
|
1493
|
+
return { error: `batch_read step ${i + 1} args must be an object or valid JSON object string` };
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
if (!isRecord(stepArgs)) {
|
|
1497
|
+
return { error: `batch_read step ${i + 1} requires args to be an object` };
|
|
1498
|
+
}
|
|
1499
|
+
steps.push({ tool: step.tool, args: stepArgs });
|
|
1500
|
+
}
|
|
1501
|
+
return { steps };
|
|
1502
|
+
}
|
|
1503
|
+
function buildBatchReadPayload(success, summary, steps, error) {
|
|
1504
|
+
const payload = {
|
|
1505
|
+
success,
|
|
1506
|
+
output: steps.map(step => `${step.index}. ${step.tool}: ${step.summary || (step.success ? 'ok' : step.error || 'error')}`).join('\n'),
|
|
1507
|
+
summary,
|
|
1508
|
+
steps,
|
|
1509
|
+
};
|
|
1510
|
+
if (error) {
|
|
1511
|
+
payload.error = error;
|
|
1512
|
+
}
|
|
1513
|
+
return {
|
|
1514
|
+
success,
|
|
1515
|
+
output: JSON.stringify(payload, null, 2),
|
|
1516
|
+
summary,
|
|
1517
|
+
error,
|
|
1518
|
+
};
|
|
1519
|
+
}
|
|
1520
|
+
async function executeBatchRead(args, context) {
|
|
1521
|
+
const parsed = parseBatchReadSteps(args.steps);
|
|
1522
|
+
if (parsed.error || !parsed.steps) {
|
|
1523
|
+
return buildBatchReadPayload(false, parsed.error || 'Invalid batch_read request', [], parsed.error);
|
|
1524
|
+
}
|
|
1525
|
+
const runtimeTools = getRuntimeTools();
|
|
1526
|
+
for (let i = 0; i < parsed.steps.length; i++) {
|
|
1527
|
+
const step = parsed.steps[i];
|
|
1528
|
+
const tool = runtimeTools.find(t => t.name === step.tool);
|
|
1529
|
+
if (!BATCH_READ_ALLOWED_TOOLS.has(step.tool)) {
|
|
1530
|
+
const error = `Tool ${step.tool} is not allowed in batch_read`;
|
|
1531
|
+
return buildBatchReadPayload(false, error, [{
|
|
1532
|
+
index: i + 1,
|
|
1533
|
+
tool: step.tool,
|
|
1534
|
+
args: step.args,
|
|
1535
|
+
success: false,
|
|
1536
|
+
error,
|
|
1537
|
+
output: '',
|
|
1538
|
+
}], error);
|
|
1539
|
+
}
|
|
1540
|
+
if (!tool || tool.isReadOnly?.(step.args) !== true) {
|
|
1541
|
+
const error = `Tool ${step.tool} is unavailable or not read-only`;
|
|
1542
|
+
return buildBatchReadPayload(false, error, [{
|
|
1543
|
+
index: i + 1,
|
|
1544
|
+
tool: step.tool,
|
|
1545
|
+
args: step.args,
|
|
1546
|
+
success: false,
|
|
1547
|
+
error,
|
|
1548
|
+
output: '',
|
|
1549
|
+
}], error);
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
const stepResults = [];
|
|
1553
|
+
for (let i = 0; i < parsed.steps.length; i++) {
|
|
1554
|
+
const step = parsed.steps[i];
|
|
1555
|
+
try {
|
|
1556
|
+
const rawResult = await executeTool(step.tool, step.args, context.abortSignal, context);
|
|
1557
|
+
const envelope = JSON.parse(rawResult);
|
|
1558
|
+
const output = typeof envelope.output === 'string'
|
|
1559
|
+
? envelope.output
|
|
1560
|
+
: JSON.stringify(envelope.output ?? '');
|
|
1561
|
+
stepResults.push({
|
|
1562
|
+
index: i + 1,
|
|
1563
|
+
tool: step.tool,
|
|
1564
|
+
args: step.args,
|
|
1565
|
+
success: envelope.success === true,
|
|
1566
|
+
summary: typeof envelope.summary === 'string' ? envelope.summary : undefined,
|
|
1567
|
+
error: typeof envelope.error === 'string' ? envelope.error : undefined,
|
|
1568
|
+
output: (0, tool_artifacts_1.truncateForContext)(output, BATCH_READ_STEP_OUTPUT_MAX_BYTES),
|
|
1569
|
+
});
|
|
1570
|
+
}
|
|
1571
|
+
catch (err) {
|
|
1572
|
+
stepResults.push({
|
|
1573
|
+
index: i + 1,
|
|
1574
|
+
tool: step.tool,
|
|
1575
|
+
args: step.args,
|
|
1576
|
+
success: false,
|
|
1577
|
+
error: err?.message || String(err),
|
|
1578
|
+
output: '',
|
|
1579
|
+
});
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
const okCount = stepResults.filter(step => step.success).length;
|
|
1583
|
+
const success = okCount === stepResults.length;
|
|
1584
|
+
const summary = `batch_read completed ${okCount}/${stepResults.length} steps`;
|
|
1585
|
+
return buildBatchReadPayload(success, summary, stepResults, success ? undefined : summary);
|
|
1586
|
+
}
|
|
1371
1587
|
// ============================================================================
|
|
1372
1588
|
// 统一执行入口
|
|
1373
1589
|
// ============================================================================
|