@shareai-lab/kode 2.0.1 → 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-7LH4HTNR.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
  13. package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
  14. package/dist/{ask-3NHFFUQG.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-AFFSCMYS.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-ARZSBOAO.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-UHYRLID6.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-YC6LJCDE.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-3IN27HA5.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-73WGVYLQ.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-QVLYOPO5.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-K2CWOTI2.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-RZWOUA25.js → chunks/chunk-HRJ3ICQK.js} +59 -55
  79. package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
  80. package/dist/{chunk-DZE5YA7L.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-7M2YN6TU.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-W7GRKO7Q.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-7U7L4NMD.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-ZVDRDPII.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-MWRSY4X6.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-STSX7GIX.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-RUSD6G5Y.js → chunks/config-25HRTPSP.js} +48 -10
  133. package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
  134. package/dist/{customCommands-TOIJFZAL.js → chunks/customCommands-TYMYZRG5.js} +11 -8
  135. package/dist/chunks/engine-MRVF6FK6.js +39 -0
  136. package/dist/{env-XGKBLU3D.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-UGEZJJEB.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-QWM36A3D.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
  146. package/dist/{llm-ZUQC4WYM.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-EE3XFHCJ.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
  150. package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
  151. package/dist/{messages-EOYQKPGM.js → chunks/messages-EEWWLPHN.js} +2 -6
  152. package/dist/chunks/model-5TIEKQPD.js +37 -0
  153. package/dist/{openai-RRCWW33N.js → chunks/openai-XXK3YZG4.js} +13 -10
  154. package/dist/{outputStyles-62Q3VH2J.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
  155. package/dist/chunks/permissions-HO7INPWM.js +27 -0
  156. package/dist/{pluginRuntime-6ETCZ2LL.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-3RXQBVOL.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-DOPVY2CW.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-CW7AYLVL.js +0 -42
  223. package/dist/acp-VEPJ74LT.js +0 -1357
  224. package/dist/acp-VEPJ74LT.js.map +0 -7
  225. package/dist/agentsValidate-7LH4HTNR.js.map +0 -7
  226. package/dist/ask-3NHFFUQG.js.map +0 -7
  227. package/dist/autoUpdater-ITPIHCOI.js +0 -17
  228. package/dist/chunk-3IN27HA5.js.map +0 -7
  229. package/dist/chunk-4FX3IVPT.js +0 -164
  230. package/dist/chunk-4FX3IVPT.js.map +0 -7
  231. package/dist/chunk-4RTX4AG4.js.map +0 -7
  232. package/dist/chunk-5PDP7R6N.js +0 -515
  233. package/dist/chunk-5PDP7R6N.js.map +0 -7
  234. package/dist/chunk-73WGVYLQ.js.map +0 -7
  235. package/dist/chunk-7M2YN6TU.js.map +0 -7
  236. package/dist/chunk-7U7L4NMD.js.map +0 -7
  237. package/dist/chunk-ABLVTESJ.js.map +0 -7
  238. package/dist/chunk-AFFSCMYS.js.map +0 -7
  239. package/dist/chunk-ARZSBOAO.js.map +0 -7
  240. package/dist/chunk-CIG63V4E.js +0 -72
  241. package/dist/chunk-CIG63V4E.js.map +0 -7
  242. package/dist/chunk-CM3EGTG6.js +0 -1609
  243. package/dist/chunk-CM3EGTG6.js.map +0 -7
  244. package/dist/chunk-DZE5YA7L.js.map +0 -7
  245. package/dist/chunk-E6YNABER.js.map +0 -7
  246. package/dist/chunk-EZXMVTDU.js.map +0 -7
  247. package/dist/chunk-F2SJXUDI.js +0 -148
  248. package/dist/chunk-F2SJXUDI.js.map +0 -7
  249. package/dist/chunk-FC5ZCKBI.js +0 -30167
  250. package/dist/chunk-FC5ZCKBI.js.map +0 -7
  251. package/dist/chunk-HCBELH4J.js +0 -145
  252. package/dist/chunk-HCBELH4J.js.map +0 -7
  253. package/dist/chunk-HN4E4UUQ.js.map +0 -7
  254. package/dist/chunk-IZVMU4S2.js +0 -654
  255. package/dist/chunk-IZVMU4S2.js.map +0 -7
  256. package/dist/chunk-K2CWOTI2.js.map +0 -7
  257. package/dist/chunk-LC4TVOCZ.js +0 -835
  258. package/dist/chunk-LC4TVOCZ.js.map +0 -7
  259. package/dist/chunk-MIW7N2MY.js +0 -2613
  260. package/dist/chunk-MIW7N2MY.js.map +0 -7
  261. package/dist/chunk-MWRSY4X6.js.map +0 -7
  262. package/dist/chunk-ND3XWFO6.js +0 -34
  263. package/dist/chunk-ND3XWFO6.js.map +0 -7
  264. package/dist/chunk-QVLYOPO5.js.map +0 -7
  265. package/dist/chunk-RZWOUA25.js.map +0 -7
  266. package/dist/chunk-S6HRABTA.js.map +0 -7
  267. package/dist/chunk-STSX7GIX.js.map +0 -7
  268. package/dist/chunk-UHYRLID6.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-W7GRKO7Q.js.map +0 -7
  274. package/dist/chunk-WVHORZQ5.js +0 -17
  275. package/dist/chunk-WVHORZQ5.js.map +0 -7
  276. package/dist/chunk-WWUWDNWW.js +0 -49
  277. package/dist/chunk-WWUWDNWW.js.map +0 -7
  278. package/dist/chunk-YC6LJCDE.js.map +0 -7
  279. package/dist/chunk-YXYYDIMI.js +0 -2931
  280. package/dist/chunk-YXYYDIMI.js.map +0 -7
  281. package/dist/chunk-ZVDRDPII.js.map +0 -7
  282. package/dist/cli-DOPVY2CW.js.map +0 -7
  283. package/dist/commands-2BF2CJ3A.js +0 -46
  284. package/dist/context-6FXPETYH.js +0 -30
  285. package/dist/costTracker-6SL26FDB.js +0 -19
  286. package/dist/kodeAgentSessionLoad-MITZADPB.js +0 -18
  287. package/dist/kodeAgentSessionResume-GVRWB4WO.js +0 -16
  288. package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
  289. package/dist/kodeAgentStreamJsonSession-UGEZJJEB.js.map +0 -7
  290. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
  291. package/dist/llm-ZUQC4WYM.js.map +0 -7
  292. package/dist/llmLazy-54QQHA54.js +0 -15
  293. package/dist/loader-FYHJQES5.js +0 -28
  294. package/dist/mcp-J332IKT3.js +0 -49
  295. package/dist/mentionProcessor-EE3XFHCJ.js.map +0 -7
  296. package/dist/model-FV3JDJKH.js +0 -30
  297. package/dist/pluginRuntime-6ETCZ2LL.js.map +0 -7
  298. package/dist/pluginValidation-I4YKUWGS.js +0 -17
  299. package/dist/prompts-ZLEKDD77.js +0 -48
  300. package/dist/query-VFRJPBGD.js +0 -50
  301. package/dist/responsesStreaming-AW344PQO.js +0 -10
  302. package/dist/ripgrep-3NTIKQYW.js +0 -17
  303. package/dist/state-P5G6CO5V.js +0 -16
  304. package/dist/theme-3LWP3BG7.js +0 -14
  305. package/dist/toolPermissionSettings-3ROBVTUK.js +0 -18
  306. package/dist/tools-RO7HSSE5.js +0 -47
  307. package/dist/userInput-JSBJRFSK.js +0 -311
  308. package/dist/userInput-JSBJRFSK.js.map +0 -7
  309. package/dist/uuid-QN2CNKKN.js +0 -9
  310. /package/dist/{REPL-CW7AYLVL.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
  311. /package/dist/{autoUpdater-ITPIHCOI.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-2BF2CJ3A.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
  314. /package/dist/{config-RUSD6G5Y.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
  315. /package/dist/{context-6FXPETYH.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-TOIJFZAL.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
  318. /package/dist/{env-XGKBLU3D.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-MITZADPB.js.map → chunks/config-25HRTPSP.js.map} +0 -0
  321. /package/dist/{kodeAgentSessionResume-GVRWB4WO.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-QWM36A3D.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
  325. /package/dist/{llmLazy-54QQHA54.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
  326. /package/dist/{loader-FYHJQES5.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
  327. /package/dist/{mcp-J332IKT3.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
  328. /package/dist/{messages-EOYQKPGM.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
  329. /package/dist/{model-FV3JDJKH.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
  330. /package/dist/{openai-RRCWW33N.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
  331. /package/dist/{outputStyles-62Q3VH2J.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
  332. /package/dist/{pluginValidation-I4YKUWGS.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
  333. /package/dist/{prompts-ZLEKDD77.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
  334. /package/dist/{query-VFRJPBGD.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-3NTIKQYW.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
  337. /package/dist/{skillMarketplace-3RXQBVOL.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
  338. /package/dist/{state-P5G6CO5V.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
  339. /package/dist/{theme-3LWP3BG7.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-3ROBVTUK.js.map → chunks/src-OROQIWP3.js.map} +0 -0
  342. /package/dist/{tools-RO7HSSE5.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
  343. /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
@@ -1,835 +0,0 @@
1
- import { createRequire as __kodeCreateRequire } from "node:module";
2
- const require = __kodeCreateRequire(import.meta.url);
3
- import {
4
- ConfigParseError
5
- } from "./chunk-UYXEDKOZ.js";
6
- import {
7
- debug
8
- } from "./chunk-STSX7GIX.js";
9
- import {
10
- getCwd,
11
- getGlobalConfigFilePath,
12
- logError
13
- } from "./chunk-YXYYDIMI.js";
14
-
15
- // src/core/config/schema.ts
16
- function isAutoUpdaterStatus(value) {
17
- return ["disabled", "enabled", "no_permissions", "not_configured"].includes(
18
- value
19
- );
20
- }
21
- var GLOBAL_CONFIG_KEYS = [
22
- "autoUpdaterStatus",
23
- "theme",
24
- "hasCompletedOnboarding",
25
- "lastOnboardingVersion",
26
- "lastReleaseNotesSeen",
27
- "verbose",
28
- "customApiKeyResponses",
29
- "primaryProvider",
30
- "preferredNotifChannel",
31
- "maxTokens"
32
- ];
33
- function isGlobalConfigKey(key) {
34
- return GLOBAL_CONFIG_KEYS.includes(key);
35
- }
36
- var PROJECT_CONFIG_KEYS = [
37
- "dontCrawlDirectory",
38
- "enableArchitectTool",
39
- "hasTrustDialogAccepted",
40
- "hasCompletedProjectOnboarding"
41
- ];
42
- function isProjectConfigKey(key) {
43
- return PROJECT_CONFIG_KEYS.includes(key);
44
- }
45
-
46
- // src/core/config/defaults.ts
47
- import { homedir } from "os";
48
- var DEFAULT_PROJECT_CONFIG = {
49
- allowedTools: [],
50
- deniedTools: [],
51
- askedTools: [],
52
- context: {},
53
- history: [],
54
- dontCrawlDirectory: false,
55
- enableArchitectTool: false,
56
- mcpContextUris: [],
57
- mcpServers: {},
58
- approvedMcprcServers: [],
59
- rejectedMcprcServers: [],
60
- hasTrustDialogAccepted: false
61
- };
62
- function defaultConfigForProject(projectPath) {
63
- const config = { ...DEFAULT_PROJECT_CONFIG };
64
- if (projectPath === homedir()) {
65
- config.dontCrawlDirectory = true;
66
- }
67
- return config;
68
- }
69
- var DEFAULT_GLOBAL_CONFIG = {
70
- numStartups: 0,
71
- autoUpdaterStatus: "not_configured",
72
- theme: "dark",
73
- preferredNotifChannel: "iterm2",
74
- verbose: false,
75
- primaryProvider: "anthropic",
76
- customApiKeyResponses: {
77
- approved: [],
78
- rejected: []
79
- },
80
- stream: true,
81
- modelProfiles: [],
82
- modelPointers: {
83
- main: "",
84
- task: "",
85
- compact: "",
86
- quick: ""
87
- },
88
- lastDismissedUpdateVersion: void 0
89
- };
90
-
91
- // src/core/config/loader.ts
92
- import { existsSync, readFileSync, writeFileSync } from "fs";
93
- import { join, posix, resolve, win32 } from "path";
94
- import { cloneDeep, memoize, pick } from "lodash-es";
95
- import { homedir as homedir2 } from "os";
96
- import { randomBytes } from "crypto";
97
-
98
- // src/utils/text/json.ts
99
- function safeParseJSON(json) {
100
- if (!json) {
101
- return null;
102
- }
103
- try {
104
- return JSON.parse(json);
105
- } catch (e) {
106
- logError(e);
107
- return null;
108
- }
109
- }
110
-
111
- // src/core/config/migrations.ts
112
- function migrateModelProfilesRemoveId(config) {
113
- if (!config.modelProfiles) return config;
114
- const idToModelNameMap = /* @__PURE__ */ new Map();
115
- const migratedProfiles = config.modelProfiles.map((profile) => {
116
- if (profile.id && profile.modelName) {
117
- idToModelNameMap.set(profile.id, profile.modelName);
118
- }
119
- const { id, ...profileWithoutId } = profile;
120
- return profileWithoutId;
121
- });
122
- const migratedPointers = {
123
- main: "",
124
- task: "",
125
- compact: "",
126
- quick: ""
127
- };
128
- const rawPointers = config.modelPointers;
129
- const rawMain = typeof rawPointers?.main === "string" ? rawPointers.main : "";
130
- const rawTask = typeof rawPointers?.task === "string" ? rawPointers.task : "";
131
- const rawQuick = typeof rawPointers?.quick === "string" ? rawPointers.quick : "";
132
- const rawCompact = typeof rawPointers?.compact === "string" ? rawPointers.compact : typeof rawPointers?.reasoning === "string" ? rawPointers.reasoning : "";
133
- if (rawMain) migratedPointers.main = idToModelNameMap.get(rawMain) || rawMain;
134
- if (rawTask) migratedPointers.task = idToModelNameMap.get(rawTask) || rawTask;
135
- if (rawCompact)
136
- migratedPointers.compact = idToModelNameMap.get(rawCompact) || rawCompact;
137
- if (rawQuick)
138
- migratedPointers.quick = idToModelNameMap.get(rawQuick) || rawQuick;
139
- let defaultModelName;
140
- if (config.defaultModelId) {
141
- defaultModelName = idToModelNameMap.get(config.defaultModelId) || config.defaultModelId;
142
- } else if (config.defaultModelName) {
143
- defaultModelName = config.defaultModelName;
144
- }
145
- const migratedConfig = { ...config };
146
- delete migratedConfig.defaultModelId;
147
- delete migratedConfig.currentSelectedModelId;
148
- delete migratedConfig.mainAgentModelId;
149
- delete migratedConfig.taskToolModelId;
150
- return {
151
- ...migratedConfig,
152
- modelProfiles: migratedProfiles,
153
- modelPointers: migratedPointers,
154
- defaultModelName
155
- };
156
- }
157
-
158
- // src/core/config/loader.ts
159
- function expandHomeDirForPlatform(input, homeDirPath, platform) {
160
- const trimmed = input.trim();
161
- if (!trimmed) return trimmed;
162
- if (trimmed === "~") return homeDirPath;
163
- if (trimmed.startsWith("~/") || trimmed.startsWith("~\\")) {
164
- const rest = trimmed.slice(2);
165
- return platform === "win32" ? win32.join(homeDirPath, rest) : posix.join(homeDirPath, rest);
166
- }
167
- return trimmed;
168
- }
169
- function normalizeProjectPathForComparison(projectPath, baseDir, opts) {
170
- const platform = opts?.platform ?? process.platform;
171
- const homeDirPath = opts?.homeDir ?? homedir2();
172
- const expanded = expandHomeDirForPlatform(projectPath, homeDirPath, platform);
173
- if (!expanded) return "";
174
- if (platform === "win32") {
175
- const resolved2 = win32.isAbsolute(expanded) ? win32.resolve(expanded) : win32.resolve(baseDir, expanded);
176
- return resolved2.toLowerCase();
177
- }
178
- const resolved = posix.isAbsolute(expanded) ? posix.resolve(expanded) : posix.resolve(baseDir, expanded);
179
- return resolved;
180
- }
181
- function findMatchingProjectKey(projects, absolutePath) {
182
- if (!projects) return void 0;
183
- if (projects[absolutePath]) return absolutePath;
184
- const normalizedTarget = normalizeProjectPathForComparison(
185
- absolutePath,
186
- absolutePath
187
- );
188
- for (const key of Object.keys(projects)) {
189
- if (normalizeProjectPathForComparison(key, absolutePath) === normalizedTarget) {
190
- return key;
191
- }
192
- }
193
- return void 0;
194
- }
195
- function checkHasTrustDialogAccepted() {
196
- let currentPath = getCwd();
197
- const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
198
- while (true) {
199
- const projectKey = findMatchingProjectKey(config.projects, currentPath);
200
- const projectConfig = projectKey ? config.projects?.[projectKey] : void 0;
201
- if (projectConfig?.hasTrustDialogAccepted) {
202
- return true;
203
- }
204
- const parentPath = resolve(currentPath, "..");
205
- if (parentPath === currentPath) {
206
- break;
207
- }
208
- currentPath = parentPath;
209
- }
210
- return false;
211
- }
212
- var TEST_GLOBAL_CONFIG_FOR_TESTING = {
213
- ...DEFAULT_GLOBAL_CONFIG,
214
- autoUpdaterStatus: "disabled"
215
- };
216
- var TEST_PROJECT_CONFIG_FOR_TESTING = {
217
- ...DEFAULT_PROJECT_CONFIG
218
- };
219
- function saveGlobalConfig(config) {
220
- if (process.env.NODE_ENV === "test") {
221
- for (const key in config) {
222
- TEST_GLOBAL_CONFIG_FOR_TESTING[key] = config[key];
223
- }
224
- return;
225
- }
226
- saveConfig(
227
- getGlobalConfigFilePath(),
228
- {
229
- ...config,
230
- projects: getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG).projects
231
- },
232
- DEFAULT_GLOBAL_CONFIG
233
- );
234
- }
235
- function getGlobalConfig() {
236
- if (process.env.NODE_ENV === "test") {
237
- return TEST_GLOBAL_CONFIG_FOR_TESTING;
238
- }
239
- const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
240
- return migrateModelProfilesRemoveId(config);
241
- }
242
- function normalizeApiKeyForConfig(apiKey) {
243
- return apiKey?.slice(-20) ?? "";
244
- }
245
- function getCustomApiKeyStatus(truncatedApiKey) {
246
- const config = getGlobalConfig();
247
- if (config.customApiKeyResponses?.approved?.includes(truncatedApiKey)) {
248
- return "approved";
249
- }
250
- if (config.customApiKeyResponses?.rejected?.includes(truncatedApiKey)) {
251
- return "rejected";
252
- }
253
- return "new";
254
- }
255
- function saveConfig(file, config, defaultConfig) {
256
- const filteredConfig = Object.fromEntries(
257
- Object.entries(config).filter(
258
- ([key, value]) => JSON.stringify(value) !== JSON.stringify(defaultConfig[key])
259
- )
260
- );
261
- try {
262
- writeFileSync(file, JSON.stringify(filteredConfig, null, 2), "utf-8");
263
- } catch (error) {
264
- const err = error;
265
- if (err?.code === "EACCES" || err?.code === "EPERM" || err?.code === "EROFS") {
266
- debug.state("CONFIG_SAVE_SKIPPED", {
267
- file,
268
- reason: String(err.code)
269
- });
270
- return;
271
- }
272
- throw error;
273
- }
274
- }
275
- var configReadingAllowed = false;
276
- function enableConfigs() {
277
- configReadingAllowed = true;
278
- getConfig(
279
- getGlobalConfigFilePath(),
280
- DEFAULT_GLOBAL_CONFIG,
281
- true
282
- );
283
- }
284
- function getConfig(file, defaultConfig, throwOnInvalid) {
285
- void configReadingAllowed;
286
- debug.state("CONFIG_LOAD_START", {
287
- file,
288
- fileExists: String(existsSync(file)),
289
- throwOnInvalid: String(!!throwOnInvalid)
290
- });
291
- if (!existsSync(file)) {
292
- debug.state("CONFIG_LOAD_DEFAULT", {
293
- file,
294
- reason: "file_not_exists",
295
- defaultConfigKeys: Object.keys(defaultConfig).join(", ")
296
- });
297
- return cloneDeep(defaultConfig);
298
- }
299
- try {
300
- const fileContent = readFileSync(file, "utf-8");
301
- debug.state("CONFIG_FILE_READ", {
302
- file,
303
- contentLength: String(fileContent.length),
304
- contentPreview: fileContent.substring(0, 100) + (fileContent.length > 100 ? "..." : "")
305
- });
306
- try {
307
- const parsedConfig = JSON.parse(fileContent);
308
- debug.state("CONFIG_JSON_PARSED", {
309
- file,
310
- parsedKeys: Object.keys(parsedConfig).join(", ")
311
- });
312
- const finalConfig = {
313
- ...cloneDeep(defaultConfig),
314
- ...parsedConfig
315
- };
316
- debug.state("CONFIG_LOAD_SUCCESS", {
317
- file,
318
- finalConfigKeys: Object.keys(finalConfig).join(", ")
319
- });
320
- return finalConfig;
321
- } catch (error) {
322
- const errorMessage = error instanceof Error ? error.message : String(error);
323
- debug.error("CONFIG_JSON_PARSE_ERROR", {
324
- file,
325
- errorMessage,
326
- errorType: error instanceof Error ? error.constructor.name : typeof error,
327
- contentLength: String(fileContent.length)
328
- });
329
- throw new ConfigParseError(errorMessage, file, defaultConfig);
330
- }
331
- } catch (error) {
332
- if (error instanceof ConfigParseError && throwOnInvalid) {
333
- debug.error("CONFIG_PARSE_ERROR_RETHROWN", {
334
- file,
335
- throwOnInvalid: String(throwOnInvalid),
336
- errorMessage: error.message
337
- });
338
- throw error;
339
- }
340
- debug.warn("CONFIG_FALLBACK_TO_DEFAULT", {
341
- file,
342
- errorType: error instanceof Error ? error.constructor.name : typeof error,
343
- errorMessage: error instanceof Error ? error.message : String(error),
344
- action: "using_default_config"
345
- });
346
- return cloneDeep(defaultConfig);
347
- }
348
- }
349
- function getCurrentProjectConfig() {
350
- if (process.env.NODE_ENV === "test") {
351
- return TEST_PROJECT_CONFIG_FOR_TESTING;
352
- }
353
- const absolutePath = resolve(getCwd());
354
- const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
355
- if (!config.projects) {
356
- return defaultConfigForProject(absolutePath);
357
- }
358
- const projectKey = findMatchingProjectKey(config.projects, absolutePath);
359
- const projectConfig = projectKey && config.projects[projectKey] ? config.projects[projectKey] : defaultConfigForProject(absolutePath);
360
- if (typeof projectConfig.allowedTools === "string") {
361
- projectConfig.allowedTools = safeParseJSON(projectConfig.allowedTools) ?? [];
362
- }
363
- if (typeof projectConfig.deniedTools === "string") {
364
- ;
365
- projectConfig.deniedTools = safeParseJSON(projectConfig.deniedTools) ?? [];
366
- }
367
- if (typeof projectConfig.askedTools === "string") {
368
- ;
369
- projectConfig.askedTools = safeParseJSON(projectConfig.askedTools) ?? [];
370
- }
371
- return projectConfig;
372
- }
373
- function saveCurrentProjectConfig(projectConfig) {
374
- if (process.env.NODE_ENV === "test") {
375
- for (const key in projectConfig) {
376
- TEST_PROJECT_CONFIG_FOR_TESTING[key] = projectConfig[key];
377
- }
378
- return;
379
- }
380
- const config = getConfig(getGlobalConfigFilePath(), DEFAULT_GLOBAL_CONFIG);
381
- const resolvedCwd = resolve(getCwd());
382
- const existingKey = findMatchingProjectKey(config.projects, resolvedCwd);
383
- const storageKey = existingKey ?? resolvedCwd;
384
- saveConfig(
385
- getGlobalConfigFilePath(),
386
- {
387
- ...config,
388
- projects: {
389
- ...config.projects,
390
- [storageKey]: projectConfig
391
- }
392
- },
393
- DEFAULT_GLOBAL_CONFIG
394
- );
395
- }
396
- async function isAutoUpdaterDisabled() {
397
- const status = getGlobalConfig().autoUpdaterStatus;
398
- return status !== "enabled";
399
- }
400
- var TEST_MCPRC_CONFIG_FOR_TESTING = {};
401
- function clearMcprcConfigForTesting() {
402
- if (process.env.NODE_ENV === "test") {
403
- Object.keys(TEST_MCPRC_CONFIG_FOR_TESTING).forEach((key) => {
404
- delete TEST_MCPRC_CONFIG_FOR_TESTING[key];
405
- });
406
- }
407
- }
408
- function addMcprcServerForTesting(name, server) {
409
- if (process.env.NODE_ENV === "test") {
410
- TEST_MCPRC_CONFIG_FOR_TESTING[name] = server;
411
- }
412
- }
413
- function removeMcprcServerForTesting(name) {
414
- if (process.env.NODE_ENV === "test") {
415
- if (!TEST_MCPRC_CONFIG_FOR_TESTING[name]) {
416
- throw new Error(`No MCP server found with name: ${name} in .mcprc`);
417
- }
418
- delete TEST_MCPRC_CONFIG_FOR_TESTING[name];
419
- }
420
- }
421
- var getMcprcConfig = memoize(
422
- () => {
423
- if (process.env.NODE_ENV === "test") {
424
- return TEST_MCPRC_CONFIG_FOR_TESTING;
425
- }
426
- const mcprcPath = join(getCwd(), ".mcprc");
427
- if (!existsSync(mcprcPath)) {
428
- return {};
429
- }
430
- try {
431
- const mcprcContent = readFileSync(mcprcPath, "utf-8");
432
- const config = safeParseJSON(mcprcContent);
433
- if (config && typeof config === "object") {
434
- return config;
435
- }
436
- } catch {
437
- }
438
- return {};
439
- },
440
- () => {
441
- const cwd = getCwd();
442
- const mcprcPath = join(cwd, ".mcprc");
443
- if (existsSync(mcprcPath)) {
444
- try {
445
- const stat = readFileSync(mcprcPath, "utf-8");
446
- return `${cwd}:${stat}`;
447
- } catch {
448
- return cwd;
449
- }
450
- }
451
- return cwd;
452
- }
453
- );
454
- function parseMcpServersFromMcpJson(value) {
455
- if (!value || typeof value !== "object" || Array.isArray(value)) return {};
456
- const raw = value.mcpServers;
457
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) return {};
458
- return raw;
459
- }
460
- function parseMcpServersFromMcprc(value) {
461
- if (!value || typeof value !== "object" || Array.isArray(value)) return {};
462
- const maybeNested = value.mcpServers;
463
- if (maybeNested && typeof maybeNested === "object" && !Array.isArray(maybeNested)) {
464
- return maybeNested;
465
- }
466
- return value;
467
- }
468
- var getProjectMcpServerDefinitions = memoize(
469
- () => {
470
- if (process.env.NODE_ENV === "test") {
471
- return {
472
- servers: {},
473
- sources: {},
474
- mcpJsonPath: join(getCwd(), ".mcp.json"),
475
- mcprcPath: join(getCwd(), ".mcprc")
476
- };
477
- }
478
- const cwd = getCwd();
479
- const mcpJsonPath = join(cwd, ".mcp.json");
480
- const mcprcPath = join(cwd, ".mcprc");
481
- let mcpJsonServers = {};
482
- let mcprcServers = {};
483
- if (existsSync(mcpJsonPath)) {
484
- try {
485
- const content = readFileSync(mcpJsonPath, "utf-8");
486
- const parsed = safeParseJSON(content);
487
- mcpJsonServers = parseMcpServersFromMcpJson(parsed);
488
- } catch {
489
- }
490
- }
491
- if (existsSync(mcprcPath)) {
492
- try {
493
- const content = readFileSync(mcprcPath, "utf-8");
494
- const parsed = safeParseJSON(content);
495
- mcprcServers = parseMcpServersFromMcprc(parsed);
496
- } catch {
497
- }
498
- }
499
- const sources = {};
500
- for (const name of Object.keys(mcpJsonServers)) {
501
- sources[name] = ".mcp.json";
502
- }
503
- for (const name of Object.keys(mcprcServers)) {
504
- sources[name] = ".mcprc";
505
- }
506
- return {
507
- servers: { ...mcpJsonServers, ...mcprcServers },
508
- sources,
509
- mcpJsonPath,
510
- mcprcPath
511
- };
512
- },
513
- () => {
514
- const cwd = getCwd();
515
- const mcpJsonPath = join(cwd, ".mcp.json");
516
- const mcprcPath = join(cwd, ".mcprc");
517
- const parts = [cwd];
518
- if (existsSync(mcpJsonPath)) {
519
- try {
520
- parts.push("mcp.json");
521
- parts.push(readFileSync(mcpJsonPath, "utf-8"));
522
- } catch {
523
- }
524
- }
525
- if (existsSync(mcprcPath)) {
526
- try {
527
- parts.push("mcprc");
528
- parts.push(readFileSync(mcprcPath, "utf-8"));
529
- } catch {
530
- }
531
- }
532
- return parts.join(":");
533
- }
534
- );
535
- function getOrCreateUserID() {
536
- const config = getGlobalConfig();
537
- if (config.userID) {
538
- return config.userID;
539
- }
540
- const userID = randomBytes(32).toString("hex");
541
- saveGlobalConfig({ ...config, userID });
542
- return userID;
543
- }
544
- function getConfigForCLI(key, global) {
545
- if (global) {
546
- if (!isGlobalConfigKey(key)) {
547
- console.error(
548
- `Error: '${key}' is not a valid config key. Valid keys are: ${GLOBAL_CONFIG_KEYS.join(", ")}`
549
- );
550
- process.exit(1);
551
- }
552
- return getGlobalConfig()[key];
553
- } else {
554
- if (!isProjectConfigKey(key)) {
555
- console.error(
556
- `Error: '${key}' is not a valid config key. Valid keys are: ${PROJECT_CONFIG_KEYS.join(", ")}`
557
- );
558
- process.exit(1);
559
- }
560
- return getCurrentProjectConfig()[key];
561
- }
562
- }
563
- function setConfigForCLI(key, value, global) {
564
- if (global) {
565
- if (!isGlobalConfigKey(key)) {
566
- console.error(
567
- `Error: Cannot set '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(", ")}`
568
- );
569
- process.exit(1);
570
- }
571
- if (key === "autoUpdaterStatus" && !isAutoUpdaterStatus(value)) {
572
- console.error(
573
- `Error: Invalid value for autoUpdaterStatus. Must be one of: disabled, enabled, no_permissions, not_configured`
574
- );
575
- process.exit(1);
576
- }
577
- const currentConfig = getGlobalConfig();
578
- saveGlobalConfig({
579
- ...currentConfig,
580
- [key]: value
581
- });
582
- } else {
583
- if (!isProjectConfigKey(key)) {
584
- console.error(
585
- `Error: Cannot set '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(", ")}. Did you mean --global?`
586
- );
587
- process.exit(1);
588
- }
589
- const currentConfig = getCurrentProjectConfig();
590
- saveCurrentProjectConfig({
591
- ...currentConfig,
592
- [key]: value
593
- });
594
- }
595
- setTimeout(() => {
596
- process.exit(0);
597
- }, 100);
598
- }
599
- function deleteConfigForCLI(key, global) {
600
- if (global) {
601
- if (!isGlobalConfigKey(key)) {
602
- console.error(
603
- `Error: Cannot delete '${key}'. Only these keys can be modified: ${GLOBAL_CONFIG_KEYS.join(", ")}`
604
- );
605
- process.exit(1);
606
- }
607
- const currentConfig = getGlobalConfig();
608
- delete currentConfig[key];
609
- saveGlobalConfig(currentConfig);
610
- } else {
611
- if (!isProjectConfigKey(key)) {
612
- console.error(
613
- `Error: Cannot delete '${key}'. Only these keys can be modified: ${PROJECT_CONFIG_KEYS.join(", ")}. Did you mean --global?`
614
- );
615
- process.exit(1);
616
- }
617
- const currentConfig = getCurrentProjectConfig();
618
- delete currentConfig[key];
619
- saveCurrentProjectConfig(currentConfig);
620
- }
621
- }
622
- function listConfigForCLI(global) {
623
- if (global) {
624
- const currentConfig = pick(getGlobalConfig(), GLOBAL_CONFIG_KEYS);
625
- return currentConfig;
626
- } else {
627
- return pick(getCurrentProjectConfig(), PROJECT_CONFIG_KEYS);
628
- }
629
- }
630
- function getOpenAIApiKey() {
631
- return process.env.OPENAI_API_KEY;
632
- }
633
- function getAnthropicApiKey() {
634
- return process.env.ANTHROPIC_API_KEY || "";
635
- }
636
-
637
- // src/core/config/validator.ts
638
- function setAllPointersToModel(modelName) {
639
- const config = getGlobalConfig();
640
- const updatedConfig = {
641
- ...config,
642
- modelPointers: {
643
- main: modelName,
644
- task: modelName,
645
- compact: modelName,
646
- quick: modelName
647
- },
648
- defaultModelName: modelName
649
- };
650
- saveGlobalConfig(updatedConfig);
651
- }
652
- function setModelPointer(pointer, modelName) {
653
- const config = getGlobalConfig();
654
- const updatedConfig = {
655
- ...config,
656
- modelPointers: {
657
- ...config.modelPointers,
658
- [pointer]: modelName
659
- }
660
- };
661
- saveGlobalConfig(updatedConfig);
662
- import("./model-FV3JDJKH.js").then(({ reloadModelManager }) => {
663
- reloadModelManager();
664
- });
665
- }
666
- function isGPT5ModelName(modelName) {
667
- if (!modelName || typeof modelName !== "string") return false;
668
- const lowerName = modelName.toLowerCase();
669
- return lowerName.startsWith("gpt-5") || lowerName.includes("gpt-5");
670
- }
671
- function validateAndRepairGPT5Profile(profile) {
672
- const isGPT5 = isGPT5ModelName(profile.modelName);
673
- const now = Date.now();
674
- const repairedProfile = { ...profile };
675
- let wasRepaired = false;
676
- if (isGPT5 !== profile.isGPT5) {
677
- repairedProfile.isGPT5 = isGPT5;
678
- wasRepaired = true;
679
- }
680
- if (isGPT5) {
681
- const validReasoningEfforts = ["minimal", "low", "medium", "high"];
682
- if (!profile.reasoningEffort || !validReasoningEfforts.includes(profile.reasoningEffort)) {
683
- repairedProfile.reasoningEffort = "medium";
684
- wasRepaired = true;
685
- debug.state("GPT5_CONFIG_AUTO_REPAIR", {
686
- model: profile.modelName,
687
- field: "reasoningEffort",
688
- value: "medium"
689
- });
690
- }
691
- if (profile.contextLength < 128e3) {
692
- repairedProfile.contextLength = 128e3;
693
- wasRepaired = true;
694
- debug.state("GPT5_CONFIG_AUTO_REPAIR", {
695
- model: profile.modelName,
696
- field: "contextLength",
697
- value: 128e3
698
- });
699
- }
700
- if (profile.maxTokens < 4e3) {
701
- repairedProfile.maxTokens = 8192;
702
- wasRepaired = true;
703
- debug.state("GPT5_CONFIG_AUTO_REPAIR", {
704
- model: profile.modelName,
705
- field: "maxTokens",
706
- value: 8192
707
- });
708
- }
709
- if (profile.provider !== "openai" && profile.provider !== "custom-openai" && profile.provider !== "azure") {
710
- debug.warn("GPT5_CONFIG_UNEXPECTED_PROVIDER", {
711
- model: profile.modelName,
712
- provider: profile.provider,
713
- expectedProviders: ["openai", "custom-openai", "azure"]
714
- });
715
- }
716
- if (profile.modelName.includes("gpt-5") && !profile.baseURL) {
717
- repairedProfile.baseURL = "https://api.openai.com/v1";
718
- wasRepaired = true;
719
- debug.state("GPT5_CONFIG_AUTO_REPAIR", {
720
- model: profile.modelName,
721
- field: "baseURL",
722
- value: "https://api.openai.com/v1"
723
- });
724
- }
725
- }
726
- repairedProfile.validationStatus = wasRepaired ? "auto_repaired" : "valid";
727
- repairedProfile.lastValidation = now;
728
- if (wasRepaired) {
729
- debug.info("GPT5_CONFIG_AUTO_REPAIRED", { model: profile.modelName });
730
- }
731
- return repairedProfile;
732
- }
733
- function validateAndRepairAllGPT5Profiles() {
734
- const config = getGlobalConfig();
735
- if (!config.modelProfiles) {
736
- return { repaired: 0, total: 0 };
737
- }
738
- let repairCount = 0;
739
- const repairedProfiles = config.modelProfiles.map((profile) => {
740
- const repairedProfile = validateAndRepairGPT5Profile(profile);
741
- if (repairedProfile.validationStatus === "auto_repaired") {
742
- repairCount++;
743
- }
744
- return repairedProfile;
745
- });
746
- if (repairCount > 0) {
747
- const updatedConfig = {
748
- ...config,
749
- modelProfiles: repairedProfiles
750
- };
751
- saveGlobalConfig(updatedConfig);
752
- debug.info("GPT5_CONFIG_AUTO_REPAIR_SUMMARY", {
753
- repaired: repairCount,
754
- total: config.modelProfiles.length
755
- });
756
- }
757
- return { repaired: repairCount, total: config.modelProfiles.length };
758
- }
759
- function getGPT5ConfigRecommendations(modelName) {
760
- if (!isGPT5ModelName(modelName)) {
761
- return {};
762
- }
763
- const recommendations = {
764
- contextLength: 128e3,
765
- maxTokens: 8192,
766
- reasoningEffort: "medium",
767
- isGPT5: true
768
- };
769
- if (modelName.includes("gpt-5-mini")) {
770
- recommendations.maxTokens = 4096;
771
- recommendations.reasoningEffort = "low";
772
- } else if (modelName.includes("gpt-5-nano")) {
773
- recommendations.maxTokens = 2048;
774
- recommendations.reasoningEffort = "minimal";
775
- }
776
- return recommendations;
777
- }
778
- function createGPT5ModelProfile(name, modelName, apiKey, baseURL, provider = "openai") {
779
- const recommendations = getGPT5ConfigRecommendations(modelName);
780
- const profile = {
781
- name,
782
- provider,
783
- modelName,
784
- baseURL: baseURL || "https://api.openai.com/v1",
785
- apiKey,
786
- maxTokens: recommendations.maxTokens || 8192,
787
- contextLength: recommendations.contextLength || 128e3,
788
- reasoningEffort: recommendations.reasoningEffort || "medium",
789
- isActive: true,
790
- createdAt: Date.now(),
791
- isGPT5: true,
792
- validationStatus: "valid",
793
- lastValidation: Date.now()
794
- };
795
- return profile;
796
- }
797
-
798
- export {
799
- isAutoUpdaterStatus,
800
- GLOBAL_CONFIG_KEYS,
801
- isGlobalConfigKey,
802
- PROJECT_CONFIG_KEYS,
803
- isProjectConfigKey,
804
- DEFAULT_GLOBAL_CONFIG,
805
- safeParseJSON,
806
- checkHasTrustDialogAccepted,
807
- saveGlobalConfig,
808
- getGlobalConfig,
809
- normalizeApiKeyForConfig,
810
- getCustomApiKeyStatus,
811
- enableConfigs,
812
- getCurrentProjectConfig,
813
- saveCurrentProjectConfig,
814
- isAutoUpdaterDisabled,
815
- TEST_MCPRC_CONFIG_FOR_TESTING,
816
- clearMcprcConfigForTesting,
817
- addMcprcServerForTesting,
818
- removeMcprcServerForTesting,
819
- getMcprcConfig,
820
- getProjectMcpServerDefinitions,
821
- getOrCreateUserID,
822
- getConfigForCLI,
823
- setConfigForCLI,
824
- deleteConfigForCLI,
825
- listConfigForCLI,
826
- getOpenAIApiKey,
827
- getAnthropicApiKey,
828
- setAllPointersToModel,
829
- setModelPointer,
830
- isGPT5ModelName,
831
- validateAndRepairGPT5Profile,
832
- validateAndRepairAllGPT5Profiles,
833
- getGPT5ConfigRecommendations,
834
- createGPT5ModelProfile
835
- };