@shareai-lab/kode 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +649 -25
  3. package/README.zh-CN.md +579 -0
  4. package/cli-acp.js +3 -17
  5. package/cli.js +5 -7
  6. package/dist/chunks/Doctor-M3J7GRTJ.js +12 -0
  7. package/dist/chunks/LogList-ISWZ6DDD.js +121 -0
  8. package/dist/chunks/LogList-ISWZ6DDD.js.map +7 -0
  9. package/dist/chunks/REPL-RQ6LO6S7.js +56 -0
  10. package/dist/chunks/ResumeConversation-6DMVBEGH.js +56 -0
  11. package/dist/chunks/agentLoader-FCRG3TFJ.js +31 -0
  12. package/dist/{agentsValidate-XP3CFN6F.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
  13. package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
  14. package/dist/{ask-3G5H5KD5.js → chunks/ask-D7SOHJ6Z.js} +36 -44
  15. package/dist/chunks/ask-D7SOHJ6Z.js.map +7 -0
  16. package/dist/chunks/autoUpdater-CNESBOKO.js +19 -0
  17. package/dist/{chunk-EH34V7CY.js → chunks/chunk-2JN5MY67.js} +12 -14
  18. package/dist/chunks/chunk-2JN5MY67.js.map +7 -0
  19. package/dist/chunks/chunk-2QONJ5MG.js +14 -0
  20. package/dist/chunks/chunk-2QONJ5MG.js.map +7 -0
  21. package/dist/chunks/chunk-2WEXPKHH.js +903 -0
  22. package/dist/chunks/chunk-2WEXPKHH.js.map +7 -0
  23. package/dist/{chunk-K2MI4TPB.js → chunks/chunk-3BYE3ME6.js} +717 -792
  24. package/dist/chunks/chunk-3BYE3ME6.js.map +7 -0
  25. package/dist/chunks/chunk-3JDNWX7W.js +1264 -0
  26. package/dist/chunks/chunk-3JDNWX7W.js.map +7 -0
  27. package/dist/chunks/chunk-3OEJVB5A.js +906 -0
  28. package/dist/chunks/chunk-3OEJVB5A.js.map +7 -0
  29. package/dist/chunks/chunk-3TNIOEBO.js +369 -0
  30. package/dist/chunks/chunk-3TNIOEBO.js.map +7 -0
  31. package/dist/chunks/chunk-4A46ZXMJ.js +67 -0
  32. package/dist/chunks/chunk-4A46ZXMJ.js.map +7 -0
  33. package/dist/{chunk-4GAIJGRH.js → chunks/chunk-4ATBQOFO.js} +107 -55
  34. package/dist/chunks/chunk-4ATBQOFO.js.map +7 -0
  35. package/dist/chunks/chunk-4CRUCZR4.js +0 -0
  36. package/dist/{chunk-54DNHKOD.js → chunks/chunk-4EO6SIQY.js} +32 -75
  37. package/dist/chunks/chunk-4EO6SIQY.js.map +7 -0
  38. package/dist/chunks/chunk-53M46S5I.js +64 -0
  39. package/dist/chunks/chunk-53M46S5I.js.map +7 -0
  40. package/dist/{chunk-JC6NCUG5.js → chunks/chunk-54KOYG5C.js} +0 -2
  41. package/dist/{chunk-EZXMVTDU.js → chunks/chunk-6BAS4WY6.js} +29 -45
  42. package/dist/chunks/chunk-6BAS4WY6.js.map +7 -0
  43. package/dist/{chunk-BHGTA6JQ.js → chunks/chunk-6KRRFSDN.js} +4 -6
  44. package/dist/chunks/chunk-6KRRFSDN.js.map +7 -0
  45. package/dist/chunks/chunk-6LJNZK4K.js +39 -0
  46. package/dist/chunks/chunk-6LJNZK4K.js.map +7 -0
  47. package/dist/chunks/chunk-6ZWEOSEI.js +666 -0
  48. package/dist/chunks/chunk-6ZWEOSEI.js.map +7 -0
  49. package/dist/chunks/chunk-77XDJMBP.js +3326 -0
  50. package/dist/chunks/chunk-77XDJMBP.js.map +7 -0
  51. package/dist/chunks/chunk-7RRW4NTB.js +6454 -0
  52. package/dist/chunks/chunk-7RRW4NTB.js.map +7 -0
  53. package/dist/chunks/chunk-7X3TW4JB.js +4520 -0
  54. package/dist/chunks/chunk-7X3TW4JB.js.map +7 -0
  55. package/dist/chunks/chunk-B3MW3YGY.js +1409 -0
  56. package/dist/chunks/chunk-B3MW3YGY.js.map +7 -0
  57. package/dist/chunks/chunk-BBJFHTBC.js +28 -0
  58. package/dist/chunks/chunk-BBJFHTBC.js.map +7 -0
  59. package/dist/chunks/chunk-BHDHXOXB.js +24 -0
  60. package/dist/chunks/chunk-BHDHXOXB.js.map +7 -0
  61. package/dist/{chunk-OZNRLY3E.js → chunks/chunk-BTA7SZ26.js} +152 -223
  62. package/dist/chunks/chunk-BTA7SZ26.js.map +7 -0
  63. package/dist/chunks/chunk-CDGRYGPZ.js +103 -0
  64. package/dist/chunks/chunk-CDGRYGPZ.js.map +7 -0
  65. package/dist/{chunk-S6HRABTA.js → chunks/chunk-CP6E5UG6.js} +1 -4
  66. package/dist/chunks/chunk-CP6E5UG6.js.map +7 -0
  67. package/dist/{chunk-2PMO2FS2.js → chunks/chunk-DQ4JHXMT.js} +462 -424
  68. package/dist/chunks/chunk-DQ4JHXMT.js.map +7 -0
  69. package/dist/chunks/chunk-DXD76CMV.js +208 -0
  70. package/dist/chunks/chunk-DXD76CMV.js.map +7 -0
  71. package/dist/chunks/chunk-GCQCAXJZ.js +0 -0
  72. package/dist/chunks/chunk-GELCZWMB.js +42 -0
  73. package/dist/chunks/chunk-GELCZWMB.js.map +7 -0
  74. package/dist/{chunk-NQLEUHMS.js → chunks/chunk-HJYOH4HC.js} +23 -18
  75. package/dist/chunks/chunk-HJYOH4HC.js.map +7 -0
  76. package/dist/chunks/chunk-HPYNW6TT.js +744 -0
  77. package/dist/chunks/chunk-HPYNW6TT.js.map +7 -0
  78. package/dist/{chunk-2KWKUXLT.js → chunks/chunk-HRJ3ICQK.js} +59 -55
  79. package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
  80. package/dist/{chunk-ZQU3TXLC.js → chunks/chunk-IFCIADS3.js} +571 -573
  81. package/dist/chunks/chunk-IFCIADS3.js.map +7 -0
  82. package/dist/chunks/chunk-IN7XZ7BC.js +27 -0
  83. package/dist/chunks/chunk-IN7XZ7BC.js.map +7 -0
  84. package/dist/chunks/chunk-L7P4M4KW.js +193 -0
  85. package/dist/chunks/chunk-L7P4M4KW.js.map +7 -0
  86. package/dist/chunks/chunk-LB6TCPDI.js +0 -0
  87. package/dist/{chunk-3RUXVV4S.js → chunks/chunk-LOCXPQNJ.js} +1 -4
  88. package/dist/{chunk-3RUXVV4S.js.map → chunks/chunk-LOCXPQNJ.js.map} +2 -2
  89. package/dist/{chunk-IE2CG2TV.js → chunks/chunk-LOD5ZHCI.js} +213 -208
  90. package/dist/chunks/chunk-LOD5ZHCI.js.map +7 -0
  91. package/dist/{chunk-S3J2TLV6.js → chunks/chunk-M7P3QNRU.js} +1 -4
  92. package/dist/{chunk-S3J2TLV6.js.map → chunks/chunk-M7P3QNRU.js.map} +2 -2
  93. package/dist/chunks/chunk-PPHLQVL7.js +4234 -0
  94. package/dist/chunks/chunk-PPHLQVL7.js.map +7 -0
  95. package/dist/{chunk-ABLVTESJ.js → chunks/chunk-QAXE37B5.js} +1 -4
  96. package/dist/chunks/chunk-QAXE37B5.js.map +7 -0
  97. package/dist/chunks/chunk-QHQOBUF6.js +60 -0
  98. package/dist/chunks/chunk-QHQOBUF6.js.map +7 -0
  99. package/dist/{chunk-SRZZFAS7.js → chunks/chunk-RPJXO7GG.js} +241 -214
  100. package/dist/chunks/chunk-RPJXO7GG.js.map +7 -0
  101. package/dist/{chunk-NPFOMITO.js → chunks/chunk-SWQV4KSY.js} +1 -4
  102. package/dist/{chunk-NPFOMITO.js.map → chunks/chunk-SWQV4KSY.js.map} +2 -2
  103. package/dist/chunks/chunk-SZLAPULP.js +28 -0
  104. package/dist/chunks/chunk-SZLAPULP.js.map +7 -0
  105. package/dist/{chunk-SDGKPKDK.js → chunks/chunk-T7RB5V5J.js} +23 -25
  106. package/dist/chunks/chunk-T7RB5V5J.js.map +7 -0
  107. package/dist/{chunk-HN4E4UUQ.js → chunks/chunk-TI2CTTMA.js} +25 -17
  108. package/dist/chunks/chunk-TI2CTTMA.js.map +7 -0
  109. package/dist/{chunk-G6I7XROM.js → chunks/chunk-TNGVRTO5.js} +45 -20
  110. package/dist/chunks/chunk-TNGVRTO5.js.map +7 -0
  111. package/dist/chunks/chunk-TNWB3U5Y.js +2077 -0
  112. package/dist/chunks/chunk-TNWB3U5Y.js.map +7 -0
  113. package/dist/chunks/chunk-U2IHWPCU.js +12 -0
  114. package/dist/chunks/chunk-U2IHWPCU.js.map +7 -0
  115. package/dist/{chunk-KAA5BGMQ.js → chunks/chunk-UNOY3VJ2.js} +1 -4
  116. package/dist/{chunk-KAA5BGMQ.js.map → chunks/chunk-UNOY3VJ2.js.map} +2 -2
  117. package/dist/{chunk-3TXNP6HH.js → chunks/chunk-UVDJL6ZZ.js} +97 -58
  118. package/dist/chunks/chunk-UVDJL6ZZ.js.map +7 -0
  119. package/dist/chunks/chunk-VNCW4C2Z.js +13452 -0
  120. package/dist/chunks/chunk-VNCW4C2Z.js.map +7 -0
  121. package/dist/chunks/chunk-W5EGGA44.js +15 -0
  122. package/dist/chunks/chunk-W5EGGA44.js.map +7 -0
  123. package/dist/chunks/chunk-XR2W3MAM.js +1533 -0
  124. package/dist/chunks/chunk-XR2W3MAM.js.map +7 -0
  125. package/dist/{chunk-QYFKRZQC.js → chunks/chunk-YIO5EBMQ.js} +423 -377
  126. package/dist/chunks/chunk-YIO5EBMQ.js.map +7 -0
  127. package/dist/chunks/chunk-ZBVLKZ5V.js +1062 -0
  128. package/dist/chunks/chunk-ZBVLKZ5V.js.map +7 -0
  129. package/dist/{chunk-E6YNABER.js → chunks/chunk-ZCLTZIVP.js} +1 -4
  130. package/dist/chunks/chunk-ZCLTZIVP.js.map +7 -0
  131. package/dist/chunks/client-SILZNM5N.js +42 -0
  132. package/dist/{config-6ZMBCL23.js → chunks/config-25HRTPSP.js} +48 -10
  133. package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
  134. package/dist/{customCommands-DNEJS3ZU.js → chunks/customCommands-TYMYZRG5.js} +11 -8
  135. package/dist/chunks/engine-MRVF6FK6.js +39 -0
  136. package/dist/{env-OFAXZ3XG.js → chunks/env-TJ5NOBEB.js} +7 -5
  137. package/dist/{kodeAgentSessionId-X6XWQW7B.js → chunks/kodeAgentSessionId-VTNISJ2L.js} +2 -4
  138. package/dist/chunks/kodeAgentSessionLoad-YB2RKBGJ.js +15 -0
  139. package/dist/chunks/kodeAgentSessionResume-DZSIVKVA.js +13 -0
  140. package/dist/chunks/kodeAgentStreamJson-X5PLS2S6.js +11 -0
  141. package/dist/{kodeAgentStreamJsonSession-GRWG3SPE.js → chunks/kodeAgentStreamJsonSession-RDXM4XYF.js} +38 -24
  142. package/dist/chunks/kodeAgentStreamJsonSession-RDXM4XYF.js.map +7 -0
  143. package/dist/{chunk-4RTX4AG4.js → chunks/kodeAgentStructuredStdio-SVGDSB4P.js} +14 -9
  144. package/dist/chunks/kodeAgentStructuredStdio-SVGDSB4P.js.map +7 -0
  145. package/dist/{kodeHooks-TDMXFWSO.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
  146. package/dist/{llm-XVXWYOHK.js → chunks/llm-62N6T5ZT.js} +1734 -1526
  147. package/dist/chunks/llm-62N6T5ZT.js.map +7 -0
  148. package/dist/chunks/llmLazy-ZUSSE3ZA.js +13 -0
  149. package/dist/{mentionProcessor-YD7YXYGF.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
  150. package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
  151. package/dist/{messages-OFUJSPRV.js → chunks/messages-EEWWLPHN.js} +2 -6
  152. package/dist/chunks/model-5TIEKQPD.js +37 -0
  153. package/dist/{openai-5G5D5Q4B.js → chunks/openai-XXK3YZG4.js} +13 -10
  154. package/dist/{outputStyles-HLDXFQK3.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
  155. package/dist/chunks/permissions-HO7INPWM.js +27 -0
  156. package/dist/{pluginRuntime-FPTKK6NY.js → chunks/pluginRuntime-C7K5ULK2.js} +31 -48
  157. package/dist/chunks/pluginRuntime-C7K5ULK2.js.map +7 -0
  158. package/dist/chunks/pluginValidation-DAM7WRTC.js +20 -0
  159. package/dist/chunks/registry-XYJXMOA5.js +60 -0
  160. package/dist/chunks/responsesStreaming-JNGE2P3D.js +8 -0
  161. package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js +577 -0
  162. package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js.map +7 -0
  163. package/dist/chunks/server-REXXF5IK.js +46 -0
  164. package/dist/{skillMarketplace-PSNKDINM.js → chunks/skillMarketplace-N4HVHNST.js} +8 -6
  165. package/dist/chunks/src-OROQIWP3.js +44 -0
  166. package/dist/chunks/src-QXLGGMUW.js +1647 -0
  167. package/dist/chunks/src-QXLGGMUW.js.map +7 -0
  168. package/dist/{cli-SRV2INSL.js → chunks/src-SSDT6MVP.js} +2659 -3384
  169. package/dist/chunks/src-SSDT6MVP.js.map +7 -0
  170. package/dist/chunks/theme-YBJUIMWK.js +10 -0
  171. package/dist/{toolPermissionContext-65L65VEZ.js → chunks/toolPermissionContext-MOCTRR7N.js} +2 -4
  172. package/dist/chunks/toolPermissionSettings-EV2EJAXL.js +18 -0
  173. package/dist/chunks/toolPermissionSettings-EV2EJAXL.js.map +7 -0
  174. package/dist/chunks/uuid-6577SO6X.js +7 -0
  175. package/dist/chunks/uuid-6577SO6X.js.map +7 -0
  176. package/dist/chunks/webOnlyMode-ALXX7UQY.js +66 -0
  177. package/dist/chunks/webOnlyMode-ALXX7UQY.js.map +7 -0
  178. package/dist/entrypoints/cli.js +10 -0
  179. package/dist/entrypoints/cli.js.map +7 -0
  180. package/dist/entrypoints/daemon.js +10 -0
  181. package/dist/entrypoints/daemon.js.map +7 -0
  182. package/dist/entrypoints/mcp.js +71 -0
  183. package/dist/entrypoints/mcp.js.map +7 -0
  184. package/dist/index.js +6 -7
  185. package/dist/index.js.map +3 -3
  186. package/dist/sdk/client.cjs +391 -0
  187. package/dist/sdk/client.cjs.map +7 -0
  188. package/dist/sdk/client.js +364 -0
  189. package/dist/sdk/client.js.map +7 -0
  190. package/dist/sdk/core.cjs +19932 -0
  191. package/dist/sdk/core.cjs.map +7 -0
  192. package/dist/sdk/core.js +19893 -0
  193. package/dist/sdk/core.js.map +7 -0
  194. package/dist/sdk/daemon-client.cjs +257 -0
  195. package/dist/sdk/daemon-client.cjs.map +7 -0
  196. package/dist/sdk/daemon-client.js +221 -0
  197. package/dist/sdk/daemon-client.js.map +7 -0
  198. package/dist/sdk/protocol.cjs +170 -0
  199. package/dist/sdk/protocol.cjs.map +7 -0
  200. package/dist/sdk/protocol.js +140 -0
  201. package/dist/sdk/protocol.js.map +7 -0
  202. package/dist/sdk/runtime-node.cjs +236 -0
  203. package/dist/sdk/runtime-node.cjs.map +7 -0
  204. package/dist/sdk/runtime-node.js +222 -0
  205. package/dist/sdk/runtime-node.js.map +7 -0
  206. package/dist/sdk/runtime.cjs +17 -0
  207. package/dist/sdk/runtime.cjs.map +7 -0
  208. package/dist/sdk/runtime.js +0 -0
  209. package/dist/sdk/runtime.js.map +7 -0
  210. package/dist/sdk/tools.cjs +30300 -0
  211. package/dist/sdk/tools.cjs.map +7 -0
  212. package/dist/sdk/tools.js +30282 -0
  213. package/dist/sdk/tools.js.map +7 -0
  214. package/dist/webui/assets/index-5hlfByVS.css +1 -0
  215. package/dist/webui/assets/index-BR9lm1lA.js +82 -0
  216. package/dist/webui/index.html +28 -0
  217. package/package.json +93 -22
  218. package/scripts/binary-utils.cjs +12 -4
  219. package/scripts/cli-acp-wrapper.cjs +3 -17
  220. package/scripts/cli-wrapper.cjs +5 -7
  221. package/scripts/postinstall.js +8 -4
  222. package/dist/REPL-GIU4ZIXM.js +0 -42
  223. package/dist/acp-H3VJ77YG.js +0 -1357
  224. package/dist/acp-H3VJ77YG.js.map +0 -7
  225. package/dist/agentsValidate-XP3CFN6F.js.map +0 -7
  226. package/dist/ask-3G5H5KD5.js.map +0 -7
  227. package/dist/autoUpdater-DNRMJWFQ.js +0 -17
  228. package/dist/chunk-2KWKUXLT.js.map +0 -7
  229. package/dist/chunk-2PMO2FS2.js.map +0 -7
  230. package/dist/chunk-3TXNP6HH.js.map +0 -7
  231. package/dist/chunk-4GAIJGRH.js.map +0 -7
  232. package/dist/chunk-4RTX4AG4.js.map +0 -7
  233. package/dist/chunk-54DNHKOD.js.map +0 -7
  234. package/dist/chunk-67PY5IX6.js +0 -34
  235. package/dist/chunk-67PY5IX6.js.map +0 -7
  236. package/dist/chunk-6DRDLOLP.js +0 -2613
  237. package/dist/chunk-6DRDLOLP.js.map +0 -7
  238. package/dist/chunk-7CQVZNQV.js +0 -1609
  239. package/dist/chunk-7CQVZNQV.js.map +0 -7
  240. package/dist/chunk-ABLVTESJ.js.map +0 -7
  241. package/dist/chunk-AIMIPK4B.js +0 -835
  242. package/dist/chunk-AIMIPK4B.js.map +0 -7
  243. package/dist/chunk-BHGTA6JQ.js.map +0 -7
  244. package/dist/chunk-CIG63V4E.js +0 -72
  245. package/dist/chunk-CIG63V4E.js.map +0 -7
  246. package/dist/chunk-E6YNABER.js.map +0 -7
  247. package/dist/chunk-EH34V7CY.js.map +0 -7
  248. package/dist/chunk-EZXMVTDU.js.map +0 -7
  249. package/dist/chunk-FH5CHM6L.js +0 -148
  250. package/dist/chunk-FH5CHM6L.js.map +0 -7
  251. package/dist/chunk-G6I7XROM.js.map +0 -7
  252. package/dist/chunk-HN4E4UUQ.js.map +0 -7
  253. package/dist/chunk-HSPVVDIW.js +0 -30198
  254. package/dist/chunk-HSPVVDIW.js.map +0 -7
  255. package/dist/chunk-IE2CG2TV.js.map +0 -7
  256. package/dist/chunk-K2MI4TPB.js.map +0 -7
  257. package/dist/chunk-MN77D2F7.js +0 -2931
  258. package/dist/chunk-MN77D2F7.js.map +0 -7
  259. package/dist/chunk-NQLEUHMS.js.map +0 -7
  260. package/dist/chunk-OIFQB3S4.js +0 -515
  261. package/dist/chunk-OIFQB3S4.js.map +0 -7
  262. package/dist/chunk-OWTG2W3A.js +0 -164
  263. package/dist/chunk-OWTG2W3A.js.map +0 -7
  264. package/dist/chunk-OZNRLY3E.js.map +0 -7
  265. package/dist/chunk-QYFKRZQC.js.map +0 -7
  266. package/dist/chunk-S6HRABTA.js.map +0 -7
  267. package/dist/chunk-SDGKPKDK.js.map +0 -7
  268. package/dist/chunk-SRZZFAS7.js.map +0 -7
  269. package/dist/chunk-UKHTVRJM.js +0 -47
  270. package/dist/chunk-UKHTVRJM.js.map +0 -7
  271. package/dist/chunk-UYXEDKOZ.js +0 -24
  272. package/dist/chunk-UYXEDKOZ.js.map +0 -7
  273. package/dist/chunk-VBXVYQYY.js +0 -145
  274. package/dist/chunk-VBXVYQYY.js.map +0 -7
  275. package/dist/chunk-WVHORZQ5.js +0 -17
  276. package/dist/chunk-WVHORZQ5.js.map +0 -7
  277. package/dist/chunk-WWUWDNWW.js +0 -49
  278. package/dist/chunk-WWUWDNWW.js.map +0 -7
  279. package/dist/chunk-Z33T5YN5.js +0 -654
  280. package/dist/chunk-Z33T5YN5.js.map +0 -7
  281. package/dist/chunk-ZQU3TXLC.js.map +0 -7
  282. package/dist/cli-SRV2INSL.js.map +0 -7
  283. package/dist/commands-TWH6PGVG.js +0 -46
  284. package/dist/context-JQIOOI4W.js +0 -30
  285. package/dist/costTracker-6SL26FDB.js +0 -19
  286. package/dist/kodeAgentSessionLoad-6N27AC5K.js +0 -18
  287. package/dist/kodeAgentSessionResume-HUSAEO24.js +0 -16
  288. package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
  289. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +0 -7
  290. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
  291. package/dist/llm-XVXWYOHK.js.map +0 -7
  292. package/dist/llmLazy-7TD5N7XP.js +0 -15
  293. package/dist/loader-AUXIJTY6.js +0 -28
  294. package/dist/mcp-BXJ3K7NZ.js +0 -49
  295. package/dist/mentionProcessor-YD7YXYGF.js.map +0 -7
  296. package/dist/model-KPYCXWBK.js +0 -30
  297. package/dist/pluginRuntime-FPTKK6NY.js.map +0 -7
  298. package/dist/pluginValidation-DSFXZ4GF.js +0 -17
  299. package/dist/prompts-LWLAJRS2.js +0 -48
  300. package/dist/query-HVPWL27C.js +0 -50
  301. package/dist/responsesStreaming-AW344PQO.js +0 -10
  302. package/dist/ripgrep-YOPCY2GO.js +0 -17
  303. package/dist/state-KNRWP3FO.js +0 -16
  304. package/dist/theme-7S2QN2FO.js +0 -14
  305. package/dist/toolPermissionSettings-GPOBH4IV.js +0 -18
  306. package/dist/tools-FZU2FZBD.js +0 -47
  307. package/dist/userInput-VHNBN2MW.js +0 -311
  308. package/dist/userInput-VHNBN2MW.js.map +0 -7
  309. package/dist/uuid-QN2CNKKN.js +0 -9
  310. /package/dist/{REPL-GIU4ZIXM.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
  311. /package/dist/{autoUpdater-DNRMJWFQ.js.map → chunks/REPL-RQ6LO6S7.js.map} +0 -0
  312. /package/dist/{chunk-JC6NCUG5.js.map → chunks/ResumeConversation-6DMVBEGH.js.map} +0 -0
  313. /package/dist/{commands-TWH6PGVG.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
  314. /package/dist/{config-6ZMBCL23.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
  315. /package/dist/{context-JQIOOI4W.js.map → chunks/chunk-4CRUCZR4.js.map} +0 -0
  316. /package/dist/{costTracker-6SL26FDB.js.map → chunks/chunk-54KOYG5C.js.map} +0 -0
  317. /package/dist/{customCommands-DNEJS3ZU.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
  318. /package/dist/{env-OFAXZ3XG.js.map → chunks/chunk-LB6TCPDI.js.map} +0 -0
  319. /package/dist/{kodeAgentSessionId-X6XWQW7B.js.map → chunks/client-SILZNM5N.js.map} +0 -0
  320. /package/dist/{kodeAgentSessionLoad-6N27AC5K.js.map → chunks/config-25HRTPSP.js.map} +0 -0
  321. /package/dist/{kodeAgentSessionResume-HUSAEO24.js.map → chunks/cost-tracker-Z2UZT2J5.js.map} +0 -0
  322. /package/dist/{kodeAgentStreamJson-NXFN7TXH.js.map → chunks/customCommands-TYMYZRG5.js.map} +0 -0
  323. /package/dist/{kodeAgentStructuredStdio-HGWJT7CU.js.map → chunks/engine-MRVF6FK6.js.map} +0 -0
  324. /package/dist/{kodeHooks-TDMXFWSO.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
  325. /package/dist/{llmLazy-7TD5N7XP.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
  326. /package/dist/{loader-AUXIJTY6.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
  327. /package/dist/{mcp-BXJ3K7NZ.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
  328. /package/dist/{messages-OFUJSPRV.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
  329. /package/dist/{model-KPYCXWBK.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
  330. /package/dist/{openai-5G5D5Q4B.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
  331. /package/dist/{outputStyles-HLDXFQK3.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
  332. /package/dist/{pluginValidation-DSFXZ4GF.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
  333. /package/dist/{prompts-LWLAJRS2.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
  334. /package/dist/{query-HVPWL27C.js.map → chunks/outputStyles-FAJTXN2A.js.map} +0 -0
  335. /package/dist/{responsesStreaming-AW344PQO.js.map → chunks/permissions-HO7INPWM.js.map} +0 -0
  336. /package/dist/{ripgrep-YOPCY2GO.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
  337. /package/dist/{skillMarketplace-PSNKDINM.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
  338. /package/dist/{state-KNRWP3FO.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
  339. /package/dist/{theme-7S2QN2FO.js.map → chunks/server-REXXF5IK.js.map} +0 -0
  340. /package/dist/{toolPermissionContext-65L65VEZ.js.map → chunks/skillMarketplace-N4HVHNST.js.map} +0 -0
  341. /package/dist/{toolPermissionSettings-GPOBH4IV.js.map → chunks/src-OROQIWP3.js.map} +0 -0
  342. /package/dist/{tools-FZU2FZBD.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
  343. /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/ai/openai/completion.ts", "../../packages/core/src/constants/models/providers.ts", "../../packages/core/src/ai/openai/endpointFallback.ts", "../../packages/core/src/ai/openai/modelErrors.ts", "../../packages/core/src/ai/openai/modelFeatures.ts", "../../packages/core/src/ai/openai/retry.ts", "../../packages/core/src/ai/openai/stream.ts", "../../packages/core/src/ai/openai/gpt5.ts", "../../packages/core/src/ai/openai/responsesApi.ts", "../../packages/core/src/ai/openai/customModels.ts"],
4
+ "sourcesContent": ["import { OpenAI } from 'openai'\nimport type { ProxyAgent } from 'undici'\nimport { ProxyAgent as ProxyAgentCtor, fetch } from 'undici'\nimport type { Response } from 'undici'\n\nimport { getGlobalConfig } from '#core/utils/config'\nimport { debug as debugLogger, logAPIError } from '#core/utils/debugLogger'\nimport { providers } from '#core/constants/models/providers'\n\nimport { tryWithEndpointFallback } from './endpointFallback'\nimport { maybeFixModelError, applyModelErrorFixes } from './modelErrors'\nimport { applyModelSpecificTransformations } from './modelFeatures'\nimport { abortableDelay, getRetryDelay } from './retry'\nimport { createStreamProcessor } from './stream'\n\ntype OpenAICompatibleProvider =\n | 'minimax'\n | 'kimi'\n | 'deepseek'\n | 'siliconflow'\n | 'qwen'\n | 'glm'\n | 'glm-coding'\n | 'baidu-qianfan'\n | 'openai'\n | 'mistral'\n | 'xai'\n | 'groq'\n | 'custom-openai'\n\nconst STREAM_OPENAI_COMPATIBLE: readonly OpenAICompatibleProvider[] = [\n 'minimax',\n 'kimi',\n 'deepseek',\n 'siliconflow',\n 'qwen',\n 'glm',\n 'glm-coding',\n 'baidu-qianfan',\n 'openai',\n 'mistral',\n 'xai',\n 'groq',\n 'custom-openai',\n]\n\nconst NON_STREAM_OPENAI_COMPATIBLE: readonly Exclude<\n OpenAICompatibleProvider,\n 'glm-coding'\n>[] = [\n 'minimax',\n 'kimi',\n 'deepseek',\n 'siliconflow',\n 'qwen',\n 'glm',\n 'baidu-qianfan',\n 'openai',\n 'mistral',\n 'xai',\n 'groq',\n 'custom-openai',\n]\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) throw new Error('Request cancelled by user')\n}\n\nfunction normalizeToolMessages(opts: OpenAI.ChatCompletionCreateParams): void {\n opts.messages = opts.messages.map(msg => {\n if (msg.role !== 'tool') return msg\n\n if (Array.isArray(msg.content)) {\n return {\n ...msg,\n content:\n msg.content\n .map(c => c.text || '')\n .filter(Boolean)\n .join('\\\\n\\\\n') || '(empty content)',\n }\n }\n\n if (typeof msg.content !== 'string') {\n return {\n ...msg,\n content:\n typeof msg.content === 'undefined'\n ? '(empty content)'\n : JSON.stringify(msg.content),\n }\n }\n\n return msg\n })\n}\n\nfunction parseErrorMessage(errorData: unknown, status: number): string {\n if (typeof errorData === 'object' && errorData !== null) {\n const record = errorData as Record<string, unknown>\n const errorObj =\n typeof record.error === 'object' && record.error !== null\n ? (record.error as Record<string, unknown>)\n : null\n const nested = errorObj?.message\n if (typeof nested === 'string' && nested.trim()) return nested\n const direct = record.message\n if (typeof direct === 'string' && direct.trim()) return direct\n }\n return `HTTP ${status}`\n}\n\nfunction endpointForProvider(provider: string): string {\n const azureApiVersion = '2024-06-01'\n if (provider === 'azure') {\n return `/chat/completions?api-version=${azureApiVersion}`\n }\n if (provider === 'minimax') {\n return '/text/chatcompletion_v2'\n }\n return '/chat/completions'\n}\n\nfunction createProxy(): ProxyAgent | undefined {\n return getGlobalConfig().proxy\n ? new ProxyAgentCtor(getGlobalConfig().proxy)\n : undefined\n}\n\nfunction createHeaders(\n provider: string,\n apiKey: string | undefined,\n): Record<string, string> {\n const headers: Record<string, string> = { 'Content-Type': 'application/json' }\n\n if (apiKey) {\n if (provider === 'azure') {\n headers['api-key'] = apiKey\n } else {\n headers.Authorization = `Bearer ${apiKey}`\n }\n }\n\n return headers\n}\n\nasync function fetchCompletionResponse(args: {\n baseURL: string\n endpoint: string\n provider: string\n proxy: ProxyAgent | undefined\n headers: Record<string, string>\n opts: OpenAI.ChatCompletionCreateParams\n stream: boolean\n signal?: AbortSignal\n}): Promise<{ response: Response; endpoint: string }> {\n const isOpenAICompatible = args.stream\n ? STREAM_OPENAI_COMPATIBLE.includes(\n args.provider as OpenAICompatibleProvider,\n )\n : NON_STREAM_OPENAI_COMPATIBLE.includes(\n args.provider as Exclude<OpenAICompatibleProvider, 'glm-coding'>,\n )\n\n if (isOpenAICompatible && args.provider !== 'azure') {\n return await tryWithEndpointFallback(\n args.baseURL,\n args.opts,\n args.headers,\n args.provider,\n args.proxy,\n args.signal,\n )\n }\n\n const response = await fetch(`${args.baseURL}${args.endpoint}`, {\n method: 'POST',\n headers: args.headers,\n body: JSON.stringify(\n args.stream ? { ...args.opts, stream: true } : args.opts,\n ),\n dispatcher: args.proxy,\n signal: args.signal,\n })\n return { response, endpoint: args.endpoint }\n}\n\nexport async function getCompletionWithProfile(\n modelProfile: unknown,\n opts: OpenAI.ChatCompletionCreateParams,\n attempt: number = 0,\n maxAttempts: number = 10,\n signal?: AbortSignal,\n): Promise<OpenAI.ChatCompletion | AsyncIterable<OpenAI.ChatCompletionChunk>> {\n const profile = modelProfile as {\n provider?: string\n baseURL?: string\n apiKey?: string\n modelName?: string\n name?: string\n } | null\n\n const provider = profile?.provider || 'anthropic'\n const providerConfig = providers[provider as keyof typeof providers]\n const baseURL = profile?.baseURL || providerConfig?.baseURL || ''\n const apiKey = profile?.apiKey\n const proxy = createProxy()\n const headers = createHeaders(provider, apiKey)\n\n for (\n let currentAttempt = attempt;\n currentAttempt < maxAttempts;\n currentAttempt++\n ) {\n throwIfAborted(signal)\n\n applyModelSpecificTransformations(opts)\n await applyModelErrorFixes(opts, baseURL || '')\n normalizeToolMessages(opts)\n\n debugLogger.api('OPENAI_API_CALL_START', {\n endpoint: baseURL || 'DEFAULT_OPENAI',\n model: opts.model,\n provider,\n apiKeyConfigured: !!apiKey,\n apiKeyPrefix: apiKey ? apiKey.substring(0, 8) : null,\n maxTokens: opts.max_tokens,\n temperature: opts.temperature,\n messageCount: opts.messages?.length || 0,\n streamMode: opts.stream,\n timestamp: new Date().toISOString(),\n modelProfileModelName: profile?.modelName,\n modelProfileName: profile?.name,\n })\n\n const endpoint = endpointForProvider(provider)\n\n try {\n const wantsStream = !!opts.stream\n const { response, endpoint: usedEndpoint } =\n await fetchCompletionResponse({\n baseURL,\n endpoint,\n provider,\n proxy,\n headers,\n opts,\n stream: wantsStream,\n signal,\n })\n\n if (!response.ok) {\n throwIfAborted(signal)\n\n try {\n const errorData = await response.json()\n const errorMessage = parseErrorMessage(errorData, response.status)\n\n const fixed = await maybeFixModelError({\n baseURL: baseURL || '',\n opts,\n errorMessage,\n status: response.status,\n })\n\n if (fixed) {\n continue\n }\n\n debugLogger.warn('OPENAI_API_ERROR_UNHANDLED', {\n model: opts.model,\n status: response.status,\n errorMessage,\n })\n\n if (wantsStream) {\n logAPIError({\n model: opts.model,\n endpoint: `${baseURL}${usedEndpoint}`,\n status: response.status,\n error: errorMessage,\n request: opts,\n response: errorData,\n provider,\n })\n }\n } catch (parseError) {\n debugLogger.warn('OPENAI_API_ERROR_PARSE_FAILED', {\n model: opts.model,\n status: response.status,\n error:\n parseError instanceof Error\n ? parseError.message\n : String(parseError),\n })\n\n if (wantsStream) {\n logAPIError({\n model: opts.model,\n endpoint: `${baseURL}${usedEndpoint}`,\n status: response.status,\n error: `Could not parse error response: ${parseError instanceof Error ? parseError.message : String(parseError)}`,\n request: opts,\n response: {\n parseError:\n parseError instanceof Error\n ? parseError.message\n : String(parseError),\n },\n provider,\n })\n }\n }\n\n debugLogger.warn('OPENAI_API_RETRY', {\n model: opts.model,\n status: response.status,\n attempt: currentAttempt + 1,\n maxAttempts,\n delayMs: getRetryDelay(currentAttempt),\n })\n\n await abortableDelay(getRetryDelay(currentAttempt), signal).catch(\n err => {\n if (err instanceof Error && err.message === 'Request was aborted') {\n throw new Error('Request cancelled by user')\n }\n throw err\n },\n )\n continue\n }\n\n if (wantsStream) {\n const body = response.body\n if (!body) throw new Error('Stream is null or undefined')\n return createStreamProcessor(body, signal)\n }\n\n return (await response.json()) as OpenAI.ChatCompletion\n } catch (error) {\n throwIfAborted(signal)\n\n if (currentAttempt + 1 >= maxAttempts) {\n throw error\n }\n\n debugLogger.warn('OPENAI_NETWORK_RETRY', {\n model: opts.model,\n attempt: currentAttempt + 1,\n maxAttempts,\n delayMs: getRetryDelay(currentAttempt),\n error: error instanceof Error ? error.message : String(error),\n })\n\n await abortableDelay(getRetryDelay(currentAttempt), signal).catch(err => {\n if (err instanceof Error && err.message === 'Request was aborted') {\n throw new Error('Request cancelled by user')\n }\n throw err\n })\n }\n }\n\n throw new Error('Max attempts reached')\n}\n", "export const providers = {\n kimi: {\n name: 'Kimi (Moonshot)',\n baseURL: 'https://api.moonshot.cn/v1',\n },\n anthropic: {\n name: 'Messages API (Native)',\n baseURL: 'https://api.anthropic.com',\n },\n burncloud: {\n name: 'BurnCloud (All models)',\n baseURL: 'https://ai.burncloud.com/v1',\n },\n deepseek: {\n name: 'DeepSeek',\n baseURL: 'https://api.deepseek.com',\n },\n qwen: {\n name: 'Qwen (Alibaba)',\n baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n },\n openai: {\n name: 'OpenAI',\n baseURL: 'https://api.openai.com/v1',\n },\n ollama: {\n name: 'Ollama',\n baseURL: 'http://localhost:11434/v1',\n },\n gemini: {\n name: 'Gemini',\n baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai',\n },\n 'custom-openai': {\n name: 'Custom OpenAI-Compatible API',\n baseURL: '', // Will be configured by user\n },\n openrouter: {\n name: 'OpenRouter',\n baseURL: 'https://openrouter.ai/api/v1',\n },\n minimax: {\n name: 'MiniMax',\n baseURL: 'https://api.minimaxi.com/v1',\n },\n 'minimax-coding': {\n name: 'MiniMax Coding Plan',\n baseURL: 'https://api.minimaxi.com/anthropic',\n },\n siliconflow: {\n name: 'SiliconFlow',\n baseURL: 'https://api.siliconflow.cn/v1',\n },\n glm: {\n name: 'GLM (Zhipu AI)',\n baseURL: 'https://open.bigmodel.cn/api/paas/v4',\n },\n 'glm-coding': {\n name: 'GLM Coding Plan',\n baseURL: 'https://open.bigmodel.cn/api/coding/paas/v4',\n },\n 'baidu-qianfan': {\n name: 'Baidu Qianfan',\n baseURL: 'https://qianfan.baidubce.com/v2',\n },\n mistral: {\n name: 'Mistral',\n baseURL: 'https://api.mistral.ai/v1',\n },\n xai: {\n name: 'xAI',\n baseURL: 'https://api.x.ai/v1',\n },\n groq: {\n name: 'Groq',\n baseURL: 'https://api.groq.com/openai/v1',\n },\n azure: {\n name: 'Azure OpenAI',\n baseURL: '', // Will be dynamically constructed based on resource name\n },\n}\n", "import type OpenAI from 'openai'\nimport type { ProxyAgent } from 'undici'\nimport { fetch } from 'undici'\nimport type { Response } from 'undici'\n\nimport { debug as debugLogger } from '#core/utils/debugLogger'\n\n/**\n * Try different endpoints for OpenAI-compatible providers.\n */\nexport async function tryWithEndpointFallback(\n baseURL: string,\n opts: OpenAI.ChatCompletionCreateParams,\n headers: Record<string, string>,\n provider: string,\n proxy: ProxyAgent | undefined,\n signal?: AbortSignal,\n): Promise<{ response: Response; endpoint: string }> {\n const endpointsToTry: string[] = []\n\n if (provider === 'minimax') {\n endpointsToTry.push('/text/chatcompletion_v2', '/chat/completions')\n } else {\n endpointsToTry.push('/chat/completions')\n }\n\n let lastError: unknown = null\n\n for (const endpoint of endpointsToTry) {\n try {\n const response = await fetch(`${baseURL}${endpoint}`, {\n method: 'POST',\n headers,\n body: JSON.stringify(opts.stream ? { ...opts, stream: true } : opts),\n dispatcher: proxy,\n signal,\n })\n\n if (response.ok) {\n return { response, endpoint }\n }\n\n if (response.status === 404 && endpointsToTry.length > 1) {\n debugLogger.api('OPENAI_ENDPOINT_FALLBACK', {\n endpoint,\n status: 404,\n reason: 'not_found',\n })\n continue\n }\n\n return { response, endpoint }\n } catch (error) {\n lastError = error\n if (endpointsToTry.indexOf(endpoint) < endpointsToTry.length - 1) {\n debugLogger.api('OPENAI_ENDPOINT_FALLBACK', {\n endpoint,\n reason: 'network_error',\n error: error instanceof Error ? error.message : String(error),\n })\n continue\n }\n }\n }\n\n throw lastError instanceof Error\n ? lastError\n : new Error('All endpoints failed')\n}\n", "import type OpenAI from 'openai'\n\nimport { setSessionState, getSessionState } from '#core/utils/sessionState'\nimport { debug as debugLogger } from '#core/utils/debugLogger'\n\nenum ModelErrorType {\n MaxLength = '1024',\n MaxCompletionTokens = 'max_completion_tokens',\n TemperatureRestriction = 'temperature_restriction',\n StreamOptions = 'stream_options',\n Citations = 'citations',\n RateLimit = 'rate_limit',\n}\n\nfunction getModelErrorKey(\n baseURL: string,\n model: string,\n type: ModelErrorType,\n): string {\n return `${baseURL}:${model}:${type}`\n}\n\nfunction hasModelError(\n baseURL: string,\n model: string,\n type: ModelErrorType,\n): boolean {\n return !!getSessionState('modelErrors')[\n getModelErrorKey(baseURL, model, type)\n ]\n}\n\nfunction setModelError(\n baseURL: string,\n model: string,\n type: ModelErrorType,\n error: string,\n) {\n setSessionState('modelErrors', {\n [getModelErrorKey(baseURL, model, type)]: error,\n })\n}\n\ntype ErrorDetector = (errMsg: string) => boolean\ntype ErrorFixer = (\n opts: OpenAI.ChatCompletionCreateParams,\n) => Promise<void> | void\ninterface ErrorHandler {\n type: ModelErrorType\n detect: ErrorDetector\n fix: ErrorFixer\n}\n\nconst GPT5_ERROR_HANDLERS: ErrorHandler[] = [\n {\n type: ModelErrorType.MaxCompletionTokens,\n detect: errMsg => {\n const lowerMsg = errMsg.toLowerCase()\n return (\n (lowerMsg.includes(\"unsupported parameter: 'max_tokens'\") &&\n lowerMsg.includes(\"'max_completion_tokens'\")) ||\n (lowerMsg.includes('max_tokens') &&\n lowerMsg.includes('max_completion_tokens')) ||\n (lowerMsg.includes('max_tokens') &&\n lowerMsg.includes('not supported')) ||\n (lowerMsg.includes('max_tokens') &&\n lowerMsg.includes('use max_completion_tokens')) ||\n (lowerMsg.includes('invalid parameter') &&\n lowerMsg.includes('max_tokens')) ||\n (lowerMsg.includes('parameter error') &&\n lowerMsg.includes('max_tokens'))\n )\n },\n fix: async opts => {\n debugLogger.api('GPT5_FIX_MAX_TOKENS', {\n from: opts.max_tokens,\n to: opts.max_tokens,\n })\n if ('max_tokens' in opts) {\n opts.max_completion_tokens = opts.max_tokens\n delete opts.max_tokens\n }\n },\n },\n {\n type: ModelErrorType.TemperatureRestriction,\n detect: errMsg => {\n const lowerMsg = errMsg.toLowerCase()\n return (\n lowerMsg.includes('temperature') &&\n (lowerMsg.includes('only supports') ||\n lowerMsg.includes('must be 1') ||\n lowerMsg.includes('invalid temperature'))\n )\n },\n fix: async opts => {\n debugLogger.api('GPT5_FIX_TEMPERATURE', {\n from: opts.temperature,\n to: 1,\n })\n opts.temperature = 1\n },\n },\n]\n\nconst ERROR_HANDLERS: ErrorHandler[] = [\n {\n type: ModelErrorType.MaxLength,\n detect: errMsg =>\n errMsg.includes('Expected a string with maximum length 1024'),\n fix: async opts => {\n const toolDescriptions: Record<string, string> = {}\n for (const tool of opts.tools || []) {\n if (tool.function.description.length <= 1024) continue\n let str = ''\n let remainder = ''\n for (const line of tool.function.description.split('\\\\n')) {\n if (str.length + line.length < 1024) {\n str += line + '\\\\n'\n } else {\n remainder += line + '\\\\n'\n }\n }\n\n tool.function.description = str\n toolDescriptions[tool.function.name] = remainder\n }\n if (Object.keys(toolDescriptions).length > 0) {\n let content = '<additional-tool-usage-instructions>\\\\n\\\\n'\n for (const [name, description] of Object.entries(toolDescriptions)) {\n content += `<${name}>\\\\n${description}\\\\n</${name}>\\\\n\\\\n`\n }\n content += '</additional-tool-usage-instructions>'\n\n for (let i = opts.messages.length - 1; i >= 0; i--) {\n if (opts.messages[i].role === 'system') {\n opts.messages.splice(i + 1, 0, {\n role: 'system',\n content,\n })\n break\n }\n }\n }\n },\n },\n {\n type: ModelErrorType.MaxCompletionTokens,\n detect: errMsg => errMsg.includes(\"Use 'max_completion_tokens'\"),\n fix: async opts => {\n opts.max_completion_tokens = opts.max_tokens\n delete opts.max_tokens\n },\n },\n {\n type: ModelErrorType.StreamOptions,\n detect: errMsg => errMsg.includes('stream_options'),\n fix: async opts => {\n delete opts.stream_options\n },\n },\n {\n type: ModelErrorType.Citations,\n detect: errMsg =>\n errMsg.includes('Extra inputs are not permitted') &&\n errMsg.includes('citations'),\n fix: async opts => {\n if (!opts.messages) return\n\n for (const message of opts.messages) {\n if (!message) continue\n\n if (Array.isArray(message.content)) {\n for (const item of message.content) {\n if (item && typeof item === 'object') {\n const itemObj = item as unknown as Record<string, unknown>\n if ('citations' in itemObj) {\n delete itemObj.citations\n }\n }\n }\n } else if (message.content && typeof message.content === 'object') {\n const contentObj = message.content as unknown as Record<\n string,\n unknown\n >\n if ('citations' in contentObj) {\n delete contentObj.citations\n }\n }\n }\n },\n },\n]\n\nfunction handlersForModel(model: string): ErrorHandler[] {\n return model.startsWith('gpt-5')\n ? [...GPT5_ERROR_HANDLERS, ...ERROR_HANDLERS]\n : ERROR_HANDLERS\n}\n\nexport async function applyModelErrorFixes(\n opts: OpenAI.ChatCompletionCreateParams,\n baseURL: string,\n): Promise<void> {\n for (const handler of handlersForModel(opts.model)) {\n if (hasModelError(baseURL, opts.model, handler.type)) {\n await handler.fix(opts)\n return\n }\n }\n}\n\nexport async function maybeFixModelError(args: {\n baseURL: string\n opts: OpenAI.ChatCompletionCreateParams\n errorMessage: string\n status: number\n}): Promise<boolean> {\n for (const handler of handlersForModel(args.opts.model)) {\n if (!handler.detect(args.errorMessage)) continue\n\n debugLogger.api('OPENAI_MODEL_ERROR_DETECTED', {\n model: args.opts.model,\n type: handler.type,\n errorMessage: args.errorMessage,\n status: args.status,\n })\n\n setModelError(\n args.baseURL,\n args.opts.model,\n handler.type,\n args.errorMessage,\n )\n\n await handler.fix(args.opts)\n debugLogger.api('OPENAI_MODEL_ERROR_FIXED', {\n model: args.opts.model,\n type: handler.type,\n })\n return true\n }\n\n return false\n}\n", "import type OpenAI from 'openai'\n\nimport { debug as debugLogger } from '#core/utils/debugLogger'\n\nexport interface ModelFeatures {\n usesMaxCompletionTokens: boolean\n supportsResponsesAPI?: boolean\n requiresTemperatureOne?: boolean\n supportsVerbosityControl?: boolean\n supportsCustomTools?: boolean\n supportsAllowedTools?: boolean\n}\n\nconst MODEL_FEATURES: Record<string, ModelFeatures> = {\n o1: { usesMaxCompletionTokens: true },\n 'o1-preview': { usesMaxCompletionTokens: true },\n 'o1-mini': { usesMaxCompletionTokens: true },\n 'o1-pro': { usesMaxCompletionTokens: true },\n 'o3-mini': { usesMaxCompletionTokens: true },\n 'gpt-5': {\n usesMaxCompletionTokens: true,\n supportsResponsesAPI: true,\n requiresTemperatureOne: true,\n supportsVerbosityControl: true,\n supportsCustomTools: true,\n supportsAllowedTools: true,\n },\n 'gpt-5-mini': {\n usesMaxCompletionTokens: true,\n supportsResponsesAPI: true,\n requiresTemperatureOne: true,\n supportsVerbosityControl: true,\n supportsCustomTools: true,\n supportsAllowedTools: true,\n },\n 'gpt-5-nano': {\n usesMaxCompletionTokens: true,\n supportsResponsesAPI: true,\n requiresTemperatureOne: true,\n supportsVerbosityControl: true,\n supportsCustomTools: true,\n supportsAllowedTools: true,\n },\n 'gpt-5-chat-latest': {\n usesMaxCompletionTokens: true,\n supportsResponsesAPI: false,\n requiresTemperatureOne: true,\n supportsVerbosityControl: true,\n },\n}\n\nexport function getModelFeatures(modelName: string): ModelFeatures {\n if (!modelName || typeof modelName !== 'string') {\n return { usesMaxCompletionTokens: false }\n }\n\n if (MODEL_FEATURES[modelName]) {\n return MODEL_FEATURES[modelName]\n }\n\n if (modelName.toLowerCase().includes('gpt-5')) {\n return {\n usesMaxCompletionTokens: true,\n supportsResponsesAPI: true,\n requiresTemperatureOne: true,\n supportsVerbosityControl: true,\n supportsCustomTools: true,\n supportsAllowedTools: true,\n }\n }\n\n for (const [key, features] of Object.entries(MODEL_FEATURES)) {\n if (modelName.includes(key)) {\n return features\n }\n }\n\n return { usesMaxCompletionTokens: false }\n}\n\nexport function applyModelSpecificTransformations(\n opts: OpenAI.ChatCompletionCreateParams,\n): void {\n if (!opts.model || typeof opts.model !== 'string') {\n return\n }\n\n const features = getModelFeatures(opts.model)\n const isGPT5 = opts.model.toLowerCase().includes('gpt-5')\n\n if (isGPT5 || features.usesMaxCompletionTokens) {\n if ('max_tokens' in opts && !('max_completion_tokens' in opts)) {\n debugLogger.api('OPENAI_TRANSFORM_MAX_TOKENS', {\n model: opts.model,\n from: opts.max_tokens,\n })\n opts.max_completion_tokens = opts.max_tokens\n delete opts.max_tokens\n }\n\n if (features.requiresTemperatureOne && 'temperature' in opts) {\n if (opts.temperature !== 1 && opts.temperature !== undefined) {\n debugLogger.api('OPENAI_TRANSFORM_TEMPERATURE', {\n model: opts.model,\n from: opts.temperature,\n to: 1,\n })\n opts.temperature = 1\n }\n }\n\n if (isGPT5) {\n delete opts.frequency_penalty\n delete opts.presence_penalty\n delete opts.logit_bias\n delete opts.user\n\n if (!opts.reasoning_effort && features.supportsVerbosityControl) {\n opts.reasoning_effort = 'medium'\n }\n }\n } else {\n if (\n features.usesMaxCompletionTokens &&\n 'max_tokens' in opts &&\n !('max_completion_tokens' in opts)\n ) {\n opts.max_completion_tokens = opts.max_tokens\n delete opts.max_tokens\n }\n }\n}\n", "const RETRY_CONFIG = {\n BASE_DELAY_MS: 1000,\n MAX_DELAY_MS: 32000,\n MAX_SERVER_DELAY_MS: 60000,\n JITTER_FACTOR: 0.1,\n} as const\n\nexport function getRetryDelay(\n attempt: number,\n retryAfter?: string | null,\n): number {\n if (retryAfter) {\n const retryAfterMs = parseInt(retryAfter) * 1000\n if (!isNaN(retryAfterMs) && retryAfterMs > 0) {\n return Math.min(retryAfterMs, RETRY_CONFIG.MAX_SERVER_DELAY_MS)\n }\n }\n\n const delay = RETRY_CONFIG.BASE_DELAY_MS * Math.pow(2, attempt - 1)\n const jitter = Math.random() * RETRY_CONFIG.JITTER_FACTOR * delay\n\n return Math.min(delay + jitter, RETRY_CONFIG.MAX_DELAY_MS)\n}\n\nexport function abortableDelay(\n delayMs: number,\n signal?: AbortSignal,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Request was aborted'))\n return\n }\n\n const timeoutId = setTimeout(() => resolve(), delayMs)\n\n if (signal) {\n const abortHandler = () => {\n clearTimeout(timeoutId)\n reject(new Error('Request was aborted'))\n }\n signal.addEventListener('abort', abortHandler, { once: true })\n }\n })\n}\n", "import type OpenAI from 'openai'\nimport type { Response } from 'undici'\n\nimport { debug as debugLogger } from '#core/utils/debugLogger'\n\nexport function createStreamProcessor(\n stream: NonNullable<Response['body']>,\n signal?: AbortSignal,\n): AsyncGenerator<OpenAI.ChatCompletionChunk, void, unknown> {\n return (async function* () {\n const reader = stream.getReader()\n const decoder = new TextDecoder('utf-8')\n let buffer = ''\n\n try {\n while (true) {\n if (signal?.aborted) break\n\n let readResult: Awaited<ReturnType<typeof reader.read>>\n try {\n readResult = await reader.read()\n } catch (e) {\n if (signal?.aborted) break\n debugLogger.warn('OPENAI_STREAM_READ_ERROR', {\n error: e instanceof Error ? e.message : String(e),\n })\n break\n }\n\n const { done, value } = readResult\n if (done) break\n\n const chunk = value instanceof Uint8Array ? value : new Uint8Array()\n buffer += decoder.decode(chunk, { stream: true })\n\n let lineEnd = buffer.indexOf('\\n')\n while (lineEnd !== -1) {\n const line = buffer.substring(0, lineEnd).trim()\n buffer = buffer.substring(lineEnd + 1)\n\n if (line === 'data: [DONE]') {\n lineEnd = buffer.indexOf('\\n')\n continue\n }\n\n if (line.startsWith('data: ')) {\n const data = line.slice(6).trim()\n if (data) {\n try {\n yield JSON.parse(data) as OpenAI.ChatCompletionChunk\n } catch (e) {\n debugLogger.warn('OPENAI_STREAM_JSON_PARSE_ERROR', {\n data,\n error: e instanceof Error ? e.message : String(e),\n })\n }\n }\n }\n\n lineEnd = buffer.indexOf('\\n')\n }\n }\n\n if (buffer.trim()) {\n const lines = buffer.trim().split('\\n')\n for (const line of lines) {\n if (!line.startsWith('data: ') || line === 'data: [DONE]') continue\n const data = line.slice(6).trim()\n if (!data) continue\n try {\n yield JSON.parse(data) as OpenAI.ChatCompletionChunk\n } catch (e) {\n debugLogger.warn('OPENAI_STREAM_FINAL_JSON_PARSE_ERROR', {\n data,\n error: e instanceof Error ? e.message : String(e),\n })\n }\n }\n }\n } catch (e) {\n debugLogger.warn('OPENAI_STREAM_UNEXPECTED_ERROR', {\n error: e instanceof Error ? e.message : String(e),\n })\n } finally {\n try {\n reader.releaseLock()\n } catch (e) {\n debugLogger.warn('OPENAI_STREAM_RELEASE_LOCK_ERROR', {\n error: e instanceof Error ? e.message : String(e),\n })\n }\n }\n })()\n}\n\nexport function streamCompletion(\n stream: NonNullable<Response['body']>,\n signal?: AbortSignal,\n): AsyncGenerator<OpenAI.ChatCompletionChunk, void, unknown> {\n return createStreamProcessor(stream, signal)\n}\n", "import type OpenAI from 'openai'\n\nimport {\n debug as debugLogger,\n getCurrentRequest,\n} from '#core/utils/debugLogger'\n\nimport { getModelFeatures } from './modelFeatures'\nimport { getCompletionWithProfile } from './completion'\n\n/**\n * Enhanced getCompletionWithProfile that supports GPT-5 Responses API.\n *\n * Today we route GPT-5 requests through Chat Completions, with additional\n * compatibility adjustments for third-party providers.\n */\nexport async function getGPT5CompletionWithProfile(\n modelProfile: unknown,\n opts: OpenAI.ChatCompletionCreateParams,\n attempt: number = 0,\n maxAttempts: number = 10,\n signal?: AbortSignal,\n): Promise<OpenAI.ChatCompletion | AsyncIterable<OpenAI.ChatCompletionChunk>> {\n const profile = modelProfile as { baseURL?: string; provider?: string } | null\n const features = getModelFeatures(opts.model)\n const isOfficialOpenAI =\n !profile?.baseURL || profile.baseURL.includes('api.openai.com')\n\n if (!isOfficialOpenAI) {\n debugLogger.api('GPT5_THIRD_PARTY_PROVIDER', {\n model: opts.model,\n baseURL: profile?.baseURL,\n provider: profile?.provider,\n supportsResponsesAPI: features.supportsResponsesAPI,\n requestId: getCurrentRequest()?.id,\n })\n\n debugLogger.api('GPT5_PROVIDER_THIRD_PARTY_NOTICE', {\n model: opts.model,\n provider: profile?.provider,\n baseURL: profile?.baseURL,\n })\n\n if (profile?.provider === 'azure') {\n delete opts.reasoning_effort\n } else if (profile?.provider === 'custom-openai') {\n debugLogger.api('GPT5_CUSTOM_PROVIDER_OPTIMIZATIONS', {\n model: opts.model,\n provider: profile?.provider,\n })\n }\n } else if (opts.stream) {\n debugLogger.api('GPT5_STREAMING_MODE', {\n model: opts.model,\n baseURL: profile?.baseURL || 'official',\n reason: 'responses_api_no_streaming',\n requestId: getCurrentRequest()?.id,\n })\n\n debugLogger.api('GPT5_STREAMING_FALLBACK_TO_CHAT_COMPLETIONS', {\n model: opts.model,\n reason: 'responses_api_no_streaming',\n })\n }\n\n debugLogger.api('USING_CHAT_COMPLETIONS_FOR_GPT5', {\n model: opts.model,\n baseURL: profile?.baseURL || 'official',\n provider: profile?.provider,\n reason: isOfficialOpenAI ? 'streaming_or_fallback' : 'third_party_provider',\n requestId: getCurrentRequest()?.id,\n })\n\n return await getCompletionWithProfile(\n modelProfile,\n opts,\n attempt,\n maxAttempts,\n signal,\n )\n}\n", "import type { ProxyAgent, Response } from 'undici'\nimport { ProxyAgent as ProxyAgentCtor, fetch } from 'undici'\n\nimport { getGlobalConfig } from '#core/utils/config'\n\n/**\n * Call GPT-5 Responses API with proper parameter handling.\n *\n * Returns the raw `Response` so adapters can parse/stream as needed.\n */\nexport async function callGPT5ResponsesAPI(\n modelProfile: unknown,\n request: unknown,\n signal?: AbortSignal,\n): Promise<Response> {\n const profile = modelProfile as { baseURL?: string; apiKey?: string } | null\n const baseURL = profile?.baseURL || 'https://api.openai.com/v1'\n const apiKey = profile?.apiKey\n\n const proxy: ProxyAgent | undefined = getGlobalConfig().proxy\n ? new ProxyAgentCtor(getGlobalConfig().proxy)\n : undefined\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n }\n\n try {\n const response = await fetch(`${baseURL}/responses`, {\n method: 'POST',\n headers,\n body: JSON.stringify(request),\n dispatcher: proxy,\n signal,\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(\n `GPT-5 Responses API error: ${response.status} ${response.statusText} - ${errorText}`,\n )\n }\n\n return response\n } catch (error) {\n if (signal?.aborted) {\n throw new Error('Request cancelled by user')\n }\n throw error\n }\n}\n", "import { fetch } from 'undici'\n\ntype ModelsResponseShape = { data?: unknown; models?: unknown }\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (typeof value !== 'object' || value === null) return null\n return value as Record<string, unknown>\n}\n\nfunction extractModelArray(value: unknown): unknown[] | null {\n const record = asRecord(value)\n if (!record) return null\n\n if (Array.isArray(record.data)) return record.data\n if (Array.isArray(record.models)) return record.models\n return null\n}\n\n/**\n * Fetch available models from a custom OpenAI-compatible API.\n */\nexport async function fetchCustomModels(\n baseURL: string,\n apiKey: string,\n): Promise<unknown[]> {\n const hasVersionNumber = /\\/v\\d+/.test(baseURL)\n const cleanBaseURL = baseURL.replace(/\\/+$/, '')\n const modelsURL = hasVersionNumber\n ? `${cleanBaseURL}/models`\n : `${cleanBaseURL}/v1/models`\n\n const response = await fetch(modelsURL, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new Error(\n 'Invalid API key. Please check your API key and try again.',\n )\n }\n if (response.status === 403) {\n throw new Error(\n 'API key does not have permission to access models. Please check your API key permissions.',\n )\n }\n if (response.status === 404) {\n throw new Error(\n 'API endpoint not found. Please check if the base URL is correct and supports the /models endpoint.',\n )\n }\n if (response.status === 429) {\n throw new Error(\n 'Rate limit exceeded. Please wait a moment and try again.',\n )\n }\n\n throw new Error(\n `Failed to fetch models: HTTP ${response.status} ${response.statusText}`,\n )\n }\n\n const json = (await response.json()) as ModelsResponseShape\n const models = extractModelArray(json)\n if (!models) {\n throw new Error('Invalid response format: missing models array')\n }\n return models\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["fetch", "fetch", "ProxyAgentCtor", "fetch", "ProxyAgentCtor", "fetch", "fetch"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import {
2
+ getCurrentProjectConfig,
3
+ saveCurrentProjectConfig
4
+ } from "./chunk-XR2W3MAM.js";
5
+
6
+ // packages/core/src/history.ts
7
+ var MAX_HISTORY_ITEMS = 100;
8
+ function getHistory() {
9
+ return getCurrentProjectConfig().history ?? [];
10
+ }
11
+ function addToHistory(command) {
12
+ const projectConfig = getCurrentProjectConfig();
13
+ const history = projectConfig.history ?? [];
14
+ if (history[0] === command) {
15
+ return;
16
+ }
17
+ history.unshift(command);
18
+ saveCurrentProjectConfig({
19
+ ...projectConfig,
20
+ history: history.slice(0, MAX_HISTORY_ITEMS)
21
+ });
22
+ }
23
+
24
+ export {
25
+ getHistory,
26
+ addToHistory
27
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/history.ts"],
4
+ "sourcesContent": ["import {\n getCurrentProjectConfig,\n saveCurrentProjectConfig,\n} from '#core/utils/config'\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": ";;;;;;AAKA,IAAM,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
+ }
@@ -0,0 +1,193 @@
1
+ import {
2
+ lastX
3
+ } from "./chunk-QAXE37B5.js";
4
+ import {
5
+ getAllTools
6
+ } from "./chunk-77XDJMBP.js";
7
+ import {
8
+ createAssistantMessage
9
+ } from "./chunk-HRJ3ICQK.js";
10
+ import {
11
+ logError
12
+ } from "./chunk-3OEJVB5A.js";
13
+ import {
14
+ setCwd
15
+ } from "./chunk-BBJFHTBC.js";
16
+ import {
17
+ MACRO
18
+ } from "./chunk-W5EGGA44.js";
19
+
20
+ // packages/core/src/mcp/server.ts
21
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
22
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
23
+ import {
24
+ CallToolRequestSchema,
25
+ ListToolsRequestSchema
26
+ } from "@modelcontextprotocol/sdk/types.js";
27
+
28
+ // packages/core/src/tooling/splitTool.ts
29
+ function splitLegacyTool(tool) {
30
+ const spec = {
31
+ name: tool.name,
32
+ description: tool.description,
33
+ inputSchema: tool.inputSchema,
34
+ inputJSONSchema: tool.inputJSONSchema,
35
+ prompt: tool.prompt,
36
+ userFacingName: tool.userFacingName,
37
+ cachedDescription: tool.cachedDescription,
38
+ isEnabled: tool.isEnabled,
39
+ isReadOnly: tool.isReadOnly,
40
+ isConcurrencySafe: tool.isConcurrencySafe,
41
+ needsPermissions: tool.needsPermissions,
42
+ requiresUserInteraction: tool.requiresUserInteraction,
43
+ validateInput: tool.validateInput,
44
+ renderResultForAssistant: tool.renderResultForAssistant
45
+ };
46
+ const runner = {
47
+ name: tool.name,
48
+ call: (input, context) => tool.call(input, context)
49
+ };
50
+ const presenter = {
51
+ name: tool.name,
52
+ renderToolUseMessage: (input, options) => tool.renderToolUseMessage(input, options),
53
+ renderToolUseRejectedMessage: tool.renderToolUseRejectedMessage ? (...args) => tool.renderToolUseRejectedMessage(...args) : void 0,
54
+ renderToolResultMessage: tool.renderToolResultMessage ? (output, options) => tool.renderToolResultMessage(output, options) : void 0
55
+ };
56
+ return { spec, runner, presenter };
57
+ }
58
+
59
+ // packages/core/src/tooling/mcpToolSchema.ts
60
+ import { zodToJsonSchema } from "zod-to-json-schema";
61
+ function getMcpToolDescription(tool) {
62
+ if (tool.cachedDescription) return tool.cachedDescription;
63
+ if (typeof tool.description === "string") return tool.description;
64
+ return `Tool: ${tool.name}`;
65
+ }
66
+ function getMcpToolInputSchema(tool) {
67
+ const schema = zodToJsonSchema(tool.inputSchema);
68
+ if (!schema || typeof schema !== "object" || Array.isArray(schema)) return {};
69
+ return schema;
70
+ }
71
+
72
+ // packages/core/src/mcp/server.ts
73
+ var state = {
74
+ readFileTimestamps: {}
75
+ };
76
+ var MCP_COMMANDS = [];
77
+ var MCP_TOOLS = [...getAllTools()];
78
+ async function startMCPServer(cwd) {
79
+ await setCwd(cwd);
80
+ const server = new Server(
81
+ {
82
+ // Keep this identifier stable for compatibility with existing clients/tools.
83
+ name: "claude/tengu",
84
+ version: MACRO.VERSION
85
+ },
86
+ {
87
+ capabilities: {
88
+ tools: {}
89
+ }
90
+ }
91
+ );
92
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
93
+ tools: await Promise.all(
94
+ MCP_TOOLS.map(async (tool) => {
95
+ const spec = splitLegacyTool(tool).spec;
96
+ return {
97
+ name: spec.name,
98
+ description: getMcpToolDescription(spec),
99
+ inputSchema: getMcpToolInputSchema(spec)
100
+ };
101
+ })
102
+ )
103
+ }));
104
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
105
+ const { name, arguments: args } = request.params;
106
+ const tool = MCP_TOOLS.find((_) => _.name === name);
107
+ if (!tool) {
108
+ return {
109
+ isError: true,
110
+ content: [
111
+ { type: "text", text: `Error: Tool ${name} not found` }
112
+ ]
113
+ };
114
+ }
115
+ try {
116
+ const toolInput = args && typeof args === "object" ? args : {};
117
+ if (!await tool.isEnabled()) {
118
+ throw new Error(`Tool ${name} is not enabled`);
119
+ }
120
+ const toolUseContext = {
121
+ abortController: new AbortController(),
122
+ options: {
123
+ commands: MCP_COMMANDS,
124
+ tools: MCP_TOOLS,
125
+ forkNumber: 0,
126
+ messageLogName: "mcp",
127
+ maxThinkingTokens: 0,
128
+ shouldAvoidPermissionPrompts: true,
129
+ persistSession: false
130
+ },
131
+ messageId: void 0,
132
+ readFileTimestamps: state.readFileTimestamps
133
+ };
134
+ const validationResult = await tool.validateInput?.(
135
+ toolInput,
136
+ toolUseContext
137
+ );
138
+ if (validationResult && !validationResult.result) {
139
+ throw new Error(
140
+ `Tool ${name} input is invalid: ${validationResult.message}`
141
+ );
142
+ }
143
+ const assistantMessage = createAssistantMessage("");
144
+ const permission = await (await import("./permissions-HO7INPWM.js")).hasPermissionsToUseTool(
145
+ tool,
146
+ toolInput,
147
+ toolUseContext,
148
+ assistantMessage
149
+ );
150
+ if (permission.result !== true) {
151
+ return {
152
+ isError: true,
153
+ content: [
154
+ {
155
+ type: "text",
156
+ text: `Error: ${permission.message ?? "Permission denied"}`
157
+ }
158
+ ]
159
+ };
160
+ }
161
+ const result = tool.call(toolInput, toolUseContext);
162
+ const finalResult = await lastX(result);
163
+ if (!finalResult || finalResult.type !== "result") {
164
+ throw new Error(`Tool ${name} did not return a result`);
165
+ }
166
+ const payload = finalResult.resultForAssistant ?? tool.renderResultForAssistant(finalResult.data);
167
+ const text = typeof payload === "string" ? payload : Array.isArray(payload) ? JSON.stringify(payload) : JSON.stringify(finalResult.data);
168
+ return {
169
+ content: [{ type: "text", text }]
170
+ };
171
+ } catch (error) {
172
+ logError(error);
173
+ return {
174
+ isError: true,
175
+ content: [
176
+ {
177
+ type: "text",
178
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`
179
+ }
180
+ ]
181
+ };
182
+ }
183
+ });
184
+ async function runServer() {
185
+ const transport = new StdioServerTransport();
186
+ await server.connect(transport);
187
+ }
188
+ return await runServer();
189
+ }
190
+
191
+ export {
192
+ startMCPServer
193
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/mcp/server.ts", "../../packages/core/src/tooling/splitTool.ts", "../../packages/core/src/tooling/mcpToolSchema.ts"],
4
+ "sourcesContent": ["import { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js'\nimport { setCwd } from '#core/utils/state'\nimport { logError } from '#core/utils/log'\nimport { createAssistantMessage } from '#core/utils/messages'\nimport type { Tool, ToolUseContext } from '#core/tooling/Tool'\nimport { getAllTools } from '#tools'\nimport { lastX } from '#core/utils/generators'\nimport { MACRO } from '#core/constants/macros'\nimport { splitLegacyTool } from '#core/tooling/splitTool'\nimport {\n getMcpToolDescription,\n getMcpToolInputSchema,\n} from '#core/tooling/mcpToolSchema'\n\nconst state: {\n readFileTimestamps: Record<string, number>\n} = {\n readFileTimestamps: {},\n}\n\nconst MCP_COMMANDS: unknown[] = []\nconst MCP_TOOLS: Tool[] = [...getAllTools()]\n\nexport async function startMCPServer(cwd: string): Promise<void> {\n await setCwd(cwd)\n const server = new Server(\n {\n // Keep this identifier stable for compatibility with existing clients/tools.\n name: 'claude/tengu',\n version: MACRO.VERSION,\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: await Promise.all(\n MCP_TOOLS.map(async tool => {\n const spec = splitLegacyTool(tool).spec\n return {\n name: spec.name,\n description: getMcpToolDescription(spec),\n inputSchema: getMcpToolInputSchema(spec),\n }\n }),\n ),\n }))\n\n server.setRequestHandler(CallToolRequestSchema, async request => {\n const { name, arguments: args } = request.params\n const tool = MCP_TOOLS.find(_ => _.name === name)\n if (!tool) {\n return {\n isError: true,\n content: [\n { type: 'text' as const, text: `Error: Tool ${name} not found` },\n ],\n }\n }\n\n try {\n const toolInput: Record<string, unknown> =\n args && typeof args === 'object'\n ? (args as Record<string, unknown>)\n : {}\n if (!(await tool.isEnabled())) {\n throw new Error(`Tool ${name} is not enabled`)\n }\n\n const toolUseContext: ToolUseContext = {\n abortController: new AbortController(),\n options: {\n commands: MCP_COMMANDS,\n tools: MCP_TOOLS,\n forkNumber: 0,\n messageLogName: 'mcp',\n maxThinkingTokens: 0,\n shouldAvoidPermissionPrompts: true,\n persistSession: false,\n },\n messageId: undefined,\n readFileTimestamps: state.readFileTimestamps,\n }\n\n const validationResult = await tool.validateInput?.(\n toolInput as never,\n toolUseContext,\n )\n if (validationResult && !validationResult.result) {\n throw new Error(\n `Tool ${name} input is invalid: ${validationResult.message}`,\n )\n }\n\n // Permission policy lives in core and is tool-aware; MCP is headless, so prompts must fail closed.\n const assistantMessage = createAssistantMessage('')\n const permission = await (\n await import('#core/permissions')\n ).hasPermissionsToUseTool(\n tool,\n toolInput,\n toolUseContext,\n assistantMessage,\n )\n if (permission.result !== true) {\n return {\n isError: true,\n content: [\n {\n type: 'text' as const,\n text: `Error: ${permission.message ?? 'Permission denied'}`,\n },\n ],\n }\n }\n\n const result = tool.call(toolInput as never, toolUseContext)\n const finalResult = await lastX(result)\n\n if (!finalResult || finalResult.type !== 'result') {\n throw new Error(`Tool ${name} did not return a result`)\n }\n\n const payload =\n finalResult.resultForAssistant ??\n tool.renderResultForAssistant(finalResult.data)\n\n const text =\n typeof payload === 'string'\n ? payload\n : Array.isArray(payload)\n ? JSON.stringify(payload)\n : JSON.stringify(finalResult.data)\n\n return {\n content: [{ type: 'text' as const, text }],\n }\n } catch (error) {\n logError(error)\n return {\n isError: true,\n content: [\n {\n type: 'text' as const,\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\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", "import type { z } from 'zod'\n\nimport type { Tool } from './Tool'\n\nexport type ToolSpec<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> = Pick<\n Tool<TInput, TOutput>,\n | 'name'\n | 'description'\n | 'inputSchema'\n | 'inputJSONSchema'\n | 'prompt'\n | 'userFacingName'\n | 'cachedDescription'\n | 'isEnabled'\n | 'isReadOnly'\n | 'isConcurrencySafe'\n | 'needsPermissions'\n | 'requiresUserInteraction'\n | 'validateInput'\n | 'renderResultForAssistant'\n>\n\nexport type ToolRunner<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> = Pick<Tool<TInput, TOutput>, 'name' | 'call'>\n\nexport type ToolPresenter<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> = Pick<\n Tool<TInput, TOutput>,\n | 'name'\n | 'renderToolUseMessage'\n | 'renderToolUseRejectedMessage'\n | 'renderToolResultMessage'\n>\n\nexport type SplitTool<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> = {\n spec: ToolSpec<TInput, TOutput>\n runner: ToolRunner<TInput, TOutput>\n presenter: ToolPresenter<TInput, TOutput>\n}\n\nexport function splitLegacyTool<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n>(tool: Tool<TInput, TOutput>): SplitTool<TInput, TOutput> {\n const spec: ToolSpec<TInput, TOutput> = {\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n inputJSONSchema: tool.inputJSONSchema,\n prompt: tool.prompt,\n userFacingName: tool.userFacingName,\n cachedDescription: tool.cachedDescription,\n isEnabled: tool.isEnabled,\n isReadOnly: tool.isReadOnly,\n isConcurrencySafe: tool.isConcurrencySafe,\n needsPermissions: tool.needsPermissions,\n requiresUserInteraction: tool.requiresUserInteraction,\n validateInput: tool.validateInput,\n renderResultForAssistant: tool.renderResultForAssistant,\n }\n\n const runner: ToolRunner<TInput, TOutput> = {\n name: tool.name,\n call: (input, context) => tool.call(input, context),\n }\n\n const presenter: ToolPresenter<TInput, TOutput> = {\n name: tool.name,\n renderToolUseMessage: (input, options) =>\n tool.renderToolUseMessage(input, options),\n renderToolUseRejectedMessage: tool.renderToolUseRejectedMessage\n ? (...args) => tool.renderToolUseRejectedMessage!(...args)\n : undefined,\n renderToolResultMessage: tool.renderToolResultMessage\n ? (output, options) => tool.renderToolResultMessage!(output, options)\n : undefined,\n }\n\n return { spec, runner, presenter }\n}\n", "import { zodToJsonSchema } from 'zod-to-json-schema'\n\nimport type { ToolSpec } from './splitTool'\n\nexport type McpToolInputSchema = Record<string, unknown>\n\nexport function getMcpToolDescription(\n tool: Pick<ToolSpec, 'name' | 'cachedDescription' | 'description'>,\n): string {\n if (tool.cachedDescription) return tool.cachedDescription\n if (typeof tool.description === 'string') return tool.description\n return `Tool: ${tool.name}`\n}\n\nexport function getMcpToolInputSchema(\n tool: Pick<ToolSpec, 'inputSchema'>,\n): McpToolInputSchema {\n const schema = zodToJsonSchema(tool.inputSchema) as unknown\n if (!schema || typeof schema !== 'object' || Array.isArray(schema)) return {}\n return schema as McpToolInputSchema\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
File without changes
@@ -1,7 +1,4 @@
1
- import { createRequire as __kodeCreateRequire } from "node:module";
2
- const require = __kodeCreateRequire(import.meta.url);
3
-
4
- // src/utils/session/requestStatus.ts
1
+ // packages/core/src/utils/requestStatus.ts
5
2
  var current = { kind: "idle", updatedAt: Date.now() };
6
3
  var listeners = /* @__PURE__ */ new Set();
7
4
  function getRequestStatus() {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/utils/session/requestStatus.ts"],
3
+ "sources": ["../../packages/core/src/utils/requestStatus.ts"],
4
4
  "sourcesContent": ["export type RequestStatusKind = 'idle' | 'thinking' | 'streaming' | 'tool'\n\nexport type RequestStatus = {\n kind: RequestStatusKind\n detail?: string\n updatedAt: number\n}\n\nlet current: RequestStatus = { kind: 'idle', updatedAt: Date.now() }\nconst listeners = new Set<(status: RequestStatus) => void>()\n\nexport function getRequestStatus(): RequestStatus {\n return current\n}\n\nexport function setRequestStatus(\n status: Omit<RequestStatus, 'updatedAt'>,\n): void {\n current = { ...status, updatedAt: Date.now() }\n for (const listener of listeners) listener(current)\n}\n\nexport function subscribeRequestStatus(\n listener: (status: RequestStatus) => void,\n): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n"],
5
- "mappings": ";;;;AAQA,IAAI,UAAyB,EAAE,MAAM,QAAQ,WAAW,KAAK,IAAI,EAAE;AACnE,IAAM,YAAY,oBAAI,IAAqC;AAEpD,SAAS,mBAAkC;AAChD,SAAO;AACT;AAEO,SAAS,iBACd,QACM;AACN,YAAU,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,EAAE;AAC7C,aAAW,YAAY,UAAW,UAAS,OAAO;AACpD;AAEO,SAAS,uBACd,UACY;AACZ,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;",
5
+ "mappings": ";AAQA,IAAI,UAAyB,EAAE,MAAM,QAAQ,WAAW,KAAK,IAAI,EAAE;AACnE,IAAM,YAAY,oBAAI,IAAqC;AAEpD,SAAS,mBAAkC;AAChD,SAAO;AACT;AAEO,SAAS,iBACd,QACM;AACN,YAAU,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,EAAE;AAC7C,aAAW,YAAY,UAAW,UAAS,OAAO;AACpD;AAEO,SAAS,uBACd,UACY;AACZ,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;",
6
6
  "names": []
7
7
  }