@vybestack/llxprt-code-agents 0.10.0-nightly.260613.1adad3b34

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 (176) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.js +11 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/agents/executor-prompt-builder.d.ts +19 -0
  6. package/dist/src/agents/executor-prompt-builder.js +44 -0
  7. package/dist/src/agents/executor-prompt-builder.js.map +1 -0
  8. package/dist/src/agents/executor-termination.d.ts +22 -0
  9. package/dist/src/agents/executor-termination.js +44 -0
  10. package/dist/src/agents/executor-termination.js.map +1 -0
  11. package/dist/src/agents/executor-validation.d.ts +17 -0
  12. package/dist/src/agents/executor-validation.js +35 -0
  13. package/dist/src/agents/executor-validation.js.map +1 -0
  14. package/dist/src/agents/executor.d.ts +136 -0
  15. package/dist/src/agents/executor.js +874 -0
  16. package/dist/src/agents/executor.js.map +1 -0
  17. package/dist/src/agents/invocation.d.ts +45 -0
  18. package/dist/src/agents/invocation.js +118 -0
  19. package/dist/src/agents/invocation.js.map +1 -0
  20. package/dist/src/agents/recovery.d.ts +75 -0
  21. package/dist/src/agents/recovery.js +107 -0
  22. package/dist/src/agents/recovery.js.map +1 -0
  23. package/dist/src/agents/types.d.ts +149 -0
  24. package/dist/src/agents/types.js +18 -0
  25. package/dist/src/agents/types.js.map +1 -0
  26. package/dist/src/agents/utils.d.ts +15 -0
  27. package/dist/src/agents/utils.js +28 -0
  28. package/dist/src/agents/utils.js.map +1 -0
  29. package/dist/src/compression/CompressionHandler.d.ts +178 -0
  30. package/dist/src/compression/CompressionHandler.js +630 -0
  31. package/dist/src/compression/CompressionHandler.js.map +1 -0
  32. package/dist/src/compression/HighDensityStrategy.d.ts +113 -0
  33. package/dist/src/compression/HighDensityStrategy.js +769 -0
  34. package/dist/src/compression/HighDensityStrategy.js.map +1 -0
  35. package/dist/src/compression/MiddleOutStrategy.d.ts +27 -0
  36. package/dist/src/compression/MiddleOutStrategy.js +347 -0
  37. package/dist/src/compression/MiddleOutStrategy.js.map +1 -0
  38. package/dist/src/compression/OneShotStrategy.d.ts +22 -0
  39. package/dist/src/compression/OneShotStrategy.js +235 -0
  40. package/dist/src/compression/OneShotStrategy.js.map +1 -0
  41. package/dist/src/compression/TopDownTruncationStrategy.d.ts +13 -0
  42. package/dist/src/compression/TopDownTruncationStrategy.js +74 -0
  43. package/dist/src/compression/TopDownTruncationStrategy.js.map +1 -0
  44. package/dist/src/compression/compressionBudgeting.d.ts +34 -0
  45. package/dist/src/compression/compressionBudgeting.js +139 -0
  46. package/dist/src/compression/compressionBudgeting.js.map +1 -0
  47. package/dist/src/compression/compressionStrategyFactory.d.ts +23 -0
  48. package/dist/src/compression/compressionStrategyFactory.js +40 -0
  49. package/dist/src/compression/compressionStrategyFactory.js.map +1 -0
  50. package/dist/src/compression/index.d.ts +16 -0
  51. package/dist/src/compression/index.js +17 -0
  52. package/dist/src/compression/index.js.map +1 -0
  53. package/dist/src/compression/reasoningUtils.d.ts +18 -0
  54. package/dist/src/compression/reasoningUtils.js +22 -0
  55. package/dist/src/compression/reasoningUtils.js.map +1 -0
  56. package/dist/src/compression/utils.d.ts +114 -0
  57. package/dist/src/compression/utils.js +316 -0
  58. package/dist/src/compression/utils.js.map +1 -0
  59. package/dist/src/core/AgentHookManager.d.ts +41 -0
  60. package/dist/src/core/AgentHookManager.js +65 -0
  61. package/dist/src/core/AgentHookManager.js.map +1 -0
  62. package/dist/src/core/ChatSessionFactory.d.ts +50 -0
  63. package/dist/src/core/ChatSessionFactory.js +216 -0
  64. package/dist/src/core/ChatSessionFactory.js.map +1 -0
  65. package/dist/src/core/ConversationManager.d.ts +113 -0
  66. package/dist/src/core/ConversationManager.js +311 -0
  67. package/dist/src/core/ConversationManager.js.map +1 -0
  68. package/dist/src/core/DirectMessageProcessor.d.ts +79 -0
  69. package/dist/src/core/DirectMessageProcessor.js +478 -0
  70. package/dist/src/core/DirectMessageProcessor.js.map +1 -0
  71. package/dist/src/core/IdeContextTracker.d.ts +56 -0
  72. package/dist/src/core/IdeContextTracker.js +207 -0
  73. package/dist/src/core/IdeContextTracker.js.map +1 -0
  74. package/dist/src/core/MessageConverter.d.ts +78 -0
  75. package/dist/src/core/MessageConverter.js +492 -0
  76. package/dist/src/core/MessageConverter.js.map +1 -0
  77. package/dist/src/core/MessageStreamOrchestrator.d.ts +85 -0
  78. package/dist/src/core/MessageStreamOrchestrator.js +448 -0
  79. package/dist/src/core/MessageStreamOrchestrator.js.map +1 -0
  80. package/dist/src/core/MessageStreamTerminalHandler.d.ts +16 -0
  81. package/dist/src/core/MessageStreamTerminalHandler.js +170 -0
  82. package/dist/src/core/MessageStreamTerminalHandler.js.map +1 -0
  83. package/dist/src/core/StreamProcessor.d.ts +105 -0
  84. package/dist/src/core/StreamProcessor.js +660 -0
  85. package/dist/src/core/StreamProcessor.js.map +1 -0
  86. package/dist/src/core/TodoContinuationService.d.ts +74 -0
  87. package/dist/src/core/TodoContinuationService.js +312 -0
  88. package/dist/src/core/TodoContinuationService.js.map +1 -0
  89. package/dist/src/core/TurnProcessor.d.ts +91 -0
  90. package/dist/src/core/TurnProcessor.js +540 -0
  91. package/dist/src/core/TurnProcessor.js.map +1 -0
  92. package/dist/src/core/baseLlmClient.d.ts +115 -0
  93. package/dist/src/core/baseLlmClient.js +231 -0
  94. package/dist/src/core/baseLlmClient.js.map +1 -0
  95. package/dist/src/core/bucketFailoverIntegration.d.ts +62 -0
  96. package/dist/src/core/bucketFailoverIntegration.js +186 -0
  97. package/dist/src/core/bucketFailoverIntegration.js.map +1 -0
  98. package/dist/src/core/chatSession.d.ts +121 -0
  99. package/dist/src/core/chatSession.js +720 -0
  100. package/dist/src/core/chatSession.js.map +1 -0
  101. package/dist/src/core/client.d.ts +132 -0
  102. package/dist/src/core/client.js +524 -0
  103. package/dist/src/core/client.js.map +1 -0
  104. package/dist/src/core/clientHelpers.d.ts +15 -0
  105. package/dist/src/core/clientHelpers.js +122 -0
  106. package/dist/src/core/clientHelpers.js.map +1 -0
  107. package/dist/src/core/clientLlmUtilities.d.ts +30 -0
  108. package/dist/src/core/clientLlmUtilities.js +125 -0
  109. package/dist/src/core/clientLlmUtilities.js.map +1 -0
  110. package/dist/src/core/clientToolGovernance.d.ts +37 -0
  111. package/dist/src/core/clientToolGovernance.js +104 -0
  112. package/dist/src/core/clientToolGovernance.js.map +1 -0
  113. package/dist/src/core/compression-config.d.ts +12 -0
  114. package/dist/src/core/compression-config.js +21 -0
  115. package/dist/src/core/compression-config.js.map +1 -0
  116. package/dist/src/core/coreToolScheduler.d.ts +105 -0
  117. package/dist/src/core/coreToolScheduler.js +453 -0
  118. package/dist/src/core/coreToolScheduler.js.map +1 -0
  119. package/dist/src/core/hookToolRestrictions.d.ts +18 -0
  120. package/dist/src/core/hookToolRestrictions.js +187 -0
  121. package/dist/src/core/hookToolRestrictions.js.map +1 -0
  122. package/dist/src/core/nonInteractiveToolExecutor.d.ts +17 -0
  123. package/dist/src/core/nonInteractiveToolExecutor.js +102 -0
  124. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
  125. package/dist/src/core/subagent.d.ts +105 -0
  126. package/dist/src/core/subagent.js +650 -0
  127. package/dist/src/core/subagent.js.map +1 -0
  128. package/dist/src/core/subagentExecution.d.ts +104 -0
  129. package/dist/src/core/subagentExecution.js +275 -0
  130. package/dist/src/core/subagentExecution.js.map +1 -0
  131. package/dist/src/core/subagentOrchestrator.d.ts +84 -0
  132. package/dist/src/core/subagentOrchestrator.js +503 -0
  133. package/dist/src/core/subagentOrchestrator.js.map +1 -0
  134. package/dist/src/core/subagentRuntimeSetup.d.ts +75 -0
  135. package/dist/src/core/subagentRuntimeSetup.js +387 -0
  136. package/dist/src/core/subagentRuntimeSetup.js.map +1 -0
  137. package/dist/src/core/subagentScheduler.d.ts +17 -0
  138. package/dist/src/core/subagentScheduler.js +7 -0
  139. package/dist/src/core/subagentScheduler.js.map +1 -0
  140. package/dist/src/core/subagentToolProcessing.d.ts +51 -0
  141. package/dist/src/core/subagentToolProcessing.js +359 -0
  142. package/dist/src/core/subagentToolProcessing.js.map +1 -0
  143. package/dist/src/core/toolGovernance.d.ts +18 -0
  144. package/dist/src/core/toolGovernance.js +50 -0
  145. package/dist/src/core/toolGovernance.js.map +1 -0
  146. package/dist/src/core/turn.d.ts +47 -0
  147. package/dist/src/core/turn.js +455 -0
  148. package/dist/src/core/turn.js.map +1 -0
  149. package/dist/src/core/turnLogging.d.ts +35 -0
  150. package/dist/src/core/turnLogging.js +80 -0
  151. package/dist/src/core/turnLogging.js.map +1 -0
  152. package/dist/src/index.d.ts +32 -0
  153. package/dist/src/index.js +44 -0
  154. package/dist/src/index.js.map +1 -0
  155. package/dist/src/scheduler/confirmation-coordinator.d.ts +139 -0
  156. package/dist/src/scheduler/confirmation-coordinator.js +443 -0
  157. package/dist/src/scheduler/confirmation-coordinator.js.map +1 -0
  158. package/dist/src/scheduler/result-aggregator.d.ts +127 -0
  159. package/dist/src/scheduler/result-aggregator.js +302 -0
  160. package/dist/src/scheduler/result-aggregator.js.map +1 -0
  161. package/dist/src/scheduler/status-transitions.d.ts +39 -0
  162. package/dist/src/scheduler/status-transitions.js +184 -0
  163. package/dist/src/scheduler/status-transitions.js.map +1 -0
  164. package/dist/src/scheduler/tool-dispatcher.d.ts +40 -0
  165. package/dist/src/scheduler/tool-dispatcher.js +120 -0
  166. package/dist/src/scheduler/tool-dispatcher.js.map +1 -0
  167. package/dist/src/scheduler/tool-executor.d.ts +44 -0
  168. package/dist/src/scheduler/tool-executor.js +117 -0
  169. package/dist/src/scheduler/tool-executor.js.map +1 -0
  170. package/dist/src/scheduler/utils.d.ts +11 -0
  171. package/dist/src/scheduler/utils.js +19 -0
  172. package/dist/src/scheduler/utils.js.map +1 -0
  173. package/dist/src/tools/task.d.ts +128 -0
  174. package/dist/src/tools/task.js +932 -0
  175. package/dist/src/tools/task.js.map +1 -0
  176. package/package.json +54 -0
@@ -0,0 +1,187 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { getFunctionCallsFromParts } from '@vybestack/llxprt-code-core/utils/generateContentResponseUtilities.js';
7
+ import { canonicalizeToolName } from './toolGovernance.js';
8
+ const responseRestrictions = new WeakMap();
9
+ const responseFilteredRestrictedCalls = new WeakMap();
10
+ const functionCallRestrictions = new WeakMap();
11
+ const responseRestrictionsSymbol = Symbol('hookRestrictedAllowedTools');
12
+ const responseFilteredRestrictedCallsSymbol = Symbol('hookRestrictedFilteredCalls');
13
+ const functionCallRestrictionsSymbol = Symbol('hookRestrictedAllowedTools');
14
+ function setResponseRestrictionMetadata(response, allowedTools) {
15
+ responseRestrictions.set(response, [...allowedTools]);
16
+ Object.defineProperty(response, responseRestrictionsSymbol, {
17
+ configurable: true,
18
+ enumerable: false,
19
+ value: [...allowedTools],
20
+ });
21
+ }
22
+ function setResponseFilteredMetadata(response) {
23
+ responseFilteredRestrictedCalls.set(response, true);
24
+ Object.defineProperty(response, responseFilteredRestrictedCallsSymbol, {
25
+ configurable: true,
26
+ enumerable: false,
27
+ value: true,
28
+ });
29
+ }
30
+ function stringifyFunctionCallArgs(args) {
31
+ try {
32
+ // JSON.stringify can return undefined at runtime (e.g. for functions or
33
+ // symbols) even though its type signature says string, so guard the result.
34
+ const serialized = JSON.stringify(args === undefined ? {} : args);
35
+ return serialized ?? '{}';
36
+ }
37
+ catch {
38
+ return String(args);
39
+ }
40
+ }
41
+ function functionCallKey(call) {
42
+ if (typeof call.id === 'string' && call.id.trim() !== '') {
43
+ return `id:${call.id}`;
44
+ }
45
+ const name = typeof call.name === 'string' ? call.name : '';
46
+ return `name:${canonicalizeToolName(name)}:args:${stringifyFunctionCallArgs(call.args)}`;
47
+ }
48
+ export function mergeHookRestrictedFunctionCalls(primaryCalls, secondaryCalls) {
49
+ const seen = new Set(primaryCalls.map(functionCallKey));
50
+ const merged = [...primaryCalls];
51
+ for (const call of secondaryCalls) {
52
+ const key = functionCallKey(call);
53
+ if (!seen.has(key)) {
54
+ seen.add(key);
55
+ merged.push(call);
56
+ }
57
+ }
58
+ return merged;
59
+ }
60
+ export function attachHookRestrictedAllowedTools(response, allowedTools) {
61
+ if (allowedTools === undefined) {
62
+ return response;
63
+ }
64
+ const restrictedResponse = Object.assign(Object.create(Object.getPrototypeOf(response)), response);
65
+ restrictedResponse.candidates = response.candidates?.map((candidate) => ({
66
+ ...candidate,
67
+ content: candidate.content === undefined
68
+ ? undefined
69
+ : {
70
+ ...candidate.content,
71
+ parts: candidate.content.parts === undefined
72
+ ? undefined
73
+ : filterResponseCandidateParts(restrictedResponse, candidate.content.parts, allowedTools),
74
+ },
75
+ }));
76
+ restrictedResponse.automaticFunctionCallingHistory =
77
+ response.automaticFunctionCallingHistory === undefined
78
+ ? undefined
79
+ : filterHookRestrictedContents(response.automaticFunctionCallingHistory, allowedTools).filter((content) => (content.parts?.length ?? 0) > 0);
80
+ const originalTopLevelCalls = response.functionCalls ?? [];
81
+ const filteredTopLevelCalls = filterHookRestrictedFunctionCalls(originalTopLevelCalls, allowedTools);
82
+ if (filteredTopLevelCalls.length < originalTopLevelCalls.length) {
83
+ setResponseFilteredMetadata(restrictedResponse);
84
+ }
85
+ setResponseRestrictionMetadata(restrictedResponse, allowedTools);
86
+ Object.defineProperty(restrictedResponse, 'functionCalls', {
87
+ configurable: true,
88
+ enumerable: true,
89
+ get() {
90
+ return filteredTopLevelCalls.length > 0
91
+ ? filteredTopLevelCalls
92
+ : undefined;
93
+ },
94
+ });
95
+ return restrictedResponse;
96
+ }
97
+ export function hasFilteredHookRestrictedToolCalls(response) {
98
+ return (responseFilteredRestrictedCalls.get(response) === true ||
99
+ response[responseFilteredRestrictedCallsSymbol] === true);
100
+ }
101
+ function filterResponseCandidateParts(response, parts, allowedTools) {
102
+ const originalCalls = getFunctionCallsFromParts(parts) ?? [];
103
+ const filteredParts = filterHookRestrictedParts(parts, allowedTools);
104
+ const filteredCalls = getFunctionCallsFromParts(filteredParts) ?? [];
105
+ if (filteredCalls.length < originalCalls.length ||
106
+ filteredParts.length < parts.length) {
107
+ setResponseFilteredMetadata(response);
108
+ }
109
+ return filteredParts;
110
+ }
111
+ export function filterHookRestrictedContent(content, allowedTools) {
112
+ const parts = content.parts ?? [];
113
+ return {
114
+ ...content,
115
+ parts: filterHookRestrictedParts(parts, allowedTools),
116
+ };
117
+ }
118
+ export function filterHookRestrictedContents(contents, allowedTools) {
119
+ if (allowedTools === undefined) {
120
+ return [...contents];
121
+ }
122
+ return contents.map((content) => filterHookRestrictedContent(content, allowedTools));
123
+ }
124
+ export function getHookRestrictedAllowedTools(response) {
125
+ const allowedTools = responseRestrictions.get(response) ??
126
+ response[responseRestrictionsSymbol];
127
+ return allowedTools === undefined ? undefined : [...allowedTools];
128
+ }
129
+ export function setHookRestrictedAllowedToolsOnFunctionCall(functionCall, allowedTools) {
130
+ if (allowedTools !== undefined) {
131
+ functionCallRestrictions.set(functionCall, [...allowedTools]);
132
+ Object.defineProperty(functionCall, functionCallRestrictionsSymbol, {
133
+ configurable: true,
134
+ enumerable: false,
135
+ value: [...allowedTools],
136
+ });
137
+ }
138
+ }
139
+ export function getHookRestrictedAllowedToolsForFunctionCall(functionCall) {
140
+ const allowedTools = functionCallRestrictions.get(functionCall) ??
141
+ functionCall[functionCallRestrictionsSymbol];
142
+ return allowedTools === undefined ? undefined : [...allowedTools];
143
+ }
144
+ export function isHookRestrictedToolCall(fnCall, allowedTools) {
145
+ if (allowedTools === undefined) {
146
+ return false;
147
+ }
148
+ if (typeof fnCall.name !== 'string' || fnCall.name.trim() === '') {
149
+ return true;
150
+ }
151
+ const allowed = new Set(allowedTools.map(canonicalizeToolName));
152
+ return !allowed.has(canonicalizeToolName(fnCall.name));
153
+ }
154
+ export function filterHookRestrictedParts(parts, allowedTools) {
155
+ if (allowedTools === undefined) {
156
+ return [...parts];
157
+ }
158
+ return parts.filter((part) => {
159
+ if (part.functionCall !== undefined) {
160
+ setHookRestrictedAllowedToolsOnFunctionCall(part.functionCall, allowedTools);
161
+ return !isHookRestrictedToolCall(part.functionCall, allowedTools);
162
+ }
163
+ if (part.functionResponse !== undefined) {
164
+ const responseAsCall = {
165
+ id: part.functionResponse.id,
166
+ name: part.functionResponse.name ?? '',
167
+ args: {},
168
+ };
169
+ return !isHookRestrictedToolCall(responseAsCall, allowedTools);
170
+ }
171
+ return true;
172
+ });
173
+ }
174
+ export function getHookRestrictedFunctionCallsFromParts(parts, allowedTools) {
175
+ return (getFunctionCallsFromParts(filterHookRestrictedParts(parts, allowedTools)) ??
176
+ []);
177
+ }
178
+ export function filterHookRestrictedFunctionCalls(calls, allowedTools) {
179
+ if (allowedTools === undefined) {
180
+ return [...calls];
181
+ }
182
+ return calls.filter((call) => {
183
+ setHookRestrictedAllowedToolsOnFunctionCall(call, allowedTools);
184
+ return !isHookRestrictedToolCall(call, allowedTools);
185
+ });
186
+ }
187
+ //# sourceMappingURL=hookToolRestrictions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookToolRestrictions.js","sourceRoot":"","sources":["../../../src/core/hookToolRestrictions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ToolCallRequestInfo } from '@vybestack/llxprt-code-core/core/turn.js';
7
+ import type { MessageBus } from '@vybestack/llxprt-code-core/confirmation-bus/message-bus.js';
8
+ import { type Config } from '@vybestack/llxprt-code-core/config/config.js';
9
+ import { type CompletedToolCall } from './coreToolScheduler.js';
10
+ /**
11
+ * Configuration subset required for non-interactive tool execution.
12
+ * Uses the scheduler singleton via getOrCreateScheduler/disposeScheduler.
13
+ */
14
+ export type ToolExecutionConfig = Pick<Config, 'getToolRegistry' | 'getEphemeralSettings' | 'getEphemeralSetting' | 'getExcludeTools' | 'getSessionId' | 'getTelemetryLogPromptsEnabled' | 'getOrCreateScheduler' | 'disposeScheduler'> & Partial<Pick<Config, 'getAllowedTools' | 'getApprovalMode'>>;
15
+ export declare function executeToolCall(config: ToolExecutionConfig, toolCallRequest: ToolCallRequestInfo, abortSignal?: AbortSignal, dependencies?: {
16
+ messageBus?: MessageBus;
17
+ }): Promise<CompletedToolCall>;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DEFAULT_AGENT_ID, } from '@vybestack/llxprt-code-core/core/turn.js';
7
+ import { ToolErrorType } from '@vybestack/llxprt-code-tools';
8
+ import { canonicalizeToolName } from './toolGovernance.js';
9
+ async function createScheduler(config, sessionId, completionResolver, dependencies) {
10
+ return config.getOrCreateScheduler(sessionId, {
11
+ getPreferredEditor: () => undefined,
12
+ onEditorClose: () => { },
13
+ onAllToolCallsComplete: async (completedToolCalls) => {
14
+ completionResolver?.(completedToolCalls);
15
+ },
16
+ }, { interactiveMode: false }, dependencies);
17
+ }
18
+ function isBlockedByHookRestriction(request) {
19
+ const allowedTools = request.hookRestrictedAllowedTools;
20
+ if (allowedTools === undefined) {
21
+ return false;
22
+ }
23
+ const allowed = new Set(allowedTools.map(canonicalizeToolName));
24
+ return !allowed.has(canonicalizeToolName(request.name));
25
+ }
26
+ export async function executeToolCall(config, toolCallRequest, abortSignal, dependencies) {
27
+ const startTime = Date.now();
28
+ if (isBlockedByHookRestriction(toolCallRequest)) {
29
+ return Promise.reject(new Error(`Tool "${toolCallRequest.name}" is disabled by hook restrictions.`));
30
+ }
31
+ const agentId = toolCallRequest.agentId ?? DEFAULT_AGENT_ID;
32
+ toolCallRequest.agentId = agentId;
33
+ const internalAbortController = new AbortController();
34
+ let parentAbortHandler = null;
35
+ if (abortSignal) {
36
+ if (abortSignal.aborted) {
37
+ internalAbortController.abort();
38
+ }
39
+ else {
40
+ parentAbortHandler = () => internalAbortController.abort();
41
+ abortSignal.addEventListener('abort', parentAbortHandler, { once: true });
42
+ }
43
+ }
44
+ let completionResolver = null;
45
+ const completionPromise = new Promise((resolve) => {
46
+ completionResolver = resolve;
47
+ });
48
+ const sessionId = config.getSessionId();
49
+ const scheduler = await createScheduler(config, sessionId, completionResolver, dependencies);
50
+ try {
51
+ const effectiveSignal = internalAbortController.signal;
52
+ await scheduler.schedule([toolCallRequest], effectiveSignal);
53
+ const completedCalls = await completionPromise;
54
+ if (completedCalls.length !== 1) {
55
+ throw new Error('Non-interactive executor expects exactly one tool call');
56
+ }
57
+ const completed = completedCalls[0];
58
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string agentId falls through to default
59
+ if (!completed.response.agentId) {
60
+ completed.response.agentId = agentId;
61
+ }
62
+ return completed;
63
+ }
64
+ catch (e) {
65
+ return createErrorCompletedToolCall(toolCallRequest, e instanceof Error ? e : new Error(String(e)), ToolErrorType.UNHANDLED_EXCEPTION, Date.now() - startTime);
66
+ }
67
+ finally {
68
+ if (abortSignal && parentAbortHandler) {
69
+ abortSignal.removeEventListener('abort', parentAbortHandler);
70
+ }
71
+ if (internalAbortController.signal.aborted) {
72
+ scheduler.cancelAll();
73
+ }
74
+ config.disposeScheduler(sessionId);
75
+ }
76
+ }
77
+ function createErrorCompletedToolCall(request, error, errorType, durationMs) {
78
+ return {
79
+ status: 'error',
80
+ request,
81
+ response: {
82
+ callId: request.callId,
83
+ agentId: request.agentId ?? DEFAULT_AGENT_ID,
84
+ error,
85
+ errorType,
86
+ resultDisplay: error.message,
87
+ responseParts: [
88
+ // Only functionResponse — the functionCall is already recorded in
89
+ // history from the model's assistant message (Issue #244).
90
+ {
91
+ functionResponse: {
92
+ id: request.callId,
93
+ name: request.name,
94
+ response: { error: error.message },
95
+ },
96
+ },
97
+ ],
98
+ },
99
+ durationMs,
100
+ };
101
+ }
102
+ //# sourceMappingURL=nonInteractiveToolExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonInteractiveToolExecutor.js","sourceRoot":"","sources":["../../../src/core/nonInteractiveToolExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Config } from '@vybestack/llxprt-code-core/config/config.js';
7
+ import type { AgentRuntimeContext } from '@vybestack/llxprt-code-core/runtime/AgentRuntimeContext.js';
8
+ import type { SubagentSchedulerFactory } from './subagentScheduler.js';
9
+ import type { ContextState } from '@vybestack/llxprt-code-core/core/subagentTypes.js';
10
+ import { type OutputObject, type PromptConfig, type ToolConfig, type OutputConfig, type SubAgentRuntimeOverrides, type ModelConfig, type RunConfig } from '@vybestack/llxprt-code-core/core/subagentTypes.js';
11
+ /**
12
+ * Represents the scope and execution environment for a subagent.
13
+ * This class orchestrates the subagent's lifecycle, managing its chat interactions,
14
+ * runtime context, and the collection of its outputs.
15
+ *
16
+ * @plan PLAN-20251028-STATELESS6.P08
17
+ * @requirement REQ-STAT6-001.1, REQ-STAT6-001.2, REQ-STAT6-003.1, REQ-STAT6-003.2
18
+ * @pseudocode agent-runtime-context.md line 93 (step 007.1)
19
+ */
20
+ export declare class SubAgentScope {
21
+ readonly name: string;
22
+ readonly runtimeContext: AgentRuntimeContext;
23
+ private readonly modelConfig;
24
+ private readonly runConfig;
25
+ private readonly promptConfig;
26
+ private readonly contentGenerator;
27
+ private readonly toolExecutorContext;
28
+ private readonly environmentContextLoader;
29
+ private readonly config;
30
+ private readonly messageBus?;
31
+ private readonly toolConfig?;
32
+ private readonly outputConfig?;
33
+ output: OutputObject;
34
+ private readonly subagentId;
35
+ private readonly logger;
36
+ private readonly textToolParser;
37
+ private activeAbortController;
38
+ private readonly parentAbortSignal?;
39
+ private parentAbortCleanup?;
40
+ /** Emoji filter instance for subagent output */
41
+ private readonly emojiFilter?;
42
+ /** Optional callback for streaming text messages during execution */
43
+ onMessage?: (message: string) => void;
44
+ private timeoutHandle;
45
+ /** @plan PLAN-20251028-STATELESS6.P08, PLAN-20260303-MESSAGEBUS.P01 */
46
+ private constructor();
47
+ /**
48
+ * Returns the unique agent identifier assigned to this subagent scope.
49
+ */
50
+ getAgentId(): string;
51
+ /**
52
+ * Creates and validates a new SubAgentScope instance.
53
+ *
54
+ * @plan PLAN-20251028-STATELESS6.P08
55
+ * @requirement REQ-STAT6-001.1, REQ-STAT6-003.1, REQ-STAT6-003.2
56
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P05
57
+ * @requirement REQ-D01-001.1
58
+ */
59
+ static create(name: string, foregroundConfig: Config, promptConfig: PromptConfig, modelConfig: ModelConfig, runConfig: RunConfig, toolConfig?: ToolConfig, outputConfig?: OutputConfig, overrides?: SubAgentRuntimeOverrides, parentSignal?: AbortSignal): Promise<SubAgentScope>;
60
+ private bindParentSignal;
61
+ private armTimeout;
62
+ private clearTimeoutHandle;
63
+ private prepareRun;
64
+ private buildInitialMessages;
65
+ /**
66
+ * Executes the subagent in interactive mode by routing tool calls through the
67
+ * shared CoreToolScheduler. Tests may supply a custom schedulerFactory to
68
+ * observe scheduling behaviour without touching the real scheduler.
69
+ */
70
+ private runInteractiveGoalCheckLoop;
71
+ runInteractive(context: ContextState, options?: {
72
+ schedulerFactory?: SubagentSchedulerFactory;
73
+ }): Promise<void>;
74
+ private initScheduler;
75
+ private runInteractiveTurn;
76
+ private partitionInteractiveToolRequests;
77
+ private handleInteractiveToolCalls;
78
+ private cleanupInteractive;
79
+ /**
80
+ * Runs the subagent in a non-interactive mode.
81
+ *
82
+ * @plan PLAN-20251028-STATELESS6.P08
83
+ * @requirement REQ-STAT6-001.1
84
+ */
85
+ runNonInteractive(context: ContextState): Promise<void>;
86
+ private runNonInteractiveTurn;
87
+ private consumeNonInteractiveStream;
88
+ private readNextNonInteractiveEvent;
89
+ private collectNonInteractiveChunk;
90
+ private dispatchNonInteractiveTurnResult;
91
+ private buildExecCtx;
92
+ cancel(reason?: string): void;
93
+ /**
94
+ * Dispose of the subagent scope, cleaning up resources and references.
95
+ * Call this when the subagent is no longer needed to prevent memory leaks.
96
+ *
97
+ * Cleanup performed:
98
+ * - Aborts any active operations
99
+ * - Removes parent abort signal event listeners
100
+ * - Nullifies references to allow garbage collection
101
+ *
102
+ * Safe to call multiple times.
103
+ */
104
+ dispose(): void;
105
+ }