@google/gemini-cli-a2a-server 0.10.0-nightly.20251014.0a3e492e

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,170 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import express from 'express';
7
+ import { DefaultRequestHandler, InMemoryTaskStore } from '@a2a-js/sdk/server';
8
+ import { A2AExpressApp } from '@a2a-js/sdk/server/express'; // Import server components
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ import { logger } from '../utils/logger.js';
11
+ import { GCSTaskStore, NoOpTaskStore } from '../persistence/gcs.js';
12
+ import { CoderAgentExecutor } from '../agent/executor.js';
13
+ import { requestStorage } from './requestStorage.js';
14
+ const coderAgentCard = {
15
+ name: 'Gemini SDLC Agent',
16
+ description: 'An agent that generates code based on natural language instructions and streams file outputs.',
17
+ url: 'http://localhost:41242/',
18
+ provider: {
19
+ organization: 'Google',
20
+ url: 'https://google.com',
21
+ },
22
+ protocolVersion: '0.3.0',
23
+ version: '0.0.2', // Incremented version
24
+ capabilities: {
25
+ streaming: true,
26
+ pushNotifications: false,
27
+ stateTransitionHistory: true,
28
+ },
29
+ securitySchemes: undefined,
30
+ security: undefined,
31
+ defaultInputModes: ['text'],
32
+ defaultOutputModes: ['text'],
33
+ skills: [
34
+ {
35
+ id: 'code_generation',
36
+ name: 'Code Generation',
37
+ description: 'Generates code snippets or complete files based on user requests, streaming the results.',
38
+ tags: ['code', 'development', 'programming'],
39
+ examples: [
40
+ 'Write a python function to calculate fibonacci numbers.',
41
+ 'Create an HTML file with a basic button that alerts "Hello!" when clicked.',
42
+ ],
43
+ inputModes: ['text'],
44
+ outputModes: ['text'],
45
+ },
46
+ ],
47
+ supportsAuthenticatedExtendedCard: false,
48
+ };
49
+ export function updateCoderAgentCardUrl(port) {
50
+ coderAgentCard.url = `http://localhost:${port}/`;
51
+ }
52
+ export async function createApp() {
53
+ try {
54
+ // loadEnvironment() is called within getConfig now
55
+ const bucketName = process.env['GCS_BUCKET_NAME'];
56
+ let taskStoreForExecutor;
57
+ let taskStoreForHandler;
58
+ if (bucketName) {
59
+ logger.info(`Using GCSTaskStore with bucket: ${bucketName}`);
60
+ const gcsTaskStore = new GCSTaskStore(bucketName);
61
+ taskStoreForExecutor = gcsTaskStore;
62
+ taskStoreForHandler = new NoOpTaskStore(gcsTaskStore);
63
+ }
64
+ else {
65
+ logger.info('Using InMemoryTaskStore');
66
+ const inMemoryTaskStore = new InMemoryTaskStore();
67
+ taskStoreForExecutor = inMemoryTaskStore;
68
+ taskStoreForHandler = inMemoryTaskStore;
69
+ }
70
+ const agentExecutor = new CoderAgentExecutor(taskStoreForExecutor);
71
+ const requestHandler = new DefaultRequestHandler(coderAgentCard, taskStoreForHandler, agentExecutor);
72
+ let expressApp = express();
73
+ expressApp.use((req, res, next) => {
74
+ requestStorage.run({ req }, next);
75
+ });
76
+ const appBuilder = new A2AExpressApp(requestHandler);
77
+ expressApp = appBuilder.setupRoutes(expressApp, '');
78
+ expressApp.use(express.json());
79
+ expressApp.post('/tasks', async (req, res) => {
80
+ try {
81
+ const taskId = uuidv4();
82
+ const agentSettings = req.body.agentSettings;
83
+ const contextId = req.body.contextId || uuidv4();
84
+ const wrapper = await agentExecutor.createTask(taskId, contextId, agentSettings);
85
+ await taskStoreForExecutor.save(wrapper.toSDKTask());
86
+ res.status(201).json(wrapper.id);
87
+ }
88
+ catch (error) {
89
+ logger.error('[CoreAgent] Error creating task:', error);
90
+ const errorMessage = error instanceof Error
91
+ ? error.message
92
+ : 'Unknown error creating task';
93
+ res.status(500).send({ error: errorMessage });
94
+ }
95
+ });
96
+ expressApp.get('/tasks/metadata', async (req, res) => {
97
+ // This endpoint is only meaningful if the task store is in-memory.
98
+ if (!(taskStoreForExecutor instanceof InMemoryTaskStore)) {
99
+ res.status(501).send({
100
+ error: 'Listing all task metadata is only supported when using InMemoryTaskStore.',
101
+ });
102
+ }
103
+ try {
104
+ const wrappers = agentExecutor.getAllTasks();
105
+ if (wrappers && wrappers.length > 0) {
106
+ const tasksMetadata = await Promise.all(wrappers.map((wrapper) => wrapper.task.getMetadata()));
107
+ res.status(200).json(tasksMetadata);
108
+ }
109
+ else {
110
+ res.status(204).send();
111
+ }
112
+ }
113
+ catch (error) {
114
+ logger.error('[CoreAgent] Error getting all task metadata:', error);
115
+ const errorMessage = error instanceof Error
116
+ ? error.message
117
+ : 'Unknown error getting task metadata';
118
+ res.status(500).send({ error: errorMessage });
119
+ }
120
+ });
121
+ expressApp.get('/tasks/:taskId/metadata', async (req, res) => {
122
+ const taskId = req.params.taskId;
123
+ let wrapper = agentExecutor.getTask(taskId);
124
+ if (!wrapper) {
125
+ const sdkTask = await taskStoreForExecutor.load(taskId);
126
+ if (sdkTask) {
127
+ wrapper = await agentExecutor.reconstruct(sdkTask);
128
+ }
129
+ }
130
+ if (!wrapper) {
131
+ res.status(404).send({ error: 'Task not found' });
132
+ return;
133
+ }
134
+ res.json({ metadata: await wrapper.task.getMetadata() });
135
+ });
136
+ return expressApp;
137
+ }
138
+ catch (error) {
139
+ logger.error('[CoreAgent] Error during startup:', error);
140
+ process.exit(1);
141
+ }
142
+ }
143
+ export async function main() {
144
+ try {
145
+ const expressApp = await createApp();
146
+ const port = process.env['CODER_AGENT_PORT'] || 0;
147
+ const server = expressApp.listen(port, () => {
148
+ const address = server.address();
149
+ let actualPort;
150
+ if (process.env['CODER_AGENT_PORT']) {
151
+ actualPort = process.env['CODER_AGENT_PORT'];
152
+ }
153
+ else if (address && typeof address !== 'string') {
154
+ actualPort = address.port;
155
+ }
156
+ else {
157
+ throw new Error('[Core Agent] Could not find port number.');
158
+ }
159
+ updateCoderAgentCardUrl(Number(actualPort));
160
+ logger.info(`[CoreAgent] Agent Server started on http://localhost:${actualPort}`);
161
+ logger.info(`[CoreAgent] Agent Card: http://localhost:${actualPort}/.well-known/agent-card.json`);
162
+ logger.info('[CoreAgent] Press Ctrl+C to stop the server');
163
+ });
164
+ }
165
+ catch (error) {
166
+ logger.error('[CoreAgent] Error during startup:', error);
167
+ process.exit(1);
168
+ }
169
+ }
170
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/http/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};