@office-ai/aioncli-core 0.18.7 → 0.24.0-preview.1

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 (890) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -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/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +114 -0
  40. package/dist/docs/cli/skills.md +156 -0
  41. package/dist/docs/cli/system-prompt.md +93 -0
  42. package/dist/docs/cli/telemetry.md +791 -0
  43. package/dist/docs/cli/themes.md +237 -0
  44. package/dist/docs/cli/token-caching.md +20 -0
  45. package/dist/docs/cli/trusted-folders.md +95 -0
  46. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  47. package/dist/docs/cli/tutorials.md +87 -0
  48. package/dist/docs/cli/uninstall.md +47 -0
  49. package/dist/docs/core/index.md +101 -0
  50. package/dist/docs/core/memport.md +244 -0
  51. package/dist/docs/core/policy-engine.md +267 -0
  52. package/dist/docs/core/tools-api.md +131 -0
  53. package/dist/docs/examples/proxy-script.md +83 -0
  54. package/dist/docs/extension.md +160 -0
  55. package/dist/docs/extensions/extension-releasing.md +183 -0
  56. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  57. package/dist/docs/extensions/index.md +293 -0
  58. package/dist/docs/faq.md +154 -0
  59. package/dist/docs/get-started/authentication.md +321 -0
  60. package/dist/docs/get-started/configuration-v1.md +888 -0
  61. package/dist/docs/get-started/configuration.md +1536 -0
  62. package/dist/docs/get-started/deployment.md +143 -0
  63. package/dist/docs/get-started/examples.md +219 -0
  64. package/dist/docs/get-started/gemini-3.md +116 -0
  65. package/dist/docs/get-started/index.md +71 -0
  66. package/dist/docs/get-started/installation.md +141 -0
  67. package/dist/docs/hooks/best-practices.md +856 -0
  68. package/dist/docs/hooks/index.md +687 -0
  69. package/dist/docs/hooks/reference.md +168 -0
  70. package/dist/docs/hooks/writing-hooks.md +1026 -0
  71. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  72. package/dist/docs/ide-integration/index.md +202 -0
  73. package/dist/docs/index.md +147 -0
  74. package/dist/docs/integration-tests.md +211 -0
  75. package/dist/docs/issue-and-pr-automation.md +134 -0
  76. package/dist/docs/local-development.md +128 -0
  77. package/dist/docs/mermaid/context.mmd +103 -0
  78. package/dist/docs/mermaid/render-path.mmd +64 -0
  79. package/dist/docs/npm.md +62 -0
  80. package/dist/docs/quota-and-pricing.md +158 -0
  81. package/dist/docs/release-confidence.md +164 -0
  82. package/dist/docs/releases.md +540 -0
  83. package/dist/docs/sidebar.json +301 -0
  84. package/dist/docs/tools/file-system.md +217 -0
  85. package/dist/docs/tools/index.md +95 -0
  86. package/dist/docs/tools/mcp-server.md +1044 -0
  87. package/dist/docs/tools/memory.md +54 -0
  88. package/dist/docs/tools/shell.md +260 -0
  89. package/dist/docs/tools/todos.md +57 -0
  90. package/dist/docs/tools/web-fetch.md +59 -0
  91. package/dist/docs/tools/web-search.md +42 -0
  92. package/dist/docs/tos-privacy.md +96 -0
  93. package/dist/docs/troubleshooting.md +158 -0
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/src/agents/a2a-client-manager.d.ts +78 -0
  98. package/dist/src/agents/a2a-client-manager.js +295 -0
  99. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  100. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  101. package/dist/src/agents/a2a-client-manager.test.js +237 -0
  102. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  103. package/dist/src/agents/a2aUtils.d.ts +28 -0
  104. package/dist/src/agents/a2aUtils.js +111 -0
  105. package/dist/src/agents/a2aUtils.js.map +1 -0
  106. package/dist/src/agents/a2aUtils.test.d.ts +6 -0
  107. package/dist/src/agents/a2aUtils.test.js +147 -0
  108. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  109. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  110. package/dist/src/agents/codebase-investigator.js +5 -4
  111. package/dist/src/agents/codebase-investigator.js.map +1 -1
  112. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  113. package/dist/src/agents/delegate-to-agent-tool.js +115 -0
  114. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  115. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  116. package/dist/src/agents/delegate-to-agent-tool.test.js +165 -0
  117. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  118. package/dist/src/agents/introspection-agent.d.ts +23 -0
  119. package/dist/src/agents/introspection-agent.js +72 -0
  120. package/dist/src/agents/introspection-agent.js.map +1 -0
  121. package/dist/src/agents/introspection-agent.test.d.ts +6 -0
  122. package/dist/src/agents/introspection-agent.test.js +47 -0
  123. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  124. package/dist/src/agents/local-executor.d.ts +108 -0
  125. package/dist/src/agents/local-executor.js +801 -0
  126. package/dist/src/agents/local-executor.js.map +1 -0
  127. package/dist/src/agents/local-executor.test.d.ts +6 -0
  128. package/dist/src/agents/local-executor.test.js +1380 -0
  129. package/dist/src/agents/local-executor.test.js.map +1 -0
  130. package/dist/src/agents/local-invocation.d.ts +45 -0
  131. package/dist/src/agents/local-invocation.js +101 -0
  132. package/dist/src/agents/local-invocation.js.map +1 -0
  133. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  134. package/dist/src/agents/local-invocation.test.js +218 -0
  135. package/dist/src/agents/local-invocation.test.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +25 -1
  137. package/dist/src/agents/registry.js +149 -5
  138. package/dist/src/agents/registry.js.map +1 -1
  139. package/dist/src/agents/registry.test.js +247 -25
  140. package/dist/src/agents/registry.test.js.map +1 -1
  141. package/dist/src/agents/remote-invocation.d.ts +35 -0
  142. package/dist/src/agents/remote-invocation.js +129 -0
  143. package/dist/src/agents/remote-invocation.js.map +1 -0
  144. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  145. package/dist/src/agents/remote-invocation.test.js +201 -0
  146. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  147. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  148. package/dist/src/agents/subagent-tool-wrapper.js +11 -6
  149. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  150. package/dist/src/agents/subagent-tool-wrapper.test.js +25 -17
  151. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  152. package/dist/src/agents/toml-loader.d.ts +74 -0
  153. package/dist/src/agents/toml-loader.js +248 -0
  154. package/dist/src/agents/toml-loader.js.map +1 -0
  155. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  156. package/dist/src/agents/toml-loader.test.js +309 -0
  157. package/dist/src/agents/toml-loader.test.js.map +1 -0
  158. package/dist/src/agents/types.d.ts +18 -4
  159. package/dist/src/availability/errorClassification.d.ts +7 -0
  160. package/dist/src/availability/errorClassification.js +20 -0
  161. package/dist/src/availability/errorClassification.js.map +1 -0
  162. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  163. package/dist/src/availability/modelAvailabilityService.js +87 -0
  164. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  165. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  166. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  167. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  168. package/dist/src/availability/modelPolicy.d.ts +49 -0
  169. package/dist/src/availability/modelPolicy.js +7 -0
  170. package/dist/src/availability/modelPolicy.js.map +1 -0
  171. package/dist/src/availability/policyCatalog.d.ts +23 -0
  172. package/dist/src/availability/policyCatalog.js +82 -0
  173. package/dist/src/availability/policyCatalog.js.map +1 -0
  174. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  175. package/dist/src/availability/policyCatalog.test.js +70 -0
  176. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  177. package/dist/src/availability/policyHelpers.d.ts +52 -0
  178. package/dist/src/availability/policyHelpers.js +136 -0
  179. package/dist/src/availability/policyHelpers.js.map +1 -0
  180. package/dist/src/availability/policyHelpers.test.d.ts +6 -0
  181. package/dist/src/availability/policyHelpers.test.js +182 -0
  182. package/dist/src/availability/policyHelpers.test.js.map +1 -0
  183. package/dist/src/availability/testUtils.d.ts +10 -0
  184. package/dist/src/availability/testUtils.js +22 -0
  185. package/dist/src/availability/testUtils.js.map +1 -0
  186. package/dist/src/code_assist/experiments/client_metadata.js +3 -2
  187. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  188. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  189. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  190. package/dist/src/code_assist/experiments/experiments.js +2 -2
  191. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  192. package/dist/src/code_assist/oauth2.d.ts +2 -0
  193. package/dist/src/code_assist/oauth2.js +73 -17
  194. package/dist/src/code_assist/oauth2.js.map +1 -1
  195. package/dist/src/code_assist/oauth2.test.js +195 -18
  196. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  197. package/dist/src/code_assist/server.d.ts +10 -1
  198. package/dist/src/code_assist/server.js +81 -15
  199. package/dist/src/code_assist/server.js.map +1 -1
  200. package/dist/src/code_assist/server.test.js +221 -25
  201. package/dist/src/code_assist/server.test.js.map +1 -1
  202. package/dist/src/code_assist/setup.js +6 -4
  203. package/dist/src/code_assist/setup.js.map +1 -1
  204. package/dist/src/code_assist/setup.test.js +63 -0
  205. package/dist/src/code_assist/setup.test.js.map +1 -1
  206. package/dist/src/code_assist/telemetry.d.ts +14 -0
  207. package/dist/src/code_assist/telemetry.js +156 -0
  208. package/dist/src/code_assist/telemetry.js.map +1 -0
  209. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  210. package/dist/src/code_assist/telemetry.test.js +300 -0
  211. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  212. package/dist/src/code_assist/types.d.ts +84 -1
  213. package/dist/src/code_assist/types.js +21 -0
  214. package/dist/src/code_assist/types.js.map +1 -1
  215. package/dist/src/commands/init.d.ts +7 -0
  216. package/dist/src/commands/init.js +53 -0
  217. package/dist/src/commands/init.js.map +1 -0
  218. package/dist/src/commands/init.test.d.ts +6 -0
  219. package/dist/src/commands/init.test.js +25 -0
  220. package/dist/src/commands/init.test.js.map +1 -0
  221. package/dist/src/commands/restore.d.ts +9 -0
  222. package/dist/src/commands/restore.js +46 -0
  223. package/dist/src/commands/restore.js.map +1 -0
  224. package/dist/src/commands/restore.test.d.ts +6 -0
  225. package/dist/src/commands/restore.test.js +137 -0
  226. package/dist/src/commands/restore.test.js.map +1 -0
  227. package/dist/src/commands/types.d.ts +41 -0
  228. package/dist/src/commands/types.js +7 -0
  229. package/dist/src/commands/types.js.map +1 -0
  230. package/dist/src/config/config.d.ts +120 -23
  231. package/dist/src/config/config.js +336 -116
  232. package/dist/src/config/config.js.map +1 -1
  233. package/dist/src/config/config.test.js +373 -95
  234. package/dist/src/config/config.test.js.map +1 -1
  235. package/dist/src/config/defaultModelConfigs.js +46 -0
  236. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  237. package/dist/src/config/flashFallback.test.js +11 -35
  238. package/dist/src/config/flashFallback.test.js.map +1 -1
  239. package/dist/src/config/models.d.ts +29 -15
  240. package/dist/src/config/models.js +78 -28
  241. package/dist/src/config/models.js.map +1 -1
  242. package/dist/src/config/models.test.js +91 -77
  243. package/dist/src/config/models.test.js.map +1 -1
  244. package/dist/src/config/storage.d.ts +4 -0
  245. package/dist/src/config/storage.js +12 -0
  246. package/dist/src/config/storage.js.map +1 -1
  247. package/dist/src/config/storage.test.js +16 -0
  248. package/dist/src/config/storage.test.js.map +1 -1
  249. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  250. package/dist/src/confirmation-bus/message-bus.js +66 -3
  251. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  252. package/dist/src/confirmation-bus/types.d.ts +29 -2
  253. package/dist/src/confirmation-bus/types.js +3 -0
  254. package/dist/src/confirmation-bus/types.js.map +1 -1
  255. package/dist/src/core/baseLlmClient.d.ts +30 -2
  256. package/dist/src/core/baseLlmClient.js +107 -49
  257. package/dist/src/core/baseLlmClient.js.map +1 -1
  258. package/dist/src/core/baseLlmClient.test.js +271 -13
  259. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  260. package/dist/src/core/client.d.ts +5 -1
  261. package/dist/src/core/client.js +241 -63
  262. package/dist/src/core/client.js.map +1 -1
  263. package/dist/src/core/client.test.js +462 -72
  264. package/dist/src/core/client.test.js.map +1 -1
  265. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  266. package/dist/src/core/clientHookTriggers.js +76 -0
  267. package/dist/src/core/clientHookTriggers.js.map +1 -0
  268. package/dist/src/core/contentGenerator.js +17 -4
  269. package/dist/src/core/contentGenerator.js.map +1 -1
  270. package/dist/src/core/contentGenerator.test.js +132 -3
  271. package/dist/src/core/contentGenerator.test.js.map +1 -1
  272. package/dist/src/core/coreToolHookTriggers.d.ts +55 -0
  273. package/dist/src/core/coreToolHookTriggers.js +304 -0
  274. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  275. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  276. package/dist/src/core/coreToolHookTriggers.test.js +191 -0
  277. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  278. package/dist/src/core/coreToolScheduler.d.ts +6 -85
  279. package/dist/src/core/coreToolScheduler.js +69 -267
  280. package/dist/src/core/coreToolScheduler.js.map +1 -1
  281. package/dist/src/core/coreToolScheduler.test.js +161 -346
  282. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  283. package/dist/src/core/geminiChat.js +132 -76
  284. package/dist/src/core/geminiChat.js.map +1 -1
  285. package/dist/src/core/geminiChat.test.js +240 -257
  286. package/dist/src/core/geminiChat.test.js.map +1 -1
  287. package/dist/src/core/geminiChatHookTriggers.d.ts +64 -0
  288. package/dist/src/core/geminiChatHookTriggers.js +136 -0
  289. package/dist/src/core/geminiChatHookTriggers.js.map +1 -0
  290. package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
  291. package/dist/src/core/geminiChat_network_retry.test.js +196 -0
  292. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
  293. package/dist/src/core/logger.js.map +1 -1
  294. package/dist/src/core/loggingContentGenerator.js +23 -6
  295. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  296. package/dist/src/core/nonInteractiveToolExecutor.test.js +13 -8
  297. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  298. package/dist/src/core/prompts.js +82 -26
  299. package/dist/src/core/prompts.js.map +1 -1
  300. package/dist/src/core/prompts.test.js +102 -3
  301. package/dist/src/core/prompts.test.js.map +1 -1
  302. package/dist/src/core/sessionHookTriggers.d.ts +29 -0
  303. package/dist/src/core/sessionHookTriggers.js +75 -0
  304. package/dist/src/core/sessionHookTriggers.js.map +1 -0
  305. package/dist/src/core/turn.d.ts +34 -21
  306. package/dist/src/core/turn.js +33 -13
  307. package/dist/src/core/turn.js.map +1 -1
  308. package/dist/src/core/turn.test.js +0 -5
  309. package/dist/src/core/turn.test.js.map +1 -1
  310. package/dist/src/fallback/handler.js +101 -93
  311. package/dist/src/fallback/handler.js.map +1 -1
  312. package/dist/src/fallback/handler.test.js +186 -173
  313. package/dist/src/fallback/handler.test.js.map +1 -1
  314. package/dist/src/fallback/types.d.ts +8 -0
  315. package/dist/src/generated/git-commit.d.ts +3 -3
  316. package/dist/src/generated/git-commit.js +3 -3
  317. package/dist/src/generated/git-commit.js.map +1 -1
  318. package/dist/src/hooks/hookAggregator.js +7 -0
  319. package/dist/src/hooks/hookAggregator.js.map +1 -1
  320. package/dist/src/hooks/hookEventHandler.d.ts +113 -0
  321. package/dist/src/hooks/hookEventHandler.js +571 -0
  322. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  323. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  324. package/dist/src/hooks/hookEventHandler.test.js +461 -0
  325. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  326. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  327. package/dist/src/hooks/hookPlanner.js +2 -7
  328. package/dist/src/hooks/hookPlanner.js.map +1 -1
  329. package/dist/src/hooks/hookPlanner.test.js +62 -2
  330. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  331. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  332. package/dist/src/hooks/hookRegistry.js +49 -35
  333. package/dist/src/hooks/hookRegistry.js.map +1 -1
  334. package/dist/src/hooks/hookRegistry.test.js +167 -8
  335. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  336. package/dist/src/hooks/hookRunner.d.ts +5 -3
  337. package/dist/src/hooks/hookRunner.js +74 -18
  338. package/dist/src/hooks/hookRunner.js.map +1 -1
  339. package/dist/src/hooks/hookRunner.test.js +174 -36
  340. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  341. package/dist/src/hooks/hookSystem.d.ts +40 -0
  342. package/dist/src/hooks/hookSystem.js +65 -0
  343. package/dist/src/hooks/hookSystem.js.map +1 -0
  344. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  345. package/dist/src/hooks/hookSystem.test.js +319 -0
  346. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  347. package/dist/src/hooks/index.d.ts +17 -0
  348. package/dist/src/hooks/index.js +18 -0
  349. package/dist/src/hooks/index.js.map +1 -0
  350. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  351. package/dist/src/hooks/trustedHooks.js +90 -0
  352. package/dist/src/hooks/trustedHooks.js.map +1 -0
  353. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  354. package/dist/src/hooks/trustedHooks.test.js +154 -0
  355. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  356. package/dist/src/hooks/types.d.ts +21 -11
  357. package/dist/src/hooks/types.js +31 -27
  358. package/dist/src/hooks/types.js.map +1 -1
  359. package/dist/src/hooks/types.test.js +5 -24
  360. package/dist/src/hooks/types.test.js.map +1 -1
  361. package/dist/src/ide/detect-ide.test.js +32 -1
  362. package/dist/src/ide/detect-ide.test.js.map +1 -1
  363. package/dist/src/ide/ide-client.js +9 -4
  364. package/dist/src/ide/ide-client.js.map +1 -1
  365. package/dist/src/ide/ide-client.test.js +17 -0
  366. package/dist/src/ide/ide-client.test.js.map +1 -1
  367. package/dist/src/ide/ide-installer.test.js +1 -1
  368. package/dist/src/ide/ide-installer.test.js.map +1 -1
  369. package/dist/src/ide/types.d.ts +4 -4
  370. package/dist/src/index.d.ts +17 -1
  371. package/dist/src/index.js +18 -2
  372. package/dist/src/index.js.map +1 -1
  373. package/dist/src/mcp/auth-provider.d.ts +16 -0
  374. package/dist/src/mcp/auth-provider.js +7 -0
  375. package/dist/src/mcp/auth-provider.js.map +1 -0
  376. package/dist/src/mcp/google-auth-provider.d.ts +10 -2
  377. package/dist/src/mcp/google-auth-provider.js +28 -0
  378. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  379. package/dist/src/mcp/google-auth-provider.test.js +45 -0
  380. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  381. package/dist/src/mcp/oauth-provider.js +6 -2
  382. package/dist/src/mcp/oauth-provider.js.map +1 -1
  383. package/dist/src/mcp/oauth-provider.test.js +4 -1
  384. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  385. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  386. package/dist/src/mcp/oauth-utils.js +31 -2
  387. package/dist/src/mcp/oauth-utils.js.map +1 -1
  388. package/dist/src/mcp/oauth-utils.test.js +42 -0
  389. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  390. package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
  391. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  392. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  393. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  394. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  395. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  396. package/dist/src/output/json-formatter.d.ts +2 -2
  397. package/dist/src/output/json-formatter.js +6 -3
  398. package/dist/src/output/json-formatter.js.map +1 -1
  399. package/dist/src/output/json-formatter.test.js +37 -9
  400. package/dist/src/output/json-formatter.test.js.map +1 -1
  401. package/dist/src/output/stream-json-formatter.js +6 -0
  402. package/dist/src/output/stream-json-formatter.js.map +1 -1
  403. package/dist/src/output/stream-json-formatter.test.js +98 -100
  404. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  405. package/dist/src/output/types.d.ts +3 -0
  406. package/dist/src/output/types.js.map +1 -1
  407. package/dist/src/policy/config.js +140 -15
  408. package/dist/src/policy/config.js.map +1 -1
  409. package/dist/src/policy/config.test.js +21 -0
  410. package/dist/src/policy/config.test.js.map +1 -1
  411. package/dist/src/policy/persistence.test.d.ts +6 -0
  412. package/dist/src/policy/persistence.test.js +154 -0
  413. package/dist/src/policy/persistence.test.js.map +1 -0
  414. package/dist/src/policy/policies/agent.toml +31 -0
  415. package/dist/src/policy/policies/read-only.toml +5 -0
  416. package/dist/src/policy/policies/write.toml +5 -0
  417. package/dist/src/policy/policies/yolo.toml +1 -0
  418. package/dist/src/policy/policy-engine.d.ts +30 -1
  419. package/dist/src/policy/policy-engine.js +192 -5
  420. package/dist/src/policy/policy-engine.js.map +1 -1
  421. package/dist/src/policy/policy-engine.test.js +520 -3
  422. package/dist/src/policy/policy-engine.test.js.map +1 -1
  423. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  424. package/dist/src/policy/policy-updater.test.js +116 -0
  425. package/dist/src/policy/policy-updater.test.js.map +1 -0
  426. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  427. package/dist/src/policy/shell-safety.test.js +75 -0
  428. package/dist/src/policy/shell-safety.test.js.map +1 -0
  429. package/dist/src/policy/toml-loader.d.ts +3 -5
  430. package/dist/src/policy/toml-loader.js +12 -60
  431. package/dist/src/policy/toml-loader.js.map +1 -1
  432. package/dist/src/policy/toml-loader.test.js +38 -7
  433. package/dist/src/policy/toml-loader.test.js.map +1 -1
  434. package/dist/src/policy/types.d.ts +72 -1
  435. package/dist/src/policy/types.js +21 -0
  436. package/dist/src/policy/types.js.map +1 -1
  437. package/dist/src/policy/utils.d.ts +21 -0
  438. package/dist/src/policy/utils.js +42 -0
  439. package/dist/src/policy/utils.js.map +1 -0
  440. package/dist/src/policy/utils.test.d.ts +6 -0
  441. package/dist/src/policy/utils.test.js +64 -0
  442. package/dist/src/policy/utils.test.js.map +1 -0
  443. package/dist/src/resources/resource-registry.d.ts +30 -0
  444. package/dist/src/resources/resource-registry.js +57 -0
  445. package/dist/src/resources/resource-registry.js.map +1 -0
  446. package/dist/src/resources/resource-registry.test.d.ts +6 -0
  447. package/dist/src/resources/resource-registry.test.js +54 -0
  448. package/dist/src/resources/resource-registry.test.js.map +1 -0
  449. package/dist/src/routing/modelRouterService.js +0 -15
  450. package/dist/src/routing/modelRouterService.js.map +1 -1
  451. package/dist/src/routing/modelRouterService.test.js +0 -62
  452. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  453. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  454. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  455. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  456. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  457. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  458. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  459. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  460. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  461. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  462. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  463. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  464. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  465. package/dist/src/routing/strategies/overrideStrategy.js +3 -2
  466. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  467. package/dist/src/safety/checker-runner.js +17 -6
  468. package/dist/src/safety/checker-runner.js.map +1 -1
  469. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  470. package/dist/src/scheduler/tool-executor.js +198 -0
  471. package/dist/src/scheduler/tool-executor.js.map +1 -0
  472. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  473. package/dist/src/scheduler/tool-executor.test.js +231 -0
  474. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  475. package/dist/src/scheduler/types.d.ts +95 -0
  476. package/dist/src/scheduler/types.js +7 -0
  477. package/dist/src/scheduler/types.js.map +1 -0
  478. package/dist/src/services/chatCompressionService.d.ts +1 -0
  479. package/dist/src/services/chatCompressionService.js +38 -8
  480. package/dist/src/services/chatCompressionService.js.map +1 -1
  481. package/dist/src/services/chatCompressionService.test.js +35 -31
  482. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  483. package/dist/src/services/chatRecordingService.d.ts +14 -0
  484. package/dist/src/services/chatRecordingService.js +37 -0
  485. package/dist/src/services/chatRecordingService.js.map +1 -1
  486. package/dist/src/services/contextManager.d.ts +29 -0
  487. package/dist/src/services/contextManager.js +71 -0
  488. package/dist/src/services/contextManager.js.map +1 -0
  489. package/dist/src/services/contextManager.test.d.ts +6 -0
  490. package/dist/src/services/contextManager.test.js +104 -0
  491. package/dist/src/services/contextManager.test.js.map +1 -0
  492. package/dist/src/services/environmentSanitization.d.ts +15 -0
  493. package/dist/src/services/environmentSanitization.js +141 -0
  494. package/dist/src/services/environmentSanitization.js.map +1 -0
  495. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  496. package/dist/src/services/environmentSanitization.test.js +284 -0
  497. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  498. package/dist/src/services/fileSystemService.d.ts +0 -9
  499. package/dist/src/services/fileSystemService.js +0 -11
  500. package/dist/src/services/fileSystemService.js.map +1 -1
  501. package/dist/src/services/gitService.js +18 -2
  502. package/dist/src/services/gitService.js.map +1 -1
  503. package/dist/src/services/gitService.test.js +56 -0
  504. package/dist/src/services/gitService.test.js.map +1 -1
  505. package/dist/src/services/loopDetectionService.js +5 -4
  506. package/dist/src/services/loopDetectionService.js.map +1 -1
  507. package/dist/src/services/loopDetectionService.test.js +14 -8
  508. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  509. package/dist/src/services/modelConfig.golden.test.js +32 -0
  510. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  511. package/dist/src/services/modelConfig.integration.test.js +1 -1
  512. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  513. package/dist/src/services/modelConfigService.d.ts +4 -0
  514. package/dist/src/services/modelConfigService.js +8 -3
  515. package/dist/src/services/modelConfigService.js.map +1 -1
  516. package/dist/src/services/modelConfigService.test.js +221 -0
  517. package/dist/src/services/modelConfigService.test.js.map +1 -1
  518. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  519. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  520. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  521. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  522. package/dist/src/services/sessionSummaryService.js +131 -0
  523. package/dist/src/services/sessionSummaryService.js.map +1 -0
  524. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  525. package/dist/src/services/sessionSummaryService.test.js +785 -0
  526. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  527. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  528. package/dist/src/services/sessionSummaryUtils.js +129 -0
  529. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  530. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  531. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  532. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  533. package/dist/src/services/shellExecutionService.d.ts +4 -0
  534. package/dist/src/services/shellExecutionService.js +45 -27
  535. package/dist/src/services/shellExecutionService.js.map +1 -1
  536. package/dist/src/services/shellExecutionService.test.js +240 -8
  537. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  538. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  539. package/dist/src/services/test-data/resolved-aliases.golden.json +36 -0
  540. package/dist/src/skills/skillLoader.d.ts +28 -0
  541. package/dist/src/skills/skillLoader.js +77 -0
  542. package/dist/src/skills/skillLoader.js.map +1 -0
  543. package/dist/src/skills/skillLoader.test.d.ts +1 -0
  544. package/dist/src/skills/skillLoader.test.js +2 -0
  545. package/dist/src/skills/skillLoader.test.js.map +1 -0
  546. package/dist/src/skills/skillManager.d.ts +51 -0
  547. package/dist/src/skills/skillManager.js +89 -0
  548. package/dist/src/skills/skillManager.js.map +1 -0
  549. package/dist/src/skills/skillManager.test.d.ts +6 -0
  550. package/dist/src/skills/skillManager.test.js +128 -0
  551. package/dist/src/skills/skillManager.test.js.map +1 -0
  552. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  553. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +11 -7
  554. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -47
  555. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  556. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -18
  557. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  558. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -3
  559. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -5
  560. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  561. package/dist/src/telemetry/config.js +2 -0
  562. package/dist/src/telemetry/config.js.map +1 -1
  563. package/dist/src/telemetry/config.test.js +25 -0
  564. package/dist/src/telemetry/config.test.js.map +1 -1
  565. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  566. package/dist/src/telemetry/gcp-exporters.js +8 -4
  567. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  568. package/dist/src/telemetry/index.d.ts +2 -1
  569. package/dist/src/telemetry/index.js +2 -1
  570. package/dist/src/telemetry/index.js.map +1 -1
  571. package/dist/src/telemetry/loggers.d.ts +5 -3
  572. package/dist/src/telemetry/loggers.js +353 -334
  573. package/dist/src/telemetry/loggers.js.map +1 -1
  574. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  575. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  576. package/dist/src/telemetry/loggers.test.js +238 -31
  577. package/dist/src/telemetry/loggers.test.js.map +1 -1
  578. package/dist/src/telemetry/metrics.d.ts +22 -0
  579. package/dist/src/telemetry/metrics.js +32 -0
  580. package/dist/src/telemetry/metrics.js.map +1 -1
  581. package/dist/src/telemetry/metrics.test.js +64 -0
  582. package/dist/src/telemetry/metrics.test.js.map +1 -1
  583. package/dist/src/telemetry/sanitize.d.ts +25 -0
  584. package/dist/src/telemetry/sanitize.js +48 -0
  585. package/dist/src/telemetry/sanitize.js.map +1 -0
  586. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  587. package/dist/src/telemetry/sanitize.test.js +279 -0
  588. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  589. package/dist/src/telemetry/sdk.d.ts +9 -2
  590. package/dist/src/telemetry/sdk.js +142 -17
  591. package/dist/src/telemetry/sdk.js.map +1 -1
  592. package/dist/src/telemetry/sdk.test.js +130 -28
  593. package/dist/src/telemetry/sdk.test.js.map +1 -1
  594. package/dist/src/telemetry/semantic.js +1 -1
  595. package/dist/src/telemetry/semantic.js.map +1 -1
  596. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  597. package/dist/src/telemetry/startupProfiler.js +170 -0
  598. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  599. package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
  600. package/dist/src/telemetry/startupProfiler.test.js +285 -0
  601. package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
  602. package/dist/src/telemetry/telemetry.test.js +10 -3
  603. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  604. package/dist/src/telemetry/trace.js +2 -2
  605. package/dist/src/telemetry/trace.js.map +1 -1
  606. package/dist/src/telemetry/types.d.ts +62 -16
  607. package/dist/src/telemetry/types.js +157 -27
  608. package/dist/src/telemetry/types.js.map +1 -1
  609. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  610. package/dist/src/telemetry/uiTelemetry.js +2 -0
  611. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  612. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  613. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  614. package/dist/src/test-utils/mock-message-bus.d.ts +61 -0
  615. package/dist/src/test-utils/mock-message-bus.js +160 -0
  616. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  617. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  618. package/dist/src/test-utils/mock-tool.js +12 -11
  619. package/dist/src/test-utils/mock-tool.js.map +1 -1
  620. package/dist/src/tools/activate-skill.d.ts +27 -0
  621. package/dist/src/tools/activate-skill.js +120 -0
  622. package/dist/src/tools/activate-skill.js.map +1 -0
  623. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  624. package/dist/src/tools/activate-skill.test.js +95 -0
  625. package/dist/src/tools/activate-skill.test.js.map +1 -0
  626. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  627. package/dist/src/tools/confirmation-policy.test.js +142 -0
  628. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  629. package/dist/src/tools/edit.d.ts +27 -5
  630. package/dist/src/tools/edit.js +449 -137
  631. package/dist/src/tools/edit.js.map +1 -1
  632. package/dist/src/tools/edit.test.js +258 -526
  633. package/dist/src/tools/edit.test.js.map +1 -1
  634. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  635. package/dist/src/tools/get-internal-docs.js +129 -0
  636. package/dist/src/tools/get-internal-docs.js.map +1 -0
  637. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  638. package/dist/src/tools/get-internal-docs.test.js +57 -0
  639. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  640. package/dist/src/tools/glob.d.ts +2 -2
  641. package/dist/src/tools/glob.js +1 -1
  642. package/dist/src/tools/glob.js.map +1 -1
  643. package/dist/src/tools/glob.test.js +2 -1
  644. package/dist/src/tools/glob.test.js.map +1 -1
  645. package/dist/src/tools/grep.d.ts +2 -2
  646. package/dist/src/tools/grep.js +1 -1
  647. package/dist/src/tools/grep.js.map +1 -1
  648. package/dist/src/tools/grep.test.js +5 -4
  649. package/dist/src/tools/grep.test.js.map +1 -1
  650. package/dist/src/tools/ls.d.ts +2 -2
  651. package/dist/src/tools/ls.js +2 -2
  652. package/dist/src/tools/ls.js.map +1 -1
  653. package/dist/src/tools/ls.test.js +2 -1
  654. package/dist/src/tools/ls.test.js.map +1 -1
  655. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  656. package/dist/src/tools/mcp-client-manager.js +42 -9
  657. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  658. package/dist/src/tools/mcp-client-manager.test.js +66 -10
  659. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  660. package/dist/src/tools/mcp-client.d.ts +44 -6
  661. package/dist/src/tools/mcp-client.js +476 -176
  662. package/dist/src/tools/mcp-client.js.map +1 -1
  663. package/dist/src/tools/mcp-client.test.js +633 -36
  664. package/dist/src/tools/mcp-client.test.js.map +1 -1
  665. package/dist/src/tools/mcp-tool.d.ts +2 -2
  666. package/dist/src/tools/mcp-tool.js +20 -7
  667. package/dist/src/tools/mcp-tool.js.map +1 -1
  668. package/dist/src/tools/mcp-tool.test.js +35 -5
  669. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  670. package/dist/src/tools/memoryTool.d.ts +3 -3
  671. package/dist/src/tools/memoryTool.js +3 -4
  672. package/dist/src/tools/memoryTool.js.map +1 -1
  673. package/dist/src/tools/memoryTool.test.js +5 -2
  674. package/dist/src/tools/memoryTool.test.js.map +1 -1
  675. package/dist/src/tools/message-bus-integration.test.js +10 -37
  676. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  677. package/dist/src/tools/modifiable-tool.js.map +1 -1
  678. package/dist/src/tools/modifiable-tool.test.js +22 -13
  679. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  680. package/dist/src/tools/read-file.d.ts +2 -2
  681. package/dist/src/tools/read-file.js +2 -2
  682. package/dist/src/tools/read-file.js.map +1 -1
  683. package/dist/src/tools/read-file.test.js +3 -2
  684. package/dist/src/tools/read-file.test.js.map +1 -1
  685. package/dist/src/tools/read-many-files.d.ts +2 -2
  686. package/dist/src/tools/read-many-files.js +7 -6
  687. package/dist/src/tools/read-many-files.js.map +1 -1
  688. package/dist/src/tools/read-many-files.test.js +4 -3
  689. package/dist/src/tools/read-many-files.test.js.map +1 -1
  690. package/dist/src/tools/ripGrep.d.ts +3 -2
  691. package/dist/src/tools/ripGrep.js +18 -7
  692. package/dist/src/tools/ripGrep.js.map +1 -1
  693. package/dist/src/tools/ripGrep.test.js +60 -4
  694. package/dist/src/tools/ripGrep.test.js.map +1 -1
  695. package/dist/src/tools/shell.d.ts +5 -7
  696. package/dist/src/tools/shell.js +77 -51
  697. package/dist/src/tools/shell.js.map +1 -1
  698. package/dist/src/tools/shell.test.js +59 -63
  699. package/dist/src/tools/shell.test.js.map +1 -1
  700. package/dist/src/tools/tool-error.d.ts +2 -1
  701. package/dist/src/tools/tool-error.js +2 -0
  702. package/dist/src/tools/tool-error.js.map +1 -1
  703. package/dist/src/tools/tool-names.d.ts +17 -0
  704. package/dist/src/tools/tool-names.js +59 -0
  705. package/dist/src/tools/tool-names.js.map +1 -1
  706. package/dist/src/tools/tool-names.test.d.ts +6 -0
  707. package/dist/src/tools/tool-names.test.js +43 -0
  708. package/dist/src/tools/tool-names.test.js.map +1 -0
  709. package/dist/src/tools/tool-registry.d.ts +11 -7
  710. package/dist/src/tools/tool-registry.js +15 -10
  711. package/dist/src/tools/tool-registry.js.map +1 -1
  712. package/dist/src/tools/tool-registry.test.js +16 -11
  713. package/dist/src/tools/tool-registry.test.js.map +1 -1
  714. package/dist/src/tools/tools.d.ts +25 -6
  715. package/dist/src/tools/tools.js +44 -25
  716. package/dist/src/tools/tools.js.map +1 -1
  717. package/dist/src/tools/tools.test.js +3 -1
  718. package/dist/src/tools/tools.test.js.map +1 -1
  719. package/dist/src/tools/web-fetch.d.ts +2 -2
  720. package/dist/src/tools/web-fetch.js +22 -9
  721. package/dist/src/tools/web-fetch.js.map +1 -1
  722. package/dist/src/tools/web-fetch.test.js +18 -19
  723. package/dist/src/tools/web-fetch.test.js.map +1 -1
  724. package/dist/src/tools/web-search.d.ts +2 -2
  725. package/dist/src/tools/web-search.js +5 -5
  726. package/dist/src/tools/web-search.js.map +1 -1
  727. package/dist/src/tools/web-search.test.js +2 -1
  728. package/dist/src/tools/web-search.test.js.map +1 -1
  729. package/dist/src/tools/write-file.d.ts +2 -2
  730. package/dist/src/tools/write-file.js +10 -4
  731. package/dist/src/tools/write-file.js.map +1 -1
  732. package/dist/src/tools/write-file.test.js +4 -1
  733. package/dist/src/tools/write-file.test.js.map +1 -1
  734. package/dist/src/tools/write-todos.d.ts +2 -2
  735. package/dist/src/tools/write-todos.js +5 -4
  736. package/dist/src/tools/write-todos.js.map +1 -1
  737. package/dist/src/tools/write-todos.test.js +2 -1
  738. package/dist/src/tools/write-todos.test.js.map +1 -1
  739. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  740. package/dist/src/utils/bfsFileSearch.js +63 -23
  741. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  742. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  743. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  744. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  745. package/dist/src/utils/checkpointUtils.js +117 -0
  746. package/dist/src/utils/checkpointUtils.js.map +1 -0
  747. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  748. package/dist/src/utils/checkpointUtils.test.js +229 -0
  749. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  750. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  751. package/dist/src/utils/customHeaderUtils.js +34 -0
  752. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  753. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  754. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  755. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  756. package/dist/src/utils/debugLogger.d.ts +3 -0
  757. package/dist/src/utils/debugLogger.js +28 -0
  758. package/dist/src/utils/debugLogger.js.map +1 -1
  759. package/dist/src/utils/editCorrector.js +6 -5
  760. package/dist/src/utils/editCorrector.js.map +1 -1
  761. package/dist/src/utils/editCorrector.test.js +7 -3
  762. package/dist/src/utils/editCorrector.test.js.map +1 -1
  763. package/dist/src/utils/editor.d.ts +9 -1
  764. package/dist/src/utils/editor.js +23 -14
  765. package/dist/src/utils/editor.js.map +1 -1
  766. package/dist/src/utils/environmentContext.d.ts +1 -0
  767. package/dist/src/utils/environmentContext.js +4 -0
  768. package/dist/src/utils/environmentContext.js.map +1 -1
  769. package/dist/src/utils/environmentContext.test.js +2 -0
  770. package/dist/src/utils/environmentContext.test.js.map +1 -1
  771. package/dist/src/utils/errorReporting.d.ts +1 -1
  772. package/dist/src/utils/errorReporting.js +13 -12
  773. package/dist/src/utils/errorReporting.js.map +1 -1
  774. package/dist/src/utils/errorReporting.test.js +17 -14
  775. package/dist/src/utils/errorReporting.test.js.map +1 -1
  776. package/dist/src/utils/errors.d.ts +8 -0
  777. package/dist/src/utils/errors.js +39 -2
  778. package/dist/src/utils/errors.js.map +1 -1
  779. package/dist/src/utils/errors.test.d.ts +6 -0
  780. package/dist/src/utils/errors.test.js +155 -0
  781. package/dist/src/utils/errors.test.js.map +1 -0
  782. package/dist/src/utils/events.d.ts +49 -19
  783. package/dist/src/utils/events.js +21 -9
  784. package/dist/src/utils/events.js.map +1 -1
  785. package/dist/src/utils/events.test.js +25 -0
  786. package/dist/src/utils/events.test.js.map +1 -1
  787. package/dist/src/utils/exitCodes.d.ts +12 -0
  788. package/dist/src/utils/exitCodes.js +13 -0
  789. package/dist/src/utils/exitCodes.js.map +1 -0
  790. package/dist/src/utils/extensionLoader.d.ts +2 -2
  791. package/dist/src/utils/extensionLoader.js +5 -6
  792. package/dist/src/utils/extensionLoader.js.map +1 -1
  793. package/dist/src/utils/extensionLoader.test.js +11 -0
  794. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  795. package/dist/src/utils/fetch.d.ts +1 -1
  796. package/dist/src/utils/fetch.js +3 -3
  797. package/dist/src/utils/fetch.js.map +1 -1
  798. package/dist/src/utils/fileUtils.d.ts +4 -0
  799. package/dist/src/utils/fileUtils.js +53 -0
  800. package/dist/src/utils/fileUtils.js.map +1 -1
  801. package/dist/src/utils/fileUtils.test.js +127 -1
  802. package/dist/src/utils/fileUtils.test.js.map +1 -1
  803. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  804. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  805. package/dist/src/utils/flashFallback.test.js +1 -1
  806. package/dist/src/utils/flashFallback.test.js.map +1 -1
  807. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  808. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  809. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  810. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  811. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  812. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  813. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  814. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  815. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  816. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  817. package/dist/src/utils/getFolderStructure.js +7 -2
  818. package/dist/src/utils/getFolderStructure.js.map +1 -1
  819. package/dist/src/utils/googleErrors.js +31 -18
  820. package/dist/src/utils/googleErrors.js.map +1 -1
  821. package/dist/src/utils/googleErrors.test.js +10 -2
  822. package/dist/src/utils/googleErrors.test.js.map +1 -1
  823. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  824. package/dist/src/utils/googleQuotaErrors.js +32 -6
  825. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  826. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  827. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  828. package/dist/src/utils/memoryDiscovery.d.ts +5 -0
  829. package/dist/src/utils/memoryDiscovery.js +9 -5
  830. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  831. package/dist/src/utils/memoryDiscovery.test.js +31 -1
  832. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  833. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  834. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  835. package/dist/src/utils/package.d.ts +14 -0
  836. package/dist/src/utils/package.js +15 -2
  837. package/dist/src/utils/package.js.map +1 -1
  838. package/dist/src/utils/pathCorrector.js +12 -2
  839. package/dist/src/utils/pathCorrector.js.map +1 -1
  840. package/dist/src/utils/pathCorrector.test.js +6 -2
  841. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  842. package/dist/src/utils/retry.d.ts +11 -0
  843. package/dist/src/utils/retry.js +62 -21
  844. package/dist/src/utils/retry.js.map +1 -1
  845. package/dist/src/utils/retry.test.js +170 -10
  846. package/dist/src/utils/retry.test.js.map +1 -1
  847. package/dist/src/utils/schemaValidator.d.ts +1 -1
  848. package/dist/src/utils/schemaValidator.js +1 -1
  849. package/dist/src/utils/shell-permissions.d.ts +52 -0
  850. package/dist/src/utils/shell-permissions.js +188 -0
  851. package/dist/src/utils/shell-permissions.js.map +1 -0
  852. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  853. package/dist/src/utils/shell-permissions.test.js +369 -0
  854. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  855. package/dist/src/utils/shell-utils.d.ts +16 -47
  856. package/dist/src/utils/shell-utils.js +99 -195
  857. package/dist/src/utils/shell-utils.js.map +1 -1
  858. package/dist/src/utils/shell-utils.test.js +99 -288
  859. package/dist/src/utils/shell-utils.test.js.map +1 -1
  860. package/dist/src/utils/stdio.d.ts +2 -2
  861. package/dist/src/utils/stdio.js +2 -2
  862. package/dist/src/utils/stdio.js.map +1 -1
  863. package/dist/src/utils/stdio.test.js +5 -5
  864. package/dist/src/utils/stdio.test.js.map +1 -1
  865. package/dist/src/utils/summarizer.test.js +3 -2
  866. package/dist/src/utils/summarizer.test.js.map +1 -1
  867. package/dist/src/utils/terminal.d.ts +4 -0
  868. package/dist/src/utils/terminal.js +12 -0
  869. package/dist/src/utils/terminal.js.map +1 -1
  870. package/dist/src/utils/terminalSerializer.test.js +17 -0
  871. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  872. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  873. package/dist/src/utils/tokenCalculation.js +85 -0
  874. package/dist/src/utils/tokenCalculation.js.map +1 -0
  875. package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
  876. package/dist/src/utils/tokenCalculation.test.js +87 -0
  877. package/dist/src/utils/tokenCalculation.test.js.map +1 -0
  878. package/dist/src/utils/tool-utils.d.ts +9 -0
  879. package/dist/src/utils/tool-utils.js +29 -0
  880. package/dist/src/utils/tool-utils.js.map +1 -1
  881. package/dist/src/utils/tool-utils.test.js +17 -2
  882. package/dist/src/utils/tool-utils.test.js.map +1 -1
  883. package/dist/src/utils/version.d.ts +6 -0
  884. package/dist/src/utils/version.js +15 -0
  885. package/dist/src/utils/version.js.map +1 -0
  886. package/dist/src/utils/version.test.d.ts +6 -0
  887. package/dist/src/utils/version.test.js +39 -0
  888. package/dist/src/utils/version.test.js.map +1 -0
  889. package/dist/tsconfig.tsbuildinfo +1 -1
  890. package/package.json +8 -7
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { AgentDefinition } from './types.js';
7
+ /**
8
+ * DTO for TOML parsing - represents the raw structure of the TOML file.
9
+ */
10
+ interface TomlBaseAgentDefinition {
11
+ name: string;
12
+ display_name?: string;
13
+ }
14
+ interface TomlLocalAgentDefinition extends TomlBaseAgentDefinition {
15
+ kind: 'local';
16
+ description: string;
17
+ tools?: string[];
18
+ prompts: {
19
+ system_prompt: string;
20
+ query?: string;
21
+ };
22
+ model?: {
23
+ model?: string;
24
+ temperature?: number;
25
+ };
26
+ run?: {
27
+ max_turns?: number;
28
+ timeout_mins?: number;
29
+ };
30
+ }
31
+ interface TomlRemoteAgentDefinition extends TomlBaseAgentDefinition {
32
+ description?: string;
33
+ kind: 'remote';
34
+ agent_card_url: string;
35
+ }
36
+ type TomlAgentDefinition = TomlLocalAgentDefinition | TomlRemoteAgentDefinition;
37
+ /**
38
+ * Error thrown when an agent definition is invalid or cannot be loaded.
39
+ */
40
+ export declare class AgentLoadError extends Error {
41
+ filePath: string;
42
+ constructor(filePath: string, message: string);
43
+ }
44
+ /**
45
+ * Result of loading agents from a directory.
46
+ */
47
+ export interface AgentLoadResult {
48
+ agents: AgentDefinition[];
49
+ errors: AgentLoadError[];
50
+ }
51
+ /**
52
+ * Parses and validates an agent TOML file. Returns a validated array of RemoteAgentDefinitions or a single LocalAgentDefinition.
53
+ *
54
+ * @param filePath Path to the TOML file.
55
+ * @returns An array of parsed and validated TomlAgentDefinitions.
56
+ * @throws AgentLoadError if parsing or validation fails.
57
+ */
58
+ export declare function parseAgentToml(filePath: string): Promise<TomlAgentDefinition[]>;
59
+ /**
60
+ * Converts a TomlAgentDefinition DTO to the internal AgentDefinition structure.
61
+ *
62
+ * @param toml The parsed TOML definition.
63
+ * @returns The internal AgentDefinition.
64
+ */
65
+ export declare function tomlToAgentDefinition(toml: TomlAgentDefinition): AgentDefinition;
66
+ /**
67
+ * Loads all agents from a specific directory.
68
+ * Ignores non-TOML files and files starting with _.
69
+ *
70
+ * @param dir Directory path to scan.
71
+ * @returns Object containing successfully loaded agents and any errors.
72
+ */
73
+ export declare function loadAgentsFromDirectory(dir: string): Promise<AgentLoadResult>;
74
+ export {};
@@ -0,0 +1,248 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import TOML from '@iarna/toml';
7
+ import * as fs from 'node:fs/promises';
8
+ import {} from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import { z } from 'zod';
11
+ import { isValidToolName, DELEGATE_TO_AGENT_TOOL_NAME, } from '../tools/tool-names.js';
12
+ /**
13
+ * Error thrown when an agent definition is invalid or cannot be loaded.
14
+ */
15
+ export class AgentLoadError extends Error {
16
+ filePath;
17
+ constructor(filePath, message) {
18
+ super(`Failed to load agent from ${filePath}: ${message}`);
19
+ this.filePath = filePath;
20
+ this.name = 'AgentLoadError';
21
+ }
22
+ }
23
+ const nameSchema = z
24
+ .string()
25
+ .regex(/^[a-z0-9-_]+$/, 'Name must be a valid slug');
26
+ const localAgentSchema = z
27
+ .object({
28
+ kind: z.literal('local').optional().default('local'),
29
+ name: nameSchema,
30
+ description: z.string().min(1),
31
+ display_name: z.string().optional(),
32
+ tools: z
33
+ .array(z.string().refine((val) => isValidToolName(val), {
34
+ message: 'Invalid tool name',
35
+ }))
36
+ .optional(),
37
+ prompts: z.object({
38
+ system_prompt: z.string().min(1),
39
+ query: z.string().optional(),
40
+ }),
41
+ model: z
42
+ .object({
43
+ model: z.string().optional(),
44
+ temperature: z.number().optional(),
45
+ })
46
+ .optional(),
47
+ run: z
48
+ .object({
49
+ max_turns: z.number().int().positive().optional(),
50
+ timeout_mins: z.number().int().positive().optional(),
51
+ })
52
+ .optional(),
53
+ })
54
+ .strict();
55
+ const remoteAgentSchema = z
56
+ .object({
57
+ kind: z.literal('remote').optional().default('remote'),
58
+ name: nameSchema,
59
+ description: z.string().optional(),
60
+ display_name: z.string().optional(),
61
+ agent_card_url: z.string().url(),
62
+ })
63
+ .strict();
64
+ const remoteAgentsConfigSchema = z
65
+ .object({
66
+ remote_agents: z.array(remoteAgentSchema),
67
+ })
68
+ .strict();
69
+ // Use a Zod union to automatically discriminate between local and remote
70
+ // agent types. This is more robust than manually checking the 'kind' field,
71
+ // as it correctly handles cases where 'kind' is omitted by relying on
72
+ // the presence of unique fields like `agent_card_url` or `prompts`.
73
+ const agentUnionOptions = [
74
+ { schema: localAgentSchema, label: 'Local Agent' },
75
+ { schema: remoteAgentSchema, label: 'Remote Agent' },
76
+ ];
77
+ const singleAgentSchema = z.union([
78
+ agentUnionOptions[0].schema,
79
+ agentUnionOptions[1].schema,
80
+ ]);
81
+ function formatZodError(error, context) {
82
+ const issues = error.issues
83
+ .map((i) => {
84
+ // Handle union errors specifically to give better context
85
+ if (i.code === z.ZodIssueCode.invalid_union) {
86
+ return i.unionErrors
87
+ .map((unionError, index) => {
88
+ const label = agentUnionOptions[index]?.label ?? `Agent type #${index + 1}`;
89
+ const unionIssues = unionError.issues
90
+ .map((u) => `${u.path.join('.')}: ${u.message}`)
91
+ .join(', ');
92
+ return `(${label}) ${unionIssues}`;
93
+ })
94
+ .join('\n');
95
+ }
96
+ return `${i.path.join('.')}: ${i.message}`;
97
+ })
98
+ .join('\n');
99
+ return `${context}:\n${issues}`;
100
+ }
101
+ /**
102
+ * Parses and validates an agent TOML file. Returns a validated array of RemoteAgentDefinitions or a single LocalAgentDefinition.
103
+ *
104
+ * @param filePath Path to the TOML file.
105
+ * @returns An array of parsed and validated TomlAgentDefinitions.
106
+ * @throws AgentLoadError if parsing or validation fails.
107
+ */
108
+ export async function parseAgentToml(filePath) {
109
+ let content;
110
+ try {
111
+ content = await fs.readFile(filePath, 'utf-8');
112
+ }
113
+ catch (error) {
114
+ throw new AgentLoadError(filePath, `Could not read file: ${error.message}`);
115
+ }
116
+ let raw;
117
+ try {
118
+ raw = TOML.parse(content);
119
+ }
120
+ catch (error) {
121
+ throw new AgentLoadError(filePath, `TOML parsing failed: ${error.message}`);
122
+ }
123
+ // Check for `remote_agents` array
124
+ if (typeof raw === 'object' &&
125
+ raw !== null &&
126
+ 'remote_agents' in raw) {
127
+ const result = remoteAgentsConfigSchema.safeParse(raw);
128
+ if (!result.success) {
129
+ throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Remote Agents Config')}`);
130
+ }
131
+ return result.data.remote_agents;
132
+ }
133
+ // Single Agent Logic
134
+ const result = singleAgentSchema.safeParse(raw);
135
+ if (!result.success) {
136
+ throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Agent Definition')}`);
137
+ }
138
+ const toml = result.data;
139
+ // Prevent sub-agents from delegating to other agents (to prevent recursion/complexity)
140
+ if ('tools' in toml && toml.tools?.includes(DELEGATE_TO_AGENT_TOOL_NAME)) {
141
+ throw new AgentLoadError(filePath, `Validation failed: tools list cannot include '${DELEGATE_TO_AGENT_TOOL_NAME}'. Sub-agents cannot delegate to other agents.`);
142
+ }
143
+ return [toml];
144
+ }
145
+ /**
146
+ * Converts a TomlAgentDefinition DTO to the internal AgentDefinition structure.
147
+ *
148
+ * @param toml The parsed TOML definition.
149
+ * @returns The internal AgentDefinition.
150
+ */
151
+ export function tomlToAgentDefinition(toml) {
152
+ const inputConfig = {
153
+ inputs: {
154
+ query: {
155
+ type: 'string',
156
+ description: 'The task for the agent.',
157
+ required: false,
158
+ },
159
+ },
160
+ };
161
+ if (toml.kind === 'remote') {
162
+ return {
163
+ kind: 'remote',
164
+ name: toml.name,
165
+ description: toml.description || '(Loading description...)',
166
+ displayName: toml.display_name,
167
+ agentCardUrl: toml.agent_card_url,
168
+ inputConfig,
169
+ };
170
+ }
171
+ // If a model is specified, use it. Otherwise, inherit
172
+ const modelName = toml.model?.model || 'inherit';
173
+ return {
174
+ kind: 'local',
175
+ name: toml.name,
176
+ description: toml.description,
177
+ displayName: toml.display_name,
178
+ promptConfig: {
179
+ systemPrompt: toml.prompts.system_prompt,
180
+ query: toml.prompts.query,
181
+ },
182
+ modelConfig: {
183
+ model: modelName,
184
+ temp: toml.model?.temperature ?? 1,
185
+ top_p: 0.95,
186
+ },
187
+ runConfig: {
188
+ max_turns: toml.run?.max_turns,
189
+ max_time_minutes: toml.run?.timeout_mins || 5,
190
+ },
191
+ toolConfig: toml.tools
192
+ ? {
193
+ tools: toml.tools,
194
+ }
195
+ : undefined,
196
+ inputConfig,
197
+ };
198
+ }
199
+ /**
200
+ * Loads all agents from a specific directory.
201
+ * Ignores non-TOML files and files starting with _.
202
+ *
203
+ * @param dir Directory path to scan.
204
+ * @returns Object containing successfully loaded agents and any errors.
205
+ */
206
+ export async function loadAgentsFromDirectory(dir) {
207
+ const result = {
208
+ agents: [],
209
+ errors: [],
210
+ };
211
+ let dirEntries;
212
+ try {
213
+ dirEntries = await fs.readdir(dir, { withFileTypes: true });
214
+ }
215
+ catch (error) {
216
+ // If directory doesn't exist, just return empty
217
+ if (error.code === 'ENOENT') {
218
+ return result;
219
+ }
220
+ result.errors.push(new AgentLoadError(dir, `Could not list directory: ${error.message}`));
221
+ return result;
222
+ }
223
+ const files = dirEntries
224
+ .filter((entry) => entry.isFile() &&
225
+ entry.name.endsWith('.toml') &&
226
+ !entry.name.startsWith('_'))
227
+ .map((entry) => entry.name);
228
+ for (const file of files) {
229
+ const filePath = path.join(dir, file);
230
+ try {
231
+ const tomls = await parseAgentToml(filePath);
232
+ for (const toml of tomls) {
233
+ const agent = tomlToAgentDefinition(toml);
234
+ result.agents.push(agent);
235
+ }
236
+ }
237
+ catch (error) {
238
+ if (error instanceof AgentLoadError) {
239
+ result.errors.push(error);
240
+ }
241
+ else {
242
+ result.errors.push(new AgentLoadError(filePath, `Unexpected error: ${error.message}`));
243
+ }
244
+ }
245
+ }
246
+ return result;
247
+ }
248
+ //# sourceMappingURL=toml-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toml-loader.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,309 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import * as os from 'node:os';
10
+ import { parseAgentToml, tomlToAgentDefinition, loadAgentsFromDirectory, AgentLoadError, } from './toml-loader.js';
11
+ import { GEMINI_MODEL_ALIAS_PRO } from '../config/models.js';
12
+ describe('toml-loader', () => {
13
+ let tempDir;
14
+ beforeEach(async () => {
15
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'agent-test-'));
16
+ });
17
+ afterEach(async () => {
18
+ if (tempDir) {
19
+ await fs.rm(tempDir, { recursive: true, force: true });
20
+ }
21
+ });
22
+ async function writeAgentToml(content, fileName = 'test.toml') {
23
+ const filePath = path.join(tempDir, fileName);
24
+ await fs.writeFile(filePath, content);
25
+ return filePath;
26
+ }
27
+ describe('parseAgentToml', () => {
28
+ it('should parse a valid MVA TOML file', async () => {
29
+ const filePath = await writeAgentToml(`
30
+ name = "test-agent"
31
+ description = "A test agent"
32
+ [prompts]
33
+ system_prompt = "You are a test agent."
34
+ `);
35
+ const result = await parseAgentToml(filePath);
36
+ expect(result).toHaveLength(1);
37
+ expect(result[0]).toMatchObject({
38
+ name: 'test-agent',
39
+ description: 'A test agent',
40
+ prompts: {
41
+ system_prompt: 'You are a test agent.',
42
+ },
43
+ });
44
+ });
45
+ it('should parse a valid remote agent TOML file', async () => {
46
+ const filePath = await writeAgentToml(`
47
+ kind = "remote"
48
+ name = "remote-agent"
49
+ description = "A remote agent"
50
+ agent_card_url = "https://example.com/card"
51
+ `);
52
+ const result = await parseAgentToml(filePath);
53
+ expect(result).toHaveLength(1);
54
+ expect(result[0]).toEqual({
55
+ kind: 'remote',
56
+ name: 'remote-agent',
57
+ description: 'A remote agent',
58
+ agent_card_url: 'https://example.com/card',
59
+ });
60
+ });
61
+ it('should infer remote agent kind from agent_card_url', async () => {
62
+ const filePath = await writeAgentToml(`
63
+ name = "inferred-remote"
64
+ description = "Inferred"
65
+ agent_card_url = "https://example.com/inferred"
66
+ `);
67
+ const result = await parseAgentToml(filePath);
68
+ expect(result).toHaveLength(1);
69
+ expect(result[0]).toEqual({
70
+ kind: 'remote',
71
+ name: 'inferred-remote',
72
+ description: 'Inferred',
73
+ agent_card_url: 'https://example.com/inferred',
74
+ });
75
+ });
76
+ it('should parse a remote agent without description', async () => {
77
+ const filePath = await writeAgentToml(`
78
+ kind = "remote"
79
+ name = "no-description-remote"
80
+ agent_card_url = "https://example.com/card"
81
+ `);
82
+ const result = await parseAgentToml(filePath);
83
+ expect(result).toHaveLength(1);
84
+ expect(result[0]).toEqual({
85
+ kind: 'remote',
86
+ name: 'no-description-remote',
87
+ agent_card_url: 'https://example.com/card',
88
+ });
89
+ expect(result[0].description).toBeUndefined();
90
+ // defined after conversion to AgentDefinition
91
+ const agentDef = tomlToAgentDefinition(result[0]);
92
+ expect(agentDef.description).toBe('(Loading description...)');
93
+ });
94
+ it('should parse multiple agents in one file', async () => {
95
+ const filePath = await writeAgentToml(`
96
+ [[remote_agents]]
97
+ kind = "remote"
98
+ name = "agent-1"
99
+ description = "Remote 1"
100
+ agent_card_url = "https://example.com/1"
101
+
102
+ [[remote_agents]]
103
+ kind = "remote"
104
+ name = "agent-2"
105
+ description = "Remote 2"
106
+ agent_card_url = "https://example.com/2"
107
+ `);
108
+ const result = await parseAgentToml(filePath);
109
+ expect(result).toHaveLength(2);
110
+ expect(result[0].name).toBe('agent-1');
111
+ expect(result[0].kind).toBe('remote');
112
+ expect(result[1].name).toBe('agent-2');
113
+ expect(result[1].kind).toBe('remote');
114
+ });
115
+ it('should allow omitting kind in remote_agents block', async () => {
116
+ const filePath = await writeAgentToml(`
117
+ [[remote_agents]]
118
+ name = "implicit-remote-1"
119
+ agent_card_url = "https://example.com/1"
120
+
121
+ [[remote_agents]]
122
+ name = "implicit-remote-2"
123
+ agent_card_url = "https://example.com/2"
124
+ `);
125
+ const result = await parseAgentToml(filePath);
126
+ expect(result).toHaveLength(2);
127
+ expect(result[0]).toMatchObject({
128
+ kind: 'remote',
129
+ name: 'implicit-remote-1',
130
+ agent_card_url: 'https://example.com/1',
131
+ });
132
+ expect(result[1]).toMatchObject({
133
+ kind: 'remote',
134
+ name: 'implicit-remote-2',
135
+ agent_card_url: 'https://example.com/2',
136
+ });
137
+ });
138
+ it('should throw AgentLoadError if file reading fails', async () => {
139
+ const filePath = path.join(tempDir, 'non-existent.toml');
140
+ await expect(parseAgentToml(filePath)).rejects.toThrow(AgentLoadError);
141
+ });
142
+ it('should throw AgentLoadError if TOML parsing fails', async () => {
143
+ const filePath = await writeAgentToml('invalid toml [');
144
+ await expect(parseAgentToml(filePath)).rejects.toThrow(AgentLoadError);
145
+ });
146
+ it('should throw AgentLoadError if validation fails (missing required field)', async () => {
147
+ const filePath = await writeAgentToml(`
148
+ name = "test-agent"
149
+ # missing description
150
+ [prompts]
151
+ system_prompt = "You are a test agent."
152
+ `);
153
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed/);
154
+ });
155
+ it('should throw AgentLoadError if name is not a slug', async () => {
156
+ const filePath = await writeAgentToml(`
157
+ name = "Test Agent!"
158
+ description = "A test agent"
159
+ [prompts]
160
+ system_prompt = "You are a test agent."
161
+ `);
162
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Name must be a valid slug/);
163
+ });
164
+ it('should throw AgentLoadError if delegate_to_agent is included in tools', async () => {
165
+ const filePath = await writeAgentToml(`
166
+ name = "test-agent"
167
+ description = "A test agent"
168
+ tools = ["run_shell_command", "delegate_to_agent"]
169
+ [prompts]
170
+ system_prompt = "You are a test agent."
171
+ `);
172
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/tools list cannot include 'delegate_to_agent'/);
173
+ });
174
+ it('should throw AgentLoadError if tools contains invalid names', async () => {
175
+ const filePath = await writeAgentToml(`
176
+ name = "test-agent"
177
+ description = "A test agent"
178
+ tools = ["not-a-tool"]
179
+ [prompts]
180
+ system_prompt = "You are a test agent."
181
+ `);
182
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed:[\s\S]*tools.0: Invalid tool name/);
183
+ });
184
+ it('should throw AgentLoadError if file contains both single and multiple agents', async () => {
185
+ const filePath = await writeAgentToml(`
186
+ name = "top-level-agent"
187
+ description = "I should not be here"
188
+ [prompts]
189
+ system_prompt = "..."
190
+
191
+ [[remote_agents]]
192
+ kind = "remote"
193
+ name = "array-agent"
194
+ description = "I am in an array"
195
+ agent_card_url = "https://example.com/card"
196
+ `);
197
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed/);
198
+ });
199
+ it('should show both options in error message when validation fails ambiguously', async () => {
200
+ const filePath = await writeAgentToml(`
201
+ name = "ambiguous-agent"
202
+ description = "I have neither prompts nor card"
203
+ `);
204
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed: Agent Definition:\n\(Local Agent\) prompts: Required\n\(Remote Agent\) agent_card_url: Required/);
205
+ });
206
+ });
207
+ describe('tomlToAgentDefinition', () => {
208
+ it('should convert valid TOML to AgentDefinition with defaults', () => {
209
+ const toml = {
210
+ kind: 'local',
211
+ name: 'test-agent',
212
+ description: 'A test agent',
213
+ prompts: {
214
+ system_prompt: 'You are a test agent.',
215
+ },
216
+ };
217
+ const result = tomlToAgentDefinition(toml);
218
+ expect(result).toMatchObject({
219
+ name: 'test-agent',
220
+ description: 'A test agent',
221
+ promptConfig: {
222
+ systemPrompt: 'You are a test agent.',
223
+ },
224
+ modelConfig: {
225
+ model: 'inherit',
226
+ top_p: 0.95,
227
+ },
228
+ runConfig: {
229
+ max_time_minutes: 5,
230
+ },
231
+ inputConfig: {
232
+ inputs: {
233
+ query: {
234
+ type: 'string',
235
+ required: false,
236
+ },
237
+ },
238
+ },
239
+ });
240
+ });
241
+ it('should pass through model aliases', () => {
242
+ const toml = {
243
+ kind: 'local',
244
+ name: 'test-agent',
245
+ description: 'A test agent',
246
+ model: {
247
+ model: GEMINI_MODEL_ALIAS_PRO,
248
+ },
249
+ prompts: {
250
+ system_prompt: 'You are a test agent.',
251
+ },
252
+ };
253
+ const result = tomlToAgentDefinition(toml);
254
+ expect(result.modelConfig.model).toBe(GEMINI_MODEL_ALIAS_PRO);
255
+ });
256
+ it('should pass through unknown model names (e.g. auto)', () => {
257
+ const toml = {
258
+ kind: 'local',
259
+ name: 'test-agent',
260
+ description: 'A test agent',
261
+ model: {
262
+ model: 'auto',
263
+ },
264
+ prompts: {
265
+ system_prompt: 'You are a test agent.',
266
+ },
267
+ };
268
+ const result = tomlToAgentDefinition(toml);
269
+ expect(result.modelConfig.model).toBe('auto');
270
+ });
271
+ });
272
+ describe('loadAgentsFromDirectory', () => {
273
+ it('should load definitions from a directory', async () => {
274
+ await writeAgentToml(`
275
+ name = "agent-1"
276
+ description = "Agent 1"
277
+ [prompts]
278
+ system_prompt = "Prompt 1"
279
+ `, 'valid.toml');
280
+ // Create a non-TOML file
281
+ await fs.writeFile(path.join(tempDir, 'other.txt'), 'content');
282
+ // Create a hidden file
283
+ await writeAgentToml(`
284
+ name = "hidden"
285
+ description = "Hidden"
286
+ [prompts]
287
+ system_prompt = "Hidden"
288
+ `, '_hidden.toml');
289
+ const result = await loadAgentsFromDirectory(tempDir);
290
+ expect(result.agents).toHaveLength(1);
291
+ expect(result.agents[0].name).toBe('agent-1');
292
+ expect(result.errors).toHaveLength(0);
293
+ });
294
+ it('should return empty result if directory does not exist', async () => {
295
+ const nonExistentDir = path.join(tempDir, 'does-not-exist');
296
+ const result = await loadAgentsFromDirectory(nonExistentDir);
297
+ expect(result.agents).toHaveLength(0);
298
+ expect(result.errors).toHaveLength(0);
299
+ });
300
+ it('should capture errors for malformed individual files', async () => {
301
+ // Create a malformed TOML file
302
+ await writeAgentToml('invalid toml [', 'malformed.toml');
303
+ const result = await loadAgentsFromDirectory(tempDir);
304
+ expect(result.agents).toHaveLength(0);
305
+ expect(result.errors).toHaveLength(1);
306
+ });
307
+ });
308
+ });
309
+ //# sourceMappingURL=toml-loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toml-loader.test.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,QAAQ,GAAG,WAAW;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;OAKrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,cAAc;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,uBAAuB;iBACvC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;OAKrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,gBAAgB;gBAC7B,cAAc,EAAE,0BAA0B;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;OAIrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,8BAA8B;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;OAIrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,uBAAuB;gBAC7B,cAAc,EAAE,0BAA0B;aAC3C,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;YAE9C,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;;;;;;;;OAYrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;;;;OAQrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,mBAAmB;gBACzB,cAAc,EAAE,uBAAuB;aACxC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,mBAAmB;gBACzB,cAAc,EAAE,uBAAuB;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACzD,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;OAKrC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;OAKrC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,2BAA2B,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;;OAMrC,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,+CAA+C,CAChD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;;OAMrC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,qDAAqD,CACtD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;;;;;;;WAWjC,CAAC,CAAC;YAEP,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;OAGrC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpD,oHAAoH,CACrH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,cAAc;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,uBAAuB;iBACvC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBAC3B,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,cAAc;gBAC3B,YAAY,EAAE;oBACZ,YAAY,EAAE,uBAAuB;iBACtC;gBACD,WAAW,EAAE;oBACX,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,IAAI;iBACZ;gBACD,SAAS,EAAE;oBACT,gBAAgB,EAAE,CAAC;iBACpB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE;wBACN,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,KAAK;yBAChB;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE;oBACL,KAAK,EAAE,sBAAsB;iBAC9B;gBACD,OAAO,EAAE;oBACP,aAAa,EAAE,uBAAuB;iBACvC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAyB,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;iBACd;gBACD,OAAO,EAAE;oBACP,aAAa,EAAE,uBAAuB;iBACvC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAyB,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,cAAc,CAClB;;;;;OAKD,EACC,YAAY,CACb,CAAC;YAEF,yBAAyB;YACzB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;YAE/D,uBAAuB;YACvB,MAAM,cAAc,CAClB;;;;;OAKD,EACC,cAAc,CACf,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,cAAc,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,+BAA+B;YAC/B,MAAM,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}