@within-7/minto 0.4.2 → 0.4.3

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 (1263) hide show
  1. package/cli.cjs +32 -154
  2. package/cli.js +3255 -0
  3. package/package.json +21 -38
  4. package/scripts/postinstall.cjs +19 -136
  5. package/vendor/ripgrep/arm64-linux/rg +0 -0
  6. package/vendor/ripgrep/x64-darwin/rg +0 -0
  7. package/vendor/ripgrep/x64-linux/rg +0 -0
  8. package/vendor/ripgrep/x64-win32/rg.exe +0 -0
  9. package/dist/Tool.js +0 -46
  10. package/dist/Tool.js.map +0 -7
  11. package/dist/commands/agents/AgentsCommand.js +0 -2170
  12. package/dist/commands/agents/AgentsCommand.js.map +0 -7
  13. package/dist/commands/agents/constants.js +0 -58
  14. package/dist/commands/agents/constants.js.map +0 -7
  15. package/dist/commands/agents/index.js +0 -37
  16. package/dist/commands/agents/index.js.map +0 -7
  17. package/dist/commands/agents/types.js +0 -11
  18. package/dist/commands/agents/types.js.map +0 -7
  19. package/dist/commands/agents/utils/fileOperations.js +0 -245
  20. package/dist/commands/agents/utils/fileOperations.js.map +0 -7
  21. package/dist/commands/agents/utils/index.js +0 -23
  22. package/dist/commands/agents/utils/index.js.map +0 -7
  23. package/dist/commands/approvedTools.js +0 -36
  24. package/dist/commands/approvedTools.js.map +0 -7
  25. package/dist/commands/bug.js +0 -88
  26. package/dist/commands/bug.js.map +0 -7
  27. package/dist/commands/clear.js +0 -41
  28. package/dist/commands/clear.js.map +0 -7
  29. package/dist/commands/compact.js +0 -119
  30. package/dist/commands/compact.js.map +0 -7
  31. package/dist/commands/config.js +0 -20
  32. package/dist/commands/config.js.map +0 -7
  33. package/dist/commands/context.js +0 -118
  34. package/dist/commands/context.js.map +0 -7
  35. package/dist/commands/cost.js +0 -19
  36. package/dist/commands/cost.js.map +0 -7
  37. package/dist/commands/ctx_viz.js +0 -193
  38. package/dist/commands/ctx_viz.js.map +0 -7
  39. package/dist/commands/doctor.js +0 -171
  40. package/dist/commands/doctor.js.map +0 -7
  41. package/dist/commands/effort.js +0 -87
  42. package/dist/commands/effort.js.map +0 -7
  43. package/dist/commands/export.js +0 -747
  44. package/dist/commands/export.js.map +0 -7
  45. package/dist/commands/help.js +0 -20
  46. package/dist/commands/help.js.map +0 -7
  47. package/dist/commands/ide.js +0 -18
  48. package/dist/commands/ide.js.map +0 -7
  49. package/dist/commands/init.js +0 -38
  50. package/dist/commands/init.js.map +0 -7
  51. package/dist/commands/language.js +0 -110
  52. package/dist/commands/language.js.map +0 -7
  53. package/dist/commands/login.js +0 -128
  54. package/dist/commands/login.js.map +0 -7
  55. package/dist/commands/mcp-interactive.js +0 -485
  56. package/dist/commands/mcp-interactive.js.map +0 -7
  57. package/dist/commands/memory.js +0 -119
  58. package/dist/commands/memory.js.map +0 -7
  59. package/dist/commands/model.js +0 -497
  60. package/dist/commands/model.js.map +0 -7
  61. package/dist/commands/new.js +0 -56
  62. package/dist/commands/new.js.map +0 -7
  63. package/dist/commands/outputStyle.js +0 -64
  64. package/dist/commands/outputStyle.js.map +0 -7
  65. package/dist/commands/permissions.js +0 -113
  66. package/dist/commands/permissions.js.map +0 -7
  67. package/dist/commands/plugin/AddMarketplaceForm.js +0 -91
  68. package/dist/commands/plugin/AddMarketplaceForm.js.map +0 -7
  69. package/dist/commands/plugin/ConfirmDialog.js +0 -84
  70. package/dist/commands/plugin/ConfirmDialog.js.map +0 -7
  71. package/dist/commands/plugin/ErrorView.js +0 -34
  72. package/dist/commands/plugin/ErrorView.js.map +0 -7
  73. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +0 -152
  74. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +0 -7
  75. package/dist/commands/plugin/InstalledPluginsManager.js +0 -102
  76. package/dist/commands/plugin/InstalledPluginsManager.js.map +0 -7
  77. package/dist/commands/plugin/LoadingView.js +0 -14
  78. package/dist/commands/plugin/LoadingView.js.map +0 -7
  79. package/dist/commands/plugin/MainMenu.js +0 -67
  80. package/dist/commands/plugin/MainMenu.js.map +0 -7
  81. package/dist/commands/plugin/MarketplaceManager.js +0 -201
  82. package/dist/commands/plugin/MarketplaceManager.js.map +0 -7
  83. package/dist/commands/plugin/MarketplaceSelector.js +0 -124
  84. package/dist/commands/plugin/MarketplaceSelector.js.map +0 -7
  85. package/dist/commands/plugin/PlaceholderScreen.js +0 -31
  86. package/dist/commands/plugin/PlaceholderScreen.js.map +0 -7
  87. package/dist/commands/plugin/PluginBrowser.js +0 -183
  88. package/dist/commands/plugin/PluginBrowser.js.map +0 -7
  89. package/dist/commands/plugin/PluginDetailsInstall.js +0 -159
  90. package/dist/commands/plugin/PluginDetailsInstall.js.map +0 -7
  91. package/dist/commands/plugin/PluginDetailsManage.js +0 -210
  92. package/dist/commands/plugin/PluginDetailsManage.js.map +0 -7
  93. package/dist/commands/plugin/components.js +0 -16
  94. package/dist/commands/plugin/components.js.map +0 -7
  95. package/dist/commands/plugin/example-usage.js +0 -63
  96. package/dist/commands/plugin/example-usage.js.map +0 -7
  97. package/dist/commands/plugin/types.js +0 -1
  98. package/dist/commands/plugin/types.js.map +0 -7
  99. package/dist/commands/plugin/utils.js +0 -109
  100. package/dist/commands/plugin/utils.js.map +0 -7
  101. package/dist/commands/plugin.js +0 -1410
  102. package/dist/commands/plugin.js.map +0 -7
  103. package/dist/commands/quit.js +0 -20
  104. package/dist/commands/quit.js.map +0 -7
  105. package/dist/commands/refreshCommands.js +0 -48
  106. package/dist/commands/refreshCommands.js.map +0 -7
  107. package/dist/commands/resume.js +0 -71
  108. package/dist/commands/resume.js.map +0 -7
  109. package/dist/commands/review.js +0 -51
  110. package/dist/commands/review.js.map +0 -7
  111. package/dist/commands/sandbox.js +0 -203
  112. package/dist/commands/sandbox.js.map +0 -7
  113. package/dist/commands/sessions.js +0 -224
  114. package/dist/commands/sessions.js.map +0 -7
  115. package/dist/commands/setup.js +0 -653
  116. package/dist/commands/setup.js.map +0 -7
  117. package/dist/commands/stats.js +0 -292
  118. package/dist/commands/stats.js.map +0 -7
  119. package/dist/commands/status.js +0 -127
  120. package/dist/commands/status.js.map +0 -7
  121. package/dist/commands/tasks.js +0 -108
  122. package/dist/commands/tasks.js.map +0 -7
  123. package/dist/commands/terminalSetup.js +0 -174
  124. package/dist/commands/terminalSetup.js.map +0 -7
  125. package/dist/commands/todos.js +0 -123
  126. package/dist/commands/todos.js.map +0 -7
  127. package/dist/commands/undo.js +0 -227
  128. package/dist/commands/undo.js.map +0 -7
  129. package/dist/commands/vim.js +0 -22
  130. package/dist/commands/vim.js.map +0 -7
  131. package/dist/commands.js +0 -130
  132. package/dist/commands.js.map +0 -7
  133. package/dist/components/AgentDetailView.js +0 -126
  134. package/dist/components/AgentDetailView.js.map +0 -7
  135. package/dist/components/AgentResponseBlock.js +0 -41
  136. package/dist/components/AgentResponseBlock.js.map +0 -7
  137. package/dist/components/AgentThinkingBlock.js +0 -32
  138. package/dist/components/AgentThinkingBlock.js.map +0 -7
  139. package/dist/components/AgentViewBanner.js +0 -22
  140. package/dist/components/AgentViewBanner.js.map +0 -7
  141. package/dist/components/AsciiLogo.js +0 -18
  142. package/dist/components/AsciiLogo.js.map +0 -7
  143. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +0 -142
  144. package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +0 -7
  145. package/dist/components/AskUserQuestionDialog/QuestionView.js +0 -55
  146. package/dist/components/AskUserQuestionDialog/QuestionView.js.map +0 -7
  147. package/dist/components/AskUserQuestionDialog/index.js +0 -7
  148. package/dist/components/AskUserQuestionDialog/index.js.map +0 -7
  149. package/dist/components/BackgroundTasksPanel.js +0 -177
  150. package/dist/components/BackgroundTasksPanel.js.map +0 -7
  151. package/dist/components/BashStreamingProgress.js +0 -24
  152. package/dist/components/BashStreamingProgress.js.map +0 -7
  153. package/dist/components/CollapsibleHint.js +0 -15
  154. package/dist/components/CollapsibleHint.js.map +0 -7
  155. package/dist/components/Config.js +0 -181
  156. package/dist/components/Config.js.map +0 -7
  157. package/dist/components/ConsoleOAuthFlow.js +0 -179
  158. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  159. package/dist/components/Cost.js +0 -14
  160. package/dist/components/Cost.js.map +0 -7
  161. package/dist/components/CostThresholdDialog.js +0 -38
  162. package/dist/components/CostThresholdDialog.js.map +0 -7
  163. package/dist/components/CustomSelect/option-map.js +0 -32
  164. package/dist/components/CustomSelect/option-map.js.map +0 -7
  165. package/dist/components/CustomSelect/select-option.js +0 -37
  166. package/dist/components/CustomSelect/select-option.js.map +0 -7
  167. package/dist/components/CustomSelect/select.js +0 -64
  168. package/dist/components/CustomSelect/select.js.map +0 -7
  169. package/dist/components/CustomSelect/theme.js +0 -1
  170. package/dist/components/CustomSelect/theme.js.map +0 -7
  171. package/dist/components/CustomSelect/use-select-state.js +0 -220
  172. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  173. package/dist/components/CustomSelect/use-select.js +0 -21
  174. package/dist/components/CustomSelect/use-select.js.map +0 -7
  175. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  176. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  177. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  178. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  179. package/dist/components/HeaderBar.js +0 -63
  180. package/dist/components/HeaderBar.js.map +0 -7
  181. package/dist/components/Help.js +0 -185
  182. package/dist/components/Help.js.map +0 -7
  183. package/dist/components/HighlightedCode.js +0 -31
  184. package/dist/components/HighlightedCode.js.map +0 -7
  185. package/dist/components/HistorySearchOverlay.js +0 -49
  186. package/dist/components/HistorySearchOverlay.js.map +0 -7
  187. package/dist/components/HotkeyHelpPanel.js +0 -154
  188. package/dist/components/HotkeyHelpPanel.js.map +0 -7
  189. package/dist/components/IdleNotificationBar.js +0 -10
  190. package/dist/components/IdleNotificationBar.js.map +0 -7
  191. package/dist/components/InfoPanel/InfoPanel.js +0 -123
  192. package/dist/components/InfoPanel/InfoPanel.js.map +0 -7
  193. package/dist/components/InfoPanel/index.js +0 -5
  194. package/dist/components/InfoPanel/index.js.map +0 -7
  195. package/dist/components/InfoPanel/types.js +0 -1
  196. package/dist/components/InfoPanel/types.js.map +0 -7
  197. package/dist/components/InteractionRoundBlock.js +0 -56
  198. package/dist/components/InteractionRoundBlock.js.map +0 -7
  199. package/dist/components/InvalidConfigDialog.js +0 -84
  200. package/dist/components/InvalidConfigDialog.js.map +0 -7
  201. package/dist/components/Link.js +0 -18
  202. package/dist/components/Link.js.map +0 -7
  203. package/dist/components/LogSelector.js +0 -50
  204. package/dist/components/LogSelector.js.map +0 -7
  205. package/dist/components/Logo.js +0 -55
  206. package/dist/components/Logo.js.map +0 -7
  207. package/dist/components/MCPServerApprovalDialog.js +0 -81
  208. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  209. package/dist/components/MCPServerDialogCopy.js +0 -12
  210. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  211. package/dist/components/MCPServerMultiselectDialog.js +0 -82
  212. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  213. package/dist/components/Message.js +0 -162
  214. package/dist/components/Message.js.map +0 -7
  215. package/dist/components/MessageResponse.js +0 -9
  216. package/dist/components/MessageResponse.js.map +0 -7
  217. package/dist/components/MessageSelector.js +0 -127
  218. package/dist/components/MessageSelector.js.map +0 -7
  219. package/dist/components/ModeIndicator.js +0 -39
  220. package/dist/components/ModeIndicator.js.map +0 -7
  221. package/dist/components/ModelConfig.js +0 -223
  222. package/dist/components/ModelConfig.js.map +0 -7
  223. package/dist/components/ModelListManager.js +0 -142
  224. package/dist/components/ModelListManager.js.map +0 -7
  225. package/dist/components/ModelSelector/BrandTextInput.js +0 -43
  226. package/dist/components/ModelSelector/BrandTextInput.js.map +0 -7
  227. package/dist/components/ModelSelector/ModelSelector.js +0 -2103
  228. package/dist/components/ModelSelector/ModelSelector.js.map +0 -7
  229. package/dist/components/ModelSelector/ScreenContainer.js +0 -27
  230. package/dist/components/ModelSelector/ScreenContainer.js.map +0 -7
  231. package/dist/components/ModelSelector/WizardContainer.js +0 -45
  232. package/dist/components/ModelSelector/WizardContainer.js.map +0 -7
  233. package/dist/components/ModelSelector/constants.js +0 -37
  234. package/dist/components/ModelSelector/constants.js.map +0 -7
  235. package/dist/components/ModelSelector/hooks/index.js +0 -5
  236. package/dist/components/ModelSelector/hooks/index.js.map +0 -7
  237. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js +0 -21
  238. package/dist/components/ModelSelector/hooks/useEscapeNavigation.js.map +0 -7
  239. package/dist/components/ModelSelector/index.js +0 -15
  240. package/dist/components/ModelSelector/index.js.map +0 -7
  241. package/dist/components/ModelSelector/types.js +0 -1
  242. package/dist/components/ModelSelector/types.js.map +0 -7
  243. package/dist/components/Onboarding.js +0 -159
  244. package/dist/components/Onboarding.js.map +0 -7
  245. package/dist/components/OperationSummary.js +0 -130
  246. package/dist/components/OperationSummary.js.map +0 -7
  247. package/dist/components/PressEnterToContinue.js +0 -10
  248. package/dist/components/PressEnterToContinue.js.map +0 -7
  249. package/dist/components/ProgressBar.js +0 -74
  250. package/dist/components/ProgressBar.js.map +0 -7
  251. package/dist/components/ProjectOnboarding.js +0 -99
  252. package/dist/components/ProjectOnboarding.js.map +0 -7
  253. package/dist/components/PromptInput.js +0 -1067
  254. package/dist/components/PromptInput.js.map +0 -7
  255. package/dist/components/PulseLabel.js +0 -44
  256. package/dist/components/PulseLabel.js.map +0 -7
  257. package/dist/components/QuitSummary.js +0 -88
  258. package/dist/components/QuitSummary.js.map +0 -7
  259. package/dist/components/RequestStatusIndicator.js +0 -194
  260. package/dist/components/RequestStatusIndicator.js.map +0 -7
  261. package/dist/components/RewindPanel.js +0 -272
  262. package/dist/components/RewindPanel.js.map +0 -7
  263. package/dist/components/SensitiveFileWarning.js +0 -35
  264. package/dist/components/SensitiveFileWarning.js.map +0 -7
  265. package/dist/components/SentryErrorBoundary.js +0 -27
  266. package/dist/components/SentryErrorBoundary.js.map +0 -7
  267. package/dist/components/SimpleSelector/SimpleSelector.js +0 -154
  268. package/dist/components/SimpleSelector/SimpleSelector.js.map +0 -7
  269. package/dist/components/SimpleSelector/index.js +0 -5
  270. package/dist/components/SimpleSelector/index.js.map +0 -7
  271. package/dist/components/SimpleSelector/types.js +0 -1
  272. package/dist/components/SimpleSelector/types.js.map +0 -7
  273. package/dist/components/Spinner.js +0 -174
  274. package/dist/components/Spinner.js.map +0 -7
  275. package/dist/components/SpinnerSymbol.js +0 -72
  276. package/dist/components/SpinnerSymbol.js.map +0 -7
  277. package/dist/components/StartupStatus.js +0 -57
  278. package/dist/components/StartupStatus.js.map +0 -7
  279. package/dist/components/StatusOverlayContent.js +0 -21
  280. package/dist/components/StatusOverlayContent.js.map +0 -7
  281. package/dist/components/StreamingBashOutput.js +0 -71
  282. package/dist/components/StreamingBashOutput.js.map +0 -7
  283. package/dist/components/StreamingTextPreview.js +0 -29
  284. package/dist/components/StreamingTextPreview.js.map +0 -7
  285. package/dist/components/StructuredDiff.js +0 -146
  286. package/dist/components/StructuredDiff.js.map +0 -7
  287. package/dist/components/SubagentBlock.js +0 -197
  288. package/dist/components/SubagentBlock.js.map +0 -7
  289. package/dist/components/SubagentManager.js +0 -65
  290. package/dist/components/SubagentManager.js.map +0 -7
  291. package/dist/components/SubagentProgress.js +0 -123
  292. package/dist/components/SubagentProgress.js.map +0 -7
  293. package/dist/components/SubagentStatusMarker.js +0 -37
  294. package/dist/components/SubagentStatusMarker.js.map +0 -7
  295. package/dist/components/TabbedListView/ScrollableList.js +0 -117
  296. package/dist/components/TabbedListView/ScrollableList.js.map +0 -7
  297. package/dist/components/TabbedListView/SearchInput.js +0 -23
  298. package/dist/components/TabbedListView/SearchInput.js.map +0 -7
  299. package/dist/components/TabbedListView/TabBar.js +0 -25
  300. package/dist/components/TabbedListView/TabBar.js.map +0 -7
  301. package/dist/components/TabbedListView/TabbedListView.js +0 -292
  302. package/dist/components/TabbedListView/TabbedListView.js.map +0 -7
  303. package/dist/components/TabbedListView/index.js +0 -11
  304. package/dist/components/TabbedListView/index.js.map +0 -7
  305. package/dist/components/TabbedListView/types.js +0 -1
  306. package/dist/components/TabbedListView/types.js.map +0 -7
  307. package/dist/components/TaskCard.js +0 -176
  308. package/dist/components/TaskCard.js.map +0 -7
  309. package/dist/components/TeamMemberPanel.js +0 -107
  310. package/dist/components/TeamMemberPanel.js.map +0 -7
  311. package/dist/components/TextInput.js +0 -108
  312. package/dist/components/TextInput.js.map +0 -7
  313. package/dist/components/ThinkingSelector.js +0 -84
  314. package/dist/components/ThinkingSelector.js.map +0 -7
  315. package/dist/components/TimelineRenderer.js +0 -31
  316. package/dist/components/TimelineRenderer.js.map +0 -7
  317. package/dist/components/TitledDivider.js +0 -26
  318. package/dist/components/TitledDivider.js.map +0 -7
  319. package/dist/components/TodoChangeBlock.js +0 -30
  320. package/dist/components/TodoChangeBlock.js.map +0 -7
  321. package/dist/components/TodoChangeLine.js +0 -22
  322. package/dist/components/TodoChangeLine.js.map +0 -7
  323. package/dist/components/TodoItem.js +0 -35
  324. package/dist/components/TodoItem.js.map +0 -7
  325. package/dist/components/TodoPanel.js +0 -167
  326. package/dist/components/TodoPanel.js.map +0 -7
  327. package/dist/components/TokenCounter.js +0 -74
  328. package/dist/components/TokenCounter.js.map +0 -7
  329. package/dist/components/TokenWarning.js +0 -41
  330. package/dist/components/TokenWarning.js.map +0 -7
  331. package/dist/components/ToolExecutionBlock.js +0 -18
  332. package/dist/components/ToolExecutionBlock.js.map +0 -7
  333. package/dist/components/ToolUseLoader.js +0 -29
  334. package/dist/components/ToolUseLoader.js.map +0 -7
  335. package/dist/components/TreeConnector.js +0 -26
  336. package/dist/components/TreeConnector.js.map +0 -7
  337. package/dist/components/TrustDialog.js +0 -71
  338. package/dist/components/TrustDialog.js.map +0 -7
  339. package/dist/components/TurnCompletionIndicator.js +0 -18
  340. package/dist/components/TurnCompletionIndicator.js.map +0 -7
  341. package/dist/components/UserQueryBlock.js +0 -12
  342. package/dist/components/UserQueryBlock.js.map +0 -7
  343. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  344. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  345. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -92
  346. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  347. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -140
  348. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  349. package/dist/components/binary-feedback/utils.js +0 -108
  350. package/dist/components/binary-feedback/utils.js.map +0 -7
  351. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  352. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  353. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  354. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  355. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  356. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  357. package/dist/components/messages/AssistantTextMessage.js +0 -92
  358. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  359. package/dist/components/messages/AssistantThinkingMessage.js +0 -42
  360. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  361. package/dist/components/messages/AssistantToolUseMessage.js +0 -108
  362. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  363. package/dist/components/messages/DefaultToolResultFallback.js +0 -11
  364. package/dist/components/messages/DefaultToolResultFallback.js.map +0 -7
  365. package/dist/components/messages/GroupRenderer.js +0 -54
  366. package/dist/components/messages/GroupRenderer.js.map +0 -7
  367. package/dist/components/messages/NestedTasksPreview.js +0 -24
  368. package/dist/components/messages/NestedTasksPreview.js.map +0 -7
  369. package/dist/components/messages/ParallelTasksGroupView.js +0 -101
  370. package/dist/components/messages/ParallelTasksGroupView.js.map +0 -7
  371. package/dist/components/messages/TaskInModuleView.js +0 -218
  372. package/dist/components/messages/TaskInModuleView.js.map +0 -7
  373. package/dist/components/messages/TaskOutputContent.js +0 -56
  374. package/dist/components/messages/TaskOutputContent.js.map +0 -7
  375. package/dist/components/messages/TaskProgressMessage.js +0 -11
  376. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  377. package/dist/components/messages/TaskToolMessage.js +0 -39
  378. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  379. package/dist/components/messages/UserBashInputMessage.js +0 -18
  380. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  381. package/dist/components/messages/UserCommandMessage.js +0 -20
  382. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  383. package/dist/components/messages/UserGuidanceMessage.js +0 -26
  384. package/dist/components/messages/UserGuidanceMessage.js.map +0 -7
  385. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  386. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  387. package/dist/components/messages/UserPromptMessage.js +0 -26
  388. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  389. package/dist/components/messages/UserTeamNotificationMessage.js +0 -91
  390. package/dist/components/messages/UserTeamNotificationMessage.js.map +0 -7
  391. package/dist/components/messages/UserTextMessage.js +0 -33
  392. package/dist/components/messages/UserTextMessage.js.map +0 -7
  393. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -11
  394. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  395. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  396. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  397. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -27
  398. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  399. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -64
  400. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  401. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -33
  402. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  403. package/dist/components/messages/UserToolResultMessage/utils.js +0 -50
  404. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  405. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  406. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  407. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  408. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  409. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  410. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  411. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  412. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  413. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  414. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  415. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  416. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  417. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  418. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  419. package/dist/components/permissions/PermissionRequest.js +0 -74
  420. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  421. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  422. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  423. package/dist/components/permissions/PlanApprovalRequest.js +0 -164
  424. package/dist/components/permissions/PlanApprovalRequest.js.map +0 -7
  425. package/dist/components/permissions/hooks.js +0 -23
  426. package/dist/components/permissions/hooks.js.map +0 -7
  427. package/dist/components/permissions/toolUseOptions.js +0 -46
  428. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  429. package/dist/components/permissions/utils.js +0 -21
  430. package/dist/components/permissions/utils.js.map +0 -7
  431. package/dist/constants/agentTeams.js +0 -17
  432. package/dist/constants/agentTeams.js.map +0 -7
  433. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  434. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  435. package/dist/constants/colors.js +0 -192
  436. package/dist/constants/colors.js.map +0 -7
  437. package/dist/constants/compressionPrompts.js +0 -73
  438. package/dist/constants/compressionPrompts.js.map +0 -7
  439. package/dist/constants/figures.js +0 -6
  440. package/dist/constants/figures.js.map +0 -7
  441. package/dist/constants/formatRules.js +0 -102
  442. package/dist/constants/formatRules.js.map +0 -7
  443. package/dist/constants/macros.js +0 -12
  444. package/dist/constants/macros.js.map +0 -7
  445. package/dist/constants/modelCapabilities.js +0 -239
  446. package/dist/constants/modelCapabilities.js.map +0 -7
  447. package/dist/constants/models.js +0 -1034
  448. package/dist/constants/models.js.map +0 -7
  449. package/dist/constants/oauth.js +0 -18
  450. package/dist/constants/oauth.js.map +0 -7
  451. package/dist/constants/product.js +0 -28
  452. package/dist/constants/product.js.map +0 -7
  453. package/dist/constants/prompts/agentPrompt.js +0 -31
  454. package/dist/constants/prompts/agentPrompt.js.map +0 -7
  455. package/dist/constants/prompts/autoMemory.js +0 -39
  456. package/dist/constants/prompts/autoMemory.js.map +0 -7
  457. package/dist/constants/prompts/codeConventions.js +0 -15
  458. package/dist/constants/prompts/codeConventions.js.map +0 -7
  459. package/dist/constants/prompts/doingTasks.js +0 -34
  460. package/dist/constants/prompts/doingTasks.js.map +0 -7
  461. package/dist/constants/prompts/envInfo.js +0 -16
  462. package/dist/constants/prompts/envInfo.js.map +0 -7
  463. package/dist/constants/prompts/executingWithCare.js +0 -17
  464. package/dist/constants/prompts/executingWithCare.js.map +0 -7
  465. package/dist/constants/prompts/identity.js +0 -10
  466. package/dist/constants/prompts/identity.js.map +0 -7
  467. package/dist/constants/prompts/index.js +0 -100
  468. package/dist/constants/prompts/index.js.map +0 -7
  469. package/dist/constants/prompts/taskManagement.js +0 -19
  470. package/dist/constants/prompts/taskManagement.js.map +0 -7
  471. package/dist/constants/prompts/teamOverlays.js +0 -50
  472. package/dist/constants/prompts/teamOverlays.js.map +0 -7
  473. package/dist/constants/prompts/toneAndStyle.js +0 -37
  474. package/dist/constants/prompts/toneAndStyle.js.map +0 -7
  475. package/dist/constants/prompts/toolUsagePolicy.js +0 -23
  476. package/dist/constants/prompts/toolUsagePolicy.js.map +0 -7
  477. package/dist/constants/prompts.js +0 -13
  478. package/dist/constants/prompts.js.map +0 -7
  479. package/dist/constants/providerRegistry.js +0 -235
  480. package/dist/constants/providerRegistry.js.map +0 -7
  481. package/dist/constants/providers.js +0 -35
  482. package/dist/constants/providers.js.map +0 -7
  483. package/dist/constants/releaseNotes.js +0 -9
  484. package/dist/constants/releaseNotes.js.map +0 -7
  485. package/dist/constants/symbols.js +0 -108
  486. package/dist/constants/symbols.js.map +0 -7
  487. package/dist/constants/timing.js +0 -39
  488. package/dist/constants/timing.js.map +0 -7
  489. package/dist/constants/toolInputExamples.js +0 -88
  490. package/dist/constants/toolInputExamples.js.map +0 -7
  491. package/dist/context/PermissionContext.js +0 -110
  492. package/dist/context/PermissionContext.js.map +0 -7
  493. package/dist/context.js +0 -367
  494. package/dist/context.js.map +0 -7
  495. package/dist/core/backupHook.js +0 -29
  496. package/dist/core/backupHook.js.map +0 -7
  497. package/dist/core/backupManager.js +0 -321
  498. package/dist/core/backupManager.js.map +0 -7
  499. package/dist/core/config/defaults.js +0 -93
  500. package/dist/core/config/defaults.js.map +0 -7
  501. package/dist/core/config/index.js +0 -111
  502. package/dist/core/config/index.js.map +0 -7
  503. package/dist/core/config/loader.js +0 -221
  504. package/dist/core/config/loader.js.map +0 -7
  505. package/dist/core/config/migrations.js +0 -128
  506. package/dist/core/config/migrations.js.map +0 -7
  507. package/dist/core/config/schema.js +0 -196
  508. package/dist/core/config/schema.js.map +0 -7
  509. package/dist/core/costTracker.js +0 -131
  510. package/dist/core/costTracker.js.map +0 -7
  511. package/dist/core/gitAutoCommit.js +0 -287
  512. package/dist/core/gitAutoCommit.js.map +0 -7
  513. package/dist/core/index.js +0 -7
  514. package/dist/core/index.js.map +0 -7
  515. package/dist/core/operationTracker.js +0 -212
  516. package/dist/core/operationTracker.js.map +0 -7
  517. package/dist/core/permissions/auditLog.js +0 -204
  518. package/dist/core/permissions/auditLog.js.map +0 -7
  519. package/dist/core/permissions/engine/index.js +0 -3
  520. package/dist/core/permissions/engine/index.js.map +0 -7
  521. package/dist/core/permissions/engine/permissionEngine.js +0 -106
  522. package/dist/core/permissions/engine/permissionEngine.js.map +0 -7
  523. package/dist/core/permissions/engine/types.js +0 -1
  524. package/dist/core/permissions/engine/types.js.map +0 -7
  525. package/dist/core/permissions/index.js +0 -84
  526. package/dist/core/permissions/index.js.map +0 -7
  527. package/dist/core/permissions/ruleEngine.js +0 -259
  528. package/dist/core/permissions/ruleEngine.js.map +0 -7
  529. package/dist/core/permissions/rules/allowedToolsRule.js +0 -62
  530. package/dist/core/permissions/rules/allowedToolsRule.js.map +0 -7
  531. package/dist/core/permissions/rules/autoEscalationRule.js +0 -296
  532. package/dist/core/permissions/rules/autoEscalationRule.js.map +0 -7
  533. package/dist/core/permissions/rules/index.js +0 -46
  534. package/dist/core/permissions/rules/index.js.map +0 -7
  535. package/dist/core/permissions/rules/planModeRule.js +0 -55
  536. package/dist/core/permissions/rules/planModeRule.js.map +0 -7
  537. package/dist/core/permissions/rules/projectBoundaryRule.js +0 -173
  538. package/dist/core/permissions/rules/projectBoundaryRule.js.map +0 -7
  539. package/dist/core/permissions/rules/safeModeRule.js +0 -65
  540. package/dist/core/permissions/rules/safeModeRule.js.map +0 -7
  541. package/dist/core/permissions/rules/sensitivePathsRule.js +0 -345
  542. package/dist/core/permissions/rules/sensitivePathsRule.js.map +0 -7
  543. package/dist/core/permissions/types.js +0 -127
  544. package/dist/core/permissions/types.js.map +0 -7
  545. package/dist/core/tokenStats.js +0 -9
  546. package/dist/core/tokenStats.js.map +0 -7
  547. package/dist/core/tokenStatsManager.js +0 -354
  548. package/dist/core/tokenStatsManager.js.map +0 -7
  549. package/dist/core/tools/executor.js +0 -143
  550. package/dist/core/tools/executor.js.map +0 -7
  551. package/dist/core/tools/index.js +0 -15
  552. package/dist/core/tools/index.js.map +0 -7
  553. package/dist/core/tools/registry.js +0 -183
  554. package/dist/core/tools/registry.js.map +0 -7
  555. package/dist/core/tools/types.js +0 -1
  556. package/dist/core/tools/types.js.map +0 -7
  557. package/dist/cost-tracker.js +0 -68
  558. package/dist/cost-tracker.js.map +0 -7
  559. package/dist/engine/AgentEngine.js +0 -902
  560. package/dist/engine/AgentEngine.js.map +0 -7
  561. package/dist/engine/EngineRegistry.js +0 -89
  562. package/dist/engine/EngineRegistry.js.map +0 -7
  563. package/dist/engine/foregroundAdapter.js +0 -191
  564. package/dist/engine/foregroundAdapter.js.map +0 -7
  565. package/dist/engine/index.js +0 -15
  566. package/dist/engine/index.js.map +0 -7
  567. package/dist/engine/types.js +0 -1
  568. package/dist/engine/types.js.map +0 -7
  569. package/dist/entrypoints/bootstrap.js +0 -56
  570. package/dist/entrypoints/bootstrap.js.map +0 -7
  571. package/dist/entrypoints/cli.js +0 -1721
  572. package/dist/entrypoints/cli.js.map +0 -7
  573. package/dist/entrypoints/mcp.js +0 -153
  574. package/dist/entrypoints/mcp.js.map +0 -7
  575. package/dist/history.js +0 -96
  576. package/dist/history.js.map +0 -7
  577. package/dist/hooks/useAgentEngine.js +0 -129
  578. package/dist/hooks/useAgentEngine.js.map +0 -7
  579. package/dist/hooks/useAgentTokenStats.js +0 -56
  580. package/dist/hooks/useAgentTokenStats.js.map +0 -7
  581. package/dist/hooks/useAgentTranscripts.js +0 -141
  582. package/dist/hooks/useAgentTranscripts.js.map +0 -7
  583. package/dist/hooks/useAnimationSync.js +0 -53
  584. package/dist/hooks/useAnimationSync.js.map +0 -7
  585. package/dist/hooks/useApiKeyVerification.js +0 -12
  586. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  587. package/dist/hooks/useArrowKeyHistory.js +0 -52
  588. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  589. package/dist/hooks/useAskUser.js +0 -24
  590. package/dist/hooks/useAskUser.js.map +0 -7
  591. package/dist/hooks/useBackgroundShells.js +0 -29
  592. package/dist/hooks/useBackgroundShells.js.map +0 -7
  593. package/dist/hooks/useCanUseTool.js +0 -134
  594. package/dist/hooks/useCanUseTool.js.map +0 -7
  595. package/dist/hooks/useDeferredLoading.js +0 -67
  596. package/dist/hooks/useDeferredLoading.js.map +0 -7
  597. package/dist/hooks/useDoublePress.js +0 -31
  598. package/dist/hooks/useDoublePress.js.map +0 -7
  599. package/dist/hooks/useExitOnCtrlCD.js +0 -30
  600. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  601. package/dist/hooks/useHistorySearch.js +0 -62
  602. package/dist/hooks/useHistorySearch.js.map +0 -7
  603. package/dist/hooks/useHookStatus.js +0 -40
  604. package/dist/hooks/useHookStatus.js.map +0 -7
  605. package/dist/hooks/useIdleNotifications.js +0 -66
  606. package/dist/hooks/useIdleNotifications.js.map +0 -7
  607. package/dist/hooks/useInterval.js +0 -18
  608. package/dist/hooks/useInterval.js.map +0 -7
  609. package/dist/hooks/useLogMessages.js +0 -41
  610. package/dist/hooks/useLogMessages.js.map +0 -7
  611. package/dist/hooks/useLogStartupTime.js +0 -10
  612. package/dist/hooks/useLogStartupTime.js.map +0 -7
  613. package/dist/hooks/useMessageGroups.js +0 -43
  614. package/dist/hooks/useMessageGroups.js.map +0 -7
  615. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  616. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  617. package/dist/hooks/usePermissionRequestLogging.js +0 -23
  618. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  619. package/dist/hooks/useSessionTracking.js +0 -57
  620. package/dist/hooks/useSessionTracking.js.map +0 -7
  621. package/dist/hooks/useTeamMembers.js +0 -51
  622. package/dist/hooks/useTeamMembers.js.map +0 -7
  623. package/dist/hooks/useTerminalSize.js +0 -115
  624. package/dist/hooks/useTerminalSize.js.map +0 -7
  625. package/dist/hooks/useTextInput.js +0 -253
  626. package/dist/hooks/useTextInput.js.map +0 -7
  627. package/dist/hooks/useUnifiedCompletion.js +0 -1098
  628. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  629. package/dist/i18n/index.js +0 -109
  630. package/dist/i18n/index.js.map +0 -7
  631. package/dist/i18n/locales/en.js +0 -993
  632. package/dist/i18n/locales/en.js.map +0 -7
  633. package/dist/i18n/locales/index.js +0 -7
  634. package/dist/i18n/locales/index.js.map +0 -7
  635. package/dist/i18n/locales/zh-CN.js +0 -993
  636. package/dist/i18n/locales/zh-CN.js.map +0 -7
  637. package/dist/i18n/types.js +0 -8
  638. package/dist/i18n/types.js.map +0 -7
  639. package/dist/index.js +0 -5
  640. package/dist/index.js.map +0 -7
  641. package/dist/messages.js +0 -68
  642. package/dist/messages.js.map +0 -7
  643. package/dist/package.json +0 -4
  644. package/dist/permissions.js +0 -536
  645. package/dist/permissions.js.map +0 -7
  646. package/dist/query.js +0 -851
  647. package/dist/query.js.map +0 -7
  648. package/dist/screens/LogList.js +0 -55
  649. package/dist/screens/LogList.js.map +0 -7
  650. package/dist/screens/REPL.js +0 -1240
  651. package/dist/screens/REPL.js.map +0 -7
  652. package/dist/screens/ResumeConversation.js +0 -244
  653. package/dist/screens/ResumeConversation.js.map +0 -7
  654. package/dist/services/adapters/base.js +0 -29
  655. package/dist/services/adapters/base.js.map +0 -7
  656. package/dist/services/adapters/chatCompletions.js +0 -71
  657. package/dist/services/adapters/chatCompletions.js.map +0 -7
  658. package/dist/services/adapters/messageNormalizer.js +0 -354
  659. package/dist/services/adapters/messageNormalizer.js.map +0 -7
  660. package/dist/services/adapters/responsesAPI.js +0 -137
  661. package/dist/services/adapters/responsesAPI.js.map +0 -7
  662. package/dist/services/agentTeams/backends/headless.js +0 -108
  663. package/dist/services/agentTeams/backends/headless.js.map +0 -7
  664. package/dist/services/agentTeams/backends/inProcess.js +0 -102
  665. package/dist/services/agentTeams/backends/inProcess.js.map +0 -7
  666. package/dist/services/agentTeams/backends/resolver.js +0 -18
  667. package/dist/services/agentTeams/backends/resolver.js.map +0 -7
  668. package/dist/services/agentTeams/backends/tmux.js +0 -168
  669. package/dist/services/agentTeams/backends/tmux.js.map +0 -7
  670. package/dist/services/agentTeams/backends/types.js +0 -1
  671. package/dist/services/agentTeams/backends/types.js.map +0 -7
  672. package/dist/services/agentTeams/heartbeat.js +0 -88
  673. package/dist/services/agentTeams/heartbeat.js.map +0 -7
  674. package/dist/services/agentTeams/index.js +0 -75
  675. package/dist/services/agentTeams/index.js.map +0 -7
  676. package/dist/services/agentTeams/injectionChannel.js +0 -105
  677. package/dist/services/agentTeams/injectionChannel.js.map +0 -7
  678. package/dist/services/agentTeams/mailbox.js +0 -494
  679. package/dist/services/agentTeams/mailbox.js.map +0 -7
  680. package/dist/services/agentTeams/messageFormatter.js +0 -80
  681. package/dist/services/agentTeams/messageFormatter.js.map +0 -7
  682. package/dist/services/agentTeams/permissionDelegation.js +0 -71
  683. package/dist/services/agentTeams/permissionDelegation.js.map +0 -7
  684. package/dist/services/agentTeams/teamEvents.js +0 -45
  685. package/dist/services/agentTeams/teamEvents.js.map +0 -7
  686. package/dist/services/agentTeams/teamManager.js +0 -366
  687. package/dist/services/agentTeams/teamManager.js.map +0 -7
  688. package/dist/services/agentTeams/teamTaskStore.js +0 -343
  689. package/dist/services/agentTeams/teamTaskStore.js.map +0 -7
  690. package/dist/services/agentTeams/teammateSpawner.js +0 -161
  691. package/dist/services/agentTeams/teammateSpawner.js.map +0 -7
  692. package/dist/services/checkpointManager.js +0 -399
  693. package/dist/services/checkpointManager.js.map +0 -7
  694. package/dist/services/claude.js +0 -41
  695. package/dist/services/claude.js.map +0 -7
  696. package/dist/services/compressionService.js +0 -259
  697. package/dist/services/compressionService.js.map +0 -7
  698. package/dist/services/contextMonitor.js +0 -162
  699. package/dist/services/contextMonitor.js.map +0 -7
  700. package/dist/services/customCommands.js +0 -489
  701. package/dist/services/customCommands.js.map +0 -7
  702. package/dist/services/fileFreshness.js +0 -275
  703. package/dist/services/fileFreshness.js.map +0 -7
  704. package/dist/services/gpt5ConnectionTest.js +0 -263
  705. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  706. package/dist/services/hookExecutor.js +0 -771
  707. package/dist/services/hookExecutor.js.map +0 -7
  708. package/dist/services/intelligentCompactor.js +0 -281
  709. package/dist/services/intelligentCompactor.js.map +0 -7
  710. package/dist/services/llm/anthropicProvider.js +0 -804
  711. package/dist/services/llm/anthropicProvider.js.map +0 -7
  712. package/dist/services/llm/dispatch.js +0 -237
  713. package/dist/services/llm/dispatch.js.map +0 -7
  714. package/dist/services/llm/index.js +0 -44
  715. package/dist/services/llm/index.js.map +0 -7
  716. package/dist/services/llm/mintoContext.js +0 -69
  717. package/dist/services/llm/mintoContext.js.map +0 -7
  718. package/dist/services/llm/openaiProvider.js +0 -601
  719. package/dist/services/llm/openaiProvider.js.map +0 -7
  720. package/dist/services/llm/types.js +0 -231
  721. package/dist/services/llm/types.js.map +0 -7
  722. package/dist/services/lspConfig.js +0 -109
  723. package/dist/services/lspConfig.js.map +0 -7
  724. package/dist/services/mainAgentCompressor.js +0 -84
  725. package/dist/services/mainAgentCompressor.js.map +0 -7
  726. package/dist/services/mcpClient.js +0 -997
  727. package/dist/services/mcpClient.js.map +0 -7
  728. package/dist/services/mcpServerApproval.js +0 -55
  729. package/dist/services/mcpServerApproval.js.map +0 -7
  730. package/dist/services/mentionProcessor.js +0 -214
  731. package/dist/services/mentionProcessor.js.map +0 -7
  732. package/dist/services/mintoAuth.js +0 -299
  733. package/dist/services/mintoAuth.js.map +0 -7
  734. package/dist/services/modelAdapterFactory.js +0 -47
  735. package/dist/services/modelAdapterFactory.js.map +0 -7
  736. package/dist/services/modelOrchestrator.js +0 -310
  737. package/dist/services/modelOrchestrator.js.map +0 -7
  738. package/dist/services/notifier.js +0 -49
  739. package/dist/services/notifier.js.map +0 -7
  740. package/dist/services/oauth.js +0 -249
  741. package/dist/services/oauth.js.map +0 -7
  742. package/dist/services/openai.js +0 -1120
  743. package/dist/services/openai.js.map +0 -7
  744. package/dist/services/outputStyles.js +0 -219
  745. package/dist/services/outputStyles.js.map +0 -7
  746. package/dist/services/plugins/index.js +0 -5
  747. package/dist/services/plugins/index.js.map +0 -7
  748. package/dist/services/plugins/lspServers.js +0 -188
  749. package/dist/services/plugins/lspServers.js.map +0 -7
  750. package/dist/services/plugins/pluginRuntime.js +0 -236
  751. package/dist/services/plugins/pluginRuntime.js.map +0 -7
  752. package/dist/services/plugins/pluginValidation.js +0 -228
  753. package/dist/services/plugins/pluginValidation.js.map +0 -7
  754. package/dist/services/plugins/skillMarketplace.js +0 -567
  755. package/dist/services/plugins/skillMarketplace.js.map +0 -7
  756. package/dist/services/responseStateManager.js +0 -102
  757. package/dist/services/responseStateManager.js.map +0 -7
  758. package/dist/services/sandbox/filesystemBoundary.js +0 -341
  759. package/dist/services/sandbox/filesystemBoundary.js.map +0 -7
  760. package/dist/services/sandbox/index.js +0 -14
  761. package/dist/services/sandbox/index.js.map +0 -7
  762. package/dist/services/sandbox/networkProxy.js +0 -293
  763. package/dist/services/sandbox/networkProxy.js.map +0 -7
  764. package/dist/services/sandbox/sandboxController.js +0 -582
  765. package/dist/services/sandbox/sandboxController.js.map +0 -7
  766. package/dist/services/sandbox/types.js +0 -50
  767. package/dist/services/sandbox/types.js.map +0 -7
  768. package/dist/services/sentry.js +0 -9
  769. package/dist/services/sentry.js.map +0 -7
  770. package/dist/services/sessionMemory.js +0 -279
  771. package/dist/services/sessionMemory.js.map +0 -7
  772. package/dist/services/sessionMemoryInjector.js +0 -77
  773. package/dist/services/sessionMemoryInjector.js.map +0 -7
  774. package/dist/services/subagentAbortManager.js +0 -95
  775. package/dist/services/subagentAbortManager.js.map +0 -7
  776. package/dist/services/subagentCompressor.js +0 -146
  777. package/dist/services/subagentCompressor.js.map +0 -7
  778. package/dist/services/systemReminder.js +0 -815
  779. package/dist/services/systemReminder.js.map +0 -7
  780. package/dist/services/taskRouter.js +0 -324
  781. package/dist/services/taskRouter.js.map +0 -7
  782. package/dist/services/taskStore.js +0 -415
  783. package/dist/services/taskStore.js.map +0 -7
  784. package/dist/services/topicDetector.js +0 -169
  785. package/dist/services/topicDetector.js.map +0 -7
  786. package/dist/services/vcr.js +0 -133
  787. package/dist/services/vcr.js.map +0 -7
  788. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -126
  789. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  790. package/dist/tools/ArchitectTool/prompt.js +0 -18
  791. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  792. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -420
  793. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  794. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +0 -158
  795. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +0 -7
  796. package/dist/tools/AskUserQuestionTool/index.js +0 -5
  797. package/dist/tools/AskUserQuestionTool/index.js.map +0 -7
  798. package/dist/tools/AskUserQuestionTool/prompt.js +0 -167
  799. package/dist/tools/AskUserQuestionTool/prompt.js.map +0 -7
  800. package/dist/tools/BaseTool.js +0 -72
  801. package/dist/tools/BaseTool.js.map +0 -7
  802. package/dist/tools/BashOutputTool/BashOutputTool.js +0 -120
  803. package/dist/tools/BashOutputTool/BashOutputTool.js.map +0 -7
  804. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +0 -14
  805. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +0 -7
  806. package/dist/tools/BashOutputTool/prompt.js +0 -13
  807. package/dist/tools/BashOutputTool/prompt.js.map +0 -7
  808. package/dist/tools/BashTool/BashTool.js +0 -353
  809. package/dist/tools/BashTool/BashTool.js.map +0 -7
  810. package/dist/tools/BashTool/BashToolResultMessage.js +0 -24
  811. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  812. package/dist/tools/BashTool/OutputLine.js +0 -84
  813. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  814. package/dist/tools/BashTool/prompt.js +0 -496
  815. package/dist/tools/BashTool/prompt.js.map +0 -7
  816. package/dist/tools/BashTool/utils.js +0 -89
  817. package/dist/tools/BashTool/utils.js.map +0 -7
  818. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +0 -121
  819. package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +0 -7
  820. package/dist/tools/EnterWorktreeTool/prompt.js +0 -22
  821. package/dist/tools/EnterWorktreeTool/prompt.js.map +0 -7
  822. package/dist/tools/FileEditTool/FileEditTool.js +0 -278
  823. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  824. package/dist/tools/FileEditTool/prompt.js +0 -56
  825. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  826. package/dist/tools/FileEditTool/utils.js +0 -48
  827. package/dist/tools/FileEditTool/utils.js.map +0 -7
  828. package/dist/tools/FileReadTool/FileReadTool.js +0 -427
  829. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  830. package/dist/tools/FileReadTool/prompt.js +0 -24
  831. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  832. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -211
  833. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  834. package/dist/tools/FileWriteTool/prompt.js +0 -21
  835. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  836. package/dist/tools/GlobTool/GlobTool.js +0 -100
  837. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  838. package/dist/tools/GlobTool/prompt.js +0 -23
  839. package/dist/tools/GlobTool/prompt.js.map +0 -7
  840. package/dist/tools/GrepTool/GrepTool.js +0 -417
  841. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  842. package/dist/tools/GrepTool/prompt.js +0 -22
  843. package/dist/tools/GrepTool/prompt.js.map +0 -7
  844. package/dist/tools/KillShellTool/KillShellTool.js +0 -92
  845. package/dist/tools/KillShellTool/KillShellTool.js.map +0 -7
  846. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +0 -14
  847. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +0 -7
  848. package/dist/tools/KillShellTool/prompt.js +0 -12
  849. package/dist/tools/KillShellTool/prompt.js.map +0 -7
  850. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +0 -109
  851. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +0 -7
  852. package/dist/tools/ListMcpResourcesTool/prompt.js +0 -19
  853. package/dist/tools/ListMcpResourcesTool/prompt.js.map +0 -7
  854. package/dist/tools/LspTool/LspTool.js +0 -673
  855. package/dist/tools/LspTool/LspTool.js.map +0 -7
  856. package/dist/tools/LspTool/prompt.js +0 -27
  857. package/dist/tools/LspTool/prompt.js.map +0 -7
  858. package/dist/tools/MCPSearchTool/MCPSearchTool.js +0 -172
  859. package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +0 -7
  860. package/dist/tools/MCPSearchTool/prompt.js +0 -77
  861. package/dist/tools/MCPSearchTool/prompt.js.map +0 -7
  862. package/dist/tools/MCPTool/MCPTool.js +0 -97
  863. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  864. package/dist/tools/MCPTool/prompt.js +0 -7
  865. package/dist/tools/MCPTool/prompt.js.map +0 -7
  866. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -117
  867. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  868. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  869. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  870. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -78
  871. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  872. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  873. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  874. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -328
  875. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  876. package/dist/tools/MultiEditTool/prompt.js +0 -47
  877. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  878. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -257
  879. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  880. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  881. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  882. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -218
  883. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  884. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  885. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  886. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +0 -85
  887. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +0 -7
  888. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +0 -164
  889. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +0 -7
  890. package/dist/tools/PlanModeTool/prompt.js +0 -43
  891. package/dist/tools/PlanModeTool/prompt.js.map +0 -7
  892. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +0 -130
  893. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +0 -7
  894. package/dist/tools/ReadMcpResourceTool/prompt.js +0 -17
  895. package/dist/tools/ReadMcpResourceTool/prompt.js.map +0 -7
  896. package/dist/tools/SendMessageTool/SendMessageTool.js +0 -341
  897. package/dist/tools/SendMessageTool/SendMessageTool.js.map +0 -7
  898. package/dist/tools/SendMessageTool/prompt.js +0 -44
  899. package/dist/tools/SendMessageTool/prompt.js.map +0 -7
  900. package/dist/tools/SkillTool/SkillTool.js +0 -227
  901. package/dist/tools/SkillTool/SkillTool.js.map +0 -7
  902. package/dist/tools/SkillTool/prompt.js +0 -81
  903. package/dist/tools/SkillTool/prompt.js.map +0 -7
  904. package/dist/tools/SlashCommandTool/SlashCommandTool.js +0 -416
  905. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +0 -7
  906. package/dist/tools/SlashCommandTool/prompt.js +0 -35
  907. package/dist/tools/SlashCommandTool/prompt.js.map +0 -7
  908. package/dist/tools/TaskCreateTool/TaskCreateTool.js +0 -102
  909. package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +0 -7
  910. package/dist/tools/TaskCreateTool/prompt.js +0 -58
  911. package/dist/tools/TaskCreateTool/prompt.js.map +0 -7
  912. package/dist/tools/TaskGetTool/TaskGetTool.js +0 -115
  913. package/dist/tools/TaskGetTool/TaskGetTool.js.map +0 -7
  914. package/dist/tools/TaskGetTool/prompt.js +0 -28
  915. package/dist/tools/TaskGetTool/prompt.js.map +0 -7
  916. package/dist/tools/TaskListTool/TaskListTool.js +0 -102
  917. package/dist/tools/TaskListTool/TaskListTool.js.map +0 -7
  918. package/dist/tools/TaskListTool/prompt.js +0 -42
  919. package/dist/tools/TaskListTool/prompt.js.map +0 -7
  920. package/dist/tools/TaskOutputTool/TaskOutputTool.js +0 -190
  921. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +0 -7
  922. package/dist/tools/TaskOutputTool/prompt.js +0 -16
  923. package/dist/tools/TaskOutputTool/prompt.js.map +0 -7
  924. package/dist/tools/TaskStopTool/TaskStopTool.js +0 -150
  925. package/dist/tools/TaskStopTool/TaskStopTool.js.map +0 -7
  926. package/dist/tools/TaskStopTool/prompt.js +0 -15
  927. package/dist/tools/TaskStopTool/prompt.js.map +0 -7
  928. package/dist/tools/TaskTool/TaskTool.js +0 -1525
  929. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  930. package/dist/tools/TaskTool/constants.js +0 -11
  931. package/dist/tools/TaskTool/constants.js.map +0 -7
  932. package/dist/tools/TaskTool/prompt.js +0 -121
  933. package/dist/tools/TaskTool/prompt.js.map +0 -7
  934. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +0 -148
  935. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +0 -7
  936. package/dist/tools/TaskUpdateTool/prompt.js +0 -81
  937. package/dist/tools/TaskUpdateTool/prompt.js.map +0 -7
  938. package/dist/tools/TeamCreateTool/TeamCreateTool.js +0 -129
  939. package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +0 -7
  940. package/dist/tools/TeamCreateTool/prompt.js +0 -58
  941. package/dist/tools/TeamCreateTool/prompt.js.map +0 -7
  942. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +0 -151
  943. package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +0 -7
  944. package/dist/tools/TeamDeleteTool/prompt.js +0 -16
  945. package/dist/tools/TeamDeleteTool/prompt.js.map +0 -7
  946. package/dist/tools/ThinkTool/ThinkTool.js +0 -45
  947. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  948. package/dist/tools/ThinkTool/prompt.js +0 -16
  949. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  950. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -232
  951. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  952. package/dist/tools/TodoWriteTool/prompt.js +0 -87
  953. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  954. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -234
  955. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  956. package/dist/tools/URLFetcherTool/cache.js +0 -95
  957. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  958. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -44
  959. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  960. package/dist/tools/URLFetcherTool/prompt.js +0 -28
  961. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  962. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -92
  963. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  964. package/dist/tools/WebSearchTool/prompt.js +0 -24
  965. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  966. package/dist/tools/WebSearchTool/searchProviders.js +0 -58
  967. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  968. package/dist/tools/lsTool/lsTool.js +0 -201
  969. package/dist/tools/lsTool/lsTool.js.map +0 -7
  970. package/dist/tools/lsTool/prompt.js +0 -5
  971. package/dist/tools/lsTool/prompt.js.map +0 -7
  972. package/dist/tools.js +0 -207
  973. package/dist/tools.js.map +0 -7
  974. package/dist/types/PermissionMode.js +0 -160
  975. package/dist/types/PermissionMode.js.map +0 -7
  976. package/dist/types/RequestContext.js +0 -47
  977. package/dist/types/RequestContext.js.map +0 -7
  978. package/dist/types/agentTeams.js +0 -1
  979. package/dist/types/agentTeams.js.map +0 -7
  980. package/dist/types/askUserQuestion.js +0 -1
  981. package/dist/types/askUserQuestion.js.map +0 -7
  982. package/dist/types/common.d.js +0 -1
  983. package/dist/types/common.d.js.map +0 -7
  984. package/dist/types/conversation.js +0 -1
  985. package/dist/types/conversation.js.map +0 -7
  986. package/dist/types/core.js +0 -1
  987. package/dist/types/core.js.map +0 -7
  988. package/dist/types/hooks.js +0 -47
  989. package/dist/types/hooks.js.map +0 -7
  990. package/dist/types/interactionRound.js +0 -1
  991. package/dist/types/interactionRound.js.map +0 -7
  992. package/dist/types/logs.js +0 -1
  993. package/dist/types/logs.js.map +0 -7
  994. package/dist/types/marketplace.js +0 -107
  995. package/dist/types/marketplace.js.map +0 -7
  996. package/dist/types/messageGroup.js +0 -36
  997. package/dist/types/messageGroup.js.map +0 -7
  998. package/dist/types/modelCapabilities.js +0 -1
  999. package/dist/types/modelCapabilities.js.map +0 -7
  1000. package/dist/types/notebook.js +0 -1
  1001. package/dist/types/notebook.js.map +0 -7
  1002. package/dist/types/plugin.js +0 -86
  1003. package/dist/types/plugin.js.map +0 -7
  1004. package/dist/types/subagent.js +0 -1
  1005. package/dist/types/subagent.js.map +0 -7
  1006. package/dist/types/thinking.js +0 -1
  1007. package/dist/types/thinking.js.map +0 -7
  1008. package/dist/utils/BackgroundShellManager.js +0 -378
  1009. package/dist/utils/BackgroundShellManager.js.map +0 -7
  1010. package/dist/utils/CircuitBreaker.js +0 -248
  1011. package/dist/utils/CircuitBreaker.js.map +0 -7
  1012. package/dist/utils/Cursor.js +0 -315
  1013. package/dist/utils/Cursor.js.map +0 -7
  1014. package/dist/utils/MessageBatchBuffer.js +0 -102
  1015. package/dist/utils/MessageBatchBuffer.js.map +0 -7
  1016. package/dist/utils/PersistentShell.js +0 -526
  1017. package/dist/utils/PersistentShell.js.map +0 -7
  1018. package/dist/utils/advancedFuzzyMatcher.js +0 -209
  1019. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  1020. package/dist/utils/agentHookExecutor.js +0 -103
  1021. package/dist/utils/agentHookExecutor.js.map +0 -7
  1022. package/dist/utils/agentLoader.js +0 -655
  1023. package/dist/utils/agentLoader.js.map +0 -7
  1024. package/dist/utils/agentMemory.js +0 -134
  1025. package/dist/utils/agentMemory.js.map +0 -7
  1026. package/dist/utils/agentStorage.js +0 -59
  1027. package/dist/utils/agentStorage.js.map +0 -7
  1028. package/dist/utils/agentTranscripts.js +0 -641
  1029. package/dist/utils/agentTranscripts.js.map +0 -7
  1030. package/dist/utils/animationManager.js +0 -250
  1031. package/dist/utils/animationManager.js.map +0 -7
  1032. package/dist/utils/animationSync.js +0 -110
  1033. package/dist/utils/animationSync.js.map +0 -7
  1034. package/dist/utils/array.js +0 -7
  1035. package/dist/utils/array.js.map +0 -7
  1036. package/dist/utils/ask.js +0 -80
  1037. package/dist/utils/ask.js.map +0 -7
  1038. package/dist/utils/async.js +0 -167
  1039. package/dist/utils/async.js.map +0 -7
  1040. package/dist/utils/asyncFile.js +0 -215
  1041. package/dist/utils/asyncFile.js.map +0 -7
  1042. package/dist/utils/atomicWrite.js +0 -23
  1043. package/dist/utils/atomicWrite.js.map +0 -7
  1044. package/dist/utils/auth.js +0 -11
  1045. package/dist/utils/auth.js.map +0 -7
  1046. package/dist/utils/autoCompactCore.js +0 -203
  1047. package/dist/utils/autoCompactCore.js.map +0 -7
  1048. package/dist/utils/autoMemoryPaths.js +0 -89
  1049. package/dist/utils/autoMemoryPaths.js.map +0 -7
  1050. package/dist/utils/autoUpdater.js +0 -113
  1051. package/dist/utils/autoUpdater.js.map +0 -7
  1052. package/dist/utils/backgroundAgentManager.js +0 -231
  1053. package/dist/utils/backgroundAgentManager.js.map +0 -7
  1054. package/dist/utils/browser.js +0 -15
  1055. package/dist/utils/browser.js.map +0 -7
  1056. package/dist/utils/claudeCodeSync.js +0 -439
  1057. package/dist/utils/claudeCodeSync.js.map +0 -7
  1058. package/dist/utils/cleanup.js +0 -54
  1059. package/dist/utils/cleanup.js.map +0 -7
  1060. package/dist/utils/commands.js +0 -219
  1061. package/dist/utils/commands.js.map +0 -7
  1062. package/dist/utils/commonUnixCommands.js +0 -689
  1063. package/dist/utils/commonUnixCommands.js.map +0 -7
  1064. package/dist/utils/compressionMode.js +0 -47
  1065. package/dist/utils/compressionMode.js.map +0 -7
  1066. package/dist/utils/config.js +0 -716
  1067. package/dist/utils/config.js.map +0 -7
  1068. package/dist/utils/configPaths.js +0 -199
  1069. package/dist/utils/configPaths.js.map +0 -7
  1070. package/dist/utils/configSchema.js +0 -232
  1071. package/dist/utils/configSchema.js.map +0 -7
  1072. package/dist/utils/conversationRecovery.js +0 -54
  1073. package/dist/utils/conversationRecovery.js.map +0 -7
  1074. package/dist/utils/credentials/CredentialStore.js +0 -1
  1075. package/dist/utils/credentials/CredentialStore.js.map +0 -7
  1076. package/dist/utils/credentials/EncryptedFileStore.js +0 -157
  1077. package/dist/utils/credentials/EncryptedFileStore.js.map +0 -7
  1078. package/dist/utils/credentials/index.js +0 -51
  1079. package/dist/utils/credentials/index.js.map +0 -7
  1080. package/dist/utils/credentials/migration.js +0 -82
  1081. package/dist/utils/credentials/migration.js.map +0 -7
  1082. package/dist/utils/debugLogger.js +0 -889
  1083. package/dist/utils/debugLogger.js.map +0 -7
  1084. package/dist/utils/diff.js +0 -32
  1085. package/dist/utils/diff.js.map +0 -7
  1086. package/dist/utils/dualPath.js +0 -24
  1087. package/dist/utils/dualPath.js.map +0 -7
  1088. package/dist/utils/env.js +0 -45
  1089. package/dist/utils/env.js.map +0 -7
  1090. package/dist/utils/envConfig.js +0 -116
  1091. package/dist/utils/envConfig.js.map +0 -7
  1092. package/dist/utils/errorHandling.js +0 -89
  1093. package/dist/utils/errorHandling.js.map +0 -7
  1094. package/dist/utils/errors.js +0 -23
  1095. package/dist/utils/errors.js.map +0 -7
  1096. package/dist/utils/execFileNoThrow.js +0 -45
  1097. package/dist/utils/execFileNoThrow.js.map +0 -7
  1098. package/dist/utils/exit.js +0 -132
  1099. package/dist/utils/exit.js.map +0 -7
  1100. package/dist/utils/expertChatStorage.js +0 -78
  1101. package/dist/utils/expertChatStorage.js.map +0 -7
  1102. package/dist/utils/externalEditor.js +0 -155
  1103. package/dist/utils/externalEditor.js.map +0 -7
  1104. package/dist/utils/file.js +0 -282
  1105. package/dist/utils/file.js.map +0 -7
  1106. package/dist/utils/fileLock.js +0 -67
  1107. package/dist/utils/fileLock.js.map +0 -7
  1108. package/dist/utils/fileRecoveryCore.js +0 -41
  1109. package/dist/utils/fileRecoveryCore.js.map +0 -7
  1110. package/dist/utils/format.js +0 -119
  1111. package/dist/utils/format.js.map +0 -7
  1112. package/dist/utils/fuzzyMatcher.js +0 -258
  1113. package/dist/utils/fuzzyMatcher.js.map +0 -7
  1114. package/dist/utils/generators.js +0 -116
  1115. package/dist/utils/generators.js.map +0 -7
  1116. package/dist/utils/git.js +0 -83
  1117. package/dist/utils/git.js.map +0 -7
  1118. package/dist/utils/globalErrorHandler.js +0 -58
  1119. package/dist/utils/globalErrorHandler.js.map +0 -7
  1120. package/dist/utils/gpt5.js +0 -146
  1121. package/dist/utils/gpt5.js.map +0 -7
  1122. package/dist/utils/groupHandlers/index.js +0 -8
  1123. package/dist/utils/groupHandlers/index.js.map +0 -7
  1124. package/dist/utils/groupHandlers/parallelTasksHandler.js +0 -142
  1125. package/dist/utils/groupHandlers/parallelTasksHandler.js.map +0 -7
  1126. package/dist/utils/groupHandlers/taskHandler.js +0 -104
  1127. package/dist/utils/groupHandlers/taskHandler.js.map +0 -7
  1128. package/dist/utils/groupHandlers/types.js +0 -1
  1129. package/dist/utils/groupHandlers/types.js.map +0 -7
  1130. package/dist/utils/historyManager.js +0 -234
  1131. package/dist/utils/historyManager.js.map +0 -7
  1132. package/dist/utils/hookManager.js +0 -540
  1133. package/dist/utils/hookManager.js.map +0 -7
  1134. package/dist/utils/http.js +0 -7
  1135. package/dist/utils/http.js.map +0 -7
  1136. package/dist/utils/imagePaste.js +0 -29
  1137. package/dist/utils/imagePaste.js.map +0 -7
  1138. package/dist/utils/json.js +0 -16
  1139. package/dist/utils/json.js.map +0 -7
  1140. package/dist/utils/log.js +0 -333
  1141. package/dist/utils/log.js.map +0 -7
  1142. package/dist/utils/logRotation.js +0 -224
  1143. package/dist/utils/logRotation.js.map +0 -7
  1144. package/dist/utils/markdown.js +0 -464
  1145. package/dist/utils/markdown.js.map +0 -7
  1146. package/dist/utils/marketplaceManager.js +0 -545
  1147. package/dist/utils/marketplaceManager.js.map +0 -7
  1148. package/dist/utils/memSafety.js +0 -264
  1149. package/dist/utils/memSafety.js.map +0 -7
  1150. package/dist/utils/memoizeWithTTL.js +0 -25
  1151. package/dist/utils/memoizeWithTTL.js.map +0 -7
  1152. package/dist/utils/messageContextManager.js +0 -208
  1153. package/dist/utils/messageContextManager.js.map +0 -7
  1154. package/dist/utils/messageGroupManager.js +0 -274
  1155. package/dist/utils/messageGroupManager.js.map +0 -7
  1156. package/dist/utils/messages.js +0 -725
  1157. package/dist/utils/messages.js.map +0 -7
  1158. package/dist/utils/migration/index.js +0 -37
  1159. package/dist/utils/migration/index.js.map +0 -7
  1160. package/dist/utils/migration/migrateHistory.js +0 -273
  1161. package/dist/utils/migration/migrateHistory.js.map +0 -7
  1162. package/dist/utils/migration/migrateTodos.js +0 -323
  1163. package/dist/utils/migration/migrateTodos.js.map +0 -7
  1164. package/dist/utils/model.js +0 -846
  1165. package/dist/utils/model.js.map +0 -7
  1166. package/dist/utils/pasteCache.js +0 -313
  1167. package/dist/utils/pasteCache.js.map +0 -7
  1168. package/dist/utils/permissions/filesystem.js +0 -236
  1169. package/dist/utils/permissions/filesystem.js.map +0 -7
  1170. package/dist/utils/plan/planMode.js +0 -143
  1171. package/dist/utils/plan/planMode.js.map +0 -7
  1172. package/dist/utils/pluginInstaller.js +0 -518
  1173. package/dist/utils/pluginInstaller.js.map +0 -7
  1174. package/dist/utils/pluginLoader.js +0 -819
  1175. package/dist/utils/pluginLoader.js.map +0 -7
  1176. package/dist/utils/pluginRegistry.js +0 -111
  1177. package/dist/utils/pluginRegistry.js.map +0 -7
  1178. package/dist/utils/pluginValidator.js +0 -798
  1179. package/dist/utils/pluginValidator.js.map +0 -7
  1180. package/dist/utils/ptyCompat.js +0 -125
  1181. package/dist/utils/ptyCompat.js.map +0 -7
  1182. package/dist/utils/replStateMachine.js +0 -145
  1183. package/dist/utils/replStateMachine.js.map +0 -7
  1184. package/dist/utils/repoFetcher.js +0 -110
  1185. package/dist/utils/repoFetcher.js.map +0 -7
  1186. package/dist/utils/ripgrep.js +0 -236
  1187. package/dist/utils/ripgrep.js.map +0 -7
  1188. package/dist/utils/roundConverter.js +0 -262
  1189. package/dist/utils/roundConverter.js.map +0 -7
  1190. package/dist/utils/safeFetch.js +0 -45
  1191. package/dist/utils/safeFetch.js.map +0 -7
  1192. package/dist/utils/safePath.js +0 -132
  1193. package/dist/utils/safePath.js.map +0 -7
  1194. package/dist/utils/sanitizeInput.js +0 -32
  1195. package/dist/utils/sanitizeInput.js.map +0 -7
  1196. package/dist/utils/secureFile.js +0 -512
  1197. package/dist/utils/secureFile.js.map +0 -7
  1198. package/dist/utils/secureKeyStorage.js +0 -341
  1199. package/dist/utils/secureKeyStorage.js.map +0 -7
  1200. package/dist/utils/sensitiveFiles.js +0 -125
  1201. package/dist/utils/sensitiveFiles.js.map +0 -7
  1202. package/dist/utils/session/sessionPlugins.js +0 -67
  1203. package/dist/utils/session/sessionPlugins.js.map +0 -7
  1204. package/dist/utils/sessionIndex.js +0 -192
  1205. package/dist/utils/sessionIndex.js.map +0 -7
  1206. package/dist/utils/sessionState.js +0 -22
  1207. package/dist/utils/sessionState.js.map +0 -7
  1208. package/dist/utils/sessionTracker.js +0 -170
  1209. package/dist/utils/sessionTracker.js.map +0 -7
  1210. package/dist/utils/simpleMode.js +0 -7
  1211. package/dist/utils/simpleMode.js.map +0 -7
  1212. package/dist/utils/skillLoader.js +0 -230
  1213. package/dist/utils/skillLoader.js.map +0 -7
  1214. package/dist/utils/state.js +0 -24
  1215. package/dist/utils/state.js.map +0 -7
  1216. package/dist/utils/stats.js +0 -417
  1217. package/dist/utils/stats.js.map +0 -7
  1218. package/dist/utils/streamingState.js +0 -62
  1219. package/dist/utils/streamingState.js.map +0 -7
  1220. package/dist/utils/stringSubstitution.js +0 -106
  1221. package/dist/utils/stringSubstitution.js.map +0 -7
  1222. package/dist/utils/style.js +0 -34
  1223. package/dist/utils/style.js.map +0 -7
  1224. package/dist/utils/taskDisplayUtils.js +0 -258
  1225. package/dist/utils/taskDisplayUtils.js.map +0 -7
  1226. package/dist/utils/teamConfig.js +0 -624
  1227. package/dist/utils/teamConfig.js.map +0 -7
  1228. package/dist/utils/terminal.js +0 -59
  1229. package/dist/utils/terminal.js.map +0 -7
  1230. package/dist/utils/theme.js +0 -134
  1231. package/dist/utils/theme.js.map +0 -7
  1232. package/dist/utils/thinking.js +0 -63
  1233. package/dist/utils/thinking.js.map +0 -7
  1234. package/dist/utils/todoChangeCalculator.js +0 -64
  1235. package/dist/utils/todoChangeCalculator.js.map +0 -7
  1236. package/dist/utils/todoStorage.js +0 -413
  1237. package/dist/utils/todoStorage.js.map +0 -7
  1238. package/dist/utils/tokenProgress.js +0 -55
  1239. package/dist/utils/tokenProgress.js.map +0 -7
  1240. package/dist/utils/tokens.js +0 -30
  1241. package/dist/utils/tokens.js.map +0 -7
  1242. package/dist/utils/toolExecutionController.js +0 -109
  1243. package/dist/utils/toolExecutionController.js.map +0 -7
  1244. package/dist/utils/toolRiskClassification.js +0 -210
  1245. package/dist/utils/toolRiskClassification.js.map +0 -7
  1246. package/dist/utils/toolTimeout.js +0 -136
  1247. package/dist/utils/toolTimeout.js.map +0 -7
  1248. package/dist/utils/tooling/safeRender.js +0 -115
  1249. package/dist/utils/tooling/safeRender.js.map +0 -7
  1250. package/dist/utils/tooling/toolError.js +0 -12
  1251. package/dist/utils/tooling/toolError.js.map +0 -7
  1252. package/dist/utils/unaryLogging.js +0 -6
  1253. package/dist/utils/unaryLogging.js.map +0 -7
  1254. package/dist/utils/user.js +0 -40
  1255. package/dist/utils/user.js.map +0 -7
  1256. package/dist/utils/userFriendlyError.js +0 -346
  1257. package/dist/utils/userFriendlyError.js.map +0 -7
  1258. package/dist/utils/validate.js +0 -132
  1259. package/dist/utils/validate.js.map +0 -7
  1260. package/dist/version.js +0 -7
  1261. package/dist/version.js.map +0 -7
  1262. package/dist/yoga.wasm +0 -0
  1263. /package/{dist/utils/vendor → vendor}/ripgrep/arm64-darwin/rg +0 -0
@@ -1,2103 +0,0 @@
1
- import React, { useState, useEffect, useRef } from "react";
2
- import { Text, useInput } from "ink";
3
- import { getModelManager } from "../../utils/model.js";
4
- import { useExitOnCtrlCD } from "../../hooks/useExitOnCtrlCD.js";
5
- import {
6
- getGlobalConfig,
7
- setAllPointersToModel,
8
- setModelPointer,
9
- resolveApiKey
10
- } from "../../utils/config.js";
11
- import models, { providers } from "../../constants/models.js";
12
- import OpenAI from "openai";
13
- import { verifyApiKey } from "../../services/claude.js";
14
- import { fetchCustomModels } from "../../services/openai.js";
15
- import {
16
- testGPT5Connection,
17
- validateGPT5Config
18
- } from "../../services/gpt5ConnectionTest.js";
19
- import { SEMANTIC_COLORS } from "../../constants/colors.js";
20
- import { isOpenAICompatibleProvider } from "../../constants/providers.js";
21
- import { getEffectiveCapabilities } from "../../constants/providerRegistry.js";
22
- import { t } from "../../i18n/index.js";
23
- import { SimpleSelector } from "../SimpleSelector/SimpleSelector.js";
24
- import { InfoPanel } from "../InfoPanel/InfoPanel.js";
25
- import { BrandTextInput } from "./BrandTextInput.js";
26
- import {
27
- CONTEXT_LENGTH_OPTIONS,
28
- DEFAULT_CONTEXT_LENGTH,
29
- MAX_TOKENS_OPTIONS,
30
- DEFAULT_MAX_TOKENS
31
- } from "./constants.js";
32
- function ModelSelector({
33
- onDone: onDoneProp,
34
- abortController,
35
- targetPointer,
36
- isOnboarding = false,
37
- onCancel,
38
- skipModelType = false,
39
- editingModel
40
- }) {
41
- const config = getGlobalConfig();
42
- const onDone = onDoneProp;
43
- useExitOnCtrlCD(() => process.exit(0));
44
- const isEditMode = !!editingModel;
45
- const [screenStack, setScreenStack] = useState([isEditMode ? "testAndSave" : "provider"]);
46
- const currentScreen = screenStack[screenStack.length - 1];
47
- const currentScreenRef = useRef(currentScreen);
48
- currentScreenRef.current = currentScreen;
49
- const pendingTimerRef = useRef(null);
50
- const navigateTo = (screen) => {
51
- setScreenStack((prev) => [...prev, screen]);
52
- };
53
- const navigateToIfStillOn = (expectedScreen, targetScreen) => {
54
- if (currentScreenRef.current === expectedScreen) {
55
- navigateTo(targetScreen);
56
- }
57
- };
58
- const goBack = () => {
59
- if (screenStack.length > 1) {
60
- setScreenStack((prev) => prev.slice(0, -1));
61
- } else {
62
- onDone();
63
- }
64
- };
65
- const [selectedProvider, setSelectedProvider] = useState(
66
- editingModel?.provider ?? config.primaryProvider ?? "anthropic"
67
- );
68
- const [anthropicProviderType, setAnthropicProviderType] = useState("official");
69
- const [selectedModel, setSelectedModel] = useState(
70
- editingModel?.modelName ?? ""
71
- );
72
- const [apiKey, setApiKey] = useState(editingModel?.apiKey ?? "");
73
- const [maxTokens, setMaxTokens] = useState(
74
- editingModel?.maxTokens?.toString() ?? config.maxTokens?.toString() ?? DEFAULT_MAX_TOKENS.toString()
75
- );
76
- const [maxTokensMode, setMaxTokensMode] = useState(
77
- "preset"
78
- );
79
- const [selectedMaxTokensPreset, setSelectedMaxTokensPreset] = useState(config.maxTokens || DEFAULT_MAX_TOKENS);
80
- const [reasoningEffort, setReasoningEffort] = useState(
81
- editingModel?.reasoningEffort ?? "medium"
82
- );
83
- const [supportsReasoningEffort, setSupportsReasoningEffort] = useState(!!editingModel?.reasoningEffort);
84
- const [contextLength, setContextLength] = useState(
85
- editingModel?.contextLength ?? DEFAULT_CONTEXT_LENGTH
86
- );
87
- const [activeFieldIndex, setActiveFieldIndex] = useState(0);
88
- const [maxTokensCursorOffset, setMaxTokensCursorOffset] = useState(0);
89
- const [availableModels, setAvailableModels] = useState([]);
90
- const [isLoadingModels, setIsLoadingModels] = useState(false);
91
- const [modelLoadError, setModelLoadError] = useState(null);
92
- const [modelSearchQuery, setModelSearchQuery] = useState("");
93
- const [modelSearchCursorOffset, setModelSearchCursorOffset] = useState(0);
94
- const [cursorOffset, setCursorOffset] = useState(0);
95
- const [apiKeyEdited, setApiKeyEdited] = useState(isEditMode);
96
- const [originalEncryptedRef, setOriginalEncryptedRef] = useState(editingModel?.apiKey?.startsWith("encrypted:") ? editingModel.apiKey : null);
97
- const [apiKeyUserModified, setApiKeyUserModified] = useState(false);
98
- useEffect(() => {
99
- if (editingModel?.apiKey?.startsWith("encrypted:")) {
100
- resolveApiKey(editingModel).then((resolved) => {
101
- if (resolved) setApiKey(resolved);
102
- });
103
- }
104
- }, []);
105
- const [fetchRetryCount, setFetchRetryCount] = useState(0);
106
- const [isRetrying, setIsRetrying] = useState(false);
107
- const [isTestingConnection, setIsTestingConnection] = useState(false);
108
- const [connectionTestResult, setConnectionTestResult] = useState(null);
109
- const [validationError, setValidationError] = useState(null);
110
- const [isManualModelEntry, setIsManualModelEntry] = useState(false);
111
- const [resourceName, setResourceName] = useState("");
112
- const [resourceNameCursorOffset, setResourceNameCursorOffset] = useState(0);
113
- const [customModelName, setCustomModelName] = useState("");
114
- const [customModelNameCursorOffset, setCustomModelNameCursorOffset] = useState(0);
115
- const [ollamaBaseUrl, setOllamaBaseUrl] = useState(
116
- "http://localhost:11434/v1"
117
- );
118
- const [ollamaBaseUrlCursorOffset, setOllamaBaseUrlCursorOffset] = useState(0);
119
- const [customBaseUrl, setCustomBaseUrl] = useState(
120
- editingModel?.provider === "custom-openai" ? editingModel?.baseURL ?? "" : ""
121
- );
122
- const [customBaseUrlCursorOffset, setCustomBaseUrlCursorOffset] = useState(0);
123
- const [providerBaseUrl, setProviderBaseUrl] = useState(
124
- editingModel?.baseURL ?? ""
125
- );
126
- const [providerBaseUrlCursorOffset, setProviderBaseUrlCursorOffset] = useState(0);
127
- const reasoningEffortOptions = [
128
- { label: "Low - Faster responses, less thorough reasoning", value: "low" },
129
- { label: "Medium - Balanced speed and reasoning depth", value: "medium" },
130
- {
131
- label: "High - Slower responses, more thorough reasoning",
132
- value: "high"
133
- }
134
- ];
135
- const availableProviders = Object.keys(providers).filter(
136
- (provider) => provider !== "bigdream" && provider !== "opendev"
137
- );
138
- const providerOptions = availableProviders.map((provider) => {
139
- const modelCount = models[provider]?.length || 0;
140
- const label = getProviderLabel(provider, modelCount);
141
- return {
142
- label,
143
- value: provider
144
- };
145
- });
146
- useEffect(() => {
147
- if (!apiKeyEdited && selectedProvider) {
148
- if (process.env[selectedProvider.toUpperCase() + "_API_KEY"]) {
149
- setApiKey(
150
- process.env[selectedProvider.toUpperCase() + "_API_KEY"]
151
- );
152
- } else {
153
- setApiKey("");
154
- }
155
- }
156
- }, [selectedProvider, apiKey, apiKeyEdited]);
157
- useEffect(() => {
158
- if (currentScreen === "contextLength" && !CONTEXT_LENGTH_OPTIONS.find((opt) => opt.value === contextLength)) {
159
- setContextLength(DEFAULT_CONTEXT_LENGTH);
160
- }
161
- }, [currentScreen, contextLength]);
162
- useEffect(() => {
163
- if (currentScreen === "testAndSave" && !isEditMode && !isTestingConnection && !connectionTestResult) {
164
- handleConnectionTest();
165
- }
166
- }, [currentScreen]);
167
- const ourModelNames = new Set(
168
- (models[selectedProvider] || []).map(
169
- (model) => model.model
170
- )
171
- );
172
- const filteredModels = modelSearchQuery ? availableModels.filter(
173
- (model) => model.model?.toLowerCase().includes(modelSearchQuery.toLowerCase())
174
- ) : availableModels;
175
- const sortModelsByPriority = (models2) => {
176
- const priorityKeywords = [
177
- "claude",
178
- "kimi",
179
- "deepseek",
180
- "minimax",
181
- "o3",
182
- "gpt",
183
- "qwen"
184
- ];
185
- return models2.sort((a, b) => {
186
- const aModelLower = a.model?.toLowerCase() || "";
187
- const bModelLower = b.model?.toLowerCase() || "";
188
- const aHasPriority = priorityKeywords.some(
189
- (keyword) => aModelLower.includes(keyword)
190
- );
191
- const bHasPriority = priorityKeywords.some(
192
- (keyword) => bModelLower.includes(keyword)
193
- );
194
- if (aHasPriority && !bHasPriority) return -1;
195
- if (!aHasPriority && bHasPriority) return 1;
196
- return a.model.localeCompare(b.model);
197
- });
198
- };
199
- const sortedFilteredModels = sortModelsByPriority(filteredModels);
200
- const modelOptions = sortedFilteredModels.map((model) => {
201
- const isInOurModels = ourModelNames.has(model.model);
202
- return {
203
- label: `${model.model}${getModelDetails(model)}`,
204
- value: model.model
205
- };
206
- });
207
- function getModelDetails(model) {
208
- const details = [];
209
- if (model.context_length) {
210
- details.push(`${formatNumber(model.context_length)} tokens`);
211
- } else if (model.max_tokens) {
212
- details.push(`${formatNumber(model.max_tokens)} tokens`);
213
- }
214
- if (model.supports_vision) {
215
- details.push("vision");
216
- }
217
- if (model.supports_function_calling) {
218
- details.push("tools");
219
- }
220
- return details.length > 0 ? ` (${details.join(", ")})` : "";
221
- }
222
- function formatNumber(num) {
223
- if (num >= 1e6) {
224
- return `${(num / 1e6).toFixed(1)}M`;
225
- } else if (num >= 1e3) {
226
- return `${(num / 1e3).toFixed(0)}K`;
227
- }
228
- return num.toString();
229
- }
230
- function getProviderLabel(provider, modelCount) {
231
- if (providers[provider]) {
232
- return `${providers[provider].name} ${providers[provider].status === "wip" ? "(WIP)" : ""} (${modelCount} models)`;
233
- }
234
- return `${provider}`;
235
- }
236
- function handleProviderSelection(provider) {
237
- const providerType = provider;
238
- setSelectedProvider(providerType);
239
- if (provider === "custom") {
240
- saveConfiguration(providerType, selectedModel || "");
241
- onDone();
242
- } else if (provider === "anthropic") {
243
- navigateTo("anthropicSubMenu");
244
- } else {
245
- const defaultBaseUrl = providers[providerType]?.baseURL || "";
246
- setProviderBaseUrl(defaultBaseUrl);
247
- navigateTo("baseUrl");
248
- }
249
- }
250
- async function fetchAnthropicModels2(baseURL, apiKey2) {
251
- try {
252
- const response = await fetch(`${baseURL}/v1/models`, {
253
- method: "GET",
254
- headers: {
255
- "x-api-key": apiKey2,
256
- "anthropic-version": "2023-06-01",
257
- "Content-Type": "application/json",
258
- Authorization: `Bearer ${apiKey2}`
259
- },
260
- signal: AbortSignal.timeout(3e4)
261
- });
262
- if (!response.ok) {
263
- if (response.status === 401) {
264
- throw new Error(
265
- "Invalid API key. Please check your API key and try again."
266
- );
267
- } else if (response.status === 403) {
268
- throw new Error("API key does not have permission to access models.");
269
- } else if (response.status === 404) {
270
- throw new Error(
271
- "API endpoint not found. This provider may not support model listing."
272
- );
273
- } else if (response.status === 429) {
274
- throw new Error(
275
- "Too many requests. Please wait a moment and try again."
276
- );
277
- } else if (response.status >= 500) {
278
- throw new Error(
279
- "API service is temporarily unavailable. Please try again later."
280
- );
281
- } else {
282
- throw new Error(`Unable to connect to API (${response.status}).`);
283
- }
284
- }
285
- const data = await response.json();
286
- let models2 = [];
287
- if (data && data.data && Array.isArray(data.data)) {
288
- models2 = data.data;
289
- } else if (Array.isArray(data)) {
290
- models2 = data;
291
- } else if (data && data.models && Array.isArray(data.models)) {
292
- models2 = data.models;
293
- } else {
294
- throw new Error("API returned unexpected response format.");
295
- }
296
- return models2;
297
- } catch (error) {
298
- if (error instanceof Error && (error.message.includes("API key") || error.message.includes("API endpoint") || error.message.includes("API service") || error.message.includes("response format"))) {
299
- throw error;
300
- }
301
- if (error instanceof Error && error.message.includes("fetch")) {
302
- throw new Error(
303
- "Unable to connect to the API. Please check the base URL and your internet connection."
304
- );
305
- }
306
- throw new Error(
307
- "Failed to fetch models from API. Please check your configuration and try again."
308
- );
309
- }
310
- }
311
- async function fetchAnthropicCompatibleModelsWithFallback(baseURL, provider, apiKeyUrl) {
312
- let lastError = null;
313
- try {
314
- const models2 = await fetchAnthropicModels2(baseURL, apiKey);
315
- return models2.map((model) => ({
316
- model: model.modelName || model.id || model.name || model.model || "unknown",
317
- provider,
318
- max_tokens: model.max_tokens || 8192,
319
- supports_vision: model.supports_vision || true,
320
- supports_function_calling: model.supports_function_calling || true,
321
- supports_reasoning_effort: false
322
- }));
323
- } catch (error) {
324
- lastError = error;
325
- }
326
- try {
327
- const models2 = await fetchCustomModels(baseURL, apiKey);
328
- return models2.map((model) => ({
329
- model: model.modelName || model.id || model.name || model.model || "unknown",
330
- provider,
331
- max_tokens: model.max_tokens || 8192,
332
- supports_vision: model.supports_vision || false,
333
- supports_function_calling: model.supports_function_calling || true,
334
- supports_reasoning_effort: false
335
- }));
336
- } catch (error) {
337
- lastError = error;
338
- }
339
- let errorMessage = `Failed to fetch ${provider} models using both Anthropic and OpenAI API formats`;
340
- if (lastError) {
341
- errorMessage = lastError.message;
342
- }
343
- if (errorMessage.includes("API key")) {
344
- errorMessage += `
345
-
346
- \u{1F4A1} Tip: Get your API key from ${apiKeyUrl}`;
347
- } else if (errorMessage.includes("permission")) {
348
- errorMessage += `
349
-
350
- \u{1F4A1} Tip: Make sure your API key has access to the ${provider} API`;
351
- } else if (errorMessage.includes("connection")) {
352
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
353
- }
354
- setModelLoadError(errorMessage);
355
- throw new Error(errorMessage);
356
- }
357
- async function fetchAnthropicCompatibleProviderModels() {
358
- let defaultBaseURL;
359
- let apiKeyUrl;
360
- let actualProvider;
361
- switch (anthropicProviderType) {
362
- case "official":
363
- defaultBaseURL = "https://api.anthropic.com";
364
- apiKeyUrl = "https://console.anthropic.com/settings/keys";
365
- actualProvider = "anthropic";
366
- break;
367
- case "bigdream":
368
- defaultBaseURL = "https://api-key.info";
369
- apiKeyUrl = "https://api-key.info/register?aff=MSl4";
370
- actualProvider = "bigdream";
371
- break;
372
- case "opendev":
373
- defaultBaseURL = "https://api.openai-next.com";
374
- apiKeyUrl = "https://api.openai-next.com/register/?aff_code=4xo7";
375
- actualProvider = "opendev";
376
- break;
377
- case "custom":
378
- defaultBaseURL = providerBaseUrl;
379
- apiKeyUrl = "your custom API provider";
380
- actualProvider = "anthropic";
381
- break;
382
- default:
383
- throw new Error(
384
- `Unsupported Anthropic provider type: ${anthropicProviderType}`
385
- );
386
- }
387
- const baseURL = anthropicProviderType === "custom" ? providerBaseUrl : providerBaseUrl || defaultBaseURL;
388
- return await fetchAnthropicCompatibleModelsWithFallback(
389
- baseURL,
390
- actualProvider,
391
- apiKeyUrl
392
- );
393
- }
394
- async function fetchKimiModels() {
395
- try {
396
- const baseURL = providerBaseUrl || "https://api.moonshot.cn/v1";
397
- const models2 = await fetchCustomModels(baseURL, apiKey);
398
- const kimiModels = models2.map((model) => ({
399
- model: model.modelName || model.id || model.name || model.model || "unknown",
400
- provider: "kimi",
401
- max_tokens: model.max_tokens || 8192,
402
- supports_vision: false,
403
- // Default to false, could be enhanced
404
- supports_function_calling: true,
405
- supports_reasoning_effort: false
406
- }));
407
- return kimiModels;
408
- } catch (error) {
409
- let errorMessage = "Failed to fetch Kimi models";
410
- if (error instanceof Error) {
411
- errorMessage = error.message;
412
- }
413
- if (errorMessage.includes("API key")) {
414
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://platform.moonshot.cn/console/api-keys";
415
- } else if (errorMessage.includes("permission")) {
416
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the Kimi API";
417
- } else if (errorMessage.includes("connection")) {
418
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
419
- }
420
- setModelLoadError(errorMessage);
421
- throw error;
422
- }
423
- }
424
- async function fetchDeepSeekModels() {
425
- try {
426
- const baseURL = providerBaseUrl || "https://api.deepseek.com";
427
- const models2 = await fetchCustomModels(baseURL, apiKey);
428
- const deepseekModels = models2.map((model) => ({
429
- model: model.modelName || model.id || model.name || model.model || "unknown",
430
- provider: "deepseek",
431
- max_tokens: model.max_tokens || 8192,
432
- supports_vision: false,
433
- // Default to false, could be enhanced
434
- supports_function_calling: true,
435
- supports_reasoning_effort: false
436
- }));
437
- return deepseekModels;
438
- } catch (error) {
439
- let errorMessage = "Failed to fetch DeepSeek models";
440
- if (error instanceof Error) {
441
- errorMessage = error.message;
442
- }
443
- if (errorMessage.includes("API key")) {
444
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://platform.deepseek.com/api_keys";
445
- } else if (errorMessage.includes("permission")) {
446
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the DeepSeek API";
447
- } else if (errorMessage.includes("connection")) {
448
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
449
- }
450
- setModelLoadError(errorMessage);
451
- throw error;
452
- }
453
- }
454
- async function fetchSiliconFlowModels() {
455
- try {
456
- const baseURL = providerBaseUrl || "https://api.siliconflow.cn/v1";
457
- const models2 = await fetchCustomModels(baseURL, apiKey);
458
- const siliconflowModels = models2.map((model) => ({
459
- model: model.modelName || model.id || model.name || model.model || "unknown",
460
- provider: "siliconflow",
461
- max_tokens: model.max_tokens || 8192,
462
- supports_vision: false,
463
- // Default to false, could be enhanced
464
- supports_function_calling: true,
465
- supports_reasoning_effort: false
466
- }));
467
- return siliconflowModels;
468
- } catch (error) {
469
- let errorMessage = "Failed to fetch SiliconFlow models";
470
- if (error instanceof Error) {
471
- errorMessage = error.message;
472
- }
473
- if (errorMessage.includes("API key")) {
474
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://cloud.siliconflow.cn/i/oJWsm6io";
475
- } else if (errorMessage.includes("permission")) {
476
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the SiliconFlow API";
477
- } else if (errorMessage.includes("connection")) {
478
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
479
- }
480
- setModelLoadError(errorMessage);
481
- throw error;
482
- }
483
- }
484
- async function fetchQwenModels() {
485
- try {
486
- const baseURL = providerBaseUrl || "https://dashscope.aliyuncs.com/compatible-mode/v1";
487
- const models2 = await fetchCustomModels(baseURL, apiKey);
488
- const qwenModels = models2.map((model) => ({
489
- model: model.modelName || model.id || model.name || model.model || "unknown",
490
- provider: "qwen",
491
- max_tokens: model.max_tokens || 8192,
492
- supports_vision: false,
493
- supports_function_calling: true,
494
- supports_reasoning_effort: false
495
- }));
496
- return qwenModels;
497
- } catch (error) {
498
- let errorMessage = "Failed to fetch Qwen models";
499
- if (error instanceof Error) {
500
- errorMessage = error.message;
501
- }
502
- if (errorMessage.includes("API key")) {
503
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://bailian.console.aliyun.com/?tab=model#/api-key";
504
- } else if (errorMessage.includes("permission")) {
505
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the Qwen API";
506
- } else if (errorMessage.includes("connection")) {
507
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
508
- }
509
- setModelLoadError(errorMessage);
510
- throw error;
511
- }
512
- }
513
- async function fetchGLMModels() {
514
- try {
515
- const baseURL = providerBaseUrl || "https://open.bigmodel.cn/api/paas/v4";
516
- const models2 = await fetchCustomModels(baseURL, apiKey);
517
- const glmModels = models2.map((model) => ({
518
- model: model.modelName || model.id || model.name || model.model || "unknown",
519
- provider: "glm",
520
- max_tokens: model.max_tokens || 8192,
521
- supports_vision: false,
522
- supports_function_calling: true,
523
- supports_reasoning_effort: false
524
- }));
525
- return glmModels;
526
- } catch (error) {
527
- let errorMessage = "Failed to fetch GLM models";
528
- if (error instanceof Error) {
529
- errorMessage = error.message;
530
- }
531
- if (errorMessage.includes("API key")) {
532
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://open.bigmodel.cn (API Keys section)";
533
- } else if (errorMessage.includes("permission")) {
534
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the GLM API";
535
- } else if (errorMessage.includes("connection")) {
536
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
537
- }
538
- setModelLoadError(errorMessage);
539
- throw error;
540
- }
541
- }
542
- async function fetchMinimaxModels() {
543
- try {
544
- const baseURL = providerBaseUrl || "https://api.minimaxi.com/v1";
545
- const models2 = await fetchCustomModels(baseURL, apiKey);
546
- const minimaxModels = models2.map((model) => ({
547
- model: model.modelName || model.id || model.name || model.model || "unknown",
548
- provider: "minimax",
549
- max_tokens: model.max_tokens || 8192,
550
- supports_vision: false,
551
- supports_function_calling: true,
552
- supports_reasoning_effort: false
553
- }));
554
- return minimaxModels;
555
- } catch (error) {
556
- let errorMessage = "Failed to fetch MiniMax models";
557
- if (error instanceof Error) {
558
- errorMessage = error.message;
559
- }
560
- if (errorMessage.includes("API key")) {
561
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://www.minimax.io/platform/user-center/basic-information";
562
- } else if (errorMessage.includes("permission")) {
563
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the MiniMax API";
564
- } else if (errorMessage.includes("connection")) {
565
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
566
- }
567
- setModelLoadError(errorMessage);
568
- throw error;
569
- }
570
- }
571
- async function fetchBaiduQianfanModels() {
572
- try {
573
- const baseURL = providerBaseUrl || "https://qianfan.baidubce.com/v2";
574
- const models2 = await fetchCustomModels(baseURL, apiKey);
575
- const baiduModels = models2.map((model) => ({
576
- model: model.modelName || model.id || model.name || model.model || "unknown",
577
- provider: "baidu-qianfan",
578
- max_tokens: model.max_tokens || 8192,
579
- supports_vision: false,
580
- supports_function_calling: true,
581
- supports_reasoning_effort: false
582
- }));
583
- return baiduModels;
584
- } catch (error) {
585
- let errorMessage = "Failed to fetch Baidu Qianfan models";
586
- if (error instanceof Error) {
587
- errorMessage = error.message;
588
- }
589
- if (errorMessage.includes("API key")) {
590
- errorMessage += "\n\n\u{1F4A1} Tip: Get your API key from https://console.bce.baidu.com/iam/#/iam/accesslist";
591
- } else if (errorMessage.includes("permission")) {
592
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure your API key has access to the Baidu Qianfan API";
593
- } else if (errorMessage.includes("connection")) {
594
- errorMessage += "\n\n\u{1F4A1} Tip: Check your internet connection and try again";
595
- }
596
- setModelLoadError(errorMessage);
597
- throw error;
598
- }
599
- }
600
- async function fetchCustomOpenAIModels() {
601
- try {
602
- const models2 = await fetchCustomModels(customBaseUrl, apiKey);
603
- const customModels = models2.map((model) => ({
604
- model: model.modelName || model.id || model.name || model.model || "unknown",
605
- provider: "custom-openai",
606
- max_tokens: model.max_tokens || 4096,
607
- supports_vision: false,
608
- // Default to false, could be enhanced
609
- supports_function_calling: true,
610
- supports_reasoning_effort: false
611
- }));
612
- return customModels;
613
- } catch (error) {
614
- let errorMessage = "Failed to fetch custom API models";
615
- if (error instanceof Error) {
616
- errorMessage = error.message;
617
- }
618
- if (errorMessage.includes("API key")) {
619
- errorMessage += "\n\n\u{1F4A1} Tip: Check that your API key is valid for this endpoint";
620
- } else if (errorMessage.includes("endpoint not found")) {
621
- errorMessage += "\n\n\u{1F4A1} Tip: Make sure the base URL ends with /v1 and supports OpenAI-compatible API";
622
- } else if (errorMessage.includes("connect")) {
623
- errorMessage += "\n\n\u{1F4A1} Tip: Verify the base URL is correct and accessible";
624
- } else if (errorMessage.includes("response format")) {
625
- errorMessage += "\n\n\u{1F4A1} Tip: This API may not be fully OpenAI-compatible";
626
- }
627
- setModelLoadError(errorMessage);
628
- throw error;
629
- }
630
- }
631
- async function fetchGeminiModels() {
632
- try {
633
- const response = await fetch(
634
- `https://generativelanguage.googleapis.com/v1beta/models?key=${apiKey}`,
635
- { signal: AbortSignal.timeout(3e4) }
636
- );
637
- if (!response.ok) {
638
- const errorData = await response.json();
639
- throw new Error(
640
- errorData.error?.message || `API error: ${response.status}`
641
- );
642
- }
643
- const { models: models2 } = await response.json();
644
- const geminiModels = models2.filter(
645
- (model) => model.supportedGenerationMethods.includes("generateContent")
646
- ).map((model) => ({
647
- model: model.name.replace("models/", ""),
648
- provider: "gemini",
649
- max_tokens: model.outputTokenLimit,
650
- supports_vision: model.supportedGenerationMethods.includes("generateContent"),
651
- supports_function_calling: model.supportedGenerationMethods.includes("generateContent")
652
- }));
653
- return geminiModels;
654
- } catch (error) {
655
- setModelLoadError(
656
- error instanceof Error ? error.message : "Unknown error"
657
- );
658
- throw error;
659
- }
660
- }
661
- async function fetchOllamaModels() {
662
- try {
663
- const response = await fetch(`${ollamaBaseUrl}/models`, {
664
- signal: AbortSignal.timeout(3e4)
665
- });
666
- if (!response.ok) {
667
- throw new Error(`HTTP error ${response.status}: ${response.statusText}`);
668
- }
669
- const responseData = await response.json();
670
- let models2 = [];
671
- if (responseData.data && Array.isArray(responseData.data)) {
672
- models2 = responseData.data;
673
- } else if (Array.isArray(responseData.models)) {
674
- models2 = responseData.models;
675
- } else if (Array.isArray(responseData)) {
676
- models2 = responseData;
677
- } else {
678
- throw new Error(
679
- "Invalid response from Ollama API: missing models array"
680
- );
681
- }
682
- const ollamaModels = models2.map((model) => ({
683
- model: model.id ?? model.name ?? model.modelName ?? (typeof model === "string" ? model : ""),
684
- provider: "ollama",
685
- max_tokens: DEFAULT_MAX_TOKENS,
686
- // Default output tokens (8K is reasonable)
687
- supports_vision: false,
688
- supports_function_calling: true,
689
- supports_reasoning_effort: false
690
- }));
691
- const validModels = ollamaModels.filter((model) => model.model);
692
- const normalizeOllamaRoot = (url) => {
693
- try {
694
- const u = new URL(url);
695
- let pathname = u.pathname.replace(/\/+$|^$/, "");
696
- if (pathname.endsWith("/v1")) {
697
- pathname = pathname.slice(0, -3);
698
- }
699
- u.pathname = pathname;
700
- return u.toString().replace(/\/+$/, "");
701
- } catch {
702
- return url.replace(/\/v1\/?$/, "");
703
- }
704
- };
705
- const extractContextTokens = (data) => {
706
- if (!data || typeof data !== "object") return null;
707
- if (data.model_info && typeof data.model_info === "object") {
708
- const modelInfo = data.model_info;
709
- for (const key of Object.keys(modelInfo)) {
710
- if (key.endsWith(".context_length") || key.endsWith("_context_length")) {
711
- const val = modelInfo[key];
712
- if (typeof val === "number" && isFinite(val) && val > 0) {
713
- return val;
714
- }
715
- }
716
- }
717
- }
718
- const candidates = [
719
- data?.parameters?.num_ctx,
720
- data?.model_info?.num_ctx,
721
- data?.config?.num_ctx,
722
- data?.details?.context_length,
723
- data?.context_length,
724
- data?.num_ctx,
725
- data?.max_tokens,
726
- data?.max_new_tokens
727
- ].filter((v) => typeof v === "number" && isFinite(v) && v > 0);
728
- if (candidates.length > 0) {
729
- return Math.max(...candidates);
730
- }
731
- if (typeof data?.parameters === "string") {
732
- const m = data.parameters.match(/num_ctx\s*[:=]\s*(\d+)/i);
733
- if (m) {
734
- const n = parseInt(m[1], 10);
735
- if (Number.isFinite(n) && n > 0) return n;
736
- }
737
- }
738
- return null;
739
- };
740
- const ollamaRoot = normalizeOllamaRoot(ollamaBaseUrl);
741
- const enrichedModels = await Promise.all(
742
- validModels.map(async (m) => {
743
- try {
744
- const showResp = await fetch(`${ollamaRoot}/api/show`, {
745
- method: "POST",
746
- headers: { "Content-Type": "application/json" },
747
- body: JSON.stringify({ name: m.model }),
748
- signal: AbortSignal.timeout(3e4)
749
- });
750
- if (showResp.ok) {
751
- const showData = await showResp.json();
752
- const ctx = extractContextTokens(showData);
753
- if (typeof ctx === "number" && isFinite(ctx) && ctx > 0) {
754
- return { ...m, context_length: ctx };
755
- }
756
- }
757
- return m;
758
- } catch {
759
- return m;
760
- }
761
- })
762
- );
763
- setAvailableModels(enrichedModels);
764
- if (enrichedModels.length > 0) {
765
- navigateToIfStillOn("baseUrl", "model");
766
- } else {
767
- setModelLoadError("No models found in your Ollama installation");
768
- }
769
- return enrichedModels;
770
- } catch (error) {
771
- const errorMessage = error instanceof Error ? error.message : String(error);
772
- if (errorMessage.includes("fetch")) {
773
- setModelLoadError(
774
- `Could not connect to Ollama server at ${ollamaBaseUrl}. Make sure Ollama is running and the URL is correct.`
775
- );
776
- } else {
777
- setModelLoadError(`Error loading Ollama models: ${errorMessage}`);
778
- }
779
- return [];
780
- }
781
- }
782
- async function fetchModelsWithRetry() {
783
- const MAX_RETRIES = 2;
784
- let lastError = null;
785
- for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
786
- setFetchRetryCount(attempt);
787
- setIsRetrying(attempt > 1);
788
- if (attempt > 1) {
789
- setModelLoadError(
790
- `Attempt ${attempt}/${MAX_RETRIES}: Retrying model discovery...`
791
- );
792
- await new Promise((resolve) => setTimeout(resolve, 1e3));
793
- }
794
- try {
795
- const models2 = await fetchModels();
796
- setFetchRetryCount(0);
797
- setIsRetrying(false);
798
- setModelLoadError(null);
799
- return models2;
800
- } catch (error) {
801
- lastError = error instanceof Error ? error : new Error(String(error));
802
- if (attempt === MAX_RETRIES) {
803
- break;
804
- }
805
- }
806
- }
807
- setIsRetrying(false);
808
- const errorMessage = lastError?.message || "Unknown error";
809
- const supportsManualInput = [
810
- "anthropic",
811
- "kimi",
812
- "deepseek",
813
- "siliconflow",
814
- "qwen",
815
- "glm",
816
- "minimax",
817
- "baidu-qianfan",
818
- "custom-openai"
819
- ].includes(selectedProvider);
820
- if (supportsManualInput) {
821
- setModelLoadError(
822
- `Failed to auto-discover models after ${MAX_RETRIES} attempts: ${errorMessage}
823
-
824
- \u26A1 Automatically switching to manual model configuration...`
825
- );
826
- pendingTimerRef.current = setTimeout(() => {
827
- pendingTimerRef.current = null;
828
- setModelLoadError(null);
829
- navigateToIfStillOn("apiKey", "modelInput");
830
- }, 2e3);
831
- } else {
832
- setModelLoadError(
833
- `Failed to load models after ${MAX_RETRIES} attempts: ${errorMessage}`
834
- );
835
- }
836
- return [];
837
- }
838
- async function fetchModels() {
839
- const originScreen = currentScreenRef.current;
840
- setIsLoadingModels(true);
841
- setModelLoadError(null);
842
- try {
843
- if (selectedProvider === "anthropic") {
844
- const anthropicModels = await fetchAnthropicCompatibleProviderModels();
845
- setAvailableModels(anthropicModels);
846
- navigateToIfStillOn(originScreen, "model");
847
- return anthropicModels;
848
- }
849
- if (selectedProvider === "custom-openai") {
850
- const customModels = await fetchCustomOpenAIModels();
851
- setAvailableModels(customModels);
852
- navigateToIfStillOn(originScreen, "model");
853
- return customModels;
854
- }
855
- if (selectedProvider === "gemini") {
856
- const geminiModels = await fetchGeminiModels();
857
- setAvailableModels(geminiModels);
858
- navigateToIfStillOn(originScreen, "model");
859
- return geminiModels;
860
- }
861
- if (selectedProvider === "kimi") {
862
- const kimiModels = await fetchKimiModels();
863
- setAvailableModels(kimiModels);
864
- navigateToIfStillOn(originScreen, "model");
865
- return kimiModels;
866
- }
867
- if (selectedProvider === "deepseek") {
868
- const deepseekModels = await fetchDeepSeekModels();
869
- setAvailableModels(deepseekModels);
870
- navigateToIfStillOn(originScreen, "model");
871
- return deepseekModels;
872
- }
873
- if (selectedProvider === "siliconflow") {
874
- const siliconflowModels = await fetchSiliconFlowModels();
875
- setAvailableModels(siliconflowModels);
876
- navigateToIfStillOn(originScreen, "model");
877
- return siliconflowModels;
878
- }
879
- if (selectedProvider === "qwen") {
880
- const qwenModels = await fetchQwenModels();
881
- setAvailableModels(qwenModels);
882
- navigateToIfStillOn(originScreen, "model");
883
- return qwenModels;
884
- }
885
- if (selectedProvider === "glm") {
886
- const glmModels = await fetchGLMModels();
887
- setAvailableModels(glmModels);
888
- navigateToIfStillOn(originScreen, "model");
889
- return glmModels;
890
- }
891
- if (selectedProvider === "baidu-qianfan") {
892
- const baiduModels = await fetchBaiduQianfanModels();
893
- setAvailableModels(baiduModels);
894
- navigateToIfStillOn(originScreen, "model");
895
- return baiduModels;
896
- }
897
- if (selectedProvider === "azure") {
898
- navigateToIfStillOn(originScreen, "modelInput");
899
- return [];
900
- }
901
- let baseURL = providerBaseUrl || providers[selectedProvider]?.baseURL;
902
- if (selectedProvider === "custom-openai") {
903
- baseURL = customBaseUrl;
904
- }
905
- const openai = new OpenAI({
906
- apiKey: apiKey || "dummy-key-for-ollama",
907
- // Ollama doesn't need a real key
908
- baseURL,
909
- dangerouslyAllowBrowser: true
910
- });
911
- const response = await openai.models.list();
912
- const fetchedModels = [];
913
- for (const model of response.data) {
914
- const modelName = model.modelName || model.id || model.name || model.model || "unknown";
915
- const modelInfo = models[selectedProvider]?.find(
916
- (m) => m.model === modelName
917
- );
918
- fetchedModels.push({
919
- model: modelName,
920
- provider: selectedProvider,
921
- max_tokens: modelInfo?.max_output_tokens,
922
- supports_vision: modelInfo?.supports_vision || false,
923
- supports_function_calling: modelInfo?.supports_function_calling || false,
924
- supports_reasoning_effort: modelInfo?.supports_reasoning_effort || false
925
- });
926
- }
927
- setAvailableModels(fetchedModels);
928
- navigateToIfStillOn(originScreen, "model");
929
- return fetchedModels;
930
- } catch (error) {
931
- throw error;
932
- } finally {
933
- setIsLoadingModels(false);
934
- }
935
- }
936
- function handleApiKeySubmit(key) {
937
- setApiKey(key);
938
- if (isEditMode) {
939
- goBack();
940
- return;
941
- }
942
- if (selectedProvider === "azure") {
943
- navigateTo("resourceName");
944
- return;
945
- }
946
- fetchModelsWithRetry().catch(() => {
947
- });
948
- }
949
- function handleResourceNameSubmit(name) {
950
- setResourceName(name);
951
- navigateTo("modelInput");
952
- }
953
- function handleOllamaBaseUrlSubmit(url) {
954
- setOllamaBaseUrl(url);
955
- setIsLoadingModels(true);
956
- setModelLoadError(null);
957
- fetchOllamaModels().finally(() => {
958
- setIsLoadingModels(false);
959
- });
960
- }
961
- function handleCustomBaseUrlSubmit(url) {
962
- const cleanUrl = url.replace(/\/+$/, "");
963
- setCustomBaseUrl(cleanUrl);
964
- setProviderBaseUrl(cleanUrl);
965
- if (isEditMode) {
966
- goBack();
967
- return;
968
- }
969
- navigateTo("apiKey");
970
- }
971
- function handleProviderBaseUrlSubmit(url) {
972
- const cleanUrl = url.replace(/\/+$/, "");
973
- setProviderBaseUrl(cleanUrl);
974
- if (isEditMode) {
975
- goBack();
976
- return;
977
- }
978
- if (selectedProvider === "ollama") {
979
- setOllamaBaseUrl(cleanUrl);
980
- setIsLoadingModels(true);
981
- setModelLoadError(null);
982
- fetchOllamaModels().finally(() => {
983
- setIsLoadingModels(false);
984
- });
985
- } else {
986
- navigateTo("apiKey");
987
- }
988
- }
989
- function handleAnthropicProviderSelection(providerType) {
990
- setAnthropicProviderType(providerType);
991
- if (providerType === "custom") {
992
- setProviderBaseUrl("");
993
- navigateTo("baseUrl");
994
- } else {
995
- const defaultUrls = {
996
- official: "https://api.anthropic.com",
997
- bigdream: "https://api-key.info",
998
- opendev: "https://api.openai-next.com"
999
- };
1000
- setProviderBaseUrl(defaultUrls[providerType]);
1001
- navigateTo("apiKey");
1002
- }
1003
- }
1004
- function handleCustomModelSubmit(model) {
1005
- setCustomModelName(model);
1006
- setSelectedModel(model);
1007
- setIsManualModelEntry(true);
1008
- setSupportsReasoningEffort(false);
1009
- setReasoningEffort(null);
1010
- setMaxTokensMode("preset");
1011
- setSelectedMaxTokensPreset(DEFAULT_MAX_TOKENS);
1012
- setMaxTokens(DEFAULT_MAX_TOKENS.toString());
1013
- setMaxTokensCursorOffset(DEFAULT_MAX_TOKENS.toString().length);
1014
- navigateTo("modelParams");
1015
- setActiveFieldIndex(0);
1016
- }
1017
- function handleModelSelection(model) {
1018
- setSelectedModel(model);
1019
- setIsManualModelEntry(false);
1020
- const modelInfo = availableModels.find((m) => m.model === model);
1021
- setSupportsReasoningEffort(modelInfo?.supports_reasoning_effort || false);
1022
- if (!modelInfo?.supports_reasoning_effort) {
1023
- setReasoningEffort(null);
1024
- }
1025
- if (modelInfo?.context_length) {
1026
- setContextLength(modelInfo.context_length);
1027
- } else {
1028
- setContextLength(DEFAULT_CONTEXT_LENGTH);
1029
- }
1030
- if (modelInfo?.max_tokens) {
1031
- const modelMaxTokens = modelInfo.max_tokens;
1032
- const matchingPreset = MAX_TOKENS_OPTIONS.find(
1033
- (option) => option.value === modelMaxTokens
1034
- );
1035
- if (matchingPreset) {
1036
- setMaxTokensMode("preset");
1037
- setSelectedMaxTokensPreset(modelMaxTokens);
1038
- setMaxTokens(modelMaxTokens.toString());
1039
- } else {
1040
- setMaxTokensMode("custom");
1041
- setMaxTokens(modelMaxTokens.toString());
1042
- }
1043
- setMaxTokensCursorOffset(modelMaxTokens.toString().length);
1044
- } else {
1045
- setMaxTokensMode("preset");
1046
- setSelectedMaxTokensPreset(DEFAULT_MAX_TOKENS);
1047
- setMaxTokens(DEFAULT_MAX_TOKENS.toString());
1048
- setMaxTokensCursorOffset(DEFAULT_MAX_TOKENS.toString().length);
1049
- }
1050
- navigateTo("modelParams");
1051
- setActiveFieldIndex(0);
1052
- }
1053
- const handleModelParamsSubmit = () => {
1054
- if (isEditMode) {
1055
- goBack();
1056
- return;
1057
- }
1058
- if (!isManualModelEntry) {
1059
- const modelInfo = availableModels.find((m) => m.model === selectedModel);
1060
- if (modelInfo?.context_length || modelInfo?.max_input_tokens) {
1061
- navigateTo("testAndSave");
1062
- return;
1063
- }
1064
- }
1065
- if (!CONTEXT_LENGTH_OPTIONS.find((opt) => opt.value === contextLength)) {
1066
- setContextLength(DEFAULT_CONTEXT_LENGTH);
1067
- }
1068
- navigateTo("contextLength");
1069
- };
1070
- async function testConnection() {
1071
- setIsTestingConnection(true);
1072
- setConnectionTestResult(null);
1073
- try {
1074
- let testBaseURL = providerBaseUrl || providers[selectedProvider]?.baseURL || "";
1075
- if (selectedProvider === "azure") {
1076
- testBaseURL = `https://${resourceName}.openai.azure.com/openai/deployments/${selectedModel}`;
1077
- } else if (selectedProvider === "custom-openai") {
1078
- testBaseURL = customBaseUrl;
1079
- }
1080
- if (isOpenAICompatibleProvider(selectedProvider)) {
1081
- const isGPT5 = selectedModel?.toLowerCase().includes("gpt-5");
1082
- if (isGPT5) {
1083
- const configValidation = validateGPT5Config({
1084
- model: selectedModel,
1085
- apiKey,
1086
- baseURL: testBaseURL,
1087
- maxTokens: parseInt(maxTokens) || 8192,
1088
- provider: selectedProvider
1089
- });
1090
- if (!configValidation.valid) {
1091
- return {
1092
- success: false,
1093
- message: "\u274C GPT-5 configuration validation failed",
1094
- details: configValidation.errors.join("\n")
1095
- };
1096
- }
1097
- const gpt5Result = await testGPT5Connection({
1098
- model: selectedModel,
1099
- apiKey,
1100
- baseURL: testBaseURL,
1101
- maxTokens: parseInt(maxTokens) || 8192,
1102
- provider: selectedProvider
1103
- });
1104
- return gpt5Result;
1105
- }
1106
- const endpointsToTry = [];
1107
- if (selectedProvider === "minimax") {
1108
- endpointsToTry.push(
1109
- {
1110
- path: "/text/chatcompletion_v2",
1111
- name: "MiniMax v2 (recommended)"
1112
- },
1113
- { path: "/chat/completions", name: "Standard OpenAI" }
1114
- );
1115
- } else {
1116
- endpointsToTry.push({
1117
- path: "/chat/completions",
1118
- name: "Standard OpenAI"
1119
- });
1120
- }
1121
- let lastError = null;
1122
- for (const endpoint of endpointsToTry) {
1123
- try {
1124
- const testResult = await testChatEndpoint(
1125
- testBaseURL,
1126
- endpoint.path,
1127
- endpoint.name
1128
- );
1129
- if (testResult.success) {
1130
- return testResult;
1131
- }
1132
- lastError = testResult;
1133
- } catch (error) {
1134
- lastError = {
1135
- success: false,
1136
- message: `Failed to test ${endpoint.name}`,
1137
- endpoint: endpoint.path,
1138
- details: error instanceof Error ? error.message : String(error)
1139
- };
1140
- }
1141
- }
1142
- return lastError || {
1143
- success: false,
1144
- message: "All endpoints failed",
1145
- details: "No endpoints could be reached"
1146
- };
1147
- } else {
1148
- return await testProviderSpecificEndpoint(testBaseURL);
1149
- }
1150
- } catch (error) {
1151
- return {
1152
- success: false,
1153
- message: "Connection test failed",
1154
- details: error instanceof Error ? error.message : String(error)
1155
- };
1156
- } finally {
1157
- setIsTestingConnection(false);
1158
- }
1159
- }
1160
- async function testChatEndpoint(baseURL, endpointPath, endpointName) {
1161
- const testURL = `${baseURL.replace(/\/+$/, "")}${endpointPath}`;
1162
- const testPayload = {
1163
- model: selectedModel,
1164
- messages: [
1165
- {
1166
- role: "user",
1167
- content: 'Please respond with exactly "YES" (in capital letters) to confirm this connection is working.'
1168
- }
1169
- ],
1170
- max_tokens: Math.max(parseInt(maxTokens) || 8192, 8192),
1171
- // Ensure minimum 8192 tokens for connection test
1172
- temperature: 0,
1173
- stream: false
1174
- };
1175
- if (selectedModel && selectedProvider) {
1176
- const caps = getEffectiveCapabilities(selectedProvider, selectedModel);
1177
- if (caps.maxTokensField !== "max_tokens" && testPayload.max_tokens) {
1178
- testPayload[caps.maxTokensField] = testPayload.max_tokens;
1179
- delete testPayload.max_tokens;
1180
- }
1181
- if (caps.temperatureRange === "omit") {
1182
- delete testPayload.temperature;
1183
- } else if (typeof caps.temperatureRange === "object") {
1184
- testPayload.temperature = Math.min(
1185
- testPayload.temperature,
1186
- caps.temperatureRange.max
1187
- );
1188
- }
1189
- }
1190
- const headers = {
1191
- "Content-Type": "application/json"
1192
- };
1193
- if (selectedProvider === "azure") {
1194
- headers["api-key"] = apiKey;
1195
- } else {
1196
- headers["Authorization"] = `Bearer ${apiKey}`;
1197
- }
1198
- try {
1199
- const response = await fetch(testURL, {
1200
- method: "POST",
1201
- headers,
1202
- body: JSON.stringify(testPayload),
1203
- signal: AbortSignal.timeout(3e4)
1204
- });
1205
- if (response.ok) {
1206
- const data = await response.json();
1207
- let responseContent = "";
1208
- if (data.choices && data.choices.length > 0) {
1209
- responseContent = data.choices[0]?.message?.content || "";
1210
- } else if (data.reply) {
1211
- responseContent = data.reply;
1212
- } else if (data.output) {
1213
- responseContent = data.output?.text || data.output || "";
1214
- }
1215
- const containsYes = responseContent.toLowerCase().includes("yes");
1216
- if (containsYes) {
1217
- return {
1218
- success: true,
1219
- message: `\u2705 Connection test passed with ${endpointName}`,
1220
- endpoint: endpointPath,
1221
- details: `Model responded correctly: "${responseContent.trim()}"`
1222
- };
1223
- } else {
1224
- return {
1225
- success: false,
1226
- message: `\u26A0\uFE0F ${endpointName} connected but model response unexpected`,
1227
- endpoint: endpointPath,
1228
- details: `Expected "YES" but got: "${responseContent.trim() || "(empty response)"}"`
1229
- };
1230
- }
1231
- } else {
1232
- const errorData = await response.json().catch(() => null);
1233
- const errorMessage = errorData?.error?.message || errorData?.message || response.statusText;
1234
- return {
1235
- success: false,
1236
- message: `\u274C ${endpointName} failed (${response.status})`,
1237
- endpoint: endpointPath,
1238
- details: `Error: ${errorMessage}`
1239
- };
1240
- }
1241
- } catch (error) {
1242
- return {
1243
- success: false,
1244
- message: `\u274C ${endpointName} connection failed`,
1245
- endpoint: endpointPath,
1246
- details: error instanceof Error ? error.message : String(error)
1247
- };
1248
- }
1249
- }
1250
- async function testResponsesEndpoint(baseURL, endpointPath, endpointName) {
1251
- const testURL = `${baseURL.replace(/\/+$/, "")}${endpointPath}`;
1252
- const testPayload = {
1253
- model: selectedModel,
1254
- input: [
1255
- {
1256
- role: "user",
1257
- content: 'Please respond with exactly "YES" (in capital letters) to confirm this connection is working.'
1258
- }
1259
- ],
1260
- max_completion_tokens: Math.max(parseInt(maxTokens) || 8192, 8192),
1261
- temperature: 1,
1262
- // GPT-5 only supports temperature=1
1263
- // 🚀 Add reasoning configuration for better GPT-5 performance
1264
- reasoning: {
1265
- effort: "low"
1266
- // Fast response for connection test
1267
- }
1268
- };
1269
- const headers = {
1270
- "Content-Type": "application/json",
1271
- Authorization: `Bearer ${apiKey}`
1272
- };
1273
- try {
1274
- const response = await fetch(testURL, {
1275
- method: "POST",
1276
- headers,
1277
- body: JSON.stringify(testPayload),
1278
- signal: AbortSignal.timeout(3e4)
1279
- });
1280
- if (response.ok) {
1281
- const data = await response.json();
1282
- let responseContent = "";
1283
- if (data.output_text) {
1284
- responseContent = data.output_text;
1285
- } else if (data.output) {
1286
- responseContent = typeof data.output === "string" ? data.output : data.output.text || "";
1287
- }
1288
- const containsYes = responseContent.toLowerCase().includes("yes");
1289
- if (containsYes) {
1290
- return {
1291
- success: true,
1292
- message: `\u2705 Connection test passed with ${endpointName}`,
1293
- endpoint: endpointPath,
1294
- details: `GPT-5 responded correctly via Responses API: "${responseContent.trim()}"`
1295
- };
1296
- } else {
1297
- return {
1298
- success: false,
1299
- message: `\u26A0\uFE0F ${endpointName} connected but model response unexpected`,
1300
- endpoint: endpointPath,
1301
- details: `Expected "YES" but got: "${responseContent.trim() || "(empty response)"}"`
1302
- };
1303
- }
1304
- } else {
1305
- const errorData = await response.json().catch(() => null);
1306
- const errorMessage = errorData?.error?.message || errorData?.message || response.statusText;
1307
- let details = `Responses API Error: ${errorMessage}`;
1308
- if (response.status === 400 && errorMessage.includes("max_tokens")) {
1309
- details += "\n\u{1F527} Note: This appears to be a parameter compatibility issue. The fallback to Chat Completions should handle this.";
1310
- } else if (response.status === 404) {
1311
- details += "\n\u{1F527} Note: Responses API endpoint may not be available for this model or provider.";
1312
- } else if (response.status === 401) {
1313
- details += "\n\u{1F527} Note: API key authentication failed.";
1314
- }
1315
- return {
1316
- success: false,
1317
- message: `\u274C ${endpointName} failed (${response.status})`,
1318
- endpoint: endpointPath,
1319
- details
1320
- };
1321
- }
1322
- } catch (error) {
1323
- return {
1324
- success: false,
1325
- message: `\u274C ${endpointName} connection failed`,
1326
- endpoint: endpointPath,
1327
- details: error instanceof Error ? error.message : String(error)
1328
- };
1329
- }
1330
- }
1331
- async function testProviderSpecificEndpoint(baseURL) {
1332
- if (selectedProvider === "anthropic" || selectedProvider === "bigdream") {
1333
- try {
1334
- let testBaseURL = void 0;
1335
- if (selectedProvider === "bigdream") {
1336
- testBaseURL = baseURL || "https://api-key.info";
1337
- } else if (selectedProvider === "anthropic") {
1338
- testBaseURL = baseURL && baseURL !== "https://api.anthropic.com" ? baseURL : void 0;
1339
- }
1340
- const isValid = await verifyApiKey(
1341
- apiKey,
1342
- testBaseURL,
1343
- selectedProvider
1344
- );
1345
- if (isValid) {
1346
- return {
1347
- success: true,
1348
- message: `\u2705 ${selectedProvider} connection test passed`,
1349
- endpoint: "/messages",
1350
- details: "API key verified using official Anthropic SDK"
1351
- };
1352
- } else {
1353
- return {
1354
- success: false,
1355
- message: `\u274C ${selectedProvider} API key verification failed`,
1356
- endpoint: "/messages",
1357
- details: "Invalid API key. Please check your API key and try again."
1358
- };
1359
- }
1360
- } catch (error) {
1361
- return {
1362
- success: false,
1363
- message: `\u274C ${selectedProvider} connection failed`,
1364
- endpoint: "/messages",
1365
- details: error instanceof Error ? error.message : String(error)
1366
- };
1367
- }
1368
- }
1369
- return {
1370
- success: true,
1371
- message: `\u2705 Configuration saved for ${selectedProvider}`,
1372
- details: "Provider-specific testing not implemented yet"
1373
- };
1374
- }
1375
- async function handleConnectionTest() {
1376
- const result = await testConnection();
1377
- setConnectionTestResult(result);
1378
- }
1379
- const handleContextLengthSubmit = () => {
1380
- if (isEditMode) {
1381
- goBack();
1382
- return;
1383
- }
1384
- navigateTo("testAndSave");
1385
- };
1386
- async function saveConfiguration(provider, model) {
1387
- let baseURL = providerBaseUrl || providers[provider]?.baseURL || "";
1388
- let actualProvider = provider;
1389
- if (provider === "anthropic") {
1390
- switch (anthropicProviderType) {
1391
- case "official":
1392
- actualProvider = "anthropic";
1393
- baseURL = baseURL || "https://api.anthropic.com";
1394
- break;
1395
- case "bigdream":
1396
- actualProvider = "bigdream";
1397
- baseURL = baseURL || "https://api-key.info";
1398
- break;
1399
- case "custom":
1400
- actualProvider = "anthropic";
1401
- break;
1402
- }
1403
- }
1404
- if (provider === "azure") {
1405
- baseURL = `https://${resourceName}.openai.azure.com/openai/deployments/${model}`;
1406
- } else if (provider === "custom-openai") {
1407
- baseURL = customBaseUrl;
1408
- }
1409
- try {
1410
- const modelManager = getModelManager();
1411
- const modelConfig = {
1412
- name: `${actualProvider} ${model}`,
1413
- provider: actualProvider,
1414
- modelName: model,
1415
- baseURL,
1416
- apiKey: apiKey || "",
1417
- maxTokens: parseInt(maxTokens) || DEFAULT_MAX_TOKENS,
1418
- contextLength: contextLength || DEFAULT_CONTEXT_LENGTH,
1419
- reasoningEffort
1420
- };
1421
- return await modelManager.addModel(modelConfig);
1422
- } catch (error) {
1423
- setValidationError(
1424
- error instanceof Error ? error.message : "Failed to add model"
1425
- );
1426
- return null;
1427
- }
1428
- }
1429
- async function handleConfirmation() {
1430
- setValidationError(null);
1431
- if (isEditMode && editingModel) {
1432
- try {
1433
- const modelManager = getModelManager();
1434
- const saveApiKey = !apiKeyUserModified && originalEncryptedRef ? originalEncryptedRef : apiKey || editingModel.apiKey;
1435
- modelManager.updateModel(editingModel.modelName, {
1436
- baseURL: providerBaseUrl || editingModel.baseURL,
1437
- apiKey: saveApiKey,
1438
- maxTokens: parseInt(maxTokens) || editingModel.maxTokens,
1439
- contextLength: contextLength || editingModel.contextLength,
1440
- reasoningEffort
1441
- });
1442
- onDone();
1443
- } catch (error) {
1444
- setValidationError(
1445
- error instanceof Error ? error.message : "Failed to update model"
1446
- );
1447
- }
1448
- return;
1449
- }
1450
- const modelId = await saveConfiguration(selectedProvider, selectedModel);
1451
- if (!modelId) {
1452
- return;
1453
- }
1454
- if (modelId && (isOnboarding || targetPointer)) {
1455
- if (isOnboarding) {
1456
- setAllPointersToModel(modelId);
1457
- } else if (targetPointer) {
1458
- setModelPointer(targetPointer, modelId);
1459
- }
1460
- }
1461
- onDone();
1462
- }
1463
- const handleBack = () => {
1464
- if (pendingTimerRef.current) {
1465
- clearTimeout(pendingTimerRef.current);
1466
- pendingTimerRef.current = null;
1467
- }
1468
- if (screenStack.length <= 1) {
1469
- if (onCancel) {
1470
- onCancel();
1471
- } else {
1472
- onDone();
1473
- }
1474
- } else {
1475
- if (currentScreen === "testAndSave") {
1476
- setConnectionTestResult(null);
1477
- setIsTestingConnection(false);
1478
- setValidationError(null);
1479
- }
1480
- const prevScreen = screenStack[screenStack.length - 2];
1481
- if (prevScreen === "modelParams") {
1482
- const formFields = getFormFieldsForModelParams();
1483
- const submitIndex = formFields.findIndex((f) => f.name === "submit");
1484
- setActiveFieldIndex(Math.max(0, submitIndex - 1));
1485
- }
1486
- setScreenStack((prev) => prev.slice(0, -1));
1487
- }
1488
- };
1489
- function handleCursorOffsetChange(offset) {
1490
- setCursorOffset(offset);
1491
- }
1492
- function handleApiKeyChange(value) {
1493
- setApiKeyEdited(true);
1494
- setApiKeyUserModified(true);
1495
- setApiKey(value);
1496
- }
1497
- function handleModelSearchChange(value) {
1498
- setModelSearchQuery(value);
1499
- setModelSearchCursorOffset(value.length);
1500
- }
1501
- function handleModelSearchCursorOffsetChange(offset) {
1502
- setModelSearchCursorOffset(offset);
1503
- }
1504
- const textScreens = ["apiKey", "baseUrl", "resourceName", "modelInput"];
1505
- useInput((input, key) => {
1506
- if (!textScreens.includes(currentScreen)) return;
1507
- if (key.escape) {
1508
- handleBack();
1509
- return;
1510
- }
1511
- if (currentScreen === "apiKey" && key.return) {
1512
- if (apiKey) {
1513
- handleApiKeySubmit(apiKey);
1514
- }
1515
- return;
1516
- }
1517
- if (currentScreen === "apiKey" && key.tab) {
1518
- if (selectedProvider === "anthropic" || selectedProvider === "kimi" || selectedProvider === "deepseek" || selectedProvider === "qwen" || selectedProvider === "glm" || selectedProvider === "minimax" || selectedProvider === "baidu-qianfan" || selectedProvider === "siliconflow" || selectedProvider === "custom-openai") {
1519
- navigateTo("modelInput");
1520
- return;
1521
- }
1522
- fetchModelsWithRetry().catch(() => {
1523
- });
1524
- return;
1525
- }
1526
- if (currentScreen === "resourceName" && key.return) {
1527
- if (resourceName) {
1528
- handleResourceNameSubmit(resourceName);
1529
- }
1530
- return;
1531
- }
1532
- if (currentScreen === "baseUrl" && key.return) {
1533
- if (selectedProvider === "custom-openai") {
1534
- handleCustomBaseUrlSubmit(customBaseUrl);
1535
- } else {
1536
- handleProviderBaseUrlSubmit(providerBaseUrl);
1537
- }
1538
- return;
1539
- }
1540
- if (currentScreen === "modelInput" && key.return) {
1541
- if (customModelName) {
1542
- handleCustomModelSubmit(customModelName);
1543
- }
1544
- return;
1545
- }
1546
- });
1547
- useEffect(() => {
1548
- if (currentScreen !== "modelParams") return;
1549
- const formFields = getFormFieldsForModelParams();
1550
- const currentField = formFields[activeFieldIndex];
1551
- if (!currentField || currentField.name === "submit") {
1552
- handleModelParamsSubmit();
1553
- }
1554
- }, [currentScreen, activeFieldIndex]);
1555
- function getFormFieldsForModelParams() {
1556
- return [
1557
- {
1558
- name: "maxTokens",
1559
- label: "Maximum Tokens",
1560
- description: "Select the maximum number of tokens to generate.",
1561
- value: parseInt(maxTokens),
1562
- component: "select",
1563
- options: MAX_TOKENS_OPTIONS.map((option) => ({
1564
- label: option.label,
1565
- value: option.value.toString()
1566
- })),
1567
- defaultValue: maxTokens
1568
- },
1569
- ...supportsReasoningEffort ? [
1570
- {
1571
- name: "reasoningEffort",
1572
- label: "Reasoning Effort",
1573
- description: "Controls reasoning depth for complex problems.",
1574
- value: reasoningEffort,
1575
- component: "select"
1576
- }
1577
- ] : [],
1578
- {
1579
- name: "submit",
1580
- label: "Continue \u2192",
1581
- component: "button"
1582
- }
1583
- ];
1584
- }
1585
- if (currentScreen === "apiKey") {
1586
- const providerLabel = getProviderLabel(selectedProvider, 0).split(" (")[0];
1587
- const apiKeyUrls = {
1588
- kimi: "https://platform.moonshot.cn/console/api-keys",
1589
- deepseek: "https://platform.deepseek.com/api_keys",
1590
- siliconflow: "https://cloud.siliconflow.cn/i/oJWsm6io",
1591
- qwen: "https://bailian.console.aliyun.com/?tab=model#/api-key",
1592
- glm: "https://open.bigmodel.cn (API Keys section)",
1593
- minimax: "https://www.minimax.io/platform/user-center/basic-information",
1594
- "baidu-qianfan": "https://console.bce.baidu.com/iam/#/iam/accesslist",
1595
- openai: "https://platform.openai.com/api-keys"
1596
- };
1597
- let apiKeyUrl = apiKeyUrls[selectedProvider] || "";
1598
- if (selectedProvider === "anthropic") {
1599
- apiKeyUrl = anthropicProviderType === "official" ? "https://console.anthropic.com/settings/keys" : anthropicProviderType === "bigdream" ? "https://api-key.info/register?aff=MSl4" : anthropicProviderType === "opendev" ? "https://api.openai-next.com/register/?aff_code=4xo7" : "your custom API provider";
1600
- }
1601
- const supportsManualInput = selectedProvider === "anthropic" || selectedProvider === "kimi" || selectedProvider === "deepseek" || selectedProvider === "qwen" || selectedProvider === "glm" || selectedProvider === "minimax" || selectedProvider === "baidu-qianfan" || selectedProvider === "siliconflow" || selectedProvider === "custom-openai";
1602
- const tabHintText = supportsManualInput ? t("modelSelector.apiKeyTabHintManual") : t("modelSelector.apiKeyTabHintSkip");
1603
- const apiKeyHint = apiKeyUrl ? /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "Get your API key from:", " ", /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.info }, apiKeyUrl)) : void 0;
1604
- return /* @__PURE__ */ React.createElement(
1605
- BrandTextInput,
1606
- {
1607
- title: `${t("modelSelector.apiKeyTitle")} \u2014 ${providerLabel}`,
1608
- description: t("modelSelector.apiKeyDesc"),
1609
- placeholder: "sk-...",
1610
- value: apiKey,
1611
- onChange: handleApiKeyChange,
1612
- onSubmit: handleApiKeySubmit,
1613
- mask: "*",
1614
- error: modelLoadError ? `Error: ${modelLoadError}` : null,
1615
- isLoading: isLoadingModels,
1616
- loadingText: "Loading available models...",
1617
- hint: apiKeyHint,
1618
- footerHint: `Enter continue \xB7 Tab ${tabHintText} \xB7 Esc back`,
1619
- cursorOffset,
1620
- onChangeCursorOffset: handleCursorOffsetChange
1621
- }
1622
- );
1623
- }
1624
- if (currentScreen === "model") {
1625
- const providerLabel = getProviderLabel(
1626
- selectedProvider,
1627
- availableModels.length
1628
- ).split(" (")[0];
1629
- const modelSelectorItems = modelOptions.map((opt) => ({
1630
- id: opt.value,
1631
- label: opt.label
1632
- }));
1633
- const subtitle = modelOptions.length > 0 ? `${modelOptions.length}/${availableModels.length} models` : availableModels.length > 0 ? t("modelSelector.noModelsMatch") : t("modelSelector.noModelsAvailable");
1634
- return /* @__PURE__ */ React.createElement(
1635
- SimpleSelector,
1636
- {
1637
- title: `${t("modelSelector.modelSelectionTitle")} \u2014 ${providerLabel}`,
1638
- subtitle,
1639
- items: modelSelectorItems,
1640
- onSelect: (item) => handleModelSelection(item.id),
1641
- onClose: handleBack
1642
- }
1643
- );
1644
- }
1645
- if (currentScreen === "modelParams") {
1646
- const formFields = getFormFieldsForModelParams();
1647
- const currentField = formFields[activeFieldIndex];
1648
- if (currentField?.name === "maxTokens") {
1649
- const maxTokensItems = MAX_TOKENS_OPTIONS.map((opt) => ({
1650
- id: opt.value.toString(),
1651
- label: opt.label,
1652
- isCurrent: opt.value === parseInt(maxTokens)
1653
- }));
1654
- return /* @__PURE__ */ React.createElement(
1655
- SimpleSelector,
1656
- {
1657
- title: `${t("modelSelector.modelParamsTitle")} \u2014 ${t("modelSelector.maxTokens")}`,
1658
- subtitle: selectedModel,
1659
- items: maxTokensItems,
1660
- onSelect: (item) => {
1661
- const numValue = parseInt(item.id);
1662
- setMaxTokens(numValue.toString());
1663
- setSelectedMaxTokensPreset(numValue);
1664
- setMaxTokensCursorOffset(numValue.toString().length);
1665
- setActiveFieldIndex(activeFieldIndex + 1);
1666
- },
1667
- onClose: handleBack
1668
- }
1669
- );
1670
- }
1671
- if (currentField?.name === "reasoningEffort") {
1672
- const effortItems = reasoningEffortOptions.map((opt) => ({
1673
- id: opt.value,
1674
- label: opt.label,
1675
- isCurrent: opt.value === reasoningEffort
1676
- }));
1677
- return /* @__PURE__ */ React.createElement(
1678
- SimpleSelector,
1679
- {
1680
- title: `${t("modelSelector.modelParamsTitle")} \u2014 ${t("modelSelector.reasoningEffort")}`,
1681
- subtitle: selectedModel,
1682
- items: effortItems,
1683
- onSelect: (item) => {
1684
- setReasoningEffort(item.id);
1685
- setActiveFieldIndex(activeFieldIndex + 1);
1686
- },
1687
- onClose: () => {
1688
- setActiveFieldIndex(0);
1689
- }
1690
- }
1691
- );
1692
- }
1693
- return null;
1694
- }
1695
- if (currentScreen === "resourceName") {
1696
- return /* @__PURE__ */ React.createElement(
1697
- BrandTextInput,
1698
- {
1699
- title: t("modelSelector.resourceNameTitle"),
1700
- description: t("modelSelector.resourceNameDesc"),
1701
- placeholder: "myazureresource",
1702
- value: resourceName,
1703
- onChange: setResourceName,
1704
- onSubmit: handleResourceNameSubmit,
1705
- footerHint: t("modelSelector.footerEnterContinue"),
1706
- cursorOffset: resourceNameCursorOffset,
1707
- onChangeCursorOffset: setResourceNameCursorOffset
1708
- }
1709
- );
1710
- }
1711
- if (currentScreen === "baseUrl") {
1712
- const isCustomOpenAI = selectedProvider === "custom-openai";
1713
- if (isCustomOpenAI) {
1714
- return /* @__PURE__ */ React.createElement(
1715
- BrandTextInput,
1716
- {
1717
- title: t("modelSelector.customApiTitle"),
1718
- description: t("modelSelector.customApiDesc"),
1719
- placeholder: "https://api.example.com/v1",
1720
- value: customBaseUrl,
1721
- onChange: setCustomBaseUrl,
1722
- onSubmit: handleCustomBaseUrlSubmit,
1723
- isLoading: isLoadingModels,
1724
- loadingText: "Connecting...",
1725
- error: modelLoadError ? `Error: ${modelLoadError}` : null,
1726
- footerHint: t("modelSelector.footerEnterContinue"),
1727
- cursorOffset: customBaseUrlCursorOffset,
1728
- onChangeCursorOffset: setCustomBaseUrlCursorOffset
1729
- }
1730
- );
1731
- }
1732
- const providerName = providers[selectedProvider]?.name || selectedProvider;
1733
- const defaultUrl = providers[selectedProvider]?.baseURL || "";
1734
- const desc = selectedProvider === "ollama" ? t("modelSelector.baseUrlOllamaDesc") : `${t("modelSelector.baseUrlDesc")} You can modify this URL or press Enter to use the default.`;
1735
- return /* @__PURE__ */ React.createElement(
1736
- BrandTextInput,
1737
- {
1738
- title: `${t("modelSelector.baseUrlTitle")} \u2014 ${providerName}`,
1739
- description: desc,
1740
- placeholder: defaultUrl,
1741
- value: providerBaseUrl,
1742
- onChange: setProviderBaseUrl,
1743
- onSubmit: handleProviderBaseUrlSubmit,
1744
- isLoading: isLoadingModels,
1745
- loadingText: selectedProvider === "ollama" ? "Connecting to Ollama server..." : `Connecting to ${providerName}...`,
1746
- error: modelLoadError ? `Error: ${modelLoadError}` : null,
1747
- footerHint: t("modelSelector.footerEnterContinue"),
1748
- cursorOffset: providerBaseUrlCursorOffset,
1749
- onChangeCursorOffset: setProviderBaseUrlCursorOffset
1750
- }
1751
- );
1752
- }
1753
- if (currentScreen === "modelInput") {
1754
- const modelInputConfig = {
1755
- azure: {
1756
- title: "Azure Model Setup",
1757
- placeholder: "gpt-4",
1758
- examples: 'e.g. "gpt-4", "gpt-35-turbo"'
1759
- },
1760
- anthropic: {
1761
- title: "Claude Model Setup",
1762
- placeholder: "claude-3-5-sonnet-latest",
1763
- examples: 'e.g. "claude-3-5-sonnet-latest", "claude-3-5-haiku-latest"'
1764
- },
1765
- bigdream: {
1766
- title: "BigDream Model Setup",
1767
- placeholder: "claude-3-5-sonnet-latest",
1768
- examples: 'e.g. "claude-3-5-sonnet-latest", "claude-3-5-haiku-latest"'
1769
- },
1770
- kimi: {
1771
- title: "Kimi Model Setup",
1772
- placeholder: "kimi-k2-0711-preview",
1773
- examples: 'e.g. "kimi-k2-0711-preview"'
1774
- },
1775
- deepseek: {
1776
- title: "DeepSeek Model Setup",
1777
- placeholder: "deepseek-chat",
1778
- examples: 'e.g. "deepseek-chat", "deepseek-coder", "deepseek-reasoner"'
1779
- },
1780
- siliconflow: {
1781
- title: "SiliconFlow Model Setup",
1782
- placeholder: "Qwen/Qwen2.5-72B-Instruct",
1783
- examples: 'e.g. "Qwen/Qwen2.5-72B-Instruct"'
1784
- },
1785
- qwen: {
1786
- title: "Qwen Model Setup",
1787
- placeholder: "qwen-plus",
1788
- examples: 'e.g. "qwen-plus", "qwen-turbo", "qwen-max"'
1789
- },
1790
- glm: {
1791
- title: "GLM Model Setup",
1792
- placeholder: "glm-4",
1793
- examples: 'e.g. "glm-4", "glm-4v", "glm-3-turbo"'
1794
- },
1795
- minimax: {
1796
- title: "MiniMax Model Setup",
1797
- placeholder: "abab6.5s-chat",
1798
- examples: 'e.g. "abab6.5s-chat", "abab6.5g-chat"'
1799
- },
1800
- "baidu-qianfan": {
1801
- title: "Baidu Qianfan Model Setup",
1802
- placeholder: "ERNIE-4.0-8K",
1803
- examples: 'e.g. "ERNIE-4.0-8K", "ERNIE-3.5-8K"'
1804
- },
1805
- "custom-openai": {
1806
- title: "Custom API Model Setup",
1807
- placeholder: "model-name",
1808
- examples: "Enter the exact model name supported by your API endpoint."
1809
- }
1810
- };
1811
- const cfg = modelInputConfig[selectedProvider] || {
1812
- title: t("modelSelector.modelInputTitle"),
1813
- placeholder: "gpt-4",
1814
- examples: 'e.g. "gpt-4", "gpt-3.5-turbo"'
1815
- };
1816
- return /* @__PURE__ */ React.createElement(
1817
- BrandTextInput,
1818
- {
1819
- title: cfg.title,
1820
- description: cfg.examples,
1821
- placeholder: cfg.placeholder,
1822
- value: customModelName,
1823
- onChange: setCustomModelName,
1824
- onSubmit: handleCustomModelSubmit,
1825
- footerHint: t("modelSelector.footerEnterContinue"),
1826
- cursorOffset: customModelNameCursorOffset,
1827
- onChangeCursorOffset: setCustomModelNameCursorOffset
1828
- }
1829
- );
1830
- }
1831
- if (currentScreen === "contextLength") {
1832
- const contextItems = CONTEXT_LENGTH_OPTIONS.map((opt) => ({
1833
- id: opt.value.toString(),
1834
- label: opt.value === DEFAULT_CONTEXT_LENGTH ? `${opt.label} (${t("modelSelector.recommended")})` : opt.label,
1835
- isCurrent: opt.value === contextLength
1836
- }));
1837
- return /* @__PURE__ */ React.createElement(
1838
- SimpleSelector,
1839
- {
1840
- title: t("modelSelector.contextLengthTitle"),
1841
- subtitle: t("modelSelector.contextLengthDesc"),
1842
- items: contextItems,
1843
- onSelect: (item) => {
1844
- setContextLength(parseInt(item.id));
1845
- handleContextLengthSubmit();
1846
- },
1847
- onClose: handleBack
1848
- }
1849
- );
1850
- }
1851
- if (currentScreen === "testAndSave") {
1852
- const providerDisplayName = getProviderLabel(selectedProvider, 0).split(
1853
- " ("
1854
- )[0];
1855
- const showsApiKey = selectedProvider !== "ollama";
1856
- const contextLengthLabel = CONTEXT_LENGTH_OPTIONS.find((opt) => opt.value === contextLength)?.label || `${contextLength.toLocaleString()} tokens`;
1857
- if (isEditMode) {
1858
- const editItems = [];
1859
- if (showsApiKey) {
1860
- editItems.push({
1861
- id: "__edit_apiKey__",
1862
- label: "API Key",
1863
- description: apiKey ? `****${apiKey.slice(-4)}` : "(not set)",
1864
- category: t("modelSelector.testAndSaveDesc")
1865
- });
1866
- }
1867
- if (selectedProvider === "custom-openai" || providerBaseUrl !== providers[selectedProvider]?.baseURL) {
1868
- editItems.push({
1869
- id: "__edit_baseUrl__",
1870
- label: "Base URL",
1871
- description: providerBaseUrl || customBaseUrl || "(not set)",
1872
- category: t("modelSelector.testAndSaveDesc")
1873
- });
1874
- }
1875
- editItems.push({
1876
- id: "__edit_modelParams__",
1877
- label: "Max Tokens",
1878
- description: maxTokens,
1879
- category: t("modelSelector.testAndSaveDesc")
1880
- });
1881
- editItems.push({
1882
- id: "__edit_contextLength__",
1883
- label: "Context Length",
1884
- description: contextLengthLabel,
1885
- category: t("modelSelector.testAndSaveDesc")
1886
- });
1887
- if (connectionTestResult) {
1888
- editItems.push({
1889
- id: "__test_status__",
1890
- label: "Connection",
1891
- description: connectionTestResult.message,
1892
- statusIcon: connectionTestResult.success ? "\u2713" : "\u2715",
1893
- statusColor: connectionTestResult.success ? SEMANTIC_COLORS.success : SEMANTIC_COLORS.error,
1894
- category: t("modelSelector.testAndSaveDesc")
1895
- });
1896
- }
1897
- editItems.push({
1898
- id: "__save__",
1899
- label: t("modelSelector.confirmationSave"),
1900
- category: t("commands.model.actionsCategory"),
1901
- statusIcon: "\u2713",
1902
- statusColor: SEMANTIC_COLORS.success
1903
- });
1904
- editItems.push({
1905
- id: "__test__",
1906
- label: t("modelSelector.connectionTestRetry"),
1907
- category: t("commands.model.actionsCategory")
1908
- });
1909
- const editTitle = t("commands.model.editTitle").replace(
1910
- "{model}",
1911
- editingModel?.name ?? selectedModel
1912
- );
1913
- const editOverlay = isTestingConnection ? {
1914
- type: "loading",
1915
- message: t("modelSelector.autoTesting")
1916
- } : validationError ? { type: "error", message: validationError } : null;
1917
- return /* @__PURE__ */ React.createElement(
1918
- SimpleSelector,
1919
- {
1920
- title: editTitle,
1921
- items: editItems,
1922
- groupByCategory: true,
1923
- onSelect: (item) => {
1924
- if (item.id === "__edit_apiKey__") {
1925
- navigateTo("apiKey");
1926
- } else if (item.id === "__edit_baseUrl__") {
1927
- navigateTo("baseUrl");
1928
- } else if (item.id === "__edit_modelParams__") {
1929
- setActiveFieldIndex(0);
1930
- navigateTo("modelParams");
1931
- } else if (item.id === "__edit_contextLength__") {
1932
- navigateTo("contextLength");
1933
- } else if (item.id === "__save__") {
1934
- handleConfirmation().catch((error) => {
1935
- setValidationError(
1936
- error instanceof Error ? error.message : "Unexpected error occurred"
1937
- );
1938
- });
1939
- } else if (item.id === "__test__") {
1940
- setConnectionTestResult(null);
1941
- handleConnectionTest();
1942
- }
1943
- },
1944
- onClose: handleBack,
1945
- statusOverlay: editOverlay
1946
- }
1947
- );
1948
- }
1949
- const configItems = [
1950
- { label: "Provider", value: providerDisplayName },
1951
- ...selectedProvider === "azure" ? [{ label: "Resource Name", value: resourceName }] : [],
1952
- ...selectedProvider === "ollama" ? [{ label: "Server URL", value: ollamaBaseUrl }] : [],
1953
- ...selectedProvider === "custom-openai" ? [{ label: "API Base URL", value: customBaseUrl }] : [],
1954
- { label: "Model", value: selectedModel },
1955
- ...apiKey && showsApiKey ? [{ label: "API Key", value: `****${apiKey.slice(-4)}` }] : [],
1956
- ...maxTokens ? [{ label: "Max Tokens", value: maxTokens }] : [],
1957
- { label: "Context Length", value: contextLengthLabel },
1958
- ...supportsReasoningEffort ? [{ label: "Reasoning Effort", value: reasoningEffort }] : []
1959
- ];
1960
- if (connectionTestResult) {
1961
- configItems.push({
1962
- label: "Connection",
1963
- value: connectionTestResult.message,
1964
- valueColor: connectionTestResult.success ? SEMANTIC_COLORS.success : SEMANTIC_COLORS.error
1965
- });
1966
- if (connectionTestResult.details && !connectionTestResult.success) {
1967
- configItems.push({
1968
- label: "Details",
1969
- value: connectionTestResult.details
1970
- });
1971
- }
1972
- }
1973
- const testAndSaveSections = [
1974
- {
1975
- title: t("modelSelector.testAndSaveDesc"),
1976
- items: configItems
1977
- }
1978
- ];
1979
- if (validationError) {
1980
- testAndSaveSections.unshift({
1981
- title: t("modelSelector.configError"),
1982
- items: [
1983
- {
1984
- label: "Error",
1985
- value: validationError,
1986
- valueColor: SEMANTIC_COLORS.error
1987
- }
1988
- ]
1989
- });
1990
- }
1991
- const testAndSaveActions = [];
1992
- if (connectionTestResult?.success) {
1993
- testAndSaveActions.push({
1994
- key: "return",
1995
- keyLabel: "Enter",
1996
- description: t("modelSelector.confirmationSave"),
1997
- onPress: () => {
1998
- handleConfirmation().catch((error) => {
1999
- setValidationError(
2000
- error instanceof Error ? error.message : "Unexpected error occurred"
2001
- );
2002
- });
2003
- }
2004
- });
2005
- } else if (connectionTestResult && !connectionTestResult.success) {
2006
- testAndSaveActions.push({
2007
- key: "return",
2008
- keyLabel: "Enter",
2009
- description: t("modelSelector.connectionTestRetry"),
2010
- onPress: () => {
2011
- setConnectionTestResult(null);
2012
- handleConnectionTest();
2013
- }
2014
- });
2015
- testAndSaveActions.push({
2016
- key: "s",
2017
- keyLabel: "s",
2018
- description: t("modelSelector.saveAnyway"),
2019
- onPress: () => {
2020
- handleConfirmation().catch((error) => {
2021
- setValidationError(
2022
- error instanceof Error ? error.message : "Unexpected error occurred"
2023
- );
2024
- });
2025
- }
2026
- });
2027
- }
2028
- const testAndSaveOverlay = isTestingConnection ? {
2029
- type: "loading",
2030
- message: t("modelSelector.autoTesting")
2031
- } : null;
2032
- return /* @__PURE__ */ React.createElement(
2033
- InfoPanel,
2034
- {
2035
- title: t("modelSelector.testAndSaveTitle"),
2036
- sections: testAndSaveSections,
2037
- actions: testAndSaveActions,
2038
- onClose: handleBack,
2039
- statusOverlay: testAndSaveOverlay
2040
- }
2041
- );
2042
- }
2043
- if (currentScreen === "anthropicSubMenu") {
2044
- const anthropicItems = [
2045
- {
2046
- id: "official",
2047
- label: t("modelSelector.anthropicOfficial"),
2048
- description: t("modelSelector.anthropicOfficialDesc")
2049
- },
2050
- {
2051
- id: "bigdream",
2052
- label: t("modelSelector.anthropicBigdream"),
2053
- description: t("modelSelector.anthropicBigdreamDesc")
2054
- },
2055
- {
2056
- id: "opendev",
2057
- label: t("modelSelector.anthropicOpendev"),
2058
- description: t("modelSelector.anthropicOpendevDesc")
2059
- },
2060
- {
2061
- id: "custom",
2062
- label: t("modelSelector.anthropicCustom"),
2063
- description: t("modelSelector.anthropicCustomDesc")
2064
- }
2065
- ];
2066
- return /* @__PURE__ */ React.createElement(
2067
- SimpleSelector,
2068
- {
2069
- title: t("modelSelector.anthropicSubMenu"),
2070
- subtitle: t("modelSelector.anthropicSubMenuDesc"),
2071
- items: anthropicItems,
2072
- onSelect: (item) => handleAnthropicProviderSelection(
2073
- item.id
2074
- ),
2075
- onClose: handleBack
2076
- }
2077
- );
2078
- }
2079
- const providerSelectorItems = providerOptions.map((opt) => ({
2080
- id: opt.value,
2081
- label: opt.label
2082
- }));
2083
- return /* @__PURE__ */ React.createElement(
2084
- SimpleSelector,
2085
- {
2086
- title: t("modelSelector.providerSelection"),
2087
- subtitle: t("modelSelector.providerSelectionDesc"),
2088
- items: providerSelectorItems,
2089
- onSelect: (item) => handleProviderSelection(item.id),
2090
- onClose: () => {
2091
- if (onCancel) {
2092
- onCancel();
2093
- } else {
2094
- onDone();
2095
- }
2096
- }
2097
- }
2098
- );
2099
- }
2100
- export {
2101
- ModelSelector
2102
- };
2103
- //# sourceMappingURL=ModelSelector.js.map