@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
@@ -1 +1 @@
1
- {"version":3,"file":"mode-notices.d.ts","sourceRoot":"","sources":["../../source/services/mode-notices.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,sBAAsB,QAOb,CAAC;AAEvB,eAAO,MAAM,qBAAqB,QAMd,CAAC;AAErB,eAAO,MAAM,wBAAwB,QAIf,CAAC;AAEvB,eAAO,MAAM,uBAAuB,QAGhB,CAAC;AAErB,eAAO,MAAM,8BAA8B,QAIrB,CAAC;AAEvB,eAAO,MAAM,6BAA6B,QAGtB,CAAC;AAErB,eAAO,MAAM,cAAc,aAAc,OAAO,KAAG,MACQ,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,eAAO,MAAM,iBAAiB,SAAU,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,OAAO,KAAG,MAI7F,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC/E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,IAAI,CAIN;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAElG"}
1
+ {"version":3,"file":"mode-notices.d.ts","sourceRoot":"","sources":["../../source/services/mode-notices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAwB3D,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;AAC5E,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAkCrE,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;AAC3E,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AA+BpE,eAAO,MAAM,sBAAsB,QAAsD,CAAC;AAC1F,eAAO,MAAM,qBAAqB,QAAqD,CAAC;AACxF,eAAO,MAAM,wBAAwB,QAAwD,CAAC;AAC9F,eAAO,MAAM,uBAAuB,QAAuD,CAAC;AAC5F,eAAO,MAAM,8BAA8B,QAA8D,CAAC;AAC1G,eAAO,MAAM,6BAA6B,QAA6D,CAAC;AAExG,iFAAiF;AACjF,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,gBAAgB,EACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5B,IAAI,CASN"}
@@ -1,5 +1,6 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
1
+ import { resolveActiveProfile } from './profiles/active-profile.js';
2
+ import { resolveProfile } from './profiles/resolver.js';
3
+ import { ProfileResolutionError } from './profiles/types.js';
3
4
  /**
4
5
  * Canonical mode-change notices injected into the next user message when the
5
6
  * user toggles a runtime mode. Prefixing the next real turn avoids a
@@ -9,59 +10,87 @@ import path from 'node:path';
9
10
  * The workflow body lives here, not in the instruction prefix, so a toggle
10
11
  * cannot change developer instructions on chained Responses-Lite HTTP turns.
11
12
  */
12
- const PLAN_MODE_WORKFLOW = fs
13
- .readFileSync(path.join(import.meta.dirname, '../prompts/plan-mode-info.md'), 'utf8')
14
- .trim();
15
- const MENTOR_MODE_WORKFLOW = fs
16
- .readFileSync(path.join(import.meta.dirname, '../prompts/mentor-addon.md'), 'utf8')
17
- .trim();
18
- const ORCHESTRATOR_MODE_WORKFLOW = fs
19
- .readFileSync(path.join(import.meta.dirname, '../prompts/orchestrator.md'), 'utf8')
20
- .trim();
21
- export const PLAN_MODE_ENTER_NOTICE = '<system-notice>\n' +
22
- 'Plan Mode is ON: the workspace is read-only. Do not create or modify files, run ' +
23
- 'state-changing commands, or spawn write-capable subagents. Investigate with read-only ' +
24
- 'tools and deliver a concrete, ordered implementation plan; tell the user to exit Plan ' +
25
- 'Mode to execute it.\n\n' +
26
- PLAN_MODE_WORKFLOW +
27
- '\n</system-notice>';
28
- export const PLAN_MODE_EXIT_NOTICE = '<system-notice>\n' +
29
- 'Plan Mode is now ' +
30
- 'OFF: the read-only restriction is lifted. You may again create and ' +
31
- 'modify files, run state-changing commands, and spawn write-capable subagents to execute ' +
32
- 'the plan.\n' +
33
- '</system-notice>';
34
- export const MENTOR_MODE_ENTER_NOTICE = '<system-notice>\n' +
35
- 'Mentor Mode is ON. Work collaboratively with the configured mentor model and follow the mentor workflow below.\n\n' +
36
- MENTOR_MODE_WORKFLOW +
37
- '\n</system-notice>';
38
- export const MENTOR_MODE_EXIT_NOTICE = '<system-notice>\n' +
39
- 'Mentor Mode is now OFF. Return to the normal workflow and do not treat the mentor-specific workflow as active.\n' +
40
- '</system-notice>';
41
- export const ORCHESTRATOR_MODE_ENTER_NOTICE = '<system-notice>\n' +
42
- 'Orchestrator Mode is ON. Follow the orchestrator workflow below while retaining end-to-end ownership of the user outcome.\n\n' +
43
- ORCHESTRATOR_MODE_WORKFLOW +
44
- '\n</system-notice>';
45
- export const ORCHESTRATOR_MODE_EXIT_NOTICE = '<system-notice>\n' +
46
- 'Orchestrator Mode is now OFF. Return to the normal workflow; you may work directly when appropriate instead of following orchestrator-only delegation policy.\n' +
47
- '</system-notice>';
48
- export const planModeNotice = (entering) => entering ? PLAN_MODE_ENTER_NOTICE : PLAN_MODE_EXIT_NOTICE;
49
- export const runtimeModeNotice = (mode, entering) => {
50
- if (mode === 'plan')
51
- return planModeNotice(entering);
52
- if (mode === 'mentor')
53
- return entering ? MENTOR_MODE_ENTER_NOTICE : MENTOR_MODE_EXIT_NOTICE;
54
- return entering ? ORCHESTRATOR_MODE_ENTER_NOTICE : ORCHESTRATOR_MODE_EXIT_NOTICE;
13
+ const NOTICE_PROFILE_IDS = new Set(['builtin:plan', 'builtin:mentor', 'builtin:orchestrator']);
14
+ const resolveNoticeProfile = (profile) => {
15
+ if (typeof profile !== 'string')
16
+ return profile;
17
+ if (!NOTICE_PROFILE_IDS.has(profile))
18
+ return null;
19
+ return resolveProfile(profile);
55
20
  };
56
- export function primeActiveModeNoticeIfActive(modes, queue) {
57
- if (modes.orchestratorMode)
58
- queue(ORCHESTRATOR_MODE_ENTER_NOTICE);
59
- else if (modes.planMode)
60
- queue(PLAN_MODE_ENTER_NOTICE);
61
- else if (modes.mentorMode)
62
- queue(MENTOR_MODE_ENTER_NOTICE);
21
+ const workflowText = (profile) => {
22
+ const workflow = profile.instructions.workflow;
23
+ return workflow?.kind === 'markdown' ? workflow.content : null;
24
+ };
25
+ export function profileEnterNotice(profile) {
26
+ const resolved = resolveNoticeProfile(profile);
27
+ if (!resolved)
28
+ return null;
29
+ const workflow = workflowText(resolved);
30
+ if (!workflow)
31
+ return null;
32
+ if (resolved.identity.id === 'builtin:plan')
33
+ return ('<system-notice>\n' +
34
+ 'Plan Mode is ON: the workspace is read-only. Do not create or modify files, run ' +
35
+ 'state-changing commands, or spawn write-capable subagents. Investigate with read-only ' +
36
+ 'tools and deliver a concrete, ordered implementation plan; tell the user to exit Plan ' +
37
+ 'Mode to execute it.\n\n' +
38
+ workflow +
39
+ '\n</system-notice>');
40
+ if (resolved.identity.id === 'builtin:mentor')
41
+ return ('<system-notice>\n' +
42
+ 'Mentor Mode is ON. Work collaboratively with the configured mentor model and follow the mentor workflow below.\n\n' +
43
+ workflow +
44
+ '\n</system-notice>');
45
+ if (resolved.identity.id === 'builtin:orchestrator')
46
+ return ('<system-notice>\n' +
47
+ 'Orchestrator Mode is ON. Follow the orchestrator workflow below while retaining end-to-end ownership of the user outcome.\n\n' +
48
+ workflow +
49
+ '\n</system-notice>');
50
+ return null;
51
+ }
52
+ export function profileExitNotice(profile) {
53
+ const resolved = resolveNoticeProfile(profile);
54
+ if (!resolved)
55
+ return null;
56
+ if (resolved.identity.id === 'builtin:plan')
57
+ return ('<system-notice>\n' +
58
+ 'Plan Mode is now ' +
59
+ 'OFF: the read-only restriction is lifted. You may again create and ' +
60
+ 'modify files, run state-changing commands, and spawn write-capable subagents to execute ' +
61
+ 'the plan.\n' +
62
+ '</system-notice>');
63
+ if (resolved.identity.id === 'builtin:mentor')
64
+ return ('<system-notice>\n' +
65
+ 'Mentor Mode is now OFF. Return to the normal workflow and do not treat the mentor-specific workflow as active.\n' +
66
+ '</system-notice>');
67
+ if (resolved.identity.id === 'builtin:orchestrator')
68
+ return ('<system-notice>\n' +
69
+ 'Orchestrator Mode is now OFF. Return to the normal workflow; you may work directly when appropriate instead of following orchestrator-only delegation policy.\n' +
70
+ '</system-notice>');
71
+ return null;
63
72
  }
64
- export function primePlanModeNoticeIfActive(planMode, queue) {
65
- primeActiveModeNoticeIfActive({ planMode }, queue);
73
+ // Keep the historical constants available to compatibility callers. Their
74
+ // content is produced through Profile resolution rather than a second prompt
75
+ // file-loading path in this module.
76
+ export const PLAN_MODE_ENTER_NOTICE = profileEnterNotice(resolveProfile('builtin:plan'));
77
+ export const PLAN_MODE_EXIT_NOTICE = profileExitNotice(resolveProfile('builtin:plan'));
78
+ export const MENTOR_MODE_ENTER_NOTICE = profileEnterNotice(resolveProfile('builtin:mentor'));
79
+ export const MENTOR_MODE_EXIT_NOTICE = profileExitNotice(resolveProfile('builtin:mentor'));
80
+ export const ORCHESTRATOR_MODE_ENTER_NOTICE = profileEnterNotice(resolveProfile('builtin:orchestrator'));
81
+ export const ORCHESTRATOR_MODE_EXIT_NOTICE = profileExitNotice(resolveProfile('builtin:orchestrator'));
82
+ /** Prime the active Profile's workflow once, without consulting legacy flags. */
83
+ export function primeActiveProfileNoticeIfActive(settingsService, queue) {
84
+ try {
85
+ const notice = profileEnterNotice(resolveActiveProfile(settingsService));
86
+ if (notice)
87
+ queue(notice);
88
+ }
89
+ catch (error) {
90
+ // Startup priming should not make an otherwise recoverable settings state
91
+ // unusable. Activation itself remains strict and reports this error.
92
+ if (!(error instanceof ProfileResolutionError))
93
+ throw error;
94
+ }
66
95
  }
67
96
  //# sourceMappingURL=mode-notices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mode-notices.js","sourceRoot":"","sources":["../../source/services/mode-notices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,EAAE;KAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACpF,IAAI,EAAE,CAAC;AACV,MAAM,oBAAoB,GAAG,EAAE;KAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC;KAClF,IAAI,EAAE,CAAC;AACV,MAAM,0BAA0B,GAAG,EAAE;KAClC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC;KAClF,IAAI,EAAE,CAAC;AAEV,MAAM,CAAC,MAAM,sBAAsB,GACjC,mBAAmB;IACnB,kFAAkF;IAClF,wFAAwF;IACxF,wFAAwF;IACxF,yBAAyB;IACzB,kBAAkB;IAClB,oBAAoB,CAAC;AAEvB,MAAM,CAAC,MAAM,qBAAqB,GAChC,mBAAmB;IACnB,mBAAmB;IACnB,qEAAqE;IACrE,0FAA0F;IAC1F,aAAa;IACb,kBAAkB,CAAC;AAErB,MAAM,CAAC,MAAM,wBAAwB,GACnC,mBAAmB;IACnB,oHAAoH;IACpH,oBAAoB;IACpB,oBAAoB,CAAC;AAEvB,MAAM,CAAC,MAAM,uBAAuB,GAClC,mBAAmB;IACnB,kHAAkH;IAClH,kBAAkB,CAAC;AAErB,MAAM,CAAC,MAAM,8BAA8B,GACzC,mBAAmB;IACnB,+HAA+H;IAC/H,0BAA0B;IAC1B,oBAAoB,CAAC;AAEvB,MAAM,CAAC,MAAM,6BAA6B,GACxC,mBAAmB;IACnB,iKAAiK;IACjK,kBAAkB,CAAC;AAErB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAiB,EAAU,EAAE,CAC1D,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAI5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAsC,EAAE,QAAiB,EAAU,EAAE;IACrG,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5F,OAAO,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,6BAA6B,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAC3C,KAA+E,EAC/E,KAA6B;IAE7B,IAAI,KAAK,CAAC,gBAAgB;QAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;SAC7D,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;SAClD,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAiB,EAAE,KAA6B;IAC1F,6BAA6B,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"mode-notices.js","sourceRoot":"","sources":["../../source/services/mode-notices.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,53 @@ export type ModelInfo = {
8
8
  /** Context window in tokens from the vendored model catalog, when known. */
9
9
  contextWindow?: number;
10
10
  };
11
- type FetchFn = typeof fetch;
12
- export declare function fetchModels(deps: {
11
+ export type DiskModelCacheEntry = {
12
+ version: 1;
13
+ provider: string;
14
+ timestamp: number;
15
+ models: ModelInfo[];
16
+ };
17
+ export declare const MODEL_CACHE_TTL_MS: number;
18
+ export declare const MODEL_CACHE_STALE_GRACE_MS: number;
19
+ export type FetchModelsDeps = {
13
20
  settingsService: ISettingsService;
14
21
  loggingService: ILoggingService;
15
22
  signal?: AbortSignal;
16
- }, providerOverride?: string, fetchImpl?: FetchFn): Promise<ModelInfo[]>;
17
- export declare function clearModelCache(provider?: string): void;
23
+ cacheDir?: string;
24
+ now?: () => number;
25
+ ttlMs?: number;
26
+ };
27
+ type FetchFn = typeof fetch;
28
+ export declare function setModelCacheDirForTest(dir: string | null): void;
29
+ export declare function setModelCacheClockForTest(clock: (() => number) | null): void;
30
+ export declare function clearModelMemoryCacheForTest(): void;
31
+ export declare function getModelCacheDir(customDir?: string): string;
32
+ export declare function getModelCacheFilePath(provider: string, customDir?: string): string;
33
+ /**
34
+ * Determines whether candidate models list represents a strict subset of previous models.
35
+ * An empty list or a list with strictly fewer models containing only IDs from previous is degraded.
36
+ */
37
+ export declare function isStrictSubsetModels(candidates: ModelInfo[], previous: ModelInfo[]): boolean;
38
+ /**
39
+ * Read-only peek at whatever model listing is already warm for a provider:
40
+ * the in-memory cache if still fresh, else a non-expired disk cache entry.
41
+ * Never fetches, and never populates, refreshes, or evicts either cache
42
+ * layer — a cold or expired cache costs nothing beyond a Map lookup and, on
43
+ * a miss, one `fs.existsSync` check. Intended for opportunistic
44
+ * cross-provider exact-match collision detection after a fast, single-
45
+ * provider resolution (see `resolveModelFlag`); deliberately not a
46
+ * substitute for `fetchModels`, which is the only thing allowed to touch
47
+ * the network or write the cache.
48
+ */
49
+ export declare function peekCachedModels(provider: string, opts?: {
50
+ cacheDir?: string;
51
+ now?: () => number;
52
+ ttlMs?: number;
53
+ }): ModelInfo[] | undefined;
54
+ export declare function fetchModels(deps: FetchModelsDeps, providerOverride?: string, fetchImpl?: FetchFn): Promise<ModelInfo[]>;
55
+ export declare function clearModelCache(provider?: string, opts?: {
56
+ cacheDir?: string;
57
+ }): void;
18
58
  export declare function getModelDefaultReasoningLevel(provider: string, modelId: string): string | undefined;
19
59
  /**
20
60
  * Effort to use for a provider when the user's `agent.reasoningEffort` is
@@ -22,6 +62,26 @@ export declare function getModelDefaultReasoningLevel(provider: string, modelId:
22
62
  * API choose", which for these providers means no reasoning at all.
23
63
  */
24
64
  export declare function getProviderDefaultReasoningLevel(provider: string): string | undefined;
65
+ export type ModelMatchRank = {
66
+ /** Weighted subsequence score (id matches are weighted 2x over name matches). */
67
+ score: number;
68
+ /** 0 = query is a literal prefix of the matched text; 1 = query occurs right after a
69
+ * word boundary (`/`, `.`, `-`, `_`, or a case change); 2 = plain subsequence match. */
70
+ tier: number;
71
+ };
72
+ /**
73
+ * Classify how strongly `query` matches `text`, independent of score magnitude.
74
+ * Used to rank id-prefix and word-boundary hits above a merely-plausible
75
+ * subsequence match, before falling back to the continuous score as a tiebreaker.
76
+ */
77
+ export declare function matchTier(query: string, text: string): number;
78
+ /**
79
+ * Score a model against a search query the way `filterModels` does internally
80
+ * (id matches weighted 2x over name matches, higher of the two wins), but
81
+ * surface the result instead of discarding it. Returns null when neither the
82
+ * id nor the name is a subsequence match.
83
+ */
84
+ export declare function rankModelMatch(model: ModelInfo, query: string): ModelMatchRank | null;
25
85
  export declare function filterModels(models: ModelInfo[], query: string): ModelInfo[];
26
86
  export {};
27
87
  //# sourceMappingURL=model-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-service.d.ts","sourceRoot":"","sources":["../../source/services/model-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;IACzF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC;AAI5B,wBAAsB,WAAW,CAC/B,IAAI,EAAE;IACJ,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,EAAE,eAAe,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,EACD,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC,CAgDtB;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnG;AAgBD;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAoB5E"}
1
+ {"version":3,"file":"model-service.d.ts","sourceRoot":"","sources":["../../source/services/model-service.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,244 @@
1
- import { scoreSubsequence } from '../utils/subsequence-filter.js';
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import envPaths from 'env-paths';
4
+ import { BOUNDARY_REGEX, scoreSubsequence } from '../utils/subsequence-filter.js';
2
5
  import { getProvider } from '../providers/index.js';
3
6
  import { getModelContextWindow } from '../providers/model-catalog/catalog.js';
7
+ export const MODEL_CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
8
+ export const MODEL_CACHE_STALE_GRACE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days fallback ceiling for last-known-good
4
9
  const cache = new Map();
10
+ let testCacheDir = null;
11
+ let testClock = null;
12
+ export function setModelCacheDirForTest(dir) {
13
+ testCacheDir = dir;
14
+ }
15
+ export function setModelCacheClockForTest(clock) {
16
+ testClock = clock;
17
+ }
18
+ export function clearModelMemoryCacheForTest() {
19
+ cache.clear();
20
+ }
21
+ export function getModelCacheDir(customDir) {
22
+ const baseDir = customDir || testCacheDir || process.env.TERM2_CACHE_DIR || envPaths('term2').cache;
23
+ return path.join(baseDir, 'models');
24
+ }
25
+ export function getModelCacheFilePath(provider, customDir) {
26
+ const safeName = provider.replace(/[^a-zA-Z0-9-]/g, (c) => `_${c.charCodeAt(0).toString(16).padStart(2, '0')}_`);
27
+ return path.join(getModelCacheDir(customDir), `${safeName}.json`);
28
+ }
29
+ /**
30
+ * Determines whether candidate models list represents a strict subset of previous models.
31
+ * An empty list or a list with strictly fewer models containing only IDs from previous is degraded.
32
+ */
33
+ export function isStrictSubsetModels(candidates, previous) {
34
+ if (previous.length === 0)
35
+ return false;
36
+ if (candidates.length === 0)
37
+ return true;
38
+ if (candidates.length >= previous.length)
39
+ return false;
40
+ const previousIds = new Set(previous.map((m) => m.id));
41
+ return candidates.every((m) => previousIds.has(m.id));
42
+ }
43
+ function readDiskCache(provider, cacheDir, nowFn, ttlMs = MODEL_CACHE_TTL_MS, loggingService) {
44
+ try {
45
+ const filePath = getModelCacheFilePath(provider, cacheDir);
46
+ if (!fs.existsSync(filePath)) {
47
+ return null;
48
+ }
49
+ const raw = fs.readFileSync(filePath, 'utf-8');
50
+ const parsed = JSON.parse(raw);
51
+ if (!parsed || typeof parsed !== 'object') {
52
+ return null;
53
+ }
54
+ if (parsed.version !== 1) {
55
+ return null;
56
+ }
57
+ if (parsed.provider !== provider) {
58
+ return null;
59
+ }
60
+ if (typeof parsed.timestamp !== 'number' || !Number.isFinite(parsed.timestamp)) {
61
+ return null;
62
+ }
63
+ const now = nowFn ?? testClock ?? Date.now;
64
+ const currentTime = now();
65
+ const age = currentTime - parsed.timestamp;
66
+ if (age < 0 || age >= ttlMs) {
67
+ return null;
68
+ }
69
+ if (!Array.isArray(parsed.models) || parsed.models.length === 0) {
70
+ return null;
71
+ }
72
+ for (const m of parsed.models) {
73
+ if (!m || typeof m !== 'object' || typeof m.id !== 'string') {
74
+ return null;
75
+ }
76
+ }
77
+ return parsed.models;
78
+ }
79
+ catch (error) {
80
+ loggingService?.debug?.('Failed to read model disk cache', { provider, error: String(error) });
81
+ return null;
82
+ }
83
+ }
84
+ /**
85
+ * Read-only peek at whatever model listing is already warm for a provider:
86
+ * the in-memory cache if still fresh, else a non-expired disk cache entry.
87
+ * Never fetches, and never populates, refreshes, or evicts either cache
88
+ * layer — a cold or expired cache costs nothing beyond a Map lookup and, on
89
+ * a miss, one `fs.existsSync` check. Intended for opportunistic
90
+ * cross-provider exact-match collision detection after a fast, single-
91
+ * provider resolution (see `resolveModelFlag`); deliberately not a
92
+ * substitute for `fetchModels`, which is the only thing allowed to touch
93
+ * the network or write the cache.
94
+ */
95
+ export function peekCachedModels(provider, opts) {
96
+ const now = opts?.now ?? testClock ?? Date.now;
97
+ const ttlMs = opts?.ttlMs ?? MODEL_CACHE_TTL_MS;
98
+ const memCached = cache.get(provider);
99
+ if (memCached) {
100
+ const age = now() - memCached.timestamp;
101
+ if (age >= 0 && age < ttlMs && memCached.models.length > 0) {
102
+ return memCached.models;
103
+ }
104
+ }
105
+ const diskCached = readDiskCache(provider, opts?.cacheDir, opts?.now, ttlMs);
106
+ return diskCached ?? undefined;
107
+ }
108
+ function writeDiskCache(provider, models, cacheDir, nowFn, loggingService) {
109
+ if (!models || models.length === 0) {
110
+ return;
111
+ }
112
+ const dir = getModelCacheDir(cacheDir);
113
+ const targetFile = getModelCacheFilePath(provider, cacheDir);
114
+ const baseName = path.basename(targetFile, '.json');
115
+ const tempFile = path.join(dir, `.${baseName}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`);
116
+ let tempCreated = false;
117
+ try {
118
+ fs.mkdirSync(dir, { recursive: true });
119
+ const now = nowFn ?? testClock ?? Date.now;
120
+ const payload = {
121
+ version: 1,
122
+ provider,
123
+ timestamp: now(),
124
+ models,
125
+ };
126
+ const content = JSON.stringify(payload);
127
+ const fd = fs.openSync(tempFile, 'wx');
128
+ tempCreated = true;
129
+ try {
130
+ fs.writeFileSync(fd, content, 'utf-8');
131
+ fs.fsyncSync(fd);
132
+ }
133
+ finally {
134
+ fs.closeSync(fd);
135
+ }
136
+ fs.renameSync(tempFile, targetFile);
137
+ tempCreated = false;
138
+ }
139
+ catch (error) {
140
+ loggingService?.warn('Failed to write model disk cache', { provider, error: String(error) });
141
+ }
142
+ finally {
143
+ if (tempCreated) {
144
+ try {
145
+ fs.unlinkSync(tempFile);
146
+ }
147
+ catch {
148
+ // Best-effort cleanup of temp file
149
+ }
150
+ }
151
+ }
152
+ }
5
153
  export async function fetchModels(deps, providerOverride, fetchImpl = fetch) {
6
154
  const { settingsService, loggingService } = deps;
7
155
  const provider = providerOverride || settingsService.get('agent.provider');
8
156
  const cacheKey = provider;
9
- if (cache.has(cacheKey)) {
10
- return cache.get(cacheKey);
157
+ const now = deps.now ?? testClock ?? Date.now;
158
+ const ttlMs = deps.ttlMs ?? MODEL_CACHE_TTL_MS;
159
+ // 1. In-memory cache hit
160
+ const memCached = cache.get(cacheKey);
161
+ if (memCached) {
162
+ const age = now() - memCached.timestamp;
163
+ if (age >= 0 && age < ttlMs && memCached.models.length > 0) {
164
+ return memCached.models;
165
+ }
166
+ cache.delete(cacheKey);
167
+ }
168
+ // 2. Disk cache hit
169
+ const diskCached = readDiskCache(provider, deps.cacheDir, deps.now, deps.ttlMs, loggingService);
170
+ if (diskCached && diskCached.length > 0) {
171
+ cache.set(cacheKey, { models: diskCached, timestamp: now() });
172
+ return diskCached;
11
173
  }
174
+ // 3. Cache miss: read previous disk cache within fallback grace period as last-known-good
175
+ const previous = readDiskCache(provider, deps.cacheDir, deps.now, MODEL_CACHE_STALE_GRACE_MS, loggingService);
176
+ const startTime = now();
12
177
  try {
13
178
  const providerDef = getProvider(provider);
14
179
  if (!providerDef) {
15
180
  throw new Error(`Provider '${provider}' is not registered`);
16
181
  }
17
182
  const rawModels = await providerDef.fetchModels({ settingsService, loggingService, signal: deps.signal }, fetchImpl);
18
- const models = rawModels.map((m) => ({
183
+ let models = rawModels.map((m) => ({
19
184
  ...m,
20
185
  provider,
21
186
  contextWindow: getModelContextWindow(provider, m.id),
22
187
  }));
23
- cache.set(cacheKey, models);
188
+ let isDegraded = previous !== null && previous.length > 0 && isStrictSubsetModels(models, previous);
189
+ if (isDegraded) {
190
+ loggingService.warn('Suspect degraded model list received from provider; attempting immediate retry', {
191
+ provider,
192
+ receivedCount: models.length,
193
+ previousCount: previous.length,
194
+ });
195
+ try {
196
+ const retryRaw = await providerDef.fetchModels({ settingsService, loggingService, signal: deps.signal }, fetchImpl);
197
+ const retryModels = retryRaw.map((m) => ({
198
+ ...m,
199
+ provider,
200
+ contextWindow: getModelContextWindow(provider, m.id),
201
+ }));
202
+ if (!isStrictSubsetModels(retryModels, previous)) {
203
+ models = retryModels;
204
+ isDegraded = false;
205
+ loggingService.info?.('Model listing recovered on retry', {
206
+ provider,
207
+ recoveredCount: models.length,
208
+ });
209
+ }
210
+ }
211
+ catch (retryError) {
212
+ loggingService.warn('Model listing retry failed', {
213
+ provider,
214
+ error: String(retryError),
215
+ });
216
+ }
217
+ }
218
+ if (isDegraded && previous && previous.length > 0) {
219
+ loggingService.warn('Provider returned degraded model list; preserving last-known-good catalog', {
220
+ provider,
221
+ receivedCount: models.length,
222
+ previousCount: previous.length,
223
+ });
224
+ // Do not write degraded models to disk cache.
225
+ // Retain expired disk cache file so subsequent sessions retry upstream.
226
+ cache.set(cacheKey, { models: previous, timestamp: now() });
227
+ return previous;
228
+ }
229
+ if (models.length > 0) {
230
+ cache.set(cacheKey, { models, timestamp: now() });
231
+ writeDiskCache(provider, models, deps.cacheDir, deps.now, loggingService);
232
+ }
233
+ else {
234
+ loggingService.warn('Provider returned empty model catalog; skipping disk cache write', { provider });
235
+ }
236
+ loggingService.debug?.('Fetched models from provider', {
237
+ provider,
238
+ count: models.length,
239
+ durationMs: now() - startTime,
240
+ degraded: isDegraded,
241
+ });
24
242
  return models;
25
243
  }
26
244
  catch (error) {
@@ -42,19 +260,51 @@ export async function fetchModels(deps, providerOverride, fetchImpl = fetch) {
42
260
  throw error;
43
261
  }
44
262
  }
45
- export function clearModelCache(provider) {
263
+ export function clearModelCache(provider, opts) {
46
264
  if (provider) {
47
265
  cache.delete(provider);
48
266
  }
49
267
  else {
50
268
  cache.clear();
51
269
  }
270
+ try {
271
+ const dir = getModelCacheDir(opts?.cacheDir);
272
+ if (provider) {
273
+ const targetFile = getModelCacheFilePath(provider, opts?.cacheDir);
274
+ if (fs.existsSync(targetFile)) {
275
+ try {
276
+ fs.unlinkSync(targetFile);
277
+ }
278
+ catch {
279
+ // ignore
280
+ }
281
+ }
282
+ }
283
+ else {
284
+ if (fs.existsSync(dir)) {
285
+ const files = fs.readdirSync(dir);
286
+ for (const file of files) {
287
+ if (file.endsWith('.json') || file.endsWith('.tmp')) {
288
+ try {
289
+ fs.unlinkSync(path.join(dir, file));
290
+ }
291
+ catch {
292
+ // ignore
293
+ }
294
+ }
295
+ }
296
+ }
297
+ }
298
+ }
299
+ catch {
300
+ // Disk cache clearing is best-effort and must not throw
301
+ }
52
302
  }
53
303
  export function getModelDefaultReasoningLevel(provider, modelId) {
54
- const models = cache.get(provider);
55
- if (!models)
304
+ const entry = cache.get(provider);
305
+ if (!entry)
56
306
  return undefined;
57
- const model = models.find((m) => m.id === modelId);
307
+ const model = entry.models.find((m) => m.id === modelId);
58
308
  return model?.default_reasoning_level;
59
309
  }
60
310
  // Providers that reason only when the request explicitly asks them to, and that
@@ -78,22 +328,54 @@ const PROVIDER_DEFAULT_REASONING_LEVEL = {
78
328
  export function getProviderDefaultReasoningLevel(provider) {
79
329
  return PROVIDER_DEFAULT_REASONING_LEVEL[provider.toLowerCase()];
80
330
  }
331
+ /**
332
+ * Classify how strongly `query` matches `text`, independent of score magnitude.
333
+ * Used to rank id-prefix and word-boundary hits above a merely-plausible
334
+ * subsequence match, before falling back to the continuous score as a tiebreaker.
335
+ */
336
+ export function matchTier(query, text) {
337
+ const q = query.toLowerCase();
338
+ const t = text.toLowerCase();
339
+ if (!q)
340
+ return 2;
341
+ if (t.startsWith(q))
342
+ return 0;
343
+ let idx = t.indexOf(q);
344
+ while (idx !== -1) {
345
+ const prevChar = idx > 0 ? t[idx - 1] : undefined;
346
+ if (prevChar !== undefined && BOUNDARY_REGEX.test(prevChar)) {
347
+ return 1;
348
+ }
349
+ idx = t.indexOf(q, idx + 1);
350
+ }
351
+ return 2;
352
+ }
353
+ /**
354
+ * Score a model against a search query the way `filterModels` does internally
355
+ * (id matches weighted 2x over name matches, higher of the two wins), but
356
+ * surface the result instead of discarding it. Returns null when neither the
357
+ * id nor the name is a subsequence match.
358
+ */
359
+ export function rankModelMatch(model, query) {
360
+ const idScore = scoreSubsequence(query, model.id);
361
+ const nameScore = model.name ? scoreSubsequence(query, model.name) : -Infinity;
362
+ // Reward ID match more than Name match
363
+ const weightedId = idScore === -Infinity ? -Infinity : idScore * 2;
364
+ const weightedName = nameScore === -Infinity ? -Infinity : nameScore;
365
+ if (weightedId === -Infinity && weightedName === -Infinity) {
366
+ return null;
367
+ }
368
+ const useId = weightedId >= weightedName;
369
+ return {
370
+ score: useId ? weightedId : weightedName,
371
+ tier: matchTier(query, useId ? model.id : model.name),
372
+ };
373
+ }
81
374
  export function filterModels(models, query) {
82
375
  const trimmed = query.trim();
83
376
  if (!trimmed) {
84
377
  return models;
85
378
  }
86
- return models
87
- .map((model) => {
88
- const idScore = scoreSubsequence(trimmed, model.id);
89
- const nameScore = model.name ? scoreSubsequence(trimmed, model.name) : -Infinity;
90
- // Reward ID match more than Name match
91
- const weightedId = idScore === -Infinity ? -Infinity : idScore * 2;
92
- const weightedName = nameScore === -Infinity ? -Infinity : nameScore;
93
- const score = Math.max(weightedId, weightedName);
94
- return { model, score };
95
- })
96
- .filter(({ score }) => score !== -Infinity)
97
- .map(({ model }) => model);
379
+ return models.filter((model) => rankModelMatch(model, trimmed) !== null);
98
380
  }
99
381
  //# sourceMappingURL=model-service.js.map