@qduc/term2 0.6.0 → 0.7.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 (546) hide show
  1. package/dist/agent.d.ts +9 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +139 -68
  4. package/dist/agent.js.map +1 -1
  5. package/dist/agent.test.js +179 -16
  6. package/dist/agent.test.js.map +1 -1
  7. package/dist/app.d.ts +16 -3
  8. package/dist/app.d.ts.map +1 -1
  9. package/dist/app.js +186 -23
  10. package/dist/app.js.map +1 -1
  11. package/dist/app.large-uncached-warning.test.d.ts +2 -0
  12. package/dist/app.large-uncached-warning.test.d.ts.map +1 -0
  13. package/dist/app.large-uncached-warning.test.js +15 -0
  14. package/dist/app.large-uncached-warning.test.js.map +1 -0
  15. package/dist/app.startup-banner.test.js +3 -19
  16. package/dist/app.startup-banner.test.js.map +1 -1
  17. package/dist/cli.js +170 -71
  18. package/dist/cli.js.map +1 -1
  19. package/dist/components/Banner.d.ts.map +1 -1
  20. package/dist/components/Banner.js +35 -17
  21. package/dist/components/Banner.js.map +1 -1
  22. package/dist/components/BottomArea.d.ts +7 -1
  23. package/dist/components/BottomArea.d.ts.map +1 -1
  24. package/dist/components/BottomArea.js +8 -6
  25. package/dist/components/BottomArea.js.map +1 -1
  26. package/dist/components/BottomArea.test.js +14 -1
  27. package/dist/components/BottomArea.test.js.map +1 -1
  28. package/dist/components/CommandMessage.d.ts.map +1 -1
  29. package/dist/components/CommandMessage.js +31 -1
  30. package/dist/components/CommandMessage.js.map +1 -1
  31. package/dist/components/CommandMessage.test.js +150 -31
  32. package/dist/components/CommandMessage.test.js.map +1 -1
  33. package/dist/components/Common/MenuContainer.d.ts +20 -0
  34. package/dist/components/Common/MenuContainer.d.ts.map +1 -0
  35. package/dist/components/Common/MenuContainer.js +52 -0
  36. package/dist/components/Common/MenuContainer.js.map +1 -0
  37. package/dist/components/Common/ScrollableTabBar.d.ts +26 -0
  38. package/dist/components/Common/ScrollableTabBar.d.ts.map +1 -0
  39. package/dist/components/Common/ScrollableTabBar.js +26 -0
  40. package/dist/components/Common/ScrollableTabBar.js.map +1 -0
  41. package/dist/components/Common/compute-visible-tabs.d.ts +16 -0
  42. package/dist/components/Common/compute-visible-tabs.d.ts.map +1 -0
  43. package/dist/components/Common/compute-visible-tabs.js +53 -0
  44. package/dist/components/Common/compute-visible-tabs.js.map +1 -0
  45. package/dist/components/Common/compute-visible-tabs.test.d.ts +2 -0
  46. package/dist/components/Common/compute-visible-tabs.test.d.ts.map +1 -0
  47. package/dist/components/Common/compute-visible-tabs.test.js +97 -0
  48. package/dist/components/Common/compute-visible-tabs.test.js.map +1 -0
  49. package/dist/components/HandoffConfirmationPrompt.d.ts +9 -0
  50. package/dist/components/HandoffConfirmationPrompt.d.ts.map +1 -0
  51. package/dist/components/HandoffConfirmationPrompt.js +38 -0
  52. package/dist/components/HandoffConfirmationPrompt.js.map +1 -0
  53. package/dist/components/HandoffConfirmationPrompt.test.d.ts +2 -0
  54. package/dist/components/HandoffConfirmationPrompt.test.d.ts.map +1 -0
  55. package/dist/components/HandoffConfirmationPrompt.test.js +12 -0
  56. package/dist/components/HandoffConfirmationPrompt.test.js.map +1 -0
  57. package/dist/components/Input/PopupManager.d.ts +5 -1
  58. package/dist/components/Input/PopupManager.d.ts.map +1 -1
  59. package/dist/components/Input/PopupManager.js +2 -2
  60. package/dist/components/Input/PopupManager.js.map +1 -1
  61. package/dist/components/Input/popup-key-navigation.js +2 -2
  62. package/dist/components/Input/popup-key-navigation.js.map +1 -1
  63. package/dist/components/Input/popup-key-navigation.test.js +5 -3
  64. package/dist/components/Input/popup-key-navigation.test.js.map +1 -1
  65. package/dist/components/Input/popup-props.d.ts.map +1 -1
  66. package/dist/components/Input/popup-props.js +4 -0
  67. package/dist/components/Input/popup-props.js.map +1 -1
  68. package/dist/components/Input/popup-props.test.d.ts +2 -0
  69. package/dist/components/Input/popup-props.test.d.ts.map +1 -0
  70. package/dist/components/Input/popup-props.test.js +70 -0
  71. package/dist/components/Input/popup-props.test.js.map +1 -0
  72. package/dist/components/InputBox.d.ts +0 -1
  73. package/dist/components/InputBox.d.ts.map +1 -1
  74. package/dist/components/InputBox.js +66 -14
  75. package/dist/components/InputBox.js.map +1 -1
  76. package/dist/components/InputBox.test.js +192 -12
  77. package/dist/components/InputBox.test.js.map +1 -1
  78. package/dist/components/MessageList.d.ts +1 -0
  79. package/dist/components/MessageList.d.ts.map +1 -1
  80. package/dist/components/MessageList.js.map +1 -1
  81. package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
  82. package/dist/components/ModelSelectionMenu.debug.test.d.ts +2 -0
  83. package/dist/components/ModelSelectionMenu.debug.test.d.ts.map +1 -0
  84. package/dist/components/ModelSelectionMenu.debug.test.js.map +1 -0
  85. package/dist/components/ModelSelectionMenu.js +29 -125
  86. package/dist/components/ModelSelectionMenu.js.map +1 -1
  87. package/dist/components/ModelSelectionMenu.test.js +9 -5
  88. package/dist/components/ModelSelectionMenu.test.js.map +1 -1
  89. package/dist/components/PathSelectionMenu.d.ts.map +1 -1
  90. package/dist/components/PathSelectionMenu.js +15 -55
  91. package/dist/components/PathSelectionMenu.js.map +1 -1
  92. package/dist/components/SettingsSelectionMenu.d.ts +4 -1
  93. package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
  94. package/dist/components/SettingsSelectionMenu.js +48 -104
  95. package/dist/components/SettingsSelectionMenu.js.map +1 -1
  96. package/dist/components/SettingsSelectionMenu.scroll.test.js +140 -0
  97. package/dist/components/SettingsSelectionMenu.scroll.test.js.map +1 -1
  98. package/dist/components/SettingsSelectionMenu.test.js +38 -5
  99. package/dist/components/SettingsSelectionMenu.test.js.map +1 -1
  100. package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
  101. package/dist/components/SettingsValueSelectionMenu.js +24 -51
  102. package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
  103. package/dist/components/SlashCommandMenu.d.ts +1 -0
  104. package/dist/components/SlashCommandMenu.d.ts.map +1 -1
  105. package/dist/components/SlashCommandMenu.js +11 -14
  106. package/dist/components/SlashCommandMenu.js.map +1 -1
  107. package/dist/components/StatusBar.d.ts +2 -0
  108. package/dist/components/StatusBar.d.ts.map +1 -1
  109. package/dist/components/StatusBar.js +35 -2
  110. package/dist/components/StatusBar.js.map +1 -1
  111. package/dist/components/StatusBar.test.js +32 -0
  112. package/dist/components/StatusBar.test.js.map +1 -1
  113. package/dist/components/UndoSelectionMenu.d.ts.map +1 -1
  114. package/dist/components/UndoSelectionMenu.js +6 -33
  115. package/dist/components/UndoSelectionMenu.js.map +1 -1
  116. package/dist/context/InputContext.stability.test.js +9 -7
  117. package/dist/context/InputContext.stability.test.js.map +1 -1
  118. package/dist/env-setup.js +1 -0
  119. package/dist/env-setup.js.map +1 -1
  120. package/dist/hooks/use-app-commands.d.ts +22 -2
  121. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  122. package/dist/hooks/use-app-commands.js +43 -3
  123. package/dist/hooks/use-app-commands.js.map +1 -1
  124. package/dist/hooks/use-app-commands.test.js +135 -1
  125. package/dist/hooks/use-app-commands.test.js.map +1 -1
  126. package/dist/hooks/use-conversation.clear.test.d.ts +2 -0
  127. package/dist/hooks/use-conversation.clear.test.d.ts.map +1 -0
  128. package/dist/hooks/use-conversation.clear.test.js +54 -0
  129. package/dist/hooks/use-conversation.clear.test.js.map +1 -0
  130. package/dist/hooks/use-conversation.d.ts +25 -2
  131. package/dist/hooks/use-conversation.d.ts.map +1 -1
  132. package/dist/hooks/use-conversation.js +90 -12
  133. package/dist/hooks/use-conversation.js.map +1 -1
  134. package/dist/hooks/use-escape-key.d.ts +8 -1
  135. package/dist/hooks/use-escape-key.d.ts.map +1 -1
  136. package/dist/hooks/use-escape-key.js +15 -4
  137. package/dist/hooks/use-escape-key.js.map +1 -1
  138. package/dist/hooks/use-escape-key.test.js +135 -28
  139. package/dist/hooks/use-escape-key.test.js.map +1 -1
  140. package/dist/hooks/use-input-history.test.js +14 -8
  141. package/dist/hooks/use-input-history.test.js.map +1 -1
  142. package/dist/hooks/use-mode-handlers.d.ts +12 -1
  143. package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
  144. package/dist/hooks/use-mode-handlers.js +31 -1
  145. package/dist/hooks/use-mode-handlers.js.map +1 -1
  146. package/dist/hooks/use-model-selection.d.ts +6 -1
  147. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  148. package/dist/hooks/use-model-selection.js +50 -8
  149. package/dist/hooks/use-model-selection.js.map +1 -1
  150. package/dist/hooks/use-model-selection.test.js +306 -50
  151. package/dist/hooks/use-model-selection.test.js.map +1 -1
  152. package/dist/hooks/use-path-completion.d.ts +4 -0
  153. package/dist/hooks/use-path-completion.d.ts.map +1 -1
  154. package/dist/hooks/use-path-completion.js +23 -17
  155. package/dist/hooks/use-path-completion.js.map +1 -1
  156. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  157. package/dist/hooks/use-runtime-settings.js +7 -2
  158. package/dist/hooks/use-runtime-settings.js.map +1 -1
  159. package/dist/hooks/use-runtime-settings.test.d.ts +2 -0
  160. package/dist/hooks/use-runtime-settings.test.d.ts.map +1 -0
  161. package/dist/hooks/use-runtime-settings.test.js +45 -0
  162. package/dist/hooks/use-runtime-settings.test.js.map +1 -0
  163. package/dist/hooks/use-selection.d.ts +6 -2
  164. package/dist/hooks/use-selection.d.ts.map +1 -1
  165. package/dist/hooks/use-selection.js +53 -16
  166. package/dist/hooks/use-selection.js.map +1 -1
  167. package/dist/hooks/use-selection.test.d.ts +2 -0
  168. package/dist/hooks/use-selection.test.d.ts.map +1 -0
  169. package/dist/hooks/use-selection.test.js +132 -0
  170. package/dist/hooks/use-selection.test.js.map +1 -0
  171. package/dist/hooks/use-settings-completion.d.ts +19 -0
  172. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  173. package/dist/hooks/use-settings-completion.js +106 -18
  174. package/dist/hooks/use-settings-completion.js.map +1 -1
  175. package/dist/hooks/use-settings-completion.scroll.test.js +68 -29
  176. package/dist/hooks/use-settings-completion.scroll.test.js.map +1 -1
  177. package/dist/hooks/use-settings-completion.test.js +36 -1
  178. package/dist/hooks/use-settings-completion.test.js.map +1 -1
  179. package/dist/hooks/use-settings-value-completion.d.ts +7 -1
  180. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  181. package/dist/hooks/use-settings-value-completion.js +18 -7
  182. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  183. package/dist/hooks/use-slash-commands.d.ts +5 -0
  184. package/dist/hooks/use-slash-commands.d.ts.map +1 -1
  185. package/dist/hooks/use-slash-commands.js +22 -2
  186. package/dist/hooks/use-slash-commands.js.map +1 -1
  187. package/dist/hooks/use-trigger-detection.test.js +9 -6
  188. package/dist/hooks/use-trigger-detection.test.js.map +1 -1
  189. package/dist/hooks/use-undo-selection.d.ts +4 -0
  190. package/dist/hooks/use-undo-selection.d.ts.map +1 -1
  191. package/dist/hooks/use-undo-selection.js +18 -1
  192. package/dist/hooks/use-undo-selection.js.map +1 -1
  193. package/dist/inspect_zod.d.ts +2 -0
  194. package/dist/inspect_zod.d.ts.map +1 -0
  195. package/dist/inspect_zod.js +16 -0
  196. package/dist/inspect_zod.js.map +1 -0
  197. package/dist/lib/openai-agent-client.chat.test.js +40 -0
  198. package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
  199. package/dist/lib/openai-agent-client.d.ts +18 -4
  200. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  201. package/dist/lib/openai-agent-client.js +228 -32
  202. package/dist/lib/openai-agent-client.js.map +1 -1
  203. package/dist/lib/openai-agent-client.public-methods.test.js +193 -0
  204. package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
  205. package/dist/lib/openai-agent-client.test.js +71 -1
  206. package/dist/lib/openai-agent-client.test.js.map +1 -1
  207. package/dist/lib/retry-executor.js +45 -7
  208. package/dist/lib/retry-executor.js.map +1 -1
  209. package/dist/lib/retry-executor.test.js +63 -0
  210. package/dist/lib/retry-executor.test.js.map +1 -1
  211. package/dist/lib/tool-invoke.d.ts +3 -2
  212. package/dist/lib/tool-invoke.d.ts.map +1 -1
  213. package/dist/lib/tool-invoke.js +213 -10
  214. package/dist/lib/tool-invoke.js.map +1 -1
  215. package/dist/lib/tool-invoke.test.js +103 -0
  216. package/dist/lib/tool-invoke.test.js.map +1 -1
  217. package/dist/non-interactive.d.ts +1 -0
  218. package/dist/non-interactive.d.ts.map +1 -1
  219. package/dist/non-interactive.js +3 -1
  220. package/dist/non-interactive.js.map +1 -1
  221. package/dist/non-interactive.test.js +8 -1
  222. package/dist/non-interactive.test.js.map +1 -1
  223. package/dist/prompts/codex.md +105 -97
  224. package/dist/prompts/fragments/gpt-5.3-codex.md +7 -0
  225. package/dist/prompts/fragments/gpt-5.4-small.md +6 -0
  226. package/dist/prompts/fragments/gpt-5.4.md +7 -0
  227. package/dist/prompts/fragments/gpt-5.5.md +7 -0
  228. package/dist/prompts/gpt-5-modern.md +96 -54
  229. package/dist/prompts/plan-mode-info.md +14 -3
  230. package/dist/prompts/prompt-constructor.d.ts +19 -0
  231. package/dist/prompts/prompt-constructor.d.ts.map +1 -0
  232. package/dist/prompts/prompt-constructor.js +53 -0
  233. package/dist/prompts/prompt-constructor.js.map +1 -0
  234. package/dist/prompts/prompt-constructor.test.d.ts +2 -0
  235. package/dist/prompts/prompt-constructor.test.d.ts.map +1 -0
  236. package/dist/prompts/prompt-constructor.test.js +99 -0
  237. package/dist/prompts/prompt-constructor.test.js.map +1 -0
  238. package/dist/prompts/prompt-constructor.test.ts +112 -0
  239. package/dist/prompts/prompt-constructor.ts +91 -0
  240. package/dist/prompts/prompt-profiles.d.ts +17 -0
  241. package/dist/prompts/prompt-profiles.d.ts.map +1 -0
  242. package/dist/prompts/prompt-profiles.js +61 -0
  243. package/dist/prompts/prompt-profiles.js.map +1 -0
  244. package/dist/prompts/prompt-profiles.ts +77 -0
  245. package/dist/prompts/prompt-selector.d.ts.map +1 -1
  246. package/dist/prompts/prompt-selector.js +3 -21
  247. package/dist/prompts/prompt-selector.js.map +1 -1
  248. package/dist/prompts/prompt-selector.ts +3 -25
  249. package/dist/prompts/reasoning-efficiency.d.ts.map +1 -1
  250. package/dist/prompts/reasoning-efficiency.js +2 -0
  251. package/dist/prompts/reasoning-efficiency.js.map +1 -1
  252. package/dist/prompts/reasoning-efficiency.test.d.ts +2 -0
  253. package/dist/prompts/reasoning-efficiency.test.d.ts.map +1 -0
  254. package/dist/prompts/reasoning-efficiency.test.js +11 -0
  255. package/dist/prompts/reasoning-efficiency.test.js.map +1 -0
  256. package/dist/prompts/reasoning-efficiency.test.ts +12 -0
  257. package/dist/prompts/reasoning-efficiency.ts +2 -0
  258. package/dist/prompts/search-via-shell.test.js +19 -16
  259. package/dist/prompts/search-via-shell.test.js.map +1 -1
  260. package/dist/prompts/search-via-shell.test.ts +20 -16
  261. package/dist/prompts/subagent-delegation.test.js +12 -10
  262. package/dist/prompts/subagent-delegation.test.js.map +1 -1
  263. package/dist/prompts/subagent-delegation.test.ts +13 -10
  264. package/dist/prompts/worktree-hygiene.md +9 -0
  265. package/dist/providers/ai-sdk-logging-fetch.d.ts +1 -1
  266. package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -1
  267. package/dist/providers/ai-sdk-logging-fetch.js +145 -47
  268. package/dist/providers/ai-sdk-logging-fetch.js.map +1 -1
  269. package/dist/providers/ai-sdk-logging-fetch.test.js +202 -5
  270. package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -1
  271. package/dist/providers/codex-responses-model.d.ts +20 -0
  272. package/dist/providers/codex-responses-model.d.ts.map +1 -0
  273. package/dist/providers/codex-responses-model.js +170 -0
  274. package/dist/providers/codex-responses-model.js.map +1 -0
  275. package/dist/providers/codex-responses-model.test.d.ts +2 -0
  276. package/dist/providers/codex-responses-model.test.d.ts.map +1 -0
  277. package/dist/providers/codex-responses-model.test.js +240 -0
  278. package/dist/providers/codex-responses-model.test.js.map +1 -0
  279. package/dist/providers/codex.provider.d.ts +29 -0
  280. package/dist/providers/codex.provider.d.ts.map +1 -0
  281. package/dist/providers/codex.provider.js +486 -0
  282. package/dist/providers/codex.provider.js.map +1 -0
  283. package/dist/providers/codex.provider.test.d.ts +2 -0
  284. package/dist/providers/codex.provider.test.d.ts.map +1 -0
  285. package/dist/providers/codex.provider.test.js +634 -0
  286. package/dist/providers/codex.provider.test.js.map +1 -0
  287. package/dist/providers/custom-provider-adapter.test.js +56 -0
  288. package/dist/providers/custom-provider-adapter.test.js.map +1 -1
  289. package/dist/providers/fallback-responses-model.d.ts +20 -0
  290. package/dist/providers/fallback-responses-model.d.ts.map +1 -0
  291. package/dist/providers/fallback-responses-model.js +277 -0
  292. package/dist/providers/fallback-responses-model.js.map +1 -0
  293. package/dist/providers/fallback-responses-model.test.d.ts +2 -0
  294. package/dist/providers/fallback-responses-model.test.d.ts.map +1 -0
  295. package/dist/providers/fallback-responses-model.test.js +279 -0
  296. package/dist/providers/fallback-responses-model.test.js.map +1 -0
  297. package/dist/providers/fetch/compose.d.ts +7 -0
  298. package/dist/providers/fetch/compose.d.ts.map +1 -0
  299. package/dist/providers/fetch/compose.js +20 -0
  300. package/dist/providers/fetch/compose.js.map +1 -0
  301. package/dist/providers/fetch/composer.d.ts +13 -0
  302. package/dist/providers/fetch/composer.d.ts.map +1 -0
  303. package/dist/providers/fetch/composer.js +15 -0
  304. package/dist/providers/fetch/composer.js.map +1 -0
  305. package/dist/providers/fetch/composer.test.d.ts +2 -0
  306. package/dist/providers/fetch/composer.test.d.ts.map +1 -0
  307. package/dist/providers/fetch/composer.test.js +448 -0
  308. package/dist/providers/fetch/composer.test.js.map +1 -0
  309. package/dist/providers/fetch/logging-middleware.d.ts +16 -0
  310. package/dist/providers/fetch/logging-middleware.d.ts.map +1 -0
  311. package/dist/providers/fetch/logging-middleware.js +214 -0
  312. package/dist/providers/fetch/logging-middleware.js.map +1 -0
  313. package/dist/providers/index.d.ts +1 -0
  314. package/dist/providers/index.d.ts.map +1 -1
  315. package/dist/providers/index.js +1 -0
  316. package/dist/providers/index.js.map +1 -1
  317. package/dist/providers/llama-cpp.provider.d.ts +3 -0
  318. package/dist/providers/llama-cpp.provider.d.ts.map +1 -0
  319. package/dist/providers/llama-cpp.provider.js +34 -0
  320. package/dist/providers/llama-cpp.provider.js.map +1 -0
  321. package/dist/providers/openai-compatible-middleware.d.ts +7 -0
  322. package/dist/providers/openai-compatible-middleware.d.ts.map +1 -0
  323. package/dist/providers/openai-compatible-middleware.js +133 -0
  324. package/dist/providers/openai-compatible-middleware.js.map +1 -0
  325. package/dist/providers/openai-compatible-models.d.ts +6 -0
  326. package/dist/providers/openai-compatible-models.d.ts.map +1 -0
  327. package/dist/providers/openai-compatible-models.js +17 -0
  328. package/dist/providers/openai-compatible-models.js.map +1 -0
  329. package/dist/providers/openai-compatible-response-normalizer.d.ts +7 -0
  330. package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -0
  331. package/dist/providers/openai-compatible-response-normalizer.js +58 -0
  332. package/dist/providers/openai-compatible-response-normalizer.js.map +1 -0
  333. package/dist/providers/openai-compatible.provider.d.ts +4 -1
  334. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  335. package/dist/providers/openai-compatible.provider.js +68 -324
  336. package/dist/providers/openai-compatible.provider.js.map +1 -1
  337. package/dist/providers/openai-compatible.provider.test.js +106 -1
  338. package/dist/providers/openai-compatible.provider.test.js.map +1 -1
  339. package/dist/providers/openai.provider.js +53 -1
  340. package/dist/providers/openai.provider.js.map +1 -1
  341. package/dist/providers/opencode.provider.d.ts +19 -0
  342. package/dist/providers/opencode.provider.d.ts.map +1 -0
  343. package/dist/providers/opencode.provider.js +45 -0
  344. package/dist/providers/opencode.provider.js.map +1 -0
  345. package/dist/providers/openrouter.provider.d.ts +2 -1
  346. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  347. package/dist/providers/openrouter.provider.js +39 -22
  348. package/dist/providers/openrouter.provider.js.map +1 -1
  349. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts +2 -0
  350. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts.map +1 -0
  351. package/dist/providers/openrouter.provider.request-preprocessing.test.js +51 -0
  352. package/dist/providers/openrouter.provider.request-preprocessing.test.js.map +1 -0
  353. package/dist/providers/registry.d.ts +1 -0
  354. package/dist/providers/registry.d.ts.map +1 -1
  355. package/dist/providers/registry.js.map +1 -1
  356. package/dist/providers/registry.test.js +11 -2
  357. package/dist/providers/registry.test.js.map +1 -1
  358. package/dist/scripts/eval-auto-approval/dataset.d.ts +3 -3
  359. package/dist/services/approval-flow-coordinator.d.ts.map +1 -1
  360. package/dist/services/approval-flow-coordinator.js +17 -1
  361. package/dist/services/approval-flow-coordinator.js.map +1 -1
  362. package/dist/services/approval-flow-coordinator.test.js +22 -0
  363. package/dist/services/approval-flow-coordinator.test.js.map +1 -1
  364. package/dist/services/command-message-streaming.d.ts.map +1 -1
  365. package/dist/services/command-message-streaming.js +0 -3
  366. package/dist/services/command-message-streaming.js.map +1 -1
  367. package/dist/services/command-message-streaming.test.js +4 -2
  368. package/dist/services/command-message-streaming.test.js.map +1 -1
  369. package/dist/services/conversation-clear-save.test.d.ts +2 -0
  370. package/dist/services/conversation-clear-save.test.d.ts.map +1 -0
  371. package/dist/services/conversation-clear-save.test.js +57 -0
  372. package/dist/services/conversation-clear-save.test.js.map +1 -0
  373. package/dist/services/conversation-events.d.ts +44 -1
  374. package/dist/services/conversation-events.d.ts.map +1 -1
  375. package/dist/services/conversation-history-repair.d.ts +25 -0
  376. package/dist/services/conversation-history-repair.d.ts.map +1 -0
  377. package/dist/services/conversation-history-repair.js +227 -0
  378. package/dist/services/conversation-history-repair.js.map +1 -0
  379. package/dist/services/conversation-history-repair.test.d.ts +2 -0
  380. package/dist/services/conversation-history-repair.test.d.ts.map +1 -0
  381. package/dist/services/conversation-history-repair.test.js +76 -0
  382. package/dist/services/conversation-history-repair.test.js.map +1 -0
  383. package/dist/services/conversation-integration.test.js +3 -1
  384. package/dist/services/conversation-integration.test.js.map +1 -1
  385. package/dist/services/conversation-log-events.d.ts +107 -0
  386. package/dist/services/conversation-log-events.d.ts.map +1 -0
  387. package/dist/services/conversation-log-events.js +12 -0
  388. package/dist/services/conversation-log-events.js.map +1 -0
  389. package/dist/services/conversation-log-writer.d.ts +40 -0
  390. package/dist/services/conversation-log-writer.d.ts.map +1 -0
  391. package/dist/services/conversation-log-writer.js +264 -0
  392. package/dist/services/conversation-log-writer.js.map +1 -0
  393. package/dist/services/conversation-persistence-types.d.ts +14 -0
  394. package/dist/services/conversation-persistence-types.d.ts.map +1 -0
  395. package/dist/services/conversation-persistence-types.js +2 -0
  396. package/dist/services/conversation-persistence-types.js.map +1 -0
  397. package/dist/services/conversation-persistence.d.ts +40 -38
  398. package/dist/services/conversation-persistence.d.ts.map +1 -1
  399. package/dist/services/conversation-persistence.js +312 -71
  400. package/dist/services/conversation-persistence.js.map +1 -1
  401. package/dist/services/conversation-persistence.test.js +485 -355
  402. package/dist/services/conversation-persistence.test.js.map +1 -1
  403. package/dist/services/conversation-replay.d.ts +26 -0
  404. package/dist/services/conversation-replay.d.ts.map +1 -0
  405. package/dist/services/conversation-replay.js +252 -0
  406. package/dist/services/conversation-replay.js.map +1 -0
  407. package/dist/services/conversation-replay.test.d.ts +2 -0
  408. package/dist/services/conversation-replay.test.d.ts.map +1 -0
  409. package/dist/services/conversation-replay.test.js +153 -0
  410. package/dist/services/conversation-replay.test.js.map +1 -0
  411. package/dist/services/conversation-result-builder.d.ts.map +1 -1
  412. package/dist/services/conversation-result-builder.js +8 -2
  413. package/dist/services/conversation-result-builder.js.map +1 -1
  414. package/dist/services/conversation-result-builder.test.js +53 -0
  415. package/dist/services/conversation-result-builder.test.js.map +1 -1
  416. package/dist/services/conversation-retry-policy.d.ts +24 -0
  417. package/dist/services/conversation-retry-policy.d.ts.map +1 -1
  418. package/dist/services/conversation-retry-policy.js +68 -4
  419. package/dist/services/conversation-retry-policy.js.map +1 -1
  420. package/dist/services/conversation-retry-policy.test.js +99 -2
  421. package/dist/services/conversation-retry-policy.test.js.map +1 -1
  422. package/dist/services/conversation-service.d.ts +12 -2
  423. package/dist/services/conversation-service.d.ts.map +1 -1
  424. package/dist/services/conversation-service.js +29 -3
  425. package/dist/services/conversation-service.js.map +1 -1
  426. package/dist/services/conversation-session.auto-approval.test.js +2 -1
  427. package/dist/services/conversation-session.auto-approval.test.js.map +1 -1
  428. package/dist/services/conversation-session.d.ts +17 -1
  429. package/dist/services/conversation-session.d.ts.map +1 -1
  430. package/dist/services/conversation-session.js +580 -134
  431. package/dist/services/conversation-session.js.map +1 -1
  432. package/dist/services/conversation-store.d.ts.map +1 -1
  433. package/dist/services/conversation-store.js +6 -5
  434. package/dist/services/conversation-store.js.map +1 -1
  435. package/dist/services/conversation-store.test.js +34 -0
  436. package/dist/services/conversation-store.test.js.map +1 -1
  437. package/dist/services/input-surge-guard.d.ts +4 -0
  438. package/dist/services/input-surge-guard.d.ts.map +1 -1
  439. package/dist/services/input-surge-guard.js +2 -2
  440. package/dist/services/input-surge-guard.js.map +1 -1
  441. package/dist/services/input-surge-guard.test.js +15 -1
  442. package/dist/services/input-surge-guard.test.js.map +1 -1
  443. package/dist/services/large-uncached-input-guard.d.ts +35 -0
  444. package/dist/services/large-uncached-input-guard.d.ts.map +1 -0
  445. package/dist/services/large-uncached-input-guard.js +127 -0
  446. package/dist/services/large-uncached-input-guard.js.map +1 -0
  447. package/dist/services/large-uncached-input-guard.test.d.ts +2 -0
  448. package/dist/services/large-uncached-input-guard.test.d.ts.map +1 -0
  449. package/dist/services/large-uncached-input-guard.test.js +160 -0
  450. package/dist/services/large-uncached-input-guard.test.js.map +1 -0
  451. package/dist/services/logging-contract.d.ts +1 -1
  452. package/dist/services/logging-service.d.ts +4 -0
  453. package/dist/services/logging-service.d.ts.map +1 -1
  454. package/dist/services/logging-service.js +91 -33
  455. package/dist/services/logging-service.js.map +1 -1
  456. package/dist/services/model-service.d.ts +2 -0
  457. package/dist/services/model-service.d.ts.map +1 -1
  458. package/dist/services/model-service.js +7 -1
  459. package/dist/services/model-service.js.map +1 -1
  460. package/dist/services/provider-traffic.d.ts +87 -0
  461. package/dist/services/provider-traffic.d.ts.map +1 -0
  462. package/dist/services/provider-traffic.js +603 -0
  463. package/dist/services/provider-traffic.js.map +1 -0
  464. package/dist/services/provider-traffic.test.d.ts +2 -0
  465. package/dist/services/provider-traffic.test.d.ts.map +1 -0
  466. package/dist/services/provider-traffic.test.js +475 -0
  467. package/dist/services/provider-traffic.test.js.map +1 -0
  468. package/dist/services/rtk-service.d.ts.map +1 -1
  469. package/dist/services/rtk-service.js +1 -2
  470. package/dist/services/rtk-service.js.map +1 -1
  471. package/dist/services/service-interfaces.d.ts +16 -0
  472. package/dist/services/service-interfaces.d.ts.map +1 -1
  473. package/dist/services/settings-schema.d.ts +36 -28
  474. package/dist/services/settings-schema.d.ts.map +1 -1
  475. package/dist/services/settings-schema.js +7 -2
  476. package/dist/services/settings-schema.js.map +1 -1
  477. package/dist/services/settings-service.js +6 -6
  478. package/dist/services/settings-service.js.map +1 -1
  479. package/dist/services/settings-sources.d.ts.map +1 -1
  480. package/dist/services/settings-sources.js +1 -0
  481. package/dist/services/settings-sources.js.map +1 -1
  482. package/dist/services/shell-auto-approval-evaluator.d.ts +1 -1
  483. package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
  484. package/dist/services/shell-auto-approval-evaluator.js +284 -81
  485. package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
  486. package/dist/services/shell-auto-approval-evaluator.test.js +215 -15
  487. package/dist/services/shell-auto-approval-evaluator.test.js.map +1 -1
  488. package/dist/services/stream-event-processor.d.ts +4 -0
  489. package/dist/services/stream-event-processor.d.ts.map +1 -1
  490. package/dist/services/stream-event-processor.js +78 -39
  491. package/dist/services/stream-event-processor.js.map +1 -1
  492. package/dist/services/stream-event-processor.test.js +71 -0
  493. package/dist/services/stream-event-processor.test.js.map +1 -1
  494. package/dist/services/subagents/subagent-manager.d.ts +2 -0
  495. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  496. package/dist/services/subagents/subagent-manager.js +124 -21
  497. package/dist/services/subagents/subagent-manager.js.map +1 -1
  498. package/dist/services/subagents/subagent-manager.test.js +453 -0
  499. package/dist/services/subagents/subagent-manager.test.js.map +1 -1
  500. package/dist/services/terminal-result-collector.d.ts.map +1 -1
  501. package/dist/services/terminal-result-collector.js +6 -1
  502. package/dist/services/terminal-result-collector.js.map +1 -1
  503. package/dist/services/tool-call-arguments.d.ts +20 -0
  504. package/dist/services/tool-call-arguments.d.ts.map +1 -0
  505. package/dist/services/tool-call-arguments.js +49 -0
  506. package/dist/services/tool-call-arguments.js.map +1 -0
  507. package/dist/services/tool-execution-ledger.d.ts +35 -0
  508. package/dist/services/tool-execution-ledger.d.ts.map +1 -0
  509. package/dist/services/tool-execution-ledger.js +204 -0
  510. package/dist/services/tool-execution-ledger.js.map +1 -0
  511. package/dist/services/tool-execution-ledger.test.d.ts +2 -0
  512. package/dist/services/tool-execution-ledger.test.d.ts.map +1 -0
  513. package/dist/services/tool-execution-ledger.test.js +96 -0
  514. package/dist/services/tool-execution-ledger.test.js.map +1 -0
  515. package/dist/tools/apply-patch.d.ts +8 -0
  516. package/dist/tools/apply-patch.d.ts.map +1 -1
  517. package/dist/tools/apply-patch.js +157 -2
  518. package/dist/tools/apply-patch.js.map +1 -1
  519. package/dist/tools/apply-patch.test.js +81 -0
  520. package/dist/tools/apply-patch.test.js.map +1 -1
  521. package/dist/tools/search-replace.d.ts.map +1 -1
  522. package/dist/tools/search-replace.js +92 -140
  523. package/dist/tools/search-replace.js.map +1 -1
  524. package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
  525. package/dist/utils/command-safety/path-analysis.js +143 -35
  526. package/dist/utils/command-safety/path-analysis.js.map +1 -1
  527. package/dist/utils/conversation-event-handler.d.ts.map +1 -1
  528. package/dist/utils/conversation-event-handler.js +52 -4
  529. package/dist/utils/conversation-event-handler.js.map +1 -1
  530. package/dist/utils/conversation-event-handler.test.js +175 -0
  531. package/dist/utils/conversation-event-handler.test.js.map +1 -1
  532. package/dist/utils/error-helpers.d.ts +1 -0
  533. package/dist/utils/error-helpers.d.ts.map +1 -1
  534. package/dist/utils/error-helpers.js +61 -0
  535. package/dist/utils/error-helpers.js.map +1 -1
  536. package/dist/utils/error-helpers.test.js +13 -1
  537. package/dist/utils/error-helpers.test.js.map +1 -1
  538. package/dist/utils/ink-render-options.d.ts +1 -1
  539. package/dist/utils/ink-render-options.d.ts.map +1 -1
  540. package/dist/utils/ink-render-options.js +1 -1
  541. package/dist/utils/ink-render-options.js.map +1 -1
  542. package/dist/utils/streaming-session-factory.d.ts +2 -0
  543. package/dist/utils/streaming-session-factory.d.ts.map +1 -1
  544. package/dist/utils/streaming-session-factory.js +4 -0
  545. package/dist/utils/streaming-session-factory.js.map +1 -1
  546. package/package.json +2 -2
@@ -1,135 +1,39 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import { Box, Text } from 'ink';
3
3
  import { getAllProviders } from '../providers/index.js';
4
4
  import { hasProviderCredentials } from '../utils/provider-credentials.js';
5
- const ProviderTabs = ({ activeProvider, canSwitch = true, settingsService }) => {
6
- const providers = getAllProviders().map((p) => ({
5
+ import { MenuContainer } from './Common/MenuContainer.js';
6
+ import { ScrollableTabBar } from './Common/ScrollableTabBar.js';
7
+ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = false, error = null, scrollOffset = 0, maxHeight = 10, canSwitchProvider = true, settingsService, }) => {
8
+ const tabItems = useMemo(() => getAllProviders().map((p) => ({
7
9
  id: p.id,
8
10
  label: p.label,
9
11
  hasCredentials: hasProviderCredentials(settingsService, p.id),
10
- }));
11
- const terminalWidth = process.stdout.columns || 80;
12
- const labelLength = canSwitch ? 'Tab/←→ → switch provider'.length : 0;
13
- const availableWidth = terminalWidth - labelLength - 2;
14
- const getTabWidth = (p) => {
15
- return 1 + p.label.length + (!p.hasCredentials ? 9 : 0) + 1; // " {label}{ (no key)} "
16
- };
17
- const activeIndex = providers.findIndex((p) => p.id === activeProvider);
18
- const safeActiveIndex = activeIndex >= 0 ? activeIndex : 0;
19
- let start = safeActiveIndex;
20
- let end = safeActiveIndex;
21
- let currentWidth = getTabWidth(providers[safeActiveIndex]) + 4; // +4 for "◀ " and " ▶"
22
- while (true) {
23
- let expanded = false;
24
- // Try to expand right
25
- if (end + 1 < providers.length) {
26
- const rightWidth = getTabWidth(providers[end + 1]) + 3; // " │ "
27
- if (currentWidth + rightWidth <= availableWidth) {
28
- currentWidth += rightWidth;
29
- end++;
30
- expanded = true;
31
- }
32
- }
33
- // Try to expand left
34
- if (start - 1 >= 0) {
35
- const leftWidth = getTabWidth(providers[start - 1]) + 3; // " │ "
36
- if (currentWidth + leftWidth <= availableWidth) {
37
- currentWidth += leftWidth;
38
- start--;
39
- expanded = true;
40
- }
41
- }
42
- if (!expanded)
43
- break;
44
- }
45
- const visibleProviders = providers.slice(start, end + 1);
46
- const hasLeftScroll = start > 0;
47
- const hasRightScroll = end < providers.length - 1;
48
- return (React.createElement(Box, { flexDirection: "column" },
49
- React.createElement(Box, { justifyContent: "space-between" },
50
- React.createElement(Box, null,
51
- hasLeftScroll && React.createElement(Text, { color: "#64748b" }, "\u25C0 "),
52
- visibleProviders.map((provider, index) => {
53
- const isActive = provider.id === activeProvider;
54
- const isDisabled = !provider.hasCredentials;
55
- return (React.createElement(Box, { key: provider.id },
56
- React.createElement(Text, { inverse: isActive, color: isActive ? 'magenta' : isDisabled ? 'red' : '#64748b', bold: isActive, strikethrough: isDisabled },
57
- ' ',
58
- provider.label,
59
- isDisabled ? ' (no key)' : '',
60
- ' '),
61
- index < visibleProviders.length - 1 && React.createElement(Text, { color: "#64748b" }, ' │ ')));
62
- }),
63
- hasRightScroll && React.createElement(Text, { color: "#64748b" }, " \u25B6")),
64
- canSwitch && React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider")),
65
- !canSwitch && (React.createElement(Box, { marginTop: 0 },
66
- React.createElement(Text, { color: "yellow" }, "\u26A0 Provider can only be changed at the start of a new conversation (/clear to reset)")))));
67
- };
68
- const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = false, error = null, scrollOffset = 0, maxHeight = 10, canSwitchProvider = true, settingsService, }) => {
69
- const header = (React.createElement(ProviderTabs, { activeProvider: provider, canSwitch: canSwitchProvider, settingsService: settingsService }));
70
- if (loading) {
71
- return (React.createElement(Box, { flexDirection: "column" },
72
- header,
73
- React.createElement(Box, { borderStyle: "round", borderColor: "magenta", paddingX: 1 },
74
- React.createElement(Text, { color: "magenta" },
75
- "Loading models",
76
- provider ? ` from ${provider}` : '',
77
- "\u2026"))));
78
- }
79
- if (error) {
80
- return (React.createElement(Box, { flexDirection: "column" },
81
- header,
82
- React.createElement(Box, { borderStyle: "round", borderColor: "red", paddingX: 1 },
83
- React.createElement(Text, { color: "red" },
84
- "Unable to load models: ",
85
- error)),
86
- React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel")));
87
- }
88
- if (items.length === 0) {
89
- return (React.createElement(Box, { flexDirection: "column" },
90
- header,
91
- React.createElement(Box, { borderStyle: "round", borderColor: "magenta", paddingX: 1 },
92
- React.createElement(Text, { color: "#64748b" },
93
- "No models match \"",
94
- query || '*',
95
- "\"")),
96
- React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel")));
97
- }
98
- const visibleItems = items.slice(scrollOffset, scrollOffset + maxHeight);
99
- const hasScrollUp = scrollOffset > 0;
100
- const hasScrollDown = scrollOffset + maxHeight < items.length;
12
+ })), [settingsService]);
13
+ const tabBar = (React.createElement(ScrollableTabBar, { items: tabItems, activeItemId: provider ?? '', getItemWidth: (p) => 1 + p.label.length + (!p.hasCredentials ? 9 : 0) + 1, renderTab: (p, isActive) => {
14
+ const isDisabled = !p.hasCredentials;
15
+ return (React.createElement(Text, { inverse: isActive, color: isActive ? 'magenta' : isDisabled ? 'red' : '#64748b', bold: isActive, strikethrough: isDisabled },
16
+ ' ',
17
+ p.label,
18
+ isDisabled ? ' (no key)' : '',
19
+ ' '));
20
+ }, hint: canSwitchProvider ? 'Tab/←→ switch provider' : undefined }));
101
21
  return (React.createElement(Box, { flexDirection: "column" },
102
- header,
103
- React.createElement(Box, { borderStyle: "round", borderColor: "magenta", paddingX: 1, flexDirection: "column" },
104
- React.createElement(Box, { justifyContent: "space-between" },
105
- React.createElement(Text, { color: "#64748b" },
106
- items.length,
107
- " suggestion",
108
- items.length === 1 ? '' : 's'),
109
- items.length > maxHeight && (React.createElement(Text, { color: "#64748b" },
110
- scrollOffset + 1,
111
- "-",
112
- Math.min(scrollOffset + maxHeight, items.length),
113
- "/",
114
- items.length))),
115
- hasScrollUp && React.createElement(Text, { color: "#64748b" },
116
- "\u2191 ",
117
- scrollOffset,
118
- " more"),
119
- visibleItems.map((item, visibleIndex) => {
120
- const actualIndex = scrollOffset + visibleIndex;
121
- const isSelected = actualIndex === selectedIndex;
122
- return (React.createElement(Box, { key: item.id },
123
- React.createElement(Text, { inverse: isSelected, color: isSelected ? 'magenta' : undefined, bold: isSelected }, item.id),
124
- item.name && React.createElement(Text, { color: isSelected ? 'white' : '#64748b' },
125
- " \u2014 ",
126
- item.name)));
127
- }),
128
- hasScrollDown && React.createElement(Text, { color: "#64748b" },
129
- "\u2193 ",
130
- items.length - scrollOffset - maxHeight,
131
- " more")),
132
- React.createElement(Text, { color: "#64748b" }, "Enter \u2192 set model \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll")));
22
+ tabBar,
23
+ !canSwitchProvider && (React.createElement(Box, { marginTop: 0 },
24
+ React.createElement(Text, { color: "yellow" }, "\u26A0 Provider can only be changed at the start of a new conversation (/clear to reset)"))),
25
+ 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, headerRight: React.createElement(Text, { color: "#64748b" },
26
+ items.length,
27
+ " suggestion",
28
+ items.length === 1 ? '' : 's'), fallbackText: React.createElement(Text, { color: "#64748b" },
29
+ "No models match \"",
30
+ query || '*',
31
+ "\""), footer: React.createElement(Text, { color: "#64748b" }, "Enter \u2192 set model \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll"), footerOutsideBorder: true, renderItem: (item, _actualIndex, isSelected) => (React.createElement(Box, { key: item.id },
32
+ React.createElement(Text, { inverse: isSelected, color: isSelected ? 'magenta' : undefined, bold: isSelected }, item.id),
33
+ item.name && React.createElement(Text, { color: isSelected ? 'white' : '#64748b' },
34
+ " \u2014 ",
35
+ item.name))) }),
36
+ (error || (items.length === 0 && !loading)) && (React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel"))));
133
37
  };
134
38
  export default ModelSelectionMenu;
135
39
  //# sourceMappingURL=ModelSelectionMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"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"}
@@ -44,7 +44,8 @@ test('ModelSelectionMenu shows provider in header if specified', (t) => {
44
44
  t.true(lastFrame()?.includes('OpenAI'));
45
45
  });
46
46
  test('ModelSelectionMenu provider tabs include custom providers from settings', (t) => {
47
- const providerId = `lmstudio-ui-${Date.now()}-${Math.random()}`;
47
+ // Use a short provider name that will fit in the visible tab area
48
+ const providerId = `ls`;
48
49
  const settingsService = createMockSettingsService({
49
50
  providers: [
50
51
  {
@@ -55,7 +56,9 @@ test('ModelSelectionMenu provider tabs include custom providers from settings',
55
56
  });
56
57
  const { lastFrame } = render(React.createElement(ModelSelectionMenu, { settingsService: settingsService, items: mockModels, selectedIndex: 0, query: "", provider: "openai" }));
57
58
  const output = lastFrame();
58
- t.true(output?.includes(providerId));
59
+ // Check that the short provider name appears in the tab bar
60
+ // or that there's a right-scroll indicator (▶) meaning there are more tabs
61
+ t.true(output?.includes(providerId) || output?.includes('▶'), 'custom provider should appear in tab bar');
59
62
  });
60
63
  test('ModelSelectionMenu shows scroll indicators for long lists', (t) => {
61
64
  const longList = Array.from({ length: 20 }, (_, i) => ({
@@ -76,8 +79,9 @@ test('ModelSelectionMenu does not show scroll indicators for short lists', (t) =
76
79
  const { lastFrame } = render(React.createElement(ModelSelectionMenu, { settingsService: createMockSettingsService(), items: mockModels, selectedIndex: 0, query: "", scrollOffset: 0, maxHeight: 10 }));
77
80
  const output = lastFrame();
78
81
  // Should not show position indicator for lists shorter than maxHeight
79
- t.false(output?.includes('/'));
80
- // For short lists with no scroll, should not have these indicators
81
- t.false(output?.includes('more'));
82
+ // Check for the specific pagination format N-N/N rather than any "/"
83
+ t.false(output?.match(/\d+-\d+\/\d+/) !== null);
84
+ // For short lists with no scroll, should not have "N more" indicators
85
+ t.false(output?.match(/\d+ more/) !== null);
82
86
  });
83
87
  //# sourceMappingURL=ModelSelectionMenu.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelectionMenu.test.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.test.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,UAAU,GAAgB;IAC9B,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACpD,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC9D,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE;CACvE,CAAC;AAEF,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,EAAE,EAAE;IACrD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,yBAAyB,EAAE,EAC5C,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,OAAO,EAAE,IAAI,GACb,CACH,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE,EAAE;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,yBAAyB,EAAE,EAC5C,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,KAAK,EAAC,iBAAiB,GACvB,CACH,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,wCAAwC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE,EAAE;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IAAC,eAAe,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAC,KAAK,GAAG,CAC9G,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IAAC,eAAe,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAC,EAAE,GAAG,CACnH,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE,EAAE;IACxD,iEAAiE;IACjE,oDAAoD;IACpD,0EAA0E;IAC1E,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IAAC,eAAe,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAC,EAAE,GAAG,CACnH,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,CAAC,CAAC,EAAE,EAAE;IACrE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,yBAAyB,EAAE,EAC5C,KAAK,EAAE,UAAU,EACjB,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,QAAQ,EAAC,QAAQ,GACjB,CACH,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,CAAC,CAAC,EAAE,EAAE;IACpF,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,yBAAyB,CAAC;QAChD,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,uBAAuB;aACjC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,UAAU,EACjB,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,QAAQ,EAAC,QAAQ,GACjB,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,CAAC,CAAC,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,yBAAyB,EAAE,EAC5C,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,YAAY,EAAE,CAAC,EACf,SAAS,EAAE,EAAE,GACb,CACH,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,wCAAwC;IACxC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,kCAAkC;IAClC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,2DAA2D;IAC3D,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,kBAAkB,IACjB,eAAe,EAAE,yBAAyB,EAAE,EAC5C,KAAK,EAAE,UAAU,EACjB,aAAa,EAAE,CAAC,EAChB,KAAK,EAAC,EAAE,EACR,YAAY,EAAE,CAAC,EACf,SAAS,EAAE,EAAE,GACb,CACH,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,sEAAsE;IACtE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,mEAAmE;IACnE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ModelSelectionMenu.test.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.test.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,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,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAuEhC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,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,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAwChC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,61 +1,21 @@
1
1
  import React from 'react';
2
2
  import { Box, Text } from 'ink';
3
+ import { MenuContainer } from './Common/MenuContainer.js';
3
4
  const PathSelectionMenu = ({ items, selectedIndex, query, loading = false, error = null, scrollOffset = 0, maxHeight = 10, }) => {
4
- if (loading) {
5
- return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column" },
6
- React.createElement(Text, { color: "cyan" }, "Loading project paths\u2026")));
7
- }
8
- if (error) {
9
- return (React.createElement(Box, { borderStyle: "round", borderColor: "red", paddingX: 1, flexDirection: "column" },
10
- React.createElement(Text, { color: "red" },
11
- "Unable to load paths: ",
12
- error)));
13
- }
14
- if (items.length === 0) {
15
- return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column" },
16
- React.createElement(Text, { color: "#64748b" },
17
- "No matches for \"@",
18
- query,
19
- "\"")));
20
- }
21
- const visibleItems = items.slice(scrollOffset, scrollOffset + maxHeight);
22
- const hasScrollUp = scrollOffset > 0;
23
- const hasScrollDown = scrollOffset + maxHeight < items.length;
24
- return (React.createElement(Box, { flexDirection: "column" },
25
- React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column" },
26
- React.createElement(Box, { justifyContent: "space-between" },
27
- React.createElement(Text, { color: "#64748b" },
28
- "@",
29
- query || '*',
30
- " \u00B7 ",
31
- items.length,
32
- " suggestion",
33
- items.length === 1 ? '' : 's'),
34
- items.length > maxHeight && (React.createElement(Text, { color: "#64748b" },
35
- scrollOffset + 1,
36
- "-",
37
- Math.min(scrollOffset + maxHeight, items.length),
38
- "/",
39
- items.length))),
40
- hasScrollUp && React.createElement(Text, { color: "#64748b" },
41
- "\u2191 ",
42
- scrollOffset,
43
- " more"),
44
- visibleItems.map((item, visibleIndex) => {
45
- const actualIndex = scrollOffset + visibleIndex;
46
- const isSelected = actualIndex === selectedIndex;
47
- const icon = item.type === 'directory' ? '📁' : '📄';
48
- return (React.createElement(Box, { key: item.path },
49
- React.createElement(Text, { color: isSelected ? 'cyan' : undefined, inverse: isSelected },
50
- icon,
51
- " ",
52
- item.path)));
53
- }),
54
- hasScrollDown && React.createElement(Text, { color: "#64748b" },
55
- "\u2193 ",
56
- items.length - scrollOffset - maxHeight,
57
- " more")),
58
- React.createElement(Text, { color: "#64748b" }, "Enter \u2192 insert with space \u00B7 Tab \u2192 insert w/o trailing space \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll")));
5
+ return (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, title: React.createElement(Text, { color: "#64748b" },
6
+ "@",
7
+ query || '*',
8
+ " \u00B7 ",
9
+ items.length,
10
+ " suggestion",
11
+ items.length === 1 ? '' : 's'), 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) => {
12
+ const icon = item.type === 'directory' ? '📁' : '📄';
13
+ return (React.createElement(Box, { key: item.path },
14
+ React.createElement(Text, { color: isSelected ? 'cyan' : undefined, inverse: isSelected },
15
+ icon,
16
+ " ",
17
+ item.path)));
18
+ } }));
59
19
  };
60
20
  export default PathSelectionMenu;
61
21
  //# sourceMappingURL=PathSelectionMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAahC,MAAM,iBAAiB,GAAc,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,EACL,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAC7E,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kCAA8B,CAC5C,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAC5E,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK;;gBAAwB,KAAK,CAAQ,CAClD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CACL,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAC7E,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;gBAAmB,KAAK;qBAAS,CAClD,CACP,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAE9D,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAC7E,oBAAC,GAAG,IAAC,cAAc,EAAC,eAAe;gBACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;oBACjB,KAAK,IAAI,GAAG;;oBAAK,KAAK,CAAC,MAAM;;oBAC9B,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CACzB;gBACN,KAAK,CAAC,MAAM,GAAG,SAAS,IAAI,CAC3B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;oBAClB,YAAY,GAAG,CAAC;;oBAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;;oBAAG,KAAK,CAAC,MAAM,CAC9E,CACR,CACG;YACL,WAAW,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;gBAAI,YAAY;wBAAa;YACjE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE;gBACvC,MAAM,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;gBAChD,MAAM,UAAU,GAAG,WAAW,KAAK,aAAa,CAAC;gBACjD,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,CAAC;YACD,aAAa,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;gBAAI,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,SAAS;wBAAa,CAC3F;QACN,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,4IAEd,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../source/components/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,2BAA2B,CAAC;AAY1D,MAAM,iBAAiB,GAAc,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,EACL,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,OAAO,CACL,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,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS;;YACjB,KAAK,IAAI,GAAG;;YAAK,KAAK,CAAC,MAAM;;YAC9B,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CACzB,EAET,YAAY,EAAE,oBAAoB,KAAK,GAAG,EAC1C,MAAM,EAAC,uIAA0F,EACjG,mBAAmB,EAAE,IAAI,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI;gBACjB,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU;oBAC9D,IAAI;;oBAAG,IAAI,CAAC,IAAI,CACZ,CACH,CACP,CAAC;QACJ,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import { FC } from 'react';
2
- import type { SettingCompletionItem } from '../hooks/use-settings-completion.js';
2
+ import { type SettingCompletionItem, type SettingsCategory } from '../hooks/use-settings-completion.js';
3
3
  type Props = {
4
4
  items: SettingCompletionItem[];
5
5
  selectedIndex: number;
6
6
  scrollOffset?: number;
7
7
  query: string;
8
+ isSearchingAll?: boolean;
9
+ activeCategoryId: string;
10
+ categories: SettingsCategory[];
8
11
  };
9
12
  declare const SettingsSelectionMenu: FC<Props>;
10
13
  export default SettingsSelectionMenu;
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAIjF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA0DF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CA6HpC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"SettingsSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC;AAiCF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAwHpC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,40 +1,11 @@
1
1
  import React from 'react';
2
2
  import fs from 'node:fs';
3
3
  import { Box, Text } from 'ink';
4
+ import { getSettingCategory, } from '../hooks/use-settings-completion.js';
4
5
  import { SETTING_KEYS } from '../services/settings-service.js';
5
6
  import { getRtkBinaryPath } from '../services/rtk-service.js';
6
- function titleCaseCategory(category) {
7
- if (!category || category === 'other')
8
- return 'Other Settings';
9
- if (category === 'common')
10
- return 'Common Settings';
11
- if (category === 'ui')
12
- return 'User Interface';
13
- if (category === 'webSearch')
14
- return 'Web Search';
15
- if (category === 'agent')
16
- return 'Agent Configuration';
17
- if (category === 'openai')
18
- return 'OpenAI Provider';
19
- if (category === 'anthropic')
20
- return 'Anthropic Provider';
21
- if (category === 'openrouter')
22
- return 'OpenRouter Provider';
23
- return category.charAt(0).toUpperCase() + category.slice(1);
24
- }
25
- function getCategoryForKey(key) {
26
- const COMMON_KEYS = new Set([
27
- 'agent.model',
28
- 'agent.reasoningEffort',
29
- 'agent.temperature',
30
- 'agent.maxTurns',
31
- 'logging.logLevel',
32
- 'shell.timeout',
33
- ]);
34
- if (COMMON_KEYS.has(key))
35
- return 'common';
36
- return key.split('.')[0] || 'other';
37
- }
7
+ import { MenuContainer } from './Common/MenuContainer.js';
8
+ import { ScrollableTabBar } from './Common/ScrollableTabBar.js';
38
9
  function truncate(text, max) {
39
10
  if (text.length <= max)
40
11
  return text;
@@ -58,86 +29,59 @@ function formatValue(value, key) {
58
29
  }
59
30
  const VISIBLE_COUNT = 10;
60
31
  const KEY_COL_WIDTH = 32;
61
- const SettingsSelectionMenu = ({ items, selectedIndex, scrollOffset = 0, query }) => {
62
- if (items.length === 0) {
63
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 1 },
64
- React.createElement(Text, { bold: true, color: "red" }, "No settings found"),
65
- React.createElement(Text, { color: "gray" },
66
- "No settings match \"",
67
- query,
68
- "\"")));
69
- }
70
- const viewportStart = Math.max(0, Math.min(scrollOffset, Math.max(0, items.length - VISIBLE_COUNT)));
71
- const visibleItems = items.slice(viewportStart, viewportStart + VISIBLE_COUNT);
72
- const hasScrollUp = viewportStart > 0;
73
- const hasScrollDown = viewportStart + VISIBLE_COUNT < items.length;
74
- return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1 },
75
- React.createElement(Box, { marginBottom: 1, borderStyle: "single", borderBottom: false, borderLeft: false, borderRight: false, borderTop: false },
76
- React.createElement(Text, { bold: true, color: "cyan" }, "\u2699 Settings"),
77
- React.createElement(Text, { color: "gray" }, " \u00B7 "),
78
- query ? (React.createElement(Text, null,
79
- "Searching: \"",
80
- React.createElement(Text, { color: "white", bold: true }, query),
81
- "\"")) : (React.createElement(Text, { color: "gray" }, "Type to filter")),
82
- React.createElement(Text, { color: "gray" },
83
- " \u00B7 ",
84
- items.length,
85
- " items"),
86
- items.length > VISIBLE_COUNT && (React.createElement(React.Fragment, null,
32
+ const SettingsSelectionMenu = ({ items, selectedIndex, scrollOffset = 0, query, isSearchingAll = false, activeCategoryId, categories, }) => {
33
+ const activeCategory = categories.find((category) => category.id === activeCategoryId);
34
+ return (React.createElement(Box, { flexDirection: "column" },
35
+ React.createElement(ScrollableTabBar, { items: categories, activeItemId: activeCategoryId, getItemWidth: (category) => category.label.length + 2, renderTab: (category, isActive) => (React.createElement(Text, { inverse: isActive, color: isActive ? 'cyan' : '#64748b', bold: isActive },
36
+ ' ',
37
+ category.label,
38
+ ' ')), hint: "Tab/\u2190\u2192 \u2192 switch section" }),
39
+ React.createElement(MenuContainer, { items: items, selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxHeight: VISIBLE_COUNT, borderColor: items.length === 0 ? 'red' : 'cyan', title: React.createElement(Box, null,
40
+ React.createElement(Text, { bold: true, color: "cyan" }, "\u2699 Settings"),
41
+ React.createElement(Text, { color: "gray" }, " \u00B7 "),
42
+ React.createElement(Text, { color: "#22d3ee" }, isSearchingAll ? 'Searching all sections' : activeCategory?.label ?? 'Settings'),
87
43
  React.createElement(Text, { color: "gray" }, " \u00B7 "),
44
+ query ? (React.createElement(Text, null,
45
+ "Searching: \"",
46
+ React.createElement(Text, { color: "white", bold: true }, query),
47
+ "\"")) : (React.createElement(Text, { color: "gray" }, "Type to filter"))), headerRight: React.createElement(Text, { color: "#64748b" },
48
+ items.length,
49
+ " item",
50
+ items.length === 1 ? '' : 's'), fallbackText: React.createElement(Box, { flexDirection: "column" },
51
+ React.createElement(Text, { bold: true, color: "red" }, "No settings found"),
88
52
  React.createElement(Text, { color: "gray" },
89
- viewportStart + 1,
90
- "-",
91
- Math.min(viewportStart + VISIBLE_COUNT, items.length),
92
- "/",
93
- items.length)))),
94
- hasScrollUp && React.createElement(Text, { color: "#64748b" },
95
- "\u2191 ",
96
- viewportStart,
97
- " more"),
98
- visibleItems.map((item, index) => {
99
- const realIndex = viewportStart + index;
100
- const isSelected = realIndex === selectedIndex;
101
- const category = getCategoryForKey(item.key);
102
- // Show header if it's the first item OR if category changes,
103
- // BUT for the very first item in viewport we usually want a header unless it's a continuation
104
- // and we want to save space?
105
- // Let's always show header if it matches the logic, but force it for index 0 of viewport
106
- // if it's different from the one before viewport (which is handled by category !== prevCategory logic naturally)
107
- // Wait, if viewport starts at 5, and 4 was 'common', and 5 is 'common', we don't show header?
108
- // Users might get lost. Let's show header if index==0 in viewport.
109
- const prevCategory = realIndex > 0 ? getCategoryForKey(items[realIndex - 1].key) : null;
110
- const showHeader = index === 0 || category !== prevCategory;
111
- const valueObj = item.currentValue !== undefined ? formatValue(item.currentValue, item.key) : null;
112
- const paddedKey = item.key.length > KEY_COL_WIDTH
113
- ? truncate(item.key, KEY_COL_WIDTH).padEnd(KEY_COL_WIDTH, ' ')
114
- : item.key.padEnd(KEY_COL_WIDTH, ' ');
115
- return (React.createElement(Box, { key: item.key, flexDirection: "column" },
116
- showHeader && (React.createElement(Box, { marginTop: index === 0 ? 0 : 1, marginBottom: 0 },
117
- React.createElement(Text, { color: "#22d3ee", bold: true, underline: true }, titleCaseCategory(category)))),
118
- React.createElement(Box, { flexDirection: "column" },
119
- React.createElement(Box, null,
120
- React.createElement(Text, { color: isSelected ? 'green' : 'gray' }, isSelected ? '▶ ' : ' '),
121
- React.createElement(Text, { color: isSelected ? 'green' : 'white', bold: isSelected }, paddedKey),
122
- valueObj && React.createElement(Text, { color: isSelected ? 'white' : 'gray' }, valueObj.text)),
123
- isSelected && item.description && (React.createElement(Box, { marginLeft: 2, marginTop: 0 },
124
- React.createElement(Text, { color: "#7dd3fc", dimColor: true, italic: true },
125
- "\u2514\u2500\u2500 ",
126
- item.description))))));
127
- }),
128
- hasScrollDown && React.createElement(Text, { color: "#64748b" },
129
- "\u2193 ",
130
- items.length - viewportStart - VISIBLE_COUNT,
131
- " more"),
132
- React.createElement(Box, { marginTop: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray" },
133
- React.createElement(Text, { color: "gray", dimColor: true },
53
+ "No settings match \"",
54
+ query,
55
+ "\"",
56
+ ' ',
57
+ isSearchingAll ? 'in any section' : `in ${activeCategory?.label ?? 'this section'}`)), footer: React.createElement(Text, { color: "gray", dimColor: true },
134
58
  "Use ",
135
59
  React.createElement(Text, { bold: true }, "\u2191\u2193"),
136
60
  " to navigate, ",
137
61
  React.createElement(Text, { bold: true }, "Enter"),
138
62
  " to edit, ",
139
63
  React.createElement(Text, { bold: true }, "Esc"),
140
- " to close"))));
64
+ " to close"), footerOutsideBorder: false, renderItem: (item, actualIndex, isSelected) => {
65
+ const category = getSettingCategory(item.key);
66
+ const prevCategory = actualIndex > 0 ? getSettingCategory(items[actualIndex - 1].key) : null;
67
+ const showHeader = actualIndex === scrollOffset || category.id !== prevCategory?.id;
68
+ const valueObj = item.currentValue !== undefined ? formatValue(item.currentValue, item.key) : null;
69
+ const paddedKey = item.key.length > KEY_COL_WIDTH
70
+ ? truncate(item.key, KEY_COL_WIDTH).padEnd(KEY_COL_WIDTH, ' ')
71
+ : item.key.padEnd(KEY_COL_WIDTH, ' ');
72
+ return (React.createElement(Box, { key: item.key, flexDirection: "column" },
73
+ showHeader && (React.createElement(Box, { marginTop: actualIndex === scrollOffset ? 0 : 1, marginBottom: 0 },
74
+ React.createElement(Text, { color: "#22d3ee", bold: true, underline: true }, category.label))),
75
+ React.createElement(Box, { flexDirection: "column" },
76
+ React.createElement(Box, null,
77
+ React.createElement(Text, { color: isSelected ? 'green' : 'gray' }, isSelected ? '▶ ' : ' '),
78
+ React.createElement(Text, { color: isSelected ? 'green' : 'white', bold: isSelected }, paddedKey),
79
+ valueObj && React.createElement(Text, { color: isSelected ? 'white' : 'gray' }, valueObj.text)),
80
+ isSelected && item.description && (React.createElement(Box, { marginLeft: 2, marginTop: 0 },
81
+ React.createElement(Text, { color: "#7dd3fc", dimColor: true, italic: true },
82
+ "\u2514\u2500\u2500 ",
83
+ item.description))))));
84
+ } })));
141
85
  };
142
86
  export default SettingsSelectionMenu;
143
87
  //# sourceMappingURL=SettingsSelectionMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsSelectionMenu.js","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsSelectionMenu.js","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"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"}