openhorse 0.2.5 → 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 (107) hide show
  1. package/dist/commands/index.d.ts.map +1 -1
  2. package/dist/commands/index.js +139 -2
  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 +4 -0
  20. package/dist/framework/query.d.ts.map +1 -1
  21. package/dist/framework/query.js +55 -139
  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/ledger.d.ts +1 -0
  39. package/dist/harness/ledger.d.ts.map +1 -1
  40. package/dist/harness/ledger.js +2 -1
  41. package/dist/harness/ledger.js.map +1 -1
  42. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  43. package/dist/ink-ui/screens/ReplScreen.js +29 -0
  44. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  45. package/dist/print-ui/launch.d.ts.map +1 -1
  46. package/dist/print-ui/launch.js +7 -0
  47. package/dist/print-ui/launch.js.map +1 -1
  48. package/dist/runtime/agent-runtime-controller.js +1 -1
  49. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  50. package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
  51. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  52. package/dist/runtime/agent-runtime-protocol.js +6 -0
  53. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  54. package/dist/runtime/chat-controller.d.ts +1 -0
  55. package/dist/runtime/chat-controller.d.ts.map +1 -1
  56. package/dist/runtime/chat-controller.js +47 -9
  57. package/dist/runtime/chat-controller.js.map +1 -1
  58. package/dist/runtime/ui-events.d.ts +17 -0
  59. package/dist/runtime/ui-events.d.ts.map +1 -1
  60. package/dist/services/llm.d.ts +17 -0
  61. package/dist/services/llm.d.ts.map +1 -1
  62. package/dist/services/llm.js +11 -0
  63. package/dist/services/llm.js.map +1 -1
  64. package/dist/services/session-index.d.ts +5 -0
  65. package/dist/services/session-index.d.ts.map +1 -1
  66. package/dist/services/session-index.js +19 -10
  67. package/dist/services/session-index.js.map +1 -1
  68. package/dist/services/session-storage.d.ts +10 -0
  69. package/dist/services/session-storage.d.ts.map +1 -1
  70. package/dist/services/session-storage.js +58 -0
  71. package/dist/services/session-storage.js.map +1 -1
  72. package/dist/services/web-search-adapters.d.ts.map +1 -1
  73. package/dist/services/web-search-adapters.js +20 -1
  74. package/dist/services/web-search-adapters.js.map +1 -1
  75. package/dist/services/web-search-mcp.d.ts.map +1 -1
  76. package/dist/services/web-search-mcp.js +20 -1
  77. package/dist/services/web-search-mcp.js.map +1 -1
  78. package/dist/skills/loader.d.ts.map +1 -1
  79. package/dist/skills/loader.js +4 -3
  80. package/dist/skills/loader.js.map +1 -1
  81. package/dist/terminal-ui/launch.d.ts.map +1 -1
  82. package/dist/terminal-ui/launch.js +40 -18
  83. package/dist/terminal-ui/launch.js.map +1 -1
  84. package/dist/tools/index.d.ts +10 -2
  85. package/dist/tools/index.d.ts.map +1 -1
  86. package/dist/tools/index.js +145 -19
  87. package/dist/tools/index.js.map +1 -1
  88. package/dist/tui-ui/layout.js +22 -0
  89. package/dist/tui-ui/layout.js.map +1 -1
  90. package/dist/tui-ui/runner.d.ts.map +1 -1
  91. package/dist/tui-ui/runner.js +21 -0
  92. package/dist/tui-ui/runner.js.map +1 -1
  93. package/dist/tui-ui/state.d.ts +8 -1
  94. package/dist/tui-ui/state.d.ts.map +1 -1
  95. package/dist/tui-ui/state.js +8 -0
  96. package/dist/tui-ui/state.js.map +1 -1
  97. package/dist/ui-v2/components/edit-preview-picker.d.ts +26 -0
  98. package/dist/ui-v2/components/edit-preview-picker.d.ts.map +1 -0
  99. package/dist/ui-v2/components/edit-preview-picker.js +79 -0
  100. package/dist/ui-v2/components/edit-preview-picker.js.map +1 -0
  101. package/dist/ui-v2/index.d.ts +1 -0
  102. package/dist/ui-v2/index.d.ts.map +1 -1
  103. package/dist/ui-v2/index.js +1 -0
  104. package/dist/ui-v2/index.js.map +1 -1
  105. package/dist/ui-v2/types.d.ts +1 -1
  106. package/dist/ui-v2/types.d.ts.map +1 -1
  107. package/package.json +1 -1
@@ -14,6 +14,7 @@ exports.query = query;
14
14
  const tool_1 = require("./tool");
15
15
  const strategy_tracker_1 = require("../core/strategy-tracker");
16
16
  const auto_compact_1 = require("../services/compact/auto-compact");
17
+ const tool_scheduler_1 = require("./tool-scheduler");
17
18
  function isAborted(signal) {
18
19
  return signal?.aborted === true;
19
20
  }
@@ -89,175 +90,90 @@ async function* query(params) {
89
90
  harness?.recordAssistantResponse(response);
90
91
  // Handle tool calls
91
92
  if (response.toolCalls && response.toolCalls.length > 0) {
93
+ const toolCalls = response.toolCalls;
92
94
  yield {
93
95
  type: 'assistant_tool_calls',
94
96
  content: response.content,
95
- toolCalls: response.toolCalls,
97
+ toolCalls,
96
98
  };
97
- for (let i = 0; i < response.toolCalls.length; i++) {
98
- if (isAborted(abortSignal)) {
99
- yield cancelledEvent(llm);
100
- return;
101
- }
102
- const tc = response.toolCalls[i];
103
- // Ensure arguments is valid JSON (some APIs like DashScope require this)
104
- let args = {};
105
- const rawArgs = tc.function.arguments || '';
106
- if (rawArgs) {
107
- try {
108
- args = JSON.parse(rawArgs);
109
- }
110
- catch {
111
- args = {};
112
- }
113
- }
114
- // Re-serialize arguments to ensure valid JSON for next API call
115
- tc.function.arguments = JSON.stringify(args);
116
- // Start tracking this approach
117
- const attemptId = strategyTracker.startApproach(tc.function.name);
118
- strategyTracker.addTool(attemptId, tc.function.name);
99
+ const preparedCalls = (0, tool_scheduler_1.prepareToolCalls)({
100
+ toolCalls,
101
+ tools,
102
+ toolExecutor,
103
+ permissionMode: params.permissionMode,
104
+ toolConfirmation: params.toolConfirmation,
105
+ confirmToolUse: params.confirmToolUse,
106
+ toolContext: params.toolContext,
107
+ abortSignal,
108
+ startApproach: (toolName) => strategyTracker.startApproach(toolName),
109
+ addToolToTracker: (attemptId, toolName) => strategyTracker.addTool(attemptId, toolName),
110
+ harnessDriftCheck: harness ? ({ name, args }) => harness.beforeToolUse({ name, args }) : undefined,
111
+ harnessBlockedResult: harness ? (drift) => harness.asToolBlockedResult(drift) : undefined,
112
+ });
113
+ for (const prepared of preparedCalls) {
119
114
  yield {
120
115
  type: 'tool_call',
121
- name: tc.function.name,
122
- args,
123
- callId: tc.id,
124
- batchCount: response.toolCalls.length,
125
- batchIndex: i,
126
- };
127
- const start = Date.now();
128
- const drift = harness?.beforeToolUse({ name: tc.function.name, args });
129
- // Permission check before execution
130
- let result;
131
- const tool = tools.find(t => t.name === tc.function.name);
132
- const executeToolCall = async () => {
133
- try {
134
- return await toolExecutor(tc.function.name, args, abortSignal);
135
- }
136
- catch (err) {
137
- return JSON.stringify({
138
- success: false,
139
- error: `Tool execution error: ${err.message}`,
140
- });
141
- }
116
+ name: prepared.tc.function.name,
117
+ args: prepared.args,
118
+ callId: prepared.tc.id,
119
+ batchCount: toolCalls.length,
120
+ batchIndex: prepared.index,
142
121
  };
143
- if (drift?.status === 'block') {
144
- result = harness.asToolBlockedResult(drift);
145
- }
146
- else if (tool?.checkPermissions && params.toolContext) {
147
- const perm = tool.checkPermissions(args, params.toolContext);
148
- if (perm.behavior === 'deny') {
149
- result = JSON.stringify({
150
- success: false,
151
- error: perm.reason || 'Permission denied',
152
- });
153
- }
154
- else if (perm.behavior === 'ask' && params.permissionMode === 'default') {
155
- const confirmation = params.toolConfirmation ?? 'ask';
156
- if (confirmation === 'allow') {
157
- result = await executeToolCall();
158
- }
159
- else if (params.confirmToolUse && confirmation === 'ask') {
160
- const approved = await params.confirmToolUse({
161
- name: tc.function.name,
162
- args,
163
- reason: perm.reason,
164
- abortSignal,
165
- });
166
- result = approved
167
- ? await executeToolCall()
168
- : JSON.stringify({
169
- success: false,
170
- error: `Tool ${tc.function.name} requires user confirmation and was denied by user.`,
171
- });
172
- }
173
- else {
174
- result = JSON.stringify({
175
- success: false,
176
- error: confirmation === 'deny'
177
- ? `Tool ${tc.function.name} requires user confirmation and was denied by toolConfirmation=deny.`
178
- : `Tool ${tc.function.name} requires user confirmation.`,
179
- });
180
- }
181
- }
182
- else {
183
- // Issue #32 #3.2: 透传 abortSignal
184
- result = await executeToolCall();
185
- }
186
- }
187
- else {
188
- // Issue #32 #3.2: 透传 abortSignal
189
- result = await executeToolCall();
190
- }
191
- const duration = Date.now() - start;
192
- // Issue #21 修复:解析结果,提取 success/error 字段
193
- let toolSuccess = true;
194
- let toolError;
195
- let toolSummary;
196
- let toolOutputBytes;
197
- let strategyResult = 'success';
198
- let errorMsg;
199
- try {
200
- const parsed = JSON.parse(result);
201
- toolSuccess = parsed.success === true;
202
- toolError = parsed.error;
203
- toolSummary = typeof parsed.summary === 'string' ? parsed.summary : undefined;
204
- toolOutputBytes = typeof parsed.outputBytes === 'number' ? parsed.outputBytes : undefined;
205
- if (parsed.success === false) {
206
- strategyResult = 'failed';
207
- errorMsg = parsed.error || 'Unknown error';
208
- }
209
- }
210
- catch {
211
- strategyResult = 'failed';
212
- errorMsg = 'Invalid result';
213
- toolSuccess = false;
214
- toolError = 'Invalid JSON result';
122
+ }
123
+ for await (const executed of (0, tool_scheduler_1.executeToolCalls)(preparedCalls, {
124
+ toolExecutor,
125
+ abortSignal,
126
+ confirmToolUse: params.confirmToolUse,
127
+ permissionMode: params.permissionMode,
128
+ toolConfirmation: params.toolConfirmation,
129
+ harnessBlockedResult: harness ? (drift) => harness.asToolBlockedResult(drift) : undefined,
130
+ })) {
131
+ if (isAborted(abortSignal)) {
132
+ yield cancelledEvent(llm);
133
+ return;
215
134
  }
216
- strategyTracker.recordResult(attemptId, strategyResult, errorMsg, duration);
135
+ const { prepared } = executed;
136
+ const { tc, args, attemptId } = prepared;
137
+ strategyTracker.recordResult(attemptId, executed.strategyResult, executed.strategyError, executed.duration);
217
138
  harness?.recordToolResult({
218
139
  name: tc.function.name,
219
140
  args,
220
- result,
221
- duration,
222
- success: toolSuccess,
223
- error: toolError,
141
+ result: executed.result,
142
+ duration: executed.duration,
143
+ success: executed.success,
144
+ error: executed.error,
145
+ summary: executed.summary,
224
146
  });
225
147
  yield {
226
148
  type: 'tool_result',
227
149
  name: tc.function.name,
228
150
  args,
229
151
  callId: tc.id,
230
- result,
231
- duration,
232
- success: toolSuccess, // Issue #21: 添加 success 字段
233
- error: toolError, // Issue #21: 添加 error 字段
234
- summary: toolSummary,
235
- outputBytes: toolOutputBytes,
236
- batchCount: response.toolCalls.length,
237
- batchIndex: i,
152
+ result: executed.result,
153
+ duration: executed.duration,
154
+ success: executed.success,
155
+ artifactRef: executed.artifactRef,
156
+ error: executed.error,
157
+ summary: executed.summary,
158
+ outputBytes: executed.outputBytes,
159
+ batchCount: toolCalls.length,
160
+ batchIndex: prepared.index,
238
161
  };
239
- if (isAborted(abortSignal)) {
240
- yield cancelledEvent(llm);
241
- return;
242
- }
243
162
  messages.push({
244
163
  role: 'tool',
245
- content: result,
164
+ content: executed.result,
246
165
  tool_call_id: tc.id,
247
166
  });
248
- // Issue #21 修复:工具失败时添加系统提示消息
249
- if (!toolSuccess) {
167
+ if (!executed.success) {
250
168
  messages.push({
251
169
  role: 'user',
252
- content: `[System] Tool ${tc.function.name} failed: ${toolError}. Consider alternative approaches or inform the user.`,
170
+ content: `[System] Tool ${tc.function.name} failed: ${executed.error}. Consider alternative approaches or inform the user.`,
253
171
  });
254
172
  }
255
- // Check if strategy exhausted - suggest alternatives
256
173
  if (strategyTracker.isExhausted()) {
257
174
  const suggestion = strategyTracker.suggestAlternative();
258
175
  if (suggestion) {
259
176
  yield { type: 'strategy_exhausted', suggestion };
260
- // Add suggestion to messages for LLM to consider
261
177
  messages.push({
262
178
  role: 'user',
263
179
  content: suggestion,
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * openhorse - Tool Scheduler
3
+ *
4
+ * Extracts tool grouping, permission checks, concurrent execution, and
5
+ * ordered result emission from query.ts into a testable module.
6
+ *
7
+ * Input: tool calls from LLM + tool registry + permission context + abort signal
8
+ * Output: execution results in original call order
9
+ */
10
+ import type { OpenHorseTool, PermissionResult, ToolContext } from './tool';
11
+ import type { Message } from '../services/llm';
12
+ import type { DriftCheckResult } from '../harness/types';
13
+ type ToolCallRecord = NonNullable<Message['tool_calls']>[number];
14
+ export interface PreparedToolCall {
15
+ index: number;
16
+ tc: ToolCallRecord;
17
+ args: Record<string, unknown>;
18
+ tool: OpenHorseTool | undefined;
19
+ attemptId: string;
20
+ drift: DriftCheckResult | undefined;
21
+ permission: PermissionResult | undefined;
22
+ canRunConcurrently: boolean;
23
+ }
24
+ export interface ExecutedToolCall {
25
+ prepared: PreparedToolCall;
26
+ result: string;
27
+ duration: number;
28
+ success: boolean;
29
+ error?: string;
30
+ summary?: string;
31
+ outputBytes?: number;
32
+ artifactRef?: {
33
+ id: string;
34
+ outputBytes: number;
35
+ };
36
+ strategyResult: 'success' | 'failed';
37
+ strategyError?: string;
38
+ }
39
+ export interface ToolSchedule {
40
+ parallel: PreparedToolCall[];
41
+ serial: PreparedToolCall[];
42
+ }
43
+ export interface ToolSchedulerOptions {
44
+ /** Tool calls from the LLM response */
45
+ toolCalls: NonNullable<Message['tool_calls']>;
46
+ /** Available tool registry */
47
+ tools: OpenHorseTool[];
48
+ /** Tool executor: (name, args, abortSignal?) => result string */
49
+ toolExecutor: (name: string, args: Record<string, unknown>, abortSignal?: AbortSignal) => Promise<string>;
50
+ /** Permission mode */
51
+ permissionMode?: string;
52
+ /** Fallback for permission checks that would need an interactive prompt */
53
+ toolConfirmation?: string;
54
+ /** Optional UI confirmation hook for tools whose permission check returns ask */
55
+ confirmToolUse?: (request: {
56
+ name: string;
57
+ args: Record<string, unknown>;
58
+ reason?: string;
59
+ abortSignal?: AbortSignal;
60
+ }) => Promise<boolean>;
61
+ /** Tool execution context */
62
+ toolContext?: ToolContext;
63
+ /** Abort signal */
64
+ abortSignal?: AbortSignal;
65
+ /** Start a tracking approach for strategy tracker (returns attemptId) */
66
+ startApproach?: (toolName: string) => string;
67
+ /** Add tool to strategy tracker */
68
+ addToolToTracker?: (attemptId: string, toolName: string) => void;
69
+ /** Harness drift check callback */
70
+ harnessDriftCheck?: (params: {
71
+ name: string;
72
+ args: Record<string, unknown>;
73
+ }) => DriftCheckResult | undefined;
74
+ /** Harness blocked result formatter */
75
+ harnessBlockedResult?: (drift: DriftCheckResult) => string;
76
+ }
77
+ /**
78
+ * Prepare tool calls: parse args, check drift, check permissions, determine concurrency.
79
+ * Re-serializes tc.function.arguments to ensure valid JSON.
80
+ */
81
+ export declare function prepareToolCalls(options: ToolSchedulerOptions): PreparedToolCall[];
82
+ /**
83
+ * Execute prepared tool calls, respecting concurrency flags.
84
+ * Parallel-safe tools run concurrently; unsafe tools run serially.
85
+ * Results are returned in original call order.
86
+ *
87
+ * Returns an async generator that yields each result as it completes.
88
+ */
89
+ export declare function executeToolCalls(preparedCalls: PreparedToolCall[], options: {
90
+ toolExecutor: ToolSchedulerOptions['toolExecutor'];
91
+ abortSignal?: AbortSignal;
92
+ confirmToolUse?: ToolSchedulerOptions['confirmToolUse'];
93
+ permissionMode?: string;
94
+ toolConfirmation?: string;
95
+ harnessBlockedResult?: ToolSchedulerOptions['harnessBlockedResult'];
96
+ }): AsyncGenerator<ExecutedToolCall>;
97
+ /**
98
+ * Inspect how prepared tool calls would be scheduled.
99
+ * Returns parallel and serial groups without executing.
100
+ */
101
+ export declare function inspectSchedule(preparedCalls: PreparedToolCall[]): ToolSchedule;
102
+ export {};
103
+ //# sourceMappingURL=tool-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-scheduler.d.ts","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Tool Scheduler
4
+ *
5
+ * Extracts tool grouping, permission checks, concurrent execution, and
6
+ * ordered result emission from query.ts into a testable module.
7
+ *
8
+ * Input: tool calls from LLM + tool registry + permission context + abort signal
9
+ * Output: execution results in original call order
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.prepareToolCalls = prepareToolCalls;
13
+ exports.executeToolCalls = executeToolCalls;
14
+ exports.inspectSchedule = inspectSchedule;
15
+ // ============================================================================
16
+ // Preparation
17
+ // ============================================================================
18
+ function parseToolArgs(tc) {
19
+ const rawArgs = tc.function.arguments || '';
20
+ if (!rawArgs)
21
+ return {};
22
+ try {
23
+ return JSON.parse(rawArgs);
24
+ }
25
+ catch {
26
+ return {};
27
+ }
28
+ }
29
+ /**
30
+ * Prepare tool calls: parse args, check drift, check permissions, determine concurrency.
31
+ * Re-serializes tc.function.arguments to ensure valid JSON.
32
+ */
33
+ function prepareToolCalls(options) {
34
+ const { toolCalls, tools } = options;
35
+ const preparedCalls = [];
36
+ for (let i = 0; i < toolCalls.length; i++) {
37
+ const tc = toolCalls[i];
38
+ const args = parseToolArgs(tc);
39
+ // Re-serialize to ensure valid JSON for next API call
40
+ tc.function.arguments = JSON.stringify(args);
41
+ const attemptId = options.startApproach?.(tc.function.name) ?? `tool-${i}`;
42
+ options.addToolToTracker?.(attemptId, tc.function.name);
43
+ const tool = tools.find(t => t.name === tc.function.name);
44
+ const drift = options.harnessDriftCheck?.({ name: tc.function.name, args });
45
+ const permission = tool?.checkPermissions && options.toolContext
46
+ ? tool.checkPermissions(args, options.toolContext)
47
+ : undefined;
48
+ const confirmation = options.toolConfirmation ?? 'ask';
49
+ const needsInteractiveConfirmation = permission?.behavior === 'ask'
50
+ && options.permissionMode === 'default'
51
+ && confirmation === 'ask'
52
+ && Boolean(options.confirmToolUse);
53
+ const canRunConcurrently = tool?.isConcurrencySafe?.(args) === true
54
+ && drift?.status !== 'block'
55
+ && permission?.behavior !== 'deny'
56
+ && !needsInteractiveConfirmation;
57
+ preparedCalls.push({
58
+ index: i,
59
+ tc,
60
+ args,
61
+ tool,
62
+ attemptId,
63
+ drift,
64
+ permission,
65
+ canRunConcurrently,
66
+ });
67
+ }
68
+ return preparedCalls;
69
+ }
70
+ // ============================================================================
71
+ // Execution
72
+ // ============================================================================
73
+ function isArtifactRef(value) {
74
+ if (!value || typeof value !== 'object')
75
+ return false;
76
+ const record = value;
77
+ return typeof record.id === 'string' && typeof record.outputBytes === 'number';
78
+ }
79
+ function parseToolResult(result) {
80
+ try {
81
+ const parsed = JSON.parse(result);
82
+ const success = parsed.success === true;
83
+ const outputBytes = typeof parsed.outputBytes === 'number' ? parsed.outputBytes : undefined;
84
+ const artifactRef = isArtifactRef(parsed.artifactRef) ? parsed.artifactRef : undefined;
85
+ return {
86
+ success,
87
+ error: typeof parsed.error === 'string' ? parsed.error : undefined,
88
+ summary: typeof parsed.summary === 'string' ? parsed.summary : undefined,
89
+ outputBytes,
90
+ artifactRef,
91
+ strategyResult: success ? 'success' : 'failed',
92
+ strategyError: success ? undefined : parsed.error || 'Unknown error',
93
+ };
94
+ }
95
+ catch {
96
+ return {
97
+ success: true,
98
+ summary: result,
99
+ outputBytes: Buffer.byteLength(result, 'utf8'),
100
+ strategyResult: 'success',
101
+ };
102
+ }
103
+ }
104
+ function failedExecution(prepared, err) {
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ const result = JSON.stringify({
107
+ success: false,
108
+ error: `Tool execution error: ${message}`,
109
+ });
110
+ return {
111
+ prepared,
112
+ result,
113
+ duration: 0,
114
+ success: false,
115
+ error: `Tool execution error: ${message}`,
116
+ strategyResult: 'failed',
117
+ strategyError: message,
118
+ };
119
+ }
120
+ function executePreparedTool(prepared, toolExecutor, abortSignal, confirmToolUse, permissionMode, toolConfirmation, harnessBlockedResult) {
121
+ const start = Date.now();
122
+ const { tc, args, drift, permission } = prepared;
123
+ const exec = async () => {
124
+ try {
125
+ return await toolExecutor(tc.function.name, args, abortSignal);
126
+ }
127
+ catch (err) {
128
+ return JSON.stringify({
129
+ success: false,
130
+ error: `Tool execution error: ${err.message}`,
131
+ });
132
+ }
133
+ };
134
+ const run = async () => {
135
+ if (drift?.status === 'block') {
136
+ return harnessBlockedResult
137
+ ? harnessBlockedResult(drift)
138
+ : JSON.stringify({ success: false, error: 'Blocked by Context Harness' });
139
+ }
140
+ if (permission?.behavior === 'deny') {
141
+ return JSON.stringify({
142
+ success: false,
143
+ error: permission.reason || 'Permission denied',
144
+ });
145
+ }
146
+ if (permission?.behavior === 'ask' && permissionMode === 'default') {
147
+ const confirmation = toolConfirmation ?? 'ask';
148
+ if (confirmation === 'allow') {
149
+ return exec();
150
+ }
151
+ if (confirmToolUse && confirmation === 'ask') {
152
+ const approved = await confirmToolUse({
153
+ name: tc.function.name,
154
+ args,
155
+ reason: permission.reason,
156
+ abortSignal,
157
+ });
158
+ return approved
159
+ ? await exec()
160
+ : JSON.stringify({
161
+ success: false,
162
+ error: `Tool ${tc.function.name} requires user confirmation and was denied by user.`,
163
+ });
164
+ }
165
+ return JSON.stringify({
166
+ success: false,
167
+ error: confirmation === 'deny'
168
+ ? `Tool ${tc.function.name} requires user confirmation and was denied by toolConfirmation=deny.`
169
+ : `Tool ${tc.function.name} requires user confirmation.`,
170
+ });
171
+ }
172
+ return exec();
173
+ };
174
+ return run().then(result => {
175
+ const duration = Date.now() - start;
176
+ return {
177
+ prepared,
178
+ result,
179
+ duration,
180
+ ...parseToolResult(result),
181
+ };
182
+ });
183
+ }
184
+ /**
185
+ * Execute prepared tool calls, respecting concurrency flags.
186
+ * Parallel-safe tools run concurrently; unsafe tools run serially.
187
+ * Results are returned in original call order.
188
+ *
189
+ * Returns an async generator that yields each result as it completes.
190
+ */
191
+ async function* executeToolCalls(preparedCalls, options) {
192
+ let parallelGroup = [];
193
+ const runParallelGroup = async (group) => {
194
+ const settled = await Promise.allSettled(group.map(call => executePreparedTool(call, options.toolExecutor, options.abortSignal, options.confirmToolUse, options.permissionMode, options.toolConfirmation, options.harnessBlockedResult)));
195
+ return settled.map((result, index) => result.status === 'fulfilled' ? result.value : failedExecution(group[index], result.reason));
196
+ };
197
+ for (const prepared of preparedCalls) {
198
+ if (prepared.canRunConcurrently) {
199
+ parallelGroup.push(prepared);
200
+ continue;
201
+ }
202
+ if (parallelGroup.length > 0) {
203
+ const executedGroup = await runParallelGroup(parallelGroup);
204
+ // Sort by original index to maintain order
205
+ executedGroup.sort((a, b) => a.prepared.index - b.prepared.index);
206
+ for (const executed of executedGroup) {
207
+ yield executed;
208
+ }
209
+ parallelGroup = [];
210
+ }
211
+ const executed = await executePreparedTool(prepared, options.toolExecutor, options.abortSignal, options.confirmToolUse, options.permissionMode, options.toolConfirmation, options.harnessBlockedResult).catch(err => failedExecution(prepared, err));
212
+ yield executed;
213
+ }
214
+ if (parallelGroup.length > 0) {
215
+ const executedGroup = await runParallelGroup(parallelGroup);
216
+ executedGroup.sort((a, b) => a.prepared.index - b.prepared.index);
217
+ for (const executed of executedGroup) {
218
+ yield executed;
219
+ }
220
+ }
221
+ }
222
+ // ============================================================================
223
+ // Schedule inspection (for testing)
224
+ // ============================================================================
225
+ /**
226
+ * Inspect how prepared tool calls would be scheduled.
227
+ * Returns parallel and serial groups without executing.
228
+ */
229
+ function inspectSchedule(preparedCalls) {
230
+ const parallel = [];
231
+ const serial = [];
232
+ for (const call of preparedCalls) {
233
+ if (call.canRunConcurrently) {
234
+ parallel.push(call);
235
+ }
236
+ else {
237
+ serial.push(call);
238
+ }
239
+ }
240
+ return { parallel, serial };
241
+ }
242
+ //# sourceMappingURL=tool-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-scheduler.js","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":"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"}