@terminai/a2a-server 0.21.0

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 (154) hide show
  1. package/README.md +5 -0
  2. package/dist/.last_build +0 -0
  3. package/dist/a2a-server.mjs +415698 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +8 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/agent/executor.d.ts +41 -0
  8. package/dist/src/agent/executor.js +408 -0
  9. package/dist/src/agent/executor.js.map +1 -0
  10. package/dist/src/agent/task.d.ts +67 -0
  11. package/dist/src/agent/task.js +799 -0
  12. package/dist/src/agent/task.js.map +1 -0
  13. package/dist/src/agent/task.test.d.ts +7 -0
  14. package/dist/src/agent/task.test.js +435 -0
  15. package/dist/src/agent/task.test.js.map +1 -0
  16. package/dist/src/agent/task.token.test.d.ts +7 -0
  17. package/dist/src/agent/task.token.test.js +53 -0
  18. package/dist/src/agent/task.token.test.js.map +1 -0
  19. package/dist/src/auth/llmAuthManager.d.ts +39 -0
  20. package/dist/src/auth/llmAuthManager.js +209 -0
  21. package/dist/src/auth/llmAuthManager.js.map +1 -0
  22. package/dist/src/auth/llmAuthManager.test.d.ts +7 -0
  23. package/dist/src/auth/llmAuthManager.test.js +92 -0
  24. package/dist/src/auth/llmAuthManager.test.js.map +1 -0
  25. package/dist/src/commands/command-registry.d.ts +16 -0
  26. package/dist/src/commands/command-registry.js +35 -0
  27. package/dist/src/commands/command-registry.js.map +1 -0
  28. package/dist/src/commands/command-registry.test.d.ts +7 -0
  29. package/dist/src/commands/command-registry.test.js +100 -0
  30. package/dist/src/commands/command-registry.test.js.map +1 -0
  31. package/dist/src/commands/extensions.d.ts +19 -0
  32. package/dist/src/commands/extensions.js +26 -0
  33. package/dist/src/commands/extensions.js.map +1 -0
  34. package/dist/src/commands/extensions.test.d.ts +7 -0
  35. package/dist/src/commands/extensions.test.js +70 -0
  36. package/dist/src/commands/extensions.test.js.map +1 -0
  37. package/dist/src/commands/init.d.ts +16 -0
  38. package/dist/src/commands/init.js +111 -0
  39. package/dist/src/commands/init.js.map +1 -0
  40. package/dist/src/commands/init.test.d.ts +7 -0
  41. package/dist/src/commands/init.test.js +146 -0
  42. package/dist/src/commands/init.test.js.map +1 -0
  43. package/dist/src/commands/restore.d.ts +21 -0
  44. package/dist/src/commands/restore.js +126 -0
  45. package/dist/src/commands/restore.js.map +1 -0
  46. package/dist/src/commands/restore.test.d.ts +7 -0
  47. package/dist/src/commands/restore.test.js +111 -0
  48. package/dist/src/commands/restore.test.js.map +1 -0
  49. package/dist/src/commands/types.d.ts +33 -0
  50. package/dist/src/commands/types.js +8 -0
  51. package/dist/src/commands/types.js.map +1 -0
  52. package/dist/src/config/config.d.ts +24 -0
  53. package/dist/src/config/config.js +140 -0
  54. package/dist/src/config/config.js.map +1 -0
  55. package/dist/src/config/extension.d.ts +12 -0
  56. package/dist/src/config/extension.js +105 -0
  57. package/dist/src/config/extension.js.map +1 -0
  58. package/dist/src/config/settings.d.ts +15 -0
  59. package/dist/src/config/settings.js +20 -0
  60. package/dist/src/config/settings.js.map +1 -0
  61. package/dist/src/config/settings.test.d.ts +7 -0
  62. package/dist/src/config/settings.test.js +170 -0
  63. package/dist/src/config/settings.test.js.map +1 -0
  64. package/dist/src/http/app.d.ts +17 -0
  65. package/dist/src/http/app.js +399 -0
  66. package/dist/src/http/app.js.map +1 -0
  67. package/dist/src/http/app.test.d.ts +7 -0
  68. package/dist/src/http/app.test.js +1048 -0
  69. package/dist/src/http/app.test.js.map +1 -0
  70. package/dist/src/http/auth.d.ts +21 -0
  71. package/dist/src/http/auth.js +55 -0
  72. package/dist/src/http/auth.js.map +1 -0
  73. package/dist/src/http/auth.test.d.ts +7 -0
  74. package/dist/src/http/auth.test.js +53 -0
  75. package/dist/src/http/auth.test.js.map +1 -0
  76. package/dist/src/http/authRoutes.test.d.ts +7 -0
  77. package/dist/src/http/authRoutes.test.js +169 -0
  78. package/dist/src/http/authRoutes.test.js.map +1 -0
  79. package/dist/src/http/cors.d.ts +8 -0
  80. package/dist/src/http/cors.js +96 -0
  81. package/dist/src/http/cors.js.map +1 -0
  82. package/dist/src/http/cors.test.d.ts +7 -0
  83. package/dist/src/http/cors.test.js +62 -0
  84. package/dist/src/http/cors.test.js.map +1 -0
  85. package/dist/src/http/deferredAuth.test.d.ts +7 -0
  86. package/dist/src/http/deferredAuth.test.js +45 -0
  87. package/dist/src/http/deferredAuth.test.js.map +1 -0
  88. package/dist/src/http/endpoints.test.d.ts +7 -0
  89. package/dist/src/http/endpoints.test.js +149 -0
  90. package/dist/src/http/endpoints.test.js.map +1 -0
  91. package/dist/src/http/llmAuthMiddleware.d.ts +9 -0
  92. package/dist/src/http/llmAuthMiddleware.js +37 -0
  93. package/dist/src/http/llmAuthMiddleware.js.map +1 -0
  94. package/dist/src/http/relay.d.ts +28 -0
  95. package/dist/src/http/relay.js +342 -0
  96. package/dist/src/http/relay.js.map +1 -0
  97. package/dist/src/http/relay.test.d.ts +7 -0
  98. package/dist/src/http/relay.test.js +149 -0
  99. package/dist/src/http/relay.test.js.map +1 -0
  100. package/dist/src/http/replay.d.ts +19 -0
  101. package/dist/src/http/replay.js +90 -0
  102. package/dist/src/http/replay.js.map +1 -0
  103. package/dist/src/http/replay.test.d.ts +7 -0
  104. package/dist/src/http/replay.test.js +78 -0
  105. package/dist/src/http/replay.test.js.map +1 -0
  106. package/dist/src/http/requestStorage.d.ts +11 -0
  107. package/dist/src/http/requestStorage.js +9 -0
  108. package/dist/src/http/requestStorage.js.map +1 -0
  109. package/dist/src/http/routes/auth.d.ts +9 -0
  110. package/dist/src/http/routes/auth.js +125 -0
  111. package/dist/src/http/routes/auth.js.map +1 -0
  112. package/dist/src/http/server.d.ts +8 -0
  113. package/dist/src/http/server.js +28 -0
  114. package/dist/src/http/server.js.map +1 -0
  115. package/dist/src/index.d.ts +10 -0
  116. package/dist/src/index.js +11 -0
  117. package/dist/src/index.js.map +1 -0
  118. package/dist/src/persistence/gcs.d.ts +25 -0
  119. package/dist/src/persistence/gcs.js +248 -0
  120. package/dist/src/persistence/gcs.js.map +1 -0
  121. package/dist/src/persistence/gcs.test.d.ts +7 -0
  122. package/dist/src/persistence/gcs.test.js +335 -0
  123. package/dist/src/persistence/gcs.test.js.map +1 -0
  124. package/dist/src/persistence/remoteAuthStore.d.ts +21 -0
  125. package/dist/src/persistence/remoteAuthStore.js +74 -0
  126. package/dist/src/persistence/remoteAuthStore.js.map +1 -0
  127. package/dist/src/types.d.ts +100 -0
  128. package/dist/src/types.js +49 -0
  129. package/dist/src/types.js.map +1 -0
  130. package/dist/src/utils/envAliases.d.ts +7 -0
  131. package/dist/src/utils/envAliases.js +9 -0
  132. package/dist/src/utils/envAliases.js.map +1 -0
  133. package/dist/src/utils/executor_utils.d.ts +8 -0
  134. package/dist/src/utils/executor_utils.js +42 -0
  135. package/dist/src/utils/executor_utils.js.map +1 -0
  136. package/dist/src/utils/logger.d.ts +9 -0
  137. package/dist/src/utils/logger.js +26 -0
  138. package/dist/src/utils/logger.js.map +1 -0
  139. package/dist/src/utils/redactSecrets.d.ts +16 -0
  140. package/dist/src/utils/redactSecrets.js +72 -0
  141. package/dist/src/utils/redactSecrets.js.map +1 -0
  142. package/dist/src/utils/redactSecrets.test.d.ts +7 -0
  143. package/dist/src/utils/redactSecrets.test.js +62 -0
  144. package/dist/src/utils/redactSecrets.test.js.map +1 -0
  145. package/dist/src/utils/testing_utils.d.ts +48 -0
  146. package/dist/src/utils/testing_utils.js +173 -0
  147. package/dist/src/utils/testing_utils.js.map +1 -0
  148. package/dist/tsconfig.tsbuildinfo +1 -0
  149. package/dist/web-client/app.js +526 -0
  150. package/dist/web-client/index.html +43 -0
  151. package/dist/web-client/package.json +10 -0
  152. package/dist/web-client/relay-client.js +330 -0
  153. package/dist/web-client/style.css +189 -0
  154. package/package.json +53 -0
@@ -0,0 +1,399 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import express from 'express';
8
+ import * as fs from 'node:fs';
9
+ import path from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { DefaultRequestHandler, InMemoryTaskStore, DefaultExecutionEventBus, } from '@a2a-js/sdk/server';
12
+ import { A2AExpressApp } from '@a2a-js/sdk/server/express'; // Import server components
13
+ import { v4 as uuidv4 } from 'uuid';
14
+ import { logger } from '../utils/logger.js';
15
+ import { GCSTaskStore, NoOpTaskStore } from '../persistence/gcs.js';
16
+ import { CoderAgentExecutor } from '../agent/executor.js';
17
+ import { requestStorage } from './requestStorage.js';
18
+ import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
19
+ import { loadSettings } from '../config/settings.js';
20
+ import { loadExtensions } from '../config/extension.js';
21
+ import { commandRegistry } from '../commands/command-registry.js';
22
+ import { SimpleExtensionLoader } from '@terminai/core';
23
+ import { GitService } from '@terminai/core';
24
+ import { createAuthMiddleware, loadAuthVerifier } from './auth.js';
25
+ import { createCorsAllowlist } from './cors.js';
26
+ import { connectToRelay } from './relay.js';
27
+ import { LlmAuthManager } from '../auth/llmAuthManager.js';
28
+ import { createAuthRouter } from './routes/auth.js';
29
+ import { createLlmAuthMiddleware } from './llmAuthMiddleware.js';
30
+ // import { createReplayProtection } from './replay.js'; // TODO: Re-enable when body streaming conflict is resolved
31
+ function resolveWebClientPath() {
32
+ const override = process.env['GEMINI_WEB_CLIENT_PATH'];
33
+ const baseDir = path.dirname(fileURLToPath(import.meta.url));
34
+ const candidates = [
35
+ override,
36
+ // If web-client is vendored into the a2a-server package (future-proofing)
37
+ path.join(baseDir, '../../web-client'),
38
+ // Monorepo dev: src/http -> ../../../web-client
39
+ path.join(baseDir, '../../../web-client'),
40
+ // Monorepo build: dist/src/http -> ../../../../web-client
41
+ path.join(baseDir, '../../../../web-client'),
42
+ // Running from repo root
43
+ path.join(process.cwd(), 'packages/web-client'),
44
+ path.join(process.cwd(), 'web-client'),
45
+ ].filter((value) => Boolean(value));
46
+ for (const candidate of candidates) {
47
+ try {
48
+ const indexHtml = path.join(candidate, 'index.html');
49
+ if (fs.existsSync(indexHtml)) {
50
+ return candidate;
51
+ }
52
+ }
53
+ catch {
54
+ // ignore
55
+ }
56
+ }
57
+ return null;
58
+ }
59
+ function parseBooleanEnv(value) {
60
+ if (value === 'true')
61
+ return true;
62
+ if (value === 'false')
63
+ return false;
64
+ return undefined;
65
+ }
66
+ const coderAgentCard = {
67
+ name: 'Gemini SDLC Agent',
68
+ description: 'An agent that generates code based on natural language instructions and streams file outputs.',
69
+ url: 'http://localhost:41242/',
70
+ provider: {
71
+ organization: 'Google',
72
+ url: 'https://google.com',
73
+ },
74
+ protocolVersion: '0.3.0',
75
+ version: '0.0.2', // Incremented version
76
+ capabilities: {
77
+ streaming: true,
78
+ pushNotifications: false,
79
+ stateTransitionHistory: true,
80
+ },
81
+ securitySchemes: undefined,
82
+ security: undefined,
83
+ defaultInputModes: ['text'],
84
+ defaultOutputModes: ['text'],
85
+ skills: [
86
+ {
87
+ id: 'code_generation',
88
+ name: 'Code Generation',
89
+ description: 'Generates code snippets or complete files based on user requests, streaming the results.',
90
+ tags: ['code', 'development', 'programming'],
91
+ examples: [
92
+ 'Write a python function to calculate fibonacci numbers.',
93
+ 'Create an HTML file with a basic button that alerts "Hello!" when clicked.',
94
+ ],
95
+ inputModes: ['text'],
96
+ outputModes: ['text'],
97
+ },
98
+ ],
99
+ supportsAuthenticatedExtendedCard: false,
100
+ };
101
+ export function updateCoderAgentCardUrl(port, host = 'localhost') {
102
+ const formattedHost = host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
103
+ coderAgentCard.url = `http://${formattedHost}:${port}/`;
104
+ }
105
+ async function handleExecuteCommand(req, res, context) {
106
+ logger.info('[CoreAgent] Received /executeCommand request: ', req.body);
107
+ const { command, args } = req.body;
108
+ try {
109
+ if (typeof command !== 'string') {
110
+ return res.status(400).json({ error: 'Invalid "command" field.' });
111
+ }
112
+ if (args && !Array.isArray(args)) {
113
+ return res.status(400).json({ error: '"args" field must be an array.' });
114
+ }
115
+ const commandToExecute = commandRegistry.get(command);
116
+ if (commandToExecute?.requiresWorkspace) {
117
+ // Workspace is always available via config.targetDir (defaults to homedir)
118
+ // so we don't need to strictly enforce the ENV var presence.
119
+ }
120
+ if (!commandToExecute) {
121
+ return res.status(404).json({ error: `Command not found: ${command}` });
122
+ }
123
+ if (commandToExecute.streaming) {
124
+ const eventBus = new DefaultExecutionEventBus();
125
+ res.setHeader('Content-Type', 'text/event-stream');
126
+ res.setHeader('Cache-Control', 'no-cache');
127
+ res.setHeader('Connection', 'keep-alive');
128
+ const eventHandler = (event) => {
129
+ const jsonRpcResponse = {
130
+ jsonrpc: '2.0',
131
+ id: 'taskId' in event ? event.taskId : event.messageId,
132
+ result: event,
133
+ };
134
+ res.write(`data: ${JSON.stringify(jsonRpcResponse)}\n\n`);
135
+ };
136
+ eventBus.on('event', eventHandler);
137
+ await commandToExecute.execute({ ...context, eventBus }, args ?? []);
138
+ eventBus.off('event', eventHandler);
139
+ eventBus.finished();
140
+ return res.end(); // Explicit return for streaming path
141
+ }
142
+ else {
143
+ const result = await commandToExecute.execute(context, args ?? []);
144
+ logger.info('[CoreAgent] Sending /executeCommand response: ', result);
145
+ return res.status(200).json(result);
146
+ }
147
+ }
148
+ catch (e) {
149
+ logger.error(`Error executing /executeCommand: ${command} with args: ${JSON.stringify(args)}`, e);
150
+ const errorMessage = e instanceof Error ? e.message : 'Unknown error executing command';
151
+ return res.status(500).json({ error: errorMessage });
152
+ }
153
+ }
154
+ export async function createApp(options) {
155
+ try {
156
+ // Load the server configuration once on startup.
157
+ const workspaceRoot = setTargetDir(undefined);
158
+ loadEnvironment();
159
+ const loadedSettings = loadSettings(workspaceRoot);
160
+ // G-7 FIX: Support both TERMINAI_* and GEMINI_* env var names
161
+ const envAllowedOrigins = process.env['TERMINAI_WEB_REMOTE_ALLOWED_ORIGINS'] ??
162
+ process.env['GEMINI_WEB_REMOTE_ALLOWED_ORIGINS'];
163
+ const allowedOrigins = envAllowedOrigins
164
+ ? envAllowedOrigins
165
+ .split(',')
166
+ .map((origin) => origin.trim())
167
+ .filter(Boolean)
168
+ : [];
169
+ const extensions = loadExtensions(workspaceRoot);
170
+ const deferOverride = parseBooleanEnv(process.env['TERMINAI_A2A_DEFER_AUTH'] ??
171
+ process.env['GEMINI_A2A_DEFER_AUTH']);
172
+ const deferLlmAuth = options?.deferLlmAuth ??
173
+ deferOverride ??
174
+ process.env['TERMINAI_SIDECAR'] === '1';
175
+ const config = await loadConfig(loadedSettings, new SimpleExtensionLoader(extensions), 'a2a-server', undefined, { deferLlmAuth });
176
+ let git;
177
+ if (config.getCheckpointingEnabled()) {
178
+ git = new GitService(config.getTargetDir(), config.storage);
179
+ await git.initialize();
180
+ }
181
+ // loadEnvironment() is called within getConfig now
182
+ const bucketName = process.env['GCS_BUCKET_NAME'];
183
+ let taskStoreForExecutor;
184
+ let taskStoreForHandler;
185
+ if (bucketName) {
186
+ logger.info(`Using GCSTaskStore with bucket: ${bucketName}`);
187
+ const gcsTaskStore = new GCSTaskStore(bucketName);
188
+ taskStoreForExecutor = gcsTaskStore;
189
+ taskStoreForHandler = new NoOpTaskStore(gcsTaskStore);
190
+ }
191
+ else {
192
+ logger.info('Using InMemoryTaskStore');
193
+ const inMemoryTaskStore = new InMemoryTaskStore();
194
+ taskStoreForExecutor = inMemoryTaskStore;
195
+ taskStoreForHandler = inMemoryTaskStore;
196
+ }
197
+ const agentExecutor = new CoderAgentExecutor(taskStoreForExecutor);
198
+ const context = { config, git, agentExecutor };
199
+ const requestHandler = new DefaultRequestHandler(coderAgentCard, taskStoreForHandler, agentExecutor);
200
+ let expressApp = express();
201
+ expressApp.use((req, res, next) => {
202
+ requestStorage.run({ req }, next);
203
+ });
204
+ const authVerifier = await loadAuthVerifier();
205
+ expressApp.use(createCorsAllowlist(allowedOrigins));
206
+ expressApp.use(createAuthMiddleware(authVerifier, {
207
+ bypassPaths: new Set(['/healthz', '/ui']),
208
+ }));
209
+ // NOTE: Replay protection disabled temporarily - it requires rawBody
210
+ // which conflicts with A2A SDK's body-parser. See TODO for proper fix.
211
+ // expressApp.use(createReplayProtection());
212
+ const webClientPath = resolveWebClientPath();
213
+ if (webClientPath) {
214
+ expressApp.use('/ui', express.static(webClientPath));
215
+ }
216
+ else {
217
+ logger.warn('[CoreAgent] Web client assets not found; /ui will be unavailable. Set GEMINI_WEB_CLIENT_PATH to override.');
218
+ }
219
+ // Task 11: Auth Manager
220
+ const authManager = new LlmAuthManager({
221
+ config,
222
+ getSelectedAuthType: () => loadedSettings.merged.security?.auth?.selectedType,
223
+ });
224
+ // Task 17: Gate all non-GET requests that may execute LLM work.
225
+ const llmAuthGate = createLlmAuthMiddleware(authManager);
226
+ expressApp.use((req, res, next) => {
227
+ if (req.method === 'OPTIONS')
228
+ return next();
229
+ if (req.method === 'GET')
230
+ return next();
231
+ if (req.path === '/healthz')
232
+ return next();
233
+ if (req.path === '/.well-known/agent-card.json')
234
+ return next();
235
+ if (req.path === '/whoami')
236
+ return next();
237
+ if (req.path === '/listCommands')
238
+ return next();
239
+ if (req.path.startsWith('/ui'))
240
+ return next();
241
+ if (req.path.startsWith('/auth'))
242
+ return next();
243
+ return llmAuthGate(req, res, next);
244
+ });
245
+ const appBuilder = new A2AExpressApp(requestHandler);
246
+ expressApp = appBuilder.setupRoutes(expressApp, '');
247
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
248
+ const relayUrl = config.getWebRemoteRelayUrl();
249
+ if (relayUrl) {
250
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
251
+ connectToRelay(relayUrl, requestHandler);
252
+ }
253
+ expressApp.get('/healthz', (_req, res) => {
254
+ res.status(200).json({ status: 'ok' });
255
+ });
256
+ // Task 12–16: Auth Routes
257
+ expressApp.use('/auth', createAuthRouter(authManager));
258
+ expressApp.get('/whoami', (_req, res) => {
259
+ res.json({
260
+ targetDir: config.getTargetDir(),
261
+ llmAuthRequired: true, // Task 31: Optional handshake field
262
+ });
263
+ });
264
+ expressApp.post('/tasks', async (req, res) => {
265
+ try {
266
+ const taskId = uuidv4();
267
+ const agentSettings = req.body.agentSettings;
268
+ const contextId = req.body.contextId || uuidv4();
269
+ const wrapper = await agentExecutor.createTask(taskId, contextId, agentSettings);
270
+ await taskStoreForExecutor.save(wrapper.toSDKTask());
271
+ res.status(201).json(wrapper.id);
272
+ }
273
+ catch (error) {
274
+ logger.error('[CoreAgent] Error creating task:', error);
275
+ const errorMessage = error instanceof Error
276
+ ? error.message
277
+ : 'Unknown error creating task';
278
+ res.status(500).send({ error: errorMessage });
279
+ }
280
+ });
281
+ expressApp.post('/executeCommand', (req, res) => {
282
+ void handleExecuteCommand(req, res, context);
283
+ });
284
+ expressApp.get('/listCommands', (req, res) => {
285
+ try {
286
+ const transformCommand = (command, visited) => {
287
+ const commandName = command.name;
288
+ if (visited.includes(commandName)) {
289
+ console.warn(`Command ${commandName} already inserted in the response, skipping`);
290
+ return undefined;
291
+ }
292
+ return {
293
+ name: command.name,
294
+ description: command.description,
295
+ arguments: command.arguments ?? [],
296
+ subCommands: (command.subCommands ?? [])
297
+ .map((subCommand) => transformCommand(subCommand, visited.concat(commandName)))
298
+ .filter((subCommand) => !!subCommand),
299
+ };
300
+ };
301
+ const commands = commandRegistry
302
+ .getAllCommands()
303
+ .filter((command) => command.topLevel)
304
+ .map((command) => transformCommand(command, []));
305
+ return res.status(200).json({ commands });
306
+ }
307
+ catch (e) {
308
+ logger.error('Error executing /listCommands:', e);
309
+ const errorMessage = e instanceof Error ? e.message : 'Unknown error listing commands';
310
+ return res.status(500).json({ error: errorMessage });
311
+ }
312
+ });
313
+ expressApp.get('/tasks/metadata', async (req, res) => {
314
+ // This endpoint is only meaningful if the task store is in-memory.
315
+ if (!(taskStoreForExecutor instanceof InMemoryTaskStore)) {
316
+ res.status(501).send({
317
+ error: 'Listing all task metadata is only supported when using InMemoryTaskStore.',
318
+ });
319
+ }
320
+ try {
321
+ const wrappers = agentExecutor.getAllTasks();
322
+ if (wrappers && wrappers.length > 0) {
323
+ const tasksMetadata = await Promise.all(wrappers.map((wrapper) => wrapper.task.getMetadata()));
324
+ res.status(200).json(tasksMetadata);
325
+ }
326
+ else {
327
+ res.status(204).send();
328
+ }
329
+ }
330
+ catch (error) {
331
+ logger.error('[CoreAgent] Error getting all task metadata:', error);
332
+ const errorMessage = error instanceof Error
333
+ ? error.message
334
+ : 'Unknown error getting task metadata';
335
+ res.status(500).send({ error: errorMessage });
336
+ }
337
+ });
338
+ expressApp.get('/tasks/:taskId/metadata', async (req, res) => {
339
+ const taskId = req.params.taskId;
340
+ let wrapper = agentExecutor.getTask(taskId);
341
+ if (!wrapper) {
342
+ const sdkTask = await taskStoreForExecutor.load(taskId);
343
+ if (sdkTask) {
344
+ wrapper = await agentExecutor.reconstruct(sdkTask);
345
+ }
346
+ }
347
+ if (!wrapper) {
348
+ res.status(404).send({ error: 'Task not found' });
349
+ return;
350
+ }
351
+ res.json({ metadata: await wrapper.task.getMetadata() });
352
+ });
353
+ return expressApp;
354
+ }
355
+ catch (error) {
356
+ logger.error('[CoreAgent] Error during startup:', error);
357
+ if (process.env['NODE_ENV'] === 'test') {
358
+ throw error;
359
+ }
360
+ process.exit(1);
361
+ }
362
+ }
363
+ export async function main() {
364
+ try {
365
+ const expressApp = await createApp();
366
+ const port = process.env['CODER_AGENT_PORT'] || 0;
367
+ const server = expressApp.listen(port, () => {
368
+ const address = server.address();
369
+ let actualPort;
370
+ if (process.env['CODER_AGENT_PORT']) {
371
+ actualPort = process.env['CODER_AGENT_PORT'];
372
+ }
373
+ else if (address && typeof address !== 'string') {
374
+ actualPort = address.port;
375
+ }
376
+ else {
377
+ throw new Error('[Core Agent] Could not find port number.');
378
+ }
379
+ updateCoderAgentCardUrl(Number(actualPort));
380
+ logger.info(`[CoreAgent] Agent Server started on http://localhost:${actualPort}`);
381
+ logger.info(`[CoreAgent] Agent Card: http://localhost:${actualPort}/.well-known/agent-card.json`);
382
+ logger.info('[CoreAgent] Press Ctrl+C to stop the server');
383
+ });
384
+ // Keep the process alive by waiting for the server to close
385
+ await new Promise((resolve) => {
386
+ // setInterval ensures the event loop stays active
387
+ const keepAlive = setInterval(() => { }, 1000 * 60 * 60); // 1 hour interval
388
+ server.on('close', () => {
389
+ clearInterval(keepAlive);
390
+ resolve();
391
+ });
392
+ });
393
+ }
394
+ catch (error) {
395
+ logger.error('[CoreAgent] Error during startup:', error);
396
+ process.exit(1);
397
+ }
398
+ }
399
+ //# 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,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ export {};