@qduc/term2 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/README.md +324 -316
  2. package/dist/agent.d.ts +3 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +15 -63
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app.d.ts +1 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +129 -19
  9. package/dist/app.js.map +1 -1
  10. package/dist/cli.js +25 -16
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/compact-command.d.ts.map +1 -1
  13. package/dist/commands/compact-command.js +4 -0
  14. package/dist/commands/compact-command.js.map +1 -1
  15. package/dist/commands/effort-command.js +1 -1
  16. package/dist/commands/effort-command.js.map +1 -1
  17. package/dist/commands/guarded-settings-command.d.ts.map +1 -1
  18. package/dist/commands/guarded-settings-command.js +4 -8
  19. package/dist/commands/guarded-settings-command.js.map +1 -1
  20. package/dist/commands/model-command.js +1 -1
  21. package/dist/commands/model-command.js.map +1 -1
  22. package/dist/commands/resume-command.d.ts +10 -0
  23. package/dist/commands/resume-command.d.ts.map +1 -0
  24. package/dist/commands/resume-command.js +40 -0
  25. package/dist/commands/resume-command.js.map +1 -0
  26. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  27. package/dist/components/ErrorBoundary.js +5 -4
  28. package/dist/components/ErrorBoundary.js.map +1 -1
  29. package/dist/components/InputBox.d.ts +2 -0
  30. package/dist/components/InputBox.d.ts.map +1 -1
  31. package/dist/components/InputBox.js +56 -18
  32. package/dist/components/InputBox.js.map +1 -1
  33. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  34. package/dist/components/MarkdownRenderer.js +16 -15
  35. package/dist/components/MarkdownRenderer.js.map +1 -1
  36. package/dist/components/common/MenuContainer.d.ts +25 -2
  37. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  38. package/dist/components/common/MenuContainer.js +35 -11
  39. package/dist/components/common/MenuContainer.js.map +1 -1
  40. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  41. package/dist/components/common/ScrollableTabBar.js +5 -4
  42. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  43. package/dist/components/input/ApplicationInputSurface.d.ts +4 -5
  44. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  45. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  46. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  47. package/dist/components/input/FirstRunSetupPrompt.js +5 -4
  48. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  49. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  50. package/dist/components/input/MenuSurface.js +10 -3
  51. package/dist/components/input/MenuSurface.js.map +1 -1
  52. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  53. package/dist/components/input/ModelMenuSession.js +2 -1
  54. package/dist/components/input/ModelMenuSession.js.map +1 -1
  55. package/dist/components/input/PendingQueueList.d.ts +2 -0
  56. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  57. package/dist/components/input/PendingQueueList.js +17 -14
  58. package/dist/components/input/PendingQueueList.js.map +1 -1
  59. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  60. package/dist/components/input/SettingsValueMenuSession.js +2 -1
  61. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  62. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  63. package/dist/components/layout/BackgroundTaskManager.js +12 -11
  64. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  65. package/dist/components/layout/BackgroundTasksPanel.d.ts +2 -2
  66. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  67. package/dist/components/layout/BackgroundTasksPanel.js +10 -9
  68. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  69. package/dist/components/layout/Banner.d.ts +0 -1
  70. package/dist/components/layout/Banner.d.ts.map +1 -1
  71. package/dist/components/layout/Banner.js +43 -73
  72. package/dist/components/layout/Banner.js.map +1 -1
  73. package/dist/components/layout/BottomArea.d.ts +6 -5
  74. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  75. package/dist/components/layout/BottomArea.js +17 -9
  76. package/dist/components/layout/BottomArea.js.map +1 -1
  77. package/dist/components/layout/DiffView.js +5 -5
  78. package/dist/components/layout/DiffView.js.map +1 -1
  79. package/dist/components/layout/StatusBar.d.ts +4 -1
  80. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  81. package/dist/components/layout/StatusBar.js +305 -95
  82. package/dist/components/layout/StatusBar.js.map +1 -1
  83. package/dist/components/layout/background-task-clock.d.ts +43 -0
  84. package/dist/components/layout/background-task-clock.d.ts.map +1 -0
  85. package/dist/components/layout/background-task-clock.js +46 -0
  86. package/dist/components/layout/background-task-clock.js.map +1 -0
  87. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  88. package/dist/components/menu/CopyMenu.js +4 -3
  89. package/dist/components/menu/CopyMenu.js.map +1 -1
  90. package/dist/components/menu/MentorPoolSelectionMenu.d.ts.map +1 -1
  91. package/dist/components/menu/MentorPoolSelectionMenu.js +28 -21
  92. package/dist/components/menu/MentorPoolSelectionMenu.js.map +1 -1
  93. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  94. package/dist/components/menu/ModelSelectionMenu.js +26 -13
  95. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  96. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  97. package/dist/components/menu/PathSelectionMenu.js +4 -3
  98. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  99. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  100. package/dist/components/menu/ProviderSelectionMenu.js +46 -26
  101. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  102. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  103. package/dist/components/menu/RewindMenu.js +4 -3
  104. package/dist/components/menu/RewindMenu.js.map +1 -1
  105. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  106. package/dist/components/menu/SettingsSelectionMenu.js +26 -26
  107. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  108. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  109. package/dist/components/menu/SettingsValueSelectionMenu.js +22 -20
  110. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  111. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  112. package/dist/components/menu/SkillSelectionMenu.js +33 -23
  113. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  114. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  115. package/dist/components/menu/SlashCommandMenu.js +11 -6
  116. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  117. package/dist/components/message/ChatMessage.js +2 -2
  118. package/dist/components/message/ChatMessage.js.map +1 -1
  119. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  120. package/dist/components/message/CodeContextSearchRenderer.js +8 -11
  121. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  122. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
  123. package/dist/components/message/CommandGroupSummary.js +15 -7
  124. package/dist/components/message/CommandGroupSummary.js.map +1 -1
  125. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  126. package/dist/components/message/CommandMessage.js +111 -91
  127. package/dist/components/message/CommandMessage.js.map +1 -1
  128. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  129. package/dist/components/message/GrepRenderer.js +5 -8
  130. package/dist/components/message/GrepRenderer.js.map +1 -1
  131. package/dist/components/message/MemoryRenderer.d.ts +1 -0
  132. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  133. package/dist/components/message/MemoryRenderer.js +19 -17
  134. package/dist/components/message/MemoryRenderer.js.map +1 -1
  135. package/dist/components/message/MessageList.d.ts +1 -2
  136. package/dist/components/message/MessageList.d.ts.map +1 -1
  137. package/dist/components/message/MessageList.js +12 -11
  138. package/dist/components/message/MessageList.js.map +1 -1
  139. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  140. package/dist/components/message/ReadFileRenderer.js +5 -6
  141. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  142. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  143. package/dist/components/message/SubagentActivityMessage.js +17 -13
  144. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  145. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  146. package/dist/components/message/WebFetchRenderer.js +7 -11
  147. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  148. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  149. package/dist/components/message/WebSearchRenderer.js +5 -10
  150. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  151. package/dist/components/message/command-grouping.d.ts +29 -6
  152. package/dist/components/message/command-grouping.d.ts.map +1 -1
  153. package/dist/components/message/command-grouping.js +62 -20
  154. package/dist/components/message/command-grouping.js.map +1 -1
  155. package/dist/components/message/command-message-helpers.d.ts +5 -32
  156. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  157. package/dist/components/message/command-message-helpers.js +26 -8
  158. package/dist/components/message/command-message-helpers.js.map +1 -1
  159. package/dist/components/message/useCommandVisibility.d.ts.map +1 -1
  160. package/dist/components/message/useCommandVisibility.js +5 -4
  161. package/dist/components/message/useCommandVisibility.js.map +1 -1
  162. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  163. package/dist/components/prompt/ApprovalPrompt.js +190 -106
  164. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  165. package/dist/components/prompt/HandoffConfirmationPrompt.d.ts.map +1 -1
  166. package/dist/components/prompt/HandoffConfirmationPrompt.js +3 -2
  167. package/dist/components/prompt/HandoffConfirmationPrompt.js.map +1 -1
  168. package/dist/components/prompt/InputSurgeConfirmationPrompt.d.ts.map +1 -1
  169. package/dist/components/prompt/InputSurgeConfirmationPrompt.js +5 -4
  170. package/dist/components/prompt/InputSurgeConfirmationPrompt.js.map +1 -1
  171. package/dist/components/prompt/LargeUncachedConfirmationPrompt.d.ts.map +1 -1
  172. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js +4 -3
  173. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js.map +1 -1
  174. package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts.map +1 -1
  175. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +4 -3
  176. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -1
  177. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  178. package/dist/components/prompt/QueuePausedPrompt.js +6 -5
  179. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  180. package/dist/components/prompt/StandardModeConfirmationPrompt.d.ts.map +1 -1
  181. package/dist/components/prompt/StandardModeConfirmationPrompt.js +3 -2
  182. package/dist/components/prompt/StandardModeConfirmationPrompt.js.map +1 -1
  183. package/dist/components/theme.d.ts +58 -3
  184. package/dist/components/theme.d.ts.map +1 -1
  185. package/dist/components/theme.js +84 -17
  186. package/dist/components/theme.js.map +1 -1
  187. package/dist/contracts/application-stream.d.ts +14 -0
  188. package/dist/contracts/application-stream.d.ts.map +1 -1
  189. package/dist/gateway/assertion.d.ts +4 -1
  190. package/dist/gateway/assertion.d.ts.map +1 -1
  191. package/dist/gateway/assertion.js +24 -2
  192. package/dist/gateway/assertion.js.map +1 -1
  193. package/dist/gateway/contracts.d.ts +21 -4
  194. package/dist/gateway/contracts.d.ts.map +1 -1
  195. package/dist/gateway/contracts.js +11 -0
  196. package/dist/gateway/contracts.js.map +1 -1
  197. package/dist/gateway/dynamic-workspace-registry.d.ts +76 -0
  198. package/dist/gateway/dynamic-workspace-registry.d.ts.map +1 -0
  199. package/dist/gateway/dynamic-workspace-registry.js +403 -0
  200. package/dist/gateway/dynamic-workspace-registry.js.map +1 -0
  201. package/dist/gateway/gateway.d.ts +24 -1
  202. package/dist/gateway/gateway.d.ts.map +1 -1
  203. package/dist/gateway/gateway.js +704 -21
  204. package/dist/gateway/gateway.js.map +1 -1
  205. package/dist/gateway/launcher-seam.d.ts +18 -0
  206. package/dist/gateway/launcher-seam.d.ts.map +1 -0
  207. package/dist/gateway/launcher-seam.js +43 -0
  208. package/dist/gateway/launcher-seam.js.map +1 -0
  209. package/dist/gateway/pairing.d.ts +25 -0
  210. package/dist/gateway/pairing.d.ts.map +1 -0
  211. package/dist/gateway/pairing.js +107 -0
  212. package/dist/gateway/pairing.js.map +1 -0
  213. package/dist/gateway/persistence/coordinator.d.ts +2 -0
  214. package/dist/gateway/persistence/coordinator.d.ts.map +1 -1
  215. package/dist/gateway/persistence/coordinator.js +13 -0
  216. package/dist/gateway/persistence/coordinator.js.map +1 -1
  217. package/dist/gateway/runtime-factory.d.ts +15 -6
  218. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  219. package/dist/gateway/runtime-factory.js +38 -9
  220. package/dist/gateway/runtime-factory.js.map +1 -1
  221. package/dist/gateway/safe-log.d.ts.map +1 -1
  222. package/dist/gateway/safe-log.js +19 -0
  223. package/dist/gateway/safe-log.js.map +1 -1
  224. package/dist/gateway/server-session.d.ts.map +1 -1
  225. package/dist/gateway/server-session.js +36 -4
  226. package/dist/gateway/server-session.js.map +1 -1
  227. package/dist/gateway/server.d.ts +26 -3
  228. package/dist/gateway/server.d.ts.map +1 -1
  229. package/dist/gateway/server.js +105 -17
  230. package/dist/gateway/server.js.map +1 -1
  231. package/dist/gateway/settings-rpc.d.ts +95 -0
  232. package/dist/gateway/settings-rpc.d.ts.map +1 -0
  233. package/dist/gateway/settings-rpc.js +227 -0
  234. package/dist/gateway/settings-rpc.js.map +1 -0
  235. package/dist/gateway/trusted-clients.d.ts +27 -0
  236. package/dist/gateway/trusted-clients.d.ts.map +1 -0
  237. package/dist/gateway/trusted-clients.js +157 -0
  238. package/dist/gateway/trusted-clients.js.map +1 -0
  239. package/dist/gateway/worker-boundary.d.ts +6 -5
  240. package/dist/gateway/worker-boundary.d.ts.map +1 -1
  241. package/dist/gateway/worker-boundary.js +20 -10
  242. package/dist/gateway/worker-boundary.js.map +1 -1
  243. package/dist/gateway/workspace-admission.d.ts +11 -0
  244. package/dist/gateway/workspace-admission.d.ts.map +1 -1
  245. package/dist/gateway/workspace-admission.js +89 -16
  246. package/dist/gateway/workspace-admission.js.map +1 -1
  247. package/dist/gateway/workspace-boundary-probe.d.ts +18 -0
  248. package/dist/gateway/workspace-boundary-probe.d.ts.map +1 -0
  249. package/dist/gateway/workspace-boundary-probe.js +37 -0
  250. package/dist/gateway/workspace-boundary-probe.js.map +1 -0
  251. package/dist/hooks/conversation-ui-reducer.d.ts +6 -0
  252. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  253. package/dist/hooks/conversation-ui-reducer.js +9 -1
  254. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  255. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  256. package/dist/hooks/settings-completion-config.js +11 -3
  257. package/dist/hooks/settings-completion-config.js.map +1 -1
  258. package/dist/hooks/use-app-commands.d.ts +6 -1
  259. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  260. package/dist/hooks/use-app-commands.js +22 -13
  261. package/dist/hooks/use-app-commands.js.map +1 -1
  262. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +1 -3
  263. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  264. package/dist/hooks/use-app-keyboard-shortcuts.js +11 -9
  265. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  266. package/dist/hooks/use-conversation.d.ts +8 -0
  267. package/dist/hooks/use-conversation.d.ts.map +1 -1
  268. package/dist/hooks/use-conversation.js +27 -18
  269. package/dist/hooks/use-conversation.js.map +1 -1
  270. package/dist/hooks/use-opencode-go-usage.d.ts +8 -0
  271. package/dist/hooks/use-opencode-go-usage.d.ts.map +1 -0
  272. package/dist/hooks/use-opencode-go-usage.js +45 -0
  273. package/dist/hooks/use-opencode-go-usage.js.map +1 -0
  274. package/dist/hooks/use-shell-mode.d.ts +3 -4
  275. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  276. package/dist/hooks/use-shell-mode.js +14 -12
  277. package/dist/hooks/use-shell-mode.js.map +1 -1
  278. package/dist/hooks/use-terminal-columns.d.ts +15 -0
  279. package/dist/hooks/use-terminal-columns.d.ts.map +1 -0
  280. package/dist/hooks/use-terminal-columns.js +45 -0
  281. package/dist/hooks/use-terminal-columns.js.map +1 -0
  282. package/dist/lib/agent-client.d.ts +2 -0
  283. package/dist/lib/agent-client.d.ts.map +1 -1
  284. package/dist/lib/agent-client.js +1 -0
  285. package/dist/lib/agent-client.js.map +1 -1
  286. package/dist/lib/agent-configuration.d.ts +3 -0
  287. package/dist/lib/agent-configuration.d.ts.map +1 -1
  288. package/dist/lib/agent-configuration.js +4 -0
  289. package/dist/lib/agent-configuration.js.map +1 -1
  290. package/dist/lib/agent-factory.d.ts +3 -0
  291. package/dist/lib/agent-factory.d.ts.map +1 -1
  292. package/dist/lib/agent-factory.js +9 -2
  293. package/dist/lib/agent-factory.js.map +1 -1
  294. package/dist/lib/harness-input-idle.d.ts.map +1 -1
  295. package/dist/lib/harness-input-idle.js +1 -1
  296. package/dist/lib/harness-input-idle.js.map +1 -1
  297. package/dist/non-interactive.d.ts.map +1 -1
  298. package/dist/non-interactive.js +9 -2
  299. package/dist/non-interactive.js.map +1 -1
  300. package/dist/prompts/approval-model.md +22 -0
  301. package/dist/prompts/gpt-5.6.md +3 -2
  302. package/dist/prompts/mentor-mode-stub.md +3 -0
  303. package/dist/prompts/orchestrator-mode-stub.md +3 -0
  304. package/dist/prompts/prefix-quality.test.ts +10 -0
  305. package/dist/prompts/prompt-constructor.d.ts +2 -0
  306. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  307. package/dist/prompts/prompt-constructor.js +23 -13
  308. package/dist/prompts/prompt-constructor.js.map +1 -1
  309. package/dist/prompts/prompt-constructor.test.ts +39 -5
  310. package/dist/prompts/prompt-constructor.ts +27 -15
  311. package/dist/prompts/prompt-profiles.d.ts +1 -3
  312. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  313. package/dist/prompts/prompt-profiles.js +2 -7
  314. package/dist/prompts/prompt-profiles.js.map +1 -1
  315. package/dist/prompts/prompt-profiles.ts +3 -16
  316. package/dist/prompts/session-browser.md +3 -0
  317. package/dist/prompts/subagent-delegation.d.ts +3 -2
  318. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  319. package/dist/prompts/subagent-delegation.js +9 -13
  320. package/dist/prompts/subagent-delegation.js.map +1 -1
  321. package/dist/prompts/subagent-delegation.ts +9 -13
  322. package/dist/providers/chained-wire-state.d.ts +7 -2
  323. package/dist/providers/chained-wire-state.d.ts.map +1 -1
  324. package/dist/providers/chained-wire-state.js +16 -7
  325. package/dist/providers/chained-wire-state.js.map +1 -1
  326. package/dist/providers/codex-auth.d.ts +2 -5
  327. package/dist/providers/codex-auth.d.ts.map +1 -1
  328. package/dist/providers/codex-auth.js +2 -0
  329. package/dist/providers/codex-auth.js.map +1 -1
  330. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  331. package/dist/providers/codex-responses-model.js +22 -3
  332. package/dist/providers/codex-responses-model.js.map +1 -1
  333. package/dist/providers/grok-auth.d.ts +2 -5
  334. package/dist/providers/grok-auth.d.ts.map +1 -1
  335. package/dist/providers/grok-auth.js +2 -0
  336. package/dist/providers/grok-auth.js.map +1 -1
  337. package/dist/providers/oauth-account-store.d.ts +5 -0
  338. package/dist/providers/oauth-account-store.d.ts.map +1 -1
  339. package/dist/providers/oauth-account-store.js +56 -5
  340. package/dist/providers/oauth-account-store.js.map +1 -1
  341. package/dist/providers/oauth-pkce.d.ts +8 -0
  342. package/dist/providers/oauth-pkce.d.ts.map +1 -1
  343. package/dist/providers/oauth-pkce.js +91 -19
  344. package/dist/providers/oauth-pkce.js.map +1 -1
  345. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  346. package/dist/providers/openai-compatible.provider.js +8 -1
  347. package/dist/providers/openai-compatible.provider.js.map +1 -1
  348. package/dist/providers/opencode-go-usage.d.ts +24 -0
  349. package/dist/providers/opencode-go-usage.d.ts.map +1 -0
  350. package/dist/providers/opencode-go-usage.js +37 -0
  351. package/dist/providers/opencode-go-usage.js.map +1 -0
  352. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  353. package/dist/providers/openrouter.provider.js +8 -1
  354. package/dist/providers/openrouter.provider.js.map +1 -1
  355. package/dist/providers/responses-websocket-sessions.d.ts +1 -0
  356. package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
  357. package/dist/providers/responses-websocket-sessions.js +16 -2
  358. package/dist/providers/responses-websocket-sessions.js.map +1 -1
  359. package/dist/providers/retrying-model.d.ts.map +1 -1
  360. package/dist/providers/retrying-model.js +31 -3
  361. package/dist/providers/retrying-model.js.map +1 -1
  362. package/dist/services/agent-runtime/application-run-loop.d.ts +5 -1
  363. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  364. package/dist/services/agent-runtime/application-run-loop.js +229 -149
  365. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  366. package/dist/services/agent-runtime/generation-guard.d.ts +39 -25
  367. package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
  368. package/dist/services/agent-runtime/generation-guard.js +98 -100
  369. package/dist/services/agent-runtime/generation-guard.js.map +1 -1
  370. package/dist/services/agent-runtime/run-budget.d.ts +1 -1
  371. package/dist/services/agent-runtime/run-budget.d.ts.map +1 -1
  372. package/dist/services/agent-runtime/run-budget.js +4 -0
  373. package/dist/services/agent-runtime/run-budget.js.map +1 -1
  374. package/dist/services/agent-stream.d.ts.map +1 -1
  375. package/dist/services/agent-stream.js +1 -0
  376. package/dist/services/agent-stream.js.map +1 -1
  377. package/dist/services/conversation/conversation-adapter.d.ts +13 -2
  378. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  379. package/dist/services/conversation/conversation-adapter.js +35 -7
  380. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  381. package/dist/services/conversation/conversation-admission-workflow.d.ts +3 -2
  382. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  383. package/dist/services/conversation/conversation-admission-workflow.js +6 -1
  384. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  385. package/dist/services/conversation/conversation-events.d.ts +43 -2
  386. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  387. package/dist/services/conversation/conversation-orchestrator.d.ts +14 -1
  388. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  389. package/dist/services/conversation/conversation-orchestrator.js +142 -11
  390. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  391. package/dist/services/conversation/conversation-orchestrator.types.d.ts +3 -1
  392. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  393. package/dist/services/conversation/conversation-persistence.d.ts +22 -1
  394. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  395. package/dist/services/conversation/conversation-persistence.js +61 -0
  396. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  397. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  398. package/dist/services/conversation/conversation-service.js +45 -29
  399. package/dist/services/conversation/conversation-service.js.map +1 -1
  400. package/dist/services/conversation/session-audit.d.ts +70 -0
  401. package/dist/services/conversation/session-audit.d.ts.map +1 -0
  402. package/dist/services/conversation/session-audit.js +164 -0
  403. package/dist/services/conversation/session-audit.js.map +1 -0
  404. package/dist/services/conversation/session-browser.d.ts +46 -0
  405. package/dist/services/conversation/session-browser.d.ts.map +1 -0
  406. package/dist/services/conversation/session-browser.js +380 -0
  407. package/dist/services/conversation/session-browser.js.map +1 -0
  408. package/dist/services/input-surge-approval.d.ts +21 -0
  409. package/dist/services/input-surge-approval.d.ts.map +1 -0
  410. package/dist/services/input-surge-approval.js +42 -0
  411. package/dist/services/input-surge-approval.js.map +1 -0
  412. package/dist/services/large-uncached-input-guard.js +4 -4
  413. package/dist/services/large-uncached-input-guard.js.map +1 -1
  414. package/dist/services/logging/assistant-turn-journal.d.ts +15 -0
  415. package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
  416. package/dist/services/logging/assistant-turn-journal.js +27 -0
  417. package/dist/services/logging/assistant-turn-journal.js.map +1 -1
  418. package/dist/services/memory/memory-capabilities.js +2 -2
  419. package/dist/services/memory/memory-search.d.ts +16 -0
  420. package/dist/services/memory/memory-search.d.ts.map +1 -0
  421. package/dist/services/memory/memory-search.js +55 -0
  422. package/dist/services/memory/memory-search.js.map +1 -0
  423. package/dist/services/memory/memory-store.d.ts +12 -0
  424. package/dist/services/memory/memory-store.d.ts.map +1 -1
  425. package/dist/services/memory/memory-store.js +14 -35
  426. package/dist/services/memory/memory-store.js.map +1 -1
  427. package/dist/services/mode-notices.d.ts +11 -0
  428. package/dist/services/mode-notices.d.ts.map +1 -1
  429. package/dist/services/mode-notices.js +37 -3
  430. package/dist/services/mode-notices.js.map +1 -1
  431. package/dist/services/queue/queue-controller.d.ts +13 -0
  432. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  433. package/dist/services/queue/queue-controller.js +32 -1
  434. package/dist/services/queue/queue-controller.js.map +1 -1
  435. package/dist/services/retry/in-loop-model-retry.d.ts +12 -0
  436. package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -0
  437. package/dist/services/retry/in-loop-model-retry.js +115 -0
  438. package/dist/services/retry/in-loop-model-retry.js.map +1 -0
  439. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  440. package/dist/services/retry/retry-classifier.js +18 -12
  441. package/dist/services/retry/retry-classifier.js.map +1 -1
  442. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  443. package/dist/services/retry/retry-error-classification.js +10 -6
  444. package/dist/services/retry/retry-error-classification.js.map +1 -1
  445. package/dist/services/retry/upstream-retry-policy.d.ts.map +1 -1
  446. package/dist/services/retry/upstream-retry-policy.js +40 -7
  447. package/dist/services/retry/upstream-retry-policy.js.map +1 -1
  448. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  449. package/dist/services/runtime-setting-router.js +7 -2
  450. package/dist/services/runtime-setting-router.js.map +1 -1
  451. package/dist/services/session/background-check-in-scheduler.d.ts +44 -0
  452. package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -0
  453. package/dist/services/session/background-check-in-scheduler.js +88 -0
  454. package/dist/services/session/background-check-in-scheduler.js.map +1 -0
  455. package/dist/services/session/background-task-control.js +4 -1
  456. package/dist/services/session/background-task-control.js.map +1 -1
  457. package/dist/services/session/initial-input-preparer.d.ts +2 -1
  458. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  459. package/dist/services/session/initial-input-preparer.js +3 -1
  460. package/dist/services/session/initial-input-preparer.js.map +1 -1
  461. package/dist/services/session/repetition-detector.d.ts +0 -4
  462. package/dist/services/session/repetition-detector.d.ts.map +1 -1
  463. package/dist/services/session/repetition-detector.js +0 -7
  464. package/dist/services/session/repetition-detector.js.map +1 -1
  465. package/dist/services/session/session-composition.d.ts +6 -2
  466. package/dist/services/session/session-composition.d.ts.map +1 -1
  467. package/dist/services/session/session-composition.js +99 -29
  468. package/dist/services/session/session-composition.js.map +1 -1
  469. package/dist/services/session/session-lifecycle.d.ts +8 -0
  470. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  471. package/dist/services/session/session-lifecycle.js +4 -0
  472. package/dist/services/session/session-lifecycle.js.map +1 -1
  473. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  474. package/dist/services/session/session-stream-processor.js +5 -15
  475. package/dist/services/session/session-stream-processor.js.map +1 -1
  476. package/dist/services/session/turn-attempt-factory.d.ts +2 -1
  477. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  478. package/dist/services/session/turn-attempt-factory.js +1 -0
  479. package/dist/services/session/turn-attempt-factory.js.map +1 -1
  480. package/dist/services/session/turn-attempt.d.ts +3 -0
  481. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  482. package/dist/services/session/turn-attempt.js +5 -0
  483. package/dist/services/session/turn-attempt.js.map +1 -1
  484. package/dist/services/session/turn-coordinator.d.ts +1 -1
  485. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  486. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  487. package/dist/services/session/turn-workflow.js +4 -1
  488. package/dist/services/session/turn-workflow.js.map +1 -1
  489. package/dist/services/settings/settings-schema.d.ts +27 -3
  490. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  491. package/dist/services/settings/settings-schema.js +35 -11
  492. package/dist/services/settings/settings-schema.js.map +1 -1
  493. package/dist/services/settings/settings-service.d.ts +9 -0
  494. package/dist/services/settings/settings-service.d.ts.map +1 -1
  495. package/dist/services/settings/settings-service.js +40 -0
  496. package/dist/services/settings/settings-service.js.map +1 -1
  497. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  498. package/dist/services/settings/settings-sources.js +5 -0
  499. package/dist/services/settings/settings-sources.js.map +1 -1
  500. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -1
  501. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  502. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +6 -0
  503. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  504. package/dist/services/shell/shell-interaction-session.d.ts +4 -5
  505. package/dist/services/shell/shell-interaction-session.d.ts.map +1 -1
  506. package/dist/services/shell/shell-interaction-session.js +8 -20
  507. package/dist/services/shell/shell-interaction-session.js.map +1 -1
  508. package/dist/services/stream-event-processor.d.ts.map +1 -1
  509. package/dist/services/stream-event-processor.js +15 -0
  510. package/dist/services/stream-event-processor.js.map +1 -1
  511. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  512. package/dist/services/subagents/mentor-runner.js +2 -0
  513. package/dist/services/subagents/mentor-runner.js.map +1 -1
  514. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  515. package/dist/services/subagents/nested-runner.js +34 -1
  516. package/dist/services/subagents/nested-runner.js.map +1 -1
  517. package/dist/services/subagents/subagent-async-registry.js +1 -1
  518. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  519. package/dist/services/subagents/subagent-notification-store.d.ts +28 -1
  520. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  521. package/dist/services/subagents/subagent-notification-store.js +11 -0
  522. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  523. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  524. package/dist/services/subagents/tool-policy.js +10 -5
  525. package/dist/services/subagents/tool-policy.js.map +1 -1
  526. package/dist/services/subagents/utils.d.ts +2 -0
  527. package/dist/services/subagents/utils.d.ts.map +1 -1
  528. package/dist/services/subagents/utils.js +29 -0
  529. package/dist/services/subagents/utils.js.map +1 -1
  530. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  531. package/dist/services/tool-execution-ledger.js +5 -1
  532. package/dist/services/tool-execution-ledger.js.map +1 -1
  533. package/dist/tools/agent/ask-user.d.ts.map +1 -1
  534. package/dist/tools/agent/ask-user.js +2 -0
  535. package/dist/tools/agent/ask-user.js.map +1 -1
  536. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  537. package/dist/tools/agent/run-subagent.js +40 -24
  538. package/dist/tools/agent/run-subagent.js.map +1 -1
  539. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  540. package/dist/tools/memory/memory-tools.js +322 -59
  541. package/dist/tools/memory/memory-tools.js.map +1 -1
  542. package/dist/tools/session-browser/session-browser-tools.d.ts +4 -0
  543. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -0
  544. package/dist/tools/session-browser/session-browser-tools.js +47 -0
  545. package/dist/tools/session-browser/session-browser-tools.js.map +1 -0
  546. package/dist/tools/system/shell.d.ts.map +1 -1
  547. package/dist/tools/system/shell.js +7 -0
  548. package/dist/tools/system/shell.js.map +1 -1
  549. package/dist/tools/types.d.ts +4 -0
  550. package/dist/tools/types.d.ts.map +1 -1
  551. package/dist/tools/types.js.map +1 -1
  552. package/dist/utils/busy-turn-guard.d.ts +17 -0
  553. package/dist/utils/busy-turn-guard.d.ts.map +1 -0
  554. package/dist/utils/busy-turn-guard.js +24 -0
  555. package/dist/utils/busy-turn-guard.js.map +1 -0
  556. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  557. package/dist/utils/conversation/conversation-event-handler.js +28 -7
  558. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  559. package/dist/utils/output/bounded-json.d.ts +33 -0
  560. package/dist/utils/output/bounded-json.d.ts.map +1 -0
  561. package/dist/utils/output/bounded-json.js +59 -0
  562. package/dist/utils/output/bounded-json.js.map +1 -0
  563. package/dist/utils/output/output-trim.d.ts.map +1 -1
  564. package/dist/utils/output/output-trim.js +7 -7
  565. package/dist/utils/output/output-trim.js.map +1 -1
  566. package/dist/utils/output/text-snippet.d.ts +6 -0
  567. package/dist/utils/output/text-snippet.d.ts.map +1 -0
  568. package/dist/utils/output/text-snippet.js +106 -0
  569. package/dist/utils/output/text-snippet.js.map +1 -0
  570. package/dist/utils/resume-list.d.ts +3 -1
  571. package/dist/utils/resume-list.d.ts.map +1 -1
  572. package/dist/utils/resume-list.js +3 -2
  573. package/dist/utils/resume-list.js.map +1 -1
  574. package/dist/utils/settings-command.d.ts.map +1 -1
  575. package/dist/utils/settings-command.js +15 -0
  576. package/dist/utils/settings-command.js.map +1 -1
  577. package/dist/utils/shell/sandbox/sandbox-policy.d.ts +2 -0
  578. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  579. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  580. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +1 -0
  581. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -1
  582. package/dist/utils/shell/sandbox/shell-sandbox-runner.js +20 -1
  583. package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
  584. package/dist/utils/value-suggestions.d.ts.map +1 -1
  585. package/dist/utils/value-suggestions.js +1 -0
  586. package/dist/utils/value-suggestions.js.map +1 -1
  587. package/package.json +4 -2
@@ -0,0 +1,46 @@
1
+ import { isTerminalStatus } from '../../services/background-task-activity.js';
2
+ /**
3
+ * How long a settled task still needs a UI clock: the compact panel lingers
4
+ * that long so the outcome can be read, then drops the row.
5
+ *
6
+ * The control port keeps terminal registry rows far longer than this (shells
7
+ * by count, subagents by TTL) so Ctrl+G can still inspect them. That retained
8
+ * history must not keep a 1s React `now` tick after the linger expires —
9
+ * each tick redraws the whole Ink tree.
10
+ */
11
+ export const BACKGROUND_TASKS_PANEL_GRACE_MS = 5_000;
12
+ /** Frozen settle time for a terminal row, or undefined when none was recorded. */
13
+ export const backgroundTaskSettledAt = (task) => {
14
+ if (!isTerminalStatus(task.status))
15
+ return undefined;
16
+ if (typeof task.completedAt === 'number')
17
+ return task.completedAt;
18
+ const observation = task.activity?.lastObservation ?? task.lastObservation;
19
+ if (observation?.kind === 'settled' && typeof observation.at === 'number')
20
+ return observation.at;
21
+ return undefined;
22
+ };
23
+ /**
24
+ * Whether the composer still needs a 1s clock for background-task presentation.
25
+ *
26
+ * Live work, an in-flight turn, and rows still inside the panel linger need
27
+ * `now` to advance. The compact task strip reads foreground candidates live
28
+ * during a turn, before React state has caught up; without a clock those rows
29
+ * freeze at 0s. Retained terminal registry rows after idle do not: they are
30
+ * inspectable history, not a reason to repaint a settled terminal.
31
+ */
32
+ export const needsBackgroundTaskClock = ({ snapshotTasks = [], detailsTasks = [], foregroundCount = 0, turnInFlight = false, now, graceMs = BACKGROUND_TASKS_PANEL_GRACE_MS, }) => {
33
+ if (turnInFlight)
34
+ return true;
35
+ if (foregroundCount > 0)
36
+ return true;
37
+ for (const task of [...snapshotTasks, ...detailsTasks]) {
38
+ if (!isTerminalStatus(task.status))
39
+ return true;
40
+ const settledAt = backgroundTaskSettledAt(task);
41
+ if (settledAt !== undefined && now - settledAt < graceMs)
42
+ return true;
43
+ }
44
+ return false;
45
+ };
46
+ //# sourceMappingURL=background-task-clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-task-clock.js","sourceRoot":"","sources":["../../../source/components/layout/background-task-clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAWrD,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAA4B,EAAsB,EAAE;IAC1F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;IAC3E,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,WAAW,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,EAAE,CAAC;IACjG,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,GAAG,EAAE,EAClB,YAAY,GAAG,EAAE,EACjB,eAAe,GAAG,CAAC,EACnB,YAAY,GAAG,KAAK,EACpB,GAAG,EACH,OAAO,GAAG,+BAA+B,GAQ1C,EAAW,EAAE;IACZ,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,eAAe,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS,IAAI,GAAG,GAAG,SAAS,GAAG,OAAO;YAAE,OAAO,IAAI,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CopyMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/CopyMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAKnE;AAED,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CAwBvB,CAAC;eAEa,QAAQ"}
1
+ {"version":3,"file":"CopyMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/CopyMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAKnE;AAED,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,KAAK,CAwBvB,CAAC;eAEa,QAAQ"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
3
  import { MenuContainer } from '../common/MenuContainer.js';
4
+ import { COLOR_ACCENT, COLOR_TEXT_SUBTLE } from '../theme.js';
4
5
  export function getCodePreview(text, maxLength = 60) {
5
6
  const cleaned = text.replace(/\s+/g, ' ').trim();
6
7
  if (!cleaned)
@@ -9,12 +10,12 @@ export function getCodePreview(text, maxLength = 60) {
9
10
  return cleaned;
10
11
  return `${cleaned.slice(0, maxLength - 1)}…`;
11
12
  }
12
- const CopyMenu = ({ items, selectedIndex }) => (React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, borderColor: "cyan", footer: "\u23CE copy \u00B7 esc cancel \u00B7 \u2191\u2193 navigate", renderItem: (item, index, isSelected) => {
13
+ const CopyMenu = ({ items, selectedIndex }) => (React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, borderColor: COLOR_ACCENT, footer: "\u23CE copy \u00B7 esc cancel \u00B7 \u2191\u2193 navigate", renderItem: (item, index, isSelected) => {
13
14
  const isCodeBlock = item.label !== 'Full response';
14
15
  const preview = isCodeBlock ? getCodePreview(item.text) : '';
15
16
  return (React.createElement(Box, { key: `${item.label}-${index}` },
16
- React.createElement(Text, { inverse: isSelected, color: isSelected ? 'cyan' : undefined, bold: isSelected }, `${isSelected ? '▸' : ' '} ${index + 1}. ${item.label}`),
17
- preview ? (React.createElement(Text, { color: isSelected ? 'cyan' : '#64748b', dimColor: !isSelected }, ` — ${preview}`)) : null));
17
+ React.createElement(Text, { inverse: isSelected, color: isSelected ? COLOR_ACCENT : undefined, bold: isSelected }, `${isSelected ? '▸' : ' '} ${index + 1}. ${item.label}`),
18
+ preview ? (React.createElement(Text, { color: isSelected ? COLOR_ACCENT : COLOR_TEXT_SUBTLE, dimColor: !isSelected }, ` — ${preview}`)) : null));
18
19
  } }));
19
20
  export default CopyMenu;
20
21
  //# sourceMappingURL=CopyMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyMenu.js","sourceRoot":"","sources":["../../../source/components/menu/CopyMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAO3D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,SAAS,GAAG,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,QAAQ,GAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CACxD,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAC,MAAM,EAClB,MAAM,EAAC,4DAAmC,EAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;YAChC,oBAAC,IAAI,IAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,IAChF,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CACnD;YACN,OAAO,CAAC,CAAC,CAAC,CACT,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,UAAU,IAChE,MAAM,OAAO,EAAE,CACX,CACR,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;IACJ,CAAC,GACD,CACH,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"CopyMenu.js","sourceRoot":"","sources":["../../../source/components/menu/CopyMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAO9D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,SAAS,GAAG,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,QAAQ,GAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CACxD,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,YAAY,EACzB,MAAM,EAAC,4DAAmC,EAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;YAChC,oBAAC,IAAI,IAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,IACtF,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CACnD;YACN,OAAO,CAAC,CAAC,CAAC,CACT,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,UAAU,IAC9E,MAAM,OAAO,EAAE,CACX,CACR,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;IACJ,CAAC,GACD,CACH,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MentorPoolSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/MentorPoolSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,0CAA0C,CAAC;AAElD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,qBA4GP;eAEc,uBAAuB"}
1
+ {"version":3,"file":"MentorPoolSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/MentorPoolSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,0CAA0C,CAAC;AAElD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,qBA2HP;eAEc,uBAAuB"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
3
  import { MenuContainer } from '../common/MenuContainer.js';
4
+ import { COLOR_ACCENT, COLOR_DANGER, COLOR_SUCCESS, COLOR_TEXT, COLOR_TEXT_SUBTLE, COLOR_WARNING } from '../theme.js';
4
5
  import { formatMentorPoolProvider, formatMentorPoolReasoning, } from '../../hooks/use-mentor-pool-selection.js';
5
6
  export function MentorPoolSelectionMenu({ phase, selectedIndex, activeItems, draft, errorMessage, fieldErrors, }) {
6
7
  const title = phase === 'list'
@@ -21,16 +22,16 @@ export function MentorPoolSelectionMenu({ phase, selectedIndex, activeItems, dra
21
22
  ? 'Delete Mentor Entry?'
22
23
  : 'Discard Changes?';
23
24
  if (phase === 'edit_model') {
24
- return (React.createElement(Box, { borderStyle: "round", borderColor: errorMessage ? 'red' : 'cyan', paddingX: 1, flexDirection: "column" },
25
- React.createElement(Text, { color: "cyan", bold: true, underline: true }, title),
26
- React.createElement(Text, { color: "gray" }, "Type the model ID below and press Enter."),
27
- React.createElement(Text, { color: "yellow" },
25
+ return (React.createElement(Box, { borderStyle: "round", borderColor: errorMessage ? COLOR_DANGER : COLOR_ACCENT, paddingX: 1, flexDirection: "column" },
26
+ React.createElement(Text, { color: COLOR_ACCENT, bold: true, underline: true }, title),
27
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "Type the model ID below and press Enter."),
28
+ React.createElement(Text, { color: COLOR_WARNING },
28
29
  "Current value: ",
29
30
  draft?.model || '<empty>'),
30
- errorMessage && React.createElement(Text, { color: "red" },
31
+ errorMessage && React.createElement(Text, { color: COLOR_DANGER },
31
32
  "\u26A0 ",
32
33
  errorMessage),
33
- React.createElement(Text, { color: "gray", dimColor: true }, "Esc \u2192 go back")));
34
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE, dimColor: true }, "Esc \u2192 go back")));
34
35
  }
35
36
  const footer = phase === 'list'
36
37
  ? 'Enter → select · Del → delete · Esc → save & close · ↑↓ → navigate'
@@ -42,54 +43,60 @@ export function MentorPoolSelectionMenu({ phase, selectedIndex, activeItems, dra
42
43
  const entryCount = activeItems.filter((item) => item.kind === 'entry').length;
43
44
  const isListEmpty = phase === 'list' && entryCount === 0;
44
45
  return (React.createElement(Box, { flexDirection: "column" },
45
- React.createElement(Text, { color: phase === 'confirm_delete' ? 'red' : 'cyan', bold: true, underline: true }, title),
46
+ React.createElement(Text, { color: phase === 'confirm_delete' ? COLOR_DANGER : COLOR_ACCENT, bold: true, underline: true }, title),
46
47
  phase === 'list' && (React.createElement(Box, { flexDirection: "column" },
47
- React.createElement(Text, { color: "gray" }, "Each entry gets one independent answer for each question."),
48
- React.createElement(Text, { color: "#64748b" },
48
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "Each entry gets one independent answer for each question."),
49
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
49
50
  entryCount,
50
51
  "/8 entries \u00B7 A configured pool overrides mentor samples."),
51
- isListEmpty && React.createElement(Text, { color: "#64748b" }, "No mentor entries configured yet. Add one to get started."))),
52
- phase === 'confirm_delete' && React.createElement(Text, { color: "red" }, "\u26A0 This entry will be removed from the pool."),
53
- phase === 'confirm_discard' && React.createElement(Text, { color: "yellow" }, "\u26A0 You have unsaved changes. Discard them?"),
54
- errorMessage && React.createElement(Text, { color: "red" },
52
+ isListEmpty && (React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, "No mentor entries configured yet. Add one to get started.")))),
53
+ phase === 'confirm_delete' && React.createElement(Text, { color: COLOR_DANGER }, "\u26A0 This entry will be removed from the pool."),
54
+ phase === 'confirm_discard' && React.createElement(Text, { color: COLOR_WARNING }, "\u26A0 You have unsaved changes. Discard them?"),
55
+ errorMessage && React.createElement(Text, { color: COLOR_DANGER },
55
56
  "\u26A0 ",
56
57
  errorMessage),
57
- React.createElement(MenuContainer, { items: activeItems, selectedIndex: selectedIndex, borderColor: phase === 'confirm_delete' || phase === 'confirm_discard' || errorMessage ? 'red' : 'cyan', footer: footer, renderItem: (item, index, selected, inactive) => {
58
+ React.createElement(MenuContainer, { items: activeItems, selectedIndex: selectedIndex, borderColor: phase === 'confirm_delete' || phase === 'confirm_discard' || errorMessage ? COLOR_DANGER : COLOR_ACCENT, footer: footer, renderItem: (item, index, selected, inactive) => {
58
59
  let label = item.label;
59
60
  let prefix = selected ? '▶ ' : ' ';
60
- let color = selected ? 'green' : 'white';
61
+ let color = selected ? COLOR_SUCCESS : COLOR_TEXT;
61
62
  if (item.kind === 'action') {
62
63
  prefix =
63
64
  item.action === 'add' ? '+ ' : item.action === 'reorder' ? '↕ ' : item.action === 'save' ? '✓ ' : prefix;
64
65
  color =
65
- item.tone === 'destructive' ? 'red' : item.action === 'add' ? 'yellow' : selected ? 'green' : 'white';
66
+ item.tone === 'destructive'
67
+ ? COLOR_DANGER
68
+ : item.action === 'add'
69
+ ? COLOR_WARNING
70
+ : selected
71
+ ? COLOR_SUCCESS
72
+ : COLOR_TEXT;
66
73
  }
67
74
  else if (item.kind === 'field') {
68
75
  label = `${item.label}: ${item.detail}`;
69
- color = selected ? 'green' : 'white';
76
+ color = selected ? COLOR_SUCCESS : COLOR_TEXT;
70
77
  }
71
78
  else if (item.kind === 'entry' || item.kind === 'reorder-entry') {
72
79
  label = `${item.index + 1}. ${item.entry.model}`;
73
80
  }
74
81
  else if (item.kind === 'provider' || item.kind === 'reasoning') {
75
- color = selected ? 'green' : 'white';
82
+ color = selected ? COLOR_SUCCESS : COLOR_TEXT;
76
83
  }
77
84
  if (inactive)
78
- color = 'gray';
85
+ color = COLOR_TEXT_SUBTLE;
79
86
  const field = item.kind === 'field' ? fieldErrors[item.field] : undefined;
80
87
  return (React.createElement(Box, { key: `${item.kind}-${index}-${label}`, flexDirection: "column" },
81
88
  React.createElement(Box, { flexDirection: "row" },
82
89
  React.createElement(Text, { color: color, bold: selected || (item.kind === 'action' && item.tone === 'destructive') },
83
90
  prefix,
84
91
  label),
85
- item.kind === 'entry' || item.kind === 'reorder-entry' ? (React.createElement(Text, { color: selected ? 'white' : '#64748b' },
92
+ item.kind === 'entry' || item.kind === 'reorder-entry' ? (React.createElement(Text, { color: selected ? COLOR_TEXT : COLOR_TEXT_SUBTLE },
86
93
  ' ',
87
94
  "\u00B7 Provider: ",
88
95
  formatMentorPoolProvider(item.entry.provider),
89
96
  " \u00B7 Reasoning:",
90
97
  ' ',
91
98
  formatMentorPoolReasoning(item.entry.reasoningEffort))) : null),
92
- field && React.createElement(Text, { color: "red" },
99
+ field && React.createElement(Text, { color: COLOR_DANGER },
93
100
  " \u26A0 ",
94
101
  field)));
95
102
  } })));
@@ -1 +1 @@
1
- {"version":3,"file":"MentorPoolSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/MentorPoolSelectionMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MentorPoolSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/MentorPoolSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtH,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,0CAA0C,CAAC;AAWlD,MAAM,UAAU,uBAAuB,CAAC,EACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,KAAK,EACL,YAAY,EACZ,WAAW,GACL;IACN,MAAM,KAAK,GACT,KAAK,KAAK,MAAM;QACd,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,KAAK,KAAK,aAAa;YACzB,CAAC,CAAC,KAAK,EAAE,MAAM;gBACb,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,mBAAmB;YACvB,CAAC,CAAC,KAAK,KAAK,YAAY;gBACxB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,KAAK,KAAK,eAAe;oBAC3B,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,KAAK,KAAK,gBAAgB;wBAC5B,CAAC,CAAC,yBAAyB;wBAC3B,CAAC,CAAC,KAAK,KAAK,SAAS;4BACrB,CAAC,CAAC,wBAAwB;4BAC1B,CAAC,CAAC,KAAK,KAAK,gBAAgB;gCAC5B,CAAC,CAAC,sBAAsB;gCACxB,CAAC,CAAC,kBAAkB,CAAC;IAEzB,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,OAAO,CACL,oBAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EACvD,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,QAAQ;YAEtB,oBAAC,IAAI,IAAC,KAAK,EAAE,YAAY,EAAE,IAAI,QAAC,SAAS,UACtC,KAAK,CACD;YACP,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,+CAAiD;YAC/E,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa;;gBAAkB,KAAK,EAAE,KAAK,IAAI,SAAS,CAAQ;YAC5E,YAAY,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,YAAY;;gBAAK,YAAY,CAAQ;YACnE,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,+BAEjC,CACH,CACP,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,KAAK,KAAK,MAAM;QACd,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,KAAK,KAAK,aAAa;YACzB,CAAC,CAAC,0DAA0D;YAC5D,CAAC,CAAC,KAAK,KAAK,SAAS;gBACrB,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,gDAAgD,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,WAAW,GAAG,KAAK,KAAK,MAAM,IAAI,UAAU,KAAK,CAAC,CAAC;IAEzD,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,QAAC,SAAS,UAClF,KAAK,CACD;QACN,KAAK,KAAK,MAAM,IAAI,CACnB,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,gEAAkE;YAChG,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB;gBAAG,UAAU;gFAAgE;YAC1G,WAAW,IAAI,CACd,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,gEAAkE,CACjG,CACG,CACP;QACA,KAAK,KAAK,gBAAgB,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uDAAoD;QAC3G,KAAK,KAAK,iBAAiB,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,qDAAkD;QAC3G,YAAY,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,YAAY;;YAAK,YAAY,CAAQ;QACnE,oBAAC,aAAa,IACZ,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,aAAa,EAC5B,WAAW,EACT,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,iBAAiB,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAEzG,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpC,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;gBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,MAAM;wBACJ,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC3G,KAAK;wBACH,IAAI,CAAC,IAAI,KAAK,aAAa;4BACzB,CAAC,CAAC,YAAY;4BACd,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK;gCACvB,CAAC,CAAC,aAAa;gCACf,CAAC,CAAC,QAAQ;oCACV,CAAC,CAAC,aAAa;oCACf,CAAC,CAAC,UAAU,CAAC;gBACnB,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACjC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;gBAChD,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAClE,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnD,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACjE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;gBAChD,CAAC;gBACD,IAAI,QAAQ;oBAAE,KAAK,GAAG,iBAAiB,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,EAAE,aAAa,EAAC,QAAQ;oBAChE,oBAAC,GAAG,IAAC,aAAa,EAAC,KAAK;wBACtB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;4BAC1F,MAAM;4BACN,KAAK,CACD;wBACN,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CACxD,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;4BACnD,IAAI;;4BAAc,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;4BAAe,GAAG;4BACjF,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CACjD,CACR,CAAC,CAAC,CAAC,IAAI,CACJ;oBACL,KAAK,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,YAAY;;wBAAM,KAAK,CAAQ,CAClD,CACP,CAAC;YACJ,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAOjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAKnF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAwIjC,CAAC;eAEa,kBAAkB"}
1
+ {"version":3,"file":"ModelSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAOjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAMnF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAuJjC,CAAC;eAEa,kBAAkB"}
@@ -3,8 +3,9 @@ import { Box, Text } from 'ink';
3
3
  import { getAllProviders, sortProvidersByOrder } from '../../providers/index.js';
4
4
  import { getAvailableProviderIds, hasProviderCredentials, resolveProviderCredentials, } from '../../utils/ai/provider-credentials.js';
5
5
  import { useSetting } from '../../hooks/use-setting.js';
6
- import { MenuContainer } from '../common/MenuContainer.js';
6
+ import { MenuContainer, MenuFooter, SelectionMarker } from '../common/MenuContainer.js';
7
7
  import { ScrollableTabBar } from '../common/ScrollableTabBar.js';
8
+ import { COLOR_ACCENT, COLOR_DANGER, COLOR_TEXT, COLOR_TEXT_SUBTLE, COLOR_WARNING, GLYPH_WARNING } from '../theme.js';
8
9
  const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = false, error = null, scrollOffset = 0, maxHeight = 10, canSwitchProvider = true, providerSwitchDisabledMessage = 'Provider can only be changed at the start of a new conversation (/clear to reset)', credentialRevision = 0, settingsService, }) => {
9
10
  const openAIApiKey = useSetting(settingsService, 'agent.openai.apiKey');
10
11
  const openRouterApiKey = useSetting(settingsService, 'agent.openrouter.apiKey');
@@ -36,7 +37,7 @@ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = f
36
37
  : 0) +
37
38
  1, renderTab: (p, isActive) => {
38
39
  const isDisabled = !p.hasCredentials;
39
- return (React.createElement(Text, { inverse: isActive, color: isActive ? 'magenta' : isDisabled ? 'red' : '#64748b', bold: isActive, strikethrough: isDisabled },
40
+ return (React.createElement(Text, { inverse: isActive, color: isActive ? COLOR_ACCENT : isDisabled ? COLOR_DANGER : COLOR_TEXT_SUBTLE, bold: isActive, strikethrough: isDisabled },
40
41
  ' ',
41
42
  p.label,
42
43
  isDisabled
@@ -45,11 +46,12 @@ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = f
45
46
  : ' (no key)'
46
47
  : '',
47
48
  ' '));
48
- }, hint: canSwitchProvider ? 'Tab/←→ → switch provider' : undefined }));
49
+ } }));
49
50
  return (React.createElement(Box, { flexDirection: "column" },
50
51
  tabBar,
51
- activeTab && !activeTab.hasCredentials && (React.createElement(Text, { color: "yellow" },
52
- "\u26A0 ",
52
+ activeTab && !activeTab.hasCredentials && (React.createElement(Text, { color: COLOR_WARNING },
53
+ GLYPH_WARNING,
54
+ " ",
53
55
  activeTab.label,
54
56
  " unavailable:",
55
57
  ' ',
@@ -59,19 +61,30 @@ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = f
59
61
  ? 'Not logged in on this host. Run `term2 --grok-login` to log in to Grok.'
60
62
  : 'API key not configured on this host. Use Provider Management to configure it.')),
61
63
  !canSwitchProvider && (React.createElement(Box, { marginTop: 0 },
62
- React.createElement(Text, { color: "yellow" },
63
- "\u26A0 ",
64
+ React.createElement(Text, { color: COLOR_WARNING },
65
+ GLYPH_WARNING,
66
+ " ",
64
67
  providerSwitchDisabledMessage))),
65
- React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxHeight: maxHeight, borderColor: "magenta", loading: loading, loadingText: loading ? `Loading models${provider ? ` from ${provider}` : ''}…` : 'Loading...', error: error ? `Unable to load models: ${error}` : null, fallbackText: React.createElement(Text, { color: "#64748b" },
68
+ React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxHeight: maxHeight, title: "Select model", loading: loading, loadingText: loading ? `Loading models${provider ? ` from ${provider}` : ''}…` : 'Loading...', error: error ? `Unable to load models: ${error}` : null, fallbackText: React.createElement(Text, { color: COLOR_TEXT_SUBTLE },
66
69
  "No models match \"",
67
70
  query || '*',
68
- "\""), footer: React.createElement(Text, { color: "#64748b" }, "Enter \u2192 set model \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll \u00B7 Ctrl+R \u2192 refresh model list"), footerOutsideBorder: true, renderItem: (item, _actualIndex, isSelected) => (React.createElement(Box, { key: item.id },
69
- React.createElement(Text, { inverse: isSelected, color: isSelected ? 'magenta' : undefined, bold: isSelected }, item.id),
70
- item.unavailableReason === 'missing-codex-login' ? (React.createElement(Text, { color: "yellow" }, " \u2014 unavailable: Not logged in on this host. Run `term2 --codex-login`.")) : item.unavailableReason === 'missing-grok-login' ? (React.createElement(Text, { color: "yellow" }, " \u2014 unavailable: Not logged in on this host. Run `term2 --grok-login`.")) : item.unavailableReason === 'missing-credentials' ? (React.createElement(Text, { color: "yellow" }, " \u2014 unavailable: API key not configured on this host")) : null,
71
- item.name && React.createElement(Text, { color: isSelected ? 'white' : '#64748b' },
71
+ "\""), footer: React.createElement(MenuFooter, { hints: [
72
+ ['↑↓', 'navigate'],
73
+ ['⏎', 'select'],
74
+ ['tab', 'provider'],
75
+ ['ctrl+r', 'refresh model list'],
76
+ ['esc', 'cancel'],
77
+ ] }), footerOutsideBorder: true, renderItem: (item, _actualIndex, isSelected) => (React.createElement(Box, { key: item.id },
78
+ React.createElement(SelectionMarker, { selected: isSelected }),
79
+ React.createElement(Text, { color: isSelected ? COLOR_ACCENT : undefined, bold: isSelected }, item.id),
80
+ item.unavailableReason === 'missing-codex-login' ? (React.createElement(Text, { color: COLOR_WARNING }, " \u2014 unavailable: Not logged in on this host. Run `term2 --codex-login`.")) : item.unavailableReason === 'missing-grok-login' ? (React.createElement(Text, { color: COLOR_WARNING }, " \u2014 unavailable: Not logged in on this host. Run `term2 --grok-login`.")) : item.unavailableReason === 'missing-credentials' ? (React.createElement(Text, { color: COLOR_WARNING }, " \u2014 unavailable: API key not configured on this host")) : null,
81
+ item.name && React.createElement(Text, { color: isSelected ? COLOR_TEXT : COLOR_TEXT_SUBTLE },
72
82
  " \u2014 ",
73
83
  item.name))) }),
74
- (error || (items.length === 0 && !loading)) && (React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel"))));
84
+ (error || (items.length === 0 && !loading)) && (React.createElement(MenuFooter, { hints: [
85
+ ['tab', 'switch provider'],
86
+ ['esc', 'cancel'],
87
+ ] }))));
75
88
  };
76
89
  export default ModelSelectionMenu;
77
90
  //# sourceMappingURL=ModelSelectionMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/ModelSelectionMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiBtH,MAAM,kBAAkB,GAAc,CAAC,EACrC,KAAK,EACL,aAAa,EACb,KAAK,EACL,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,EAAE,EACd,iBAAiB,GAAG,IAAI,EACxB,6BAA6B,GAAG,mFAAmF,EACnH,kBAAkB,GAAG,CAAC,EACtB,eAAe,GAChB,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,UAAU,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,MAAM,GACV,aAAa,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,oBAAoB,CAClB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpB,aAAa,CACd;iBACE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC;iBAC1C,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC;QACV,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,uBAAuB,CACrB,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CACF,CAAC;QACF,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,cAAc,EAAE,sBAAsB,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7D,iBAAiB,EAAE,0BAA0B,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB;SACvF,CAAC,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,CACb,oBAAC,gBAAgB,IACf,KAAK,EAAE,QAAQ,EACf,YAAY,EAAE,QAAQ,IAAI,EAAE,EAC5B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAClB,CAAC;YACD,CAAC,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,qBAAqB,IAAI,CAAC,CAAC,iBAAiB,KAAK,oBAAoB;oBAC7F,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC,CAAC;YACN,CAAC,EAEH,SAAS,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;YACzB,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;YACrC,OAAO,CACL,oBAAC,IAAI,IACH,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,EAC9E,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,UAAU;gBAExB,GAAG;gBACH,CAAC,CAAC,KAAK;gBACP,UAAU;oBACT,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,qBAAqB,IAAI,CAAC,CAAC,iBAAiB,KAAK,oBAAoB;wBAC7F,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,WAAW;oBACf,CAAC,CAAC,EAAE;gBAAE,GAAG,CACN,CACR,CAAC;QACJ,CAAC,GACD,CACH,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,MAAM;QACN,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,CACzC,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa;YACvB,aAAa;;YAAG,SAAS,CAAC,KAAK;;YAAe,GAAG;YACjD,SAAS,CAAC,iBAAiB,KAAK,qBAAqB;gBACpD,CAAC,CAAC,2EAA2E;gBAC7E,CAAC,CAAC,SAAS,CAAC,iBAAiB,KAAK,oBAAoB;oBACtD,CAAC,CAAC,yEAAyE;oBAC3E,CAAC,CAAC,+EAA+E,CAC9E,CACR;QACA,CAAC,iBAAiB,IAAI,CACrB,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa;gBACvB,aAAa;;gBAAG,6BAA6B,CACzC,CACH,CACP;QACD,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,cAAc,EACpB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,EAC7F,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EACvD,YAAY,EAAE,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB;;gBAAoB,KAAK,IAAI,GAAG;qBAAS,EACrF,MAAM,EACJ,oBAAC,UAAU,IACT,KAAK,EAAE;oBACL,CAAC,IAAI,EAAE,UAAU,CAAC;oBAClB,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,KAAK,EAAE,UAAU,CAAC;oBACnB,CAAC,QAAQ,EAAE,oBAAoB,CAAC;oBAChC,CAAC,KAAK,EAAE,QAAQ,CAAC;iBAClB,GACD,EAEJ,mBAAmB,EAAE,IAAI,EACzB,UAAU,EAAE,CAAC,IAAe,EAAE,YAAoB,EAAE,UAAmB,EAAE,EAAE,CAAC,CAC1E,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,EAAE;gBACf,oBAAC,eAAe,IAAC,QAAQ,EAAE,UAAU,GAAI;gBACzC,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,IACjE,IAAI,CAAC,EAAE,CACH;gBACN,IAAI,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAClD,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,kFAA+E,CAC1G,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,KAAK,oBAAoB,CAAC,CAAC,CAAC,CACpD,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,iFAA8E,CACzG,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,CAAC,CAAC,CACrD,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,+DAA4D,CACvF,CAAC,CAAC,CAAC,IAAI;gBACP,IAAI,CAAC,IAAI,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;;oBAAM,IAAI,CAAC,IAAI,CAAQ,CACzF,CACP,GACD;QACD,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9C,oBAAC,UAAU,IACT,KAAK,EAAE;gBACL,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBAC1B,CAAC,KAAK,EAAE,QAAQ,CAAC;aAClB,GACD,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAsChC,CAAC;eAEa,iBAAiB"}
1
+ {"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAsChC,CAAC;eAEa,iBAAiB"}
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
3
  import { MenuContainer } from '../common/MenuContainer.js';
4
+ import { COLOR_ACCENT, COLOR_WARNING } from '../theme.js';
4
5
  const PathSelectionMenu = ({ items, selectedIndex, query, loading = false, error = null, warning = null, scrollOffset = 0, maxHeight = 10, }) => {
5
6
  return (React.createElement(Box, { flexDirection: "column" },
6
- warning && React.createElement(Text, { color: "yellow" }, warning),
7
- React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxHeight: maxHeight, borderColor: "cyan", loading: loading, loadingText: "Loading project paths\u2026", error: error ? `Unable to load paths: ${error}` : null, fallbackText: `No matches for "@${query}"`, footer: "Enter \u2192 insert with space \u00B7 Tab \u2192 insert w/o trailing space \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll", footerOutsideBorder: true, renderItem: (item, _index, isSelected) => {
7
+ warning && React.createElement(Text, { color: COLOR_WARNING }, warning),
8
+ React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxHeight: maxHeight, borderColor: COLOR_ACCENT, loading: loading, loadingText: "Loading project paths\u2026", error: error ? `Unable to load paths: ${error}` : null, fallbackText: `No matches for "@${query}"`, footer: "Enter \u2192 insert with space \u00B7 Tab \u2192 insert w/o trailing space \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll", footerOutsideBorder: true, renderItem: (item, _index, isSelected) => {
8
9
  const icon = item.type === 'directory' ? '📁' : '📄';
9
10
  return (React.createElement(Box, { key: item.path },
10
- React.createElement(Text, { color: isSelected ? 'cyan' : undefined, inverse: isSelected },
11
+ React.createElement(Text, { color: isSelected ? COLOR_ACCENT : undefined, inverse: isSelected },
11
12
  icon,
12
13
  " ",
13
14
  item.path)));
@@ -1 +1 @@
1
- {"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAa3D,MAAM,iBAAiB,GAAc,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,EACL,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,OAAO,GAAG,IAAI,EACd,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,OAAO,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,OAAO,CAAQ;QACjD,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAC,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAC,6BAAwB,EACpC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EACtD,YAAY,EAAE,oBAAoB,KAAK,GAAG,EAC1C,MAAM,EAAC,uIAA0F,EACjG,mBAAmB,EAAE,IAAI,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI;oBACjB,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU;wBAC9D,IAAI;;wBAAG,IAAI,CAAC,IAAI,CACZ,CACH,CACP,CAAC;YACJ,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../../source/components/menu/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAa1D,MAAM,iBAAiB,GAAc,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,EACL,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,OAAO,GAAG,IAAI,EACd,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,OAAO,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,IAAG,OAAO,CAAQ;QACxD,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAC,6BAAwB,EACpC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EACtD,YAAY,EAAE,oBAAoB,KAAK,GAAG,EAC1C,MAAM,EAAC,uIAA0F,EACjG,mBAAmB,EAAE,IAAI,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI;oBACjB,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU;wBACpE,IAAI;;wBAAG,IAAI,CAAC,IAAI,CACZ,CACH,CACP,CAAC;YACJ,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/ProviderSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,uCAAuC,CAAC;AAG/C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,sBAAsB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAsRpC,CAAC;eAEa,qBAAqB"}
1
+ {"version":3,"file":"ProviderSelectionMenu.d.ts","sourceRoot":"","sources":["../../../source/components/menu/ProviderSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,uCAAuC,CAAC;AAI/C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,sBAAsB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAySpC,CAAC;eAEa,qBAAqB"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
3
  import { MenuContainer } from '../common/MenuContainer.js';
4
+ import { COLOR_ACCENT, COLOR_DANGER, COLOR_SUCCESS, COLOR_TEXT, COLOR_TEXT_SUBTLE, COLOR_WARNING } from '../theme.js';
4
5
  const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems, errorMessage, fieldErrors, selectedProviderName, draft, allowCodexSelection = false, }) => {
5
6
  const getHeader = () => {
6
7
  switch (phase) {
@@ -52,10 +53,10 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
52
53
  };
53
54
  const getBorderColor = () => {
54
55
  if (errorMessage)
55
- return 'red';
56
+ return COLOR_DANGER;
56
57
  if (phase === 'confirm_delete' || phase === 'confirm_discard')
57
- return 'red';
58
- return 'cyan';
58
+ return COLOR_DANGER;
59
+ return COLOR_ACCENT;
59
60
  };
60
61
  // Render a help card for text prompt wizard steps
61
62
  const renderTextWizardPrompt = () => {
@@ -74,18 +75,18 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
74
75
  currentValue = draft?.apiKey ? '********' : '';
75
76
  }
76
77
  return (React.createElement(Box, { borderStyle: "round", borderColor: getBorderColor(), paddingX: 1, flexDirection: "column" },
77
- React.createElement(Text, { color: "cyan", bold: true, underline: true }, getHeader()),
78
+ React.createElement(Text, { color: COLOR_ACCENT, bold: true, underline: true }, getHeader()),
78
79
  React.createElement(Box, { marginTop: 1, flexDirection: "column" },
79
- React.createElement(Text, { color: "gray" }, description),
80
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, description),
80
81
  currentValue && (React.createElement(Box, { marginTop: 1 },
81
- React.createElement(Text, { color: "yellow" }, "Current draft value: "),
82
- React.createElement(Text, { color: "white" }, currentValue))),
82
+ React.createElement(Text, { color: COLOR_WARNING }, "Current draft value: "),
83
+ React.createElement(Text, { color: COLOR_TEXT }, currentValue))),
83
84
  errorMessage && (React.createElement(Box, { marginTop: 1 },
84
- React.createElement(Text, { color: "red" },
85
+ React.createElement(Text, { color: COLOR_DANGER },
85
86
  "\u26A0 ",
86
87
  errorMessage)))),
87
- React.createElement(Box, { marginTop: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray" },
88
- React.createElement(Text, { color: "gray", dimColor: true }, getFooter()))));
88
+ React.createElement(Box, { marginTop: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: COLOR_TEXT_SUBTLE },
89
+ React.createElement(Text, { color: COLOR_TEXT_SUBTLE, dimColor: true }, getFooter()))));
89
90
  };
90
91
  // Text wizard steps are rendered differently
91
92
  if (phase === 'wizard_name' || phase === 'wizard_url' || phase === 'wizard_key') {
@@ -111,27 +112,33 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
111
112
  })();
112
113
  return (React.createElement(Box, { flexDirection: "column" },
113
114
  React.createElement(Box, { marginBottom: 0 },
114
- React.createElement(Text, { color: "cyan", bold: true, underline: true }, getHeader())),
115
+ React.createElement(Text, { color: COLOR_ACCENT, bold: true, underline: true }, getHeader())),
115
116
  phase === 'confirm_delete' && (React.createElement(Box, { marginTop: 1, marginBottom: 0 },
116
- React.createElement(Text, { color: "red", bold: true }, "\u26A0 WARNING: Are you sure you want to delete this provider? This action cannot be undone."))),
117
+ React.createElement(Text, { color: COLOR_DANGER, bold: true }, "\u26A0 WARNING: Are you sure you want to delete this provider? This action cannot be undone."))),
117
118
  phase === 'confirm_discard' && (React.createElement(Box, { marginTop: 1, marginBottom: 0 },
118
- React.createElement(Text, { color: "yellow", bold: true }, "\u26A0 You have unsaved changes. Discard them?"))),
119
+ React.createElement(Text, { color: COLOR_WARNING, bold: true }, "\u26A0 You have unsaved changes. Discard them?"))),
119
120
  errorMessage && phase !== 'edit_fields' && (React.createElement(Box, { marginTop: 1, marginBottom: 0 },
120
- React.createElement(Text, { color: "red" },
121
+ React.createElement(Text, { color: COLOR_DANGER },
121
122
  "\u26A0 ",
122
123
  errorMessage))),
123
124
  React.createElement(MenuContainer, { items: activeItems, selectedIndex: selectedIndex, scrollOffset: scrollOffset, borderColor: getBorderColor(), footer: getFooter(), isInactive: (item) => item.kind === 'provider' && item.id === 'codex' && !allowCodexSelection, renderItem: (item, index, isSelected, isInactive) => {
124
125
  let label = item.label;
125
126
  let prefix = ' ';
126
127
  let suffix = '';
127
- let color = isSelected ? 'green' : 'white';
128
+ let color = isSelected ? COLOR_SUCCESS : COLOR_TEXT;
128
129
  let bold = isSelected;
129
130
  if (item.kind === 'provider') {
130
131
  // Built-in (non-active): greyed out, not actionable on Enter.
131
132
  // Custom providers remain bright so they look interactive.
132
133
  // Note: openai and openrouter remain active/bright because we can change their api key.
133
134
  const unavailable = item.hasCredentials === false;
134
- color = isInactive ? 'gray' : unavailable ? 'yellow' : isSelected ? 'green' : 'white';
135
+ color = isInactive
136
+ ? COLOR_TEXT_SUBTLE
137
+ : unavailable
138
+ ? COLOR_WARNING
139
+ : isSelected
140
+ ? COLOR_SUCCESS
141
+ : COLOR_TEXT;
135
142
  if (item.id === 'codex') {
136
143
  suffix = unavailable
137
144
  ? 'Not logged in on this host · Run `term2 --codex-login`'
@@ -146,11 +153,18 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
146
153
  }
147
154
  else if (item.kind === 'add-provider') {
148
155
  prefix = '+ ';
149
- color = isSelected ? 'green' : 'yellow';
156
+ color = isSelected ? COLOR_SUCCESS : COLOR_WARNING;
150
157
  }
151
158
  else if (item.kind === 'action') {
152
159
  prefix = item.tone === 'destructive' ? '× ' : ' ';
153
- color = item.tone === 'destructive' ? (isSelected ? 'red' : 'red') : isSelected ? 'green' : 'white';
160
+ color =
161
+ item.tone === 'destructive'
162
+ ? isSelected
163
+ ? COLOR_DANGER
164
+ : COLOR_DANGER
165
+ : isSelected
166
+ ? COLOR_SUCCESS
167
+ : COLOR_TEXT;
154
168
  bold = isSelected || item.tone === 'destructive';
155
169
  }
156
170
  else if (item.kind === 'field' || item.kind === 'type') {
@@ -163,7 +177,13 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
163
177
  // "in use" is what this session is authenticating as right now;
164
178
  // "next session" is a selection that has not taken effect yet.
165
179
  prefix = item.isInUse ? '● ' : item.isSelected ? '○ ' : ' ';
166
- color = item.isInUse ? 'green' : item.isSelected ? 'cyan' : isSelected ? 'green' : 'white';
180
+ color = item.isInUse
181
+ ? COLOR_SUCCESS
182
+ : item.isSelected
183
+ ? COLOR_ACCENT
184
+ : isSelected
185
+ ? COLOR_SUCCESS
186
+ : COLOR_TEXT;
167
187
  bold = item.isInUse;
168
188
  suffix = item.isInUse
169
189
  ? item.isSelected
@@ -175,7 +195,7 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
175
195
  }
176
196
  else if (item.kind === 'note') {
177
197
  prefix = ' ';
178
- color = 'gray';
198
+ color = COLOR_TEXT_SUBTLE;
179
199
  }
180
200
  else if (item.kind === 'reorder-item') {
181
201
  prefix = ' ';
@@ -189,30 +209,30 @@ const ProviderSelectionMenu = ({ phase, selectedIndex, scrollOffset, activeItems
189
209
  }
190
210
  const isDestructive = item.kind === 'action' && item.tone === 'destructive';
191
211
  if (isDestructive) {
192
- color = isSelected ? 'red' : 'red';
212
+ color = isSelected ? COLOR_DANGER : COLOR_DANGER;
193
213
  }
194
214
  if (phase === 'edit_fields' && item.kind === 'field') {
195
215
  const error = item.fieldKey ? fieldErrors?.[item.fieldKey] : undefined;
196
216
  return (React.createElement(Box, { key: `${index}-${item.kind}-${item.label}`, flexDirection: "column" },
197
217
  React.createElement(Box, { flexDirection: "row" },
198
- React.createElement(Text, { color: isSelected ? 'green' : 'gray' }, isSelected ? '▶ ' : ' '),
218
+ React.createElement(Text, { color: isSelected ? COLOR_SUCCESS : COLOR_TEXT_SUBTLE }, isSelected ? '▶ ' : ' '),
199
219
  React.createElement(Box, { width: labelColumnWidth, flexDirection: "row", flexShrink: 0 },
200
220
  React.createElement(Text, { color: color, bold: bold },
201
221
  prefix,
202
222
  label)),
203
- suffix ? React.createElement(Text, { color: "gray" }, suffix) : null),
223
+ suffix ? React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, suffix) : null),
204
224
  error ? (React.createElement(Box, { marginLeft: 4 },
205
- React.createElement(Text, { color: "red" },
225
+ React.createElement(Text, { color: COLOR_DANGER },
206
226
  "\u26A0 ",
207
227
  error))) : null));
208
228
  }
209
229
  return (React.createElement(Box, { key: `${index}-${item.kind}-${item.label}`, flexDirection: "row" },
210
- React.createElement(Text, { color: isSelected ? 'green' : 'gray' }, isSelected ? '▶ ' : ' '),
230
+ React.createElement(Text, { color: isSelected ? COLOR_SUCCESS : COLOR_TEXT_SUBTLE }, isSelected ? '▶ ' : ' '),
211
231
  React.createElement(Box, { width: labelColumnWidth, flexDirection: "row", flexShrink: 0 },
212
232
  React.createElement(Text, { color: color, bold: bold },
213
233
  prefix,
214
234
  label)),
215
- suffix ? React.createElement(Text, { color: "gray" }, suffix) : null));
235
+ suffix ? React.createElement(Text, { color: COLOR_TEXT_SUBTLE }, suffix) : null));
216
236
  } })));
217
237
  };
218
238
  export default ProviderSelectionMenu;