@qduc/term2 0.20.0 → 0.22.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 (896) hide show
  1. package/dist/agent.d.ts +2 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +176 -102
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts +1 -1
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +144 -41
  8. package/dist/app.js.map +1 -1
  9. package/dist/cli.js +197 -38
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/guarded-settings-command.d.ts.map +1 -1
  12. package/dist/commands/guarded-settings-command.js +33 -5
  13. package/dist/commands/guarded-settings-command.js.map +1 -1
  14. package/dist/commands/mode-commands.d.ts +17 -12
  15. package/dist/commands/mode-commands.d.ts.map +1 -1
  16. package/dist/commands/mode-commands.js +68 -44
  17. package/dist/commands/mode-commands.js.map +1 -1
  18. package/dist/components/InputBox.js +2 -3
  19. package/dist/components/InputBox.js.map +1 -1
  20. package/dist/components/common/MenuContainer.d.ts +5 -0
  21. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  22. package/dist/components/common/MenuContainer.js +13 -3
  23. package/dist/components/common/MenuContainer.js.map +1 -1
  24. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  25. package/dist/components/input/ApplicationInputSurface.js +4 -0
  26. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  27. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  28. package/dist/components/input/MenuSurface.js +13 -2
  29. package/dist/components/input/MenuSurface.js.map +1 -1
  30. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  31. package/dist/components/input/ModelMenuSession.js +67 -16
  32. package/dist/components/input/ModelMenuSession.js.map +1 -1
  33. package/dist/components/input/ProfileMenuSession.d.ts +16 -0
  34. package/dist/components/input/ProfileMenuSession.d.ts.map +1 -0
  35. package/dist/components/input/ProfileMenuSession.js +64 -0
  36. package/dist/components/input/ProfileMenuSession.js.map +1 -0
  37. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
  38. package/dist/components/input/SettingsMenuSession.js +56 -17
  39. package/dist/components/input/SettingsMenuSession.js.map +1 -1
  40. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  41. package/dist/components/input/SettingsValueMenuSession.js +33 -3
  42. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  43. package/dist/components/input/determine-active-menu.d.ts +3 -0
  44. package/dist/components/input/determine-active-menu.d.ts.map +1 -1
  45. package/dist/components/input/determine-active-menu.js +6 -1
  46. package/dist/components/input/determine-active-menu.js.map +1 -1
  47. package/dist/components/input/menu-registry.d.ts.map +1 -1
  48. package/dist/components/input/menu-registry.js +2 -0
  49. package/dist/components/input/menu-registry.js.map +1 -1
  50. package/dist/components/input/menu-types.d.ts +5 -1
  51. package/dist/components/input/menu-types.d.ts.map +1 -1
  52. package/dist/components/input/triggers.d.ts +1 -0
  53. package/dist/components/input/triggers.d.ts.map +1 -1
  54. package/dist/components/input/triggers.js +28 -2
  55. package/dist/components/input/triggers.js.map +1 -1
  56. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  57. package/dist/components/layout/BackgroundTaskManager.js +6 -2
  58. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  59. package/dist/components/layout/BackgroundTasksPanel.d.ts +0 -1
  60. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  61. package/dist/components/layout/BackgroundTasksPanel.js +4 -104
  62. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  63. package/dist/components/layout/Banner.d.ts.map +1 -1
  64. package/dist/components/layout/Banner.js +10 -5
  65. package/dist/components/layout/Banner.js.map +1 -1
  66. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  67. package/dist/components/layout/StatusBar.js +25 -12
  68. package/dist/components/layout/StatusBar.js.map +1 -1
  69. package/dist/components/menu/ModelSelectionMenu.d.ts +10 -0
  70. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  71. package/dist/components/menu/ModelSelectionMenu.js +85 -16
  72. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  73. package/dist/components/menu/ProfileSelectionMenu.d.ts +12 -0
  74. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -0
  75. package/dist/components/menu/ProfileSelectionMenu.js +49 -0
  76. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -0
  77. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  78. package/dist/components/menu/ResumeSelectionMenu.js +9 -19
  79. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  80. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  81. package/dist/components/menu/SettingsSelectionMenu.js +4 -32
  82. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  83. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  84. package/dist/components/menu/SettingsValueSelectionMenu.js +12 -5
  85. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  86. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  87. package/dist/components/menu/SkillSelectionMenu.js +3 -6
  88. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  89. package/dist/components/menu/SlashCommandMenu.d.ts +8 -0
  90. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  91. package/dist/components/menu/SlashCommandMenu.js +16 -6
  92. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  93. package/dist/components/menu/StandaloneModelPickerApp.d.ts +40 -0
  94. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -0
  95. package/dist/components/menu/StandaloneModelPickerApp.js +106 -0
  96. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -0
  97. package/dist/components/menu/settings-value-formatter.d.ts +11 -0
  98. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -0
  99. package/dist/components/menu/settings-value-formatter.js +214 -0
  100. package/dist/components/menu/settings-value-formatter.js.map +1 -0
  101. package/dist/components/message/ChatMessage.js +1 -1
  102. package/dist/components/message/ChatMessage.js.map +1 -1
  103. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  104. package/dist/components/message/CommandMessage.js +22 -17
  105. package/dist/components/message/CommandMessage.js.map +1 -1
  106. package/dist/components/message/MessageList.d.ts.map +1 -1
  107. package/dist/components/message/MessageList.js +28 -11
  108. package/dist/components/message/MessageList.js.map +1 -1
  109. package/dist/components/message/RunCodeRenderer.d.ts +16 -0
  110. package/dist/components/message/RunCodeRenderer.d.ts.map +1 -0
  111. package/dist/components/message/RunCodeRenderer.js +25 -0
  112. package/dist/components/message/RunCodeRenderer.js.map +1 -0
  113. package/dist/components/message/command-message-helpers.d.ts +35 -5
  114. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  115. package/dist/components/message/command-message-helpers.js +85 -0
  116. package/dist/components/message/command-message-helpers.js.map +1 -1
  117. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  118. package/dist/components/prompt/ApprovalPrompt.js +12 -21
  119. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  120. package/dist/components/theme.d.ts +1 -0
  121. package/dist/components/theme.d.ts.map +1 -1
  122. package/dist/components/theme.js +1 -0
  123. package/dist/components/theme.js.map +1 -1
  124. package/dist/context/InputContext.d.ts +1 -1
  125. package/dist/context/InputContext.d.ts.map +1 -1
  126. package/dist/context/InputContext.js +8 -0
  127. package/dist/context/InputContext.js.map +1 -1
  128. package/dist/contracts/session-rollover.d.ts +9 -1
  129. package/dist/contracts/session-rollover.d.ts.map +1 -1
  130. package/dist/contracts/streamed-model-turn.d.ts +26 -2
  131. package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
  132. package/dist/gateway/gateway.d.ts.map +1 -1
  133. package/dist/gateway/gateway.js +19 -23
  134. package/dist/gateway/gateway.js.map +1 -1
  135. package/dist/gateway/launcher-seam.d.ts.map +1 -1
  136. package/dist/gateway/launcher-seam.js +2 -19
  137. package/dist/gateway/launcher-seam.js.map +1 -1
  138. package/dist/gateway/settings-rpc.d.ts +1 -1
  139. package/dist/gateway/settings-rpc.d.ts.map +1 -1
  140. package/dist/gateway/settings-rpc.js +2 -0
  141. package/dist/gateway/settings-rpc.js.map +1 -1
  142. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  143. package/dist/hooks/conversation-ui-reducer.js +5 -2
  144. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  145. package/dist/hooks/settings-completion-config.d.ts +1 -1
  146. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  147. package/dist/hooks/settings-completion-config.js +16 -110
  148. package/dist/hooks/settings-completion-config.js.map +1 -1
  149. package/dist/hooks/settings-completion-logic.d.ts +1 -1
  150. package/dist/hooks/settings-completion-logic.d.ts.map +1 -1
  151. package/dist/hooks/settings-completion-logic.js.map +1 -1
  152. package/dist/hooks/use-app-commands.d.ts +3 -1
  153. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  154. package/dist/hooks/use-app-commands.js +21 -14
  155. package/dist/hooks/use-app-commands.js.map +1 -1
  156. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  157. package/dist/hooks/use-app-keyboard-shortcuts.js +33 -20
  158. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  159. package/dist/hooks/use-conversation.d.ts +5 -2
  160. package/dist/hooks/use-conversation.d.ts.map +1 -1
  161. package/dist/hooks/use-conversation.js +108 -17
  162. package/dist/hooks/use-conversation.js.map +1 -1
  163. package/dist/hooks/use-handoff-flow.d.ts +1 -0
  164. package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
  165. package/dist/hooks/use-handoff-flow.js +19 -12
  166. package/dist/hooks/use-handoff-flow.js.map +1 -1
  167. package/dist/hooks/use-model-selection.d.ts +33 -4
  168. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  169. package/dist/hooks/use-model-selection.js +204 -114
  170. package/dist/hooks/use-model-selection.js.map +1 -1
  171. package/dist/hooks/use-profile-selection.d.ts +34 -0
  172. package/dist/hooks/use-profile-selection.d.ts.map +1 -0
  173. package/dist/hooks/use-profile-selection.js +103 -0
  174. package/dist/hooks/use-profile-selection.js.map +1 -0
  175. package/dist/hooks/use-resume-selection.d.ts +2 -0
  176. package/dist/hooks/use-resume-selection.d.ts.map +1 -1
  177. package/dist/hooks/use-resume-selection.js +11 -9
  178. package/dist/hooks/use-resume-selection.js.map +1 -1
  179. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  180. package/dist/hooks/use-settings-completion.js +1 -6
  181. package/dist/hooks/use-settings-completion.js.map +1 -1
  182. package/dist/hooks/use-settings-value-completion.d.ts +1 -8
  183. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  184. package/dist/hooks/use-settings-value-completion.js +20 -94
  185. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  186. package/dist/hooks/use-skill-selection.d.ts +5 -3
  187. package/dist/hooks/use-skill-selection.d.ts.map +1 -1
  188. package/dist/hooks/use-skill-selection.js +8 -6
  189. package/dist/hooks/use-skill-selection.js.map +1 -1
  190. package/dist/hooks/use-standalone-model-picker.d.ts +64 -0
  191. package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -0
  192. package/dist/hooks/use-standalone-model-picker.js +310 -0
  193. package/dist/hooks/use-standalone-model-picker.js.map +1 -0
  194. package/dist/lib/agent-client.d.ts +17 -1
  195. package/dist/lib/agent-client.d.ts.map +1 -1
  196. package/dist/lib/agent-client.js +211 -55
  197. package/dist/lib/agent-client.js.map +1 -1
  198. package/dist/lib/agent-configuration.d.ts +12 -3
  199. package/dist/lib/agent-configuration.d.ts.map +1 -1
  200. package/dist/lib/agent-configuration.js +27 -11
  201. package/dist/lib/agent-configuration.js.map +1 -1
  202. package/dist/lib/agent-factory.d.ts +3 -0
  203. package/dist/lib/agent-factory.d.ts.map +1 -1
  204. package/dist/lib/agent-factory.js +110 -46
  205. package/dist/lib/agent-factory.js.map +1 -1
  206. package/dist/lib/ask-user-answer-store.d.ts +1 -0
  207. package/dist/lib/ask-user-answer-store.d.ts.map +1 -1
  208. package/dist/lib/ask-user-answer-store.js +3 -0
  209. package/dist/lib/ask-user-answer-store.js.map +1 -1
  210. package/dist/lib/harness-input-idle.d.ts +10 -0
  211. package/dist/lib/harness-input-idle.d.ts.map +1 -1
  212. package/dist/lib/harness-input-idle.js +47 -5
  213. package/dist/lib/harness-input-idle.js.map +1 -1
  214. package/dist/lib/tool-invoke.d.ts +1 -0
  215. package/dist/lib/tool-invoke.d.ts.map +1 -1
  216. package/dist/lib/tool-invoke.js +1 -0
  217. package/dist/lib/tool-invoke.js.map +1 -1
  218. package/dist/non-interactive.d.ts +23 -0
  219. package/dist/non-interactive.d.ts.map +1 -1
  220. package/dist/non-interactive.js +231 -37
  221. package/dist/non-interactive.js.map +1 -1
  222. package/dist/prompts/background-shell.d.ts.map +1 -1
  223. package/dist/prompts/background-shell.js +4 -2
  224. package/dist/prompts/background-shell.js.map +1 -1
  225. package/dist/prompts/background-shell.ts +4 -2
  226. package/dist/prompts/codex.md +1 -3
  227. package/dist/prompts/fragments/gpt-6-astra.md +13 -0
  228. package/dist/prompts/gpt-5-modern.md +1 -3
  229. package/dist/prompts/gpt-5.4-mini.md +0 -2
  230. package/dist/prompts/gpt-5.5.md +0 -2
  231. package/dist/prompts/gpt-5.6.md +0 -1
  232. package/dist/prompts/lite.md +1 -6
  233. package/dist/prompts/memory.md +2 -2
  234. package/dist/prompts/orchestrator.md +4 -4
  235. package/dist/prompts/prefix-quality.test.ts +8 -5
  236. package/dist/prompts/prompt-constructor.d.ts +7 -6
  237. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  238. package/dist/prompts/prompt-constructor.js +17 -7
  239. package/dist/prompts/prompt-constructor.js.map +1 -1
  240. package/dist/prompts/prompt-constructor.test.ts +250 -52
  241. package/dist/prompts/prompt-constructor.ts +27 -13
  242. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  243. package/dist/prompts/prompt-profiles.js +6 -0
  244. package/dist/prompts/prompt-profiles.js.map +1 -1
  245. package/dist/prompts/prompt-profiles.test.ts +6 -4
  246. package/dist/prompts/prompt-profiles.ts +6 -0
  247. package/dist/prompts/session-browser.md +5 -1
  248. package/dist/prompts/shell-auto-approval.d.ts +2 -2
  249. package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
  250. package/dist/prompts/shell-auto-approval.js +19 -16
  251. package/dist/prompts/shell-auto-approval.js.map +1 -1
  252. package/dist/prompts/shell-auto-approval.ts +19 -16
  253. package/dist/prompts/subagent-delegation.js +3 -3
  254. package/dist/prompts/subagent-delegation.js.map +1 -1
  255. package/dist/prompts/subagent-delegation.test.ts +3 -3
  256. package/dist/prompts/subagent-delegation.ts +3 -3
  257. package/dist/prompts/subagents/librarian.md +4 -4
  258. package/dist/prompts/subagents/worker-prompt.test.ts +7 -0
  259. package/dist/prompts/tool-surface-guidance.d.ts +4 -0
  260. package/dist/prompts/tool-surface-guidance.d.ts.map +1 -0
  261. package/dist/prompts/tool-surface-guidance.js +19 -0
  262. package/dist/prompts/tool-surface-guidance.js.map +1 -0
  263. package/dist/prompts/tool-surface-guidance.ts +20 -0
  264. package/dist/providers/aborted-stream-recorder.js +2 -1
  265. package/dist/providers/aborted-stream-recorder.js.map +1 -1
  266. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  267. package/dist/providers/ai-sdk-streamed-model.js +7 -0
  268. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  269. package/dist/providers/codex-compact.d.ts +2 -0
  270. package/dist/providers/codex-compact.d.ts.map +1 -1
  271. package/dist/providers/codex-compact.js +14 -0
  272. package/dist/providers/codex-compact.js.map +1 -1
  273. package/dist/providers/codex-responses-model.d.ts +23 -3
  274. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  275. package/dist/providers/codex-responses-model.js +193 -44
  276. package/dist/providers/codex-responses-model.js.map +1 -1
  277. package/dist/providers/codex-turn-converter.d.ts.map +1 -1
  278. package/dist/providers/codex-turn-converter.js +21 -4
  279. package/dist/providers/codex-turn-converter.js.map +1 -1
  280. package/dist/providers/codex.provider.d.ts +2 -0
  281. package/dist/providers/codex.provider.d.ts.map +1 -1
  282. package/dist/providers/codex.provider.js +4 -2
  283. package/dist/providers/codex.provider.js.map +1 -1
  284. package/dist/providers/fetch/logging-middleware.d.ts.map +1 -1
  285. package/dist/providers/fetch/logging-middleware.js +22 -2
  286. package/dist/providers/fetch/logging-middleware.js.map +1 -1
  287. package/dist/providers/grok.provider.d.ts.map +1 -1
  288. package/dist/providers/grok.provider.js +5 -2
  289. package/dist/providers/grok.provider.js.map +1 -1
  290. package/dist/providers/model-catalog/catalog.generated.d.ts +453 -309
  291. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  292. package/dist/providers/model-catalog/catalog.generated.js +453 -309
  293. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  294. package/dist/providers/openai-chat-completions-model.js +119 -50
  295. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  296. package/dist/providers/openai-responses-model.d.ts.map +1 -1
  297. package/dist/providers/openai-responses-model.js +131 -15
  298. package/dist/providers/openai-responses-model.js.map +1 -1
  299. package/dist/providers/opencode-session.d.ts.map +1 -1
  300. package/dist/providers/opencode-session.js +5 -0
  301. package/dist/providers/opencode-session.js.map +1 -1
  302. package/dist/providers/openrouter.provider.js +8 -1
  303. package/dist/providers/openrouter.provider.js.map +1 -1
  304. package/dist/providers/registry.d.ts +1 -1
  305. package/dist/providers/registry.d.ts.map +1 -1
  306. package/dist/providers/responses-websocket-sessions.d.ts +10 -0
  307. package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
  308. package/dist/providers/responses-websocket-sessions.js +9 -4
  309. package/dist/providers/responses-websocket-sessions.js.map +1 -1
  310. package/dist/providers/retrying-model.d.ts +2 -1
  311. package/dist/providers/retrying-model.d.ts.map +1 -1
  312. package/dist/providers/retrying-model.js +14 -2
  313. package/dist/providers/retrying-model.js.map +1 -1
  314. package/dist/services/agent-runtime/application-run-loop.d.ts +11 -2
  315. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  316. package/dist/services/agent-runtime/application-run-loop.js +128 -24
  317. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  318. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts +2 -3
  319. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts.map +1 -1
  320. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js +18 -9
  321. package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js.map +1 -1
  322. package/dist/services/agent-runtime/context-compaction/index.d.ts +2 -0
  323. package/dist/services/agent-runtime/context-compaction/index.d.ts.map +1 -1
  324. package/dist/services/agent-runtime/context-compaction/index.js +30 -4
  325. package/dist/services/agent-runtime/context-compaction/index.js.map +1 -1
  326. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +3 -0
  327. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
  328. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +15 -9
  329. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
  330. package/dist/services/agent-runtime/generation-guard.d.ts +25 -1
  331. package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
  332. package/dist/services/agent-runtime/generation-guard.js +105 -1
  333. package/dist/services/agent-runtime/generation-guard.js.map +1 -1
  334. package/dist/services/agent-runtime/tool-invocation-context.d.ts +12 -0
  335. package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
  336. package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts +7 -1
  337. package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts.map +1 -1
  338. package/dist/services/agent-runtime/workflow/workflow-evaluator.js +78 -183
  339. package/dist/services/agent-runtime/workflow/workflow-evaluator.js.map +1 -1
  340. package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts +4 -3
  341. package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts.map +1 -1
  342. package/dist/services/agent-runtime/workflow/workflow-sandbox.js +9 -7
  343. package/dist/services/agent-runtime/workflow/workflow-sandbox.js.map +1 -1
  344. package/dist/services/agent-runtime/workflow/workflow-types.d.ts +1 -1
  345. package/dist/services/agent-runtime/workflow/workflow-types.d.ts.map +1 -1
  346. package/dist/services/agent-runtime/workflow/workflow-types.js.map +1 -1
  347. package/dist/services/agent-stream.d.ts +2 -0
  348. package/dist/services/agent-stream.d.ts.map +1 -1
  349. package/dist/services/agent-stream.js.map +1 -1
  350. package/dist/services/approval/approval-decision-executor.d.ts +2 -1
  351. package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
  352. package/dist/services/approval/approval-decision-executor.js +22 -116
  353. package/dist/services/approval/approval-decision-executor.js.map +1 -1
  354. package/dist/services/approval/approval-decision-policy.js +2 -2
  355. package/dist/services/approval/approval-decision-policy.js.map +1 -1
  356. package/dist/services/approval/approval-descriptor.d.ts +10 -0
  357. package/dist/services/approval/approval-descriptor.d.ts.map +1 -0
  358. package/dist/services/approval/approval-descriptor.js +23 -0
  359. package/dist/services/approval/approval-descriptor.js.map +1 -0
  360. package/dist/services/approval/approval-flow-coordinator.d.ts +2 -1
  361. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  362. package/dist/services/approval/approval-flow-coordinator.js +2 -1
  363. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  364. package/dist/services/approval/approval-grant-executor.d.ts +25 -0
  365. package/dist/services/approval/approval-grant-executor.d.ts.map +1 -0
  366. package/dist/services/approval/approval-grant-executor.js +125 -0
  367. package/dist/services/approval/approval-grant-executor.js.map +1 -0
  368. package/dist/services/approval/background-subagent-approval-controller.d.ts +2 -1
  369. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  370. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  371. package/dist/services/approval/nested-approval-owner.d.ts +52 -0
  372. package/dist/services/approval/nested-approval-owner.d.ts.map +1 -0
  373. package/dist/services/approval/nested-approval-owner.js +194 -0
  374. package/dist/services/approval/nested-approval-owner.js.map +1 -0
  375. package/dist/services/approval/non-interactive-approval-policy.js +1 -1
  376. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  377. package/dist/services/approval/shell-auto-approval-evaluator.d.ts +5 -1
  378. package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
  379. package/dist/services/approval/shell-auto-approval-evaluator.js +44 -22
  380. package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
  381. package/dist/services/approval/shell-auto-approval-resolver.d.ts +5 -0
  382. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  383. package/dist/services/approval/shell-auto-approval-resolver.js +121 -20
  384. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  385. package/dist/services/approval/tool-approval-batch-coordinator.d.ts +10 -3
  386. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  387. package/dist/services/approval/tool-approval-batch-coordinator.js +36 -8
  388. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  389. package/dist/services/approval/tool-approval-policy-registry.d.ts +13 -0
  390. package/dist/services/approval/tool-approval-policy-registry.d.ts.map +1 -1
  391. package/dist/services/approval/tool-approval-policy-registry.js +16 -1
  392. package/dist/services/approval/tool-approval-policy-registry.js.map +1 -1
  393. package/dist/services/conversation/conversation-adapter-factory.d.ts +3 -1
  394. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  395. package/dist/services/conversation/conversation-adapter-factory.js +3 -3
  396. package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
  397. package/dist/services/conversation/conversation-adapter.d.ts +3 -2
  398. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  399. package/dist/services/conversation/conversation-adapter.js +34 -32
  400. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  401. package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
  402. package/dist/services/conversation/conversation-decoder.js +6 -2
  403. package/dist/services/conversation/conversation-decoder.js.map +1 -1
  404. package/dist/services/conversation/conversation-orchestrator.d.ts +11 -0
  405. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  406. package/dist/services/conversation/conversation-orchestrator.js +79 -43
  407. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  408. package/dist/services/conversation/conversation-persistence.d.ts +35 -0
  409. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  410. package/dist/services/conversation/conversation-persistence.js +162 -19
  411. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  412. package/dist/services/conversation/conversation-replay.d.ts +2 -0
  413. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  414. package/dist/services/conversation/conversation-replay.js +71 -57
  415. package/dist/services/conversation/conversation-replay.js.map +1 -1
  416. package/dist/services/conversation/conversation-result-builder.d.ts +3 -0
  417. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  418. package/dist/services/conversation/conversation-result-builder.js +48 -27
  419. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  420. package/dist/services/conversation/conversation-runtime-factory.d.ts +5 -0
  421. package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
  422. package/dist/services/conversation/conversation-runtime-factory.js +1 -0
  423. package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
  424. package/dist/services/conversation/conversation-service.d.ts +14 -3
  425. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  426. package/dist/services/conversation/conversation-service.js +104 -32
  427. package/dist/services/conversation/conversation-service.js.map +1 -1
  428. package/dist/services/conversation/session-browser.d.ts +35 -23
  429. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  430. package/dist/services/conversation/session-browser.js +338 -67
  431. package/dist/services/conversation/session-browser.js.map +1 -1
  432. package/dist/services/conversation/session-index/session-index-database.d.ts +138 -0
  433. package/dist/services/conversation/session-index/session-index-database.d.ts.map +1 -0
  434. package/dist/services/conversation/session-index/session-index-database.js +684 -0
  435. package/dist/services/conversation/session-index/session-index-database.js.map +1 -0
  436. package/dist/services/conversation/session-index/session-index-schema.d.ts +35 -0
  437. package/dist/services/conversation/session-index/session-index-schema.d.ts.map +1 -0
  438. package/dist/services/conversation/session-index/session-index-schema.js +156 -0
  439. package/dist/services/conversation/session-index/session-index-schema.js.map +1 -0
  440. package/dist/services/conversation/session-index/session-index-service.d.ts +30 -0
  441. package/dist/services/conversation/session-index/session-index-service.d.ts.map +1 -0
  442. package/dist/services/conversation/session-index/session-index-service.js +234 -0
  443. package/dist/services/conversation/session-index/session-index-service.js.map +1 -0
  444. package/dist/services/conversation/session-index/session-index-worker-client.d.ts +36 -0
  445. package/dist/services/conversation/session-index/session-index-worker-client.d.ts.map +1 -0
  446. package/dist/services/conversation/session-index/session-index-worker-client.js +143 -0
  447. package/dist/services/conversation/session-index/session-index-worker-client.js.map +1 -0
  448. package/dist/services/conversation/session-index/session-index-worker.d.ts +56 -0
  449. package/dist/services/conversation/session-index/session-index-worker.d.ts.map +1 -0
  450. package/dist/services/conversation/session-index/session-index-worker.js +96 -0
  451. package/dist/services/conversation/session-index/session-index-worker.js.map +1 -0
  452. package/dist/services/conversation/session-search-helpers.d.ts +4 -0
  453. package/dist/services/conversation/session-search-helpers.d.ts.map +1 -0
  454. package/dist/services/conversation/session-search-helpers.js +13 -0
  455. package/dist/services/conversation/session-search-helpers.js.map +1 -0
  456. package/dist/services/conversation-agent-client.d.ts +8 -0
  457. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  458. package/dist/services/execution-context.js +2 -2
  459. package/dist/services/execution-context.js.map +1 -1
  460. package/dist/services/handoff/handoff-session.d.ts +2 -0
  461. package/dist/services/handoff/handoff-session.d.ts.map +1 -1
  462. package/dist/services/handoff/handoff-session.js +19 -3
  463. package/dist/services/handoff/handoff-session.js.map +1 -1
  464. package/dist/services/hooks/hook-event-factory.d.ts +2 -1
  465. package/dist/services/hooks/hook-event-factory.d.ts.map +1 -1
  466. package/dist/services/hooks/hook-event-factory.js +2 -1
  467. package/dist/services/hooks/hook-event-factory.js.map +1 -1
  468. package/dist/services/logging/conversation-log-events.d.ts +30 -3
  469. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  470. package/dist/services/logging/conversation-log-events.js +1 -4
  471. package/dist/services/logging/conversation-log-events.js.map +1 -1
  472. package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
  473. package/dist/services/logging/conversation-log-writer.js +50 -26
  474. package/dist/services/logging/conversation-log-writer.js.map +1 -1
  475. package/dist/services/logging/logging-service.d.ts +1 -0
  476. package/dist/services/logging/logging-service.d.ts.map +1 -1
  477. package/dist/services/logging/logging-service.js +6 -2
  478. package/dist/services/logging/logging-service.js.map +1 -1
  479. package/dist/services/logging/provider-traffic.d.ts +29 -2
  480. package/dist/services/logging/provider-traffic.d.ts.map +1 -1
  481. package/dist/services/logging/provider-traffic.js +251 -21
  482. package/dist/services/logging/provider-traffic.js.map +1 -1
  483. package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
  484. package/dist/services/memory/memory-capabilities.js +17 -5
  485. package/dist/services/memory/memory-capabilities.js.map +1 -1
  486. package/dist/services/memory/memory-store.d.ts +17 -0
  487. package/dist/services/memory/memory-store.d.ts.map +1 -1
  488. package/dist/services/memory/memory-store.js +71 -26
  489. package/dist/services/memory/memory-store.js.map +1 -1
  490. package/dist/services/mode-notices.d.ts +12 -9
  491. package/dist/services/mode-notices.d.ts.map +1 -1
  492. package/dist/services/mode-notices.js +83 -54
  493. package/dist/services/mode-notices.js.map +1 -1
  494. package/dist/services/model-service.d.ts +64 -4
  495. package/dist/services/model-service.d.ts.map +1 -1
  496. package/dist/services/model-service.js +303 -21
  497. package/dist/services/model-service.js.map +1 -1
  498. package/dist/services/models/model-catalog-session.d.ts +6 -0
  499. package/dist/services/models/model-catalog-session.d.ts.map +1 -1
  500. package/dist/services/models/model-catalog-session.js +18 -10
  501. package/dist/services/models/model-catalog-session.js.map +1 -1
  502. package/dist/services/models/model-favorites.d.ts +56 -0
  503. package/dist/services/models/model-favorites.d.ts.map +1 -0
  504. package/dist/services/models/model-favorites.js +93 -0
  505. package/dist/services/models/model-favorites.js.map +1 -0
  506. package/dist/services/models/model-listing.d.ts +97 -0
  507. package/dist/services/models/model-listing.d.ts.map +1 -0
  508. package/dist/services/models/model-listing.js +129 -0
  509. package/dist/services/models/model-listing.js.map +1 -0
  510. package/dist/services/models/model-nicknames.d.ts +113 -0
  511. package/dist/services/models/model-nicknames.d.ts.map +1 -0
  512. package/dist/services/models/model-nicknames.js +182 -0
  513. package/dist/services/models/model-nicknames.js.map +1 -0
  514. package/dist/services/models/model-picker-host.d.ts +72 -0
  515. package/dist/services/models/model-picker-host.d.ts.map +1 -0
  516. package/dist/services/models/model-picker-host.js +83 -0
  517. package/dist/services/models/model-picker-host.js.map +1 -0
  518. package/dist/services/models/model-resolution.d.ts +120 -0
  519. package/dist/services/models/model-resolution.d.ts.map +1 -0
  520. package/dist/services/models/model-resolution.js +521 -0
  521. package/dist/services/models/model-resolution.js.map +1 -0
  522. package/dist/services/models/reasoning-effort.d.ts +20 -0
  523. package/dist/services/models/reasoning-effort.d.ts.map +1 -0
  524. package/dist/services/models/reasoning-effort.js +28 -0
  525. package/dist/services/models/reasoning-effort.js.map +1 -0
  526. package/dist/services/models/unified-model-catalog.d.ts +4 -0
  527. package/dist/services/models/unified-model-catalog.d.ts.map +1 -0
  528. package/dist/services/models/unified-model-catalog.js +54 -0
  529. package/dist/services/models/unified-model-catalog.js.map +1 -0
  530. package/dist/services/plan-mode-interceptor.d.ts.map +1 -1
  531. package/dist/services/plan-mode-interceptor.js +5 -6
  532. package/dist/services/plan-mode-interceptor.js.map +1 -1
  533. package/dist/services/profiles/active-profile.d.ts +5 -0
  534. package/dist/services/profiles/active-profile.d.ts.map +1 -0
  535. package/dist/services/profiles/active-profile.js +33 -0
  536. package/dist/services/profiles/active-profile.js.map +1 -0
  537. package/dist/services/profiles/index.d.ts +9 -0
  538. package/dist/services/profiles/index.d.ts.map +1 -0
  539. package/dist/services/profiles/index.js +9 -0
  540. package/dist/services/profiles/index.js.map +1 -0
  541. package/dist/services/profiles/labels.d.ts +7 -0
  542. package/dist/services/profiles/labels.d.ts.map +1 -0
  543. package/dist/services/profiles/labels.js +22 -0
  544. package/dist/services/profiles/labels.js.map +1 -0
  545. package/dist/services/profiles/legacy-adapter.d.ts +28 -0
  546. package/dist/services/profiles/legacy-adapter.d.ts.map +1 -0
  547. package/dist/services/profiles/legacy-adapter.js +69 -0
  548. package/dist/services/profiles/legacy-adapter.js.map +1 -0
  549. package/dist/services/profiles/profile-transition.d.ts +48 -0
  550. package/dist/services/profiles/profile-transition.d.ts.map +1 -0
  551. package/dist/services/profiles/profile-transition.js +109 -0
  552. package/dist/services/profiles/profile-transition.js.map +1 -0
  553. package/dist/services/profiles/registry.d.ts +17 -0
  554. package/dist/services/profiles/registry.d.ts.map +1 -0
  555. package/dist/services/profiles/registry.js +147 -0
  556. package/dist/services/profiles/registry.js.map +1 -0
  557. package/dist/services/profiles/resolver.d.ts +10 -0
  558. package/dist/services/profiles/resolver.d.ts.map +1 -0
  559. package/dist/services/profiles/resolver.js +573 -0
  560. package/dist/services/profiles/resolver.js.map +1 -0
  561. package/dist/services/profiles/schema.d.ts +960 -0
  562. package/dist/services/profiles/schema.d.ts.map +1 -0
  563. package/dist/services/profiles/schema.js +196 -0
  564. package/dist/services/profiles/schema.js.map +1 -0
  565. package/dist/services/profiles/types.d.ts +224 -0
  566. package/dist/services/profiles/types.d.ts.map +1 -0
  567. package/dist/services/profiles/types.js +9 -0
  568. package/dist/services/profiles/types.js.map +1 -0
  569. package/dist/services/retry/committed-tool-continuation.d.ts +5 -0
  570. package/dist/services/retry/committed-tool-continuation.d.ts.map +1 -1
  571. package/dist/services/retry/committed-tool-continuation.js +6 -3
  572. package/dist/services/retry/committed-tool-continuation.js.map +1 -1
  573. package/dist/services/retry/provider-failure-classification.d.ts +16 -0
  574. package/dist/services/retry/provider-failure-classification.d.ts.map +1 -1
  575. package/dist/services/retry/provider-failure-classification.js +45 -0
  576. package/dist/services/retry/provider-failure-classification.js.map +1 -1
  577. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  578. package/dist/services/retry/retry-classifier.js +13 -10
  579. package/dist/services/retry/retry-classifier.js.map +1 -1
  580. package/dist/services/retry/retry-error-classification.d.ts +7 -0
  581. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  582. package/dist/services/retry/retry-error-classification.js +32 -9
  583. package/dist/services/retry/retry-error-classification.js.map +1 -1
  584. package/dist/services/retry/retry-recovery-budget.d.ts +26 -1
  585. package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -1
  586. package/dist/services/retry/retry-recovery-budget.js +33 -1
  587. package/dist/services/retry/retry-recovery-budget.js.map +1 -1
  588. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  589. package/dist/services/runtime-setting-router.js +76 -23
  590. package/dist/services/runtime-setting-router.js.map +1 -1
  591. package/dist/services/sandboxed-code-host/host-types.d.ts +135 -0
  592. package/dist/services/sandboxed-code-host/host-types.d.ts.map +1 -0
  593. package/dist/services/sandboxed-code-host/host-types.js +6 -0
  594. package/dist/services/sandboxed-code-host/host-types.js.map +1 -0
  595. package/dist/services/sandboxed-code-host/host-worker.d.ts +9 -0
  596. package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -0
  597. package/dist/services/sandboxed-code-host/host-worker.js +351 -0
  598. package/dist/services/sandboxed-code-host/host-worker.js.map +1 -0
  599. package/dist/services/sandboxed-code-host/sandbox.d.ts +16 -0
  600. package/dist/services/sandboxed-code-host/sandbox.d.ts.map +1 -0
  601. package/dist/services/sandboxed-code-host/sandbox.js +21 -0
  602. package/dist/services/sandboxed-code-host/sandbox.js.map +1 -0
  603. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts +17 -0
  604. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts.map +1 -0
  605. package/dist/services/sandboxed-code-host/sandboxed-code-host.js +347 -0
  606. package/dist/services/sandboxed-code-host/sandboxed-code-host.js.map +1 -0
  607. package/dist/services/service-interfaces.d.ts +32 -0
  608. package/dist/services/service-interfaces.d.ts.map +1 -1
  609. package/dist/services/session/background-task-control.d.ts +3 -1
  610. package/dist/services/session/background-task-control.d.ts.map +1 -1
  611. package/dist/services/session/background-task-control.js +4 -0
  612. package/dist/services/session/background-task-control.js.map +1 -1
  613. package/dist/services/session/continuation-plan-applier.d.ts +2 -1
  614. package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
  615. package/dist/services/session/continuation-plan-applier.js.map +1 -1
  616. package/dist/services/session/continuation-recovery-handler.d.ts +2 -1
  617. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  618. package/dist/services/session/continuation-recovery-handler.js +49 -5
  619. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  620. package/dist/services/session/initial-input-preparer.d.ts +2 -1
  621. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  622. package/dist/services/session/initial-input-preparer.js +2 -1
  623. package/dist/services/session/initial-input-preparer.js.map +1 -1
  624. package/dist/services/session/initial-turn-recovery-handler.d.ts +2 -1
  625. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  626. package/dist/services/session/initial-turn-recovery-handler.js +55 -20
  627. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  628. package/dist/services/session/post-execute-pending-registry.d.ts +2 -1
  629. package/dist/services/session/post-execute-pending-registry.d.ts.map +1 -1
  630. package/dist/services/session/post-execute-pending-registry.js +3 -2
  631. package/dist/services/session/post-execute-pending-registry.js.map +1 -1
  632. package/dist/services/session/session-client-factory.d.ts +4 -0
  633. package/dist/services/session/session-client-factory.d.ts.map +1 -1
  634. package/dist/services/session/session-client-factory.js +12 -4
  635. package/dist/services/session/session-client-factory.js.map +1 -1
  636. package/dist/services/session/session-composition.d.ts +26 -2
  637. package/dist/services/session/session-composition.d.ts.map +1 -1
  638. package/dist/services/session/session-composition.js +97 -18
  639. package/dist/services/session/session-composition.js.map +1 -1
  640. package/dist/services/session/session-continuity-reset.d.ts +2 -1
  641. package/dist/services/session/session-continuity-reset.d.ts.map +1 -1
  642. package/dist/services/session/session-continuity-reset.js +5 -2
  643. package/dist/services/session/session-continuity-reset.js.map +1 -1
  644. package/dist/services/session/session-identity.d.ts +20 -0
  645. package/dist/services/session/session-identity.d.ts.map +1 -0
  646. package/dist/services/session/session-identity.js +43 -0
  647. package/dist/services/session/session-identity.js.map +1 -0
  648. package/dist/services/session/session-input-planner.d.ts.map +1 -1
  649. package/dist/services/session/session-input-planner.js +2 -9
  650. package/dist/services/session/session-input-planner.js.map +1 -1
  651. package/dist/services/session/session-lifecycle.d.ts +5 -1
  652. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  653. package/dist/services/session/session-lifecycle.js +5 -1
  654. package/dist/services/session/session-lifecycle.js.map +1 -1
  655. package/dist/services/session/session-manager.d.ts.map +1 -1
  656. package/dist/services/session/session-manager.js +4 -1
  657. package/dist/services/session/session-manager.js.map +1 -1
  658. package/dist/services/session/session-stream-processor.d.ts +2 -1
  659. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  660. package/dist/services/session/session-stream-processor.js +5 -4
  661. package/dist/services/session/session-stream-processor.js.map +1 -1
  662. package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
  663. package/dist/services/session/test-helpers/conversation-session-fixtures.js +14 -9
  664. package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
  665. package/dist/services/session/turn-coordinator.d.ts +2 -1
  666. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  667. package/dist/services/session/turn-coordinator.js +3 -0
  668. package/dist/services/session/turn-coordinator.js.map +1 -1
  669. package/dist/services/session/turn-workflow.d.ts +4 -1
  670. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  671. package/dist/services/session/turn-workflow.js +58 -21
  672. package/dist/services/session/turn-workflow.js.map +1 -1
  673. package/dist/services/session-rollover/session-rollover-brief.d.ts +9 -1
  674. package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
  675. package/dist/services/session-rollover/session-rollover-brief.js +18 -3
  676. package/dist/services/session-rollover/session-rollover-brief.js.map +1 -1
  677. package/dist/services/settings/setting-schema-utils.d.ts +2 -0
  678. package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
  679. package/dist/services/settings/setting-schema-utils.js +15 -27
  680. package/dist/services/settings/setting-schema-utils.js.map +1 -1
  681. package/dist/services/settings/settings-persistence.js +1 -1
  682. package/dist/services/settings/settings-persistence.js.map +1 -1
  683. package/dist/services/settings/settings-schema.d.ts +132 -15
  684. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  685. package/dist/services/settings/settings-schema.js +133 -32
  686. package/dist/services/settings/settings-schema.js.map +1 -1
  687. package/dist/services/settings/settings-service.d.ts +3 -1
  688. package/dist/services/settings/settings-service.d.ts.map +1 -1
  689. package/dist/services/settings/settings-service.js +88 -91
  690. package/dist/services/settings/settings-service.js.map +1 -1
  691. package/dist/services/settings/settings-sources.d.ts +207 -0
  692. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  693. package/dist/services/settings/settings-sources.js +61 -1
  694. package/dist/services/settings/settings-sources.js.map +1 -1
  695. package/dist/services/settings/settings-ui-metadata.d.ts +27 -0
  696. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -0
  697. package/dist/services/settings/settings-ui-metadata.js +283 -0
  698. package/dist/services/settings/settings-ui-metadata.js.map +1 -0
  699. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +12 -2
  700. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  701. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +61 -0
  702. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  703. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  704. package/dist/services/subagents/execution-runner.js +8 -0
  705. package/dist/services/subagents/execution-runner.js.map +1 -1
  706. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  707. package/dist/services/subagents/mentor-runner.js +5 -2
  708. package/dist/services/subagents/mentor-runner.js.map +1 -1
  709. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  710. package/dist/services/subagents/role-loader.js +4 -0
  711. package/dist/services/subagents/role-loader.js.map +1 -1
  712. package/dist/services/subagents/subagent-client-types.d.ts +7 -0
  713. package/dist/services/subagents/subagent-client-types.d.ts.map +1 -1
  714. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  715. package/dist/services/subagents/subagent-manager.js +4 -1
  716. package/dist/services/subagents/subagent-manager.js.map +1 -1
  717. package/dist/services/subagents/subagent-notification-store.d.ts +12 -2
  718. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  719. package/dist/services/subagents/subagent-notification-store.js +14 -5
  720. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  721. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
  722. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +2 -1
  723. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
  724. package/dist/services/subagents/tool-policy.d.ts +8 -0
  725. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  726. package/dist/services/subagents/tool-policy.js +299 -56
  727. package/dist/services/subagents/tool-policy.js.map +1 -1
  728. package/dist/services/subagents/types.d.ts +2 -1
  729. package/dist/services/subagents/types.d.ts.map +1 -1
  730. package/dist/services/subagents/types.js.map +1 -1
  731. package/dist/services/tool-toggles.d.ts +20 -0
  732. package/dist/services/tool-toggles.d.ts.map +1 -0
  733. package/dist/services/tool-toggles.js +115 -0
  734. package/dist/services/tool-toggles.js.map +1 -0
  735. package/dist/slash-commands.d.ts +3 -0
  736. package/dist/slash-commands.d.ts.map +1 -1
  737. package/dist/slash-commands.js.map +1 -1
  738. package/dist/test-helpers/conversation-session-with-adapter.d.ts +1 -1
  739. package/dist/test-helpers/conversation-session-with-adapter.d.ts.map +1 -1
  740. package/dist/test-helpers/conversation-session-with-adapter.js +6 -1
  741. package/dist/test-helpers/conversation-session-with-adapter.js.map +1 -1
  742. package/dist/test-helpers/vitest-cache-isolation.d.ts +2 -0
  743. package/dist/test-helpers/vitest-cache-isolation.d.ts.map +1 -0
  744. package/dist/test-helpers/vitest-cache-isolation.js +17 -0
  745. package/dist/test-helpers/vitest-cache-isolation.js.map +1 -0
  746. package/dist/tools/agent/activate-skill.d.ts.map +1 -1
  747. package/dist/tools/agent/activate-skill.js +1 -0
  748. package/dist/tools/agent/activate-skill.js.map +1 -1
  749. package/dist/tools/agent/configure-task-check-in.d.ts +2 -0
  750. package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -1
  751. package/dist/tools/agent/configure-task-check-in.js +15 -6
  752. package/dist/tools/agent/configure-task-check-in.js.map +1 -1
  753. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  754. package/dist/tools/agent/run-subagent-async.js +16 -12
  755. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  756. package/dist/tools/file/apply-patch.d.ts +2 -15
  757. package/dist/tools/file/apply-patch.d.ts.map +1 -1
  758. package/dist/tools/file/apply-patch.js +171 -108
  759. package/dist/tools/file/apply-patch.js.map +1 -1
  760. package/dist/tools/file/code-context.d.ts.map +1 -1
  761. package/dist/tools/file/code-context.js +40 -5
  762. package/dist/tools/file/code-context.js.map +1 -1
  763. package/dist/tools/file/create-file.d.ts.map +1 -1
  764. package/dist/tools/file/create-file.js +13 -8
  765. package/dist/tools/file/create-file.js.map +1 -1
  766. package/dist/tools/file/glob.d.ts.map +1 -1
  767. package/dist/tools/file/glob.js +49 -11
  768. package/dist/tools/file/glob.js.map +1 -1
  769. package/dist/tools/file/grep.d.ts.map +1 -1
  770. package/dist/tools/file/grep.js +32 -8
  771. package/dist/tools/file/grep.js.map +1 -1
  772. package/dist/tools/file/read-file.d.ts.map +1 -1
  773. package/dist/tools/file/read-file.js +109 -6
  774. package/dist/tools/file/read-file.js.map +1 -1
  775. package/dist/tools/file/search-replace.js +4 -4
  776. package/dist/tools/file/search-replace.js.map +1 -1
  777. package/dist/tools/file/upstream-apply-patch.d.ts +31 -0
  778. package/dist/tools/file/upstream-apply-patch.d.ts.map +1 -0
  779. package/dist/tools/file/upstream-apply-patch.js +126 -0
  780. package/dist/tools/file/upstream-apply-patch.js.map +1 -0
  781. package/dist/tools/format-helpers.d.ts +2 -0
  782. package/dist/tools/format-helpers.d.ts.map +1 -1
  783. package/dist/tools/format-helpers.js.map +1 -1
  784. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  785. package/dist/tools/memory/memory-tools.js +19 -1
  786. package/dist/tools/memory/memory-tools.js.map +1 -1
  787. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -1
  788. package/dist/tools/session-browser/session-browser-tools.js +33 -7
  789. package/dist/tools/session-browser/session-browser-tools.js.map +1 -1
  790. package/dist/tools/session-rollover/session-rollover-tool.d.ts.map +1 -1
  791. package/dist/tools/session-rollover/session-rollover-tool.js +18 -3
  792. package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -1
  793. package/dist/tools/system/run-code/index.d.ts +2 -0
  794. package/dist/tools/system/run-code/index.d.ts.map +1 -0
  795. package/dist/tools/system/run-code/index.js +2 -0
  796. package/dist/tools/system/run-code/index.js.map +1 -0
  797. package/dist/tools/system/run-code/run-code-telemetry.d.ts +92 -0
  798. package/dist/tools/system/run-code/run-code-telemetry.d.ts.map +1 -0
  799. package/dist/tools/system/run-code/run-code-telemetry.js +189 -0
  800. package/dist/tools/system/run-code/run-code-telemetry.js.map +1 -0
  801. package/dist/tools/system/run-code/run-code.d.ts +98 -0
  802. package/dist/tools/system/run-code/run-code.d.ts.map +1 -0
  803. package/dist/tools/system/run-code/run-code.js +1078 -0
  804. package/dist/tools/system/run-code/run-code.js.map +1 -0
  805. package/dist/tools/system/run-code/tools-header.d.ts +25 -0
  806. package/dist/tools/system/run-code/tools-header.d.ts.map +1 -0
  807. package/dist/tools/system/run-code/tools-header.js +136 -0
  808. package/dist/tools/system/run-code/tools-header.js.map +1 -0
  809. package/dist/tools/system/shell.d.ts.map +1 -1
  810. package/dist/tools/system/shell.js +66 -11
  811. package/dist/tools/system/shell.js.map +1 -1
  812. package/dist/tools/system/worktree.js +2 -2
  813. package/dist/tools/system/worktree.js.map +1 -1
  814. package/dist/tools/types.d.ts +39 -2
  815. package/dist/tools/types.d.ts.map +1 -1
  816. package/dist/tools/types.js.map +1 -1
  817. package/dist/tools/utils.d.ts +10 -0
  818. package/dist/tools/utils.d.ts.map +1 -1
  819. package/dist/tools/utils.js +13 -0
  820. package/dist/tools/utils.js.map +1 -1
  821. package/dist/tools/web/web-fetch.d.ts.map +1 -1
  822. package/dist/tools/web/web-fetch.js +14 -6
  823. package/dist/tools/web/web-fetch.js.map +1 -1
  824. package/dist/tools/web/web-search.d.ts.map +1 -1
  825. package/dist/tools/web/web-search.js +2 -1
  826. package/dist/tools/web/web-search.js.map +1 -1
  827. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  828. package/dist/utils/ai/model-settings.js +0 -47
  829. package/dist/utils/ai/model-settings.js.map +1 -1
  830. package/dist/utils/ai/token-usage.d.ts +7 -0
  831. package/dist/utils/ai/token-usage.d.ts.map +1 -1
  832. package/dist/utils/ai/token-usage.js +6 -2
  833. package/dist/utils/ai/token-usage.js.map +1 -1
  834. package/dist/utils/conversation/apply-conversation-result.d.ts.map +1 -1
  835. package/dist/utils/conversation/apply-conversation-result.js +13 -0
  836. package/dist/utils/conversation/apply-conversation-result.js.map +1 -1
  837. package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
  838. package/dist/utils/conversation/conversation-utils.js +54 -1
  839. package/dist/utils/conversation/conversation-utils.js.map +1 -1
  840. package/dist/utils/conversation/message-buffer.d.ts +16 -0
  841. package/dist/utils/conversation/message-buffer.d.ts.map +1 -1
  842. package/dist/utils/conversation/message-buffer.js +33 -0
  843. package/dist/utils/conversation/message-buffer.js.map +1 -1
  844. package/dist/utils/output/bound-tool-result.d.ts +23 -0
  845. package/dist/utils/output/bound-tool-result.d.ts.map +1 -1
  846. package/dist/utils/output/bound-tool-result.js +27 -0
  847. package/dist/utils/output/bound-tool-result.js.map +1 -1
  848. package/dist/utils/output/trim-tool-output.d.ts +1 -1
  849. package/dist/utils/output/trim-tool-output.d.ts.map +1 -1
  850. package/dist/utils/output/trim-tool-output.js +20 -0
  851. package/dist/utils/output/trim-tool-output.js.map +1 -1
  852. package/dist/utils/resume-list.d.ts +2 -0
  853. package/dist/utils/resume-list.d.ts.map +1 -1
  854. package/dist/utils/resume-list.js +7 -14
  855. package/dist/utils/resume-list.js.map +1 -1
  856. package/dist/utils/settings-command.d.ts +8 -0
  857. package/dist/utils/settings-command.d.ts.map +1 -1
  858. package/dist/utils/settings-command.js +138 -37
  859. package/dist/utils/settings-command.js.map +1 -1
  860. package/dist/utils/shell/execute-shell.d.ts +18 -0
  861. package/dist/utils/shell/execute-shell.d.ts.map +1 -1
  862. package/dist/utils/shell/execute-shell.js +48 -6
  863. package/dist/utils/shell/execute-shell.js.map +1 -1
  864. package/dist/utils/shell/shell-output.d.ts +7 -1
  865. package/dist/utils/shell/shell-output.d.ts.map +1 -1
  866. package/dist/utils/shell/shell-output.js +37 -7
  867. package/dist/utils/shell/shell-output.js.map +1 -1
  868. package/dist/utils/streaming/streaming-session-factory.d.ts +9 -0
  869. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  870. package/dist/utils/streaming/streaming-session-factory.js +13 -1
  871. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  872. package/dist/utils/streaming/streaming-speed-tracker.d.ts +15 -0
  873. package/dist/utils/streaming/streaming-speed-tracker.d.ts.map +1 -1
  874. package/dist/utils/streaming/streaming-speed-tracker.js +18 -1
  875. package/dist/utils/streaming/streaming-speed-tracker.js.map +1 -1
  876. package/dist/utils/tool-args-display.d.ts +21 -0
  877. package/dist/utils/tool-args-display.d.ts.map +1 -0
  878. package/dist/utils/tool-args-display.js +34 -0
  879. package/dist/utils/tool-args-display.js.map +1 -0
  880. package/dist/utils/value-suggestions.d.ts +4 -10
  881. package/dist/utils/value-suggestions.d.ts.map +1 -1
  882. package/dist/utils/value-suggestions.js +77 -144
  883. package/dist/utils/value-suggestions.js.map +1 -1
  884. package/dist/utils/worker-bootstrap.d.ts +3 -0
  885. package/dist/utils/worker-bootstrap.d.ts.map +1 -0
  886. package/dist/utils/worker-bootstrap.js +7 -0
  887. package/dist/utils/worker-bootstrap.js.map +1 -0
  888. package/dist/utils/worker-cwd-preload.cjs +23 -0
  889. package/dist/utils/worker-cwd-preload.cjs.map +1 -0
  890. package/dist/utils/worker-cwd-preload.d.cts +2 -0
  891. package/dist/utils/worker-cwd-preload.d.cts.map +1 -0
  892. package/package.json +7 -4
  893. package/dist/services/agent-runtime/workflow/workflow-worker.d.ts +0 -4
  894. package/dist/services/agent-runtime/workflow/workflow-worker.d.ts.map +0 -1
  895. package/dist/services/agent-runtime/workflow/workflow-worker.js +0 -55
  896. package/dist/services/agent-runtime/workflow/workflow-worker.js.map +0 -1
@@ -12,15 +12,31 @@ import { randomUUID } from 'node:crypto';
12
12
  import { fetchModels } from '../services/model-service.js';
13
13
  import { prepareOpenAIRequestPrefixBinding, runWithOpenAIRequestPrefixBindingScope, } from '../providers/openai-request-prefix-binding.js';
14
14
  import { isDeepStrictEqual } from 'node:util';
15
+ import { MIN_CHECK_IN_INTERVAL_SECONDS, MIN_NEXT_CHECK_IN_SECONDS } from '../tools/agent/configure-task-check-in.js';
15
16
  import { ContextCompactionHardFitError, LocalContextCompactor, } from '../services/agent-runtime/context-compaction/local-context-compactor.js';
16
17
  import { CONTEXT_COMPACTION_INSTRUCTIONS } from '../prompts/context-compaction.js';
17
18
  import { getCatalogModel } from '../providers/model-catalog/catalog.js';
18
19
  import { supportsContextCompactionModel } from '../providers/openai-responses-model.js';
20
+ import { isCodexCompactionIncompatible } from '../providers/codex-compact.js';
19
21
  import { estimateContext, resolveCompactionThreshold, shouldDeferAutomaticCompaction, } from '../services/agent-runtime/context-compaction/index.js';
20
22
  import { projectConversationMessage } from '../services/conversation/conversation-message-projection.js';
21
23
  import { isLocalContextSummary } from '../contracts/provider-input.js';
22
24
  import { classifyProviderFailure } from '../services/retry/provider-failure-classification.js';
23
25
  import { ContextMilestoneReminder } from '../services/agent-runtime/context-compaction/context-milestone-reminder.js';
26
+ function findConversationResetModel(model) {
27
+ const visited = new Set();
28
+ let current = model;
29
+ while (current && typeof current === 'object' && !visited.has(current)) {
30
+ visited.add(current);
31
+ const wrapped = current.wrappedModel;
32
+ if (wrapped && typeof wrapped === 'object' && typeof wrapped.stream === 'function') {
33
+ current = wrapped;
34
+ continue;
35
+ }
36
+ return typeof current.resetConversationState === 'function' ? current : undefined;
37
+ }
38
+ return undefined;
39
+ }
24
40
  function createScopedToolLifecycle(lifecycle, scope) {
25
41
  const withScope = (context) => ({
26
42
  ...context,
@@ -41,6 +57,7 @@ export class AgentClient {
41
57
  #toolInterceptorRegistry;
42
58
  #applicationRunLoop;
43
59
  #contextCompactionSessionState = { disabled: false };
60
+ #unavailableCodexCompaction = new WeakSet();
44
61
  #maxTurns;
45
62
  #retryAttempts;
46
63
  #retryCallback = null;
@@ -66,6 +83,10 @@ export class AgentClient {
66
83
  #streamedModelCache = new Map();
67
84
  #contextMilestoneReminder = new ContextMilestoneReminder();
68
85
  #sessionRolloverRequest = null;
86
+ #lastCompletedProviderInputTokens;
87
+ #blockedCompactionRearmAtEstimatedTokens;
88
+ #blockedCompactionUserTurnCount;
89
+ #lastLogicalSessionId;
69
90
  #clearStreamedModelCache() {
70
91
  for (const cached of this.#streamedModelCache.values()) {
71
92
  if (cached.ownership !== 'owned')
@@ -76,6 +97,16 @@ export class AgentClient {
76
97
  }
77
98
  this.#streamedModelCache.clear();
78
99
  }
100
+ #discardStreamedModel(cacheKey, cached) {
101
+ if (this.#streamedModelCache.get(cacheKey) !== cached)
102
+ return;
103
+ this.#streamedModelCache.delete(cacheKey);
104
+ if (cached.ownership !== 'owned')
105
+ return;
106
+ void Promise.resolve(cached.model)
107
+ .then((model) => model.close?.())
108
+ .catch(() => undefined);
109
+ }
79
110
  #resolveStreamedModel(selectedModel) {
80
111
  const providerId = this.#agentConfig.getProvider();
81
112
  const provider = getProvider(providerId);
@@ -135,11 +166,14 @@ export class AgentClient {
135
166
  return { kind: 'unchanged' };
136
167
  }
137
168
  const streamed = await this.#resolveStreamedModel(input.model);
169
+ if (!input.manual && this.#unavailableCodexCompaction.has(streamed)) {
170
+ return { kind: 'unchanged', nativeUnavailable: true };
171
+ }
138
172
  if (!streamed.compactHistory) {
139
173
  this.#logger.warn('Codex compact endpoint is unavailable; continuing with uncompacted history', {
140
174
  model: input.model,
141
175
  });
142
- return { kind: 'unchanged' };
176
+ return { kind: 'unchanged', nativeUnavailable: true };
143
177
  }
144
178
  input.onStarted('codex');
145
179
  try {
@@ -151,14 +185,23 @@ export class AgentClient {
151
185
  if (history.length === 0) {
152
186
  throw new Error('Codex compact endpoint returned an empty history');
153
187
  }
188
+ this.#unavailableCodexCompaction.delete(streamed);
154
189
  return { kind: 'compacted', history, modelInput: history };
155
190
  }
156
191
  catch (error) {
192
+ if (input.signal?.aborted)
193
+ throw error;
194
+ const nativeUnavailable = isCodexCompactionIncompatible(error);
195
+ if (nativeUnavailable)
196
+ this.#unavailableCodexCompaction.add(streamed);
157
197
  this.#logger.warn('Codex compact endpoint failed; continuing with uncompacted history', {
198
+ eventType: 'context_compaction.native_failed',
158
199
  model: input.model,
159
200
  error: error instanceof Error ? error.message : String(error),
201
+ automaticRetry: nativeUnavailable ? 'disabled_for_model_instance' : 'eligible',
202
+ recovery: nativeUnavailable ? 'Manual /compact retries; auto mode can use local compaction.' : 'unchanged',
160
203
  });
161
- return { kind: 'failed', provider: 'codex' };
204
+ return { kind: 'failed', provider: 'codex', nativeUnavailable };
162
205
  }
163
206
  }
164
207
  #boundaryCompaction() {
@@ -166,7 +209,7 @@ export class AgentClient {
166
209
  if (!enabled)
167
210
  return undefined;
168
211
  return {
169
- compact: async ({ history, automaticCompactionsThisRun, signal, onStarted, }) => {
212
+ compact: async ({ history, automaticCompactionsThisRun, lastCompletedInputTokens, signal, onStarted, }) => {
170
213
  const mode = this.#settings.get('agent.contextCompaction.mode') ?? 'native';
171
214
  const provider = this.#agentConfig.getProvider();
172
215
  const model = this.#agentConfig.getModel();
@@ -176,7 +219,7 @@ export class AgentClient {
176
219
  supportsContextCompactionModel(model) &&
177
220
  !this.#contextCompactionSessionState.disabled;
178
221
  if (provider === 'codex' && mode !== 'local') {
179
- return this.#compactCodexHistory({
222
+ const native = await this.#compactCodexHistory({
180
223
  history,
181
224
  model,
182
225
  automaticCompactionsThisRun,
@@ -184,6 +227,10 @@ export class AgentClient {
184
227
  onStarted,
185
228
  manual: false,
186
229
  });
230
+ if (mode !== 'auto' || !('nativeUnavailable' in native && native.nativeUnavailable))
231
+ return native;
232
+ // Auto was explicitly selected. Keep the existing local safe-cut and
233
+ // opaque-history checks; a rejected native call never discards history.
187
234
  }
188
235
  if (mode === 'native' || (mode === 'auto' && openaiInlineNative))
189
236
  return { kind: 'unchanged' };
@@ -212,6 +259,19 @@ export class AgentClient {
212
259
  },
213
260
  });
214
261
  const checkpoint = history.find(isLocalContextSummary)?.contextSummary;
262
+ const genuineUserTurns = history.filter((item) => {
263
+ const message = projectConversationMessage(item);
264
+ return message?.role === 'user' && !message.isSynthetic;
265
+ }).length;
266
+ const checkpointIndex = history.findIndex(isLocalContextSummary);
267
+ const hasCompleteNewUserTurn = this.#blockedCompactionUserTurnCount !== undefined
268
+ ? genuineUserTurns > this.#blockedCompactionUserTurnCount
269
+ : checkpointIndex >= 0
270
+ ? history.slice(checkpointIndex + 1).some((item) => {
271
+ const message = projectConversationMessage(item);
272
+ return message?.role === 'user' && !message.isSynthetic;
273
+ })
274
+ : true;
215
275
  let outcome;
216
276
  try {
217
277
  outcome = await compactor.compactAtBoundary({
@@ -227,8 +287,10 @@ export class AgentClient {
227
287
  compactThresholdTokens: this.#settings.get('agent.contextCompaction.compactThresholdTokens') ?? null,
228
288
  manual: false,
229
289
  automaticCompactionsThisRun,
230
- hasCompleteNewUserTurn: true,
290
+ hasCompleteNewUserTurn,
231
291
  checkpoint: checkpoint ? { rearmAtEstimatedTokens: checkpoint.rearmAtEstimatedTokens } : undefined,
292
+ rearmAtEstimatedTokens: this.#blockedCompactionRearmAtEstimatedTokens,
293
+ lastCompletedInputTokens,
232
294
  signal,
233
295
  });
234
296
  }
@@ -248,15 +310,29 @@ export class AgentClient {
248
310
  // A blocked outcome leaves context growing, so it must be visible in
249
311
  // the log even though it is not a failure the user can act on.
250
312
  if (outcome.kind === 'blocked') {
313
+ if (outcome.rearmAtTokens !== undefined) {
314
+ this.#blockedCompactionRearmAtEstimatedTokens = outcome.rearmAtTokens;
315
+ this.#blockedCompactionUserTurnCount = genuineUserTurns;
316
+ }
251
317
  this.#logger.warn('Local context compaction blocked; continuing with uncompacted history', {
252
318
  provider,
253
319
  model,
254
320
  reason: outcome.reason,
255
321
  renderedInputTokens: outcome.estimate.renderedInputTokens,
322
+ ...(outcome.rearmAtTokens !== undefined ? { rearmAtEstimatedTokens: outcome.rearmAtTokens } : {}),
256
323
  });
324
+ if (outcome.reason === 'no_complete_cold_turn') {
325
+ return {
326
+ kind: 'unchanged',
327
+ notice: 'Local compaction cannot shorten this history yet: it preserves the newest two user turns and needs an older completed turn. ' +
328
+ 'Continue the current work; keep outputs concise and save durable progress. If session_rollover is available, consider it at a safe idle boundary; live background work survives rollover, so do not wait for it solely to rotate. Do not repeat completed work or manufacture user turns to force compaction.',
329
+ };
330
+ }
257
331
  }
258
332
  return { kind: 'unchanged' };
259
333
  }
334
+ this.#blockedCompactionRearmAtEstimatedTokens = undefined;
335
+ this.#blockedCompactionUserTurnCount = undefined;
260
336
  if (outcome.droppedOpaqueItems > 0) {
261
337
  this.#logger.debug('Local context compaction dropped provider-opaque items with their cold turns', {
262
338
  provider,
@@ -282,16 +358,11 @@ export class AgentClient {
282
358
  },
283
359
  };
284
360
  }
285
- #observeContextMilestones(history, onReminder) {
361
+ #observeContextMilestones(history, onReminder, lastCompletedInputTokens) {
286
362
  const provider = this.#agentConfig.getProvider();
287
363
  const model = this.#agentConfig.getModel();
288
364
  const catalog = getCatalogModel(provider, model);
289
365
  const agent = this.#agentConfig.getApplicationAgent();
290
- const threshold = resolveCompactionThreshold({
291
- contextWindow: catalog?.contextWindow,
292
- compactThreshold: this.#settings.get('agent.contextCompaction.compactThreshold') ?? 0.8,
293
- compactThresholdTokens: this.#settings.get('agent.contextCompaction.compactThresholdTokens') ?? null,
294
- });
295
366
  const estimate = estimateContext({
296
367
  history,
297
368
  instructions: agent.instructions,
@@ -305,9 +376,7 @@ export class AgentClient {
305
376
  milestones: this.#settings.get('agent.sessionRollover.milestones') ?? [],
306
377
  autoBrief: this.#settings.get('agent.sessionRollover.autoBrief') ?? true,
307
378
  };
308
- const reminders = this.#contextMilestoneReminder.observe(estimate, config, canSafelyDeferCompaction && this.#settings.get('agent.contextCompaction.enabled') && threshold.available
309
- ? threshold.effectiveThreshold
310
- : undefined);
379
+ const reminders = this.#contextMilestoneReminder.observe(lastCompletedInputTokens, config);
311
380
  for (const reminder of reminders) {
312
381
  onReminder(reminder);
313
382
  }
@@ -336,42 +405,25 @@ export class AgentClient {
336
405
  this.#subagentBridge?.setBackgroundApprovalPauseSink(sink);
337
406
  }
338
407
  requestSessionRollover(request) {
339
- const active = this.#liveBackgroundWork();
340
- if (active.subagent > 0 || active.shell > 0) {
341
- return {
342
- ok: false,
343
- status: 'rollover_blocked',
344
- error: 'Session rollover is blocked while background work is live.',
345
- active,
346
- };
347
- }
348
- this.#sessionRolloverRequest ??= request;
349
- return { ok: true, status: 'rollover_requested' };
408
+ const rolloverId = randomUUID();
409
+ const pending = {
410
+ ...request,
411
+ rolloverId,
412
+ requestedAt: Date.now(),
413
+ ...(this.#lastCompletedProviderInputTokens !== undefined
414
+ ? { providerInputTokens: this.#lastCompletedProviderInputTokens }
415
+ : {}),
416
+ };
417
+ this.#sessionRolloverRequest ??= pending;
418
+ return { ok: true, status: 'rollover_requested', rolloverId: this.#sessionRolloverRequest.rolloverId };
350
419
  }
351
420
  consumeSessionRolloverRequest() {
352
421
  const request = this.#sessionRolloverRequest;
353
422
  this.#sessionRolloverRequest = null;
354
423
  if (!request)
355
424
  return { status: 'none' };
356
- const active = this.#liveBackgroundWork();
357
- if (active.subagent > 0 || active.shell > 0) {
358
- return {
359
- status: 'blocked',
360
- blocker: 'background_work',
361
- error: 'Session rollover was not performed because background work became live before turn settlement.',
362
- active,
363
- };
364
- }
365
425
  return { status: 'ready', request };
366
426
  }
367
- #liveBackgroundWork() {
368
- const subagent = this.listBackgroundSubagentStatuses().filter(({ status }) => status === 'running' ||
369
- status === 'awaiting_approval' ||
370
- status === 'waiting_for_answer' ||
371
- status === 'cancelling').length;
372
- const shell = this.listBackgroundShellJobs().filter(({ status }) => status === 'running' || status === 'cancelling').length;
373
- return { shell, subagent };
374
- }
375
427
  /** Exact nested-tool state shared with the subagent runtime's tool factory. */
376
428
  getNestedToolCompatibilityState() {
377
429
  return this.#subagentBridge?.getNestedToolCompatibilityState();
@@ -405,7 +457,7 @@ export class AgentClient {
405
457
  #resetMentorState() {
406
458
  this.#subagentBridge?.clearSubagentCache();
407
459
  }
408
- constructor({ model, reasoningEffort, maxTurns, retryAttempts, agentOverride, providerOverride, deps, subagentBridge, toolOwnership, postExecutePauseCapability, sessionAccess, toolLifecycle, hookScope, backgroundShellRegistry, backgroundShellOutput, allowBackgroundShell = true, // Retained for session-factory compatibility; direct execution no longer
460
+ constructor({ model, reasoningEffort, maxTurns, retryAttempts, agentOverride, providerOverride, approvalPolicyRegistry, deps, subagentBridge, toolOwnership, postExecutePauseCapability, sessionAccess, toolLifecycle, hookScope, backgroundShellRegistry, backgroundShellOutput, allowBackgroundShell = true, // Retained for session-factory compatibility; direct execution no longer
409
461
  allowAskUser = true, wrapUpOnCriticalRunBudget = false,
410
462
  // projects chained input through the legacy mode.
411
463
  continuationProjectionMode: _continuationProjectionMode = 'legacy', }) {
@@ -420,7 +472,7 @@ export class AgentClient {
420
472
  this.#wrapUpOnCriticalRunBudget = wrapUpOnCriticalRunBudget;
421
473
  this.#askUserAnswerStore = new AskUserAnswerStore();
422
474
  // Create AgentConfiguration (handles editor, model, provider, reasoning, etc.)
423
- this.#agentConfig = new AgentConfiguration({ model, reasoningEffort, providerOverride, agentOverride }, {
475
+ this.#agentConfig = new AgentConfiguration({ model, reasoningEffort, providerOverride, agentOverride, approvalPolicyRegistry }, {
424
476
  logger: deps.logger,
425
477
  settings: deps.settings,
426
478
  sessionContextService: deps.sessionContextService,
@@ -459,7 +511,14 @@ export class AgentClient {
459
511
  getOnToolDispatch: () => this.#onToolDispatch,
460
512
  contextCompactionSessionState: this.#contextCompactionSessionState,
461
513
  resolveMaxParallelToolCalls: () => deps.settings.get('agent.maxParallelToolCalls'),
462
- logDiagnostic: (message, meta) => deps.logger.info(message, meta),
514
+ logDiagnostic: (message, meta, options = {}) => {
515
+ const metadata = options.eventType ? { ...meta, eventType: options.eventType } : meta;
516
+ if (options.severity === 'debug') {
517
+ deps.logger.debug(message, metadata);
518
+ return;
519
+ }
520
+ deps.logger.info(message, metadata);
521
+ },
463
522
  resolveModel: (selectedModel) => this.#resolveStreamedModel(selectedModel),
464
523
  });
465
524
  this.#chatService = new AgentChatService({
@@ -481,10 +540,11 @@ export class AgentClient {
481
540
  // Factory lives here (not in SubagentBridge) so each subagent gets a
482
541
  // lightweight transient client that shares logger/settings/executionContext
483
542
  // with the parent but skips agent-rebuild and SubagentManager initialisation.
484
- createClient: ({ agent, provider, maxTurns, retryAttempts, agentId, role, }) => new AgentClient({
543
+ createClient: ({ agent, provider, maxTurns, retryAttempts, agentId, role, approvalPolicyRegistry, }) => new AgentClient({
485
544
  model: agent.model,
486
545
  maxTurns,
487
546
  retryAttempts,
547
+ approvalPolicyRegistry,
488
548
  deps: {
489
549
  logger: deps.logger,
490
550
  settings: deps.settings,
@@ -665,6 +725,12 @@ export class AgentClient {
665
725
  toolCounts: {},
666
726
  });
667
727
  }
728
+ getApprovalPolicyRegistry() {
729
+ return this.#agentConfig.approvalPolicyRegistry;
730
+ }
731
+ setNestedApprovalOwner(owner) {
732
+ this.#agentConfig.setNestedApprovalOwner(owner);
733
+ }
668
734
  listBackgroundSubagentStatuses() {
669
735
  return this.#subagentBridge?.listBackgroundSubagentStatuses() ?? [];
670
736
  }
@@ -711,6 +777,18 @@ export class AgentClient {
711
777
  if (!this.#backgroundCheckInScheduler) {
712
778
  return { ok: false, error: 'Background check-in scheduler is not active.' };
713
779
  }
780
+ if (params.interval_seconds !== undefined && params.interval_seconds < MIN_CHECK_IN_INTERVAL_SECONDS) {
781
+ return {
782
+ ok: false,
783
+ error: `interval_seconds must be at least ${MIN_CHECK_IN_INTERVAL_SECONDS} seconds (5 minutes).`,
784
+ };
785
+ }
786
+ if (params.next_check_in_seconds !== undefined && params.next_check_in_seconds < MIN_NEXT_CHECK_IN_SECONDS) {
787
+ return {
788
+ ok: false,
789
+ error: `next_check_in_seconds must be at least ${MIN_NEXT_CHECK_IN_SECONDS} seconds.`,
790
+ };
791
+ }
714
792
  return this.#backgroundCheckInScheduler.configureTaskCheckIn(params.target, {
715
793
  enabled: params.enabled,
716
794
  intervalMs: params.interval_seconds !== undefined ? params.interval_seconds * 1000 : undefined,
@@ -742,13 +820,66 @@ export class AgentClient {
742
820
  this.#chatService.clearModelCache();
743
821
  this.#subagentBridge?.dispose();
744
822
  this.#agentConfig.dispose();
823
+ this.#blockedCompactionRearmAtEstimatedTokens = undefined;
824
+ this.#blockedCompactionUserTurnCount = undefined;
745
825
  }
746
826
  clearConversations() {
747
827
  this.#applicationRunLoop.abort();
828
+ this.#blockedCompactionRearmAtEstimatedTokens = undefined;
829
+ this.#blockedCompactionUserTurnCount = undefined;
748
830
  getProvider(this.#agentConfig.getProvider())?.clearConversations?.();
749
831
  this.#agentConfig.refreshAgent();
750
832
  this.#logger.debug('Conversation and agent refreshed');
751
833
  }
834
+ /**
835
+ * Rollover deliberately does not use clearConversations(): that public
836
+ * operation refreshes the whole client and is allowed to tear down normal
837
+ * conversation resources. Only the root request lane is reset here; nested
838
+ * clients and their live background work remain owned by the bridge.
839
+ */
840
+ rolloverRootContext() {
841
+ this.#applicationRunLoop.abort();
842
+ this.#clearCorrelationId();
843
+ // Keep the state object captured by an already-created provider model.
844
+ // Replacing it would leave the retained model bound to an obsolete
845
+ // compaction state object.
846
+ this.#contextCompactionSessionState.disabled = false;
847
+ this.#contextMilestoneReminder = new ContextMilestoneReminder();
848
+ this.#sessionRolloverRequest = null;
849
+ this.#lastCompletedProviderInputTokens = undefined;
850
+ this.#askUserAnswerStore.clear();
851
+ const resetOptions = this.#lastLogicalSessionId
852
+ ? { providerHistoryKey: this.#lastLogicalSessionId }
853
+ : undefined;
854
+ for (const [cacheKey, cached] of this.#streamedModelCache) {
855
+ // A retained root reset must never reach a transient client's borrowed
856
+ // model. Its provider state may be shared with a live nested sibling,
857
+ // while the root reset is scoped only to the root history key.
858
+ if (cached.ownership !== 'owned')
859
+ continue;
860
+ const reset = (model) => {
861
+ const resetModel = findConversationResetModel(model);
862
+ if (resetModel) {
863
+ if (!resetOptions)
864
+ return;
865
+ resetModel.resetConversationState(resetOptions);
866
+ this.#unavailableCodexCompaction.delete(model);
867
+ return;
868
+ }
869
+ // A provider without the reset seam has not proved that its cached
870
+ // state is safe to carry into a new logical session. Recreate it rather
871
+ // than silently retaining unknown conversation state.
872
+ this.#discardStreamedModel(cacheKey, cached);
873
+ };
874
+ if (cached.model instanceof Promise) {
875
+ void cached.model.then(reset).catch(() => undefined);
876
+ }
877
+ else {
878
+ reset(cached.model);
879
+ }
880
+ }
881
+ this.#chatService.clearModelCache();
882
+ }
752
883
  #clearCorrelationId() {
753
884
  if (this.#currentCorrelationId) {
754
885
  this.#logger.clearCorrelationId();
@@ -800,12 +931,17 @@ export class AgentClient {
800
931
  if (this.#currentCorrelationId === correlationId)
801
932
  this.#clearCorrelationId();
802
933
  };
803
- void stream.completed.then(() => cleanup(), (error) => {
934
+ void stream.completed.then(() => {
935
+ if (stream.latestProviderInputTokens !== undefined) {
936
+ this.#lastCompletedProviderInputTokens = stream.latestProviderInputTokens;
937
+ if (this.#sessionRolloverRequest) {
938
+ this.#sessionRolloverRequest.providerInputTokens = stream.latestProviderInputTokens;
939
+ }
940
+ }
941
+ cleanup();
942
+ }, (error) => {
804
943
  const failure = classifyProviderFailure(error);
805
- this.#logger.error('Agent stream failed', {
806
- eventType: 'provider.response.failed',
807
- category: 'provider',
808
- phase: 'provider_response',
944
+ const metadata = {
809
945
  traceId: correlationId ?? undefined,
810
946
  provider,
811
947
  model,
@@ -818,7 +954,23 @@ export class AgentClient {
818
954
  inputType: Array.isArray(input) ? 'array' : typeof input,
819
955
  inputLength: typeof input === 'string' ? input.length : undefined,
820
956
  inputItems: Array.isArray(input) ? input.length : undefined,
821
- });
957
+ };
958
+ if (failure.errorKind === 'cancelled') {
959
+ this.#logger.debug('Agent stream cancelled', {
960
+ ...metadata,
961
+ eventType: 'stream.aborted',
962
+ category: 'stream',
963
+ phase: 'abort',
964
+ });
965
+ }
966
+ else {
967
+ this.#logger.error('Agent stream failed', {
968
+ ...metadata,
969
+ eventType: 'provider.response.failed',
970
+ category: 'provider',
971
+ phase: 'provider_response',
972
+ });
973
+ }
822
974
  cleanup();
823
975
  });
824
976
  }
@@ -870,6 +1022,8 @@ export class AgentClient {
870
1022
  this.#abortActiveWork(() => this.#applicationRunLoop.abortSegment());
871
1023
  const startController = new AbortController();
872
1024
  this.#activeStartController = startController;
1025
+ if (options.sessionId)
1026
+ this.#lastLogicalSessionId = options.sessionId;
873
1027
  try {
874
1028
  await this.#prepareStart(userInput, options, startController.signal);
875
1029
  if (startController.signal.aborted) {
@@ -877,7 +1031,7 @@ export class AgentClient {
877
1031
  }
878
1032
  const provider = this.#agentConfig.getProvider();
879
1033
  const supportsChaining = this.supportsConversationChaining();
880
- const agent = this.#agentConfig.getApplicationAgent(options.sessionId);
1034
+ const agent = this.#agentConfig.getApplicationAgent(options.sessionId, options.promptCacheKey);
881
1035
  const requestPreparation = this.#openAIRequestPreparation(options);
882
1036
  const boundaryCompaction = this.#boundaryCompaction();
883
1037
  const runBudget = this.#runBudgetPolicy();
@@ -900,7 +1054,7 @@ export class AgentClient {
900
1054
  runBudget,
901
1055
  ...(this.#wrapUpOnCriticalRunBudget ? { wrapUpOnCriticalRunBudget: true } : {}),
902
1056
  ...(options.onRunBudgetEvent ? { onRunBudgetEvent: options.onRunBudgetEvent } : {}),
903
- onRequestBoundary: (history, onReminder) => this.#observeContextMilestones(history, onReminder),
1057
+ onRequestBoundary: (history, onReminder, observation) => this.#observeContextMilestones(history, onReminder, observation.lastCompletedInputTokens),
904
1058
  });
905
1059
  };
906
1060
  const stream = run();
@@ -919,6 +1073,8 @@ export class AgentClient {
919
1073
  // The turn is resuming, not ending: keep anything waiting for this segment.
920
1074
  this.#abortActiveWork(() => this.#applicationRunLoop.abortSegment());
921
1075
  const provider = this.#agentConfig.getProvider();
1076
+ if (options.sessionId)
1077
+ this.#lastLogicalSessionId = options.sessionId;
922
1078
  const supportsChaining = this.supportsConversationChaining();
923
1079
  const requestPreparation = this.#openAIRequestPreparation(options);
924
1080
  const boundaryCompaction = this.#boundaryCompaction();
@@ -940,7 +1096,7 @@ export class AgentClient {
940
1096
  runBudget,
941
1097
  ...(this.#wrapUpOnCriticalRunBudget ? { wrapUpOnCriticalRunBudget: true } : {}),
942
1098
  ...(options.onRunBudgetEvent ? { onRunBudgetEvent: options.onRunBudgetEvent } : {}),
943
- onRequestBoundary: (history, onReminder) => this.#observeContextMilestones(history, onReminder),
1099
+ onRequestBoundary: (history, onReminder, observation) => this.#observeContextMilestones(history, onReminder, observation.lastCompletedInputTokens),
944
1100
  ...(options.stopAfterApprovalResolution ? { stopAfterApprovalResolution: true } : {}),
945
1101
  });
946
1102
  this.#observeCompletion(stream, state, provider, this.#agentConfig.getModel());