@qduc/term2 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/README.md +324 -316
  2. package/dist/agent.d.ts +3 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +15 -63
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app.d.ts +1 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +129 -19
  9. package/dist/app.js.map +1 -1
  10. package/dist/cli.js +25 -16
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/compact-command.d.ts.map +1 -1
  13. package/dist/commands/compact-command.js +4 -0
  14. package/dist/commands/compact-command.js.map +1 -1
  15. package/dist/commands/effort-command.js +1 -1
  16. package/dist/commands/effort-command.js.map +1 -1
  17. package/dist/commands/guarded-settings-command.d.ts.map +1 -1
  18. package/dist/commands/guarded-settings-command.js +4 -8
  19. package/dist/commands/guarded-settings-command.js.map +1 -1
  20. package/dist/commands/model-command.js +1 -1
  21. package/dist/commands/model-command.js.map +1 -1
  22. package/dist/commands/resume-command.d.ts +10 -0
  23. package/dist/commands/resume-command.d.ts.map +1 -0
  24. package/dist/commands/resume-command.js +40 -0
  25. package/dist/commands/resume-command.js.map +1 -0
  26. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  27. package/dist/components/ErrorBoundary.js +5 -4
  28. package/dist/components/ErrorBoundary.js.map +1 -1
  29. package/dist/components/InputBox.d.ts +2 -0
  30. package/dist/components/InputBox.d.ts.map +1 -1
  31. package/dist/components/InputBox.js +56 -18
  32. package/dist/components/InputBox.js.map +1 -1
  33. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  34. package/dist/components/MarkdownRenderer.js +16 -15
  35. package/dist/components/MarkdownRenderer.js.map +1 -1
  36. package/dist/components/common/MenuContainer.d.ts +25 -2
  37. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  38. package/dist/components/common/MenuContainer.js +35 -11
  39. package/dist/components/common/MenuContainer.js.map +1 -1
  40. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  41. package/dist/components/common/ScrollableTabBar.js +5 -4
  42. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  43. package/dist/components/input/ApplicationInputSurface.d.ts +4 -5
  44. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  45. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  46. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  47. package/dist/components/input/FirstRunSetupPrompt.js +5 -4
  48. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  49. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  50. package/dist/components/input/MenuSurface.js +10 -3
  51. package/dist/components/input/MenuSurface.js.map +1 -1
  52. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  53. package/dist/components/input/ModelMenuSession.js +2 -1
  54. package/dist/components/input/ModelMenuSession.js.map +1 -1
  55. package/dist/components/input/PendingQueueList.d.ts +2 -0
  56. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  57. package/dist/components/input/PendingQueueList.js +17 -14
  58. package/dist/components/input/PendingQueueList.js.map +1 -1
  59. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  60. package/dist/components/input/SettingsValueMenuSession.js +2 -1
  61. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  62. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  63. package/dist/components/layout/BackgroundTaskManager.js +12 -11
  64. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  65. package/dist/components/layout/BackgroundTasksPanel.d.ts +2 -2
  66. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  67. package/dist/components/layout/BackgroundTasksPanel.js +10 -9
  68. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  69. package/dist/components/layout/Banner.d.ts +0 -1
  70. package/dist/components/layout/Banner.d.ts.map +1 -1
  71. package/dist/components/layout/Banner.js +43 -73
  72. package/dist/components/layout/Banner.js.map +1 -1
  73. package/dist/components/layout/BottomArea.d.ts +6 -5
  74. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  75. package/dist/components/layout/BottomArea.js +17 -9
  76. package/dist/components/layout/BottomArea.js.map +1 -1
  77. package/dist/components/layout/DiffView.js +5 -5
  78. package/dist/components/layout/DiffView.js.map +1 -1
  79. package/dist/components/layout/StatusBar.d.ts +4 -1
  80. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  81. package/dist/components/layout/StatusBar.js +305 -95
  82. package/dist/components/layout/StatusBar.js.map +1 -1
  83. package/dist/components/layout/background-task-clock.d.ts +43 -0
  84. package/dist/components/layout/background-task-clock.d.ts.map +1 -0
  85. package/dist/components/layout/background-task-clock.js +46 -0
  86. package/dist/components/layout/background-task-clock.js.map +1 -0
  87. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  88. package/dist/components/menu/CopyMenu.js +4 -3
  89. package/dist/components/menu/CopyMenu.js.map +1 -1
  90. package/dist/components/menu/MentorPoolSelectionMenu.d.ts.map +1 -1
  91. package/dist/components/menu/MentorPoolSelectionMenu.js +28 -21
  92. package/dist/components/menu/MentorPoolSelectionMenu.js.map +1 -1
  93. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  94. package/dist/components/menu/ModelSelectionMenu.js +26 -13
  95. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  96. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  97. package/dist/components/menu/PathSelectionMenu.js +4 -3
  98. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  99. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  100. package/dist/components/menu/ProviderSelectionMenu.js +46 -26
  101. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  102. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  103. package/dist/components/menu/RewindMenu.js +4 -3
  104. package/dist/components/menu/RewindMenu.js.map +1 -1
  105. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  106. package/dist/components/menu/SettingsSelectionMenu.js +26 -26
  107. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  108. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  109. package/dist/components/menu/SettingsValueSelectionMenu.js +22 -20
  110. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  111. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  112. package/dist/components/menu/SkillSelectionMenu.js +33 -23
  113. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  114. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  115. package/dist/components/menu/SlashCommandMenu.js +11 -6
  116. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  117. package/dist/components/message/ChatMessage.js +2 -2
  118. package/dist/components/message/ChatMessage.js.map +1 -1
  119. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  120. package/dist/components/message/CodeContextSearchRenderer.js +8 -11
  121. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  122. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
  123. package/dist/components/message/CommandGroupSummary.js +15 -7
  124. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  125. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  126. package/dist/components/message/CommandMessage.js +111 -91
  127. package/dist/components/message/CommandMessage.js.map +1 -1
  128. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  129. package/dist/components/message/GrepRenderer.js +5 -8
  130. package/dist/components/message/GrepRenderer.js.map +1 -1
  131. package/dist/components/message/MemoryRenderer.d.ts +1 -0
  132. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  133. package/dist/components/message/MemoryRenderer.js +19 -17
  134. package/dist/components/message/MemoryRenderer.js.map +1 -1
  135. package/dist/components/message/MessageList.d.ts +1 -2
  136. package/dist/components/message/MessageList.d.ts.map +1 -1
  137. package/dist/components/message/MessageList.js +12 -11
  138. package/dist/components/message/MessageList.js.map +1 -1
  139. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  140. package/dist/components/message/ReadFileRenderer.js +5 -6
  141. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  142. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  143. package/dist/components/message/SubagentActivityMessage.js +17 -13
  144. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  145. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  146. package/dist/components/message/WebFetchRenderer.js +7 -11
  147. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  148. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  149. package/dist/components/message/WebSearchRenderer.js +5 -10
  150. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  151. package/dist/components/message/command-grouping.d.ts +29 -6
  152. package/dist/components/message/command-grouping.d.ts.map +1 -1
  153. package/dist/components/message/command-grouping.js +62 -20
  154. package/dist/components/message/command-grouping.js.map +1 -1
  155. package/dist/components/message/command-message-helpers.d.ts +5 -32
  156. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  157. package/dist/components/message/command-message-helpers.js +26 -8
  158. package/dist/components/message/command-message-helpers.js.map +1 -1
  159. package/dist/components/message/useCommandVisibility.d.ts.map +1 -1
  160. package/dist/components/message/useCommandVisibility.js +5 -4
  161. package/dist/components/message/useCommandVisibility.js.map +1 -1
  162. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  163. package/dist/components/prompt/ApprovalPrompt.js +190 -106
  164. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  165. package/dist/components/prompt/HandoffConfirmationPrompt.d.ts.map +1 -1
  166. package/dist/components/prompt/HandoffConfirmationPrompt.js +3 -2
  167. package/dist/components/prompt/HandoffConfirmationPrompt.js.map +1 -1
  168. package/dist/components/prompt/InputSurgeConfirmationPrompt.d.ts.map +1 -1
  169. package/dist/components/prompt/InputSurgeConfirmationPrompt.js +5 -4
  170. package/dist/components/prompt/InputSurgeConfirmationPrompt.js.map +1 -1
  171. package/dist/components/prompt/LargeUncachedConfirmationPrompt.d.ts.map +1 -1
  172. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js +4 -3
  173. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js.map +1 -1
  174. package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts.map +1 -1
  175. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +4 -3
  176. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -1
  177. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  178. package/dist/components/prompt/QueuePausedPrompt.js +6 -5
  179. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  180. package/dist/components/prompt/StandardModeConfirmationPrompt.d.ts.map +1 -1
  181. package/dist/components/prompt/StandardModeConfirmationPrompt.js +3 -2
  182. package/dist/components/prompt/StandardModeConfirmationPrompt.js.map +1 -1
  183. package/dist/components/theme.d.ts +58 -3
  184. package/dist/components/theme.d.ts.map +1 -1
  185. package/dist/components/theme.js +84 -17
  186. package/dist/components/theme.js.map +1 -1
  187. package/dist/contracts/application-stream.d.ts +14 -0
  188. package/dist/contracts/application-stream.d.ts.map +1 -1
  189. package/dist/gateway/assertion.d.ts +4 -1
  190. package/dist/gateway/assertion.d.ts.map +1 -1
  191. package/dist/gateway/assertion.js +24 -2
  192. package/dist/gateway/assertion.js.map +1 -1
  193. package/dist/gateway/contracts.d.ts +21 -4
  194. package/dist/gateway/contracts.d.ts.map +1 -1
  195. package/dist/gateway/contracts.js +11 -0
  196. package/dist/gateway/contracts.js.map +1 -1
  197. package/dist/gateway/dynamic-workspace-registry.d.ts +76 -0
  198. package/dist/gateway/dynamic-workspace-registry.d.ts.map +1 -0
  199. package/dist/gateway/dynamic-workspace-registry.js +403 -0
  200. package/dist/gateway/dynamic-workspace-registry.js.map +1 -0
  201. package/dist/gateway/gateway.d.ts +24 -1
  202. package/dist/gateway/gateway.d.ts.map +1 -1
  203. package/dist/gateway/gateway.js +704 -21
  204. package/dist/gateway/gateway.js.map +1 -1
  205. package/dist/gateway/launcher-seam.d.ts +18 -0
  206. package/dist/gateway/launcher-seam.d.ts.map +1 -0
  207. package/dist/gateway/launcher-seam.js +43 -0
  208. package/dist/gateway/launcher-seam.js.map +1 -0
  209. package/dist/gateway/pairing.d.ts +25 -0
  210. package/dist/gateway/pairing.d.ts.map +1 -0
  211. package/dist/gateway/pairing.js +107 -0
  212. package/dist/gateway/pairing.js.map +1 -0
  213. package/dist/gateway/persistence/coordinator.d.ts +2 -0
  214. package/dist/gateway/persistence/coordinator.d.ts.map +1 -1
  215. package/dist/gateway/persistence/coordinator.js +13 -0
  216. package/dist/gateway/persistence/coordinator.js.map +1 -1
  217. package/dist/gateway/runtime-factory.d.ts +15 -6
  218. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  219. package/dist/gateway/runtime-factory.js +38 -9
  220. package/dist/gateway/runtime-factory.js.map +1 -1
  221. package/dist/gateway/safe-log.d.ts.map +1 -1
  222. package/dist/gateway/safe-log.js +19 -0
  223. package/dist/gateway/safe-log.js.map +1 -1
  224. package/dist/gateway/server-session.d.ts.map +1 -1
  225. package/dist/gateway/server-session.js +36 -4
  226. package/dist/gateway/server-session.js.map +1 -1
  227. package/dist/gateway/server.d.ts +26 -3
  228. package/dist/gateway/server.d.ts.map +1 -1
  229. package/dist/gateway/server.js +105 -17
  230. package/dist/gateway/server.js.map +1 -1
  231. package/dist/gateway/settings-rpc.d.ts +95 -0
  232. package/dist/gateway/settings-rpc.d.ts.map +1 -0
  233. package/dist/gateway/settings-rpc.js +227 -0
  234. package/dist/gateway/settings-rpc.js.map +1 -0
  235. package/dist/gateway/trusted-clients.d.ts +27 -0
  236. package/dist/gateway/trusted-clients.d.ts.map +1 -0
  237. package/dist/gateway/trusted-clients.js +157 -0
  238. package/dist/gateway/trusted-clients.js.map +1 -0
  239. package/dist/gateway/worker-boundary.d.ts +6 -5
  240. package/dist/gateway/worker-boundary.d.ts.map +1 -1
  241. package/dist/gateway/worker-boundary.js +20 -10
  242. package/dist/gateway/worker-boundary.js.map +1 -1
  243. package/dist/gateway/workspace-admission.d.ts +11 -0
  244. package/dist/gateway/workspace-admission.d.ts.map +1 -1
  245. package/dist/gateway/workspace-admission.js +89 -16
  246. package/dist/gateway/workspace-admission.js.map +1 -1
  247. package/dist/gateway/workspace-boundary-probe.d.ts +18 -0
  248. package/dist/gateway/workspace-boundary-probe.d.ts.map +1 -0
  249. package/dist/gateway/workspace-boundary-probe.js +37 -0
  250. package/dist/gateway/workspace-boundary-probe.js.map +1 -0
  251. package/dist/hooks/conversation-ui-reducer.d.ts +6 -0
  252. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  253. package/dist/hooks/conversation-ui-reducer.js +9 -1
  254. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  255. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  256. package/dist/hooks/settings-completion-config.js +11 -3
  257. package/dist/hooks/settings-completion-config.js.map +1 -1
  258. package/dist/hooks/use-app-commands.d.ts +6 -1
  259. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  260. package/dist/hooks/use-app-commands.js +22 -13
  261. package/dist/hooks/use-app-commands.js.map +1 -1
  262. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +1 -3
  263. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  264. package/dist/hooks/use-app-keyboard-shortcuts.js +11 -9
  265. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  266. package/dist/hooks/use-conversation.d.ts +8 -0
  267. package/dist/hooks/use-conversation.d.ts.map +1 -1
  268. package/dist/hooks/use-conversation.js +27 -18
  269. package/dist/hooks/use-conversation.js.map +1 -1
  270. package/dist/hooks/use-opencode-go-usage.d.ts +8 -0
  271. package/dist/hooks/use-opencode-go-usage.d.ts.map +1 -0
  272. package/dist/hooks/use-opencode-go-usage.js +45 -0
  273. package/dist/hooks/use-opencode-go-usage.js.map +1 -0
  274. package/dist/hooks/use-shell-mode.d.ts +3 -4
  275. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  276. package/dist/hooks/use-shell-mode.js +14 -12
  277. package/dist/hooks/use-shell-mode.js.map +1 -1
  278. package/dist/hooks/use-terminal-columns.d.ts +15 -0
  279. package/dist/hooks/use-terminal-columns.d.ts.map +1 -0
  280. package/dist/hooks/use-terminal-columns.js +45 -0
  281. package/dist/hooks/use-terminal-columns.js.map +1 -0
  282. package/dist/lib/agent-client.d.ts +2 -0
  283. package/dist/lib/agent-client.d.ts.map +1 -1
  284. package/dist/lib/agent-client.js +1 -0
  285. package/dist/lib/agent-client.js.map +1 -1
  286. package/dist/lib/agent-configuration.d.ts +3 -0
  287. package/dist/lib/agent-configuration.d.ts.map +1 -1
  288. package/dist/lib/agent-configuration.js +4 -0
  289. package/dist/lib/agent-configuration.js.map +1 -1
  290. package/dist/lib/agent-factory.d.ts +3 -0
  291. package/dist/lib/agent-factory.d.ts.map +1 -1
  292. package/dist/lib/agent-factory.js +9 -2
  293. package/dist/lib/agent-factory.js.map +1 -1
  294. package/dist/lib/harness-input-idle.d.ts.map +1 -1
  295. package/dist/lib/harness-input-idle.js +1 -1
  296. package/dist/lib/harness-input-idle.js.map +1 -1
  297. package/dist/non-interactive.d.ts.map +1 -1
  298. package/dist/non-interactive.js +9 -2
  299. package/dist/non-interactive.js.map +1 -1
  300. package/dist/prompts/approval-model.md +22 -0
  301. package/dist/prompts/gpt-5.6.md +3 -2
  302. package/dist/prompts/mentor-mode-stub.md +3 -0
  303. package/dist/prompts/orchestrator-mode-stub.md +3 -0
  304. package/dist/prompts/prefix-quality.test.ts +10 -0
  305. package/dist/prompts/prompt-constructor.d.ts +2 -0
  306. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  307. package/dist/prompts/prompt-constructor.js +23 -13
  308. package/dist/prompts/prompt-constructor.js.map +1 -1
  309. package/dist/prompts/prompt-constructor.test.ts +39 -5
  310. package/dist/prompts/prompt-constructor.ts +27 -15
  311. package/dist/prompts/prompt-profiles.d.ts +1 -3
  312. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  313. package/dist/prompts/prompt-profiles.js +2 -7
  314. package/dist/prompts/prompt-profiles.js.map +1 -1
  315. package/dist/prompts/prompt-profiles.ts +3 -16
  316. package/dist/prompts/session-browser.md +3 -0
  317. package/dist/prompts/subagent-delegation.d.ts +3 -2
  318. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  319. package/dist/prompts/subagent-delegation.js +9 -13
  320. package/dist/prompts/subagent-delegation.js.map +1 -1
  321. package/dist/prompts/subagent-delegation.ts +9 -13
  322. package/dist/providers/chained-wire-state.d.ts +7 -2
  323. package/dist/providers/chained-wire-state.d.ts.map +1 -1
  324. package/dist/providers/chained-wire-state.js +16 -7
  325. package/dist/providers/chained-wire-state.js.map +1 -1
  326. package/dist/providers/codex-auth.d.ts +2 -5
  327. package/dist/providers/codex-auth.d.ts.map +1 -1
  328. package/dist/providers/codex-auth.js +2 -0
  329. package/dist/providers/codex-auth.js.map +1 -1
  330. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  331. package/dist/providers/codex-responses-model.js +22 -3
  332. package/dist/providers/codex-responses-model.js.map +1 -1
  333. package/dist/providers/grok-auth.d.ts +2 -5
  334. package/dist/providers/grok-auth.d.ts.map +1 -1
  335. package/dist/providers/grok-auth.js +2 -0
  336. package/dist/providers/grok-auth.js.map +1 -1
  337. package/dist/providers/oauth-account-store.d.ts +5 -0
  338. package/dist/providers/oauth-account-store.d.ts.map +1 -1
  339. package/dist/providers/oauth-account-store.js +56 -5
  340. package/dist/providers/oauth-account-store.js.map +1 -1
  341. package/dist/providers/oauth-pkce.d.ts +8 -0
  342. package/dist/providers/oauth-pkce.d.ts.map +1 -1
  343. package/dist/providers/oauth-pkce.js +91 -19
  344. package/dist/providers/oauth-pkce.js.map +1 -1
  345. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  346. package/dist/providers/openai-compatible.provider.js +8 -1
  347. package/dist/providers/openai-compatible.provider.js.map +1 -1
  348. package/dist/providers/opencode-go-usage.d.ts +24 -0
  349. package/dist/providers/opencode-go-usage.d.ts.map +1 -0
  350. package/dist/providers/opencode-go-usage.js +37 -0
  351. package/dist/providers/opencode-go-usage.js.map +1 -0
  352. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  353. package/dist/providers/openrouter.provider.js +8 -1
  354. package/dist/providers/openrouter.provider.js.map +1 -1
  355. package/dist/providers/responses-websocket-sessions.d.ts +1 -0
  356. package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
  357. package/dist/providers/responses-websocket-sessions.js +16 -2
  358. package/dist/providers/responses-websocket-sessions.js.map +1 -1
  359. package/dist/providers/retrying-model.d.ts.map +1 -1
  360. package/dist/providers/retrying-model.js +31 -3
  361. package/dist/providers/retrying-model.js.map +1 -1
  362. package/dist/services/agent-runtime/application-run-loop.d.ts +5 -1
  363. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  364. package/dist/services/agent-runtime/application-run-loop.js +229 -149
  365. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  366. package/dist/services/agent-runtime/generation-guard.d.ts +39 -25
  367. package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
  368. package/dist/services/agent-runtime/generation-guard.js +98 -100
  369. package/dist/services/agent-runtime/generation-guard.js.map +1 -1
  370. package/dist/services/agent-runtime/run-budget.d.ts +1 -1
  371. package/dist/services/agent-runtime/run-budget.d.ts.map +1 -1
  372. package/dist/services/agent-runtime/run-budget.js +4 -0
  373. package/dist/services/agent-runtime/run-budget.js.map +1 -1
  374. package/dist/services/agent-stream.d.ts.map +1 -1
  375. package/dist/services/agent-stream.js +1 -0
  376. package/dist/services/agent-stream.js.map +1 -1
  377. package/dist/services/conversation/conversation-adapter.d.ts +13 -2
  378. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  379. package/dist/services/conversation/conversation-adapter.js +35 -7
  380. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  381. package/dist/services/conversation/conversation-admission-workflow.d.ts +3 -2
  382. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  383. package/dist/services/conversation/conversation-admission-workflow.js +6 -1
  384. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  385. package/dist/services/conversation/conversation-events.d.ts +43 -2
  386. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  387. package/dist/services/conversation/conversation-orchestrator.d.ts +14 -1
  388. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  389. package/dist/services/conversation/conversation-orchestrator.js +142 -11
  390. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  391. package/dist/services/conversation/conversation-orchestrator.types.d.ts +3 -1
  392. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  393. package/dist/services/conversation/conversation-persistence.d.ts +22 -1
  394. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  395. package/dist/services/conversation/conversation-persistence.js +61 -0
  396. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  397. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  398. package/dist/services/conversation/conversation-service.js +45 -29
  399. package/dist/services/conversation/conversation-service.js.map +1 -1
  400. package/dist/services/conversation/session-audit.d.ts +70 -0
  401. package/dist/services/conversation/session-audit.d.ts.map +1 -0
  402. package/dist/services/conversation/session-audit.js +164 -0
  403. package/dist/services/conversation/session-audit.js.map +1 -0
  404. package/dist/services/conversation/session-browser.d.ts +46 -0
  405. package/dist/services/conversation/session-browser.d.ts.map +1 -0
  406. package/dist/services/conversation/session-browser.js +380 -0
  407. package/dist/services/conversation/session-browser.js.map +1 -0
  408. package/dist/services/input-surge-approval.d.ts +21 -0
  409. package/dist/services/input-surge-approval.d.ts.map +1 -0
  410. package/dist/services/input-surge-approval.js +42 -0
  411. package/dist/services/input-surge-approval.js.map +1 -0
  412. package/dist/services/large-uncached-input-guard.js +4 -4
  413. package/dist/services/large-uncached-input-guard.js.map +1 -1
  414. package/dist/services/logging/assistant-turn-journal.d.ts +15 -0
  415. package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
  416. package/dist/services/logging/assistant-turn-journal.js +27 -0
  417. package/dist/services/logging/assistant-turn-journal.js.map +1 -1
  418. package/dist/services/memory/memory-capabilities.js +2 -2
  419. package/dist/services/memory/memory-search.d.ts +16 -0
  420. package/dist/services/memory/memory-search.d.ts.map +1 -0
  421. package/dist/services/memory/memory-search.js +55 -0
  422. package/dist/services/memory/memory-search.js.map +1 -0
  423. package/dist/services/memory/memory-store.d.ts +12 -0
  424. package/dist/services/memory/memory-store.d.ts.map +1 -1
  425. package/dist/services/memory/memory-store.js +14 -35
  426. package/dist/services/memory/memory-store.js.map +1 -1
  427. package/dist/services/mode-notices.d.ts +11 -0
  428. package/dist/services/mode-notices.d.ts.map +1 -1
  429. package/dist/services/mode-notices.js +37 -3
  430. package/dist/services/mode-notices.js.map +1 -1
  431. package/dist/services/queue/queue-controller.d.ts +13 -0
  432. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  433. package/dist/services/queue/queue-controller.js +32 -1
  434. package/dist/services/queue/queue-controller.js.map +1 -1
  435. package/dist/services/retry/in-loop-model-retry.d.ts +12 -0
  436. package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -0
  437. package/dist/services/retry/in-loop-model-retry.js +115 -0
  438. package/dist/services/retry/in-loop-model-retry.js.map +1 -0
  439. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  440. package/dist/services/retry/retry-classifier.js +18 -12
  441. package/dist/services/retry/retry-classifier.js.map +1 -1
  442. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  443. package/dist/services/retry/retry-error-classification.js +10 -6
  444. package/dist/services/retry/retry-error-classification.js.map +1 -1
  445. package/dist/services/retry/upstream-retry-policy.d.ts.map +1 -1
  446. package/dist/services/retry/upstream-retry-policy.js +40 -7
  447. package/dist/services/retry/upstream-retry-policy.js.map +1 -1
  448. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  449. package/dist/services/runtime-setting-router.js +7 -2
  450. package/dist/services/runtime-setting-router.js.map +1 -1
  451. package/dist/services/session/background-check-in-scheduler.d.ts +44 -0
  452. package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -0
  453. package/dist/services/session/background-check-in-scheduler.js +88 -0
  454. package/dist/services/session/background-check-in-scheduler.js.map +1 -0
  455. package/dist/services/session/background-task-control.js +4 -1
  456. package/dist/services/session/background-task-control.js.map +1 -1
  457. package/dist/services/session/initial-input-preparer.d.ts +2 -1
  458. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  459. package/dist/services/session/initial-input-preparer.js +3 -1
  460. package/dist/services/session/initial-input-preparer.js.map +1 -1
  461. package/dist/services/session/repetition-detector.d.ts +0 -4
  462. package/dist/services/session/repetition-detector.d.ts.map +1 -1
  463. package/dist/services/session/repetition-detector.js +0 -7
  464. package/dist/services/session/repetition-detector.js.map +1 -1
  465. package/dist/services/session/session-composition.d.ts +6 -2
  466. package/dist/services/session/session-composition.d.ts.map +1 -1
  467. package/dist/services/session/session-composition.js +99 -29
  468. package/dist/services/session/session-composition.js.map +1 -1
  469. package/dist/services/session/session-lifecycle.d.ts +8 -0
  470. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  471. package/dist/services/session/session-lifecycle.js +4 -0
  472. package/dist/services/session/session-lifecycle.js.map +1 -1
  473. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  474. package/dist/services/session/session-stream-processor.js +5 -15
  475. package/dist/services/session/session-stream-processor.js.map +1 -1
  476. package/dist/services/session/turn-attempt-factory.d.ts +2 -1
  477. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  478. package/dist/services/session/turn-attempt-factory.js +1 -0
  479. package/dist/services/session/turn-attempt-factory.js.map +1 -1
  480. package/dist/services/session/turn-attempt.d.ts +3 -0
  481. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  482. package/dist/services/session/turn-attempt.js +5 -0
  483. package/dist/services/session/turn-attempt.js.map +1 -1
  484. package/dist/services/session/turn-coordinator.d.ts +1 -1
  485. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  486. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  487. package/dist/services/session/turn-workflow.js +4 -1
  488. package/dist/services/session/turn-workflow.js.map +1 -1
  489. package/dist/services/settings/settings-schema.d.ts +27 -3
  490. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  491. package/dist/services/settings/settings-schema.js +35 -11
  492. package/dist/services/settings/settings-schema.js.map +1 -1
  493. package/dist/services/settings/settings-service.d.ts +9 -0
  494. package/dist/services/settings/settings-service.d.ts.map +1 -1
  495. package/dist/services/settings/settings-service.js +40 -0
  496. package/dist/services/settings/settings-service.js.map +1 -1
  497. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  498. package/dist/services/settings/settings-sources.js +5 -0
  499. package/dist/services/settings/settings-sources.js.map +1 -1
  500. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -1
  501. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  502. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +6 -0
  503. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  504. package/dist/services/shell/shell-interaction-session.d.ts +4 -5
  505. package/dist/services/shell/shell-interaction-session.d.ts.map +1 -1
  506. package/dist/services/shell/shell-interaction-session.js +8 -20
  507. package/dist/services/shell/shell-interaction-session.js.map +1 -1
  508. package/dist/services/stream-event-processor.d.ts.map +1 -1
  509. package/dist/services/stream-event-processor.js +15 -0
  510. package/dist/services/stream-event-processor.js.map +1 -1
  511. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  512. package/dist/services/subagents/mentor-runner.js +2 -0
  513. package/dist/services/subagents/mentor-runner.js.map +1 -1
  514. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  515. package/dist/services/subagents/nested-runner.js +34 -1
  516. package/dist/services/subagents/nested-runner.js.map +1 -1
  517. package/dist/services/subagents/subagent-async-registry.js +1 -1
  518. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  519. package/dist/services/subagents/subagent-notification-store.d.ts +28 -1
  520. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  521. package/dist/services/subagents/subagent-notification-store.js +11 -0
  522. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  523. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  524. package/dist/services/subagents/tool-policy.js +10 -5
  525. package/dist/services/subagents/tool-policy.js.map +1 -1
  526. package/dist/services/subagents/utils.d.ts +2 -0
  527. package/dist/services/subagents/utils.d.ts.map +1 -1
  528. package/dist/services/subagents/utils.js +29 -0
  529. package/dist/services/subagents/utils.js.map +1 -1
  530. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  531. package/dist/services/tool-execution-ledger.js +5 -1
  532. package/dist/services/tool-execution-ledger.js.map +1 -1
  533. package/dist/tools/agent/ask-user.d.ts.map +1 -1
  534. package/dist/tools/agent/ask-user.js +2 -0
  535. package/dist/tools/agent/ask-user.js.map +1 -1
  536. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  537. package/dist/tools/agent/run-subagent.js +40 -24
  538. package/dist/tools/agent/run-subagent.js.map +1 -1
  539. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  540. package/dist/tools/memory/memory-tools.js +322 -59
  541. package/dist/tools/memory/memory-tools.js.map +1 -1
  542. package/dist/tools/session-browser/session-browser-tools.d.ts +4 -0
  543. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -0
  544. package/dist/tools/session-browser/session-browser-tools.js +47 -0
  545. package/dist/tools/session-browser/session-browser-tools.js.map +1 -0
  546. package/dist/tools/system/shell.d.ts.map +1 -1
  547. package/dist/tools/system/shell.js +7 -0
  548. package/dist/tools/system/shell.js.map +1 -1
  549. package/dist/tools/types.d.ts +4 -0
  550. package/dist/tools/types.d.ts.map +1 -1
  551. package/dist/tools/types.js.map +1 -1
  552. package/dist/utils/busy-turn-guard.d.ts +17 -0
  553. package/dist/utils/busy-turn-guard.d.ts.map +1 -0
  554. package/dist/utils/busy-turn-guard.js +24 -0
  555. package/dist/utils/busy-turn-guard.js.map +1 -0
  556. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  557. package/dist/utils/conversation/conversation-event-handler.js +28 -7
  558. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  559. package/dist/utils/output/bounded-json.d.ts +33 -0
  560. package/dist/utils/output/bounded-json.d.ts.map +1 -0
  561. package/dist/utils/output/bounded-json.js +59 -0
  562. package/dist/utils/output/bounded-json.js.map +1 -0
  563. package/dist/utils/output/output-trim.d.ts.map +1 -1
  564. package/dist/utils/output/output-trim.js +7 -7
  565. package/dist/utils/output/output-trim.js.map +1 -1
  566. package/dist/utils/output/text-snippet.d.ts +6 -0
  567. package/dist/utils/output/text-snippet.d.ts.map +1 -0
  568. package/dist/utils/output/text-snippet.js +106 -0
  569. package/dist/utils/output/text-snippet.js.map +1 -0
  570. package/dist/utils/resume-list.d.ts +3 -1
  571. package/dist/utils/resume-list.d.ts.map +1 -1
  572. package/dist/utils/resume-list.js +3 -2
  573. package/dist/utils/resume-list.js.map +1 -1
  574. package/dist/utils/settings-command.d.ts.map +1 -1
  575. package/dist/utils/settings-command.js +15 -0
  576. package/dist/utils/settings-command.js.map +1 -1
  577. package/dist/utils/shell/sandbox/sandbox-policy.d.ts +2 -0
  578. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  579. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  580. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +1 -0
  581. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -1
  582. package/dist/utils/shell/sandbox/shell-sandbox-runner.js +20 -1
  583. package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
  584. package/dist/utils/value-suggestions.d.ts.map +1 -1
  585. package/dist/utils/value-suggestions.js +1 -0
  586. package/dist/utils/value-suggestions.js.map +1 -1
  587. package/package.json +4 -2
@@ -4,22 +4,29 @@ import path from 'node:path';
4
4
  import { getOutputText, normalizeToolArguments, createBaseMessage, getCallIdFromItem, safeJsonParse, } from '../format-helpers.js';
5
5
  import { SUBAGENT_RUN_NAME_PATTERN, SubagentRegistryError } from '../../services/subagents/subagent-async-registry.js';
6
6
  import { isAbortLike, formatSubagentResult } from '../../services/subagents/utils.js';
7
- const RUN_SUBAGENT_DESCRIPTION = 'Delegate a bounded task to a specialized subagent. Set execution to "foreground" when you need the structured result in this turn, ' +
8
- 'or "background" when the work can continue after you return control; background returns a running handle and later completion notification. ' +
9
- 'The subagent runs in its own context and returns only a summary, preserving your context. ' +
10
- '(When to reach for this vs. doing it yourself is covered by the delegation guidance in your system instructions.)\n\n' +
11
- 'Independent foreground explorer and librarian calls in the same model response may run in parallel; keep worker calls and dependent tasks serial.\n\n' +
12
- '## Task Requirements\n' +
13
- 'Give the task one clear objective, one ownership boundary, and one concrete done condition. Include the task-specific scope, non-discoverable parent findings or decisions, constraints, deliverable or acceptance criteria, and validation when applicable. ' +
14
- 'Do not repeat automatically supplied context: role instructions, generic tool guidance, worktree hygiene, environment metadata, root `AGENTS.md`, or skills catalog. ' +
15
- 'The subagent does not see your conversation or reasoning. ' +
16
- "For explorer, request concrete evidence to collect for a bounded question and choose breadth or depth, never both: map one defined surface shallowly or trace one narrow seam thoroughly. Do not ask explorer to diagnose, recommend a fix, choose an approach, or own the user's complete investigation, review, diagnosis, or planning deliverable. " +
17
- 'For worker, assign one cohesive implementation unit. For mentor, ask one decision or challenge question. For librarian, assign one retrieval objective or memory-maintenance topic boundary.\n\n' +
18
- 'For isolated worker edits, create a git worktree under the workspace root first ' +
19
- '(`git worktree add .worktrees/<slug> -b <slug>`), then pass `worktree` as that directory basename or branch name. ' +
20
- '`worktree` is worker-only; it pins the child into that existing tree without re-rooting this session.\n\n' +
21
- 'Foreground returns a summary with status (completed, failed, cancelled, or interrupted), any final text, a list of tools used, and files changed. ' +
22
- 'A background status of "running" means launch succeeded: do not duplicate the task or immediately call get_subagent_result; end the turn and wait for the completion notification.';
7
+ function getRunSubagentDescription(backgroundEnabled) {
8
+ return ('Delegate a bounded task to a specialized subagent. ' +
9
+ (backgroundEnabled
10
+ ? 'This session requires background execution: the tool returns a running handle immediately and a later completion notification. '
11
+ : 'This session uses foreground execution and returns the structured result in this turn. ') +
12
+ 'The subagent runs in its own context and returns only a summary, preserving your context. ' +
13
+ '(When to reach for this vs. doing it yourself is covered by the delegation guidance in your system instructions.)\n\n' +
14
+ (backgroundEnabled
15
+ ? 'Background launches return immediately; do not duplicate them or call get_subagent_result until the completion notification arrives.\n\n'
16
+ : 'Independent foreground explorer and librarian calls in the same model response may run in parallel; keep worker calls and dependent tasks serial.\n\n') +
17
+ '## Task Requirements\n' +
18
+ 'Give the task one clear objective, one ownership boundary, and one concrete done condition. Include the task-specific scope, non-discoverable parent findings or decisions, constraints, deliverable or acceptance criteria, and validation when applicable. ' +
19
+ 'Do not repeat automatically supplied context: role instructions, generic tool guidance, worktree hygiene, environment metadata, root `AGENTS.md`, or skills catalog. ' +
20
+ 'The subagent does not see your conversation or reasoning. ' +
21
+ "For explorer, request concrete evidence to collect for a bounded question and choose breadth or depth, never both: map one defined surface shallowly or trace one narrow seam thoroughly. Do not ask explorer to diagnose, recommend a fix, choose an approach, or own the user's complete investigation, review, diagnosis, or planning deliverable. " +
22
+ 'For worker, assign one cohesive implementation unit. For mentor, ask one decision or challenge question. For librarian, assign one retrieval objective or memory-maintenance topic boundary.\n\n' +
23
+ 'For isolated worker edits, create a git worktree under the workspace root first ' +
24
+ '(`git worktree add .worktrees/<slug> -b <slug>`), then pass `worktree` as that directory basename or branch name. ' +
25
+ '`worktree` is worker-only; it pins the child into that existing tree without re-rooting this session.\n\n' +
26
+ (backgroundEnabled
27
+ ? 'A background status of "running" means launch succeeded: end the turn and wait for the completion notification.'
28
+ : 'Foreground returns a summary with status (completed, failed, cancelled, or interrupted), any final text, a list of tools used, and files changed.'));
29
+ }
23
30
  const FOREGROUND_ROLES = ['explorer', 'worker', 'librarian'];
24
31
  const BACKGROUND_ROLES = ['explorer', 'worker', 'mentor', 'librarian'];
25
32
  const ALL_ROLES = ['explorer', 'worker', 'mentor', 'librarian'];
@@ -54,24 +61,24 @@ const runSubagentSchema = z
54
61
  })
55
62
  .strict();
56
63
  function createRunSubagentSchema({ runSubagent, runSubagentAsync }) {
57
- if (runSubagent && !runSubagentAsync) {
64
+ if (runSubagentAsync) {
58
65
  return z
59
66
  .object({
60
- execution: z.literal('foreground').describe('Only foreground execution is available in this session.'),
61
- role: z.enum(FOREGROUND_ROLES).describe('The subagent role to use.'),
67
+ execution: z.literal('background').describe('Only background execution is available in this session.'),
68
+ role: z.enum(BACKGROUND_ROLES).describe('The subagent role to use.'),
62
69
  task: z.string().describe(SUBAGENT_TASK_DESCRIPTION),
63
70
  ...worktreeField,
71
+ ...backgroundFields,
64
72
  })
65
73
  .strict();
66
74
  }
67
- if (!runSubagent && runSubagentAsync) {
75
+ if (runSubagent && !runSubagentAsync) {
68
76
  return z
69
77
  .object({
70
- execution: z.literal('background').describe('Only background execution is available in this session.'),
71
- role: z.enum(BACKGROUND_ROLES).describe('The subagent role to use.'),
78
+ execution: z.literal('foreground').describe('Only foreground execution is available in this session.'),
79
+ role: z.enum(FOREGROUND_ROLES).describe('The subagent role to use.'),
72
80
  task: z.string().describe(SUBAGENT_TASK_DESCRIPTION),
73
81
  ...worktreeField,
74
- ...backgroundFields,
75
82
  })
76
83
  .strict();
77
84
  }
@@ -269,7 +276,7 @@ export function createRunSubagentToolDefinition(callbacks) {
269
276
  const parameters = createRunSubagentSchema(resolvedCallbacks);
270
277
  return {
271
278
  name: 'run_subagent',
272
- description: RUN_SUBAGENT_DESCRIPTION,
279
+ description: getRunSubagentDescription(Boolean(resolvedCallbacks.runSubagentAsync)),
273
280
  parameters,
274
281
  parallelSafe: (params) => {
275
282
  const candidate = params;
@@ -278,6 +285,15 @@ export function createRunSubagentToolDefinition(callbacks) {
278
285
  needsApproval: () => false,
279
286
  execute: async (rawParams, context, details) => {
280
287
  const params = rawParams;
288
+ if (resolvedCallbacks.runSubagentAsync && params.execution === 'foreground') {
289
+ return JSON.stringify({
290
+ status: 'failed',
291
+ error: {
292
+ code: 'foreground_unavailable',
293
+ message: 'Foreground execution is unavailable in this session; use execution: "background".',
294
+ },
295
+ });
296
+ }
281
297
  if (params.execution === 'foreground' || (legacyForegroundOnly && params.execution === undefined)) {
282
298
  if (params.name != null || params.continue_run_id != null) {
283
299
  return failedForegroundResult(params.role, 'Background-only inputs name and continue_run_id cannot be used with execution: "foreground".');
@@ -1 +1 @@
1
- {"version":3,"file":"run-subagent.js","sourceRoot":"","sources":["../../../source/tools/agent/run-subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-subagent.js","sourceRoot":"","sources":["../../../source/tools/agent/run-subagent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../../source/tools/memory/memory-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8C,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ9F,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AA0E5D,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,EAAE,CAmH/F"}
1
+ {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../../source/tools/memory/memory-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8C,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ9F,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,uCAAuC,CAAC;AAU/C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAoH5D,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,EAAE,CAoP/F"}
@@ -1,10 +1,50 @@
1
1
  import { z } from 'zod';
2
2
  import { createBaseMessage, getCallIdFromItem, getOutputText, isSuccessOutput, normalizeToolArguments, } from '../format-helpers.js';
3
3
  import { InvalidMemoryError, MemoryAlreadyExistsError, MemoryNotFoundError, MemoryStorageError, } from '../../services/memory/memory-store.js';
4
+ import { contentSnippet, queryTerms, rankMemorySearchResults, } from '../../services/memory/memory-search.js';
5
+ import { boundedJsonFailure, fitSerializedEnvelope, fitsSerializedText } from '../../utils/output/bounded-json.js';
6
+ import { resolveToolResultMaxBytes } from '../../utils/output/bound-tool-result.js';
4
7
  const scope = z.enum(['global', 'project']).describe('Memory scope to write to.');
8
+ const MIN_TOOL_OUTPUT_CHARS = 512;
9
+ const MAX_TOOL_OUTPUT_CHARS = 12_000;
10
+ const DEFAULT_INDEX_OUTPUT_CHARS = 12_000;
11
+ const DEFAULT_DOCUMENT_OUTPUT_CHARS = 12_000;
12
+ const DEFAULT_RESULT_LIMIT = 10;
13
+ const MAX_RESULT_LIMIT = 50;
14
+ const maxChars = z.number().int().min(MIN_TOOL_OUTPUT_CHARS).max(MAX_TOOL_OUTPUT_CHARS).optional();
15
+ const resultLimit = z.number().int().min(1).max(MAX_RESULT_LIMIT).optional();
5
16
  function normalizeStores(stores) {
6
17
  return 'list' in stores ? { global: stores, project: stores } : stores;
7
18
  }
19
+ class MemoryCursorError extends Error {
20
+ }
21
+ class StaleMemoryCursorError extends Error {
22
+ }
23
+ class OutputBudgetExceededError extends Error {
24
+ }
25
+ function metadata(memory) {
26
+ return {
27
+ id: memory.id,
28
+ title: memory.title,
29
+ summary: memory.summary,
30
+ tags: memory.tags,
31
+ createdAt: memory.createdAt,
32
+ updatedAt: memory.updatedAt,
33
+ };
34
+ }
35
+ function output(maxChars, build) {
36
+ const fitted = fitSerializedEnvelope(build, { maxChars });
37
+ if (!fitted)
38
+ throw new OutputBudgetExceededError();
39
+ return fitted.value;
40
+ }
41
+ function boundedError(code, message, maxChars) {
42
+ const result = { error: { code, message } };
43
+ const serialized = JSON.stringify(result);
44
+ return fitsSerializedText(serialized, { maxChars, maxBytes: resolveToolResultMaxBytes() })
45
+ ? serialized
46
+ : boundedJsonFailure({ maxChars, maxBytes: resolveToolResultMaxBytes() });
47
+ }
8
48
  const makeFormat = (toolName) => (item, index, calls) => {
9
49
  const callId = getCallIdFromItem(item);
10
50
  const args = normalizeToolArguments(item?.rawItem?.arguments ?? item?.arguments) ??
@@ -32,89 +72,207 @@ const fields = {
32
72
  content: z.string().optional(),
33
73
  tags: z.array(z.string()).optional(),
34
74
  };
35
- function safe(operation) {
75
+ function safe(operation, maxChars) {
36
76
  return operation()
37
77
  .then((value) => JSON.stringify(value))
38
- .catch((error) => JSON.stringify({
39
- error: error instanceof MemoryNotFoundError
40
- ? { code: 'not_found', message: 'Memory was not found.' }
41
- : error instanceof MemoryAlreadyExistsError
42
- ? { code: 'already_exists', message: 'A memory with this ID already exists.' }
43
- : error instanceof InvalidMemoryError
44
- ? { code: 'invalid_memory', message: error.message }
45
- : error instanceof MemoryStorageError
46
- ? { code: 'storage_error', message: 'Memory storage is unavailable or corrupted.' }
47
- : { code: 'memory_error', message: 'Memory operation failed.' },
48
- }));
78
+ .catch((error) => error instanceof MemoryNotFoundError
79
+ ? boundedError('not_found', 'Memory was not found.', maxChars)
80
+ : error instanceof MemoryAlreadyExistsError
81
+ ? boundedError('already_exists', 'A memory with this ID already exists.', maxChars)
82
+ : error instanceof InvalidMemoryError
83
+ ? boundedError('invalid_memory', 'Memory input is invalid.', maxChars)
84
+ : error instanceof MemoryStorageError
85
+ ? boundedError('storage_error', 'Memory storage is unavailable or corrupted.', maxChars)
86
+ : error instanceof MemoryCursorError
87
+ ? boundedError('invalid_cursor', 'The memory cursor is invalid.', maxChars)
88
+ : error instanceof StaleMemoryCursorError
89
+ ? boundedError('stale_cursor', 'The memory cursor is stale.', maxChars)
90
+ : error instanceof OutputBudgetExceededError
91
+ ? boundedError('output_budget_exceeded', 'The requested result cannot fit in the output budget.', maxChars)
92
+ : boundedError('memory_error', 'Memory operation failed.', maxChars));
49
93
  }
50
94
  function definition(name, description, parameters, execute, needsApproval = false) {
51
95
  return {
52
96
  name,
53
97
  description,
54
98
  parameters,
99
+ preserveSerializedOutput: ['memory_list', 'memory_get', 'memory_search', 'memory_retrieve'].includes(name),
55
100
  needsApproval: () => needsApproval,
56
- execute: (params) => safe(() => execute(params)),
101
+ execute: (params) => safe(() => execute(params), params.maxChars ?? DEFAULT_DOCUMENT_OUTPUT_CHARS),
57
102
  formatCommandMessage: makeFormat(name),
58
103
  };
59
104
  }
60
105
  export function createMemoryToolDefinitions(input) {
61
106
  const stores = normalizeStores(input);
107
+ const configuredLimits = stores.global.searchLimits?.() ?? {
108
+ defaultLimit: DEFAULT_RESULT_LIMIT,
109
+ maxLimit: MAX_RESULT_LIMIT,
110
+ };
111
+ const effectiveLimit = (requested) => Math.min(requested ?? configuredLimits.defaultLimit, configuredLimits.maxLimit, MAX_RESULT_LIMIT);
112
+ const rankedSearch = async (query, limit) => {
113
+ const options = { limit: Math.min(configuredLimits.maxLimit, MAX_RESULT_LIMIT) };
114
+ const [global, project] = await Promise.all([
115
+ stores.global.search(query, options),
116
+ stores.project.search(query, options),
117
+ ]);
118
+ return rankMemorySearchResults([
119
+ ...global.map((result) => ({ ...result, scope: 'global' })),
120
+ ...project.map((result) => ({ ...result, scope: 'project' })),
121
+ ]).slice(0, limit);
122
+ };
62
123
  return [
63
- definition('memory_list', 'List persistent-memory summaries from both the global and project scopes.', z.object({ limit: z.number().int().positive().optional() }).strict(), async ({ limit }) => {
64
- const options = { limit };
65
- const [global, project] = await Promise.all([stores.global.list(options), stores.project.list(options)]);
66
- return { scope: 'all', global, project };
124
+ definition('memory_list', 'List persistent-memory summaries from both the global and project scopes.', z.object({ limit: resultLimit, maxChars }).strict(), async ({ limit, maxChars: requestedMaxChars }) => {
125
+ const selectedLimit = effectiveLimit(limit);
126
+ const [globalCandidates, projectCandidates] = await Promise.all([
127
+ stores.global.list({ limit: selectedLimit }),
128
+ stores.project.list({ limit: selectedLimit }),
129
+ ]);
130
+ const result = {
131
+ scope: 'all',
132
+ global: [],
133
+ project: [],
134
+ omitted: { global: 0, project: 0 },
135
+ };
136
+ const budget = requestedMaxChars ?? DEFAULT_INDEX_OUTPUT_CHARS;
137
+ // Admit each record against the largest possible final count so later
138
+ // omissions cannot invalidate an already admitted envelope.
139
+ const reservedOmitted = { global: globalCandidates.length, project: projectCandidates.length };
140
+ for (const [entryScope, candidate] of [
141
+ ...globalCandidates.map((memory) => ['global', memory]),
142
+ ...projectCandidates.map((memory) => ['project', memory]),
143
+ ]) {
144
+ const admitted = fitSerializedEnvelope((charsUsed) => ({
145
+ ...result,
146
+ [entryScope]: [...result[entryScope], metadata(candidate)],
147
+ omitted: reservedOmitted,
148
+ charsUsed,
149
+ }), { maxChars: budget });
150
+ if (admitted) {
151
+ result[entryScope] = admitted.value[entryScope];
152
+ continue;
153
+ }
154
+ result.omitted[entryScope]++;
155
+ }
156
+ return output(budget, (charsUsed) => ({ ...result, charsUsed }));
67
157
  }),
68
- definition('memory_get', 'Load one memory by ID, checking both the global and project scopes.', z.object({ id }).strict(), async ({ id }) => {
158
+ definition('memory_get', 'Load one memory by ID, checking both the global and project scopes.', z.object({ id, cursor: z.string().optional(), maxChars }).strict(), async ({ id, cursor, maxChars: requestedMaxChars }) => {
159
+ const budget = requestedMaxChars ?? DEFAULT_DOCUMENT_OUTPUT_CHARS;
69
160
  for (const scope of ['global', 'project']) {
70
161
  const memory = await stores[scope].get(id);
71
- if (memory)
72
- return { scope, memory };
162
+ if (!memory)
163
+ continue;
164
+ const offset = cursor ? decodeMemoryCursor(cursor, id, scope, memory) : 0;
165
+ if (cursor)
166
+ return memoryPage(scope, memory, offset, budget);
167
+ const complete = fitSerializedEnvelope((charsUsed) => ({ scope, memory, charsUsed }), { maxChars: budget });
168
+ if (complete)
169
+ return complete.value;
170
+ return memoryPage(scope, memory, offset, budget);
73
171
  }
74
172
  throw new MemoryNotFoundError(id);
75
173
  }),
76
- definition('memory_search', 'Search both the global and project memory scopes using deterministic local text matching.', z.object({ query: z.string(), limit: z.number().int().positive().optional() }).strict(), async ({ query, ...options }) => {
77
- const [global, project] = await Promise.all([
78
- stores.global.search(query, options),
79
- stores.project.search(query, options),
80
- ]);
81
- return {
82
- results: [
83
- ...global.map((result) => ({ scope: 'global', ...result })),
84
- ...project.map((result) => ({ scope: 'project', ...result })),
85
- ],
86
- };
174
+ definition('memory_search', 'Search both the global and project memory scopes using deterministic local text matching.', z.object({ query: z.string().refine((value) => /\S/.test(value)), limit: resultLimit, maxChars }).strict(), async ({ query, limit, maxChars: requestedMaxChars }) => {
175
+ const budget = requestedMaxChars ?? DEFAULT_INDEX_OUTPUT_CHARS;
176
+ const candidates = await rankedSearch(query, effectiveLimit(limit));
177
+ const result = { results: [], omitted: 0 };
178
+ const terms = queryTerms(query);
179
+ for (const candidate of candidates) {
180
+ const item = {
181
+ scope: candidate.scope,
182
+ memory: metadata(candidate.memory),
183
+ matchedFields: candidate.matchedFields,
184
+ available: candidate.available,
185
+ ...(candidate.matchedFields.includes('content') && candidate.content !== undefined
186
+ ? { contentSnippet: contentSnippet(candidate.content, terms) }
187
+ : {}),
188
+ };
189
+ const prospective = fitSerializedEnvelope(
190
+ // The eventual count is bounded by candidates.length; reserve its
191
+ // digit width before admitting a result.
192
+ (charsUsed) => ({ ...result, results: [...result.results, item], omitted: candidates.length, charsUsed }), { maxChars: budget });
193
+ if (prospective)
194
+ result.results = prospective.value.results;
195
+ else {
196
+ const omitted = fitSerializedEnvelope((charsUsed) => ({ ...result, omitted: result.omitted + 1, charsUsed }), {
197
+ maxChars: budget,
198
+ });
199
+ if (!omitted)
200
+ throw new OutputBudgetExceededError();
201
+ result.omitted++;
202
+ }
203
+ }
204
+ return output(budget, (charsUsed) => ({ ...result, charsUsed }));
87
205
  }),
88
- definition('memory_retrieve', 'Search and load relevant memories across both the global and project scopes.', z.object({ query: z.string(), limit: z.number().int().positive().optional() }).strict(), async ({ query, ...options }) => {
89
- const searchAcross = async (scope) => {
90
- const results = await stores[scope].search(query, options);
91
- const memories = [];
92
- const unavailableIds = [];
93
- for (const result of results) {
94
- if (!result.available) {
95
- unavailableIds.push({ scope, id: result.memory.id });
96
- continue;
97
- }
98
- try {
99
- const memory = await stores[scope].get(result.memory.id);
100
- if (memory)
101
- memories.push({ scope, memory });
102
- else
103
- unavailableIds.push({ scope, id: result.memory.id });
104
- }
105
- catch (error) {
106
- if (!(error instanceof MemoryStorageError) && !(error instanceof MemoryNotFoundError))
107
- throw error;
108
- unavailableIds.push({ scope, id: result.memory.id });
109
- }
206
+ definition('memory_retrieve', 'Search and load relevant memories across both the global and project scopes.', z.object({ query: z.string().refine((value) => /\S/.test(value)), limit: resultLimit, maxChars }).strict(), async ({ query, limit, maxChars: requestedMaxChars }) => {
207
+ const budget = requestedMaxChars ?? DEFAULT_DOCUMENT_OUTPUT_CHARS;
208
+ const candidates = await rankedSearch(query, effectiveLimit(limit));
209
+ const loaded = [];
210
+ for (const candidate of candidates) {
211
+ if (!candidate.available) {
212
+ loaded.push({ scope: candidate.scope, id: candidate.memory.id, unavailable: true });
213
+ continue;
110
214
  }
111
- return { memories, unavailableIds };
112
- };
113
- const [global, project] = await Promise.all([searchAcross('global'), searchAcross('project')]);
114
- return {
115
- memories: [...global.memories, ...project.memories],
116
- unavailableIds: [...global.unavailableIds, ...project.unavailableIds],
215
+ try {
216
+ const memory = await stores[candidate.scope].get(candidate.memory.id);
217
+ loaded.push({
218
+ scope: candidate.scope,
219
+ id: candidate.memory.id,
220
+ memory: memory ?? undefined,
221
+ unavailable: !memory,
222
+ });
223
+ }
224
+ catch (error) {
225
+ if (!(error instanceof MemoryStorageError) && !(error instanceof MemoryNotFoundError))
226
+ throw error;
227
+ loaded.push({ scope: candidate.scope, id: candidate.memory.id, unavailable: true });
228
+ }
229
+ }
230
+ const result = {
231
+ memories: [],
232
+ unavailableIds: [],
233
+ omittedIds: [],
234
+ omittedIdCount: 0,
235
+ unavailableIdCount: 0,
117
236
  };
237
+ const unavailable = loaded.filter((entry) => entry.unavailable);
238
+ const available = loaded.filter((entry) => !entry.unavailable && !!entry.memory);
239
+ // References and memories are admitted against both terminal count
240
+ // widths, so neither count can overflow a previously valid result.
241
+ const reservedCounts = () => ({
242
+ omittedIdCount: available.length,
243
+ unavailableIdCount: unavailable.length,
244
+ });
245
+ result.unavailableIdCount = unavailable.length;
246
+ for (const candidate of unavailable) {
247
+ const reference = { scope: candidate.scope, id: candidate.id };
248
+ const prospective = fitSerializedEnvelope((charsUsed) => ({
249
+ ...result,
250
+ ...reservedCounts(),
251
+ unavailableIds: [...result.unavailableIds, reference],
252
+ charsUsed,
253
+ }), { maxChars: budget });
254
+ if (prospective)
255
+ result.unavailableIds = prospective.value.unavailableIds;
256
+ }
257
+ for (const candidate of available) {
258
+ const memory = { scope: candidate.scope, memory: candidate.memory };
259
+ const prospective = fitSerializedEnvelope((charsUsed) => ({ ...result, ...reservedCounts(), memories: [...result.memories, memory], charsUsed }), { maxChars: budget });
260
+ if (prospective) {
261
+ result.memories = prospective.value.memories;
262
+ continue;
263
+ }
264
+ result.omittedIdCount++;
265
+ const reference = { scope: candidate.scope, id: candidate.id };
266
+ const omission = fitSerializedEnvelope((charsUsed) => ({
267
+ ...result,
268
+ ...reservedCounts(),
269
+ omittedIds: [...result.omittedIds, reference],
270
+ charsUsed,
271
+ }), { maxChars: budget });
272
+ if (omission)
273
+ result.omittedIds = omission.value.omittedIds;
274
+ }
275
+ return output(budget, (charsUsed) => ({ ...result, charsUsed }));
118
276
  }),
119
277
  definition('memory_create', 'Save durable information to the selected global or project memory scope.', z.object({
120
278
  scope,
@@ -141,4 +299,109 @@ export function createMemoryToolDefinitions(input) {
141
299
  }, true),
142
300
  ];
143
301
  }
302
+ function decodeMemoryCursor(cursor, id, scope, memory) {
303
+ if (!/^[A-Za-z0-9_-]+$/.test(cursor))
304
+ throw new MemoryCursorError();
305
+ let decoded;
306
+ let value;
307
+ try {
308
+ decoded = Buffer.from(cursor, 'base64url').toString('utf8');
309
+ if (Buffer.from(decoded, 'utf8').toString('base64url') !== cursor)
310
+ throw new Error();
311
+ value = JSON.parse(decoded);
312
+ }
313
+ catch {
314
+ throw new MemoryCursorError();
315
+ }
316
+ const parsed = value;
317
+ if (!parsed ||
318
+ parsed.v !== 1 ||
319
+ parsed.scope !== scope ||
320
+ parsed.id !== id ||
321
+ !isUtcTimestamp(parsed.updatedAt) ||
322
+ typeof parsed.nextOffset !== 'number' ||
323
+ !Number.isSafeInteger(parsed.nextOffset) ||
324
+ parsed.nextOffset < 0 ||
325
+ Object.keys(parsed).join(',') !== 'v,scope,id,updatedAt,nextOffset' ||
326
+ JSON.stringify(parsed) !== decoded)
327
+ throw new MemoryCursorError();
328
+ const validated = parsed;
329
+ if (validated.updatedAt !== memory.updatedAt)
330
+ throw new StaleMemoryCursorError();
331
+ if ((memory.content.length === 0 && validated.nextOffset !== 0) ||
332
+ (memory.content.length > 0 && validated.nextOffset >= memory.content.length))
333
+ throw new MemoryCursorError();
334
+ if (validated.nextOffset > 0 &&
335
+ validated.nextOffset < memory.content.length &&
336
+ isHighSurrogate(memory.content.charCodeAt(validated.nextOffset - 1)) &&
337
+ isLowSurrogate(memory.content.charCodeAt(validated.nextOffset)))
338
+ throw new MemoryCursorError();
339
+ return validated.nextOffset;
340
+ }
341
+ function memoryPage(scope, memory, offset, maxChars) {
342
+ const totalChars = memory.content.length;
343
+ const page = (end) => {
344
+ const text = safePageSlice(memory.content, offset, end);
345
+ if (!text && totalChars > offset)
346
+ return null;
347
+ const nextOffset = offset + text.length;
348
+ const content = {
349
+ offset,
350
+ totalChars,
351
+ text,
352
+ ...(nextOffset < totalChars
353
+ ? { nextCursor: encodeMemoryCursor({ v: 1, scope, id: memory.id, updatedAt: memory.updatedAt, nextOffset }) }
354
+ : {}),
355
+ };
356
+ return fitSerializedEnvelope((charsUsed) => ({ scope, memory: metadata(memory), content, charsUsed }), {
357
+ maxChars,
358
+ });
359
+ };
360
+ if (totalChars === 0) {
361
+ const empty = page(0);
362
+ if (empty)
363
+ return empty.value;
364
+ throw new OutputBudgetExceededError();
365
+ }
366
+ let lower = offset + 1;
367
+ let upper = totalChars;
368
+ let best = null;
369
+ while (lower <= upper) {
370
+ const middle = Math.floor((lower + upper) / 2);
371
+ const candidate = page(middle);
372
+ if (candidate) {
373
+ best = candidate;
374
+ lower = middle + 1;
375
+ }
376
+ else {
377
+ upper = middle - 1;
378
+ }
379
+ }
380
+ if (!best || !best.value.content.text)
381
+ throw new OutputBudgetExceededError();
382
+ return best.value;
383
+ }
384
+ function safePageSlice(content, start, end) {
385
+ let safeEnd = end;
386
+ if (safeEnd > start &&
387
+ safeEnd < content.length &&
388
+ isHighSurrogate(content.charCodeAt(safeEnd - 1)) &&
389
+ isLowSurrogate(content.charCodeAt(safeEnd)))
390
+ safeEnd--;
391
+ return content.slice(start, safeEnd);
392
+ }
393
+ function encodeMemoryCursor(cursor) {
394
+ return Buffer.from(JSON.stringify(cursor), 'utf8').toString('base64url');
395
+ }
396
+ function isUtcTimestamp(value) {
397
+ return (typeof value === 'string' &&
398
+ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value) &&
399
+ !Number.isNaN(Date.parse(value)));
400
+ }
401
+ function isHighSurrogate(value) {
402
+ return value >= 0xd800 && value <= 0xdbff;
403
+ }
404
+ function isLowSurrogate(value) {
405
+ return value >= 0xdc00 && value <= 0xdfff;
406
+ }
144
407
  //# sourceMappingURL=memory-tools.js.map