@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,455 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Turn class — extracted from core/turn.ts as part of issue #1592.
8
+ * Protocol types (GeminiEventType, ServerGeminiStreamEvent, etc.) remain in core.
9
+ */
10
+ import { createHash } from 'node:crypto';
11
+ import { getFunctionCallsFromParts, analyzeResponseOutcome, } from '@vybestack/llxprt-code-core/utils/generateContentResponseUtilities.js';
12
+ import { isThoughtPart } from '@vybestack/llxprt-code-core/core/chatSessionTypes.js';
13
+ import { filterHookRestrictedParts, filterHookRestrictedFunctionCalls, getHookRestrictedAllowedTools, getHookRestrictedFunctionCallsFromParts, getHookRestrictedAllowedToolsForFunctionCall, mergeHookRestrictedFunctionCalls, } from './hookToolRestrictions.js';
14
+ import { reportError } from '@vybestack/llxprt-code-core/utils/errorReporting.js';
15
+ import { getErrorMessage, UnauthorizedError, toFriendlyError, } from '@vybestack/llxprt-code-core/utils/errors.js';
16
+ import { normalizeToolName } from '@vybestack/llxprt-code-tools';
17
+ import { InvalidStreamError, StreamEventType, } from './chatSession.js';
18
+ import { DebugLogger } from '@vybestack/llxprt-code-core/debug/index.js';
19
+ import { getCodeAssistServer } from '@vybestack/llxprt-code-core/code_assist/codeAssist.js';
20
+ import { UserTierId } from '@vybestack/llxprt-code-core/code_assist/types.js';
21
+ import { parseThought } from '@vybestack/llxprt-code-core/utils/thoughtUtils.js';
22
+ import { nextStreamEventWithIdleTimeout, resolveStreamIdleTimeoutMs, DEFAULT_STREAM_IDLE_TIMEOUT_MS, } from '@vybestack/llxprt-code-core/utils/streamIdleTimeout.js';
23
+ import { DEFAULT_AGENT_ID, GeminiEventType, } from '@vybestack/llxprt-code-core/core/turn.js';
24
+ /** @deprecated Use DEFAULT_STREAM_IDLE_TIMEOUT_MS from streamIdleTimeout.js instead */
25
+ export const TURN_STREAM_IDLE_TIMEOUT_MS = DEFAULT_STREAM_IDLE_TIMEOUT_MS;
26
+ const TURN_STREAM_IDLE_TIMEOUT_ERROR_MESSAGE = 'Stream idle timeout: no response received within the allowed time.';
27
+ function createSafeJsonReplacer() {
28
+ const seen = new WeakSet();
29
+ return (_key, value) => {
30
+ if (typeof value === 'bigint') {
31
+ return value.toString();
32
+ }
33
+ if (typeof value !== 'object' || value === null) {
34
+ return value;
35
+ }
36
+ if (seen.has(value)) {
37
+ return '[Circular]';
38
+ }
39
+ seen.add(value);
40
+ if (Array.isArray(value)) {
41
+ return value;
42
+ }
43
+ const record = value;
44
+ return Object.keys(record)
45
+ .sort()
46
+ .reduce((sorted, key) => {
47
+ sorted[key] = record[key];
48
+ return sorted;
49
+ }, {});
50
+ };
51
+ }
52
+ function safeJsonStringify(value, space) {
53
+ try {
54
+ return JSON.stringify(value, createSafeJsonReplacer(), space);
55
+ }
56
+ catch (error) {
57
+ return `[Unserializable request: ${getErrorMessage(error)}]`;
58
+ }
59
+ }
60
+ // Re-export types that consumers need from this module
61
+ export { DEFAULT_AGENT_ID, GeminiEventType, CompressionStatus, PerformCompressionResult, } from '@vybestack/llxprt-code-core/core/turn.js';
62
+ // A turn manages the agentic loop turn within the server context.
63
+ export class Turn {
64
+ chat;
65
+ prompt_id;
66
+ agentId;
67
+ providerName;
68
+ pendingToolCalls;
69
+ debugResponses;
70
+ finishReason;
71
+ logger;
72
+ constructor(chat, prompt_id, agentId = DEFAULT_AGENT_ID, providerName = 'backend') {
73
+ this.chat = chat;
74
+ this.prompt_id = prompt_id;
75
+ this.agentId = agentId;
76
+ this.providerName = providerName;
77
+ this.pendingToolCalls = [];
78
+ this.debugResponses = [];
79
+ this.finishReason = undefined;
80
+ this.logger = new DebugLogger('llxprt:core:turn');
81
+ }
82
+ /**
83
+ * Check if citations should be shown for the current user/settings.
84
+ * Based on the upstream implementation from commit 997136ae.
85
+ */
86
+ shouldShowCitations() {
87
+ try {
88
+ const config = this.chat.getConfig();
89
+ const settingsService = config?.getSettingsService();
90
+ if (settingsService) {
91
+ const enabled = settingsService.get('ui.showCitations');
92
+ if (enabled !== undefined) {
93
+ return enabled;
94
+ }
95
+ }
96
+ // Fallback: check user tier for code assist server
97
+ const server = getCodeAssistServer(config);
98
+ return (server && server.userTier !== UserTierId.FREE) ?? false;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Emits a citation event with the given text.
106
+ * This integrates with llxprt's provider abstraction to work across all providers.
107
+ */
108
+ emitCitation(text) {
109
+ if (!this.shouldShowCitations()) {
110
+ return null;
111
+ }
112
+ return {
113
+ type: GeminiEventType.Citation,
114
+ value: text,
115
+ };
116
+ }
117
+ *emitFinishReason(finishReason, allParts, functionCalls, text, usageMetadata, traceId, cumulativeOutcome) {
118
+ const outcome = cumulativeOutcome;
119
+ this.logger.debug(() => `[stream:turn] emitting Finished event`, {
120
+ finishReason,
121
+ traceId,
122
+ partCount: allParts.length,
123
+ toolCallCount: functionCalls.length,
124
+ textLength: text?.length ?? 0,
125
+ hasUsageMetadata: Boolean(usageMetadata),
126
+ outcome,
127
+ });
128
+ this.finishReason = finishReason;
129
+ yield {
130
+ type: GeminiEventType.Finished,
131
+ value: {
132
+ reason: finishReason,
133
+ usageMetadata,
134
+ outcome: {
135
+ hadVisibleOutput: outcome.hasVisibleText,
136
+ hadThinking: outcome.hasThinking,
137
+ hadToolCalls: outcome.hasToolCalls,
138
+ },
139
+ },
140
+ };
141
+ }
142
+ logNoFinishReason(allParts, functionCalls, text, usageMetadata, traceId) {
143
+ this.logger.debug(() => `[stream:turn] chunk had no finishReason`, {
144
+ traceId,
145
+ partCount: allParts.length,
146
+ toolCallCount: functionCalls.length,
147
+ textLength: text?.length ?? 0,
148
+ hasUsageMetadata: Boolean(usageMetadata),
149
+ });
150
+ }
151
+ pushFilteredDebugResponse(resp, allowedParts) {
152
+ this.debugResponses.push(resp.candidates === undefined
153
+ ? resp
154
+ : {
155
+ ...resp,
156
+ candidates: resp.candidates.map((candidate, index) => index === 0
157
+ ? {
158
+ ...candidate,
159
+ content: candidate.content === undefined
160
+ ? undefined
161
+ : { ...candidate.content, parts: allowedParts },
162
+ }
163
+ : candidate),
164
+ });
165
+ }
166
+ *processStreamChunk(resp, traceId, cumulativeOutcome) {
167
+ // Check ALL parts for thinking, not just parts[0]
168
+ // Bug fix: Previously only checked parts[0], missing thoughts in other positions
169
+ // @plan PLAN-20251202-THINKING.P16
170
+ const allParts = resp.candidates?.[0]?.content?.parts ?? [];
171
+ const allowedParts = filterHookRestrictedParts(allParts, getHookRestrictedAllowedTools(resp));
172
+ this.pushFilteredDebugResponse(resp, allowedParts);
173
+ for (const part of allowedParts) {
174
+ if (part.thought === true) {
175
+ const thought = parseThought(part.text ?? '');
176
+ yield {
177
+ type: GeminiEventType.Thought,
178
+ value: thought,
179
+ traceId,
180
+ };
181
+ }
182
+ }
183
+ const chunkOutcome = analyzeResponseOutcome(allowedParts);
184
+ const text = allowedParts
185
+ .filter((part) => !isThoughtPart(part))
186
+ .map((part) => part.text)
187
+ .filter((partText) => typeof partText === 'string')
188
+ .join('');
189
+ if (chunkOutcome.hasVisibleText && text !== '') {
190
+ yield { type: GeminiEventType.Content, value: text, traceId };
191
+ // Emit citation event if conditions are met
192
+ // Based on upstream implementation - emit citation after content
193
+ const citationEvent = this.emitCitation('Response may contain information from external sources. Please verify important details independently.');
194
+ if (citationEvent) {
195
+ yield citationEvent;
196
+ }
197
+ }
198
+ // Handle function calls (requesting tool execution)
199
+ const partFunctionCalls = getFunctionCallsFromParts(allowedParts) ?? [];
200
+ const topLevelFunctionCalls = filterHookRestrictedFunctionCalls(resp.functionCalls ?? [], getHookRestrictedAllowedTools(resp));
201
+ const functionCalls = mergeHookRestrictedFunctionCalls(partFunctionCalls, topLevelFunctionCalls);
202
+ for (const [functionCallIndex, fnCall] of functionCalls.entries()) {
203
+ const event = this.handlePendingFunctionCall(fnCall, functionCallIndex);
204
+ if (event) {
205
+ yield event;
206
+ }
207
+ }
208
+ // Check if response was truncated or stopped for various reasons
209
+ const finishReason = resp.candidates?.[0]?.finishReason;
210
+ // This is the key change: Only yield 'Finished' if there is a finishReason.
211
+ // Pass only allowed function calls so logging/outcome reflect executable calls.
212
+ if (finishReason != null) {
213
+ yield* this.emitFinishReason(finishReason, allowedParts, functionCalls, text, resp.usageMetadata, traceId, cumulativeOutcome);
214
+ }
215
+ else {
216
+ this.logNoFinishReason(allowedParts, functionCalls, text, resp.usageMetadata, traceId);
217
+ }
218
+ }
219
+ createEmptyResponseOutcome() {
220
+ return {
221
+ hasVisibleText: false,
222
+ hasThinking: false,
223
+ hasToolCalls: false,
224
+ isActionable: false,
225
+ };
226
+ }
227
+ async *consumeStreamEvents(streamIterator, timeoutController, signal, effectiveTimeoutMs, idleFlag) {
228
+ let cumulativeOutcome = this.createEmptyResponseOutcome();
229
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, sonarjs/too-many-break-or-continue-in-loop -- Turn events cross provider/runtime boundaries despite declared types.
230
+ while (true) {
231
+ // Use watchdog if timeout > 0, otherwise call iterator.next() directly
232
+ let result;
233
+ if (effectiveTimeoutMs > 0) {
234
+ result = await nextStreamEventWithIdleTimeout({
235
+ iterator: streamIterator,
236
+ timeoutMs: effectiveTimeoutMs,
237
+ signal: timeoutController.signal,
238
+ onTimeout: () => {
239
+ if (signal.aborted) {
240
+ return;
241
+ }
242
+ idleFlag.timedOut = true;
243
+ timeoutController.abort();
244
+ },
245
+ createTimeoutError: () => new Error(TURN_STREAM_IDLE_TIMEOUT_ERROR_MESSAGE),
246
+ });
247
+ }
248
+ else {
249
+ // Watchdog disabled: call iterator.next() directly
250
+ result = await streamIterator.next();
251
+ }
252
+ if (result.done === true) {
253
+ break;
254
+ }
255
+ const streamEvent = result.value;
256
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Turn events cross provider/runtime boundaries despite declared types.
257
+ if (signal?.aborted) {
258
+ yield { type: GeminiEventType.UserCancelled };
259
+ return;
260
+ }
261
+ // Handle the RETRY event
262
+ if (streamEvent.type === StreamEventType.RETRY) {
263
+ cumulativeOutcome = this.createEmptyResponseOutcome();
264
+ yield { type: GeminiEventType.Retry };
265
+ continue;
266
+ }
267
+ // Handle AGENT_EXECUTION_STOPPED event
268
+ if (streamEvent.type === StreamEventType.AGENT_EXECUTION_STOPPED) {
269
+ yield {
270
+ type: GeminiEventType.AgentExecutionStopped,
271
+ reason: streamEvent.reason,
272
+ systemMessage: streamEvent.systemMessage,
273
+ contextCleared: streamEvent.contextCleared,
274
+ };
275
+ return;
276
+ }
277
+ // Handle AGENT_EXECUTION_BLOCKED event
278
+ if (streamEvent.type === StreamEventType.AGENT_EXECUTION_BLOCKED) {
279
+ yield {
280
+ type: GeminiEventType.AgentExecutionBlocked,
281
+ reason: streamEvent.reason,
282
+ systemMessage: streamEvent.systemMessage,
283
+ contextCleared: streamEvent.contextCleared,
284
+ };
285
+ continue;
286
+ }
287
+ // Narrow to CHUNK — the only other variant in the discriminated union
288
+ const resp = streamEvent.value;
289
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Turn events cross provider/runtime boundaries despite declared types.
290
+ if (resp === null || resp === undefined)
291
+ continue;
292
+ cumulativeOutcome = this.mergeResponseOutcome(cumulativeOutcome, resp);
293
+ const traceId = resp.responseId ?? undefined;
294
+ yield* this.processStreamChunk(resp, traceId, cumulativeOutcome);
295
+ }
296
+ }
297
+ mergeResponseOutcome(cumulativeOutcome, resp) {
298
+ const parts = resp.candidates?.[0]?.content?.parts ?? [];
299
+ const allowedParts = filterHookRestrictedParts(parts, getHookRestrictedAllowedTools(resp));
300
+ const allowedPartCalls = getHookRestrictedFunctionCallsFromParts(allowedParts, getHookRestrictedAllowedTools(resp));
301
+ const allowedMergedCalls = mergeHookRestrictedFunctionCalls(allowedPartCalls, filterHookRestrictedFunctionCalls(resp.functionCalls ?? [], getHookRestrictedAllowedTools(resp)));
302
+ const allowedTopLevelCallParts = allowedMergedCalls
303
+ .slice(allowedPartCalls.length)
304
+ .map((functionCall) => ({ functionCall }));
305
+ const chunkOutcome = analyzeResponseOutcome([
306
+ ...allowedParts,
307
+ ...allowedTopLevelCallParts,
308
+ ]);
309
+ return {
310
+ hasVisibleText: cumulativeOutcome.hasVisibleText || chunkOutcome.hasVisibleText,
311
+ hasThinking: cumulativeOutcome.hasThinking || chunkOutcome.hasThinking,
312
+ hasToolCalls: cumulativeOutcome.hasToolCalls || chunkOutcome.hasToolCalls,
313
+ isActionable: cumulativeOutcome.isActionable || chunkOutcome.isActionable,
314
+ };
315
+ }
316
+ extractErrorStatus(error) {
317
+ // eslint-disable-next-line sonarjs/expression-complexity -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
318
+ return typeof error === 'object' &&
319
+ error !== null &&
320
+ 'status' in error &&
321
+ typeof error.status === 'number'
322
+ ? error.status
323
+ : undefined;
324
+ }
325
+ async *handleRunError(e, req, signal, idleFlag) {
326
+ if (signal.aborted) {
327
+ yield { type: GeminiEventType.UserCancelled };
328
+ return;
329
+ }
330
+ if (idleFlag.timedOut) {
331
+ yield {
332
+ type: GeminiEventType.StreamIdleTimeout,
333
+ value: {
334
+ error: {
335
+ message: TURN_STREAM_IDLE_TIMEOUT_ERROR_MESSAGE,
336
+ status: undefined,
337
+ },
338
+ },
339
+ };
340
+ return;
341
+ }
342
+ if (e instanceof InvalidStreamError) {
343
+ yield { type: GeminiEventType.InvalidStream };
344
+ return;
345
+ }
346
+ const error = toFriendlyError(e);
347
+ if (error instanceof UnauthorizedError) {
348
+ throw error;
349
+ }
350
+ const contextForReport = [...this.chat.getHistory(/*curated*/ true), req];
351
+ await reportError(error, `Error when talking to ${this.providerName} API`, contextForReport, 'Turn.run-sendMessageStream');
352
+ const status = this.extractErrorStatus(error);
353
+ const structuredError = {
354
+ message: getErrorMessage(error),
355
+ status,
356
+ };
357
+ yield { type: GeminiEventType.Error, value: { error: structuredError } };
358
+ }
359
+ // The run method yields simpler events suitable for server logic
360
+ async *run(req, signal) {
361
+ const idleFlag = { timedOut: false };
362
+ this.logger.debug('Turn.run called', {
363
+ req: safeJsonStringify(req, 2),
364
+ typeofReq: typeof req,
365
+ isArray: Array.isArray(req),
366
+ });
367
+ try {
368
+ if (signal.aborted) {
369
+ yield { type: GeminiEventType.UserCancelled };
370
+ return;
371
+ }
372
+ const timeoutController = new AbortController();
373
+ const timeoutSignal = timeoutController.signal;
374
+ const onParentAbort = () => timeoutController.abort();
375
+ signal.addEventListener('abort', onParentAbort, { once: true });
376
+ let streamIterator;
377
+ const effectiveTimeoutMs = resolveStreamIdleTimeoutMs(this.chat.getConfig());
378
+ try {
379
+ const responseStream = await this.chat.sendMessageStream({
380
+ message: req,
381
+ config: {
382
+ abortSignal: timeoutSignal,
383
+ },
384
+ }, this.prompt_id);
385
+ streamIterator = responseStream[Symbol.asyncIterator]();
386
+ yield* this.consumeStreamEvents(streamIterator, timeoutController, signal, effectiveTimeoutMs, idleFlag);
387
+ }
388
+ finally {
389
+ streamIterator?.return?.().catch(() => { });
390
+ timeoutController.abort();
391
+ signal.removeEventListener('abort', onParentAbort);
392
+ }
393
+ }
394
+ catch (e) {
395
+ yield* this.handleRunError(e, req, signal, idleFlag);
396
+ }
397
+ }
398
+ handlePendingFunctionCall(fnCall, functionCallIndex) {
399
+ const callId = fnCall.id ??
400
+ this.createSyntheticFunctionCallId(fnCall, functionCallIndex);
401
+ // REAL FIX: Turn.ts also gets fragmented data - handle properly
402
+ let name = fnCall.name;
403
+ if (!name || name.trim() === '') {
404
+ // Turn may get incomplete data from fragmented FunctionCalls
405
+ // Keep undefined_tool_name for proper error detection
406
+ name = 'undefined_tool_name';
407
+ }
408
+ else {
409
+ // Apply shared normalization for defined names
410
+ const normalized = normalizeToolName(name);
411
+ if (normalized) {
412
+ name = normalized;
413
+ }
414
+ else {
415
+ name = 'undefined_tool_name';
416
+ }
417
+ }
418
+ const args = fnCall.args ?? {};
419
+ const allowedTools = getHookRestrictedAllowedToolsForFunctionCall(fnCall);
420
+ const toolCallRequest = {
421
+ callId,
422
+ name: name || 'undefined_tool_name',
423
+ args,
424
+ isClientInitiated: false,
425
+ prompt_id: this.prompt_id,
426
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Turn events cross provider/runtime boundaries despite declared types.
427
+ agentId: this.agentId ?? DEFAULT_AGENT_ID,
428
+ ...(allowedTools !== undefined
429
+ ? { hookRestrictedAllowedTools: allowedTools }
430
+ : {}),
431
+ };
432
+ this.pendingToolCalls.push(toolCallRequest);
433
+ // Yield a request for the tool call, not the pending/confirming status
434
+ return { type: GeminiEventType.ToolCallRequest, value: toolCallRequest };
435
+ }
436
+ createSyntheticFunctionCallId(fnCall, functionCallIndex) {
437
+ const payload = safeJsonStringify({
438
+ promptId: this.prompt_id,
439
+ agentId: this.agentId,
440
+ functionCallIndex,
441
+ name: fnCall.name ?? '',
442
+ args: fnCall.args ?? {},
443
+ });
444
+ const digest = createHash('sha256')
445
+ .update(payload)
446
+ .digest('hex')
447
+ .slice(0, 16);
448
+ const name = normalizeToolName(fnCall.name ?? '') ?? 'undefined_tool_name';
449
+ return `${name}-${functionCallIndex}-${digest}`;
450
+ }
451
+ getDebugResponses() {
452
+ return this.debugResponses;
453
+ }
454
+ }
455
+ //# sourceMappingURL=turn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../src/core/turn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Pure logging and configuration utilities for turn execution.
8
+ * Extracted from chatSession.ts Phase 05.
9
+ */
10
+ import type { Content, GenerateContentConfig, GenerateContentResponseUsageMetadata } from '@google/genai';
11
+ import type { AgentRuntimeContext } from '@vybestack/llxprt-code-core/runtime/AgentRuntimeContext.js';
12
+ import type { AgentRuntimeState } from '@vybestack/llxprt-code-core/runtime/AgentRuntimeState.js';
13
+ /**
14
+ * Extract request text from contents for logging
15
+ */
16
+ export declare function getRequestTextFromContents(contents: Content[]): string;
17
+ /**
18
+ * Extract direct Gemini SDK overrides from generation config
19
+ */
20
+ export declare function extractDirectGeminiOverrides(config?: GenerateContentConfig): {
21
+ serverTools?: unknown;
22
+ toolConfig?: GenerateContentConfig['toolConfig'];
23
+ } | undefined;
24
+ /**
25
+ * Log API request to telemetry
26
+ */
27
+ export declare function logApiRequest(runtimeContext: AgentRuntimeContext, runtimeState: AgentRuntimeState, contents: Content[], model: string, promptId: string): void;
28
+ /**
29
+ * Log API response to telemetry
30
+ */
31
+ export declare function logApiResponse(runtimeContext: AgentRuntimeContext, runtimeState: AgentRuntimeState, model: string, promptId: string, durationMs: number, usageMetadata?: GenerateContentResponseUsageMetadata, responseText?: string): void;
32
+ /**
33
+ * Log API error to telemetry
34
+ */
35
+ export declare function logApiError(runtimeContext: AgentRuntimeContext, runtimeState: AgentRuntimeState, model: string, promptId: string, durationMs: number, error: unknown): void;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Extract request text from contents for logging
8
+ */
9
+ export function getRequestTextFromContents(contents) {
10
+ return JSON.stringify(contents);
11
+ }
12
+ /**
13
+ * Extract direct Gemini SDK overrides from generation config
14
+ */
15
+ export function extractDirectGeminiOverrides(config) {
16
+ if (!config || typeof config !== 'object') {
17
+ return undefined;
18
+ }
19
+ const overrides = {};
20
+ const rawConfig = config;
21
+ if (Object.prototype.hasOwnProperty.call(rawConfig, 'serverTools')) {
22
+ overrides.serverTools = rawConfig.serverTools;
23
+ }
24
+ if (config.toolConfig) {
25
+ overrides.toolConfig = config.toolConfig;
26
+ }
27
+ if (typeof overrides.serverTools === 'undefined' &&
28
+ typeof overrides.toolConfig === 'undefined') {
29
+ return undefined;
30
+ }
31
+ return overrides;
32
+ }
33
+ /**
34
+ * Log API request to telemetry
35
+ */
36
+ export function logApiRequest(runtimeContext, runtimeState, contents, model, promptId) {
37
+ const requestText = getRequestTextFromContents(contents);
38
+ runtimeContext.telemetry.logApiRequest({
39
+ model,
40
+ promptId,
41
+ requestText,
42
+ sessionId: runtimeState.sessionId,
43
+ runtimeId: runtimeState.runtimeId,
44
+ provider: runtimeState.provider,
45
+ timestamp: Date.now(),
46
+ });
47
+ }
48
+ /**
49
+ * Log API response to telemetry
50
+ */
51
+ export function logApiResponse(runtimeContext, runtimeState, model, promptId, durationMs, usageMetadata, responseText) {
52
+ runtimeContext.telemetry.logApiResponse({
53
+ model,
54
+ promptId,
55
+ durationMs,
56
+ sessionId: runtimeState.sessionId,
57
+ runtimeId: runtimeState.runtimeId,
58
+ provider: runtimeState.provider,
59
+ usageMetadata,
60
+ responseText,
61
+ });
62
+ }
63
+ /**
64
+ * Log API error to telemetry
65
+ */
66
+ export function logApiError(runtimeContext, runtimeState, model, promptId, durationMs, error) {
67
+ const errorMessage = error instanceof Error ? error.message : String(error);
68
+ const errorType = error instanceof Error ? error.name : 'unknown';
69
+ runtimeContext.telemetry.logApiError({
70
+ model,
71
+ promptId,
72
+ durationMs,
73
+ error: errorMessage,
74
+ errorType,
75
+ sessionId: runtimeState.sessionId,
76
+ runtimeId: runtimeState.runtimeId,
77
+ provider: runtimeState.provider,
78
+ });
79
+ }
80
+ //# sourceMappingURL=turnLogging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnLogging.js","sourceRoot":"","sources":["../../../src/core/turnLogging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAmB;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAA8B;IAMzE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAGX,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,MAAiC,CAAC;IACpD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QACnE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,IACE,OAAO,SAAS,CAAC,WAAW,KAAK,WAAW;QAC5C,OAAO,SAAS,CAAC,UAAU,KAAK,WAAW,EAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,cAAmC,EACnC,YAA+B,EAC/B,QAAmB,EACnB,KAAa,EACb,QAAgB;IAEhB,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACzD,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC;QACrC,KAAK;QACL,QAAQ;QACR,WAAW;QACX,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,cAAmC,EACnC,YAA+B,EAC/B,KAAa,EACb,QAAgB,EAChB,UAAkB,EAClB,aAAoD,EACpD,YAAqB;IAErB,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC;QACtC,KAAK;QACL,QAAQ;QACR,UAAU;QACV,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,aAAa;QACb,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,cAAmC,EACnC,YAA+B,EAC/B,KAAa,EACb,QAAgB,EAChB,UAAkB,EAClB,KAAc;IAEd,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC;QACnC,KAAK;QACL,QAAQ;QACR,UAAU;QACV,KAAK,EAAE,YAAY;QACnB,SAAS;QACT,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @plan:PLAN-20260610-ISSUE1592.P02
3
+ * @requirement:REQ-PKG-001
4
+ */
5
+ import type { TaskToolRegistration } from '@vybestack/llxprt-code-core/config/toolRegistryFactory.js';
6
+ export { AgentClient, PostTurnAction } from './core/client.js';
7
+ export { ChatSession, StreamEventType, InvalidStreamError, type StreamEvent, } from './core/chatSession.js';
8
+ export * from './core/ChatSessionFactory.js';
9
+ export { CoreToolScheduler } from './core/coreToolScheduler.js';
10
+ export { executeToolCall } from './core/nonInteractiveToolExecutor.js';
11
+ export { SubagentOrchestrator } from './core/subagentOrchestrator.js';
12
+ export { TaskTool } from './tools/task.js';
13
+ export type { TaskToolDependencies, TaskToolParams } from './tools/task.js';
14
+ export * from './core/turn.js';
15
+ export * from './core/subagent.js';
16
+ export * from './core/subagentExecution.js';
17
+ export * from './core/subagentRuntimeSetup.js';
18
+ export * from './core/subagentToolProcessing.js';
19
+ export * from './core/subagentScheduler.js';
20
+ export { buildToolGovernance, isToolBlocked, type ToolGovernance, type ToolGovernanceConfig, } from './core/toolGovernance.js';
21
+ export * from './compression/index.js';
22
+ export * from './agents/types.js';
23
+ export * from './agents/invocation.js';
24
+ export * from './agents/executor.js';
25
+ /**
26
+ * @plan PLAN-20260610-ISSUE1592.P03
27
+ * @requirement REQ-INV-003
28
+ *
29
+ * Creates the core-owned TaskToolRegistration descriptor without requiring core
30
+ * to import the concrete agents-owned TaskTool class.
31
+ */
32
+ export declare function createTaskToolRegistration(): TaskToolRegistration;