@paean-ai/adk 0.2.19 → 0.2.21

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 (255) hide show
  1. package/dist/cjs/agents/active_streaming_tool.js +44 -0
  2. package/dist/cjs/agents/base_agent.js +245 -0
  3. package/dist/cjs/agents/base_llm_processor.js +44 -0
  4. package/dist/cjs/agents/callback_context.js +98 -0
  5. package/dist/cjs/agents/content_processor_utils.js +311 -0
  6. package/dist/cjs/agents/functions.js +425 -0
  7. package/dist/cjs/agents/instructions.js +110 -0
  8. package/dist/cjs/agents/invocation_context.js +107 -0
  9. package/dist/cjs/agents/live_request_queue.js +136 -0
  10. package/dist/cjs/agents/llm_agent.js +1279 -0
  11. package/dist/cjs/agents/loop_agent.js +68 -0
  12. package/dist/cjs/agents/parallel_agent.js +78 -0
  13. package/dist/cjs/agents/readonly_context.js +68 -0
  14. package/dist/cjs/agents/run_config.js +70 -0
  15. package/dist/cjs/agents/sequential_agent.js +84 -0
  16. package/dist/cjs/agents/transcription_entry.js +27 -0
  17. package/dist/cjs/artifacts/base_artifact_service.js +27 -0
  18. package/dist/cjs/artifacts/gcs_artifact_service.js +140 -0
  19. package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
  20. package/dist/cjs/auth/auth_credential.js +46 -0
  21. package/dist/cjs/auth/auth_handler.js +92 -0
  22. package/dist/cjs/auth/auth_schemes.js +62 -0
  23. package/dist/cjs/auth/auth_tool.js +27 -0
  24. package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
  25. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
  26. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +40 -0
  27. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +59 -0
  28. package/dist/cjs/code_executors/base_code_executor.js +76 -0
  29. package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
  30. package/dist/cjs/code_executors/code_execution_utils.js +142 -0
  31. package/dist/cjs/code_executors/code_executor_context.js +198 -0
  32. package/dist/cjs/common.js +181 -0
  33. package/dist/cjs/events/event.js +119 -0
  34. package/dist/cjs/events/event_actions.js +83 -0
  35. package/dist/cjs/examples/base_example_provider.js +40 -0
  36. package/dist/cjs/examples/example.js +27 -0
  37. package/dist/cjs/examples/example_util.js +107 -0
  38. package/dist/cjs/index.js +12 -12
  39. package/dist/cjs/index.js.map +3 -3
  40. package/dist/cjs/index_web.js +33 -0
  41. package/dist/cjs/memory/base_memory_service.js +27 -0
  42. package/dist/cjs/memory/in_memory_memory_service.js +97 -0
  43. package/dist/cjs/memory/memory_entry.js +27 -0
  44. package/dist/cjs/models/base_llm.js +95 -0
  45. package/dist/cjs/models/base_llm_connection.js +27 -0
  46. package/dist/cjs/models/gemini_llm_connection.js +132 -0
  47. package/dist/cjs/models/google_llm.js +472 -0
  48. package/dist/cjs/models/llm_request.js +82 -0
  49. package/dist/cjs/models/llm_response.js +71 -0
  50. package/dist/cjs/models/registry.js +121 -0
  51. package/dist/cjs/plugins/base_plugin.js +236 -0
  52. package/dist/cjs/plugins/logging_plugin.js +222 -0
  53. package/dist/cjs/plugins/plugin_manager.js +239 -0
  54. package/dist/cjs/plugins/security_plugin.js +153 -0
  55. package/dist/cjs/runner/in_memory_runner.js +58 -0
  56. package/dist/cjs/runner/runner.js +277 -0
  57. package/dist/cjs/sessions/base_session_service.js +71 -0
  58. package/dist/cjs/sessions/in_memory_session_service.js +184 -0
  59. package/dist/cjs/sessions/session.js +48 -0
  60. package/dist/cjs/sessions/state.js +101 -0
  61. package/dist/cjs/telemetry/google_cloud.js +85 -0
  62. package/dist/cjs/telemetry/setup.js +97 -0
  63. package/dist/cjs/telemetry/tracing.js +231 -0
  64. package/dist/cjs/tools/agent_tool.js +134 -0
  65. package/dist/cjs/tools/base_tool.js +107 -0
  66. package/dist/cjs/tools/base_toolset.js +76 -0
  67. package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
  68. package/dist/cjs/tools/function_tool.js +101 -0
  69. package/dist/cjs/tools/google_search_tool.js +77 -0
  70. package/dist/cjs/tools/long_running_tool.js +63 -0
  71. package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
  72. package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
  73. package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
  74. package/dist/cjs/tools/tool_confirmation.js +49 -0
  75. package/dist/cjs/tools/tool_context.js +129 -0
  76. package/dist/cjs/utils/client_labels.js +56 -0
  77. package/dist/cjs/utils/deep_clone.js +44 -0
  78. package/dist/cjs/utils/env_aware_utils.js +83 -0
  79. package/dist/cjs/utils/gemini_schema_util.js +88 -0
  80. package/dist/cjs/utils/logger.js +121 -0
  81. package/dist/cjs/utils/model_name.js +76 -0
  82. package/dist/cjs/utils/simple_zod_to_json.js +191 -0
  83. package/dist/cjs/utils/variant_utils.js +55 -0
  84. package/dist/cjs/version.js +39 -0
  85. package/dist/esm/agents/active_streaming_tool.js +14 -0
  86. package/dist/esm/agents/base_agent.js +214 -0
  87. package/dist/esm/agents/base_llm_processor.js +13 -0
  88. package/dist/esm/agents/callback_context.js +68 -0
  89. package/dist/esm/agents/content_processor_utils.js +280 -0
  90. package/dist/esm/agents/functions.js +384 -0
  91. package/dist/esm/agents/instructions.js +80 -0
  92. package/dist/esm/agents/invocation_context.js +76 -0
  93. package/dist/esm/agents/live_request_queue.js +106 -0
  94. package/dist/esm/agents/llm_agent.js +1247 -0
  95. package/dist/esm/agents/loop_agent.js +38 -0
  96. package/dist/esm/agents/parallel_agent.js +48 -0
  97. package/dist/esm/agents/readonly_context.js +38 -0
  98. package/dist/esm/agents/run_config.js +39 -0
  99. package/dist/esm/agents/sequential_agent.js +54 -0
  100. package/dist/esm/agents/transcription_entry.js +5 -0
  101. package/dist/esm/artifacts/base_artifact_service.js +5 -0
  102. package/dist/esm/artifacts/gcs_artifact_service.js +110 -0
  103. package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
  104. package/dist/esm/auth/auth_credential.js +16 -0
  105. package/dist/esm/auth/auth_handler.js +62 -0
  106. package/dist/esm/auth/auth_schemes.js +31 -0
  107. package/dist/esm/auth/auth_tool.js +5 -0
  108. package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
  109. package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
  110. package/dist/esm/auth/exchanger/base_credential_exchanger.js +10 -0
  111. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +29 -0
  112. package/dist/esm/code_executors/base_code_executor.js +46 -0
  113. package/dist/esm/code_executors/built_in_code_executor.js +28 -0
  114. package/dist/esm/code_executors/code_execution_utils.js +108 -0
  115. package/dist/esm/code_executors/code_executor_context.js +168 -0
  116. package/dist/esm/common.js +98 -0
  117. package/dist/esm/events/event.js +83 -0
  118. package/dist/esm/events/event_actions.js +52 -0
  119. package/dist/esm/examples/base_example_provider.js +10 -0
  120. package/dist/esm/examples/example.js +5 -0
  121. package/dist/esm/examples/example_util.js +76 -0
  122. package/dist/esm/index.js +12 -12
  123. package/dist/esm/index.js.map +3 -3
  124. package/dist/esm/index_web.js +6 -0
  125. package/dist/esm/memory/base_memory_service.js +5 -0
  126. package/dist/esm/memory/in_memory_memory_service.js +67 -0
  127. package/dist/esm/memory/memory_entry.js +5 -0
  128. package/dist/esm/models/base_llm.js +64 -0
  129. package/dist/esm/models/base_llm_connection.js +5 -0
  130. package/dist/esm/models/gemini_llm_connection.js +102 -0
  131. package/dist/esm/models/google_llm.js +446 -0
  132. package/dist/esm/models/llm_request.js +50 -0
  133. package/dist/esm/models/llm_response.js +41 -0
  134. package/dist/esm/models/registry.js +91 -0
  135. package/dist/esm/plugins/base_plugin.js +206 -0
  136. package/dist/esm/plugins/logging_plugin.js +192 -0
  137. package/dist/esm/plugins/plugin_manager.js +209 -0
  138. package/dist/esm/plugins/security_plugin.js +119 -0
  139. package/dist/esm/runner/in_memory_runner.js +28 -0
  140. package/dist/esm/runner/runner.js +247 -0
  141. package/dist/esm/sessions/base_session_service.js +41 -0
  142. package/dist/esm/sessions/in_memory_session_service.js +154 -0
  143. package/dist/esm/sessions/session.js +18 -0
  144. package/dist/esm/sessions/state.js +71 -0
  145. package/dist/esm/telemetry/google_cloud.js +54 -0
  146. package/dist/esm/telemetry/setup.js +67 -0
  147. package/dist/esm/telemetry/tracing.js +195 -0
  148. package/dist/esm/tools/agent_tool.js +104 -0
  149. package/dist/esm/tools/base_tool.js +77 -0
  150. package/dist/esm/tools/base_toolset.js +46 -0
  151. package/dist/esm/tools/forwarding_artifact_service.js +41 -0
  152. package/dist/esm/tools/function_tool.js +71 -0
  153. package/dist/esm/tools/google_search_tool.js +47 -0
  154. package/dist/esm/tools/long_running_tool.js +33 -0
  155. package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
  156. package/dist/esm/tools/mcp/mcp_tool.js +35 -0
  157. package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
  158. package/dist/esm/tools/tool_confirmation.js +19 -0
  159. package/dist/esm/tools/tool_context.js +99 -0
  160. package/dist/esm/utils/client_labels.js +26 -0
  161. package/dist/esm/utils/deep_clone.js +14 -0
  162. package/dist/esm/utils/env_aware_utils.js +49 -0
  163. package/dist/esm/utils/gemini_schema_util.js +58 -0
  164. package/dist/esm/utils/logger.js +89 -0
  165. package/dist/esm/utils/model_name.js +41 -0
  166. package/dist/esm/utils/simple_zod_to_json.js +160 -0
  167. package/dist/esm/utils/variant_utils.js +24 -0
  168. package/dist/esm/version.js +9 -0
  169. package/dist/types/agents/llm_agent.d.ts +1 -0
  170. package/dist/types/models/google_llm.d.ts +0 -7
  171. package/dist/web/agents/active_streaming_tool.js +14 -0
  172. package/dist/web/agents/base_agent.js +265 -0
  173. package/dist/web/agents/base_llm_processor.js +13 -0
  174. package/dist/web/agents/callback_context.js +68 -0
  175. package/dist/web/agents/content_processor_utils.js +280 -0
  176. package/dist/web/agents/functions.js +384 -0
  177. package/dist/web/agents/instructions.js +80 -0
  178. package/dist/web/agents/invocation_context.js +76 -0
  179. package/dist/web/agents/live_request_queue.js +124 -0
  180. package/dist/web/agents/llm_agent.js +1377 -0
  181. package/dist/web/agents/loop_agent.js +71 -0
  182. package/dist/web/agents/parallel_agent.js +83 -0
  183. package/dist/web/agents/readonly_context.js +38 -0
  184. package/dist/web/agents/run_config.js +54 -0
  185. package/dist/web/agents/sequential_agent.js +99 -0
  186. package/dist/web/agents/transcription_entry.js +5 -0
  187. package/dist/web/artifacts/base_artifact_service.js +5 -0
  188. package/dist/web/artifacts/gcs_artifact_service.js +126 -0
  189. package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
  190. package/dist/web/auth/auth_credential.js +16 -0
  191. package/dist/web/auth/auth_handler.js +62 -0
  192. package/dist/web/auth/auth_schemes.js +31 -0
  193. package/dist/web/auth/auth_tool.js +5 -0
  194. package/dist/web/auth/credential_service/base_credential_service.js +5 -0
  195. package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
  196. package/dist/web/auth/exchanger/base_credential_exchanger.js +10 -0
  197. package/dist/web/auth/exchanger/credential_exchanger_registry.js +29 -0
  198. package/dist/web/code_executors/base_code_executor.js +46 -0
  199. package/dist/web/code_executors/built_in_code_executor.js +28 -0
  200. package/dist/web/code_executors/code_execution_utils.js +105 -0
  201. package/dist/web/code_executors/code_executor_context.js +168 -0
  202. package/dist/web/common.js +98 -0
  203. package/dist/web/events/event.js +101 -0
  204. package/dist/web/events/event_actions.js +67 -0
  205. package/dist/web/examples/base_example_provider.js +10 -0
  206. package/dist/web/examples/example.js +5 -0
  207. package/dist/web/examples/example_util.js +75 -0
  208. package/dist/web/index.js +1 -1
  209. package/dist/web/index.js.map +3 -3
  210. package/dist/web/index_web.js +6 -0
  211. package/dist/web/memory/base_memory_service.js +5 -0
  212. package/dist/web/memory/in_memory_memory_service.js +67 -0
  213. package/dist/web/memory/memory_entry.js +5 -0
  214. package/dist/web/models/base_llm.js +64 -0
  215. package/dist/web/models/base_llm_connection.js +5 -0
  216. package/dist/web/models/gemini_llm_connection.js +120 -0
  217. package/dist/web/models/google_llm.js +487 -0
  218. package/dist/web/models/llm_request.js +50 -0
  219. package/dist/web/models/llm_response.js +41 -0
  220. package/dist/web/models/registry.js +91 -0
  221. package/dist/web/plugins/base_plugin.js +206 -0
  222. package/dist/web/plugins/logging_plugin.js +192 -0
  223. package/dist/web/plugins/plugin_manager.js +209 -0
  224. package/dist/web/plugins/security_plugin.js +119 -0
  225. package/dist/web/runner/in_memory_runner.js +28 -0
  226. package/dist/web/runner/runner.js +278 -0
  227. package/dist/web/sessions/base_session_service.js +41 -0
  228. package/dist/web/sessions/in_memory_session_service.js +154 -0
  229. package/dist/web/sessions/session.js +18 -0
  230. package/dist/web/sessions/state.js +87 -0
  231. package/dist/web/telemetry/google_cloud.js +54 -0
  232. package/dist/web/telemetry/setup.js +67 -0
  233. package/dist/web/telemetry/tracing.js +210 -0
  234. package/dist/web/tools/agent_tool.js +118 -0
  235. package/dist/web/tools/base_tool.js +77 -0
  236. package/dist/web/tools/base_toolset.js +46 -0
  237. package/dist/web/tools/forwarding_artifact_service.js +41 -0
  238. package/dist/web/tools/function_tool.js +71 -0
  239. package/dist/web/tools/google_search_tool.js +47 -0
  240. package/dist/web/tools/long_running_tool.js +50 -0
  241. package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
  242. package/dist/web/tools/mcp/mcp_tool.js +35 -0
  243. package/dist/web/tools/mcp/mcp_toolset.js +31 -0
  244. package/dist/web/tools/tool_confirmation.js +19 -0
  245. package/dist/web/tools/tool_context.js +99 -0
  246. package/dist/web/utils/client_labels.js +26 -0
  247. package/dist/web/utils/deep_clone.js +14 -0
  248. package/dist/web/utils/env_aware_utils.js +49 -0
  249. package/dist/web/utils/gemini_schema_util.js +58 -0
  250. package/dist/web/utils/logger.js +89 -0
  251. package/dist/web/utils/model_name.js +41 -0
  252. package/dist/web/utils/simple_zod_to_json.js +174 -0
  253. package/dist/web/utils/variant_utils.js +24 -0
  254. package/dist/web/version.js +9 -0
  255. package/package.json +1 -1
@@ -0,0 +1,191 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var simple_zod_to_json_exports = {};
26
+ __export(simple_zod_to_json_exports, {
27
+ isZodObject: () => isZodObject,
28
+ zodObjectToSchema: () => zodObjectToSchema
29
+ });
30
+ module.exports = __toCommonJS(simple_zod_to_json_exports);
31
+ var import_genai = require("@google/genai");
32
+ var import_zod = require("zod");
33
+ /**
34
+ * @license
35
+ * Copyright 2025 Google LLC
36
+ * SPDX-License-Identifier: Apache-2.0
37
+ */
38
+ function isZodObject(obj) {
39
+ var _a;
40
+ return obj !== null && typeof obj === "object" && ((_a = obj._def) == null ? void 0 : _a.typeName) === "ZodObject";
41
+ }
42
+ function parseZodType(zodType) {
43
+ const def = zodType._def;
44
+ if (!def) {
45
+ return {};
46
+ }
47
+ const description = def.description;
48
+ const result = {};
49
+ if (description) result.description = description;
50
+ const returnResult = (result2) => {
51
+ if (result2.description === void 0) {
52
+ delete result2.description;
53
+ }
54
+ return result2;
55
+ };
56
+ switch (def.typeName) {
57
+ case import_zod.z.ZodFirstPartyTypeKind.ZodString:
58
+ result.type = import_genai.Type.STRING;
59
+ for (const check of def.checks || []) {
60
+ if (check.kind === "min")
61
+ result.minLength = check.value.toString();
62
+ else if (check.kind === "max")
63
+ result.maxLength = check.value.toString();
64
+ else if (check.kind === "email")
65
+ result.format = "email";
66
+ else if (check.kind === "uuid")
67
+ result.format = "uuid";
68
+ else if (check.kind === "url")
69
+ result.format = "uri";
70
+ else if (check.kind === "regex")
71
+ result.pattern = check.regex.source;
72
+ }
73
+ return returnResult(result);
74
+ case import_zod.z.ZodFirstPartyTypeKind.ZodNumber:
75
+ result.type = import_genai.Type.NUMBER;
76
+ for (const check of def.checks || []) {
77
+ if (check.kind === "min")
78
+ result.minimum = check.value;
79
+ else if (check.kind === "max")
80
+ result.maximum = check.value;
81
+ else if (check.kind === "int")
82
+ result.type = import_genai.Type.INTEGER;
83
+ }
84
+ return returnResult(result);
85
+ case import_zod.z.ZodFirstPartyTypeKind.ZodBoolean:
86
+ result.type = import_genai.Type.BOOLEAN;
87
+ return returnResult(result);
88
+ case import_zod.z.ZodFirstPartyTypeKind.ZodArray:
89
+ result.type = import_genai.Type.ARRAY;
90
+ result.items = parseZodType(def.type);
91
+ if (def.minLength) result.minItems = def.minLength.value.toString();
92
+ if (def.maxLength) result.maxItems = def.maxLength.value.toString();
93
+ return returnResult(result);
94
+ case import_zod.z.ZodFirstPartyTypeKind.ZodObject: {
95
+ const nestedSchema = zodObjectToSchema(zodType);
96
+ return nestedSchema;
97
+ }
98
+ case import_zod.z.ZodFirstPartyTypeKind.ZodLiteral:
99
+ const literalType = typeof def.value;
100
+ result.enum = [def.value.toString()];
101
+ if (literalType === "string") {
102
+ result.type = import_genai.Type.STRING;
103
+ } else if (literalType === "number") {
104
+ result.type = import_genai.Type.NUMBER;
105
+ } else if (literalType === "boolean") {
106
+ result.type = import_genai.Type.BOOLEAN;
107
+ } else if (def.value === null) {
108
+ result.type = import_genai.Type.NULL;
109
+ } else {
110
+ throw new Error(`Unsupported ZodLiteral value type: ${literalType}`);
111
+ }
112
+ return returnResult(result);
113
+ case import_zod.z.ZodFirstPartyTypeKind.ZodEnum:
114
+ result.type = import_genai.Type.STRING;
115
+ result.enum = def.values;
116
+ return returnResult(result);
117
+ case import_zod.z.ZodFirstPartyTypeKind.ZodNativeEnum:
118
+ result.type = import_genai.Type.STRING;
119
+ result.enum = Object.values(def.values);
120
+ return returnResult(result);
121
+ case import_zod.z.ZodFirstPartyTypeKind.ZodUnion:
122
+ result.anyOf = def.options.map(parseZodType);
123
+ return returnResult(result);
124
+ case import_zod.z.ZodFirstPartyTypeKind.ZodOptional:
125
+ return parseZodType(def.innerType);
126
+ case import_zod.z.ZodFirstPartyTypeKind.ZodNullable:
127
+ const nullableInner = parseZodType(def.innerType);
128
+ return nullableInner ? returnResult({
129
+ anyOf: [nullableInner, { type: import_genai.Type.NULL }],
130
+ ...description && { description }
131
+ }) : returnResult({ type: import_genai.Type.NULL, ...description && { description } });
132
+ case import_zod.z.ZodFirstPartyTypeKind.ZodDefault:
133
+ const defaultInner = parseZodType(def.innerType);
134
+ if (defaultInner) defaultInner.default = def.defaultValue();
135
+ return defaultInner;
136
+ case import_zod.z.ZodFirstPartyTypeKind.ZodBranded:
137
+ return parseZodType(def.type);
138
+ case import_zod.z.ZodFirstPartyTypeKind.ZodReadonly:
139
+ return parseZodType(def.innerType);
140
+ case import_zod.z.ZodFirstPartyTypeKind.ZodNull:
141
+ result.type = import_genai.Type.NULL;
142
+ return returnResult(result);
143
+ case import_zod.z.ZodFirstPartyTypeKind.ZodAny:
144
+ case import_zod.z.ZodFirstPartyTypeKind.ZodUnknown:
145
+ return returnResult({ ...description && { description } });
146
+ default:
147
+ throw new Error(`Unsupported Zod type: ${def.typeName}`);
148
+ }
149
+ }
150
+ function zodObjectToSchema(schema) {
151
+ if (schema._def.typeName !== import_zod.z.ZodFirstPartyTypeKind.ZodObject) {
152
+ throw new Error("Expected a ZodObject");
153
+ }
154
+ const shape = schema.shape;
155
+ const properties = {};
156
+ const required = [];
157
+ for (const key in shape) {
158
+ const fieldSchema = shape[key];
159
+ const parsedField = parseZodType(fieldSchema);
160
+ if (parsedField) {
161
+ properties[key] = parsedField;
162
+ }
163
+ let currentSchema = fieldSchema;
164
+ let isOptional = false;
165
+ while (currentSchema._def.typeName === import_zod.z.ZodFirstPartyTypeKind.ZodOptional || currentSchema._def.typeName === import_zod.z.ZodFirstPartyTypeKind.ZodDefault) {
166
+ isOptional = true;
167
+ currentSchema = currentSchema._def.innerType;
168
+ }
169
+ if (!isOptional) {
170
+ required.push(key);
171
+ }
172
+ }
173
+ const catchall = schema._def.catchall;
174
+ let additionalProperties = false;
175
+ if (catchall && catchall._def.typeName !== import_zod.z.ZodFirstPartyTypeKind.ZodNever) {
176
+ additionalProperties = parseZodType(catchall) || true;
177
+ } else {
178
+ additionalProperties = schema._def.unknownKeys === "passthrough";
179
+ }
180
+ return {
181
+ type: import_genai.Type.OBJECT,
182
+ properties,
183
+ required: required.length > 0 ? required : [],
184
+ ...schema._def.description ? { description: schema._def.description } : {}
185
+ };
186
+ }
187
+ // Annotate the CommonJS export names for ESM import in node:
188
+ 0 && (module.exports = {
189
+ isZodObject,
190
+ zodObjectToSchema
191
+ });
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var variant_utils_exports = {};
26
+ __export(variant_utils_exports, {
27
+ GoogleLLMVariant: () => GoogleLLMVariant,
28
+ getGoogleLlmVariant: () => getGoogleLlmVariant
29
+ });
30
+ module.exports = __toCommonJS(variant_utils_exports);
31
+ /**
32
+ * @license
33
+ * Copyright 2025 Google LLC
34
+ * SPDX-License-Identifier: Apache-2.0
35
+ */
36
+ var GoogleLLMVariant = /* @__PURE__ */ ((GoogleLLMVariant2) => {
37
+ GoogleLLMVariant2["VERTEX_AI"] = "VERTEX_AI";
38
+ GoogleLLMVariant2["GEMINI_API"] = "GEMINI_API";
39
+ return GoogleLLMVariant2;
40
+ })(GoogleLLMVariant || {});
41
+ function getGoogleLlmVariant() {
42
+ return getBooleanEnvVar("GOOGLE_GENAI_USE_VERTEXAI") ? "VERTEX_AI" /* VERTEX_AI */ : "GEMINI_API" /* GEMINI_API */;
43
+ }
44
+ function getBooleanEnvVar(envVar) {
45
+ if (!process.env) {
46
+ return false;
47
+ }
48
+ const envVarValue = (process.env[envVar] || "").toLowerCase();
49
+ return ["true", "1"].includes(envVar.toLowerCase());
50
+ }
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ GoogleLLMVariant,
54
+ getGoogleLlmVariant
55
+ });
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var version_exports = {};
26
+ __export(version_exports, {
27
+ version: () => version
28
+ });
29
+ module.exports = __toCommonJS(version_exports);
30
+ /**
31
+ * @license
32
+ * Copyright 2025 Google LLC
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ const version = "0.2.4";
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ version
39
+ });
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class ActiveStreamingTool {
7
+ constructor(params = {}) {
8
+ this.task = params.task;
9
+ this.stream = params.stream;
10
+ }
11
+ }
12
+ export {
13
+ ActiveStreamingTool
14
+ };
@@ -0,0 +1,214 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { trace } from "@opentelemetry/api";
7
+ import { createEvent } from "../events/event.js";
8
+ import { CallbackContext } from "./callback_context.js";
9
+ import { InvocationContext } from "./invocation_context.js";
10
+ class BaseAgent {
11
+ constructor(config) {
12
+ this.name = validateAgentName(config.name);
13
+ this.description = config.description;
14
+ this.parentAgent = config.parentAgent;
15
+ this.subAgents = config.subAgents || [];
16
+ this.rootAgent = getRootAgent(this);
17
+ this.beforeAgentCallback = getCannonicalCallback(config.beforeAgentCallback);
18
+ this.afterAgentCallback = getCannonicalCallback(config.afterAgentCallback);
19
+ this.setParentAgentForSubAgents();
20
+ }
21
+ /**
22
+ * Entry method to run an agent via text-based conversation.
23
+ *
24
+ * @param parentContext The invocation context of the parent agent.
25
+ * @yields The events generated by the agent.
26
+ * @returns An AsyncGenerator that yields the events generated by the agent.
27
+ */
28
+ async *runAsync(parentContext) {
29
+ const span = trace.getTracer("gcp.vertex.agent").startSpan(`agent_run [${this.name}]`);
30
+ try {
31
+ const context = this.createInvocationContext(parentContext);
32
+ const beforeAgentCallbackEvent = await this.handleBeforeAgentCallback(context);
33
+ if (beforeAgentCallbackEvent) {
34
+ yield beforeAgentCallbackEvent;
35
+ }
36
+ if (context.endInvocation) {
37
+ return;
38
+ }
39
+ for await (const event of this.runAsyncImpl(context)) {
40
+ yield event;
41
+ }
42
+ if (context.endInvocation) {
43
+ return;
44
+ }
45
+ const afterAgentCallbackEvent = await this.handleAfterAgentCallback(context);
46
+ if (afterAgentCallbackEvent) {
47
+ yield afterAgentCallbackEvent;
48
+ }
49
+ } finally {
50
+ span.end();
51
+ }
52
+ }
53
+ /**
54
+ * Entry method to run an agent via video/audio-based conversation.
55
+ *
56
+ * @param parentContext The invocation context of the parent agent.
57
+ * @yields The events generated by the agent.
58
+ * @returns An AsyncGenerator that yields the events generated by the agent.
59
+ */
60
+ async *runLive(parentContext) {
61
+ const span = trace.getTracer("gcp.vertex.agent").startSpan(`agent_run [${this.name}]`);
62
+ try {
63
+ throw new Error("Live mode is not implemented yet.");
64
+ } finally {
65
+ span.end();
66
+ }
67
+ }
68
+ /**
69
+ * Finds the agent with the given name in this agent and its descendants.
70
+ *
71
+ * @param name The name of the agent to find.
72
+ * @return The agent with the given name, or undefined if not found.
73
+ */
74
+ findAgent(name) {
75
+ if (this.name === name) {
76
+ return this;
77
+ }
78
+ return this.findSubAgent(name);
79
+ }
80
+ /**
81
+ * Finds the agent with the given name in this agent's descendants.
82
+ *
83
+ * @param name The name of the agent to find.
84
+ * @return The agent with the given name, or undefined if not found.
85
+ */
86
+ findSubAgent(name) {
87
+ for (const subAgent of this.subAgents) {
88
+ const result = subAgent.findAgent(name);
89
+ if (result) {
90
+ return result;
91
+ }
92
+ }
93
+ return void 0;
94
+ }
95
+ /**
96
+ * Creates an invocation context for this agent.
97
+ *
98
+ * @param parentContext The invocation context of the parent agent.
99
+ * @return The invocation context for this agent.
100
+ */
101
+ createInvocationContext(parentContext) {
102
+ return new InvocationContext({
103
+ ...parentContext,
104
+ agent: this
105
+ });
106
+ }
107
+ /**
108
+ * Runs the before agent callback if it exists.
109
+ *
110
+ * @param invocationContext The invocation context of the agent.
111
+ * @return The event to return to the user, or undefined if no event is
112
+ * generated.
113
+ */
114
+ async handleBeforeAgentCallback(invocationContext) {
115
+ if (this.beforeAgentCallback.length === 0) {
116
+ return void 0;
117
+ }
118
+ const callbackContext = new CallbackContext({ invocationContext });
119
+ for (const callback of this.beforeAgentCallback) {
120
+ const content = await callback(callbackContext);
121
+ if (content) {
122
+ invocationContext.endInvocation = true;
123
+ return createEvent({
124
+ invocationId: invocationContext.invocationId,
125
+ author: this.name,
126
+ branch: invocationContext.branch,
127
+ content,
128
+ actions: callbackContext.eventActions
129
+ });
130
+ }
131
+ }
132
+ if (callbackContext.state.hasDelta()) {
133
+ return createEvent({
134
+ invocationId: invocationContext.invocationId,
135
+ author: this.name,
136
+ branch: invocationContext.branch,
137
+ actions: callbackContext.eventActions
138
+ });
139
+ }
140
+ return void 0;
141
+ }
142
+ /**
143
+ * Runs the after agent callback if it exists.
144
+ *
145
+ * @param invocationContext The invocation context of the agent.
146
+ * @return The event to return to the user, or undefined if no event is
147
+ * generated.
148
+ */
149
+ async handleAfterAgentCallback(invocationContext) {
150
+ if (this.afterAgentCallback.length === 0) {
151
+ return void 0;
152
+ }
153
+ const callbackContext = new CallbackContext({ invocationContext });
154
+ for (const callback of this.afterAgentCallback) {
155
+ const content = await callback(callbackContext);
156
+ if (content) {
157
+ return createEvent({
158
+ invocationId: invocationContext.invocationId,
159
+ author: this.name,
160
+ branch: invocationContext.branch,
161
+ content,
162
+ actions: callbackContext.eventActions
163
+ });
164
+ }
165
+ }
166
+ if (callbackContext.state.hasDelta()) {
167
+ return createEvent({
168
+ invocationId: invocationContext.invocationId,
169
+ author: this.name,
170
+ branch: invocationContext.branch,
171
+ actions: callbackContext.eventActions
172
+ });
173
+ }
174
+ return void 0;
175
+ }
176
+ setParentAgentForSubAgents() {
177
+ for (const subAgent of this.subAgents) {
178
+ if (subAgent.parentAgent) {
179
+ throw new Error(`Agent "${subAgent.name}" already has a parent agent, current parent: "${subAgent.parentAgent.name}", trying to add: "${this.name}"`);
180
+ }
181
+ subAgent.parentAgent = this;
182
+ }
183
+ }
184
+ }
185
+ function validateAgentName(name) {
186
+ if (!isIdentifier(name)) {
187
+ throw new Error(`Found invalid agent name: "${name}". Agent name must be a valid identifier. It should start with a letter (a-z, A-Z) or an underscore (_), and can only contain letters, digits (0-9), and underscores.`);
188
+ }
189
+ if (name === "user") {
190
+ throw new Error(
191
+ `Agent name cannot be 'user'. 'user' is reserved for end-user's input.`
192
+ );
193
+ }
194
+ return name;
195
+ }
196
+ function isIdentifier(str) {
197
+ return /^[\p{ID_Start}$_][\p{ID_Continue}$_]*$/u.test(str);
198
+ }
199
+ function getRootAgent(rootAgent) {
200
+ while (rootAgent.parentAgent) {
201
+ rootAgent = rootAgent.parentAgent;
202
+ }
203
+ return rootAgent;
204
+ }
205
+ function getCannonicalCallback(callbacks) {
206
+ if (!callbacks) {
207
+ return [];
208
+ }
209
+ return Array.isArray(callbacks) ? callbacks : [callbacks];
210
+ }
211
+ export {
212
+ BaseAgent,
213
+ getCannonicalCallback
214
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class BaseLlmRequestProcessor {
7
+ }
8
+ class BaseLlmResponseProcessor {
9
+ }
10
+ export {
11
+ BaseLlmRequestProcessor,
12
+ BaseLlmResponseProcessor
13
+ };
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { createEventActions } from "../events/event_actions.js";
7
+ import { State } from "../sessions/state.js";
8
+ import { ReadonlyContext } from "./readonly_context.js";
9
+ class CallbackContext extends ReadonlyContext {
10
+ constructor({ invocationContext, eventActions }) {
11
+ super(invocationContext);
12
+ this.eventActions = eventActions || createEventActions();
13
+ this._state = new State(
14
+ invocationContext.session.state,
15
+ this.eventActions.stateDelta
16
+ );
17
+ }
18
+ /**
19
+ * The delta-aware state of the current session.
20
+ */
21
+ get state() {
22
+ return this._state;
23
+ }
24
+ /**
25
+ * Loads an artifact attached to the current session.
26
+ *
27
+ * @param filename The filename of the artifact.
28
+ * @param version The version of the artifact. If not provided, the latest
29
+ * version will be used.
30
+ * @return A promise that resolves to the loaded artifact.
31
+ */
32
+ loadArtifact(filename, version) {
33
+ if (!this.invocationContext.artifactService) {
34
+ throw new Error("Artifact service is not initialized.");
35
+ }
36
+ return this.invocationContext.artifactService.loadArtifact({
37
+ appName: this.invocationContext.appName,
38
+ userId: this.invocationContext.userId,
39
+ sessionId: this.invocationContext.session.id,
40
+ filename,
41
+ version
42
+ });
43
+ }
44
+ /**
45
+ * Saves an artifact attached to the current session.
46
+ *
47
+ * @param filename The filename of the artifact.
48
+ * @param artifact The artifact to save.
49
+ * @return A promise that resolves to the version of the saved artifact.
50
+ */
51
+ async saveArtifact(filename, artifact) {
52
+ if (!this.invocationContext.artifactService) {
53
+ throw new Error("Artifact service is not initialized.");
54
+ }
55
+ const version = await this.invocationContext.artifactService.saveArtifact({
56
+ appName: this.invocationContext.appName,
57
+ userId: this.invocationContext.userId,
58
+ sessionId: this.invocationContext.session.id,
59
+ filename,
60
+ artifact
61
+ });
62
+ this.eventActions.artifactDelta[filename] = version;
63
+ return version;
64
+ }
65
+ }
66
+ export {
67
+ CallbackContext
68
+ };