@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,472 @@
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 google_llm_exports = {};
26
+ __export(google_llm_exports, {
27
+ Gemini: () => Gemini
28
+ });
29
+ module.exports = __toCommonJS(google_llm_exports);
30
+ var import_genai = require("@google/genai");
31
+ var import_logger = require("../utils/logger.js");
32
+ var import_model_name = require("../utils/model_name.js");
33
+ var import_variant_utils = require("../utils/variant_utils.js");
34
+ var import_base_llm = require("./base_llm.js");
35
+ var import_gemini_llm_connection = require("./gemini_llm_connection.js");
36
+ var import_llm_response = require("./llm_response.js");
37
+ /**
38
+ * @license
39
+ * Copyright 2025 Google LLC
40
+ * SPDX-License-Identifier: Apache-2.0
41
+ */
42
+ const AGENT_ENGINE_TELEMETRY_TAG = "remote_reasoning_engine";
43
+ const AGENT_ENGINE_TELEMETRY_ENV_VARIABLE_NAME = "GOOGLE_CLOUD_AGENT_ENGINE_ID";
44
+ const GEMINI3_PREVIEW_API_ENDPOINT = "https://aiplatform.googleapis.com/v1/publishers/google";
45
+ class Gemini extends import_base_llm.BaseLlm {
46
+ /**
47
+ * @param params The parameters for creating a Gemini instance.
48
+ */
49
+ constructor({
50
+ model,
51
+ apiKey,
52
+ vertexai,
53
+ project,
54
+ location,
55
+ headers,
56
+ apiEndpoint
57
+ }) {
58
+ if (!model) {
59
+ model = "gemini-2.5-flash";
60
+ }
61
+ super({ model });
62
+ this.project = project;
63
+ this.location = location;
64
+ this.apiKey = apiKey;
65
+ this.headers = headers;
66
+ this.isGemini3Preview = (0, import_model_name.isGemini3PreviewModel)(model);
67
+ const canReadEnv = typeof process === "object";
68
+ this.apiEndpoint = apiEndpoint;
69
+ if (!this.apiEndpoint && canReadEnv) {
70
+ this.apiEndpoint = process.env["GEMINI_API_ENDPOINT"];
71
+ }
72
+ if (!this.apiEndpoint && this.isGemini3Preview) {
73
+ this.apiEndpoint = GEMINI3_PREVIEW_API_ENDPOINT;
74
+ import_logger.logger.info(`Using Gemini 3 preview endpoint: ${this.apiEndpoint}`);
75
+ }
76
+ let useVertexAI = !!vertexai;
77
+ if (!useVertexAI && canReadEnv) {
78
+ const vertexAIfromEnv = process.env["GOOGLE_GENAI_USE_VERTEXAI"];
79
+ if (vertexAIfromEnv) {
80
+ useVertexAI = vertexAIfromEnv.toLowerCase() === "true" || vertexAIfromEnv === "1";
81
+ }
82
+ }
83
+ if (this.isGemini3Preview && useVertexAI) {
84
+ const availableApiKey = apiKey || (canReadEnv ? process.env["GOOGLE_GENAI_API_KEY"] || process.env["GEMINI_API_KEY"] : void 0);
85
+ if (availableApiKey) {
86
+ import_logger.logger.info(
87
+ "Gemini 3 preview detected with Vertex AI mode. Switching to API key mode for correct endpoint handling."
88
+ );
89
+ useVertexAI = false;
90
+ this.apiKey = availableApiKey;
91
+ } else {
92
+ import_logger.logger.warn(
93
+ "Gemini 3 preview requires API key authentication for correct endpoint handling. Set GEMINI_API_KEY or GOOGLE_GENAI_API_KEY environment variable for best compatibility."
94
+ );
95
+ }
96
+ }
97
+ this.vertexai = useVertexAI;
98
+ if (this.vertexai) {
99
+ if (canReadEnv && !this.project) {
100
+ this.project = process.env["GOOGLE_CLOUD_PROJECT"];
101
+ }
102
+ if (canReadEnv && !this.location) {
103
+ this.location = process.env["GOOGLE_CLOUD_LOCATION"];
104
+ }
105
+ if (!this.project) {
106
+ throw new Error(
107
+ "VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable."
108
+ );
109
+ }
110
+ if (!this.location) {
111
+ throw new Error(
112
+ "VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable."
113
+ );
114
+ }
115
+ } else {
116
+ if (!this.apiKey && canReadEnv) {
117
+ this.apiKey = process.env["GOOGLE_GENAI_API_KEY"] || process.env["GEMINI_API_KEY"];
118
+ }
119
+ if (!this.apiKey) {
120
+ throw new Error(
121
+ "API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable."
122
+ );
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Sends a request to the Gemini model.
128
+ *
129
+ * @param llmRequest LlmRequest, the request to send to the Gemini model.
130
+ * @param stream bool = false, whether to do streaming call.
131
+ * @yields LlmResponse: The model response.
132
+ */
133
+ async *generateContentAsync(llmRequest, stream = false) {
134
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
135
+ this.preprocessRequest(llmRequest);
136
+ this.maybeAppendUserContent(llmRequest);
137
+ import_logger.logger.info(
138
+ `Sending out request, model: ${llmRequest.model}, backend: ${this.apiBackend}, stream: ${stream}`
139
+ );
140
+ if ((_a = llmRequest.config) == null ? void 0 : _a.httpOptions) {
141
+ llmRequest.config.httpOptions.headers = {
142
+ ...llmRequest.config.httpOptions.headers,
143
+ ...this.trackingHeaders
144
+ };
145
+ }
146
+ if (stream) {
147
+ const streamResult = await this.apiClient.models.generateContentStream({
148
+ model: (_b = llmRequest.model) != null ? _b : this.model,
149
+ contents: llmRequest.contents,
150
+ config: llmRequest.config
151
+ });
152
+ let thoughtText = "";
153
+ let thoughtSignature;
154
+ let text = "";
155
+ let usageMetadata;
156
+ let lastResponse;
157
+ for await (const response of streamResult) {
158
+ lastResponse = response;
159
+ const llmResponse = (0, import_llm_response.createLlmResponse)(response);
160
+ usageMetadata = llmResponse.usageMetadata;
161
+ const firstPart = (_d = (_c = llmResponse.content) == null ? void 0 : _c.parts) == null ? void 0 : _d[0];
162
+ const hasFunctionCalls = (_f = (_e = llmResponse.content) == null ? void 0 : _e.parts) == null ? void 0 : _f.some(
163
+ (part) => part.functionCall
164
+ );
165
+ if (this.isGemini3Preview && ((_g = llmResponse.content) == null ? void 0 : _g.parts)) {
166
+ for (const part of llmResponse.content.parts) {
167
+ if (part.thoughtSignature && !thoughtSignature) {
168
+ thoughtSignature = part.thoughtSignature;
169
+ import_logger.logger.debug(
170
+ `[Gemini3] Captured thoughtSignature (length: ${thoughtSignature.length})`
171
+ );
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ if (firstPart == null ? void 0 : firstPart.text) {
177
+ if ("thought" in firstPart && firstPart.thought) {
178
+ thoughtText += firstPart.text;
179
+ if ("thoughtSignature" in firstPart && firstPart.thoughtSignature) {
180
+ thoughtSignature = firstPart.thoughtSignature;
181
+ }
182
+ } else {
183
+ text += firstPart.text;
184
+ }
185
+ llmResponse.partial = true;
186
+ if (this.isGemini3Preview && hasFunctionCalls) {
187
+ thoughtText = "";
188
+ thoughtSignature = void 0;
189
+ text = "";
190
+ }
191
+ } else if ((thoughtText || text) && (!firstPart || !firstPart.inlineData)) {
192
+ if (this.isGemini3Preview && hasFunctionCalls && llmResponse.content) {
193
+ const prependParts = [];
194
+ if (thoughtText) {
195
+ const thoughtPart = { text: thoughtText, thought: true };
196
+ if (thoughtSignature) {
197
+ thoughtPart.thoughtSignature = thoughtSignature;
198
+ }
199
+ prependParts.push(thoughtPart);
200
+ }
201
+ if (text) {
202
+ prependParts.push((0, import_genai.createPartFromText)(text));
203
+ }
204
+ if (!thoughtText && thoughtSignature) {
205
+ for (const part of llmResponse.content.parts || []) {
206
+ if (part.functionCall && !part.thoughtSignature) {
207
+ part.thoughtSignature = thoughtSignature;
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ llmResponse.content.parts = [
213
+ ...prependParts,
214
+ ...llmResponse.content.parts || []
215
+ ];
216
+ thoughtText = "";
217
+ thoughtSignature = void 0;
218
+ text = "";
219
+ } else {
220
+ const parts = [];
221
+ if (thoughtText) {
222
+ const thoughtPart = { text: thoughtText, thought: true };
223
+ if (thoughtSignature) {
224
+ thoughtPart.thoughtSignature = thoughtSignature;
225
+ }
226
+ parts.push(thoughtPart);
227
+ }
228
+ if (text) {
229
+ parts.push((0, import_genai.createPartFromText)(text));
230
+ }
231
+ yield {
232
+ content: {
233
+ role: "model",
234
+ parts
235
+ },
236
+ usageMetadata: llmResponse.usageMetadata
237
+ };
238
+ thoughtText = "";
239
+ thoughtSignature = void 0;
240
+ text = "";
241
+ }
242
+ }
243
+ if (this.isGemini3Preview && hasFunctionCalls && ((_h = llmResponse.content) == null ? void 0 : _h.parts)) {
244
+ const hasExistingSignature = llmResponse.content.parts.some(
245
+ (p) => p.thoughtSignature
246
+ );
247
+ if (!hasExistingSignature && thoughtSignature) {
248
+ for (const part of llmResponse.content.parts) {
249
+ if (part.functionCall) {
250
+ part.thoughtSignature = thoughtSignature;
251
+ break;
252
+ }
253
+ }
254
+ }
255
+ const partsWithSig = llmResponse.content.parts.filter(
256
+ (p) => p.thoughtSignature
257
+ ).length;
258
+ if (partsWithSig === 0) {
259
+ import_logger.logger.warn(
260
+ `[Gemini3] No thoughtSignature on function call parts \u2014 may cause 400 on next request`
261
+ );
262
+ }
263
+ }
264
+ yield llmResponse;
265
+ }
266
+ if ((text || thoughtText) && ((_j = (_i = lastResponse == null ? void 0 : lastResponse.candidates) == null ? void 0 : _i[0]) == null ? void 0 : _j.finishReason) === import_genai.FinishReason.STOP) {
267
+ const parts = [];
268
+ if (thoughtText) {
269
+ const thoughtPart = { text: thoughtText, thought: true };
270
+ if (thoughtSignature) {
271
+ thoughtPart.thoughtSignature = thoughtSignature;
272
+ }
273
+ parts.push(thoughtPart);
274
+ }
275
+ if (text) {
276
+ parts.push({ text });
277
+ }
278
+ yield {
279
+ content: {
280
+ role: "model",
281
+ parts
282
+ },
283
+ usageMetadata
284
+ };
285
+ }
286
+ } else {
287
+ const response = await this.apiClient.models.generateContent({
288
+ model: (_k = llmRequest.model) != null ? _k : this.model,
289
+ contents: llmRequest.contents,
290
+ config: llmRequest.config
291
+ });
292
+ const llmResponse = (0, import_llm_response.createLlmResponse)(response);
293
+ if (this.isGemini3Preview && ((_l = llmResponse.content) == null ? void 0 : _l.parts)) {
294
+ let thoughtSig;
295
+ let hasThoughtPartWithSignature = false;
296
+ for (const part of llmResponse.content.parts) {
297
+ if (part.thoughtSignature) {
298
+ thoughtSig = part.thoughtSignature;
299
+ if (part.thought) {
300
+ hasThoughtPartWithSignature = true;
301
+ }
302
+ break;
303
+ }
304
+ }
305
+ if (thoughtSig && !hasThoughtPartWithSignature) {
306
+ for (const part of llmResponse.content.parts) {
307
+ if (part.functionCall && !part.thoughtSignature) {
308
+ part.thoughtSignature = thoughtSig;
309
+ break;
310
+ }
311
+ }
312
+ }
313
+ const hasFunctionCalls = llmResponse.content.parts.some(
314
+ (p) => p.functionCall
315
+ );
316
+ if (hasFunctionCalls) {
317
+ const partsWithSig = llmResponse.content.parts.filter(
318
+ (p) => p.thoughtSignature
319
+ ).length;
320
+ if (partsWithSig === 0) {
321
+ import_logger.logger.warn(
322
+ `[Gemini3] No thoughtSignature on function call parts \u2014 may cause 400 on next request`
323
+ );
324
+ }
325
+ }
326
+ }
327
+ yield llmResponse;
328
+ }
329
+ }
330
+ get apiClient() {
331
+ if (this._apiClient) {
332
+ return this._apiClient;
333
+ }
334
+ const combinedHeaders = {
335
+ ...this.trackingHeaders,
336
+ ...this.headers
337
+ };
338
+ if (this.vertexai) {
339
+ this._apiClient = new import_genai.GoogleGenAI({
340
+ vertexai: this.vertexai,
341
+ project: this.project,
342
+ location: this.location,
343
+ httpOptions: { headers: combinedHeaders }
344
+ });
345
+ } else {
346
+ const httpOptions = { headers: combinedHeaders };
347
+ if (this.apiEndpoint) {
348
+ httpOptions.baseUrl = this.apiEndpoint;
349
+ import_logger.logger.debug(`Using custom API endpoint: ${this.apiEndpoint}`);
350
+ if (this.isGemini3Preview) {
351
+ httpOptions.apiVersion = "";
352
+ import_logger.logger.info(
353
+ `Gemini 3 preview mode: using direct API path without version prefix`
354
+ );
355
+ }
356
+ }
357
+ this._apiClient = new import_genai.GoogleGenAI({
358
+ apiKey: this.apiKey,
359
+ vertexai: false,
360
+ httpOptions
361
+ });
362
+ }
363
+ return this._apiClient;
364
+ }
365
+ get apiBackend() {
366
+ if (!this._apiBackend) {
367
+ this._apiBackend = this.apiClient.vertexai ? import_variant_utils.GoogleLLMVariant.VERTEX_AI : import_variant_utils.GoogleLLMVariant.GEMINI_API;
368
+ }
369
+ return this._apiBackend;
370
+ }
371
+ get liveApiVersion() {
372
+ if (!this._liveApiVersion) {
373
+ this._liveApiVersion = this.apiBackend === import_variant_utils.GoogleLLMVariant.VERTEX_AI ? "v1beta1" : "v1alpha";
374
+ }
375
+ return this._liveApiVersion;
376
+ }
377
+ get liveApiClient() {
378
+ if (!this._liveApiClient) {
379
+ const httpOptions = {
380
+ headers: this.trackingHeaders,
381
+ apiVersion: this.liveApiVersion
382
+ };
383
+ if (this.apiEndpoint) {
384
+ httpOptions.baseUrl = this.apiEndpoint;
385
+ if (this.isGemini3Preview) {
386
+ httpOptions.apiVersion = "";
387
+ }
388
+ }
389
+ this._liveApiClient = new import_genai.GoogleGenAI({
390
+ apiKey: this.apiKey,
391
+ httpOptions
392
+ });
393
+ }
394
+ return this._liveApiClient;
395
+ }
396
+ /**
397
+ * Connects to the Gemini model and returns an llm connection.
398
+ *
399
+ * @param llmRequest LlmRequest, the request to send to the Gemini model.
400
+ * @returns BaseLlmConnection, the connection to the Gemini model.
401
+ */
402
+ async connect(llmRequest) {
403
+ var _a, _b, _c, _d;
404
+ if ((_a = llmRequest.liveConnectConfig) == null ? void 0 : _a.httpOptions) {
405
+ if (!llmRequest.liveConnectConfig.httpOptions.headers) {
406
+ llmRequest.liveConnectConfig.httpOptions.headers = {};
407
+ }
408
+ Object.assign(
409
+ llmRequest.liveConnectConfig.httpOptions.headers,
410
+ this.trackingHeaders
411
+ );
412
+ llmRequest.liveConnectConfig.httpOptions.apiVersion = this.isGemini3Preview ? "" : this.liveApiVersion;
413
+ }
414
+ if ((_b = llmRequest.config) == null ? void 0 : _b.systemInstruction) {
415
+ llmRequest.liveConnectConfig.systemInstruction = {
416
+ role: "system",
417
+ // TODO - b/425992518: validate type casting works well.
418
+ parts: [
419
+ (0, import_genai.createPartFromText)(llmRequest.config.systemInstruction)
420
+ ]
421
+ };
422
+ }
423
+ llmRequest.liveConnectConfig.tools = (_c = llmRequest.config) == null ? void 0 : _c.tools;
424
+ const liveSession = await this.liveApiClient.live.connect({
425
+ model: (_d = llmRequest.model) != null ? _d : this.model,
426
+ config: llmRequest.liveConnectConfig,
427
+ callbacks: {
428
+ // TODO - b/425992518: GenAI SDK inconsistent API, missing methods.
429
+ onmessage: () => {
430
+ }
431
+ }
432
+ });
433
+ return new import_gemini_llm_connection.GeminiLlmConnection(liveSession);
434
+ }
435
+ preprocessRequest(llmRequest) {
436
+ if (this.apiBackend === import_variant_utils.GoogleLLMVariant.GEMINI_API) {
437
+ if (llmRequest.config) {
438
+ llmRequest.config.labels = void 0;
439
+ }
440
+ if (llmRequest.contents) {
441
+ for (const content of llmRequest.contents) {
442
+ if (!content.parts) continue;
443
+ for (const part of content.parts) {
444
+ removeDisplayNameIfPresent(part.inlineData);
445
+ removeDisplayNameIfPresent(part.fileData);
446
+ }
447
+ }
448
+ }
449
+ }
450
+ }
451
+ }
452
+ /**
453
+ * A list of model name patterns that are supported by this LLM.
454
+ *
455
+ * @returns A list of supported models.
456
+ */
457
+ Gemini.supportedModels = [
458
+ /gemini-.*/,
459
+ // fine-tuned vertex endpoint pattern
460
+ /projects\/.+\/locations\/.+\/endpoints\/.+/,
461
+ // vertex gemini long name
462
+ /projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/
463
+ ];
464
+ function removeDisplayNameIfPresent(dataObj) {
465
+ if (dataObj && dataObj.displayName) {
466
+ dataObj.displayName = void 0;
467
+ }
468
+ }
469
+ // Annotate the CommonJS export names for ESM import in node:
470
+ 0 && (module.exports = {
471
+ Gemini
472
+ });
@@ -0,0 +1,82 @@
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 llm_request_exports = {};
26
+ __export(llm_request_exports, {
27
+ appendInstructions: () => appendInstructions,
28
+ appendTools: () => appendTools,
29
+ setOutputSchema: () => setOutputSchema
30
+ });
31
+ module.exports = __toCommonJS(llm_request_exports);
32
+ /**
33
+ * @license
34
+ * Copyright 2025 Google LLC
35
+ * SPDX-License-Identifier: Apache-2.0
36
+ */
37
+ function appendInstructions(llmRequest, instructions) {
38
+ if (!llmRequest.config) {
39
+ llmRequest.config = {};
40
+ }
41
+ const newInstructions = instructions.join("\n\n");
42
+ if (llmRequest.config.systemInstruction) {
43
+ llmRequest.config.systemInstruction += "\n\n" + newInstructions;
44
+ } else {
45
+ llmRequest.config.systemInstruction = newInstructions;
46
+ }
47
+ }
48
+ function appendTools(llmRequest, tools) {
49
+ if (!(tools == null ? void 0 : tools.length)) {
50
+ return;
51
+ }
52
+ const functionDeclarations = [];
53
+ for (const tool of tools) {
54
+ const declaration = tool._getDeclaration();
55
+ if (declaration) {
56
+ functionDeclarations.push(declaration);
57
+ llmRequest.toolsDict[tool.name] = tool;
58
+ }
59
+ }
60
+ if (functionDeclarations.length) {
61
+ if (!llmRequest.config) {
62
+ llmRequest.config = {};
63
+ }
64
+ if (!llmRequest.config.tools) {
65
+ llmRequest.config.tools = [];
66
+ }
67
+ llmRequest.config.tools.push({ functionDeclarations });
68
+ }
69
+ }
70
+ function setOutputSchema(llmRequest, schema) {
71
+ if (!llmRequest.config) {
72
+ llmRequest.config = {};
73
+ }
74
+ llmRequest.config.responseSchema = schema;
75
+ llmRequest.config.responseMimeType = "application/json";
76
+ }
77
+ // Annotate the CommonJS export names for ESM import in node:
78
+ 0 && (module.exports = {
79
+ appendInstructions,
80
+ appendTools,
81
+ setOutputSchema
82
+ });
@@ -0,0 +1,71 @@
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 llm_response_exports = {};
26
+ __export(llm_response_exports, {
27
+ createLlmResponse: () => createLlmResponse
28
+ });
29
+ module.exports = __toCommonJS(llm_response_exports);
30
+ /**
31
+ * @license
32
+ * Copyright 2025 Google LLC
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ function createLlmResponse(response) {
36
+ var _a;
37
+ const usageMetadata = response.usageMetadata;
38
+ if (response.candidates && response.candidates.length > 0) {
39
+ const candidate = response.candidates[0];
40
+ if (((_a = candidate.content) == null ? void 0 : _a.parts) && candidate.content.parts.length > 0) {
41
+ return {
42
+ content: candidate.content,
43
+ groundingMetadata: candidate.groundingMetadata,
44
+ usageMetadata,
45
+ finishReason: candidate.finishReason
46
+ };
47
+ }
48
+ return {
49
+ errorCode: candidate.finishReason,
50
+ errorMessage: candidate.finishMessage,
51
+ usageMetadata,
52
+ finishReason: candidate.finishReason
53
+ };
54
+ }
55
+ if (response.promptFeedback) {
56
+ return {
57
+ errorCode: response.promptFeedback.blockReason,
58
+ errorMessage: response.promptFeedback.blockReasonMessage,
59
+ usageMetadata
60
+ };
61
+ }
62
+ return {
63
+ errorCode: "UNKNOWN_ERROR",
64
+ errorMessage: "Unknown error.",
65
+ usageMetadata
66
+ };
67
+ }
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ createLlmResponse
71
+ });