@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 @@
1
+ {"version":3,"file":"gcs.test.js","sourceRoot":"","sources":["../../../src/persistence/gcs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ export declare const REMOTE_AUTH_FILENAME = "web-remote-auth.json";
8
+ export type RemoteAuthState = {
9
+ version: 1;
10
+ tokenId: string;
11
+ tokenSaltB64: string;
12
+ tokenHashB64: string;
13
+ createdAt: string;
14
+ lastRotatedAt: string;
15
+ expiresAt: string | null;
16
+ };
17
+ export declare function getRemoteAuthPath(): string;
18
+ export declare function loadRemoteAuthState(): Promise<RemoteAuthState | null>;
19
+ export declare function saveRemoteAuthState(state: RemoteAuthState): Promise<void>;
20
+ export declare function createRemoteAuthState(token: string): RemoteAuthState;
21
+ export declare function verifyRemoteAuthToken(token: string, state: RemoteAuthState): boolean;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { promises as fs } from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import * as os from 'node:os';
10
+ import * as crypto from 'node:crypto';
11
+ import { GEMINI_DIR } from '@terminai/core';
12
+ export const REMOTE_AUTH_FILENAME = 'web-remote-auth.json';
13
+ export function getRemoteAuthPath() {
14
+ const override = process.env['GEMINI_WEB_REMOTE_AUTH_PATH'];
15
+ if (override) {
16
+ return override;
17
+ }
18
+ const homeDir = os.homedir() || os.tmpdir();
19
+ return path.join(homeDir, GEMINI_DIR, REMOTE_AUTH_FILENAME);
20
+ }
21
+ export async function loadRemoteAuthState() {
22
+ const authPath = getRemoteAuthPath();
23
+ try {
24
+ const content = await fs.readFile(authPath, 'utf8');
25
+ const parsed = JSON.parse(content);
26
+ if (!parsed ||
27
+ parsed.version !== 1 ||
28
+ typeof parsed.tokenSaltB64 !== 'string' ||
29
+ typeof parsed.tokenHashB64 !== 'string') {
30
+ throw new Error('Invalid remote auth state format.');
31
+ }
32
+ return parsed;
33
+ }
34
+ catch (error) {
35
+ const err = error;
36
+ if (err.code === 'ENOENT') {
37
+ return null;
38
+ }
39
+ throw error;
40
+ }
41
+ }
42
+ export async function saveRemoteAuthState(state) {
43
+ const authPath = getRemoteAuthPath();
44
+ await fs.mkdir(path.dirname(authPath), { recursive: true, mode: 0o700 });
45
+ const content = JSON.stringify(state, null, 2);
46
+ await fs.writeFile(authPath, content, { mode: 0o600 });
47
+ }
48
+ export function createRemoteAuthState(token) {
49
+ const salt = crypto.randomBytes(16);
50
+ const hash = crypto.scryptSync(token, salt, 32);
51
+ const now = new Date().toISOString();
52
+ return {
53
+ version: 1,
54
+ tokenId: crypto.randomUUID(),
55
+ tokenSaltB64: salt.toString('base64'),
56
+ tokenHashB64: hash.toString('base64'),
57
+ createdAt: now,
58
+ lastRotatedAt: now,
59
+ expiresAt: null,
60
+ };
61
+ }
62
+ export function verifyRemoteAuthToken(token, state) {
63
+ if (state.expiresAt && Date.now() > Date.parse(state.expiresAt)) {
64
+ return false;
65
+ }
66
+ const salt = Buffer.from(state.tokenSaltB64, 'base64');
67
+ const expectedHash = Buffer.from(state.tokenHashB64, 'base64');
68
+ const actualHash = crypto.scryptSync(token, salt, expectedHash.length);
69
+ if (actualHash.length !== expectedHash.length) {
70
+ return false;
71
+ }
72
+ return crypto.timingSafeEqual(actualHash, expectedHash);
73
+ }
74
+ //# sourceMappingURL=remoteAuthStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteAuthStore.js","sourceRoot":"","sources":["../../../src/persistence/remoteAuthStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import type { MCPServerStatus, ToolConfirmationOutcome } from '@terminai/core';
8
+ import type { TaskState } from '@a2a-js/sdk';
9
+ export declare enum CoderAgentEvent {
10
+ /**
11
+ * An event requesting one or more tool call confirmations.
12
+ */
13
+ ToolCallConfirmationEvent = "tool-call-confirmation",
14
+ /**
15
+ * An event updating on the status of one or more tool calls.
16
+ */
17
+ ToolCallUpdateEvent = "tool-call-update",
18
+ /**
19
+ * An event providing text updates on the task.
20
+ */
21
+ TextContentEvent = "text-content",
22
+ /**
23
+ * An event that indicates a change in the task's execution state.
24
+ */
25
+ StateChangeEvent = "state-change",
26
+ /**
27
+ * An user-sent event to initiate the agent.
28
+ */
29
+ StateAgentSettingsEvent = "agent-settings",
30
+ /**
31
+ * An event that contains a thought from the agent.
32
+ */
33
+ ThoughtEvent = "thought",
34
+ /**
35
+ * An event that contains citation from the agent.
36
+ */
37
+ CitationEvent = "citation"
38
+ }
39
+ export interface AgentSettings {
40
+ kind: CoderAgentEvent.StateAgentSettingsEvent;
41
+ workspacePath: string;
42
+ autoExecute?: boolean;
43
+ }
44
+ export interface ToolCallConfirmation {
45
+ kind: CoderAgentEvent.ToolCallConfirmationEvent;
46
+ }
47
+ export interface ToolCallUpdate {
48
+ kind: CoderAgentEvent.ToolCallUpdateEvent;
49
+ }
50
+ export interface TextContent {
51
+ kind: CoderAgentEvent.TextContentEvent;
52
+ }
53
+ export interface StateChange {
54
+ kind: CoderAgentEvent.StateChangeEvent;
55
+ }
56
+ export interface Thought {
57
+ kind: CoderAgentEvent.ThoughtEvent;
58
+ }
59
+ export interface Citation {
60
+ kind: CoderAgentEvent.CitationEvent;
61
+ }
62
+ export type ThoughtSummary = {
63
+ subject: string;
64
+ description: string;
65
+ };
66
+ export interface ToolConfirmationResponse {
67
+ outcome: ToolConfirmationOutcome;
68
+ callId: string;
69
+ }
70
+ export type CoderAgentMessage = AgentSettings | ToolCallConfirmation | ToolCallUpdate | TextContent | StateChange | Thought | Citation;
71
+ export interface TaskMetadata {
72
+ id: string;
73
+ contextId: string;
74
+ taskState: TaskState;
75
+ model: string;
76
+ mcpServers: Array<{
77
+ name: string;
78
+ status: MCPServerStatus;
79
+ tools: Array<{
80
+ name: string;
81
+ description: string;
82
+ parameterSchema: unknown;
83
+ }>;
84
+ }>;
85
+ availableTools: Array<{
86
+ name: string;
87
+ description: string;
88
+ parameterSchema: unknown;
89
+ }>;
90
+ }
91
+ export interface PersistedStateMetadata {
92
+ _agentSettings: AgentSettings;
93
+ _taskState: TaskState;
94
+ }
95
+ export type PersistedTaskMetadata = {
96
+ [k: string]: unknown;
97
+ };
98
+ export declare const METADATA_KEY = "__persistedState";
99
+ export declare function getPersistedState(metadata: PersistedTaskMetadata): PersistedStateMetadata | undefined;
100
+ export declare function setPersistedState(metadata: PersistedTaskMetadata, state: PersistedStateMetadata): PersistedTaskMetadata;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ // Interfaces and enums for the CoderAgent protocol.
8
+ export var CoderAgentEvent;
9
+ (function (CoderAgentEvent) {
10
+ /**
11
+ * An event requesting one or more tool call confirmations.
12
+ */
13
+ CoderAgentEvent["ToolCallConfirmationEvent"] = "tool-call-confirmation";
14
+ /**
15
+ * An event updating on the status of one or more tool calls.
16
+ */
17
+ CoderAgentEvent["ToolCallUpdateEvent"] = "tool-call-update";
18
+ /**
19
+ * An event providing text updates on the task.
20
+ */
21
+ CoderAgentEvent["TextContentEvent"] = "text-content";
22
+ /**
23
+ * An event that indicates a change in the task's execution state.
24
+ */
25
+ CoderAgentEvent["StateChangeEvent"] = "state-change";
26
+ /**
27
+ * An user-sent event to initiate the agent.
28
+ */
29
+ CoderAgentEvent["StateAgentSettingsEvent"] = "agent-settings";
30
+ /**
31
+ * An event that contains a thought from the agent.
32
+ */
33
+ CoderAgentEvent["ThoughtEvent"] = "thought";
34
+ /**
35
+ * An event that contains citation from the agent.
36
+ */
37
+ CoderAgentEvent["CitationEvent"] = "citation";
38
+ })(CoderAgentEvent || (CoderAgentEvent = {}));
39
+ export const METADATA_KEY = '__persistedState';
40
+ export function getPersistedState(metadata) {
41
+ return metadata?.[METADATA_KEY];
42
+ }
43
+ export function setPersistedState(metadata, state) {
44
+ return {
45
+ ...metadata,
46
+ [METADATA_KEY]: state,
47
+ };
48
+ }
49
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,oDAAoD;AAEpD,MAAM,CAAN,IAAY,eA6BX;AA7BD,WAAY,eAAe;IACzB;;OAEG;IACH,uEAAoD,CAAA;IACpD;;OAEG;IACH,2DAAwC,CAAA;IACxC;;OAEG;IACH,oDAAiC,CAAA;IACjC;;OAEG;IACH,oDAAiC,CAAA;IACjC;;OAEG;IACH,6DAA0C,CAAA;IAC1C;;OAEG;IACH,2CAAwB,CAAA;IACxB;;OAEG;IACH,6CAA0B,CAAA;AAC5B,CAAC,EA7BW,eAAe,KAAf,eAAe,QA6B1B;AA+ED,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAC/B,QAA+B;IAE/B,OAAO,QAAQ,EAAE,CAAC,YAAY,CAAuC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAA+B,EAC/B,KAA6B;IAE7B,OAAO;QACL,GAAG,QAAQ;QACX,CAAC,YAAY,CAAC,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC"}
@@ -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 {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { applyTerminaiEnvAliases } from '@terminai/core';
8
+ applyTerminaiEnvAliases();
9
+ //# sourceMappingURL=envAliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envAliases.js","sourceRoot":"","sources":["../../../src/utils/envAliases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import type { ExecutionEventBus } from '@a2a-js/sdk/server';
8
+ export declare function pushTaskStateFailed(error: unknown, eventBus: ExecutionEventBus, taskId: string, contextId: string): Promise<void>;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { v4 as uuidv4 } from 'uuid';
8
+ import { CoderAgentEvent } from '../types.js';
9
+ export async function pushTaskStateFailed(error, eventBus, taskId, contextId) {
10
+ const errorMessage = error instanceof Error ? error.message : 'Agent execution error';
11
+ const stateChange = {
12
+ kind: CoderAgentEvent.StateChangeEvent,
13
+ };
14
+ eventBus.publish({
15
+ kind: 'status-update',
16
+ taskId,
17
+ contextId,
18
+ status: {
19
+ state: 'failed',
20
+ message: {
21
+ kind: 'message',
22
+ role: 'agent',
23
+ parts: [
24
+ {
25
+ kind: 'text',
26
+ text: errorMessage,
27
+ },
28
+ ],
29
+ messageId: uuidv4(),
30
+ taskId,
31
+ contextId,
32
+ },
33
+ },
34
+ final: true,
35
+ metadata: {
36
+ coderAgent: stateChange,
37
+ model: 'unknown',
38
+ error: errorMessage,
39
+ },
40
+ });
41
+ }
42
+ //# sourceMappingURL=executor_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor_utils.js","sourceRoot":"","sources":["../../../src/utils/executor_utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAc,EACd,QAA2B,EAC3B,MAAc,EACd,SAAiB;IAEjB,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACnE,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,eAAe,CAAC,gBAAgB;KACvC,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC;QACf,IAAI,EAAE,eAAe;QACrB,MAAM;QACN,SAAS;QACT,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY;qBACnB;iBACF;gBACD,SAAS,EAAE,MAAM,EAAE;gBACnB,MAAM;gBACN,SAAS;aACC;SACb;QACD,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE;YACR,UAAU,EAAE,WAAW;YACvB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,YAAY;SACpB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import winston from 'winston';
8
+ declare const logger: winston.Logger;
9
+ export { logger };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import winston from 'winston';
8
+ import { redactSecrets } from './redactSecrets.js';
9
+ const logger = winston.createLogger({
10
+ level: 'info',
11
+ format: winston.format.combine(
12
+ // First, add a timestamp to the log info object
13
+ winston.format.timestamp({
14
+ format: 'YYYY-MM-DD HH:mm:ss.SSS A', // Custom timestamp format
15
+ }),
16
+ // Here we define the custom output format
17
+ winston.format.printf((info) => {
18
+ const { level, timestamp, message, ...rest } = info;
19
+ const sanitizedRest = redactSecrets(rest);
20
+ return (`[${level.toUpperCase()}] ${timestamp} -- ${message}` +
21
+ `${Object.keys(sanitizedRest).length > 0 ? `\n${JSON.stringify(sanitizedRest, null, 2)}` : ''}`); // Only print ...rest if present
22
+ })),
23
+ transports: [new winston.transports.Console()],
24
+ });
25
+ export { logger };
26
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;IAC5B,gDAAgD;IAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QACvB,MAAM,EAAE,2BAA2B,EAAE,0BAA0B;KAChE,CAAC;IACF,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CACL,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS,OAAO,OAAO,EAAE;YACrD,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChG,CAAC,CAAC,gCAAgC;IACrC,CAAC,CAAC,CACH;IACD,UAAU,EAAE,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ /**
8
+ * Recursively redacts values from an object that match secret key patterns.
9
+ * Used to sanitize error objects and request payloads before logging.
10
+ */
11
+ export declare function redactSecrets<T>(value: T): T;
12
+ /**
13
+ * Redacts a single string value if it appears to be a secret (e.g. API key).
14
+ * Returns the original value if it's not string-like.
15
+ */
16
+ export declare function redactIfSecret(value: unknown): unknown;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ /**
8
+ * Patterns that indicate a value may contain sensitive information.
9
+ */
10
+ const SECRET_KEYS = [
11
+ 'apiKey',
12
+ 'api_key',
13
+ 'apikey',
14
+ 'access_token',
15
+ 'accessToken',
16
+ 'refresh_token',
17
+ 'refreshToken',
18
+ 'secret',
19
+ 'password',
20
+ 'token',
21
+ 'credential',
22
+ 'authorization',
23
+ 'bearer',
24
+ ];
25
+ const REDACTED = '[REDACTED]';
26
+ /**
27
+ * Recursively redacts values from an object that match secret key patterns.
28
+ * Used to sanitize error objects and request payloads before logging.
29
+ */
30
+ export function redactSecrets(value) {
31
+ if (value === null || value === undefined) {
32
+ return value;
33
+ }
34
+ if (typeof value === 'string') {
35
+ // Don't redact strings at top level—only object properties
36
+ return value;
37
+ }
38
+ if (Array.isArray(value)) {
39
+ return value.map((item) => redactSecrets(item));
40
+ }
41
+ if (typeof value === 'object') {
42
+ const result = {};
43
+ for (const [key, val] of Object.entries(value)) {
44
+ const keyLower = key.toLowerCase();
45
+ const isSecret = SECRET_KEYS.some((pattern) => keyLower === pattern.toLowerCase() ||
46
+ keyLower.includes(pattern.toLowerCase()));
47
+ if (isSecret && typeof val === 'string' && val.length > 0) {
48
+ result[key] = REDACTED;
49
+ }
50
+ else {
51
+ result[key] = redactSecrets(val);
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ return value;
57
+ }
58
+ /**
59
+ * Redacts a single string value if it appears to be a secret (e.g. API key).
60
+ * Returns the original value if it's not string-like.
61
+ */
62
+ export function redactIfSecret(value) {
63
+ if (typeof value !== 'string') {
64
+ return value;
65
+ }
66
+ // Heuristic: API keys are typically long alphanumeric strings
67
+ if (/^(AIza|sk-|ghp_|ghu_)/.test(value) || value.length > 30) {
68
+ return REDACTED;
69
+ }
70
+ return value;
71
+ }
72
+ //# sourceMappingURL=redactSecrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactSecrets.js","sourceRoot":"","sources":["../../../src/utils/redactSecrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,cAAc;IACd,aAAa;IACb,eAAe;IACf,cAAc;IACd,QAAQ;IACR,UAAU;IACV,OAAO;IACP,YAAY;IACZ,eAAe;IACf,QAAQ;CACT,CAAC;AAEF,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,KAAQ;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,2DAA2D;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAiB,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAC/B,CAAC,OAAO,EAAE,EAAE,CACV,QAAQ,KAAK,OAAO,CAAC,WAAW,EAAE;gBAClC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAC;YAEF,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,8DAA8D;IAC9D,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -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 {};
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { describe, expect, it } from 'vitest';
8
+ import { redactSecrets, redactIfSecret } from './redactSecrets.js';
9
+ describe('redactSecrets', () => {
10
+ it('redacts apiKey from objects', () => {
11
+ const input = { apiKey: 'AIzaSy123456', user: 'john' };
12
+ const result = redactSecrets(input);
13
+ expect(result.apiKey).toBe('[REDACTED]');
14
+ expect(result.user).toBe('john');
15
+ });
16
+ it('redacts nested secret keys', () => {
17
+ const input = {
18
+ auth: { accessToken: 'token123', userId: 42 },
19
+ data: { password: 'secret' },
20
+ };
21
+ const result = redactSecrets(input);
22
+ expect(result.auth.accessToken).toBe('[REDACTED]');
23
+ expect(result.auth.userId).toBe(42);
24
+ expect(result.data.password).toBe('[REDACTED]');
25
+ });
26
+ it('handles arrays correctly', () => {
27
+ const input = [{ apiKey: 'key1' }, { apiKey: 'key2' }];
28
+ const result = redactSecrets(input);
29
+ expect(result[0].apiKey).toBe('[REDACTED]');
30
+ expect(result[1].apiKey).toBe('[REDACTED]');
31
+ });
32
+ it('preserves null and undefined', () => {
33
+ expect(redactSecrets(null)).toBeNull();
34
+ expect(redactSecrets(undefined)).toBeUndefined();
35
+ });
36
+ it('does not redact empty strings', () => {
37
+ const input = { apiKey: '' };
38
+ const result = redactSecrets(input);
39
+ expect(result.apiKey).toBe('');
40
+ });
41
+ it('handles partial key matches like Authorization', () => {
42
+ const input = { Authorization: 'Bearer abc123' };
43
+ const result = redactSecrets(input);
44
+ expect(result.Authorization).toBe('[REDACTED]');
45
+ });
46
+ });
47
+ describe('redactIfSecret', () => {
48
+ it('redacts strings starting with AIza', () => {
49
+ expect(redactIfSecret('AIzaSy123456')).toBe('[REDACTED]');
50
+ });
51
+ it('redacts strings starting with sk-', () => {
52
+ expect(redactIfSecret('sk-1234567890abcdef')).toBe('[REDACTED]');
53
+ });
54
+ it('does not redact short strings', () => {
55
+ expect(redactIfSecret('hello')).toBe('hello');
56
+ });
57
+ it('returns non-strings as-is', () => {
58
+ expect(redactIfSecret(123)).toBe(123);
59
+ expect(redactIfSecret({ key: 'val' })).toEqual({ key: 'val' });
60
+ });
61
+ });
62
+ //# sourceMappingURL=redactSecrets.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactSecrets.test.js","sourceRoot":"","sources":["../../../src/utils/redactSecrets.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * Portions Copyright 2025 TerminaI Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import type { SendStreamingMessageSuccessResponse } from '@a2a-js/sdk';
8
+ import type { Config } from '@terminai/core';
9
+ import type express from 'express';
10
+ import type { Server } from 'node:http';
11
+ export declare const TEST_REMOTE_TOKEN = "test-remote-token";
12
+ export declare function canListenOnLocalhost(): Promise<boolean>;
13
+ export declare function listenOnLocalhost(app: express.Express): Promise<Server>;
14
+ export declare function closeServer(server: Server): Promise<void>;
15
+ export declare function createMockConfig(overrides?: Partial<Config>): Partial<Config>;
16
+ export declare function createStreamMessageRequest(text: string, messageId: string, taskId?: string): {
17
+ jsonrpc: string;
18
+ id: string;
19
+ method: string;
20
+ params: {
21
+ message: {
22
+ kind: string;
23
+ role: string;
24
+ parts: [{
25
+ kind: string;
26
+ text: string;
27
+ }];
28
+ messageId: string;
29
+ };
30
+ metadata: {
31
+ coderAgent: {
32
+ kind: string;
33
+ workspacePath: string;
34
+ };
35
+ };
36
+ taskId?: string;
37
+ };
38
+ };
39
+ export declare function createAuthHeader(token?: string): {
40
+ Authorization: string;
41
+ };
42
+ export declare function createSignedHeaders(method: string, path: string, body: unknown, token?: string, nonce?: string): {
43
+ Authorization: string;
44
+ 'X-Gemini-Nonce': string;
45
+ 'X-Gemini-Signature': string;
46
+ };
47
+ export declare function assertUniqueFinalEventIsLast(events: SendStreamingMessageSuccessResponse[]): void;
48
+ export declare function assertTaskCreationAndWorkingStatus(events: SendStreamingMessageSuccessResponse[]): void;