@shareai-lab/kode 1.2.0 → 2.0.2

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 (725) hide show
  1. package/README.md +25 -388
  2. package/cli-acp.js +82 -0
  3. package/cli.js +89 -79
  4. package/dist/REPL-GIU4ZIXM.js +42 -0
  5. package/dist/acp-H3VJ77YG.js +1357 -0
  6. package/dist/acp-H3VJ77YG.js.map +7 -0
  7. package/dist/agentsValidate-XP3CFN6F.js +373 -0
  8. package/dist/agentsValidate-XP3CFN6F.js.map +7 -0
  9. package/dist/ask-3G5H5KD5.js +125 -0
  10. package/dist/ask-3G5H5KD5.js.map +7 -0
  11. package/dist/autoUpdater-DNRMJWFQ.js +17 -0
  12. package/dist/chunk-2KWKUXLT.js +490 -0
  13. package/dist/chunk-2KWKUXLT.js.map +7 -0
  14. package/dist/chunk-2PMO2FS2.js +1097 -0
  15. package/dist/chunk-2PMO2FS2.js.map +7 -0
  16. package/dist/chunk-3RUXVV4S.js +23 -0
  17. package/dist/chunk-3RUXVV4S.js.map +7 -0
  18. package/dist/chunk-3TXNP6HH.js +240 -0
  19. package/dist/chunk-3TXNP6HH.js.map +7 -0
  20. package/dist/chunk-4GAIJGRH.js +472 -0
  21. package/dist/chunk-4GAIJGRH.js.map +7 -0
  22. package/dist/chunk-4RTX4AG4.js +249 -0
  23. package/dist/chunk-4RTX4AG4.js.map +7 -0
  24. package/dist/chunk-54DNHKOD.js +511 -0
  25. package/dist/chunk-54DNHKOD.js.map +7 -0
  26. package/dist/chunk-67PY5IX6.js +34 -0
  27. package/dist/chunk-67PY5IX6.js.map +7 -0
  28. package/dist/chunk-6DRDLOLP.js +2613 -0
  29. package/dist/chunk-6DRDLOLP.js.map +7 -0
  30. package/dist/chunk-7CQVZNQV.js +1609 -0
  31. package/dist/chunk-7CQVZNQV.js.map +7 -0
  32. package/dist/chunk-ABLVTESJ.js +19 -0
  33. package/dist/chunk-ABLVTESJ.js.map +7 -0
  34. package/dist/{utils/config.js → chunk-AIMIPK4B.js} +351 -171
  35. package/dist/chunk-AIMIPK4B.js.map +7 -0
  36. package/dist/{utils/autoUpdater.js → chunk-BHGTA6JQ.js} +38 -21
  37. package/dist/chunk-BHGTA6JQ.js.map +7 -0
  38. package/dist/chunk-CIG63V4E.js +72 -0
  39. package/dist/chunk-CIG63V4E.js.map +7 -0
  40. package/dist/chunk-E6YNABER.js +24 -0
  41. package/dist/chunk-E6YNABER.js.map +7 -0
  42. package/dist/chunk-EH34V7CY.js +191 -0
  43. package/dist/chunk-EH34V7CY.js.map +7 -0
  44. package/dist/{cost-tracker.js → chunk-EZXMVTDU.js} +51 -32
  45. package/dist/chunk-EZXMVTDU.js.map +7 -0
  46. package/dist/chunk-FH5CHM6L.js +148 -0
  47. package/dist/chunk-FH5CHM6L.js.map +7 -0
  48. package/dist/chunk-G6I7XROM.js +138 -0
  49. package/dist/chunk-G6I7XROM.js.map +7 -0
  50. package/dist/chunk-HN4E4UUQ.js +96 -0
  51. package/dist/chunk-HN4E4UUQ.js.map +7 -0
  52. package/dist/chunk-HSPVVDIW.js +30198 -0
  53. package/dist/chunk-HSPVVDIW.js.map +7 -0
  54. package/dist/{services/systemReminder.js → chunk-IE2CG2TV.js} +221 -59
  55. package/dist/chunk-IE2CG2TV.js.map +7 -0
  56. package/dist/chunk-JC6NCUG5.js +11 -0
  57. package/dist/chunk-K2MI4TPB.js +1256 -0
  58. package/dist/chunk-K2MI4TPB.js.map +7 -0
  59. package/dist/chunk-KAA5BGMQ.js +12 -0
  60. package/dist/chunk-KAA5BGMQ.js.map +7 -0
  61. package/dist/chunk-MN77D2F7.js +2931 -0
  62. package/dist/chunk-MN77D2F7.js.map +7 -0
  63. package/dist/chunk-NPFOMITO.js +21 -0
  64. package/dist/chunk-NPFOMITO.js.map +7 -0
  65. package/dist/chunk-NQLEUHMS.js +196 -0
  66. package/dist/chunk-NQLEUHMS.js.map +7 -0
  67. package/dist/chunk-OIFQB3S4.js +515 -0
  68. package/dist/chunk-OIFQB3S4.js.map +7 -0
  69. package/dist/chunk-OWTG2W3A.js +164 -0
  70. package/dist/chunk-OWTG2W3A.js.map +7 -0
  71. package/dist/chunk-OZNRLY3E.js +735 -0
  72. package/dist/chunk-OZNRLY3E.js.map +7 -0
  73. package/dist/{utils/debugLogger.js → chunk-QYFKRZQC.js} +107 -204
  74. package/dist/chunk-QYFKRZQC.js.map +7 -0
  75. package/dist/chunk-S3J2TLV6.js +16 -0
  76. package/dist/chunk-S3J2TLV6.js.map +7 -0
  77. package/dist/chunk-S6HRABTA.js +95 -0
  78. package/dist/chunk-S6HRABTA.js.map +7 -0
  79. package/dist/{utils/theme.js → chunk-SDGKPKDK.js} +28 -6
  80. package/dist/chunk-SDGKPKDK.js.map +7 -0
  81. package/dist/chunk-SRZZFAS7.js +766 -0
  82. package/dist/chunk-SRZZFAS7.js.map +7 -0
  83. package/dist/chunk-UKHTVRJM.js +47 -0
  84. package/dist/chunk-UKHTVRJM.js.map +7 -0
  85. package/dist/chunk-UYXEDKOZ.js +24 -0
  86. package/dist/chunk-UYXEDKOZ.js.map +7 -0
  87. package/dist/chunk-VBXVYQYY.js +145 -0
  88. package/dist/chunk-VBXVYQYY.js.map +7 -0
  89. package/dist/chunk-WVHORZQ5.js +17 -0
  90. package/dist/chunk-WVHORZQ5.js.map +7 -0
  91. package/dist/chunk-WWUWDNWW.js +49 -0
  92. package/dist/chunk-WWUWDNWW.js.map +7 -0
  93. package/dist/{utils/model.js → chunk-Z33T5YN5.js} +194 -227
  94. package/dist/chunk-Z33T5YN5.js.map +7 -0
  95. package/dist/{services/openai.js → chunk-ZQU3TXLC.js} +168 -234
  96. package/dist/chunk-ZQU3TXLC.js.map +7 -0
  97. package/dist/cli-SRV2INSL.js +3917 -0
  98. package/dist/cli-SRV2INSL.js.map +7 -0
  99. package/dist/commands-TWH6PGVG.js +46 -0
  100. package/dist/config-6ZMBCL23.js +81 -0
  101. package/dist/context-JQIOOI4W.js +30 -0
  102. package/dist/costTracker-6SL26FDB.js +19 -0
  103. package/dist/customCommands-DNEJS3ZU.js +25 -0
  104. package/dist/customCommands-DNEJS3ZU.js.map +7 -0
  105. package/dist/env-OFAXZ3XG.js +22 -0
  106. package/dist/env-OFAXZ3XG.js.map +7 -0
  107. package/dist/index.js +34 -5
  108. package/dist/index.js.map +4 -4
  109. package/dist/kodeAgentSessionId-X6XWQW7B.js +13 -0
  110. package/dist/kodeAgentSessionId-X6XWQW7B.js.map +7 -0
  111. package/dist/kodeAgentSessionLoad-6N27AC5K.js +18 -0
  112. package/dist/kodeAgentSessionLoad-6N27AC5K.js.map +7 -0
  113. package/dist/kodeAgentSessionResume-HUSAEO24.js +16 -0
  114. package/dist/kodeAgentSessionResume-HUSAEO24.js.map +7 -0
  115. package/dist/kodeAgentStreamJson-NXFN7TXH.js +13 -0
  116. package/dist/kodeAgentStreamJson-NXFN7TXH.js.map +7 -0
  117. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js +131 -0
  118. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +7 -0
  119. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +10 -0
  120. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js.map +7 -0
  121. package/dist/kodeHooks-TDMXFWSO.js +36 -0
  122. package/dist/kodeHooks-TDMXFWSO.js.map +7 -0
  123. package/dist/llm-XVXWYOHK.js +3118 -0
  124. package/dist/llm-XVXWYOHK.js.map +7 -0
  125. package/dist/llmLazy-7TD5N7XP.js +15 -0
  126. package/dist/llmLazy-7TD5N7XP.js.map +7 -0
  127. package/dist/loader-AUXIJTY6.js +28 -0
  128. package/dist/loader-AUXIJTY6.js.map +7 -0
  129. package/dist/mcp-BXJ3K7NZ.js +49 -0
  130. package/dist/mcp-BXJ3K7NZ.js.map +7 -0
  131. package/dist/{services/mentionProcessor.js → mentionProcessor-YD7YXYGF.js} +61 -50
  132. package/dist/mentionProcessor-YD7YXYGF.js.map +7 -0
  133. package/dist/messages-OFUJSPRV.js +63 -0
  134. package/dist/messages-OFUJSPRV.js.map +7 -0
  135. package/dist/model-KPYCXWBK.js +30 -0
  136. package/dist/model-KPYCXWBK.js.map +7 -0
  137. package/dist/openai-5G5D5Q4B.js +29 -0
  138. package/dist/openai-5G5D5Q4B.js.map +7 -0
  139. package/dist/outputStyles-HLDXFQK3.js +28 -0
  140. package/dist/outputStyles-HLDXFQK3.js.map +7 -0
  141. package/dist/package.json +1 -1
  142. package/dist/pluginRuntime-FPTKK6NY.js +218 -0
  143. package/dist/pluginRuntime-FPTKK6NY.js.map +7 -0
  144. package/dist/pluginValidation-DSFXZ4GF.js +17 -0
  145. package/dist/pluginValidation-DSFXZ4GF.js.map +7 -0
  146. package/dist/prompts-LWLAJRS2.js +48 -0
  147. package/dist/prompts-LWLAJRS2.js.map +7 -0
  148. package/dist/query-HVPWL27C.js +50 -0
  149. package/dist/query-HVPWL27C.js.map +7 -0
  150. package/dist/responsesStreaming-AW344PQO.js +10 -0
  151. package/dist/responsesStreaming-AW344PQO.js.map +7 -0
  152. package/dist/ripgrep-YOPCY2GO.js +17 -0
  153. package/dist/ripgrep-YOPCY2GO.js.map +7 -0
  154. package/dist/skillMarketplace-PSNKDINM.js +37 -0
  155. package/dist/skillMarketplace-PSNKDINM.js.map +7 -0
  156. package/dist/state-KNRWP3FO.js +16 -0
  157. package/dist/state-KNRWP3FO.js.map +7 -0
  158. package/dist/theme-7S2QN2FO.js +14 -0
  159. package/dist/theme-7S2QN2FO.js.map +7 -0
  160. package/dist/toolPermissionContext-65L65VEZ.js +17 -0
  161. package/dist/toolPermissionContext-65L65VEZ.js.map +7 -0
  162. package/dist/toolPermissionSettings-GPOBH4IV.js +18 -0
  163. package/dist/toolPermissionSettings-GPOBH4IV.js.map +7 -0
  164. package/dist/tools-FZU2FZBD.js +47 -0
  165. package/dist/tools-FZU2FZBD.js.map +7 -0
  166. package/dist/userInput-VHNBN2MW.js +311 -0
  167. package/dist/userInput-VHNBN2MW.js.map +7 -0
  168. package/dist/uuid-QN2CNKKN.js +9 -0
  169. package/dist/uuid-QN2CNKKN.js.map +7 -0
  170. package/package.json +43 -14
  171. package/scripts/binary-utils.cjs +62 -0
  172. package/scripts/cli-acp-wrapper.cjs +82 -0
  173. package/scripts/cli-wrapper.cjs +105 -0
  174. package/scripts/postinstall.js +135 -9
  175. package/LICENSE +0 -201
  176. package/README.zh-CN.md +0 -312
  177. package/dist/ProjectOnboarding.js +0 -99
  178. package/dist/ProjectOnboarding.js.map +0 -7
  179. package/dist/Tool.js +0 -1
  180. package/dist/commands/agents.js +0 -2087
  181. package/dist/commands/agents.js.map +0 -7
  182. package/dist/commands/approvedTools.js +0 -36
  183. package/dist/commands/approvedTools.js.map +0 -7
  184. package/dist/commands/bug.js +0 -21
  185. package/dist/commands/bug.js.map +0 -7
  186. package/dist/commands/clear.js +0 -37
  187. package/dist/commands/clear.js.map +0 -7
  188. package/dist/commands/compact.js +0 -104
  189. package/dist/commands/compact.js.map +0 -7
  190. package/dist/commands/config.js +0 -20
  191. package/dist/commands/config.js.map +0 -7
  192. package/dist/commands/cost.js +0 -19
  193. package/dist/commands/cost.js.map +0 -7
  194. package/dist/commands/ctx_viz.js +0 -152
  195. package/dist/commands/ctx_viz.js.map +0 -7
  196. package/dist/commands/doctor.js +0 -25
  197. package/dist/commands/doctor.js.map +0 -7
  198. package/dist/commands/help.js +0 -20
  199. package/dist/commands/help.js.map +0 -7
  200. package/dist/commands/init.js +0 -38
  201. package/dist/commands/init.js.map +0 -7
  202. package/dist/commands/listen.js +0 -37
  203. package/dist/commands/listen.js.map +0 -7
  204. package/dist/commands/login.js +0 -37
  205. package/dist/commands/login.js.map +0 -7
  206. package/dist/commands/logout.js +0 -33
  207. package/dist/commands/logout.js.map +0 -7
  208. package/dist/commands/mcp.js +0 -34
  209. package/dist/commands/mcp.js.map +0 -7
  210. package/dist/commands/model.js +0 -41
  211. package/dist/commands/model.js.map +0 -7
  212. package/dist/commands/modelstatus.js +0 -21
  213. package/dist/commands/modelstatus.js.map +0 -7
  214. package/dist/commands/onboarding.js +0 -36
  215. package/dist/commands/onboarding.js.map +0 -7
  216. package/dist/commands/pr_comments.js +0 -61
  217. package/dist/commands/pr_comments.js.map +0 -7
  218. package/dist/commands/refreshCommands.js +0 -37
  219. package/dist/commands/refreshCommands.js.map +0 -7
  220. package/dist/commands/release-notes.js +0 -30
  221. package/dist/commands/release-notes.js.map +0 -7
  222. package/dist/commands/resume.js +0 -35
  223. package/dist/commands/resume.js.map +0 -7
  224. package/dist/commands/review.js +0 -51
  225. package/dist/commands/review.js.map +0 -7
  226. package/dist/commands/terminalSetup.js +0 -163
  227. package/dist/commands/terminalSetup.js.map +0 -7
  228. package/dist/commands.js +0 -84
  229. package/dist/commands.js.map +0 -7
  230. package/dist/components/ApproveApiKey.js +0 -74
  231. package/dist/components/ApproveApiKey.js.map +0 -7
  232. package/dist/components/AsciiLogo.js +0 -12
  233. package/dist/components/AsciiLogo.js.map +0 -7
  234. package/dist/components/AutoUpdater.js +0 -74
  235. package/dist/components/AutoUpdater.js.map +0 -7
  236. package/dist/components/Bug.js +0 -147
  237. package/dist/components/Bug.js.map +0 -7
  238. package/dist/components/Config.js +0 -166
  239. package/dist/components/Config.js.map +0 -7
  240. package/dist/components/ConsoleOAuthFlow.js +0 -188
  241. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  242. package/dist/components/Cost.js +0 -13
  243. package/dist/components/Cost.js.map +0 -7
  244. package/dist/components/CostThresholdDialog.js +0 -38
  245. package/dist/components/CostThresholdDialog.js.map +0 -7
  246. package/dist/components/CustomSelect/option-map.js +0 -32
  247. package/dist/components/CustomSelect/option-map.js.map +0 -7
  248. package/dist/components/CustomSelect/select-option.js +0 -34
  249. package/dist/components/CustomSelect/select-option.js.map +0 -7
  250. package/dist/components/CustomSelect/select.js +0 -64
  251. package/dist/components/CustomSelect/select.js.map +0 -7
  252. package/dist/components/CustomSelect/theme.js +0 -1
  253. package/dist/components/CustomSelect/use-select-state.js +0 -220
  254. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  255. package/dist/components/CustomSelect/use-select.js +0 -21
  256. package/dist/components/CustomSelect/use-select.js.map +0 -7
  257. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  258. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  259. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  260. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  261. package/dist/components/Help.js +0 -41
  262. package/dist/components/Help.js.map +0 -7
  263. package/dist/components/HighlightedCode.js +0 -30
  264. package/dist/components/HighlightedCode.js.map +0 -7
  265. package/dist/components/InvalidConfigDialog.js +0 -83
  266. package/dist/components/InvalidConfigDialog.js.map +0 -7
  267. package/dist/components/Link.js +0 -18
  268. package/dist/components/Link.js.map +0 -7
  269. package/dist/components/LogSelector.js +0 -50
  270. package/dist/components/LogSelector.js.map +0 -7
  271. package/dist/components/Logo.js +0 -94
  272. package/dist/components/Logo.js.map +0 -7
  273. package/dist/components/MCPServerApprovalDialog.js +0 -79
  274. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  275. package/dist/components/MCPServerDialogCopy.js +0 -11
  276. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  277. package/dist/components/MCPServerMultiselectDialog.js +0 -80
  278. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  279. package/dist/components/Message.js +0 -146
  280. package/dist/components/Message.js.map +0 -7
  281. package/dist/components/MessageResponse.js +0 -9
  282. package/dist/components/MessageResponse.js.map +0 -7
  283. package/dist/components/MessageSelector.js +0 -133
  284. package/dist/components/MessageSelector.js.map +0 -7
  285. package/dist/components/ModeIndicator.js +0 -38
  286. package/dist/components/ModeIndicator.js.map +0 -7
  287. package/dist/components/ModelConfig.js +0 -208
  288. package/dist/components/ModelConfig.js.map +0 -7
  289. package/dist/components/ModelListManager.js +0 -140
  290. package/dist/components/ModelListManager.js.map +0 -7
  291. package/dist/components/ModelSelector.js +0 -1985
  292. package/dist/components/ModelSelector.js.map +0 -7
  293. package/dist/components/ModelStatusDisplay.js +0 -87
  294. package/dist/components/ModelStatusDisplay.js.map +0 -7
  295. package/dist/components/Onboarding.js +0 -153
  296. package/dist/components/Onboarding.js.map +0 -7
  297. package/dist/components/PressEnterToContinue.js +0 -10
  298. package/dist/components/PressEnterToContinue.js.map +0 -7
  299. package/dist/components/PromptInput.js +0 -488
  300. package/dist/components/PromptInput.js.map +0 -7
  301. package/dist/components/SentryErrorBoundary.js +0 -27
  302. package/dist/components/SentryErrorBoundary.js.map +0 -7
  303. package/dist/components/Spinner.js +0 -101
  304. package/dist/components/Spinner.js.map +0 -7
  305. package/dist/components/StickerRequestForm.js +0 -7
  306. package/dist/components/StickerRequestForm.js.map +0 -7
  307. package/dist/components/StructuredDiff.js +0 -148
  308. package/dist/components/StructuredDiff.js.map +0 -7
  309. package/dist/components/TextInput.js +0 -100
  310. package/dist/components/TextInput.js.map +0 -7
  311. package/dist/components/TodoItem.js +0 -35
  312. package/dist/components/TodoItem.js.map +0 -7
  313. package/dist/components/TokenWarning.js +0 -19
  314. package/dist/components/TokenWarning.js.map +0 -7
  315. package/dist/components/ToolUseLoader.js +0 -24
  316. package/dist/components/ToolUseLoader.js.map +0 -7
  317. package/dist/components/TrustDialog.js +0 -76
  318. package/dist/components/TrustDialog.js.map +0 -7
  319. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  320. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  321. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -94
  322. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  323. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -139
  324. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  325. package/dist/components/binary-feedback/utils.js +0 -161
  326. package/dist/components/binary-feedback/utils.js.map +0 -7
  327. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  328. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  329. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  330. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  331. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  332. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  333. package/dist/components/messages/AssistantTextMessage.js +0 -78
  334. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  335. package/dist/components/messages/AssistantThinkingMessage.js +0 -27
  336. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  337. package/dist/components/messages/AssistantToolUseMessage.js +0 -91
  338. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  339. package/dist/components/messages/TaskProgressMessage.js +0 -11
  340. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  341. package/dist/components/messages/TaskToolMessage.js +0 -39
  342. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  343. package/dist/components/messages/UserBashInputMessage.js +0 -18
  344. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  345. package/dist/components/messages/UserCommandMessage.js +0 -20
  346. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  347. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  348. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  349. package/dist/components/messages/UserPromptMessage.js +0 -20
  350. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  351. package/dist/components/messages/UserTextMessage.js +0 -25
  352. package/dist/components/messages/UserTextMessage.js.map +0 -7
  353. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -10
  354. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  355. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  356. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  357. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -25
  358. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  359. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -47
  360. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  361. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -23
  362. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  363. package/dist/components/messages/UserToolResultMessage/utils.js +0 -42
  364. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  365. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  366. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  367. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  368. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  369. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  370. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  371. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  372. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  373. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  374. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  375. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  376. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  377. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  378. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  379. package/dist/components/permissions/PermissionRequest.js +0 -70
  380. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  381. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  382. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  383. package/dist/components/permissions/hooks.js +0 -28
  384. package/dist/components/permissions/hooks.js.map +0 -7
  385. package/dist/components/permissions/toolUseOptions.js +0 -46
  386. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  387. package/dist/components/permissions/utils.js +0 -21
  388. package/dist/components/permissions/utils.js.map +0 -7
  389. package/dist/constants/betas.js +0 -11
  390. package/dist/constants/betas.js.map +0 -7
  391. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  392. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  393. package/dist/constants/figures.js +0 -6
  394. package/dist/constants/figures.js.map +0 -7
  395. package/dist/constants/keys.js +0 -7
  396. package/dist/constants/keys.js.map +0 -7
  397. package/dist/constants/macros.js +0 -13
  398. package/dist/constants/macros.js.map +0 -7
  399. package/dist/constants/modelCapabilities.js +0 -154
  400. package/dist/constants/modelCapabilities.js.map +0 -7
  401. package/dist/constants/models.js +0 -1034
  402. package/dist/constants/models.js.map +0 -7
  403. package/dist/constants/oauth.js +0 -18
  404. package/dist/constants/oauth.js.map +0 -7
  405. package/dist/constants/product.js +0 -26
  406. package/dist/constants/product.js.map +0 -7
  407. package/dist/constants/prompts.js +0 -168
  408. package/dist/constants/prompts.js.map +0 -7
  409. package/dist/constants/releaseNotes.js +0 -9
  410. package/dist/constants/releaseNotes.js.map +0 -7
  411. package/dist/context/PermissionContext.js +0 -111
  412. package/dist/context/PermissionContext.js.map +0 -7
  413. package/dist/context.js +0 -259
  414. package/dist/context.js.map +0 -7
  415. package/dist/cost-tracker.js.map +0 -7
  416. package/dist/entrypoints/cli.js +0 -1107
  417. package/dist/entrypoints/cli.js.map +0 -7
  418. package/dist/entrypoints/mcp.js +0 -150
  419. package/dist/entrypoints/mcp.js.map +0 -7
  420. package/dist/history.js +0 -25
  421. package/dist/history.js.map +0 -7
  422. package/dist/hooks/useApiKeyVerification.js +0 -12
  423. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  424. package/dist/hooks/useArrowKeyHistory.js +0 -50
  425. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  426. package/dist/hooks/useCanUseTool.js +0 -112
  427. package/dist/hooks/useCanUseTool.js.map +0 -7
  428. package/dist/hooks/useCancelRequest.js +0 -30
  429. package/dist/hooks/useCancelRequest.js.map +0 -7
  430. package/dist/hooks/useDoublePress.js +0 -31
  431. package/dist/hooks/useDoublePress.js.map +0 -7
  432. package/dist/hooks/useExitOnCtrlCD.js +0 -26
  433. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  434. package/dist/hooks/useInterval.js +0 -18
  435. package/dist/hooks/useInterval.js.map +0 -7
  436. package/dist/hooks/useLogMessages.js +0 -14
  437. package/dist/hooks/useLogMessages.js.map +0 -7
  438. package/dist/hooks/useLogStartupTime.js +0 -15
  439. package/dist/hooks/useLogStartupTime.js.map +0 -7
  440. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  441. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  442. package/dist/hooks/usePermissionRequestLogging.js +0 -28
  443. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  444. package/dist/hooks/useTerminalSize.js +0 -38
  445. package/dist/hooks/useTerminalSize.js.map +0 -7
  446. package/dist/hooks/useTextInput.js +0 -250
  447. package/dist/hooks/useTextInput.js.map +0 -7
  448. package/dist/hooks/useUnifiedCompletion.js +0 -929
  449. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  450. package/dist/messages.js +0 -33
  451. package/dist/messages.js.map +0 -7
  452. package/dist/permissions.js +0 -194
  453. package/dist/permissions.js.map +0 -7
  454. package/dist/query.js +0 -492
  455. package/dist/query.js.map +0 -7
  456. package/dist/screens/ConfigureNpmPrefix.js +0 -128
  457. package/dist/screens/ConfigureNpmPrefix.js.map +0 -7
  458. package/dist/screens/Doctor.js +0 -22
  459. package/dist/screens/Doctor.js.map +0 -7
  460. package/dist/screens/LogList.js +0 -55
  461. package/dist/screens/LogList.js.map +0 -7
  462. package/dist/screens/REPL.js +0 -593
  463. package/dist/screens/REPL.js.map +0 -7
  464. package/dist/screens/ResumeConversation.js +0 -56
  465. package/dist/screens/ResumeConversation.js.map +0 -7
  466. package/dist/services/adapters/base.js +0 -29
  467. package/dist/services/adapters/base.js.map +0 -7
  468. package/dist/services/adapters/chatCompletions.js +0 -69
  469. package/dist/services/adapters/chatCompletions.js.map +0 -7
  470. package/dist/services/adapters/responsesAPI.js +0 -126
  471. package/dist/services/adapters/responsesAPI.js.map +0 -7
  472. package/dist/services/browserMocks.js +0 -48
  473. package/dist/services/browserMocks.js.map +0 -7
  474. package/dist/services/claude.js +0 -1605
  475. package/dist/services/claude.js.map +0 -7
  476. package/dist/services/customCommands.js +0 -359
  477. package/dist/services/customCommands.js.map +0 -7
  478. package/dist/services/fileFreshness.js +0 -280
  479. package/dist/services/fileFreshness.js.map +0 -7
  480. package/dist/services/gpt5ConnectionTest.js +0 -248
  481. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  482. package/dist/services/mcpClient.js +0 -435
  483. package/dist/services/mcpClient.js.map +0 -7
  484. package/dist/services/mcpServerApproval.js +0 -55
  485. package/dist/services/mcpServerApproval.js.map +0 -7
  486. package/dist/services/mentionProcessor.js.map +0 -7
  487. package/dist/services/modelAdapterFactory.js +0 -47
  488. package/dist/services/modelAdapterFactory.js.map +0 -7
  489. package/dist/services/notifier.js +0 -35
  490. package/dist/services/notifier.js.map +0 -7
  491. package/dist/services/oauth.js +0 -259
  492. package/dist/services/oauth.js.map +0 -7
  493. package/dist/services/openai.js.map +0 -7
  494. package/dist/services/responseStateManager.js +0 -68
  495. package/dist/services/responseStateManager.js.map +0 -7
  496. package/dist/services/sentry.js +0 -9
  497. package/dist/services/sentry.js.map +0 -7
  498. package/dist/services/statsig.js +0 -112
  499. package/dist/services/statsig.js.map +0 -7
  500. package/dist/services/statsigStorage.js +0 -75
  501. package/dist/services/statsigStorage.js.map +0 -7
  502. package/dist/services/systemReminder.js.map +0 -7
  503. package/dist/services/vcr.js +0 -133
  504. package/dist/services/vcr.js.map +0 -7
  505. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -119
  506. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  507. package/dist/tools/ArchitectTool/prompt.js +0 -18
  508. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  509. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -423
  510. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  511. package/dist/tools/BashTool/BashTool.js +0 -188
  512. package/dist/tools/BashTool/BashTool.js.map +0 -7
  513. package/dist/tools/BashTool/BashToolResultMessage.js +0 -21
  514. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  515. package/dist/tools/BashTool/OutputLine.js +0 -30
  516. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  517. package/dist/tools/BashTool/prompt.js +0 -179
  518. package/dist/tools/BashTool/prompt.js.map +0 -7
  519. package/dist/tools/BashTool/utils.js +0 -51
  520. package/dist/tools/BashTool/utils.js.map +0 -7
  521. package/dist/tools/FileEditTool/FileEditTool.js +0 -228
  522. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  523. package/dist/tools/FileEditTool/prompt.js +0 -54
  524. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  525. package/dist/tools/FileEditTool/utils.js +0 -42
  526. package/dist/tools/FileEditTool/utils.js.map +0 -7
  527. package/dist/tools/FileReadTool/FileReadTool.js +0 -272
  528. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  529. package/dist/tools/FileReadTool/prompt.js +0 -10
  530. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  531. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -204
  532. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  533. package/dist/tools/FileWriteTool/prompt.js +0 -14
  534. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  535. package/dist/tools/GlobTool/GlobTool.js +0 -88
  536. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  537. package/dist/tools/GlobTool/prompt.js +0 -12
  538. package/dist/tools/GlobTool/prompt.js.map +0 -7
  539. package/dist/tools/GrepTool/GrepTool.js +0 -107
  540. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  541. package/dist/tools/GrepTool/prompt.js +0 -15
  542. package/dist/tools/GrepTool/prompt.js.map +0 -7
  543. package/dist/tools/MCPTool/MCPTool.js +0 -90
  544. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  545. package/dist/tools/MCPTool/prompt.js +0 -7
  546. package/dist/tools/MCPTool/prompt.js.map +0 -7
  547. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -103
  548. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  549. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  550. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  551. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -77
  552. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  553. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  554. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  555. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -308
  556. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  557. package/dist/tools/MultiEditTool/prompt.js +0 -48
  558. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  559. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -238
  560. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  561. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  562. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  563. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -212
  564. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  565. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  566. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  567. package/dist/tools/StickerRequestTool/StickerRequestTool.js +0 -86
  568. package/dist/tools/StickerRequestTool/StickerRequestTool.js.map +0 -7
  569. package/dist/tools/StickerRequestTool/prompt.js +0 -23
  570. package/dist/tools/StickerRequestTool/prompt.js.map +0 -7
  571. package/dist/tools/TaskTool/TaskTool.js +0 -351
  572. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  573. package/dist/tools/TaskTool/constants.js +0 -5
  574. package/dist/tools/TaskTool/constants.js.map +0 -7
  575. package/dist/tools/TaskTool/prompt.js +0 -82
  576. package/dist/tools/TaskTool/prompt.js.map +0 -7
  577. package/dist/tools/ThinkTool/ThinkTool.js +0 -48
  578. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  579. package/dist/tools/ThinkTool/prompt.js +0 -16
  580. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  581. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -216
  582. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  583. package/dist/tools/TodoWriteTool/prompt.js +0 -66
  584. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  585. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -137
  586. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  587. package/dist/tools/URLFetcherTool/cache.js +0 -45
  588. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  589. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -42
  590. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  591. package/dist/tools/URLFetcherTool/prompt.js +0 -22
  592. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  593. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -86
  594. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  595. package/dist/tools/WebSearchTool/prompt.js +0 -17
  596. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  597. package/dist/tools/WebSearchTool/searchProviders.js +0 -48
  598. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  599. package/dist/tools/lsTool/lsTool.js +0 -201
  600. package/dist/tools/lsTool/lsTool.js.map +0 -7
  601. package/dist/tools/lsTool/prompt.js +0 -5
  602. package/dist/tools/lsTool/prompt.js.map +0 -7
  603. package/dist/tools.js +0 -64
  604. package/dist/tools.js.map +0 -7
  605. package/dist/types/PermissionMode.js +0 -82
  606. package/dist/types/PermissionMode.js.map +0 -7
  607. package/dist/types/RequestContext.js +0 -47
  608. package/dist/types/RequestContext.js.map +0 -7
  609. package/dist/types/common.d.js +0 -1
  610. package/dist/types/conversation.js +0 -1
  611. package/dist/types/logs.js +0 -1
  612. package/dist/types/modelCapabilities.js +0 -1
  613. package/dist/types/notebook.js +0 -1
  614. package/dist/utils/Cursor.js +0 -313
  615. package/dist/utils/Cursor.js.map +0 -7
  616. package/dist/utils/PersistentShell.js +0 -382
  617. package/dist/utils/PersistentShell.js.map +0 -7
  618. package/dist/utils/advancedFuzzyMatcher.js +0 -206
  619. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  620. package/dist/utils/agentLoader.js +0 -199
  621. package/dist/utils/agentLoader.js.map +0 -7
  622. package/dist/utils/agentStorage.js +0 -59
  623. package/dist/utils/agentStorage.js.map +0 -7
  624. package/dist/utils/array.js +0 -7
  625. package/dist/utils/array.js.map +0 -7
  626. package/dist/utils/ask.js +0 -77
  627. package/dist/utils/ask.js.map +0 -7
  628. package/dist/utils/auth.js +0 -11
  629. package/dist/utils/auth.js.map +0 -7
  630. package/dist/utils/autoCompactCore.js +0 -149
  631. package/dist/utils/autoCompactCore.js.map +0 -7
  632. package/dist/utils/autoUpdater.js.map +0 -7
  633. package/dist/utils/betas.js +0 -21
  634. package/dist/utils/betas.js.map +0 -7
  635. package/dist/utils/browser.js +0 -15
  636. package/dist/utils/browser.js.map +0 -7
  637. package/dist/utils/cleanup.js +0 -54
  638. package/dist/utils/cleanup.js.map +0 -7
  639. package/dist/utils/commands.js +0 -207
  640. package/dist/utils/commands.js.map +0 -7
  641. package/dist/utils/commonUnixCommands.js +0 -687
  642. package/dist/utils/commonUnixCommands.js.map +0 -7
  643. package/dist/utils/config.js.map +0 -7
  644. package/dist/utils/conversationRecovery.js +0 -35
  645. package/dist/utils/conversationRecovery.js.map +0 -7
  646. package/dist/utils/debugLogger.js.map +0 -7
  647. package/dist/utils/diff.js +0 -32
  648. package/dist/utils/diff.js.map +0 -7
  649. package/dist/utils/env.js +0 -44
  650. package/dist/utils/env.js.map +0 -7
  651. package/dist/utils/errors.js +0 -23
  652. package/dist/utils/errors.js.map +0 -7
  653. package/dist/utils/exampleCommands.js +0 -80
  654. package/dist/utils/exampleCommands.js.map +0 -7
  655. package/dist/utils/execFileNoThrow.js +0 -44
  656. package/dist/utils/execFileNoThrow.js.map +0 -7
  657. package/dist/utils/expertChatStorage.js +0 -78
  658. package/dist/utils/expertChatStorage.js.map +0 -7
  659. package/dist/utils/file.js +0 -282
  660. package/dist/utils/file.js.map +0 -7
  661. package/dist/utils/fileRecoveryCore.js +0 -41
  662. package/dist/utils/fileRecoveryCore.js.map +0 -7
  663. package/dist/utils/format.js +0 -41
  664. package/dist/utils/format.js.map +0 -7
  665. package/dist/utils/fuzzyMatcher.js +0 -252
  666. package/dist/utils/fuzzyMatcher.js.map +0 -7
  667. package/dist/utils/generators.js +0 -46
  668. package/dist/utils/generators.js.map +0 -7
  669. package/dist/utils/git.js +0 -83
  670. package/dist/utils/git.js.map +0 -7
  671. package/dist/utils/globalLogger.js +0 -54
  672. package/dist/utils/globalLogger.js.map +0 -7
  673. package/dist/utils/http.js +0 -7
  674. package/dist/utils/http.js.map +0 -7
  675. package/dist/utils/imagePaste.js +0 -29
  676. package/dist/utils/imagePaste.js.map +0 -7
  677. package/dist/utils/json.js +0 -16
  678. package/dist/utils/json.js.map +0 -7
  679. package/dist/utils/log.js +0 -298
  680. package/dist/utils/log.js.map +0 -7
  681. package/dist/utils/markdown.js +0 -187
  682. package/dist/utils/markdown.js.map +0 -7
  683. package/dist/utils/messageContextManager.js +0 -195
  684. package/dist/utils/messageContextManager.js.map +0 -7
  685. package/dist/utils/messages.js +0 -633
  686. package/dist/utils/messages.js.map +0 -7
  687. package/dist/utils/model.js.map +0 -7
  688. package/dist/utils/permissions/filesystem.js +0 -80
  689. package/dist/utils/permissions/filesystem.js.map +0 -7
  690. package/dist/utils/responseState.js +0 -20
  691. package/dist/utils/responseState.js.map +0 -7
  692. package/dist/utils/ripgrep.js +0 -131
  693. package/dist/utils/ripgrep.js.map +0 -7
  694. package/dist/utils/secureFile.js +0 -483
  695. package/dist/utils/secureFile.js.map +0 -7
  696. package/dist/utils/sessionState.js +0 -31
  697. package/dist/utils/sessionState.js.map +0 -7
  698. package/dist/utils/state.js +0 -24
  699. package/dist/utils/state.js.map +0 -7
  700. package/dist/utils/style.js +0 -31
  701. package/dist/utils/style.js.map +0 -7
  702. package/dist/utils/terminal.js +0 -43
  703. package/dist/utils/terminal.js.map +0 -7
  704. package/dist/utils/theme.js.map +0 -7
  705. package/dist/utils/thinking.js +0 -103
  706. package/dist/utils/thinking.js.map +0 -7
  707. package/dist/utils/todoStorage.js +0 -291
  708. package/dist/utils/todoStorage.js.map +0 -7
  709. package/dist/utils/tokens.js +0 -30
  710. package/dist/utils/tokens.js.map +0 -7
  711. package/dist/utils/toolExecutionController.js +0 -109
  712. package/dist/utils/toolExecutionController.js.map +0 -7
  713. package/dist/utils/unaryLogging.js +0 -14
  714. package/dist/utils/unaryLogging.js.map +0 -7
  715. package/dist/utils/user.js +0 -40
  716. package/dist/utils/user.js.map +0 -7
  717. package/dist/utils/validate.js +0 -132
  718. package/dist/utils/validate.js.map +0 -7
  719. /package/dist/{Tool.js.map → REPL-GIU4ZIXM.js.map} +0 -0
  720. /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-DNRMJWFQ.js.map} +0 -0
  721. /package/dist/{types/common.d.js.map → chunk-JC6NCUG5.js.map} +0 -0
  722. /package/dist/{types/conversation.js.map → commands-TWH6PGVG.js.map} +0 -0
  723. /package/dist/{types/logs.js.map → config-6ZMBCL23.js.map} +0 -0
  724. /package/dist/{types/modelCapabilities.js.map → context-JQIOOI4W.js.map} +0 -0
  725. /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
@@ -1,929 +0,0 @@
1
- import { useState, useCallback, useEffect, useRef } from "react";
2
- import { useInput } from "ink";
3
- import { existsSync, statSync, readdirSync } from "fs";
4
- import { join, dirname, basename, resolve } from "path";
5
- import { getCwd } from "../utils/state.js";
6
- import { getActiveAgents } from "../utils/agentLoader.js";
7
- import { getModelManager } from "../utils/model.js";
8
- import { matchCommands } from "../utils/fuzzyMatcher.js";
9
- import {
10
- getCommonSystemCommands,
11
- getCommandPriority,
12
- getEssentialCommands,
13
- getMinimalFallbackCommands
14
- } from "../utils/commonUnixCommands.js";
15
- const INITIAL_STATE = {
16
- suggestions: [],
17
- selectedIndex: 0,
18
- isActive: false,
19
- context: null,
20
- preview: null,
21
- emptyDirMessage: "",
22
- suppressUntil: 0
23
- };
24
- function useUnifiedCompletion({
25
- input,
26
- cursorOffset,
27
- onInputChange,
28
- setCursorOffset,
29
- commands,
30
- onSubmit
31
- }) {
32
- const [state, setState] = useState(INITIAL_STATE);
33
- const updateState = useCallback((updates) => {
34
- setState((prev) => ({ ...prev, ...updates }));
35
- }, []);
36
- const resetCompletion = useCallback(() => {
37
- setState((prev) => ({
38
- ...prev,
39
- suggestions: [],
40
- selectedIndex: 0,
41
- isActive: false,
42
- context: null,
43
- preview: null,
44
- emptyDirMessage: ""
45
- }));
46
- }, []);
47
- const activateCompletion = useCallback((suggestions2, context) => {
48
- setState((prev) => ({
49
- ...prev,
50
- suggestions: suggestions2,
51
- // Keep the order from generateSuggestions (already sorted with weights)
52
- selectedIndex: 0,
53
- isActive: true,
54
- context,
55
- preview: null
56
- }));
57
- }, []);
58
- const { suggestions, selectedIndex, isActive, emptyDirMessage } = state;
59
- const findCommonPrefix = useCallback((suggestions2) => {
60
- if (suggestions2.length === 0) return "";
61
- if (suggestions2.length === 1) return suggestions2[0].value;
62
- let prefix = suggestions2[0].value;
63
- for (let i = 1; i < suggestions2.length; i++) {
64
- const str = suggestions2[i].value;
65
- let j = 0;
66
- while (j < prefix.length && j < str.length && prefix[j] === str[j]) {
67
- j++;
68
- }
69
- prefix = prefix.slice(0, j);
70
- if (prefix.length === 0) return "";
71
- }
72
- return prefix;
73
- }, []);
74
- const getWordAtCursor = useCallback(() => {
75
- if (!input) return null;
76
- let start = cursorOffset;
77
- while (start > 0) {
78
- const char = input[start - 1];
79
- if (/\s/.test(char)) break;
80
- if (char === "@" && start < cursorOffset) {
81
- start--;
82
- break;
83
- }
84
- if (char === "/") {
85
- const collectedSoFar = input.slice(start, cursorOffset);
86
- if (collectedSoFar.includes("/") || collectedSoFar.includes(".")) {
87
- start--;
88
- continue;
89
- }
90
- if (start > 1) {
91
- const prevChar = input[start - 2];
92
- if (prevChar === "." || prevChar === "~") {
93
- start--;
94
- continue;
95
- }
96
- }
97
- if (start === 1 || start > 1 && /\s/.test(input[start - 2])) {
98
- start--;
99
- break;
100
- }
101
- start--;
102
- continue;
103
- }
104
- if (char === "." && start > 0) {
105
- const nextChar = start < input.length ? input[start] : "";
106
- if (nextChar === "/" || nextChar === ".") {
107
- start--;
108
- continue;
109
- }
110
- }
111
- start--;
112
- }
113
- const word = input.slice(start, cursorOffset);
114
- if (!word) return null;
115
- if (word.startsWith("/")) {
116
- const beforeWord = input.slice(0, start).trim();
117
- const isCommand = beforeWord === "" && !word.includes("/", 1);
118
- return {
119
- type: isCommand ? "command" : "file",
120
- prefix: isCommand ? word.slice(1) : word,
121
- startPos: start,
122
- endPos: cursorOffset
123
- // Use cursor position as end
124
- };
125
- }
126
- if (word.startsWith("@")) {
127
- const content = word.slice(1);
128
- if (word.includes("@", 1)) {
129
- return null;
130
- }
131
- return {
132
- type: "agent",
133
- // This will trigger mixed agent+file completion
134
- prefix: content,
135
- startPos: start,
136
- endPos: cursorOffset
137
- // Use cursor position as end
138
- };
139
- }
140
- return {
141
- type: "file",
142
- prefix: word,
143
- startPos: start,
144
- endPos: cursorOffset
145
- // Use cursor position as end
146
- };
147
- }, [input, cursorOffset]);
148
- const [systemCommands, setSystemCommands] = useState([]);
149
- const [isLoadingCommands, setIsLoadingCommands] = useState(false);
150
- const classifyCommand = useCallback((cmd) => {
151
- const lowerCmd = cmd.toLowerCase();
152
- let score = 0;
153
- if (cmd.length <= 4) score += 40;
154
- else if (cmd.length <= 6) score += 20;
155
- else if (cmd.length <= 8) score += 10;
156
- else if (cmd.length > 15) score -= 30;
157
- if (/^[a-z]+$/.test(lowerCmd)) score += 30;
158
- if (/[A-Z]/.test(cmd)) score -= 15;
159
- if (/\d/.test(cmd)) score -= 20;
160
- if (cmd.includes(".")) score -= 25;
161
- if (cmd.includes("-")) score -= 10;
162
- if (cmd.includes("_")) score -= 15;
163
- const commonWords = ["list", "copy", "move", "find", "print", "show", "edit", "view"];
164
- if (commonWords.some((word) => lowerCmd.includes(word.slice(0, 3)))) score += 25;
165
- const devPrefixes = ["git", "npm", "node", "py", "docker", "kubectl"];
166
- if (devPrefixes.some((prefix) => lowerCmd.startsWith(prefix))) score += 15;
167
- const systemIndicators = ["daemon", "helper", "responder", "service", "d$", "ctl$"];
168
- if (systemIndicators.some(
169
- (indicator) => indicator.endsWith("$") ? lowerCmd.endsWith(indicator.slice(0, -1)) : lowerCmd.includes(indicator)
170
- )) score -= 40;
171
- if (/\.(pl|py|sh|rb|js)$/.test(lowerCmd)) score -= 35;
172
- const buildToolPatterns = ["bindep", "render", "mako", "webpack", "babel", "eslint"];
173
- if (buildToolPatterns.some((pattern) => lowerCmd.includes(pattern))) score -= 25;
174
- const vowelRatio = (lowerCmd.match(/[aeiou]/g) || []).length / lowerCmd.length;
175
- if (vowelRatio < 0.2) score += 15;
176
- if (vowelRatio > 0.5) score -= 10;
177
- if (score >= 50) return "core";
178
- if (score >= 20) return "common";
179
- if (score >= -10) return "dev";
180
- return "system";
181
- }, []);
182
- const loadSystemCommands = useCallback(async () => {
183
- if (systemCommands.length > 0 || isLoadingCommands) return;
184
- setIsLoadingCommands(true);
185
- try {
186
- const { readdirSync: readdirSync2, statSync: statSync2 } = await import("fs");
187
- const pathDirs = (process.env.PATH || "").split(":").filter(Boolean);
188
- const commandSet = /* @__PURE__ */ new Set();
189
- const essentialCommands = getEssentialCommands();
190
- essentialCommands.forEach((cmd) => commandSet.add(cmd));
191
- for (const dir of pathDirs) {
192
- try {
193
- if (readdirSync2 && statSync2) {
194
- const entries = readdirSync2(dir);
195
- for (const entry of entries) {
196
- try {
197
- const fullPath = `${dir}/${entry}`;
198
- const stats = statSync2(fullPath);
199
- if (stats.isFile() && (stats.mode & 73) !== 0) {
200
- commandSet.add(entry);
201
- }
202
- } catch {
203
- }
204
- }
205
- }
206
- } catch {
207
- }
208
- }
209
- const commands2 = Array.from(commandSet).sort();
210
- setSystemCommands(commands2);
211
- } catch (error) {
212
- console.warn("Failed to load system commands, using fallback:", error);
213
- setSystemCommands(getMinimalFallbackCommands());
214
- } finally {
215
- setIsLoadingCommands(false);
216
- }
217
- }, [systemCommands.length, isLoadingCommands]);
218
- useEffect(() => {
219
- loadSystemCommands();
220
- }, [loadSystemCommands]);
221
- const generateCommandSuggestions = useCallback((prefix) => {
222
- const filteredCommands = commands.filter((cmd) => !cmd.isHidden);
223
- if (!prefix) {
224
- return filteredCommands.map((cmd) => ({
225
- value: cmd.userFacingName(),
226
- displayValue: `/${cmd.userFacingName()}`,
227
- type: "command",
228
- score: 100
229
- }));
230
- }
231
- return filteredCommands.filter((cmd) => {
232
- const names = [cmd.userFacingName(), ...cmd.aliases || []];
233
- return names.some((name) => name.toLowerCase().startsWith(prefix.toLowerCase()));
234
- }).map((cmd) => ({
235
- value: cmd.userFacingName(),
236
- displayValue: `/${cmd.userFacingName()}`,
237
- type: "command",
238
- score: 100 - prefix.length + (cmd.userFacingName().startsWith(prefix) ? 10 : 0)
239
- }));
240
- }, [commands]);
241
- const calculateUnixCommandScore = useCallback((cmd, prefix) => {
242
- const result = matchCommands([cmd], prefix);
243
- return result.length > 0 ? result[0].score : 0;
244
- }, []);
245
- const generateUnixCommandSuggestions = useCallback((prefix) => {
246
- if (!prefix) return [];
247
- if (isLoadingCommands) {
248
- return [{
249
- value: "loading...",
250
- displayValue: `\u23F3 Loading system commands...`,
251
- type: "file",
252
- score: 0,
253
- metadata: { isLoading: true }
254
- }];
255
- }
256
- const commonCommands = getCommonSystemCommands(systemCommands);
257
- const uniqueCommands = Array.from(new Set(commonCommands));
258
- const matches = matchCommands(uniqueCommands, prefix);
259
- const boostedMatches = matches.map((match) => {
260
- const priority = getCommandPriority(match.command);
261
- return {
262
- ...match,
263
- score: match.score + priority * 0.5
264
- // Add priority boost
265
- };
266
- }).sort((a, b) => b.score - a.score);
267
- let results = boostedMatches.slice(0, 8);
268
- const perfectMatches = boostedMatches.filter((m) => m.score >= 900);
269
- if (perfectMatches.length > 0 && perfectMatches.length <= 3) {
270
- results = perfectMatches;
271
- } else if (boostedMatches.length > 8) {
272
- const goodMatches = boostedMatches.filter((m) => m.score >= 100);
273
- if (goodMatches.length <= 5) {
274
- results = goodMatches;
275
- }
276
- }
277
- return results.map((item) => ({
278
- value: item.command,
279
- displayValue: `$ ${item.command}`,
280
- type: "command",
281
- score: item.score,
282
- metadata: { isUnixCommand: true }
283
- }));
284
- }, [systemCommands, isLoadingCommands]);
285
- const [agentSuggestions, setAgentSuggestions] = useState([]);
286
- const [modelSuggestions, setModelSuggestions] = useState([]);
287
- useEffect(() => {
288
- try {
289
- const modelManager = getModelManager();
290
- const allModels = modelManager.getAllAvailableModelNames();
291
- const suggestions2 = allModels.map((modelId) => {
292
- return {
293
- value: `ask-${modelId}`,
294
- displayValue: `\u{1F99C} ask-${modelId} :: Consult ${modelId} for expert opinion and specialized analysis`,
295
- type: "ask",
296
- score: 90,
297
- // Higher than agents - put ask-models on top
298
- metadata: { modelId }
299
- };
300
- });
301
- setModelSuggestions(suggestions2);
302
- } catch (error) {
303
- console.warn("[useUnifiedCompletion] Failed to load models:", error);
304
- setModelSuggestions([]);
305
- }
306
- }, []);
307
- useEffect(() => {
308
- getActiveAgents().then((agents) => {
309
- const suggestions2 = agents.map((config) => {
310
- let shortDesc = config.whenToUse;
311
- const prefixPatterns = [
312
- /^Use this agent when you need (assistance with: )?/i,
313
- /^Use PROACTIVELY (when|to) /i,
314
- /^Specialized in /i,
315
- /^Implementation specialist for /i,
316
- /^Design validation specialist\.? Use PROACTIVELY to /i,
317
- /^Task validation specialist\.? Use PROACTIVELY to /i,
318
- /^Requirements validation specialist\.? Use PROACTIVELY to /i
319
- ];
320
- for (const pattern of prefixPatterns) {
321
- shortDesc = shortDesc.replace(pattern, "");
322
- }
323
- const findSmartBreak = (text, maxLength) => {
324
- if (text.length <= maxLength) return text;
325
- const sentenceEndings = /[.!。!]/;
326
- const firstSentenceMatch = text.search(sentenceEndings);
327
- if (firstSentenceMatch !== -1) {
328
- const firstSentence = text.slice(0, firstSentenceMatch).trim();
329
- if (firstSentence.length >= 5) {
330
- return firstSentence;
331
- }
332
- }
333
- if (text.length > maxLength) {
334
- const commaEndings = /[,,]/;
335
- const commas = [];
336
- let match;
337
- const regex = new RegExp(commaEndings, "g");
338
- while ((match = regex.exec(text)) !== null) {
339
- commas.push(match.index);
340
- }
341
- for (let i = commas.length - 1; i >= 0; i--) {
342
- const commaPos = commas[i];
343
- if (commaPos < maxLength) {
344
- const clause = text.slice(0, commaPos).trim();
345
- if (clause.length >= 5) {
346
- return clause;
347
- }
348
- }
349
- }
350
- }
351
- return text.slice(0, maxLength) + "...";
352
- };
353
- shortDesc = findSmartBreak(shortDesc.trim(), 80);
354
- if (!shortDesc || shortDesc.length < 5) {
355
- shortDesc = findSmartBreak(config.whenToUse, 80);
356
- }
357
- return {
358
- value: `run-agent-${config.agentType}`,
359
- displayValue: `\u{1F464} run-agent-${config.agentType} :: ${shortDesc}`,
360
- // 人类图标 + run-agent前缀 + 简洁描述
361
- type: "agent",
362
- score: 85,
363
- // Lower than ask-models
364
- metadata: config
365
- };
366
- });
367
- setAgentSuggestions(suggestions2);
368
- }).catch((error) => {
369
- console.warn("[useUnifiedCompletion] Failed to load agents:", error);
370
- setAgentSuggestions([]);
371
- });
372
- }, []);
373
- const generateMentionSuggestions = useCallback((prefix) => {
374
- const allSuggestions = [...agentSuggestions, ...modelSuggestions];
375
- if (!prefix) {
376
- return allSuggestions.sort((a, b) => {
377
- if (a.type === "ask" && b.type === "agent") return -1;
378
- if (a.type === "agent" && b.type === "ask") return 1;
379
- return b.score - a.score;
380
- });
381
- }
382
- const candidates = allSuggestions.map((s) => s.value);
383
- const matches = matchCommands(candidates, prefix);
384
- const fuzzyResults = matches.map((match) => {
385
- const suggestion = allSuggestions.find((s) => s.value === match.command);
386
- return {
387
- ...suggestion,
388
- score: match.score
389
- // Use fuzzy match score instead of simple scoring
390
- };
391
- }).sort((a, b) => {
392
- if (a.type === "ask" && b.type === "agent") return -1;
393
- if (a.type === "agent" && b.type === "ask") return 1;
394
- return b.score - a.score;
395
- });
396
- return fuzzyResults;
397
- }, [agentSuggestions, modelSuggestions]);
398
- const generateFileSuggestions = useCallback((prefix, isAtReference = false) => {
399
- try {
400
- const cwd = getCwd();
401
- const userPath = prefix || ".";
402
- const isAbsolutePath = userPath.startsWith("/");
403
- const isHomePath = userPath.startsWith("~");
404
- let searchPath;
405
- if (isHomePath) {
406
- searchPath = userPath.replace("~", process.env.HOME || "");
407
- } else if (isAbsolutePath) {
408
- searchPath = userPath;
409
- } else {
410
- searchPath = resolve(cwd, userPath);
411
- }
412
- const endsWithSlash = userPath.endsWith("/");
413
- const searchStat = existsSync(searchPath) ? statSync(searchPath) : null;
414
- let searchDir;
415
- let nameFilter;
416
- if (endsWithSlash || searchStat?.isDirectory()) {
417
- searchDir = searchPath;
418
- nameFilter = "";
419
- } else {
420
- searchDir = dirname(searchPath);
421
- nameFilter = basename(searchPath);
422
- }
423
- if (!existsSync(searchDir)) return [];
424
- const showHidden = nameFilter.startsWith(".") || userPath.includes("/.");
425
- const entries = readdirSync(searchDir).filter((entry) => {
426
- if (!showHidden && entry.startsWith(".")) return false;
427
- if (nameFilter && !entry.toLowerCase().startsWith(nameFilter.toLowerCase())) return false;
428
- return true;
429
- }).sort((a, b) => {
430
- const aPath = join(searchDir, a);
431
- const bPath = join(searchDir, b);
432
- const aIsDir = statSync(aPath).isDirectory();
433
- const bIsDir = statSync(bPath).isDirectory();
434
- if (aIsDir && !bIsDir) return -1;
435
- if (!aIsDir && bIsDir) return 1;
436
- return a.toLowerCase().localeCompare(b.toLowerCase());
437
- }).slice(0, 25);
438
- return entries.map((entry) => {
439
- const entryPath = join(searchDir, entry);
440
- const isDir = statSync(entryPath).isDirectory();
441
- const icon = isDir ? "\u{1F4C1}" : "\u{1F4C4}";
442
- let value;
443
- if (userPath.includes("/")) {
444
- if (endsWithSlash) {
445
- value = userPath + entry + (isDir ? "/" : "");
446
- } else if (searchStat?.isDirectory()) {
447
- value = userPath + "/" + entry + (isDir ? "/" : "");
448
- } else {
449
- const userDir = userPath.includes("/") ? userPath.substring(0, userPath.lastIndexOf("/")) : "";
450
- value = userDir ? userDir + "/" + entry + (isDir ? "/" : "") : entry + (isDir ? "/" : "");
451
- }
452
- } else {
453
- if (searchStat?.isDirectory()) {
454
- value = userPath + "/" + entry + (isDir ? "/" : "");
455
- } else {
456
- value = entry + (isDir ? "/" : "");
457
- }
458
- }
459
- return {
460
- value,
461
- displayValue: `${icon} ${entry}${isDir ? "/" : ""}`,
462
- type: "file",
463
- score: isDir ? 80 : 70
464
- };
465
- });
466
- } catch {
467
- return [];
468
- }
469
- }, []);
470
- const calculateMatchScore = useCallback((suggestion, prefix) => {
471
- const lowerPrefix = prefix.toLowerCase();
472
- const value = suggestion.value.toLowerCase();
473
- const displayValue = suggestion.displayValue.toLowerCase();
474
- let matchFound = false;
475
- let score = 0;
476
- if (value.startsWith(lowerPrefix)) {
477
- matchFound = true;
478
- score = 100;
479
- } else if (value.includes(lowerPrefix)) {
480
- matchFound = true;
481
- score = 95;
482
- } else if (displayValue.includes(lowerPrefix)) {
483
- matchFound = true;
484
- score = 90;
485
- } else {
486
- const words = value.split(/[-_]/);
487
- if (words.some((word) => word.startsWith(lowerPrefix))) {
488
- matchFound = true;
489
- score = 93;
490
- } else {
491
- const acronym = words.map((word) => word[0]).join("");
492
- if (acronym.startsWith(lowerPrefix)) {
493
- matchFound = true;
494
- score = 88;
495
- }
496
- }
497
- }
498
- if (!matchFound) return 0;
499
- if (suggestion.type === "ask") score += 2;
500
- if (suggestion.type === "agent") score += 1;
501
- return score;
502
- }, []);
503
- const generateSmartMentionSuggestions = useCallback((prefix, sourceContext = "file") => {
504
- if (!prefix || prefix.length < 2) return [];
505
- const allSuggestions = [...agentSuggestions, ...modelSuggestions];
506
- return allSuggestions.map((suggestion) => {
507
- const matchScore = calculateMatchScore(suggestion, prefix);
508
- if (matchScore === 0) return null;
509
- return {
510
- ...suggestion,
511
- score: matchScore,
512
- isSmartMatch: true,
513
- originalContext: sourceContext,
514
- // Only modify display for clarity, keep value clean
515
- displayValue: `\u{1F3AF} ${suggestion.displayValue}`
516
- };
517
- }).filter(Boolean).sort((a, b) => b.score - a.score).slice(0, 5);
518
- }, [agentSuggestions, modelSuggestions, calculateMatchScore]);
519
- const generateSuggestions = useCallback((context) => {
520
- switch (context.type) {
521
- case "command":
522
- return generateCommandSuggestions(context.prefix);
523
- case "agent": {
524
- const mentionSuggestions = generateMentionSuggestions(context.prefix);
525
- const fileSuggestions = generateFileSuggestions(context.prefix, true);
526
- const weightedSuggestions = [
527
- ...mentionSuggestions.map((s) => ({
528
- ...s,
529
- // In @ context, agents/models get high priority
530
- weightedScore: s.score + 150
531
- })),
532
- ...fileSuggestions.map((s) => ({
533
- ...s,
534
- // Files get lower priority but still visible
535
- weightedScore: s.score + 10
536
- // Small boost to ensure visibility
537
- }))
538
- ];
539
- return weightedSuggestions.sort((a, b) => b.weightedScore - a.weightedScore).map(({ weightedScore, ...suggestion }) => suggestion);
540
- }
541
- case "file": {
542
- const fileSuggestions = generateFileSuggestions(context.prefix, false);
543
- const unixSuggestions = generateUnixCommandSuggestions(context.prefix);
544
- const mentionMatches = generateMentionSuggestions(context.prefix).map((s) => ({
545
- ...s,
546
- isSmartMatch: true,
547
- // Show that @ will be added when selected
548
- displayValue: `\u2192 ${s.displayValue}`
549
- // Arrow to indicate it will transform
550
- }));
551
- const weightedSuggestions = [
552
- ...unixSuggestions.map((s) => ({
553
- ...s,
554
- // Unix commands get boost, but exact matches get huge boost
555
- sourceWeight: s.score >= 1e4 ? 5e3 : 200,
556
- // Exact match gets massive boost
557
- weightedScore: s.score >= 1e4 ? s.score + 5e3 : s.score + 200
558
- })),
559
- ...mentionMatches.map((s) => ({
560
- ...s,
561
- // Agents/models get medium priority boost (but less to avoid overriding exact Unix)
562
- sourceWeight: 50,
563
- weightedScore: s.score + 50
564
- })),
565
- ...fileSuggestions.map((s) => ({
566
- ...s,
567
- // Files get no boost (baseline)
568
- sourceWeight: 0,
569
- weightedScore: s.score
570
- }))
571
- ];
572
- const seen = /* @__PURE__ */ new Set();
573
- const deduplicatedResults = weightedSuggestions.sort((a, b) => b.weightedScore - a.weightedScore).filter((item) => {
574
- if (seen.has(item.value)) return false;
575
- seen.add(item.value);
576
- return true;
577
- }).map(({ weightedScore, sourceWeight, ...suggestion }) => suggestion);
578
- return deduplicatedResults;
579
- }
580
- default:
581
- return [];
582
- }
583
- }, [generateCommandSuggestions, generateMentionSuggestions, generateFileSuggestions, generateUnixCommandSuggestions, generateSmartMentionSuggestions]);
584
- const completeWith = useCallback((suggestion, context) => {
585
- let completion;
586
- if (context.type === "command") {
587
- completion = `/${suggestion.value} `;
588
- } else if (context.type === "agent") {
589
- if (suggestion.type === "agent") {
590
- completion = `@${suggestion.value} `;
591
- } else if (suggestion.type === "ask") {
592
- completion = `@${suggestion.value} `;
593
- } else {
594
- const isDirectory = suggestion.value.endsWith("/");
595
- completion = `@${suggestion.value}${isDirectory ? "" : " "}`;
596
- }
597
- } else {
598
- if (suggestion.isSmartMatch) {
599
- completion = `@${suggestion.value} `;
600
- } else {
601
- const isDirectory = suggestion.value.endsWith("/");
602
- completion = suggestion.value + (isDirectory ? "" : " ");
603
- }
604
- }
605
- let actualEndPos;
606
- if (context.type === "file" && suggestion.value.startsWith("/") && !suggestion.isSmartMatch) {
607
- let end = context.startPos;
608
- while (end < input.length && input[end] !== " " && input[end] !== "\n") {
609
- end++;
610
- }
611
- actualEndPos = end;
612
- } else {
613
- const currentWord = input.slice(context.startPos);
614
- const nextSpaceIndex = currentWord.indexOf(" ");
615
- actualEndPos = nextSpaceIndex === -1 ? input.length : context.startPos + nextSpaceIndex;
616
- }
617
- const newInput = input.slice(0, context.startPos) + completion + input.slice(actualEndPos);
618
- onInputChange(newInput);
619
- setCursorOffset(context.startPos + completion.length);
620
- }, [input, onInputChange, setCursorOffset, onSubmit, commands]);
621
- const partialComplete = useCallback((prefix, context) => {
622
- const completion = context.type === "command" ? `/${prefix}` : context.type === "agent" ? `@${prefix}` : prefix;
623
- const newInput = input.slice(0, context.startPos) + completion + input.slice(context.endPos);
624
- onInputChange(newInput);
625
- setCursorOffset(context.startPos + completion.length);
626
- }, [input, onInputChange, setCursorOffset]);
627
- useInput((input_str, key) => {
628
- if (!key.tab) return false;
629
- if (key.shift) return false;
630
- const context = getWordAtCursor();
631
- if (!context) return false;
632
- if (state.isActive && state.suggestions.length > 0) {
633
- const nextIndex = (state.selectedIndex + 1) % state.suggestions.length;
634
- const nextSuggestion = state.suggestions[nextIndex];
635
- if (state.context) {
636
- const currentWord = input.slice(state.context.startPos);
637
- const wordEnd = currentWord.search(/\s/);
638
- const actualEndPos = wordEnd === -1 ? input.length : state.context.startPos + wordEnd;
639
- let preview;
640
- if (state.context.type === "command") {
641
- preview = `/${nextSuggestion.value}`;
642
- } else if (state.context.type === "agent") {
643
- preview = `@${nextSuggestion.value}`;
644
- } else if (nextSuggestion.isSmartMatch) {
645
- preview = `@${nextSuggestion.value}`;
646
- } else {
647
- preview = nextSuggestion.value;
648
- }
649
- const newInput = input.slice(0, state.context.startPos) + preview + input.slice(actualEndPos);
650
- onInputChange(newInput);
651
- setCursorOffset(state.context.startPos + preview.length);
652
- updateState({
653
- selectedIndex: nextIndex,
654
- preview: {
655
- isActive: true,
656
- originalInput: input,
657
- wordRange: [state.context.startPos, state.context.startPos + preview.length]
658
- }
659
- });
660
- }
661
- return true;
662
- }
663
- const currentSuggestions = generateSuggestions(context);
664
- if (currentSuggestions.length === 0) {
665
- return false;
666
- } else if (currentSuggestions.length === 1) {
667
- completeWith(currentSuggestions[0], context);
668
- return true;
669
- } else {
670
- activateCompletion(currentSuggestions, context);
671
- const firstSuggestion = currentSuggestions[0];
672
- const currentWord = input.slice(context.startPos);
673
- const wordEnd = currentWord.search(/\s/);
674
- const actualEndPos = wordEnd === -1 ? input.length : context.startPos + wordEnd;
675
- let preview;
676
- if (context.type === "command") {
677
- preview = `/${firstSuggestion.value}`;
678
- } else if (context.type === "agent") {
679
- preview = `@${firstSuggestion.value}`;
680
- } else if (firstSuggestion.isSmartMatch) {
681
- preview = `@${firstSuggestion.value}`;
682
- } else {
683
- preview = firstSuggestion.value;
684
- }
685
- const newInput = input.slice(0, context.startPos) + preview + input.slice(actualEndPos);
686
- onInputChange(newInput);
687
- setCursorOffset(context.startPos + preview.length);
688
- updateState({
689
- preview: {
690
- isActive: true,
691
- originalInput: input,
692
- wordRange: [context.startPos, context.startPos + preview.length]
693
- }
694
- });
695
- return true;
696
- }
697
- });
698
- useInput((inputChar, key) => {
699
- if (key.return && state.isActive && state.suggestions.length > 0) {
700
- const selectedSuggestion = state.suggestions[state.selectedIndex];
701
- if (selectedSuggestion && state.context) {
702
- let completion;
703
- if (state.context.type === "command") {
704
- completion = `/${selectedSuggestion.value} `;
705
- } else if (state.context.type === "agent") {
706
- if (selectedSuggestion.type === "agent") {
707
- completion = `@${selectedSuggestion.value} `;
708
- } else if (selectedSuggestion.type === "ask") {
709
- completion = `@${selectedSuggestion.value} `;
710
- } else {
711
- completion = `@${selectedSuggestion.value} `;
712
- }
713
- } else if (selectedSuggestion.isSmartMatch) {
714
- completion = `@${selectedSuggestion.value} `;
715
- } else {
716
- completion = selectedSuggestion.value + " ";
717
- }
718
- const currentWord = input.slice(state.context.startPos);
719
- const nextSpaceIndex = currentWord.indexOf(" ");
720
- const actualEndPos = nextSpaceIndex === -1 ? input.length : state.context.startPos + nextSpaceIndex;
721
- const newInput = input.slice(0, state.context.startPos) + completion + input.slice(actualEndPos);
722
- onInputChange(newInput);
723
- setCursorOffset(state.context.startPos + completion.length);
724
- }
725
- resetCompletion();
726
- return true;
727
- }
728
- if (!state.isActive || state.suggestions.length === 0) return false;
729
- const handleNavigation = (newIndex) => {
730
- const preview = state.suggestions[newIndex].value;
731
- if (state.preview?.isActive && state.context) {
732
- const newInput = input.slice(0, state.context.startPos) + preview + input.slice(state.preview.wordRange[1]);
733
- onInputChange(newInput);
734
- setCursorOffset(state.context.startPos + preview.length);
735
- updateState({
736
- selectedIndex: newIndex,
737
- preview: {
738
- ...state.preview,
739
- wordRange: [state.context.startPos, state.context.startPos + preview.length]
740
- }
741
- });
742
- } else {
743
- updateState({ selectedIndex: newIndex });
744
- }
745
- };
746
- if (key.downArrow) {
747
- const nextIndex = (state.selectedIndex + 1) % state.suggestions.length;
748
- handleNavigation(nextIndex);
749
- return true;
750
- }
751
- if (key.upArrow) {
752
- const nextIndex = state.selectedIndex === 0 ? state.suggestions.length - 1 : state.selectedIndex - 1;
753
- handleNavigation(nextIndex);
754
- return true;
755
- }
756
- if (inputChar === " " && state.isActive && state.suggestions.length > 0) {
757
- const selectedSuggestion = state.suggestions[state.selectedIndex];
758
- const isDirectory = selectedSuggestion.value.endsWith("/");
759
- if (!state.context) return false;
760
- const currentWordAtContext = input.slice(
761
- state.context.startPos,
762
- state.context.startPos + selectedSuggestion.value.length
763
- );
764
- if (currentWordAtContext !== selectedSuggestion.value) {
765
- completeWith(selectedSuggestion, state.context);
766
- }
767
- resetCompletion();
768
- if (isDirectory) {
769
- setTimeout(() => {
770
- const newContext = {
771
- ...state.context,
772
- prefix: selectedSuggestion.value,
773
- endPos: state.context.startPos + selectedSuggestion.value.length
774
- };
775
- const newSuggestions = generateSuggestions(newContext);
776
- if (newSuggestions.length > 0) {
777
- activateCompletion(newSuggestions, newContext);
778
- } else {
779
- updateState({
780
- emptyDirMessage: `Directory is empty: ${selectedSuggestion.value}`
781
- });
782
- setTimeout(() => updateState({ emptyDirMessage: "" }), 3e3);
783
- }
784
- }, 50);
785
- }
786
- return true;
787
- }
788
- if (key.rightArrow) {
789
- const selectedSuggestion = state.suggestions[state.selectedIndex];
790
- const isDirectory = selectedSuggestion.value.endsWith("/");
791
- if (!state.context) return false;
792
- const currentWordAtContext = input.slice(
793
- state.context.startPos,
794
- state.context.startPos + selectedSuggestion.value.length
795
- );
796
- if (currentWordAtContext !== selectedSuggestion.value) {
797
- completeWith(selectedSuggestion, state.context);
798
- }
799
- resetCompletion();
800
- if (isDirectory) {
801
- setTimeout(() => {
802
- const newContext = {
803
- ...state.context,
804
- prefix: selectedSuggestion.value,
805
- endPos: state.context.startPos + selectedSuggestion.value.length
806
- };
807
- const newSuggestions = generateSuggestions(newContext);
808
- if (newSuggestions.length > 0) {
809
- activateCompletion(newSuggestions, newContext);
810
- } else {
811
- updateState({
812
- emptyDirMessage: `Directory is empty: ${selectedSuggestion.value}`
813
- });
814
- setTimeout(() => updateState({ emptyDirMessage: "" }), 3e3);
815
- }
816
- }, 50);
817
- }
818
- return true;
819
- }
820
- if (key.escape) {
821
- if (state.preview?.isActive && state.context) {
822
- onInputChange(state.preview.originalInput);
823
- setCursorOffset(state.context.startPos + state.context.prefix.length);
824
- }
825
- resetCompletion();
826
- return true;
827
- }
828
- return false;
829
- });
830
- useInput((input_str, key) => {
831
- if (key.backspace || key.delete) {
832
- if (state.isActive) {
833
- resetCompletion();
834
- const suppressionTime = input.length > 10 ? 200 : 100;
835
- updateState({
836
- suppressUntil: Date.now() + suppressionTime
837
- });
838
- return true;
839
- }
840
- }
841
- return false;
842
- });
843
- const lastInputRef = useRef("");
844
- useEffect(() => {
845
- if (lastInputRef.current === input) return;
846
- const inputLengthChange = Math.abs(input.length - lastInputRef.current.length);
847
- const isHistoryNavigation = (inputLengthChange > 10 || // Large content change
848
- inputLengthChange > 5 && !input.includes(lastInputRef.current.slice(-5))) && input !== lastInputRef.current;
849
- lastInputRef.current = input;
850
- if (state.preview?.isActive || Date.now() < state.suppressUntil) {
851
- return;
852
- }
853
- if (isHistoryNavigation && state.isActive) {
854
- resetCompletion();
855
- return;
856
- }
857
- const context = getWordAtCursor();
858
- if (context && shouldAutoTrigger(context)) {
859
- const newSuggestions = generateSuggestions(context);
860
- if (newSuggestions.length === 0) {
861
- resetCompletion();
862
- } else if (newSuggestions.length === 1 && shouldAutoHideSingleMatch(newSuggestions[0], context)) {
863
- resetCompletion();
864
- } else {
865
- activateCompletion(newSuggestions, context);
866
- }
867
- } else if (state.context) {
868
- const contextChanged = !context || state.context.type !== context.type || state.context.startPos !== context.startPos || !context.prefix.startsWith(state.context.prefix);
869
- if (contextChanged) {
870
- resetCompletion();
871
- }
872
- }
873
- }, [input, cursorOffset]);
874
- const shouldAutoTrigger = useCallback((context) => {
875
- switch (context.type) {
876
- case "command":
877
- return true;
878
- case "agent":
879
- return true;
880
- case "file":
881
- const prefix = context.prefix;
882
- if (prefix.startsWith("./") || prefix.startsWith("../") || prefix.startsWith("/") || prefix.startsWith("~") || prefix.includes("/")) {
883
- return true;
884
- }
885
- if (prefix.startsWith(".") && prefix.length >= 2) {
886
- return true;
887
- }
888
- return false;
889
- default:
890
- return false;
891
- }
892
- }, []);
893
- const shouldAutoHideSingleMatch = useCallback((suggestion, context) => {
894
- const currentInput = input.slice(context.startPos, context.endPos);
895
- if (context.type === "file") {
896
- if (suggestion.value.endsWith("/")) {
897
- return false;
898
- }
899
- if (currentInput === suggestion.value) {
900
- return true;
901
- }
902
- if (currentInput.endsWith("/" + suggestion.value) || currentInput.endsWith(suggestion.value)) {
903
- return true;
904
- }
905
- return false;
906
- }
907
- if (context.type === "command") {
908
- const fullCommand = `/${suggestion.value}`;
909
- const matches = currentInput === fullCommand;
910
- return matches;
911
- }
912
- if (context.type === "agent") {
913
- const fullAgent = `@${suggestion.value}`;
914
- const matches = currentInput === fullAgent;
915
- return matches;
916
- }
917
- return false;
918
- }, [input]);
919
- return {
920
- suggestions,
921
- selectedIndex,
922
- isActive,
923
- emptyDirMessage
924
- };
925
- }
926
- export {
927
- useUnifiedCompletion
928
- };
929
- //# sourceMappingURL=useUnifiedCompletion.js.map