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