@google/adk 0.4.0 → 0.6.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.
- package/README.md +1 -1
- package/dist/cjs/a2a/a2a_event.js +317 -0
- package/dist/cjs/a2a/a2a_remote_agent.js +174 -0
- package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +198 -0
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +165 -0
- package/dist/cjs/a2a/agent_card.js +380 -0
- package/dist/cjs/a2a/agent_executor.js +221 -0
- package/dist/cjs/a2a/agent_to_a2a.js +115 -0
- package/dist/cjs/a2a/event_converter_utils.js +201 -0
- package/dist/cjs/a2a/event_processor_utils.js +180 -0
- package/dist/cjs/a2a/executor_context.js +53 -0
- package/dist/cjs/a2a/metadata_converter_utils.js +126 -0
- package/dist/cjs/a2a/part_converter_utils.js +47 -34
- package/dist/cjs/agents/base_agent.js +3 -3
- package/dist/cjs/{tools/tool_context.js → agents/context.js} +70 -15
- package/dist/cjs/agents/functions.js +2 -2
- package/dist/cjs/agents/llm_agent.js +38 -674
- package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +132 -0
- package/dist/cjs/agents/processors/basic_llm_request_processor.js +68 -0
- package/dist/cjs/agents/processors/code_execution_request_processor.js +389 -0
- package/dist/cjs/agents/{content_processor_utils.js → processors/content_processor_utils.js} +21 -2
- package/dist/cjs/agents/processors/content_request_processor.js +87 -0
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +61 -0
- package/dist/cjs/agents/processors/identity_llm_request_processor.js +54 -0
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +85 -0
- package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +165 -0
- package/dist/cjs/artifacts/file_artifact_service.js +35 -4
- package/dist/cjs/common.js +48 -7
- package/dist/cjs/context/base_context_compactor.js +27 -0
- package/dist/cjs/context/summarizers/base_summarizer.js +27 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +93 -0
- package/dist/cjs/context/token_based_context_compactor.js +135 -0
- package/dist/cjs/context/truncating_context_compactor.js +58 -0
- package/dist/cjs/events/compacted_event.js +53 -0
- package/dist/cjs/index.js +113 -53
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/memory/in_memory_memory_service.js +1 -1
- package/dist/cjs/models/llm_response.js +2 -0
- package/dist/cjs/plugins/base_plugin.js +1 -1
- package/dist/cjs/runner/runner.js +20 -11
- package/dist/cjs/sessions/database_session_service.js +4 -1
- package/dist/cjs/sessions/db/operations.js +25 -23
- package/dist/cjs/sessions/state.js +2 -2
- package/dist/cjs/tools/agent_tool.js +6 -5
- package/dist/cjs/tools/base_tool.js +3 -0
- package/dist/cjs/tools/base_toolset.js +13 -3
- package/dist/cjs/tools/exit_loop_tool.js +63 -0
- package/dist/cjs/tools/load_artifacts_tool.js +188 -0
- package/dist/cjs/tools/load_memory_tool.js +107 -0
- package/dist/cjs/tools/mcp/mcp_toolset.js +9 -5
- package/dist/cjs/tools/preload_memory_tool.js +109 -0
- package/dist/cjs/utils/logger.js +62 -54
- package/dist/cjs/version.js +1 -1
- package/dist/esm/a2a/a2a_event.js +269 -0
- package/dist/esm/a2a/a2a_remote_agent.js +148 -0
- package/dist/esm/a2a/a2a_remote_agent_run_processor.js +175 -0
- package/dist/esm/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/esm/a2a/agent_card.js +340 -0
- package/dist/esm/a2a/agent_executor.js +202 -0
- package/dist/esm/a2a/agent_to_a2a.js +80 -0
- package/dist/esm/a2a/event_converter_utils.js +187 -0
- package/dist/esm/a2a/event_processor_utils.js +159 -0
- package/dist/esm/a2a/executor_context.js +23 -0
- package/dist/esm/a2a/metadata_converter_utils.js +91 -0
- package/dist/esm/a2a/part_converter_utils.js +49 -34
- package/dist/esm/agents/base_agent.js +3 -3
- package/dist/{web/tools/tool_context.js → esm/agents/context.js} +66 -11
- package/dist/esm/agents/functions.js +2 -2
- package/dist/esm/agents/llm_agent.js +31 -683
- package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +101 -0
- package/dist/esm/agents/processors/basic_llm_request_processor.js +37 -0
- package/dist/esm/agents/processors/code_execution_request_processor.js +363 -0
- package/dist/esm/agents/{content_processor_utils.js → processors/content_processor_utils.js} +23 -2
- package/dist/esm/agents/processors/content_request_processor.js +59 -0
- package/dist/esm/agents/processors/context_compactor_request_processor.js +31 -0
- package/dist/esm/agents/processors/identity_llm_request_processor.js +23 -0
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +54 -0
- package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +140 -0
- package/dist/esm/artifacts/file_artifact_service.js +30 -3
- package/dist/esm/common.js +44 -10
- package/dist/esm/context/base_context_compactor.js +5 -0
- package/dist/esm/context/summarizers/base_summarizer.js +5 -0
- package/dist/esm/context/summarizers/llm_summarizer.js +65 -0
- package/dist/esm/context/token_based_context_compactor.js +105 -0
- package/dist/esm/context/truncating_context_compactor.js +28 -0
- package/dist/esm/events/compacted_event.js +22 -0
- package/dist/esm/index.js +119 -18
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/memory/in_memory_memory_service.js +1 -1
- package/dist/esm/models/llm_response.js +2 -0
- package/dist/esm/plugins/base_plugin.js +1 -1
- package/dist/esm/runner/runner.js +18 -10
- package/dist/esm/sessions/database_session_service.js +4 -1
- package/dist/esm/sessions/db/operations.js +32 -18
- package/dist/esm/sessions/state.js +2 -2
- package/dist/esm/tools/agent_tool.js +6 -5
- package/dist/esm/tools/base_tool.js +3 -0
- package/dist/esm/tools/base_toolset.js +11 -2
- package/dist/esm/tools/exit_loop_tool.js +32 -0
- package/dist/esm/tools/load_artifacts_tool.js +159 -0
- package/dist/esm/tools/load_memory_tool.js +78 -0
- package/dist/esm/tools/mcp/mcp_toolset.js +9 -5
- package/dist/esm/tools/preload_memory_tool.js +80 -0
- package/dist/esm/utils/logger.js +52 -54
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_event.d.ts +139 -0
- package/dist/types/a2a/a2a_remote_agent.d.ts +63 -0
- package/dist/types/a2a/a2a_remote_agent_run_processor.d.ts +31 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +38 -0
- package/dist/types/a2a/agent_card.d.ts +23 -0
- package/dist/types/a2a/agent_executor.d.ts +52 -0
- package/dist/types/a2a/agent_to_a2a.d.ts +45 -0
- package/dist/types/a2a/event_converter_utils.d.ts +20 -0
- package/dist/types/a2a/event_processor_utils.d.ts +24 -0
- package/dist/types/a2a/executor_context.d.ts +33 -0
- package/dist/types/a2a/metadata_converter_utils.d.ts +63 -0
- package/dist/types/a2a/part_converter_utils.d.ts +4 -3
- package/dist/types/agents/base_agent.d.ts +2 -2
- package/dist/types/{tools/tool_context.d.ts → agents/context.d.ts} +43 -8
- package/dist/types/agents/llm_agent.d.ts +14 -31
- package/dist/types/agents/loop_agent.d.ts +1 -1
- package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +18 -0
- package/dist/types/agents/{base_llm_processor.d.ts → processors/base_llm_processor.d.ts} +4 -4
- package/dist/types/agents/processors/basic_llm_request_processor.d.ts +13 -0
- package/dist/types/agents/processors/code_execution_request_processor.d.ts +34 -0
- package/dist/types/agents/{content_processor_utils.d.ts → processors/content_processor_utils.d.ts} +1 -1
- package/dist/types/agents/processors/content_request_processor.d.ts +13 -0
- package/dist/types/agents/processors/context_compactor_request_processor.d.ts +22 -0
- package/dist/types/agents/processors/identity_llm_request_processor.d.ts +13 -0
- package/dist/types/agents/processors/instructions_llm_request_processor.d.ts +16 -0
- package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +13 -0
- package/dist/types/artifacts/file_artifact_service.d.ts +4 -0
- package/dist/types/auth/credential_service/base_credential_service.d.ts +3 -3
- package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +3 -3
- package/dist/types/common.d.ts +20 -5
- package/dist/types/context/base_context_compactor.d.ts +24 -0
- package/dist/types/context/summarizers/base_summarizer.d.ts +19 -0
- package/dist/types/context/summarizers/llm_summarizer.d.ts +23 -0
- package/dist/types/context/token_based_context_compactor.d.ts +33 -0
- package/dist/types/context/truncating_context_compactor.d.ts +24 -0
- package/dist/types/events/compacted_event.d.ts +33 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/models/llm_response.d.ts +5 -1
- package/dist/types/plugins/base_plugin.d.ts +12 -13
- package/dist/types/plugins/logging_plugin.d.ts +9 -10
- package/dist/types/plugins/plugin_manager.d.ts +9 -10
- package/dist/types/plugins/security_plugin.d.ts +2 -2
- package/dist/types/runner/runner.d.ts +13 -0
- package/dist/types/sessions/database_session_service.d.ts +2 -1
- package/dist/types/sessions/db/operations.d.ts +3 -4
- package/dist/types/tools/base_tool.d.ts +3 -3
- package/dist/types/tools/base_toolset.d.ts +12 -3
- package/dist/types/tools/exit_loop_tool.d.ts +24 -0
- package/dist/types/tools/forwarding_artifact_service.d.ts +2 -2
- package/dist/types/tools/function_tool.d.ts +2 -2
- package/dist/types/tools/load_artifacts_tool.d.ts +21 -0
- package/dist/types/tools/load_memory_tool.d.ts +22 -0
- package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -1
- package/dist/types/tools/preload_memory_tool.d.ts +23 -0
- package/dist/types/utils/logger.d.ts +5 -9
- package/dist/types/version.d.ts +1 -1
- package/dist/web/a2a/a2a_event.js +269 -0
- package/dist/web/a2a/a2a_remote_agent.js +193 -0
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +175 -0
- package/dist/web/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/web/a2a/agent_card.js +340 -0
- package/dist/web/a2a/agent_executor.js +216 -0
- package/dist/web/a2a/agent_to_a2a.js +80 -0
- package/dist/web/a2a/event_converter_utils.js +201 -0
- package/dist/web/a2a/event_processor_utils.js +168 -0
- package/dist/web/a2a/executor_context.js +23 -0
- package/dist/web/a2a/metadata_converter_utils.js +108 -0
- package/dist/web/a2a/part_converter_utils.js +49 -34
- package/dist/web/agents/base_agent.js +3 -3
- package/dist/{esm/tools/tool_context.js → web/agents/context.js} +66 -11
- package/dist/web/agents/functions.js +2 -2
- package/dist/web/agents/llm_agent.js +31 -661
- package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +100 -0
- package/dist/web/agents/processors/basic_llm_request_processor.js +71 -0
- package/dist/web/agents/processors/code_execution_request_processor.js +365 -0
- package/dist/web/agents/{content_processor_utils.js → processors/content_processor_utils.js} +22 -2
- package/dist/web/agents/processors/content_request_processor.js +77 -0
- package/dist/web/agents/processors/context_compactor_request_processor.js +49 -0
- package/dist/web/agents/processors/identity_llm_request_processor.js +41 -0
- package/dist/web/agents/processors/instructions_llm_request_processor.js +72 -0
- package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +158 -0
- package/dist/web/artifacts/file_artifact_service.js +30 -3
- package/dist/web/common.js +44 -10
- package/dist/web/context/base_context_compactor.js +5 -0
- package/dist/web/context/summarizers/base_summarizer.js +5 -0
- package/dist/web/context/summarizers/llm_summarizer.js +74 -0
- package/dist/web/context/token_based_context_compactor.js +105 -0
- package/dist/web/context/truncating_context_compactor.js +28 -0
- package/dist/web/events/compacted_event.js +40 -0
- package/dist/web/index.js +13 -18
- package/dist/web/index.js.map +7 -0
- package/dist/web/memory/in_memory_memory_service.js +1 -1
- package/dist/web/models/llm_response.js +2 -0
- package/dist/web/plugins/base_plugin.js +1 -1
- package/dist/web/runner/runner.js +18 -10
- package/dist/web/sessions/database_session_service.js +4 -1
- package/dist/web/sessions/db/operations.js +32 -18
- package/dist/web/sessions/state.js +2 -2
- package/dist/web/tools/agent_tool.js +6 -5
- package/dist/web/tools/base_tool.js +3 -0
- package/dist/web/tools/base_toolset.js +11 -2
- package/dist/web/tools/exit_loop_tool.js +32 -0
- package/dist/web/tools/load_artifacts_tool.js +150 -0
- package/dist/web/tools/load_memory_tool.js +77 -0
- package/dist/web/tools/mcp/mcp_toolset.js +27 -5
- package/dist/web/tools/preload_memory_tool.js +75 -0
- package/dist/web/utils/logger.js +52 -54
- package/dist/web/version.js +1 -1
- package/package.json +7 -4
- package/dist/cjs/agents/callback_context.js +0 -101
- package/dist/esm/agents/callback_context.js +0 -71
- package/dist/types/agents/callback_context.d.ts +0 -42
- package/dist/web/agents/callback_context.js +0 -71
- /package/dist/cjs/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
- /package/dist/esm/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
- /package/dist/web/agents/{base_llm_processor.js → processors/base_llm_processor.js} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FunctionDeclaration } from '@google/genai';
|
|
7
|
+
import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
|
|
8
|
+
/**
|
|
9
|
+
* A tool that loads the artifacts and adds them to the session.
|
|
10
|
+
*/
|
|
11
|
+
export declare class LoadArtifactsTool extends BaseTool {
|
|
12
|
+
constructor();
|
|
13
|
+
_getDeclaration(): FunctionDeclaration | undefined;
|
|
14
|
+
runAsync({ args }: RunAsyncToolRequest): Promise<unknown>;
|
|
15
|
+
processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
|
|
16
|
+
private appendArtifactsToLlmRequest;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A global instance of {@link LoadArtifactsTool}.
|
|
20
|
+
*/
|
|
21
|
+
export declare const LOAD_ARTIFACTS: LoadArtifactsTool;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FunctionDeclaration } from '@google/genai';
|
|
7
|
+
import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
|
|
8
|
+
/**
|
|
9
|
+
* A tool that loads the memory for the current user.
|
|
10
|
+
*
|
|
11
|
+
* NOTE: Currently this tool only uses text part from the memory.
|
|
12
|
+
*/
|
|
13
|
+
export declare class LoadMemoryTool extends BaseTool {
|
|
14
|
+
constructor();
|
|
15
|
+
_getDeclaration(): FunctionDeclaration | undefined;
|
|
16
|
+
runAsync({ args, toolContext, }: RunAsyncToolRequest): Promise<unknown>;
|
|
17
|
+
processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A global instance of {@link LoadMemoryTool}.
|
|
21
|
+
*/
|
|
22
|
+
export declare const LOAD_MEMORY: LoadMemoryTool;
|
|
@@ -32,7 +32,7 @@ import { MCPConnectionParams } from './mcp_session_manager.js';
|
|
|
32
32
|
*/
|
|
33
33
|
export declare class MCPToolset extends BaseToolset {
|
|
34
34
|
private readonly mcpSessionManager;
|
|
35
|
-
constructor(connectionParams: MCPConnectionParams, toolFilter?: ToolPredicate | string[]);
|
|
35
|
+
constructor(connectionParams: MCPConnectionParams, toolFilter?: ToolPredicate | string[], prefix?: string);
|
|
36
36
|
getTools(): Promise<BaseTool[]>;
|
|
37
37
|
close(): Promise<void>;
|
|
38
38
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseTool, RunAsyncToolRequest, ToolProcessLlmRequest } from './base_tool.js';
|
|
7
|
+
/**
|
|
8
|
+
* A tool that preloads the memory for the current user.
|
|
9
|
+
*
|
|
10
|
+
* This tool will be automatically executed for each llm_request, and it won't be
|
|
11
|
+
* called by the model.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: Currently this tool only uses text part from the memory.
|
|
14
|
+
*/
|
|
15
|
+
export declare class PreloadMemoryTool extends BaseTool {
|
|
16
|
+
constructor();
|
|
17
|
+
runAsync({ args, toolContext, }: RunAsyncToolRequest): Promise<unknown>;
|
|
18
|
+
processLlmRequest(request: ToolProcessLlmRequest): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A global instance of {@link PreloadMemoryTool}.
|
|
22
|
+
*/
|
|
23
|
+
export declare const PRELOAD_MEMORY: PreloadMemoryTool;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
1
|
/** Log levels for the logger. */
|
|
7
2
|
export declare enum LogLevel {
|
|
8
3
|
DEBUG = 0,
|
|
@@ -19,11 +14,8 @@ export interface Logger {
|
|
|
19
14
|
info(...args: unknown[]): void;
|
|
20
15
|
warn(...args: unknown[]): void;
|
|
21
16
|
error(...args: unknown[]): void;
|
|
17
|
+
setLogLevel(level: LogLevel): void;
|
|
22
18
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Sets the log level for the logger.
|
|
25
|
-
*/
|
|
26
|
-
export declare function setLogLevel(level: LogLevel): void;
|
|
27
19
|
/**
|
|
28
20
|
* Sets a custom logger for ADK, or null to disable logging.
|
|
29
21
|
*/
|
|
@@ -36,6 +28,10 @@ export declare function getLogger(): Logger;
|
|
|
36
28
|
* Resets the logger to the default SimpleLogger.
|
|
37
29
|
*/
|
|
38
30
|
export declare function resetLogger(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Sets the log level for the logger.
|
|
33
|
+
*/
|
|
34
|
+
export declare function setLogLevel(level: LogLevel): void;
|
|
39
35
|
/**
|
|
40
36
|
* The logger instance for ADK.
|
|
41
37
|
*/
|
package/dist/types/version.d.ts
CHANGED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { randomUUID } from "../utils/env_aware_utils.js";
|
|
7
|
+
var MessageRole = /* @__PURE__ */ ((MessageRole2) => {
|
|
8
|
+
MessageRole2["USER"] = "user";
|
|
9
|
+
MessageRole2["AGENT"] = "agent";
|
|
10
|
+
return MessageRole2;
|
|
11
|
+
})(MessageRole || {});
|
|
12
|
+
var TaskState = /* @__PURE__ */ ((TaskState2) => {
|
|
13
|
+
TaskState2["SUBMITTED"] = "submitted";
|
|
14
|
+
TaskState2["WORKING"] = "working";
|
|
15
|
+
TaskState2["COMPLETED"] = "completed";
|
|
16
|
+
TaskState2["FAILED"] = "failed";
|
|
17
|
+
TaskState2["CANCELED"] = "canceled";
|
|
18
|
+
TaskState2["REJECTED"] = "rejected";
|
|
19
|
+
TaskState2["INPUT_REQUIRED"] = "input-required";
|
|
20
|
+
return TaskState2;
|
|
21
|
+
})(TaskState || {});
|
|
22
|
+
function isTaskStatusUpdateEvent(event) {
|
|
23
|
+
return (event == null ? void 0 : event.kind) === "status-update";
|
|
24
|
+
}
|
|
25
|
+
function isTaskArtifactUpdateEvent(event) {
|
|
26
|
+
return (event == null ? void 0 : event.kind) === "artifact-update";
|
|
27
|
+
}
|
|
28
|
+
function isMessage(event) {
|
|
29
|
+
return (event == null ? void 0 : event.kind) === "message";
|
|
30
|
+
}
|
|
31
|
+
function isTask(event) {
|
|
32
|
+
return (event == null ? void 0 : event.kind) === "task";
|
|
33
|
+
}
|
|
34
|
+
function getEventMetadata(event) {
|
|
35
|
+
if (isTaskArtifactUpdateEvent(event)) {
|
|
36
|
+
return event.artifact.metadata || {};
|
|
37
|
+
}
|
|
38
|
+
if (isTaskStatusUpdateEvent(event) || isTask(event) || isMessage(event)) {
|
|
39
|
+
return event.metadata || {};
|
|
40
|
+
}
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
function isFailedTaskStatusUpdateEvent(event) {
|
|
44
|
+
return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "failed" /* FAILED */;
|
|
45
|
+
}
|
|
46
|
+
function isTerminalTaskStatusUpdateEvent(event) {
|
|
47
|
+
return (isTaskStatusUpdateEvent(event) || isTask(event)) && [
|
|
48
|
+
"completed" /* COMPLETED */,
|
|
49
|
+
"failed" /* FAILED */,
|
|
50
|
+
"canceled" /* CANCELED */,
|
|
51
|
+
"rejected" /* REJECTED */
|
|
52
|
+
].includes(event.status.state);
|
|
53
|
+
}
|
|
54
|
+
function isInputRequiredTaskStatusUpdateEvent(event) {
|
|
55
|
+
return (isTaskStatusUpdateEvent(event) || isTask(event)) && event.status.state === "input-required" /* INPUT_REQUIRED */;
|
|
56
|
+
}
|
|
57
|
+
function getFailedTaskStatusUpdateEventError(event) {
|
|
58
|
+
var _a;
|
|
59
|
+
if (!isFailedTaskStatusUpdateEvent(event)) {
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
const parts = ((_a = event.status.message) == null ? void 0 : _a.parts) || [];
|
|
63
|
+
if (parts.length === 0) {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
if (parts[0].kind !== "text") {
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
return parts[0].text;
|
|
70
|
+
}
|
|
71
|
+
function createTaskSubmittedEvent({
|
|
72
|
+
taskId,
|
|
73
|
+
contextId,
|
|
74
|
+
message,
|
|
75
|
+
metadata
|
|
76
|
+
}) {
|
|
77
|
+
return {
|
|
78
|
+
kind: "status-update",
|
|
79
|
+
taskId,
|
|
80
|
+
contextId,
|
|
81
|
+
final: false,
|
|
82
|
+
status: {
|
|
83
|
+
state: "submitted" /* SUBMITTED */,
|
|
84
|
+
message,
|
|
85
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
86
|
+
},
|
|
87
|
+
metadata
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function createTask({
|
|
91
|
+
contextId,
|
|
92
|
+
message,
|
|
93
|
+
taskId,
|
|
94
|
+
metadata
|
|
95
|
+
}) {
|
|
96
|
+
return {
|
|
97
|
+
kind: "task",
|
|
98
|
+
id: taskId || randomUUID(),
|
|
99
|
+
contextId,
|
|
100
|
+
history: [message],
|
|
101
|
+
status: {
|
|
102
|
+
state: "submitted" /* SUBMITTED */,
|
|
103
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
104
|
+
},
|
|
105
|
+
metadata
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function createTaskWorkingEvent({
|
|
109
|
+
taskId,
|
|
110
|
+
contextId,
|
|
111
|
+
message,
|
|
112
|
+
metadata
|
|
113
|
+
}) {
|
|
114
|
+
return {
|
|
115
|
+
kind: "status-update",
|
|
116
|
+
taskId,
|
|
117
|
+
contextId,
|
|
118
|
+
final: false,
|
|
119
|
+
status: {
|
|
120
|
+
state: "working" /* WORKING */,
|
|
121
|
+
message,
|
|
122
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
123
|
+
},
|
|
124
|
+
metadata
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function createTaskCompletedEvent({
|
|
128
|
+
taskId,
|
|
129
|
+
contextId,
|
|
130
|
+
metadata
|
|
131
|
+
}) {
|
|
132
|
+
return {
|
|
133
|
+
kind: "status-update",
|
|
134
|
+
taskId,
|
|
135
|
+
contextId,
|
|
136
|
+
final: true,
|
|
137
|
+
status: {
|
|
138
|
+
state: "completed" /* COMPLETED */,
|
|
139
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
140
|
+
},
|
|
141
|
+
metadata
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function createTaskArtifactUpdateEvent({
|
|
145
|
+
taskId,
|
|
146
|
+
contextId,
|
|
147
|
+
artifactId,
|
|
148
|
+
parts = [],
|
|
149
|
+
metadata,
|
|
150
|
+
append,
|
|
151
|
+
lastChunk
|
|
152
|
+
}) {
|
|
153
|
+
return {
|
|
154
|
+
kind: "artifact-update",
|
|
155
|
+
taskId,
|
|
156
|
+
contextId,
|
|
157
|
+
append,
|
|
158
|
+
lastChunk,
|
|
159
|
+
artifact: {
|
|
160
|
+
artifactId: artifactId || randomUUID(),
|
|
161
|
+
parts
|
|
162
|
+
},
|
|
163
|
+
metadata
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function createTaskFailedEvent({
|
|
167
|
+
taskId,
|
|
168
|
+
contextId,
|
|
169
|
+
error,
|
|
170
|
+
metadata
|
|
171
|
+
}) {
|
|
172
|
+
return {
|
|
173
|
+
kind: "status-update",
|
|
174
|
+
taskId,
|
|
175
|
+
contextId,
|
|
176
|
+
final: true,
|
|
177
|
+
status: {
|
|
178
|
+
state: "failed" /* FAILED */,
|
|
179
|
+
message: {
|
|
180
|
+
kind: "message",
|
|
181
|
+
messageId: randomUUID(),
|
|
182
|
+
role: "agent",
|
|
183
|
+
taskId,
|
|
184
|
+
contextId,
|
|
185
|
+
parts: [
|
|
186
|
+
{
|
|
187
|
+
kind: "text",
|
|
188
|
+
text: error.message
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
193
|
+
},
|
|
194
|
+
metadata
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function createTaskInputRequiredEvent({
|
|
198
|
+
taskId,
|
|
199
|
+
contextId,
|
|
200
|
+
parts,
|
|
201
|
+
metadata
|
|
202
|
+
}) {
|
|
203
|
+
return {
|
|
204
|
+
kind: "status-update",
|
|
205
|
+
taskId,
|
|
206
|
+
contextId,
|
|
207
|
+
final: true,
|
|
208
|
+
status: {
|
|
209
|
+
state: "input-required" /* INPUT_REQUIRED */,
|
|
210
|
+
message: {
|
|
211
|
+
kind: "message",
|
|
212
|
+
messageId: randomUUID(),
|
|
213
|
+
role: "agent",
|
|
214
|
+
taskId,
|
|
215
|
+
contextId,
|
|
216
|
+
parts
|
|
217
|
+
},
|
|
218
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
219
|
+
},
|
|
220
|
+
metadata
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function createInputMissingErrorEvent({
|
|
224
|
+
taskId,
|
|
225
|
+
contextId,
|
|
226
|
+
parts,
|
|
227
|
+
metadata
|
|
228
|
+
}) {
|
|
229
|
+
return {
|
|
230
|
+
kind: "status-update",
|
|
231
|
+
taskId,
|
|
232
|
+
contextId,
|
|
233
|
+
final: true,
|
|
234
|
+
status: {
|
|
235
|
+
state: "input-required" /* INPUT_REQUIRED */,
|
|
236
|
+
message: {
|
|
237
|
+
kind: "message",
|
|
238
|
+
messageId: randomUUID(),
|
|
239
|
+
role: "agent",
|
|
240
|
+
taskId,
|
|
241
|
+
contextId,
|
|
242
|
+
parts
|
|
243
|
+
},
|
|
244
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
245
|
+
},
|
|
246
|
+
metadata
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
export {
|
|
250
|
+
MessageRole,
|
|
251
|
+
TaskState,
|
|
252
|
+
createInputMissingErrorEvent,
|
|
253
|
+
createTask,
|
|
254
|
+
createTaskArtifactUpdateEvent,
|
|
255
|
+
createTaskCompletedEvent,
|
|
256
|
+
createTaskFailedEvent,
|
|
257
|
+
createTaskInputRequiredEvent,
|
|
258
|
+
createTaskSubmittedEvent,
|
|
259
|
+
createTaskWorkingEvent,
|
|
260
|
+
getEventMetadata,
|
|
261
|
+
getFailedTaskStatusUpdateEventError,
|
|
262
|
+
isFailedTaskStatusUpdateEvent,
|
|
263
|
+
isInputRequiredTaskStatusUpdateEvent,
|
|
264
|
+
isMessage,
|
|
265
|
+
isTask,
|
|
266
|
+
isTaskArtifactUpdateEvent,
|
|
267
|
+
isTaskStatusUpdateEvent,
|
|
268
|
+
isTerminalTaskStatusUpdateEvent
|
|
269
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __spreadValues = (a, b) => {
|
|
8
|
+
for (var prop in b || (b = {}))
|
|
9
|
+
if (__hasOwnProp.call(b, prop))
|
|
10
|
+
__defNormalProp(a, prop, b[prop]);
|
|
11
|
+
if (__getOwnPropSymbols)
|
|
12
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
13
|
+
if (__propIsEnum.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
}
|
|
16
|
+
return a;
|
|
17
|
+
};
|
|
18
|
+
var __await = function(promise, isYieldStar) {
|
|
19
|
+
this[0] = promise;
|
|
20
|
+
this[1] = isYieldStar;
|
|
21
|
+
};
|
|
22
|
+
var __asyncGenerator = (__this, __arguments, generator) => {
|
|
23
|
+
var resume = (k, v, yes, no) => {
|
|
24
|
+
try {
|
|
25
|
+
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
|
|
26
|
+
Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
|
|
27
|
+
} catch (e) {
|
|
28
|
+
no(e);
|
|
29
|
+
}
|
|
30
|
+
}, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
|
|
31
|
+
return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
|
|
32
|
+
};
|
|
33
|
+
var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
|
|
34
|
+
/**
|
|
35
|
+
* @license
|
|
36
|
+
* Copyright 2026 Google LLC
|
|
37
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
38
|
+
*/
|
|
39
|
+
import {
|
|
40
|
+
AGENT_CARD_PATH
|
|
41
|
+
} from "@a2a-js/sdk";
|
|
42
|
+
import { ClientFactory } from "@a2a-js/sdk/client";
|
|
43
|
+
import { BaseAgent } from "../agents/base_agent.js";
|
|
44
|
+
import { createEvent } from "../events/event.js";
|
|
45
|
+
import { randomUUID } from "../utils/env_aware_utils.js";
|
|
46
|
+
import { logger } from "../utils/logger.js";
|
|
47
|
+
import { MessageRole } from "./a2a_event.js";
|
|
48
|
+
import { A2ARemoteAgentRunProcessor } from "./a2a_remote_agent_run_processor.js";
|
|
49
|
+
import {
|
|
50
|
+
getUserFunctionCallAt,
|
|
51
|
+
toMissingRemoteSessionParts
|
|
52
|
+
} from "./a2a_remote_agent_utils.js";
|
|
53
|
+
import { resolveAgentCard } from "./agent_card.js";
|
|
54
|
+
import { toAdkEvent } from "./event_converter_utils.js";
|
|
55
|
+
import { getA2ASessionMetadata } from "./metadata_converter_utils.js";
|
|
56
|
+
import { toA2AParts } from "./part_converter_utils.js";
|
|
57
|
+
class RemoteA2AAgent extends BaseAgent {
|
|
58
|
+
constructor(a2aConfig) {
|
|
59
|
+
super(a2aConfig);
|
|
60
|
+
this.a2aConfig = a2aConfig;
|
|
61
|
+
this.isInitialized = false;
|
|
62
|
+
if (!a2aConfig.agentCard) {
|
|
63
|
+
throw new Error("AgentCard must be provided");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async init() {
|
|
67
|
+
if (this.isInitialized) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.card = await resolveAgentCard(this.a2aConfig.agentCard);
|
|
71
|
+
const factory = this.a2aConfig.clientFactory || new ClientFactory();
|
|
72
|
+
this.client = await factory.createFromAgentCard(this.card);
|
|
73
|
+
this.isInitialized = true;
|
|
74
|
+
}
|
|
75
|
+
runAsyncImpl(context) {
|
|
76
|
+
return __asyncGenerator(this, null, function* () {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
yield new __await(this.init());
|
|
79
|
+
try {
|
|
80
|
+
const events = context.session.events;
|
|
81
|
+
if (events.length === 0) {
|
|
82
|
+
throw new Error("No events in session to send");
|
|
83
|
+
}
|
|
84
|
+
const userFnCall = getUserFunctionCallAt(
|
|
85
|
+
context.session,
|
|
86
|
+
events.length - 1
|
|
87
|
+
);
|
|
88
|
+
let parts;
|
|
89
|
+
let taskId = void 0;
|
|
90
|
+
let contextId = void 0;
|
|
91
|
+
if (userFnCall) {
|
|
92
|
+
const event = userFnCall.response;
|
|
93
|
+
parts = toA2AParts(
|
|
94
|
+
((_a = event.content) == null ? void 0 : _a.parts) || [],
|
|
95
|
+
event.longRunningToolIds
|
|
96
|
+
);
|
|
97
|
+
taskId = userFnCall.taskId;
|
|
98
|
+
contextId = userFnCall.contextId;
|
|
99
|
+
} else {
|
|
100
|
+
const missing = toMissingRemoteSessionParts(context, context.session);
|
|
101
|
+
parts = missing.parts;
|
|
102
|
+
contextId = missing.contextId;
|
|
103
|
+
}
|
|
104
|
+
const message = {
|
|
105
|
+
kind: "message",
|
|
106
|
+
messageId: randomUUID(),
|
|
107
|
+
role: MessageRole.USER,
|
|
108
|
+
parts,
|
|
109
|
+
metadata: __spreadValues({}, getA2ASessionMetadata({
|
|
110
|
+
appName: context.session.appName,
|
|
111
|
+
userId: context.session.userId,
|
|
112
|
+
sessionId: context.session.id
|
|
113
|
+
}))
|
|
114
|
+
};
|
|
115
|
+
if (taskId) message.taskId = taskId;
|
|
116
|
+
if (contextId) message.contextId = contextId;
|
|
117
|
+
const params = {
|
|
118
|
+
message,
|
|
119
|
+
configuration: this.a2aConfig.messageSendConfig
|
|
120
|
+
};
|
|
121
|
+
const processor = new A2ARemoteAgentRunProcessor(params);
|
|
122
|
+
if (this.a2aConfig.beforeRequestCallbacks) {
|
|
123
|
+
for (const callback of this.a2aConfig.beforeRequestCallbacks) {
|
|
124
|
+
yield new __await(callback(context, params));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const useStreaming = ((_b = this.card.capabilities) == null ? void 0 : _b.streaming) !== false;
|
|
128
|
+
if (useStreaming) {
|
|
129
|
+
try {
|
|
130
|
+
for (var iter = __forAwait(this.client.sendMessageStream(params)), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
131
|
+
const chunk = temp.value;
|
|
132
|
+
if (this.a2aConfig.afterRequestCallbacks) {
|
|
133
|
+
for (const callback of this.a2aConfig.afterRequestCallbacks) {
|
|
134
|
+
yield new __await(callback(context, chunk));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const adkEvent = toAdkEvent(chunk, context.invocationId, this.name);
|
|
138
|
+
if (!adkEvent) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
processor.updateCustomMetadata(adkEvent, chunk);
|
|
142
|
+
const eventsToEmit = processor.aggregatePartial(
|
|
143
|
+
context,
|
|
144
|
+
chunk,
|
|
145
|
+
adkEvent
|
|
146
|
+
);
|
|
147
|
+
for (const ev of eventsToEmit) {
|
|
148
|
+
yield ev;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
} catch (temp) {
|
|
152
|
+
error = [temp];
|
|
153
|
+
} finally {
|
|
154
|
+
try {
|
|
155
|
+
more && (temp = iter.return) && (yield new __await(temp.call(iter)));
|
|
156
|
+
} finally {
|
|
157
|
+
if (error)
|
|
158
|
+
throw error[0];
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
} else {
|
|
162
|
+
const result = yield new __await(this.client.sendMessage(params));
|
|
163
|
+
if (this.a2aConfig.afterRequestCallbacks) {
|
|
164
|
+
for (const callback of this.a2aConfig.afterRequestCallbacks) {
|
|
165
|
+
yield new __await(callback(context, result));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const adkEvent = toAdkEvent(result, context.invocationId, this.name);
|
|
169
|
+
if (adkEvent) {
|
|
170
|
+
processor.updateCustomMetadata(adkEvent, result);
|
|
171
|
+
yield adkEvent;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
} catch (e) {
|
|
175
|
+
const error2 = e;
|
|
176
|
+
logger.error("A2ARemoteAgent ".concat(this.name, " failed:"), error2);
|
|
177
|
+
yield createEvent({
|
|
178
|
+
author: this.name,
|
|
179
|
+
invocationId: context.invocationId,
|
|
180
|
+
errorMessage: error2.message,
|
|
181
|
+
turnComplete: true
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
runLiveImpl(_context) {
|
|
187
|
+
throw new Error("Live mode is not supported in A2ARemoteAgent yet.");
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
export {
|
|
191
|
+
AGENT_CARD_PATH,
|
|
192
|
+
RemoteA2AAgent
|
|
193
|
+
};
|