@shareai-lab/kode 1.2.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (725) hide show
  1. package/README.md +25 -388
  2. package/cli-acp.js +82 -0
  3. package/cli.js +89 -79
  4. package/dist/REPL-GIU4ZIXM.js +42 -0
  5. package/dist/acp-H3VJ77YG.js +1357 -0
  6. package/dist/acp-H3VJ77YG.js.map +7 -0
  7. package/dist/agentsValidate-XP3CFN6F.js +373 -0
  8. package/dist/agentsValidate-XP3CFN6F.js.map +7 -0
  9. package/dist/ask-3G5H5KD5.js +125 -0
  10. package/dist/ask-3G5H5KD5.js.map +7 -0
  11. package/dist/autoUpdater-DNRMJWFQ.js +17 -0
  12. package/dist/chunk-2KWKUXLT.js +490 -0
  13. package/dist/chunk-2KWKUXLT.js.map +7 -0
  14. package/dist/chunk-2PMO2FS2.js +1097 -0
  15. package/dist/chunk-2PMO2FS2.js.map +7 -0
  16. package/dist/chunk-3RUXVV4S.js +23 -0
  17. package/dist/chunk-3RUXVV4S.js.map +7 -0
  18. package/dist/chunk-3TXNP6HH.js +240 -0
  19. package/dist/chunk-3TXNP6HH.js.map +7 -0
  20. package/dist/chunk-4GAIJGRH.js +472 -0
  21. package/dist/chunk-4GAIJGRH.js.map +7 -0
  22. package/dist/chunk-4RTX4AG4.js +249 -0
  23. package/dist/chunk-4RTX4AG4.js.map +7 -0
  24. package/dist/chunk-54DNHKOD.js +511 -0
  25. package/dist/chunk-54DNHKOD.js.map +7 -0
  26. package/dist/chunk-67PY5IX6.js +34 -0
  27. package/dist/chunk-67PY5IX6.js.map +7 -0
  28. package/dist/chunk-6DRDLOLP.js +2613 -0
  29. package/dist/chunk-6DRDLOLP.js.map +7 -0
  30. package/dist/chunk-7CQVZNQV.js +1609 -0
  31. package/dist/chunk-7CQVZNQV.js.map +7 -0
  32. package/dist/chunk-ABLVTESJ.js +19 -0
  33. package/dist/chunk-ABLVTESJ.js.map +7 -0
  34. package/dist/{utils/config.js → chunk-AIMIPK4B.js} +351 -171
  35. package/dist/chunk-AIMIPK4B.js.map +7 -0
  36. package/dist/{utils/autoUpdater.js → chunk-BHGTA6JQ.js} +38 -21
  37. package/dist/chunk-BHGTA6JQ.js.map +7 -0
  38. package/dist/chunk-CIG63V4E.js +72 -0
  39. package/dist/chunk-CIG63V4E.js.map +7 -0
  40. package/dist/chunk-E6YNABER.js +24 -0
  41. package/dist/chunk-E6YNABER.js.map +7 -0
  42. package/dist/chunk-EH34V7CY.js +191 -0
  43. package/dist/chunk-EH34V7CY.js.map +7 -0
  44. package/dist/{cost-tracker.js → chunk-EZXMVTDU.js} +51 -32
  45. package/dist/chunk-EZXMVTDU.js.map +7 -0
  46. package/dist/chunk-FH5CHM6L.js +148 -0
  47. package/dist/chunk-FH5CHM6L.js.map +7 -0
  48. package/dist/chunk-G6I7XROM.js +138 -0
  49. package/dist/chunk-G6I7XROM.js.map +7 -0
  50. package/dist/chunk-HN4E4UUQ.js +96 -0
  51. package/dist/chunk-HN4E4UUQ.js.map +7 -0
  52. package/dist/chunk-HSPVVDIW.js +30198 -0
  53. package/dist/chunk-HSPVVDIW.js.map +7 -0
  54. package/dist/{services/systemReminder.js → chunk-IE2CG2TV.js} +221 -59
  55. package/dist/chunk-IE2CG2TV.js.map +7 -0
  56. package/dist/chunk-JC6NCUG5.js +11 -0
  57. package/dist/chunk-K2MI4TPB.js +1256 -0
  58. package/dist/chunk-K2MI4TPB.js.map +7 -0
  59. package/dist/chunk-KAA5BGMQ.js +12 -0
  60. package/dist/chunk-KAA5BGMQ.js.map +7 -0
  61. package/dist/chunk-MN77D2F7.js +2931 -0
  62. package/dist/chunk-MN77D2F7.js.map +7 -0
  63. package/dist/chunk-NPFOMITO.js +21 -0
  64. package/dist/chunk-NPFOMITO.js.map +7 -0
  65. package/dist/chunk-NQLEUHMS.js +196 -0
  66. package/dist/chunk-NQLEUHMS.js.map +7 -0
  67. package/dist/chunk-OIFQB3S4.js +515 -0
  68. package/dist/chunk-OIFQB3S4.js.map +7 -0
  69. package/dist/chunk-OWTG2W3A.js +164 -0
  70. package/dist/chunk-OWTG2W3A.js.map +7 -0
  71. package/dist/chunk-OZNRLY3E.js +735 -0
  72. package/dist/chunk-OZNRLY3E.js.map +7 -0
  73. package/dist/{utils/debugLogger.js → chunk-QYFKRZQC.js} +107 -204
  74. package/dist/chunk-QYFKRZQC.js.map +7 -0
  75. package/dist/chunk-S3J2TLV6.js +16 -0
  76. package/dist/chunk-S3J2TLV6.js.map +7 -0
  77. package/dist/chunk-S6HRABTA.js +95 -0
  78. package/dist/chunk-S6HRABTA.js.map +7 -0
  79. package/dist/{utils/theme.js → chunk-SDGKPKDK.js} +28 -6
  80. package/dist/chunk-SDGKPKDK.js.map +7 -0
  81. package/dist/chunk-SRZZFAS7.js +766 -0
  82. package/dist/chunk-SRZZFAS7.js.map +7 -0
  83. package/dist/chunk-UKHTVRJM.js +47 -0
  84. package/dist/chunk-UKHTVRJM.js.map +7 -0
  85. package/dist/chunk-UYXEDKOZ.js +24 -0
  86. package/dist/chunk-UYXEDKOZ.js.map +7 -0
  87. package/dist/chunk-VBXVYQYY.js +145 -0
  88. package/dist/chunk-VBXVYQYY.js.map +7 -0
  89. package/dist/chunk-WVHORZQ5.js +17 -0
  90. package/dist/chunk-WVHORZQ5.js.map +7 -0
  91. package/dist/chunk-WWUWDNWW.js +49 -0
  92. package/dist/chunk-WWUWDNWW.js.map +7 -0
  93. package/dist/{utils/model.js → chunk-Z33T5YN5.js} +194 -227
  94. package/dist/chunk-Z33T5YN5.js.map +7 -0
  95. package/dist/{services/openai.js → chunk-ZQU3TXLC.js} +168 -234
  96. package/dist/chunk-ZQU3TXLC.js.map +7 -0
  97. package/dist/cli-SRV2INSL.js +3917 -0
  98. package/dist/cli-SRV2INSL.js.map +7 -0
  99. package/dist/commands-TWH6PGVG.js +46 -0
  100. package/dist/config-6ZMBCL23.js +81 -0
  101. package/dist/context-JQIOOI4W.js +30 -0
  102. package/dist/costTracker-6SL26FDB.js +19 -0
  103. package/dist/customCommands-DNEJS3ZU.js +25 -0
  104. package/dist/customCommands-DNEJS3ZU.js.map +7 -0
  105. package/dist/env-OFAXZ3XG.js +22 -0
  106. package/dist/env-OFAXZ3XG.js.map +7 -0
  107. package/dist/index.js +34 -5
  108. package/dist/index.js.map +4 -4
  109. package/dist/kodeAgentSessionId-X6XWQW7B.js +13 -0
  110. package/dist/kodeAgentSessionId-X6XWQW7B.js.map +7 -0
  111. package/dist/kodeAgentSessionLoad-6N27AC5K.js +18 -0
  112. package/dist/kodeAgentSessionLoad-6N27AC5K.js.map +7 -0
  113. package/dist/kodeAgentSessionResume-HUSAEO24.js +16 -0
  114. package/dist/kodeAgentSessionResume-HUSAEO24.js.map +7 -0
  115. package/dist/kodeAgentStreamJson-NXFN7TXH.js +13 -0
  116. package/dist/kodeAgentStreamJson-NXFN7TXH.js.map +7 -0
  117. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js +131 -0
  118. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +7 -0
  119. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +10 -0
  120. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js.map +7 -0
  121. package/dist/kodeHooks-TDMXFWSO.js +36 -0
  122. package/dist/kodeHooks-TDMXFWSO.js.map +7 -0
  123. package/dist/llm-XVXWYOHK.js +3118 -0
  124. package/dist/llm-XVXWYOHK.js.map +7 -0
  125. package/dist/llmLazy-7TD5N7XP.js +15 -0
  126. package/dist/llmLazy-7TD5N7XP.js.map +7 -0
  127. package/dist/loader-AUXIJTY6.js +28 -0
  128. package/dist/loader-AUXIJTY6.js.map +7 -0
  129. package/dist/mcp-BXJ3K7NZ.js +49 -0
  130. package/dist/mcp-BXJ3K7NZ.js.map +7 -0
  131. package/dist/{services/mentionProcessor.js → mentionProcessor-YD7YXYGF.js} +61 -50
  132. package/dist/mentionProcessor-YD7YXYGF.js.map +7 -0
  133. package/dist/messages-OFUJSPRV.js +63 -0
  134. package/dist/messages-OFUJSPRV.js.map +7 -0
  135. package/dist/model-KPYCXWBK.js +30 -0
  136. package/dist/model-KPYCXWBK.js.map +7 -0
  137. package/dist/openai-5G5D5Q4B.js +29 -0
  138. package/dist/openai-5G5D5Q4B.js.map +7 -0
  139. package/dist/outputStyles-HLDXFQK3.js +28 -0
  140. package/dist/outputStyles-HLDXFQK3.js.map +7 -0
  141. package/dist/package.json +1 -1
  142. package/dist/pluginRuntime-FPTKK6NY.js +218 -0
  143. package/dist/pluginRuntime-FPTKK6NY.js.map +7 -0
  144. package/dist/pluginValidation-DSFXZ4GF.js +17 -0
  145. package/dist/pluginValidation-DSFXZ4GF.js.map +7 -0
  146. package/dist/prompts-LWLAJRS2.js +48 -0
  147. package/dist/prompts-LWLAJRS2.js.map +7 -0
  148. package/dist/query-HVPWL27C.js +50 -0
  149. package/dist/query-HVPWL27C.js.map +7 -0
  150. package/dist/responsesStreaming-AW344PQO.js +10 -0
  151. package/dist/responsesStreaming-AW344PQO.js.map +7 -0
  152. package/dist/ripgrep-YOPCY2GO.js +17 -0
  153. package/dist/ripgrep-YOPCY2GO.js.map +7 -0
  154. package/dist/skillMarketplace-PSNKDINM.js +37 -0
  155. package/dist/skillMarketplace-PSNKDINM.js.map +7 -0
  156. package/dist/state-KNRWP3FO.js +16 -0
  157. package/dist/state-KNRWP3FO.js.map +7 -0
  158. package/dist/theme-7S2QN2FO.js +14 -0
  159. package/dist/theme-7S2QN2FO.js.map +7 -0
  160. package/dist/toolPermissionContext-65L65VEZ.js +17 -0
  161. package/dist/toolPermissionContext-65L65VEZ.js.map +7 -0
  162. package/dist/toolPermissionSettings-GPOBH4IV.js +18 -0
  163. package/dist/toolPermissionSettings-GPOBH4IV.js.map +7 -0
  164. package/dist/tools-FZU2FZBD.js +47 -0
  165. package/dist/tools-FZU2FZBD.js.map +7 -0
  166. package/dist/userInput-VHNBN2MW.js +311 -0
  167. package/dist/userInput-VHNBN2MW.js.map +7 -0
  168. package/dist/uuid-QN2CNKKN.js +9 -0
  169. package/dist/uuid-QN2CNKKN.js.map +7 -0
  170. package/package.json +43 -14
  171. package/scripts/binary-utils.cjs +62 -0
  172. package/scripts/cli-acp-wrapper.cjs +82 -0
  173. package/scripts/cli-wrapper.cjs +105 -0
  174. package/scripts/postinstall.js +135 -9
  175. package/LICENSE +0 -201
  176. package/README.zh-CN.md +0 -312
  177. package/dist/ProjectOnboarding.js +0 -99
  178. package/dist/ProjectOnboarding.js.map +0 -7
  179. package/dist/Tool.js +0 -1
  180. package/dist/commands/agents.js +0 -2087
  181. package/dist/commands/agents.js.map +0 -7
  182. package/dist/commands/approvedTools.js +0 -36
  183. package/dist/commands/approvedTools.js.map +0 -7
  184. package/dist/commands/bug.js +0 -21
  185. package/dist/commands/bug.js.map +0 -7
  186. package/dist/commands/clear.js +0 -37
  187. package/dist/commands/clear.js.map +0 -7
  188. package/dist/commands/compact.js +0 -104
  189. package/dist/commands/compact.js.map +0 -7
  190. package/dist/commands/config.js +0 -20
  191. package/dist/commands/config.js.map +0 -7
  192. package/dist/commands/cost.js +0 -19
  193. package/dist/commands/cost.js.map +0 -7
  194. package/dist/commands/ctx_viz.js +0 -152
  195. package/dist/commands/ctx_viz.js.map +0 -7
  196. package/dist/commands/doctor.js +0 -25
  197. package/dist/commands/doctor.js.map +0 -7
  198. package/dist/commands/help.js +0 -20
  199. package/dist/commands/help.js.map +0 -7
  200. package/dist/commands/init.js +0 -38
  201. package/dist/commands/init.js.map +0 -7
  202. package/dist/commands/listen.js +0 -37
  203. package/dist/commands/listen.js.map +0 -7
  204. package/dist/commands/login.js +0 -37
  205. package/dist/commands/login.js.map +0 -7
  206. package/dist/commands/logout.js +0 -33
  207. package/dist/commands/logout.js.map +0 -7
  208. package/dist/commands/mcp.js +0 -34
  209. package/dist/commands/mcp.js.map +0 -7
  210. package/dist/commands/model.js +0 -41
  211. package/dist/commands/model.js.map +0 -7
  212. package/dist/commands/modelstatus.js +0 -21
  213. package/dist/commands/modelstatus.js.map +0 -7
  214. package/dist/commands/onboarding.js +0 -36
  215. package/dist/commands/onboarding.js.map +0 -7
  216. package/dist/commands/pr_comments.js +0 -61
  217. package/dist/commands/pr_comments.js.map +0 -7
  218. package/dist/commands/refreshCommands.js +0 -37
  219. package/dist/commands/refreshCommands.js.map +0 -7
  220. package/dist/commands/release-notes.js +0 -30
  221. package/dist/commands/release-notes.js.map +0 -7
  222. package/dist/commands/resume.js +0 -35
  223. package/dist/commands/resume.js.map +0 -7
  224. package/dist/commands/review.js +0 -51
  225. package/dist/commands/review.js.map +0 -7
  226. package/dist/commands/terminalSetup.js +0 -163
  227. package/dist/commands/terminalSetup.js.map +0 -7
  228. package/dist/commands.js +0 -84
  229. package/dist/commands.js.map +0 -7
  230. package/dist/components/ApproveApiKey.js +0 -74
  231. package/dist/components/ApproveApiKey.js.map +0 -7
  232. package/dist/components/AsciiLogo.js +0 -12
  233. package/dist/components/AsciiLogo.js.map +0 -7
  234. package/dist/components/AutoUpdater.js +0 -74
  235. package/dist/components/AutoUpdater.js.map +0 -7
  236. package/dist/components/Bug.js +0 -147
  237. package/dist/components/Bug.js.map +0 -7
  238. package/dist/components/Config.js +0 -166
  239. package/dist/components/Config.js.map +0 -7
  240. package/dist/components/ConsoleOAuthFlow.js +0 -188
  241. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  242. package/dist/components/Cost.js +0 -13
  243. package/dist/components/Cost.js.map +0 -7
  244. package/dist/components/CostThresholdDialog.js +0 -38
  245. package/dist/components/CostThresholdDialog.js.map +0 -7
  246. package/dist/components/CustomSelect/option-map.js +0 -32
  247. package/dist/components/CustomSelect/option-map.js.map +0 -7
  248. package/dist/components/CustomSelect/select-option.js +0 -34
  249. package/dist/components/CustomSelect/select-option.js.map +0 -7
  250. package/dist/components/CustomSelect/select.js +0 -64
  251. package/dist/components/CustomSelect/select.js.map +0 -7
  252. package/dist/components/CustomSelect/theme.js +0 -1
  253. package/dist/components/CustomSelect/use-select-state.js +0 -220
  254. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  255. package/dist/components/CustomSelect/use-select.js +0 -21
  256. package/dist/components/CustomSelect/use-select.js.map +0 -7
  257. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  258. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  259. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  260. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  261. package/dist/components/Help.js +0 -41
  262. package/dist/components/Help.js.map +0 -7
  263. package/dist/components/HighlightedCode.js +0 -30
  264. package/dist/components/HighlightedCode.js.map +0 -7
  265. package/dist/components/InvalidConfigDialog.js +0 -83
  266. package/dist/components/InvalidConfigDialog.js.map +0 -7
  267. package/dist/components/Link.js +0 -18
  268. package/dist/components/Link.js.map +0 -7
  269. package/dist/components/LogSelector.js +0 -50
  270. package/dist/components/LogSelector.js.map +0 -7
  271. package/dist/components/Logo.js +0 -94
  272. package/dist/components/Logo.js.map +0 -7
  273. package/dist/components/MCPServerApprovalDialog.js +0 -79
  274. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  275. package/dist/components/MCPServerDialogCopy.js +0 -11
  276. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  277. package/dist/components/MCPServerMultiselectDialog.js +0 -80
  278. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  279. package/dist/components/Message.js +0 -146
  280. package/dist/components/Message.js.map +0 -7
  281. package/dist/components/MessageResponse.js +0 -9
  282. package/dist/components/MessageResponse.js.map +0 -7
  283. package/dist/components/MessageSelector.js +0 -133
  284. package/dist/components/MessageSelector.js.map +0 -7
  285. package/dist/components/ModeIndicator.js +0 -38
  286. package/dist/components/ModeIndicator.js.map +0 -7
  287. package/dist/components/ModelConfig.js +0 -208
  288. package/dist/components/ModelConfig.js.map +0 -7
  289. package/dist/components/ModelListManager.js +0 -140
  290. package/dist/components/ModelListManager.js.map +0 -7
  291. package/dist/components/ModelSelector.js +0 -1985
  292. package/dist/components/ModelSelector.js.map +0 -7
  293. package/dist/components/ModelStatusDisplay.js +0 -87
  294. package/dist/components/ModelStatusDisplay.js.map +0 -7
  295. package/dist/components/Onboarding.js +0 -153
  296. package/dist/components/Onboarding.js.map +0 -7
  297. package/dist/components/PressEnterToContinue.js +0 -10
  298. package/dist/components/PressEnterToContinue.js.map +0 -7
  299. package/dist/components/PromptInput.js +0 -488
  300. package/dist/components/PromptInput.js.map +0 -7
  301. package/dist/components/SentryErrorBoundary.js +0 -27
  302. package/dist/components/SentryErrorBoundary.js.map +0 -7
  303. package/dist/components/Spinner.js +0 -101
  304. package/dist/components/Spinner.js.map +0 -7
  305. package/dist/components/StickerRequestForm.js +0 -7
  306. package/dist/components/StickerRequestForm.js.map +0 -7
  307. package/dist/components/StructuredDiff.js +0 -148
  308. package/dist/components/StructuredDiff.js.map +0 -7
  309. package/dist/components/TextInput.js +0 -100
  310. package/dist/components/TextInput.js.map +0 -7
  311. package/dist/components/TodoItem.js +0 -35
  312. package/dist/components/TodoItem.js.map +0 -7
  313. package/dist/components/TokenWarning.js +0 -19
  314. package/dist/components/TokenWarning.js.map +0 -7
  315. package/dist/components/ToolUseLoader.js +0 -24
  316. package/dist/components/ToolUseLoader.js.map +0 -7
  317. package/dist/components/TrustDialog.js +0 -76
  318. package/dist/components/TrustDialog.js.map +0 -7
  319. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  320. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  321. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -94
  322. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  323. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -139
  324. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  325. package/dist/components/binary-feedback/utils.js +0 -161
  326. package/dist/components/binary-feedback/utils.js.map +0 -7
  327. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  328. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  329. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  330. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  331. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  332. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  333. package/dist/components/messages/AssistantTextMessage.js +0 -78
  334. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  335. package/dist/components/messages/AssistantThinkingMessage.js +0 -27
  336. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  337. package/dist/components/messages/AssistantToolUseMessage.js +0 -91
  338. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  339. package/dist/components/messages/TaskProgressMessage.js +0 -11
  340. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  341. package/dist/components/messages/TaskToolMessage.js +0 -39
  342. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  343. package/dist/components/messages/UserBashInputMessage.js +0 -18
  344. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  345. package/dist/components/messages/UserCommandMessage.js +0 -20
  346. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  347. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  348. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  349. package/dist/components/messages/UserPromptMessage.js +0 -20
  350. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  351. package/dist/components/messages/UserTextMessage.js +0 -25
  352. package/dist/components/messages/UserTextMessage.js.map +0 -7
  353. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -10
  354. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  355. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  356. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  357. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -25
  358. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  359. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -47
  360. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  361. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -23
  362. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  363. package/dist/components/messages/UserToolResultMessage/utils.js +0 -42
  364. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  365. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  366. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  367. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  368. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  369. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  370. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  371. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  372. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  373. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  374. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  375. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  376. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  377. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  378. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  379. package/dist/components/permissions/PermissionRequest.js +0 -70
  380. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  381. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  382. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  383. package/dist/components/permissions/hooks.js +0 -28
  384. package/dist/components/permissions/hooks.js.map +0 -7
  385. package/dist/components/permissions/toolUseOptions.js +0 -46
  386. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  387. package/dist/components/permissions/utils.js +0 -21
  388. package/dist/components/permissions/utils.js.map +0 -7
  389. package/dist/constants/betas.js +0 -11
  390. package/dist/constants/betas.js.map +0 -7
  391. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  392. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  393. package/dist/constants/figures.js +0 -6
  394. package/dist/constants/figures.js.map +0 -7
  395. package/dist/constants/keys.js +0 -7
  396. package/dist/constants/keys.js.map +0 -7
  397. package/dist/constants/macros.js +0 -13
  398. package/dist/constants/macros.js.map +0 -7
  399. package/dist/constants/modelCapabilities.js +0 -154
  400. package/dist/constants/modelCapabilities.js.map +0 -7
  401. package/dist/constants/models.js +0 -1034
  402. package/dist/constants/models.js.map +0 -7
  403. package/dist/constants/oauth.js +0 -18
  404. package/dist/constants/oauth.js.map +0 -7
  405. package/dist/constants/product.js +0 -26
  406. package/dist/constants/product.js.map +0 -7
  407. package/dist/constants/prompts.js +0 -168
  408. package/dist/constants/prompts.js.map +0 -7
  409. package/dist/constants/releaseNotes.js +0 -9
  410. package/dist/constants/releaseNotes.js.map +0 -7
  411. package/dist/context/PermissionContext.js +0 -111
  412. package/dist/context/PermissionContext.js.map +0 -7
  413. package/dist/context.js +0 -259
  414. package/dist/context.js.map +0 -7
  415. package/dist/cost-tracker.js.map +0 -7
  416. package/dist/entrypoints/cli.js +0 -1107
  417. package/dist/entrypoints/cli.js.map +0 -7
  418. package/dist/entrypoints/mcp.js +0 -150
  419. package/dist/entrypoints/mcp.js.map +0 -7
  420. package/dist/history.js +0 -25
  421. package/dist/history.js.map +0 -7
  422. package/dist/hooks/useApiKeyVerification.js +0 -12
  423. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  424. package/dist/hooks/useArrowKeyHistory.js +0 -50
  425. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  426. package/dist/hooks/useCanUseTool.js +0 -112
  427. package/dist/hooks/useCanUseTool.js.map +0 -7
  428. package/dist/hooks/useCancelRequest.js +0 -30
  429. package/dist/hooks/useCancelRequest.js.map +0 -7
  430. package/dist/hooks/useDoublePress.js +0 -31
  431. package/dist/hooks/useDoublePress.js.map +0 -7
  432. package/dist/hooks/useExitOnCtrlCD.js +0 -26
  433. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  434. package/dist/hooks/useInterval.js +0 -18
  435. package/dist/hooks/useInterval.js.map +0 -7
  436. package/dist/hooks/useLogMessages.js +0 -14
  437. package/dist/hooks/useLogMessages.js.map +0 -7
  438. package/dist/hooks/useLogStartupTime.js +0 -15
  439. package/dist/hooks/useLogStartupTime.js.map +0 -7
  440. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  441. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  442. package/dist/hooks/usePermissionRequestLogging.js +0 -28
  443. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  444. package/dist/hooks/useTerminalSize.js +0 -38
  445. package/dist/hooks/useTerminalSize.js.map +0 -7
  446. package/dist/hooks/useTextInput.js +0 -250
  447. package/dist/hooks/useTextInput.js.map +0 -7
  448. package/dist/hooks/useUnifiedCompletion.js +0 -929
  449. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  450. package/dist/messages.js +0 -33
  451. package/dist/messages.js.map +0 -7
  452. package/dist/permissions.js +0 -194
  453. package/dist/permissions.js.map +0 -7
  454. package/dist/query.js +0 -492
  455. package/dist/query.js.map +0 -7
  456. package/dist/screens/ConfigureNpmPrefix.js +0 -128
  457. package/dist/screens/ConfigureNpmPrefix.js.map +0 -7
  458. package/dist/screens/Doctor.js +0 -22
  459. package/dist/screens/Doctor.js.map +0 -7
  460. package/dist/screens/LogList.js +0 -55
  461. package/dist/screens/LogList.js.map +0 -7
  462. package/dist/screens/REPL.js +0 -593
  463. package/dist/screens/REPL.js.map +0 -7
  464. package/dist/screens/ResumeConversation.js +0 -56
  465. package/dist/screens/ResumeConversation.js.map +0 -7
  466. package/dist/services/adapters/base.js +0 -29
  467. package/dist/services/adapters/base.js.map +0 -7
  468. package/dist/services/adapters/chatCompletions.js +0 -69
  469. package/dist/services/adapters/chatCompletions.js.map +0 -7
  470. package/dist/services/adapters/responsesAPI.js +0 -126
  471. package/dist/services/adapters/responsesAPI.js.map +0 -7
  472. package/dist/services/browserMocks.js +0 -48
  473. package/dist/services/browserMocks.js.map +0 -7
  474. package/dist/services/claude.js +0 -1605
  475. package/dist/services/claude.js.map +0 -7
  476. package/dist/services/customCommands.js +0 -359
  477. package/dist/services/customCommands.js.map +0 -7
  478. package/dist/services/fileFreshness.js +0 -280
  479. package/dist/services/fileFreshness.js.map +0 -7
  480. package/dist/services/gpt5ConnectionTest.js +0 -248
  481. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  482. package/dist/services/mcpClient.js +0 -435
  483. package/dist/services/mcpClient.js.map +0 -7
  484. package/dist/services/mcpServerApproval.js +0 -55
  485. package/dist/services/mcpServerApproval.js.map +0 -7
  486. package/dist/services/mentionProcessor.js.map +0 -7
  487. package/dist/services/modelAdapterFactory.js +0 -47
  488. package/dist/services/modelAdapterFactory.js.map +0 -7
  489. package/dist/services/notifier.js +0 -35
  490. package/dist/services/notifier.js.map +0 -7
  491. package/dist/services/oauth.js +0 -259
  492. package/dist/services/oauth.js.map +0 -7
  493. package/dist/services/openai.js.map +0 -7
  494. package/dist/services/responseStateManager.js +0 -68
  495. package/dist/services/responseStateManager.js.map +0 -7
  496. package/dist/services/sentry.js +0 -9
  497. package/dist/services/sentry.js.map +0 -7
  498. package/dist/services/statsig.js +0 -112
  499. package/dist/services/statsig.js.map +0 -7
  500. package/dist/services/statsigStorage.js +0 -75
  501. package/dist/services/statsigStorage.js.map +0 -7
  502. package/dist/services/systemReminder.js.map +0 -7
  503. package/dist/services/vcr.js +0 -133
  504. package/dist/services/vcr.js.map +0 -7
  505. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -119
  506. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  507. package/dist/tools/ArchitectTool/prompt.js +0 -18
  508. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  509. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -423
  510. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  511. package/dist/tools/BashTool/BashTool.js +0 -188
  512. package/dist/tools/BashTool/BashTool.js.map +0 -7
  513. package/dist/tools/BashTool/BashToolResultMessage.js +0 -21
  514. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  515. package/dist/tools/BashTool/OutputLine.js +0 -30
  516. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  517. package/dist/tools/BashTool/prompt.js +0 -179
  518. package/dist/tools/BashTool/prompt.js.map +0 -7
  519. package/dist/tools/BashTool/utils.js +0 -51
  520. package/dist/tools/BashTool/utils.js.map +0 -7
  521. package/dist/tools/FileEditTool/FileEditTool.js +0 -228
  522. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  523. package/dist/tools/FileEditTool/prompt.js +0 -54
  524. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  525. package/dist/tools/FileEditTool/utils.js +0 -42
  526. package/dist/tools/FileEditTool/utils.js.map +0 -7
  527. package/dist/tools/FileReadTool/FileReadTool.js +0 -272
  528. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  529. package/dist/tools/FileReadTool/prompt.js +0 -10
  530. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  531. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -204
  532. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  533. package/dist/tools/FileWriteTool/prompt.js +0 -14
  534. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  535. package/dist/tools/GlobTool/GlobTool.js +0 -88
  536. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  537. package/dist/tools/GlobTool/prompt.js +0 -12
  538. package/dist/tools/GlobTool/prompt.js.map +0 -7
  539. package/dist/tools/GrepTool/GrepTool.js +0 -107
  540. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  541. package/dist/tools/GrepTool/prompt.js +0 -15
  542. package/dist/tools/GrepTool/prompt.js.map +0 -7
  543. package/dist/tools/MCPTool/MCPTool.js +0 -90
  544. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  545. package/dist/tools/MCPTool/prompt.js +0 -7
  546. package/dist/tools/MCPTool/prompt.js.map +0 -7
  547. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -103
  548. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  549. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  550. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  551. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -77
  552. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  553. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  554. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  555. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -308
  556. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  557. package/dist/tools/MultiEditTool/prompt.js +0 -48
  558. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  559. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -238
  560. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  561. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  562. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  563. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -212
  564. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  565. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  566. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  567. package/dist/tools/StickerRequestTool/StickerRequestTool.js +0 -86
  568. package/dist/tools/StickerRequestTool/StickerRequestTool.js.map +0 -7
  569. package/dist/tools/StickerRequestTool/prompt.js +0 -23
  570. package/dist/tools/StickerRequestTool/prompt.js.map +0 -7
  571. package/dist/tools/TaskTool/TaskTool.js +0 -351
  572. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  573. package/dist/tools/TaskTool/constants.js +0 -5
  574. package/dist/tools/TaskTool/constants.js.map +0 -7
  575. package/dist/tools/TaskTool/prompt.js +0 -82
  576. package/dist/tools/TaskTool/prompt.js.map +0 -7
  577. package/dist/tools/ThinkTool/ThinkTool.js +0 -48
  578. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  579. package/dist/tools/ThinkTool/prompt.js +0 -16
  580. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  581. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -216
  582. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  583. package/dist/tools/TodoWriteTool/prompt.js +0 -66
  584. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  585. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -137
  586. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  587. package/dist/tools/URLFetcherTool/cache.js +0 -45
  588. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  589. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -42
  590. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  591. package/dist/tools/URLFetcherTool/prompt.js +0 -22
  592. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  593. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -86
  594. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  595. package/dist/tools/WebSearchTool/prompt.js +0 -17
  596. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  597. package/dist/tools/WebSearchTool/searchProviders.js +0 -48
  598. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  599. package/dist/tools/lsTool/lsTool.js +0 -201
  600. package/dist/tools/lsTool/lsTool.js.map +0 -7
  601. package/dist/tools/lsTool/prompt.js +0 -5
  602. package/dist/tools/lsTool/prompt.js.map +0 -7
  603. package/dist/tools.js +0 -64
  604. package/dist/tools.js.map +0 -7
  605. package/dist/types/PermissionMode.js +0 -82
  606. package/dist/types/PermissionMode.js.map +0 -7
  607. package/dist/types/RequestContext.js +0 -47
  608. package/dist/types/RequestContext.js.map +0 -7
  609. package/dist/types/common.d.js +0 -1
  610. package/dist/types/conversation.js +0 -1
  611. package/dist/types/logs.js +0 -1
  612. package/dist/types/modelCapabilities.js +0 -1
  613. package/dist/types/notebook.js +0 -1
  614. package/dist/utils/Cursor.js +0 -313
  615. package/dist/utils/Cursor.js.map +0 -7
  616. package/dist/utils/PersistentShell.js +0 -382
  617. package/dist/utils/PersistentShell.js.map +0 -7
  618. package/dist/utils/advancedFuzzyMatcher.js +0 -206
  619. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  620. package/dist/utils/agentLoader.js +0 -199
  621. package/dist/utils/agentLoader.js.map +0 -7
  622. package/dist/utils/agentStorage.js +0 -59
  623. package/dist/utils/agentStorage.js.map +0 -7
  624. package/dist/utils/array.js +0 -7
  625. package/dist/utils/array.js.map +0 -7
  626. package/dist/utils/ask.js +0 -77
  627. package/dist/utils/ask.js.map +0 -7
  628. package/dist/utils/auth.js +0 -11
  629. package/dist/utils/auth.js.map +0 -7
  630. package/dist/utils/autoCompactCore.js +0 -149
  631. package/dist/utils/autoCompactCore.js.map +0 -7
  632. package/dist/utils/autoUpdater.js.map +0 -7
  633. package/dist/utils/betas.js +0 -21
  634. package/dist/utils/betas.js.map +0 -7
  635. package/dist/utils/browser.js +0 -15
  636. package/dist/utils/browser.js.map +0 -7
  637. package/dist/utils/cleanup.js +0 -54
  638. package/dist/utils/cleanup.js.map +0 -7
  639. package/dist/utils/commands.js +0 -207
  640. package/dist/utils/commands.js.map +0 -7
  641. package/dist/utils/commonUnixCommands.js +0 -687
  642. package/dist/utils/commonUnixCommands.js.map +0 -7
  643. package/dist/utils/config.js.map +0 -7
  644. package/dist/utils/conversationRecovery.js +0 -35
  645. package/dist/utils/conversationRecovery.js.map +0 -7
  646. package/dist/utils/debugLogger.js.map +0 -7
  647. package/dist/utils/diff.js +0 -32
  648. package/dist/utils/diff.js.map +0 -7
  649. package/dist/utils/env.js +0 -44
  650. package/dist/utils/env.js.map +0 -7
  651. package/dist/utils/errors.js +0 -23
  652. package/dist/utils/errors.js.map +0 -7
  653. package/dist/utils/exampleCommands.js +0 -80
  654. package/dist/utils/exampleCommands.js.map +0 -7
  655. package/dist/utils/execFileNoThrow.js +0 -44
  656. package/dist/utils/execFileNoThrow.js.map +0 -7
  657. package/dist/utils/expertChatStorage.js +0 -78
  658. package/dist/utils/expertChatStorage.js.map +0 -7
  659. package/dist/utils/file.js +0 -282
  660. package/dist/utils/file.js.map +0 -7
  661. package/dist/utils/fileRecoveryCore.js +0 -41
  662. package/dist/utils/fileRecoveryCore.js.map +0 -7
  663. package/dist/utils/format.js +0 -41
  664. package/dist/utils/format.js.map +0 -7
  665. package/dist/utils/fuzzyMatcher.js +0 -252
  666. package/dist/utils/fuzzyMatcher.js.map +0 -7
  667. package/dist/utils/generators.js +0 -46
  668. package/dist/utils/generators.js.map +0 -7
  669. package/dist/utils/git.js +0 -83
  670. package/dist/utils/git.js.map +0 -7
  671. package/dist/utils/globalLogger.js +0 -54
  672. package/dist/utils/globalLogger.js.map +0 -7
  673. package/dist/utils/http.js +0 -7
  674. package/dist/utils/http.js.map +0 -7
  675. package/dist/utils/imagePaste.js +0 -29
  676. package/dist/utils/imagePaste.js.map +0 -7
  677. package/dist/utils/json.js +0 -16
  678. package/dist/utils/json.js.map +0 -7
  679. package/dist/utils/log.js +0 -298
  680. package/dist/utils/log.js.map +0 -7
  681. package/dist/utils/markdown.js +0 -187
  682. package/dist/utils/markdown.js.map +0 -7
  683. package/dist/utils/messageContextManager.js +0 -195
  684. package/dist/utils/messageContextManager.js.map +0 -7
  685. package/dist/utils/messages.js +0 -633
  686. package/dist/utils/messages.js.map +0 -7
  687. package/dist/utils/model.js.map +0 -7
  688. package/dist/utils/permissions/filesystem.js +0 -80
  689. package/dist/utils/permissions/filesystem.js.map +0 -7
  690. package/dist/utils/responseState.js +0 -20
  691. package/dist/utils/responseState.js.map +0 -7
  692. package/dist/utils/ripgrep.js +0 -131
  693. package/dist/utils/ripgrep.js.map +0 -7
  694. package/dist/utils/secureFile.js +0 -483
  695. package/dist/utils/secureFile.js.map +0 -7
  696. package/dist/utils/sessionState.js +0 -31
  697. package/dist/utils/sessionState.js.map +0 -7
  698. package/dist/utils/state.js +0 -24
  699. package/dist/utils/state.js.map +0 -7
  700. package/dist/utils/style.js +0 -31
  701. package/dist/utils/style.js.map +0 -7
  702. package/dist/utils/terminal.js +0 -43
  703. package/dist/utils/terminal.js.map +0 -7
  704. package/dist/utils/theme.js.map +0 -7
  705. package/dist/utils/thinking.js +0 -103
  706. package/dist/utils/thinking.js.map +0 -7
  707. package/dist/utils/todoStorage.js +0 -291
  708. package/dist/utils/todoStorage.js.map +0 -7
  709. package/dist/utils/tokens.js +0 -30
  710. package/dist/utils/tokens.js.map +0 -7
  711. package/dist/utils/toolExecutionController.js +0 -109
  712. package/dist/utils/toolExecutionController.js.map +0 -7
  713. package/dist/utils/unaryLogging.js +0 -14
  714. package/dist/utils/unaryLogging.js.map +0 -7
  715. package/dist/utils/user.js +0 -40
  716. package/dist/utils/user.js.map +0 -7
  717. package/dist/utils/validate.js +0 -132
  718. package/dist/utils/validate.js.map +0 -7
  719. /package/dist/{Tool.js.map → REPL-GIU4ZIXM.js.map} +0 -0
  720. /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-DNRMJWFQ.js.map} +0 -0
  721. /package/dist/{types/common.d.js.map → chunk-JC6NCUG5.js.map} +0 -0
  722. /package/dist/{types/conversation.js.map → commands-TWH6PGVG.js.map} +0 -0
  723. /package/dist/{types/logs.js.map → config-6ZMBCL23.js.map} +0 -0
  724. /package/dist/{types/modelCapabilities.js.map → context-JQIOOI4W.js.map} +0 -0
  725. /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
@@ -0,0 +1,472 @@
1
+ import { createRequire as __kodeCreateRequire } from "node:module";
2
+ const require = __kodeCreateRequire(import.meta.url);
3
+ import {
4
+ MarketplaceManifestSchema
5
+ } from "./chunk-2PMO2FS2.js";
6
+ import {
7
+ parseFrontmatter
8
+ } from "./chunk-SRZZFAS7.js";
9
+ import {
10
+ getCwd
11
+ } from "./chunk-MN77D2F7.js";
12
+
13
+ // src/services/plugins/pluginValidation.ts
14
+ import { existsSync, lstatSync, readFileSync } from "node:fs";
15
+ import { dirname, join, resolve, sep } from "node:path";
16
+ import figures from "figures";
17
+ import { z } from "zod";
18
+ var PluginManifestSchema = z.strictObject({
19
+ name: z.string().min(1),
20
+ version: z.string().optional(),
21
+ description: z.string().optional(),
22
+ author: z.unknown().optional(),
23
+ homepage: z.string().optional(),
24
+ repository: z.unknown().optional(),
25
+ license: z.string().optional(),
26
+ keywords: z.array(z.string()).optional(),
27
+ commands: z.union([z.string(), z.array(z.string())]).optional(),
28
+ agents: z.union([z.string(), z.array(z.string())]).optional(),
29
+ skills: z.union([z.string(), z.array(z.string())]).optional(),
30
+ hooks: z.union([z.string(), z.record(z.string(), z.unknown())]).optional(),
31
+ mcpServers: z.union([z.string(), z.record(z.string(), z.unknown())]).optional()
32
+ }).passthrough();
33
+ function resolveFromAgentCwd(input) {
34
+ const trimmed = input.trim();
35
+ if (!trimmed) return trimmed;
36
+ if (trimmed.startsWith("~")) {
37
+ return trimmed;
38
+ }
39
+ if (trimmed.startsWith(sep)) return trimmed;
40
+ return resolve(getCwd(), trimmed);
41
+ }
42
+ function validateRelativePath(path) {
43
+ if (!path.startsWith("./")) return 'must start with "./"';
44
+ if (path.split("/").includes("..")) return 'must not contain ".."';
45
+ if (path.includes("\\")) return "must use forward slashes";
46
+ return null;
47
+ }
48
+ function safeResolveWithin(baseDir, rel) {
49
+ const normalized = rel.replace(/\\/g, "/");
50
+ if (!normalized.startsWith("./") || normalized.split("/").includes(".."))
51
+ return null;
52
+ const abs = resolve(baseDir, normalized.split("/").join(sep));
53
+ const base = resolve(baseDir);
54
+ if (!abs.startsWith(base + sep) && abs !== base) return null;
55
+ return abs;
56
+ }
57
+ function validateSkillDir(skillDir) {
58
+ const issues = [];
59
+ const name = skillDir.split(sep).pop() || "";
60
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name) || name.length > 64) {
61
+ issues.push({
62
+ path: `skills/${name}`,
63
+ message: "Invalid skill directory name (must be lowercase kebab-case, 1\u201364 chars)"
64
+ });
65
+ return issues;
66
+ }
67
+ const skillFileCandidates = [
68
+ join(skillDir, "SKILL.md"),
69
+ join(skillDir, "skill.md")
70
+ ];
71
+ const skillFile = skillFileCandidates.find((p) => existsSync(p));
72
+ if (!skillFile) {
73
+ issues.push({
74
+ path: `skills/${name}`,
75
+ message: "Missing SKILL.md (or skill.md)"
76
+ });
77
+ return issues;
78
+ }
79
+ try {
80
+ const raw = readFileSync(skillFile, "utf8");
81
+ const { frontmatter } = parseFrontmatter(raw);
82
+ const declared = typeof frontmatter.name === "string" ? String(frontmatter.name).trim() : "";
83
+ if (!declared) {
84
+ issues.push({
85
+ path: `${name}/SKILL.md`,
86
+ message: "Missing required frontmatter field: name"
87
+ });
88
+ } else if (declared !== name) {
89
+ issues.push({
90
+ path: `${name}/SKILL.md`,
91
+ message: `Frontmatter name must match directory name (dir=${name}, name=${declared})`
92
+ });
93
+ }
94
+ const description = typeof frontmatter.description === "string" ? String(frontmatter.description).trim() : "";
95
+ if (!description) {
96
+ issues.push({
97
+ path: `${name}/SKILL.md`,
98
+ message: "Missing required frontmatter field: description"
99
+ });
100
+ } else if (description.length > 1024) {
101
+ issues.push({
102
+ path: `${name}/SKILL.md`,
103
+ message: "description must be <= 1024 characters"
104
+ });
105
+ }
106
+ } catch (err) {
107
+ issues.push({
108
+ path: `${name}/SKILL.md`,
109
+ message: `Failed to parse SKILL.md: ${err instanceof Error ? err.message : String(err)}`
110
+ });
111
+ }
112
+ return issues;
113
+ }
114
+ function validateMarketplaceJson(filePath) {
115
+ const errors = [];
116
+ const warnings = [];
117
+ let raw;
118
+ try {
119
+ raw = readFileSync(filePath, "utf8");
120
+ } catch (err) {
121
+ return {
122
+ success: false,
123
+ fileType: "marketplace",
124
+ filePath,
125
+ errors: [
126
+ { path: "file", message: `Failed to read file: ${String(err)}` }
127
+ ],
128
+ warnings: []
129
+ };
130
+ }
131
+ let json;
132
+ try {
133
+ json = JSON.parse(raw);
134
+ } catch (err) {
135
+ return {
136
+ success: false,
137
+ fileType: "marketplace",
138
+ filePath,
139
+ errors: [
140
+ { path: "json", message: `Invalid JSON syntax: ${String(err)}` }
141
+ ],
142
+ warnings: []
143
+ };
144
+ }
145
+ const parsed = MarketplaceManifestSchema.safeParse(json);
146
+ if (!parsed.success) {
147
+ errors.push(
148
+ ...parsed.error.issues.map((i) => ({
149
+ path: i.path.join("."),
150
+ message: i.message
151
+ }))
152
+ );
153
+ return {
154
+ success: false,
155
+ fileType: "marketplace",
156
+ filePath,
157
+ errors,
158
+ warnings
159
+ };
160
+ }
161
+ const data = parsed.data;
162
+ const topLevelDescription = typeof data.description === "string" ? String(data.description).trim() : "";
163
+ const metadataDescription = typeof data.metadata?.description === "string" ? String(data.metadata.description).trim() : "";
164
+ if (!topLevelDescription && !metadataDescription) {
165
+ warnings.push({
166
+ path: "description",
167
+ message: "No marketplace description provided. Adding a description helps users understand what this marketplace offers"
168
+ });
169
+ }
170
+ if (!data.plugins || data.plugins.length === 0) {
171
+ warnings.push({
172
+ path: "plugins",
173
+ message: "Marketplace has no plugins defined"
174
+ });
175
+ }
176
+ const pluginNames = /* @__PURE__ */ new Set();
177
+ for (const [index, plugin] of data.plugins.entries()) {
178
+ if (pluginNames.has(plugin.name)) {
179
+ errors.push({
180
+ path: `plugins[${index}].name`,
181
+ message: `Duplicate plugin name "${plugin.name}"`
182
+ });
183
+ }
184
+ pluginNames.add(plugin.name);
185
+ const source = plugin.source ?? "./";
186
+ const sourceErr = validateRelativePath(source);
187
+ if (sourceErr)
188
+ errors.push({ path: `plugins[${index}].source`, message: sourceErr });
189
+ const marketplaceRoot = dirname(dirname(filePath));
190
+ const pluginBase = safeResolveWithin(marketplaceRoot, source);
191
+ if (!pluginBase) {
192
+ errors.push({
193
+ path: `plugins[${index}].source`,
194
+ message: "Invalid source path (must be ./..., no .., forward slashes)"
195
+ });
196
+ continue;
197
+ }
198
+ if (!existsSync(pluginBase) || !lstatSync(pluginBase).isDirectory()) {
199
+ errors.push({
200
+ path: `plugins[${index}].source`,
201
+ message: `Source path not found: ${source}`
202
+ });
203
+ continue;
204
+ }
205
+ const skillPaths = plugin.skills ?? [];
206
+ for (const [j, rel] of skillPaths.entries()) {
207
+ const err = validateRelativePath(rel);
208
+ if (err) {
209
+ errors.push({ path: `plugins[${index}].skills[${j}]`, message: err });
210
+ continue;
211
+ }
212
+ const abs = safeResolveWithin(pluginBase, rel);
213
+ if (!abs) {
214
+ errors.push({
215
+ path: `plugins[${index}].skills[${j}]`,
216
+ message: "Invalid path (must be ./..., no .., forward slashes)"
217
+ });
218
+ continue;
219
+ }
220
+ if (!existsSync(abs) || !lstatSync(abs).isDirectory()) {
221
+ errors.push({
222
+ path: `plugins[${index}].skills[${j}]`,
223
+ message: `Skill directory not found: ${rel}`
224
+ });
225
+ continue;
226
+ }
227
+ errors.push(
228
+ ...validateSkillDir(abs).map((e) => ({
229
+ ...e,
230
+ path: `plugins[${index}].skills[${j}]: ${e.path}`
231
+ }))
232
+ );
233
+ }
234
+ const commandPaths = plugin.commands ?? [];
235
+ for (const [j, rel] of commandPaths.entries()) {
236
+ const err = validateRelativePath(rel);
237
+ if (err) {
238
+ errors.push({ path: `plugins[${index}].commands[${j}]`, message: err });
239
+ continue;
240
+ }
241
+ const abs = safeResolveWithin(pluginBase, rel);
242
+ if (!abs) {
243
+ errors.push({
244
+ path: `plugins[${index}].commands[${j}]`,
245
+ message: "Invalid path (must be ./..., no .., forward slashes)"
246
+ });
247
+ continue;
248
+ }
249
+ if (!existsSync(abs) || !lstatSync(abs).isDirectory()) {
250
+ errors.push({
251
+ path: `plugins[${index}].commands[${j}]`,
252
+ message: `Command directory not found: ${rel}`
253
+ });
254
+ }
255
+ }
256
+ }
257
+ return {
258
+ success: errors.length === 0,
259
+ fileType: "marketplace",
260
+ filePath,
261
+ errors,
262
+ warnings
263
+ };
264
+ }
265
+ function validatePluginJson(filePath) {
266
+ const errors = [];
267
+ const warnings = [];
268
+ let raw;
269
+ try {
270
+ raw = readFileSync(filePath, "utf8");
271
+ } catch (err) {
272
+ return {
273
+ success: false,
274
+ fileType: "plugin",
275
+ filePath,
276
+ errors: [
277
+ { path: "file", message: `Failed to read file: ${String(err)}` }
278
+ ],
279
+ warnings: []
280
+ };
281
+ }
282
+ let json;
283
+ try {
284
+ json = JSON.parse(raw);
285
+ } catch (err) {
286
+ return {
287
+ success: false,
288
+ fileType: "plugin",
289
+ filePath,
290
+ errors: [
291
+ { path: "json", message: `Invalid JSON syntax: ${String(err)}` }
292
+ ],
293
+ warnings: []
294
+ };
295
+ }
296
+ const parsed = PluginManifestSchema.safeParse(json);
297
+ if (!parsed.success) {
298
+ errors.push(
299
+ ...parsed.error.issues.map((i) => ({
300
+ path: i.path.join("."),
301
+ message: i.message
302
+ }))
303
+ );
304
+ return { success: false, fileType: "plugin", filePath, errors, warnings };
305
+ }
306
+ const data = parsed.data;
307
+ if (!/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/.test(data.name)) {
308
+ errors.push({
309
+ path: "name",
310
+ message: "Must be kebab-case and start with a letter"
311
+ });
312
+ }
313
+ if (data.version && !/^(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(
314
+ data.version
315
+ )) {
316
+ errors.push({
317
+ path: "version",
318
+ message: "Invalid semantic version (expected MAJOR.MINOR.PATCH)"
319
+ });
320
+ }
321
+ if (data.homepage) {
322
+ try {
323
+ new URL(data.homepage);
324
+ } catch {
325
+ errors.push({ path: "homepage", message: "Invalid URL" });
326
+ }
327
+ }
328
+ if (typeof data.repository === "string") {
329
+ try {
330
+ new URL(data.repository);
331
+ } catch {
332
+ errors.push({ path: "repository", message: "Invalid URL" });
333
+ }
334
+ }
335
+ if (!data.version) {
336
+ warnings.push({
337
+ path: "version",
338
+ message: 'No version specified. Consider adding a version following semver (e.g., "1.0.0")'
339
+ });
340
+ }
341
+ if (!data.description) {
342
+ warnings.push({
343
+ path: "description",
344
+ message: "No description provided. Adding a description helps users understand what your plugin does"
345
+ });
346
+ }
347
+ if (!data.author) {
348
+ warnings.push({
349
+ path: "author",
350
+ message: "No author information provided. Consider adding author details for plugin attribution"
351
+ });
352
+ }
353
+ const pluginRoot = dirname(dirname(filePath));
354
+ const validatePathList = (field, value) => {
355
+ if (!value) return;
356
+ const values = Array.isArray(value) ? value : [value];
357
+ for (const [idx, p] of values.entries()) {
358
+ if (typeof p !== "string") continue;
359
+ const err = validateRelativePath(p);
360
+ if (err) errors.push({ path: `${field}[${idx}]`, message: err });
361
+ const abs = safeResolveWithin(pluginRoot, p);
362
+ if (!abs) {
363
+ errors.push({
364
+ path: `${field}[${idx}]`,
365
+ message: "Invalid path (must be ./..., no .., forward slashes)"
366
+ });
367
+ } else if (!existsSync(abs)) {
368
+ errors.push({
369
+ path: `${field}[${idx}]`,
370
+ message: `Path not found: ${p}`
371
+ });
372
+ }
373
+ }
374
+ };
375
+ validatePathList("commands", data.commands);
376
+ validatePathList("agents", data.agents);
377
+ validatePathList("skills", data.skills);
378
+ if (typeof data.hooks === "string") validatePathList("hooks", data.hooks);
379
+ if (typeof data.mcpServers === "string")
380
+ validatePathList("mcpServers", data.mcpServers);
381
+ return {
382
+ success: errors.length === 0,
383
+ fileType: "plugin",
384
+ filePath,
385
+ errors,
386
+ warnings
387
+ };
388
+ }
389
+ function validatePluginOrMarketplacePath(path) {
390
+ const abs = resolveFromAgentCwd(path);
391
+ if (!abs) {
392
+ return {
393
+ success: false,
394
+ fileType: "plugin",
395
+ filePath: "",
396
+ errors: [{ path: "path", message: "Path is required" }],
397
+ warnings: []
398
+ };
399
+ }
400
+ if (!existsSync(abs)) {
401
+ return {
402
+ success: false,
403
+ fileType: "plugin",
404
+ filePath: abs,
405
+ errors: [{ path: "file", message: `Path not found: ${abs}` }],
406
+ warnings: []
407
+ };
408
+ }
409
+ const stat = lstatSync(abs);
410
+ let filePath = abs;
411
+ if (stat.isDirectory()) {
412
+ const marketplace = join(abs, ".kode-plugin", "marketplace.json");
413
+ const plugin = join(abs, ".kode-plugin", "plugin.json");
414
+ const legacyMarketplace = join(abs, ".claude-plugin", "marketplace.json");
415
+ const legacyPlugin = join(abs, ".claude-plugin", "plugin.json");
416
+ if (existsSync(marketplace)) filePath = marketplace;
417
+ else if (existsSync(plugin)) filePath = plugin;
418
+ else if (existsSync(legacyMarketplace)) filePath = legacyMarketplace;
419
+ else if (existsSync(legacyPlugin)) filePath = legacyPlugin;
420
+ else {
421
+ return {
422
+ success: false,
423
+ fileType: "plugin",
424
+ filePath: abs,
425
+ errors: [
426
+ {
427
+ path: "directory",
428
+ message: "No manifest found in directory. Expected .kode-plugin/marketplace.json or .kode-plugin/plugin.json (legacy .claude-plugin/* is also supported)"
429
+ }
430
+ ],
431
+ warnings: []
432
+ };
433
+ }
434
+ }
435
+ if (filePath.endsWith("marketplace.json"))
436
+ return validateMarketplaceJson(filePath);
437
+ if (filePath.endsWith("plugin.json")) return validatePluginJson(filePath);
438
+ try {
439
+ const raw = readFileSync(filePath, "utf8");
440
+ const json = JSON.parse(raw);
441
+ if (json && typeof json === "object" && Array.isArray(json.plugins)) {
442
+ return validateMarketplaceJson(filePath);
443
+ }
444
+ } catch {
445
+ }
446
+ return validatePluginJson(filePath);
447
+ }
448
+ function formatValidationResult(result) {
449
+ const lines = [];
450
+ for (const err of result.errors) {
451
+ lines.push(` ${figures.pointer} ${err.path}: ${err.message}`);
452
+ }
453
+ for (const warn of result.warnings) {
454
+ lines.push(` ${figures.pointer} ${warn.path}: ${warn.message}`);
455
+ }
456
+ lines.push("");
457
+ if (result.success) {
458
+ if (result.warnings.length > 0) {
459
+ lines.push(`${figures.tick} Validation passed with warnings`);
460
+ } else {
461
+ lines.push(`${figures.tick} Validation passed`);
462
+ }
463
+ } else {
464
+ lines.push(`${figures.cross} Validation failed`);
465
+ }
466
+ return lines.join("\n");
467
+ }
468
+
469
+ export {
470
+ validatePluginOrMarketplacePath,
471
+ formatValidationResult
472
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/services/plugins/pluginValidation.ts"],
4
+ "sourcesContent": ["import { existsSync, lstatSync, readFileSync } from 'node:fs'\nimport { dirname, join, resolve, sep } from 'node:path'\nimport figures from 'figures'\nimport { z } from 'zod'\nimport { getCwd } from '@utils/state'\nimport { parseFrontmatter } from '@services/customCommands'\nimport { MarketplaceManifestSchema } from '@services/skillMarketplace'\n\nexport type ValidationIssue = {\n path: string\n message: string\n}\n\nexport type ValidationResult = {\n success: boolean\n fileType: 'plugin' | 'marketplace'\n filePath: string\n errors: ValidationIssue[]\n warnings: ValidationIssue[]\n}\n\nconst PluginManifestSchema = z\n .strictObject({\n name: z.string().min(1),\n version: z.string().optional(),\n description: z.string().optional(),\n author: z.unknown().optional(),\n homepage: z.string().optional(),\n repository: z.unknown().optional(),\n license: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n commands: z.union([z.string(), z.array(z.string())]).optional(),\n agents: z.union([z.string(), z.array(z.string())]).optional(),\n skills: z.union([z.string(), z.array(z.string())]).optional(),\n hooks: z.union([z.string(), z.record(z.string(), z.unknown())]).optional(),\n mcpServers: z\n .union([z.string(), z.record(z.string(), z.unknown())])\n .optional(),\n })\n .passthrough()\n\nfunction resolveFromAgentCwd(input: string): string {\n const trimmed = input.trim()\n if (!trimmed) return trimmed\n if (trimmed.startsWith('~')) {\n return trimmed\n }\n if (trimmed.startsWith(sep)) return trimmed\n return resolve(getCwd(), trimmed)\n}\n\nfunction validateRelativePath(path: string): string | null {\n if (!path.startsWith('./')) return 'must start with \"./\"'\n if (path.split('/').includes('..')) return 'must not contain \"..\"'\n if (path.includes('\\\\')) return 'must use forward slashes'\n return null\n}\n\nfunction safeResolveWithin(baseDir: string, rel: string): string | null {\n const normalized = rel.replace(/\\\\/g, '/')\n if (!normalized.startsWith('./') || normalized.split('/').includes('..'))\n return null\n const abs = resolve(baseDir, normalized.split('/').join(sep))\n const base = resolve(baseDir)\n if (!abs.startsWith(base + sep) && abs !== base) return null\n return abs\n}\n\nfunction validateSkillDir(skillDir: string): ValidationIssue[] {\n const issues: ValidationIssue[] = []\n const name = skillDir.split(sep).pop() || ''\n if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name) || name.length > 64) {\n issues.push({\n path: `skills/${name}`,\n message:\n 'Invalid skill directory name (must be lowercase kebab-case, 1\u201364 chars)',\n })\n return issues\n }\n\n const skillFileCandidates = [\n join(skillDir, 'SKILL.md'),\n join(skillDir, 'skill.md'),\n ]\n const skillFile = skillFileCandidates.find(p => existsSync(p))\n if (!skillFile) {\n issues.push({\n path: `skills/${name}`,\n message: 'Missing SKILL.md (or skill.md)',\n })\n return issues\n }\n\n try {\n const raw = readFileSync(skillFile, 'utf8')\n const { frontmatter } = parseFrontmatter(raw)\n const declared =\n typeof (frontmatter as any).name === 'string'\n ? String((frontmatter as any).name).trim()\n : ''\n if (!declared) {\n issues.push({\n path: `${name}/SKILL.md`,\n message: 'Missing required frontmatter field: name',\n })\n } else if (declared !== name) {\n issues.push({\n path: `${name}/SKILL.md`,\n message: `Frontmatter name must match directory name (dir=${name}, name=${declared})`,\n })\n }\n\n const description =\n typeof (frontmatter as any).description === 'string'\n ? String((frontmatter as any).description).trim()\n : ''\n if (!description) {\n issues.push({\n path: `${name}/SKILL.md`,\n message: 'Missing required frontmatter field: description',\n })\n } else if (description.length > 1024) {\n issues.push({\n path: `${name}/SKILL.md`,\n message: 'description must be <= 1024 characters',\n })\n }\n } catch (err) {\n issues.push({\n path: `${name}/SKILL.md`,\n message: `Failed to parse SKILL.md: ${err instanceof Error ? err.message : String(err)}`,\n })\n }\n\n return issues\n}\n\nfunction validateMarketplaceJson(filePath: string): ValidationResult {\n const errors: ValidationIssue[] = []\n const warnings: ValidationIssue[] = []\n\n let raw: string\n try {\n raw = readFileSync(filePath, 'utf8')\n } catch (err) {\n return {\n success: false,\n fileType: 'marketplace',\n filePath,\n errors: [\n { path: 'file', message: `Failed to read file: ${String(err)}` },\n ],\n warnings: [],\n }\n }\n\n let json: unknown\n try {\n json = JSON.parse(raw)\n } catch (err) {\n return {\n success: false,\n fileType: 'marketplace',\n filePath,\n errors: [\n { path: 'json', message: `Invalid JSON syntax: ${String(err)}` },\n ],\n warnings: [],\n }\n }\n\n const parsed = MarketplaceManifestSchema.safeParse(json)\n if (!parsed.success) {\n errors.push(\n ...parsed.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n )\n return {\n success: false,\n fileType: 'marketplace',\n filePath,\n errors,\n warnings,\n }\n }\n\n const data = parsed.data\n const topLevelDescription =\n typeof (data as any).description === 'string'\n ? String((data as any).description).trim()\n : ''\n const metadataDescription =\n typeof (data.metadata as any)?.description === 'string'\n ? String((data.metadata as any).description).trim()\n : ''\n if (!topLevelDescription && !metadataDescription) {\n warnings.push({\n path: 'description',\n message:\n 'No marketplace description provided. Adding a description helps users understand what this marketplace offers',\n })\n }\n if (!data.plugins || data.plugins.length === 0) {\n warnings.push({\n path: 'plugins',\n message: 'Marketplace has no plugins defined',\n })\n }\n\n const pluginNames = new Set<string>()\n for (const [index, plugin] of data.plugins.entries()) {\n if (pluginNames.has(plugin.name)) {\n errors.push({\n path: `plugins[${index}].name`,\n message: `Duplicate plugin name \"${plugin.name}\"`,\n })\n }\n pluginNames.add(plugin.name)\n\n const source = plugin.source ?? './'\n const sourceErr = validateRelativePath(source)\n if (sourceErr)\n errors.push({ path: `plugins[${index}].source`, message: sourceErr })\n\n const marketplaceRoot = dirname(dirname(filePath))\n const pluginBase = safeResolveWithin(marketplaceRoot, source)\n if (!pluginBase) {\n errors.push({\n path: `plugins[${index}].source`,\n message: 'Invalid source path (must be ./..., no .., forward slashes)',\n })\n continue\n }\n if (!existsSync(pluginBase) || !lstatSync(pluginBase).isDirectory()) {\n errors.push({\n path: `plugins[${index}].source`,\n message: `Source path not found: ${source}`,\n })\n continue\n }\n\n const skillPaths = plugin.skills ?? []\n for (const [j, rel] of skillPaths.entries()) {\n const err = validateRelativePath(rel)\n if (err) {\n errors.push({ path: `plugins[${index}].skills[${j}]`, message: err })\n continue\n }\n const abs = safeResolveWithin(pluginBase, rel)\n if (!abs) {\n errors.push({\n path: `plugins[${index}].skills[${j}]`,\n message: 'Invalid path (must be ./..., no .., forward slashes)',\n })\n continue\n }\n if (!existsSync(abs) || !lstatSync(abs).isDirectory()) {\n errors.push({\n path: `plugins[${index}].skills[${j}]`,\n message: `Skill directory not found: ${rel}`,\n })\n continue\n }\n errors.push(\n ...validateSkillDir(abs).map(e => ({\n ...e,\n path: `plugins[${index}].skills[${j}]: ${e.path}`,\n })),\n )\n }\n\n const commandPaths = plugin.commands ?? []\n for (const [j, rel] of commandPaths.entries()) {\n const err = validateRelativePath(rel)\n if (err) {\n errors.push({ path: `plugins[${index}].commands[${j}]`, message: err })\n continue\n }\n const abs = safeResolveWithin(pluginBase, rel)\n if (!abs) {\n errors.push({\n path: `plugins[${index}].commands[${j}]`,\n message: 'Invalid path (must be ./..., no .., forward slashes)',\n })\n continue\n }\n if (!existsSync(abs) || !lstatSync(abs).isDirectory()) {\n errors.push({\n path: `plugins[${index}].commands[${j}]`,\n message: `Command directory not found: ${rel}`,\n })\n }\n }\n }\n\n return {\n success: errors.length === 0,\n fileType: 'marketplace',\n filePath,\n errors,\n warnings,\n }\n}\n\nfunction validatePluginJson(filePath: string): ValidationResult {\n const errors: ValidationIssue[] = []\n const warnings: ValidationIssue[] = []\n\n let raw: string\n try {\n raw = readFileSync(filePath, 'utf8')\n } catch (err) {\n return {\n success: false,\n fileType: 'plugin',\n filePath,\n errors: [\n { path: 'file', message: `Failed to read file: ${String(err)}` },\n ],\n warnings: [],\n }\n }\n\n let json: unknown\n try {\n json = JSON.parse(raw)\n } catch (err) {\n return {\n success: false,\n fileType: 'plugin',\n filePath,\n errors: [\n { path: 'json', message: `Invalid JSON syntax: ${String(err)}` },\n ],\n warnings: [],\n }\n }\n\n const parsed = PluginManifestSchema.safeParse(json)\n if (!parsed.success) {\n errors.push(\n ...parsed.error.issues.map(i => ({\n path: i.path.join('.'),\n message: i.message,\n })),\n )\n return { success: false, fileType: 'plugin', filePath, errors, warnings }\n }\n\n const data = parsed.data\n\n if (!/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/.test(data.name)) {\n errors.push({\n path: 'name',\n message: 'Must be kebab-case and start with a letter',\n })\n }\n if (\n data.version &&\n !/^(\\d+)\\.(\\d+)\\.(\\d+)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/.test(\n data.version,\n )\n ) {\n errors.push({\n path: 'version',\n message: 'Invalid semantic version (expected MAJOR.MINOR.PATCH)',\n })\n }\n if (data.homepage) {\n try {\n // eslint-disable-next-line no-new\n new URL(data.homepage)\n } catch {\n errors.push({ path: 'homepage', message: 'Invalid URL' })\n }\n }\n if (typeof data.repository === 'string') {\n try {\n // eslint-disable-next-line no-new\n new URL(data.repository)\n } catch {\n errors.push({ path: 'repository', message: 'Invalid URL' })\n }\n }\n if (!data.version) {\n warnings.push({\n path: 'version',\n message:\n 'No version specified. Consider adding a version following semver (e.g., \"1.0.0\")',\n })\n }\n if (!data.description) {\n warnings.push({\n path: 'description',\n message:\n 'No description provided. Adding a description helps users understand what your plugin does',\n })\n }\n if (!data.author) {\n warnings.push({\n path: 'author',\n message:\n 'No author information provided. Consider adding author details for plugin attribution',\n })\n }\n\n const pluginRoot = dirname(dirname(filePath))\n\n const validatePathList = (field: string, value: unknown) => {\n if (!value) return\n const values = Array.isArray(value) ? value : [value]\n for (const [idx, p] of values.entries()) {\n if (typeof p !== 'string') continue\n const err = validateRelativePath(p)\n if (err) errors.push({ path: `${field}[${idx}]`, message: err })\n const abs = safeResolveWithin(pluginRoot, p)\n if (!abs) {\n errors.push({\n path: `${field}[${idx}]`,\n message: 'Invalid path (must be ./..., no .., forward slashes)',\n })\n } else if (!existsSync(abs)) {\n errors.push({\n path: `${field}[${idx}]`,\n message: `Path not found: ${p}`,\n })\n }\n }\n }\n\n validatePathList('commands', data.commands)\n validatePathList('agents', data.agents)\n validatePathList('skills', data.skills)\n\n if (typeof data.hooks === 'string') validatePathList('hooks', data.hooks)\n if (typeof data.mcpServers === 'string')\n validatePathList('mcpServers', data.mcpServers)\n\n return {\n success: errors.length === 0,\n fileType: 'plugin',\n filePath,\n errors,\n warnings,\n }\n}\n\nexport function validatePluginOrMarketplacePath(\n path: string,\n): ValidationResult {\n const abs = resolveFromAgentCwd(path)\n if (!abs) {\n return {\n success: false,\n fileType: 'plugin',\n filePath: '',\n errors: [{ path: 'path', message: 'Path is required' }],\n warnings: [],\n }\n }\n if (!existsSync(abs)) {\n return {\n success: false,\n fileType: 'plugin',\n filePath: abs,\n errors: [{ path: 'file', message: `Path not found: ${abs}` }],\n warnings: [],\n }\n }\n\n const stat = lstatSync(abs)\n let filePath = abs\n if (stat.isDirectory()) {\n const marketplace = join(abs, '.kode-plugin', 'marketplace.json')\n const plugin = join(abs, '.kode-plugin', 'plugin.json')\n const legacyMarketplace = join(abs, '.claude-plugin', 'marketplace.json')\n const legacyPlugin = join(abs, '.claude-plugin', 'plugin.json')\n if (existsSync(marketplace)) filePath = marketplace\n else if (existsSync(plugin)) filePath = plugin\n else if (existsSync(legacyMarketplace)) filePath = legacyMarketplace\n else if (existsSync(legacyPlugin)) filePath = legacyPlugin\n else {\n return {\n success: false,\n fileType: 'plugin',\n filePath: abs,\n errors: [\n {\n path: 'directory',\n message:\n 'No manifest found in directory. Expected .kode-plugin/marketplace.json or .kode-plugin/plugin.json (legacy .claude-plugin/* is also supported)',\n },\n ],\n warnings: [],\n }\n }\n }\n\n if (filePath.endsWith('marketplace.json'))\n return validateMarketplaceJson(filePath)\n if (filePath.endsWith('plugin.json')) return validatePluginJson(filePath)\n\n try {\n const raw = readFileSync(filePath, 'utf8')\n const json = JSON.parse(raw)\n if (\n json &&\n typeof json === 'object' &&\n Array.isArray((json as any).plugins)\n ) {\n return validateMarketplaceJson(filePath)\n }\n } catch {}\n return validatePluginJson(filePath)\n}\n\nexport function formatValidationResult(result: ValidationResult): string {\n const lines: string[] = []\n for (const err of result.errors) {\n lines.push(` ${figures.pointer} ${err.path}: ${err.message}`)\n }\n for (const warn of result.warnings) {\n lines.push(` ${figures.pointer} ${warn.path}: ${warn.message}`)\n }\n\n lines.push('')\n\n if (result.success) {\n if (result.warnings.length > 0) {\n lines.push(`${figures.tick} Validation passed with warnings`)\n } else {\n lines.push(`${figures.tick} Validation passed`)\n }\n } else {\n lines.push(`${figures.cross} Validation failed`)\n }\n\n return lines.join('\\n')\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }