@shareai-lab/kode 1.2.0 → 2.0.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 (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-CW7AYLVL.js +42 -0
  5. package/dist/acp-VEPJ74LT.js +1357 -0
  6. package/dist/acp-VEPJ74LT.js.map +7 -0
  7. package/dist/agentsValidate-7LH4HTNR.js +373 -0
  8. package/dist/agentsValidate-7LH4HTNR.js.map +7 -0
  9. package/dist/ask-3NHFFUQG.js +125 -0
  10. package/dist/ask-3NHFFUQG.js.map +7 -0
  11. package/dist/autoUpdater-ITPIHCOI.js +17 -0
  12. package/dist/{utils/autoUpdater.js → chunk-3IN27HA5.js} +38 -21
  13. package/dist/chunk-3IN27HA5.js.map +7 -0
  14. package/dist/chunk-3RUXVV4S.js +23 -0
  15. package/dist/chunk-3RUXVV4S.js.map +7 -0
  16. package/dist/chunk-4FX3IVPT.js +164 -0
  17. package/dist/chunk-4FX3IVPT.js.map +7 -0
  18. package/dist/chunk-4RTX4AG4.js +249 -0
  19. package/dist/chunk-4RTX4AG4.js.map +7 -0
  20. package/dist/chunk-5PDP7R6N.js +515 -0
  21. package/dist/chunk-5PDP7R6N.js.map +7 -0
  22. package/dist/chunk-73WGVYLQ.js +735 -0
  23. package/dist/chunk-73WGVYLQ.js.map +7 -0
  24. package/dist/{services/systemReminder.js → chunk-7M2YN6TU.js} +221 -59
  25. package/dist/chunk-7M2YN6TU.js.map +7 -0
  26. package/dist/{utils/theme.js → chunk-7U7L4NMD.js} +28 -6
  27. package/dist/chunk-7U7L4NMD.js.map +7 -0
  28. package/dist/chunk-ABLVTESJ.js +19 -0
  29. package/dist/chunk-ABLVTESJ.js.map +7 -0
  30. package/dist/chunk-AFFSCMYS.js +191 -0
  31. package/dist/chunk-AFFSCMYS.js.map +7 -0
  32. package/dist/chunk-ARZSBOAO.js +1256 -0
  33. package/dist/chunk-ARZSBOAO.js.map +7 -0
  34. package/dist/chunk-CIG63V4E.js +72 -0
  35. package/dist/chunk-CIG63V4E.js.map +7 -0
  36. package/dist/chunk-CM3EGTG6.js +1609 -0
  37. package/dist/chunk-CM3EGTG6.js.map +7 -0
  38. package/dist/{services/openai.js → chunk-DZE5YA7L.js} +168 -234
  39. package/dist/chunk-DZE5YA7L.js.map +7 -0
  40. package/dist/chunk-E6YNABER.js +24 -0
  41. package/dist/chunk-E6YNABER.js.map +7 -0
  42. package/dist/{cost-tracker.js → chunk-EZXMVTDU.js} +51 -32
  43. package/dist/chunk-EZXMVTDU.js.map +7 -0
  44. package/dist/chunk-F2SJXUDI.js +148 -0
  45. package/dist/chunk-F2SJXUDI.js.map +7 -0
  46. package/dist/chunk-FC5ZCKBI.js +30167 -0
  47. package/dist/chunk-FC5ZCKBI.js.map +7 -0
  48. package/dist/chunk-HCBELH4J.js +145 -0
  49. package/dist/chunk-HCBELH4J.js.map +7 -0
  50. package/dist/chunk-HN4E4UUQ.js +96 -0
  51. package/dist/chunk-HN4E4UUQ.js.map +7 -0
  52. package/dist/{utils/model.js → chunk-IZVMU4S2.js} +194 -227
  53. package/dist/chunk-IZVMU4S2.js.map +7 -0
  54. package/dist/chunk-JC6NCUG5.js +11 -0
  55. package/dist/chunk-K2CWOTI2.js +196 -0
  56. package/dist/chunk-K2CWOTI2.js.map +7 -0
  57. package/dist/chunk-KAA5BGMQ.js +12 -0
  58. package/dist/chunk-KAA5BGMQ.js.map +7 -0
  59. package/dist/{utils/config.js → chunk-LC4TVOCZ.js} +351 -171
  60. package/dist/chunk-LC4TVOCZ.js.map +7 -0
  61. package/dist/chunk-MIW7N2MY.js +2613 -0
  62. package/dist/chunk-MIW7N2MY.js.map +7 -0
  63. package/dist/chunk-MWRSY4X6.js +240 -0
  64. package/dist/chunk-MWRSY4X6.js.map +7 -0
  65. package/dist/chunk-ND3XWFO6.js +34 -0
  66. package/dist/chunk-ND3XWFO6.js.map +7 -0
  67. package/dist/chunk-NPFOMITO.js +21 -0
  68. package/dist/chunk-NPFOMITO.js.map +7 -0
  69. package/dist/chunk-QVLYOPO5.js +1097 -0
  70. package/dist/chunk-QVLYOPO5.js.map +7 -0
  71. package/dist/chunk-RZWOUA25.js +490 -0
  72. package/dist/chunk-RZWOUA25.js.map +7 -0
  73. package/dist/chunk-S3J2TLV6.js +16 -0
  74. package/dist/chunk-S3J2TLV6.js.map +7 -0
  75. package/dist/chunk-S6HRABTA.js +95 -0
  76. package/dist/chunk-S6HRABTA.js.map +7 -0
  77. package/dist/{utils/debugLogger.js → chunk-STSX7GIX.js} +107 -204
  78. package/dist/chunk-STSX7GIX.js.map +7 -0
  79. package/dist/chunk-UHYRLID6.js +472 -0
  80. package/dist/chunk-UHYRLID6.js.map +7 -0
  81. package/dist/chunk-UKHTVRJM.js +47 -0
  82. package/dist/chunk-UKHTVRJM.js.map +7 -0
  83. package/dist/chunk-UYXEDKOZ.js +24 -0
  84. package/dist/chunk-UYXEDKOZ.js.map +7 -0
  85. package/dist/chunk-W7GRKO7Q.js +766 -0
  86. package/dist/chunk-W7GRKO7Q.js.map +7 -0
  87. package/dist/chunk-WVHORZQ5.js +17 -0
  88. package/dist/chunk-WVHORZQ5.js.map +7 -0
  89. package/dist/chunk-WWUWDNWW.js +49 -0
  90. package/dist/chunk-WWUWDNWW.js.map +7 -0
  91. package/dist/chunk-YC6LJCDE.js +511 -0
  92. package/dist/chunk-YC6LJCDE.js.map +7 -0
  93. package/dist/chunk-YXYYDIMI.js +2931 -0
  94. package/dist/chunk-YXYYDIMI.js.map +7 -0
  95. package/dist/chunk-ZVDRDPII.js +138 -0
  96. package/dist/chunk-ZVDRDPII.js.map +7 -0
  97. package/dist/cli-DOPVY2CW.js +3917 -0
  98. package/dist/cli-DOPVY2CW.js.map +7 -0
  99. package/dist/commands-2BF2CJ3A.js +46 -0
  100. package/dist/config-RUSD6G5Y.js +81 -0
  101. package/dist/context-6FXPETYH.js +30 -0
  102. package/dist/costTracker-6SL26FDB.js +19 -0
  103. package/dist/customCommands-TOIJFZAL.js +25 -0
  104. package/dist/customCommands-TOIJFZAL.js.map +7 -0
  105. package/dist/env-XGKBLU3D.js +22 -0
  106. package/dist/env-XGKBLU3D.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-MITZADPB.js +18 -0
  112. package/dist/kodeAgentSessionLoad-MITZADPB.js.map +7 -0
  113. package/dist/kodeAgentSessionResume-GVRWB4WO.js +16 -0
  114. package/dist/kodeAgentSessionResume-GVRWB4WO.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-UGEZJJEB.js +131 -0
  118. package/dist/kodeAgentStreamJsonSession-UGEZJJEB.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-QWM36A3D.js +36 -0
  122. package/dist/kodeHooks-QWM36A3D.js.map +7 -0
  123. package/dist/llm-ZUQC4WYM.js +3118 -0
  124. package/dist/llm-ZUQC4WYM.js.map +7 -0
  125. package/dist/llmLazy-54QQHA54.js +15 -0
  126. package/dist/llmLazy-54QQHA54.js.map +7 -0
  127. package/dist/loader-FYHJQES5.js +28 -0
  128. package/dist/loader-FYHJQES5.js.map +7 -0
  129. package/dist/mcp-J332IKT3.js +49 -0
  130. package/dist/mcp-J332IKT3.js.map +7 -0
  131. package/dist/{services/mentionProcessor.js → mentionProcessor-EE3XFHCJ.js} +61 -50
  132. package/dist/mentionProcessor-EE3XFHCJ.js.map +7 -0
  133. package/dist/messages-EOYQKPGM.js +63 -0
  134. package/dist/messages-EOYQKPGM.js.map +7 -0
  135. package/dist/model-FV3JDJKH.js +30 -0
  136. package/dist/model-FV3JDJKH.js.map +7 -0
  137. package/dist/openai-RRCWW33N.js +29 -0
  138. package/dist/openai-RRCWW33N.js.map +7 -0
  139. package/dist/outputStyles-62Q3VH2J.js +28 -0
  140. package/dist/outputStyles-62Q3VH2J.js.map +7 -0
  141. package/dist/package.json +1 -1
  142. package/dist/pluginRuntime-6ETCZ2LL.js +218 -0
  143. package/dist/pluginRuntime-6ETCZ2LL.js.map +7 -0
  144. package/dist/pluginValidation-I4YKUWGS.js +17 -0
  145. package/dist/pluginValidation-I4YKUWGS.js.map +7 -0
  146. package/dist/prompts-ZLEKDD77.js +48 -0
  147. package/dist/prompts-ZLEKDD77.js.map +7 -0
  148. package/dist/query-VFRJPBGD.js +50 -0
  149. package/dist/query-VFRJPBGD.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-3NTIKQYW.js +17 -0
  153. package/dist/ripgrep-3NTIKQYW.js.map +7 -0
  154. package/dist/skillMarketplace-3RXQBVOL.js +37 -0
  155. package/dist/skillMarketplace-3RXQBVOL.js.map +7 -0
  156. package/dist/state-P5G6CO5V.js +16 -0
  157. package/dist/state-P5G6CO5V.js.map +7 -0
  158. package/dist/theme-3LWP3BG7.js +14 -0
  159. package/dist/theme-3LWP3BG7.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-3ROBVTUK.js +18 -0
  163. package/dist/toolPermissionSettings-3ROBVTUK.js.map +7 -0
  164. package/dist/tools-RO7HSSE5.js +47 -0
  165. package/dist/tools-RO7HSSE5.js.map +7 -0
  166. package/dist/userInput-JSBJRFSK.js +311 -0
  167. package/dist/userInput-JSBJRFSK.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-CW7AYLVL.js.map} +0 -0
  720. /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-ITPIHCOI.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-2BF2CJ3A.js.map} +0 -0
  723. /package/dist/{types/logs.js.map → config-RUSD6G5Y.js.map} +0 -0
  724. /package/dist/{types/modelCapabilities.js.map → context-6FXPETYH.js.map} +0 -0
  725. /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/entrypoints/cli.tsx"],
4
- "sourcesContent": ["#!/usr/bin/env -S node --no-warnings=ExperimentalWarning --enable-source-maps\nimport { fileURLToPath } from 'node:url'\nimport { dirname, join } from 'node:path'\nimport { existsSync } from 'node:fs'\nimport { initSentry } from '../services/sentry'\nimport { PRODUCT_COMMAND, PRODUCT_NAME } from '../constants/product'\ninitSentry() // Initialize Sentry as early as possible\n\n// Ensure YOGA_WASM_PATH is set for Ink across run modes (wrapper/dev)\n// Resolve yoga.wasm relative to this file when missing using ESM-friendly APIs\ntry {\n if (!process.env.YOGA_WASM_PATH) {\n const __filename = fileURLToPath(import.meta.url)\n const __dirname = dirname(__filename)\n const devCandidate = join(__dirname, '../../yoga.wasm')\n const distCandidate = join(__dirname, './yoga.wasm')\n const resolved = existsSync(distCandidate)\n ? distCandidate\n : existsSync(devCandidate)\n ? devCandidate\n : undefined\n if (resolved) {\n process.env.YOGA_WASM_PATH = resolved\n }\n }\n} catch {}\n\n// XXX: Without this line (and the Object.keys, even though it seems like it does nothing!),\n// there is a bug in Bun only on Win32 that causes this import to be removed, even though\n// its use is solely because of its side-effects.\nimport * as dontcare from '@anthropic-ai/sdk/shims/node'\nObject.keys(dontcare)\n\nimport React from 'react'\nimport { ReadStream } from 'tty'\nimport { openSync } from 'fs'\n// ink and REPL are imported lazily to avoid top-level awaits during module init\nimport type { RenderOptions } from 'ink'\nimport { addToHistory } from '../history'\nimport { getContext, setContext, removeContext } from '../context'\nimport { Command } from '@commander-js/extra-typings'\nimport { ask } from '../utils/ask'\nimport { hasPermissionsToUseTool } from '../permissions'\nimport { getTools } from '../tools'\nimport {\n getGlobalConfig,\n getCurrentProjectConfig,\n saveGlobalConfig,\n saveCurrentProjectConfig,\n getCustomApiKeyStatus,\n normalizeApiKeyForConfig,\n setConfigForCLI,\n deleteConfigForCLI,\n getConfigForCLI,\n listConfigForCLI,\n enableConfigs,\n validateAndRepairAllGPT5Profiles,\n} from '../utils/config'\nimport { cwd } from 'process'\nimport { dateToFilename, logError, parseLogFilename } from '../utils/log'\nimport { initDebugLogger } from '../utils/debugLogger'\nimport { Onboarding } from '../components/Onboarding'\nimport { Doctor } from '../screens/Doctor'\nimport { ApproveApiKey } from '../components/ApproveApiKey'\nimport { TrustDialog } from '../components/TrustDialog'\nimport { checkHasTrustDialogAccepted, McpServerConfig } from '../utils/config'\nimport { isDefaultSlowAndCapableModel } from '../utils/model'\nimport { LogList } from '../screens/LogList'\nimport { ResumeConversation } from '../screens/ResumeConversation'\nimport { startMCPServer } from './mcp'\nimport { env } from '../utils/env'\nimport { getCwd, setCwd, setOriginalCwd } from '../utils/state'\nimport { omit } from 'lodash-es'\nimport { getCommands } from '../commands'\nimport { getNextAvailableLogForkNumber, loadLogList } from '../utils/log'\nimport { loadMessagesFromLog } from '../utils/conversationRecovery'\nimport { cleanupOldMessageFilesInBackground } from '../utils/cleanup'\nimport {\n handleListApprovedTools,\n handleRemoveApprovedTool,\n} from '../commands/approvedTools'\nimport {\n addMcpServer,\n getMcpServer,\n listMCPServers,\n parseEnvVars,\n removeMcpServer,\n getClients,\n ensureConfigScope,\n} from '../services/mcpClient'\nimport { handleMcprcServerApprovals } from '../services/mcpServerApproval'\nimport { checkGate, initializeStatsig, logEvent } from '../services/statsig'\nimport { getExampleCommands } from '../utils/exampleCommands'\nimport { cursorShow } from 'ansi-escapes'\nimport { getLatestVersion, assertMinVersion, getUpdateCommandSuggestions } from '../utils/autoUpdater'\nimport { gt } from 'semver'\nimport { CACHE_PATHS } from '../utils/log'\n// import { checkAndNotifyUpdate } from '../utils/autoUpdater'\nimport { PersistentShell } from '../utils/PersistentShell'\nimport { GATE_USE_EXTERNAL_UPDATER } from '../constants/betas'\nimport { clearTerminal } from '../utils/terminal'\nimport { showInvalidConfigDialog } from '../components/InvalidConfigDialog'\nimport { ConfigParseError } from '../utils/errors'\nimport { grantReadPermissionForOriginalDir } from '../utils/permissions/filesystem'\nimport { MACRO } from '../constants/macros'\nexport function completeOnboarding(): void {\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n hasCompletedOnboarding: true,\n lastOnboardingVersion: MACRO.VERSION,\n })\n}\n\nasync function showSetupScreens(\n safeMode?: boolean,\n print?: boolean,\n): Promise<void> {\n if (process.env.NODE_ENV === 'test') {\n return\n }\n\n const config = getGlobalConfig()\n if (\n !config.theme ||\n !config.hasCompletedOnboarding // always show onboarding at least once\n ) {\n await clearTerminal()\n const { render } = await import('ink')\n await new Promise<void>(resolve => {\n render(\n <Onboarding\n onDone={async () => {\n completeOnboarding()\n await clearTerminal()\n resolve()\n }}\n />,\n {\n exitOnCtrlC: false,\n },\n )\n })\n }\n\n // // Check for custom API key (only allowed for ants)\n // if (process.env.ANTHROPIC_API_KEY && process.env.USER_TYPE === 'ant') {\n // const customApiKeyTruncated = normalizeApiKeyForConfig(\n // process.env.ANTHROPIC_API_KEY!,\n // )\n // const keyStatus = getCustomApiKeyStatus(customApiKeyTruncated)\n // if (keyStatus === 'new') {\n // await new Promise<void>(resolve => {\n // render(\n // <ApproveApiKey\n // customApiKeyTruncated={customApiKeyTruncated}\n // onDone={async () => {\n // await clearTerminal()\n // resolve()\n // }}\n // />,\n // {\n // exitOnCtrlC: false,\n // },\n // )\n // })\n // }\n // }\n\n // In non-interactive mode, only show trust dialog in safe mode\n if (!print && safeMode) {\n if (!checkHasTrustDialogAccepted()) {\n await new Promise<void>(resolve => {\n const onDone = () => {\n // Grant read permission to the current working directory\n grantReadPermissionForOriginalDir()\n resolve()\n }\n ;(async () => {\n const { render } = await import('ink')\n render(<TrustDialog onDone={onDone} />, {\n exitOnCtrlC: false,\n })\n })()\n })\n }\n\n // After trust dialog, check for any mcprc servers that need approval\n if (process.env.USER_TYPE === 'ant') {\n await handleMcprcServerApprovals()\n }\n }\n}\n\nfunction logStartup(): void {\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n numStartups: (config.numStartups ?? 0) + 1,\n })\n}\n\nasync function setup(cwd: string, safeMode?: boolean): Promise<void> {\n // Set both current and original working directory if --cwd was provided\n if (cwd !== process.cwd()) {\n setOriginalCwd(cwd)\n }\n await setCwd(cwd)\n\n // Always grant read permissions for original working dir\n grantReadPermissionForOriginalDir()\n \n // Start watching agent configuration files for changes\n // Try ESM-friendly path first (compiled dist), then fall back to extensionless (dev/tsx)\n let agentLoader: any\n try {\n agentLoader = await import('../utils/agentLoader.js')\n } catch {\n agentLoader = await import('../utils/agentLoader')\n }\n const { startAgentWatcher, clearAgentCache } = agentLoader\n await startAgentWatcher(() => {\n // Cache is already cleared in the watcher, just log\n console.log('\u2705 Agent configurations hot-reloaded')\n })\n\n // If --safe mode is enabled, prevent root/sudo usage for security\n if (safeMode) {\n // Check if running as root/sudo on Unix-like systems\n if (\n process.platform !== 'win32' &&\n typeof process.getuid === 'function' &&\n process.getuid() === 0\n ) {\n console.error(\n `--safe mode cannot be used with root/sudo privileges for security reasons`,\n )\n process.exit(1)\n }\n }\n\n if (process.env.NODE_ENV === 'test') {\n return\n }\n\n cleanupOldMessageFilesInBackground()\n // getExampleCommands() // Pre-fetch example commands\n getContext() // Pre-fetch all context data at once\n // initializeStatsig() // Kick off statsig initialization\n\n // Migrate old iterm2KeyBindingInstalled config to new shiftEnterKeyBindingInstalled\n const globalConfig = getGlobalConfig()\n if (\n globalConfig.iterm2KeyBindingInstalled === true &&\n globalConfig.shiftEnterKeyBindingInstalled !== true\n ) {\n const updatedConfig = {\n ...globalConfig,\n shiftEnterKeyBindingInstalled: true,\n }\n // Remove the old config property\n delete updatedConfig.iterm2KeyBindingInstalled\n saveGlobalConfig(updatedConfig)\n }\n\n // Check for last session's cost and duration\n const projectConfig = getCurrentProjectConfig()\n if (\n projectConfig.lastCost !== undefined &&\n projectConfig.lastDuration !== undefined\n ) {\n logEvent('tengu_exit', {\n last_session_cost: String(projectConfig.lastCost),\n last_session_api_duration: String(projectConfig.lastAPIDuration),\n last_session_duration: String(projectConfig.lastDuration),\n last_session_id: projectConfig.lastSessionId,\n })\n // Clear the values after logging\n // saveCurrentProjectConfig({\n // ...projectConfig,\n // lastCost: undefined,\n // lastAPIDuration: undefined,\n // lastDuration: undefined,\n // lastSessionId: undefined,\n // })\n }\n\n // Skip interactive auto-updater permission prompts during startup\n // Users can still run the doctor command manually if desired.\n}\n\nasync function main() {\n // \u521D\u59CB\u5316\u8C03\u8BD5\u65E5\u5FD7\u7CFB\u7EDF\n initDebugLogger()\n\n // Validate configs are valid and enable configuration system\n try {\n enableConfigs()\n \n // \uD83D\uDD27 Validate and auto-repair GPT-5 model profiles\n try {\n const repairResult = validateAndRepairAllGPT5Profiles()\n if (repairResult.repaired > 0) {\n console.log(`\uD83D\uDD27 Auto-repaired ${repairResult.repaired} GPT-5 model configurations`)\n }\n } catch (repairError) {\n // Don't block startup if GPT-5 validation fails\n console.warn('\u26A0\uFE0F GPT-5 configuration validation failed:', repairError)\n }\n } catch (error: unknown) {\n if (error instanceof ConfigParseError) {\n // Show the invalid config dialog with the error object\n await showInvalidConfigDialog({ error })\n return // Exit after handling the config error\n }\n }\n\n // Disabled background notifier to avoid mid-screen logs during REPL\n\n let inputPrompt = ''\n let renderContext: RenderOptions | undefined = {\n exitOnCtrlC: false,\n \n onFlicker() {\n logEvent('tengu_flicker', {})\n },\n } as any\n\n if (\n !process.stdin.isTTY &&\n !process.env.CI &&\n // Input hijacking breaks MCP.\n !process.argv.includes('mcp')\n ) {\n inputPrompt = await stdin()\n if (process.platform !== 'win32') {\n try {\n const ttyFd = openSync('/dev/tty', 'r')\n renderContext = { ...renderContext, stdin: new ReadStream(ttyFd) }\n } catch (err) {\n logError(`Could not open /dev/tty: ${err}`)\n }\n }\n }\n await parseArgs(inputPrompt, renderContext)\n}\n\nasync function parseArgs(\n stdinContent: string,\n renderContext: RenderOptions | undefined,\n): Promise<Command> {\n const program = new Command()\n\n const renderContextWithExitOnCtrlC = {\n ...renderContext,\n exitOnCtrlC: true,\n }\n\n // Get the initial list of commands filtering based on user type\n const commands = await getCommands()\n\n // Format command list for help text (using same filter as in help.ts)\n const commandList = commands\n .filter(cmd => !cmd.isHidden)\n .map(cmd => `/${cmd.name} - ${cmd.description}`)\n .join('\\n')\n\n program\n .name(PRODUCT_COMMAND)\n .description(\n `${PRODUCT_NAME} - starts an interactive session by default, use -p/--print for non-interactive output\n\nSlash commands available during an interactive session:\n${commandList}`,\n )\n .argument('[prompt]', 'Your prompt', String)\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-d, --debug', 'Enable debug mode', () => true)\n .option(\n '--debug-verbose',\n 'Enable verbose debug terminal output',\n () => true,\n )\n .option(\n '--verbose',\n 'Override verbose mode setting from config',\n () => true,\n )\n .option('-e, --enable-architect', 'Enable the Architect tool', () => true)\n .option(\n '-p, --print',\n 'Print response and exit (useful for pipes)',\n () => true,\n )\n .option(\n '--safe',\n 'Enable strict permission checking mode (default is permissive)',\n () => true,\n )\n .action(\n async (prompt, { cwd, debug, verbose, enableArchitect, print, safe }) => {\n await showSetupScreens(safe, print)\n logEvent('tengu_init', {\n entrypoint: PRODUCT_COMMAND,\n hasInitialPrompt: Boolean(prompt).toString(),\n hasStdin: Boolean(stdinContent).toString(),\n enableArchitect: enableArchitect?.toString() ?? 'false',\n verbose: verbose?.toString() ?? 'false',\n debug: debug?.toString() ?? 'false',\n print: print?.toString() ?? 'false',\n })\n await setup(cwd, safe)\n\n assertMinVersion()\n\n const [tools, mcpClients] = await Promise.all([\n getTools(\n enableArchitect ?? getCurrentProjectConfig().enableArchitectTool,\n ),\n getClients(),\n ])\n // logStartup()\n const inputPrompt = [prompt, stdinContent].filter(Boolean).join('\\n')\n if (print) {\n if (!inputPrompt) {\n console.error(\n 'Error: Input must be provided either through stdin or as a prompt argument when using --print',\n )\n process.exit(1)\n }\n\n addToHistory(inputPrompt)\n const { resultText: response } = await ask({\n commands,\n hasPermissionsToUseTool,\n messageLogName: dateToFilename(new Date()),\n prompt: inputPrompt,\n cwd,\n tools,\n safeMode: safe,\n })\n console.log(response)\n process.exit(0)\n } else {\n const isDefaultModel = await isDefaultSlowAndCapableModel()\n\n // Prefetch update info before first render to place banner at top\n const updateInfo = await (async () => {\n try {\n const latest = await getLatestVersion()\n if (latest && gt(latest, MACRO.VERSION)) {\n const cmds = await getUpdateCommandSuggestions()\n return { version: latest as string, commands: cmds as string[] }\n }\n } catch {}\n return { version: null as string | null, commands: null as string[] | null }\n })()\n\n {\n const { render } = await import('ink')\n const { REPL } = await import('../screens/REPL')\n render(\n <REPL\n commands={commands}\n debug={debug}\n initialPrompt={inputPrompt}\n messageLogName={dateToFilename(new Date())}\n shouldShowPromptInput={true}\n verbose={verbose}\n tools={tools}\n safeMode={safe}\n mcpClients={mcpClients}\n isDefaultModel={isDefaultModel}\n initialUpdateVersion={updateInfo.version}\n initialUpdateCommands={updateInfo.commands}\n />,\n renderContext,\n )\n }\n }\n },\n )\n .version(MACRO.VERSION, '-v, --version')\n\n // Enable melon mode for ants if --melon is passed\n // For bun tree shaking to work, this has to be a top level --define, not inside MACRO\n // if (process.env.USER_TYPE === 'ant') {\n // program\n // .option('--melon', 'Enable melon mode')\n // .hook('preAction', async () => {\n // if ((program.opts() as { melon?: boolean }).melon) {\n // const { runMelonWrapper } = await import('../utils/melonWrapper')\n // const melonArgs = process.argv.slice(\n // process.argv.indexOf('--melon') + 1,\n // )\n // const exitCode = runMelonWrapper(melonArgs)\n // process.exit(exitCode)\n // }\n // })\n // }\n\n // claude config\n const config = program\n .command('config')\n .description(\n `Manage configuration (eg. ${PRODUCT_COMMAND} config set -g theme dark)`,\n )\n\n config\n .command('get <key>')\n .description('Get a config value')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, { cwd, global }) => {\n await setup(cwd, false)\n console.log(getConfigForCLI(key, global ?? false))\n process.exit(0)\n })\n\n config\n .command('set <key> <value>')\n .description('Set a config value')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, value, { cwd, global }) => {\n await setup(cwd, false)\n setConfigForCLI(key, value, global ?? false)\n console.log(`Set ${key} to ${value}`)\n process.exit(0)\n })\n\n config\n .command('remove <key>')\n .description('Remove a config value')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, { cwd, global }) => {\n await setup(cwd, false)\n deleteConfigForCLI(key, global ?? false)\n console.log(`Removed ${key}`)\n process.exit(0)\n })\n\n config\n .command('list')\n .description('List all config values')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config', false)\n .action(async ({ cwd, global }) => {\n await setup(cwd, false)\n console.log(\n JSON.stringify(global ? listConfigForCLI(true) : listConfigForCLI(false), null, 2),\n )\n process.exit(0)\n })\n\n // claude approved-tools\n\n const allowedTools = program\n .command('approved-tools')\n .description('Manage approved tools')\n\n allowedTools\n .command('list')\n .description('List all approved tools')\n .action(async () => {\n const result = handleListApprovedTools(getCwd())\n console.log(result)\n process.exit(0)\n })\n\n allowedTools\n .command('remove <tool>')\n .description('Remove a tool from the list of approved tools')\n .action(async (tool: string) => {\n const result = handleRemoveApprovedTool(tool)\n logEvent('tengu_approved_tool_remove', {\n tool,\n success: String(result.success),\n })\n console.log(result.message)\n process.exit(result.success ? 0 : 1)\n })\n\n // claude mcp\n\n const mcp = program\n .command('mcp')\n .description('Configure and manage MCP servers')\n\n mcp\n .command('serve')\n .description(`Start the ${PRODUCT_NAME} MCP server`)\n .action(async () => {\n const providedCwd = (program.opts() as { cwd?: string }).cwd ?? cwd()\n logEvent('tengu_mcp_start', { providedCwd })\n\n // Verify the directory exists\n if (!existsSync(providedCwd)) {\n console.error(`Error: Directory ${providedCwd} does not exist`)\n process.exit(1)\n }\n\n try {\n await setup(providedCwd, false)\n await startMCPServer(providedCwd)\n } catch (error) {\n console.error('Error: Failed to start MCP server:', error)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-sse <name> <url>')\n .description('Add an SSE server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project or global)',\n 'project',\n )\n .action(async (name, url, options) => {\n try {\n const scope = ensureConfigScope(options.scope)\n logEvent('tengu_mcp_add', { name, type: 'sse', scope })\n\n addMcpServer(name, { type: 'sse', url }, scope)\n console.log(\n `Added SSE MCP server ${name} with URL ${url} to ${scope} config`,\n )\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add [name] [commandOrUrl] [args...]')\n .description('Add a server (run without arguments for interactive wizard)')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project or global)',\n 'project',\n )\n .option(\n '-e, --env <env...>',\n 'Set environment variables (e.g. -e KEY=value)',\n )\n .action(async (name, commandOrUrl, args, options) => {\n try {\n // If name is not provided, start interactive wizard\n if (!name) {\n console.log('Interactive wizard mode: Enter the server details')\n const { createInterface } = await import('readline')\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n\n const question = (query: string) =>\n new Promise<string>(resolve => rl.question(query, resolve))\n\n // Get server name\n const serverName = await question('Server name: ')\n if (!serverName) {\n console.error('Error: Server name is required')\n rl.close()\n process.exit(1)\n }\n\n // Get server type\n const serverType = await question(\n 'Server type (stdio or sse) [stdio]: ',\n )\n const type =\n serverType && ['stdio', 'sse'].includes(serverType)\n ? serverType\n : 'stdio'\n\n // Get command or URL\n const prompt = type === 'stdio' ? 'Command: ' : 'URL: '\n const commandOrUrlValue = await question(prompt)\n if (!commandOrUrlValue) {\n console.error(\n `Error: ${type === 'stdio' ? 'Command' : 'URL'} is required`,\n )\n rl.close()\n process.exit(1)\n }\n\n // Get args and env if stdio\n let serverArgs: string[] = []\n let serverEnv: Record<string, string> = {}\n\n if (type === 'stdio') {\n const argsStr = await question(\n 'Command arguments (space-separated): ',\n )\n serverArgs = argsStr ? argsStr.split(' ').filter(Boolean) : []\n\n const envStr = await question(\n 'Environment variables (format: KEY1=value1,KEY2=value2): ',\n )\n if (envStr) {\n const envPairs = envStr.split(',').map(pair => pair.trim())\n serverEnv = parseEnvVars(envPairs.map(pair => pair))\n }\n }\n\n // Get scope\n const scopeStr = await question(\n 'Configuration scope (project or global) [project]: ',\n )\n const serverScope = ensureConfigScope(scopeStr || 'project')\n\n rl.close()\n\n // Add the server\n if (type === 'sse') {\n logEvent('tengu_mcp_add', {\n name: serverName,\n type: 'sse',\n scope: serverScope,\n })\n addMcpServer(\n serverName,\n { type: 'sse', url: commandOrUrlValue },\n serverScope,\n )\n console.log(\n `Added SSE MCP server ${serverName} with URL ${commandOrUrlValue} to ${serverScope} config`,\n )\n } else {\n logEvent('tengu_mcp_add', {\n name: serverName,\n type: 'stdio',\n scope: serverScope,\n })\n addMcpServer(\n serverName,\n {\n type: 'stdio',\n command: commandOrUrlValue,\n args: serverArgs,\n env: serverEnv,\n },\n serverScope,\n )\n\n console.log(\n `Added stdio MCP server ${serverName} with command: ${commandOrUrlValue} ${serverArgs.join(' ')} to ${serverScope} config`,\n )\n }\n } else if (name && commandOrUrl) {\n // Regular non-interactive flow\n const scope = ensureConfigScope(options.scope)\n\n // Check if it's an SSE URL (starts with http:// or https://)\n if (commandOrUrl.match(/^https?:\\/\\//)) {\n logEvent('tengu_mcp_add', { name, type: 'sse', scope })\n addMcpServer(name, { type: 'sse', url: commandOrUrl }, scope)\n console.log(\n `Added SSE MCP server ${name} with URL ${commandOrUrl} to ${scope} config`,\n )\n } else {\n logEvent('tengu_mcp_add', { name, type: 'stdio', scope })\n const env = parseEnvVars(options.env)\n addMcpServer(\n name,\n { type: 'stdio', command: commandOrUrl, args: args || [], env },\n scope,\n )\n\n console.log(\n `Added stdio MCP server ${name} with command: ${commandOrUrl} ${(args || []).join(' ')} to ${scope} config`,\n )\n }\n } else {\n console.error(\n 'Error: Missing required arguments. Either provide no arguments for interactive mode or specify name and command/URL.',\n )\n process.exit(1)\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n mcp\n .command('remove <name>')\n .description('Remove an MCP server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project, global, or mcprc)',\n 'project',\n )\n .action(async (name: string, options: { scope?: string }) => {\n try {\n const scope = ensureConfigScope(options.scope)\n logEvent('tengu_mcp_delete', { name, scope })\n\n removeMcpServer(name, scope)\n console.log(`Removed MCP server ${name} from ${scope} config`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('list')\n .description('List configured MCP servers')\n .action(() => {\n logEvent('tengu_mcp_list', {})\n const servers = listMCPServers()\n if (Object.keys(servers).length === 0) {\n console.log(\n `No MCP servers configured. Use \\`${PRODUCT_COMMAND} mcp add\\` to add a server.`,\n )\n } else {\n for (const [name, server] of Object.entries(servers)) {\n if (server.type === 'sse') {\n console.log(`${name}: ${server.url} (SSE)`)\n } else {\n console.log(`${name}: ${server.command} ${server.args.join(' ')}`)\n }\n }\n }\n process.exit(0)\n })\n\n mcp\n .command('add-json <name> <json>')\n .description('Add an MCP server (stdio or SSE) with a JSON string')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project or global)',\n 'project',\n )\n .action(async (name, jsonStr, options) => {\n try {\n const scope = ensureConfigScope(options.scope)\n\n // Parse JSON string\n let serverConfig\n try {\n serverConfig = JSON.parse(jsonStr)\n } catch (e) {\n console.error('Error: Invalid JSON string')\n process.exit(1)\n }\n\n // Validate the server config\n if (\n !serverConfig.type ||\n !['stdio', 'sse'].includes(serverConfig.type)\n ) {\n console.error('Error: Server type must be \"stdio\" or \"sse\"')\n process.exit(1)\n }\n\n if (serverConfig.type === 'sse' && !serverConfig.url) {\n console.error('Error: SSE server must have a URL')\n process.exit(1)\n }\n\n if (serverConfig.type === 'stdio' && !serverConfig.command) {\n console.error('Error: stdio server must have a command')\n process.exit(1)\n }\n\n // Add server with the provided config\n logEvent('tengu_mcp_add_json', { name, type: serverConfig.type, scope })\n addMcpServer(name, serverConfig, scope)\n\n if (serverConfig.type === 'sse') {\n console.log(\n `Added SSE MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n } else {\n console.log(\n `Added stdio MCP server ${name} with command: ${serverConfig.command} ${(\n serverConfig.args || []\n ).join(' ')} to ${scope} config`,\n )\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('get <name>')\n .description('Get details about an MCP server')\n .action((name: string) => {\n logEvent('tengu_mcp_get', { name })\n const server = getMcpServer(name)\n if (!server) {\n console.error(`No MCP server found with name: ${name}`)\n process.exit(1)\n }\n console.log(`${name}:`)\n console.log(` Scope: ${server.scope}`)\n if (server.type === 'sse') {\n console.log(` Type: sse`)\n console.log(` URL: ${server.url}`)\n } else {\n console.log(` Type: stdio`)\n console.log(` Command: ${server.command}`)\n console.log(` Args: ${server.args.join(' ')}`)\n if (server.env) {\n console.log(' Environment:')\n for (const [key, value] of Object.entries(server.env)) {\n console.log(` ${key}=${value}`)\n }\n }\n }\n process.exit(0)\n })\n\n // Import servers from Claude Desktop\n mcp\n .command('add-from-claude-desktop')\n .description(\n 'Import MCP servers from Claude Desktop (Mac, Windows and WSL)',\n )\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project or global)',\n 'project',\n )\n .action(async options => {\n try {\n const scope = ensureConfigScope(options.scope)\n const platform = process.platform\n\n // Import fs and path modules\n const { existsSync, readFileSync } = await import('fs')\n const { join } = await import('path')\n const { exec } = await import('child_process')\n\n // Determine if running in WSL\n const isWSL =\n platform === 'linux' &&\n existsSync('/proc/version') &&\n readFileSync('/proc/version', 'utf-8')\n .toLowerCase()\n .includes('microsoft')\n\n if (platform !== 'darwin' && platform !== 'win32' && !isWSL) {\n console.error(\n 'Error: This command is only supported on macOS, Windows, and WSL',\n )\n process.exit(1)\n }\n\n // Get Claude Desktop config path\n let configPath\n if (platform === 'darwin') {\n configPath = join(\n process.env.HOME || '~',\n 'Library/Application Support/Claude/claude_desktop_config.json',\n )\n } else if (platform === 'win32') {\n configPath = join(\n process.env.APPDATA || '',\n 'Claude/claude_desktop_config.json',\n )\n } else if (isWSL) {\n // Get Windows username\n const whoamiCommand = await new Promise<string>((resolve, reject) => {\n exec(\n 'powershell.exe -Command \"whoami\"',\n (err: Error, stdout: string) => {\n if (err) reject(err)\n else resolve(stdout.trim().split('\\\\').pop() || '')\n },\n )\n })\n\n configPath = `/mnt/c/Users/${whoamiCommand}/AppData/Roaming/Claude/claude_desktop_config.json`\n }\n\n // Check if config file exists\n if (!existsSync(configPath)) {\n console.error(\n `Error: Claude Desktop config file not found at ${configPath}`,\n )\n process.exit(1)\n }\n\n // Read config file\n let config\n try {\n const configContent = readFileSync(configPath, 'utf-8')\n config = JSON.parse(configContent)\n } catch (err) {\n console.error(`Error reading config file: ${err}`)\n process.exit(1)\n }\n\n // Extract MCP servers\n const mcpServers = config.mcpServers || {}\n const serverNames = Object.keys(mcpServers)\n const numServers = serverNames.length\n\n if (numServers === 0) {\n console.log('No MCP servers found in Claude Desktop config')\n process.exit(0)\n }\n\n // Create server information for display\n const serversInfo = serverNames.map(name => {\n const server = mcpServers[name]\n let description = ''\n\n if (server.type === 'sse') {\n description = `SSE: ${server.url}`\n } else {\n description = `stdio: ${server.command} ${(server.args || []).join(' ')}`\n }\n\n return { name, description, server }\n })\n\n // First import all required modules outside the component\n // Import modules separately to avoid any issues\n const ink = await import('ink')\n const reactModule = await import('react')\n const inkjsui = await import('@inkjs/ui')\n const utilsTheme = await import('../utils/theme')\n\n const { render } = ink\n const React = reactModule // React is already the default export when imported this way\n const { MultiSelect } = inkjsui\n const { Box, Text } = ink\n const { getTheme } = utilsTheme\n\n // Use Ink to render a nice UI for selection\n await new Promise<void>(resolve => {\n // Create a component for the server selection\n function ClaudeDesktopImport() {\n const { useState } = reactModule\n const [isFinished, setIsFinished] = useState(false)\n const [importResults, setImportResults] = useState([] as { name: string; success: boolean }[])\n const [isImporting, setIsImporting] = useState(false)\n const theme = getTheme()\n\n // Function to import selected servers\n const importServers = async (selectedServers: string[]) => {\n setIsImporting(true)\n const results = []\n\n for (const name of selectedServers) {\n try {\n const server = mcpServers[name]\n\n // Check if server already exists\n const existingServer = getMcpServer(name)\n if (existingServer) {\n // Skip duplicates - we'll handle them in the confirmation step\n continue\n }\n\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n setImportResults(results)\n setIsImporting(false)\n setIsFinished(true)\n\n // Give time to show results\n setTimeout(() => {\n resolve()\n }, 1000)\n }\n\n // Handle confirmation of selections\n const handleConfirm = async (selectedServers: string[]) => {\n // Check for existing servers and confirm overwrite\n const existingServers = selectedServers.filter(name =>\n getMcpServer(name),\n )\n\n if (existingServers.length > 0) {\n // We'll just handle it directly since we have a simple UI\n const results = []\n\n // Process non-existing servers first\n const newServers = selectedServers.filter(\n name => !getMcpServer(name),\n )\n for (const name of newServers) {\n try {\n const server = mcpServers[name]\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n // Now handle existing servers by prompting for each one\n for (const name of existingServers) {\n try {\n const server = mcpServers[name]\n // Overwrite existing server - in a real interactive UI you'd prompt here\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n setImportResults(results)\n setIsImporting(false)\n setIsFinished(true)\n\n // Give time to show results before resolving\n setTimeout(() => {\n resolve()\n }, 1000)\n } else {\n // No existing servers, proceed with import\n await importServers(selectedServers)\n }\n }\n\n return (\n <Box flexDirection=\"column\" padding={1}>\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={theme.kode}\n padding={1}\n width={'100%'}\n >\n <Text bold color={theme.kode}>\n Import MCP Servers from Claude Desktop\n </Text>\n\n <Box marginY={1}>\n <Text>\n Found {numServers} MCP servers in Claude Desktop.\n </Text>\n </Box>\n\n <Text>Please select the servers you want to import:</Text>\n\n <Box marginTop={1}>\n <MultiSelect\n options={serverNames.map(name => ({\n label: name,\n value: name,\n }))}\n defaultValue={serverNames}\n onSubmit={handleConfirm}\n />\n </Box>\n </Box>\n\n <Box marginTop={0} marginLeft={3}>\n <Text dimColor>\n Space to select \u00B7 Enter to confirm \u00B7 Esc to cancel\n </Text>\n </Box>\n\n {isFinished && (\n <Box marginTop={1}>\n <Text color={theme.success}>\n Successfully imported{' '}\n {importResults.filter(r => r.success).length} MCP server\n to local config.\n </Text>\n </Box>\n )}\n </Box>\n )\n }\n\n // Render the component\n const { unmount } = render(<ClaudeDesktopImport />)\n\n // Clean up when done\n setTimeout(() => {\n unmount()\n resolve()\n }, 30000) // Timeout after 30 seconds as a fallback\n })\n\n process.exit(0)\n } catch (error) {\n console.error(`Error: ${(error as Error).message}`)\n process.exit(1)\n }\n })\n\n // Function to reset MCP server choices\n const resetMcpChoices = () => {\n const config = getCurrentProjectConfig()\n saveCurrentProjectConfig({\n ...config,\n approvedMcprcServers: [],\n rejectedMcprcServers: [],\n })\n console.log('All .mcprc server approvals and rejections have been reset.')\n console.log(\n `You will be prompted for approval next time you start ${PRODUCT_NAME}.`,\n )\n process.exit(0)\n }\n\n // New command name to match Kode\n mcp\n .command('reset-project-choices')\n .description(\n 'Reset all approved and rejected project-scoped (.mcp.json) servers within this project',\n )\n .action(() => {\n logEvent('tengu_mcp_reset_project_choices', {})\n resetMcpChoices()\n })\n\n // Keep old command for backward compatibility (visible only to ants)\n if (process.env.USER_TYPE === 'ant') {\n mcp\n .command('reset-mcprc-choices')\n .description(\n 'Reset all approved and rejected .mcprc servers for this project',\n )\n .action(() => {\n logEvent('tengu_mcp_reset_mcprc_choices', {})\n resetMcpChoices()\n })\n }\n\n // Doctor command - simple installation health check (no auto-update)\n program\n .command('doctor')\n .description(`Check the health of your ${PRODUCT_NAME} installation`)\n .action(async () => {\n logEvent('tengu_doctor_command', {})\n\n await new Promise<void>(resolve => {\n ;(async () => {\n const { render } = await import('ink')\n render(<Doctor onDone={() => resolve()} doctorMode={true} />)\n })()\n })\n process.exit(0)\n })\n\n // ant-only commands\n\n // claude update\n program\n .command('update')\n .description('Show manual upgrade commands (no auto-install)')\n .action(async () => {\n logEvent('tengu_update_check', {})\n console.log(`Current version: ${MACRO.VERSION}`)\n console.log('Checking for updates...')\n\n const latestVersion = await getLatestVersion()\n\n if (!latestVersion) {\n console.error('Failed to check for updates')\n process.exit(1)\n }\n\n if (latestVersion === MACRO.VERSION) {\n console.log(`${PRODUCT_NAME} is up to date`)\n process.exit(0)\n }\n\n console.log(`New version available: ${latestVersion}`)\n const { getUpdateCommandSuggestions } = await import('../utils/autoUpdater')\n const cmds = await getUpdateCommandSuggestions()\n console.log('\\nRun one of the following commands to update:')\n for (const c of cmds) console.log(` ${c}`)\n if (process.platform !== 'win32') {\n console.log('\\nNote: you may need to prefix with \"sudo\" on macOS/Linux.')\n }\n process.exit(0)\n })\n\n // claude log\n program\n .command('log')\n .description('Manage conversation logs.')\n .argument(\n '[number]',\n 'A number (0, 1, 2, etc.) to display a specific log',\n parseInt,\n )\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (number, { cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_view_logs', { number: number?.toString() ?? '' })\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <LogList context={context} type=\"messages\" logNumber={number} />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n })\n\n // claude resume\n program\n .command('resume')\n .description(\n 'Resume a previous conversation. Optionally provide a number (0, 1, 2, etc.) or file path to resume a specific conversation.',\n )\n .argument(\n '[identifier]',\n 'A number (0, 1, 2, etc.) or file path to resume a specific conversation',\n )\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .option('-e, --enable-architect', 'Enable the Architect tool', () => true)\n .option('-v, --verbose', 'Do not truncate message output', () => true)\n .option(\n '--safe',\n 'Enable strict permission checking mode (default is permissive)',\n () => true,\n )\n .action(async (identifier, { cwd, enableArchitect, safe, verbose }) => {\n await setup(cwd, safe)\n assertMinVersion()\n\n const [tools, commands, logs, mcpClients] = await Promise.all([\n getTools(\n enableArchitect ?? getCurrentProjectConfig().enableArchitectTool,\n ),\n getCommands(),\n loadLogList(CACHE_PATHS.messages()),\n getClients(),\n ])\n // logStartup()\n\n // If a specific conversation is requested, load and resume it directly\n if (identifier !== undefined) {\n // Check if identifier is a number or a file path\n const number = Math.abs(parseInt(identifier))\n const isNumber = !isNaN(number)\n let messages, date, forkNumber\n try {\n if (isNumber) {\n logEvent('tengu_resume', { number: number.toString() })\n const log = logs[number]\n if (!log) {\n console.error('No conversation found at index', number)\n process.exit(1)\n }\n messages = await loadMessagesFromLog(log.fullPath, tools)\n ;({ date, forkNumber } = log)\n } else {\n // Handle file path case\n logEvent('tengu_resume', { filePath: identifier })\n if (!existsSync(identifier)) {\n console.error('File does not exist:', identifier)\n process.exit(1)\n }\n messages = await loadMessagesFromLog(identifier, tools)\n const pathSegments = identifier.split('/')\n const filename = pathSegments[pathSegments.length - 1] ?? 'unknown'\n ;({ date, forkNumber } = parseLogFilename(filename))\n }\n const fork = getNextAvailableLogForkNumber(date, forkNumber ?? 1, 0)\n const isDefaultModel = await isDefaultSlowAndCapableModel()\n {\n const { render } = await import('ink')\n const { REPL } = await import('../screens/REPL')\n render(\n <REPL\n initialPrompt=\"\"\n messageLogName={date}\n initialForkNumber={fork}\n shouldShowPromptInput={true}\n verbose={verbose}\n commands={commands}\n tools={tools}\n safeMode={safe}\n initialMessages={messages}\n mcpClients={mcpClients}\n isDefaultModel={isDefaultModel}\n />,\n { exitOnCtrlC: false },\n )\n }\n } catch (error) {\n logError(`Failed to load conversation: ${error}`)\n process.exit(1)\n }\n } else {\n // Show the conversation selector UI\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <ResumeConversation\n context={context}\n commands={commands}\n logs={logs}\n tools={tools}\n verbose={verbose}\n />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n }\n })\n\n // claude error\n program\n .command('error')\n .description(\n 'View error logs. Optionally provide a number (0, -1, -2, etc.) to display a specific log.',\n )\n .argument(\n '[number]',\n 'A number (0, 1, 2, etc.) to display a specific log',\n parseInt,\n )\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (number, { cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_view_errors', { number: number?.toString() ?? '' })\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <LogList context={context} type=\"errors\" logNumber={number} />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n })\n\n // claude context (TODO: deprecate)\n const context = program\n .command('context')\n .description(\n `Set static context (eg. ${PRODUCT_COMMAND} context add-file ./src/*.py)`,\n )\n\n context\n .command('get <key>')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .description('Get a value from context')\n .action(async (key, { cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_context_get', { key })\n const context = omit(\n await getContext(),\n 'codeStyle',\n 'directoryStructure',\n )\n console.log(context[key])\n process.exit(0)\n })\n\n context\n .command('set <key> <value>')\n .description('Set a value in context')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (key, value, { cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_context_set', { key })\n setContext(key, value)\n console.log(`Set context.${key} to \"${value}\"`)\n process.exit(0)\n })\n\n context\n .command('list')\n .description('List all context values')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .action(async ({ cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_context_list', {})\n const context = omit(\n await getContext(),\n 'codeStyle',\n 'directoryStructure',\n 'gitStatus',\n )\n console.log(JSON.stringify(context, null, 2))\n process.exit(0)\n })\n\n context\n .command('remove <key>')\n .description('Remove a value from context')\n .option('-c, --cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (key, { cwd }) => {\n await setup(cwd, false)\n logEvent('tengu_context_delete', { key })\n removeContext(key)\n console.log(`Removed context.${key}`)\n process.exit(0)\n })\n\n await program.parseAsync(process.argv)\n return program\n}\n\n// TODO: stream?\nasync function stdin() {\n if (process.stdin.isTTY) {\n return ''\n }\n\n let data = ''\n for await (const chunk of process.stdin) data += chunk\n return data\n}\n\nprocess.on('exit', () => {\n resetCursor()\n PersistentShell.getInstance().close()\n})\n\nfunction gracefulExit(code = 0) {\n try { resetCursor() } catch {}\n try { PersistentShell.getInstance().close() } catch {}\n process.exit(code)\n}\n\nprocess.on('SIGINT', () => gracefulExit(0))\nprocess.on('SIGTERM', () => gracefulExit(0))\n// Windows CTRL+BREAK\nprocess.on('SIGBREAK', () => gracefulExit(0))\nprocess.on('unhandledRejection', err => {\n console.error('Unhandled rejection:', err)\n gracefulExit(1)\n})\nprocess.on('uncaughtException', err => {\n console.error('Uncaught exception:', err)\n gracefulExit(1)\n})\n\nfunction resetCursor() {\n const terminal = process.stderr.isTTY\n ? process.stderr\n : process.stdout.isTTY\n ? process.stdout\n : undefined\n terminal?.write(`\\u001B[?25h${cursorShow}`)\n}\n\nmain()\n"],
5
- "mappings": "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",
6
- "names": ["cwd", "env", "existsSync", "join", "config", "React", "getUpdateCommandSuggestions", "context", "commands"]
7
- }
@@ -1,150 +0,0 @@
1
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import {
4
- CallToolRequestSchema,
5
- ListToolsRequestSchema
6
- } from "@modelcontextprotocol/sdk/types.js";
7
- import { zodToJsonSchema } from "zod-to-json-schema";
8
- import { TaskTool } from "../tools/TaskTool/TaskTool.js";
9
- import { setCwd } from "../utils/state.js";
10
- import { getModelManager } from "../utils/model.js";
11
- import { logError } from "../utils/log.js";
12
- import { LSTool } from "../tools/lsTool/lsTool.js";
13
- import { BashTool } from "../tools/BashTool/BashTool.js";
14
- import { FileEditTool } from "../tools/FileEditTool/FileEditTool.js";
15
- import { FileReadTool } from "../tools/FileReadTool/FileReadTool.js";
16
- import { GlobTool } from "../tools/GlobTool/GlobTool.js";
17
- import { GrepTool } from "../tools/GrepTool/GrepTool.js";
18
- import { FileWriteTool } from "../tools/FileWriteTool/FileWriteTool.js";
19
- import review from "../commands/review.js";
20
- import { lastX } from "../utils/generators.js";
21
- import { MACRO } from "../constants/macros.js";
22
- const state = {
23
- readFileTimestamps: {}
24
- };
25
- const MCP_COMMANDS = [review];
26
- const MCP_TOOLS = [
27
- TaskTool,
28
- BashTool,
29
- FileEditTool,
30
- FileReadTool,
31
- GlobTool,
32
- GrepTool,
33
- FileWriteTool,
34
- LSTool
35
- ];
36
- async function startMCPServer(cwd) {
37
- await setCwd(cwd);
38
- const server = new Server(
39
- {
40
- name: "claude/tengu",
41
- version: MACRO.VERSION
42
- },
43
- {
44
- capabilities: {
45
- tools: {}
46
- }
47
- }
48
- );
49
- server.setRequestHandler(
50
- ListToolsRequestSchema,
51
- async () => {
52
- const tools = await Promise.all(
53
- MCP_TOOLS.map(async (tool) => ({
54
- ...tool,
55
- description: await tool.description(),
56
- inputSchema: zodToJsonSchema(tool.inputSchema)
57
- }))
58
- );
59
- return {
60
- tools
61
- };
62
- }
63
- );
64
- server.setRequestHandler(
65
- CallToolRequestSchema,
66
- async (request) => {
67
- const { name, arguments: args } = request.params;
68
- const tool = MCP_TOOLS.find((_) => _.name === name);
69
- if (!tool) {
70
- throw new Error(`Tool ${name} not found`);
71
- }
72
- try {
73
- if (!await tool.isEnabled()) {
74
- throw new Error(`Tool ${name} is not enabled`);
75
- }
76
- const model = getModelManager().getModelName("main");
77
- const validationResult = await tool.validateInput?.(
78
- args ?? {},
79
- {
80
- abortController: new AbortController(),
81
- options: {
82
- commands: MCP_COMMANDS,
83
- tools: MCP_TOOLS,
84
- forkNumber: 0,
85
- messageLogName: "unused",
86
- maxThinkingTokens: 0
87
- },
88
- messageId: void 0,
89
- readFileTimestamps: state.readFileTimestamps
90
- }
91
- );
92
- if (validationResult && !validationResult.result) {
93
- throw new Error(
94
- `Tool ${name} input is invalid: ${validationResult.message}`
95
- );
96
- }
97
- const result = tool.call(
98
- args ?? {},
99
- {
100
- abortController: new AbortController(),
101
- messageId: void 0,
102
- options: {
103
- commands: MCP_COMMANDS,
104
- tools: MCP_TOOLS,
105
- forkNumber: 0,
106
- messageLogName: "unused",
107
- maxThinkingTokens: 0
108
- },
109
- readFileTimestamps: state.readFileTimestamps
110
- }
111
- );
112
- const finalResult = await lastX(result);
113
- if (finalResult.type !== "result") {
114
- throw new Error(`Tool ${name} did not return a result`);
115
- }
116
- return {
117
- content: Array.isArray(finalResult) ? finalResult.map((item) => ({
118
- type: "text",
119
- text: "text" in item ? item.text : JSON.stringify(item)
120
- })) : [
121
- {
122
- type: "text",
123
- text: typeof finalResult === "string" ? finalResult : JSON.stringify(finalResult.data)
124
- }
125
- ]
126
- };
127
- } catch (error) {
128
- logError(error);
129
- return {
130
- isError: true,
131
- content: [
132
- {
133
- type: "text",
134
- text: `Error: ${error instanceof Error ? error.message : String(error)}`
135
- }
136
- ]
137
- };
138
- }
139
- }
140
- );
141
- async function runServer() {
142
- const transport = new StdioServerTransport();
143
- await server.connect(transport);
144
- }
145
- return await runServer();
146
- }
147
- export {
148
- startMCPServer
149
- };
150
- //# sourceMappingURL=mcp.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/entrypoints/mcp.ts"],
4
- "sourcesContent": ["import { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {\n CallToolRequestSchema,\n CallToolResultSchema,\n ListToolsRequestSchema,\n ListToolsResultSchema,\n ToolSchema,\n} from '@modelcontextprotocol/sdk/types.js'\nimport { z } from 'zod'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\nimport { TaskTool } from '../tools/TaskTool/TaskTool'\nimport { hasPermissionsToUseTool } from '../permissions'\nimport { setCwd } from '../utils/state'\nimport { getModelManager } from '../utils/model'\nimport { logError } from '../utils/log'\nimport { LSTool } from '../tools/lsTool/lsTool'\nimport { BashTool } from '../tools/BashTool/BashTool'\nimport { FileEditTool } from '../tools/FileEditTool/FileEditTool'\nimport { FileReadTool } from '../tools/FileReadTool/FileReadTool'\nimport { GlobTool } from '../tools/GlobTool/GlobTool'\nimport { GrepTool } from '../tools/GrepTool/GrepTool'\nimport { FileWriteTool } from '../tools/FileWriteTool/FileWriteTool'\nimport { Tool } from '../Tool'\nimport { Command } from '../commands'\nimport review from '../commands/review'\nimport { lastX } from '../utils/generators'\nimport { MACRO } from '../constants/macros'\ntype ToolInput = z.infer<typeof ToolSchema.shape.inputSchema>\n\nconst state: {\n readFileTimestamps: Record<string, number>\n} = {\n readFileTimestamps: {},\n}\n\nconst MCP_COMMANDS: Command[] = [review]\n\nconst MCP_TOOLS: Tool[] = [\n TaskTool as unknown as Tool,\n BashTool as unknown as Tool,\n FileEditTool as unknown as Tool,\n FileReadTool as unknown as Tool,\n GlobTool as unknown as Tool,\n GrepTool as unknown as Tool,\n FileWriteTool as unknown as Tool,\n LSTool as unknown as Tool,\n]\n\nexport async function startMCPServer(cwd: string): Promise<void> {\n await setCwd(cwd)\n const server = new Server(\n {\n name: 'claude/tengu',\n version: MACRO.VERSION,\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n\n server.setRequestHandler(\n ListToolsRequestSchema,\n async (): Promise<z.infer<typeof ListToolsResultSchema>> => {\n const tools = await Promise.all(\n MCP_TOOLS.map(async tool => ({\n ...tool,\n description: await tool.description(),\n inputSchema: zodToJsonSchema(tool.inputSchema) as ToolInput,\n })),\n )\n\n return {\n tools,\n }\n },\n )\n\n server.setRequestHandler(\n CallToolRequestSchema,\n async (request): Promise<z.infer<typeof CallToolResultSchema>> => {\n const { name, arguments: args } = request.params\n const tool = MCP_TOOLS.find(_ => _.name === name)\n if (!tool) {\n throw new Error(`Tool ${name} not found`)\n }\n\n // TODO: validate input types with zod\n try {\n if (!(await tool.isEnabled())) {\n throw new Error(`Tool ${name} is not enabled`)\n }\n const model = getModelManager().getModelName('main')\n const validationResult = await tool.validateInput?.(\n (args as never) ?? {},\n {\n abortController: new AbortController(),\n options: {\n commands: MCP_COMMANDS,\n tools: MCP_TOOLS,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n },\n messageId: undefined,\n readFileTimestamps: state.readFileTimestamps,\n },\n )\n if (validationResult && !validationResult.result) {\n throw new Error(\n `Tool ${name} input is invalid: ${validationResult.message}`,\n )\n }\n const result = tool.call(\n (args ?? {}) as never,\n {\n abortController: new AbortController(),\n messageId: undefined,\n options: {\n commands: MCP_COMMANDS,\n tools: MCP_TOOLS,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n },\n readFileTimestamps: state.readFileTimestamps,\n },\n )\n\n const finalResult = await lastX(result)\n\n if (finalResult.type !== 'result') {\n throw new Error(`Tool ${name} did not return a result`)\n }\n\n return {\n content: Array.isArray(finalResult)\n ? finalResult.map(item => ({\n type: 'text' as const,\n text: 'text' in item ? item.text : JSON.stringify(item),\n }))\n : [\n {\n type: 'text' as const,\n text:\n typeof finalResult === 'string'\n ? finalResult\n : JSON.stringify(finalResult.data),\n },\n ],\n }\n } catch (error) {\n logError(error)\n return {\n isError: true,\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n }\n }\n },\n )\n\n async function runServer() {\n const transport = new StdioServerTransport()\n await server.connect(transport)\n }\n\n return await runServer()\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
package/dist/history.js DELETED
@@ -1,25 +0,0 @@
1
- import {
2
- getCurrentProjectConfig,
3
- saveCurrentProjectConfig
4
- } from "./utils/config.js";
5
- const MAX_HISTORY_ITEMS = 100;
6
- function getHistory() {
7
- return getCurrentProjectConfig().history ?? [];
8
- }
9
- function addToHistory(command) {
10
- const projectConfig = getCurrentProjectConfig();
11
- const history = projectConfig.history ?? [];
12
- if (history[0] === command) {
13
- return;
14
- }
15
- history.unshift(command);
16
- saveCurrentProjectConfig({
17
- ...projectConfig,
18
- history: history.slice(0, MAX_HISTORY_ITEMS)
19
- });
20
- }
21
- export {
22
- addToHistory,
23
- getHistory
24
- };
25
- //# sourceMappingURL=history.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/history.ts"],
4
- "sourcesContent": ["import {\n getCurrentProjectConfig,\n saveCurrentProjectConfig,\n} from './utils/config.js'\n\nconst MAX_HISTORY_ITEMS = 100\n\nexport function getHistory(): string[] {\n return getCurrentProjectConfig().history ?? []\n}\n\nexport function addToHistory(command: string): void {\n const projectConfig = getCurrentProjectConfig()\n const history = projectConfig.history ?? []\n\n if (history[0] === command) {\n return\n }\n\n history.unshift(command)\n saveCurrentProjectConfig({\n ...projectConfig,\n history: history.slice(0, MAX_HISTORY_ITEMS),\n })\n}\n"],
5
- "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,MAAM,oBAAoB;AAEnB,SAAS,aAAuB;AACrC,SAAO,wBAAwB,EAAE,WAAW,CAAC;AAC/C;AAEO,SAAS,aAAa,SAAuB;AAClD,QAAM,gBAAgB,wBAAwB;AAC9C,QAAM,UAAU,cAAc,WAAW,CAAC;AAE1C,MAAI,QAAQ,CAAC,MAAM,SAAS;AAC1B;AAAA,EACF;AAEA,UAAQ,QAAQ,OAAO;AACvB,2BAAyB;AAAA,IACvB,GAAG;AAAA,IACH,SAAS,QAAQ,MAAM,GAAG,iBAAiB;AAAA,EAC7C,CAAC;AACH;",
6
- "names": []
7
- }
@@ -1,12 +0,0 @@
1
- function useApiKeyVerification() {
2
- return {
3
- status: "valid",
4
- reverify: async () => {
5
- },
6
- error: null
7
- };
8
- }
9
- export {
10
- useApiKeyVerification
11
- };
12
- //# sourceMappingURL=useApiKeyVerification.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/hooks/useApiKeyVerification.ts"],
4
- "sourcesContent": ["import { useCallback, useState } from 'react'\nimport { verifyApiKey } from '../services/claude'\nimport { getAnthropicApiKey } from '../utils/config'\n\nexport type VerificationStatus =\n | 'loading'\n | 'valid'\n | 'invalid'\n | 'missing'\n | 'error'\n\nexport type ApiKeyVerificationResult = {\n status: VerificationStatus\n reverify: () => Promise<void>\n error: Error | null\n}\n\nexport function useApiKeyVerification(): ApiKeyVerificationResult {\n // const [status, setStatus] = useState<VerificationStatus>(() => {\n // const apiKey = getAnthropicApiKey()\n // return apiKey ? 'loading' : 'missing'\n // })\n // const [error, setError] = useState<Error | null>(null)\n\n // const verify = useCallback(async (): Promise<void> => {\n // if (isDefaultApiKey()) {\n // setStatus('valid')\n // return\n // }\n\n // const apiKey = getAnthropicApiKey()\n // if (!apiKey) {\n // const newStatus = 'missing' as const\n // setStatus(newStatus)\n // return\n // }\n\n // try {\n // const isValid = await verifyApiKey(apiKey)\n // const newStatus = isValid ? 'valid' : 'invalid'\n // setStatus(newStatus)\n // return\n // } catch (error) {\n // // This happens when there an error response from the API but it's not an invalid API key error\n // // In this case, we still mark the API key as invalid - but we also log the error so we can\n // // display it to the user to be more helpful\n // setError(error as Error)\n // const newStatus = 'error' as const\n // setStatus(newStatus)\n // return\n // }\n // }, [])\n\n return {\n status: 'valid',\n reverify: async () => {},\n error: null,\n }\n}\n"],
5
- "mappings": "AAiBO,SAAS,wBAAkD;AAoChE,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,YAAY;AAAA,IAAC;AAAA,IACvB,OAAO;AAAA,EACT;AACF;",
6
- "names": []
7
- }
@@ -1,50 +0,0 @@
1
- import { useState } from "react";
2
- import { getHistory } from "../history.js";
3
- function useArrowKeyHistory(onSetInput, currentInput) {
4
- const [historyIndex, setHistoryIndex] = useState(0);
5
- const [lastTypedInput, setLastTypedInput] = useState("");
6
- const updateInput = (input) => {
7
- if (input !== void 0) {
8
- const mode = input.startsWith("!") ? "bash" : "prompt";
9
- const value = mode === "bash" ? input.slice(1) : input;
10
- onSetInput(value, mode);
11
- }
12
- };
13
- function onHistoryUp() {
14
- const latestHistory = getHistory();
15
- if (historyIndex < latestHistory.length) {
16
- if (historyIndex === 0 && currentInput.trim() !== "") {
17
- setLastTypedInput(currentInput);
18
- }
19
- const newIndex = historyIndex + 1;
20
- setHistoryIndex(newIndex);
21
- updateInput(latestHistory[historyIndex]);
22
- }
23
- }
24
- function onHistoryDown() {
25
- const latestHistory = getHistory();
26
- if (historyIndex > 1) {
27
- const newIndex = historyIndex - 1;
28
- setHistoryIndex(newIndex);
29
- updateInput(latestHistory[newIndex - 1]);
30
- } else if (historyIndex === 1) {
31
- setHistoryIndex(0);
32
- updateInput(lastTypedInput);
33
- }
34
- }
35
- function resetHistory() {
36
- setLastTypedInput("");
37
- setHistoryIndex(0);
38
- }
39
- return {
40
- historyIndex,
41
- setHistoryIndex,
42
- onHistoryUp,
43
- onHistoryDown,
44
- resetHistory
45
- };
46
- }
47
- export {
48
- useArrowKeyHistory
49
- };
50
- //# sourceMappingURL=useArrowKeyHistory.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/hooks/useArrowKeyHistory.ts"],
4
- "sourcesContent": ["import { useState } from 'react'\nimport { getHistory } from '../history'\n\nexport function useArrowKeyHistory(\n onSetInput: (value: string, mode: 'bash' | 'prompt') => void,\n currentInput: string,\n) {\n const [historyIndex, setHistoryIndex] = useState(0)\n const [lastTypedInput, setLastTypedInput] = useState('')\n\n const updateInput = (input: string | undefined) => {\n if (input !== undefined) {\n const mode = input.startsWith('!') ? 'bash' : 'prompt'\n const value = mode === 'bash' ? input.slice(1) : input\n onSetInput(value, mode)\n }\n }\n\n function onHistoryUp() {\n const latestHistory = getHistory()\n if (historyIndex < latestHistory.length) {\n if (historyIndex === 0 && currentInput.trim() !== '') {\n setLastTypedInput(currentInput)\n }\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n updateInput(latestHistory[historyIndex])\n }\n }\n\n function onHistoryDown() {\n const latestHistory = getHistory()\n if (historyIndex > 1) {\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n updateInput(latestHistory[newIndex - 1])\n } else if (historyIndex === 1) {\n setHistoryIndex(0)\n updateInput(lastTypedInput)\n }\n }\n\n function resetHistory() {\n setLastTypedInput('')\n setHistoryIndex(0)\n }\n\n return {\n historyIndex,\n setHistoryIndex,\n onHistoryUp,\n onHistoryDown,\n resetHistory,\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAEpB,SAAS,mBACd,YACA,cACA;AACA,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAC;AAClD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,EAAE;AAEvD,QAAM,cAAc,CAAC,UAA8B;AACjD,QAAI,UAAU,QAAW;AACvB,YAAM,OAAO,MAAM,WAAW,GAAG,IAAI,SAAS;AAC9C,YAAM,QAAQ,SAAS,SAAS,MAAM,MAAM,CAAC,IAAI;AACjD,iBAAW,OAAO,IAAI;AAAA,IACxB;AAAA,EACF;AAEA,WAAS,cAAc;AACrB,UAAM,gBAAgB,WAAW;AACjC,QAAI,eAAe,cAAc,QAAQ;AACvC,UAAI,iBAAiB,KAAK,aAAa,KAAK,MAAM,IAAI;AACpD,0BAAkB,YAAY;AAAA,MAChC;AACA,YAAM,WAAW,eAAe;AAChC,sBAAgB,QAAQ;AACxB,kBAAY,cAAc,YAAY,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,WAAS,gBAAgB;AACvB,UAAM,gBAAgB,WAAW;AACjC,QAAI,eAAe,GAAG;AACpB,YAAM,WAAW,eAAe;AAChC,sBAAgB,QAAQ;AACxB,kBAAY,cAAc,WAAW,CAAC,CAAC;AAAA,IACzC,WAAW,iBAAiB,GAAG;AAC7B,sBAAgB,CAAC;AACjB,kBAAY,cAAc;AAAA,IAC5B;AAAA,EACF;AAEA,WAAS,eAAe;AACtB,sBAAkB,EAAE;AACpB,oBAAgB,CAAC;AAAA,EACnB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,112 +0,0 @@
1
- import { useCallback } from "react";
2
- import { hasPermissionsToUseTool } from "../permissions.js";
3
- import { logEvent } from "../services/statsig.js";
4
- import { BashTool, inputSchema } from "../tools/BashTool/BashTool.js";
5
- import { getCommandSubcommandPrefix } from "../utils/commands.js";
6
- import { REJECT_MESSAGE } from "../utils/messages.js";
7
- import { AbortError } from "../utils/errors.js";
8
- import { logError } from "../utils/log.js";
9
- function useCanUseTool(setToolUseConfirm) {
10
- return useCallback(
11
- async (tool, input, toolUseContext, assistantMessage) => {
12
- return new Promise((resolve) => {
13
- function logCancelledEvent() {
14
- logEvent("tengu_tool_use_cancelled", {
15
- messageID: assistantMessage.message.id,
16
- toolName: tool.name
17
- });
18
- }
19
- function resolveWithCancelledAndAbortAllToolCalls() {
20
- resolve({
21
- result: false,
22
- message: REJECT_MESSAGE
23
- });
24
- toolUseContext.abortController.abort();
25
- }
26
- if (toolUseContext.abortController.signal.aborted) {
27
- logCancelledEvent();
28
- resolveWithCancelledAndAbortAllToolCalls();
29
- return;
30
- }
31
- return hasPermissionsToUseTool(
32
- tool,
33
- input,
34
- toolUseContext,
35
- assistantMessage
36
- ).then(async (result) => {
37
- if (result.result) {
38
- logEvent("tengu_tool_use_granted_in_config", {
39
- messageID: assistantMessage.message.id,
40
- toolName: tool.name
41
- });
42
- resolve({ result: true });
43
- return;
44
- }
45
- const [description, commandPrefix] = await Promise.all([
46
- tool.description(input),
47
- tool === BashTool ? getCommandSubcommandPrefix(
48
- inputSchema.parse(input).command,
49
- // already validated upstream, so ok to parse (as opposed to safeParse)
50
- toolUseContext.abortController.signal
51
- ) : Promise.resolve(null)
52
- ]);
53
- if (toolUseContext.abortController.signal.aborted) {
54
- logCancelledEvent();
55
- resolveWithCancelledAndAbortAllToolCalls();
56
- return;
57
- }
58
- setToolUseConfirm({
59
- assistantMessage,
60
- tool,
61
- description,
62
- input,
63
- commandPrefix,
64
- riskScore: null,
65
- onAbort() {
66
- logCancelledEvent();
67
- logEvent("tengu_tool_use_rejected_in_prompt", {
68
- messageID: assistantMessage.message.id,
69
- toolName: tool.name
70
- });
71
- resolveWithCancelledAndAbortAllToolCalls();
72
- },
73
- onAllow(type) {
74
- if (type === "permanent") {
75
- logEvent("tengu_tool_use_granted_in_prompt_permanent", {
76
- messageID: assistantMessage.message.id,
77
- toolName: tool.name
78
- });
79
- } else {
80
- logEvent("tengu_tool_use_granted_in_prompt_temporary", {
81
- messageID: assistantMessage.message.id,
82
- toolName: tool.name
83
- });
84
- }
85
- resolve({ result: true });
86
- },
87
- onReject() {
88
- logEvent("tengu_tool_use_rejected_in_prompt", {
89
- messageID: assistantMessage.message.id,
90
- toolName: tool.name
91
- });
92
- resolveWithCancelledAndAbortAllToolCalls();
93
- }
94
- });
95
- }).catch((error) => {
96
- if (error instanceof AbortError) {
97
- logCancelledEvent();
98
- resolveWithCancelledAndAbortAllToolCalls();
99
- } else {
100
- logError(error);
101
- }
102
- });
103
- });
104
- },
105
- [setToolUseConfirm]
106
- );
107
- }
108
- var useCanUseTool_default = useCanUseTool;
109
- export {
110
- useCanUseTool_default as default
111
- };
112
- //# sourceMappingURL=useCanUseTool.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/hooks/useCanUseTool.ts"],
4
- "sourcesContent": ["import React, { useCallback } from 'react'\nimport { hasPermissionsToUseTool } from '../permissions'\nimport { logEvent } from '../services/statsig'\nimport { BashTool, inputSchema } from '../tools/BashTool/BashTool'\nimport { getCommandSubcommandPrefix } from '../utils/commands'\nimport { REJECT_MESSAGE } from '../utils/messages'\nimport type { Tool as ToolType, ToolUseContext } from '../Tool'\nimport { AssistantMessage } from '../query'\nimport { ToolUseConfirm } from '../components/permissions/PermissionRequest'\nimport { AbortError } from '../utils/errors'\nimport { logError } from '../utils/log'\n\ntype SetState<T> = React.Dispatch<React.SetStateAction<T>>\n\nexport type CanUseToolFn = (\n tool: ToolType,\n input: { [key: string]: unknown },\n toolUseContext: ToolUseContext,\n assistantMessage: AssistantMessage,\n) => Promise<{ result: true } | { result: false; message: string }>\n\nfunction useCanUseTool(\n setToolUseConfirm: SetState<ToolUseConfirm | null>,\n): CanUseToolFn {\n return useCallback<CanUseToolFn>(\n async (tool, input, toolUseContext, assistantMessage) => {\n return new Promise(resolve => {\n function logCancelledEvent() {\n logEvent('tengu_tool_use_cancelled', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n }\n\n function resolveWithCancelledAndAbortAllToolCalls() {\n resolve({\n result: false,\n message: REJECT_MESSAGE,\n })\n // Trigger a synthetic assistant message in query(), to cancel\n // any other pending tool uses and stop further requests to the\n // API and wait for user input.\n toolUseContext.abortController.abort()\n }\n\n if (toolUseContext.abortController.signal.aborted) {\n logCancelledEvent()\n resolveWithCancelledAndAbortAllToolCalls()\n return\n }\n\n return hasPermissionsToUseTool(\n tool,\n input,\n toolUseContext,\n assistantMessage,\n )\n .then(async result => {\n // Has permissions to use tool, granted in config\n if (result.result) {\n logEvent('tengu_tool_use_granted_in_config', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n resolve({ result: true })\n return\n }\n\n const [description, commandPrefix] = await Promise.all([\n tool.description(input as never),\n tool === BashTool\n ? getCommandSubcommandPrefix(\n inputSchema.parse(input).command, // already validated upstream, so ok to parse (as opposed to safeParse)\n toolUseContext.abortController.signal,\n )\n : Promise.resolve(null),\n ])\n\n if (toolUseContext.abortController.signal.aborted) {\n logCancelledEvent()\n resolveWithCancelledAndAbortAllToolCalls()\n return\n }\n\n // Does not have permissions to use tool, ask the user\n setToolUseConfirm({\n assistantMessage,\n tool,\n description,\n input,\n commandPrefix,\n riskScore: null,\n onAbort() {\n logCancelledEvent()\n logEvent('tengu_tool_use_rejected_in_prompt', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n resolveWithCancelledAndAbortAllToolCalls()\n },\n onAllow(type) {\n if (type === 'permanent') {\n logEvent('tengu_tool_use_granted_in_prompt_permanent', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n } else {\n logEvent('tengu_tool_use_granted_in_prompt_temporary', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n }\n resolve({ result: true })\n },\n onReject() {\n logEvent('tengu_tool_use_rejected_in_prompt', {\n messageID: assistantMessage.message.id,\n toolName: tool.name,\n })\n resolveWithCancelledAndAbortAllToolCalls()\n },\n })\n })\n .catch(error => {\n if (error instanceof AbortError) {\n logCancelledEvent()\n resolveWithCancelledAndAbortAllToolCalls()\n } else {\n logError(error)\n }\n })\n })\n },\n [setToolUseConfirm],\n )\n}\n\nexport default useCanUseTool\n"],
5
- "mappings": "AAAA,SAAgB,mBAAmB;AACnC,SAAS,+BAA+B;AACxC,SAAS,gBAAgB;AACzB,SAAS,UAAU,mBAAmB;AACtC,SAAS,kCAAkC;AAC3C,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAWzB,SAAS,cACP,mBACc;AACd,SAAO;AAAA,IACL,OAAO,MAAM,OAAO,gBAAgB,qBAAqB;AACvD,aAAO,IAAI,QAAQ,aAAW;AAC5B,iBAAS,oBAAoB;AAC3B,mBAAS,4BAA4B;AAAA,YACnC,WAAW,iBAAiB,QAAQ;AAAA,YACpC,UAAU,KAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAEA,iBAAS,2CAA2C;AAClD,kBAAQ;AAAA,YACN,QAAQ;AAAA,YACR,SAAS;AAAA,UACX,CAAC;AAID,yBAAe,gBAAgB,MAAM;AAAA,QACvC;AAEA,YAAI,eAAe,gBAAgB,OAAO,SAAS;AACjD,4BAAkB;AAClB,mDAAyC;AACzC;AAAA,QACF;AAEA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,EACG,KAAK,OAAM,WAAU;AAEpB,cAAI,OAAO,QAAQ;AACjB,qBAAS,oCAAoC;AAAA,cAC3C,WAAW,iBAAiB,QAAQ;AAAA,cACpC,UAAU,KAAK;AAAA,YACjB,CAAC;AACD,oBAAQ,EAAE,QAAQ,KAAK,CAAC;AACxB;AAAA,UACF;AAEA,gBAAM,CAAC,aAAa,aAAa,IAAI,MAAM,QAAQ,IAAI;AAAA,YACrD,KAAK,YAAY,KAAc;AAAA,YAC/B,SAAS,WACL;AAAA,cACE,YAAY,MAAM,KAAK,EAAE;AAAA;AAAA,cACzB,eAAe,gBAAgB;AAAA,YACjC,IACA,QAAQ,QAAQ,IAAI;AAAA,UAC1B,CAAC;AAED,cAAI,eAAe,gBAAgB,OAAO,SAAS;AACjD,8BAAkB;AAClB,qDAAyC;AACzC;AAAA,UACF;AAGA,4BAAkB;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU;AACR,gCAAkB;AAClB,uBAAS,qCAAqC;AAAA,gBAC5C,WAAW,iBAAiB,QAAQ;AAAA,gBACpC,UAAU,KAAK;AAAA,cACjB,CAAC;AACD,uDAAyC;AAAA,YAC3C;AAAA,YACA,QAAQ,MAAM;AACZ,kBAAI,SAAS,aAAa;AACxB,yBAAS,8CAA8C;AAAA,kBACrD,WAAW,iBAAiB,QAAQ;AAAA,kBACpC,UAAU,KAAK;AAAA,gBACjB,CAAC;AAAA,cACH,OAAO;AACL,yBAAS,8CAA8C;AAAA,kBACrD,WAAW,iBAAiB,QAAQ;AAAA,kBACpC,UAAU,KAAK;AAAA,gBACjB,CAAC;AAAA,cACH;AACA,sBAAQ,EAAE,QAAQ,KAAK,CAAC;AAAA,YAC1B;AAAA,YACA,WAAW;AACT,uBAAS,qCAAqC;AAAA,gBAC5C,WAAW,iBAAiB,QAAQ;AAAA,gBACpC,UAAU,KAAK;AAAA,cACjB,CAAC;AACD,uDAAyC;AAAA,YAC3C;AAAA,UACF,CAAC;AAAA,QACH,CAAC,EACA,MAAM,WAAS;AACd,cAAI,iBAAiB,YAAY;AAC/B,8BAAkB;AAClB,qDAAyC;AAAA,UAC3C,OAAO;AACL,qBAAS,KAAK;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACL,CAAC;AAAA,IACH;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AACF;AAEA,IAAO,wBAAQ;",
6
- "names": []
7
- }