@qduc/term2 0.21.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 (656) hide show
  1. package/dist/agent.d.ts +2 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +32 -10
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +83 -6
  7. package/dist/app.js.map +1 -1
  8. package/dist/cli.js +84 -2
  9. package/dist/cli.js.map +1 -1
  10. package/dist/components/InputBox.js +2 -3
  11. package/dist/components/InputBox.js.map +1 -1
  12. package/dist/components/common/MenuContainer.d.ts +5 -0
  13. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  14. package/dist/components/common/MenuContainer.js +13 -3
  15. package/dist/components/common/MenuContainer.js.map +1 -1
  16. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  17. package/dist/components/input/MenuSurface.js +12 -2
  18. package/dist/components/input/MenuSurface.js.map +1 -1
  19. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  20. package/dist/components/input/ModelMenuSession.js +67 -16
  21. package/dist/components/input/ModelMenuSession.js.map +1 -1
  22. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
  23. package/dist/components/input/SettingsMenuSession.js +56 -17
  24. package/dist/components/input/SettingsMenuSession.js.map +1 -1
  25. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  26. package/dist/components/input/SettingsValueMenuSession.js +33 -3
  27. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  28. package/dist/components/input/menu-types.d.ts +1 -1
  29. package/dist/components/input/menu-types.d.ts.map +1 -1
  30. package/dist/components/input/triggers.js +2 -2
  31. package/dist/components/input/triggers.js.map +1 -1
  32. package/dist/components/layout/BackgroundTasksPanel.d.ts +0 -1
  33. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  34. package/dist/components/layout/BackgroundTasksPanel.js +4 -112
  35. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  36. package/dist/components/menu/ModelSelectionMenu.d.ts +10 -0
  37. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  38. package/dist/components/menu/ModelSelectionMenu.js +85 -16
  39. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  40. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
  41. package/dist/components/menu/ProfileSelectionMenu.js +5 -4
  42. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
  43. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  44. package/dist/components/menu/ResumeSelectionMenu.js +3 -5
  45. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  46. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  47. package/dist/components/menu/SettingsSelectionMenu.js +4 -32
  48. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  49. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  50. package/dist/components/menu/SettingsValueSelectionMenu.js +12 -5
  51. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  52. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  53. package/dist/components/menu/SkillSelectionMenu.js +3 -6
  54. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  55. package/dist/components/menu/SlashCommandMenu.d.ts +8 -0
  56. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  57. package/dist/components/menu/SlashCommandMenu.js +16 -6
  58. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  59. package/dist/components/menu/StandaloneModelPickerApp.d.ts +40 -0
  60. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -0
  61. package/dist/components/menu/StandaloneModelPickerApp.js +106 -0
  62. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -0
  63. package/dist/components/menu/settings-value-formatter.d.ts +11 -0
  64. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -0
  65. package/dist/components/menu/settings-value-formatter.js +214 -0
  66. package/dist/components/menu/settings-value-formatter.js.map +1 -0
  67. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  68. package/dist/components/message/CommandMessage.js +22 -17
  69. package/dist/components/message/CommandMessage.js.map +1 -1
  70. package/dist/components/message/MessageList.d.ts.map +1 -1
  71. package/dist/components/message/MessageList.js +13 -2
  72. package/dist/components/message/MessageList.js.map +1 -1
  73. package/dist/components/message/RunCodeRenderer.d.ts +16 -0
  74. package/dist/components/message/RunCodeRenderer.d.ts.map +1 -0
  75. package/dist/components/message/RunCodeRenderer.js +25 -0
  76. package/dist/components/message/RunCodeRenderer.js.map +1 -0
  77. package/dist/components/message/command-message-helpers.d.ts +30 -0
  78. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  79. package/dist/components/message/command-message-helpers.js +85 -0
  80. package/dist/components/message/command-message-helpers.js.map +1 -1
  81. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  82. package/dist/components/prompt/ApprovalPrompt.js +12 -21
  83. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  84. package/dist/components/theme.d.ts +1 -0
  85. package/dist/components/theme.d.ts.map +1 -1
  86. package/dist/components/theme.js +1 -0
  87. package/dist/components/theme.js.map +1 -1
  88. package/dist/contracts/streamed-model-turn.d.ts +6 -0
  89. package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
  90. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  91. package/dist/hooks/conversation-ui-reducer.js +5 -2
  92. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  93. package/dist/hooks/settings-completion-config.d.ts +1 -1
  94. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  95. package/dist/hooks/settings-completion-config.js +4 -122
  96. package/dist/hooks/settings-completion-config.js.map +1 -1
  97. package/dist/hooks/settings-completion-logic.d.ts +1 -1
  98. package/dist/hooks/settings-completion-logic.d.ts.map +1 -1
  99. package/dist/hooks/settings-completion-logic.js.map +1 -1
  100. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  101. package/dist/hooks/use-app-keyboard-shortcuts.js +33 -20
  102. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  103. package/dist/hooks/use-conversation.d.ts +3 -0
  104. package/dist/hooks/use-conversation.d.ts.map +1 -1
  105. package/dist/hooks/use-conversation.js +107 -16
  106. package/dist/hooks/use-conversation.js.map +1 -1
  107. package/dist/hooks/use-model-selection.d.ts +33 -4
  108. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  109. package/dist/hooks/use-model-selection.js +204 -114
  110. package/dist/hooks/use-model-selection.js.map +1 -1
  111. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  112. package/dist/hooks/use-settings-completion.js +1 -6
  113. package/dist/hooks/use-settings-completion.js.map +1 -1
  114. package/dist/hooks/use-settings-value-completion.d.ts +1 -8
  115. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  116. package/dist/hooks/use-settings-value-completion.js +10 -100
  117. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  118. package/dist/hooks/use-standalone-model-picker.d.ts +64 -0
  119. package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -0
  120. package/dist/hooks/use-standalone-model-picker.js +310 -0
  121. package/dist/hooks/use-standalone-model-picker.js.map +1 -0
  122. package/dist/lib/agent-client.d.ts +17 -1
  123. package/dist/lib/agent-client.d.ts.map +1 -1
  124. package/dist/lib/agent-client.js +173 -53
  125. package/dist/lib/agent-client.js.map +1 -1
  126. package/dist/lib/agent-configuration.d.ts +12 -3
  127. package/dist/lib/agent-configuration.d.ts.map +1 -1
  128. package/dist/lib/agent-configuration.js +26 -7
  129. package/dist/lib/agent-configuration.js.map +1 -1
  130. package/dist/lib/agent-factory.d.ts +3 -0
  131. package/dist/lib/agent-factory.d.ts.map +1 -1
  132. package/dist/lib/agent-factory.js +49 -7
  133. package/dist/lib/agent-factory.js.map +1 -1
  134. package/dist/lib/ask-user-answer-store.d.ts +1 -0
  135. package/dist/lib/ask-user-answer-store.d.ts.map +1 -1
  136. package/dist/lib/ask-user-answer-store.js +3 -0
  137. package/dist/lib/ask-user-answer-store.js.map +1 -1
  138. package/dist/lib/tool-invoke.d.ts +1 -0
  139. package/dist/lib/tool-invoke.d.ts.map +1 -1
  140. package/dist/lib/tool-invoke.js +1 -0
  141. package/dist/lib/tool-invoke.js.map +1 -1
  142. package/dist/non-interactive.d.ts +23 -0
  143. package/dist/non-interactive.d.ts.map +1 -1
  144. package/dist/non-interactive.js +225 -31
  145. package/dist/non-interactive.js.map +1 -1
  146. package/dist/prompts/background-shell.d.ts.map +1 -1
  147. package/dist/prompts/background-shell.js +4 -2
  148. package/dist/prompts/background-shell.js.map +1 -1
  149. package/dist/prompts/background-shell.ts +4 -2
  150. package/dist/prompts/codex.md +1 -3
  151. package/dist/prompts/fragments/gpt-6-astra.md +13 -0
  152. package/dist/prompts/gpt-5-modern.md +1 -3
  153. package/dist/prompts/gpt-5.4-mini.md +0 -2
  154. package/dist/prompts/gpt-5.5.md +0 -2
  155. package/dist/prompts/gpt-5.6.md +0 -1
  156. package/dist/prompts/lite.md +1 -6
  157. package/dist/prompts/memory.md +2 -2
  158. package/dist/prompts/orchestrator.md +4 -4
  159. package/dist/prompts/prompt-constructor.d.ts +2 -0
  160. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  161. package/dist/prompts/prompt-constructor.js +4 -2
  162. package/dist/prompts/prompt-constructor.js.map +1 -1
  163. package/dist/prompts/prompt-constructor.test.ts +178 -5
  164. package/dist/prompts/prompt-constructor.ts +7 -1
  165. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  166. package/dist/prompts/prompt-profiles.js +6 -0
  167. package/dist/prompts/prompt-profiles.js.map +1 -1
  168. package/dist/prompts/prompt-profiles.test.ts +6 -4
  169. package/dist/prompts/prompt-profiles.ts +6 -0
  170. package/dist/prompts/session-browser.md +4 -2
  171. package/dist/prompts/shell-auto-approval.d.ts +1 -1
  172. package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
  173. package/dist/prompts/shell-auto-approval.js +2 -2
  174. package/dist/prompts/shell-auto-approval.ts +2 -2
  175. package/dist/prompts/subagent-delegation.js +3 -3
  176. package/dist/prompts/subagent-delegation.js.map +1 -1
  177. package/dist/prompts/subagent-delegation.test.ts +3 -3
  178. package/dist/prompts/subagent-delegation.ts +3 -3
  179. package/dist/prompts/subagents/librarian.md +4 -4
  180. package/dist/prompts/subagents/worker-prompt.test.ts +7 -0
  181. package/dist/prompts/tool-surface-guidance.d.ts +4 -0
  182. package/dist/prompts/tool-surface-guidance.d.ts.map +1 -0
  183. package/dist/prompts/tool-surface-guidance.js +19 -0
  184. package/dist/prompts/tool-surface-guidance.js.map +1 -0
  185. package/dist/prompts/tool-surface-guidance.ts +20 -0
  186. package/dist/providers/codex-compact.d.ts +2 -0
  187. package/dist/providers/codex-compact.d.ts.map +1 -1
  188. package/dist/providers/codex-compact.js +14 -0
  189. package/dist/providers/codex-compact.js.map +1 -1
  190. package/dist/providers/codex-responses-model.d.ts +23 -3
  191. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  192. package/dist/providers/codex-responses-model.js +121 -33
  193. package/dist/providers/codex-responses-model.js.map +1 -1
  194. package/dist/providers/codex.provider.d.ts +2 -0
  195. package/dist/providers/codex.provider.d.ts.map +1 -1
  196. package/dist/providers/codex.provider.js +3 -2
  197. package/dist/providers/codex.provider.js.map +1 -1
  198. package/dist/providers/grok.provider.d.ts.map +1 -1
  199. package/dist/providers/grok.provider.js +5 -2
  200. package/dist/providers/grok.provider.js.map +1 -1
  201. package/dist/providers/model-catalog/catalog.generated.d.ts +453 -309
  202. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  203. package/dist/providers/model-catalog/catalog.generated.js +453 -309
  204. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  205. package/dist/providers/opencode-session.d.ts.map +1 -1
  206. package/dist/providers/opencode-session.js +5 -0
  207. package/dist/providers/opencode-session.js.map +1 -1
  208. package/dist/providers/openrouter.provider.js +8 -1
  209. package/dist/providers/openrouter.provider.js.map +1 -1
  210. package/dist/providers/responses-websocket-sessions.d.ts +10 -0
  211. package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
  212. package/dist/providers/responses-websocket-sessions.js +9 -4
  213. package/dist/providers/responses-websocket-sessions.js.map +1 -1
  214. package/dist/providers/retrying-model.d.ts +2 -1
  215. package/dist/providers/retrying-model.d.ts.map +1 -1
  216. package/dist/providers/retrying-model.js +3 -0
  217. package/dist/providers/retrying-model.js.map +1 -1
  218. package/dist/services/agent-runtime/application-run-loop.d.ts +8 -1
  219. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  220. package/dist/services/agent-runtime/application-run-loop.js +30 -6
  221. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  222. package/dist/services/agent-runtime/context-compaction/index.d.ts +2 -0
  223. package/dist/services/agent-runtime/context-compaction/index.d.ts.map +1 -1
  224. package/dist/services/agent-runtime/context-compaction/index.js +30 -4
  225. package/dist/services/agent-runtime/context-compaction/index.js.map +1 -1
  226. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +3 -0
  227. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
  228. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +15 -9
  229. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
  230. package/dist/services/agent-runtime/tool-invocation-context.d.ts +12 -0
  231. package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
  232. package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts +7 -1
  233. package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts.map +1 -1
  234. package/dist/services/agent-runtime/workflow/workflow-evaluator.js +78 -183
  235. package/dist/services/agent-runtime/workflow/workflow-evaluator.js.map +1 -1
  236. package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts +4 -3
  237. package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts.map +1 -1
  238. package/dist/services/agent-runtime/workflow/workflow-sandbox.js +9 -7
  239. package/dist/services/agent-runtime/workflow/workflow-sandbox.js.map +1 -1
  240. package/dist/services/agent-runtime/workflow/workflow-types.d.ts +1 -1
  241. package/dist/services/agent-runtime/workflow/workflow-types.d.ts.map +1 -1
  242. package/dist/services/agent-runtime/workflow/workflow-types.js.map +1 -1
  243. package/dist/services/approval/approval-decision-executor.d.ts +2 -1
  244. package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
  245. package/dist/services/approval/approval-decision-executor.js +22 -116
  246. package/dist/services/approval/approval-decision-executor.js.map +1 -1
  247. package/dist/services/approval/approval-descriptor.d.ts +10 -0
  248. package/dist/services/approval/approval-descriptor.d.ts.map +1 -0
  249. package/dist/services/approval/approval-descriptor.js +23 -0
  250. package/dist/services/approval/approval-descriptor.js.map +1 -0
  251. package/dist/services/approval/approval-flow-coordinator.d.ts +2 -1
  252. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  253. package/dist/services/approval/approval-flow-coordinator.js +2 -1
  254. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  255. package/dist/services/approval/approval-grant-executor.d.ts +25 -0
  256. package/dist/services/approval/approval-grant-executor.d.ts.map +1 -0
  257. package/dist/services/approval/approval-grant-executor.js +125 -0
  258. package/dist/services/approval/approval-grant-executor.js.map +1 -0
  259. package/dist/services/approval/background-subagent-approval-controller.d.ts +2 -1
  260. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  261. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  262. package/dist/services/approval/nested-approval-owner.d.ts +52 -0
  263. package/dist/services/approval/nested-approval-owner.d.ts.map +1 -0
  264. package/dist/services/approval/nested-approval-owner.js +194 -0
  265. package/dist/services/approval/nested-approval-owner.js.map +1 -0
  266. package/dist/services/approval/non-interactive-approval-policy.js +1 -1
  267. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  268. package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
  269. package/dist/services/approval/shell-auto-approval-evaluator.js +2 -4
  270. package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
  271. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  272. package/dist/services/approval/shell-auto-approval-resolver.js +4 -0
  273. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  274. package/dist/services/approval/tool-approval-batch-coordinator.d.ts +10 -3
  275. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  276. package/dist/services/approval/tool-approval-batch-coordinator.js +16 -5
  277. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  278. package/dist/services/approval/tool-approval-policy-registry.d.ts +13 -0
  279. package/dist/services/approval/tool-approval-policy-registry.d.ts.map +1 -1
  280. package/dist/services/approval/tool-approval-policy-registry.js +16 -1
  281. package/dist/services/approval/tool-approval-policy-registry.js.map +1 -1
  282. package/dist/services/conversation/conversation-adapter-factory.d.ts +3 -1
  283. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  284. package/dist/services/conversation/conversation-adapter-factory.js +3 -3
  285. package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
  286. package/dist/services/conversation/conversation-adapter.d.ts +3 -2
  287. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  288. package/dist/services/conversation/conversation-adapter.js +32 -23
  289. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  290. package/dist/services/conversation/conversation-orchestrator.d.ts +11 -0
  291. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  292. package/dist/services/conversation/conversation-orchestrator.js +65 -42
  293. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  294. package/dist/services/conversation/conversation-persistence.d.ts +6 -1
  295. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  296. package/dist/services/conversation/conversation-persistence.js +68 -19
  297. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  298. package/dist/services/conversation/conversation-result-builder.d.ts +3 -0
  299. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  300. package/dist/services/conversation/conversation-result-builder.js +27 -23
  301. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  302. package/dist/services/conversation/conversation-runtime-factory.d.ts +5 -0
  303. package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
  304. package/dist/services/conversation/conversation-runtime-factory.js +1 -0
  305. package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
  306. package/dist/services/conversation/conversation-service.d.ts +11 -1
  307. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  308. package/dist/services/conversation/conversation-service.js +68 -17
  309. package/dist/services/conversation/conversation-service.js.map +1 -1
  310. package/dist/services/conversation/session-browser.d.ts +34 -27
  311. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  312. package/dist/services/conversation/session-browser.js +221 -60
  313. package/dist/services/conversation/session-browser.js.map +1 -1
  314. package/dist/services/conversation/session-index/session-index-database.d.ts +138 -0
  315. package/dist/services/conversation/session-index/session-index-database.d.ts.map +1 -0
  316. package/dist/services/conversation/session-index/session-index-database.js +684 -0
  317. package/dist/services/conversation/session-index/session-index-database.js.map +1 -0
  318. package/dist/services/conversation/session-index/session-index-schema.d.ts +35 -0
  319. package/dist/services/conversation/session-index/session-index-schema.d.ts.map +1 -0
  320. package/dist/services/conversation/session-index/session-index-schema.js +156 -0
  321. package/dist/services/conversation/session-index/session-index-schema.js.map +1 -0
  322. package/dist/services/conversation/session-index/session-index-service.d.ts +30 -0
  323. package/dist/services/conversation/session-index/session-index-service.d.ts.map +1 -0
  324. package/dist/services/conversation/session-index/session-index-service.js +234 -0
  325. package/dist/services/conversation/session-index/session-index-service.js.map +1 -0
  326. package/dist/services/conversation/session-index/session-index-worker-client.d.ts +36 -0
  327. package/dist/services/conversation/session-index/session-index-worker-client.d.ts.map +1 -0
  328. package/dist/services/conversation/session-index/session-index-worker-client.js +143 -0
  329. package/dist/services/conversation/session-index/session-index-worker-client.js.map +1 -0
  330. package/dist/services/conversation/session-index/session-index-worker.d.ts +56 -0
  331. package/dist/services/conversation/session-index/session-index-worker.d.ts.map +1 -0
  332. package/dist/services/conversation/session-index/session-index-worker.js +96 -0
  333. package/dist/services/conversation/session-index/session-index-worker.js.map +1 -0
  334. package/dist/services/conversation/session-search-helpers.d.ts +4 -0
  335. package/dist/services/conversation/session-search-helpers.d.ts.map +1 -0
  336. package/dist/services/conversation/session-search-helpers.js +13 -0
  337. package/dist/services/conversation/session-search-helpers.js.map +1 -0
  338. package/dist/services/conversation-agent-client.d.ts +8 -0
  339. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  340. package/dist/services/execution-context.js +2 -2
  341. package/dist/services/execution-context.js.map +1 -1
  342. package/dist/services/hooks/hook-event-factory.d.ts +2 -1
  343. package/dist/services/hooks/hook-event-factory.d.ts.map +1 -1
  344. package/dist/services/hooks/hook-event-factory.js +2 -1
  345. package/dist/services/hooks/hook-event-factory.js.map +1 -1
  346. package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
  347. package/dist/services/logging/conversation-log-writer.js +50 -26
  348. package/dist/services/logging/conversation-log-writer.js.map +1 -1
  349. package/dist/services/logging/logging-service.d.ts.map +1 -1
  350. package/dist/services/logging/logging-service.js +1 -0
  351. package/dist/services/logging/logging-service.js.map +1 -1
  352. package/dist/services/logging/provider-traffic.d.ts +22 -2
  353. package/dist/services/logging/provider-traffic.d.ts.map +1 -1
  354. package/dist/services/logging/provider-traffic.js +147 -12
  355. package/dist/services/logging/provider-traffic.js.map +1 -1
  356. package/dist/services/model-service.d.ts +42 -0
  357. package/dist/services/model-service.d.ts.map +1 -1
  358. package/dist/services/model-service.js +161 -26
  359. package/dist/services/model-service.js.map +1 -1
  360. package/dist/services/models/model-catalog-session.d.ts.map +1 -1
  361. package/dist/services/models/model-catalog-session.js +11 -7
  362. package/dist/services/models/model-catalog-session.js.map +1 -1
  363. package/dist/services/models/model-favorites.d.ts +56 -0
  364. package/dist/services/models/model-favorites.d.ts.map +1 -0
  365. package/dist/services/models/model-favorites.js +93 -0
  366. package/dist/services/models/model-favorites.js.map +1 -0
  367. package/dist/services/models/model-listing.d.ts +40 -0
  368. package/dist/services/models/model-listing.d.ts.map +1 -1
  369. package/dist/services/models/model-listing.js +35 -2
  370. package/dist/services/models/model-listing.js.map +1 -1
  371. package/dist/services/models/model-nicknames.d.ts +113 -0
  372. package/dist/services/models/model-nicknames.d.ts.map +1 -0
  373. package/dist/services/models/model-nicknames.js +182 -0
  374. package/dist/services/models/model-nicknames.js.map +1 -0
  375. package/dist/services/models/model-picker-host.d.ts +72 -0
  376. package/dist/services/models/model-picker-host.d.ts.map +1 -0
  377. package/dist/services/models/model-picker-host.js +83 -0
  378. package/dist/services/models/model-picker-host.js.map +1 -0
  379. package/dist/services/models/model-resolution.d.ts +35 -3
  380. package/dist/services/models/model-resolution.d.ts.map +1 -1
  381. package/dist/services/models/model-resolution.js +276 -47
  382. package/dist/services/models/model-resolution.js.map +1 -1
  383. package/dist/services/models/reasoning-effort.d.ts +20 -0
  384. package/dist/services/models/reasoning-effort.d.ts.map +1 -0
  385. package/dist/services/models/reasoning-effort.js +28 -0
  386. package/dist/services/models/reasoning-effort.js.map +1 -0
  387. package/dist/services/models/unified-model-catalog.d.ts +4 -0
  388. package/dist/services/models/unified-model-catalog.d.ts.map +1 -0
  389. package/dist/services/models/unified-model-catalog.js +54 -0
  390. package/dist/services/models/unified-model-catalog.js.map +1 -0
  391. package/dist/services/retry/provider-failure-classification.d.ts +16 -0
  392. package/dist/services/retry/provider-failure-classification.d.ts.map +1 -1
  393. package/dist/services/retry/provider-failure-classification.js +45 -0
  394. package/dist/services/retry/provider-failure-classification.js.map +1 -1
  395. package/dist/services/retry/retry-recovery-budget.d.ts +26 -1
  396. package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -1
  397. package/dist/services/retry/retry-recovery-budget.js +33 -1
  398. package/dist/services/retry/retry-recovery-budget.js.map +1 -1
  399. package/dist/services/sandboxed-code-host/host-types.d.ts +135 -0
  400. package/dist/services/sandboxed-code-host/host-types.d.ts.map +1 -0
  401. package/dist/services/sandboxed-code-host/host-types.js +6 -0
  402. package/dist/services/sandboxed-code-host/host-types.js.map +1 -0
  403. package/dist/services/sandboxed-code-host/host-worker.d.ts +9 -0
  404. package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -0
  405. package/dist/services/sandboxed-code-host/host-worker.js +351 -0
  406. package/dist/services/sandboxed-code-host/host-worker.js.map +1 -0
  407. package/dist/services/sandboxed-code-host/sandbox.d.ts +16 -0
  408. package/dist/services/sandboxed-code-host/sandbox.d.ts.map +1 -0
  409. package/dist/services/sandboxed-code-host/sandbox.js +21 -0
  410. package/dist/services/sandboxed-code-host/sandbox.js.map +1 -0
  411. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts +17 -0
  412. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts.map +1 -0
  413. package/dist/services/sandboxed-code-host/sandboxed-code-host.js +347 -0
  414. package/dist/services/sandboxed-code-host/sandboxed-code-host.js.map +1 -0
  415. package/dist/services/service-interfaces.d.ts +32 -0
  416. package/dist/services/service-interfaces.d.ts.map +1 -1
  417. package/dist/services/session/background-task-control.d.ts +3 -1
  418. package/dist/services/session/background-task-control.d.ts.map +1 -1
  419. package/dist/services/session/background-task-control.js +4 -0
  420. package/dist/services/session/background-task-control.js.map +1 -1
  421. package/dist/services/session/continuation-plan-applier.d.ts +2 -1
  422. package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
  423. package/dist/services/session/continuation-plan-applier.js.map +1 -1
  424. package/dist/services/session/continuation-recovery-handler.d.ts +2 -1
  425. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  426. package/dist/services/session/continuation-recovery-handler.js +49 -5
  427. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  428. package/dist/services/session/initial-input-preparer.d.ts +2 -1
  429. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  430. package/dist/services/session/initial-input-preparer.js +2 -1
  431. package/dist/services/session/initial-input-preparer.js.map +1 -1
  432. package/dist/services/session/initial-turn-recovery-handler.d.ts +2 -1
  433. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  434. package/dist/services/session/initial-turn-recovery-handler.js +51 -16
  435. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  436. package/dist/services/session/post-execute-pending-registry.d.ts +2 -1
  437. package/dist/services/session/post-execute-pending-registry.d.ts.map +1 -1
  438. package/dist/services/session/post-execute-pending-registry.js +3 -2
  439. package/dist/services/session/post-execute-pending-registry.js.map +1 -1
  440. package/dist/services/session/session-client-factory.d.ts +4 -0
  441. package/dist/services/session/session-client-factory.d.ts.map +1 -1
  442. package/dist/services/session/session-client-factory.js +12 -4
  443. package/dist/services/session/session-client-factory.js.map +1 -1
  444. package/dist/services/session/session-composition.d.ts +26 -2
  445. package/dist/services/session/session-composition.d.ts.map +1 -1
  446. package/dist/services/session/session-composition.js +97 -18
  447. package/dist/services/session/session-composition.js.map +1 -1
  448. package/dist/services/session/session-continuity-reset.d.ts +2 -1
  449. package/dist/services/session/session-continuity-reset.d.ts.map +1 -1
  450. package/dist/services/session/session-continuity-reset.js +5 -2
  451. package/dist/services/session/session-continuity-reset.js.map +1 -1
  452. package/dist/services/session/session-identity.d.ts +20 -0
  453. package/dist/services/session/session-identity.d.ts.map +1 -0
  454. package/dist/services/session/session-identity.js +43 -0
  455. package/dist/services/session/session-identity.js.map +1 -0
  456. package/dist/services/session/session-lifecycle.d.ts +5 -1
  457. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  458. package/dist/services/session/session-lifecycle.js +5 -1
  459. package/dist/services/session/session-lifecycle.js.map +1 -1
  460. package/dist/services/session/session-stream-processor.d.ts +2 -1
  461. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  462. package/dist/services/session/session-stream-processor.js +5 -4
  463. package/dist/services/session/session-stream-processor.js.map +1 -1
  464. package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
  465. package/dist/services/session/test-helpers/conversation-session-fixtures.js +14 -9
  466. package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
  467. package/dist/services/session/turn-coordinator.d.ts +2 -1
  468. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  469. package/dist/services/session/turn-coordinator.js +3 -0
  470. package/dist/services/session/turn-coordinator.js.map +1 -1
  471. package/dist/services/session/turn-workflow.d.ts +4 -1
  472. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  473. package/dist/services/session/turn-workflow.js +58 -21
  474. package/dist/services/session/turn-workflow.js.map +1 -1
  475. package/dist/services/session-rollover/session-rollover-brief.d.ts +8 -1
  476. package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
  477. package/dist/services/session-rollover/session-rollover-brief.js +14 -1
  478. package/dist/services/session-rollover/session-rollover-brief.js.map +1 -1
  479. package/dist/services/settings/setting-schema-utils.d.ts +2 -0
  480. package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
  481. package/dist/services/settings/setting-schema-utils.js +15 -27
  482. package/dist/services/settings/setting-schema-utils.js.map +1 -1
  483. package/dist/services/settings/settings-schema.d.ts +8 -0
  484. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  485. package/dist/services/settings/settings-schema.js +23 -6
  486. package/dist/services/settings/settings-schema.js.map +1 -1
  487. package/dist/services/settings/settings-sources.d.ts +207 -0
  488. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  489. package/dist/services/settings/settings-sources.js +48 -1
  490. package/dist/services/settings/settings-sources.js.map +1 -1
  491. package/dist/services/settings/settings-ui-metadata.d.ts +27 -0
  492. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -0
  493. package/dist/services/settings/settings-ui-metadata.js +283 -0
  494. package/dist/services/settings/settings-ui-metadata.js.map +1 -0
  495. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +10 -0
  496. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  497. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +46 -0
  498. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  499. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  500. package/dist/services/subagents/execution-runner.js +8 -0
  501. package/dist/services/subagents/execution-runner.js.map +1 -1
  502. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  503. package/dist/services/subagents/role-loader.js +4 -0
  504. package/dist/services/subagents/role-loader.js.map +1 -1
  505. package/dist/services/subagents/subagent-client-types.d.ts +7 -0
  506. package/dist/services/subagents/subagent-client-types.d.ts.map +1 -1
  507. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  508. package/dist/services/subagents/subagent-manager.js +4 -1
  509. package/dist/services/subagents/subagent-manager.js.map +1 -1
  510. package/dist/services/subagents/subagent-notification-store.d.ts +2 -0
  511. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  512. package/dist/services/subagents/subagent-notification-store.js +4 -0
  513. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  514. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
  515. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +2 -1
  516. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
  517. package/dist/services/subagents/tool-policy.d.ts +8 -0
  518. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  519. package/dist/services/subagents/tool-policy.js +289 -41
  520. package/dist/services/subagents/tool-policy.js.map +1 -1
  521. package/dist/services/subagents/types.d.ts +2 -1
  522. package/dist/services/subagents/types.d.ts.map +1 -1
  523. package/dist/services/subagents/types.js.map +1 -1
  524. package/dist/test-helpers/conversation-session-with-adapter.d.ts +1 -1
  525. package/dist/test-helpers/conversation-session-with-adapter.d.ts.map +1 -1
  526. package/dist/test-helpers/conversation-session-with-adapter.js +6 -1
  527. package/dist/test-helpers/conversation-session-with-adapter.js.map +1 -1
  528. package/dist/test-helpers/vitest-cache-isolation.d.ts +2 -0
  529. package/dist/test-helpers/vitest-cache-isolation.d.ts.map +1 -0
  530. package/dist/test-helpers/vitest-cache-isolation.js +17 -0
  531. package/dist/test-helpers/vitest-cache-isolation.js.map +1 -0
  532. package/dist/tools/agent/activate-skill.d.ts.map +1 -1
  533. package/dist/tools/agent/activate-skill.js +1 -0
  534. package/dist/tools/agent/activate-skill.js.map +1 -1
  535. package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -1
  536. package/dist/tools/agent/configure-task-check-in.js +1 -0
  537. package/dist/tools/agent/configure-task-check-in.js.map +1 -1
  538. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  539. package/dist/tools/agent/run-subagent-async.js +16 -12
  540. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  541. package/dist/tools/file/apply-patch.d.ts.map +1 -1
  542. package/dist/tools/file/apply-patch.js +9 -11
  543. package/dist/tools/file/apply-patch.js.map +1 -1
  544. package/dist/tools/file/code-context.d.ts.map +1 -1
  545. package/dist/tools/file/code-context.js +40 -5
  546. package/dist/tools/file/code-context.js.map +1 -1
  547. package/dist/tools/file/create-file.d.ts.map +1 -1
  548. package/dist/tools/file/create-file.js +13 -8
  549. package/dist/tools/file/create-file.js.map +1 -1
  550. package/dist/tools/file/glob.d.ts.map +1 -1
  551. package/dist/tools/file/glob.js +49 -11
  552. package/dist/tools/file/glob.js.map +1 -1
  553. package/dist/tools/file/grep.d.ts.map +1 -1
  554. package/dist/tools/file/grep.js +32 -8
  555. package/dist/tools/file/grep.js.map +1 -1
  556. package/dist/tools/file/read-file.d.ts.map +1 -1
  557. package/dist/tools/file/read-file.js +109 -6
  558. package/dist/tools/file/read-file.js.map +1 -1
  559. package/dist/tools/file/search-replace.js +4 -4
  560. package/dist/tools/file/search-replace.js.map +1 -1
  561. package/dist/tools/file/upstream-apply-patch.d.ts.map +1 -1
  562. package/dist/tools/file/upstream-apply-patch.js +4 -1
  563. package/dist/tools/file/upstream-apply-patch.js.map +1 -1
  564. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  565. package/dist/tools/memory/memory-tools.js +19 -1
  566. package/dist/tools/memory/memory-tools.js.map +1 -1
  567. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -1
  568. package/dist/tools/session-browser/session-browser-tools.js +24 -8
  569. package/dist/tools/session-browser/session-browser-tools.js.map +1 -1
  570. package/dist/tools/session-rollover/session-rollover-tool.d.ts.map +1 -1
  571. package/dist/tools/session-rollover/session-rollover-tool.js +8 -2
  572. package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -1
  573. package/dist/tools/system/run-code/index.d.ts +2 -0
  574. package/dist/tools/system/run-code/index.d.ts.map +1 -0
  575. package/dist/tools/system/run-code/index.js +2 -0
  576. package/dist/tools/system/run-code/index.js.map +1 -0
  577. package/dist/tools/system/run-code/run-code-telemetry.d.ts +92 -0
  578. package/dist/tools/system/run-code/run-code-telemetry.d.ts.map +1 -0
  579. package/dist/tools/system/run-code/run-code-telemetry.js +189 -0
  580. package/dist/tools/system/run-code/run-code-telemetry.js.map +1 -0
  581. package/dist/tools/system/run-code/run-code.d.ts +98 -0
  582. package/dist/tools/system/run-code/run-code.d.ts.map +1 -0
  583. package/dist/tools/system/run-code/run-code.js +1078 -0
  584. package/dist/tools/system/run-code/run-code.js.map +1 -0
  585. package/dist/tools/system/run-code/tools-header.d.ts +25 -0
  586. package/dist/tools/system/run-code/tools-header.d.ts.map +1 -0
  587. package/dist/tools/system/run-code/tools-header.js +136 -0
  588. package/dist/tools/system/run-code/tools-header.js.map +1 -0
  589. package/dist/tools/system/shell.d.ts.map +1 -1
  590. package/dist/tools/system/shell.js +58 -9
  591. package/dist/tools/system/shell.js.map +1 -1
  592. package/dist/tools/system/worktree.js +2 -2
  593. package/dist/tools/system/worktree.js.map +1 -1
  594. package/dist/tools/types.d.ts +24 -0
  595. package/dist/tools/types.d.ts.map +1 -1
  596. package/dist/tools/types.js.map +1 -1
  597. package/dist/tools/utils.d.ts +10 -0
  598. package/dist/tools/utils.d.ts.map +1 -1
  599. package/dist/tools/utils.js +13 -0
  600. package/dist/tools/utils.js.map +1 -1
  601. package/dist/tools/web/web-fetch.d.ts.map +1 -1
  602. package/dist/tools/web/web-fetch.js +14 -6
  603. package/dist/tools/web/web-fetch.js.map +1 -1
  604. package/dist/tools/web/web-search.d.ts.map +1 -1
  605. package/dist/tools/web/web-search.js +2 -1
  606. package/dist/tools/web/web-search.js.map +1 -1
  607. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  608. package/dist/utils/ai/model-settings.js +0 -47
  609. package/dist/utils/ai/model-settings.js.map +1 -1
  610. package/dist/utils/conversation/apply-conversation-result.d.ts.map +1 -1
  611. package/dist/utils/conversation/apply-conversation-result.js +13 -0
  612. package/dist/utils/conversation/apply-conversation-result.js.map +1 -1
  613. package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
  614. package/dist/utils/conversation/conversation-utils.js +14 -0
  615. package/dist/utils/conversation/conversation-utils.js.map +1 -1
  616. package/dist/utils/output/bound-tool-result.d.ts +23 -0
  617. package/dist/utils/output/bound-tool-result.d.ts.map +1 -1
  618. package/dist/utils/output/bound-tool-result.js +27 -0
  619. package/dist/utils/output/bound-tool-result.js.map +1 -1
  620. package/dist/utils/settings-command.d.ts +8 -0
  621. package/dist/utils/settings-command.d.ts.map +1 -1
  622. package/dist/utils/settings-command.js +45 -30
  623. package/dist/utils/settings-command.js.map +1 -1
  624. package/dist/utils/shell/execute-shell.d.ts +18 -0
  625. package/dist/utils/shell/execute-shell.d.ts.map +1 -1
  626. package/dist/utils/shell/execute-shell.js +48 -6
  627. package/dist/utils/shell/execute-shell.js.map +1 -1
  628. package/dist/utils/shell/shell-output.d.ts +7 -1
  629. package/dist/utils/shell/shell-output.d.ts.map +1 -1
  630. package/dist/utils/shell/shell-output.js +37 -7
  631. package/dist/utils/shell/shell-output.js.map +1 -1
  632. package/dist/utils/streaming/streaming-session-factory.d.ts +9 -0
  633. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  634. package/dist/utils/streaming/streaming-session-factory.js +1 -1
  635. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  636. package/dist/utils/tool-args-display.d.ts +21 -0
  637. package/dist/utils/tool-args-display.d.ts.map +1 -0
  638. package/dist/utils/tool-args-display.js +34 -0
  639. package/dist/utils/tool-args-display.js.map +1 -0
  640. package/dist/utils/value-suggestions.d.ts +4 -10
  641. package/dist/utils/value-suggestions.d.ts.map +1 -1
  642. package/dist/utils/value-suggestions.js +77 -144
  643. package/dist/utils/value-suggestions.js.map +1 -1
  644. package/dist/utils/worker-bootstrap.d.ts +3 -0
  645. package/dist/utils/worker-bootstrap.d.ts.map +1 -0
  646. package/dist/utils/worker-bootstrap.js +7 -0
  647. package/dist/utils/worker-bootstrap.js.map +1 -0
  648. package/dist/utils/worker-cwd-preload.cjs +23 -0
  649. package/dist/utils/worker-cwd-preload.cjs.map +1 -0
  650. package/dist/utils/worker-cwd-preload.d.cts +2 -0
  651. package/dist/utils/worker-cwd-preload.d.cts.map +1 -0
  652. package/package.json +5 -2
  653. package/dist/services/agent-runtime/workflow/workflow-worker.d.ts +0 -4
  654. package/dist/services/agent-runtime/workflow/workflow-worker.d.ts.map +0 -1
  655. package/dist/services/agent-runtime/workflow/workflow-worker.js +0 -55
  656. package/dist/services/agent-runtime/workflow/workflow-worker.js.map +0 -1
@@ -0,0 +1,182 @@
1
+ import { parseFavoriteEntry, serializeFavorite, FAVORITES_TAB_ID } from './model-favorites.js';
2
+ import { stripReasoningEffortSuffix } from './reasoning-effort.js';
3
+ /**
4
+ * Nicknames are typed as CLI values (`-m <nickname>`) and rendered inline in
5
+ * the picker, so they are restricted to an identifier shape: letters, digits,
6
+ * hyphens, and underscores, starting with a letter or digit.
7
+ *
8
+ * Deliberately excluded, each for a concrete reason:
9
+ * - '/' — a slash in a --model flag parses as a provider prefix, and the
10
+ * stored target already uses first-slash splitting (see model-favorites.ts);
11
+ * - ':' — a trailing ":<effort>" parses as a reasoning-effort suffix;
12
+ * - whitespace, quotes, and shell metacharacters — the value is typed as a
13
+ * CLI argument and must stay shell-safe;
14
+ * - a leading '-' — meow would parse `-m -op` as an unknown flag;
15
+ * - '.' — keeps a nickname visibly distinct from dotted model ids, the shape
16
+ * it must never be confused with.
17
+ */
18
+ export const NICKNAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
19
+ /** Generous ceiling; nicknames exist to be shorter than the ids they replace. */
20
+ export const NICKNAME_MAX_LENGTH = 64;
21
+ /**
22
+ * Parses one persisted target entry ("provider/modelId" with an optional
23
+ * trailing ":<effort>"). Splitting on the FIRST '/' reuses model-favorites'
24
+ * helper because it solved this exact serialization problem: provider ids can
25
+ * never contain '/', but a model id can (e.g. OpenRouter's
26
+ * `anthropic/claude-3.5-sonnet`). Returns null for malformed entries so a
27
+ * hand-edited settings file degrades to "fewer nicknames" instead of crashing
28
+ * resolution or the picker.
29
+ */
30
+ export function parseNicknameTargetEntry(raw) {
31
+ const { value, reasoningEffort } = stripReasoningEffortSuffix(raw);
32
+ const parsed = parseFavoriteEntry(value);
33
+ if (!parsed)
34
+ return null;
35
+ return reasoningEffort ? { ...parsed, reasoningEffort } : parsed;
36
+ }
37
+ /** Serializes a target back to its persisted "provider/modelId[:effort]" form. */
38
+ export function serializeNicknameTarget(target) {
39
+ const base = serializeFavorite(target.provider, target.modelId);
40
+ return target.reasoningEffort ? base + ':' + target.reasoningEffort : base;
41
+ }
42
+ /**
43
+ * Reads and parses `agent.modelNicknames`, silently dropping malformed
44
+ * entries and keeping only the first of case-insensitive duplicate names (a
45
+ * JSON object cannot hold duplicate keys, but a case-duplicate pair can be
46
+ * hand-edited in; dropping keeps every lookup unambiguous).
47
+ */
48
+ export function getNicknameEntries(settingsService) {
49
+ const raw = settingsService.get('agent.modelNicknames');
50
+ if (raw === null || raw === undefined || typeof raw !== 'object' || Array.isArray(raw))
51
+ return [];
52
+ const entries = [];
53
+ const seenLower = new Set();
54
+ for (const [nickname, target] of Object.entries(raw)) {
55
+ if (typeof target !== 'string')
56
+ continue;
57
+ if (!NICKNAME_PATTERN.test(nickname))
58
+ continue;
59
+ const lower = nickname.toLowerCase();
60
+ if (seenLower.has(lower))
61
+ continue;
62
+ const parsed = parseNicknameTargetEntry(target);
63
+ if (!parsed)
64
+ continue;
65
+ seenLower.add(lower);
66
+ entries.push({ nickname, ...parsed });
67
+ }
68
+ return entries;
69
+ }
70
+ /**
71
+ * Nickname labels keyed by serialized model identity (`provider/modelId`),
72
+ * for rendering existing nicknames on picker rows.
73
+ */
74
+ export function getNicknameLabels(settingsService) {
75
+ const labels = new Map();
76
+ for (const entry of getNicknameEntries(settingsService)) {
77
+ labels.set(serializeFavorite(entry.provider, entry.modelId), entry.nickname);
78
+ }
79
+ return labels;
80
+ }
81
+ /**
82
+ * Validates a nickname name against the ambiguity rules:
83
+ * - identifier shape (see NICKNAME_PATTERN) and bounded length;
84
+ * - never the reserved Favorites pseudo-provider sentinel;
85
+ * - never equal to a registered provider id (checked case-insensitively) —
86
+ * `-m <provider>` means "match that provider", and a nickname must not
87
+ * shadow that reading;
88
+ * - unique among the other nicknames (case-insensitively) — two names that
89
+ * differ only by case would make lookup order-dependent.
90
+ *
91
+ * Callers that are renaming pass `existingNicknames` already minus the name
92
+ * being replaced. Collisions with real model ids are NOT rejected here
93
+ * (detecting them needs a catalog, unavailable offline); precedence at
94
+ * resolution time — exact nickname wins, the real id stays reachable as
95
+ * `provider/id` — covers that case instead.
96
+ */
97
+ export function validateNicknameName(rawNickname, options = {}) {
98
+ const nickname = rawNickname.trim();
99
+ if (!nickname)
100
+ return { ok: false, error: 'Nickname cannot be empty.' };
101
+ if (nickname.length > NICKNAME_MAX_LENGTH) {
102
+ return { ok: false, error: 'Nickname must be at most ' + NICKNAME_MAX_LENGTH + ' characters.' };
103
+ }
104
+ if (!NICKNAME_PATTERN.test(nickname)) {
105
+ return {
106
+ ok: false,
107
+ error: 'Nicknames may only contain letters, numbers, hyphens, and underscores, and must start with a letter or number.',
108
+ };
109
+ }
110
+ if (nickname.toLowerCase() === FAVORITES_TAB_ID.toLowerCase()) {
111
+ return { ok: false, error: '"' + nickname + '" is a reserved name.' };
112
+ }
113
+ const lower = nickname.toLowerCase();
114
+ if (options.providerIds?.some((providerId) => providerId.toLowerCase() === lower)) {
115
+ return { ok: false, error: '"' + nickname + '" is already a provider name.' };
116
+ }
117
+ if (options.existingNicknames?.some((existing) => existing.toLowerCase() === lower)) {
118
+ return { ok: false, error: 'Nickname "' + nickname + '" is already in use.' };
119
+ }
120
+ return { ok: true, nickname };
121
+ }
122
+ /**
123
+ * Validates and persists one nickname -> target mapping. Rejected input
124
+ * returns the reason and writes nothing, so an editor can keep the user in
125
+ * place. Renaming (the target already mapped under another name) removes the
126
+ * old key; re-pointing a name at a new target just overwrites it. Committing
127
+ * an unchanged mapping writes nothing.
128
+ */
129
+ export function setNicknameTarget(settingsService, rawNickname, target, options = {}) {
130
+ const entries = getNicknameEntries(settingsService);
131
+ const existingForTarget = entries.find((entry) => entry.provider.toLowerCase() === target.provider.toLowerCase() && entry.modelId === target.modelId);
132
+ const lower = rawNickname.trim().toLowerCase();
133
+ const validation = validateNicknameName(rawNickname, {
134
+ providerIds: options.providerIds,
135
+ // Only the entry being renamed away is exempt; every other live name —
136
+ // including a case-different variant — is a conflict. Re-pointing a name
137
+ // at a different model is deliberately NOT an operation here: silently
138
+ // stealing another model's nickname is never what a typo-ing user wants,
139
+ // and a lookup keyed case-insensitively could not tell them apart anyway.
140
+ existingNicknames: entries.filter((entry) => entry !== existingForTarget).map((entry) => entry.nickname),
141
+ });
142
+ if (!validation.ok)
143
+ return validation;
144
+ const nickname = validation.nickname;
145
+ const serialized = serializeNicknameTarget(target);
146
+ if (existingForTarget &&
147
+ existingForTarget.nickname === nickname &&
148
+ serializeNicknameTarget(existingForTarget) === serialized) {
149
+ return { ok: true };
150
+ }
151
+ const next = {};
152
+ for (const entry of entries) {
153
+ if (existingForTarget && entry.nickname === existingForTarget.nickname)
154
+ continue;
155
+ if (entry.nickname.toLowerCase() === lower)
156
+ continue;
157
+ next[entry.nickname] = serializeNicknameTarget(entry);
158
+ }
159
+ next[nickname] = serialized;
160
+ settingsService.setPersistent('agent.modelNicknames', next);
161
+ return { ok: true };
162
+ }
163
+ /**
164
+ * Exact, case-insensitive nickname lookup for the --model fast path.
165
+ * `providerScope` (an explicit --provider or a provider prefix parsed from
166
+ * the flag) narrows eligibility to targets on that provider: the user named a
167
+ * provider, so a nickname homed elsewhere must not hijack the flag.
168
+ * `knownProviders` excludes hand-edited nicknames equal to a registered
169
+ * provider id, which creation-time validation would have rejected.
170
+ */
171
+ export function findNicknameMatch(settingsService, pattern, options) {
172
+ const trimmed = pattern.trim();
173
+ if (!trimmed)
174
+ return undefined;
175
+ const patternLower = trimmed.toLowerCase();
176
+ const scope = options?.providerScope?.toLowerCase();
177
+ const providerNamed = new Set((options?.knownProviders ?? []).map((providerId) => providerId.toLowerCase()));
178
+ return getNicknameEntries(settingsService).find((entry) => entry.nickname.toLowerCase() === patternLower &&
179
+ (!scope || entry.provider.toLowerCase() === scope) &&
180
+ !providerNamed.has(entry.nickname.toLowerCase()));
181
+ }
182
+ //# sourceMappingURL=model-nicknames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-nicknames.js","sourceRoot":"","sources":["../../../source/services/models/model-nicknames.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type StandaloneModelPickerOutcome } from '../../components/menu/StandaloneModelPickerApp.js';
2
+ import type { ILoggingService } from '../service-interfaces.js';
3
+ import type { SettingsService } from '../settings/settings-service.js';
4
+ import type { ModelFetcher } from './model-catalog-session.js';
5
+ export type ModelPickerHostResult = StandaloneModelPickerOutcome;
6
+ type TtyStreamLike = {
7
+ isTTY?: boolean;
8
+ };
9
+ export type ModelPickerHostStreams = {
10
+ stdin?: NodeJS.ReadStream;
11
+ stdout?: NodeJS.WriteStream;
12
+ stderr?: NodeJS.WriteStream;
13
+ };
14
+ /**
15
+ * `--model` resolves before the interactive app renders (see cli.tsx), so
16
+ * this is the only place in the boot sequence that can ever need to mount an
17
+ * Ink tree ahead of `App`. This guard, and `isModelPickerEligible` below, are
18
+ * the single source of truth for "may this process ever mount the picker" —
19
+ * cli.tsx calls them instead of re-deriving the TTY/mode checks inline, so
20
+ * the "never mount Ink for a non-interactive run" rule lives in one tested
21
+ * place.
22
+ */
23
+ export declare function isModelPickerHostSupported(streams?: {
24
+ stdin?: TtyStreamLike;
25
+ stdout?: TtyStreamLike;
26
+ }): boolean;
27
+ /**
28
+ * Full eligibility for offering the interactive picker anywhere in the
29
+ * `--model` flow (ambiguous match, no match, or no value): a real TTY on
30
+ * both ends, no positional prompt (non-interactive run), no `--json`, and no
31
+ * isolated-harness marker. Every one of these must independently block the
32
+ * picker; a session that fails any of them keeps today's non-interactive
33
+ * behavior (readline disambiguation, hard errors, or silent passthrough)
34
+ * untouched.
35
+ */
36
+ export declare function isModelPickerEligible(opts: {
37
+ stdin?: TtyStreamLike;
38
+ stdout?: TtyStreamLike;
39
+ hasPositionalPrompt: boolean;
40
+ json: boolean;
41
+ harnessIdle: boolean;
42
+ }): boolean;
43
+ export type ModelPickerHostOptions = ModelPickerHostStreams & {
44
+ settingsService: SettingsService;
45
+ loggingService: ILoggingService;
46
+ modelFetcher?: ModelFetcher;
47
+ /** Filter query the menu opens with (e.g. the pattern typed after --model). */
48
+ initialQuery?: string;
49
+ /** Provider whose catalog should be prioritized (e.g. where the top-ranked match lives). */
50
+ initialProvider?: string;
51
+ /** When set (an explicit --provider), search is scoped to this provider. */
52
+ lockProvider?: string;
53
+ /** One-line explanations shown above the menu (e.g. "No models match ..."). */
54
+ bannerLines?: string[];
55
+ };
56
+ /**
57
+ * Mounts the standalone model picker, waits for a selection or cancellation,
58
+ * and unmounts before returning — a short-lived Ink render ahead of the main
59
+ * app's own `render()` call in cli.tsx. Never mounts without a real TTY on
60
+ * both ends (`isModelPickerHostSupported`), returning `cancelled` instead.
61
+ *
62
+ * Teardown is Ink's own normal app-exit path: `StandaloneModelPickerApp`
63
+ * calls `useApp().exit()` exactly once (via `onDone`), which runs Ink's
64
+ * `unmount()` synchronously (raw mode, the resize listener, and the cursor
65
+ * are restored by Ink itself) before `waitUntilExit()` resolves. Ink keys its
66
+ * one live renderer per stdout object and deletes that entry on unmount, so
67
+ * a later `render()` call against the same stdout (the main app's) creates a
68
+ * fresh instance rather than colliding with this one.
69
+ */
70
+ export declare function runModelPickerHost(options: ModelPickerHostOptions): Promise<ModelPickerHostResult>;
71
+ export {};
72
+ //# sourceMappingURL=model-picker-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-picker-host.d.ts","sourceRoot":"","sources":["../../../source/services/models/model-picker-host.tsx"],"names":[],"mappings":"AAEA,OAAiC,EAC/B,KAAK,4BAA4B,EAClC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAEjE,KAAK,aAAa,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAO,GAAG,OAAO,CAInH;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAOV;AAED,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmDxG"}
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import { render } from 'ink';
3
+ import StandaloneModelPickerApp from '../../components/menu/StandaloneModelPickerApp.js';
4
+ /**
5
+ * `--model` resolves before the interactive app renders (see cli.tsx), so
6
+ * this is the only place in the boot sequence that can ever need to mount an
7
+ * Ink tree ahead of `App`. This guard, and `isModelPickerEligible` below, are
8
+ * the single source of truth for "may this process ever mount the picker" —
9
+ * cli.tsx calls them instead of re-deriving the TTY/mode checks inline, so
10
+ * the "never mount Ink for a non-interactive run" rule lives in one tested
11
+ * place.
12
+ */
13
+ export function isModelPickerHostSupported(streams = {}) {
14
+ const stdin = streams.stdin ?? process.stdin;
15
+ const stdout = streams.stdout ?? process.stdout;
16
+ return Boolean(stdin.isTTY) && Boolean(stdout.isTTY);
17
+ }
18
+ /**
19
+ * Full eligibility for offering the interactive picker anywhere in the
20
+ * `--model` flow (ambiguous match, no match, or no value): a real TTY on
21
+ * both ends, no positional prompt (non-interactive run), no `--json`, and no
22
+ * isolated-harness marker. Every one of these must independently block the
23
+ * picker; a session that fails any of them keeps today's non-interactive
24
+ * behavior (readline disambiguation, hard errors, or silent passthrough)
25
+ * untouched.
26
+ */
27
+ export function isModelPickerEligible(opts) {
28
+ return (isModelPickerHostSupported({ stdin: opts.stdin, stdout: opts.stdout }) &&
29
+ !opts.hasPositionalPrompt &&
30
+ !opts.json &&
31
+ !opts.harnessIdle);
32
+ }
33
+ /**
34
+ * Mounts the standalone model picker, waits for a selection or cancellation,
35
+ * and unmounts before returning — a short-lived Ink render ahead of the main
36
+ * app's own `render()` call in cli.tsx. Never mounts without a real TTY on
37
+ * both ends (`isModelPickerHostSupported`), returning `cancelled` instead.
38
+ *
39
+ * Teardown is Ink's own normal app-exit path: `StandaloneModelPickerApp`
40
+ * calls `useApp().exit()` exactly once (via `onDone`), which runs Ink's
41
+ * `unmount()` synchronously (raw mode, the resize listener, and the cursor
42
+ * are restored by Ink itself) before `waitUntilExit()` resolves. Ink keys its
43
+ * one live renderer per stdout object and deletes that entry on unmount, so
44
+ * a later `render()` call against the same stdout (the main app's) creates a
45
+ * fresh instance rather than colliding with this one.
46
+ */
47
+ export async function runModelPickerHost(options) {
48
+ const stdin = options.stdin ?? process.stdin;
49
+ const stdout = options.stdout ?? process.stdout;
50
+ const stderr = options.stderr ?? process.stderr;
51
+ if (!isModelPickerHostSupported({ stdin, stdout })) {
52
+ return { status: 'cancelled' };
53
+ }
54
+ let outcome = { status: 'cancelled' };
55
+ const { waitUntilExit } = render(React.createElement(StandaloneModelPickerApp, { settingsService: options.settingsService, loggingService: options.loggingService, modelFetcher: options.modelFetcher, initialQuery: options.initialQuery, initialProvider: options.initialProvider, lockProvider: options.lockProvider, bannerLines: options.bannerLines, onDone: (result) => {
56
+ outcome = result;
57
+ } }), {
58
+ stdin,
59
+ stdout,
60
+ stderr,
61
+ // Interactive by construction: the guard above already requires a real
62
+ // TTY on both ends, which is what interactivity actually needs. Ink's
63
+ // own default is `!is-in-ci && stdout.isTTY`, and CI detection wins
64
+ // even over a TTY (see node_modules/ink/build/ink.js
65
+ // `resolveInteractiveOption`). Left to that default, a run with `CI` set
66
+ // renders no frame at all while the menu is up — it defers output and
67
+ // writes only the final frame at unmount — so the picker the user is
68
+ // choosing from never appears. Note this is not test-only: the same
69
+ // shape (a PTY under a CI-marked environment) is why the provider
70
+ // black-box harness deletes `CI` from its child env.
71
+ interactive: true,
72
+ // The picker never writes to `console` itself, and nothing else logs
73
+ // while it is mounted, so Ink's own console patch/restore machinery
74
+ // (there to keep stray console output from corrupting the frame) has
75
+ // nothing to do here. Skipping it also sidesteps a real fragility:
76
+ // Ink's patch assumes a constructible `console.Console`, which some
77
+ // test/runtime consoles do not provide.
78
+ patchConsole: false,
79
+ });
80
+ await waitUntilExit();
81
+ return outcome;
82
+ }
83
+ //# sourceMappingURL=model-picker-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-picker-host.js","sourceRoot":"","sources":["../../../source/services/models/model-picker-host.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,wBAEN,MAAM,mDAAmD,CAAC;AAe3D;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAO,GAAsD,EAAE;IACxG,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAMrC;IACC,OAAO,CACL,0BAA0B,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACtE,CAAC,IAAI,CAAC,mBAAmB;QACzB,CAAC,IAAI,CAAC,IAAI;QACV,CAAC,IAAI,CAAC,WAAW,CAClB,CAAC;AACJ,CAAC;AAgBD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA+B;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAEhD,IAAI,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,GAAiC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAEpE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,oBAAC,wBAAwB,IACvB,eAAe,EAAE,OAAO,CAAC,eAAe,EACxC,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,eAAe,EAAE,OAAO,CAAC,eAAe,EACxC,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC,GACD,EACF;QACE,KAAK;QACL,MAAM;QACN,MAAM;QACN,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,qDAAqD;QACrD,yEAAyE;QACzE,sEAAsE;QACtE,qEAAqE;QACrE,oEAAoE;QACpE,kEAAkE;QAClE,qDAAqD;QACrD,WAAW,EAAE,IAAI;QACjB,qEAAqE;QACrE,oEAAoE;QACpE,qEAAqE;QACrE,mEAAmE;QACnE,oEAAoE;QACpE,wCAAwC;QACxC,YAAY,EAAE,KAAK;KACpB,CACF,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { type ModelInfo } from '../model-service.js';
2
2
  import type { ILoggingService, ISettingsService } from '../service-interfaces.js';
3
3
  import { type ProviderModelGroup } from './model-listing.js';
4
- import type { ModelFetcher } from './model-catalog-session.js';
5
- export declare const VALID_REASONING_EFFORTS: readonly ['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'];
6
- export type ModelSettingsReasoningEffort = (typeof VALID_REASONING_EFFORTS)[number];
4
+ import { type ModelFetcher } from './model-catalog-session.js';
5
+ import { type ModelSettingsReasoningEffort } from './reasoning-effort.js';
6
+ export { VALID_REASONING_EFFORTS, type ModelSettingsReasoningEffort } from './reasoning-effort.js';
7
7
  export type ParsedModelFlag = {
8
8
  provider?: string;
9
9
  pattern: string;
@@ -14,6 +14,36 @@ export type ModelMatch = {
14
14
  provider: string;
15
15
  model: ModelInfo;
16
16
  };
17
+ export type InteractivePickerSelection = {
18
+ modelId: string;
19
+ provider: string;
20
+ };
21
+ export type InteractivePickerRequest = {
22
+ /** Filter query the picker opens with (the stripped, provider/suffix-free pattern). */
23
+ initialQuery: string;
24
+ /**
25
+ * Provider tab the picker should open on: the provider of the top-ranked
26
+ * match, so the seeded query actually matches in the catalog the picker
27
+ * is prioritized in the unified catalog.
28
+ */
29
+ initialProvider?: string;
30
+ /** Set when --provider (or a parsed provider prefix) narrows permanently; locks the tab. */
31
+ lockProvider?: string;
32
+ /** One-line explanations shown above the menu (e.g. why nothing matched). */
33
+ bannerLines?: string[];
34
+ };
35
+ /**
36
+ * Opens the interactive model picker and resolves to the chosen model, or
37
+ * `null` on cancellation. Callers wire this to `runModelPickerHost`
38
+ * (source/services/models/model-picker-host.tsx); tests can supply a stub.
39
+ * When supplied, it REPLACES the readline-based `promptForDisambiguation`
40
+ * fallback for ambiguous matches, and replaces the hard `no_match` error with
41
+ * an interactive re-search seeded with the same query. It must only ever be
42
+ * supplied by a caller that has already confirmed an interactive session
43
+ * (real TTY, no positional prompt, no --json, no isolated-harness marker) —
44
+ * this module does not re-derive that eligibility itself.
45
+ */
46
+ export type InteractivePicker = (request: InteractivePickerRequest) => Promise<InteractivePickerSelection | null>;
17
47
  export type ModelResolutionResult = {
18
48
  status: 'resolved';
19
49
  modelId: string;
@@ -84,5 +114,7 @@ export declare function resolveModelFlag(deps: {
84
114
  };
85
115
  knownProviders?: string[];
86
116
  providerIds?: string[];
117
+ /** See `InteractivePicker`. Only ever set by a confirmed-interactive caller. */
118
+ interactivePicker?: InteractivePicker;
87
119
  }): Promise<ModelResolutionResult>;
88
120
  //# sourceMappingURL=model-resolution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolution.d.ts","sourceRoot":"","sources":["../../../source/services/models/model-resolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-resolution.d.ts","sourceRoot":"","sources":["../../../source/services/models/model-resolution.ts"],"names":[],"mappings":"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"}