@google/gemini-cli-a2a-server 0.10.0-nightly.20251014.49b66733

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 (62) hide show
  1. package/README.md +5 -0
  2. package/dist/.last_build +0 -0
  3. package/dist/a2a-server.mjs +354316 -0
  4. package/dist/index.d.ts +6 -0
  5. package/dist/index.js +7 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/agent/executor.d.ts +40 -0
  8. package/dist/src/agent/executor.js +406 -0
  9. package/dist/src/agent/executor.js.map +1 -0
  10. package/dist/src/agent/task.d.ts +54 -0
  11. package/dist/src/agent/task.js +652 -0
  12. package/dist/src/agent/task.js.map +1 -0
  13. package/dist/src/agent/task.test.d.ts +6 -0
  14. package/dist/src/agent/task.test.js +44 -0
  15. package/dist/src/agent/task.test.js.map +1 -0
  16. package/dist/src/config/config.d.ts +14 -0
  17. package/dist/src/config/config.js +150 -0
  18. package/dist/src/config/config.js.map +1 -0
  19. package/dist/src/config/extension.d.ts +11 -0
  20. package/dist/src/config/extension.js +104 -0
  21. package/dist/src/config/extension.js.map +1 -0
  22. package/dist/src/config/settings.d.ts +38 -0
  23. package/dist/src/config/settings.js +102 -0
  24. package/dist/src/config/settings.js.map +1 -0
  25. package/dist/src/http/app.d.ts +8 -0
  26. package/dist/src/http/app.js +170 -0
  27. package/dist/src/http/app.js.map +1 -0
  28. package/dist/src/http/app.test.d.ts +6 -0
  29. package/dist/src/http/app.test.js +520 -0
  30. package/dist/src/http/app.test.js.map +1 -0
  31. package/dist/src/http/endpoints.test.d.ts +6 -0
  32. package/dist/src/http/endpoints.test.js +138 -0
  33. package/dist/src/http/endpoints.test.js.map +1 -0
  34. package/dist/src/http/requestStorage.d.ts +10 -0
  35. package/dist/src/http/requestStorage.js +8 -0
  36. package/dist/src/http/requestStorage.js.map +1 -0
  37. package/dist/src/http/server.d.ts +7 -0
  38. package/dist/src/http/server.js +26 -0
  39. package/dist/src/http/server.js.map +1 -0
  40. package/dist/src/index.d.ts +8 -0
  41. package/dist/src/index.js +9 -0
  42. package/dist/src/index.js.map +1 -0
  43. package/dist/src/persistence/gcs.d.ts +24 -0
  44. package/dist/src/persistence/gcs.js +238 -0
  45. package/dist/src/persistence/gcs.js.map +1 -0
  46. package/dist/src/persistence/gcs.test.d.ts +6 -0
  47. package/dist/src/persistence/gcs.test.js +265 -0
  48. package/dist/src/persistence/gcs.test.js.map +1 -0
  49. package/dist/src/types.d.ts +91 -0
  50. package/dist/src/types.js +44 -0
  51. package/dist/src/types.js.map +1 -0
  52. package/dist/src/utils/executor_utils.d.ts +7 -0
  53. package/dist/src/utils/executor_utils.js +41 -0
  54. package/dist/src/utils/executor_utils.js.map +1 -0
  55. package/dist/src/utils/logger.d.ts +8 -0
  56. package/dist/src/utils/logger.js +23 -0
  57. package/dist/src/utils/logger.js.map +1 -0
  58. package/dist/src/utils/testing_utils.d.ts +33 -0
  59. package/dist/src/utils/testing_utils.js +91 -0
  60. package/dist/src/utils/testing_utils.js.map +1 -0
  61. package/dist/tsconfig.tsbuildinfo +1 -0
  62. package/package.json +50 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from './src/index.js';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from './src/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Task as SDKTask } from '@a2a-js/sdk';
7
+ import type { TaskStore, AgentExecutor, RequestContext, ExecutionEventBus } from '@a2a-js/sdk/server';
8
+ import type { AgentSettings } from '../types.js';
9
+ import { Task } from './task.js';
10
+ /**
11
+ * Provides a wrapper for Task. Passes data from Task to SDKTask.
12
+ * The idea is to use this class inside CoderAgentExecutor to replace Task.
13
+ */
14
+ declare class TaskWrapper {
15
+ task: Task;
16
+ agentSettings: AgentSettings;
17
+ constructor(task: Task, agentSettings: AgentSettings);
18
+ get id(): string;
19
+ toSDKTask(): SDKTask;
20
+ }
21
+ /**
22
+ * CoderAgentExecutor implements the agent's core logic for code generation.
23
+ */
24
+ export declare class CoderAgentExecutor implements AgentExecutor {
25
+ private taskStore?;
26
+ private tasks;
27
+ private executingTasks;
28
+ constructor(taskStore?: TaskStore | undefined);
29
+ private getConfig;
30
+ /**
31
+ * Reconstructs TaskWrapper from SDKTask.
32
+ */
33
+ reconstruct(sdkTask: SDKTask, eventBus?: ExecutionEventBus): Promise<TaskWrapper>;
34
+ createTask(taskId: string, contextId: string, agentSettingsInput?: AgentSettings, eventBus?: ExecutionEventBus): Promise<TaskWrapper>;
35
+ getTask(taskId: string): TaskWrapper | undefined;
36
+ getAllTasks(): TaskWrapper[];
37
+ cancelTask: (taskId: string, eventBus: ExecutionEventBus) => Promise<void>;
38
+ execute(requestContext: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
39
+ }
40
+ export {};
@@ -0,0 +1,406 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GeminiEventType } from '@google/gemini-cli-core';
7
+ import { v4 as uuidv4 } from 'uuid';
8
+ import { logger } from '../utils/logger.js';
9
+ import { CoderAgentEvent, getPersistedState, setPersistedState, } from '../types.js';
10
+ import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
11
+ import { loadSettings } from '../config/settings.js';
12
+ import { loadExtensions } from '../config/extension.js';
13
+ import { Task } from './task.js';
14
+ import { requestStorage } from '../http/requestStorage.js';
15
+ import { pushTaskStateFailed } from '../utils/executor_utils.js';
16
+ /**
17
+ * Provides a wrapper for Task. Passes data from Task to SDKTask.
18
+ * The idea is to use this class inside CoderAgentExecutor to replace Task.
19
+ */
20
+ class TaskWrapper {
21
+ task;
22
+ agentSettings;
23
+ constructor(task, agentSettings) {
24
+ this.task = task;
25
+ this.agentSettings = agentSettings;
26
+ }
27
+ get id() {
28
+ return this.task.id;
29
+ }
30
+ toSDKTask() {
31
+ const persistedState = {
32
+ _agentSettings: this.agentSettings,
33
+ _taskState: this.task.taskState,
34
+ };
35
+ const sdkTask = {
36
+ id: this.task.id,
37
+ contextId: this.task.contextId,
38
+ kind: 'task',
39
+ status: {
40
+ state: this.task.taskState,
41
+ timestamp: new Date().toISOString(),
42
+ },
43
+ metadata: setPersistedState({}, persistedState),
44
+ history: [],
45
+ artifacts: [],
46
+ };
47
+ sdkTask.metadata['_contextId'] = this.task.contextId;
48
+ return sdkTask;
49
+ }
50
+ }
51
+ /**
52
+ * CoderAgentExecutor implements the agent's core logic for code generation.
53
+ */
54
+ export class CoderAgentExecutor {
55
+ taskStore;
56
+ tasks = new Map();
57
+ // Track tasks with an active execution loop.
58
+ executingTasks = new Set();
59
+ constructor(taskStore) {
60
+ this.taskStore = taskStore;
61
+ }
62
+ async getConfig(agentSettings, taskId) {
63
+ const workspaceRoot = setTargetDir(agentSettings);
64
+ loadEnvironment(); // Will override any global env with workspace envs
65
+ const settings = loadSettings(workspaceRoot);
66
+ const extensions = loadExtensions(workspaceRoot);
67
+ return await loadConfig(settings, extensions, taskId);
68
+ }
69
+ /**
70
+ * Reconstructs TaskWrapper from SDKTask.
71
+ */
72
+ async reconstruct(sdkTask, eventBus) {
73
+ const metadata = sdkTask.metadata || {};
74
+ const persistedState = getPersistedState(metadata);
75
+ if (!persistedState) {
76
+ throw new Error(`Cannot reconstruct task ${sdkTask.id}: missing persisted state in metadata.`);
77
+ }
78
+ const agentSettings = persistedState._agentSettings;
79
+ const config = await this.getConfig(agentSettings, sdkTask.id);
80
+ const contextId = metadata['_contextId'] || sdkTask.contextId;
81
+ const runtimeTask = await Task.create(sdkTask.id, contextId, config, eventBus);
82
+ runtimeTask.taskState = persistedState._taskState;
83
+ await runtimeTask.geminiClient.initialize();
84
+ const wrapper = new TaskWrapper(runtimeTask, agentSettings);
85
+ this.tasks.set(sdkTask.id, wrapper);
86
+ logger.info(`Task ${sdkTask.id} reconstructed from store.`);
87
+ return wrapper;
88
+ }
89
+ async createTask(taskId, contextId, agentSettingsInput, eventBus) {
90
+ const agentSettings = agentSettingsInput || {};
91
+ const config = await this.getConfig(agentSettings, taskId);
92
+ const runtimeTask = await Task.create(taskId, contextId, config, eventBus);
93
+ await runtimeTask.geminiClient.initialize();
94
+ const wrapper = new TaskWrapper(runtimeTask, agentSettings);
95
+ this.tasks.set(taskId, wrapper);
96
+ logger.info(`New task ${taskId} created.`);
97
+ return wrapper;
98
+ }
99
+ getTask(taskId) {
100
+ return this.tasks.get(taskId);
101
+ }
102
+ getAllTasks() {
103
+ return Array.from(this.tasks.values());
104
+ }
105
+ cancelTask = async (taskId, eventBus) => {
106
+ logger.info(`[CoderAgentExecutor] Received cancel request for task ${taskId}`);
107
+ const wrapper = this.tasks.get(taskId);
108
+ if (!wrapper) {
109
+ logger.warn(`[CoderAgentExecutor] Task ${taskId} not found for cancellation.`);
110
+ eventBus.publish({
111
+ kind: 'status-update',
112
+ taskId,
113
+ contextId: uuidv4(),
114
+ status: {
115
+ state: 'failed',
116
+ message: {
117
+ kind: 'message',
118
+ role: 'agent',
119
+ parts: [{ kind: 'text', text: `Task ${taskId} not found.` }],
120
+ messageId: uuidv4(),
121
+ taskId,
122
+ },
123
+ },
124
+ final: true,
125
+ });
126
+ return;
127
+ }
128
+ const { task } = wrapper;
129
+ if (task.taskState === 'canceled' || task.taskState === 'failed') {
130
+ logger.info(`[CoderAgentExecutor] Task ${taskId} is already in a final state: ${task.taskState}. No action needed for cancellation.`);
131
+ eventBus.publish({
132
+ kind: 'status-update',
133
+ taskId,
134
+ contextId: task.contextId,
135
+ status: {
136
+ state: task.taskState,
137
+ message: {
138
+ kind: 'message',
139
+ role: 'agent',
140
+ parts: [
141
+ {
142
+ kind: 'text',
143
+ text: `Task ${taskId} is already ${task.taskState}.`,
144
+ },
145
+ ],
146
+ messageId: uuidv4(),
147
+ taskId,
148
+ },
149
+ },
150
+ final: true,
151
+ });
152
+ return;
153
+ }
154
+ try {
155
+ logger.info(`[CoderAgentExecutor] Initiating cancellation for task ${taskId}.`);
156
+ task.cancelPendingTools('Task canceled by user request.');
157
+ const stateChange = {
158
+ kind: CoderAgentEvent.StateChangeEvent,
159
+ };
160
+ task.setTaskStateAndPublishUpdate('canceled', stateChange, 'Task canceled by user request.', undefined, true);
161
+ logger.info(`[CoderAgentExecutor] Task ${taskId} cancellation processed. Saving state.`);
162
+ await this.taskStore?.save(wrapper.toSDKTask());
163
+ logger.info(`[CoderAgentExecutor] Task ${taskId} state CANCELED saved.`);
164
+ }
165
+ catch (error) {
166
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
167
+ logger.error(`[CoderAgentExecutor] Error during task cancellation for ${taskId}: ${errorMessage}`, error);
168
+ eventBus.publish({
169
+ kind: 'status-update',
170
+ taskId,
171
+ contextId: task.contextId,
172
+ status: {
173
+ state: 'failed',
174
+ message: {
175
+ kind: 'message',
176
+ role: 'agent',
177
+ parts: [
178
+ {
179
+ kind: 'text',
180
+ text: `Failed to process cancellation for task ${taskId}: ${errorMessage}`,
181
+ },
182
+ ],
183
+ messageId: uuidv4(),
184
+ taskId,
185
+ },
186
+ },
187
+ final: true,
188
+ });
189
+ }
190
+ };
191
+ async execute(requestContext, eventBus) {
192
+ const userMessage = requestContext.userMessage;
193
+ const sdkTask = requestContext.task;
194
+ const taskId = sdkTask?.id || userMessage.taskId || uuidv4();
195
+ const contextId = userMessage.contextId ||
196
+ sdkTask?.contextId ||
197
+ sdkTask?.metadata?.['_contextId'] ||
198
+ uuidv4();
199
+ logger.info(`[CoderAgentExecutor] Executing for taskId: ${taskId}, contextId: ${contextId}`);
200
+ logger.info(`[CoderAgentExecutor] userMessage: ${JSON.stringify(userMessage)}`);
201
+ eventBus.on('event', (event) => logger.info('[EventBus event]: ', event));
202
+ const store = requestStorage.getStore();
203
+ if (!store) {
204
+ logger.error('[CoderAgentExecutor] Could not get request from async local storage. Cancellation on socket close will not be handled for this request.');
205
+ }
206
+ const abortController = new AbortController();
207
+ const abortSignal = abortController.signal;
208
+ if (store) {
209
+ // Grab the raw socket from the request object
210
+ const socket = store.req.socket;
211
+ const onClientEnd = () => {
212
+ logger.info(`[CoderAgentExecutor] Client socket closed for task ${taskId}. Cancelling execution.`);
213
+ if (!abortController.signal.aborted) {
214
+ abortController.abort();
215
+ }
216
+ // Clean up the listener to prevent memory leaks
217
+ socket.removeListener('close', onClientEnd);
218
+ };
219
+ // Listen on the socket's 'end' event (remote closed the connection)
220
+ socket.on('end', onClientEnd);
221
+ // It's also good practice to remove the listener if the task completes successfully
222
+ abortSignal.addEventListener('abort', () => {
223
+ socket.removeListener('end', onClientEnd);
224
+ });
225
+ logger.info(`[CoderAgentExecutor] Socket close handler set up for task ${taskId}.`);
226
+ }
227
+ let wrapper = this.tasks.get(taskId);
228
+ if (wrapper) {
229
+ wrapper.task.eventBus = eventBus;
230
+ logger.info(`[CoderAgentExecutor] Task ${taskId} found in memory cache.`);
231
+ }
232
+ else if (sdkTask) {
233
+ logger.info(`[CoderAgentExecutor] Task ${taskId} found in TaskStore. Reconstructing...`);
234
+ try {
235
+ wrapper = await this.reconstruct(sdkTask, eventBus);
236
+ }
237
+ catch (e) {
238
+ logger.error(`[CoderAgentExecutor] Failed to hydrate task ${taskId}:`, e);
239
+ const stateChange = {
240
+ kind: CoderAgentEvent.StateChangeEvent,
241
+ };
242
+ eventBus.publish({
243
+ kind: 'status-update',
244
+ taskId,
245
+ contextId: sdkTask.contextId,
246
+ status: {
247
+ state: 'failed',
248
+ message: {
249
+ kind: 'message',
250
+ role: 'agent',
251
+ parts: [
252
+ {
253
+ kind: 'text',
254
+ text: 'Internal error: Task state lost or corrupted.',
255
+ },
256
+ ],
257
+ messageId: uuidv4(),
258
+ taskId,
259
+ contextId: sdkTask.contextId,
260
+ },
261
+ },
262
+ final: true,
263
+ metadata: { coderAgent: stateChange },
264
+ });
265
+ return;
266
+ }
267
+ }
268
+ else {
269
+ logger.info(`[CoderAgentExecutor] Creating new task ${taskId}.`);
270
+ const agentSettings = userMessage.metadata?.['coderAgent'];
271
+ try {
272
+ wrapper = await this.createTask(taskId, contextId, agentSettings, eventBus);
273
+ }
274
+ catch (error) {
275
+ logger.error(`[CoderAgentExecutor] Error creating task ${taskId}:`, error);
276
+ pushTaskStateFailed(error, eventBus, taskId, contextId);
277
+ return;
278
+ }
279
+ const newTaskSDK = wrapper.toSDKTask();
280
+ eventBus.publish({
281
+ ...newTaskSDK,
282
+ kind: 'task',
283
+ status: { state: 'submitted', timestamp: new Date().toISOString() },
284
+ history: [userMessage],
285
+ });
286
+ try {
287
+ await this.taskStore?.save(newTaskSDK);
288
+ logger.info(`[CoderAgentExecutor] New task ${taskId} saved to store.`);
289
+ }
290
+ catch (saveError) {
291
+ logger.error(`[CoderAgentExecutor] Failed to save new task ${taskId} to store:`, saveError);
292
+ }
293
+ }
294
+ if (!wrapper) {
295
+ logger.error(`[CoderAgentExecutor] Task ${taskId} is unexpectedly undefined after load/create.`);
296
+ return;
297
+ }
298
+ const currentTask = wrapper.task;
299
+ if (['canceled', 'failed', 'completed'].includes(currentTask.taskState)) {
300
+ logger.warn(`[CoderAgentExecutor] Attempted to execute task ${taskId} which is already in state ${currentTask.taskState}. Ignoring.`);
301
+ return;
302
+ }
303
+ if (this.executingTasks.has(taskId)) {
304
+ logger.info(`[CoderAgentExecutor] Task ${taskId} has a pending execution. Processing message and yielding.`);
305
+ currentTask.eventBus = eventBus;
306
+ for await (const _ of currentTask.acceptUserMessage(requestContext, abortController.signal)) {
307
+ logger.info(`[CoderAgentExecutor] Processing user message ${userMessage.messageId} in secondary execution loop for task ${taskId}.`);
308
+ }
309
+ // End this execution-- the original/source will be resumed.
310
+ return;
311
+ }
312
+ logger.info(`[CoderAgentExecutor] Starting main execution for message ${userMessage.messageId} for task ${taskId}.`);
313
+ this.executingTasks.add(taskId);
314
+ try {
315
+ let agentTurnActive = true;
316
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Processing user turn.`);
317
+ let agentEvents = currentTask.acceptUserMessage(requestContext, abortSignal);
318
+ while (agentTurnActive) {
319
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Processing agent turn (LLM stream).`);
320
+ const toolCallRequests = [];
321
+ for await (const event of agentEvents) {
322
+ if (abortSignal.aborted) {
323
+ logger.warn(`[CoderAgentExecutor] Task ${taskId}: Abort signal received during agent event processing.`);
324
+ throw new Error('Execution aborted');
325
+ }
326
+ if (event.type === GeminiEventType.ToolCallRequest) {
327
+ toolCallRequests.push(event.value);
328
+ continue;
329
+ }
330
+ await currentTask.acceptAgentMessage(event);
331
+ }
332
+ if (abortSignal.aborted)
333
+ throw new Error('Execution aborted');
334
+ if (toolCallRequests.length > 0) {
335
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Found ${toolCallRequests.length} tool call requests. Scheduling as a batch.`);
336
+ await currentTask.scheduleToolCalls(toolCallRequests, abortSignal);
337
+ }
338
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Waiting for pending tools if any.`);
339
+ await currentTask.waitForPendingTools();
340
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: All pending tools completed or none were pending.`);
341
+ if (abortSignal.aborted)
342
+ throw new Error('Execution aborted');
343
+ const completedTools = currentTask.getAndClearCompletedTools();
344
+ if (completedTools.length > 0) {
345
+ // If all completed tool calls were canceled, manually add them to history and set state to input-required, final:true
346
+ if (completedTools.every((tool) => tool.status === 'cancelled')) {
347
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: All tool calls were cancelled. Updating history and ending agent turn.`);
348
+ currentTask.addToolResponsesToHistory(completedTools);
349
+ agentTurnActive = false;
350
+ const stateChange = {
351
+ kind: CoderAgentEvent.StateChangeEvent,
352
+ };
353
+ currentTask.setTaskStateAndPublishUpdate('input-required', stateChange, undefined, undefined, true);
354
+ }
355
+ else {
356
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Found ${completedTools.length} completed tool calls. Sending results back to LLM.`);
357
+ agentEvents = currentTask.sendCompletedToolsToLlm(completedTools, abortSignal);
358
+ // Continue the loop to process the LLM response to the tool results.
359
+ }
360
+ }
361
+ else {
362
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: No more tool calls to process. Ending agent turn.`);
363
+ agentTurnActive = false;
364
+ }
365
+ }
366
+ logger.info(`[CoderAgentExecutor] Task ${taskId}: Agent turn finished, setting to input-required.`);
367
+ const stateChange = {
368
+ kind: CoderAgentEvent.StateChangeEvent,
369
+ };
370
+ currentTask.setTaskStateAndPublishUpdate('input-required', stateChange, undefined, undefined, true);
371
+ }
372
+ catch (error) {
373
+ if (abortSignal.aborted) {
374
+ logger.warn(`[CoderAgentExecutor] Task ${taskId} execution aborted.`);
375
+ currentTask.cancelPendingTools('Execution aborted');
376
+ if (currentTask.taskState !== 'canceled' &&
377
+ currentTask.taskState !== 'failed') {
378
+ currentTask.setTaskStateAndPublishUpdate('input-required', { kind: CoderAgentEvent.StateChangeEvent }, 'Execution aborted by client.', undefined, true);
379
+ }
380
+ }
381
+ else {
382
+ const errorMessage = error instanceof Error ? error.message : 'Agent execution error';
383
+ logger.error(`[CoderAgentExecutor] Error executing agent for task ${taskId}:`, error);
384
+ currentTask.cancelPendingTools(errorMessage);
385
+ if (currentTask.taskState !== 'failed') {
386
+ const stateChange = {
387
+ kind: CoderAgentEvent.StateChangeEvent,
388
+ };
389
+ currentTask.setTaskStateAndPublishUpdate('failed', stateChange, errorMessage, undefined, true);
390
+ }
391
+ }
392
+ }
393
+ finally {
394
+ this.executingTasks.delete(taskId);
395
+ logger.info(`[CoderAgentExecutor] Saving final state for task ${taskId}.`);
396
+ try {
397
+ await this.taskStore?.save(wrapper.toSDKTask());
398
+ logger.info(`[CoderAgentExecutor] Task ${taskId} state saved.`);
399
+ }
400
+ catch (saveError) {
401
+ logger.error(`[CoderAgentExecutor] Failed to save task ${taskId} state in finally block:`, saveError);
402
+ }
403
+ }
404
+ }
405
+ }
406
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/agent/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CoreToolScheduler, type GeminiClient, type CompletedToolCall, type ToolCallRequestInfo, type ServerGeminiStreamEvent, type ToolCallConfirmationDetails, type Config } from '@google/gemini-cli-core';
7
+ import type { RequestContext } from '@a2a-js/sdk/server';
8
+ import { type ExecutionEventBus } from '@a2a-js/sdk/server';
9
+ import type { TaskState, Part } from '@a2a-js/sdk';
10
+ import type { CoderAgentMessage, TaskMetadata, ThoughtSummary } from '../types.js';
11
+ export declare class Task {
12
+ id: string;
13
+ contextId: string;
14
+ scheduler: CoreToolScheduler;
15
+ config: Config;
16
+ geminiClient: GeminiClient;
17
+ pendingToolConfirmationDetails: Map<string, ToolCallConfirmationDetails>;
18
+ taskState: TaskState;
19
+ eventBus?: ExecutionEventBus;
20
+ completedToolCalls: CompletedToolCall[];
21
+ skipFinalTrueAfterInlineEdit: boolean;
22
+ private pendingToolCalls;
23
+ private toolCompletionPromise?;
24
+ private toolCompletionNotifier?;
25
+ private constructor();
26
+ static create(id: string, contextId: string, config: Config, eventBus?: ExecutionEventBus): Promise<Task>;
27
+ getMetadata(): Promise<TaskMetadata>;
28
+ private _resetToolCompletionPromise;
29
+ private _registerToolCall;
30
+ private _resolveToolCall;
31
+ waitForPendingTools(): Promise<void>;
32
+ cancelPendingTools(reason: string): void;
33
+ private _createTextMessage;
34
+ private _createStatusUpdateEvent;
35
+ setTaskStateAndPublishUpdate(newState: TaskState, coderAgentMessage: CoderAgentMessage, messageText?: string, messageParts?: Part[], // For more complex messages
36
+ final?: boolean, metadataError?: string): void;
37
+ private _schedulerOutputUpdate;
38
+ private _schedulerAllToolCallsComplete;
39
+ private _schedulerToolCallsUpdate;
40
+ private createScheduler;
41
+ private _pickFields;
42
+ private toolStatusMessage;
43
+ private getProposedContent;
44
+ private _applyReplacement;
45
+ scheduleToolCalls(requests: ToolCallRequestInfo[], abortSignal: AbortSignal): Promise<void>;
46
+ acceptAgentMessage(event: ServerGeminiStreamEvent): Promise<void>;
47
+ private _handleToolConfirmationPart;
48
+ getAndClearCompletedTools(): CompletedToolCall[];
49
+ addToolResponsesToHistory(completedTools: CompletedToolCall[]): void;
50
+ sendCompletedToolsToLlm(completedToolCalls: CompletedToolCall[], aborted: AbortSignal): AsyncGenerator<ServerGeminiStreamEvent>;
51
+ acceptUserMessage(requestContext: RequestContext, aborted: AbortSignal): AsyncGenerator<ServerGeminiStreamEvent>;
52
+ _sendTextContent(content: string): void;
53
+ _sendThought(content: ThoughtSummary): void;
54
+ }