@machina.ai/cell-cli-core 1.41.1-rc2 → 1.45.1-rc1

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 (834) hide show
  1. package/dist/docs/AFTER_MERGE_PROMPT.md +1 -1
  2. package/dist/docs/changelogs/index.md +63 -0
  3. package/dist/docs/changelogs/latest.md +200 -244
  4. package/dist/docs/changelogs/preview.md +198 -385
  5. package/dist/docs/cli/auto-memory.md +61 -40
  6. package/dist/docs/cli/cli-reference.md +2 -1
  7. package/dist/docs/cli/creating-skills.md +165 -38
  8. package/dist/docs/cli/custom-commands.md +1 -0
  9. package/dist/docs/cli/gemini-md.md +0 -3
  10. package/dist/docs/cli/model-routing.md +3 -3
  11. package/dist/docs/cli/plan-mode.md +2 -2
  12. package/dist/docs/cli/settings.md +20 -19
  13. package/dist/docs/cli/skills-best-practices.md +78 -0
  14. package/dist/docs/cli/skills.md +98 -176
  15. package/dist/docs/cli/tutorials/memory-management.md +3 -3
  16. package/dist/docs/cli/tutorials/session-management.md +13 -0
  17. package/dist/docs/cli/tutorials/skills-getting-started.md +140 -92
  18. package/dist/docs/cli/using-agent-skills.md +90 -0
  19. package/dist/docs/core/gemma-setup.md +83 -0
  20. package/dist/docs/core/index.md +3 -2
  21. package/dist/docs/core/local-model-routing.md +14 -7
  22. package/dist/docs/extensions/reference.md +16 -0
  23. package/dist/docs/extensions/releasing.md +58 -24
  24. package/dist/docs/extensions/writing-extensions.md +7 -0
  25. package/dist/docs/get-started/installation.mdx +2 -2
  26. package/dist/docs/model-routing-spec.md +683 -0
  27. package/dist/docs/reference/commands.md +14 -7
  28. package/dist/docs/reference/configuration.md +264 -88
  29. package/dist/docs/reference/keyboard-shortcuts.md +24 -1
  30. package/dist/docs/reference/policy-engine.md +14 -3
  31. package/dist/docs/reference/tools.md +48 -1
  32. package/dist/docs/releases.md +2 -2
  33. package/dist/docs/sidebar.json +24 -2
  34. package/dist/docs/tools/activate-skill.md +1 -1
  35. package/dist/docs/tools/mcp-server.md +24 -3
  36. package/dist/docs/tools/memory.md +10 -13
  37. package/dist/docs/tools/shell.md +17 -0
  38. package/dist/package.json +18 -18
  39. package/dist/src/agent/content-utils.js +6 -1
  40. package/dist/src/agent/content-utils.js.map +1 -1
  41. package/dist/src/agent/content-utils.test.js +5 -1
  42. package/dist/src/agent/content-utils.test.js.map +1 -1
  43. package/dist/src/agent/event-translator.js +8 -7
  44. package/dist/src/agent/event-translator.js.map +1 -1
  45. package/dist/src/agent/event-translator.test.js +2 -2
  46. package/dist/src/agent/event-translator.test.js.map +1 -1
  47. package/dist/src/agent/legacy-agent-session.js +5 -1
  48. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  49. package/dist/src/agent/legacy-agent-session.test.js +11 -3
  50. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  51. package/dist/src/agent/tool-display-utils.d.ts +3 -2
  52. package/dist/src/agent/tool-display-utils.js +3 -2
  53. package/dist/src/agent/tool-display-utils.js.map +1 -1
  54. package/dist/src/agent/types.d.ts +33 -3
  55. package/dist/src/agents/a2aUtils.d.ts +1 -1
  56. package/dist/src/agents/a2aUtils.js +5 -4
  57. package/dist/src/agents/a2aUtils.js.map +1 -1
  58. package/dist/src/agents/a2aUtils.test.js +18 -0
  59. package/dist/src/agents/a2aUtils.test.js.map +1 -1
  60. package/dist/src/agents/agent-tool.d.ts +3 -1
  61. package/dist/src/agents/agent-tool.js +19 -3
  62. package/dist/src/agents/agent-tool.js.map +1 -1
  63. package/dist/src/agents/agent-tool.test.js +76 -0
  64. package/dist/src/agents/agent-tool.test.js.map +1 -1
  65. package/dist/src/agents/agentLoader.d.ts +127 -22
  66. package/dist/src/agents/agentLoader.js +20 -0
  67. package/dist/src/agents/agentLoader.js.map +1 -1
  68. package/dist/src/agents/agentLoader.test.js +60 -0
  69. package/dist/src/agents/agentLoader.test.js.map +1 -1
  70. package/dist/src/agents/auth-provider/types.d.ts +5 -0
  71. package/dist/src/agents/browser/browserAgentInvocation.js +24 -19
  72. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  73. package/dist/src/agents/browser/snapshotSuperseder.js +11 -8
  74. package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -1
  75. package/dist/src/agents/browser/snapshotSuperseder.test.js +6 -1
  76. package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -1
  77. package/dist/src/agents/generalist-agent.js +8 -1
  78. package/dist/src/agents/generalist-agent.js.map +1 -1
  79. package/dist/src/agents/generalist-agent.test.js +24 -0
  80. package/dist/src/agents/generalist-agent.test.js.map +1 -1
  81. package/dist/src/agents/local-executor.d.ts +1 -0
  82. package/dist/src/agents/local-executor.js +76 -45
  83. package/dist/src/agents/local-executor.js.map +1 -1
  84. package/dist/src/agents/local-executor.test.js +199 -27
  85. package/dist/src/agents/local-executor.test.js.map +1 -1
  86. package/dist/src/agents/local-invocation.d.ts +1 -1
  87. package/dist/src/agents/local-invocation.js +47 -48
  88. package/dist/src/agents/local-invocation.js.map +1 -1
  89. package/dist/src/agents/local-invocation.test.js +13 -15
  90. package/dist/src/agents/local-invocation.test.js.map +1 -1
  91. package/dist/src/agents/local-session-invocation.d.ts +51 -0
  92. package/dist/src/agents/local-session-invocation.js +320 -0
  93. package/dist/src/agents/local-session-invocation.js.map +1 -0
  94. package/dist/src/agents/local-session-invocation.test.js +512 -0
  95. package/dist/src/agents/local-session-invocation.test.js.map +1 -0
  96. package/dist/src/agents/local-subagent-protocol.d.ts +18 -0
  97. package/dist/src/agents/local-subagent-protocol.js +357 -0
  98. package/dist/src/agents/local-subagent-protocol.js.map +1 -0
  99. package/dist/src/agents/local-subagent-protocol.test.js +676 -0
  100. package/dist/src/agents/local-subagent-protocol.test.js.map +1 -0
  101. package/dist/src/agents/registry.d.ts +8 -4
  102. package/dist/src/agents/registry.js +112 -47
  103. package/dist/src/agents/registry.js.map +1 -1
  104. package/dist/src/agents/registry.test.js +9 -20
  105. package/dist/src/agents/registry.test.js.map +1 -1
  106. package/dist/src/agents/remote-invocation.js +6 -6
  107. package/dist/src/agents/remote-invocation.js.map +1 -1
  108. package/dist/src/agents/remote-invocation.test.js +23 -12
  109. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  110. package/dist/src/agents/remote-session-invocation.d.ts +48 -0
  111. package/dist/src/agents/remote-session-invocation.js +193 -0
  112. package/dist/src/agents/remote-session-invocation.js.map +1 -0
  113. package/dist/src/agents/remote-session-invocation.test.d.ts +6 -0
  114. package/dist/src/agents/remote-session-invocation.test.js +405 -0
  115. package/dist/src/agents/remote-session-invocation.test.js.map +1 -0
  116. package/dist/src/agents/remote-subagent-protocol.d.ts +42 -0
  117. package/dist/src/agents/remote-subagent-protocol.js +348 -0
  118. package/dist/src/agents/remote-subagent-protocol.js.map +1 -0
  119. package/dist/src/agents/remote-subagent-protocol.test.d.ts +6 -0
  120. package/dist/src/agents/remote-subagent-protocol.test.js +652 -0
  121. package/dist/src/agents/remote-subagent-protocol.test.js.map +1 -0
  122. package/dist/src/agents/skill-extraction-agent.d.ts +8 -1
  123. package/dist/src/agents/skill-extraction-agent.js +171 -21
  124. package/dist/src/agents/skill-extraction-agent.js.map +1 -1
  125. package/dist/src/agents/skill-extraction-agent.test.js +66 -2
  126. package/dist/src/agents/skill-extraction-agent.test.js.map +1 -1
  127. package/dist/src/agents/types.d.ts +38 -2
  128. package/dist/src/agents/types.js +7 -0
  129. package/dist/src/agents/types.js.map +1 -1
  130. package/dist/src/availability/autoRoutingFallback.integration.test.d.ts +6 -0
  131. package/dist/src/availability/autoRoutingFallback.integration.test.js +288 -0
  132. package/dist/src/availability/autoRoutingFallback.integration.test.js.map +1 -0
  133. package/dist/src/availability/fallbackIntegration.test.js +29 -0
  134. package/dist/src/availability/fallbackIntegration.test.js.map +1 -1
  135. package/dist/src/availability/modelAvailabilityService.d.ts +6 -6
  136. package/dist/src/availability/modelAvailabilityService.js +16 -8
  137. package/dist/src/availability/modelAvailabilityService.js.map +1 -1
  138. package/dist/src/availability/modelAvailabilityService.test.js +39 -0
  139. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -1
  140. package/dist/src/availability/modelPolicy.d.ts +1 -0
  141. package/dist/src/availability/policyCatalog.d.ts +2 -0
  142. package/dist/src/availability/policyCatalog.js +38 -9
  143. package/dist/src/availability/policyCatalog.js.map +1 -1
  144. package/dist/src/availability/policyCatalog.test.js +5 -4
  145. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  146. package/dist/src/availability/policyHelpers.js +42 -27
  147. package/dist/src/availability/policyHelpers.js.map +1 -1
  148. package/dist/src/availability/policyHelpers.test.js +47 -7
  149. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  150. package/dist/src/availability/testUtils.js +1 -1
  151. package/dist/src/availability/testUtils.js.map +1 -1
  152. package/dist/src/code_assist/admin/admin_controls.js +3 -1
  153. package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
  154. package/dist/src/code_assist/experiments/flagNames.d.ts +1 -1
  155. package/dist/src/code_assist/experiments/flagNames.js +1 -1
  156. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  157. package/dist/src/code_assist/oauth-credential-storage.js +12 -3
  158. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  159. package/dist/src/code_assist/oauth-credential-storage.test.js +29 -2
  160. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  161. package/dist/src/code_assist/oauth2.js +12 -3
  162. package/dist/src/code_assist/oauth2.js.map +1 -1
  163. package/dist/src/code_assist/oauth2.test.js +38 -0
  164. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  165. package/dist/src/code_assist/setup.d.ts +3 -0
  166. package/dist/src/code_assist/setup.js +9 -0
  167. package/dist/src/code_assist/setup.js.map +1 -1
  168. package/dist/src/code_assist/setup.test.js +10 -1
  169. package/dist/src/code_assist/setup.test.js.map +1 -1
  170. package/dist/src/commands/memory.d.ts +83 -2
  171. package/dist/src/commands/memory.js +479 -28
  172. package/dist/src/commands/memory.js.map +1 -1
  173. package/dist/src/commands/memory.test.js +414 -58
  174. package/dist/src/commands/memory.test.js.map +1 -1
  175. package/dist/src/config/config.d.ts +61 -37
  176. package/dist/src/config/config.js +294 -101
  177. package/dist/src/config/config.js.map +1 -1
  178. package/dist/src/config/config.test.js +365 -113
  179. package/dist/src/config/config.test.js.map +1 -1
  180. package/dist/src/config/defaultModelConfigs.js +185 -61
  181. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  182. package/dist/src/config/flashFallback.test.js +31 -0
  183. package/dist/src/config/flashFallback.test.js.map +1 -1
  184. package/dist/src/config/models.d.ts +20 -10
  185. package/dist/src/config/models.js +105 -34
  186. package/dist/src/config/models.js.map +1 -1
  187. package/dist/src/config/models.test.js +204 -47
  188. package/dist/src/config/models.test.js.map +1 -1
  189. package/dist/src/config/projectRegistry.d.ts +1 -0
  190. package/dist/src/config/projectRegistry.js +14 -3
  191. package/dist/src/config/projectRegistry.js.map +1 -1
  192. package/dist/src/config/projectRegistry.test.js +43 -0
  193. package/dist/src/config/projectRegistry.test.js.map +1 -1
  194. package/dist/src/config/scoped-config.d.ts +22 -0
  195. package/dist/src/config/scoped-config.js +32 -0
  196. package/dist/src/config/scoped-config.js.map +1 -1
  197. package/dist/src/config/storage.d.ts +0 -1
  198. package/dist/src/config/storage.js +0 -3
  199. package/dist/src/config/storage.js.map +1 -1
  200. package/dist/src/confirmation-bus/message-bus.d.ts +3 -1
  201. package/dist/src/confirmation-bus/message-bus.js +14 -5
  202. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  203. package/dist/src/confirmation-bus/message-bus.test.js +34 -0
  204. package/dist/src/confirmation-bus/message-bus.test.js.map +1 -1
  205. package/dist/src/context/chatCompressionService.js +7 -5
  206. package/dist/src/context/chatCompressionService.js.map +1 -1
  207. package/dist/src/context/chatCompressionService.test.js +1 -1
  208. package/dist/src/context/chatCompressionService.test.js.map +1 -1
  209. package/dist/src/context/config/configLoader.js +4 -1
  210. package/dist/src/context/config/configLoader.js.map +1 -1
  211. package/dist/src/context/config/profiles.d.ts +10 -0
  212. package/dist/src/context/config/profiles.js +98 -3
  213. package/dist/src/context/config/profiles.js.map +1 -1
  214. package/dist/src/context/config/schema.d.ts +4 -0
  215. package/dist/src/context/config/schema.js +4 -0
  216. package/dist/src/context/config/schema.js.map +1 -1
  217. package/dist/src/context/config/types.d.ts +13 -1
  218. package/dist/src/context/contextCompressionService.test.js +7 -3
  219. package/dist/src/context/contextCompressionService.test.js.map +1 -1
  220. package/dist/src/context/contextManager.barrier.test.js +39 -16
  221. package/dist/src/context/contextManager.barrier.test.js.map +1 -1
  222. package/dist/src/context/contextManager.d.ts +25 -28
  223. package/dist/src/context/contextManager.hotstart.test.d.ts +6 -0
  224. package/dist/src/context/contextManager.hotstart.test.js +65 -0
  225. package/dist/src/context/contextManager.hotstart.test.js.map +1 -0
  226. package/dist/src/context/contextManager.incremental.test.d.ts +6 -0
  227. package/dist/src/context/contextManager.incremental.test.js +101 -0
  228. package/dist/src/context/contextManager.incremental.test.js.map +1 -0
  229. package/dist/src/context/contextManager.js +276 -79
  230. package/dist/src/context/contextManager.js.map +1 -1
  231. package/dist/src/context/contextManager.test.d.ts +6 -0
  232. package/dist/src/context/contextManager.test.js +142 -0
  233. package/dist/src/context/contextManager.test.js.map +1 -0
  234. package/dist/src/context/eventBus.d.ts +13 -0
  235. package/dist/src/context/eventBus.js +12 -0
  236. package/dist/src/context/eventBus.js.map +1 -1
  237. package/dist/src/context/graph/behaviorRegistry.d.ts +4 -12
  238. package/dist/src/context/graph/behaviorRegistry.js.map +1 -1
  239. package/dist/src/context/graph/builtinBehaviors.d.ts +6 -1
  240. package/dist/src/context/graph/builtinBehaviors.js +23 -108
  241. package/dist/src/context/graph/builtinBehaviors.js.map +1 -1
  242. package/dist/src/context/graph/fromGraph.d.ts +8 -3
  243. package/dist/src/context/graph/fromGraph.js +46 -30
  244. package/dist/src/context/graph/fromGraph.js.map +1 -1
  245. package/dist/src/context/graph/fromGraph.test.d.ts +6 -0
  246. package/dist/src/context/graph/fromGraph.test.js +186 -0
  247. package/dist/src/context/graph/fromGraph.test.js.map +1 -0
  248. package/dist/src/context/graph/mapper.d.ts +8 -10
  249. package/dist/src/context/graph/mapper.js +11 -19
  250. package/dist/src/context/graph/mapper.js.map +1 -1
  251. package/dist/src/context/graph/mapper.test.d.ts +6 -0
  252. package/dist/src/context/graph/mapper.test.js +101 -0
  253. package/dist/src/context/graph/mapper.test.js.map +1 -0
  254. package/dist/src/context/graph/nodeIdService.d.ts +17 -0
  255. package/dist/src/context/graph/nodeIdService.js +24 -0
  256. package/dist/src/context/graph/nodeIdService.js.map +1 -0
  257. package/dist/src/context/graph/render.d.ts +24 -5
  258. package/dist/src/context/graph/render.js +129 -34
  259. package/dist/src/context/graph/render.js.map +1 -1
  260. package/dist/src/context/graph/render.test.d.ts +6 -0
  261. package/dist/src/context/graph/render.test.js +280 -0
  262. package/dist/src/context/graph/render.test.js.map +1 -0
  263. package/dist/src/context/graph/toGraph.d.ts +16 -14
  264. package/dist/src/context/graph/toGraph.js +180 -202
  265. package/dist/src/context/graph/toGraph.js.map +1 -1
  266. package/dist/src/context/graph/toGraph.test.d.ts +6 -0
  267. package/dist/src/context/graph/toGraph.test.js +116 -0
  268. package/dist/src/context/graph/toGraph.test.js.map +1 -0
  269. package/dist/src/context/graph/types.d.ts +36 -73
  270. package/dist/src/context/graph/types.js +23 -14
  271. package/dist/src/context/graph/types.js.map +1 -1
  272. package/dist/src/context/initializer.js +26 -5
  273. package/dist/src/context/initializer.js.map +1 -1
  274. package/dist/src/context/pipeline/contextWorkingBuffer.d.ts +5 -8
  275. package/dist/src/context/pipeline/contextWorkingBuffer.js +105 -35
  276. package/dist/src/context/pipeline/contextWorkingBuffer.js.map +1 -1
  277. package/dist/src/context/pipeline/contextWorkingBuffer.test.js +81 -13
  278. package/dist/src/context/pipeline/contextWorkingBuffer.test.js.map +1 -1
  279. package/dist/src/context/pipeline/environment.d.ts +4 -0
  280. package/dist/src/context/pipeline/environmentImpl.d.ts +6 -5
  281. package/dist/src/context/pipeline/environmentImpl.js +7 -9
  282. package/dist/src/context/pipeline/environmentImpl.js.map +1 -1
  283. package/dist/src/context/pipeline/environmentImpl.test.js +5 -1
  284. package/dist/src/context/pipeline/environmentImpl.test.js.map +1 -1
  285. package/dist/src/context/pipeline/orchestrator.d.ts +20 -6
  286. package/dist/src/context/pipeline/orchestrator.js +97 -80
  287. package/dist/src/context/pipeline/orchestrator.js.map +1 -1
  288. package/dist/src/context/pipeline/orchestrator.test.js +33 -36
  289. package/dist/src/context/pipeline/orchestrator.test.js.map +1 -1
  290. package/dist/src/context/pipeline.d.ts +0 -1
  291. package/dist/src/context/processors/blobDegradationProcessor.js +43 -84
  292. package/dist/src/context/processors/blobDegradationProcessor.js.map +1 -1
  293. package/dist/src/context/processors/blobDegradationProcessor.test.js +33 -37
  294. package/dist/src/context/processors/blobDegradationProcessor.test.js.map +1 -1
  295. package/dist/src/context/processors/nodeDistillationProcessor.js +58 -80
  296. package/dist/src/context/processors/nodeDistillationProcessor.js.map +1 -1
  297. package/dist/src/context/processors/nodeDistillationProcessor.test.js +21 -15
  298. package/dist/src/context/processors/nodeDistillationProcessor.test.js.map +1 -1
  299. package/dist/src/context/processors/nodeTruncationProcessor.js +16 -60
  300. package/dist/src/context/processors/nodeTruncationProcessor.js.map +1 -1
  301. package/dist/src/context/processors/nodeTruncationProcessor.test.js +16 -19
  302. package/dist/src/context/processors/nodeTruncationProcessor.test.js.map +1 -1
  303. package/dist/src/context/processors/rollingSummaryProcessor.js +12 -25
  304. package/dist/src/context/processors/rollingSummaryProcessor.js.map +1 -1
  305. package/dist/src/context/processors/rollingSummaryProcessor.test.js +10 -9
  306. package/dist/src/context/processors/rollingSummaryProcessor.test.js.map +1 -1
  307. package/dist/src/context/processors/stateSnapshotAsyncProcessor.d.ts +7 -0
  308. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js +37 -19
  309. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js.map +1 -1
  310. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js +35 -10
  311. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js.map +1 -1
  312. package/dist/src/context/processors/stateSnapshotProcessor.d.ts +2 -0
  313. package/dist/src/context/processors/stateSnapshotProcessor.js +53 -21
  314. package/dist/src/context/processors/stateSnapshotProcessor.js.map +1 -1
  315. package/dist/src/context/processors/stateSnapshotProcessor.test.js +52 -12
  316. package/dist/src/context/processors/stateSnapshotProcessor.test.js.map +1 -1
  317. package/dist/src/context/processors/toolMaskingProcessor.js +96 -117
  318. package/dist/src/context/processors/toolMaskingProcessor.js.map +1 -1
  319. package/dist/src/context/processors/toolMaskingProcessor.test.js +50 -17
  320. package/dist/src/context/processors/toolMaskingProcessor.test.js.map +1 -1
  321. package/dist/src/context/system-tests/hysteresis.test.d.ts +6 -0
  322. package/dist/src/context/system-tests/hysteresis.test.js +100 -0
  323. package/dist/src/context/system-tests/hysteresis.test.js.map +1 -0
  324. package/dist/src/context/system-tests/lifecycle.golden.test.js +107 -72
  325. package/dist/src/context/system-tests/lifecycle.golden.test.js.map +1 -1
  326. package/dist/src/context/system-tests/powerUserLifecycle.test.d.ts +6 -0
  327. package/dist/src/context/system-tests/powerUserLifecycle.test.js +91 -0
  328. package/dist/src/context/system-tests/powerUserLifecycle.test.js.map +1 -0
  329. package/dist/src/context/system-tests/simulationHarness.d.ts +2 -5
  330. package/dist/src/context/system-tests/simulationHarness.js +34 -35
  331. package/dist/src/context/system-tests/simulationHarness.js.map +1 -1
  332. package/dist/src/context/testing/contextTestUtils.d.ts +5 -3
  333. package/dist/src/context/testing/contextTestUtils.js +74 -53
  334. package/dist/src/context/testing/contextTestUtils.js.map +1 -1
  335. package/dist/src/context/testing/testProfile.js +1 -0
  336. package/dist/src/context/testing/testProfile.js.map +1 -1
  337. package/dist/src/context/toolOutputMaskingService.js +1 -2
  338. package/dist/src/context/toolOutputMaskingService.js.map +1 -1
  339. package/dist/src/context/toolOutputMaskingService.test.js +5 -20
  340. package/dist/src/context/toolOutputMaskingService.test.js.map +1 -1
  341. package/dist/src/context/utils/adaptiveTokenCalculator.d.ts +70 -0
  342. package/dist/src/context/utils/adaptiveTokenCalculator.js +138 -0
  343. package/dist/src/context/utils/adaptiveTokenCalculator.js.map +1 -0
  344. package/dist/src/context/utils/adaptiveTokenCalculator.test.d.ts +6 -0
  345. package/dist/src/context/utils/adaptiveTokenCalculator.test.js +129 -0
  346. package/dist/src/context/utils/adaptiveTokenCalculator.test.js.map +1 -0
  347. package/dist/src/context/utils/contextTokenCalculator.d.ts +63 -2
  348. package/dist/src/context/utils/contextTokenCalculator.js +80 -5
  349. package/dist/src/context/utils/contextTokenCalculator.js.map +1 -1
  350. package/dist/src/context/utils/contextTokenCalculator.test.d.ts +6 -0
  351. package/dist/src/context/utils/contextTokenCalculator.test.js +54 -0
  352. package/dist/src/context/utils/contextTokenCalculator.test.js.map +1 -0
  353. package/dist/src/context/utils/formatNodesForLlm.d.ts +21 -0
  354. package/dist/src/context/utils/formatNodesForLlm.js +69 -0
  355. package/dist/src/context/utils/formatNodesForLlm.js.map +1 -0
  356. package/dist/src/context/utils/formatNodesForLlm.test.d.ts +6 -0
  357. package/dist/src/context/utils/formatNodesForLlm.test.js +110 -0
  358. package/dist/src/context/utils/formatNodesForLlm.test.js.map +1 -0
  359. package/dist/src/context/utils/invariantChecker.d.ts +11 -0
  360. package/dist/src/context/utils/invariantChecker.js +36 -0
  361. package/dist/src/context/utils/invariantChecker.js.map +1 -0
  362. package/dist/src/context/utils/snapshotGenerator.d.ts +43 -1
  363. package/dist/src/context/utils/snapshotGenerator.js +332 -33
  364. package/dist/src/context/utils/snapshotGenerator.js.map +1 -1
  365. package/dist/src/context/utils/snapshotGenerator.test.d.ts +6 -0
  366. package/dist/src/context/utils/snapshotGenerator.test.js +362 -0
  367. package/dist/src/context/utils/snapshotGenerator.test.js.map +1 -0
  368. package/dist/src/context/utils/tokenCalibration.d.ts +9 -0
  369. package/dist/src/context/utils/tokenCalibration.js +30 -0
  370. package/dist/src/context/utils/tokenCalibration.js.map +1 -0
  371. package/dist/src/core/agentChatHistory.d.ts +29 -14
  372. package/dist/src/core/agentChatHistory.js +27 -27
  373. package/dist/src/core/agentChatHistory.js.map +1 -1
  374. package/dist/src/core/baseLlmClient.d.ts +8 -0
  375. package/dist/src/core/baseLlmClient.js +23 -3
  376. package/dist/src/core/baseLlmClient.js.map +1 -1
  377. package/dist/src/core/baseLlmClient.test.js +27 -23
  378. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  379. package/dist/src/core/client.d.ts +7 -5
  380. package/dist/src/core/client.js +65 -40
  381. package/dist/src/core/client.js.map +1 -1
  382. package/dist/src/core/client.test.js +35 -131
  383. package/dist/src/core/client.test.js.map +1 -1
  384. package/dist/src/core/contentGenerator.js +46 -21
  385. package/dist/src/core/contentGenerator.js.map +1 -1
  386. package/dist/src/core/contentGenerator.test.js +191 -13
  387. package/dist/src/core/contentGenerator.test.js.map +1 -1
  388. package/dist/src/core/fakeContentGenerator.d.ts +15 -3
  389. package/dist/src/core/fakeContentGenerator.js +29 -9
  390. package/dist/src/core/fakeContentGenerator.js.map +1 -1
  391. package/dist/src/core/geminiChat.d.ts +18 -7
  392. package/dist/src/core/geminiChat.js +312 -54
  393. package/dist/src/core/geminiChat.js.map +1 -1
  394. package/dist/src/core/geminiChat.test.js +448 -54
  395. package/dist/src/core/geminiChat.test.js.map +1 -1
  396. package/dist/src/core/geminiChat_network_retry.test.js +39 -0
  397. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  398. package/dist/src/core/localLiteRtLmClient.js +6 -2
  399. package/dist/src/core/localLiteRtLmClient.js.map +1 -1
  400. package/dist/src/core/prompts.test.js +12 -7
  401. package/dist/src/core/prompts.test.js.map +1 -1
  402. package/dist/src/core/turn.d.ts +7 -2
  403. package/dist/src/core/turn.js +61 -4
  404. package/dist/src/core/turn.js.map +1 -1
  405. package/dist/src/core/turn.test.js +19 -10
  406. package/dist/src/core/turn.test.js.map +1 -1
  407. package/dist/src/fallback/handler.js +16 -6
  408. package/dist/src/fallback/handler.js.map +1 -1
  409. package/dist/src/fallback/handler.test.js +8 -2
  410. package/dist/src/fallback/handler.test.js.map +1 -1
  411. package/dist/src/generated/git-commit.d.ts +2 -2
  412. package/dist/src/generated/git-commit.js +2 -2
  413. package/dist/src/hooks/hookEventHandler.js +3 -2
  414. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  415. package/dist/src/hooks/hookEventHandler.test.js +80 -0
  416. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  417. package/dist/src/hooks/hookRunner.test.js +3 -3
  418. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  419. package/dist/src/hooks/hookTranslator.js +95 -5
  420. package/dist/src/hooks/hookTranslator.js.map +1 -1
  421. package/dist/src/hooks/hookTranslator.test.js +171 -0
  422. package/dist/src/hooks/hookTranslator.test.js.map +1 -1
  423. package/dist/src/ide/ide-client.js +5 -3
  424. package/dist/src/ide/ide-client.js.map +1 -1
  425. package/dist/src/ide/ide-connection-utils.js +12 -10
  426. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  427. package/dist/src/ide/ide-connection-utils.test.js +25 -2
  428. package/dist/src/ide/ide-connection-utils.test.js.map +1 -1
  429. package/dist/src/ide/types.d.ts +16 -16
  430. package/dist/src/index.d.ts +5 -2
  431. package/dist/src/index.js +5 -3
  432. package/dist/src/index.js.map +1 -1
  433. package/dist/src/mcp/oauth-provider.d.ts +8 -0
  434. package/dist/src/mcp/oauth-provider.js +41 -0
  435. package/dist/src/mcp/oauth-provider.js.map +1 -1
  436. package/dist/src/mcp/oauth-token-storage.js +7 -1
  437. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  438. package/dist/src/mcp/oauth-token-storage.test.js +55 -0
  439. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  440. package/dist/src/mcp/stored-token-provider.d.ts +27 -0
  441. package/dist/src/mcp/stored-token-provider.js +76 -0
  442. package/dist/src/mcp/stored-token-provider.js.map +1 -0
  443. package/dist/src/mcp/token-storage/keychain-token-storage.js +2 -2
  444. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  445. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +14 -1
  446. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
  447. package/dist/src/output/json-formatter.d.ts +1 -1
  448. package/dist/src/output/json-formatter.js +4 -1
  449. package/dist/src/output/json-formatter.js.map +1 -1
  450. package/dist/src/output/json-formatter.test.js +7 -0
  451. package/dist/src/output/json-formatter.test.js.map +1 -1
  452. package/dist/src/output/types.d.ts +1 -0
  453. package/dist/src/output/types.js.map +1 -1
  454. package/dist/src/policy/config.js +25 -0
  455. package/dist/src/policy/config.js.map +1 -1
  456. package/dist/src/policy/config.test.js +80 -0
  457. package/dist/src/policy/config.test.js.map +1 -1
  458. package/dist/src/policy/core-tools-mapping.test.js +9 -1
  459. package/dist/src/policy/core-tools-mapping.test.js.map +1 -1
  460. package/dist/src/policy/policies/plan.toml +1 -1
  461. package/dist/src/policy/policies/write.toml +0 -7
  462. package/dist/src/policy/policy-engine.test.js +0 -8
  463. package/dist/src/policy/policy-engine.test.js.map +1 -1
  464. package/dist/src/policy/sandboxPolicyManager.d.ts +20 -20
  465. package/dist/src/policy/stable-stringify.js +10 -6
  466. package/dist/src/policy/stable-stringify.js.map +1 -1
  467. package/dist/src/policy/stable-stringify.test.js +157 -0
  468. package/dist/src/policy/stable-stringify.test.js.map +1 -0
  469. package/dist/src/policy/types.d.ts +1 -0
  470. package/dist/src/policy/types.js.map +1 -1
  471. package/dist/src/prompts/promptProvider.js +8 -9
  472. package/dist/src/prompts/promptProvider.js.map +1 -1
  473. package/dist/src/prompts/promptProvider.test.js +3 -1
  474. package/dist/src/prompts/promptProvider.test.js.map +1 -1
  475. package/dist/src/prompts/snippets-memory.test.d.ts +6 -0
  476. package/dist/src/prompts/{snippets-memory-v2.test.js → snippets-memory.test.js} +5 -23
  477. package/dist/src/prompts/snippets-memory.test.js.map +1 -0
  478. package/dist/src/prompts/snippets.d.ts +6 -11
  479. package/dist/src/prompts/snippets.js +28 -30
  480. package/dist/src/prompts/snippets.js.map +1 -1
  481. package/dist/src/prompts/snippets.legacy.d.ts +0 -1
  482. package/dist/src/prompts/snippets.legacy.js +8 -15
  483. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  484. package/dist/src/routing/strategies/approvalModeStrategy.js +5 -3
  485. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -1
  486. package/dist/src/routing/strategies/approvalModeStrategy.test.js +9 -0
  487. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -1
  488. package/dist/src/routing/strategies/classifierStrategy.js +18 -4
  489. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  490. package/dist/src/routing/strategies/classifierStrategy.test.js +77 -1
  491. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  492. package/dist/src/routing/strategies/defaultStrategy.js +1 -1
  493. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
  494. package/dist/src/routing/strategies/fallbackStrategy.js +1 -1
  495. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  496. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +7 -1
  497. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -1
  498. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +15 -1
  499. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -1
  500. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +1 -0
  501. package/dist/src/routing/strategies/numericalClassifierStrategy.js +32 -5
  502. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
  503. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +247 -25
  504. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
  505. package/dist/src/routing/strategies/overrideStrategy.js +1 -1
  506. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  507. package/dist/src/sandbox/utils/commandSafety.js +22 -2
  508. package/dist/src/sandbox/utils/commandSafety.js.map +1 -1
  509. package/dist/src/sandbox/utils/commandSafety.test.d.ts +6 -0
  510. package/dist/src/sandbox/utils/commandSafety.test.js +85 -0
  511. package/dist/src/sandbox/utils/commandSafety.test.js.map +1 -0
  512. package/dist/src/scheduler/confirmation.test.js +29 -0
  513. package/dist/src/scheduler/confirmation.test.js.map +1 -1
  514. package/dist/src/scheduler/scheduler.js +15 -0
  515. package/dist/src/scheduler/scheduler.js.map +1 -1
  516. package/dist/src/scheduler/scheduler.test.js +1 -1
  517. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  518. package/dist/src/scheduler/scheduler_parallel.test.js +37 -0
  519. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -1
  520. package/dist/src/scheduler/state-manager.js +5 -1
  521. package/dist/src/scheduler/state-manager.js.map +1 -1
  522. package/dist/src/scheduler/tool-executor.js +7 -4
  523. package/dist/src/scheduler/tool-executor.js.map +1 -1
  524. package/dist/src/scheduler/types.d.ts +5 -1
  525. package/dist/src/scheduler/types.js.map +1 -1
  526. package/dist/src/services/chatRecordingService.d.ts +14 -7
  527. package/dist/src/services/chatRecordingService.js +157 -133
  528. package/dist/src/services/chatRecordingService.js.map +1 -1
  529. package/dist/src/services/chatRecordingService.test.js +189 -52
  530. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  531. package/dist/src/services/fileDiscoveryService.js +2 -1
  532. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  533. package/dist/src/services/fileDiscoveryService.test.js +36 -0
  534. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  535. package/dist/src/services/gitService.js +43 -4
  536. package/dist/src/services/gitService.js.map +1 -1
  537. package/dist/src/services/gitService.test.js +105 -1
  538. package/dist/src/services/gitService.test.js.map +1 -1
  539. package/dist/src/services/keychainService.js +14 -5
  540. package/dist/src/services/keychainService.js.map +1 -1
  541. package/dist/src/services/memoryPatchUtils.d.ts +93 -0
  542. package/dist/src/services/memoryPatchUtils.js +310 -2
  543. package/dist/src/services/memoryPatchUtils.js.map +1 -1
  544. package/dist/src/services/memoryService.d.ts +2 -0
  545. package/dist/src/services/memoryService.js +214 -9
  546. package/dist/src/services/memoryService.js.map +1 -1
  547. package/dist/src/services/memoryService.test.js +133 -0
  548. package/dist/src/services/memoryService.test.js.map +1 -1
  549. package/dist/src/services/modelConfigService.d.ts +3 -0
  550. package/dist/src/services/modelConfigService.js +22 -13
  551. package/dist/src/services/modelConfigService.js.map +1 -1
  552. package/dist/src/services/modelConfigService.test.js +73 -0
  553. package/dist/src/services/modelConfigService.test.js.map +1 -1
  554. package/dist/src/services/shellExecutionService.js +88 -41
  555. package/dist/src/services/shellExecutionService.js.map +1 -1
  556. package/dist/src/services/shellExecutionService.test.js +22 -9
  557. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  558. package/dist/src/services/shellExecutionService.windows.integration.test.d.ts +6 -0
  559. package/dist/src/services/shellExecutionService.windows.integration.test.js +63 -0
  560. package/dist/src/services/shellExecutionService.windows.integration.test.js.map +1 -0
  561. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +85 -7
  562. package/dist/src/services/test-data/resolved-aliases.golden.json +85 -7
  563. package/dist/src/services/trackerTypes.d.ts +4 -4
  564. package/dist/src/skills/skillManager.d.ts +4 -0
  565. package/dist/src/skills/skillManager.js +6 -0
  566. package/dist/src/skills/skillManager.js.map +1 -1
  567. package/dist/src/skills/skillManager.test.js +10 -0
  568. package/dist/src/skills/skillManager.test.js.map +1 -1
  569. package/dist/src/telemetry/file-exporters.d.ts +4 -1
  570. package/dist/src/telemetry/file-exporters.js +21 -3
  571. package/dist/src/telemetry/file-exporters.js.map +1 -1
  572. package/dist/src/telemetry/file-exporters.test.js +32 -2
  573. package/dist/src/telemetry/file-exporters.test.js.map +1 -1
  574. package/dist/src/telemetry/gcp-exporters.d.ts +3 -0
  575. package/dist/src/telemetry/gcp-exporters.js +72 -5
  576. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  577. package/dist/src/telemetry/gcp-exporters.test.js +52 -0
  578. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -1
  579. package/dist/src/telemetry/heap-snapshot.d.ts +12 -0
  580. package/dist/src/telemetry/heap-snapshot.js +35 -0
  581. package/dist/src/telemetry/heap-snapshot.js.map +1 -0
  582. package/dist/src/telemetry/heap-snapshot.test.d.ts +6 -0
  583. package/dist/src/telemetry/heap-snapshot.test.js +38 -0
  584. package/dist/src/telemetry/heap-snapshot.test.js.map +1 -0
  585. package/dist/src/telemetry/index.d.ts +1 -0
  586. package/dist/src/telemetry/index.js +1 -0
  587. package/dist/src/telemetry/index.js.map +1 -1
  588. package/dist/src/telemetry/loggers.test.js +1 -0
  589. package/dist/src/telemetry/loggers.test.js.map +1 -1
  590. package/dist/src/telemetry/memory-monitor.d.ts +5 -0
  591. package/dist/src/telemetry/memory-monitor.js +8 -0
  592. package/dist/src/telemetry/memory-monitor.js.map +1 -1
  593. package/dist/src/telemetry/metrics.js +13 -2
  594. package/dist/src/telemetry/metrics.js.map +1 -1
  595. package/dist/src/telemetry/metrics.test.js +61 -1
  596. package/dist/src/telemetry/metrics.test.js.map +1 -1
  597. package/dist/src/test-utils/config.js +10 -1
  598. package/dist/src/test-utils/config.js.map +1 -1
  599. package/dist/src/tools/ask-user.js +25 -1
  600. package/dist/src/tools/ask-user.js.map +1 -1
  601. package/dist/src/tools/ask-user.test.js +46 -1
  602. package/dist/src/tools/ask-user.test.js.map +1 -1
  603. package/dist/src/tools/definitions/base-declarations.d.ts +0 -3
  604. package/dist/src/tools/definitions/base-declarations.js +0 -4
  605. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  606. package/dist/src/tools/definitions/coreTools.d.ts +1 -2
  607. package/dist/src/tools/definitions/coreTools.js +2 -8
  608. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  609. package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js +1 -2
  610. package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js.map +1 -1
  611. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +7 -31
  612. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  613. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +9 -26
  614. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  615. package/dist/src/tools/definitions/types.d.ts +0 -1
  616. package/dist/src/tools/edit.js +27 -5
  617. package/dist/src/tools/edit.js.map +1 -1
  618. package/dist/src/tools/edit.test.js +37 -0
  619. package/dist/src/tools/edit.test.js.map +1 -1
  620. package/dist/src/tools/grep.js +14 -2
  621. package/dist/src/tools/grep.js.map +1 -1
  622. package/dist/src/tools/grep.test.js +17 -0
  623. package/dist/src/tools/grep.test.js.map +1 -1
  624. package/dist/src/tools/jit-context.d.ts +1 -1
  625. package/dist/src/tools/jit-context.js +1 -4
  626. package/dist/src/tools/jit-context.js.map +1 -1
  627. package/dist/src/tools/jit-context.test.js +1 -13
  628. package/dist/src/tools/jit-context.test.js.map +1 -1
  629. package/dist/src/tools/ls.js +5 -0
  630. package/dist/src/tools/ls.js.map +1 -1
  631. package/dist/src/tools/mcp-client-manager.js +2 -1
  632. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  633. package/dist/src/tools/mcp-client-manager.test.js +29 -0
  634. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  635. package/dist/src/tools/mcp-client.js +89 -50
  636. package/dist/src/tools/mcp-client.js.map +1 -1
  637. package/dist/src/tools/mcp-client.test.js +353 -59
  638. package/dist/src/tools/mcp-client.test.js.map +1 -1
  639. package/dist/src/tools/{xcode-mcp-fix-transport.d.ts → mcp-compliance-transport.d.ts} +6 -6
  640. package/dist/src/tools/{xcode-mcp-fix-transport.js → mcp-compliance-transport.js} +6 -6
  641. package/dist/src/tools/mcp-compliance-transport.js.map +1 -0
  642. package/dist/src/tools/mcp-compliance-transport.test.d.ts +6 -0
  643. package/dist/src/tools/mcp-compliance-transport.test.js +162 -0
  644. package/dist/src/tools/mcp-compliance-transport.test.js.map +1 -0
  645. package/dist/src/tools/memoryTool.d.ts +9 -31
  646. package/dist/src/tools/memoryTool.js +47 -262
  647. package/dist/src/tools/memoryTool.js.map +1 -1
  648. package/dist/src/tools/memoryTool.test.js +41 -312
  649. package/dist/src/tools/memoryTool.test.js.map +1 -1
  650. package/dist/src/tools/read-file.js +11 -6
  651. package/dist/src/tools/read-file.js.map +1 -1
  652. package/dist/src/tools/read-file.test.js +20 -8
  653. package/dist/src/tools/read-file.test.js.map +1 -1
  654. package/dist/src/tools/read-many-files.js +2 -2
  655. package/dist/src/tools/read-many-files.js.map +1 -1
  656. package/dist/src/tools/ripGrep.d.ts +3 -7
  657. package/dist/src/tools/ripGrep.js +57 -35
  658. package/dist/src/tools/ripGrep.js.map +1 -1
  659. package/dist/src/tools/ripGrep.test.js +197 -276
  660. package/dist/src/tools/ripGrep.test.js.map +1 -1
  661. package/dist/src/tools/shell.d.ts +5 -3
  662. package/dist/src/tools/shell.js +130 -36
  663. package/dist/src/tools/shell.js.map +1 -1
  664. package/dist/src/tools/shell.test.js +186 -14
  665. package/dist/src/tools/shell.test.js.map +1 -1
  666. package/dist/src/tools/shell_proactive.test.js +1 -0
  667. package/dist/src/tools/shell_proactive.test.js.map +1 -1
  668. package/dist/src/tools/tool-names.d.ts +3 -3
  669. package/dist/src/tools/tool-names.js +4 -5
  670. package/dist/src/tools/tool-names.js.map +1 -1
  671. package/dist/src/tools/tool-registry.js +1 -1
  672. package/dist/src/tools/tool-registry.js.map +1 -1
  673. package/dist/src/tools/tools.d.ts +6 -0
  674. package/dist/src/tools/tools.js.map +1 -1
  675. package/dist/src/tools/topicTool.js +5 -0
  676. package/dist/src/tools/topicTool.js.map +1 -1
  677. package/dist/src/tools/write-file.js +13 -0
  678. package/dist/src/tools/write-file.js.map +1 -1
  679. package/dist/src/tools/write-file.test.js +8 -0
  680. package/dist/src/tools/write-file.test.js.map +1 -1
  681. package/dist/src/utils/atCommandUtils.d.ts +35 -0
  682. package/dist/src/utils/atCommandUtils.js +163 -0
  683. package/dist/src/utils/atCommandUtils.js.map +1 -0
  684. package/dist/src/utils/atCommandUtils.test.d.ts +6 -0
  685. package/dist/src/utils/atCommandUtils.test.js +292 -0
  686. package/dist/src/utils/atCommandUtils.test.js.map +1 -0
  687. package/dist/src/utils/channel.d.ts +8 -0
  688. package/dist/src/utils/channel.js +21 -10
  689. package/dist/src/utils/channel.js.map +1 -1
  690. package/dist/src/utils/cryptoUtils.d.ts +11 -0
  691. package/dist/src/utils/cryptoUtils.js +19 -0
  692. package/dist/src/utils/cryptoUtils.js.map +1 -0
  693. package/dist/src/utils/cryptoUtils.test.d.ts +6 -0
  694. package/dist/src/utils/cryptoUtils.test.js +31 -0
  695. package/dist/src/utils/cryptoUtils.test.js.map +1 -0
  696. package/dist/src/utils/editor.d.ts +29 -3
  697. package/dist/src/utils/editor.js +94 -3
  698. package/dist/src/utils/editor.js.map +1 -1
  699. package/dist/src/utils/editor.test.js +176 -2
  700. package/dist/src/utils/editor.test.js.map +1 -1
  701. package/dist/src/utils/environmentContext.d.ts +2 -1
  702. package/dist/src/utils/environmentContext.js +15 -8
  703. package/dist/src/utils/environmentContext.js.map +1 -1
  704. package/dist/src/utils/environmentContext.test.js +4 -14
  705. package/dist/src/utils/environmentContext.test.js.map +1 -1
  706. package/dist/src/utils/errors.js +3 -8
  707. package/dist/src/utils/errors.js.map +1 -1
  708. package/dist/src/utils/events.d.ts +26 -1
  709. package/dist/src/utils/events.js +21 -2
  710. package/dist/src/utils/events.js.map +1 -1
  711. package/dist/src/utils/events.test.js +39 -0
  712. package/dist/src/utils/events.test.js.map +1 -1
  713. package/dist/src/utils/extensionLoader.js +2 -2
  714. package/dist/src/utils/extensionLoader.js.map +1 -1
  715. package/dist/src/utils/extensionLoader.test.js +22 -15
  716. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  717. package/dist/src/utils/fetch.d.ts +3 -3
  718. package/dist/src/utils/fetch.js +41 -17
  719. package/dist/src/utils/fetch.js.map +1 -1
  720. package/dist/src/utils/fetch.test.js +93 -17
  721. package/dist/src/utils/fetch.test.js.map +1 -1
  722. package/dist/src/utils/fileUtils.js +4 -1
  723. package/dist/src/utils/fileUtils.js.map +1 -1
  724. package/dist/src/utils/filesearch/fileSearch.js +20 -9
  725. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  726. package/dist/src/utils/filesearch/ignore.js +4 -1
  727. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  728. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -0
  729. package/dist/src/utils/generateContentResponseUtilities.js +37 -7
  730. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  731. package/dist/src/utils/generateContentResponseUtilities.test.js +33 -0
  732. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  733. package/dist/src/utils/gitUtils.d.ts +5 -0
  734. package/dist/src/utils/gitUtils.js +11 -0
  735. package/dist/src/utils/gitUtils.js.map +1 -1
  736. package/dist/src/utils/historyHardening.d.ts +37 -0
  737. package/dist/src/utils/historyHardening.js +332 -0
  738. package/dist/src/utils/historyHardening.js.map +1 -0
  739. package/dist/src/utils/historyHardening.test.d.ts +6 -0
  740. package/dist/src/utils/historyHardening.test.js +317 -0
  741. package/dist/src/utils/historyHardening.test.js.map +1 -0
  742. package/dist/src/utils/ignoreFileParser.js +1 -1
  743. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  744. package/dist/src/utils/ignorePatterns.js +2 -0
  745. package/dist/src/utils/ignorePatterns.js.map +1 -1
  746. package/dist/src/utils/ignorePatterns.test.js +1 -0
  747. package/dist/src/utils/ignorePatterns.test.js.map +1 -1
  748. package/dist/src/utils/memoryDiscovery.d.ts +0 -20
  749. package/dist/src/utils/memoryDiscovery.js +57 -220
  750. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  751. package/dist/src/utils/memoryDiscovery.test.js +112 -403
  752. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  753. package/dist/src/utils/modelUtils.d.ts +14 -0
  754. package/dist/src/utils/modelUtils.js +17 -0
  755. package/dist/src/utils/modelUtils.js.map +1 -0
  756. package/dist/src/utils/modelUtils.test.d.ts +6 -0
  757. package/dist/src/utils/modelUtils.test.js +23 -0
  758. package/dist/src/utils/modelUtils.test.js.map +1 -0
  759. package/dist/src/utils/partUtils.d.ts +26 -1
  760. package/dist/src/utils/partUtils.js +37 -0
  761. package/dist/src/utils/partUtils.js.map +1 -1
  762. package/dist/src/utils/path-validator.d.ts +17 -0
  763. package/dist/src/utils/path-validator.js +76 -0
  764. package/dist/src/utils/path-validator.js.map +1 -0
  765. package/dist/src/utils/path-validator.test.d.ts +6 -0
  766. package/dist/src/utils/path-validator.test.js +91 -0
  767. package/dist/src/utils/path-validator.test.js.map +1 -0
  768. package/dist/src/utils/pathReader.js +12 -0
  769. package/dist/src/utils/pathReader.js.map +1 -1
  770. package/dist/src/utils/pathReader.test.js +95 -0
  771. package/dist/src/utils/pathReader.test.js.map +1 -1
  772. package/dist/src/utils/paths.d.ts +19 -1
  773. package/dist/src/utils/paths.js +74 -9
  774. package/dist/src/utils/paths.js.map +1 -1
  775. package/dist/src/utils/paths.test.js +111 -1
  776. package/dist/src/utils/paths.test.js.map +1 -1
  777. package/dist/src/utils/quotaErrorDetection.js +23 -12
  778. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  779. package/dist/src/utils/ragLogger.d.ts +32 -0
  780. package/dist/src/utils/ragLogger.js +56 -0
  781. package/dist/src/utils/ragLogger.js.map +1 -0
  782. package/dist/src/utils/ragLogger.test.d.ts +6 -0
  783. package/dist/src/utils/ragLogger.test.js +97 -0
  784. package/dist/src/utils/ragLogger.test.js.map +1 -0
  785. package/dist/src/utils/retry.js +8 -3
  786. package/dist/src/utils/retry.js.map +1 -1
  787. package/dist/src/utils/retry.test.js +17 -0
  788. package/dist/src/utils/retry.test.js.map +1 -1
  789. package/dist/src/utils/safeJsonStringify.js +0 -2
  790. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  791. package/dist/src/utils/sessionOperations.d.ts +26 -0
  792. package/dist/src/utils/sessionOperations.js +177 -8
  793. package/dist/src/utils/sessionOperations.js.map +1 -1
  794. package/dist/src/utils/sessionUtils.d.ts +11 -5
  795. package/dist/src/utils/sessionUtils.js +139 -68
  796. package/dist/src/utils/sessionUtils.js.map +1 -1
  797. package/dist/src/utils/sessionUtils.test.js +31 -5
  798. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  799. package/dist/src/utils/shell-utils.d.ts +9 -1
  800. package/dist/src/utils/shell-utils.js +51 -20
  801. package/dist/src/utils/shell-utils.js.map +1 -1
  802. package/dist/src/utils/shell-utils.test.js +87 -46
  803. package/dist/src/utils/shell-utils.test.js.map +1 -1
  804. package/dist/src/utils/textUtils.d.ts +12 -2
  805. package/dist/src/utils/textUtils.js +30 -3
  806. package/dist/src/utils/textUtils.js.map +1 -1
  807. package/dist/src/utils/textUtils.test.js +96 -1
  808. package/dist/src/utils/textUtils.test.js.map +1 -1
  809. package/dist/src/utils/tokenCalculation.d.ts +3 -2
  810. package/dist/src/utils/tokenCalculation.js +9 -5
  811. package/dist/src/utils/tokenCalculation.js.map +1 -1
  812. package/dist/src/utils/tokenCalculation.test.js +15 -0
  813. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  814. package/dist/tsconfig.tsbuildinfo +1 -1
  815. package/package.json +18 -18
  816. package/dist/src/context/historyObserver.d.ts +0 -28
  817. package/dist/src/context/historyObserver.js +0 -63
  818. package/dist/src/context/historyObserver.js.map +0 -1
  819. package/dist/src/policy/memory-manager-policy.test.js +0 -80
  820. package/dist/src/policy/memory-manager-policy.test.js.map +0 -1
  821. package/dist/src/policy/policies/memory-manager.toml +0 -20
  822. package/dist/src/prompts/snippets-memory-v2.test.js.map +0 -1
  823. package/dist/src/tools/xcode-mcp-fix-transport.js.map +0 -1
  824. package/dist/src/tools/xcode-mcp-fix-transport.test.d.ts +0 -1
  825. package/dist/src/tools/xcode-mcp-fix-transport.test.js +0 -98
  826. package/dist/src/tools/xcode-mcp-fix-transport.test.js.map +0 -1
  827. package/dist/src/utils/systemEncoding.d.ts +0 -40
  828. package/dist/src/utils/systemEncoding.js +0 -150
  829. package/dist/src/utils/systemEncoding.js.map +0 -1
  830. package/dist/src/utils/systemEncoding.test.js +0 -369
  831. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  832. /package/dist/src/{policy/memory-manager-policy.test.d.ts → agents/local-session-invocation.test.d.ts} +0 -0
  833. /package/dist/src/{prompts/snippets-memory-v2.test.d.ts → agents/local-subagent-protocol.test.d.ts} +0 -0
  834. /package/dist/src/{utils/systemEncoding.test.d.ts → policy/stable-stringify.test.d.ts} +0 -0
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseToolInvocation, } from '../tools/tools.js';
7
+ import { DEFAULT_QUERY_STRING, SubagentState, getRemoteAgentTargetUrl, } from './types.js';
8
+ import {} from '../config/agent-loop-context.js';
9
+ import { A2AAgentError } from './a2a-errors.js';
10
+ import { RemoteSubagentSession } from './remote-subagent-protocol.js';
11
+ /**
12
+ * Session-based remote agent invocation.
13
+ *
14
+ * This implementation delegates execution to {@link RemoteSubagentSession},
15
+ * which wraps the A2A client streaming behind the AgentProtocol interface.
16
+ *
17
+ * Cross-invocation A2A session state (contextId/taskId) is persisted via a
18
+ * static map keyed by a composite of agent name and target URL. This ensures
19
+ * agents with the same name but different endpoints maintain independent state.
20
+ */
21
+ export class RemoteSessionInvocation extends BaseToolInvocation {
22
+ definition;
23
+ context;
24
+ // Persist A2A conversation state across ephemeral invocation instances.
25
+ // Keyed by composite of name + target URL so agents with the same name
26
+ // but different endpoints don't share state.
27
+ static sessionState = new Map();
28
+ /**
29
+ * Builds a composite key for the sessionState map.
30
+ * Format: `name::targetUrl` (or just `name` if no URL can be derived).
31
+ */
32
+ static sessionKey(definition) {
33
+ const url = getRemoteAgentTargetUrl(definition);
34
+ return url ? `${definition.name}::${url}` : definition.name;
35
+ }
36
+ _onAgentEvent;
37
+ constructor(definition, context, params, messageBus, options) {
38
+ const query = params['query'] ?? DEFAULT_QUERY_STRING;
39
+ if (typeof query !== 'string') {
40
+ throw new Error(`Remote agent '${definition.name}' requires a string 'query' input.`);
41
+ }
42
+ // Safe to pass strict object to super
43
+ super({ query }, messageBus, options?.toolName ?? definition.name, options?.toolDisplayName ?? definition.displayName);
44
+ this.definition = definition;
45
+ this.context = context;
46
+ this._onAgentEvent = options?.onAgentEvent;
47
+ // Validate that A2AClientManager is available at construction time
48
+ if (!this.context.config.getA2AClientManager()) {
49
+ throw new Error(`Failed to initialize RemoteSessionInvocation for '${definition.name}': A2AClientManager is not available.`);
50
+ }
51
+ }
52
+ getDescription() {
53
+ return `Calling remote agent ${this.definition.displayName ?? this.definition.name}`;
54
+ }
55
+ async getConfirmationDetails(_abortSignal) {
56
+ return {
57
+ type: 'info',
58
+ title: `Call Remote Agent: ${this.definition.displayName ?? this.definition.name}`,
59
+ prompt: `Calling remote agent: "${this.params.query}"`,
60
+ onConfirm: async (_outcome) => {
61
+ // Policy updates are now handled centrally by the scheduler
62
+ },
63
+ };
64
+ }
65
+ async execute(options) {
66
+ const { abortSignal: _signal, updateOutput } = options;
67
+ const agentName = this.definition.displayName ?? this.definition.name;
68
+ const emptyActivity = [];
69
+ // Seed session with prior A2A conversation state
70
+ const stateKey = RemoteSessionInvocation.sessionKey(this.definition);
71
+ const priorState = RemoteSessionInvocation.sessionState.get(stateKey);
72
+ const session = new RemoteSubagentSession(this.definition, this.context, this.messageBus, priorState);
73
+ // Wire external abort signal to session abort
74
+ const abortListener = () => void session.abort();
75
+ _signal?.addEventListener('abort', abortListener, { once: true });
76
+ // Subscribe for parent session observability
77
+ let unsubscribeParent;
78
+ if (this._onAgentEvent) {
79
+ unsubscribeParent = session.subscribe(this._onAgentEvent);
80
+ }
81
+ // Subscribe to message events for live SubagentProgress updates
82
+ const unsubscribeProgress = session.subscribe((event) => {
83
+ if (event.type === 'message' && updateOutput) {
84
+ const currentProgress = session.getLatestProgress();
85
+ if (currentProgress)
86
+ updateOutput(currentProgress);
87
+ }
88
+ });
89
+ try {
90
+ if (updateOutput) {
91
+ updateOutput({
92
+ isSubagentProgress: true,
93
+ agentName,
94
+ state: SubagentState.RUNNING,
95
+ recentActivity: [
96
+ {
97
+ id: 'pending',
98
+ type: 'thought',
99
+ content: 'Working...',
100
+ status: SubagentState.RUNNING,
101
+ },
102
+ ],
103
+ });
104
+ }
105
+ await session.send({
106
+ message: { content: [{ type: 'text', text: this.params.query }] },
107
+ });
108
+ const result = await session.getResult();
109
+ // The protocol resolves aborts with an empty result rather than
110
+ // rejecting. Detect this and surface proper error state.
111
+ if (_signal?.aborted) {
112
+ const partialProgress = session.getLatestProgress();
113
+ const recentActivity = this.stopRunningActivities(partialProgress?.recentActivity ?? emptyActivity, SubagentState.CANCELLED);
114
+ const errorProgress = {
115
+ isSubagentProgress: true,
116
+ agentName,
117
+ state: SubagentState.CANCELLED,
118
+ result: typeof partialProgress?.result === 'string'
119
+ ? partialProgress.result
120
+ : '',
121
+ recentActivity,
122
+ };
123
+ if (updateOutput)
124
+ updateOutput(errorProgress);
125
+ return {
126
+ llmContent: [{ text: 'Operation cancelled by user' }],
127
+ returnDisplay: errorProgress,
128
+ };
129
+ }
130
+ // Emit final completed progress
131
+ if (updateOutput) {
132
+ const finalProgress = session.getLatestProgress();
133
+ if (finalProgress)
134
+ updateOutput(finalProgress);
135
+ }
136
+ return result;
137
+ }
138
+ catch (error) {
139
+ const partialProgress = session.getLatestProgress();
140
+ const partialOutput = typeof partialProgress?.result === 'string'
141
+ ? partialProgress.result
142
+ : '';
143
+ const errorMessage = this.formatExecutionError(error);
144
+ const fullDisplay = partialOutput
145
+ ? `${partialOutput}\n\n${errorMessage}`
146
+ : errorMessage;
147
+ const isAbort = (error instanceof Error && error.name === 'AbortError') ||
148
+ errorMessage.includes('Aborted');
149
+ const status = isAbort ? SubagentState.CANCELLED : SubagentState.ERROR;
150
+ const recentActivity = this.stopRunningActivities(partialProgress?.recentActivity ?? emptyActivity, status);
151
+ const errorProgress = {
152
+ isSubagentProgress: true,
153
+ agentName,
154
+ state: status,
155
+ result: fullDisplay,
156
+ recentActivity,
157
+ };
158
+ if (updateOutput) {
159
+ updateOutput(errorProgress);
160
+ }
161
+ return {
162
+ llmContent: [{ text: fullDisplay }],
163
+ returnDisplay: errorProgress,
164
+ };
165
+ }
166
+ finally {
167
+ // Persist A2A state for next invocation — even on abort/error
168
+ RemoteSessionInvocation.sessionState.set(stateKey, session.getSessionState());
169
+ _signal?.removeEventListener('abort', abortListener);
170
+ unsubscribeProgress();
171
+ unsubscribeParent?.();
172
+ }
173
+ }
174
+ stopRunningActivities(activity, status) {
175
+ const result = [];
176
+ for (const item of activity) {
177
+ result.push(item.status === SubagentState.RUNNING ? { ...item, status } : item);
178
+ }
179
+ return result;
180
+ }
181
+ /**
182
+ * Formats an execution error into a user-friendly message.
183
+ * Recognizes typed A2AAgentError subclasses and falls back to
184
+ * a generic message for unknown errors.
185
+ */
186
+ formatExecutionError(error) {
187
+ if (error instanceof A2AAgentError) {
188
+ return error.userMessage;
189
+ }
190
+ return `Error calling remote agent: ${error instanceof Error ? error.message : String(error)}`;
191
+ }
192
+ }
193
+ //# sourceMappingURL=remote-session-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-session-invocation.js","sourceRoot":"","sources":["../../../src/agents/remote-session-invocation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,405 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { RemoteSessionInvocation } from './remote-session-invocation.js';
8
+ import { RemoteSubagentSession } from './remote-subagent-protocol.js';
9
+ import { SubagentState, } from './types.js';
10
+ import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
11
+ vi.mock('./remote-subagent-protocol.js');
12
+ const mockDefinition = {
13
+ name: 'test-agent',
14
+ kind: 'remote',
15
+ agentCardUrl: 'http://test-agent/card',
16
+ displayName: 'Test Agent',
17
+ description: 'A test agent',
18
+ inputConfig: { inputSchema: { type: 'object' } },
19
+ };
20
+ const mockMessageBus = createMockMessageBus();
21
+ function setupMockSession(options = {}) {
22
+ const { result = {
23
+ llmContent: [{ text: 'done' }],
24
+ returnDisplay: {
25
+ isSubagentProgress: true,
26
+ agentName: 'Test Agent',
27
+ state: SubagentState.COMPLETED,
28
+ result: 'done',
29
+ recentActivity: [],
30
+ },
31
+ }, error, progress, sessionState = {}, } = options;
32
+ const subscriberCallbacks = [];
33
+ const mockSession = {
34
+ send: vi.fn().mockResolvedValue({ streamId: 'stream-1' }),
35
+ getResult: error
36
+ ? vi.fn().mockRejectedValue(error)
37
+ : vi.fn().mockResolvedValue(result),
38
+ getLatestProgress: vi.fn().mockReturnValue(progress),
39
+ getSessionState: vi.fn().mockReturnValue(sessionState),
40
+ subscribe: vi.fn((cb) => {
41
+ subscriberCallbacks.push(cb);
42
+ return vi.fn(); // unsubscribe
43
+ }),
44
+ abort: vi.fn(),
45
+ };
46
+ vi.mocked(RemoteSubagentSession).mockImplementation(() => mockSession);
47
+ return {
48
+ mockSession,
49
+ subscriberCallbacks,
50
+ /** Fire a message event through all subscribed callbacks. */
51
+ emitEvent(event) {
52
+ for (const cb of subscriberCallbacks) {
53
+ cb(event);
54
+ }
55
+ },
56
+ };
57
+ }
58
+ describe('RemoteSessionInvocation', () => {
59
+ let mockContext;
60
+ beforeEach(() => {
61
+ vi.clearAllMocks();
62
+ const mockConfig = {
63
+ getA2AClientManager: vi.fn().mockReturnValue({}),
64
+ injectionService: {
65
+ getLatestInjectionIndex: vi.fn().mockReturnValue(0),
66
+ },
67
+ };
68
+ mockContext = { config: mockConfig };
69
+ // Clear the static sessionState map between tests
70
+ RemoteSessionInvocation.sessionState?.clear();
71
+ });
72
+ afterEach(() => {
73
+ vi.restoreAllMocks();
74
+ });
75
+ // ---------------------------------------------------------------------------
76
+ // Constructor Validation
77
+ // ---------------------------------------------------------------------------
78
+ describe('Constructor Validation', () => {
79
+ it('accepts valid input with string query', () => {
80
+ expect(() => {
81
+ new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hello' }, mockMessageBus);
82
+ }).not.toThrow();
83
+ });
84
+ it('accepts missing query (defaults to "Get Started!")', () => {
85
+ expect(() => {
86
+ new RemoteSessionInvocation(mockDefinition, mockContext, {}, mockMessageBus);
87
+ }).not.toThrow();
88
+ });
89
+ it('throws if query is not a string', () => {
90
+ expect(() => {
91
+ new RemoteSessionInvocation(mockDefinition, mockContext, { query: 123 }, mockMessageBus);
92
+ }).toThrow("requires a string 'query' input");
93
+ });
94
+ it('throws if A2AClientManager is not available', () => {
95
+ const noA2AConfig = {
96
+ getA2AClientManager: vi.fn().mockReturnValue(undefined),
97
+ injectionService: {
98
+ getLatestInjectionIndex: vi.fn().mockReturnValue(0),
99
+ },
100
+ };
101
+ const noA2AContext = {
102
+ config: noA2AConfig,
103
+ };
104
+ expect(() => {
105
+ new RemoteSessionInvocation(mockDefinition, noA2AContext, { query: 'hi' }, mockMessageBus);
106
+ }).toThrow('A2AClientManager is not available');
107
+ });
108
+ });
109
+ // ---------------------------------------------------------------------------
110
+ // Execution Logic
111
+ // ---------------------------------------------------------------------------
112
+ describe('Execution Logic', () => {
113
+ it('should create session and return result', async () => {
114
+ const completedProgress = {
115
+ isSubagentProgress: true,
116
+ agentName: 'Test Agent',
117
+ state: SubagentState.COMPLETED,
118
+ result: 'Agent output',
119
+ recentActivity: [],
120
+ };
121
+ const expectedResult = {
122
+ llmContent: [{ text: 'Agent output' }],
123
+ returnDisplay: completedProgress,
124
+ };
125
+ setupMockSession({
126
+ result: expectedResult,
127
+ progress: completedProgress,
128
+ });
129
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'do stuff' }, mockMessageBus);
130
+ const result = await invocation.execute({
131
+ abortSignal: new AbortController().signal,
132
+ });
133
+ expect(RemoteSubagentSession).toHaveBeenCalledOnce();
134
+ expect(result).toBe(expectedResult);
135
+ });
136
+ it('should pass initial state from static map to session', async () => {
137
+ const priorState = { contextId: 'ctx-42', taskId: 'task-42' };
138
+ // Seed the static map before constructing the invocation
139
+ RemoteSessionInvocation.sessionState.set('test-agent::http://test-agent/card', priorState);
140
+ setupMockSession();
141
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
142
+ await invocation.execute({
143
+ abortSignal: new AbortController().signal,
144
+ });
145
+ // Verify the session constructor received the prior state
146
+ expect(RemoteSubagentSession).toHaveBeenCalledWith(mockDefinition, mockContext, mockMessageBus, priorState);
147
+ });
148
+ it('should persist session state in finally block', async () => {
149
+ const newState = { contextId: 'ctx-new', taskId: 'task-new' };
150
+ setupMockSession({ sessionState: newState });
151
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
152
+ await invocation.execute({
153
+ abortSignal: new AbortController().signal,
154
+ });
155
+ // Verify the state was persisted in the static map
156
+ const storedState = RemoteSessionInvocation.sessionState.get('test-agent::http://test-agent/card');
157
+ expect(storedState).toEqual(newState);
158
+ });
159
+ it('should persist session state across invocations', async () => {
160
+ // First invocation returns state
161
+ const firstState = { contextId: 'ctx-1', taskId: 'task-1' };
162
+ setupMockSession({ sessionState: firstState });
163
+ const invocation1 = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'first' }, mockMessageBus);
164
+ await invocation1.execute({
165
+ abortSignal: new AbortController().signal,
166
+ });
167
+ // Second invocation — the mock constructor should receive firstState
168
+ const secondState = { contextId: 'ctx-2', taskId: 'task-2' };
169
+ setupMockSession({ sessionState: secondState });
170
+ const invocation2 = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'second' }, mockMessageBus);
171
+ await invocation2.execute({
172
+ abortSignal: new AbortController().signal,
173
+ });
174
+ // The second invocation should have received the first's state
175
+ const secondCallArgs = vi.mocked(RemoteSubagentSession).mock.calls[1];
176
+ expect(secondCallArgs[3]).toEqual(firstState);
177
+ });
178
+ it('should subscribe for progress updates', async () => {
179
+ const completedProgress = {
180
+ isSubagentProgress: true,
181
+ agentName: 'Test Agent',
182
+ state: SubagentState.RUNNING,
183
+ result: 'partial',
184
+ recentActivity: [],
185
+ };
186
+ const { mockSession, emitEvent } = setupMockSession({
187
+ progress: completedProgress,
188
+ });
189
+ const updateOutput = vi.fn();
190
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
191
+ // Override getResult to emit a message event mid-execution
192
+ mockSession.getResult.mockImplementation(async () => {
193
+ emitEvent({
194
+ type: 'message',
195
+ id: 'e1',
196
+ timestamp: new Date().toISOString(),
197
+ streamId: 's1',
198
+ role: 'agent',
199
+ content: [{ type: 'text', text: 'hello' }],
200
+ });
201
+ return {
202
+ llmContent: [{ text: 'done' }],
203
+ returnDisplay: completedProgress,
204
+ };
205
+ });
206
+ await invocation.execute({
207
+ abortSignal: new AbortController().signal,
208
+ updateOutput,
209
+ });
210
+ // subscribe should have been called (at least once for progress, possibly for parent)
211
+ expect(mockSession.subscribe).toHaveBeenCalled();
212
+ // updateOutput should have been called with the progress from getLatestProgress
213
+ expect(updateOutput).toHaveBeenCalledWith(expect.objectContaining({
214
+ isSubagentProgress: true,
215
+ }));
216
+ });
217
+ it('should handle abort gracefully', async () => {
218
+ const controller = new AbortController();
219
+ const partialProgress = {
220
+ isSubagentProgress: true,
221
+ agentName: 'Test Agent',
222
+ state: SubagentState.RUNNING,
223
+ result: '',
224
+ recentActivity: [
225
+ {
226
+ id: 'a1',
227
+ type: 'thought',
228
+ content: 'Thinking...',
229
+ status: SubagentState.RUNNING,
230
+ },
231
+ ],
232
+ };
233
+ const { mockSession } = setupMockSession({ progress: partialProgress });
234
+ // When getResult resolves, the signal will already be aborted
235
+ mockSession.getResult.mockImplementation(async () => {
236
+ controller.abort();
237
+ return {
238
+ llmContent: [{ text: '' }],
239
+ returnDisplay: '',
240
+ };
241
+ });
242
+ const updateOutput = vi.fn();
243
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
244
+ const result = await invocation.execute({
245
+ abortSignal: controller.signal,
246
+ updateOutput,
247
+ });
248
+ expect(result.returnDisplay).toMatchObject({ state: 'cancelled' });
249
+ expect(result.returnDisplay.recentActivity[0].status).toBe(SubagentState.CANCELLED);
250
+ expect(result.llmContent).toEqual([
251
+ { text: 'Operation cancelled by user' },
252
+ ]);
253
+ });
254
+ });
255
+ // ---------------------------------------------------------------------------
256
+ // Error Handling
257
+ // ---------------------------------------------------------------------------
258
+ describe('Error Handling', () => {
259
+ it('should handle execution errors gracefully', async () => {
260
+ setupMockSession({ error: new Error('Network failure') });
261
+ const updateOutput = vi.fn();
262
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
263
+ const result = await invocation.execute({
264
+ abortSignal: new AbortController().signal,
265
+ updateOutput,
266
+ });
267
+ expect(result.returnDisplay).toMatchObject({ state: 'error' });
268
+ expect(result.returnDisplay.result).toContain('Network failure');
269
+ // updateOutput should be called with error progress
270
+ expect(updateOutput).toHaveBeenCalledWith(expect.objectContaining({ state: 'error' }));
271
+ });
272
+ it('should include partial output in error display', async () => {
273
+ const partialProgress = {
274
+ isSubagentProgress: true,
275
+ agentName: 'Test Agent',
276
+ state: SubagentState.RUNNING,
277
+ result: 'Partial work so far',
278
+ recentActivity: [
279
+ {
280
+ id: 'a1',
281
+ type: 'thought',
282
+ content: 'Thinking...',
283
+ status: SubagentState.RUNNING,
284
+ },
285
+ ],
286
+ };
287
+ setupMockSession({
288
+ error: new Error('mid-stream error'),
289
+ progress: partialProgress,
290
+ });
291
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
292
+ const result = await invocation.execute({
293
+ abortSignal: new AbortController().signal,
294
+ });
295
+ const display = result.returnDisplay;
296
+ // Should contain both the partial output and the error
297
+ expect(display.result).toContain('Partial work so far');
298
+ expect(display.result).toContain('mid-stream error');
299
+ // Should preserve and update partial activity status to ERROR
300
+ expect(display.recentActivity).toHaveLength(1);
301
+ expect(display.recentActivity[0].content).toBe('Thinking...');
302
+ expect(display.recentActivity[0].status).toBe(SubagentState.ERROR);
303
+ });
304
+ it('should clean up listeners in finally', async () => {
305
+ const { mockSession } = setupMockSession();
306
+ const controller = new AbortController();
307
+ const removeEventListenerSpy = vi.spyOn(controller.signal, 'removeEventListener');
308
+ const onAgentEvent = vi.fn();
309
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus, { onAgentEvent });
310
+ await invocation.execute({
311
+ abortSignal: controller.signal,
312
+ });
313
+ // removeEventListener should have been called for the abort listener
314
+ expect(removeEventListenerSpy).toHaveBeenCalledWith('abort', expect.any(Function));
315
+ // All unsubscribe functions returned by subscribe during execute should be called
316
+ const postExecuteUnsubscribes = mockSession.subscribe.mock.results.map((r) => r.value);
317
+ for (const unsub of postExecuteUnsubscribes) {
318
+ expect(unsub).toHaveBeenCalled();
319
+ }
320
+ });
321
+ });
322
+ // ---------------------------------------------------------------------------
323
+ // SessionState Management
324
+ // ---------------------------------------------------------------------------
325
+ describe('SessionState Management', () => {
326
+ it('should use composite name::url as session state key', async () => {
327
+ const secondDefinition = {
328
+ ...mockDefinition,
329
+ name: 'other-agent',
330
+ displayName: 'Other Agent',
331
+ agentCardUrl: 'http://other-agent/card',
332
+ };
333
+ // First agent
334
+ setupMockSession({
335
+ sessionState: { contextId: 'ctx-a' },
336
+ });
337
+ const inv1 = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
338
+ await inv1.execute({ abortSignal: new AbortController().signal });
339
+ // Second agent
340
+ setupMockSession({
341
+ sessionState: { contextId: 'ctx-b' },
342
+ });
343
+ const inv2 = new RemoteSessionInvocation(secondDefinition, mockContext, { query: 'hi' }, mockMessageBus);
344
+ await inv2.execute({ abortSignal: new AbortController().signal });
345
+ const stateMap = RemoteSessionInvocation.sessionState;
346
+ // Each agent should have its own entry keyed by name::url
347
+ expect(stateMap.get('test-agent::http://test-agent/card')).toEqual({
348
+ contextId: 'ctx-a',
349
+ });
350
+ expect(stateMap.get('other-agent::http://other-agent/card')).toEqual({
351
+ contextId: 'ctx-b',
352
+ });
353
+ });
354
+ it('should isolate same-name agents with different URLs', async () => {
355
+ const defA = {
356
+ ...mockDefinition,
357
+ agentCardUrl: 'http://host-a/card',
358
+ };
359
+ const defB = {
360
+ ...mockDefinition,
361
+ agentCardUrl: 'http://host-b/card',
362
+ };
363
+ // Agent A
364
+ setupMockSession({ sessionState: { contextId: 'ctx-a' } });
365
+ const invA = new RemoteSessionInvocation(defA, mockContext, { query: 'hi' }, mockMessageBus);
366
+ await invA.execute({ abortSignal: new AbortController().signal });
367
+ // Agent B (same name, different URL)
368
+ setupMockSession({ sessionState: { contextId: 'ctx-b' } });
369
+ const invB = new RemoteSessionInvocation(defB, mockContext, { query: 'hi' }, mockMessageBus);
370
+ await invB.execute({ abortSignal: new AbortController().signal });
371
+ const stateMap = RemoteSessionInvocation.sessionState;
372
+ expect(stateMap.get('test-agent::http://host-a/card')).toEqual({
373
+ contextId: 'ctx-a',
374
+ });
375
+ expect(stateMap.get('test-agent::http://host-b/card')).toEqual({
376
+ contextId: 'ctx-b',
377
+ });
378
+ });
379
+ it('should fall back to name-only key when URL is unavailable', async () => {
380
+ const noUrlDef = {
381
+ ...mockDefinition,
382
+ agentCardUrl: undefined,
383
+ };
384
+ setupMockSession({ sessionState: { contextId: 'ctx-no-url' } });
385
+ const inv = new RemoteSessionInvocation(noUrlDef, mockContext, { query: 'hi' }, mockMessageBus);
386
+ await inv.execute({ abortSignal: new AbortController().signal });
387
+ const stateMap = RemoteSessionInvocation.sessionState;
388
+ expect(stateMap.get('test-agent')).toEqual({ contextId: 'ctx-no-url' });
389
+ });
390
+ it('should persist state even on error', async () => {
391
+ const stateOnError = { contextId: 'ctx-err', taskId: 'task-err' };
392
+ setupMockSession({
393
+ error: new Error('boom'),
394
+ sessionState: stateOnError,
395
+ });
396
+ const invocation = new RemoteSessionInvocation(mockDefinition, mockContext, { query: 'hi' }, mockMessageBus);
397
+ await invocation.execute({
398
+ abortSignal: new AbortController().signal,
399
+ });
400
+ const stateMap = RemoteSessionInvocation.sessionState;
401
+ expect(stateMap.get('test-agent::http://test-agent/card')).toEqual(stateOnError);
402
+ });
403
+ });
404
+ });
405
+ //# sourceMappingURL=remote-session-invocation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-session-invocation.test.js","sourceRoot":"","sources":["../../../src/agents/remote-session-invocation.test.ts"],"names":[],"mappings":"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"}