@machina.ai/cell-cli-core 1.36.0-rc1 → 1.38.1-rc2

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 (733) hide show
  1. package/dist/docs/AFTER_MERGE_PROMPT.md +3 -10
  2. package/dist/docs/assets/theme-tokyonight-dark.png +0 -0
  3. package/dist/docs/changelogs/index.md +49 -0
  4. package/dist/docs/changelogs/latest.md +355 -458
  5. package/dist/docs/changelogs/preview.md +402 -363
  6. package/dist/docs/cli/acp-mode.md +126 -0
  7. package/dist/docs/cli/cli-reference.md +1 -1
  8. package/dist/docs/cli/notifications.md +5 -5
  9. package/dist/docs/cli/plan-mode.md +26 -10
  10. package/dist/docs/cli/sandbox.md +53 -1
  11. package/dist/docs/cli/settings.md +52 -48
  12. package/dist/docs/cli/themes.md +5 -0
  13. package/dist/docs/core/index.md +2 -2
  14. package/dist/docs/core/remote-agents.md +14 -18
  15. package/dist/docs/core/subagents.md +194 -47
  16. package/dist/docs/get-started/authentication.md +2 -2
  17. package/dist/docs/get-started/gemini-3.md +1 -1
  18. package/dist/docs/get-started/index.md +127 -1
  19. package/dist/docs/get-started/installation.md +7 -0
  20. package/dist/docs/hooks/index.md +6 -6
  21. package/dist/docs/ide-integration/index.md +99 -24
  22. package/dist/docs/index.md +0 -2
  23. package/dist/docs/redirects.json +1 -0
  24. package/dist/docs/reference/commands.md +1 -3
  25. package/dist/docs/reference/configuration.md +220 -99
  26. package/dist/docs/reference/keyboard-shortcuts.md +21 -8
  27. package/dist/docs/reference/policy-engine.md +36 -31
  28. package/dist/docs/reference/tools.md +56 -23
  29. package/dist/docs/release-confidence.md +0 -6
  30. package/dist/docs/releases.md +4 -0
  31. package/dist/docs/resources/quota-and-pricing.md +23 -9
  32. package/dist/docs/sidebar.json +11 -4
  33. package/dist/docs/tools/mcp-server.md +3 -3
  34. package/dist/docs/tools/planning.md +6 -4
  35. package/dist/docs/tools/web-fetch.md +3 -0
  36. package/dist/package.json +2 -1
  37. package/dist/src/agent/agent-session.test.js +14 -6
  38. package/dist/src/agent/agent-session.test.js.map +1 -1
  39. package/dist/src/agent/event-translator.js +2 -1
  40. package/dist/src/agent/event-translator.js.map +1 -1
  41. package/dist/src/agent/event-translator.test.js +1 -0
  42. package/dist/src/agent/event-translator.test.js.map +1 -1
  43. package/dist/src/agent/legacy-agent-session.d.ts +47 -4
  44. package/dist/src/agent/legacy-agent-session.js +38 -15
  45. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  46. package/dist/src/agent/legacy-agent-session.test.js +60 -73
  47. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  48. package/dist/src/agent/mock.js +7 -1
  49. package/dist/src/agent/mock.js.map +1 -1
  50. package/dist/src/agent/mock.test.js +1 -1
  51. package/dist/src/agent/mock.test.js.map +1 -1
  52. package/dist/src/agent/types.d.ts +34 -1
  53. package/dist/src/agents/a2a-client-manager.js +3 -3
  54. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  55. package/dist/src/agents/agent-scheduler.js +6 -1
  56. package/dist/src/agents/agent-scheduler.js.map +1 -1
  57. package/dist/src/agents/agent-scheduler.test.js +38 -0
  58. package/dist/src/agents/agent-scheduler.test.js.map +1 -1
  59. package/dist/src/agents/agentLoader.d.ts +12 -12
  60. package/dist/src/agents/agentLoader.js +1 -0
  61. package/dist/src/agents/agentLoader.js.map +1 -1
  62. package/dist/src/agents/auth-provider/api-key-provider.test.js +18 -2
  63. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -1
  64. package/dist/src/agents/auth-provider/value-resolver.test.js +30 -0
  65. package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -1
  66. package/dist/src/agents/browser/analyzeScreenshot.js +36 -6
  67. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -1
  68. package/dist/src/agents/browser/analyzeScreenshot.test.js +35 -3
  69. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -1
  70. package/dist/src/agents/browser/automationOverlay.js +2 -10
  71. package/dist/src/agents/browser/automationOverlay.js.map +1 -1
  72. package/dist/src/agents/browser/browserAgentDefinition.js +10 -3
  73. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
  74. package/dist/src/agents/browser/browserAgentFactory.d.ts +11 -3
  75. package/dist/src/agents/browser/browserAgentFactory.js +171 -129
  76. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
  77. package/dist/src/agents/browser/browserAgentFactory.test.js +99 -13
  78. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
  79. package/dist/src/agents/browser/browserAgentInvocation.d.ts +1 -0
  80. package/dist/src/agents/browser/browserAgentInvocation.js +87 -27
  81. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  82. package/dist/src/agents/browser/browserAgentInvocation.test.js +107 -7
  83. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
  84. package/dist/src/agents/browser/browserManager.d.ts +89 -8
  85. package/dist/src/agents/browser/browserManager.js +357 -74
  86. package/dist/src/agents/browser/browserManager.js.map +1 -1
  87. package/dist/src/agents/browser/browserManager.test.js +540 -19
  88. package/dist/src/agents/browser/browserManager.test.js.map +1 -1
  89. package/dist/src/agents/browser/inputBlocker.d.ts +4 -4
  90. package/dist/src/agents/browser/inputBlocker.js +8 -18
  91. package/dist/src/agents/browser/inputBlocker.js.map +1 -1
  92. package/dist/src/agents/browser/inputBlocker.test.js +31 -3
  93. package/dist/src/agents/browser/inputBlocker.test.js.map +1 -1
  94. package/dist/src/agents/browser/mcpToolWrapper.d.ts +1 -1
  95. package/dist/src/agents/browser/mcpToolWrapper.js +9 -6
  96. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
  97. package/dist/src/agents/browser/mcpToolWrapper.test.js +2 -2
  98. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
  99. package/dist/src/agents/browser/modelAvailability.d.ts +5 -0
  100. package/dist/src/agents/browser/modelAvailability.js +12 -0
  101. package/dist/src/agents/browser/modelAvailability.js.map +1 -1
  102. package/dist/src/agents/browser/snapshotSuperseder.d.ts +31 -0
  103. package/dist/src/agents/browser/snapshotSuperseder.js +101 -0
  104. package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -0
  105. package/dist/src/agents/browser/snapshotSuperseder.test.js +158 -0
  106. package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -0
  107. package/dist/src/agents/local-executor.d.ts +9 -0
  108. package/dist/src/agents/local-executor.js +144 -200
  109. package/dist/src/agents/local-executor.js.map +1 -1
  110. package/dist/src/agents/local-executor.test.js +500 -115
  111. package/dist/src/agents/local-executor.test.js.map +1 -1
  112. package/dist/src/agents/local-invocation.d.ts +1 -0
  113. package/dist/src/agents/local-invocation.js +19 -9
  114. package/dist/src/agents/local-invocation.js.map +1 -1
  115. package/dist/src/agents/local-invocation.test.js +24 -0
  116. package/dist/src/agents/local-invocation.test.js.map +1 -1
  117. package/dist/src/agents/memory-manager-agent.js +1 -0
  118. package/dist/src/agents/memory-manager-agent.js.map +1 -1
  119. package/dist/src/agents/memory-manager-agent.test.js +6 -0
  120. package/dist/src/agents/memory-manager-agent.test.js.map +1 -1
  121. package/dist/src/agents/registry.js +19 -11
  122. package/dist/src/agents/registry.js.map +1 -1
  123. package/dist/src/agents/registry.test.js +67 -0
  124. package/dist/src/agents/registry.test.js.map +1 -1
  125. package/dist/src/agents/skill-extraction-agent.d.ts +24 -0
  126. package/dist/src/agents/skill-extraction-agent.js +269 -0
  127. package/dist/src/agents/skill-extraction-agent.js.map +1 -0
  128. package/dist/src/agents/types.d.ts +20 -0
  129. package/dist/src/agents/types.js.map +1 -1
  130. package/dist/src/availability/policyCatalog.d.ts +2 -1
  131. package/dist/src/availability/policyCatalog.js +1 -1
  132. package/dist/src/availability/policyCatalog.js.map +1 -1
  133. package/dist/src/availability/policyHelpers.js +43 -32
  134. package/dist/src/availability/policyHelpers.js.map +1 -1
  135. package/dist/src/availability/policyHelpers.test.js +12 -1
  136. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  137. package/dist/src/code_assist/admin/admin_controls.js +1 -1
  138. package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
  139. package/dist/src/code_assist/experiments/flagNames.d.ts +1 -0
  140. package/dist/src/code_assist/experiments/flagNames.js +1 -0
  141. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  142. package/dist/src/code_assist/oauth2.js +8 -3
  143. package/dist/src/code_assist/oauth2.js.map +1 -1
  144. package/dist/src/code_assist/oauth2.test.js +57 -0
  145. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  146. package/dist/src/code_assist/server.js +1 -1
  147. package/dist/src/code_assist/server.js.map +1 -1
  148. package/dist/src/code_assist/setup.js +5 -2
  149. package/dist/src/code_assist/setup.js.map +1 -1
  150. package/dist/src/code_assist/setup.test.js +27 -1
  151. package/dist/src/code_assist/setup.test.js.map +1 -1
  152. package/dist/src/code_assist/types.d.ts +80 -80
  153. package/dist/src/commands/memory.js +1 -1
  154. package/dist/src/commands/memory.js.map +1 -1
  155. package/dist/src/config/agent-loop-context.d.ts +2 -0
  156. package/dist/src/config/config.d.ts +91 -23
  157. package/dist/src/config/config.js +238 -79
  158. package/dist/src/config/config.js.map +1 -1
  159. package/dist/src/config/config.test.js +189 -15
  160. package/dist/src/config/config.test.js.map +1 -1
  161. package/dist/src/config/defaultModelConfigs.js +9 -0
  162. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  163. package/dist/src/config/extensions/integrity.js +1 -1
  164. package/dist/src/config/extensions/integrity.js.map +1 -1
  165. package/dist/src/config/memory.d.ts +1 -0
  166. package/dist/src/config/memory.js +6 -0
  167. package/dist/src/config/memory.js.map +1 -1
  168. package/dist/src/config/projectRegistry.js +5 -3
  169. package/dist/src/config/projectRegistry.js.map +1 -1
  170. package/dist/src/config/scoped-config.d.ts +30 -0
  171. package/dist/src/config/scoped-config.js +69 -0
  172. package/dist/src/config/scoped-config.js.map +1 -0
  173. package/dist/src/config/scoped-config.test.d.ts +6 -0
  174. package/dist/src/config/scoped-config.test.js +161 -0
  175. package/dist/src/config/scoped-config.test.js.map +1 -0
  176. package/dist/src/config/storage.d.ts +3 -0
  177. package/dist/src/config/storage.js +9 -0
  178. package/dist/src/config/storage.js.map +1 -1
  179. package/dist/src/config/storage.test.js +10 -5
  180. package/dist/src/config/storage.test.js.map +1 -1
  181. package/dist/src/config/topicState.d.ts +21 -0
  182. package/dist/src/config/topicState.js +41 -0
  183. package/dist/src/config/topicState.js.map +1 -0
  184. package/dist/src/confirmation-bus/types.d.ts +13 -4
  185. package/dist/src/confirmation-bus/types.js +2 -0
  186. package/dist/src/confirmation-bus/types.js.map +1 -1
  187. package/dist/src/context/agentHistoryProvider.d.ts +45 -0
  188. package/dist/src/context/agentHistoryProvider.js +294 -0
  189. package/dist/src/context/agentHistoryProvider.js.map +1 -0
  190. package/dist/src/context/agentHistoryProvider.test.d.ts +6 -0
  191. package/dist/src/context/agentHistoryProvider.test.js +357 -0
  192. package/dist/src/context/agentHistoryProvider.test.js.map +1 -0
  193. package/dist/src/context/chatCompressionService.js.map +1 -0
  194. package/dist/src/context/chatCompressionService.test.js.map +1 -0
  195. package/dist/src/context/contextCompressionService.d.ts +30 -0
  196. package/dist/src/context/contextCompressionService.js +405 -0
  197. package/dist/src/context/contextCompressionService.js.map +1 -0
  198. package/dist/src/context/contextCompressionService.test.js +253 -0
  199. package/dist/src/context/contextCompressionService.test.js.map +1 -0
  200. package/dist/src/{services/contextManager.d.ts → context/memoryContextManager.d.ts} +3 -1
  201. package/dist/src/{services/contextManager.js → context/memoryContextManager.js} +20 -11
  202. package/dist/src/context/memoryContextManager.js.map +1 -0
  203. package/dist/src/{services/contextManager.test.js → context/memoryContextManager.test.js} +42 -33
  204. package/dist/src/context/memoryContextManager.test.js.map +1 -0
  205. package/dist/src/context/profiles.d.ts +7 -0
  206. package/dist/src/context/profiles.js +21 -0
  207. package/dist/src/context/profiles.js.map +1 -0
  208. package/dist/src/context/toolDistillationService.d.ts +38 -0
  209. package/dist/src/context/toolDistillationService.js +170 -0
  210. package/dist/src/context/toolDistillationService.js.map +1 -0
  211. package/dist/src/context/toolDistillationService.test.d.ts +6 -0
  212. package/dist/src/context/toolDistillationService.test.js +86 -0
  213. package/dist/src/context/toolDistillationService.test.js.map +1 -0
  214. package/dist/src/{services → context}/toolOutputMaskingService.d.ts +2 -2
  215. package/dist/src/{services → context}/toolOutputMaskingService.js +7 -7
  216. package/dist/src/context/toolOutputMaskingService.js.map +1 -0
  217. package/dist/src/context/toolOutputMaskingService.test.d.ts +6 -0
  218. package/dist/src/{services → context}/toolOutputMaskingService.test.js +4 -5
  219. package/dist/src/context/toolOutputMaskingService.test.js.map +1 -0
  220. package/dist/src/context/truncation.d.ts +26 -0
  221. package/dist/src/context/truncation.js +102 -0
  222. package/dist/src/context/truncation.js.map +1 -0
  223. package/dist/src/context/types.d.ts +36 -0
  224. package/dist/src/context/types.js +7 -0
  225. package/dist/src/context/types.js.map +1 -0
  226. package/dist/src/core/AuthenticatedContentGenerator.js +9 -1
  227. package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -1
  228. package/dist/src/core/baseLlmClient.js +1 -1
  229. package/dist/src/core/baseLlmClient.js.map +1 -1
  230. package/dist/src/core/baseLlmClient.test.js +1 -0
  231. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  232. package/dist/src/core/client.d.ts +3 -1
  233. package/dist/src/core/client.js +24 -14
  234. package/dist/src/core/client.js.map +1 -1
  235. package/dist/src/core/client.test.js +36 -40
  236. package/dist/src/core/client.test.js.map +1 -1
  237. package/dist/src/core/contentGenerator.d.ts +0 -1
  238. package/dist/src/core/contentGenerator.js +2 -28
  239. package/dist/src/core/contentGenerator.js.map +1 -1
  240. package/dist/src/core/contentGenerator.test.js +1 -101
  241. package/dist/src/core/contentGenerator.test.js.map +1 -1
  242. package/dist/src/core/geminiChat.js +12 -5
  243. package/dist/src/core/geminiChat.js.map +1 -1
  244. package/dist/src/core/geminiChat.test.js +72 -18
  245. package/dist/src/core/geminiChat.test.js.map +1 -1
  246. package/dist/src/core/geminiChat_network_retry.test.js +1 -0
  247. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  248. package/dist/src/core/logger.js +4 -4
  249. package/dist/src/core/logger.js.map +1 -1
  250. package/dist/src/core/logger.test.js +1 -1
  251. package/dist/src/core/logger.test.js.map +1 -1
  252. package/dist/src/core/loggingContentGenerator.js +1 -1
  253. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  254. package/dist/src/core/prompts-substitution.test.js +5 -0
  255. package/dist/src/core/prompts-substitution.test.js.map +1 -1
  256. package/dist/src/core/prompts.test.js +3 -0
  257. package/dist/src/core/prompts.test.js.map +1 -1
  258. package/dist/src/generated/git-commit.d.ts +2 -2
  259. package/dist/src/generated/git-commit.js +2 -2
  260. package/dist/src/hooks/hookEventHandler.js +8 -0
  261. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  262. package/dist/src/hooks/hookRunner.js +9 -5
  263. package/dist/src/hooks/hookRunner.js.map +1 -1
  264. package/dist/src/hooks/hookRunner.test.js +20 -3
  265. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  266. package/dist/src/hooks/hookSystem.d.ts +2 -0
  267. package/dist/src/hooks/hookSystem.js +1 -0
  268. package/dist/src/hooks/hookSystem.js.map +1 -1
  269. package/dist/src/hooks/hookTranslator.js +20 -13
  270. package/dist/src/hooks/hookTranslator.js.map +1 -1
  271. package/dist/src/hooks/hookTranslator.test.js +36 -0
  272. package/dist/src/hooks/hookTranslator.test.js.map +1 -1
  273. package/dist/src/hooks/types.d.ts +2 -0
  274. package/dist/src/ide/ide-client.js +3 -3
  275. package/dist/src/ide/ide-client.js.map +1 -1
  276. package/dist/src/ide/ide-connection-utils.js +1 -1
  277. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  278. package/dist/src/ide/ide-installer.js +5 -4
  279. package/dist/src/ide/ide-installer.js.map +1 -1
  280. package/dist/src/ide/process-utils.js +3 -3
  281. package/dist/src/ide/process-utils.js.map +1 -1
  282. package/dist/src/index.d.ts +10 -3
  283. package/dist/src/index.js +13 -5
  284. package/dist/src/index.js.map +1 -1
  285. package/dist/src/mcp/mcpLauncher.js +1 -1
  286. package/dist/src/output/json-formatter.js +2 -1
  287. package/dist/src/output/json-formatter.js.map +1 -1
  288. package/dist/src/policy/config.d.ts +1 -1
  289. package/dist/src/policy/config.js +61 -24
  290. package/dist/src/policy/config.js.map +1 -1
  291. package/dist/src/policy/config.test.js +21 -20
  292. package/dist/src/policy/config.test.js.map +1 -1
  293. package/dist/src/policy/persistence.test.js +42 -0
  294. package/dist/src/policy/persistence.test.js.map +1 -1
  295. package/dist/src/policy/policies/discovered.toml +7 -0
  296. package/dist/src/policy/policies/memory-manager.toml +11 -1
  297. package/dist/src/policy/policies/non-interactive.toml +7 -0
  298. package/dist/src/policy/policies/plan.toml +36 -2
  299. package/dist/src/policy/policies/read-only.toml +12 -0
  300. package/dist/src/policy/policies/sandbox-default.toml +4 -4
  301. package/dist/src/policy/policies/write.toml +21 -0
  302. package/dist/src/policy/policies/yolo.toml +1 -1
  303. package/dist/src/policy/policy-engine.d.ts +2 -4
  304. package/dist/src/policy/policy-engine.js +47 -37
  305. package/dist/src/policy/policy-engine.js.map +1 -1
  306. package/dist/src/policy/policy-engine.test.js +236 -30
  307. package/dist/src/policy/policy-engine.test.js.map +1 -1
  308. package/dist/src/policy/sandboxPolicyManager.d.ts +26 -1
  309. package/dist/src/policy/sandboxPolicyManager.js +41 -12
  310. package/dist/src/policy/sandboxPolicyManager.js.map +1 -1
  311. package/dist/src/policy/sandboxPolicyManager.test.d.ts +6 -0
  312. package/dist/src/policy/sandboxPolicyManager.test.js +61 -0
  313. package/dist/src/policy/sandboxPolicyManager.test.js.map +1 -0
  314. package/dist/src/policy/topic-policy.test.d.ts +6 -0
  315. package/dist/src/policy/topic-policy.test.js +48 -0
  316. package/dist/src/policy/topic-policy.test.js.map +1 -0
  317. package/dist/src/policy/types.d.ts +9 -6
  318. package/dist/src/policy/types.js +11 -0
  319. package/dist/src/policy/types.js.map +1 -1
  320. package/dist/src/policy/workspace-policy.test.js +18 -15
  321. package/dist/src/policy/workspace-policy.test.js.map +1 -1
  322. package/dist/src/prompts/promptProvider.js +20 -4
  323. package/dist/src/prompts/promptProvider.js.map +1 -1
  324. package/dist/src/prompts/promptProvider.test.js +84 -1
  325. package/dist/src/prompts/promptProvider.test.js.map +1 -1
  326. package/dist/src/prompts/snippets-memory-manager.test.js +1 -1
  327. package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -1
  328. package/dist/src/prompts/snippets.d.ts +3 -4
  329. package/dist/src/prompts/snippets.js +37 -52
  330. package/dist/src/prompts/snippets.js.map +1 -1
  331. package/dist/src/prompts/snippets.legacy.d.ts +6 -4
  332. package/dist/src/prompts/snippets.legacy.js +36 -7
  333. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  334. package/dist/src/prompts/utils.test.js +7 -5
  335. package/dist/src/prompts/utils.test.js.map +1 -1
  336. package/dist/src/safety/built-in.js +1 -1
  337. package/dist/src/safety/built-in.js.map +1 -1
  338. package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +11 -1
  339. package/dist/src/sandbox/linux/LinuxSandboxManager.js +131 -41
  340. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  341. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +82 -139
  342. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
  343. package/dist/src/sandbox/linux/bwrapArgsBuilder.d.ts +24 -0
  344. package/dist/src/sandbox/linux/bwrapArgsBuilder.js +200 -0
  345. package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -0
  346. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.d.ts +6 -0
  347. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +247 -0
  348. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -0
  349. package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +10 -22
  350. package/dist/src/sandbox/macos/MacOsSandboxManager.js +67 -59
  351. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  352. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +168 -103
  353. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
  354. package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
  355. package/dist/src/sandbox/macos/baseProfile.js +26 -8
  356. package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
  357. package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +10 -10
  358. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +81 -93
  359. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  360. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +136 -99
  361. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
  362. package/dist/src/sandbox/{macos → utils}/commandSafety.d.ts +11 -0
  363. package/dist/src/sandbox/{macos → utils}/commandSafety.js +47 -14
  364. package/dist/src/sandbox/utils/commandSafety.js.map +1 -0
  365. package/dist/src/sandbox/utils/commandUtils.d.ts +9 -0
  366. package/dist/src/sandbox/utils/commandUtils.js +57 -0
  367. package/dist/src/sandbox/utils/commandUtils.js.map +1 -0
  368. package/dist/src/sandbox/utils/fsUtils.d.ts +11 -0
  369. package/dist/src/sandbox/utils/fsUtils.js +84 -0
  370. package/dist/src/sandbox/utils/fsUtils.js.map +1 -0
  371. package/dist/src/sandbox/utils/fsUtils.test.d.ts +6 -0
  372. package/dist/src/sandbox/utils/fsUtils.test.js +43 -0
  373. package/dist/src/sandbox/utils/fsUtils.test.js.map +1 -0
  374. package/dist/src/sandbox/utils/proactivePermissions.d.ts +19 -0
  375. package/dist/src/sandbox/utils/proactivePermissions.js +163 -0
  376. package/dist/src/sandbox/utils/proactivePermissions.js.map +1 -0
  377. package/dist/src/sandbox/utils/proactivePermissions.test.d.ts +6 -0
  378. package/dist/src/sandbox/utils/proactivePermissions.test.js +145 -0
  379. package/dist/src/sandbox/utils/proactivePermissions.test.js.map +1 -0
  380. package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +27 -0
  381. package/dist/src/sandbox/utils/sandboxDenialUtils.js +142 -0
  382. package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -0
  383. package/dist/src/sandbox/utils/sandboxDenialUtils.test.d.ts +6 -0
  384. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +188 -0
  385. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -0
  386. package/dist/src/sandbox/utils/sandboxReadWriteUtils.d.ts +5 -0
  387. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +64 -0
  388. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -0
  389. package/dist/src/sandbox/windows/GeminiSandbox.cs +312 -223
  390. package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +16 -2
  391. package/dist/src/sandbox/windows/WindowsSandboxManager.js +261 -44
  392. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  393. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +379 -17
  394. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
  395. package/dist/src/sandbox/windows/commandSafety.d.ts +19 -0
  396. package/dist/src/sandbox/windows/commandSafety.js +128 -0
  397. package/dist/src/sandbox/windows/commandSafety.js.map +1 -0
  398. package/dist/src/sandbox/windows/commandSafety.test.d.ts +6 -0
  399. package/dist/src/sandbox/windows/commandSafety.test.js +42 -0
  400. package/dist/src/sandbox/windows/commandSafety.test.js.map +1 -0
  401. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +13 -0
  402. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +69 -0
  403. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -0
  404. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.d.ts +6 -0
  405. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js +68 -0
  406. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js.map +1 -0
  407. package/dist/src/scheduler/policy.js +20 -5
  408. package/dist/src/scheduler/policy.js.map +1 -1
  409. package/dist/src/scheduler/policy.test.js +80 -0
  410. package/dist/src/scheduler/policy.test.js.map +1 -1
  411. package/dist/src/scheduler/scheduler.js +13 -3
  412. package/dist/src/scheduler/scheduler.js.map +1 -1
  413. package/dist/src/scheduler/scheduler.test.js +52 -0
  414. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  415. package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
  416. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  417. package/dist/src/scheduler/state-manager.js +1 -1
  418. package/dist/src/scheduler/state-manager.js.map +1 -1
  419. package/dist/src/scheduler/state-manager.test.js +10 -0
  420. package/dist/src/scheduler/state-manager.test.js.map +1 -1
  421. package/dist/src/scheduler/tool-executor.js +7 -2
  422. package/dist/src/scheduler/tool-executor.js.map +1 -1
  423. package/dist/src/scheduler/tool-executor.test.js +38 -0
  424. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  425. package/dist/src/scheduler/types.d.ts +4 -2
  426. package/dist/src/services/chatRecordingService.d.ts +1 -13
  427. package/dist/src/services/chatRecordingService.js +45 -46
  428. package/dist/src/services/chatRecordingService.js.map +1 -1
  429. package/dist/src/services/chatRecordingService.test.js +79 -10
  430. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  431. package/dist/src/services/executionLifecycleService.d.ts +44 -6
  432. package/dist/src/services/executionLifecycleService.js +52 -12
  433. package/dist/src/services/executionLifecycleService.js.map +1 -1
  434. package/dist/src/services/executionLifecycleService.test.js +157 -3
  435. package/dist/src/services/executionLifecycleService.test.js.map +1 -1
  436. package/dist/src/services/fileDiscoveryService.d.ts +17 -2
  437. package/dist/src/services/fileDiscoveryService.js +84 -20
  438. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  439. package/dist/src/services/fileDiscoveryService.test.js +67 -1
  440. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  441. package/dist/src/services/gitService.js +1 -1
  442. package/dist/src/services/gitService.js.map +1 -1
  443. package/dist/src/services/memoryService.d.ts +65 -0
  444. package/dist/src/services/memoryService.js +511 -0
  445. package/dist/src/services/memoryService.js.map +1 -0
  446. package/dist/src/services/memoryService.test.d.ts +6 -0
  447. package/dist/src/services/memoryService.test.js +563 -0
  448. package/dist/src/services/memoryService.test.js.map +1 -0
  449. package/dist/src/services/modelConfigService.d.ts +11 -0
  450. package/dist/src/services/modelConfigService.js +67 -0
  451. package/dist/src/services/modelConfigService.js.map +1 -1
  452. package/dist/src/services/modelConfigService.test.js +30 -0
  453. package/dist/src/services/modelConfigService.test.js.map +1 -1
  454. package/dist/src/services/sandboxManager.d.ts +107 -8
  455. package/dist/src/services/sandboxManager.integration.test.d.ts +1 -0
  456. package/dist/src/services/sandboxManager.integration.test.js +445 -0
  457. package/dist/src/services/sandboxManager.integration.test.js.map +1 -0
  458. package/dist/src/services/sandboxManager.js +176 -13
  459. package/dist/src/services/sandboxManager.js.map +1 -1
  460. package/dist/src/services/sandboxManager.test.js +401 -117
  461. package/dist/src/services/sandboxManager.test.js.map +1 -1
  462. package/dist/src/services/sandboxManagerFactory.d.ts +2 -3
  463. package/dist/src/services/sandboxManagerFactory.js +12 -22
  464. package/dist/src/services/sandboxManagerFactory.js.map +1 -1
  465. package/dist/src/services/sandboxedFileSystemService.d.ts +1 -0
  466. package/dist/src/services/sandboxedFileSystemService.js +43 -3
  467. package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
  468. package/dist/src/services/sandboxedFileSystemService.test.js +97 -11
  469. package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
  470. package/dist/src/services/shellExecutionService.d.ts +18 -1
  471. package/dist/src/services/shellExecutionService.js +115 -26
  472. package/dist/src/services/shellExecutionService.js.map +1 -1
  473. package/dist/src/services/shellExecutionService.test.js +70 -8
  474. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  475. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +4 -0
  476. package/dist/src/services/test-data/resolved-aliases.golden.json +4 -0
  477. package/dist/src/services/worktreeService.test.js +7 -7
  478. package/dist/src/services/worktreeService.test.js.map +1 -1
  479. package/dist/src/skills/skillLoader.d.ts +8 -0
  480. package/dist/src/skills/skillLoader.js +1 -1
  481. package/dist/src/skills/skillLoader.js.map +1 -1
  482. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +29 -1
  483. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +107 -0
  484. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  485. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +172 -1
  486. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  487. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +10 -1
  488. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +22 -1
  489. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  490. package/dist/src/telemetry/loggers.d.ts +22 -0
  491. package/dist/src/telemetry/loggers.js +41 -2
  492. package/dist/src/telemetry/loggers.js.map +1 -1
  493. package/dist/src/telemetry/loggers.test.js +8 -3
  494. package/dist/src/telemetry/loggers.test.js.map +1 -1
  495. package/dist/src/telemetry/metrics.d.ts +118 -1
  496. package/dist/src/telemetry/metrics.js +196 -4
  497. package/dist/src/telemetry/metrics.js.map +1 -1
  498. package/dist/src/telemetry/metrics.test.js +298 -0
  499. package/dist/src/telemetry/metrics.test.js.map +1 -1
  500. package/dist/src/telemetry/types.d.ts +3 -3
  501. package/dist/src/telemetry/types.js +9 -4
  502. package/dist/src/telemetry/types.js.map +1 -1
  503. package/dist/src/test-utils/mock-message-bus.d.ts +1 -1
  504. package/dist/src/test-utils/mock-message-bus.js +1 -1
  505. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  506. package/dist/src/tools/complete-task.d.ts +29 -0
  507. package/dist/src/tools/complete-task.js +123 -0
  508. package/dist/src/tools/complete-task.js.map +1 -0
  509. package/dist/src/tools/complete-task.test.d.ts +6 -0
  510. package/dist/src/tools/complete-task.test.js +114 -0
  511. package/dist/src/tools/complete-task.test.js.map +1 -0
  512. package/dist/src/tools/definitions/base-declarations.d.ts +8 -0
  513. package/dist/src/tools/definitions/base-declarations.js +10 -0
  514. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  515. package/dist/src/tools/definitions/coreTools.d.ts +2 -1
  516. package/dist/src/tools/definitions/coreTools.js +9 -3
  517. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  518. package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +4 -0
  519. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +33 -2
  520. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
  521. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +14 -9
  522. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  523. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +13 -7
  524. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  525. package/dist/src/tools/definitions/trackerTools.js +3 -3
  526. package/dist/src/tools/definitions/trackerTools.js.map +1 -1
  527. package/dist/src/tools/definitions/types.d.ts +1 -0
  528. package/dist/src/tools/enter-plan-mode.js +15 -0
  529. package/dist/src/tools/enter-plan-mode.js.map +1 -1
  530. package/dist/src/tools/enter-plan-mode.test.js +25 -0
  531. package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
  532. package/dist/src/tools/grep-utils.d.ts +2 -1
  533. package/dist/src/tools/grep-utils.js +22 -3
  534. package/dist/src/tools/grep-utils.js.map +1 -1
  535. package/dist/src/tools/grep.js +16 -3
  536. package/dist/src/tools/grep.js.map +1 -1
  537. package/dist/src/tools/grep.test.js +36 -8
  538. package/dist/src/tools/grep.test.js.map +1 -1
  539. package/dist/src/tools/jit-context.js +3 -3
  540. package/dist/src/tools/jit-context.js.map +1 -1
  541. package/dist/src/tools/jit-context.test.js +15 -13
  542. package/dist/src/tools/jit-context.test.js.map +1 -1
  543. package/dist/src/tools/ls.js +6 -4
  544. package/dist/src/tools/ls.js.map +1 -1
  545. package/dist/src/tools/ls.test.js +22 -7
  546. package/dist/src/tools/ls.test.js.map +1 -1
  547. package/dist/src/tools/mcp-client-manager.js +6 -3
  548. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  549. package/dist/src/tools/mcp-client-manager.test.js +35 -0
  550. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  551. package/dist/src/tools/mcp-client.js +1 -1
  552. package/dist/src/tools/mcp-client.js.map +1 -1
  553. package/dist/src/tools/mcp-tool.test.js +1 -1
  554. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  555. package/dist/src/tools/memoryTool.d.ts +9 -2
  556. package/dist/src/tools/memoryTool.js +39 -15
  557. package/dist/src/tools/memoryTool.js.map +1 -1
  558. package/dist/src/tools/memoryTool.test.js +61 -2
  559. package/dist/src/tools/memoryTool.test.js.map +1 -1
  560. package/dist/src/tools/read-many-files.js +12 -4
  561. package/dist/src/tools/read-many-files.js.map +1 -1
  562. package/dist/src/tools/read-many-files.test.js +17 -17
  563. package/dist/src/tools/read-many-files.test.js.map +1 -1
  564. package/dist/src/tools/ripGrep.js +14 -1
  565. package/dist/src/tools/ripGrep.js.map +1 -1
  566. package/dist/src/tools/ripGrep.test.js +10 -10
  567. package/dist/src/tools/ripGrep.test.js.map +1 -1
  568. package/dist/src/tools/shell.d.ts +17 -4
  569. package/dist/src/tools/shell.js +342 -151
  570. package/dist/src/tools/shell.js.map +1 -1
  571. package/dist/src/tools/shell.test.js +204 -11
  572. package/dist/src/tools/shell.test.js.map +1 -1
  573. package/dist/src/tools/shellBackgroundTools.d.ts +38 -0
  574. package/dist/src/tools/shellBackgroundTools.integration.test.d.ts +6 -0
  575. package/dist/src/tools/shellBackgroundTools.integration.test.js +86 -0
  576. package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -0
  577. package/dist/src/tools/shellBackgroundTools.js +186 -0
  578. package/dist/src/tools/shellBackgroundTools.js.map +1 -0
  579. package/dist/src/tools/shellBackgroundTools.test.d.ts +6 -0
  580. package/dist/src/tools/shellBackgroundTools.test.js +230 -0
  581. package/dist/src/tools/shellBackgroundTools.test.js.map +1 -0
  582. package/dist/src/tools/shell_proactive.test.d.ts +6 -0
  583. package/dist/src/tools/shell_proactive.test.js +122 -0
  584. package/dist/src/tools/shell_proactive.test.js.map +1 -0
  585. package/dist/src/tools/tool-names.d.ts +4 -4
  586. package/dist/src/tools/tool-names.js +6 -3
  587. package/dist/src/tools/tool-names.js.map +1 -1
  588. package/dist/src/tools/tool-registry.js +11 -1
  589. package/dist/src/tools/tool-registry.js.map +1 -1
  590. package/dist/src/tools/tool-registry.test.js +43 -1
  591. package/dist/src/tools/tool-registry.test.js.map +1 -1
  592. package/dist/src/tools/tools.d.ts +12 -1
  593. package/dist/src/tools/tools.js +16 -1
  594. package/dist/src/tools/tools.js.map +1 -1
  595. package/dist/src/tools/tools.test.js +42 -1
  596. package/dist/src/tools/tools.test.js.map +1 -1
  597. package/dist/src/tools/topicTool.d.ts +29 -0
  598. package/dist/src/tools/topicTool.js +72 -0
  599. package/dist/src/tools/topicTool.js.map +1 -0
  600. package/dist/src/tools/topicTool.test.d.ts +6 -0
  601. package/dist/src/tools/topicTool.test.js +105 -0
  602. package/dist/src/tools/topicTool.test.js.map +1 -0
  603. package/dist/src/tools/web-fetch.js +40 -22
  604. package/dist/src/tools/web-fetch.js.map +1 -1
  605. package/dist/src/tools/web-fetch.test.js +28 -0
  606. package/dist/src/tools/web-fetch.test.js.map +1 -1
  607. package/dist/src/tools/xcode-mcp-fix-transport.js +1 -1
  608. package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
  609. package/dist/src/utils/bfsFileSearch.js +3 -6
  610. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  611. package/dist/src/utils/checkpointUtils.d.ts +4 -4
  612. package/dist/src/utils/checkpointUtils.js +11 -8
  613. package/dist/src/utils/checkpointUtils.js.map +1 -1
  614. package/dist/src/utils/compatibility.js +0 -7
  615. package/dist/src/utils/compatibility.js.map +1 -1
  616. package/dist/src/utils/compatibility.test.js +0 -9
  617. package/dist/src/utils/compatibility.test.js.map +1 -1
  618. package/dist/src/utils/editor.js +3 -0
  619. package/dist/src/utils/editor.js.map +1 -1
  620. package/dist/src/utils/errorParsing.js +2 -2
  621. package/dist/src/utils/errorParsing.js.map +1 -1
  622. package/dist/src/utils/errors.d.ts +3 -0
  623. package/dist/src/utils/errors.js +28 -6
  624. package/dist/src/utils/errors.js.map +1 -1
  625. package/dist/src/utils/errors.test.js +23 -0
  626. package/dist/src/utils/errors.test.js.map +1 -1
  627. package/dist/src/utils/events.d.ts +12 -0
  628. package/dist/src/utils/events.js +7 -0
  629. package/dist/src/utils/events.js.map +1 -1
  630. package/dist/src/utils/fetch.d.ts +1 -0
  631. package/dist/src/utils/fetch.js +22 -6
  632. package/dist/src/utils/fetch.js.map +1 -1
  633. package/dist/src/utils/fetch.test.js +26 -1
  634. package/dist/src/utils/fetch.test.js.map +1 -1
  635. package/dist/src/utils/fileUtils.js +1 -1
  636. package/dist/src/utils/fileUtils.js.map +1 -1
  637. package/dist/src/utils/filesearch/crawler.js +1 -1
  638. package/dist/src/utils/filesearch/crawler.js.map +1 -1
  639. package/dist/src/utils/filesearch/fileSearch.test.js +7 -2
  640. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  641. package/dist/src/utils/getFolderStructure.js +1 -1
  642. package/dist/src/utils/getFolderStructure.js.map +1 -1
  643. package/dist/src/utils/getPty.js +2 -2
  644. package/dist/src/utils/getPty.js.map +1 -1
  645. package/dist/src/utils/gitIgnoreParser.d.ts +2 -2
  646. package/dist/src/utils/gitIgnoreParser.js +30 -52
  647. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  648. package/dist/src/utils/gitIgnoreParser.test.js +51 -185
  649. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  650. package/dist/src/utils/gitUtils.js +2 -2
  651. package/dist/src/utils/gitUtils.js.map +1 -1
  652. package/dist/src/utils/googleErrors.js +5 -5
  653. package/dist/src/utils/googleErrors.js.map +1 -1
  654. package/dist/src/utils/ignoreFileParser.d.ts +2 -2
  655. package/dist/src/utils/ignoreFileParser.js +7 -18
  656. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  657. package/dist/src/utils/ignoreFileParser.test.js +40 -132
  658. package/dist/src/utils/ignoreFileParser.test.js.map +1 -1
  659. package/dist/src/utils/ignorePathUtils.d.ts +11 -0
  660. package/dist/src/utils/ignorePathUtils.js +39 -0
  661. package/dist/src/utils/ignorePathUtils.js.map +1 -0
  662. package/dist/src/utils/ignorePathUtils.test.d.ts +6 -0
  663. package/dist/src/utils/ignorePathUtils.test.js +70 -0
  664. package/dist/src/utils/ignorePathUtils.test.js.map +1 -0
  665. package/dist/src/utils/memoryDiscovery.d.ts +6 -4
  666. package/dist/src/utils/memoryDiscovery.js +69 -48
  667. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  668. package/dist/src/utils/memoryDiscovery.test.js +40 -0
  669. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  670. package/dist/src/utils/memoryImportProcessor.d.ts +1 -1
  671. package/dist/src/utils/memoryImportProcessor.js +24 -15
  672. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  673. package/dist/src/utils/paths.d.ts +8 -0
  674. package/dist/src/utils/paths.js +37 -6
  675. package/dist/src/utils/paths.js.map +1 -1
  676. package/dist/src/utils/paths.test.js +61 -3
  677. package/dist/src/utils/paths.test.js.map +1 -1
  678. package/dist/src/utils/process-utils.js +2 -2
  679. package/dist/src/utils/process-utils.js.map +1 -1
  680. package/dist/src/utils/retry.js +7 -0
  681. package/dist/src/utils/retry.js.map +1 -1
  682. package/dist/src/utils/retry.test.js +41 -0
  683. package/dist/src/utils/retry.test.js.map +1 -1
  684. package/dist/src/utils/secure-browser-launcher.js +1 -1
  685. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  686. package/dist/src/utils/sessionOperations.d.ts +19 -0
  687. package/dist/src/utils/sessionOperations.js +101 -0
  688. package/dist/src/utils/sessionOperations.js.map +1 -0
  689. package/dist/src/utils/sessionOperations.test.d.ts +6 -0
  690. package/dist/src/utils/sessionOperations.test.js +92 -0
  691. package/dist/src/utils/sessionOperations.test.js.map +1 -0
  692. package/dist/src/utils/shell-utils.d.ts +24 -0
  693. package/dist/src/utils/shell-utils.integration.test.js +1 -1
  694. package/dist/src/utils/shell-utils.integration.test.js.map +1 -1
  695. package/dist/src/utils/shell-utils.js +86 -6
  696. package/dist/src/utils/shell-utils.js.map +1 -1
  697. package/dist/src/utils/shell-utils.test.js +13 -1
  698. package/dist/src/utils/shell-utils.test.js.map +1 -1
  699. package/dist/src/utils/systemEncoding.js +1 -1
  700. package/dist/src/utils/systemEncoding.js.map +1 -1
  701. package/dist/src/utils/terminalSerializer.d.ts +1 -0
  702. package/dist/src/utils/terminalSerializer.js +31 -8
  703. package/dist/src/utils/terminalSerializer.js.map +1 -1
  704. package/dist/src/utils/terminalSerializer.test.js +3 -2
  705. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  706. package/dist/src/utils/textUtils.d.ts +8 -0
  707. package/dist/src/utils/textUtils.js +16 -0
  708. package/dist/src/utils/textUtils.js.map +1 -1
  709. package/dist/src/utils/tokenCalculation.d.ts +2 -0
  710. package/dist/src/utils/tokenCalculation.js +2 -2
  711. package/dist/src/utils/tokenCalculation.js.map +1 -1
  712. package/dist/src/utils/workspaceContext.js +2 -2
  713. package/dist/src/utils/workspaceContext.js.map +1 -1
  714. package/dist/tsconfig.tsbuildinfo +1 -1
  715. package/package.json +2 -1
  716. package/dist/docs/CONTRIBUTING.md +0 -566
  717. package/dist/docs/get-started/examples.md +0 -141
  718. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +0 -164
  719. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +0 -1
  720. package/dist/src/sandbox/macos/commandSafety.js.map +0 -1
  721. package/dist/src/services/chatCompressionService.js.map +0 -1
  722. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  723. package/dist/src/services/contextManager.js.map +0 -1
  724. package/dist/src/services/contextManager.test.js.map +0 -1
  725. package/dist/src/services/toolOutputMaskingService.js.map +0 -1
  726. package/dist/src/services/toolOutputMaskingService.test.js.map +0 -1
  727. /package/dist/src/{services/toolOutputMaskingService.test.d.ts → agents/browser/snapshotSuperseder.test.d.ts} +0 -0
  728. /package/dist/src/{services → context}/chatCompressionService.d.ts +0 -0
  729. /package/dist/src/{services → context}/chatCompressionService.js +0 -0
  730. /package/dist/src/{services → context}/chatCompressionService.test.d.ts +0 -0
  731. /package/dist/src/{services → context}/chatCompressionService.test.js +0 -0
  732. /package/dist/src/{sandbox/macos/MacOsSandboxManager.integration.test.d.ts → context/contextCompressionService.test.d.ts} +0 -0
  733. /package/dist/src/{services/contextManager.test.d.ts → context/memoryContextManager.test.d.ts} +0 -0
@@ -6,7 +6,7 @@
6
6
  import {} from '../config/agent-loop-context.js';
7
7
  import { reportError } from '../utils/errorReporting.js';
8
8
  import { GeminiChat, StreamEventType } from '../core/geminiChat.js';
9
- import { Type, } from '@google/genai';
9
+ import {} from '@google/genai';
10
10
  import { ToolRegistry } from '../tools/tool-registry.js';
11
11
  import { PromptRegistry } from '../prompts/prompt-registry.js';
12
12
  import { ResourceRegistry } from '../resources/resource-registry.js';
@@ -14,9 +14,9 @@ import { ToolConfirmationOutcome, } from '../tools/tools.js';
14
14
  import { DiscoveredMCPTool, isMcpToolName, parseMcpToolName, MCP_TOOL_PREFIX, } from '../tools/mcp-tool.js';
15
15
  import { CompressionStatus } from '../core/turn.js';
16
16
  import {} from '../scheduler/types.js';
17
- import { ChatCompressionService } from '../services/chatCompressionService.js';
17
+ import { ChatCompressionService } from '../context/chatCompressionService.js';
18
18
  import { getDirectoryContextString } from '../utils/environmentContext.js';
19
- import { renderUserMemory } from '../prompts/snippets.js';
19
+ import { renderUserMemory, renderAgentSkills } from '../prompts/snippets.js';
20
20
  import { promptIdContext } from '../utils/promptIdContext.js';
21
21
  import { logAgentStart, logAgentFinish, logRecoveryAttempt, } from '../telemetry/loggers.js';
22
22
  import { AgentStartEvent, AgentFinishEvent, LlmRole, RecoveryAttemptEvent, } from '../telemetry/types.js';
@@ -26,7 +26,6 @@ import { templateString } from './utils.js';
26
26
  import { DEFAULT_GEMINI_MODEL, isAutoModel } from '../config/models.js';
27
27
  import { parseThought } from '../utils/thoughtUtils.js';
28
28
  import {} from 'zod';
29
- import { zodToJsonSchema } from 'zod-to-json-schema';
30
29
  import { debugLogger } from '../utils/debugLogger.js';
31
30
  import { getModelConfigAlias } from './registry.js';
32
31
  import { getVersion } from '../utils/version.js';
@@ -34,7 +33,9 @@ import { getToolCallContext } from '../utils/toolCallContext.js';
34
33
  import { scheduleAgentTools } from './agent-scheduler.js';
35
34
  import { DeadlineTimer } from '../utils/deadlineTimer.js';
36
35
  import { formatUserHintsForModel, formatBackgroundCompletionForModel, } from '../utils/fastAckHelper.js';
37
- const TASK_COMPLETE_TOOL_NAME = 'complete_task';
36
+ import { createScopedWorkspaceContext, runWithScopedWorkspaceContext, } from '../config/scoped-config.js';
37
+ import { CompleteTaskTool } from '../tools/complete-task.js';
38
+ import { COMPLETE_TASK_TOOL_NAME, ACTIVATE_SKILL_TOOL_NAME, } from '../tools/definitions/base-declarations.js';
38
39
  const GRACE_PERIOD_MS = 60 * 1000; // 1 min
39
40
  export function createUnauthorizedToolError(toolName) {
40
41
  return `Unauthorized tool call: '${toolName}' is not available to this agent.`;
@@ -59,7 +60,8 @@ export class LocalAgentExecutor {
59
60
  get executionContext() {
60
61
  return {
61
62
  config: this.context.config,
62
- promptId: this.context.promptId,
63
+ promptId: this.agentId,
64
+ parentSessionId: this.context.parentSessionId || this.context.promptId, // Always preserve the main agent session ID
63
65
  geminiClient: this.context.geminiClient,
64
66
  sandboxManager: this.context.sandboxManager,
65
67
  toolRegistry: this.toolRegistry,
@@ -166,12 +168,12 @@ export class LocalAgentExecutor {
166
168
  }
167
169
  }
168
170
  agentToolRegistry.sortTools();
169
- // Get the parent prompt ID from context
170
- const parentPromptId = context.promptId;
171
+ // Register the mandatory completion tool for this agent.
172
+ agentToolRegistry.registerTool(new CompleteTaskTool(subagentMessageBus, definition.outputConfig, definition.processOutput));
171
173
  // Get the parent tool call ID from context
172
174
  const toolContext = getToolCallContext();
173
175
  const parentCallId = toolContext?.callId;
174
- return new LocalAgentExecutor(definition, context, parentPromptId, agentToolRegistry, agentPromptRegistry, agentResourceRegistry, onActivity, parentCallId);
176
+ return new LocalAgentExecutor(definition, context, agentToolRegistry, agentPromptRegistry, agentResourceRegistry, onActivity, parentCallId);
175
177
  }
176
178
  /**
177
179
  * Constructs a new AgentExecutor instance.
@@ -179,7 +181,7 @@ export class LocalAgentExecutor {
179
181
  * @private This constructor is private. Use the static `create` method to
180
182
  * instantiate the class.
181
183
  */
182
- constructor(definition, context, parentPromptId, toolRegistry, promptRegistry, resourceRegistry, onActivity, parentCallId) {
184
+ constructor(definition, context, toolRegistry, promptRegistry, resourceRegistry, onActivity, parentCallId) {
183
185
  this.definition = definition;
184
186
  this.context = context;
185
187
  this.toolRegistry = toolRegistry;
@@ -188,11 +190,7 @@ export class LocalAgentExecutor {
188
190
  this.onActivity = onActivity;
189
191
  this.compressionService = new ChatCompressionService();
190
192
  this.parentCallId = parentCallId;
191
- const randomIdPart = Math.random().toString(36).slice(2, 8);
192
- // parentPromptId will be undefined if this agent is invoked directly
193
- // (top-level), rather than as a sub-agent.
194
- const parentPrefix = parentPromptId ? `${parentPromptId}-` : '';
195
- this.agentId = `${parentPrefix}${this.definition.name}-${randomIdPart}`;
193
+ this.agentId = Math.random().toString(36).slice(2, 8);
196
194
  }
197
195
  /**
198
196
  * Executes a single turn of the agent's logic, from calling the model
@@ -204,8 +202,11 @@ export class LocalAgentExecutor {
204
202
  async executeTurn(chat, currentMessage, turnCounter, combinedSignal, timeoutSignal, // Pass the timeout controller's signal
205
203
  onWaitingForConfirmation) {
206
204
  const promptId = `${this.agentId}#${turnCounter}`;
207
- await this.tryCompressChat(chat, promptId);
208
- const { functionCalls } = await promptIdContext.run(promptId, async () => this.callModel(chat, currentMessage, combinedSignal, promptId));
205
+ await this.tryCompressChat(chat, promptId, combinedSignal);
206
+ // Allow the agent definition to modify history before the model call
207
+ // (e.g., superseding stale tool outputs to reclaim context tokens).
208
+ await this.definition.onBeforeTurn?.(chat, combinedSignal);
209
+ const { functionCalls, modelToUse } = await promptIdContext.run(promptId, async () => this.callModel(chat, currentMessage, combinedSignal, promptId));
209
210
  if (combinedSignal.aborted) {
210
211
  const terminateReason = timeoutSignal.aborted
211
212
  ? AgentTerminateMode.TIMEOUT
@@ -219,7 +220,7 @@ export class LocalAgentExecutor {
219
220
  // If the model stops calling tools without calling complete_task, it's an error.
220
221
  if (functionCalls.length === 0) {
221
222
  this.emitActivity('ERROR', {
222
- error: `Agent stopped calling tools but did not call '${TASK_COMPLETE_TOOL_NAME}' to finalize the session.`,
223
+ error: `Agent stopped calling tools but did not call '${COMPLETE_TASK_TOOL_NAME}' to finalize the session.`,
223
224
  context: 'protocol_violation',
224
225
  errorType: SubagentActivityErrorType.GENERIC,
225
226
  });
@@ -229,7 +230,7 @@ export class LocalAgentExecutor {
229
230
  finalResult: null,
230
231
  };
231
232
  }
232
- const { nextMessage, submittedOutput, taskCompleted, aborted } = await this.processFunctionCalls(functionCalls, combinedSignal, promptId, onWaitingForConfirmation);
233
+ const { nextMessage, submittedOutput, taskCompleted, aborted } = await this.processFunctionCalls(chat, modelToUse, functionCalls, combinedSignal, promptId, onWaitingForConfirmation);
233
234
  if (aborted) {
234
235
  return {
235
236
  status: 'stop',
@@ -269,7 +270,7 @@ export class LocalAgentExecutor {
269
270
  default:
270
271
  throw new Error(`Unknown terminate reason: ${reason}`);
271
272
  }
272
- 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.`;
273
+ return `${explanation} You have one final chance to complete the task with a short grace period. You MUST call \`${COMPLETE_TASK_TOOL_NAME}\` immediately with your best answer and explain that your investigation was interrupted. Do not call any other tools.`;
273
274
  }
274
275
  /**
275
276
  * Attempts a single, final recovery turn if the agent stops for a recoverable reason.
@@ -339,6 +340,18 @@ export class LocalAgentExecutor {
339
340
  * @returns A promise that resolves to the agent's final output.
340
341
  */
341
342
  async run(inputs, signal) {
343
+ // If the agent definition declares additional workspace directories,
344
+ // wrap execution in a scoped workspace context. All calls to
345
+ // Config.getWorkspaceContext() within this scope will see the extended
346
+ // directories, without mutating the shared Config.
347
+ const dirs = this.definition.workspaceDirectories;
348
+ if (dirs && dirs.length > 0) {
349
+ const scopedCtx = createScopedWorkspaceContext(this.context.config.getWorkspaceContext(), dirs);
350
+ return runWithScopedWorkspaceContext(scopedCtx, () => this.runInternal(inputs, signal));
351
+ }
352
+ return this.runInternal(inputs, signal);
353
+ }
354
+ async runInternal(inputs, signal) {
342
355
  const startTime = Date.now();
343
356
  let turnCounter = 0;
344
357
  let terminateReason = AgentTerminateMode.ERROR;
@@ -502,7 +515,7 @@ export class LocalAgentExecutor {
502
515
  // The finalResult was already set by executeTurn, but we re-emit just in case.
503
516
  finalResult =
504
517
  finalResult ||
505
- `Agent stopped calling tools but did not call '${TASK_COMPLETE_TOOL_NAME}'.`;
518
+ `Agent stopped calling tools but did not call '${COMPLETE_TASK_TOOL_NAME}'.`;
506
519
  this.emitActivity('ERROR', {
507
520
  error: finalResult,
508
521
  context: 'protocol_violation',
@@ -511,8 +524,17 @@ export class LocalAgentExecutor {
511
524
  }
512
525
  }
513
526
  }
514
- // === FINAL RETURN LOGIC ===
515
527
  if (terminateReason === AgentTerminateMode.GOAL) {
528
+ // Save the session summary upon completion
529
+ if (finalResult && chat) {
530
+ try {
531
+ const summary = this.getTruncatedSummary(finalResult);
532
+ chat.getChatRecordingService()?.saveSummary(summary);
533
+ }
534
+ catch (error) {
535
+ debugLogger.warn('Failed to save subagent session summary.', error);
536
+ }
537
+ }
516
538
  return {
517
539
  result: finalResult || 'Task completed.',
518
540
  terminate_reason: terminateReason,
@@ -539,6 +561,14 @@ export class LocalAgentExecutor {
539
561
  // Recovery Succeeded
540
562
  terminateReason = AgentTerminateMode.GOAL;
541
563
  finalResult = recoveryResult;
564
+ // Save the session summary upon successful recovery
565
+ try {
566
+ const summary = this.getTruncatedSummary(finalResult);
567
+ chat.getChatRecordingService()?.saveSummary(summary);
568
+ }
569
+ catch (summaryError) {
570
+ debugLogger.warn('Failed to save subagent session summary during recovery.', summaryError);
571
+ }
542
572
  return {
543
573
  result: finalResult,
544
574
  terminate_reason: terminateReason,
@@ -568,9 +598,9 @@ export class LocalAgentExecutor {
568
598
  logAgentFinish(this.context.config, new AgentFinishEvent(this.agentId, this.definition.name, Date.now() - startTime, turnCounter, terminateReason));
569
599
  }
570
600
  }
571
- async tryCompressChat(chat, prompt_id) {
601
+ async tryCompressChat(chat, prompt_id, abortSignal) {
572
602
  const model = this.definition.modelConfig.model ?? DEFAULT_GEMINI_MODEL;
573
- const { newHistory, info } = await this.compressionService.compress(chat, prompt_id, false, model, this.context.config, this.hasFailedCompressionAttempt);
603
+ const { newHistory, info } = await this.compressionService.compress(chat, prompt_id, false, model, this.context.config, this.hasFailedCompressionAttempt, abortSignal);
574
604
  if (info.compressionStatus ===
575
605
  CompressionStatus.COMPRESSION_FAILED_INFLATED_TOKEN_COUNT) {
576
606
  this.hasFailedCompressionAttempt = true;
@@ -661,7 +691,7 @@ export class LocalAgentExecutor {
661
691
  }
662
692
  }
663
693
  }
664
- return { functionCalls, textResponse };
694
+ return { functionCalls, textResponse, modelToUse };
665
695
  }
666
696
  /** Initializes a `GeminiChat` instance for the agent run. */
667
697
  async createChatObject(inputs, tools) {
@@ -688,22 +718,37 @@ export class LocalAgentExecutor {
688
718
  *
689
719
  * @returns A new `Content` object for history, any submitted output, and completion status.
690
720
  */
691
- async processFunctionCalls(functionCalls, signal, promptId, onWaitingForConfirmation) {
721
+ async processFunctionCalls(chat, model, functionCalls, signal, promptId, onWaitingForConfirmation) {
692
722
  const allowedToolNames = new Set(this.toolRegistry.getAllToolNames());
693
- // Always allow the completion tool
694
- allowedToolNames.add(TASK_COMPLETE_TOOL_NAME);
695
723
  let submittedOutput = null;
696
724
  let taskCompleted = false;
697
725
  let aborted = false;
698
- // We'll separate complete_task from other tools
699
726
  const toolRequests = [];
700
727
  // Map to keep track of tool name by callId for activity emission
701
728
  const toolNameMap = new Map();
702
- // Synchronous results (like complete_task or unauthorized calls)
729
+ // Synchronous results (like unauthorized calls)
703
730
  const syncResults = new Map();
704
731
  for (const [index, functionCall] of functionCalls.entries()) {
705
732
  const callId = functionCall.id ?? `${promptId}-${index}`;
706
- const args = functionCall.args ?? {};
733
+ const { args, error: parseError } = this.parseToolArguments(functionCall);
734
+ if (parseError) {
735
+ debugLogger.warn(`[LocalAgentExecutor] ${parseError}`);
736
+ syncResults.set(callId, {
737
+ functionResponse: {
738
+ name: functionCall.name,
739
+ id: callId,
740
+ response: { error: parseError },
741
+ },
742
+ });
743
+ this.emitActivity('ERROR', {
744
+ context: 'tool_call',
745
+ name: functionCall.name,
746
+ callId,
747
+ error: parseError,
748
+ errorType: SubagentActivityErrorType.GENERIC,
749
+ });
750
+ continue;
751
+ }
707
752
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
708
753
  const toolName = functionCall.name;
709
754
  let displayName = toolName;
@@ -726,139 +771,7 @@ export class LocalAgentExecutor {
726
771
  args,
727
772
  callId,
728
773
  });
729
- if (toolName === TASK_COMPLETE_TOOL_NAME) {
730
- if (taskCompleted) {
731
- const error = 'Task already marked complete in this turn. Ignoring duplicate call.';
732
- syncResults.set(callId, {
733
- functionResponse: {
734
- name: TASK_COMPLETE_TOOL_NAME,
735
- response: { error },
736
- id: callId,
737
- },
738
- });
739
- this.emitActivity('ERROR', {
740
- context: 'tool_call',
741
- name: toolName,
742
- error,
743
- errorType: SubagentActivityErrorType.GENERIC,
744
- });
745
- continue;
746
- }
747
- const { outputConfig } = this.definition;
748
- taskCompleted = true; // Signal completion regardless of output presence
749
- if (outputConfig) {
750
- const outputName = outputConfig.outputName;
751
- if (args[outputName] !== undefined) {
752
- const outputValue = args[outputName];
753
- const validationResult = outputConfig.schema.safeParse(outputValue);
754
- if (!validationResult.success) {
755
- taskCompleted = false; // Validation failed, revoke completion
756
- const error = `Output validation failed: ${JSON.stringify(validationResult.error.flatten())}`;
757
- syncResults.set(callId, {
758
- functionResponse: {
759
- name: TASK_COMPLETE_TOOL_NAME,
760
- response: { error },
761
- id: callId,
762
- },
763
- });
764
- this.emitActivity('ERROR', {
765
- context: 'tool_call',
766
- name: toolName,
767
- error,
768
- errorType: SubagentActivityErrorType.GENERIC,
769
- });
770
- continue;
771
- }
772
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
773
- const validatedOutput = validationResult.data;
774
- if (this.definition.processOutput) {
775
- submittedOutput = this.definition.processOutput(validatedOutput);
776
- }
777
- else {
778
- submittedOutput =
779
- typeof outputValue === 'string'
780
- ? outputValue
781
- : JSON.stringify(outputValue, null, 2);
782
- }
783
- syncResults.set(callId, {
784
- functionResponse: {
785
- name: TASK_COMPLETE_TOOL_NAME,
786
- response: { result: 'Output submitted and task completed.' },
787
- id: callId,
788
- },
789
- });
790
- this.emitActivity('TOOL_CALL_END', {
791
- name: toolName,
792
- id: callId,
793
- output: 'Output submitted and task completed.',
794
- });
795
- }
796
- else {
797
- // Failed to provide required output.
798
- taskCompleted = false; // Revoke completion status
799
- const error = `Missing required argument '${outputName}' for completion.`;
800
- syncResults.set(callId, {
801
- functionResponse: {
802
- name: TASK_COMPLETE_TOOL_NAME,
803
- response: { error },
804
- id: callId,
805
- },
806
- });
807
- this.emitActivity('ERROR', {
808
- context: 'tool_call',
809
- name: toolName,
810
- callId,
811
- error,
812
- errorType: SubagentActivityErrorType.GENERIC,
813
- });
814
- }
815
- }
816
- else {
817
- // No outputConfig - use default 'result' parameter
818
- const resultArg = args['result'];
819
- if (resultArg !== undefined &&
820
- resultArg !== null &&
821
- resultArg !== '') {
822
- submittedOutput =
823
- typeof resultArg === 'string'
824
- ? resultArg
825
- : JSON.stringify(resultArg, null, 2);
826
- syncResults.set(callId, {
827
- functionResponse: {
828
- name: TASK_COMPLETE_TOOL_NAME,
829
- response: { status: 'Result submitted and task completed.' },
830
- id: callId,
831
- },
832
- });
833
- this.emitActivity('TOOL_CALL_END', {
834
- name: toolName,
835
- id: callId,
836
- output: 'Result submitted and task completed.',
837
- });
838
- }
839
- else {
840
- // No result provided - this is an error for agents expected to return results
841
- taskCompleted = false; // Revoke completion
842
- const error = 'Missing required "result" argument. You must provide your findings when calling complete_task.';
843
- syncResults.set(callId, {
844
- functionResponse: {
845
- name: TASK_COMPLETE_TOOL_NAME,
846
- response: { error },
847
- id: callId,
848
- },
849
- });
850
- this.emitActivity('ERROR', {
851
- context: 'tool_call',
852
- name: toolName,
853
- callId,
854
- error,
855
- errorType: SubagentActivityErrorType.GENERIC,
856
- });
857
- }
858
- }
859
- continue;
860
- }
861
- // Handle standard tools
774
+ // Handle unauthorized tools
862
775
  if (!allowedToolNames.has(toolName)) {
863
776
  const error = createUnauthorizedToolError(toolName);
864
777
  debugLogger.warn(`[LocalAgentExecutor] Blocked call: ${error}`);
@@ -899,6 +812,8 @@ export class LocalAgentExecutor {
899
812
  signal,
900
813
  onWaitingForConfirmation,
901
814
  });
815
+ // Record completed tool calls for persistent chat history
816
+ chat.recordCompletedToolCalls(model, completedCalls);
902
817
  for (const call of completedCalls) {
903
818
  const toolName = toolNameMap.get(call.request.callId) || call.request.name;
904
819
  if (call.status === 'success') {
@@ -908,6 +823,18 @@ export class LocalAgentExecutor {
908
823
  output: call.response.resultDisplay,
909
824
  data: call.response.data,
910
825
  });
826
+ // Check if this was a completion tool call
827
+ const isCompletionTool = call.request.name === COMPLETE_TASK_TOOL_NAME;
828
+ const data = call.response.data;
829
+ if (isCompletionTool &&
830
+ !taskCompleted &&
831
+ data?.['taskCompleted'] === true) {
832
+ taskCompleted = true;
833
+ const output = data['submittedOutput'];
834
+ if (typeof output === 'string') {
835
+ submittedOutput = output;
836
+ }
837
+ }
911
838
  }
912
839
  else if (call.status === 'error') {
913
840
  this.emitActivity('ERROR', {
@@ -921,7 +848,7 @@ export class LocalAgentExecutor {
921
848
  else if (call.status === 'cancelled') {
922
849
  const isSoftRejection = call.outcome === ToolConfirmationOutcome.Cancel;
923
850
  if (isSoftRejection) {
924
- const error = `${SUBAGENT_REJECTED_ERROR_PREFIX} Please acknowledge this, rethink your strategy, and try a different approach. If you cannot proceed without the rejected operation, summarize the issue and use \`${TASK_COMPLETE_TOOL_NAME}\` to report your findings and the blocker.`;
851
+ const error = `${SUBAGENT_REJECTED_ERROR_PREFIX} Please acknowledge this, rethink your strategy, and try a different approach. If you cannot proceed without the rejected operation, summarize the issue and use \`${COMPLETE_TASK_TOOL_NAME}\` to report your findings and the blocker.`;
925
852
  this.emitActivity('ERROR', {
926
853
  context: 'tool_call',
927
854
  name: toolName,
@@ -985,7 +912,7 @@ export class LocalAgentExecutor {
985
912
  */
986
913
  prepareToolsList() {
987
914
  const toolsList = [];
988
- const { toolConfig, outputConfig } = this.definition;
915
+ const { toolConfig } = this.definition;
989
916
  if (toolConfig) {
990
917
  for (const toolRef of toolConfig.tools) {
991
918
  if (typeof toolRef === 'object' && !('schema' in toolRef)) {
@@ -996,36 +923,6 @@ export class LocalAgentExecutor {
996
923
  }
997
924
  // Add schemas from tools that were explicitly registered by name, wildcard, or instance.
998
925
  toolsList.push(...this.toolRegistry.getFunctionDeclarations(this.definition.modelConfig.model));
999
- // Always inject complete_task.
1000
- // Configure its schema based on whether output is expected.
1001
- const completeTool = {
1002
- name: TASK_COMPLETE_TOOL_NAME,
1003
- description: outputConfig
1004
- ? 'Call this tool to submit your final answer and complete the task. This is the ONLY way to finish.'
1005
- : 'Call this tool to submit your final findings and complete the task. This is the ONLY way to finish.',
1006
- parameters: {
1007
- type: Type.OBJECT,
1008
- properties: {},
1009
- required: [],
1010
- },
1011
- };
1012
- if (outputConfig) {
1013
- const jsonSchema = zodToJsonSchema(outputConfig.schema);
1014
- const { $schema: _$schema, definitions: _definitions, ...schema } = jsonSchema;
1015
- completeTool.parameters.properties[outputConfig.outputName] =
1016
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
1017
- schema;
1018
- completeTool.parameters.required.push(outputConfig.outputName);
1019
- }
1020
- else {
1021
- completeTool.parameters.properties['result'] = {
1022
- type: Type.STRING,
1023
- description: 'Your final results or findings to return to the orchestrator. ' +
1024
- 'Ensure this is comprehensive and follows any formatting requested in your instructions.',
1025
- };
1026
- completeTool.parameters.required.push('result');
1027
- }
1028
- toolsList.push(completeTool);
1029
926
  return toolsList;
1030
927
  }
1031
928
  /** Builds the system prompt from the agent definition and inputs. */
@@ -1036,6 +933,18 @@ export class LocalAgentExecutor {
1036
933
  }
1037
934
  // Inject user inputs into the prompt template.
1038
935
  let finalPrompt = templateString(promptConfig.systemPrompt, inputs);
936
+ // Inject skill SI if ACTIVATE_SKILL_TOOL_NAME is available to this agent.
937
+ if (this.toolRegistry.getTool(ACTIVATE_SKILL_TOOL_NAME) !== undefined) {
938
+ const skills = this.context.config.getSkillManager().getSkills();
939
+ if (skills.length > 0) {
940
+ const skillsPrompt = renderAgentSkills(skills.map((s) => ({
941
+ name: s.name,
942
+ description: s.description,
943
+ location: s.location,
944
+ })));
945
+ finalPrompt += `\n\n${skillsPrompt}`;
946
+ }
947
+ }
1039
948
  // Append memory context if available.
1040
949
  const systemMemory = this.context.config.getSystemInstructionMemory();
1041
950
  if (systemMemory) {
@@ -1053,16 +962,16 @@ Important Rules:
1053
962
  * If a tool call is rejected by the user, acknowledge the rejection, rethink your strategy, and try a different approach. Do not repeatedly attempt the same rejected operation.`;
1054
963
  if (this.definition.outputConfig) {
1055
964
  finalPrompt += `
1056
- * When you have completed your task, you MUST call the \`${TASK_COMPLETE_TOOL_NAME}\` tool with your structured output.
1057
- * Do not call any other tools in the same turn as \`${TASK_COMPLETE_TOOL_NAME}\`.
965
+ * When you have completed your task, you MUST call the \`${COMPLETE_TASK_TOOL_NAME}\` tool with your structured output.
966
+ * Do not call any other tools in the same turn as \`${COMPLETE_TASK_TOOL_NAME}\`.
1058
967
  * This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
1059
968
  }
1060
969
  else {
1061
970
  finalPrompt += `
1062
- * When you have completed your task, you MUST call the \`${TASK_COMPLETE_TOOL_NAME}\` tool.
971
+ * When you have completed your task, you MUST call the \`${COMPLETE_TASK_TOOL_NAME}\` tool.
1063
972
  * 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.
1064
973
  * Ensure your findings are comprehensive and follow any specific formatting requirements provided in your instructions.
1065
- * Do not call any other tools in the same turn as \`${TASK_COMPLETE_TOOL_NAME}\`.
974
+ * Do not call any other tools in the same turn as \`${COMPLETE_TASK_TOOL_NAME}\`.
1066
975
  * This is the ONLY way to complete your mission. If you stop calling tools without calling this, you have failed.`;
1067
976
  }
1068
977
  return finalPrompt;
@@ -1108,5 +1017,40 @@ Important Rules:
1108
1017
  this.onActivity(event);
1109
1018
  }
1110
1019
  }
1020
+ /**
1021
+ * Truncates a string to 200 characters in a Unicode-safe way for session summaries.
1022
+ */
1023
+ getTruncatedSummary(text) {
1024
+ const chars = Array.from(text);
1025
+ if (chars.length <= 200) {
1026
+ return text;
1027
+ }
1028
+ return chars.slice(0, 197).join('') + '...';
1029
+ }
1030
+ /**
1031
+ * Parses the arguments for a tool call, handling both JSON strings and objects.
1032
+ */
1033
+ parseToolArguments(functionCall) {
1034
+ const args = {};
1035
+ if (typeof functionCall.args === 'string') {
1036
+ try {
1037
+ const parsed = JSON.parse(functionCall.args);
1038
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
1039
+ Object.assign(args, parsed);
1040
+ }
1041
+ return { args };
1042
+ }
1043
+ catch {
1044
+ return {
1045
+ args: {},
1046
+ error: `Failed to parse JSON arguments for tool "${functionCall.name}": ${functionCall.args}. Ensure you provide a valid JSON object.`,
1047
+ };
1048
+ }
1049
+ }
1050
+ else if (functionCall.args) {
1051
+ return { args: functionCall.args };
1052
+ }
1053
+ return { args: {} };
1054
+ }
1111
1055
  }
1112
1056
  //# sourceMappingURL=local-executor.js.map