@within-7/minto 0.0.5-dev.1

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 (701) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1097 -0
  3. package/README.zh-CN.md +1097 -0
  4. package/cli.js +59 -0
  5. package/dist/Tool.js +1 -0
  6. package/dist/Tool.js.map +7 -0
  7. package/dist/commands/agents.js +2086 -0
  8. package/dist/commands/agents.js.map +7 -0
  9. package/dist/commands/approvedTools.js +36 -0
  10. package/dist/commands/approvedTools.js.map +7 -0
  11. package/dist/commands/bug.js +21 -0
  12. package/dist/commands/bug.js.map +7 -0
  13. package/dist/commands/build.js +74 -0
  14. package/dist/commands/build.js.map +7 -0
  15. package/dist/commands/clear.js +37 -0
  16. package/dist/commands/clear.js.map +7 -0
  17. package/dist/commands/compact.js +82 -0
  18. package/dist/commands/compact.js.map +7 -0
  19. package/dist/commands/compression.js +57 -0
  20. package/dist/commands/compression.js.map +7 -0
  21. package/dist/commands/config.js +20 -0
  22. package/dist/commands/config.js.map +7 -0
  23. package/dist/commands/cost.js +19 -0
  24. package/dist/commands/cost.js.map +7 -0
  25. package/dist/commands/ctx_viz.js +152 -0
  26. package/dist/commands/ctx_viz.js.map +7 -0
  27. package/dist/commands/doctor.js +25 -0
  28. package/dist/commands/doctor.js.map +7 -0
  29. package/dist/commands/help.js +20 -0
  30. package/dist/commands/help.js.map +7 -0
  31. package/dist/commands/init.js +38 -0
  32. package/dist/commands/init.js.map +7 -0
  33. package/dist/commands/listen.js +37 -0
  34. package/dist/commands/listen.js.map +7 -0
  35. package/dist/commands/login.js +37 -0
  36. package/dist/commands/login.js.map +7 -0
  37. package/dist/commands/logout.js +33 -0
  38. package/dist/commands/logout.js.map +7 -0
  39. package/dist/commands/mcp-interactive.js +267 -0
  40. package/dist/commands/mcp-interactive.js.map +7 -0
  41. package/dist/commands/mcp.js +40 -0
  42. package/dist/commands/mcp.js.map +7 -0
  43. package/dist/commands/mcp_refresh.js +40 -0
  44. package/dist/commands/mcp_refresh.js.map +7 -0
  45. package/dist/commands/model.js +41 -0
  46. package/dist/commands/model.js.map +7 -0
  47. package/dist/commands/modelstatus.js +21 -0
  48. package/dist/commands/modelstatus.js.map +7 -0
  49. package/dist/commands/onboarding.js +36 -0
  50. package/dist/commands/onboarding.js.map +7 -0
  51. package/dist/commands/plugin/AddMarketplaceForm.js +62 -0
  52. package/dist/commands/plugin/AddMarketplaceForm.js.map +7 -0
  53. package/dist/commands/plugin/ConfirmDialog.js +71 -0
  54. package/dist/commands/plugin/ConfirmDialog.js.map +7 -0
  55. package/dist/commands/plugin/ErrorView.js +33 -0
  56. package/dist/commands/plugin/ErrorView.js.map +7 -0
  57. package/dist/commands/plugin/InstalledPluginsByMarketplace.js +135 -0
  58. package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +7 -0
  59. package/dist/commands/plugin/InstalledPluginsManager.js +99 -0
  60. package/dist/commands/plugin/InstalledPluginsManager.js.map +7 -0
  61. package/dist/commands/plugin/LoadingView.js +14 -0
  62. package/dist/commands/plugin/LoadingView.js.map +7 -0
  63. package/dist/commands/plugin/MainMenu.js +57 -0
  64. package/dist/commands/plugin/MainMenu.js.map +7 -0
  65. package/dist/commands/plugin/MarketplaceManager.js +155 -0
  66. package/dist/commands/plugin/MarketplaceManager.js.map +7 -0
  67. package/dist/commands/plugin/MarketplaceSelector.js +119 -0
  68. package/dist/commands/plugin/MarketplaceSelector.js.map +7 -0
  69. package/dist/commands/plugin/PlaceholderScreen.js +16 -0
  70. package/dist/commands/plugin/PlaceholderScreen.js.map +7 -0
  71. package/dist/commands/plugin/PluginBrowser.js +180 -0
  72. package/dist/commands/plugin/PluginBrowser.js.map +7 -0
  73. package/dist/commands/plugin/PluginDetailsInstall.js +152 -0
  74. package/dist/commands/plugin/PluginDetailsInstall.js.map +7 -0
  75. package/dist/commands/plugin/PluginDetailsManage.js +200 -0
  76. package/dist/commands/plugin/PluginDetailsManage.js.map +7 -0
  77. package/dist/commands/plugin/components.js +16 -0
  78. package/dist/commands/plugin/components.js.map +7 -0
  79. package/dist/commands/plugin/example-usage.js +63 -0
  80. package/dist/commands/plugin/example-usage.js.map +7 -0
  81. package/dist/commands/plugin/types.js +1 -0
  82. package/dist/commands/plugin/types.js.map +7 -0
  83. package/dist/commands/plugin/utils.js +77 -0
  84. package/dist/commands/plugin/utils.js.map +7 -0
  85. package/dist/commands/plugin-interactive.js +446 -0
  86. package/dist/commands/plugin-interactive.js.map +7 -0
  87. package/dist/commands/plugin.js +523 -0
  88. package/dist/commands/plugin.js.map +7 -0
  89. package/dist/commands/pr_comments.js +61 -0
  90. package/dist/commands/pr_comments.js.map +7 -0
  91. package/dist/commands/quit.js +16 -0
  92. package/dist/commands/quit.js.map +7 -0
  93. package/dist/commands/refreshCommands.js +43 -0
  94. package/dist/commands/refreshCommands.js.map +7 -0
  95. package/dist/commands/release-notes.js +30 -0
  96. package/dist/commands/release-notes.js.map +7 -0
  97. package/dist/commands/resume.js +35 -0
  98. package/dist/commands/resume.js.map +7 -0
  99. package/dist/commands/review.js +51 -0
  100. package/dist/commands/review.js.map +7 -0
  101. package/dist/commands/terminalSetup.js +164 -0
  102. package/dist/commands/terminalSetup.js.map +7 -0
  103. package/dist/commands.js +104 -0
  104. package/dist/commands.js.map +7 -0
  105. package/dist/components/AgentResponseBlock.js +41 -0
  106. package/dist/components/AgentResponseBlock.js.map +7 -0
  107. package/dist/components/AgentThinkingBlock.js +40 -0
  108. package/dist/components/AgentThinkingBlock.js.map +7 -0
  109. package/dist/components/AsciiLogo.js +19 -0
  110. package/dist/components/AsciiLogo.js.map +7 -0
  111. package/dist/components/BackgroundTasksPanel.js +124 -0
  112. package/dist/components/BackgroundTasksPanel.js.map +7 -0
  113. package/dist/components/Bug.js +147 -0
  114. package/dist/components/Bug.js.map +7 -0
  115. package/dist/components/Config.js +166 -0
  116. package/dist/components/Config.js.map +7 -0
  117. package/dist/components/ConsoleOAuthFlow.js +178 -0
  118. package/dist/components/ConsoleOAuthFlow.js.map +7 -0
  119. package/dist/components/Cost.js +13 -0
  120. package/dist/components/Cost.js.map +7 -0
  121. package/dist/components/CostThresholdDialog.js +38 -0
  122. package/dist/components/CostThresholdDialog.js.map +7 -0
  123. package/dist/components/CustomSelect/option-map.js +32 -0
  124. package/dist/components/CustomSelect/option-map.js.map +7 -0
  125. package/dist/components/CustomSelect/select-option.js +34 -0
  126. package/dist/components/CustomSelect/select-option.js.map +7 -0
  127. package/dist/components/CustomSelect/select.js +64 -0
  128. package/dist/components/CustomSelect/select.js.map +7 -0
  129. package/dist/components/CustomSelect/theme.js +1 -0
  130. package/dist/components/CustomSelect/theme.js.map +7 -0
  131. package/dist/components/CustomSelect/use-select-state.js +220 -0
  132. package/dist/components/CustomSelect/use-select-state.js.map +7 -0
  133. package/dist/components/CustomSelect/use-select.js +21 -0
  134. package/dist/components/CustomSelect/use-select.js.map +7 -0
  135. package/dist/components/FallbackToolUseRejectedMessage.js +11 -0
  136. package/dist/components/FallbackToolUseRejectedMessage.js.map +7 -0
  137. package/dist/components/FileEditToolUpdatedMessage.js +32 -0
  138. package/dist/components/FileEditToolUpdatedMessage.js.map +7 -0
  139. package/dist/components/HeaderBar.js +57 -0
  140. package/dist/components/HeaderBar.js.map +7 -0
  141. package/dist/components/Help.js +46 -0
  142. package/dist/components/Help.js.map +7 -0
  143. package/dist/components/HighlightedCode.js +30 -0
  144. package/dist/components/HighlightedCode.js.map +7 -0
  145. package/dist/components/HistorySearchOverlay.js +48 -0
  146. package/dist/components/HistorySearchOverlay.js.map +7 -0
  147. package/dist/components/InteractionRoundBlock.js +56 -0
  148. package/dist/components/InteractionRoundBlock.js.map +7 -0
  149. package/dist/components/InvalidConfigDialog.js +83 -0
  150. package/dist/components/InvalidConfigDialog.js.map +7 -0
  151. package/dist/components/Link.js +18 -0
  152. package/dist/components/Link.js.map +7 -0
  153. package/dist/components/LogSelector.js +50 -0
  154. package/dist/components/LogSelector.js.map +7 -0
  155. package/dist/components/Logo.js +96 -0
  156. package/dist/components/Logo.js.map +7 -0
  157. package/dist/components/MCPServerApprovalDialog.js +79 -0
  158. package/dist/components/MCPServerApprovalDialog.js.map +7 -0
  159. package/dist/components/MCPServerDialogCopy.js +11 -0
  160. package/dist/components/MCPServerDialogCopy.js.map +7 -0
  161. package/dist/components/MCPServerMultiselectDialog.js +80 -0
  162. package/dist/components/MCPServerMultiselectDialog.js.map +7 -0
  163. package/dist/components/Message.js +146 -0
  164. package/dist/components/Message.js.map +7 -0
  165. package/dist/components/MessageResponse.js +9 -0
  166. package/dist/components/MessageResponse.js.map +7 -0
  167. package/dist/components/MessageSelector.js +125 -0
  168. package/dist/components/MessageSelector.js.map +7 -0
  169. package/dist/components/ModeIndicator.js +38 -0
  170. package/dist/components/ModeIndicator.js.map +7 -0
  171. package/dist/components/ModelConfig.js +208 -0
  172. package/dist/components/ModelConfig.js.map +7 -0
  173. package/dist/components/ModelListManager.js +140 -0
  174. package/dist/components/ModelListManager.js.map +7 -0
  175. package/dist/components/ModelSelector.js +2062 -0
  176. package/dist/components/ModelSelector.js.map +7 -0
  177. package/dist/components/ModelStatusDisplay.js +87 -0
  178. package/dist/components/ModelStatusDisplay.js.map +7 -0
  179. package/dist/components/Onboarding.js +153 -0
  180. package/dist/components/Onboarding.js.map +7 -0
  181. package/dist/components/PressEnterToContinue.js +10 -0
  182. package/dist/components/PressEnterToContinue.js.map +7 -0
  183. package/dist/components/ProjectOnboarding.js +99 -0
  184. package/dist/components/ProjectOnboarding.js.map +7 -0
  185. package/dist/components/PromptInput.js +755 -0
  186. package/dist/components/PromptInput.js.map +7 -0
  187. package/dist/components/QuitSummary.js +81 -0
  188. package/dist/components/QuitSummary.js.map +7 -0
  189. package/dist/components/SentryErrorBoundary.js +27 -0
  190. package/dist/components/SentryErrorBoundary.js.map +7 -0
  191. package/dist/components/Spinner.js +101 -0
  192. package/dist/components/Spinner.js.map +7 -0
  193. package/dist/components/SpinnerSymbol.js +78 -0
  194. package/dist/components/SpinnerSymbol.js.map +7 -0
  195. package/dist/components/StreamingBashOutput.js +70 -0
  196. package/dist/components/StreamingBashOutput.js.map +7 -0
  197. package/dist/components/StructuredDiff.js +148 -0
  198. package/dist/components/StructuredDiff.js.map +7 -0
  199. package/dist/components/SubagentBlock.js +157 -0
  200. package/dist/components/SubagentBlock.js.map +7 -0
  201. package/dist/components/SubagentManager.js +65 -0
  202. package/dist/components/SubagentManager.js.map +7 -0
  203. package/dist/components/SubagentProgress.js +109 -0
  204. package/dist/components/SubagentProgress.js.map +7 -0
  205. package/dist/components/SubagentStatusMarker.js +37 -0
  206. package/dist/components/SubagentStatusMarker.js.map +7 -0
  207. package/dist/components/TaskCard.js +170 -0
  208. package/dist/components/TaskCard.js.map +7 -0
  209. package/dist/components/TextInput.js +100 -0
  210. package/dist/components/TextInput.js.map +7 -0
  211. package/dist/components/TimelineRenderer.js +31 -0
  212. package/dist/components/TimelineRenderer.js.map +7 -0
  213. package/dist/components/TodoChangeBlock.js +29 -0
  214. package/dist/components/TodoChangeBlock.js.map +7 -0
  215. package/dist/components/TodoChangeLine.js +22 -0
  216. package/dist/components/TodoChangeLine.js.map +7 -0
  217. package/dist/components/TodoItem.js +35 -0
  218. package/dist/components/TodoItem.js.map +7 -0
  219. package/dist/components/TodoPanel.js +55 -0
  220. package/dist/components/TodoPanel.js.map +7 -0
  221. package/dist/components/TokenWarning.js +19 -0
  222. package/dist/components/TokenWarning.js.map +7 -0
  223. package/dist/components/ToolExecutionBlock.js +18 -0
  224. package/dist/components/ToolExecutionBlock.js.map +7 -0
  225. package/dist/components/ToolUseLoader.js +24 -0
  226. package/dist/components/ToolUseLoader.js.map +7 -0
  227. package/dist/components/TrustDialog.js +71 -0
  228. package/dist/components/TrustDialog.js.map +7 -0
  229. package/dist/components/UserQueryBlock.js +12 -0
  230. package/dist/components/UserQueryBlock.js.map +7 -0
  231. package/dist/components/binary-feedback/BinaryFeedback.js +50 -0
  232. package/dist/components/binary-feedback/BinaryFeedback.js.map +7 -0
  233. package/dist/components/binary-feedback/BinaryFeedbackOption.js +94 -0
  234. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +7 -0
  235. package/dist/components/binary-feedback/BinaryFeedbackView.js +139 -0
  236. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +7 -0
  237. package/dist/components/binary-feedback/utils.js +108 -0
  238. package/dist/components/binary-feedback/utils.js.map +7 -0
  239. package/dist/components/messages/AssistantBashOutputMessage.js +23 -0
  240. package/dist/components/messages/AssistantBashOutputMessage.js.map +7 -0
  241. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +36 -0
  242. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +7 -0
  243. package/dist/components/messages/AssistantRedactedThinkingMessage.js +12 -0
  244. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +7 -0
  245. package/dist/components/messages/AssistantTextMessage.js +78 -0
  246. package/dist/components/messages/AssistantTextMessage.js.map +7 -0
  247. package/dist/components/messages/AssistantThinkingMessage.js +27 -0
  248. package/dist/components/messages/AssistantThinkingMessage.js.map +7 -0
  249. package/dist/components/messages/AssistantToolUseMessage.js +91 -0
  250. package/dist/components/messages/AssistantToolUseMessage.js.map +7 -0
  251. package/dist/components/messages/TaskProgressMessage.js +11 -0
  252. package/dist/components/messages/TaskProgressMessage.js.map +7 -0
  253. package/dist/components/messages/TaskToolMessage.js +39 -0
  254. package/dist/components/messages/TaskToolMessage.js.map +7 -0
  255. package/dist/components/messages/UserBashInputMessage.js +18 -0
  256. package/dist/components/messages/UserBashInputMessage.js.map +7 -0
  257. package/dist/components/messages/UserCommandMessage.js +20 -0
  258. package/dist/components/messages/UserCommandMessage.js.map +7 -0
  259. package/dist/components/messages/UserKodingInputMessage.js +18 -0
  260. package/dist/components/messages/UserKodingInputMessage.js.map +7 -0
  261. package/dist/components/messages/UserPromptMessage.js +20 -0
  262. package/dist/components/messages/UserPromptMessage.js.map +7 -0
  263. package/dist/components/messages/UserTextMessage.js +25 -0
  264. package/dist/components/messages/UserTextMessage.js.map +7 -0
  265. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +10 -0
  266. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +7 -0
  267. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +15 -0
  268. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +7 -0
  269. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +25 -0
  270. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +7 -0
  271. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +47 -0
  272. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +7 -0
  273. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +23 -0
  274. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +7 -0
  275. package/dist/components/messages/UserToolResultMessage/utils.js +50 -0
  276. package/dist/components/messages/UserToolResultMessage/utils.js.map +7 -0
  277. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +112 -0
  278. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +7 -0
  279. package/dist/components/permissions/FallbackPermissionRequest.js +131 -0
  280. package/dist/components/permissions/FallbackPermissionRequest.js.map +7 -0
  281. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +159 -0
  282. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +7 -0
  283. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +58 -0
  284. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +7 -0
  285. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +153 -0
  286. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +7 -0
  287. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +70 -0
  288. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +7 -0
  289. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +212 -0
  290. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +7 -0
  291. package/dist/components/permissions/PermissionRequest.js +70 -0
  292. package/dist/components/permissions/PermissionRequest.js.map +7 -0
  293. package/dist/components/permissions/PermissionRequestTitle.js +52 -0
  294. package/dist/components/permissions/PermissionRequestTitle.js.map +7 -0
  295. package/dist/components/permissions/hooks.js +23 -0
  296. package/dist/components/permissions/hooks.js.map +7 -0
  297. package/dist/components/permissions/toolUseOptions.js +46 -0
  298. package/dist/components/permissions/toolUseOptions.js.map +7 -0
  299. package/dist/components/permissions/utils.js +21 -0
  300. package/dist/components/permissions/utils.js.map +7 -0
  301. package/dist/constants/claude-asterisk-ascii-art.js +242 -0
  302. package/dist/constants/claude-asterisk-ascii-art.js.map +7 -0
  303. package/dist/constants/colors.js +126 -0
  304. package/dist/constants/colors.js.map +7 -0
  305. package/dist/constants/compressionPrompts.js +73 -0
  306. package/dist/constants/compressionPrompts.js.map +7 -0
  307. package/dist/constants/figures.js +6 -0
  308. package/dist/constants/figures.js.map +7 -0
  309. package/dist/constants/macros.js +11 -0
  310. package/dist/constants/macros.js.map +7 -0
  311. package/dist/constants/modelCapabilities.js +154 -0
  312. package/dist/constants/modelCapabilities.js.map +7 -0
  313. package/dist/constants/models.js +1034 -0
  314. package/dist/constants/models.js.map +7 -0
  315. package/dist/constants/oauth.js +18 -0
  316. package/dist/constants/oauth.js.map +7 -0
  317. package/dist/constants/product.js +26 -0
  318. package/dist/constants/product.js.map +7 -0
  319. package/dist/constants/prompts.js +168 -0
  320. package/dist/constants/prompts.js.map +7 -0
  321. package/dist/constants/releaseNotes.js +9 -0
  322. package/dist/constants/releaseNotes.js.map +7 -0
  323. package/dist/constants/symbols.js +50 -0
  324. package/dist/constants/symbols.js.map +7 -0
  325. package/dist/context/PermissionContext.js +111 -0
  326. package/dist/context/PermissionContext.js.map +7 -0
  327. package/dist/context.js +278 -0
  328. package/dist/context.js.map +7 -0
  329. package/dist/cost-tracker.js +76 -0
  330. package/dist/cost-tracker.js.map +7 -0
  331. package/dist/entrypoints/cli-wrapper.js +61 -0
  332. package/dist/entrypoints/cli-wrapper.js.map +7 -0
  333. package/dist/entrypoints/cli.js +1115 -0
  334. package/dist/entrypoints/cli.js.map +7 -0
  335. package/dist/entrypoints/mcp.js +150 -0
  336. package/dist/entrypoints/mcp.js.map +7 -0
  337. package/dist/history.js +25 -0
  338. package/dist/history.js.map +7 -0
  339. package/dist/hooks/useApiKeyVerification.js +12 -0
  340. package/dist/hooks/useApiKeyVerification.js.map +7 -0
  341. package/dist/hooks/useArrowKeyHistory.js +50 -0
  342. package/dist/hooks/useArrowKeyHistory.js.map +7 -0
  343. package/dist/hooks/useCanUseTool.js +87 -0
  344. package/dist/hooks/useCanUseTool.js.map +7 -0
  345. package/dist/hooks/useCancelRequest.js +28 -0
  346. package/dist/hooks/useCancelRequest.js.map +7 -0
  347. package/dist/hooks/useDoublePress.js +31 -0
  348. package/dist/hooks/useDoublePress.js.map +7 -0
  349. package/dist/hooks/useExitOnCtrlCD.js +26 -0
  350. package/dist/hooks/useExitOnCtrlCD.js.map +7 -0
  351. package/dist/hooks/useHistorySearch.js +62 -0
  352. package/dist/hooks/useHistorySearch.js.map +7 -0
  353. package/dist/hooks/useInterval.js +18 -0
  354. package/dist/hooks/useInterval.js.map +7 -0
  355. package/dist/hooks/useLogMessages.js +14 -0
  356. package/dist/hooks/useLogMessages.js.map +7 -0
  357. package/dist/hooks/useLogStartupTime.js +10 -0
  358. package/dist/hooks/useLogStartupTime.js.map +7 -0
  359. package/dist/hooks/useNotifyAfterTimeout.js +42 -0
  360. package/dist/hooks/useNotifyAfterTimeout.js.map +7 -0
  361. package/dist/hooks/usePermissionRequestLogging.js +23 -0
  362. package/dist/hooks/usePermissionRequestLogging.js.map +7 -0
  363. package/dist/hooks/useTerminalSize.js +38 -0
  364. package/dist/hooks/useTerminalSize.js.map +7 -0
  365. package/dist/hooks/useTextInput.js +252 -0
  366. package/dist/hooks/useTextInput.js.map +7 -0
  367. package/dist/hooks/useUnifiedCompletion.js +929 -0
  368. package/dist/hooks/useUnifiedCompletion.js.map +7 -0
  369. package/dist/index.js +5 -0
  370. package/dist/index.js.map +7 -0
  371. package/dist/messages.js +33 -0
  372. package/dist/messages.js.map +7 -0
  373. package/dist/package.json +4 -0
  374. package/dist/permissions.js +194 -0
  375. package/dist/permissions.js.map +7 -0
  376. package/dist/query.js +499 -0
  377. package/dist/query.js.map +7 -0
  378. package/dist/screens/Doctor.js +22 -0
  379. package/dist/screens/Doctor.js.map +7 -0
  380. package/dist/screens/LogList.js +55 -0
  381. package/dist/screens/LogList.js.map +7 -0
  382. package/dist/screens/REPL.js +671 -0
  383. package/dist/screens/REPL.js.map +7 -0
  384. package/dist/screens/ResumeConversation.js +56 -0
  385. package/dist/screens/ResumeConversation.js.map +7 -0
  386. package/dist/services/adapters/base.js +29 -0
  387. package/dist/services/adapters/base.js.map +7 -0
  388. package/dist/services/adapters/chatCompletions.js +69 -0
  389. package/dist/services/adapters/chatCompletions.js.map +7 -0
  390. package/dist/services/adapters/responsesAPI.js +126 -0
  391. package/dist/services/adapters/responsesAPI.js.map +7 -0
  392. package/dist/services/claude.js +1573 -0
  393. package/dist/services/claude.js.map +7 -0
  394. package/dist/services/compressionService.js +210 -0
  395. package/dist/services/compressionService.js.map +7 -0
  396. package/dist/services/customCommands.js +437 -0
  397. package/dist/services/customCommands.js.map +7 -0
  398. package/dist/services/fileFreshness.js +275 -0
  399. package/dist/services/fileFreshness.js.map +7 -0
  400. package/dist/services/gpt5ConnectionTest.js +248 -0
  401. package/dist/services/gpt5ConnectionTest.js.map +7 -0
  402. package/dist/services/hookExecutor.js +276 -0
  403. package/dist/services/hookExecutor.js.map +7 -0
  404. package/dist/services/mainAgentCompressor.js +84 -0
  405. package/dist/services/mainAgentCompressor.js.map +7 -0
  406. package/dist/services/mcpClient.js +449 -0
  407. package/dist/services/mcpClient.js.map +7 -0
  408. package/dist/services/mcpServerApproval.js +55 -0
  409. package/dist/services/mcpServerApproval.js.map +7 -0
  410. package/dist/services/mentionProcessor.js +201 -0
  411. package/dist/services/mentionProcessor.js.map +7 -0
  412. package/dist/services/modelAdapterFactory.js +47 -0
  413. package/dist/services/modelAdapterFactory.js.map +7 -0
  414. package/dist/services/notifier.js +35 -0
  415. package/dist/services/notifier.js.map +7 -0
  416. package/dist/services/oauth.js +247 -0
  417. package/dist/services/oauth.js.map +7 -0
  418. package/dist/services/openai.js +995 -0
  419. package/dist/services/openai.js.map +7 -0
  420. package/dist/services/responseStateManager.js +68 -0
  421. package/dist/services/responseStateManager.js.map +7 -0
  422. package/dist/services/sentry.js +9 -0
  423. package/dist/services/sentry.js.map +7 -0
  424. package/dist/services/subagentAbortManager.js +95 -0
  425. package/dist/services/subagentAbortManager.js.map +7 -0
  426. package/dist/services/subagentCompressor.js +146 -0
  427. package/dist/services/subagentCompressor.js.map +7 -0
  428. package/dist/services/systemReminder.js +335 -0
  429. package/dist/services/systemReminder.js.map +7 -0
  430. package/dist/services/vcr.js +133 -0
  431. package/dist/services/vcr.js.map +7 -0
  432. package/dist/tools/ArchitectTool/ArchitectTool.js +119 -0
  433. package/dist/tools/ArchitectTool/ArchitectTool.js.map +7 -0
  434. package/dist/tools/ArchitectTool/prompt.js +18 -0
  435. package/dist/tools/ArchitectTool/prompt.js.map +7 -0
  436. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +423 -0
  437. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +7 -0
  438. package/dist/tools/BashOutputTool/BashOutputTool.js +120 -0
  439. package/dist/tools/BashOutputTool/BashOutputTool.js.map +7 -0
  440. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +11 -0
  441. package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +7 -0
  442. package/dist/tools/BashOutputTool/prompt.js +13 -0
  443. package/dist/tools/BashOutputTool/prompt.js.map +7 -0
  444. package/dist/tools/BashTool/BashTool.js +209 -0
  445. package/dist/tools/BashTool/BashTool.js.map +7 -0
  446. package/dist/tools/BashTool/BashToolResultMessage.js +21 -0
  447. package/dist/tools/BashTool/BashToolResultMessage.js.map +7 -0
  448. package/dist/tools/BashTool/OutputLine.js +30 -0
  449. package/dist/tools/BashTool/OutputLine.js.map +7 -0
  450. package/dist/tools/BashTool/prompt.js +180 -0
  451. package/dist/tools/BashTool/prompt.js.map +7 -0
  452. package/dist/tools/BashTool/utils.js +51 -0
  453. package/dist/tools/BashTool/utils.js.map +7 -0
  454. package/dist/tools/FileEditTool/FileEditTool.js +226 -0
  455. package/dist/tools/FileEditTool/FileEditTool.js.map +7 -0
  456. package/dist/tools/FileEditTool/prompt.js +54 -0
  457. package/dist/tools/FileEditTool/prompt.js.map +7 -0
  458. package/dist/tools/FileEditTool/utils.js +42 -0
  459. package/dist/tools/FileEditTool/utils.js.map +7 -0
  460. package/dist/tools/FileReadTool/FileReadTool.js +272 -0
  461. package/dist/tools/FileReadTool/FileReadTool.js.map +7 -0
  462. package/dist/tools/FileReadTool/prompt.js +10 -0
  463. package/dist/tools/FileReadTool/prompt.js.map +7 -0
  464. package/dist/tools/FileWriteTool/FileWriteTool.js +202 -0
  465. package/dist/tools/FileWriteTool/FileWriteTool.js.map +7 -0
  466. package/dist/tools/FileWriteTool/prompt.js +14 -0
  467. package/dist/tools/FileWriteTool/prompt.js.map +7 -0
  468. package/dist/tools/GlobTool/GlobTool.js +88 -0
  469. package/dist/tools/GlobTool/GlobTool.js.map +7 -0
  470. package/dist/tools/GlobTool/prompt.js +12 -0
  471. package/dist/tools/GlobTool/prompt.js.map +7 -0
  472. package/dist/tools/GrepTool/GrepTool.js +107 -0
  473. package/dist/tools/GrepTool/GrepTool.js.map +7 -0
  474. package/dist/tools/GrepTool/prompt.js +15 -0
  475. package/dist/tools/GrepTool/prompt.js.map +7 -0
  476. package/dist/tools/KillShellTool/KillShellTool.js +92 -0
  477. package/dist/tools/KillShellTool/KillShellTool.js.map +7 -0
  478. package/dist/tools/KillShellTool/KillShellToolResultMessage.js +11 -0
  479. package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +7 -0
  480. package/dist/tools/KillShellTool/prompt.js +12 -0
  481. package/dist/tools/KillShellTool/prompt.js.map +7 -0
  482. package/dist/tools/MCPTool/MCPTool.js +90 -0
  483. package/dist/tools/MCPTool/MCPTool.js.map +7 -0
  484. package/dist/tools/MCPTool/prompt.js +7 -0
  485. package/dist/tools/MCPTool/prompt.js.map +7 -0
  486. package/dist/tools/MemoryReadTool/MemoryReadTool.js +103 -0
  487. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +7 -0
  488. package/dist/tools/MemoryReadTool/prompt.js +7 -0
  489. package/dist/tools/MemoryReadTool/prompt.js.map +7 -0
  490. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +77 -0
  491. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +7 -0
  492. package/dist/tools/MemoryWriteTool/prompt.js +7 -0
  493. package/dist/tools/MemoryWriteTool/prompt.js.map +7 -0
  494. package/dist/tools/MultiEditTool/MultiEditTool.js +301 -0
  495. package/dist/tools/MultiEditTool/MultiEditTool.js.map +7 -0
  496. package/dist/tools/MultiEditTool/prompt.js +48 -0
  497. package/dist/tools/MultiEditTool/prompt.js.map +7 -0
  498. package/dist/tools/NotebookEditTool/NotebookEditTool.js +238 -0
  499. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +7 -0
  500. package/dist/tools/NotebookEditTool/prompt.js +7 -0
  501. package/dist/tools/NotebookEditTool/prompt.js.map +7 -0
  502. package/dist/tools/NotebookReadTool/NotebookReadTool.js +212 -0
  503. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +7 -0
  504. package/dist/tools/NotebookReadTool/prompt.js +7 -0
  505. package/dist/tools/NotebookReadTool/prompt.js.map +7 -0
  506. package/dist/tools/SkillTool/SkillTool.js +209 -0
  507. package/dist/tools/SkillTool/SkillTool.js.map +7 -0
  508. package/dist/tools/SkillTool/prompt.js +81 -0
  509. package/dist/tools/SkillTool/prompt.js.map +7 -0
  510. package/dist/tools/TaskTool/TaskTool.js +381 -0
  511. package/dist/tools/TaskTool/TaskTool.js.map +7 -0
  512. package/dist/tools/TaskTool/constants.js +5 -0
  513. package/dist/tools/TaskTool/constants.js.map +7 -0
  514. package/dist/tools/TaskTool/prompt.js +111 -0
  515. package/dist/tools/TaskTool/prompt.js.map +7 -0
  516. package/dist/tools/ThinkTool/ThinkTool.js +40 -0
  517. package/dist/tools/ThinkTool/ThinkTool.js.map +7 -0
  518. package/dist/tools/ThinkTool/prompt.js +16 -0
  519. package/dist/tools/ThinkTool/prompt.js.map +7 -0
  520. package/dist/tools/TodoWriteTool/TodoWriteTool.js +243 -0
  521. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +7 -0
  522. package/dist/tools/TodoWriteTool/prompt.js +66 -0
  523. package/dist/tools/TodoWriteTool/prompt.js.map +7 -0
  524. package/dist/tools/URLFetcherTool/URLFetcherTool.js +137 -0
  525. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +7 -0
  526. package/dist/tools/URLFetcherTool/cache.js +45 -0
  527. package/dist/tools/URLFetcherTool/cache.js.map +7 -0
  528. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +42 -0
  529. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +7 -0
  530. package/dist/tools/URLFetcherTool/prompt.js +22 -0
  531. package/dist/tools/URLFetcherTool/prompt.js.map +7 -0
  532. package/dist/tools/WebSearchTool/WebSearchTool.js +86 -0
  533. package/dist/tools/WebSearchTool/WebSearchTool.js.map +7 -0
  534. package/dist/tools/WebSearchTool/prompt.js +17 -0
  535. package/dist/tools/WebSearchTool/prompt.js.map +7 -0
  536. package/dist/tools/WebSearchTool/searchProviders.js +48 -0
  537. package/dist/tools/WebSearchTool/searchProviders.js.map +7 -0
  538. package/dist/tools/lsTool/lsTool.js +201 -0
  539. package/dist/tools/lsTool/lsTool.js.map +7 -0
  540. package/dist/tools/lsTool/prompt.js +5 -0
  541. package/dist/tools/lsTool/prompt.js.map +7 -0
  542. package/dist/tools.js +70 -0
  543. package/dist/tools.js.map +7 -0
  544. package/dist/types/PermissionMode.js +82 -0
  545. package/dist/types/PermissionMode.js.map +7 -0
  546. package/dist/types/RequestContext.js +47 -0
  547. package/dist/types/RequestContext.js.map +7 -0
  548. package/dist/types/common.d.js +1 -0
  549. package/dist/types/common.d.js.map +7 -0
  550. package/dist/types/conversation.js +1 -0
  551. package/dist/types/conversation.js.map +7 -0
  552. package/dist/types/hooks.js +38 -0
  553. package/dist/types/hooks.js.map +7 -0
  554. package/dist/types/interactionRound.js +1 -0
  555. package/dist/types/interactionRound.js.map +7 -0
  556. package/dist/types/logs.js +1 -0
  557. package/dist/types/logs.js.map +7 -0
  558. package/dist/types/marketplace.js +101 -0
  559. package/dist/types/marketplace.js.map +7 -0
  560. package/dist/types/modelCapabilities.js +1 -0
  561. package/dist/types/modelCapabilities.js.map +7 -0
  562. package/dist/types/notebook.js +1 -0
  563. package/dist/types/notebook.js.map +7 -0
  564. package/dist/types/plugin.js +83 -0
  565. package/dist/types/plugin.js.map +7 -0
  566. package/dist/types/subagent.js +1 -0
  567. package/dist/types/subagent.js.map +7 -0
  568. package/dist/utils/BackgroundShellManager.js +215 -0
  569. package/dist/utils/BackgroundShellManager.js.map +7 -0
  570. package/dist/utils/Cursor.js +315 -0
  571. package/dist/utils/Cursor.js.map +7 -0
  572. package/dist/utils/PersistentShell.js +371 -0
  573. package/dist/utils/PersistentShell.js.map +7 -0
  574. package/dist/utils/advancedFuzzyMatcher.js +206 -0
  575. package/dist/utils/advancedFuzzyMatcher.js.map +7 -0
  576. package/dist/utils/agentLoader.js +244 -0
  577. package/dist/utils/agentLoader.js.map +7 -0
  578. package/dist/utils/agentStorage.js +59 -0
  579. package/dist/utils/agentStorage.js.map +7 -0
  580. package/dist/utils/array.js +7 -0
  581. package/dist/utils/array.js.map +7 -0
  582. package/dist/utils/ask.js +77 -0
  583. package/dist/utils/ask.js.map +7 -0
  584. package/dist/utils/auth.js +11 -0
  585. package/dist/utils/auth.js.map +7 -0
  586. package/dist/utils/autoCompactCore.js +126 -0
  587. package/dist/utils/autoCompactCore.js.map +7 -0
  588. package/dist/utils/autoUpdater.js +107 -0
  589. package/dist/utils/autoUpdater.js.map +7 -0
  590. package/dist/utils/browser.js +15 -0
  591. package/dist/utils/browser.js.map +7 -0
  592. package/dist/utils/cleanup.js +54 -0
  593. package/dist/utils/cleanup.js.map +7 -0
  594. package/dist/utils/commands.js +207 -0
  595. package/dist/utils/commands.js.map +7 -0
  596. package/dist/utils/commonUnixCommands.js +687 -0
  597. package/dist/utils/commonUnixCommands.js.map +7 -0
  598. package/dist/utils/compressionMode.js +47 -0
  599. package/dist/utils/compressionMode.js.map +7 -0
  600. package/dist/utils/config.js +651 -0
  601. package/dist/utils/config.js.map +7 -0
  602. package/dist/utils/conversationRecovery.js +35 -0
  603. package/dist/utils/conversationRecovery.js.map +7 -0
  604. package/dist/utils/debugLogger.js +889 -0
  605. package/dist/utils/debugLogger.js.map +7 -0
  606. package/dist/utils/diff.js +32 -0
  607. package/dist/utils/diff.js.map +7 -0
  608. package/dist/utils/env.js +44 -0
  609. package/dist/utils/env.js.map +7 -0
  610. package/dist/utils/errors.js +23 -0
  611. package/dist/utils/errors.js.map +7 -0
  612. package/dist/utils/execFileNoThrow.js +44 -0
  613. package/dist/utils/execFileNoThrow.js.map +7 -0
  614. package/dist/utils/expertChatStorage.js +78 -0
  615. package/dist/utils/expertChatStorage.js.map +7 -0
  616. package/dist/utils/file.js +282 -0
  617. package/dist/utils/file.js.map +7 -0
  618. package/dist/utils/fileRecoveryCore.js +41 -0
  619. package/dist/utils/fileRecoveryCore.js.map +7 -0
  620. package/dist/utils/format.js +41 -0
  621. package/dist/utils/format.js.map +7 -0
  622. package/dist/utils/fuzzyMatcher.js +252 -0
  623. package/dist/utils/fuzzyMatcher.js.map +7 -0
  624. package/dist/utils/generators.js +46 -0
  625. package/dist/utils/generators.js.map +7 -0
  626. package/dist/utils/git.js +83 -0
  627. package/dist/utils/git.js.map +7 -0
  628. package/dist/utils/hookManager.js +238 -0
  629. package/dist/utils/hookManager.js.map +7 -0
  630. package/dist/utils/http.js +7 -0
  631. package/dist/utils/http.js.map +7 -0
  632. package/dist/utils/imagePaste.js +29 -0
  633. package/dist/utils/imagePaste.js.map +7 -0
  634. package/dist/utils/json.js +16 -0
  635. package/dist/utils/json.js.map +7 -0
  636. package/dist/utils/log.js +329 -0
  637. package/dist/utils/log.js.map +7 -0
  638. package/dist/utils/markdown.js +187 -0
  639. package/dist/utils/markdown.js.map +7 -0
  640. package/dist/utils/marketplaceManager.js +474 -0
  641. package/dist/utils/marketplaceManager.js.map +7 -0
  642. package/dist/utils/messageContextManager.js +195 -0
  643. package/dist/utils/messageContextManager.js.map +7 -0
  644. package/dist/utils/messages.js +650 -0
  645. package/dist/utils/messages.js.map +7 -0
  646. package/dist/utils/model.js +677 -0
  647. package/dist/utils/model.js.map +7 -0
  648. package/dist/utils/permissions/filesystem.js +80 -0
  649. package/dist/utils/permissions/filesystem.js.map +7 -0
  650. package/dist/utils/pluginInstaller.js +491 -0
  651. package/dist/utils/pluginInstaller.js.map +7 -0
  652. package/dist/utils/pluginLoader.js +582 -0
  653. package/dist/utils/pluginLoader.js.map +7 -0
  654. package/dist/utils/pluginRegistry.js +111 -0
  655. package/dist/utils/pluginRegistry.js.map +7 -0
  656. package/dist/utils/pluginValidator.js +774 -0
  657. package/dist/utils/pluginValidator.js.map +7 -0
  658. package/dist/utils/ptyCompat.js +125 -0
  659. package/dist/utils/ptyCompat.js.map +7 -0
  660. package/dist/utils/replStateMachine.js +145 -0
  661. package/dist/utils/replStateMachine.js.map +7 -0
  662. package/dist/utils/ripgrep.js +131 -0
  663. package/dist/utils/ripgrep.js.map +7 -0
  664. package/dist/utils/roundConverter.js +262 -0
  665. package/dist/utils/roundConverter.js.map +7 -0
  666. package/dist/utils/secureFile.js +483 -0
  667. package/dist/utils/secureFile.js.map +7 -0
  668. package/dist/utils/sessionState.js +22 -0
  669. package/dist/utils/sessionState.js.map +7 -0
  670. package/dist/utils/skillLoader.js +79 -0
  671. package/dist/utils/skillLoader.js.map +7 -0
  672. package/dist/utils/state.js +24 -0
  673. package/dist/utils/state.js.map +7 -0
  674. package/dist/utils/style.js +31 -0
  675. package/dist/utils/style.js.map +7 -0
  676. package/dist/utils/terminal.js +47 -0
  677. package/dist/utils/terminal.js.map +7 -0
  678. package/dist/utils/theme.js +102 -0
  679. package/dist/utils/theme.js.map +7 -0
  680. package/dist/utils/thinking.js +59 -0
  681. package/dist/utils/thinking.js.map +7 -0
  682. package/dist/utils/todoChangeCalculator.js +64 -0
  683. package/dist/utils/todoChangeCalculator.js.map +7 -0
  684. package/dist/utils/todoStorage.js +291 -0
  685. package/dist/utils/todoStorage.js.map +7 -0
  686. package/dist/utils/tokens.js +30 -0
  687. package/dist/utils/tokens.js.map +7 -0
  688. package/dist/utils/toolExecutionController.js +109 -0
  689. package/dist/utils/toolExecutionController.js.map +7 -0
  690. package/dist/utils/unaryLogging.js +6 -0
  691. package/dist/utils/unaryLogging.js.map +7 -0
  692. package/dist/utils/user.js +40 -0
  693. package/dist/utils/user.js.map +7 -0
  694. package/dist/utils/validate.js +132 -0
  695. package/dist/utils/validate.js.map +7 -0
  696. package/dist/version.js +7 -0
  697. package/dist/version.js.map +7 -0
  698. package/dist/yoga.wasm +0 -0
  699. package/package.json +113 -0
  700. package/scripts/postinstall.js +18 -0
  701. package/yoga.wasm +0 -0
@@ -0,0 +1,755 @@
1
+ import { Box, Text, useInput } from "ink";
2
+ import * as React from "react";
3
+ import { processUserInput } from "../utils/messages.js";
4
+ import { useArrowKeyHistory } from "../hooks/useArrowKeyHistory.js";
5
+ import { useUnifiedCompletion } from "../hooks/useUnifiedCompletion.js";
6
+ import { useHistorySearch } from "../hooks/useHistorySearch.js";
7
+ import { addToHistory, getHistory } from "../history.js";
8
+ import TextInput from "./TextInput.js";
9
+ import { HistorySearchOverlay } from "./HistorySearchOverlay.js";
10
+ import { memo, useCallback, useMemo, useState } from "react";
11
+ import { countTokens } from "../utils/tokens.js";
12
+ import { SentryErrorBoundary } from "./SentryErrorBoundary.js";
13
+ import { TokenWarning, WARNING_THRESHOLD } from "./TokenWarning.js";
14
+ import { useTerminalSize } from "../hooks/useTerminalSize.js";
15
+ import { getTheme } from "../utils/theme.js";
16
+ import { getModelManager } from "../utils/model.js";
17
+ import { getGlobalConfig, saveGlobalConfig } from "../utils/config.js";
18
+ import { setTerminalTitle, clearScreen } from "../utils/terminal.js";
19
+ import terminalSetup, {
20
+ isShiftEnterKeyBindingInstalled,
21
+ handleHashCommand
22
+ } from "../commands/terminalSetup.js";
23
+ import { usePermissionContext } from "../context/PermissionContext.js";
24
+ import { getHookManager } from "../utils/hookManager.js";
25
+ import { PROJECT_FILE } from "../constants/product.js";
26
+ async function interpretHashCommand(input) {
27
+ try {
28
+ const { queryQuick } = await import("../services/claude.js");
29
+ const systemPrompt = [
30
+ "You're helping the user structure notes that will be added to their KODING.md file.",
31
+ "Format the user's input into a well-structured note that will be useful for later reference.",
32
+ "Add appropriate markdown formatting, headings, bullet points, or other structural elements as needed.",
33
+ "The goal is to transform the raw note into something that will be more useful when reviewed later.",
34
+ "You should keep the original meaning but make the structure clear."
35
+ ];
36
+ const result = await queryQuick({
37
+ systemPrompt,
38
+ userPrompt: `Transform this note for KODING.md: ${input}`
39
+ });
40
+ if (typeof result.message.content === "string") {
41
+ return result.message.content;
42
+ } else if (Array.isArray(result.message.content)) {
43
+ return result.message.content.filter((block) => block.type === "text").map((block) => block.type === "text" ? block.text : "").join("\n");
44
+ }
45
+ return `# ${input}
46
+
47
+ _Added on ${(/* @__PURE__ */ new Date()).toLocaleString()}_`;
48
+ } catch (e) {
49
+ return `# ${input}
50
+
51
+ _Added on ${(/* @__PURE__ */ new Date()).toLocaleString()}_`;
52
+ }
53
+ }
54
+ function getPastedTextPrompt(text) {
55
+ const newlineCount = (text.match(/\r\n|\r|\n/g) || []).length;
56
+ return `[Pasted text +${newlineCount} lines] `;
57
+ }
58
+ function PromptInput({
59
+ commands,
60
+ forkNumber,
61
+ messageLogName,
62
+ isDisabled,
63
+ isLoading,
64
+ onQuery,
65
+ debug: debug2,
66
+ verbose,
67
+ messages,
68
+ setToolJSX,
69
+ tools,
70
+ input,
71
+ onInputChange,
72
+ mode,
73
+ onModeChange,
74
+ submitCount,
75
+ onSubmitCountChange,
76
+ setIsLoading,
77
+ fallbackMode = false,
78
+ abortController,
79
+ setAbortController,
80
+ onShowMessageSelector,
81
+ setForkConvoWithMessagesOnTheNextRender,
82
+ readFileTimestamps,
83
+ onToggleTodoPanel,
84
+ onToggleVerbose,
85
+ onModelChange,
86
+ onRollbackConversation,
87
+ onToggleBackgroundPanel,
88
+ backgroundShellCount = 0,
89
+ isBackgroundPanelOpen = false
90
+ }) {
91
+ const [exitMessage, setExitMessage] = useState({ show: false });
92
+ const [message, setMessage] = useState({
93
+ show: false
94
+ });
95
+ const [modelSwitchMessage, setModelSwitchMessage] = useState({
96
+ show: false
97
+ });
98
+ const [pastedImage, setPastedImage] = useState(null);
99
+ const [placeholder, setPlaceholder] = useState("");
100
+ const [cursorOffset, setCursorOffset] = useState(input.length);
101
+ const [pastedText, setPastedText] = useState(null);
102
+ const [ctrlDCount, setCtrlDCount] = useState(0);
103
+ const [ctrlDTimer, setCtrlDTimer] = useState(null);
104
+ const [escCount, setEscCount] = useState(0);
105
+ const [escTimer, setEscTimer] = useState(null);
106
+ const [hotkeyMessage, setHotkeyMessage] = useState({ show: false });
107
+ const [backgroundIndicatorFocused, setBackgroundIndicatorFocused] = useState(false);
108
+ const { cycleMode, currentMode } = usePermissionContext();
109
+ const { columns } = useTerminalSize();
110
+ const commandWidth = useMemo(
111
+ () => Math.max(...commands.map((cmd) => cmd.userFacingName().length)) + 5,
112
+ [commands]
113
+ );
114
+ const {
115
+ suggestions,
116
+ selectedIndex,
117
+ isActive: completionActive,
118
+ emptyDirMessage
119
+ } = useUnifiedCompletion({
120
+ input,
121
+ cursorOffset,
122
+ onInputChange,
123
+ setCursorOffset,
124
+ commands,
125
+ onSubmit
126
+ });
127
+ const history = useMemo(() => getHistory(), [submitCount]);
128
+ const historySearch = useHistorySearch(history);
129
+ const theme = getTheme();
130
+ const renderedSuggestions = useMemo(() => {
131
+ if (suggestions.length === 0) return null;
132
+ return suggestions.map((suggestion, index) => {
133
+ const isSelected = index === selectedIndex;
134
+ const isAgent = suggestion.type === "agent";
135
+ const displayColor = isSelected ? theme.suggestion : isAgent && suggestion.metadata?.color ? suggestion.metadata.color : void 0;
136
+ return /* @__PURE__ */ React.createElement(Box, { key: `${suggestion.type}-${suggestion.value}-${index}`, flexDirection: "row" }, /* @__PURE__ */ React.createElement(
137
+ Text,
138
+ {
139
+ color: displayColor,
140
+ dimColor: !isSelected && !displayColor
141
+ },
142
+ isSelected ? "\u25C6 " : " ",
143
+ suggestion.displayValue
144
+ ));
145
+ });
146
+ }, [suggestions, selectedIndex, theme.suggestion]);
147
+ const onChange = useCallback(
148
+ (value) => {
149
+ if (value.startsWith("!")) {
150
+ onModeChange("bash");
151
+ return;
152
+ }
153
+ if (value.startsWith("#")) {
154
+ onModeChange("koding");
155
+ return;
156
+ }
157
+ onInputChange(value);
158
+ },
159
+ [onModeChange, onInputChange]
160
+ );
161
+ const handleQuickModelSwitch = useCallback(async () => {
162
+ const modelManager2 = getModelManager();
163
+ const currentTokens = countTokens(messages);
164
+ const debugInfo = modelManager2.getModelSwitchingDebugInfo();
165
+ const switchResult = modelManager2.switchToNextModel(currentTokens);
166
+ if (switchResult.success && switchResult.modelName) {
167
+ onSubmitCountChange((prev) => prev + 1);
168
+ setModelSwitchMessage({
169
+ show: true,
170
+ text: switchResult.message || `\u2705 Switched to ${switchResult.modelName}`
171
+ });
172
+ setTimeout(() => setModelSwitchMessage({ show: false }), 3e3);
173
+ } else if (switchResult.blocked && switchResult.message) {
174
+ setModelSwitchMessage({
175
+ show: true,
176
+ text: switchResult.message
177
+ });
178
+ setTimeout(() => setModelSwitchMessage({ show: false }), 5e3);
179
+ } else {
180
+ let errorMessage = switchResult.message;
181
+ if (!errorMessage) {
182
+ if (debugInfo.totalModels === 0) {
183
+ errorMessage = "\u274C No models configured. Use /model to add models.";
184
+ } else if (debugInfo.activeModels === 0) {
185
+ errorMessage = `\u274C No active models (${debugInfo.totalModels} total, all inactive). Use /model to activate models.`;
186
+ } else if (debugInfo.activeModels === 1) {
187
+ const allModelNames = debugInfo.availableModels.map((m) => `${m.name}${m.isActive ? "" : " (inactive)"}`).join(", ");
188
+ errorMessage = `\u26A0\uFE0F Only 1 active model out of ${debugInfo.totalModels} total models: ${allModelNames}. ALL configured models will be activated for switching.`;
189
+ } else {
190
+ errorMessage = `\u274C Model switching failed (${debugInfo.activeModels} active, ${debugInfo.totalModels} total models available)`;
191
+ }
192
+ }
193
+ setModelSwitchMessage({
194
+ show: true,
195
+ text: errorMessage
196
+ });
197
+ setTimeout(() => setModelSwitchMessage({ show: false }), 6e3);
198
+ }
199
+ }, [onSubmitCountChange, messages]);
200
+ const { resetHistory, onHistoryUp, onHistoryDown } = useArrowKeyHistory(
201
+ (value, mode2) => {
202
+ onChange(value);
203
+ onModeChange(mode2);
204
+ },
205
+ input
206
+ );
207
+ const handleHistoryUp = () => {
208
+ if (!completionActive) {
209
+ onHistoryUp();
210
+ }
211
+ };
212
+ const handleHistoryDown = () => {
213
+ if (!completionActive) {
214
+ onHistoryDown();
215
+ }
216
+ };
217
+ async function onSubmit(input2, isSubmittingSlashCommand = false) {
218
+ const hookManager = getHookManager();
219
+ if (hookManager && input2 && input2.trim()) {
220
+ try {
221
+ const decision = await hookManager.executeUserPromptSubmit(input2);
222
+ if (!decision.shouldContinue) {
223
+ if (decision.shouldAskUser) {
224
+ const confirmed = confirm(
225
+ decision.reason || "Hook requested approval. Continue?"
226
+ );
227
+ if (!confirmed) {
228
+ return;
229
+ }
230
+ } else {
231
+ setMessage({ show: true, text: decision.reason || "Blocked by hook" });
232
+ setTimeout(() => setMessage({ show: false }), 3e3);
233
+ return;
234
+ }
235
+ }
236
+ } catch (err) {
237
+ debug2.error("UserPromptSubmit hook failed", { error: err });
238
+ }
239
+ }
240
+ if ((mode === "koding" || input2.startsWith("#")) && input2.match(/^(#\s*)?(put|create|generate|write|give|provide)/i)) {
241
+ try {
242
+ const originalInput = input2;
243
+ const cleanInput = mode === "koding" ? input2 : input2.substring(1).trim();
244
+ addToHistory(mode === "koding" ? `#${input2}` : input2);
245
+ onInputChange("");
246
+ const kodingContext = `The user is using Koding mode. Format your response as a comprehensive, well-structured document suitable for adding to ${PROJECT_FILE}. Use proper markdown formatting with headings, lists, code blocks, etc. The response should be complete and ready to add to ${PROJECT_FILE} documentation.`;
247
+ onModeChange("prompt");
248
+ if (abortController) {
249
+ abortController.abort();
250
+ }
251
+ setIsLoading(false);
252
+ await new Promise((resolve) => setTimeout(resolve, 0));
253
+ setIsLoading(true);
254
+ const messages3 = await processUserInput(
255
+ cleanInput,
256
+ "prompt",
257
+ // Use prompt mode for processing
258
+ setToolJSX,
259
+ {
260
+ options: {
261
+ commands,
262
+ forkNumber,
263
+ messageLogName,
264
+ tools,
265
+ verbose,
266
+ maxThinkingTokens: 0,
267
+ // Add context flag for koding mode
268
+ isKodingRequest: true,
269
+ kodingContext
270
+ },
271
+ messageId: void 0,
272
+ abortController: abortController || new AbortController(),
273
+ // Temporary controller, actual one created in onQuery
274
+ readFileTimestamps,
275
+ setForkConvoWithMessagesOnTheNextRender
276
+ },
277
+ pastedImage ?? null
278
+ );
279
+ if (messages3.length) {
280
+ await onQuery(messages3);
281
+ }
282
+ return;
283
+ } catch (e) {
284
+ console.error("Error processing Koding request:", e);
285
+ }
286
+ } else if (mode === "koding" || input2.startsWith("#")) {
287
+ try {
288
+ const contentToInterpret = mode === "koding" && !input2.startsWith("#") ? input2.trim() : input2.substring(1).trim();
289
+ const interpreted = await interpretHashCommand(contentToInterpret);
290
+ handleHashCommand(interpreted);
291
+ } catch (e) {
292
+ }
293
+ onInputChange("");
294
+ addToHistory(mode === "koding" ? `#${input2}` : input2);
295
+ onModeChange("prompt");
296
+ return;
297
+ }
298
+ if (input2 === "") {
299
+ return;
300
+ }
301
+ if (isDisabled) {
302
+ return;
303
+ }
304
+ if (isLoading) {
305
+ return;
306
+ }
307
+ if (suggestions.length > 0 && completionActive) {
308
+ return;
309
+ }
310
+ if (["exit", "quit", ":q", ":q!", ":wq", ":wq!"].includes(input2.trim())) {
311
+ exit();
312
+ }
313
+ let finalInput = input2;
314
+ if (pastedText) {
315
+ const pastedPrompt = getPastedTextPrompt(pastedText);
316
+ if (finalInput.includes(pastedPrompt)) {
317
+ finalInput = finalInput.replace(pastedPrompt, pastedText);
318
+ }
319
+ }
320
+ onInputChange("");
321
+ onModeChange("prompt");
322
+ setPastedImage(null);
323
+ setPastedText(null);
324
+ onSubmitCountChange((_) => _ + 1);
325
+ setIsLoading(true);
326
+ const newAbortController = new AbortController();
327
+ setAbortController(newAbortController);
328
+ const messages2 = await processUserInput(
329
+ finalInput,
330
+ mode,
331
+ setToolJSX,
332
+ {
333
+ options: {
334
+ commands,
335
+ forkNumber,
336
+ messageLogName,
337
+ tools,
338
+ verbose,
339
+ maxThinkingTokens: 0
340
+ },
341
+ messageId: void 0,
342
+ abortController: newAbortController,
343
+ readFileTimestamps,
344
+ setForkConvoWithMessagesOnTheNextRender
345
+ },
346
+ pastedImage ?? null
347
+ );
348
+ if (messages2.length) {
349
+ onQuery(messages2, newAbortController);
350
+ } else {
351
+ addToHistory(input2);
352
+ resetHistory();
353
+ return;
354
+ }
355
+ for (const message2 of messages2) {
356
+ if (message2.type === "user") {
357
+ const inputToAdd = mode === "bash" ? `!${input2}` : input2;
358
+ addToHistory(inputToAdd);
359
+ resetHistory();
360
+ }
361
+ }
362
+ }
363
+ function onImagePaste(image) {
364
+ onModeChange("prompt");
365
+ setPastedImage(image);
366
+ }
367
+ function onTextPaste(rawText) {
368
+ const text = rawText.replace(/\r/g, "\n");
369
+ const pastedPrompt = getPastedTextPrompt(text);
370
+ const newInput = input.slice(0, cursorOffset) + pastedPrompt + input.slice(cursorOffset);
371
+ onInputChange(newInput);
372
+ setCursorOffset(cursorOffset + pastedPrompt.length);
373
+ setPastedText(text);
374
+ }
375
+ useInput(
376
+ fallbackMode ? () => {
377
+ } : (inputChar, key) => {
378
+ if (key.ctrl && inputChar === "c") {
379
+ if (isLoading) {
380
+ if (abortController && !abortController.signal.aborted) {
381
+ abortController.abort();
382
+ }
383
+ setIsLoading(false);
384
+ setHotkeyMessage({ show: true, text: "Interrupted by user (Ctrl-C)" });
385
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
386
+ } else if (input.length > 0) {
387
+ onInputChange("");
388
+ setHotkeyMessage({ show: true, text: "Input cleared" });
389
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
390
+ } else {
391
+ setHotkeyMessage({ show: true, text: "Press Ctrl-D to exit" });
392
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
393
+ }
394
+ return true;
395
+ }
396
+ if (key.ctrl && inputChar === "d") {
397
+ if (input.length > 0) {
398
+ onInputChange("");
399
+ setHotkeyMessage({ show: true, text: "Input cleared (Ctrl-D)" });
400
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
401
+ return true;
402
+ }
403
+ setCtrlDCount((prev) => prev + 1);
404
+ if (ctrlDTimer) clearTimeout(ctrlDTimer);
405
+ const timer = setTimeout(() => setCtrlDCount(0), 1e3);
406
+ setCtrlDTimer(timer);
407
+ if (ctrlDCount >= 1) {
408
+ setHotkeyMessage({ show: true, text: "Exiting gracefully..." });
409
+ setTimeout(() => exit(), 500);
410
+ } else {
411
+ setHotkeyMessage({ show: true, text: "Press Ctrl-D again to exit" });
412
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
413
+ }
414
+ return true;
415
+ }
416
+ if (key.ctrl && inputChar === "l") {
417
+ clearScreen();
418
+ setHotkeyMessage({ show: true, text: "Screen cleared (Ctrl-L)" });
419
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
420
+ return true;
421
+ }
422
+ if (key.ctrl && inputChar === "o") {
423
+ const config = getGlobalConfig();
424
+ const newVerbose = !verbose;
425
+ saveGlobalConfig({
426
+ ...config,
427
+ verbose: newVerbose
428
+ });
429
+ setHotkeyMessage({
430
+ show: true,
431
+ text: `Verbose mode ${newVerbose ? "enabled" : "disabled"} (Ctrl-O)`
432
+ });
433
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
434
+ if (onToggleVerbose) {
435
+ onToggleVerbose();
436
+ }
437
+ return true;
438
+ }
439
+ if (key.ctrl && inputChar === "t") {
440
+ if (onToggleTodoPanel) {
441
+ onToggleTodoPanel();
442
+ setHotkeyMessage({
443
+ show: true,
444
+ text: "TodoPanel toggled (Ctrl-T)"
445
+ });
446
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
447
+ }
448
+ return true;
449
+ }
450
+ if (key.ctrl && inputChar === "b") {
451
+ if (!input || input.trim().length === 0) {
452
+ setHotkeyMessage({
453
+ show: true,
454
+ text: "Type a command first, then press Ctrl-B"
455
+ });
456
+ setTimeout(() => setHotkeyMessage({ show: false }), 2e3);
457
+ return true;
458
+ }
459
+ if (mode === "bash") {
460
+ setHotkeyMessage({
461
+ show: true,
462
+ text: "Executing bash command... (Ctrl-B)"
463
+ });
464
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
465
+ onSubmit(input);
466
+ return true;
467
+ }
468
+ const bashCommand = `!${input}`;
469
+ setHotkeyMessage({
470
+ show: true,
471
+ text: "Executing bash command... (Ctrl-B)"
472
+ });
473
+ setTimeout(() => setHotkeyMessage({ show: false }), 1e3);
474
+ onSubmit(bashCommand);
475
+ return true;
476
+ }
477
+ if (key.ctrl && inputChar === "r") {
478
+ if (!historySearch.isActive) {
479
+ historySearch.activate();
480
+ return true;
481
+ }
482
+ historySearch.moveUp();
483
+ return true;
484
+ }
485
+ if (historySearch.isActive) {
486
+ if (key.escape) {
487
+ historySearch.reset();
488
+ return true;
489
+ }
490
+ if (key.return) {
491
+ if (historySearch.selectedItem) {
492
+ onInputChange(historySearch.selectedItem);
493
+ }
494
+ historySearch.reset();
495
+ return true;
496
+ }
497
+ if (key.upArrow) {
498
+ historySearch.moveUp();
499
+ return true;
500
+ }
501
+ if (key.downArrow) {
502
+ historySearch.moveDown();
503
+ return true;
504
+ }
505
+ if (inputChar && !key.ctrl && !key.meta) {
506
+ historySearch.setSearchTerm(historySearch.searchTerm + inputChar);
507
+ return true;
508
+ }
509
+ if (key.backspace || key.delete) {
510
+ if (historySearch.searchTerm.length > 0) {
511
+ historySearch.setSearchTerm(
512
+ historySearch.searchTerm.slice(0, -1)
513
+ );
514
+ } else {
515
+ historySearch.reset();
516
+ }
517
+ return true;
518
+ }
519
+ }
520
+ if (backgroundIndicatorFocused) {
521
+ if (key.upArrow) {
522
+ setBackgroundIndicatorFocused(false);
523
+ return true;
524
+ }
525
+ if (key.return) {
526
+ if (onToggleBackgroundPanel) {
527
+ onToggleBackgroundPanel();
528
+ }
529
+ setBackgroundIndicatorFocused(false);
530
+ return true;
531
+ }
532
+ if (key.escape) {
533
+ setBackgroundIndicatorFocused(false);
534
+ return true;
535
+ }
536
+ return true;
537
+ }
538
+ if (key.downArrow && backgroundShellCount > 0 && !completionActive) {
539
+ setBackgroundIndicatorFocused(true);
540
+ return true;
541
+ }
542
+ if (mode === "bash" && (key.backspace || key.delete)) {
543
+ if (input === "") {
544
+ onModeChange("prompt");
545
+ }
546
+ return;
547
+ }
548
+ if (mode === "koding" && (key.backspace || key.delete)) {
549
+ if (input === "") {
550
+ onModeChange("prompt");
551
+ }
552
+ return;
553
+ }
554
+ if (inputChar === "" && (key.escape || key.backspace || key.delete)) {
555
+ onModeChange("prompt");
556
+ }
557
+ if (key.escape && !input && !isLoading && messages.length > 0 && onRollbackConversation) {
558
+ setEscCount((prev) => prev + 1);
559
+ if (escTimer) clearTimeout(escTimer);
560
+ const timer = setTimeout(() => setEscCount(0), 1e3);
561
+ setEscTimer(timer);
562
+ if (escCount >= 1) {
563
+ const success = onRollbackConversation();
564
+ if (success) {
565
+ setMessage({ show: true, text: "Conversation rolled back (Esc Esc)" });
566
+ setTimeout(() => setMessage({ show: false }), 2e3);
567
+ } else {
568
+ setMessage({ show: true, text: "No history to rollback" });
569
+ setTimeout(() => setMessage({ show: false }), 2e3);
570
+ }
571
+ setEscCount(0);
572
+ return true;
573
+ } else {
574
+ setMessage({ show: true, text: "Press Esc again to rollback conversation" });
575
+ setTimeout(() => setMessage({ show: false }), 2e3);
576
+ return true;
577
+ }
578
+ }
579
+ if (key.escape && messages.length > 0 && !input && !isLoading) {
580
+ onShowMessageSelector();
581
+ }
582
+ if (key.tab && !key.shift && !completionActive) {
583
+ const config = getGlobalConfig();
584
+ const newThinking = !config.thinking;
585
+ saveGlobalConfig({
586
+ ...config,
587
+ thinking: newThinking
588
+ });
589
+ setMessage({
590
+ show: true,
591
+ text: `Thinking mode ${newThinking ? "enabled" : "disabled"} (Tab)`
592
+ });
593
+ setTimeout(() => setMessage({ show: false }), 2e3);
594
+ return true;
595
+ }
596
+ if (key.shift && key.tab) {
597
+ cycleMode();
598
+ return true;
599
+ }
600
+ return false;
601
+ },
602
+ { isActive: !isBackgroundPanelOpen && !fallbackMode }
603
+ );
604
+ const handleSpecialKey = useCallback((inputChar, key) => {
605
+ if (key.shift && (inputChar === "M" || inputChar === "m")) {
606
+ handleQuickModelSwitch();
607
+ return true;
608
+ }
609
+ return false;
610
+ }, [handleQuickModelSwitch]);
611
+ const textInputColumns = useTerminalSize().columns - 6;
612
+ const tokenUsage = useMemo(() => countTokens(messages), [messages]);
613
+ const modelManager = getModelManager();
614
+ const currentModelId = modelManager.getModel("main")?.id || null;
615
+ const modelInfo = useMemo(() => {
616
+ const freshModelManager = getModelManager();
617
+ const currentModel = freshModelManager.getModel("main");
618
+ if (!currentModel) {
619
+ return null;
620
+ }
621
+ return {
622
+ name: currentModel.modelName,
623
+ // 🔧 Fix: Use actual model name, not display name
624
+ id: currentModel.id,
625
+ // 添加模型ID用于调试
626
+ provider: currentModel.provider,
627
+ // 添加提供商信息
628
+ contextLength: currentModel.contextLength,
629
+ currentTokens: tokenUsage
630
+ };
631
+ }, [tokenUsage, modelSwitchMessage.show, submitCount, currentModelId]);
632
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, fallbackMode && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "yellow" }, "\u26A0\uFE0F Limited input mode"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " ", "(Advanced keyboard shortcuts unavailable - raw mode not supported)")), historySearch.isActive && /* @__PURE__ */ React.createElement(
633
+ HistorySearchOverlay,
634
+ {
635
+ searchTerm: historySearch.searchTerm,
636
+ results: historySearch.filteredResults,
637
+ selectedIndex: historySearch.selectedIndex
638
+ }
639
+ ), modelInfo && /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "[", modelInfo.provider, "] ", modelInfo.name, ":", " ", Math.round(modelInfo.currentTokens / 1e3), "k /", " ", Math.round(modelInfo.contextLength / 1e3), "k")), /* @__PURE__ */ React.createElement(
640
+ Box,
641
+ {
642
+ alignItems: "flex-start",
643
+ justifyContent: "flex-start",
644
+ borderColor: mode === "bash" ? theme.bashBorder : mode === "koding" ? theme.noting : theme.secondaryBorder,
645
+ borderDimColor: true,
646
+ borderStyle: "round",
647
+ marginTop: 1,
648
+ width: "100%"
649
+ },
650
+ /* @__PURE__ */ React.createElement(
651
+ Box,
652
+ {
653
+ alignItems: "flex-start",
654
+ alignSelf: "flex-start",
655
+ flexWrap: "nowrap",
656
+ justifyContent: "flex-start",
657
+ width: 3
658
+ },
659
+ mode === "bash" ? /* @__PURE__ */ React.createElement(Text, { color: theme.bashBorder }, "\xA0!\xA0") : mode === "koding" ? /* @__PURE__ */ React.createElement(Text, { color: theme.noting }, "\xA0#\xA0") : /* @__PURE__ */ React.createElement(Text, { color: isLoading ? theme.secondaryText : void 0 }, "\xA0>\xA0")
660
+ ),
661
+ /* @__PURE__ */ React.createElement(Box, { paddingRight: 1 }, /* @__PURE__ */ React.createElement(
662
+ TextInput,
663
+ {
664
+ multiline: true,
665
+ focus: !isBackgroundPanelOpen,
666
+ onSubmit,
667
+ onChange,
668
+ value: input,
669
+ onHistoryUp: handleHistoryUp,
670
+ onHistoryDown: handleHistoryDown,
671
+ onHistoryReset: () => resetHistory(),
672
+ placeholder: submitCount > 0 ? void 0 : placeholder,
673
+ onExit: () => process.exit(0),
674
+ onExitMessage: (show, key) => setExitMessage({ show, key }),
675
+ onMessage: (show, text) => setMessage({ show, text }),
676
+ onImagePaste,
677
+ columns: textInputColumns,
678
+ isDimmed: isDisabled || isLoading,
679
+ disableCursorMovementForUpDownKeys: completionActive,
680
+ cursorOffset,
681
+ onChangeCursorOffset: setCursorOffset,
682
+ onPaste: onTextPaste,
683
+ onSpecialKey: handleSpecialKey
684
+ }
685
+ ))
686
+ ), !completionActive && suggestions.length === 0 && /* @__PURE__ */ React.createElement(
687
+ Box,
688
+ {
689
+ flexDirection: "row",
690
+ justifyContent: "space-between",
691
+ paddingX: 2,
692
+ paddingY: 0
693
+ },
694
+ /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-start", gap: 1 }, exitMessage.show ? /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Press ", exitMessage.key, " again to exit") : message.show ? /* @__PURE__ */ React.createElement(Text, { dimColor: true }, message.text) : hotkeyMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: theme.success }, hotkeyMessage.text) : modelSwitchMessage.show ? /* @__PURE__ */ React.createElement(Text, { color: theme.success }, modelSwitchMessage.text) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
695
+ Text,
696
+ {
697
+ color: mode === "bash" ? theme.bashBorder : void 0,
698
+ dimColor: mode !== "bash"
699
+ },
700
+ "! for bash mode"
701
+ ), /* @__PURE__ */ React.createElement(
702
+ Text,
703
+ {
704
+ color: mode === "koding" ? theme.noting : void 0,
705
+ dimColor: mode !== "koding"
706
+ },
707
+ "\xB7 # for ",
708
+ PROJECT_FILE
709
+ ), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\xB7 / for commands \xB7 ctrl+c cancel \xB7 ctrl+l clear"), backgroundShellCount > 0 && /* @__PURE__ */ React.createElement(
710
+ Text,
711
+ {
712
+ color: backgroundIndicatorFocused ? theme.primary : theme.success,
713
+ backgroundColor: backgroundIndicatorFocused ? theme.success : void 0,
714
+ dimColor: !backgroundIndicatorFocused
715
+ },
716
+ "\xB7 ",
717
+ backgroundIndicatorFocused ? "\u25BA " : "",
718
+ backgroundShellCount,
719
+ " background task",
720
+ backgroundShellCount > 1 ? "s" : ""
721
+ ))),
722
+ /* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, !debug2 && tokenUsage < WARNING_THRESHOLD && /* @__PURE__ */ React.createElement(Text, { dimColor: true }, terminalSetup.isEnabled && isShiftEnterKeyBindingInstalled() ? "shift + \u23CE for newline" : "\\\u23CE for newline"), /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage })) })
723
+ ), suggestions.length > 0 && /* @__PURE__ */ React.createElement(
724
+ Box,
725
+ {
726
+ flexDirection: "row",
727
+ justifyContent: "space-between",
728
+ paddingX: 2,
729
+ paddingY: 0
730
+ },
731
+ /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, renderedSuggestions, /* @__PURE__ */ React.createElement(Box, { marginTop: 1, paddingX: 3, borderStyle: "round", borderColor: "gray" }, /* @__PURE__ */ React.createElement(Text, { dimColor: !emptyDirMessage, color: emptyDirMessage ? "yellow" : void 0 }, emptyDirMessage || (() => {
732
+ const selected = suggestions[selectedIndex];
733
+ if (!selected) {
734
+ return "\u2191\u2193 navigate \u2022 \u2192 accept \u2022 Tab cycle \u2022 Esc close";
735
+ }
736
+ if (selected?.value.endsWith("/")) {
737
+ return "\u2192 enter directory \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close";
738
+ } else if (selected?.type === "agent") {
739
+ return "\u2192 select agent \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close";
740
+ } else {
741
+ return "\u2192 insert reference \u2022 \u2191\u2193 navigate \u2022 Tab cycle \u2022 Esc close";
742
+ }
743
+ })()))),
744
+ /* @__PURE__ */ React.createElement(SentryErrorBoundary, { children: /* @__PURE__ */ React.createElement(Box, { justifyContent: "flex-end", gap: 1 }, /* @__PURE__ */ React.createElement(TokenWarning, { tokenUsage: countTokens(messages) })) })
745
+ ));
746
+ }
747
+ var PromptInput_default = memo(PromptInput);
748
+ function exit() {
749
+ setTerminalTitle("");
750
+ process.exit(0);
751
+ }
752
+ export {
753
+ PromptInput_default as default
754
+ };
755
+ //# sourceMappingURL=PromptInput.js.map