@anthropic-field/core 0.1.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 (1012) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  6. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  7. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  8. package/dist/docs/assets/release_patch.png +0 -0
  9. package/dist/docs/assets/theme-ansi-light.png +0 -0
  10. package/dist/docs/assets/theme-ansi.png +0 -0
  11. package/dist/docs/assets/theme-atom-one.png +0 -0
  12. package/dist/docs/assets/theme-ayu-light.png +0 -0
  13. package/dist/docs/assets/theme-ayu.png +0 -0
  14. package/dist/docs/assets/theme-custom.png +0 -0
  15. package/dist/docs/assets/theme-default-light.png +0 -0
  16. package/dist/docs/assets/theme-default.png +0 -0
  17. package/dist/docs/assets/theme-dracula.png +0 -0
  18. package/dist/docs/assets/theme-github-light.png +0 -0
  19. package/dist/docs/assets/theme-github.png +0 -0
  20. package/dist/docs/assets/theme-google-light.png +0 -0
  21. package/dist/docs/assets/theme-xcode-light.png +0 -0
  22. package/dist/docs/changelogs/index.md +743 -0
  23. package/dist/docs/changelogs/latest.md +338 -0
  24. package/dist/docs/changelogs/preview.md +437 -0
  25. package/dist/docs/cli/authentication.md +3 -0
  26. package/dist/docs/cli/checkpointing.md +94 -0
  27. package/dist/docs/cli/cli-reference.md +101 -0
  28. package/dist/docs/cli/commands.md +430 -0
  29. package/dist/docs/cli/creating-skills.md +80 -0
  30. package/dist/docs/cli/custom-commands.md +315 -0
  31. package/dist/docs/cli/enterprise.md +565 -0
  32. package/dist/docs/cli/gemini-ignore.md +71 -0
  33. package/dist/docs/cli/gemini-md.md +108 -0
  34. package/dist/docs/cli/generation-settings.md +210 -0
  35. package/dist/docs/cli/headless.md +388 -0
  36. package/dist/docs/cli/index.md +65 -0
  37. package/dist/docs/cli/keyboard-shortcuts.md +140 -0
  38. package/dist/docs/cli/model-routing.md +42 -0
  39. package/dist/docs/cli/model.md +62 -0
  40. package/dist/docs/cli/rewind.md +51 -0
  41. package/dist/docs/cli/sandbox.md +171 -0
  42. package/dist/docs/cli/session-management.md +158 -0
  43. package/dist/docs/cli/settings.md +139 -0
  44. package/dist/docs/cli/skills.md +112 -0
  45. package/dist/docs/cli/system-prompt.md +125 -0
  46. package/dist/docs/cli/telemetry.md +826 -0
  47. package/dist/docs/cli/themes.md +235 -0
  48. package/dist/docs/cli/token-caching.md +20 -0
  49. package/dist/docs/cli/trusted-folders.md +95 -0
  50. package/dist/docs/cli/tutorials/skills-getting-started.md +97 -0
  51. package/dist/docs/cli/tutorials.md +87 -0
  52. package/dist/docs/cli/uninstall.md +65 -0
  53. package/dist/docs/core/index.md +107 -0
  54. package/dist/docs/core/memport.md +246 -0
  55. package/dist/docs/core/policy-engine.md +305 -0
  56. package/dist/docs/core/remote-agents.md +84 -0
  57. package/dist/docs/core/subagents.md +191 -0
  58. package/dist/docs/core/tools-api.md +131 -0
  59. package/dist/docs/examples/proxy-script.md +83 -0
  60. package/dist/docs/extensions/best-practices.md +139 -0
  61. package/dist/docs/extensions/index.md +45 -0
  62. package/dist/docs/extensions/reference.md +336 -0
  63. package/dist/docs/extensions/releasing.md +183 -0
  64. package/dist/docs/extensions/writing-extensions.md +281 -0
  65. package/dist/docs/faq.md +154 -0
  66. package/dist/docs/get-started/authentication.md +321 -0
  67. package/dist/docs/get-started/configuration-v1.md +888 -0
  68. package/dist/docs/get-started/configuration.md +1585 -0
  69. package/dist/docs/get-started/examples.md +219 -0
  70. package/dist/docs/get-started/gemini-3.md +101 -0
  71. package/dist/docs/get-started/index.md +71 -0
  72. package/dist/docs/get-started/installation.md +141 -0
  73. package/dist/docs/hooks/best-practices.md +677 -0
  74. package/dist/docs/hooks/index.md +164 -0
  75. package/dist/docs/hooks/reference.md +322 -0
  76. package/dist/docs/hooks/writing-hooks.md +450 -0
  77. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  78. package/dist/docs/ide-integration/index.md +202 -0
  79. package/dist/docs/index.md +149 -0
  80. package/dist/docs/integration-tests.md +211 -0
  81. package/dist/docs/issue-and-pr-automation.md +134 -0
  82. package/dist/docs/local-development.md +128 -0
  83. package/dist/docs/mermaid/context.mmd +103 -0
  84. package/dist/docs/mermaid/render-path.mmd +64 -0
  85. package/dist/docs/npm.md +62 -0
  86. package/dist/docs/quota-and-pricing.md +158 -0
  87. package/dist/docs/release-confidence.md +164 -0
  88. package/dist/docs/releases.md +540 -0
  89. package/dist/docs/sidebar.json +152 -0
  90. package/dist/docs/tools/file-system.md +217 -0
  91. package/dist/docs/tools/index.md +98 -0
  92. package/dist/docs/tools/mcp-server.md +1079 -0
  93. package/dist/docs/tools/memory.md +54 -0
  94. package/dist/docs/tools/shell.md +260 -0
  95. package/dist/docs/tools/todos.md +57 -0
  96. package/dist/docs/tools/web-fetch.md +59 -0
  97. package/dist/docs/tools/web-search.md +42 -0
  98. package/dist/docs/tos-privacy.md +96 -0
  99. package/dist/docs/troubleshooting.md +173 -0
  100. package/dist/index.d.ts +24 -0
  101. package/dist/index.js +24 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/src/__mocks__/fs/promises.d.ts +11 -0
  104. package/dist/src/__mocks__/fs/promises.js +17 -0
  105. package/dist/src/__mocks__/fs/promises.js.map +1 -0
  106. package/dist/src/agents/a2a-client-manager.d.ts +77 -0
  107. package/dist/src/agents/a2a-client-manager.js +173 -0
  108. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  109. package/dist/src/agents/a2aUtils.d.ts +29 -0
  110. package/dist/src/agents/a2aUtils.js +113 -0
  111. package/dist/src/agents/a2aUtils.js.map +1 -0
  112. package/dist/src/agents/acknowledgedAgents.d.ts +18 -0
  113. package/dist/src/agents/acknowledgedAgents.js +58 -0
  114. package/dist/src/agents/acknowledgedAgents.js.map +1 -0
  115. package/dist/src/agents/agent-scheduler.d.ts +33 -0
  116. package/dist/src/agents/agent-scheduler.js +29 -0
  117. package/dist/src/agents/agent-scheduler.js.map +1 -0
  118. package/dist/src/agents/agentLoader.d.ts +73 -0
  119. package/dist/src/agents/agentLoader.js +268 -0
  120. package/dist/src/agents/agentLoader.js.map +1 -0
  121. package/dist/src/agents/cli-help-agent.d.ts +24 -0
  122. package/dist/src/agents/cli-help-agent.js +80 -0
  123. package/dist/src/agents/cli-help-agent.js.map +1 -0
  124. package/dist/src/agents/codebase-investigator.d.ts +47 -0
  125. package/dist/src/agents/codebase-investigator.js +159 -0
  126. package/dist/src/agents/codebase-investigator.js.map +1 -0
  127. package/dist/src/agents/generalist-agent.d.ts +21 -0
  128. package/dist/src/agents/generalist-agent.js +60 -0
  129. package/dist/src/agents/generalist-agent.js.map +1 -0
  130. package/dist/src/agents/local-executor.d.ts +110 -0
  131. package/dist/src/agents/local-executor.js +879 -0
  132. package/dist/src/agents/local-executor.js.map +1 -0
  133. package/dist/src/agents/local-invocation.d.ts +45 -0
  134. package/dist/src/agents/local-invocation.js +101 -0
  135. package/dist/src/agents/local-invocation.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +85 -0
  137. package/dist/src/agents/registry.js +374 -0
  138. package/dist/src/agents/registry.js.map +1 -0
  139. package/dist/src/agents/remote-invocation.d.ts +35 -0
  140. package/dist/src/agents/remote-invocation.js +127 -0
  141. package/dist/src/agents/remote-invocation.js.map +1 -0
  142. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  143. package/dist/src/agents/subagent-tool-wrapper.js +51 -0
  144. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  145. package/dist/src/agents/subagent-tool.d.ts +15 -0
  146. package/dist/src/agents/subagent-tool.js +61 -0
  147. package/dist/src/agents/subagent-tool.js.map +1 -0
  148. package/dist/src/agents/types.d.ts +154 -0
  149. package/dist/src/agents/types.js +23 -0
  150. package/dist/src/agents/types.js.map +1 -0
  151. package/dist/src/agents/utils.d.ts +15 -0
  152. package/dist/src/agents/utils.js +29 -0
  153. package/dist/src/agents/utils.js.map +1 -0
  154. package/dist/src/availability/errorClassification.d.ts +7 -0
  155. package/dist/src/availability/errorClassification.js +20 -0
  156. package/dist/src/availability/errorClassification.js.map +1 -0
  157. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  158. package/dist/src/availability/modelAvailabilityService.js +87 -0
  159. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  160. package/dist/src/availability/modelPolicy.d.ts +49 -0
  161. package/dist/src/availability/modelPolicy.js +7 -0
  162. package/dist/src/availability/modelPolicy.js.map +1 -0
  163. package/dist/src/availability/policyCatalog.d.ts +24 -0
  164. package/dist/src/availability/policyCatalog.js +106 -0
  165. package/dist/src/availability/policyCatalog.js.map +1 -0
  166. package/dist/src/availability/policyHelpers.d.ts +52 -0
  167. package/dist/src/availability/policyHelpers.js +143 -0
  168. package/dist/src/availability/policyHelpers.js.map +1 -0
  169. package/dist/src/availability/testUtils.d.ts +10 -0
  170. package/dist/src/availability/testUtils.js +22 -0
  171. package/dist/src/availability/testUtils.js.map +1 -0
  172. package/dist/src/code_assist/admin/admin_controls.d.ts +32 -0
  173. package/dist/src/code_assist/admin/admin_controls.js +120 -0
  174. package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
  175. package/dist/src/code_assist/codeAssist.d.ts +12 -0
  176. package/dist/src/code_assist/codeAssist.js +31 -0
  177. package/dist/src/code_assist/codeAssist.js.map +1 -0
  178. package/dist/src/code_assist/converter.d.ts +75 -0
  179. package/dist/src/code_assist/converter.js +161 -0
  180. package/dist/src/code_assist/converter.js.map +1 -0
  181. package/dist/src/code_assist/experiments/client_metadata.d.ts +12 -0
  182. package/dist/src/code_assist/experiments/client_metadata.js +51 -0
  183. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -0
  184. package/dist/src/code_assist/experiments/experiments.d.ts +17 -0
  185. package/dist/src/code_assist/experiments/experiments.js +57 -0
  186. package/dist/src/code_assist/experiments/experiments.js.map +1 -0
  187. package/dist/src/code_assist/experiments/flagNames.d.ts +16 -0
  188. package/dist/src/code_assist/experiments/flagNames.js +16 -0
  189. package/dist/src/code_assist/experiments/flagNames.js.map +1 -0
  190. package/dist/src/code_assist/experiments/types.d.ts +35 -0
  191. package/dist/src/code_assist/experiments/types.js +7 -0
  192. package/dist/src/code_assist/experiments/types.js.map +1 -0
  193. package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
  194. package/dist/src/code_assist/oauth-credential-storage.js +109 -0
  195. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
  196. package/dist/src/code_assist/oauth2.d.ts +25 -0
  197. package/dist/src/code_assist/oauth2.js +579 -0
  198. package/dist/src/code_assist/oauth2.js.map +1 -0
  199. package/dist/src/code_assist/server.d.ts +50 -0
  200. package/dist/src/code_assist/server.js +228 -0
  201. package/dist/src/code_assist/server.js.map +1 -0
  202. package/dist/src/code_assist/setup.d.ts +46 -0
  203. package/dist/src/code_assist/setup.js +179 -0
  204. package/dist/src/code_assist/setup.js.map +1 -0
  205. package/dist/src/code_assist/telemetry.d.ts +14 -0
  206. package/dist/src/code_assist/telemetry.js +157 -0
  207. package/dist/src/code_assist/telemetry.js.map +1 -0
  208. package/dist/src/code_assist/types.d.ts +306 -0
  209. package/dist/src/code_assist/types.js +94 -0
  210. package/dist/src/code_assist/types.js.map +1 -0
  211. package/dist/src/cognitive/gemini-adapter.d.ts +29 -0
  212. package/dist/src/cognitive/gemini-adapter.js +109 -0
  213. package/dist/src/cognitive/gemini-adapter.js.map +1 -0
  214. package/dist/src/cognitive/index.d.ts +22 -0
  215. package/dist/src/cognitive/index.js +50 -0
  216. package/dist/src/cognitive/index.js.map +1 -0
  217. package/dist/src/cognitive/integration.d.ts +57 -0
  218. package/dist/src/cognitive/integration.js +103 -0
  219. package/dist/src/cognitive/integration.js.map +1 -0
  220. package/dist/src/cognitive/loader/index.d.ts +8 -0
  221. package/dist/src/cognitive/loader/index.js +9 -0
  222. package/dist/src/cognitive/loader/index.js.map +1 -0
  223. package/dist/src/cognitive/loader/module-loader.d.ts +67 -0
  224. package/dist/src/cognitive/loader/module-loader.js +369 -0
  225. package/dist/src/cognitive/loader/module-loader.js.map +1 -0
  226. package/dist/src/cognitive/runtime/envelope.d.ts +31 -0
  227. package/dist/src/cognitive/runtime/envelope.js +167 -0
  228. package/dist/src/cognitive/runtime/envelope.js.map +1 -0
  229. package/dist/src/cognitive/runtime/executor.d.ts +65 -0
  230. package/dist/src/cognitive/runtime/executor.js +245 -0
  231. package/dist/src/cognitive/runtime/executor.js.map +1 -0
  232. package/dist/src/cognitive/runtime/index.d.ts +12 -0
  233. package/dist/src/cognitive/runtime/index.js +18 -0
  234. package/dist/src/cognitive/runtime/index.js.map +1 -0
  235. package/dist/src/cognitive/runtime/prompt-builder.d.ts +34 -0
  236. package/dist/src/cognitive/runtime/prompt-builder.js +216 -0
  237. package/dist/src/cognitive/runtime/prompt-builder.js.map +1 -0
  238. package/dist/src/cognitive/runtime/repair-pass.d.ts +43 -0
  239. package/dist/src/cognitive/runtime/repair-pass.js +170 -0
  240. package/dist/src/cognitive/runtime/repair-pass.js.map +1 -0
  241. package/dist/src/cognitive/runtime/risk-aggregator.d.ts +39 -0
  242. package/dist/src/cognitive/runtime/risk-aggregator.js +90 -0
  243. package/dist/src/cognitive/runtime/risk-aggregator.js.map +1 -0
  244. package/dist/src/cognitive/tool/cognitive-registry.d.ts +99 -0
  245. package/dist/src/cognitive/tool/cognitive-registry.js +192 -0
  246. package/dist/src/cognitive/tool/cognitive-registry.js.map +1 -0
  247. package/dist/src/cognitive/tool/cognitive-tool.d.ts +56 -0
  248. package/dist/src/cognitive/tool/cognitive-tool.js +217 -0
  249. package/dist/src/cognitive/tool/cognitive-tool.js.map +1 -0
  250. package/dist/src/cognitive/tool/index.d.ts +9 -0
  251. package/dist/src/cognitive/tool/index.js +10 -0
  252. package/dist/src/cognitive/tool/index.js.map +1 -0
  253. package/dist/src/cognitive/types.d.ts +234 -0
  254. package/dist/src/cognitive/types.js +10 -0
  255. package/dist/src/cognitive/types.js.map +1 -0
  256. package/dist/src/cognitive/validator/envelope-validator.d.ts +45 -0
  257. package/dist/src/cognitive/validator/envelope-validator.js +214 -0
  258. package/dist/src/cognitive/validator/envelope-validator.js.map +1 -0
  259. package/dist/src/cognitive/validator/index.d.ts +9 -0
  260. package/dist/src/cognitive/validator/index.js +10 -0
  261. package/dist/src/cognitive/validator/index.js.map +1 -0
  262. package/dist/src/cognitive/validator/schema-validator.d.ts +46 -0
  263. package/dist/src/cognitive/validator/schema-validator.js +202 -0
  264. package/dist/src/cognitive/validator/schema-validator.js.map +1 -0
  265. package/dist/src/commands/cognitive.d.ts +39 -0
  266. package/dist/src/commands/cognitive.js +335 -0
  267. package/dist/src/commands/cognitive.js.map +1 -0
  268. package/dist/src/commands/extensions.d.ts +7 -0
  269. package/dist/src/commands/extensions.js +9 -0
  270. package/dist/src/commands/extensions.js.map +1 -0
  271. package/dist/src/commands/init.d.ts +7 -0
  272. package/dist/src/commands/init.js +53 -0
  273. package/dist/src/commands/init.js.map +1 -0
  274. package/dist/src/commands/memory.d.ts +11 -0
  275. package/dist/src/commands/memory.js +80 -0
  276. package/dist/src/commands/memory.js.map +1 -0
  277. package/dist/src/commands/restore.d.ts +9 -0
  278. package/dist/src/commands/restore.js +46 -0
  279. package/dist/src/commands/restore.js.map +1 -0
  280. package/dist/src/commands/types.d.ts +41 -0
  281. package/dist/src/commands/types.js +7 -0
  282. package/dist/src/commands/types.js.map +1 -0
  283. package/dist/src/config/config.d.ts +766 -0
  284. package/dist/src/config/config.js +1625 -0
  285. package/dist/src/config/config.js.map +1 -0
  286. package/dist/src/config/constants.d.ts +15 -0
  287. package/dist/src/config/constants.js +24 -0
  288. package/dist/src/config/constants.js.map +1 -0
  289. package/dist/src/config/defaultModelConfigs.d.ts +7 -0
  290. package/dist/src/config/defaultModelConfigs.js +231 -0
  291. package/dist/src/config/defaultModelConfigs.js.map +1 -0
  292. package/dist/src/config/models.d.ts +67 -0
  293. package/dist/src/config/models.js +144 -0
  294. package/dist/src/config/models.js.map +1 -0
  295. package/dist/src/config/storage.d.ts +44 -0
  296. package/dist/src/config/storage.js +139 -0
  297. package/dist/src/config/storage.js.map +1 -0
  298. package/dist/src/confirmation-bus/index.d.ts +7 -0
  299. package/dist/src/confirmation-bus/index.js +8 -0
  300. package/dist/src/confirmation-bus/index.js.map +1 -0
  301. package/dist/src/confirmation-bus/message-bus.d.ts +24 -0
  302. package/dist/src/confirmation-bus/message-bus.js +120 -0
  303. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  304. package/dist/src/confirmation-bus/types.d.ts +147 -0
  305. package/dist/src/confirmation-bus/types.js +25 -0
  306. package/dist/src/confirmation-bus/types.js.map +1 -0
  307. package/dist/src/core/apiKeyCredentialStorage.d.ts +17 -0
  308. package/dist/src/core/apiKeyCredentialStorage.js +64 -0
  309. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -0
  310. package/dist/src/core/baseLlmClient.d.ts +74 -0
  311. package/dist/src/core/baseLlmClient.js +167 -0
  312. package/dist/src/core/baseLlmClient.js.map +1 -0
  313. package/dist/src/core/client.d.ts +59 -0
  314. package/dist/src/core/client.js +716 -0
  315. package/dist/src/core/client.js.map +1 -0
  316. package/dist/src/core/contentGenerator.d.ts +34 -0
  317. package/dist/src/core/contentGenerator.js +107 -0
  318. package/dist/src/core/contentGenerator.js.map +1 -0
  319. package/dist/src/core/coreToolHookTriggers.d.ts +23 -0
  320. package/dist/src/core/coreToolHookTriggers.js +195 -0
  321. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  322. package/dist/src/core/coreToolScheduler.d.ts +50 -0
  323. package/dist/src/core/coreToolScheduler.js +703 -0
  324. package/dist/src/core/coreToolScheduler.js.map +1 -0
  325. package/dist/src/core/fakeContentGenerator.d.ts +34 -0
  326. package/dist/src/core/fakeContentGenerator.js +59 -0
  327. package/dist/src/core/fakeContentGenerator.js.map +1 -0
  328. package/dist/src/core/geminiChat.d.ts +160 -0
  329. package/dist/src/core/geminiChat.js +744 -0
  330. package/dist/src/core/geminiChat.js.map +1 -0
  331. package/dist/src/core/geminiRequest.d.ts +13 -0
  332. package/dist/src/core/geminiRequest.js +11 -0
  333. package/dist/src/core/geminiRequest.js.map +1 -0
  334. package/dist/src/core/logger.d.ts +65 -0
  335. package/dist/src/core/logger.js +368 -0
  336. package/dist/src/core/logger.js.map +1 -0
  337. package/dist/src/core/loggingContentGenerator.d.ts +29 -0
  338. package/dist/src/core/loggingContentGenerator.js +202 -0
  339. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  340. package/dist/src/core/prompts.d.ts +19 -0
  341. package/dist/src/core/prompts.js +27 -0
  342. package/dist/src/core/prompts.js.map +1 -0
  343. package/dist/src/core/recordingContentGenerator.d.ts +19 -0
  344. package/dist/src/core/recordingContentGenerator.js +82 -0
  345. package/dist/src/core/recordingContentGenerator.js.map +1 -0
  346. package/dist/src/core/tokenLimits.d.ts +10 -0
  347. package/dist/src/core/tokenLimits.js +22 -0
  348. package/dist/src/core/tokenLimits.js.map +1 -0
  349. package/dist/src/core/turn.d.ts +167 -0
  350. package/dist/src/core/turn.js +209 -0
  351. package/dist/src/core/turn.js.map +1 -0
  352. package/dist/src/fallback/handler.d.ts +7 -0
  353. package/dist/src/fallback/handler.js +110 -0
  354. package/dist/src/fallback/handler.js.map +1 -0
  355. package/dist/src/fallback/types.d.ts +31 -0
  356. package/dist/src/fallback/types.js +7 -0
  357. package/dist/src/fallback/types.js.map +1 -0
  358. package/dist/src/generated/git-commit.d.ts +7 -0
  359. package/dist/src/generated/git-commit.js +10 -0
  360. package/dist/src/generated/git-commit.js.map +1 -0
  361. package/dist/src/hooks/hookAggregator.d.ts +68 -0
  362. package/dist/src/hooks/hookAggregator.js +279 -0
  363. package/dist/src/hooks/hookAggregator.js.map +1 -0
  364. package/dist/src/hooks/hookEventHandler.d.ts +107 -0
  365. package/dist/src/hooks/hookEventHandler.js +325 -0
  366. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  367. package/dist/src/hooks/hookPlanner.d.ts +42 -0
  368. package/dist/src/hooks/hookPlanner.js +103 -0
  369. package/dist/src/hooks/hookPlanner.js.map +1 -0
  370. package/dist/src/hooks/hookRegistry.d.ts +75 -0
  371. package/dist/src/hooks/hookRegistry.js +215 -0
  372. package/dist/src/hooks/hookRegistry.js.map +1 -0
  373. package/dist/src/hooks/hookRunner.d.ts +44 -0
  374. package/dist/src/hooks/hookRunner.js +329 -0
  375. package/dist/src/hooks/hookRunner.js.map +1 -0
  376. package/dist/src/hooks/hookSystem.d.ts +99 -0
  377. package/dist/src/hooks/hookSystem.js +262 -0
  378. package/dist/src/hooks/hookSystem.js.map +1 -0
  379. package/dist/src/hooks/hookTranslator.d.ts +113 -0
  380. package/dist/src/hooks/hookTranslator.js +233 -0
  381. package/dist/src/hooks/hookTranslator.js.map +1 -0
  382. package/dist/src/hooks/index.d.ts +16 -0
  383. package/dist/src/hooks/index.js +16 -0
  384. package/dist/src/hooks/index.js.map +1 -0
  385. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  386. package/dist/src/hooks/trustedHooks.js +90 -0
  387. package/dist/src/hooks/trustedHooks.js.map +1 -0
  388. package/dist/src/hooks/types.d.ts +442 -0
  389. package/dist/src/hooks/types.js +303 -0
  390. package/dist/src/hooks/types.js.map +1 -0
  391. package/dist/src/ide/constants.d.ts +9 -0
  392. package/dist/src/ide/constants.js +10 -0
  393. package/dist/src/ide/constants.js.map +1 -0
  394. package/dist/src/ide/detect-ide.d.ts +109 -0
  395. package/dist/src/ide/detect-ide.js +125 -0
  396. package/dist/src/ide/detect-ide.js.map +1 -0
  397. package/dist/src/ide/ide-client.d.ts +113 -0
  398. package/dist/src/ide/ide-client.js +669 -0
  399. package/dist/src/ide/ide-client.js.map +1 -0
  400. package/dist/src/ide/ide-installer.d.ts +14 -0
  401. package/dist/src/ide/ide-installer.js +227 -0
  402. package/dist/src/ide/ide-installer.js.map +1 -0
  403. package/dist/src/ide/ideContext.d.ts +44 -0
  404. package/dist/src/ide/ideContext.js +101 -0
  405. package/dist/src/ide/ideContext.js.map +1 -0
  406. package/dist/src/ide/process-utils.d.ts +21 -0
  407. package/dist/src/ide/process-utils.js +181 -0
  408. package/dist/src/ide/process-utils.js.map +1 -0
  409. package/dist/src/ide/types.d.ts +486 -0
  410. package/dist/src/ide/types.js +138 -0
  411. package/dist/src/ide/types.js.map +1 -0
  412. package/dist/src/index.d.ts +145 -0
  413. package/dist/src/index.js +161 -0
  414. package/dist/src/index.js.map +1 -0
  415. package/dist/src/mcp/auth-provider.d.ts +16 -0
  416. package/dist/src/mcp/auth-provider.js +7 -0
  417. package/dist/src/mcp/auth-provider.js.map +1 -0
  418. package/dist/src/mcp/google-auth-provider.d.ts +33 -0
  419. package/dist/src/mcp/google-auth-provider.js +118 -0
  420. package/dist/src/mcp/google-auth-provider.js.map +1 -0
  421. package/dist/src/mcp/oauth-provider.d.ts +160 -0
  422. package/dist/src/mcp/oauth-provider.js +729 -0
  423. package/dist/src/mcp/oauth-provider.js.map +1 -0
  424. package/dist/src/mcp/oauth-token-storage.d.ts +65 -0
  425. package/dist/src/mcp/oauth-token-storage.js +181 -0
  426. package/dist/src/mcp/oauth-token-storage.js.map +1 -0
  427. package/dist/src/mcp/oauth-utils.d.ts +142 -0
  428. package/dist/src/mcp/oauth-utils.js +289 -0
  429. package/dist/src/mcp/oauth-utils.js.map +1 -0
  430. package/dist/src/mcp/sa-impersonation-provider.d.ts +27 -0
  431. package/dist/src/mcp/sa-impersonation-provider.js +113 -0
  432. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  433. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  434. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  435. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  436. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  437. package/dist/src/mcp/token-storage/file-token-storage.js +145 -0
  438. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  439. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  440. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  441. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  442. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  443. package/dist/src/mcp/token-storage/index.js +12 -0
  444. package/dist/src/mcp/token-storage/index.js.map +1 -0
  445. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +35 -0
  446. package/dist/src/mcp/token-storage/keychain-token-storage.js +246 -0
  447. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  448. package/dist/src/mcp/token-storage/types.d.ts +44 -0
  449. package/dist/src/mcp/token-storage/types.js +11 -0
  450. package/dist/src/mcp/token-storage/types.js.map +1 -0
  451. package/dist/src/mocks/msw.d.ts +6 -0
  452. package/dist/src/mocks/msw.js +8 -0
  453. package/dist/src/mocks/msw.js.map +1 -0
  454. package/dist/src/output/json-formatter.d.ts +11 -0
  455. package/dist/src/output/json-formatter.js +33 -0
  456. package/dist/src/output/json-formatter.js.map +1 -0
  457. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  458. package/dist/src/output/stream-json-formatter.js +58 -0
  459. package/dist/src/output/stream-json-formatter.js.map +1 -0
  460. package/dist/src/output/types.d.ts +85 -0
  461. package/dist/src/output/types.js +22 -0
  462. package/dist/src/output/types.js.map +1 -0
  463. package/dist/src/policy/config.d.ts +31 -0
  464. package/dist/src/policy/config.js +355 -0
  465. package/dist/src/policy/config.js.map +1 -0
  466. package/dist/src/policy/index.d.ts +9 -0
  467. package/dist/src/policy/index.js +10 -0
  468. package/dist/src/policy/index.js.map +1 -0
  469. package/dist/src/policy/policies/discovered.toml +8 -0
  470. package/dist/src/policy/policies/plan.toml +79 -0
  471. package/dist/src/policy/policies/read-only.toml +51 -0
  472. package/dist/src/policy/policies/write.toml +78 -0
  473. package/dist/src/policy/policies/yolo.toml +32 -0
  474. package/dist/src/policy/policy-engine.d.ts +65 -0
  475. package/dist/src/policy/policy-engine.js +357 -0
  476. package/dist/src/policy/policy-engine.js.map +1 -0
  477. package/dist/src/policy/stable-stringify.d.ts +58 -0
  478. package/dist/src/policy/stable-stringify.js +122 -0
  479. package/dist/src/policy/stable-stringify.js.map +1 -0
  480. package/dist/src/policy/toml-loader.d.ts +45 -0
  481. package/dist/src/policy/toml-loader.js +366 -0
  482. package/dist/src/policy/toml-loader.js.map +1 -0
  483. package/dist/src/policy/types.d.ts +220 -0
  484. package/dist/src/policy/types.js +44 -0
  485. package/dist/src/policy/types.js.map +1 -0
  486. package/dist/src/policy/utils.d.ts +21 -0
  487. package/dist/src/policy/utils.js +45 -0
  488. package/dist/src/policy/utils.js.map +1 -0
  489. package/dist/src/prompts/mcp-prompts.d.ts +8 -0
  490. package/dist/src/prompts/mcp-prompts.js +13 -0
  491. package/dist/src/prompts/mcp-prompts.js.map +1 -0
  492. package/dist/src/prompts/prompt-registry.d.ts +34 -0
  493. package/dist/src/prompts/prompt-registry.js +64 -0
  494. package/dist/src/prompts/prompt-registry.js.map +1 -0
  495. package/dist/src/prompts/promptProvider.d.ts +18 -0
  496. package/dist/src/prompts/promptProvider.js +129 -0
  497. package/dist/src/prompts/promptProvider.js.map +1 -0
  498. package/dist/src/prompts/snippets.d.ts +76 -0
  499. package/dist/src/prompts/snippets.js +455 -0
  500. package/dist/src/prompts/snippets.js.map +1 -0
  501. package/dist/src/prompts/utils.d.ts +23 -0
  502. package/dist/src/prompts/utils.js +72 -0
  503. package/dist/src/prompts/utils.js.map +1 -0
  504. package/dist/src/resources/resource-registry.d.ts +30 -0
  505. package/dist/src/resources/resource-registry.js +57 -0
  506. package/dist/src/resources/resource-registry.js.map +1 -0
  507. package/dist/src/routing/modelRouterService.d.ts +23 -0
  508. package/dist/src/routing/modelRouterService.js +80 -0
  509. package/dist/src/routing/modelRouterService.js.map +1 -0
  510. package/dist/src/routing/routingStrategy.d.ts +64 -0
  511. package/dist/src/routing/routingStrategy.js +7 -0
  512. package/dist/src/routing/routingStrategy.js.map +1 -0
  513. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  514. package/dist/src/routing/strategies/classifierStrategy.js +152 -0
  515. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  516. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  517. package/dist/src/routing/strategies/compositeStrategy.js +70 -0
  518. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  519. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  520. package/dist/src/routing/strategies/defaultStrategy.js +21 -0
  521. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  522. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  523. package/dist/src/routing/strategies/fallbackStrategy.js +33 -0
  524. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  525. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
  526. package/dist/src/routing/strategies/numericalClassifierStrategy.js +178 -0
  527. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
  528. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  529. package/dist/src/routing/strategies/overrideStrategy.js +29 -0
  530. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  531. package/dist/src/safety/built-in.d.ts +21 -0
  532. package/dist/src/safety/built-in.js +106 -0
  533. package/dist/src/safety/built-in.js.map +1 -0
  534. package/dist/src/safety/checker-runner.d.ts +48 -0
  535. package/dist/src/safety/checker-runner.js +219 -0
  536. package/dist/src/safety/checker-runner.js.map +1 -0
  537. package/dist/src/safety/context-builder.d.ts +23 -0
  538. package/dist/src/safety/context-builder.js +47 -0
  539. package/dist/src/safety/context-builder.js.map +1 -0
  540. package/dist/src/safety/protocol.d.ts +88 -0
  541. package/dist/src/safety/protocol.js +15 -0
  542. package/dist/src/safety/protocol.js.map +1 -0
  543. package/dist/src/safety/registry.d.ts +26 -0
  544. package/dist/src/safety/registry.js +65 -0
  545. package/dist/src/safety/registry.js.map +1 -0
  546. package/dist/src/scheduler/confirmation.d.ts +49 -0
  547. package/dist/src/scheduler/confirmation.js +183 -0
  548. package/dist/src/scheduler/confirmation.js.map +1 -0
  549. package/dist/src/scheduler/policy.d.ts +25 -0
  550. package/dist/src/scheduler/policy.js +108 -0
  551. package/dist/src/scheduler/policy.js.map +1 -0
  552. package/dist/src/scheduler/scheduler.d.ts +61 -0
  553. package/dist/src/scheduler/scheduler.js +356 -0
  554. package/dist/src/scheduler/scheduler.js.map +1 -0
  555. package/dist/src/scheduler/state-manager.d.ts +73 -0
  556. package/dist/src/scheduler/state-manager.js +356 -0
  557. package/dist/src/scheduler/state-manager.js.map +1 -0
  558. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  559. package/dist/src/scheduler/tool-executor.js +201 -0
  560. package/dist/src/scheduler/tool-executor.js.map +1 -0
  561. package/dist/src/scheduler/tool-modifier.d.ts +23 -0
  562. package/dist/src/scheduler/tool-modifier.js +50 -0
  563. package/dist/src/scheduler/tool-modifier.js.map +1 -0
  564. package/dist/src/scheduler/types.d.ts +118 -0
  565. package/dist/src/scheduler/types.js +7 -0
  566. package/dist/src/scheduler/types.js.map +1 -0
  567. package/dist/src/services/chatCompressionService.d.ts +41 -0
  568. package/dist/src/services/chatCompressionService.js +339 -0
  569. package/dist/src/services/chatCompressionService.js.map +1 -0
  570. package/dist/src/services/chatRecordingService.d.ts +174 -0
  571. package/dist/src/services/chatRecordingService.js +427 -0
  572. package/dist/src/services/chatRecordingService.js.map +1 -0
  573. package/dist/src/services/contextManager.d.ts +29 -0
  574. package/dist/src/services/contextManager.js +71 -0
  575. package/dist/src/services/contextManager.js.map +1 -0
  576. package/dist/src/services/environmentSanitization.d.ts +15 -0
  577. package/dist/src/services/environmentSanitization.js +145 -0
  578. package/dist/src/services/environmentSanitization.js.map +1 -0
  579. package/dist/src/services/fileDiscoveryService.d.ts +45 -0
  580. package/dist/src/services/fileDiscoveryService.js +141 -0
  581. package/dist/src/services/fileDiscoveryService.js.map +1 -0
  582. package/dist/src/services/fileSystemService.d.ts +31 -0
  583. package/dist/src/services/fileSystemService.js +18 -0
  584. package/dist/src/services/fileSystemService.js.map +1 -0
  585. package/dist/src/services/gitService.d.ts +24 -0
  586. package/dist/src/services/gitService.js +132 -0
  587. package/dist/src/services/gitService.js.map +1 -0
  588. package/dist/src/services/loopDetectionService.d.ts +106 -0
  589. package/dist/src/services/loopDetectionService.js +433 -0
  590. package/dist/src/services/loopDetectionService.js.map +1 -0
  591. package/dist/src/services/modelConfigService.d.ts +86 -0
  592. package/dist/src/services/modelConfigService.js +215 -0
  593. package/dist/src/services/modelConfigService.js.map +1 -0
  594. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  595. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  596. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  597. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  598. package/dist/src/services/sessionSummaryService.js +131 -0
  599. package/dist/src/services/sessionSummaryService.js.map +1 -0
  600. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  601. package/dist/src/services/sessionSummaryUtils.js +129 -0
  602. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  603. package/dist/src/services/shellExecutionService.d.ts +145 -0
  604. package/dist/src/services/shellExecutionService.js +871 -0
  605. package/dist/src/services/shellExecutionService.js.map +1 -0
  606. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  607. package/dist/src/services/test-data/resolved-aliases.golden.json +238 -0
  608. package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
  609. package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +235 -0
  610. package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +102 -0
  611. package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +127 -0
  612. package/dist/src/skills/skillLoader.d.ts +31 -0
  613. package/dist/src/skills/skillLoader.js +133 -0
  614. package/dist/src/skills/skillLoader.js.map +1 -0
  615. package/dist/src/skills/skillManager.d.ts +69 -0
  616. package/dist/src/skills/skillManager.js +138 -0
  617. package/dist/src/skills/skillManager.js.map +1 -0
  618. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  619. package/dist/src/telemetry/activity-detector.js +61 -0
  620. package/dist/src/telemetry/activity-detector.js.map +1 -0
  621. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  622. package/dist/src/telemetry/activity-monitor.js +209 -0
  623. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  624. package/dist/src/telemetry/activity-types.d.ts +19 -0
  625. package/dist/src/telemetry/activity-types.js +21 -0
  626. package/dist/src/telemetry/activity-types.js.map +1 -0
  627. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +172 -0
  628. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +1316 -0
  629. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
  630. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +150 -0
  631. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +377 -0
  632. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
  633. package/dist/src/telemetry/config.d.ts +31 -0
  634. package/dist/src/telemetry/config.js +78 -0
  635. package/dist/src/telemetry/config.js.map +1 -0
  636. package/dist/src/telemetry/constants.d.ts +6 -0
  637. package/dist/src/telemetry/constants.js +7 -0
  638. package/dist/src/telemetry/constants.js.map +1 -0
  639. package/dist/src/telemetry/file-exporters.d.ts +29 -0
  640. package/dist/src/telemetry/file-exporters.js +62 -0
  641. package/dist/src/telemetry/file-exporters.js.map +1 -0
  642. package/dist/src/telemetry/gcp-exporters.d.ts +35 -0
  643. package/dist/src/telemetry/gcp-exporters.js +120 -0
  644. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  645. package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
  646. package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
  647. package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
  648. package/dist/src/telemetry/index.d.ts +33 -0
  649. package/dist/src/telemetry/index.js +44 -0
  650. package/dist/src/telemetry/index.js.map +1 -0
  651. package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
  652. package/dist/src/telemetry/integration.test.circular.js +54 -0
  653. package/dist/src/telemetry/integration.test.circular.js.map +1 -0
  654. package/dist/src/telemetry/loggers.d.ts +46 -0
  655. package/dist/src/telemetry/loggers.js +517 -0
  656. package/dist/src/telemetry/loggers.js.map +1 -0
  657. package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
  658. package/dist/src/telemetry/loggers.test.circular.js +107 -0
  659. package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
  660. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  661. package/dist/src/telemetry/memory-monitor.js +335 -0
  662. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  663. package/dist/src/telemetry/metrics.d.ts +533 -0
  664. package/dist/src/telemetry/metrics.js +852 -0
  665. package/dist/src/telemetry/metrics.js.map +1 -0
  666. package/dist/src/telemetry/rate-limiter.d.ts +48 -0
  667. package/dist/src/telemetry/rate-limiter.js +100 -0
  668. package/dist/src/telemetry/rate-limiter.js.map +1 -0
  669. package/dist/src/telemetry/sanitize.d.ts +25 -0
  670. package/dist/src/telemetry/sanitize.js +48 -0
  671. package/dist/src/telemetry/sanitize.js.map +1 -0
  672. package/dist/src/telemetry/sdk.d.ts +16 -0
  673. package/dist/src/telemetry/sdk.js +307 -0
  674. package/dist/src/telemetry/sdk.js.map +1 -0
  675. package/dist/src/telemetry/semantic.d.ts +82 -0
  676. package/dist/src/telemetry/semantic.js +357 -0
  677. package/dist/src/telemetry/semantic.js.map +1 -0
  678. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  679. package/dist/src/telemetry/startupProfiler.js +170 -0
  680. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  681. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  682. package/dist/src/telemetry/telemetry-utils.js +14 -0
  683. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  684. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  685. package/dist/src/telemetry/telemetryAttributes.js +19 -0
  686. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  687. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  688. package/dist/src/telemetry/tool-call-decision.js +29 -0
  689. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  690. package/dist/src/telemetry/trace.d.ts +46 -0
  691. package/dist/src/telemetry/trace.js +121 -0
  692. package/dist/src/telemetry/trace.js.map +1 -0
  693. package/dist/src/telemetry/types.d.ts +566 -0
  694. package/dist/src/telemetry/types.js +1495 -0
  695. package/dist/src/telemetry/types.js.map +1 -0
  696. package/dist/src/telemetry/uiTelemetry.d.ts +76 -0
  697. package/dist/src/telemetry/uiTelemetry.js +154 -0
  698. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  699. package/dist/src/test-utils/config.d.ts +17 -0
  700. package/dist/src/test-utils/config.js +32 -0
  701. package/dist/src/test-utils/config.js.map +1 -0
  702. package/dist/src/test-utils/index.d.ts +6 -0
  703. package/dist/src/test-utils/index.js +7 -0
  704. package/dist/src/test-utils/index.js.map +1 -0
  705. package/dist/src/test-utils/mock-message-bus.d.ts +43 -0
  706. package/dist/src/test-utils/mock-message-bus.js +96 -0
  707. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  708. package/dist/src/test-utils/mock-tool.d.ts +69 -0
  709. package/dist/src/test-utils/mock-tool.js +123 -0
  710. package/dist/src/test-utils/mock-tool.js.map +1 -0
  711. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  712. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  713. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  714. package/dist/src/tools/activate-skill.d.ts +27 -0
  715. package/dist/src/tools/activate-skill.js +133 -0
  716. package/dist/src/tools/activate-skill.js.map +1 -0
  717. package/dist/src/tools/ask-user.d.ts +23 -0
  718. package/dist/src/tools/ask-user.js +155 -0
  719. package/dist/src/tools/ask-user.js.map +1 -0
  720. package/dist/src/tools/constants.d.ts +7 -0
  721. package/dist/src/tools/constants.js +8 -0
  722. package/dist/src/tools/constants.js.map +1 -0
  723. package/dist/src/tools/diffOptions.d.ts +9 -0
  724. package/dist/src/tools/diffOptions.js +50 -0
  725. package/dist/src/tools/diffOptions.js.map +1 -0
  726. package/dist/src/tools/edit.d.ts +79 -0
  727. package/dist/src/tools/edit.js +750 -0
  728. package/dist/src/tools/edit.js.map +1 -0
  729. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  730. package/dist/src/tools/get-internal-docs.js +122 -0
  731. package/dist/src/tools/get-internal-docs.js.map +1 -0
  732. package/dist/src/tools/glob.d.ts +57 -0
  733. package/dist/src/tools/glob.js +240 -0
  734. package/dist/src/tools/glob.js.map +1 -0
  735. package/dist/src/tools/grep.d.ts +41 -0
  736. package/dist/src/tools/grep.js +505 -0
  737. package/dist/src/tools/grep.js.map +1 -0
  738. package/dist/src/tools/ls.d.ts +69 -0
  739. package/dist/src/tools/ls.js +214 -0
  740. package/dist/src/tools/ls.js.map +1 -0
  741. package/dist/src/tools/mcp-client-manager.d.ts +93 -0
  742. package/dist/src/tools/mcp-client-manager.js +338 -0
  743. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  744. package/dist/src/tools/mcp-client.d.ts +243 -0
  745. package/dist/src/tools/mcp-client.js +1351 -0
  746. package/dist/src/tools/mcp-client.js.map +1 -0
  747. package/dist/src/tools/mcp-tool.d.ts +49 -0
  748. package/dist/src/tools/mcp-tool.js +300 -0
  749. package/dist/src/tools/mcp-tool.js.map +1 -0
  750. package/dist/src/tools/memoryTool.d.ts +42 -0
  751. package/dist/src/tools/memoryTool.js +269 -0
  752. package/dist/src/tools/memoryTool.js.map +1 -0
  753. package/dist/src/tools/modifiable-tool.d.ts +36 -0
  754. package/dist/src/tools/modifiable-tool.js +110 -0
  755. package/dist/src/tools/modifiable-tool.js.map +1 -0
  756. package/dist/src/tools/read-file.d.ts +37 -0
  757. package/dist/src/tools/read-file.js +141 -0
  758. package/dist/src/tools/read-file.js.map +1 -0
  759. package/dist/src/tools/read-many-files.d.ts +54 -0
  760. package/dist/src/tools/read-many-files.js +364 -0
  761. package/dist/src/tools/read-many-files.js.map +1 -0
  762. package/dist/src/tools/ripGrep.d.ts +74 -0
  763. package/dist/src/tools/ripGrep.js +422 -0
  764. package/dist/src/tools/ripGrep.js.map +1 -0
  765. package/dist/src/tools/shell.d.ts +33 -0
  766. package/dist/src/tools/shell.js +436 -0
  767. package/dist/src/tools/shell.js.map +1 -0
  768. package/dist/src/tools/tool-error.d.ts +70 -0
  769. package/dist/src/tools/tool-error.js +92 -0
  770. package/dist/src/tools/tool-error.js.map +1 -0
  771. package/dist/src/tools/tool-names.d.ts +41 -0
  772. package/dist/src/tools/tool-names.js +94 -0
  773. package/dist/src/tools/tool-names.js.map +1 -0
  774. package/dist/src/tools/tool-registry.d.ts +103 -0
  775. package/dist/src/tools/tool-registry.js +429 -0
  776. package/dist/src/tools/tool-registry.js.map +1 -0
  777. package/dist/src/tools/tools.d.ts +347 -0
  778. package/dist/src/tools/tools.js +405 -0
  779. package/dist/src/tools/tools.js.map +1 -0
  780. package/dist/src/tools/web-fetch.d.ts +35 -0
  781. package/dist/src/tools/web-fetch.js +299 -0
  782. package/dist/src/tools/web-fetch.js.map +1 -0
  783. package/dist/src/tools/web-search.d.ts +50 -0
  784. package/dist/src/tools/web-search.js +141 -0
  785. package/dist/src/tools/web-search.js.map +1 -0
  786. package/dist/src/tools/write-file.d.ts +53 -0
  787. package/dist/src/tools/write-file.js +341 -0
  788. package/dist/src/tools/write-file.js.map +1 -0
  789. package/dist/src/tools/write-todos.d.ts +50 -0
  790. package/dist/src/tools/write-todos.js +194 -0
  791. package/dist/src/tools/write-todos.js.map +1 -0
  792. package/dist/src/utils/apiConversionUtils.d.ts +12 -0
  793. package/dist/src/utils/apiConversionUtils.js +46 -0
  794. package/dist/src/utils/apiConversionUtils.js.map +1 -0
  795. package/dist/src/utils/bfsFileSearch.d.ts +32 -0
  796. package/dist/src/utils/bfsFileSearch.js +136 -0
  797. package/dist/src/utils/bfsFileSearch.js.map +1 -0
  798. package/dist/src/utils/browser.d.ts +13 -0
  799. package/dist/src/utils/browser.js +50 -0
  800. package/dist/src/utils/browser.js.map +1 -0
  801. package/dist/src/utils/channel.d.ts +19 -0
  802. package/dist/src/utils/channel.js +49 -0
  803. package/dist/src/utils/channel.js.map +1 -0
  804. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  805. package/dist/src/utils/checkpointUtils.js +117 -0
  806. package/dist/src/utils/checkpointUtils.js.map +1 -0
  807. package/dist/src/utils/constants.d.ts +7 -0
  808. package/dist/src/utils/constants.js +8 -0
  809. package/dist/src/utils/constants.js.map +1 -0
  810. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  811. package/dist/src/utils/customHeaderUtils.js +34 -0
  812. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  813. package/dist/src/utils/debugLogger.d.ts +28 -0
  814. package/dist/src/utils/debugLogger.js +61 -0
  815. package/dist/src/utils/debugLogger.js.map +1 -0
  816. package/dist/src/utils/delay.d.ts +16 -0
  817. package/dist/src/utils/delay.js +43 -0
  818. package/dist/src/utils/delay.js.map +1 -0
  819. package/dist/src/utils/editCorrector.d.ts +54 -0
  820. package/dist/src/utils/editCorrector.js +596 -0
  821. package/dist/src/utils/editCorrector.js.map +1 -0
  822. package/dist/src/utils/editor.d.ts +39 -0
  823. package/dist/src/utils/editor.js +219 -0
  824. package/dist/src/utils/editor.js.map +1 -0
  825. package/dist/src/utils/environmentContext.d.ts +23 -0
  826. package/dist/src/utils/environmentContext.js +81 -0
  827. package/dist/src/utils/environmentContext.js.map +1 -0
  828. package/dist/src/utils/errorParsing.d.ts +8 -0
  829. package/dist/src/utils/errorParsing.js +65 -0
  830. package/dist/src/utils/errorParsing.js.map +1 -0
  831. package/dist/src/utils/errorReporting.d.ts +14 -0
  832. package/dist/src/utils/errorReporting.js +89 -0
  833. package/dist/src/utils/errorReporting.js.map +1 -0
  834. package/dist/src/utils/errors.d.ts +53 -0
  835. package/dist/src/utils/errors.js +145 -0
  836. package/dist/src/utils/errors.js.map +1 -0
  837. package/dist/src/utils/events.d.ts +211 -0
  838. package/dist/src/utils/events.js +134 -0
  839. package/dist/src/utils/events.js.map +1 -0
  840. package/dist/src/utils/exitCodes.d.ts +12 -0
  841. package/dist/src/utils/exitCodes.js +13 -0
  842. package/dist/src/utils/exitCodes.js.map +1 -0
  843. package/dist/src/utils/extensionLoader.d.ts +86 -0
  844. package/dist/src/utils/extensionLoader.js +208 -0
  845. package/dist/src/utils/extensionLoader.js.map +1 -0
  846. package/dist/src/utils/fetch.d.ts +12 -0
  847. package/dist/src/utils/fetch.js +55 -0
  848. package/dist/src/utils/fetch.js.map +1 -0
  849. package/dist/src/utils/fileDiffUtils.d.ts +18 -0
  850. package/dist/src/utils/fileDiffUtils.js +37 -0
  851. package/dist/src/utils/fileDiffUtils.js.map +1 -0
  852. package/dist/src/utils/fileUtils.d.ts +86 -0
  853. package/dist/src/utils/fileUtils.js +495 -0
  854. package/dist/src/utils/fileUtils.js.map +1 -0
  855. package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  856. package/dist/src/utils/filesearch/crawlCache.js +57 -0
  857. package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
  858. package/dist/src/utils/filesearch/crawler.d.ts +16 -0
  859. package/dist/src/utils/filesearch/crawler.js +67 -0
  860. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  861. package/dist/src/utils/filesearch/fileSearch.d.ts +39 -0
  862. package/dist/src/utils/filesearch/fileSearch.js +192 -0
  863. package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
  864. package/dist/src/utils/filesearch/ignore.d.ts +37 -0
  865. package/dist/src/utils/filesearch/ignore.js +99 -0
  866. package/dist/src/utils/filesearch/ignore.js.map +1 -0
  867. package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
  868. package/dist/src/utils/filesearch/result-cache.js +59 -0
  869. package/dist/src/utils/filesearch/result-cache.js.map +1 -0
  870. package/dist/src/utils/formatters.d.ts +7 -0
  871. package/dist/src/utils/formatters.js +17 -0
  872. package/dist/src/utils/formatters.js.map +1 -0
  873. package/dist/src/utils/generateContentResponseUtilities.d.ts +15 -0
  874. package/dist/src/utils/generateContentResponseUtilities.js +186 -0
  875. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  876. package/dist/src/utils/getFolderStructure.d.ts +31 -0
  877. package/dist/src/utils/getFolderStructure.js +243 -0
  878. package/dist/src/utils/getFolderStructure.js.map +1 -0
  879. package/dist/src/utils/getPty.d.ts +19 -0
  880. package/dist/src/utils/getPty.js +23 -0
  881. package/dist/src/utils/getPty.js.map +1 -0
  882. package/dist/src/utils/gitIgnoreParser.d.ts +19 -0
  883. package/dist/src/utils/gitIgnoreParser.js +169 -0
  884. package/dist/src/utils/gitIgnoreParser.js.map +1 -0
  885. package/dist/src/utils/gitUtils.d.ts +17 -0
  886. package/dist/src/utils/gitUtils.js +61 -0
  887. package/dist/src/utils/gitUtils.js.map +1 -0
  888. package/dist/src/utils/googleErrors.d.ts +104 -0
  889. package/dist/src/utils/googleErrors.js +165 -0
  890. package/dist/src/utils/googleErrors.js.map +1 -0
  891. package/dist/src/utils/googleQuotaErrors.d.ts +51 -0
  892. package/dist/src/utils/googleQuotaErrors.js +250 -0
  893. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  894. package/dist/src/utils/httpErrors.d.ts +18 -0
  895. package/dist/src/utils/httpErrors.js +36 -0
  896. package/dist/src/utils/httpErrors.js.map +1 -0
  897. package/dist/src/utils/ignoreFileParser.d.ts +30 -0
  898. package/dist/src/utils/ignoreFileParser.js +100 -0
  899. package/dist/src/utils/ignoreFileParser.js.map +1 -0
  900. package/dist/src/utils/ignorePatterns.d.ts +103 -0
  901. package/dist/src/utils/ignorePatterns.js +220 -0
  902. package/dist/src/utils/ignorePatterns.js.map +1 -0
  903. package/dist/src/utils/installationManager.d.ts +16 -0
  904. package/dist/src/utils/installationManager.js +51 -0
  905. package/dist/src/utils/installationManager.js.map +1 -0
  906. package/dist/src/utils/language-detection.d.ts +6 -0
  907. package/dist/src/utils/language-detection.js +101 -0
  908. package/dist/src/utils/language-detection.js.map +1 -0
  909. package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
  910. package/dist/src/utils/llm-edit-fixer.js +152 -0
  911. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  912. package/dist/src/utils/memoryDiscovery.d.ts +40 -0
  913. package/dist/src/utils/memoryDiscovery.js +421 -0
  914. package/dist/src/utils/memoryDiscovery.js.map +1 -0
  915. package/dist/src/utils/memoryImportProcessor.d.ts +42 -0
  916. package/dist/src/utils/memoryImportProcessor.js +273 -0
  917. package/dist/src/utils/memoryImportProcessor.js.map +1 -0
  918. package/dist/src/utils/messageInspectors.d.ts +8 -0
  919. package/dist/src/utils/messageInspectors.js +16 -0
  920. package/dist/src/utils/messageInspectors.js.map +1 -0
  921. package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  922. package/dist/src/utils/nextSpeakerChecker.js +97 -0
  923. package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
  924. package/dist/src/utils/package.d.ts +26 -0
  925. package/dist/src/utils/package.js +35 -0
  926. package/dist/src/utils/package.js.map +1 -0
  927. package/dist/src/utils/partUtils.d.ts +35 -0
  928. package/dist/src/utils/partUtils.js +133 -0
  929. package/dist/src/utils/partUtils.js.map +1 -0
  930. package/dist/src/utils/pathCorrector.d.ts +25 -0
  931. package/dist/src/utils/pathCorrector.js +43 -0
  932. package/dist/src/utils/pathCorrector.js.map +1 -0
  933. package/dist/src/utils/pathReader.d.ts +17 -0
  934. package/dist/src/utils/pathReader.js +92 -0
  935. package/dist/src/utils/pathReader.js.map +1 -0
  936. package/dist/src/utils/paths.d.ts +78 -0
  937. package/dist/src/utils/paths.js +311 -0
  938. package/dist/src/utils/paths.js.map +1 -0
  939. package/dist/src/utils/process-utils.d.ts +32 -0
  940. package/dist/src/utils/process-utils.js +88 -0
  941. package/dist/src/utils/process-utils.js.map +1 -0
  942. package/dist/src/utils/promptIdContext.d.ts +13 -0
  943. package/dist/src/utils/promptIdContext.js +23 -0
  944. package/dist/src/utils/promptIdContext.js.map +1 -0
  945. package/dist/src/utils/quotaErrorDetection.d.ts +16 -0
  946. package/dist/src/utils/quotaErrorDetection.js +19 -0
  947. package/dist/src/utils/quotaErrorDetection.js.map +1 -0
  948. package/dist/src/utils/retry.d.ts +39 -0
  949. package/dist/src/utils/retry.js +267 -0
  950. package/dist/src/utils/retry.js.map +1 -0
  951. package/dist/src/utils/safeJsonStringify.d.ts +13 -0
  952. package/dist/src/utils/safeJsonStringify.js +49 -0
  953. package/dist/src/utils/safeJsonStringify.js.map +1 -0
  954. package/dist/src/utils/schemaValidator.d.ts +21 -0
  955. package/dist/src/utils/schemaValidator.js +59 -0
  956. package/dist/src/utils/schemaValidator.js.map +1 -0
  957. package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
  958. package/dist/src/utils/secure-browser-launcher.js +165 -0
  959. package/dist/src/utils/secure-browser-launcher.js.map +1 -0
  960. package/dist/src/utils/security.d.ts +16 -0
  961. package/dist/src/utils/security.js +88 -0
  962. package/dist/src/utils/security.js.map +1 -0
  963. package/dist/src/utils/session.d.ts +6 -0
  964. package/dist/src/utils/session.js +8 -0
  965. package/dist/src/utils/session.js.map +1 -0
  966. package/dist/src/utils/shell-utils.d.ts +118 -0
  967. package/dist/src/utils/shell-utils.js +708 -0
  968. package/dist/src/utils/shell-utils.js.map +1 -0
  969. package/dist/src/utils/stdio.d.ts +32 -0
  970. package/dist/src/utils/stdio.js +85 -0
  971. package/dist/src/utils/stdio.js.map +1 -0
  972. package/dist/src/utils/summarizer.d.ts +27 -0
  973. package/dist/src/utils/summarizer.js +50 -0
  974. package/dist/src/utils/summarizer.js.map +1 -0
  975. package/dist/src/utils/systemEncoding.d.ts +40 -0
  976. package/dist/src/utils/systemEncoding.js +150 -0
  977. package/dist/src/utils/systemEncoding.js.map +1 -0
  978. package/dist/src/utils/terminal.d.ts +22 -0
  979. package/dist/src/utils/terminal.js +62 -0
  980. package/dist/src/utils/terminal.js.map +1 -0
  981. package/dist/src/utils/terminalSerializer.d.ts +25 -0
  982. package/dist/src/utils/terminalSerializer.js +444 -0
  983. package/dist/src/utils/terminalSerializer.js.map +1 -0
  984. package/dist/src/utils/testUtils.d.ts +29 -0
  985. package/dist/src/utils/testUtils.js +70 -0
  986. package/dist/src/utils/testUtils.js.map +1 -0
  987. package/dist/src/utils/textUtils.d.ts +32 -0
  988. package/dist/src/utils/textUtils.js +65 -0
  989. package/dist/src/utils/textUtils.js.map +1 -0
  990. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  991. package/dist/src/utils/thoughtUtils.js +39 -0
  992. package/dist/src/utils/thoughtUtils.js.map +1 -0
  993. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  994. package/dist/src/utils/tokenCalculation.js +150 -0
  995. package/dist/src/utils/tokenCalculation.js.map +1 -0
  996. package/dist/src/utils/tool-utils.d.ts +28 -0
  997. package/dist/src/utils/tool-utils.js +96 -0
  998. package/dist/src/utils/tool-utils.js.map +1 -0
  999. package/dist/src/utils/toolCallContext.d.ts +35 -0
  1000. package/dist/src/utils/toolCallContext.js +29 -0
  1001. package/dist/src/utils/toolCallContext.js.map +1 -0
  1002. package/dist/src/utils/userAccountManager.d.ts +20 -0
  1003. package/dist/src/utils/userAccountManager.js +115 -0
  1004. package/dist/src/utils/userAccountManager.js.map +1 -0
  1005. package/dist/src/utils/version.d.ts +6 -0
  1006. package/dist/src/utils/version.js +15 -0
  1007. package/dist/src/utils/version.js.map +1 -0
  1008. package/dist/src/utils/workspaceContext.d.ts +82 -0
  1009. package/dist/src/utils/workspaceContext.js +192 -0
  1010. package/dist/src/utils/workspaceContext.js.map +1 -0
  1011. package/dist/tsconfig.tsbuildinfo +1 -0
  1012. package/package.json +97 -0
@@ -0,0 +1,879 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { reportError } from '../utils/errorReporting.js';
7
+ import { GeminiChat, StreamEventType } from '../core/geminiChat.js';
8
+ import { Type } from '@google/genai';
9
+ import { ToolRegistry } from '../tools/tool-registry.js';
10
+ import { DiscoveredMCPTool, MCP_QUALIFIED_NAME_SEPARATOR, } from '../tools/mcp-tool.js';
11
+ import { CompressionStatus } from '../core/turn.js';
12
+ import {} from '../scheduler/types.js';
13
+ import { ChatCompressionService } from '../services/chatCompressionService.js';
14
+ import { getDirectoryContextString } from '../utils/environmentContext.js';
15
+ import { promptIdContext } from '../utils/promptIdContext.js';
16
+ import { logAgentStart, logAgentFinish, logRecoveryAttempt, } from '../telemetry/loggers.js';
17
+ import { AgentStartEvent, AgentFinishEvent, RecoveryAttemptEvent, } from '../telemetry/types.js';
18
+ import { AgentTerminateMode, DEFAULT_QUERY_STRING } from './types.js';
19
+ import { templateString } from './utils.js';
20
+ import { DEFAULT_GEMINI_MODEL, isAutoModel } from '../config/models.js';
21
+ import { parseThought } from '../utils/thoughtUtils.js';
22
+ import {} from 'zod';
23
+ import { zodToJsonSchema } from 'zod-to-json-schema';
24
+ import { debugLogger } from '../utils/debugLogger.js';
25
+ import { getModelConfigAlias } from './registry.js';
26
+ import { getVersion } from '../utils/version.js';
27
+ import { getToolCallContext } from '../utils/toolCallContext.js';
28
+ import { scheduleAgentTools } from './agent-scheduler.js';
29
+ const TASK_COMPLETE_TOOL_NAME = 'complete_task';
30
+ const GRACE_PERIOD_MS = 60 * 1000; // 1 min
31
+ export function createUnauthorizedToolError(toolName) {
32
+ return `Unauthorized tool call: '${toolName}' is not available to this agent.`;
33
+ }
34
+ /**
35
+ * Executes an agent loop based on an {@link AgentDefinition}.
36
+ *
37
+ * This executor runs the agent in a loop, calling tools until it calls the
38
+ * mandatory `complete_task` tool to signal completion.
39
+ */
40
+ export class LocalAgentExecutor {
41
+ definition;
42
+ agentId;
43
+ toolRegistry;
44
+ runtimeContext;
45
+ onActivity;
46
+ compressionService;
47
+ parentCallId;
48
+ hasFailedCompressionAttempt = false;
49
+ /**
50
+ * Creates and validates a new `AgentExecutor` instance.
51
+ *
52
+ * This method ensures that all tools specified in the agent's definition are
53
+ * safe for non-interactive use before creating the executor.
54
+ *
55
+ * @param definition The definition object for the agent.
56
+ * @param runtimeContext The global runtime configuration.
57
+ * @param onActivity An optional callback to receive activity events.
58
+ * @returns A promise that resolves to a new `LocalAgentExecutor` instance.
59
+ */
60
+ static async create(definition, runtimeContext, onActivity) {
61
+ // Create an isolated tool registry for this agent instance.
62
+ const agentToolRegistry = new ToolRegistry(runtimeContext, runtimeContext.getMessageBus());
63
+ const parentToolRegistry = runtimeContext.getToolRegistry();
64
+ const allAgentNames = new Set(runtimeContext.getAgentRegistry().getAllAgentNames());
65
+ const registerToolByName = (toolName) => {
66
+ // Check if the tool is a subagent to prevent recursion.
67
+ // We do not allow agents to call other agents.
68
+ if (allAgentNames.has(toolName)) {
69
+ debugLogger.warn(`[LocalAgentExecutor] Skipping subagent tool '${toolName}' for agent '${definition.name}' to prevent recursion.`);
70
+ return;
71
+ }
72
+ // If the tool is referenced by name, retrieve it from the parent
73
+ // registry and register it with the agent's isolated registry.
74
+ const tool = parentToolRegistry.getTool(toolName);
75
+ if (tool) {
76
+ if (tool instanceof DiscoveredMCPTool &&
77
+ !toolName.includes(MCP_QUALIFIED_NAME_SEPARATOR)) {
78
+ throw new Error(`MCP tool '${toolName}' must be requested with its server prefix (e.g., '${tool.serverName}${MCP_QUALIFIED_NAME_SEPARATOR}${toolName}') in agent '${definition.name}'.`);
79
+ }
80
+ agentToolRegistry.registerTool(tool);
81
+ }
82
+ };
83
+ if (definition.toolConfig) {
84
+ for (const toolRef of definition.toolConfig.tools) {
85
+ if (typeof toolRef === 'string') {
86
+ registerToolByName(toolRef);
87
+ }
88
+ else if (typeof toolRef === 'object' &&
89
+ 'name' in toolRef &&
90
+ 'build' in toolRef) {
91
+ agentToolRegistry.registerTool(toolRef);
92
+ }
93
+ // Note: Raw `FunctionDeclaration` objects in the config don't need to be
94
+ // registered; their schemas are passed directly to the model later.
95
+ }
96
+ }
97
+ else {
98
+ // If no tools are explicitly configured, default to all available tools.
99
+ for (const toolName of parentToolRegistry.getAllToolNames()) {
100
+ registerToolByName(toolName);
101
+ }
102
+ }
103
+ agentToolRegistry.sortTools();
104
+ // Get the parent prompt ID from context
105
+ const parentPromptId = promptIdContext.getStore();
106
+ // Get the parent tool call ID from context
107
+ const toolContext = getToolCallContext();
108
+ const parentCallId = toolContext?.callId;
109
+ return new LocalAgentExecutor(definition, runtimeContext, agentToolRegistry, parentPromptId, parentCallId, onActivity);
110
+ }
111
+ /**
112
+ * Constructs a new AgentExecutor instance.
113
+ *
114
+ * @private This constructor is private. Use the static `create` method to
115
+ * instantiate the class.
116
+ */
117
+ constructor(definition, runtimeContext, toolRegistry, parentPromptId, parentCallId, onActivity) {
118
+ this.definition = definition;
119
+ this.runtimeContext = runtimeContext;
120
+ this.toolRegistry = toolRegistry;
121
+ this.onActivity = onActivity;
122
+ this.compressionService = new ChatCompressionService();
123
+ this.parentCallId = parentCallId;
124
+ const randomIdPart = Math.random().toString(36).slice(2, 8);
125
+ // parentPromptId will be undefined if this agent is invoked directly
126
+ // (top-level), rather than as a sub-agent.
127
+ const parentPrefix = parentPromptId ? `${parentPromptId}-` : '';
128
+ this.agentId = `${parentPrefix}${this.definition.name}-${randomIdPart}`;
129
+ }
130
+ /**
131
+ * Executes a single turn of the agent's logic, from calling the model
132
+ * to processing its response.
133
+ *
134
+ * @returns An {@link AgentTurnResult} object indicating whether to continue
135
+ * or stop the agent loop.
136
+ */
137
+ async executeTurn(chat, currentMessage, turnCounter, combinedSignal, timeoutSignal) {
138
+ const promptId = `${this.agentId}#${turnCounter}`;
139
+ await this.tryCompressChat(chat, promptId);
140
+ const { functionCalls } = await promptIdContext.run(promptId, async () => this.callModel(chat, currentMessage, combinedSignal, promptId));
141
+ if (combinedSignal.aborted) {
142
+ const terminateReason = timeoutSignal.aborted
143
+ ? AgentTerminateMode.TIMEOUT
144
+ : AgentTerminateMode.ABORTED;
145
+ return {
146
+ status: 'stop',
147
+ terminateReason,
148
+ finalResult: null, // 'run' method will set the final timeout string
149
+ };
150
+ }
151
+ // If the model stops calling tools without calling complete_task, it's an error.
152
+ if (functionCalls.length === 0) {
153
+ this.emitActivity('ERROR', {
154
+ error: `Agent stopped calling tools but did not call '${TASK_COMPLETE_TOOL_NAME}' to finalize the session.`,
155
+ context: 'protocol_violation',
156
+ });
157
+ return {
158
+ status: 'stop',
159
+ terminateReason: AgentTerminateMode.ERROR_NO_COMPLETE_TASK_CALL,
160
+ finalResult: null,
161
+ };
162
+ }
163
+ const { nextMessage, submittedOutput, taskCompleted } = await this.processFunctionCalls(functionCalls, combinedSignal, promptId);
164
+ if (taskCompleted) {
165
+ const finalResult = submittedOutput ?? 'Task completed successfully.';
166
+ return {
167
+ status: 'stop',
168
+ terminateReason: AgentTerminateMode.GOAL,
169
+ finalResult,
170
+ };
171
+ }
172
+ // Task is not complete, continue to the next turn.
173
+ return {
174
+ status: 'continue',
175
+ nextMessage,
176
+ };
177
+ }
178
+ /**
179
+ * Generates a specific warning message for the agent's final turn.
180
+ */
181
+ getFinalWarningMessage(reason) {
182
+ let explanation = '';
183
+ switch (reason) {
184
+ case AgentTerminateMode.TIMEOUT:
185
+ explanation = 'You have exceeded the time limit.';
186
+ break;
187
+ case AgentTerminateMode.MAX_TURNS:
188
+ explanation = 'You have exceeded the maximum number of turns.';
189
+ break;
190
+ case AgentTerminateMode.ERROR_NO_COMPLETE_TASK_CALL:
191
+ explanation = 'You have stopped calling tools without finishing.';
192
+ break;
193
+ default:
194
+ throw new Error(`Unknown terminate reason: ${reason}`);
195
+ }
196
+ return `${explanation} You have one final chance to complete the task with a short grace period. You MUST call \`${TASK_COMPLETE_TOOL_NAME}\` immediately with your best answer and explain that your investigation was interrupted. Do not call any other tools.`;
197
+ }
198
+ /**
199
+ * Attempts a single, final recovery turn if the agent stops for a recoverable reason.
200
+ * Gives the agent a grace period to call `complete_task`.
201
+ *
202
+ * @returns The final result string if recovery was successful, or `null` if it failed.
203
+ */
204
+ async executeFinalWarningTurn(chat, turnCounter, reason, externalSignal) {
205
+ this.emitActivity('THOUGHT_CHUNK', {
206
+ text: `Execution limit reached (${reason}). Attempting one final recovery turn with a grace period.`,
207
+ });
208
+ const recoveryStartTime = Date.now();
209
+ let success = false;
210
+ const gracePeriodMs = GRACE_PERIOD_MS;
211
+ const graceTimeoutController = new AbortController();
212
+ const graceTimeoutId = setTimeout(() => graceTimeoutController.abort(new Error('Grace period timed out.')), gracePeriodMs);
213
+ try {
214
+ const recoveryMessage = {
215
+ role: 'user',
216
+ parts: [{ text: this.getFinalWarningMessage(reason) }],
217
+ };
218
+ // We monitor both the external signal and our new grace period timeout
219
+ const combinedSignal = AbortSignal.any([
220
+ externalSignal,
221
+ graceTimeoutController.signal,
222
+ ]);
223
+ const turnResult = await this.executeTurn(chat, recoveryMessage, turnCounter, // This will be the "last" turn number
224
+ combinedSignal, graceTimeoutController.signal);
225
+ if (turnResult.status === 'stop' &&
226
+ turnResult.terminateReason === AgentTerminateMode.GOAL) {
227
+ // Success!
228
+ this.emitActivity('THOUGHT_CHUNK', {
229
+ text: 'Graceful recovery succeeded.',
230
+ });
231
+ success = true;
232
+ return turnResult.finalResult ?? 'Task completed during grace period.';
233
+ }
234
+ // Any other outcome (continue, error, non-GOAL stop) is a failure.
235
+ this.emitActivity('ERROR', {
236
+ error: `Graceful recovery attempt failed. Reason: ${turnResult.status}`,
237
+ context: 'recovery_turn',
238
+ });
239
+ return null;
240
+ }
241
+ catch (error) {
242
+ // This catch block will likely catch the 'Grace period timed out' error.
243
+ this.emitActivity('ERROR', {
244
+ error: `Graceful recovery attempt failed: ${String(error)}`,
245
+ context: 'recovery_turn',
246
+ });
247
+ return null;
248
+ }
249
+ finally {
250
+ clearTimeout(graceTimeoutId);
251
+ logRecoveryAttempt(this.runtimeContext, new RecoveryAttemptEvent(this.agentId, this.definition.name, reason, Date.now() - recoveryStartTime, success, turnCounter));
252
+ }
253
+ }
254
+ /**
255
+ * Runs the agent.
256
+ *
257
+ * @param inputs The validated input parameters for this invocation.
258
+ * @param signal An `AbortSignal` for cancellation.
259
+ * @returns A promise that resolves to the agent's final output.
260
+ */
261
+ async run(inputs, signal) {
262
+ const startTime = Date.now();
263
+ let turnCounter = 0;
264
+ let terminateReason = AgentTerminateMode.ERROR;
265
+ let finalResult = null;
266
+ const { maxTimeMinutes } = this.definition.runConfig;
267
+ const timeoutController = new AbortController();
268
+ const timeoutId = setTimeout(() => timeoutController.abort(new Error('Agent timed out.')), maxTimeMinutes * 60 * 1000);
269
+ // Combine the external signal with the internal timeout signal.
270
+ const combinedSignal = AbortSignal.any([signal, timeoutController.signal]);
271
+ logAgentStart(this.runtimeContext, new AgentStartEvent(this.agentId, this.definition.name));
272
+ let chat;
273
+ let tools;
274
+ try {
275
+ // Inject standard runtime context into inputs
276
+ const augmentedInputs = {
277
+ ...inputs,
278
+ cliVersion: await getVersion(),
279
+ activeModel: this.runtimeContext.getActiveModel(),
280
+ today: new Date().toLocaleDateString(),
281
+ };
282
+ tools = this.prepareToolsList();
283
+ chat = await this.createChatObject(augmentedInputs, tools);
284
+ const query = this.definition.promptConfig.query
285
+ ? templateString(this.definition.promptConfig.query, augmentedInputs)
286
+ : DEFAULT_QUERY_STRING;
287
+ let currentMessage = { role: 'user', parts: [{ text: query }] };
288
+ while (true) {
289
+ // Check for termination conditions like max turns.
290
+ const reason = this.checkTermination(startTime, turnCounter);
291
+ if (reason) {
292
+ terminateReason = reason;
293
+ break;
294
+ }
295
+ // Check for timeout or external abort.
296
+ if (combinedSignal.aborted) {
297
+ // Determine which signal caused the abort.
298
+ terminateReason = timeoutController.signal.aborted
299
+ ? AgentTerminateMode.TIMEOUT
300
+ : AgentTerminateMode.ABORTED;
301
+ break;
302
+ }
303
+ const turnResult = await this.executeTurn(chat, currentMessage, turnCounter++, combinedSignal, timeoutController.signal);
304
+ if (turnResult.status === 'stop') {
305
+ terminateReason = turnResult.terminateReason;
306
+ // Only set finalResult if the turn provided one (e.g., error or goal).
307
+ if (turnResult.finalResult) {
308
+ finalResult = turnResult.finalResult;
309
+ }
310
+ break; // Exit the loop for *any* stop reason.
311
+ }
312
+ // If status is 'continue', update message for the next loop
313
+ currentMessage = turnResult.nextMessage;
314
+ }
315
+ // === UNIFIED RECOVERY BLOCK ===
316
+ // Only attempt recovery if it's a known recoverable reason.
317
+ // We don't recover from GOAL (already done) or ABORTED (user cancelled).
318
+ if (terminateReason !== AgentTerminateMode.ERROR &&
319
+ terminateReason !== AgentTerminateMode.ABORTED &&
320
+ terminateReason !== AgentTerminateMode.GOAL) {
321
+ const recoveryResult = await this.executeFinalWarningTurn(chat, turnCounter, // Use current turnCounter for the recovery attempt
322
+ terminateReason, signal);
323
+ if (recoveryResult !== null) {
324
+ // Recovery Succeeded
325
+ terminateReason = AgentTerminateMode.GOAL;
326
+ finalResult = recoveryResult;
327
+ }
328
+ else {
329
+ // Recovery Failed. Set the final error message based on the *original* reason.
330
+ if (terminateReason === AgentTerminateMode.TIMEOUT) {
331
+ finalResult = `Agent timed out after ${this.definition.runConfig.maxTimeMinutes} minutes.`;
332
+ this.emitActivity('ERROR', {
333
+ error: finalResult,
334
+ context: 'timeout',
335
+ });
336
+ }
337
+ else if (terminateReason === AgentTerminateMode.MAX_TURNS) {
338
+ finalResult = `Agent reached max turns limit (${this.definition.runConfig.maxTurns}).`;
339
+ this.emitActivity('ERROR', {
340
+ error: finalResult,
341
+ context: 'max_turns',
342
+ });
343
+ }
344
+ else if (terminateReason === AgentTerminateMode.ERROR_NO_COMPLETE_TASK_CALL) {
345
+ // The finalResult was already set by executeTurn, but we re-emit just in case.
346
+ finalResult =
347
+ finalResult ||
348
+ `Agent stopped calling tools but did not call '${TASK_COMPLETE_TOOL_NAME}'.`;
349
+ this.emitActivity('ERROR', {
350
+ error: finalResult,
351
+ context: 'protocol_violation',
352
+ });
353
+ }
354
+ }
355
+ }
356
+ // === FINAL RETURN LOGIC ===
357
+ if (terminateReason === AgentTerminateMode.GOAL) {
358
+ return {
359
+ result: finalResult || 'Task completed.',
360
+ terminate_reason: terminateReason,
361
+ };
362
+ }
363
+ return {
364
+ result: finalResult || 'Agent execution was terminated before completion.',
365
+ terminate_reason: terminateReason,
366
+ };
367
+ }
368
+ catch (error) {
369
+ // Check if the error is an AbortError caused by our internal timeout.
370
+ if (error instanceof Error &&
371
+ error.name === 'AbortError' &&
372
+ timeoutController.signal.aborted &&
373
+ !signal.aborted // Ensure the external signal was not the cause
374
+ ) {
375
+ terminateReason = AgentTerminateMode.TIMEOUT;
376
+ // Also use the unified recovery logic here
377
+ if (chat && tools) {
378
+ const recoveryResult = await this.executeFinalWarningTurn(chat, turnCounter, // Use current turnCounter
379
+ AgentTerminateMode.TIMEOUT, signal);
380
+ if (recoveryResult !== null) {
381
+ // Recovery Succeeded
382
+ terminateReason = AgentTerminateMode.GOAL;
383
+ finalResult = recoveryResult;
384
+ return {
385
+ result: finalResult,
386
+ terminate_reason: terminateReason,
387
+ };
388
+ }
389
+ }
390
+ // Recovery failed or wasn't possible
391
+ finalResult = `Agent timed out after ${this.definition.runConfig.maxTimeMinutes} minutes.`;
392
+ this.emitActivity('ERROR', {
393
+ error: finalResult,
394
+ context: 'timeout',
395
+ });
396
+ return {
397
+ result: finalResult,
398
+ terminate_reason: terminateReason,
399
+ };
400
+ }
401
+ this.emitActivity('ERROR', { error: String(error) });
402
+ throw error; // Re-throw other errors or external aborts.
403
+ }
404
+ finally {
405
+ clearTimeout(timeoutId);
406
+ logAgentFinish(this.runtimeContext, new AgentFinishEvent(this.agentId, this.definition.name, Date.now() - startTime, turnCounter, terminateReason));
407
+ }
408
+ }
409
+ async tryCompressChat(chat, prompt_id) {
410
+ const model = this.definition.modelConfig.model ?? DEFAULT_GEMINI_MODEL;
411
+ const { newHistory, info } = await this.compressionService.compress(chat, prompt_id, false, model, this.runtimeContext, this.hasFailedCompressionAttempt);
412
+ if (info.compressionStatus ===
413
+ CompressionStatus.COMPRESSION_FAILED_INFLATED_TOKEN_COUNT) {
414
+ this.hasFailedCompressionAttempt = true;
415
+ }
416
+ else if (info.compressionStatus === CompressionStatus.COMPRESSED) {
417
+ if (newHistory) {
418
+ chat.setHistory(newHistory);
419
+ this.hasFailedCompressionAttempt = false;
420
+ }
421
+ }
422
+ }
423
+ /**
424
+ * Calls the generative model with the current context and tools.
425
+ *
426
+ * @returns The model's response, including any tool calls or text.
427
+ */
428
+ async callModel(chat, message, signal, promptId) {
429
+ const modelConfigAlias = getModelConfigAlias(this.definition);
430
+ // Resolve the model config early to get the concrete model string (which may be `auto`).
431
+ const resolvedConfig = this.runtimeContext.modelConfigService.getResolvedConfig({
432
+ model: modelConfigAlias,
433
+ overrideScope: this.definition.name,
434
+ });
435
+ const requestedModel = resolvedConfig.model;
436
+ let modelToUse;
437
+ if (isAutoModel(requestedModel)) {
438
+ // TODO(joshualitt): This try / catch is inconsistent with the routing
439
+ // behavior for the main agent. Ideally, we would have a universal
440
+ // policy for routing failure. Given routing failure does not necessarily
441
+ // mean generation will fail, we may want to share this logic with
442
+ // other places we use model routing.
443
+ try {
444
+ const routingContext = {
445
+ history: chat.getHistory(/*curated=*/ true),
446
+ request: message.parts || [],
447
+ signal,
448
+ requestedModel,
449
+ };
450
+ const router = this.runtimeContext.getModelRouterService();
451
+ const decision = await router.route(routingContext);
452
+ modelToUse = decision.model;
453
+ }
454
+ catch (error) {
455
+ debugLogger.warn(`Error during model routing: ${error}`);
456
+ modelToUse = DEFAULT_GEMINI_MODEL;
457
+ }
458
+ }
459
+ else {
460
+ modelToUse = requestedModel;
461
+ }
462
+ const responseStream = await chat.sendMessageStream({
463
+ model: modelToUse,
464
+ overrideScope: this.definition.name,
465
+ }, message.parts || [], promptId, signal);
466
+ const functionCalls = [];
467
+ let textResponse = '';
468
+ for await (const resp of responseStream) {
469
+ if (signal.aborted)
470
+ break;
471
+ if (resp.type === StreamEventType.CHUNK) {
472
+ const chunk = resp.value;
473
+ const parts = chunk.candidates?.[0]?.content?.parts;
474
+ // Extract and emit any subject "thought" content from the model.
475
+ const { subject } = parseThought(parts?.find((p) => p.thought)?.text || '');
476
+ if (subject) {
477
+ this.emitActivity('THOUGHT_CHUNK', { text: subject });
478
+ }
479
+ // Collect any function calls requested by the model.
480
+ if (chunk.functionCalls) {
481
+ functionCalls.push(...chunk.functionCalls);
482
+ }
483
+ // Handle text response (non-thought text)
484
+ const text = parts
485
+ ?.filter((p) => !p.thought && p.text)
486
+ .map((p) => p.text)
487
+ .join('') || '';
488
+ if (text) {
489
+ textResponse += text;
490
+ }
491
+ }
492
+ }
493
+ return { functionCalls, textResponse };
494
+ }
495
+ /** Initializes a `GeminiChat` instance for the agent run. */
496
+ async createChatObject(inputs, tools) {
497
+ const { promptConfig } = this.definition;
498
+ if (!promptConfig.systemPrompt && !promptConfig.initialMessages) {
499
+ throw new Error('PromptConfig must define either `systemPrompt` or `initialMessages`.');
500
+ }
501
+ const startHistory = this.applyTemplateToInitialMessages(promptConfig.initialMessages ?? [], inputs);
502
+ // Build system instruction from the templated prompt string.
503
+ const systemInstruction = promptConfig.systemPrompt
504
+ ? await this.buildSystemPrompt(inputs)
505
+ : undefined;
506
+ try {
507
+ return new GeminiChat(this.runtimeContext, systemInstruction, [{ functionDeclarations: tools }], startHistory);
508
+ }
509
+ catch (error) {
510
+ await reportError(error, `Error initializing Gemini chat for agent ${this.definition.name}.`, startHistory, 'startChat');
511
+ // Re-throw as a more specific error after reporting.
512
+ throw new Error(`Failed to create chat object: ${error}`);
513
+ }
514
+ }
515
+ /**
516
+ * Executes function calls requested by the model and returns the results.
517
+ *
518
+ * @returns A new `Content` object for history, any submitted output, and completion status.
519
+ */
520
+ async processFunctionCalls(functionCalls, signal, promptId) {
521
+ const allowedToolNames = new Set(this.toolRegistry.getAllToolNames());
522
+ // Always allow the completion tool
523
+ allowedToolNames.add(TASK_COMPLETE_TOOL_NAME);
524
+ let submittedOutput = null;
525
+ let taskCompleted = false;
526
+ // We'll separate complete_task from other tools
527
+ const toolRequests = [];
528
+ // Map to keep track of tool name by callId for activity emission
529
+ const toolNameMap = new Map();
530
+ // Synchronous results (like complete_task or unauthorized calls)
531
+ const syncResults = new Map();
532
+ for (const [index, functionCall] of functionCalls.entries()) {
533
+ const callId = functionCall.id ?? `${promptId}-${index}`;
534
+ const args = functionCall.args ?? {};
535
+ const toolName = functionCall.name;
536
+ this.emitActivity('TOOL_CALL_START', {
537
+ name: toolName,
538
+ args,
539
+ });
540
+ if (toolName === TASK_COMPLETE_TOOL_NAME) {
541
+ if (taskCompleted) {
542
+ const error = 'Task already marked complete in this turn. Ignoring duplicate call.';
543
+ syncResults.set(callId, {
544
+ functionResponse: {
545
+ name: TASK_COMPLETE_TOOL_NAME,
546
+ response: { error },
547
+ id: callId,
548
+ },
549
+ });
550
+ this.emitActivity('ERROR', {
551
+ context: 'tool_call',
552
+ name: toolName,
553
+ error,
554
+ });
555
+ continue;
556
+ }
557
+ const { outputConfig } = this.definition;
558
+ taskCompleted = true; // Signal completion regardless of output presence
559
+ if (outputConfig) {
560
+ const outputName = outputConfig.outputName;
561
+ if (args[outputName] !== undefined) {
562
+ const outputValue = args[outputName];
563
+ const validationResult = outputConfig.schema.safeParse(outputValue);
564
+ if (!validationResult.success) {
565
+ taskCompleted = false; // Validation failed, revoke completion
566
+ const error = `Output validation failed: ${JSON.stringify(validationResult.error.flatten())}`;
567
+ syncResults.set(callId, {
568
+ functionResponse: {
569
+ name: TASK_COMPLETE_TOOL_NAME,
570
+ response: { error },
571
+ id: callId,
572
+ },
573
+ });
574
+ this.emitActivity('ERROR', {
575
+ context: 'tool_call',
576
+ name: toolName,
577
+ error,
578
+ });
579
+ continue;
580
+ }
581
+ const validatedOutput = validationResult.data;
582
+ if (this.definition.processOutput) {
583
+ submittedOutput = this.definition.processOutput(validatedOutput);
584
+ }
585
+ else {
586
+ submittedOutput =
587
+ typeof outputValue === 'string'
588
+ ? outputValue
589
+ : JSON.stringify(outputValue, null, 2);
590
+ }
591
+ syncResults.set(callId, {
592
+ functionResponse: {
593
+ name: TASK_COMPLETE_TOOL_NAME,
594
+ response: { result: 'Output submitted and task completed.' },
595
+ id: callId,
596
+ },
597
+ });
598
+ this.emitActivity('TOOL_CALL_END', {
599
+ name: toolName,
600
+ output: 'Output submitted and task completed.',
601
+ });
602
+ }
603
+ else {
604
+ // Failed to provide required output.
605
+ taskCompleted = false; // Revoke completion status
606
+ const error = `Missing required argument '${outputName}' for completion.`;
607
+ syncResults.set(callId, {
608
+ functionResponse: {
609
+ name: TASK_COMPLETE_TOOL_NAME,
610
+ response: { error },
611
+ id: callId,
612
+ },
613
+ });
614
+ this.emitActivity('ERROR', {
615
+ context: 'tool_call',
616
+ name: toolName,
617
+ error,
618
+ });
619
+ }
620
+ }
621
+ else {
622
+ // No outputConfig - use default 'result' parameter
623
+ const resultArg = args['result'];
624
+ if (resultArg !== undefined &&
625
+ resultArg !== null &&
626
+ resultArg !== '') {
627
+ submittedOutput =
628
+ typeof resultArg === 'string'
629
+ ? resultArg
630
+ : JSON.stringify(resultArg, null, 2);
631
+ syncResults.set(callId, {
632
+ functionResponse: {
633
+ name: TASK_COMPLETE_TOOL_NAME,
634
+ response: { status: 'Result submitted and task completed.' },
635
+ id: callId,
636
+ },
637
+ });
638
+ this.emitActivity('TOOL_CALL_END', {
639
+ name: toolName,
640
+ output: 'Result submitted and task completed.',
641
+ });
642
+ }
643
+ else {
644
+ // No result provided - this is an error for agents expected to return results
645
+ taskCompleted = false; // Revoke completion
646
+ const error = 'Missing required "result" argument. You must provide your findings when calling complete_task.';
647
+ syncResults.set(callId, {
648
+ functionResponse: {
649
+ name: TASK_COMPLETE_TOOL_NAME,
650
+ response: { error },
651
+ id: callId,
652
+ },
653
+ });
654
+ this.emitActivity('ERROR', {
655
+ context: 'tool_call',
656
+ name: toolName,
657
+ error,
658
+ });
659
+ }
660
+ }
661
+ continue;
662
+ }
663
+ // Handle standard tools
664
+ if (!allowedToolNames.has(toolName)) {
665
+ const error = createUnauthorizedToolError(toolName);
666
+ debugLogger.warn(`[LocalAgentExecutor] Blocked call: ${error}`);
667
+ syncResults.set(callId, {
668
+ functionResponse: {
669
+ name: toolName,
670
+ id: callId,
671
+ response: { error },
672
+ },
673
+ });
674
+ this.emitActivity('ERROR', {
675
+ context: 'tool_call_unauthorized',
676
+ name: toolName,
677
+ callId,
678
+ error,
679
+ });
680
+ continue;
681
+ }
682
+ toolRequests.push({
683
+ callId,
684
+ name: toolName,
685
+ args,
686
+ isClientInitiated: false, // These are coming from the subagent (the "model")
687
+ prompt_id: promptId,
688
+ });
689
+ toolNameMap.set(callId, toolName);
690
+ }
691
+ // Execute standard tool calls using the new scheduler
692
+ if (toolRequests.length > 0) {
693
+ const completedCalls = await scheduleAgentTools(this.runtimeContext, toolRequests, {
694
+ schedulerId: this.agentId,
695
+ parentCallId: this.parentCallId,
696
+ toolRegistry: this.toolRegistry,
697
+ signal,
698
+ });
699
+ for (const call of completedCalls) {
700
+ const toolName = toolNameMap.get(call.request.callId) || call.request.name;
701
+ if (call.status === 'success') {
702
+ this.emitActivity('TOOL_CALL_END', {
703
+ name: toolName,
704
+ output: call.response.resultDisplay,
705
+ });
706
+ }
707
+ else if (call.status === 'error') {
708
+ this.emitActivity('ERROR', {
709
+ context: 'tool_call',
710
+ name: toolName,
711
+ error: call.response.error?.message || 'Unknown error',
712
+ });
713
+ }
714
+ else if (call.status === 'cancelled') {
715
+ this.emitActivity('ERROR', {
716
+ context: 'tool_call',
717
+ name: toolName,
718
+ error: 'Tool call was cancelled.',
719
+ });
720
+ }
721
+ // Add result to syncResults to preserve order later
722
+ syncResults.set(call.request.callId, call.response.responseParts[0]);
723
+ }
724
+ }
725
+ // Reconstruct toolResponseParts in the original order
726
+ const toolResponseParts = [];
727
+ for (const [index, functionCall] of functionCalls.entries()) {
728
+ const callId = functionCall.id ?? `${promptId}-${index}`;
729
+ const part = syncResults.get(callId);
730
+ if (part) {
731
+ toolResponseParts.push(part);
732
+ }
733
+ }
734
+ // If all authorized tool calls failed (and task isn't complete), provide a generic error.
735
+ if (functionCalls.length > 0 &&
736
+ toolResponseParts.length === 0 &&
737
+ !taskCompleted) {
738
+ toolResponseParts.push({
739
+ text: 'All tool calls failed or were unauthorized. Please analyze the errors and try an alternative approach.',
740
+ });
741
+ }
742
+ return {
743
+ nextMessage: { role: 'user', parts: toolResponseParts },
744
+ submittedOutput,
745
+ taskCompleted,
746
+ };
747
+ }
748
+ /**
749
+ * Prepares the list of tool function declarations to be sent to the model.
750
+ */
751
+ prepareToolsList() {
752
+ const toolsList = [];
753
+ const { toolConfig, outputConfig } = this.definition;
754
+ if (toolConfig) {
755
+ const toolNamesToLoad = [];
756
+ for (const toolRef of toolConfig.tools) {
757
+ if (typeof toolRef === 'string') {
758
+ toolNamesToLoad.push(toolRef);
759
+ }
760
+ else if (typeof toolRef === 'object' && 'schema' in toolRef) {
761
+ // Tool instance with an explicit schema property.
762
+ toolsList.push(toolRef.schema);
763
+ }
764
+ else {
765
+ // Raw `FunctionDeclaration` object.
766
+ toolsList.push(toolRef);
767
+ }
768
+ }
769
+ // Add schemas from tools that were registered by name.
770
+ toolsList.push(...this.toolRegistry.getFunctionDeclarationsFiltered(toolNamesToLoad));
771
+ }
772
+ // Always inject complete_task.
773
+ // Configure its schema based on whether output is expected.
774
+ const completeTool = {
775
+ name: TASK_COMPLETE_TOOL_NAME,
776
+ description: outputConfig
777
+ ? 'Call this tool to submit your final answer and complete the task. This is the ONLY way to finish.'
778
+ : 'Call this tool to submit your final findings and complete the task. This is the ONLY way to finish.',
779
+ parameters: {
780
+ type: Type.OBJECT,
781
+ properties: {},
782
+ required: [],
783
+ },
784
+ };
785
+ if (outputConfig) {
786
+ const jsonSchema = zodToJsonSchema(outputConfig.schema);
787
+ const { $schema: _$schema, definitions: _definitions, ...schema } = jsonSchema;
788
+ completeTool.parameters.properties[outputConfig.outputName] =
789
+ schema;
790
+ completeTool.parameters.required.push(outputConfig.outputName);
791
+ }
792
+ else {
793
+ completeTool.parameters.properties['result'] = {
794
+ type: Type.STRING,
795
+ description: 'Your final results or findings to return to the orchestrator. ' +
796
+ 'Ensure this is comprehensive and follows any formatting requested in your instructions.',
797
+ };
798
+ completeTool.parameters.required.push('result');
799
+ }
800
+ toolsList.push(completeTool);
801
+ return toolsList;
802
+ }
803
+ /** Builds the system prompt from the agent definition and inputs. */
804
+ async buildSystemPrompt(inputs) {
805
+ const { promptConfig } = this.definition;
806
+ if (!promptConfig.systemPrompt) {
807
+ return '';
808
+ }
809
+ // Inject user inputs into the prompt template.
810
+ let finalPrompt = templateString(promptConfig.systemPrompt, inputs);
811
+ // Append environment context (CWD and folder structure).
812
+ const dirContext = await getDirectoryContextString(this.runtimeContext);
813
+ finalPrompt += `\n\n# Environment Context\n${dirContext}`;
814
+ // Append standard rules for non-interactive execution.
815
+ finalPrompt += `
816
+ Important Rules:
817
+ * You are running in a non-interactive mode. You CANNOT ask the user for input or clarification.
818
+ * Work systematically using available tools to complete your task.
819
+ * Always use absolute paths for file operations. Construct them using the provided "Environment Context".`;
820
+ if (this.definition.outputConfig) {
821
+ finalPrompt += `
822
+ * When you have completed your task, you MUST call the \`${TASK_COMPLETE_TOOL_NAME}\` tool with your structured output.
823
+ * Do not call any other tools in the same turn as \`${TASK_COMPLETE_TOOL_NAME}\`.
824
+ * This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
825
+ }
826
+ else {
827
+ finalPrompt += `
828
+ * When you have completed your task, you MUST call the \`${TASK_COMPLETE_TOOL_NAME}\` tool.
829
+ * You MUST include your final findings in the "result" parameter. This is how you return the necessary results for the task to be marked complete.
830
+ * Ensure your findings are comprehensive and follow any specific formatting requirements provided in your instructions.
831
+ * Do not call any other tools in the same turn as \`${TASK_COMPLETE_TOOL_NAME}\`.
832
+ * This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
833
+ }
834
+ return finalPrompt;
835
+ }
836
+ /**
837
+ * Applies template strings to initial messages.
838
+ *
839
+ * @param initialMessages The initial messages from the prompt config.
840
+ * @param inputs The validated input parameters for this invocation.
841
+ * @returns A new array of `Content` with templated strings.
842
+ */
843
+ applyTemplateToInitialMessages(initialMessages, inputs) {
844
+ return initialMessages.map((content) => {
845
+ const newParts = (content.parts ?? []).map((part) => {
846
+ if ('text' in part && part.text !== undefined) {
847
+ return { text: templateString(part.text, inputs) };
848
+ }
849
+ return part;
850
+ });
851
+ return { ...content, parts: newParts };
852
+ });
853
+ }
854
+ /**
855
+ * Checks if the agent should terminate due to exceeding configured limits.
856
+ *
857
+ * @returns The reason for termination, or `null` if execution can continue.
858
+ */
859
+ checkTermination(startTime, turnCounter) {
860
+ const { runConfig } = this.definition;
861
+ if (runConfig.maxTurns && turnCounter >= runConfig.maxTurns) {
862
+ return AgentTerminateMode.MAX_TURNS;
863
+ }
864
+ return null;
865
+ }
866
+ /** Emits an activity event to the configured callback. */
867
+ emitActivity(type, data) {
868
+ if (this.onActivity) {
869
+ const event = {
870
+ isSubagentActivityEvent: true,
871
+ agentName: this.definition.name,
872
+ type,
873
+ data,
874
+ };
875
+ this.onActivity(event);
876
+ }
877
+ }
878
+ }
879
+ //# sourceMappingURL=local-executor.js.map