@vybestack/llxprt-code-core 0.5.0-nightly.251125.6be1c4fa2 → 0.5.0-nightly.251125.8cac021f2

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 (69) hide show
  1. package/dist/src/config/config.d.ts +3 -14
  2. package/dist/src/config/config.js +2 -36
  3. package/dist/src/config/config.js.map +1 -1
  4. package/dist/src/core/client.d.ts +0 -2
  5. package/dist/src/core/client.js +0 -5
  6. package/dist/src/core/client.js.map +1 -1
  7. package/dist/src/core/geminiChat.d.ts +1 -8
  8. package/dist/src/core/geminiChat.js +14 -14
  9. package/dist/src/core/geminiChat.js.map +1 -1
  10. package/dist/src/ide/ide-client.js +3 -3
  11. package/dist/src/index.d.ts +0 -2
  12. package/dist/src/index.js +0 -7
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/runtime/createAgentRuntimeContext.js +7 -8
  15. package/dist/src/runtime/createAgentRuntimeContext.js.map +1 -1
  16. package/dist/src/services/shellExecutionService.d.ts +3 -46
  17. package/dist/src/services/shellExecutionService.js +49 -189
  18. package/dist/src/services/shellExecutionService.js.map +1 -1
  19. package/dist/src/telemetry/constants.d.ts +0 -8
  20. package/dist/src/telemetry/constants.js +0 -8
  21. package/dist/src/telemetry/constants.js.map +1 -1
  22. package/dist/src/telemetry/loggers.d.ts +1 -9
  23. package/dist/src/telemetry/loggers.js +2 -154
  24. package/dist/src/telemetry/loggers.js.map +1 -1
  25. package/dist/src/telemetry/metrics.d.ts +0 -5
  26. package/dist/src/telemetry/metrics.js +0 -4
  27. package/dist/src/telemetry/metrics.js.map +1 -1
  28. package/dist/src/telemetry/types.d.ts +0 -61
  29. package/dist/src/telemetry/types.js +0 -92
  30. package/dist/src/telemetry/types.js.map +1 -1
  31. package/dist/src/test-utils/config.js +0 -14
  32. package/dist/src/test-utils/config.js.map +1 -1
  33. package/dist/src/tools/mcp-client.d.ts +2 -3
  34. package/dist/src/tools/mcp-client.js +30 -28
  35. package/dist/src/tools/mcp-client.js.map +1 -1
  36. package/dist/src/tools/shell.js +3 -8
  37. package/dist/src/tools/shell.js.map +1 -1
  38. package/dist/src/tools/tools.d.ts +1 -2
  39. package/dist/src/tools/tools.js.map +1 -1
  40. package/dist/src/utils/memoryDiscovery.d.ts +0 -1
  41. package/dist/src/utils/memoryDiscovery.js +1 -2
  42. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  43. package/dist/src/utils/retry.js +11 -11
  44. package/dist/src/utils/retry.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/src/agents/codebase-investigator.d.ts +0 -46
  47. package/dist/src/agents/codebase-investigator.js +0 -136
  48. package/dist/src/agents/codebase-investigator.js.map +0 -1
  49. package/dist/src/agents/executor.d.ts +0 -92
  50. package/dist/src/agents/executor.js +0 -624
  51. package/dist/src/agents/executor.js.map +0 -1
  52. package/dist/src/agents/invocation.d.ts +0 -45
  53. package/dist/src/agents/invocation.js +0 -106
  54. package/dist/src/agents/invocation.js.map +0 -1
  55. package/dist/src/agents/registry.d.ts +0 -36
  56. package/dist/src/agents/registry.js +0 -61
  57. package/dist/src/agents/registry.js.map +0 -1
  58. package/dist/src/agents/types.d.ts +0 -145
  59. package/dist/src/agents/types.js +0 -17
  60. package/dist/src/agents/types.js.map +0 -1
  61. package/dist/src/agents/utils.d.ts +0 -15
  62. package/dist/src/agents/utils.js +0 -27
  63. package/dist/src/agents/utils.js.map +0 -1
  64. package/dist/src/storage/sessionTypes.d.ts +0 -27
  65. package/dist/src/storage/sessionTypes.js +0 -10
  66. package/dist/src/storage/sessionTypes.js.map +0 -1
  67. package/dist/src/utils/terminalSerializer.d.ts +0 -28
  68. package/dist/src/utils/terminalSerializer.js +0 -418
  69. package/dist/src/utils/terminalSerializer.js.map +0 -1
@@ -1,624 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { reportError } from '../utils/errorReporting.js';
7
- import { GeminiChat, StreamEventType } from '../core/geminiChat.js';
8
- import { Type } from '@google/genai';
9
- import { loadAgentRuntime } from '../runtime/AgentRuntimeLoader.js';
10
- import { createProviderRuntimeContext } from '../runtime/providerRuntimeContext.js';
11
- import { createAgentRuntimeStateFromConfig } from '../runtime/runtimeStateFactory.js';
12
- import { executeToolCall } from '../core/nonInteractiveToolExecutor.js';
13
- import { ToolRegistry } from '../tools/tool-registry.js';
14
- import { getDirectoryContextString } from '../utils/environmentContext.js';
15
- import { GlobTool } from '../tools/glob.js';
16
- import { GrepTool } from '../tools/grep.js';
17
- import { RipGrepTool } from '../tools/ripGrep.js';
18
- import { LSTool } from '../tools/ls.js';
19
- import { MemoryTool } from '../tools/memoryTool.js';
20
- import { ReadFileTool } from '../tools/read-file.js';
21
- import { ReadManyFilesTool } from '../tools/read-many-files.js';
22
- import { WebSearchTool } from '../tools/web-search.js';
23
- import { AgentTerminateMode } from './types.js';
24
- import { templateString } from './utils.js';
25
- import { parseThought } from '../utils/thoughtUtils.js';
26
- import { zodToJsonSchema } from 'zod-to-json-schema';
27
- const TASK_COMPLETE_TOOL_NAME = 'complete_task';
28
- /**
29
- * Executes an agent loop based on an {@link AgentDefinition}.
30
- *
31
- * This executor runs the agent in a loop, calling tools until it calls the
32
- * mandatory `complete_task` tool to signal completion.
33
- */
34
- export class AgentExecutor {
35
- definition;
36
- agentId;
37
- toolRegistry;
38
- runtimeContext;
39
- onActivity;
40
- /**
41
- * Creates and validates a new `AgentExecutor` instance.
42
- *
43
- * This method ensures that all tools specified in the agent's definition are
44
- * safe for non-interactive use before creating the executor.
45
- *
46
- * @param definition The definition object for the agent.
47
- * @param runtimeContext The global runtime configuration.
48
- * @param onActivity An optional callback to receive activity events.
49
- * @returns A promise that resolves to a new `AgentExecutor` instance.
50
- */
51
- static async create(definition, runtimeContext, onActivity) {
52
- // Create an isolated tool registry for this agent instance.
53
- const agentToolRegistry = new ToolRegistry(runtimeContext);
54
- const parentToolRegistry = await runtimeContext.getToolRegistry();
55
- if (definition.toolConfig) {
56
- for (const toolRef of definition.toolConfig.tools) {
57
- if (typeof toolRef === 'string') {
58
- // If the tool is referenced by name, retrieve it from the parent
59
- // registry and register it with the agent's isolated registry.
60
- const toolFromParent = parentToolRegistry.getTool(toolRef);
61
- if (toolFromParent) {
62
- agentToolRegistry.registerTool(toolFromParent);
63
- }
64
- }
65
- else if (typeof toolRef === 'object' &&
66
- 'name' in toolRef &&
67
- 'build' in toolRef) {
68
- agentToolRegistry.registerTool(toolRef);
69
- }
70
- // Note: Raw `FunctionDeclaration` objects in the config don't need to be
71
- // registered; their schemas are passed directly to the model later.
72
- }
73
- // Validate that all registered tools are safe for non-interactive
74
- // execution.
75
- await AgentExecutor.validateTools(agentToolRegistry, definition.name);
76
- }
77
- return new AgentExecutor(definition, runtimeContext, agentToolRegistry, onActivity);
78
- }
79
- /**
80
- * Constructs a new AgentExecutor instance.
81
- *
82
- * @private This constructor is private. Use the static `create` method to
83
- * instantiate the class.
84
- */
85
- constructor(definition, runtimeContext, toolRegistry, onActivity) {
86
- this.definition = definition;
87
- this.runtimeContext = runtimeContext;
88
- this.toolRegistry = toolRegistry;
89
- this.onActivity = onActivity;
90
- const randomIdPart = Math.random().toString(36).slice(2, 8);
91
- this.agentId = `${this.definition.name}-${randomIdPart}`;
92
- }
93
- /**
94
- * Runs the agent.
95
- *
96
- * @param inputs The validated input parameters for this invocation.
97
- * @param signal An `AbortSignal` for cancellation.
98
- * @returns A promise that resolves to the agent's final output.
99
- */
100
- async run(inputs, signal) {
101
- const startTime = Date.now();
102
- let turnCounter = 0;
103
- try {
104
- const chat = await this.createChatObject(inputs);
105
- const tools = this.prepareToolsList();
106
- let terminateReason = AgentTerminateMode.ERROR;
107
- let finalResult = null;
108
- const query = this.definition.promptConfig.query
109
- ? templateString(this.definition.promptConfig.query, inputs)
110
- : 'Get Started!';
111
- let currentMessage = { role: 'user', parts: [{ text: query }] };
112
- while (true) {
113
- // Check for termination conditions like max turns or timeout.
114
- const reason = this.checkTermination(startTime, turnCounter);
115
- if (reason) {
116
- terminateReason = reason;
117
- break;
118
- }
119
- if (signal.aborted) {
120
- terminateReason = AgentTerminateMode.ABORTED;
121
- break;
122
- }
123
- // Call model
124
- const promptId = `${this.runtimeContext.getSessionId()}#${this.agentId}#${turnCounter++}`;
125
- const { functionCalls } = await this.callModel(chat, currentMessage, tools, signal, promptId);
126
- if (signal.aborted) {
127
- terminateReason = AgentTerminateMode.ABORTED;
128
- break;
129
- }
130
- // If the model stops calling tools without calling complete_task, it's an error.
131
- if (functionCalls.length === 0) {
132
- terminateReason = AgentTerminateMode.ERROR;
133
- finalResult = `Agent stopped calling tools but did not call '${TASK_COMPLETE_TOOL_NAME}' to finalize the session.`;
134
- this.emitActivity('ERROR', {
135
- error: finalResult,
136
- context: 'protocol_violation',
137
- });
138
- break;
139
- }
140
- const { nextMessage, submittedOutput, taskCompleted } = await this.processFunctionCalls(functionCalls, signal, promptId);
141
- if (taskCompleted) {
142
- finalResult = submittedOutput ?? 'Task completed successfully.';
143
- terminateReason = AgentTerminateMode.GOAL;
144
- break;
145
- }
146
- currentMessage = nextMessage;
147
- }
148
- if (terminateReason === AgentTerminateMode.GOAL) {
149
- return {
150
- result: finalResult || 'Task completed.',
151
- terminate_reason: terminateReason,
152
- };
153
- }
154
- return {
155
- result: finalResult || 'Agent execution was terminated before completion.',
156
- terminate_reason: terminateReason,
157
- };
158
- }
159
- catch (error) {
160
- this.emitActivity('ERROR', { error: String(error) });
161
- throw error; // Re-throw the error for the parent context to handle.
162
- }
163
- }
164
- /**
165
- * Calls the generative model with the current context and tools.
166
- *
167
- * @returns The model's response, including any tool calls or text.
168
- */
169
- async callModel(chat, message, tools, signal, promptId) {
170
- const messageParams = {
171
- message: message.parts || [],
172
- config: {
173
- abortSignal: signal,
174
- tools: tools.length > 0 ? [{ functionDeclarations: tools }] : undefined,
175
- },
176
- };
177
- const responseStream = await chat.sendMessageStream(messageParams, promptId);
178
- const functionCalls = [];
179
- let textResponse = '';
180
- for await (const resp of responseStream) {
181
- if (signal.aborted)
182
- break;
183
- if (resp.type === StreamEventType.CHUNK) {
184
- const chunk = resp.value;
185
- const parts = chunk.candidates?.[0]?.content?.parts;
186
- // Extract and emit any subject "thought" content from the model.
187
- const { subject } = parseThought(parts?.find((p) => p.thought)?.text || '');
188
- if (subject) {
189
- this.emitActivity('THOUGHT_CHUNK', { text: subject });
190
- }
191
- // Collect any function calls requested by the model.
192
- if (chunk.functionCalls) {
193
- functionCalls.push(...chunk.functionCalls);
194
- }
195
- // Handle text response (non-thought text)
196
- const text = parts
197
- ?.filter((p) => !p.thought && p.text)
198
- .map((p) => p.text)
199
- .join('') || '';
200
- if (text) {
201
- textResponse += text;
202
- }
203
- }
204
- }
205
- return { functionCalls, textResponse };
206
- }
207
- /** Initializes a `GeminiChat` instance for the agent run. */
208
- async createChatObject(inputs) {
209
- const { promptConfig, modelConfig } = this.definition;
210
- if (!promptConfig.systemPrompt && !promptConfig.initialMessages) {
211
- throw new Error('PromptConfig must define either `systemPrompt` or `initialMessages`.');
212
- }
213
- const startHistory = this.applyTemplateToInitialMessages(promptConfig.initialMessages ?? [], inputs);
214
- // Build system instruction from the templated prompt string.
215
- const systemInstruction = promptConfig.systemPrompt
216
- ? await this.buildSystemPrompt(inputs)
217
- : undefined;
218
- try {
219
- const generationConfig = {
220
- temperature: modelConfig.temp,
221
- topP: modelConfig.top_p,
222
- thinkingConfig: {
223
- includeThoughts: true,
224
- thinkingBudget: modelConfig.thinkingBudget ?? -1,
225
- },
226
- };
227
- if (systemInstruction) {
228
- generationConfig.systemInstruction = systemInstruction;
229
- }
230
- // Create runtime context similar to how GeminiClient does it
231
- const rawCompressionThreshold = this.runtimeContext.getEphemeralSetting('compression-threshold');
232
- const compressionThreshold = typeof rawCompressionThreshold === 'number'
233
- ? rawCompressionThreshold
234
- : 0.8;
235
- const rawContextLimit = this.runtimeContext.getEphemeralSetting('context-limit');
236
- const contextLimit = typeof rawContextLimit === 'number' &&
237
- Number.isFinite(rawContextLimit) &&
238
- rawContextLimit > 0
239
- ? rawContextLimit
240
- : undefined;
241
- const rawPreserveThreshold = this.runtimeContext.getEphemeralSetting('compression-preserve-threshold');
242
- const preserveThreshold = typeof rawPreserveThreshold === 'number' ? rawPreserveThreshold : 0.2;
243
- const settings = {
244
- compressionThreshold,
245
- contextLimit,
246
- preserveThreshold,
247
- telemetry: {
248
- enabled: true,
249
- target: null,
250
- },
251
- };
252
- // Create runtime state from config
253
- const runtimeState = createAgentRuntimeStateFromConfig(this.runtimeContext);
254
- const providerRuntime = createProviderRuntimeContext({
255
- settingsService: this.runtimeContext.getSettingsService(),
256
- config: this.runtimeContext,
257
- runtimeId: runtimeState.runtimeId,
258
- metadata: { source: 'AgentExecutor.createChatObject' },
259
- });
260
- const runtimeBundle = await loadAgentRuntime({
261
- profile: {
262
- config: this.runtimeContext,
263
- state: runtimeState,
264
- settings,
265
- providerRuntime,
266
- contentGeneratorConfig: this.runtimeContext.getContentGeneratorConfig(),
267
- toolRegistry: this.toolRegistry,
268
- providerManager: this.runtimeContext.getProviderManager?.(),
269
- },
270
- overrides: {
271
- contentGenerator: (() => {
272
- try {
273
- return this.runtimeContext
274
- .getGeminiClient?.()
275
- ?.getContentGenerator();
276
- }
277
- catch {
278
- return undefined;
279
- }
280
- })(),
281
- },
282
- });
283
- return new GeminiChat(runtimeBundle.runtimeContext, runtimeBundle.contentGenerator, generationConfig, startHistory);
284
- }
285
- catch (error) {
286
- await reportError(error, `Error initializing Gemini chat for agent ${this.definition.name}.`, startHistory, 'startChat');
287
- // Re-throw as a more specific error after reporting.
288
- throw new Error(`Failed to create chat object: ${error}`);
289
- }
290
- }
291
- /**
292
- * Executes function calls requested by the model and returns the results.
293
- *
294
- * @returns A new `Content` object for history, any submitted output, and completion status.
295
- */
296
- async processFunctionCalls(functionCalls, signal, promptId) {
297
- const allowedToolNames = new Set(this.toolRegistry.getAllToolNames());
298
- // Always allow the completion tool
299
- allowedToolNames.add(TASK_COMPLETE_TOOL_NAME);
300
- let submittedOutput = null;
301
- let taskCompleted = false;
302
- // We'll collect promises for the tool executions
303
- const toolExecutionPromises = [];
304
- // And we'll need a place to store the synchronous results (like complete_task or blocked calls)
305
- const syncResponseParts = [];
306
- for (const [index, functionCall] of functionCalls.entries()) {
307
- const callId = functionCall.id ?? `${promptId}-${index}`;
308
- const args = (functionCall.args ?? {});
309
- this.emitActivity('TOOL_CALL_START', {
310
- name: functionCall.name,
311
- args,
312
- });
313
- if (functionCall.name === TASK_COMPLETE_TOOL_NAME) {
314
- if (taskCompleted) {
315
- // We already have a completion from this turn. Ignore subsequent ones.
316
- const error = 'Task already marked complete in this turn. Ignoring duplicate call.';
317
- syncResponseParts.push({
318
- functionResponse: {
319
- name: TASK_COMPLETE_TOOL_NAME,
320
- response: { error },
321
- id: callId,
322
- },
323
- });
324
- this.emitActivity('ERROR', {
325
- context: 'tool_call',
326
- name: functionCall.name,
327
- error,
328
- });
329
- continue;
330
- }
331
- const { outputConfig } = this.definition;
332
- taskCompleted = true; // Signal completion regardless of output presence
333
- if (outputConfig) {
334
- const outputName = outputConfig.outputName;
335
- if (args[outputName] !== undefined) {
336
- const outputValue = args[outputName];
337
- const validationResult = outputConfig.schema.safeParse(outputValue);
338
- if (!validationResult.success) {
339
- taskCompleted = false; // Validation failed, revoke completion
340
- const error = `Output validation failed: ${JSON.stringify(validationResult.error.flatten())}`;
341
- syncResponseParts.push({
342
- functionResponse: {
343
- name: TASK_COMPLETE_TOOL_NAME,
344
- response: { error },
345
- id: callId,
346
- },
347
- });
348
- this.emitActivity('ERROR', {
349
- context: 'tool_call',
350
- name: functionCall.name,
351
- error,
352
- });
353
- continue;
354
- }
355
- const validatedOutput = validationResult.data;
356
- if (this.definition.processOutput) {
357
- submittedOutput = this.definition.processOutput(validatedOutput);
358
- }
359
- else {
360
- submittedOutput =
361
- typeof outputValue === 'string'
362
- ? outputValue
363
- : JSON.stringify(outputValue, null, 2);
364
- }
365
- syncResponseParts.push({
366
- functionResponse: {
367
- name: TASK_COMPLETE_TOOL_NAME,
368
- response: { result: 'Output submitted and task completed.' },
369
- id: callId,
370
- },
371
- });
372
- this.emitActivity('TOOL_CALL_END', {
373
- name: functionCall.name,
374
- output: 'Output submitted and task completed.',
375
- });
376
- }
377
- else {
378
- // Failed to provide required output.
379
- taskCompleted = false; // Revoke completion status
380
- const error = `Missing required argument '${outputName}' for completion.`;
381
- syncResponseParts.push({
382
- functionResponse: {
383
- name: TASK_COMPLETE_TOOL_NAME,
384
- response: { error },
385
- id: callId,
386
- },
387
- });
388
- this.emitActivity('ERROR', {
389
- context: 'tool_call',
390
- name: functionCall.name,
391
- error,
392
- });
393
- }
394
- }
395
- else {
396
- // No output expected. Just signal completion.
397
- submittedOutput = 'Task completed successfully.';
398
- syncResponseParts.push({
399
- functionResponse: {
400
- name: TASK_COMPLETE_TOOL_NAME,
401
- response: { status: 'Task marked complete.' },
402
- id: callId,
403
- },
404
- });
405
- this.emitActivity('TOOL_CALL_END', {
406
- name: functionCall.name,
407
- output: 'Task marked complete.',
408
- });
409
- }
410
- continue;
411
- }
412
- // Handle standard tools
413
- if (!allowedToolNames.has(functionCall.name)) {
414
- const error = `Unauthorized tool call: '${functionCall.name}' is not available to this agent.`;
415
- console.warn(`[AgentExecutor] Blocked call: ${error}`);
416
- syncResponseParts.push({
417
- functionResponse: {
418
- name: functionCall.name,
419
- id: callId,
420
- response: { error },
421
- },
422
- });
423
- this.emitActivity('ERROR', {
424
- context: 'tool_call_unauthorized',
425
- name: functionCall.name,
426
- callId,
427
- error,
428
- });
429
- continue;
430
- }
431
- const requestInfo = {
432
- callId,
433
- name: functionCall.name,
434
- args,
435
- isClientInitiated: true,
436
- prompt_id: promptId,
437
- };
438
- // Create a promise for the tool execution
439
- const executionPromise = (async () => {
440
- const toolResponse = await executeToolCall(this.runtimeContext, requestInfo, signal);
441
- if (toolResponse.error) {
442
- this.emitActivity('ERROR', {
443
- context: 'tool_call',
444
- name: functionCall.name,
445
- error: toolResponse.error.message,
446
- });
447
- }
448
- else {
449
- this.emitActivity('TOOL_CALL_END', {
450
- name: functionCall.name,
451
- output: toolResponse.resultDisplay,
452
- });
453
- }
454
- return toolResponse.responseParts;
455
- })();
456
- toolExecutionPromises.push(executionPromise);
457
- }
458
- // Wait for all tool executions to complete
459
- const asyncResults = await Promise.all(toolExecutionPromises);
460
- // Combine all response parts
461
- const toolResponseParts = [...syncResponseParts];
462
- for (const result of asyncResults) {
463
- if (result) {
464
- toolResponseParts.push(...result);
465
- }
466
- }
467
- // If all authorized tool calls failed (and task isn't complete), provide a generic error.
468
- if (functionCalls.length > 0 &&
469
- toolResponseParts.length === 0 &&
470
- !taskCompleted) {
471
- toolResponseParts.push({
472
- text: 'All tool calls failed or were unauthorized. Please analyze the errors and try an alternative approach.',
473
- });
474
- }
475
- return {
476
- nextMessage: { role: 'user', parts: toolResponseParts },
477
- submittedOutput,
478
- taskCompleted,
479
- };
480
- }
481
- /**
482
- * Prepares the list of tool function declarations to be sent to the model.
483
- */
484
- prepareToolsList() {
485
- const toolsList = [];
486
- const { toolConfig, outputConfig } = this.definition;
487
- if (toolConfig) {
488
- const toolNamesToLoad = [];
489
- for (const toolRef of toolConfig.tools) {
490
- if (typeof toolRef === 'string') {
491
- toolNamesToLoad.push(toolRef);
492
- }
493
- else if (typeof toolRef === 'object' && 'schema' in toolRef) {
494
- // Tool instance with an explicit schema property.
495
- toolsList.push(toolRef.schema);
496
- }
497
- else {
498
- // Raw `FunctionDeclaration` object.
499
- toolsList.push(toolRef);
500
- }
501
- }
502
- // Add schemas from tools that were registered by name.
503
- toolsList.push(...this.toolRegistry.getFunctionDeclarationsFiltered(toolNamesToLoad));
504
- }
505
- // Always inject complete_task.
506
- // Configure its schema based on whether output is expected.
507
- const completeTool = {
508
- name: TASK_COMPLETE_TOOL_NAME,
509
- description: outputConfig
510
- ? 'Call this tool to submit your final answer and complete the task. This is the ONLY way to finish.'
511
- : 'Call this tool to signal that you have completed your task. This is the ONLY way to finish.',
512
- parameters: {
513
- type: Type.OBJECT,
514
- properties: {},
515
- required: [],
516
- },
517
- };
518
- if (outputConfig) {
519
- const jsonSchema = zodToJsonSchema(outputConfig.schema);
520
- const { $schema: _$schema, definitions: _definitions, ...schema } = jsonSchema;
521
- completeTool.parameters.properties[outputConfig.outputName] =
522
- schema;
523
- completeTool.parameters.required.push(outputConfig.outputName);
524
- }
525
- toolsList.push(completeTool);
526
- return toolsList;
527
- }
528
- /** Builds the system prompt from the agent definition and inputs. */
529
- async buildSystemPrompt(inputs) {
530
- const { promptConfig } = this.definition;
531
- if (!promptConfig.systemPrompt) {
532
- return '';
533
- }
534
- // Inject user inputs into the prompt template.
535
- let finalPrompt = templateString(promptConfig.systemPrompt, inputs);
536
- // Append environment context (CWD and folder structure).
537
- const dirContext = await getDirectoryContextString(this.runtimeContext);
538
- finalPrompt += `\n\n# Environment Context\n${dirContext}`;
539
- // Append standard rules for non-interactive execution.
540
- finalPrompt += `
541
- Important Rules:
542
- * You are running in a non-interactive mode. You CANNOT ask the user for input or clarification.
543
- * Work systematically using available tools to complete your task.
544
- * Always use absolute paths for file operations. Construct them using the provided "Environment Context".`;
545
- finalPrompt += `
546
- * When you have completed your task, you MUST call the \`${TASK_COMPLETE_TOOL_NAME}\` tool.
547
- * Do not call any other tools in the same turn as \`${TASK_COMPLETE_TOOL_NAME}\`.
548
- * This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
549
- return finalPrompt;
550
- }
551
- /**
552
- * Applies template strings to initial messages.
553
- *
554
- * @param initialMessages The initial messages from the prompt config.
555
- * @param inputs The validated input parameters for this invocation.
556
- * @returns A new array of `Content` with templated strings.
557
- */
558
- applyTemplateToInitialMessages(initialMessages, inputs) {
559
- return initialMessages.map((content) => {
560
- const newParts = (content.parts ?? []).map((part) => {
561
- if ('text' in part && part.text !== undefined) {
562
- return { text: templateString(part.text, inputs) };
563
- }
564
- return part;
565
- });
566
- return { ...content, parts: newParts };
567
- });
568
- }
569
- /**
570
- * Validates that all tools in a registry are safe for non-interactive use.
571
- *
572
- * @throws An error if a tool is not on the allow-list for non-interactive execution.
573
- */
574
- static async validateTools(toolRegistry, agentName) {
575
- // Tools that are non-interactive. This is temporary until we have tool
576
- // confirmations for subagents.
577
- const allowlist = new Set([
578
- LSTool.Name,
579
- ReadFileTool.Name,
580
- GrepTool.Name,
581
- RipGrepTool.Name,
582
- GlobTool.Name,
583
- ReadManyFilesTool.Name,
584
- MemoryTool.Name,
585
- WebSearchTool.Name,
586
- ]);
587
- for (const tool of toolRegistry.getAllTools()) {
588
- if (!allowlist.has(tool.name)) {
589
- throw new Error(`Tool "${tool.name}" is not on the allow-list for non-interactive ` +
590
- `execution in agent "${agentName}". Only tools that do not require user ` +
591
- `confirmation can be used in subagents.`);
592
- }
593
- }
594
- }
595
- /**
596
- * Checks if the agent should terminate due to exceeding configured limits.
597
- *
598
- * @returns The reason for termination, or `null` if execution can continue.
599
- */
600
- checkTermination(startTime, turnCounter) {
601
- const { runConfig } = this.definition;
602
- if (runConfig.max_turns && turnCounter >= runConfig.max_turns) {
603
- return AgentTerminateMode.MAX_TURNS;
604
- }
605
- const elapsedMinutes = (Date.now() - startTime) / (1000 * 60);
606
- if (elapsedMinutes >= runConfig.max_time_minutes) {
607
- return AgentTerminateMode.TIMEOUT;
608
- }
609
- return null;
610
- }
611
- /** Emits an activity event to the configured callback. */
612
- emitActivity(type, data) {
613
- if (this.onActivity) {
614
- const event = {
615
- isSubagentActivityEvent: true,
616
- agentName: this.definition.name,
617
- type,
618
- data,
619
- };
620
- this.onActivity(event);
621
- }
622
- }
623
- }
624
- //# sourceMappingURL=executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/agents/executor.ts"],"names":[],"mappings":"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"}