@paean-ai/adk 0.2.17 → 0.2.19

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 (253) hide show
  1. package/dist/cjs/index.js +3 -3
  2. package/dist/cjs/index.js.map +3 -3
  3. package/dist/esm/index.js +3 -3
  4. package/dist/esm/index.js.map +3 -3
  5. package/dist/web/index.js +1 -1
  6. package/dist/web/index.js.map +3 -3
  7. package/package.json +2 -2
  8. package/dist/cjs/agents/active_streaming_tool.js +0 -44
  9. package/dist/cjs/agents/base_agent.js +0 -245
  10. package/dist/cjs/agents/base_llm_processor.js +0 -44
  11. package/dist/cjs/agents/callback_context.js +0 -98
  12. package/dist/cjs/agents/content_processor_utils.js +0 -346
  13. package/dist/cjs/agents/functions.js +0 -424
  14. package/dist/cjs/agents/instructions.js +0 -110
  15. package/dist/cjs/agents/invocation_context.js +0 -107
  16. package/dist/cjs/agents/live_request_queue.js +0 -136
  17. package/dist/cjs/agents/llm_agent.js +0 -1247
  18. package/dist/cjs/agents/loop_agent.js +0 -68
  19. package/dist/cjs/agents/parallel_agent.js +0 -78
  20. package/dist/cjs/agents/readonly_context.js +0 -68
  21. package/dist/cjs/agents/run_config.js +0 -70
  22. package/dist/cjs/agents/sequential_agent.js +0 -84
  23. package/dist/cjs/agents/transcription_entry.js +0 -27
  24. package/dist/cjs/artifacts/base_artifact_service.js +0 -27
  25. package/dist/cjs/artifacts/gcs_artifact_service.js +0 -140
  26. package/dist/cjs/artifacts/in_memory_artifact_service.js +0 -119
  27. package/dist/cjs/auth/auth_credential.js +0 -46
  28. package/dist/cjs/auth/auth_handler.js +0 -92
  29. package/dist/cjs/auth/auth_schemes.js +0 -62
  30. package/dist/cjs/auth/auth_tool.js +0 -27
  31. package/dist/cjs/auth/credential_service/base_credential_service.js +0 -27
  32. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +0 -63
  33. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +0 -40
  34. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +0 -59
  35. package/dist/cjs/code_executors/base_code_executor.js +0 -76
  36. package/dist/cjs/code_executors/built_in_code_executor.js +0 -58
  37. package/dist/cjs/code_executors/code_execution_utils.js +0 -142
  38. package/dist/cjs/code_executors/code_executor_context.js +0 -198
  39. package/dist/cjs/common.js +0 -181
  40. package/dist/cjs/events/event.js +0 -119
  41. package/dist/cjs/events/event_actions.js +0 -83
  42. package/dist/cjs/examples/base_example_provider.js +0 -40
  43. package/dist/cjs/examples/example.js +0 -27
  44. package/dist/cjs/examples/example_util.js +0 -107
  45. package/dist/cjs/index_web.js +0 -33
  46. package/dist/cjs/memory/base_memory_service.js +0 -27
  47. package/dist/cjs/memory/in_memory_memory_service.js +0 -97
  48. package/dist/cjs/memory/memory_entry.js +0 -27
  49. package/dist/cjs/models/base_llm.js +0 -95
  50. package/dist/cjs/models/base_llm_connection.js +0 -27
  51. package/dist/cjs/models/gemini_llm_connection.js +0 -132
  52. package/dist/cjs/models/google_llm.js +0 -559
  53. package/dist/cjs/models/llm_request.js +0 -82
  54. package/dist/cjs/models/llm_response.js +0 -71
  55. package/dist/cjs/models/registry.js +0 -121
  56. package/dist/cjs/plugins/base_plugin.js +0 -236
  57. package/dist/cjs/plugins/logging_plugin.js +0 -222
  58. package/dist/cjs/plugins/plugin_manager.js +0 -239
  59. package/dist/cjs/plugins/security_plugin.js +0 -153
  60. package/dist/cjs/runner/in_memory_runner.js +0 -58
  61. package/dist/cjs/runner/runner.js +0 -277
  62. package/dist/cjs/sessions/base_session_service.js +0 -71
  63. package/dist/cjs/sessions/in_memory_session_service.js +0 -184
  64. package/dist/cjs/sessions/session.js +0 -48
  65. package/dist/cjs/sessions/state.js +0 -101
  66. package/dist/cjs/telemetry/google_cloud.js +0 -85
  67. package/dist/cjs/telemetry/setup.js +0 -97
  68. package/dist/cjs/telemetry/tracing.js +0 -231
  69. package/dist/cjs/tools/agent_tool.js +0 -134
  70. package/dist/cjs/tools/base_tool.js +0 -107
  71. package/dist/cjs/tools/base_toolset.js +0 -76
  72. package/dist/cjs/tools/forwarding_artifact_service.js +0 -71
  73. package/dist/cjs/tools/function_tool.js +0 -101
  74. package/dist/cjs/tools/google_search_tool.js +0 -77
  75. package/dist/cjs/tools/long_running_tool.js +0 -63
  76. package/dist/cjs/tools/mcp/mcp_session_manager.js +0 -65
  77. package/dist/cjs/tools/mcp/mcp_tool.js +0 -65
  78. package/dist/cjs/tools/mcp/mcp_toolset.js +0 -61
  79. package/dist/cjs/tools/tool_confirmation.js +0 -49
  80. package/dist/cjs/tools/tool_context.js +0 -129
  81. package/dist/cjs/utils/client_labels.js +0 -56
  82. package/dist/cjs/utils/deep_clone.js +0 -44
  83. package/dist/cjs/utils/env_aware_utils.js +0 -83
  84. package/dist/cjs/utils/gemini_schema_util.js +0 -88
  85. package/dist/cjs/utils/logger.js +0 -121
  86. package/dist/cjs/utils/model_name.js +0 -76
  87. package/dist/cjs/utils/simple_zod_to_json.js +0 -191
  88. package/dist/cjs/utils/variant_utils.js +0 -55
  89. package/dist/cjs/version.js +0 -39
  90. package/dist/esm/agents/active_streaming_tool.js +0 -14
  91. package/dist/esm/agents/base_agent.js +0 -214
  92. package/dist/esm/agents/base_llm_processor.js +0 -13
  93. package/dist/esm/agents/callback_context.js +0 -68
  94. package/dist/esm/agents/content_processor_utils.js +0 -315
  95. package/dist/esm/agents/functions.js +0 -383
  96. package/dist/esm/agents/instructions.js +0 -80
  97. package/dist/esm/agents/invocation_context.js +0 -76
  98. package/dist/esm/agents/live_request_queue.js +0 -106
  99. package/dist/esm/agents/llm_agent.js +0 -1215
  100. package/dist/esm/agents/loop_agent.js +0 -38
  101. package/dist/esm/agents/parallel_agent.js +0 -48
  102. package/dist/esm/agents/readonly_context.js +0 -38
  103. package/dist/esm/agents/run_config.js +0 -39
  104. package/dist/esm/agents/sequential_agent.js +0 -54
  105. package/dist/esm/agents/transcription_entry.js +0 -5
  106. package/dist/esm/artifacts/base_artifact_service.js +0 -5
  107. package/dist/esm/artifacts/gcs_artifact_service.js +0 -110
  108. package/dist/esm/artifacts/in_memory_artifact_service.js +0 -89
  109. package/dist/esm/auth/auth_credential.js +0 -16
  110. package/dist/esm/auth/auth_handler.js +0 -62
  111. package/dist/esm/auth/auth_schemes.js +0 -31
  112. package/dist/esm/auth/auth_tool.js +0 -5
  113. package/dist/esm/auth/credential_service/base_credential_service.js +0 -5
  114. package/dist/esm/auth/credential_service/in_memory_credential_service.js +0 -33
  115. package/dist/esm/auth/exchanger/base_credential_exchanger.js +0 -10
  116. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +0 -29
  117. package/dist/esm/code_executors/base_code_executor.js +0 -46
  118. package/dist/esm/code_executors/built_in_code_executor.js +0 -28
  119. package/dist/esm/code_executors/code_execution_utils.js +0 -108
  120. package/dist/esm/code_executors/code_executor_context.js +0 -168
  121. package/dist/esm/common.js +0 -98
  122. package/dist/esm/events/event.js +0 -83
  123. package/dist/esm/events/event_actions.js +0 -52
  124. package/dist/esm/examples/base_example_provider.js +0 -10
  125. package/dist/esm/examples/example.js +0 -5
  126. package/dist/esm/examples/example_util.js +0 -76
  127. package/dist/esm/index_web.js +0 -6
  128. package/dist/esm/memory/base_memory_service.js +0 -5
  129. package/dist/esm/memory/in_memory_memory_service.js +0 -67
  130. package/dist/esm/memory/memory_entry.js +0 -5
  131. package/dist/esm/models/base_llm.js +0 -64
  132. package/dist/esm/models/base_llm_connection.js +0 -5
  133. package/dist/esm/models/gemini_llm_connection.js +0 -102
  134. package/dist/esm/models/google_llm.js +0 -533
  135. package/dist/esm/models/llm_request.js +0 -50
  136. package/dist/esm/models/llm_response.js +0 -41
  137. package/dist/esm/models/registry.js +0 -91
  138. package/dist/esm/plugins/base_plugin.js +0 -206
  139. package/dist/esm/plugins/logging_plugin.js +0 -192
  140. package/dist/esm/plugins/plugin_manager.js +0 -209
  141. package/dist/esm/plugins/security_plugin.js +0 -119
  142. package/dist/esm/runner/in_memory_runner.js +0 -28
  143. package/dist/esm/runner/runner.js +0 -247
  144. package/dist/esm/sessions/base_session_service.js +0 -41
  145. package/dist/esm/sessions/in_memory_session_service.js +0 -154
  146. package/dist/esm/sessions/session.js +0 -18
  147. package/dist/esm/sessions/state.js +0 -71
  148. package/dist/esm/telemetry/google_cloud.js +0 -54
  149. package/dist/esm/telemetry/setup.js +0 -67
  150. package/dist/esm/telemetry/tracing.js +0 -195
  151. package/dist/esm/tools/agent_tool.js +0 -104
  152. package/dist/esm/tools/base_tool.js +0 -77
  153. package/dist/esm/tools/base_toolset.js +0 -46
  154. package/dist/esm/tools/forwarding_artifact_service.js +0 -41
  155. package/dist/esm/tools/function_tool.js +0 -71
  156. package/dist/esm/tools/google_search_tool.js +0 -47
  157. package/dist/esm/tools/long_running_tool.js +0 -33
  158. package/dist/esm/tools/mcp/mcp_session_manager.js +0 -35
  159. package/dist/esm/tools/mcp/mcp_tool.js +0 -35
  160. package/dist/esm/tools/mcp/mcp_toolset.js +0 -31
  161. package/dist/esm/tools/tool_confirmation.js +0 -19
  162. package/dist/esm/tools/tool_context.js +0 -99
  163. package/dist/esm/utils/client_labels.js +0 -26
  164. package/dist/esm/utils/deep_clone.js +0 -14
  165. package/dist/esm/utils/env_aware_utils.js +0 -49
  166. package/dist/esm/utils/gemini_schema_util.js +0 -58
  167. package/dist/esm/utils/logger.js +0 -89
  168. package/dist/esm/utils/model_name.js +0 -41
  169. package/dist/esm/utils/simple_zod_to_json.js +0 -160
  170. package/dist/esm/utils/variant_utils.js +0 -24
  171. package/dist/esm/version.js +0 -9
  172. package/dist/web/agents/active_streaming_tool.js +0 -14
  173. package/dist/web/agents/base_agent.js +0 -265
  174. package/dist/web/agents/base_llm_processor.js +0 -13
  175. package/dist/web/agents/callback_context.js +0 -68
  176. package/dist/web/agents/content_processor_utils.js +0 -315
  177. package/dist/web/agents/functions.js +0 -383
  178. package/dist/web/agents/instructions.js +0 -80
  179. package/dist/web/agents/invocation_context.js +0 -76
  180. package/dist/web/agents/live_request_queue.js +0 -124
  181. package/dist/web/agents/llm_agent.js +0 -1345
  182. package/dist/web/agents/loop_agent.js +0 -71
  183. package/dist/web/agents/parallel_agent.js +0 -83
  184. package/dist/web/agents/readonly_context.js +0 -38
  185. package/dist/web/agents/run_config.js +0 -54
  186. package/dist/web/agents/sequential_agent.js +0 -99
  187. package/dist/web/agents/transcription_entry.js +0 -5
  188. package/dist/web/artifacts/base_artifact_service.js +0 -5
  189. package/dist/web/artifacts/gcs_artifact_service.js +0 -126
  190. package/dist/web/artifacts/in_memory_artifact_service.js +0 -89
  191. package/dist/web/auth/auth_credential.js +0 -16
  192. package/dist/web/auth/auth_handler.js +0 -62
  193. package/dist/web/auth/auth_schemes.js +0 -31
  194. package/dist/web/auth/auth_tool.js +0 -5
  195. package/dist/web/auth/credential_service/base_credential_service.js +0 -5
  196. package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -33
  197. package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -10
  198. package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -29
  199. package/dist/web/code_executors/base_code_executor.js +0 -46
  200. package/dist/web/code_executors/built_in_code_executor.js +0 -28
  201. package/dist/web/code_executors/code_execution_utils.js +0 -105
  202. package/dist/web/code_executors/code_executor_context.js +0 -168
  203. package/dist/web/common.js +0 -98
  204. package/dist/web/events/event.js +0 -101
  205. package/dist/web/events/event_actions.js +0 -67
  206. package/dist/web/examples/base_example_provider.js +0 -10
  207. package/dist/web/examples/example.js +0 -5
  208. package/dist/web/examples/example_util.js +0 -75
  209. package/dist/web/index_web.js +0 -6
  210. package/dist/web/memory/base_memory_service.js +0 -5
  211. package/dist/web/memory/in_memory_memory_service.js +0 -67
  212. package/dist/web/memory/memory_entry.js +0 -5
  213. package/dist/web/models/base_llm.js +0 -64
  214. package/dist/web/models/base_llm_connection.js +0 -5
  215. package/dist/web/models/gemini_llm_connection.js +0 -120
  216. package/dist/web/models/google_llm.js +0 -574
  217. package/dist/web/models/llm_request.js +0 -50
  218. package/dist/web/models/llm_response.js +0 -41
  219. package/dist/web/models/registry.js +0 -91
  220. package/dist/web/plugins/base_plugin.js +0 -206
  221. package/dist/web/plugins/logging_plugin.js +0 -192
  222. package/dist/web/plugins/plugin_manager.js +0 -209
  223. package/dist/web/plugins/security_plugin.js +0 -119
  224. package/dist/web/runner/in_memory_runner.js +0 -28
  225. package/dist/web/runner/runner.js +0 -278
  226. package/dist/web/sessions/base_session_service.js +0 -41
  227. package/dist/web/sessions/in_memory_session_service.js +0 -154
  228. package/dist/web/sessions/session.js +0 -18
  229. package/dist/web/sessions/state.js +0 -87
  230. package/dist/web/telemetry/google_cloud.js +0 -54
  231. package/dist/web/telemetry/setup.js +0 -67
  232. package/dist/web/telemetry/tracing.js +0 -210
  233. package/dist/web/tools/agent_tool.js +0 -118
  234. package/dist/web/tools/base_tool.js +0 -77
  235. package/dist/web/tools/base_toolset.js +0 -46
  236. package/dist/web/tools/forwarding_artifact_service.js +0 -41
  237. package/dist/web/tools/function_tool.js +0 -71
  238. package/dist/web/tools/google_search_tool.js +0 -47
  239. package/dist/web/tools/long_running_tool.js +0 -50
  240. package/dist/web/tools/mcp/mcp_session_manager.js +0 -35
  241. package/dist/web/tools/mcp/mcp_tool.js +0 -35
  242. package/dist/web/tools/mcp/mcp_toolset.js +0 -31
  243. package/dist/web/tools/tool_confirmation.js +0 -19
  244. package/dist/web/tools/tool_context.js +0 -99
  245. package/dist/web/utils/client_labels.js +0 -26
  246. package/dist/web/utils/deep_clone.js +0 -14
  247. package/dist/web/utils/env_aware_utils.js +0 -49
  248. package/dist/web/utils/gemini_schema_util.js +0 -58
  249. package/dist/web/utils/logger.js +0 -89
  250. package/dist/web/utils/model_name.js +0 -41
  251. package/dist/web/utils/simple_zod_to_json.js +0 -174
  252. package/dist/web/utils/variant_utils.js +0 -24
  253. package/dist/web/version.js +0 -9
@@ -1,119 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { BasePlugin } from "../plugins/base_plugin.js";
7
- const REQUEST_CONFIRMATION_FUNCTION_CALL_NAME = "adk_request_confirmation";
8
- const TOOL_CALL_SECURITY_CHECK_STATES = "orcas_tool_call_security_check_states";
9
- const INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR = "This tool call needs external confirmation before completion.";
10
- var PolicyOutcome = /* @__PURE__ */ ((PolicyOutcome2) => {
11
- PolicyOutcome2["DENY"] = "DENY";
12
- PolicyOutcome2["CONFIRM"] = "CONFIRM";
13
- PolicyOutcome2["ALLOW"] = "ALLOW";
14
- return PolicyOutcome2;
15
- })(PolicyOutcome || {});
16
- class InMemoryPolicyEngine {
17
- async evaluate(context) {
18
- return Promise.resolve({
19
- outcome: "ALLOW" /* ALLOW */,
20
- reason: "For prototyping purpose, all tool calls are allowed."
21
- });
22
- }
23
- }
24
- class SecurityPlugin extends BasePlugin {
25
- constructor(params) {
26
- var _a;
27
- super("security_plugin");
28
- this.policyEngine = (_a = params == null ? void 0 : params.policyEngine) != null ? _a : new InMemoryPolicyEngine();
29
- }
30
- async beforeToolCallback({
31
- tool,
32
- toolArgs,
33
- toolContext
34
- }) {
35
- const toolCallCheckState = this.getToolCallCheckState(toolContext);
36
- if (!toolCallCheckState) {
37
- return this.checkToolCallPolicy({
38
- tool,
39
- toolArgs,
40
- toolContext
41
- });
42
- }
43
- if (toolCallCheckState !== "CONFIRM" /* CONFIRM */) {
44
- return;
45
- }
46
- if (!toolContext.toolConfirmation) {
47
- return { partial: INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR };
48
- }
49
- this.setToolCallCheckState(toolContext, toolContext.toolConfirmation);
50
- if (!toolContext.toolConfirmation.confirmed) {
51
- return {
52
- error: "Tool call rejected from confirmation flow."
53
- };
54
- }
55
- toolContext.toolConfirmation = void 0;
56
- return;
57
- }
58
- getToolCallCheckState(toolContext) {
59
- var _a;
60
- const { functionCallId } = toolContext;
61
- if (!functionCallId) {
62
- return;
63
- }
64
- const toolCallStates = (_a = toolContext.state.get(TOOL_CALL_SECURITY_CHECK_STATES)) != null ? _a : {};
65
- return toolCallStates[functionCallId];
66
- }
67
- setToolCallCheckState(toolContext, state) {
68
- var _a;
69
- const { functionCallId } = toolContext;
70
- if (!functionCallId) {
71
- return;
72
- }
73
- const toolCallStates = (_a = toolContext.state.get(TOOL_CALL_SECURITY_CHECK_STATES)) != null ? _a : {};
74
- toolCallStates[functionCallId] = state;
75
- toolContext.state.set(TOOL_CALL_SECURITY_CHECK_STATES, toolCallStates);
76
- }
77
- async checkToolCallPolicy({
78
- tool,
79
- toolArgs,
80
- toolContext
81
- }) {
82
- const policyCheckResult = await this.policyEngine.evaluate({ tool, toolArgs });
83
- this.setToolCallCheckState(toolContext, policyCheckResult.outcome);
84
- switch (policyCheckResult.outcome) {
85
- case "DENY" /* DENY */:
86
- return {
87
- error: `This tool call is rejected by policy engine. Reason: ${policyCheckResult.reason}`
88
- };
89
- case "CONFIRM" /* CONFIRM */:
90
- toolContext.requestConfirmation({
91
- hint: `Policy engine requires confirmation calling tool: ${tool.name}. Reason: ${policyCheckResult.reason}`
92
- });
93
- return { partial: INTERMEDIATE_REQUIRE_TOOL_CALL_CONFIRMATION_ERROR };
94
- case "ALLOW" /* ALLOW */:
95
- return;
96
- default:
97
- return;
98
- }
99
- }
100
- }
101
- function getAskUserConfirmationFunctionCalls(event) {
102
- if (!event.content || !event.content.parts) {
103
- return [];
104
- }
105
- const results = [];
106
- for (const part of event.content.parts) {
107
- if (part && part.functionCall && part.functionCall.name === REQUEST_CONFIRMATION_FUNCTION_CALL_NAME) {
108
- results.push(part.functionCall);
109
- }
110
- }
111
- return results;
112
- }
113
- export {
114
- InMemoryPolicyEngine,
115
- PolicyOutcome,
116
- REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
117
- SecurityPlugin,
118
- getAskUserConfirmationFunctionCalls
119
- };
@@ -1,28 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { InMemoryArtifactService } from "../artifacts/in_memory_artifact_service.js";
7
- import { InMemoryMemoryService } from "../memory/in_memory_memory_service.js";
8
- import { InMemorySessionService } from "../sessions/in_memory_session_service.js";
9
- import { Runner } from "./runner.js";
10
- class InMemoryRunner extends Runner {
11
- constructor({
12
- agent,
13
- appName = "InMemoryRunner",
14
- plugins = []
15
- }) {
16
- super({
17
- appName,
18
- agent,
19
- plugins,
20
- artifactService: new InMemoryArtifactService(),
21
- sessionService: new InMemorySessionService(),
22
- memoryService: new InMemoryMemoryService()
23
- });
24
- }
25
- }
26
- export {
27
- InMemoryRunner
28
- };
@@ -1,247 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { createPartFromText } from "@google/genai";
7
- import { trace } from "@opentelemetry/api";
8
- import { InvocationContext, newInvocationContextId } from "../agents/invocation_context.js";
9
- import { LlmAgent } from "../agents/llm_agent.js";
10
- import { createRunConfig } from "../agents/run_config.js";
11
- import { createEvent, getFunctionCalls } from "../events/event.js";
12
- import { createEventActions } from "../events/event_actions.js";
13
- import { PluginManager } from "../plugins/plugin_manager.js";
14
- import { logger } from "../utils/logger.js";
15
- class Runner {
16
- constructor(input) {
17
- var _a;
18
- this.appName = input.appName;
19
- this.agent = input.agent;
20
- this.pluginManager = new PluginManager((_a = input.plugins) != null ? _a : []);
21
- this.artifactService = input.artifactService;
22
- this.sessionService = input.sessionService;
23
- this.memoryService = input.memoryService;
24
- this.credentialService = input.credentialService;
25
- }
26
- /**
27
- * Runs the agent with the given message, and returns an async generator of
28
- * events.
29
- *
30
- * @param userId The user ID of the session.
31
- * @param sessionId The session ID of the session.
32
- * @param newMessage A new message to append to the session.
33
- * @param stateDelta An optional state delta to apply to the session.
34
- * @param runConfig The run config for the agent.
35
- * @yields The events generated by the agent.
36
- */
37
- // TODO - b/425992518: user, sessionId, and runConfig can be internalized.
38
- async *runAsync({
39
- userId,
40
- sessionId,
41
- newMessage,
42
- stateDelta,
43
- runConfig
44
- }) {
45
- var _a;
46
- runConfig = createRunConfig(runConfig);
47
- const span = trace.getTracer("gcp.vertex.agent").startSpan("invocation");
48
- try {
49
- const session = await this.sessionService.getSession({ appName: this.appName, userId, sessionId });
50
- if (!session) {
51
- throw new Error(`Session not found: ${sessionId}`);
52
- }
53
- if (runConfig.supportCfc && this.agent instanceof LlmAgent) {
54
- const modelName = this.agent.canonicalModel.model;
55
- if (!modelName.startsWith("gemini-2")) {
56
- throw new Error(`CFC is not supported for model: ${modelName} in agent: ${this.agent.name}`);
57
- }
58
- }
59
- const invocationContext = new InvocationContext({
60
- artifactService: this.artifactService,
61
- sessionService: this.sessionService,
62
- memoryService: this.memoryService,
63
- credentialService: this.credentialService,
64
- invocationId: newInvocationContextId(),
65
- agent: this.agent,
66
- session,
67
- userContent: newMessage,
68
- runConfig,
69
- pluginManager: this.pluginManager
70
- });
71
- const pluginUserMessage = await this.pluginManager.runOnUserMessageCallback({
72
- userMessage: newMessage,
73
- invocationContext
74
- });
75
- if (pluginUserMessage) {
76
- newMessage = pluginUserMessage;
77
- }
78
- if (newMessage) {
79
- if (!((_a = newMessage.parts) == null ? void 0 : _a.length)) {
80
- throw new Error("No parts in the newMessage.");
81
- }
82
- if (runConfig.saveInputBlobsAsArtifacts) {
83
- await this.saveArtifacts(
84
- invocationContext.invocationId,
85
- session.userId,
86
- session.id,
87
- newMessage
88
- );
89
- }
90
- await this.sessionService.appendEvent({
91
- session,
92
- event: createEvent({
93
- invocationId: invocationContext.invocationId,
94
- author: "user",
95
- actions: stateDelta ? createEventActions({ stateDelta }) : void 0,
96
- content: newMessage
97
- })
98
- });
99
- }
100
- invocationContext.agent = this.determineAgentForResumption(session, this.agent);
101
- const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({ invocationContext });
102
- if (beforeRunCallbackResponse) {
103
- const earlyExitEvent = createEvent({
104
- invocationId: invocationContext.invocationId,
105
- author: "model",
106
- content: beforeRunCallbackResponse
107
- });
108
- await this.sessionService.appendEvent({ session, event: earlyExitEvent });
109
- yield earlyExitEvent;
110
- } else {
111
- for await (const event of invocationContext.agent.runAsync(
112
- invocationContext
113
- )) {
114
- if (!event.partial) {
115
- await this.sessionService.appendEvent({ session, event });
116
- }
117
- const modifiedEvent = await this.pluginManager.runOnEventCallback(
118
- { invocationContext, event }
119
- );
120
- if (modifiedEvent) {
121
- yield modifiedEvent;
122
- } else {
123
- yield event;
124
- }
125
- }
126
- }
127
- await this.pluginManager.runAfterRunCallback({ invocationContext });
128
- } finally {
129
- span.end();
130
- }
131
- }
132
- /**
133
- * Saves artifacts from the message parts and replaces the inline data with
134
- * a file name placeholder.
135
- *
136
- * @param invocationId The current invocation ID.
137
- * @param userId The user ID of the session.
138
- * @param sessionId The session ID of the session.
139
- * @param message The message containing parts to process.
140
- */
141
- async saveArtifacts(invocationId, userId, sessionId, message) {
142
- var _a;
143
- if (!this.artifactService || !((_a = message.parts) == null ? void 0 : _a.length)) {
144
- return;
145
- }
146
- for (let i = 0; i < message.parts.length; i++) {
147
- const part = message.parts[i];
148
- if (!part.inlineData) {
149
- continue;
150
- }
151
- const fileName = `artifact_${invocationId}_${i}`;
152
- await this.artifactService.saveArtifact({
153
- appName: this.appName,
154
- userId,
155
- sessionId,
156
- filename: fileName,
157
- artifact: part
158
- });
159
- message.parts[i] = createPartFromText(
160
- `Uploaded file: ${fileName}. It is saved into artifacts`
161
- );
162
- }
163
- }
164
- /**
165
- * Determines the next agent to run to continue the session. This is primarily
166
- * used for session resumption.
167
- */
168
- // TODO - b/425992518: This is where LRO integration should happen.
169
- // Needs clean up before we can generalize it.
170
- determineAgentForResumption(session, rootAgent) {
171
- const event = findEventByLastFunctionResponseId(session.events);
172
- if (event && event.author) {
173
- return rootAgent.findAgent(event.author) || rootAgent;
174
- }
175
- for (let i = session.events.length - 1; i >= 0; i--) {
176
- logger.info("event: ", JSON.stringify(session.events[i]));
177
- const event2 = session.events[i];
178
- if (event2.author === "user" || !event2.author) {
179
- continue;
180
- }
181
- if (event2.author === rootAgent.name) {
182
- return rootAgent;
183
- }
184
- const agent = rootAgent.findSubAgent(event2.author);
185
- if (!agent) {
186
- logger.warn(`Event from an unknown agent: ${event2.author}, event id: ${event2.id}`);
187
- continue;
188
- }
189
- if (this.isRoutableLlmAgent(agent)) {
190
- return agent;
191
- }
192
- }
193
- return rootAgent;
194
- }
195
- /**
196
- * Whether the agent to run can transfer to any other agent in the agent tree.
197
- *
198
- * An agent is transferable if:
199
- * - It is an instance of `LlmAgent`.
200
- * - All its ancestors are also transferable (i.e., they have
201
- * `disallowTransferToParent` set to false).
202
- *
203
- * @param agentToRun The agent to check for transferability.
204
- * @returns True if the agent can transfer, False otherwise.
205
- */
206
- isRoutableLlmAgent(agentToRun) {
207
- let agent = agentToRun;
208
- while (agent) {
209
- if (!(agent instanceof LlmAgent)) {
210
- return false;
211
- }
212
- if (agent.disallowTransferToParent) {
213
- return false;
214
- }
215
- agent = agent.parentAgent;
216
- }
217
- return true;
218
- }
219
- // TODO - b/425992518: Implement runLive and related methods.
220
- }
221
- function findEventByLastFunctionResponseId(events) {
222
- var _a, _b, _c, _d;
223
- if (!events.length) {
224
- return null;
225
- }
226
- const lastEvent = events[events.length - 1];
227
- const functionCallId = (_d = (_c = (_b = (_a = lastEvent.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.find((part) => part.functionResponse)) == null ? void 0 : _c.functionResponse) == null ? void 0 : _d.id;
228
- if (!functionCallId) {
229
- return null;
230
- }
231
- for (let i = events.length - 2; i >= 0; i--) {
232
- const event = events[i];
233
- const functionCalls = getFunctionCalls(event);
234
- if (!functionCalls) {
235
- continue;
236
- }
237
- for (const functionCall of functionCalls) {
238
- if (functionCall.id === functionCallId) {
239
- return event;
240
- }
241
- }
242
- }
243
- return null;
244
- }
245
- export {
246
- Runner
247
- };
@@ -1,41 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { State } from "./state.js";
7
- class BaseSessionService {
8
- /**
9
- * Appends an event to a session.
10
- *
11
- * @param request The request to append an event.
12
- * @return A promise that resolves to the event that was appended.
13
- */
14
- async appendEvent({ session, event }) {
15
- if (event.partial) {
16
- return event;
17
- }
18
- this.updateSessionState({ session, event });
19
- session.events.push(event);
20
- return event;
21
- }
22
- /**
23
- * Updates the session state based on the event.
24
- *
25
- * @param request The request to update the session state.
26
- */
27
- updateSessionState({ session, event }) {
28
- if (!event.actions || !event.actions.stateDelta) {
29
- return;
30
- }
31
- for (const [key, value] of Object.entries(event.actions.stateDelta)) {
32
- if (key.startsWith(State.TEMP_PREFIX)) {
33
- continue;
34
- }
35
- session.state[key] = value;
36
- }
37
- }
38
- }
39
- export {
40
- BaseSessionService
41
- };
@@ -1,154 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { deepClone } from "../utils/deep_clone.js";
7
- import { randomUUID } from "../utils/env_aware_utils.js";
8
- import { logger } from "../utils/logger.js";
9
- import { BaseSessionService } from "./base_session_service.js";
10
- import { createSession } from "./session.js";
11
- import { State } from "./state.js";
12
- class InMemorySessionService extends BaseSessionService {
13
- constructor() {
14
- super(...arguments);
15
- /**
16
- * A map from app name to a map from user ID to a map from session ID to
17
- * session.
18
- */
19
- this.sessions = {};
20
- /**
21
- * A map from app name to a map from user ID to a map from key to the value.
22
- */
23
- this.userState = {};
24
- /**
25
- * A map from app name to a map from key to the value.
26
- */
27
- this.appState = {};
28
- }
29
- createSession({ appName, userId, state, sessionId }) {
30
- const session = createSession({
31
- id: sessionId || randomUUID(),
32
- appName,
33
- userId,
34
- state,
35
- events: [],
36
- lastUpdateTime: Date.now()
37
- });
38
- if (!this.sessions[appName]) {
39
- this.sessions[appName] = {};
40
- }
41
- if (!this.sessions[appName][userId]) {
42
- this.sessions[appName][userId] = {};
43
- }
44
- this.sessions[appName][userId][session.id] = session;
45
- return Promise.resolve(
46
- this.mergeState(appName, userId, deepClone(session))
47
- );
48
- }
49
- getSession({ appName, userId, sessionId, config }) {
50
- if (!this.sessions[appName] || !this.sessions[appName][userId] || !this.sessions[appName][userId][sessionId]) {
51
- return Promise.resolve(void 0);
52
- }
53
- const session = this.sessions[appName][userId][sessionId];
54
- const copiedSession = deepClone(session);
55
- if (config) {
56
- if (config.numRecentEvents) {
57
- copiedSession.events = copiedSession.events.slice(-config.numRecentEvents);
58
- }
59
- if (config.afterTimestamp) {
60
- let i = copiedSession.events.length - 1;
61
- while (i >= 0) {
62
- if (copiedSession.events[i].timestamp < config.afterTimestamp) {
63
- break;
64
- }
65
- i--;
66
- }
67
- if (i >= 0) {
68
- copiedSession.events = copiedSession.events.slice(i + 1);
69
- }
70
- }
71
- }
72
- return Promise.resolve(this.mergeState(appName, userId, copiedSession));
73
- }
74
- listSessions({ appName, userId }) {
75
- if (!this.sessions[appName] || !this.sessions[appName][userId]) {
76
- return Promise.resolve({ sessions: [] });
77
- }
78
- const sessionsWithoutEvents = [];
79
- for (const session of Object.values(this.sessions[appName][userId])) {
80
- sessionsWithoutEvents.push(createSession({
81
- id: session.id,
82
- appName: session.appName,
83
- userId: session.userId,
84
- state: {},
85
- events: [],
86
- lastUpdateTime: session.lastUpdateTime
87
- }));
88
- }
89
- return Promise.resolve({ sessions: sessionsWithoutEvents });
90
- }
91
- async deleteSession({ appName, userId, sessionId }) {
92
- const session = await this.getSession({ appName, userId, sessionId });
93
- if (!session) {
94
- return;
95
- }
96
- delete this.sessions[appName][userId][sessionId];
97
- }
98
- async appendEvent({ session, event }) {
99
- await super.appendEvent({ session, event });
100
- session.lastUpdateTime = event.timestamp;
101
- const appName = session.appName;
102
- const userId = session.userId;
103
- const sessionId = session.id;
104
- const warning = (message) => {
105
- logger.warn(`Failed to append event to session ${sessionId}: ${message}`);
106
- };
107
- if (!this.sessions[appName]) {
108
- warning(`appName ${appName} not in sessions`);
109
- return event;
110
- }
111
- if (!this.sessions[appName][userId]) {
112
- warning(`userId ${userId} not in sessions[appName]`);
113
- return event;
114
- }
115
- if (!this.sessions[appName][userId][sessionId]) {
116
- warning(`sessionId ${sessionId} not in sessions[appName][userId]`);
117
- return event;
118
- }
119
- if (event.actions && event.actions.stateDelta) {
120
- for (const key of Object.keys(event.actions.stateDelta)) {
121
- if (key.startsWith(State.APP_PREFIX)) {
122
- this.appState[appName] = this.appState[appName] || {};
123
- this.appState[appName][key.replace(State.APP_PREFIX, "")] = event.actions.stateDelta[key];
124
- }
125
- if (key.startsWith(State.USER_PREFIX)) {
126
- this.userState[appName] = this.userState[appName] || {};
127
- this.userState[appName][userId] = this.userState[appName][userId] || {};
128
- this.userState[appName][userId][key.replace(State.USER_PREFIX, "")] = event.actions.stateDelta[key];
129
- }
130
- }
131
- }
132
- const storageSession = this.sessions[appName][userId][sessionId];
133
- await super.appendEvent({ session: storageSession, event });
134
- storageSession.lastUpdateTime = event.timestamp;
135
- return event;
136
- }
137
- mergeState(appName, userId, copiedSession) {
138
- if (this.appState[appName]) {
139
- for (const key of Object.keys(this.appState[appName])) {
140
- copiedSession.state[State.APP_PREFIX + key] = this.appState[appName][key];
141
- }
142
- }
143
- if (!this.userState[appName] || !this.userState[appName][userId]) {
144
- return copiedSession;
145
- }
146
- for (const key of Object.keys(this.userState[appName][userId])) {
147
- copiedSession.state[State.USER_PREFIX + key] = this.userState[appName][userId][key];
148
- }
149
- return copiedSession;
150
- }
151
- }
152
- export {
153
- InMemorySessionService
154
- };
@@ -1,18 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- function createSession(params) {
7
- return {
8
- id: params.id,
9
- appName: params.appName,
10
- userId: params.userId || "",
11
- state: params.state || {},
12
- events: params.events || [],
13
- lastUpdateTime: params.lastUpdateTime || 0
14
- };
15
- }
16
- export {
17
- createSession
18
- };
@@ -1,71 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class State {
7
- constructor(value = {}, delta = {}) {
8
- this.value = value;
9
- this.delta = delta;
10
- }
11
- /**
12
- * Returns the value of the state dict for the given key.
13
- *
14
- * @param key The key to get the value for.
15
- * @param defaultValue The default value to return if the key is not found.
16
- * @return The value of the state for the given key, or the default value if
17
- * not found.
18
- */
19
- get(key, defaultValue) {
20
- if (key in this.delta) {
21
- return this.delta[key];
22
- }
23
- if (key in this.value) {
24
- return this.value[key];
25
- }
26
- return defaultValue;
27
- }
28
- /**
29
- * Sets the value of the state dict for the given key.
30
- *
31
- * @param key The key to set the value for.
32
- * @param value The value to set.
33
- */
34
- set(key, value) {
35
- this.value[key] = value;
36
- this.delta[key] = value;
37
- }
38
- /**
39
- * Whether the state has pending delta.
40
- */
41
- has(key) {
42
- return key in this.value || key in this.delta;
43
- }
44
- /**
45
- * Whether the state has pending delta.
46
- */
47
- hasDelta() {
48
- return Object.keys(this.delta).length > 0;
49
- }
50
- /**
51
- * Updates the state dict with the given delta.
52
- *
53
- * @param delta The delta to update the state with.
54
- */
55
- update(delta) {
56
- this.delta = { ...this.delta, ...delta };
57
- this.value = { ...this.value, ...delta };
58
- }
59
- /**
60
- * Returns the state as a plain JSON object.
61
- */
62
- toRecord() {
63
- return { ...this.value, ...this.delta };
64
- }
65
- }
66
- State.APP_PREFIX = "app:";
67
- State.USER_PREFIX = "user:";
68
- State.TEMP_PREFIX = "temp:";
69
- export {
70
- State
71
- };