@google/adk 2.4.0 → 2.5.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 (326) hide show
  1. package/dist/cjs/a2a/a2a_remote_agent.js +17 -2
  2. package/dist/cjs/a2a/a2a_remote_agent_utils.js +8 -4
  3. package/dist/cjs/a2a/agent_card.js +5 -81
  4. package/dist/cjs/a2a/agent_to_a2a.js +7 -0
  5. package/dist/cjs/a2a/event_converter_utils.js +10 -3
  6. package/dist/cjs/agents/agent_engine_client.js +282 -55
  7. package/dist/cjs/agents/base_agent.js +111 -68
  8. package/dist/cjs/agents/functions.js +62 -85
  9. package/dist/cjs/agents/instructions.js +7 -6
  10. package/dist/cjs/agents/invocation_context.js +2 -2
  11. package/dist/cjs/agents/llm_agent.js +105 -95
  12. package/dist/cjs/agents/processors/content_processor_utils.js +42 -15
  13. package/dist/cjs/agents/processors/content_request_processor.js +28 -11
  14. package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -1
  15. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  16. package/dist/cjs/agents/processors/nl_planning_processor.js +2 -1
  17. package/dist/cjs/artifacts/file_artifact_service.js +1 -1
  18. package/dist/cjs/cli/cli_eval.js +884 -17
  19. package/dist/cjs/cli/utils/cleanup.js +84 -0
  20. package/dist/cjs/cli/utils/envs.js +33 -2
  21. package/dist/cjs/cli/utils/evals.js +75 -8
  22. package/dist/cjs/cli/utils/logs.js +128 -9
  23. package/dist/cjs/cli/utils/path_validation.js +83 -0
  24. package/dist/cjs/code_executors/container_code_executor.js +158 -36
  25. package/dist/cjs/common.js +50 -12
  26. package/dist/cjs/context/compaction_utils.js +19 -0
  27. package/dist/cjs/events/event.js +7 -3
  28. package/dist/cjs/features/feature_registry.js +5 -0
  29. package/dist/cjs/index.js +29 -14
  30. package/dist/cjs/models/google_llm.js +33 -2
  31. package/dist/cjs/models/interactions_utils.js +3 -0
  32. package/dist/cjs/plugins/base_plugin.js +45 -21
  33. package/dist/cjs/plugins/plugin_manager.js +27 -0
  34. package/dist/cjs/runner/runner.js +306 -189
  35. package/dist/cjs/sessions/base_session_service.js +1 -4
  36. package/dist/cjs/sessions/database_session_service.js +191 -19
  37. package/dist/cjs/sessions/db/operations.js +70 -1
  38. package/dist/cjs/sessions/db/schema.js +4 -0
  39. package/dist/cjs/sessions/in_memory_session_service.js +2 -2
  40. package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
  41. package/dist/cjs/skills/loader.js +29 -28
  42. package/dist/cjs/telemetry/api/instrumentation.js +632 -0
  43. package/dist/cjs/telemetry/api/internal/common/accumulators.js +169 -0
  44. package/dist/cjs/telemetry/api/internal/common/attributes.js +131 -0
  45. package/dist/cjs/telemetry/api/internal/common/config.js +159 -0
  46. package/dist/cjs/telemetry/api/internal/common/error.js +98 -0
  47. package/dist/cjs/telemetry/api/internal/common/finish_reason.js +63 -0
  48. package/dist/cjs/telemetry/api/internal/common/genai_messages.js +217 -0
  49. package/dist/cjs/telemetry/api/internal/common/http_exchange.js +169 -0
  50. package/dist/cjs/telemetry/api/internal/common/provider_name.js +87 -0
  51. package/dist/cjs/telemetry/api/internal/common/redaction.js +148 -0
  52. package/dist/cjs/telemetry/api/internal/common/serialization.js +58 -0
  53. package/dist/cjs/telemetry/api/internal/common/token_usage.js +118 -0
  54. package/dist/cjs/telemetry/api/internal/logs/inference.js +50 -0
  55. package/dist/cjs/telemetry/api/internal/logs/logger.js +46 -0
  56. package/dist/cjs/telemetry/api/internal/logs/mcp.js +141 -0
  57. package/dist/cjs/telemetry/api/internal/metrics/agent.js +128 -0
  58. package/dist/cjs/telemetry/api/internal/metrics/inference_start_hook.js +56 -0
  59. package/dist/cjs/telemetry/api/internal/metrics/meters.js +189 -0
  60. package/dist/cjs/telemetry/api/internal/metrics/tool.js +147 -0
  61. package/dist/cjs/telemetry/api/internal/metrics/workflow.js +132 -0
  62. package/dist/cjs/telemetry/api/internal/trace/agent.js +52 -0
  63. package/dist/cjs/telemetry/api/internal/trace/compaction.js +78 -0
  64. package/dist/cjs/telemetry/api/internal/trace/inference.js +132 -0
  65. package/dist/cjs/telemetry/api/internal/trace/live.js +52 -0
  66. package/dist/cjs/telemetry/api/internal/trace/node.js +73 -0
  67. package/dist/cjs/telemetry/api/internal/trace/propagation.js +67 -0
  68. package/dist/cjs/telemetry/api/internal/trace/tool.js +122 -0
  69. package/dist/cjs/telemetry/api/internal/trace/tracer.js +77 -0
  70. package/dist/cjs/telemetry/api/internal/trace/workflow.js +77 -0
  71. package/dist/cjs/telemetry/export/agent_engine.js +90 -0
  72. package/dist/cjs/telemetry/export/agent_runtime.js +73 -0
  73. package/dist/cjs/telemetry/export/google_cloud.js +763 -0
  74. package/dist/cjs/telemetry/export/request_driven_metric_reader.js +303 -0
  75. package/dist/cjs/telemetry/{setup.js → export/setup.js} +72 -5
  76. package/dist/cjs/tools/agent_tool.js +9 -1
  77. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +22 -34
  78. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +60 -20
  79. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +26 -10
  80. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +14 -23
  81. package/dist/cjs/tools/base_toolset.js +1 -1
  82. package/dist/cjs/tools/computer_use/base_computer.js +125 -0
  83. package/dist/cjs/tools/computer_use/computer_use_actions.js +502 -0
  84. package/dist/cjs/tools/computer_use/computer_use_tool.js +244 -0
  85. package/dist/cjs/tools/computer_use/computer_use_toolset.js +360 -0
  86. package/dist/cjs/tools/function_tool.js +15 -5
  87. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +3 -2
  88. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  89. package/dist/cjs/tools/load_artifacts_tool.js +15 -5
  90. package/dist/cjs/tools/load_memory_tool.js +2 -5
  91. package/dist/cjs/tools/mcp/mcp_session_manager.js +23 -3
  92. package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
  93. package/dist/cjs/tools/mcp/mcp_toolset.js +18 -6
  94. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
  95. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  96. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +45 -14
  97. package/dist/cjs/tools/skill/load_skill_resource_tool.js +7 -0
  98. package/dist/cjs/tools/skill/load_skill_tool.js +3 -0
  99. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -2
  100. package/dist/cjs/tools/toolbox_toolset.js +47 -28
  101. package/dist/cjs/utils/async_queue.js +37 -3
  102. package/dist/cjs/utils/client_labels.js +9 -11
  103. package/dist/cjs/utils/env_aware_utils.js +13 -7
  104. package/dist/cjs/utils/error_utils.js +40 -2
  105. package/dist/cjs/utils/failover_utils.js +10 -9
  106. package/dist/cjs/utils/gemini_schema_util.js +125 -12
  107. package/dist/cjs/utils/id_provider.js +63 -0
  108. package/dist/cjs/utils/model_name.js +15 -0
  109. package/dist/cjs/utils/simple_zod_to_json.js +13 -31
  110. package/dist/cjs/utils/ssrf_guard.js +46 -16
  111. package/dist/cjs/version.js +1 -1
  112. package/dist/cjs/workflow/index.js +2 -0
  113. package/dist/cjs/workflow/node_runner.js +24 -80
  114. package/dist/cjs/workflow/nodes/parallel_worker.js +18 -7
  115. package/dist/cjs/workflow/run_llm_agent_as_node.js +19 -14
  116. package/dist/cjs/workflow/utils/retry_utils.js +2 -2
  117. package/dist/cjs/workflow/workflow.js +12 -12
  118. package/dist/esm/a2a/a2a_remote_agent.js +23 -3
  119. package/dist/esm/a2a/a2a_remote_agent_utils.js +8 -4
  120. package/dist/esm/a2a/agent_card.js +5 -83
  121. package/dist/esm/a2a/agent_to_a2a.js +7 -0
  122. package/dist/esm/a2a/event_converter_utils.js +10 -3
  123. package/dist/esm/agents/agent_engine_client.js +293 -55
  124. package/dist/esm/agents/base_agent.js +111 -72
  125. package/dist/esm/agents/functions.js +67 -89
  126. package/dist/esm/agents/instructions.js +7 -6
  127. package/dist/esm/agents/invocation_context.js +2 -2
  128. package/dist/esm/agents/llm_agent.js +111 -100
  129. package/dist/esm/agents/processors/content_processor_utils.js +42 -15
  130. package/dist/esm/agents/processors/content_request_processor.js +28 -11
  131. package/dist/esm/agents/processors/context_compactor_request_processor.js +5 -1
  132. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  133. package/dist/esm/agents/processors/nl_planning_processor.js +2 -1
  134. package/dist/esm/artifacts/file_artifact_service.js +1 -1
  135. package/dist/esm/cli/cli_eval.js +880 -17
  136. package/dist/esm/cli/utils/cleanup.js +56 -0
  137. package/dist/esm/cli/utils/envs.js +33 -2
  138. package/dist/esm/cli/utils/evals.js +74 -8
  139. package/dist/esm/cli/utils/logs.js +128 -9
  140. package/dist/esm/cli/utils/path_validation.js +45 -0
  141. package/dist/esm/code_executors/container_code_executor.js +158 -36
  142. package/dist/esm/common.js +49 -6
  143. package/dist/esm/context/compaction_utils.js +19 -0
  144. package/dist/esm/events/event.js +7 -3
  145. package/dist/esm/features/feature_registry.js +5 -0
  146. package/dist/esm/index.js +27 -15
  147. package/dist/esm/models/google_llm.js +33 -2
  148. package/dist/esm/models/interactions_utils.js +3 -0
  149. package/dist/esm/plugins/base_plugin.js +45 -21
  150. package/dist/esm/plugins/plugin_manager.js +27 -0
  151. package/dist/esm/runner/runner.js +310 -192
  152. package/dist/esm/sessions/base_session_service.js +1 -4
  153. package/dist/esm/sessions/database_session_service.js +191 -19
  154. package/dist/esm/sessions/db/operations.js +70 -1
  155. package/dist/esm/sessions/db/schema.js +4 -0
  156. package/dist/esm/sessions/in_memory_session_service.js +2 -2
  157. package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
  158. package/dist/esm/skills/loader.js +29 -28
  159. package/dist/esm/telemetry/api/instrumentation.js +655 -0
  160. package/dist/esm/telemetry/api/internal/common/accumulators.js +139 -0
  161. package/dist/esm/telemetry/api/internal/common/attributes.js +94 -0
  162. package/dist/esm/telemetry/api/internal/common/config.js +128 -0
  163. package/dist/esm/telemetry/api/internal/common/error.js +69 -0
  164. package/dist/esm/telemetry/api/internal/common/finish_reason.js +35 -0
  165. package/dist/esm/telemetry/api/internal/common/genai_messages.js +188 -0
  166. package/dist/esm/telemetry/api/internal/common/http_exchange.js +142 -0
  167. package/dist/esm/telemetry/api/internal/common/provider_name.js +59 -0
  168. package/dist/esm/telemetry/api/internal/common/redaction.js +121 -0
  169. package/dist/esm/telemetry/api/internal/common/serialization.js +30 -0
  170. package/dist/esm/telemetry/api/internal/common/token_usage.js +85 -0
  171. package/dist/esm/telemetry/api/internal/logs/inference.js +23 -0
  172. package/dist/esm/telemetry/api/internal/logs/logger.js +19 -0
  173. package/dist/esm/telemetry/api/internal/logs/mcp.js +113 -0
  174. package/dist/esm/telemetry/api/internal/metrics/agent.js +107 -0
  175. package/dist/esm/telemetry/api/internal/metrics/inference_start_hook.js +29 -0
  176. package/dist/esm/telemetry/api/internal/metrics/meters.js +165 -0
  177. package/dist/esm/telemetry/api/internal/metrics/tool.js +119 -0
  178. package/dist/esm/telemetry/api/internal/metrics/workflow.js +112 -0
  179. package/dist/esm/telemetry/api/internal/trace/agent.js +25 -0
  180. package/dist/esm/telemetry/api/internal/trace/compaction.js +50 -0
  181. package/dist/esm/telemetry/api/internal/trace/inference.js +107 -0
  182. package/dist/esm/telemetry/api/internal/trace/live.js +28 -0
  183. package/dist/esm/telemetry/api/internal/trace/node.js +44 -0
  184. package/dist/esm/telemetry/api/internal/trace/propagation.js +39 -0
  185. package/dist/esm/telemetry/api/internal/trace/tool.js +96 -0
  186. package/dist/esm/telemetry/api/internal/trace/tracer.js +52 -0
  187. package/dist/esm/telemetry/api/internal/trace/workflow.js +54 -0
  188. package/dist/esm/telemetry/export/agent_engine.js +67 -0
  189. package/dist/esm/telemetry/export/agent_runtime.js +46 -0
  190. package/dist/esm/telemetry/export/google_cloud.js +733 -0
  191. package/dist/esm/telemetry/export/request_driven_metric_reader.js +276 -0
  192. package/dist/esm/telemetry/export/setup.js +160 -0
  193. package/dist/esm/tools/agent_tool.js +9 -1
  194. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +23 -35
  195. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +64 -21
  196. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +26 -10
  197. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +14 -23
  198. package/dist/esm/tools/base_toolset.js +1 -1
  199. package/dist/esm/tools/computer_use/base_computer.js +99 -0
  200. package/dist/esm/tools/computer_use/computer_use_actions.js +477 -0
  201. package/dist/esm/tools/computer_use/computer_use_tool.js +217 -0
  202. package/dist/esm/tools/computer_use/computer_use_toolset.js +344 -0
  203. package/dist/esm/tools/function_tool.js +15 -5
  204. package/dist/esm/tools/google_api_tool/google_api_toolset.js +3 -2
  205. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  206. package/dist/esm/tools/load_artifacts_tool.js +15 -5
  207. package/dist/esm/tools/load_memory_tool.js +2 -5
  208. package/dist/esm/tools/mcp/mcp_session_manager.js +23 -3
  209. package/dist/esm/tools/mcp/mcp_tool.js +7 -3
  210. package/dist/esm/tools/mcp/mcp_toolset.js +18 -6
  211. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
  212. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  213. package/dist/esm/tools/openapi_tool/rest_api_tool.js +45 -14
  214. package/dist/esm/tools/skill/load_skill_resource_tool.js +7 -0
  215. package/dist/esm/tools/skill/load_skill_tool.js +3 -0
  216. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -2
  217. package/dist/esm/tools/toolbox_toolset.js +47 -28
  218. package/dist/esm/utils/async_queue.js +37 -3
  219. package/dist/esm/utils/client_labels.js +9 -11
  220. package/dist/esm/utils/env_aware_utils.js +12 -7
  221. package/dist/esm/utils/error_utils.js +37 -1
  222. package/dist/esm/utils/failover_utils.js +10 -9
  223. package/dist/esm/utils/gemini_schema_util.js +124 -11
  224. package/dist/esm/utils/id_provider.js +33 -0
  225. package/dist/esm/utils/model_name.js +14 -0
  226. package/dist/esm/utils/simple_zod_to_json.js +13 -31
  227. package/dist/esm/utils/ssrf_guard.js +55 -15
  228. package/dist/esm/version.js +1 -1
  229. package/dist/esm/workflow/index.js +2 -1
  230. package/dist/esm/workflow/node_runner.js +26 -80
  231. package/dist/esm/workflow/nodes/parallel_worker.js +16 -6
  232. package/dist/esm/workflow/run_llm_agent_as_node.js +19 -14
  233. package/dist/esm/workflow/utils/retry_utils.js +2 -2
  234. package/dist/esm/workflow/workflow.js +12 -12
  235. package/dist/types/a2a/a2a_remote_agent.d.ts +6 -0
  236. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +3 -2
  237. package/dist/types/agents/agent_engine_client.d.ts +121 -3
  238. package/dist/types/agents/base_agent.d.ts +2 -0
  239. package/dist/types/agents/processors/content_processor_utils.d.ts +9 -9
  240. package/dist/types/agents/run_config.d.ts +14 -0
  241. package/dist/types/cli/cli_eval.d.ts +172 -9
  242. package/dist/types/cli/utils/cleanup.d.ts +18 -0
  243. package/dist/types/cli/utils/envs.d.ts +13 -3
  244. package/dist/types/cli/utils/evals.d.ts +64 -1
  245. package/dist/types/cli/utils/logs.d.ts +19 -2
  246. package/dist/types/cli/utils/path_validation.d.ts +30 -0
  247. package/dist/types/code_executors/container_code_executor.d.ts +49 -8
  248. package/dist/types/common.d.ts +16 -9
  249. package/dist/types/context/compaction_utils.d.ts +13 -1
  250. package/dist/types/events/event.d.ts +3 -0
  251. package/dist/types/features/feature_registry.d.ts +1 -0
  252. package/dist/types/index.d.ts +9 -6
  253. package/dist/types/plugins/base_plugin.d.ts +50 -21
  254. package/dist/types/plugins/plugin_manager.d.ts +13 -0
  255. package/dist/types/runner/runner.d.ts +11 -0
  256. package/dist/types/sessions/base_session_service.d.ts +0 -2
  257. package/dist/types/sessions/db/operations.d.ts +2 -1
  258. package/dist/types/sessions/db/schema.d.ts +5 -3
  259. package/dist/types/telemetry/api/instrumentation.d.ts +259 -0
  260. package/dist/types/telemetry/api/internal/common/accumulators.d.ts +91 -0
  261. package/dist/types/telemetry/api/internal/common/attributes.d.ts +90 -0
  262. package/dist/types/telemetry/api/internal/common/config.d.ts +61 -0
  263. package/dist/types/telemetry/api/internal/common/error.d.ts +29 -0
  264. package/dist/types/telemetry/api/internal/common/finish_reason.d.ts +18 -0
  265. package/dist/types/telemetry/api/internal/common/genai_messages.d.ts +26 -0
  266. package/dist/types/telemetry/api/internal/common/http_exchange.d.ts +50 -0
  267. package/dist/types/telemetry/api/internal/common/provider_name.d.ts +16 -0
  268. package/dist/types/telemetry/api/internal/common/redaction.d.ts +14 -0
  269. package/dist/types/telemetry/api/internal/common/serialization.d.ts +18 -0
  270. package/dist/types/telemetry/api/internal/common/token_usage.d.ts +47 -0
  271. package/dist/types/telemetry/api/internal/logs/inference.d.ts +15 -0
  272. package/dist/types/telemetry/api/internal/logs/logger.d.ts +13 -0
  273. package/dist/types/telemetry/api/internal/logs/mcp.d.ts +31 -0
  274. package/dist/types/telemetry/api/internal/metrics/agent.d.ts +28 -0
  275. package/dist/types/telemetry/api/internal/metrics/inference_start_hook.d.ts +12 -0
  276. package/dist/types/telemetry/api/internal/metrics/meters.d.ts +57 -0
  277. package/dist/types/telemetry/api/internal/metrics/tool.d.ts +44 -0
  278. package/dist/types/telemetry/api/internal/metrics/workflow.d.ts +32 -0
  279. package/dist/types/telemetry/api/internal/trace/agent.d.ts +14 -0
  280. package/dist/types/telemetry/api/internal/trace/compaction.d.ts +20 -0
  281. package/dist/types/telemetry/api/internal/trace/inference.d.ts +31 -0
  282. package/dist/types/telemetry/api/internal/trace/live.d.ts +21 -0
  283. package/dist/types/telemetry/api/internal/trace/node.d.ts +22 -0
  284. package/dist/types/telemetry/api/internal/trace/propagation.d.ts +22 -0
  285. package/dist/types/telemetry/api/internal/trace/tool.d.ts +57 -0
  286. package/dist/types/telemetry/api/internal/trace/tracer.d.ts +31 -0
  287. package/dist/types/telemetry/api/internal/trace/workflow.d.ts +21 -0
  288. package/dist/types/telemetry/export/agent_engine.d.ts +23 -0
  289. package/dist/types/telemetry/export/agent_runtime.d.ts +40 -0
  290. package/dist/types/telemetry/export/google_cloud.d.ts +189 -0
  291. package/dist/types/telemetry/export/request_driven_metric_reader.d.ts +144 -0
  292. package/dist/types/telemetry/{setup.d.ts → export/setup.d.ts} +3 -0
  293. package/dist/types/tools/agent_tool.d.ts +1 -1
  294. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +13 -4
  295. package/dist/types/tools/base_toolset.d.ts +1 -1
  296. package/dist/types/tools/computer_use/base_computer.d.ts +281 -0
  297. package/dist/types/tools/computer_use/computer_use_actions.d.ts +53 -0
  298. package/dist/types/tools/computer_use/computer_use_tool.d.ts +108 -0
  299. package/dist/types/tools/computer_use/computer_use_toolset.d.ts +132 -0
  300. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +2 -0
  301. package/dist/types/tools/load_artifacts_tool.d.ts +5 -1
  302. package/dist/types/tools/load_memory_tool.d.ts +13 -7
  303. package/dist/types/tools/mcp/mcp_session_manager.d.ts +16 -0
  304. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +8 -8
  305. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +7 -3
  306. package/dist/types/tools/toolbox_toolset.d.ts +15 -20
  307. package/dist/types/utils/async_queue.d.ts +14 -0
  308. package/dist/types/utils/env_aware_utils.d.ts +11 -0
  309. package/dist/types/utils/error_utils.d.ts +4 -0
  310. package/dist/types/utils/gemini_schema_util.d.ts +27 -6
  311. package/dist/types/utils/id_provider.d.ts +43 -0
  312. package/dist/types/utils/model_name.d.ts +8 -0
  313. package/dist/types/utils/ssrf_guard.d.ts +2 -0
  314. package/dist/types/version.d.ts +1 -1
  315. package/dist/types/workflow/index.d.ts +1 -1
  316. package/dist/types/workflow/nodes/parallel_worker.d.ts +8 -1
  317. package/dist/web/index_web.js +86 -88
  318. package/dist/web/index_web.js.map +4 -4
  319. package/package.json +13 -15
  320. package/dist/cjs/telemetry/google_cloud.js +0 -116
  321. package/dist/cjs/telemetry/tracing.js +0 -393
  322. package/dist/esm/telemetry/google_cloud.js +0 -99
  323. package/dist/esm/telemetry/setup.js +0 -88
  324. package/dist/esm/telemetry/tracing.js +0 -361
  325. package/dist/types/telemetry/google_cloud.d.ts +0 -9
  326. package/dist/types/telemetry/tracing.d.ts +0 -143
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ var cleanup_exports = {};
27
+ __export(cleanup_exports, {
28
+ RUNNER_CLEANUP_TIMEOUT_MS: () => RUNNER_CLEANUP_TIMEOUT_MS,
29
+ closeRunners: () => closeRunners
30
+ });
31
+ module.exports = __toCommonJS(cleanup_exports);
32
+ var import_error_utils = require("../../utils/error_utils.js");
33
+ var import_logger = require("../../utils/logger.js");
34
+ /**
35
+ * @license
36
+ * Copyright 2026 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ const RUNNER_CLEANUP_TIMEOUT_MS = 3e4;
40
+ const RUNNER_CLEANUP_TIMEOUT_SYMBOL = /* @__PURE__ */ Symbol(
41
+ "google.adk.cli.runnerCleanupTimeout"
42
+ );
43
+ async function closeRunners(runners) {
44
+ if (runners.length === 0) {
45
+ return;
46
+ }
47
+ let pendingCount = runners.length;
48
+ const tasks = runners.map(async (runner) => {
49
+ try {
50
+ await runner.close();
51
+ } catch (e) {
52
+ import_logger.logger.error(
53
+ `Error closing runner ${runner.appName}: ${(0, import_error_utils.getErrorMessage)(e)}`
54
+ );
55
+ } finally {
56
+ pendingCount -= 1;
57
+ }
58
+ });
59
+ let timeoutId;
60
+ try {
61
+ const result = await Promise.race([
62
+ Promise.allSettled(tasks).then(() => void 0),
63
+ new Promise((resolve) => {
64
+ timeoutId = setTimeout(
65
+ () => resolve(RUNNER_CLEANUP_TIMEOUT_SYMBOL),
66
+ RUNNER_CLEANUP_TIMEOUT_MS
67
+ );
68
+ })
69
+ ]);
70
+ if (result === RUNNER_CLEANUP_TIMEOUT_SYMBOL && pendingCount > 0) {
71
+ import_logger.logger.warn(`${pendingCount} runner close tasks didn't complete in time`);
72
+ }
73
+ } finally {
74
+ if (timeoutId !== void 0) {
75
+ clearTimeout(timeoutId);
76
+ }
77
+ }
78
+ }
79
+ __name(closeRunners, "closeRunners");
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ RUNNER_CLEANUP_TIMEOUT_MS,
83
+ closeRunners
84
+ });
@@ -41,7 +41,9 @@ __export(envs_exports, {
41
41
  module.exports = __toCommonJS(envs_exports);
42
42
  var fs = __toESM(require("node:fs"), 1);
43
43
  var path = __toESM(require("node:path"), 1);
44
+ var import_input_validation_error = require("../../errors/input_validation_error.js");
44
45
  var import_logger = require("../../utils/logger.js");
46
+ var import_path_validation = require("./path_validation.js");
45
47
  /**
46
48
  * @license
47
49
  * Copyright 2026 Google LLC
@@ -92,8 +94,37 @@ function parseAndLoadDotenv(content) {
92
94
  }
93
95
  }
94
96
  __name(parseAndLoadDotenv, "parseAndLoadDotenv");
95
- function loadDotenvForAgent(agentName, agentParentFolder = ".", filename = ".env") {
96
- let startingFolder = path.resolve(agentParentFolder, agentName);
97
+ function loadDotenvForAgent(agentName, agentParentFolder, filename = ".env") {
98
+ (0, import_path_validation.validatePathSegment)(filename, "filename");
99
+ if (typeof agentName !== "string" || !agentName) {
100
+ throw new import_input_validation_error.InputValidationError("agentName must not be empty.");
101
+ }
102
+ if (agentName.includes("\0")) {
103
+ throw new import_input_validation_error.InputValidationError("agentName must not contain null bytes.");
104
+ }
105
+ let startingFolder;
106
+ if (agentParentFolder !== void 0) {
107
+ if (typeof agentParentFolder !== "string" || !agentParentFolder || agentParentFolder.includes("\0")) {
108
+ throw new import_input_validation_error.InputValidationError(
109
+ "agentParentFolder must be a valid non-empty path."
110
+ );
111
+ }
112
+ (0, import_path_validation.validatePathSegment)(agentName, "agentName");
113
+ const baseDir = path.resolve(agentParentFolder);
114
+ startingFolder = path.resolve(baseDir, agentName);
115
+ if (!(0, import_path_validation.isStrictlyInside)(baseDir, startingFolder)) {
116
+ throw new import_input_validation_error.InputValidationError(
117
+ `agentName '${agentName}' resolves outside agentParentFolder.`
118
+ );
119
+ }
120
+ } else {
121
+ if (agentName === "." || agentName.split(/[\\/]+/).includes("..")) {
122
+ throw new import_input_validation_error.InputValidationError(
123
+ `agentName '${agentName}' must not contain traversal segments.`
124
+ );
125
+ }
126
+ startingFolder = path.resolve(".", agentName);
127
+ }
97
128
  if (fs.existsSync(startingFolder) && fs.statSync(startingFolder).isFile()) {
98
129
  startingFolder = path.dirname(startingFolder);
99
130
  }
@@ -26,6 +26,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
26
26
  var evals_exports = {};
27
27
  __export(evals_exports, {
28
28
  convertSessionToEvalFormat: () => convertSessionToEvalFormat,
29
+ convertSessionToEvalInvocations: () => convertSessionToEvalInvocations,
29
30
  createEmptyState: () => createEmptyState
30
31
  });
31
32
  module.exports = __toCommonJS(evals_exports);
@@ -36,20 +37,22 @@ var import_llm_agent = require("../../agents/llm_agent.js");
36
37
  * SPDX-License-Identifier: Apache-2.0
37
38
  */
38
39
  function convertSessionToEvalFormat(session) {
39
- var _a, _b, _c;
40
+ var _a, _b, _c, _d;
40
41
  const events = session && session.events ? session.events : [];
41
42
  const evalCases = [];
42
43
  let i = 0;
43
44
  while (i < events.length) {
44
45
  const event = events[i];
45
46
  if (event.author === "user") {
47
+ if (!event.content || !event.content.parts || event.content.parts.length === 0) {
48
+ i += 1;
49
+ continue;
50
+ }
46
51
  let userQuery = "";
47
- if (event.content && event.content.parts) {
48
- for (const part of event.content.parts) {
49
- if (part.text) {
50
- userQuery = part.text;
51
- break;
52
- }
52
+ for (const part of event.content.parts) {
53
+ if (part.text) {
54
+ userQuery = part.text;
55
+ break;
53
56
  }
54
57
  }
55
58
  const expectedToolUse = [];
@@ -63,6 +66,7 @@ function convertSessionToEvalFormat(session) {
63
66
  }
64
67
  if (subsequentEvent.content && subsequentEvent.content.parts) {
65
68
  let hasToolAction = false;
69
+ const textParts = [];
66
70
  for (const part of subsequentEvent.content.parts) {
67
71
  if (part.functionCall) {
68
72
  expectedToolUse.push({
@@ -72,13 +76,20 @@ function convertSessionToEvalFormat(session) {
72
76
  hasToolAction = true;
73
77
  } else if (part.functionResponse) {
74
78
  hasToolAction = true;
79
+ } else if (part.text) {
80
+ textParts.push(part);
75
81
  }
76
82
  }
77
- if (!hasToolAction) {
83
+ if (!hasToolAction && textParts.length > 0) {
78
84
  expectedIntermediateAgentResponses.push([
79
85
  (_c = subsequentEvent.author) != null ? _c : "",
80
86
  subsequentEvent.content.parts
81
87
  ]);
88
+ } else if (hasToolAction && textParts.length > 0) {
89
+ expectedIntermediateAgentResponses.push([
90
+ (_d = subsequentEvent.author) != null ? _d : "",
91
+ textParts
92
+ ]);
82
93
  }
83
94
  }
84
95
  j += 1;
@@ -107,6 +118,61 @@ function convertSessionToEvalFormat(session) {
107
118
  return evalCases;
108
119
  }
109
120
  __name(convertSessionToEvalFormat, "convertSessionToEvalFormat");
121
+ function convertSessionToEvalInvocations(session) {
122
+ const invocations = [];
123
+ const events = session && session.events ? session.events : [];
124
+ for (let i = 0; i < events.length; i++) {
125
+ const event = events[i];
126
+ if (event.author !== "user") {
127
+ continue;
128
+ }
129
+ if (!event.content || !event.content.parts || event.content.parts.length === 0) {
130
+ continue;
131
+ }
132
+ const userContent = event.content;
133
+ const invocationId = event.invocationId || void 0;
134
+ const creationTimestamp = event.timestamp !== void 0 ? event.timestamp / 1e3 : void 0;
135
+ const toolUses = [];
136
+ const intermediateResponses = [];
137
+ for (let j = i + 1; j < events.length; j++) {
138
+ const subsequentEvent = events[j];
139
+ const eventAuthor = subsequentEvent.author || "agent";
140
+ if (eventAuthor === "user") {
141
+ break;
142
+ }
143
+ if (!subsequentEvent.content || !subsequentEvent.content.parts || subsequentEvent.content.parts.length === 0) {
144
+ continue;
145
+ }
146
+ const intermediateResponseParts = [];
147
+ for (const subsequentPart of subsequentEvent.content.parts) {
148
+ if (subsequentPart.functionCall) {
149
+ toolUses.push(subsequentPart.functionCall);
150
+ } else if (subsequentPart.text) {
151
+ intermediateResponseParts.push(subsequentPart);
152
+ }
153
+ }
154
+ if (intermediateResponseParts.length > 0) {
155
+ intermediateResponses.push([eventAuthor, intermediateResponseParts]);
156
+ }
157
+ }
158
+ const finalResponse = intermediateResponses.length > 0 ? {
159
+ parts: intermediateResponses[intermediateResponses.length - 1][1],
160
+ role: "model"
161
+ } : void 0;
162
+ invocations.push({
163
+ ...invocationId !== void 0 ? { invocationId } : {},
164
+ userContent,
165
+ ...finalResponse !== void 0 ? { finalResponse } : {},
166
+ intermediateData: {
167
+ toolUses,
168
+ intermediateResponses: intermediateResponses.length > 0 ? intermediateResponses.slice(0, -1) : []
169
+ },
170
+ ...creationTimestamp !== void 0 ? { creationTimestamp } : {}
171
+ });
172
+ }
173
+ return invocations;
174
+ }
175
+ __name(convertSessionToEvalInvocations, "convertSessionToEvalInvocations");
110
176
  function populateEmptyState(agent, allState) {
111
177
  for (const subAgent of agent.subAgents) {
112
178
  populateEmptyState(subAgent, allState);
@@ -133,5 +199,6 @@ __name(createEmptyState, "createEmptyState");
133
199
  // Annotate the CommonJS export names for ESM import in node:
134
200
  0 && (module.exports = {
135
201
  convertSessionToEvalFormat,
202
+ convertSessionToEvalInvocations,
136
203
  createEmptyState
137
204
  });
@@ -51,6 +51,7 @@ var import_logger = require("../../utils/logger.js");
51
51
  * SPDX-License-Identifier: Apache-2.0
52
52
  */
53
53
  const LOGGING_FORMAT = "%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s";
54
+ const MAX_LOG_FILE_SUFFIX = 1e3;
54
55
  const LOG_LEVEL_NAMES = {
55
56
  [import_logger.LogLevel.DEBUG]: "DEBUG",
56
57
  [import_logger.LogLevel.INFO]: "INFO",
@@ -62,6 +63,109 @@ function formatDateTimestamp(date) {
62
63
  return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}_${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`;
63
64
  }
64
65
  __name(formatDateTimestamp, "formatDateTimestamp");
66
+ function hasErrorCode(e, code) {
67
+ return typeof e === "object" && e !== null && "code" in e && e.code === code;
68
+ }
69
+ __name(hasErrorCode, "hasErrorCode");
70
+ let activeLogFile;
71
+ let exitListenerRegistered = false;
72
+ function closeActiveLogFile() {
73
+ if (!activeLogFile) {
74
+ return;
75
+ }
76
+ const { fd } = activeLogFile;
77
+ activeLogFile = void 0;
78
+ try {
79
+ fs.closeSync(fd);
80
+ } catch {
81
+ }
82
+ }
83
+ __name(closeActiveLogFile, "closeActiveLogFile");
84
+ function getUid() {
85
+ return typeof process.getuid === "function" ? process.getuid() : void 0;
86
+ }
87
+ __name(getUid, "getUid");
88
+ function isSymlinkOrNonDirectory(dir) {
89
+ try {
90
+ const stat = fs.lstatSync(dir);
91
+ return stat.isSymbolicLink() || !stat.isDirectory();
92
+ } catch {
93
+ return false;
94
+ }
95
+ }
96
+ __name(isSymlinkOrNonDirectory, "isSymlinkOrNonDirectory");
97
+ function preparePrivateDirectory(dir) {
98
+ try {
99
+ fs.mkdirSync(dir, { recursive: true, mode: 448 });
100
+ } catch (e) {
101
+ if (!isSymlinkOrNonDirectory(dir)) {
102
+ throw e;
103
+ }
104
+ return false;
105
+ }
106
+ const stat = fs.lstatSync(dir);
107
+ if (stat.isSymbolicLink() || !stat.isDirectory()) {
108
+ return false;
109
+ }
110
+ const uid = getUid();
111
+ if (uid === void 0) {
112
+ return true;
113
+ }
114
+ if (stat.uid !== uid) {
115
+ return false;
116
+ }
117
+ fs.chmodSync(dir, 448);
118
+ if ((fs.lstatSync(dir).mode & 63) !== 0) {
119
+ throw new Error(
120
+ `Log directory ${dir} is accessible by other users after chmod 0o700.`
121
+ );
122
+ }
123
+ return true;
124
+ }
125
+ __name(preparePrivateDirectory, "preparePrivateDirectory");
126
+ function resolveLogDir(subFolder) {
127
+ const logDir = path.join(os.tmpdir(), subFolder);
128
+ if (preparePrivateDirectory(logDir)) {
129
+ return logDir;
130
+ }
131
+ const uid = getUid();
132
+ if (uid === void 0) {
133
+ throw new Error(`Log directory ${logDir} is not a directory.`);
134
+ }
135
+ const userLogDir = path.join(os.tmpdir(), `${subFolder}_${uid}`);
136
+ if (preparePrivateDirectory(userLogDir)) {
137
+ return userLogDir;
138
+ }
139
+ throw new Error(
140
+ `Log directories ${logDir} and ${userLogDir} are not directories owned by the current user.`
141
+ );
142
+ }
143
+ __name(resolveLogDir, "resolveLogDir");
144
+ function createExclusiveLogFile({
145
+ logDir,
146
+ logFilePrefix,
147
+ logFileTimestamp
148
+ }) {
149
+ for (let counter = 0; counter <= MAX_LOG_FILE_SUFFIX; counter++) {
150
+ const suffix = counter === 0 ? "" : `_${counter}`;
151
+ const candidate = path.join(
152
+ logDir,
153
+ `${logFilePrefix}.${logFileTimestamp}${suffix}.log`
154
+ );
155
+ try {
156
+ const fd = fs.openSync(candidate, "ax", 384);
157
+ return { logFilepath: candidate, fd };
158
+ } catch (e) {
159
+ if (!hasErrorCode(e, "EEXIST")) {
160
+ throw e;
161
+ }
162
+ }
163
+ }
164
+ throw new Error(
165
+ `Failed to create a unique log file in ${logDir} for ${logFilePrefix}.${logFileTimestamp}`
166
+ );
167
+ }
168
+ __name(createExclusiveLogFile, "createExclusiveLogFile");
65
169
  function formatLogLine(level, messages) {
66
170
  var _a;
67
171
  const iso = (/* @__PURE__ */ new Date()).toISOString();
@@ -100,6 +204,7 @@ function createWriterLogger(initialLevel, writeLine) {
100
204
  }
101
205
  __name(createWriterLogger, "createWriterLogger");
102
206
  function setupAdkLogger(level = import_logger.LogLevel.INFO) {
207
+ closeActiveLogFile();
103
208
  (0, import_logger.setLogLevel)(level);
104
209
  (0, import_logger.setLogger)(
105
210
  createWriterLogger(level, (line) => {
@@ -110,21 +215,33 @@ function setupAdkLogger(level = import_logger.LogLevel.INFO) {
110
215
  }
111
216
  __name(setupAdkLogger, "setupAdkLogger");
112
217
  function logToTmpFolder(options = {}) {
218
+ var _a;
113
219
  const {
114
220
  level = import_logger.LogLevel.INFO,
115
221
  subFolder = "agents_log",
116
- logFilePrefix = "agent",
117
- logFileTimestamp = formatDateTimestamp(/* @__PURE__ */ new Date())
222
+ logFilePrefix = "agent"
118
223
  } = options;
119
- const logDir = path.join(os.tmpdir(), subFolder);
120
- fs.mkdirSync(logDir, { recursive: true });
121
- const logFilename = `${logFilePrefix}.${logFileTimestamp}.log`;
122
- const logFilepath = path.join(logDir, logFilename);
123
- fs.writeFileSync(logFilepath, "", "utf-8");
224
+ const logFileTimestamp = (_a = options.logFileTimestamp) != null ? _a : `${formatDateTimestamp(/* @__PURE__ */ new Date())}_${process.pid}`;
225
+ const logDir = resolveLogDir(subFolder);
226
+ const logFile = createExclusiveLogFile({
227
+ logDir,
228
+ logFilePrefix,
229
+ logFileTimestamp
230
+ });
231
+ const { logFilepath } = logFile;
232
+ closeActiveLogFile();
233
+ activeLogFile = logFile;
234
+ if (!exitListenerRegistered) {
235
+ process.on("exit", closeActiveLogFile);
236
+ exitListenerRegistered = true;
237
+ }
124
238
  (0, import_logger.setLogLevel)(level);
125
239
  const fileLogger = createWriterLogger(level, (line) => {
126
- fs.appendFileSync(logFilepath, `${line}
127
- `, "utf-8");
240
+ if (activeLogFile !== logFile) {
241
+ return;
242
+ }
243
+ fs.writeSync(logFile.fd, `${line}
244
+ `, null, "utf-8");
128
245
  });
129
246
  (0, import_logger.setLogger)(fileLogger);
130
247
  const latestLogLink = path.join(logDir, `${logFilePrefix}.latest.log`);
@@ -139,6 +256,8 @@ function logToTmpFolder(options = {}) {
139
256
  fileLogger.warn(`Failed to create symlink to latest log: ${String(e)}`);
140
257
  }
141
258
  fileLogger.info(`Log setup complete: ${logFilepath}`);
259
+ process.stderr.write(`Log setup complete: ${logFilepath}
260
+ `);
142
261
  return logFilepath;
143
262
  }
144
263
  __name(logToTmpFolder, "logToTmpFolder");
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __create = Object.create;
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ var __export = (target, all) => {
16
+ for (var name in all)
17
+ __defProp(target, name, { get: all[name], enumerable: true });
18
+ };
19
+ var __copyProps = (to, from, except, desc) => {
20
+ if (from && typeof from === "object" || typeof from === "function") {
21
+ for (let key of __getOwnPropNames(from))
22
+ if (!__hasOwnProp.call(to, key) && key !== except)
23
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
24
+ }
25
+ return to;
26
+ };
27
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
28
+ // If the importer is in node compatibility mode or this is not an ESM
29
+ // file that has been converted to a CommonJS file using a Babel-
30
+ // compatible transform (i.e. "__esModule" has not been set), then set
31
+ // "default" to the CommonJS "module.exports" for node compatibility.
32
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
33
+ mod
34
+ ));
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+ var path_validation_exports = {};
37
+ __export(path_validation_exports, {
38
+ isStrictlyInside: () => isStrictlyInside,
39
+ validatePathSegment: () => validatePathSegment
40
+ });
41
+ module.exports = __toCommonJS(path_validation_exports);
42
+ var path = __toESM(require("node:path"), 1);
43
+ var import_input_validation_error = require("../../errors/input_validation_error.js");
44
+ /**
45
+ * @license
46
+ * Copyright 2026 Google LLC
47
+ * SPDX-License-Identifier: Apache-2.0
48
+ */
49
+ const WINDOWS_DRIVE_RE = /^[A-Za-z]:/;
50
+ function validatePathSegment(value, fieldName) {
51
+ if (typeof value !== "string" || !value) {
52
+ throw new import_input_validation_error.InputValidationError(`${fieldName} must not be empty.`);
53
+ }
54
+ if (value.includes("\0")) {
55
+ throw new import_input_validation_error.InputValidationError(`${fieldName} must not contain null bytes.`);
56
+ }
57
+ if (value.includes("/") || value.includes("\\")) {
58
+ throw new import_input_validation_error.InputValidationError(
59
+ `${fieldName} '${value}' must not contain path separators.`
60
+ );
61
+ }
62
+ if (WINDOWS_DRIVE_RE.test(value)) {
63
+ throw new import_input_validation_error.InputValidationError(
64
+ `${fieldName} '${value}' must not be drive-qualified.`
65
+ );
66
+ }
67
+ if (value === "." || value === "..") {
68
+ throw new import_input_validation_error.InputValidationError(
69
+ `${fieldName} '${value}' must not contain traversal segments.`
70
+ );
71
+ }
72
+ }
73
+ __name(validatePathSegment, "validatePathSegment");
74
+ function isStrictlyInside(baseDir, target) {
75
+ const rel = path.relative(baseDir, target);
76
+ return rel !== "" && rel !== ".." && !rel.startsWith(`..${path.sep}`) && !path.isAbsolute(rel);
77
+ }
78
+ __name(isStrictlyInside, "isStrictlyInside");
79
+ // Annotate the CommonJS export names for ESM import in node:
80
+ 0 && (module.exports = {
81
+ isStrictlyInside,
82
+ validatePathSegment
83
+ });