@google/adk 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/cjs/agents/base_agent.js +19 -1
  2. package/dist/cjs/agents/instructions.js +81 -33
  3. package/dist/cjs/agents/invocation_context.js +0 -1
  4. package/dist/cjs/agents/llm_agent.js +52 -5
  5. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  6. package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -1
  7. package/dist/cjs/agents/processors/content_processor_utils.js +37 -24
  8. package/dist/cjs/agents/processors/content_request_processor.js +7 -0
  9. package/dist/cjs/agents/processors/context_compactor_request_processor.js +12 -0
  10. package/dist/cjs/agents/processors/identity_llm_request_processor.js +7 -0
  11. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -0
  12. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  13. package/dist/cjs/agents/processors/tool_filter_request_processor.js +7 -1
  14. package/dist/cjs/auth/auth_preprocessor.js +12 -10
  15. package/dist/cjs/auth/oauth2/oauth2_discovery.js +1 -1
  16. package/dist/cjs/code_executors/code_executor_context.js +7 -7
  17. package/dist/cjs/common.js +39 -0
  18. package/dist/cjs/context/summarizers/llm_summarizer.js +11 -0
  19. package/dist/cjs/context/token_based_context_compactor.js +1 -1
  20. package/dist/cjs/events/event.js +1 -1
  21. package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  22. package/dist/cjs/models/gemini_llm_connection.js +62 -19
  23. package/dist/cjs/models/google_llm.js +26 -8
  24. package/dist/cjs/plugins/security_plugin.js +16 -0
  25. package/dist/cjs/sessions/base_session_service.js +13 -2
  26. package/dist/cjs/sessions/database_session_service.js +2 -2
  27. package/dist/cjs/sessions/db/schema.js +45 -10
  28. package/dist/cjs/sessions/in_memory_session_service.js +2 -1
  29. package/dist/cjs/sessions/vertex_ai_session_service.js +2 -1
  30. package/dist/cjs/skills/gcp_skill_registry.js +104 -0
  31. package/dist/cjs/skills/loader.js +65 -0
  32. package/dist/cjs/skills/skill_registry.js +27 -0
  33. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +232 -0
  34. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +224 -0
  35. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +127 -0
  36. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +133 -0
  37. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +256 -0
  38. package/dist/cjs/tools/skill/load_skill_resource_tool.js +25 -3
  39. package/dist/cjs/tools/skill/load_skill_tool.js +12 -1
  40. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -1
  41. package/dist/cjs/tools/skill/search_skills_tool.js +108 -0
  42. package/dist/cjs/tools/skill/skill_toolset.js +40 -5
  43. package/dist/cjs/utils/async_queue.js +88 -0
  44. package/dist/cjs/utils/case_utils.js +53 -0
  45. package/dist/cjs/utils/env_aware_utils.js +4 -0
  46. package/dist/cjs/utils/live_connection_utils.js +284 -0
  47. package/dist/cjs/utils/model_name.js +9 -0
  48. package/dist/cjs/utils/streaming_utils.js +9 -8
  49. package/dist/cjs/version.js +1 -1
  50. package/dist/esm/agents/base_agent.js +19 -1
  51. package/dist/esm/agents/instructions.js +81 -33
  52. package/dist/esm/agents/invocation_context.js +0 -1
  53. package/dist/esm/agents/llm_agent.js +53 -5
  54. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  55. package/dist/esm/agents/processors/basic_llm_request_processor.js +8 -1
  56. package/dist/esm/agents/processors/content_processor_utils.js +35 -23
  57. package/dist/esm/agents/processors/content_request_processor.js +7 -0
  58. package/dist/esm/agents/processors/context_compactor_request_processor.js +12 -0
  59. package/dist/esm/agents/processors/identity_llm_request_processor.js +7 -0
  60. package/dist/esm/agents/processors/instructions_llm_request_processor.js +5 -0
  61. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  62. package/dist/esm/agents/processors/tool_filter_request_processor.js +7 -1
  63. package/dist/esm/auth/auth_preprocessor.js +12 -10
  64. package/dist/esm/auth/oauth2/oauth2_discovery.js +1 -1
  65. package/dist/esm/code_executors/code_executor_context.js +7 -7
  66. package/dist/esm/common.js +33 -1
  67. package/dist/esm/context/summarizers/llm_summarizer.js +11 -0
  68. package/dist/esm/context/token_based_context_compactor.js +1 -1
  69. package/dist/esm/events/event.js +1 -1
  70. package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  71. package/dist/esm/models/gemini_llm_connection.js +62 -19
  72. package/dist/esm/models/google_llm.js +26 -8
  73. package/dist/esm/plugins/security_plugin.js +16 -0
  74. package/dist/esm/sessions/base_session_service.js +11 -1
  75. package/dist/esm/sessions/database_session_service.js +2 -2
  76. package/dist/esm/sessions/db/schema.js +44 -10
  77. package/dist/esm/sessions/in_memory_session_service.js +4 -2
  78. package/dist/esm/sessions/vertex_ai_session_service.js +4 -2
  79. package/dist/esm/skills/gcp_skill_registry.js +78 -0
  80. package/dist/esm/skills/loader.js +64 -0
  81. package/dist/esm/skills/skill_registry.js +7 -0
  82. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +206 -0
  83. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  84. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  85. package/dist/esm/tools/openapi_tool/openapi_toolset.js +97 -0
  86. package/dist/esm/tools/openapi_tool/rest_api_tool.js +229 -0
  87. package/dist/esm/tools/skill/load_skill_resource_tool.js +25 -3
  88. package/dist/esm/tools/skill/load_skill_tool.js +12 -1
  89. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -1
  90. package/dist/esm/tools/skill/search_skills_tool.js +82 -0
  91. package/dist/esm/tools/skill/skill_toolset.js +40 -5
  92. package/dist/esm/utils/async_queue.js +60 -0
  93. package/dist/esm/utils/case_utils.js +25 -0
  94. package/dist/esm/utils/env_aware_utils.js +4 -0
  95. package/dist/esm/utils/live_connection_utils.js +256 -0
  96. package/dist/esm/utils/model_name.js +8 -0
  97. package/dist/esm/utils/streaming_utils.js +9 -8
  98. package/dist/esm/version.js +1 -1
  99. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +29 -4
  100. package/dist/types/a2a/event_converter_utils.d.ts +14 -1
  101. package/dist/types/a2a/metadata_converter_utils.d.ts +18 -0
  102. package/dist/types/a2a/part_converter_utils.d.ts +51 -6
  103. package/dist/types/agents/invocation_context.d.ts +0 -9
  104. package/dist/types/agents/llm_agent.d.ts +14 -0
  105. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +14 -0
  106. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +7 -0
  107. package/dist/types/agents/processors/content_processor_utils.d.ts +26 -0
  108. package/dist/types/agents/processors/content_request_processor.d.ts +16 -0
  109. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +12 -0
  110. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +7 -0
  111. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +9 -1
  112. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +12 -1
  113. package/dist/types/common.d.ts +15 -1
  114. package/dist/types/context/summarizers/llm_summarizer.d.ts +17 -0
  115. package/dist/types/events/event_actions.d.ts +1 -2
  116. package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +21 -2
  117. package/dist/types/models/base_llm_connection.d.ts +10 -0
  118. package/dist/types/models/gemini_llm_connection.d.ts +15 -4
  119. package/dist/types/models/llm_response.d.ts +10 -1
  120. package/dist/types/plugins/security_plugin.d.ts +30 -0
  121. package/dist/types/sessions/base_session_service.d.ts +4 -0
  122. package/dist/types/sessions/db/schema.d.ts +1 -0
  123. package/dist/types/skills/gcp_skill_registry.d.ts +24 -0
  124. package/dist/types/skills/loader.d.ts +7 -0
  125. package/dist/types/skills/skill.d.ts +1 -1
  126. package/dist/types/skills/skill_registry.d.ts +29 -0
  127. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +34 -0
  128. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +59 -0
  129. package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +23 -0
  130. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +27 -0
  131. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +50 -0
  132. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +1 -1
  133. package/dist/types/tools/skill/search_skills_tool.d.ts +14 -0
  134. package/dist/types/tools/skill/skill_toolset.d.ts +5 -0
  135. package/dist/types/utils/async_queue.d.ts +18 -0
  136. package/dist/types/utils/case_utils.d.ts +12 -0
  137. package/dist/types/utils/live_connection_utils.d.ts +30 -0
  138. package/dist/types/utils/model_name.d.ts +7 -0
  139. package/dist/types/utils/streaming_utils.d.ts +0 -1
  140. package/dist/types/version.d.ts +1 -1
  141. package/dist/web/agents/base_agent.js +31 -1
  142. package/dist/web/agents/instructions.js +81 -33
  143. package/dist/web/agents/invocation_context.js +0 -1
  144. package/dist/web/agents/llm_agent.js +53 -5
  145. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  146. package/dist/web/agents/processors/basic_llm_request_processor.js +8 -1
  147. package/dist/web/agents/processors/content_processor_utils.js +53 -23
  148. package/dist/web/agents/processors/content_request_processor.js +7 -0
  149. package/dist/web/agents/processors/context_compactor_request_processor.js +12 -0
  150. package/dist/web/agents/processors/identity_llm_request_processor.js +7 -0
  151. package/dist/web/agents/processors/instructions_llm_request_processor.js +5 -0
  152. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  153. package/dist/web/agents/processors/tool_filter_request_processor.js +7 -1
  154. package/dist/web/auth/auth_preprocessor.js +12 -10
  155. package/dist/web/auth/oauth2/oauth2_discovery.js +1 -1
  156. package/dist/web/code_executors/code_executor_context.js +7 -7
  157. package/dist/web/common.js +33 -1
  158. package/dist/web/context/summarizers/llm_summarizer.js +11 -0
  159. package/dist/web/context/token_based_context_compactor.js +1 -1
  160. package/dist/web/events/event.js +1 -1
  161. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  162. package/dist/web/models/gemini_llm_connection.js +75 -19
  163. package/dist/web/models/google_llm.js +26 -8
  164. package/dist/web/plugins/security_plugin.js +16 -0
  165. package/dist/web/sessions/base_session_service.js +11 -1
  166. package/dist/web/sessions/database_session_service.js +2 -2
  167. package/dist/web/sessions/db/schema.js +44 -10
  168. package/dist/web/sessions/in_memory_session_service.js +4 -2
  169. package/dist/web/sessions/vertex_ai_session_service.js +4 -2
  170. package/dist/web/skills/gcp_skill_registry.js +78 -0
  171. package/dist/web/skills/loader.js +64 -0
  172. package/dist/web/skills/skill_registry.js +7 -0
  173. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +221 -0
  174. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  175. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  176. package/dist/web/tools/openapi_tool/openapi_toolset.js +97 -0
  177. package/dist/web/tools/openapi_tool/rest_api_tool.js +229 -0
  178. package/dist/web/tools/skill/load_skill_resource_tool.js +25 -3
  179. package/dist/web/tools/skill/load_skill_tool.js +12 -1
  180. package/dist/web/tools/skill/run_skill_script_tool.js +12 -1
  181. package/dist/web/tools/skill/search_skills_tool.js +82 -0
  182. package/dist/web/tools/skill/skill_toolset.js +40 -5
  183. package/dist/web/utils/async_queue.js +60 -0
  184. package/dist/web/utils/case_utils.js +25 -0
  185. package/dist/web/utils/env_aware_utils.js +4 -0
  186. package/dist/web/utils/live_connection_utils.js +254 -0
  187. package/dist/web/utils/model_name.js +8 -0
  188. package/dist/web/utils/streaming_utils.js +9 -8
  189. package/dist/web/version.js +1 -1
  190. package/package.json +3 -1
@@ -0,0 +1,254 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ /**
20
+ * @license
21
+ * Copyright 2026 Google LLC
22
+ * SPDX-License-Identifier: Apache-2.0
23
+ */
24
+ import { isGemini3xFlashLive } from "./model_name.js";
25
+ class LiveResponseAggregator {
26
+ constructor(modelVersion) {
27
+ this.modelVersion = modelVersion;
28
+ this.text = "";
29
+ this.isThought = false;
30
+ this.toolCallParts = [];
31
+ this.pendingGroundingMetadata = void 0;
32
+ this.inputTranscriptionText = "";
33
+ this.outputTranscriptionText = "";
34
+ }
35
+ *processMessage(message) {
36
+ if (message.usageMetadata) {
37
+ yield __spreadValues({
38
+ usageMetadata: message.usageMetadata
39
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
40
+ }
41
+ if (message.serverContent) {
42
+ const serverContent = message.serverContent;
43
+ const content = serverContent.modelTurn;
44
+ if (serverContent.groundingMetadata) {
45
+ this.pendingGroundingMetadata = serverContent.groundingMetadata;
46
+ }
47
+ if (!(content && content.parts) && serverContent.groundingMetadata && !serverContent.turnComplete) {
48
+ yield __spreadValues(__spreadValues({
49
+ groundingMetadata: serverContent.groundingMetadata
50
+ }, serverContent.interrupted !== void 0 ? { interrupted: serverContent.interrupted } : {}), this.modelVersion ? { modelVersion: this.modelVersion } : {});
51
+ }
52
+ if (content && content.parts) {
53
+ const llmResponse = __spreadValues(__spreadValues({
54
+ content
55
+ }, serverContent.interrupted !== void 0 ? { interrupted: serverContent.interrupted } : {}), this.modelVersion ? { modelVersion: this.modelVersion } : {});
56
+ if (!serverContent.turnComplete && serverContent.groundingMetadata) {
57
+ llmResponse.groundingMetadata = serverContent.groundingMetadata;
58
+ }
59
+ const hasInlineData = content.parts.some((p) => p.inlineData);
60
+ for (const part of content.parts) {
61
+ if (part.text) {
62
+ const currentIsThought = !!part.thought;
63
+ if (this.text && currentIsThought !== this.isThought) {
64
+ yield this.buildFullTextResponse(this.text, this.isThought);
65
+ this.text = "";
66
+ this.isThought = false;
67
+ }
68
+ this.text += part.text;
69
+ this.isThought = currentIsThought;
70
+ llmResponse.partial = true;
71
+ }
72
+ }
73
+ if (this.text && !content.parts.some((p) => p.text) && !hasInlineData) {
74
+ yield this.buildFullTextResponse(this.text, this.isThought);
75
+ this.text = "";
76
+ this.isThought = false;
77
+ }
78
+ yield llmResponse;
79
+ }
80
+ if (serverContent.inputTranscription) {
81
+ if (serverContent.inputTranscription.text) {
82
+ this.inputTranscriptionText += serverContent.inputTranscription.text;
83
+ yield __spreadValues({
84
+ inputTranscription: {
85
+ text: serverContent.inputTranscription.text,
86
+ finished: false
87
+ },
88
+ partial: true
89
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
90
+ }
91
+ if (serverContent.inputTranscription.finished) {
92
+ yield __spreadValues({
93
+ inputTranscription: {
94
+ text: this.inputTranscriptionText,
95
+ finished: true
96
+ },
97
+ partial: false
98
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
99
+ this.inputTranscriptionText = "";
100
+ }
101
+ }
102
+ if (serverContent.outputTranscription) {
103
+ if (serverContent.outputTranscription.text) {
104
+ this.outputTranscriptionText += serverContent.outputTranscription.text;
105
+ yield __spreadValues({
106
+ outputTranscription: {
107
+ text: serverContent.outputTranscription.text,
108
+ finished: false
109
+ },
110
+ partial: true
111
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
112
+ }
113
+ if (serverContent.outputTranscription.finished) {
114
+ yield __spreadValues({
115
+ outputTranscription: {
116
+ text: this.outputTranscriptionText,
117
+ finished: true
118
+ },
119
+ partial: false
120
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
121
+ this.outputTranscriptionText = "";
122
+ }
123
+ }
124
+ if (serverContent.interrupted || serverContent.turnComplete || serverContent.generationComplete) {
125
+ if (this.inputTranscriptionText) {
126
+ yield __spreadValues({
127
+ inputTranscription: {
128
+ text: this.inputTranscriptionText,
129
+ finished: true
130
+ },
131
+ partial: false
132
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
133
+ this.inputTranscriptionText = "";
134
+ }
135
+ if (this.outputTranscriptionText) {
136
+ yield __spreadValues({
137
+ outputTranscription: {
138
+ text: this.outputTranscriptionText,
139
+ finished: true
140
+ },
141
+ partial: false
142
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
143
+ this.outputTranscriptionText = "";
144
+ }
145
+ }
146
+ if (serverContent.turnComplete) {
147
+ let gMetadataToYield = this.pendingGroundingMetadata;
148
+ if (this.text) {
149
+ yield this.buildFullTextResponse(
150
+ this.text,
151
+ this.isThought,
152
+ gMetadataToYield
153
+ );
154
+ this.text = "";
155
+ this.isThought = false;
156
+ gMetadataToYield = void 0;
157
+ }
158
+ if (this.toolCallParts.length > 0) {
159
+ yield __spreadValues({
160
+ content: { role: "model", parts: this.toolCallParts }
161
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
162
+ this.toolCallParts = [];
163
+ }
164
+ const finalResponse = __spreadValues({
165
+ turnComplete: true
166
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
167
+ if (serverContent.interrupted !== void 0) {
168
+ finalResponse.interrupted = serverContent.interrupted;
169
+ }
170
+ const finalGrounding = serverContent.groundingMetadata || gMetadataToYield;
171
+ if (finalGrounding !== void 0 && finalGrounding !== null) {
172
+ finalResponse.groundingMetadata = finalGrounding;
173
+ }
174
+ yield finalResponse;
175
+ }
176
+ if (serverContent.interrupted) {
177
+ if (this.text) {
178
+ yield this.buildFullTextResponse(this.text, this.isThought);
179
+ this.text = "";
180
+ this.isThought = false;
181
+ } else {
182
+ yield __spreadValues({
183
+ interrupted: serverContent.interrupted
184
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
185
+ }
186
+ }
187
+ }
188
+ if (message.toolCall) {
189
+ if (this.text) {
190
+ yield this.buildFullTextResponse(this.text, this.isThought);
191
+ this.text = "";
192
+ this.isThought = false;
193
+ }
194
+ if (message.toolCall.functionCalls) {
195
+ this.toolCallParts.push(
196
+ ...message.toolCall.functionCalls.map((fc) => ({
197
+ functionCall: fc
198
+ }))
199
+ );
200
+ }
201
+ const isGemini3x = isGemini3xFlashLive(this.modelVersion);
202
+ if (isGemini3x && this.toolCallParts.length > 0) {
203
+ yield __spreadValues({
204
+ content: { role: "model", parts: this.toolCallParts }
205
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
206
+ this.toolCallParts = [];
207
+ }
208
+ }
209
+ if (message.sessionResumptionUpdate) {
210
+ yield __spreadValues({
211
+ liveSessionResumptionUpdate: message.sessionResumptionUpdate
212
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
213
+ }
214
+ if (message.goAway) {
215
+ yield __spreadValues({
216
+ goAway: message.goAway
217
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
218
+ }
219
+ }
220
+ /**
221
+ * Flushes any remaining aggregated components when the connection is closed.
222
+ */
223
+ *close() {
224
+ if (this.toolCallParts.length > 0) {
225
+ yield __spreadValues({
226
+ content: { role: "model", parts: this.toolCallParts }
227
+ }, this.modelVersion ? { modelVersion: this.modelVersion } : {});
228
+ this.toolCallParts = [];
229
+ }
230
+ }
231
+ buildFullTextResponse(text, isThought, groundingMetadata) {
232
+ const part = { text };
233
+ if (isThought) {
234
+ part.thought = true;
235
+ }
236
+ const response = {
237
+ content: {
238
+ role: "model",
239
+ parts: [part]
240
+ },
241
+ partial: false
242
+ };
243
+ if (groundingMetadata !== void 0 && groundingMetadata !== null) {
244
+ response.groundingMetadata = groundingMetadata;
245
+ }
246
+ if (this.modelVersion) {
247
+ response.modelVersion = this.modelVersion;
248
+ }
249
+ return response;
250
+ }
251
+ }
252
+ export {
253
+ LiveResponseAggregator
254
+ };
@@ -46,6 +46,13 @@ function isGemini2OrAbove(modelString) {
46
46
  const parsedVersion = parseVersion(versionString);
47
47
  return parsedVersion.valid && parsedVersion.major >= 2;
48
48
  }
49
+ function isGemini3xFlashLive(modelString) {
50
+ if (!modelString) {
51
+ return false;
52
+ }
53
+ const modelName = extractModelName(modelString);
54
+ return modelName.startsWith("gemini-3.") && modelName.includes("-flash-live");
55
+ }
49
56
  function isGeminiModelIdCheckDisabled() {
50
57
  return getBooleanEnvVar("ADK_DISABLE_GEMINI_MODEL_ID_CHECK");
51
58
  }
@@ -53,6 +60,7 @@ export {
53
60
  extractModelName,
54
61
  isGemini1Model,
55
62
  isGemini2OrAbove,
63
+ isGemini3xFlashLive,
56
64
  isGeminiModel,
57
65
  isGeminiModelIdCheckDisabled
58
66
  };
@@ -78,6 +78,7 @@ import { JSONPath } from "jsonpath-plus";
78
78
  import { generateClientFunctionCallId } from "../agents/functions.js";
79
79
  import { FeatureName, isFeatureEnabled } from "../features/feature_registry.js";
80
80
  import { createLlmResponse } from "../models/llm_response.js";
81
+ const UNSAFE_PROPERTY_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
81
82
  class ProgressiveStrategy {
82
83
  constructor() {
83
84
  this.partsSequence = [];
@@ -144,10 +145,13 @@ class ProgressiveStrategy {
144
145
  const pathParts = JSONPath.toPathArray(jsonPath).filter(
145
146
  (p) => p !== "$" && p !== "$["
146
147
  );
148
+ if (pathParts.some((part) => UNSAFE_PROPERTY_KEYS.has(String(part)))) {
149
+ return;
150
+ }
147
151
  let current = this.currentFcArgs;
148
152
  for (let i = 0; i < pathParts.length - 1; i++) {
149
153
  const part = pathParts[i];
150
- if (!(part in current)) {
154
+ if (!Object.prototype.hasOwnProperty.call(current, part)) {
151
155
  current[part] = {};
152
156
  }
153
157
  current = current[part];
@@ -342,7 +346,6 @@ class StreamingResponseAggregator {
342
346
  )) {
343
347
  this.isProgressiveMode = isProgressiveMode;
344
348
  this.lastThoughtSignature = {};
345
- this.sawFunctionCall = false;
346
349
  this.strategy = this.isProgressiveMode ? new ProgressiveStrategy() : new NonProgressiveStrategy();
347
350
  }
348
351
  processResponse(response) {
@@ -350,10 +353,7 @@ class StreamingResponseAggregator {
350
353
  var _a, _b;
351
354
  const llmResponse = createLlmResponse(response);
352
355
  const parts = (_b = (_a = llmResponse.content) == null ? void 0 : _a.parts) != null ? _b : [];
353
- if (parts.some((part) => part.functionCall)) {
354
- this.sawFunctionCall = true;
355
- }
356
- if (this.sawFunctionCall && llmResponse.finishReason === FinishReason.STOP && parts.length > 0 && parts.every(isEmptyContentPart)) {
356
+ if (parts.every(isEmptyContentPart) && (llmResponse.finishReason === void 0 || llmResponse.finishReason === FinishReason.STOP)) {
357
357
  if (llmResponse.usageMetadata) {
358
358
  this.usageMetadata = llmResponse.usageMetadata;
359
359
  }
@@ -394,7 +394,8 @@ class StreamingResponseAggregator {
394
394
  close() {
395
395
  var _a, _b, _c;
396
396
  const finalParts = this.strategy.close();
397
- if (!finalParts) {
397
+ const hasMetadata = this.usageMetadata !== void 0 || this.groundingMetadata !== void 0 || this.citationMetadata !== void 0;
398
+ if (!finalParts && !hasMetadata) {
398
399
  return void 0;
399
400
  }
400
401
  const candidate = (_b = (_a = this.response) == null ? void 0 : _a.candidates) == null ? void 0 : _b[0];
@@ -402,7 +403,7 @@ class StreamingResponseAggregator {
402
403
  return {
403
404
  content: {
404
405
  role: "model",
405
- parts: finalParts
406
+ parts: finalParts != null ? finalParts : []
406
407
  },
407
408
  groundingMetadata: this.groundingMetadata,
408
409
  citationMetadata: this.citationMetadata,
@@ -5,7 +5,7 @@ const require = topLevelCreateRequire(import.meta.url);
5
5
  * Copyright 2025 Google LLC
6
6
  * SPDX-License-Identifier: Apache-2.0
7
7
  */
8
- const version = "1.2.0";
8
+ const version = "1.3.0";
9
9
  export {
10
10
  version
11
11
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/adk",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Google ADK JS",
5
5
  "author": "Google",
6
6
  "license": "Apache-2.0",
@@ -60,6 +60,7 @@
60
60
  "@opentelemetry/sdk-metrics": "^2.1.0",
61
61
  "@opentelemetry/sdk-trace-base": "^2.1.0",
62
62
  "@opentelemetry/sdk-trace-node": "^2.1.0",
63
+ "adm-zip": "^0.5.17",
63
64
  "express": "^4.22.1",
64
65
  "google-auth-library": "^10.3.0",
65
66
  "js-yaml": "^4.1.1",
@@ -71,6 +72,7 @@
71
72
  },
72
73
  "devDependencies": {
73
74
  "@mikro-orm/sqlite": "^6.6.6",
75
+ "@types/adm-zip": "^0.5.8",
74
76
  "@types/express": "^4.17.25",
75
77
  "@types/lodash-es": "^4.17.12",
76
78
  "openapi-types": "^12.1.3"