@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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/logging/logger.ts", "../../packages/core/src/logging/levels.ts", "../../packages/core/src/logging/dedupe.ts", "../../packages/core/src/logging/formatters.ts", "../../packages/core/src/logging/mode.ts", "../../packages/core/src/logging/terminal.ts", "../../packages/core/src/logging/transports.ts", "../../packages/core/src/logging/diagnosis.ts", "../../packages/core/src/logging/apiError.ts", "../../packages/core/src/logging/llm.ts"],
4
+ "sourcesContent": ["import { randomUUID } from 'crypto'\nimport chalk from 'chalk'\n\nimport {\n DEBUG_VERBOSE_TERMINAL_LOG_LEVELS,\n LogLevel,\n TERMINAL_LOG_LEVELS,\n} from './levels'\nimport { shouldLogWithDedupe } from './dedupe'\nimport { formatDataForTerminal } from './formatters'\nimport { isDebugMode, isDebugVerboseMode, isVerboseMode } from './mode'\nimport { terminalLog } from './terminal'\nimport { DEBUG_PATHS, STARTUP_TIMESTAMP, writeToFile } from './transports'\nimport type { LogEntry } from './types'\nimport { SESSION_ID } from '#core/utils/log'\n\nclass RequestContext {\n public readonly id: string\n public readonly startTime: number\n private phases: Map<string, number> = new Map()\n\n constructor() {\n this.id = randomUUID().slice(0, 8)\n this.startTime = Date.now()\n }\n\n markPhase(phase: string) {\n this.phases.set(phase, Date.now() - this.startTime)\n }\n\n getPhaseTime(phase: string): number {\n return this.phases.get(phase) || 0\n }\n\n getAllPhases(): Record<string, number> {\n return Object.fromEntries(this.phases)\n }\n}\n\nconst activeRequests = new Map<string, RequestContext>()\nlet currentRequest: RequestContext | null = null\n\nfunction shouldShowInTerminal(level: LogLevel): boolean {\n if (!isDebugMode()) return false\n if (isDebugVerboseMode()) return DEBUG_VERBOSE_TERMINAL_LOG_LEVELS.has(level)\n return TERMINAL_LOG_LEVELS.has(level)\n}\n\nfunction logToTerminal(entry: LogEntry) {\n if (!shouldShowInTerminal(entry.level)) return\n\n const { level, phase, data, requestId, elapsed } = entry\n const timestamp = new Date().toISOString().slice(11, 23)\n\n let prefix = ''\n let color = chalk.gray\n\n switch (level) {\n case LogLevel.FLOW:\n prefix = '\uD83D\uDD04'\n color = chalk.cyan\n break\n case LogLevel.API:\n prefix = '\uD83C\uDF10'\n color = chalk.yellow\n break\n case LogLevel.STATE:\n prefix = '\uD83D\uDCCA'\n color = chalk.blue\n break\n case LogLevel.ERROR:\n prefix = '\u274C'\n color = chalk.red\n break\n case LogLevel.WARN:\n prefix = '\u26A0\uFE0F'\n color = chalk.yellow\n break\n case LogLevel.INFO:\n prefix = '\u2139\uFE0F'\n color = chalk.green\n break\n case LogLevel.TRACE:\n prefix = '\uD83D\uDCC8'\n color = chalk.magenta\n break\n default:\n prefix = '\uD83D\uDD0D'\n color = chalk.gray\n }\n\n const reqId = requestId ? chalk.dim(`[${requestId}]`) : ''\n const elapsedStr = elapsed !== undefined ? chalk.dim(`+${elapsed}ms`) : ''\n const dataStr = formatDataForTerminal(data)\n\n terminalLog(\n `${color(`[${timestamp}]`)} ${prefix} ${color(phase)} ${reqId} ${dataStr} ${elapsedStr}`,\n )\n}\n\nexport function debugLog(\n level: LogLevel,\n phase: string,\n data: unknown,\n requestId?: string,\n) {\n if (!isDebugMode()) return\n if (!shouldLogWithDedupe(level, phase, data)) return\n\n const entry: LogEntry = {\n timestamp: new Date().toISOString(),\n level,\n phase,\n data,\n requestId: requestId || currentRequest?.id,\n elapsed: currentRequest ? Date.now() - currentRequest.startTime : undefined,\n }\n\n writeToFile(DEBUG_PATHS.detailed(), entry)\n\n switch (level) {\n case LogLevel.FLOW:\n writeToFile(DEBUG_PATHS.flow(), entry)\n break\n case LogLevel.API:\n writeToFile(DEBUG_PATHS.api(), entry)\n break\n case LogLevel.STATE:\n writeToFile(DEBUG_PATHS.state(), entry)\n break\n }\n\n logToTerminal(entry)\n}\n\nexport const debug = {\n flow: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.FLOW, phase, data, requestId),\n\n api: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.API, phase, data, requestId),\n\n state: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.STATE, phase, data, requestId),\n\n info: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.INFO, phase, data, requestId),\n\n warn: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.WARN, phase, data, requestId),\n\n error: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.ERROR, phase, data, requestId),\n\n trace: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.TRACE, phase, data, requestId),\n\n ui: (phase: string, data: unknown, requestId?: string) =>\n debugLog(LogLevel.STATE, `UI_${phase}`, data, requestId),\n}\n\nexport function startRequest(): RequestContext {\n const ctx = new RequestContext()\n currentRequest = ctx\n activeRequests.set(ctx.id, ctx)\n\n debug.flow('REQUEST_START', {\n requestId: ctx.id,\n activeRequests: activeRequests.size,\n })\n\n return ctx\n}\n\nexport function endRequest(ctx?: RequestContext) {\n const request = ctx || currentRequest\n if (!request) return\n\n debug.flow('REQUEST_END', {\n requestId: request.id,\n totalTime: Date.now() - request.startTime,\n phases: request.getAllPhases(),\n })\n\n activeRequests.delete(request.id)\n if (currentRequest === request) currentRequest = null\n}\n\nexport function getCurrentRequest(): RequestContext | null {\n return currentRequest\n}\n\nexport function markPhase(phase: string, data?: unknown) {\n if (!currentRequest) return\n\n currentRequest.markPhase(phase)\n debug.flow(`PHASE_${phase.toUpperCase()}`, {\n requestId: currentRequest.id,\n elapsed: currentRequest.getPhaseTime(phase),\n data,\n })\n}\n\nexport function logReminderEvent(\n eventType: string,\n reminderData: any,\n agentId?: string,\n) {\n if (!isDebugMode()) return\n\n debug.info('REMINDER_EVENT_TRIGGERED', {\n eventType,\n agentId: agentId || 'default',\n reminderType: reminderData?.type || 'unknown',\n reminderCategory: reminderData?.category || 'general',\n reminderPriority: reminderData?.priority || 'medium',\n contentLength: reminderData?.content ? reminderData.content.length : 0,\n timestamp: Date.now(),\n })\n}\n\nexport function initDebugLogger() {\n if (!isDebugMode()) return\n\n debug.info('DEBUG_LOGGER_INIT', {\n startupTimestamp: STARTUP_TIMESTAMP,\n sessionId: SESSION_ID,\n debugPaths: {\n detailed: DEBUG_PATHS.detailed(),\n flow: DEBUG_PATHS.flow(),\n api: DEBUG_PATHS.api(),\n state: DEBUG_PATHS.state(),\n },\n })\n\n const terminalLevels = isDebugVerboseMode()\n ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS).join(', ')\n : Array.from(TERMINAL_LOG_LEVELS).join(', ')\n\n terminalLog(\n chalk.dim(`[DEBUG] Terminal output filtered to: ${terminalLevels}`),\n )\n terminalLog(\n chalk.dim(`[DEBUG] Complete logs saved to: ${DEBUG_PATHS.base()}`),\n )\n if (!isDebugVerboseMode()) {\n terminalLog(\n chalk.dim(\n `[DEBUG] Use --debug-verbose for detailed system logs (FLOW, API, STATE)`,\n ),\n )\n }\n}\n\nexport function getDebugInfo() {\n return {\n isDebugMode: isDebugMode(),\n isVerboseMode: isVerboseMode(),\n isDebugVerboseMode: isDebugVerboseMode(),\n startupTimestamp: STARTUP_TIMESTAMP,\n sessionId: SESSION_ID,\n currentRequest: currentRequest?.id,\n activeRequests: Array.from(activeRequests.keys()),\n terminalLogLevels: isDebugVerboseMode()\n ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS)\n : Array.from(TERMINAL_LOG_LEVELS),\n debugPaths: {\n detailed: DEBUG_PATHS.detailed(),\n flow: DEBUG_PATHS.flow(),\n api: DEBUG_PATHS.api(),\n state: DEBUG_PATHS.state(),\n },\n }\n}\n", "export enum LogLevel {\n TRACE = 'TRACE',\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR',\n FLOW = 'FLOW',\n API = 'API',\n STATE = 'STATE',\n REMINDER = 'REMINDER',\n}\n\nexport const TERMINAL_LOG_LEVELS = new Set<LogLevel>([\n LogLevel.ERROR,\n LogLevel.WARN,\n LogLevel.INFO,\n LogLevel.REMINDER,\n])\n\nexport const DEBUG_VERBOSE_TERMINAL_LOG_LEVELS = new Set<LogLevel>([\n LogLevel.ERROR,\n LogLevel.WARN,\n LogLevel.FLOW,\n LogLevel.API,\n LogLevel.STATE,\n LogLevel.INFO,\n LogLevel.REMINDER,\n])\n\nexport const USER_FRIENDLY_LEVELS = new Set<string>([\n 'SESSION_START',\n 'QUERY_START',\n 'QUERY_PROGRESS',\n 'QUERY_COMPLETE',\n 'TOOL_EXECUTION',\n 'ERROR_OCCURRED',\n 'PERFORMANCE_SUMMARY',\n])\n", "import type { LogLevel } from './levels'\n\nconst recentLogs = new Map<string, number>()\nconst LOG_DEDUPE_WINDOW_MS = 5000\n\nfunction getFileForDedupe(data: unknown): string {\n if (!data || typeof data !== 'object') return ''\n const record = data as Record<string, unknown>\n const file = record.file\n return typeof file === 'string' ? file : ''\n}\n\nfunction getDedupeKey(level: LogLevel, phase: string, data: unknown): string {\n if (phase.startsWith('CONFIG_')) {\n return `${level}:${phase}:${getFileForDedupe(data)}`\n }\n return `${level}:${phase}`\n}\n\nexport function shouldLogWithDedupe(\n level: LogLevel,\n phase: string,\n data: unknown,\n): boolean {\n const key = getDedupeKey(level, phase, data)\n const now = Date.now()\n const lastLogTime = recentLogs.get(key)\n\n if (!lastLogTime || now - lastLogTime > LOG_DEDUPE_WINDOW_MS) {\n recentLogs.set(key, now)\n\n for (const [oldKey, oldTime] of recentLogs.entries()) {\n if (now - oldTime > LOG_DEDUPE_WINDOW_MS) {\n recentLogs.delete(oldKey)\n }\n }\n\n return true\n }\n\n return false\n}\n", "import chalk from 'chalk'\n\nfunction asMessageRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object') return null\n return value as Record<string, unknown>\n}\n\nexport function formatMessages(messages: unknown): string {\n if (Array.isArray(messages)) {\n const recentMessages = messages.slice(-5)\n return recentMessages\n .map((msg, index) => {\n const record = asMessageRecord(msg)\n const roleRaw = record?.role\n const role = typeof roleRaw === 'string' ? roleRaw : 'unknown'\n const contentRaw = record?.content\n\n let content = ''\n if (typeof contentRaw === 'string') {\n content =\n contentRaw.length > 300\n ? contentRaw.substring(0, 300) + '...'\n : contentRaw\n } else if (typeof contentRaw === 'object') {\n content = '[complex_content]'\n } else {\n content = String(contentRaw ?? '')\n }\n\n const totalIndex = messages.length - recentMessages.length + index\n return `[${totalIndex}] ${chalk.dim(role)}: ${content}`\n })\n .join('\\n ')\n }\n\n if (typeof messages === 'string') {\n try {\n const parsed = JSON.parse(messages) as unknown\n if (Array.isArray(parsed)) {\n return formatMessages(parsed)\n }\n } catch {\n // ignore\n }\n }\n\n if (typeof messages === 'string' && messages.length > 200) {\n return messages.substring(0, 200) + '...'\n }\n\n return typeof messages === 'string' ? messages : JSON.stringify(messages)\n}\n\nexport function formatDataForTerminal(data: unknown): string {\n if (typeof data === 'object' && data !== null) {\n const record = data as Record<string, unknown>\n if ('messages' in record) {\n const formattedMessages = formatMessages(record.messages)\n return JSON.stringify(\n {\n ...record,\n messages: `\\n ${formattedMessages}`,\n },\n null,\n 2,\n )\n }\n return JSON.stringify(data, null, 2)\n }\n\n return typeof data === 'string' ? data : JSON.stringify(data)\n}\n", "export function isDebugMode(): boolean {\n return (\n process.argv.includes('--debug-verbose') ||\n process.argv.includes('--mcp-debug') ||\n process.argv.some(\n arg => arg === '--debug' || arg === '-d' || arg.startsWith('--debug='),\n )\n )\n}\n\nexport function isVerboseMode(): boolean {\n return process.argv.includes('--verbose')\n}\n\nexport function isDebugVerboseMode(): boolean {\n return process.argv.includes('--debug-verbose')\n}\n", "import { format } from 'node:util'\n\nexport function terminalLog(...args: unknown[]): void {\n process.stderr.write(`${format(...args)}\\n`)\n}\n", "import { appendFileSync, existsSync, mkdirSync } from 'fs'\nimport { homedir } from 'os'\nimport { join } from 'path'\n\nimport { SESSION_ID } from '#core/utils/log'\n\nimport { isDebugMode } from './mode'\nimport type { LogEntry } from './types'\n\nexport const STARTUP_TIMESTAMP = new Date().toISOString().replace(/[:.]/g, '-')\nconst REQUEST_START_TIME = Date.now()\n\nexport const KODE_DIR = join(homedir(), '.kode')\n\nfunction getProjectDir(cwd: string): string {\n return cwd.replace(/[^a-zA-Z0-9]/g, '-')\n}\n\nexport const DEBUG_PATHS = {\n base: () => join(KODE_DIR, getProjectDir(process.cwd()), 'debug'),\n detailed: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-detailed.log`),\n flow: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-flow.log`),\n api: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-api.log`),\n state: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-state.log`),\n}\n\nexport function ensureDebugDir(): void {\n const debugDir = DEBUG_PATHS.base()\n if (!existsSync(debugDir)) {\n mkdirSync(debugDir, { recursive: true })\n }\n}\n\nexport function writeToFile(filePath: string, entry: LogEntry): void {\n if (!isDebugMode()) return\n\n try {\n ensureDebugDir()\n const logLine =\n JSON.stringify(\n {\n ...entry,\n sessionId: SESSION_ID,\n pid: process.pid,\n uptime: Date.now() - REQUEST_START_TIME,\n },\n null,\n 2,\n ) + ',\\n'\n\n appendFileSync(filePath, logLine)\n } catch {\n // ignore\n }\n}\n", "import chalk from 'chalk'\n\nimport { debug } from './logger'\nimport { isDebugMode } from './mode'\nimport { terminalLog } from './terminal'\nimport { DEBUG_PATHS } from './transports'\nimport type { ErrorDiagnosis } from './types'\n\nexport function diagnoseError(error: any, context?: any): ErrorDiagnosis {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const errorStack = error instanceof Error ? error.stack : undefined\n\n if (\n errorMessage.includes('aborted') ||\n errorMessage.includes('AbortController')\n ) {\n return {\n errorType: 'REQUEST_ABORTED',\n category: 'SYSTEM',\n severity: 'MEDIUM',\n description:\n 'Request was aborted, often due to user cancellation or timeout',\n suggestions: [\n '\u68C0\u67E5\u662F\u5426\u6309\u4E0B\u4E86 ESC \u952E\u53D6\u6D88\u8BF7\u6C42',\n '\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u7A33\u5B9A',\n '\u9A8C\u8BC1 AbortController \u72B6\u6001: isActive \u548C signal.aborted \u5E94\u8BE5\u4E00\u81F4',\n '\u67E5\u770B\u662F\u5426\u6709\u91CD\u590D\u7684\u8BF7\u6C42\u5BFC\u81F4\u51B2\u7A81',\n ],\n debugSteps: [\n '\u4F7F\u7528 --debug-verbose \u6A21\u5F0F\u67E5\u770B\u8BE6\u7EC6\u7684\u8BF7\u6C42\u6D41\u7A0B',\n '\u68C0\u67E5 debug \u65E5\u5FD7\u4E2D\u7684 BINARY_FEEDBACK_* \u4E8B\u4EF6',\n '\u9A8C\u8BC1 REQUEST_START \u548C REQUEST_END \u65E5\u5FD7\u914D\u5BF9',\n '\u67E5\u770B QUERY_ABORTED \u4E8B\u4EF6\u7684\u89E6\u53D1\u539F\u56E0',\n ],\n }\n }\n\n if (\n errorMessage.includes('api-key') ||\n errorMessage.includes('authentication') ||\n errorMessage.includes('401')\n ) {\n return {\n errorType: 'API_AUTHENTICATION',\n category: 'API',\n severity: 'HIGH',\n description: 'API authentication failed - invalid or missing API key',\n suggestions: [\n '\u8FD0\u884C /login \u91CD\u65B0\u8BBE\u7F6E API \u5BC6\u94A5',\n '\u68C0\u67E5 ~/.kode/ \u914D\u7F6E\u6587\u4EF6\u4E2D\u7684 API \u5BC6\u94A5',\n '\u9A8C\u8BC1 API \u5BC6\u94A5\u662F\u5426\u5DF2\u8FC7\u671F\u6216\u88AB\u64A4\u9500',\n '\u786E\u8BA4\u4F7F\u7528\u7684 provider \u8BBE\u7F6E\u6B63\u786E (anthropic/opendev/bigdream)',\n ],\n debugSteps: [\n '\u68C0\u67E5 CONFIG_LOAD \u65E5\u5FD7\u4E2D\u7684 provider \u548C API \u5BC6\u94A5\u72B6\u6001',\n '\u8FD0\u884C kode doctor \u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7\u72B6\u6001',\n '\u67E5\u770B API_ERROR \u65E5\u5FD7\u4E86\u89E3\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F',\n '\u4F7F\u7528 kode config \u547D\u4EE4\u67E5\u770B\u5F53\u524D\u914D\u7F6E',\n ],\n }\n }\n\n if (\n errorMessage.includes('ECONNREFUSED') ||\n errorMessage.includes('ENOTFOUND') ||\n errorMessage.includes('timeout')\n ) {\n return {\n errorType: 'NETWORK_CONNECTION',\n category: 'NETWORK',\n severity: 'HIGH',\n description: 'Network connection failed - unable to reach API endpoint',\n suggestions: [\n '\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u6B63\u5E38',\n '\u786E\u8BA4\u9632\u706B\u5899\u6CA1\u6709\u963B\u6B62\u76F8\u5173\u7AEF\u53E3',\n '\u68C0\u67E5 proxy \u8BBE\u7F6E\u662F\u5426\u6B63\u786E',\n '\u5C1D\u8BD5\u5207\u6362\u5230\u4E0D\u540C\u7684\u7F51\u7EDC\u73AF\u5883',\n '\u9A8C\u8BC1 baseURL \u914D\u7F6E\u662F\u5426\u6B63\u786E',\n ],\n debugSteps: [\n '\u68C0\u67E5 API_REQUEST_START \u548C\u76F8\u5173\u7F51\u7EDC\u65E5\u5FD7',\n '\u67E5\u770B LLM_REQUEST_ERROR \u4E2D\u7684\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F',\n '\u4F7F\u7528 ping \u6216 curl \u6D4B\u8BD5 API \u7AEF\u70B9\u8FDE\u901A\u6027',\n '\u68C0\u67E5\u4F01\u4E1A\u7F51\u7EDC\u662F\u5426\u9700\u8981\u4EE3\u7406\u8BBE\u7F6E',\n ],\n }\n }\n\n if (\n errorMessage.includes('permission') ||\n errorMessage.includes('EACCES') ||\n errorMessage.includes('denied')\n ) {\n return {\n errorType: 'PERMISSION_DENIED',\n category: 'PERMISSION',\n severity: 'MEDIUM',\n description: 'Permission denied - insufficient access rights',\n suggestions: [\n '\u68C0\u67E5\u6587\u4EF6\u548C\u76EE\u5F55\u7684\u8BFB\u5199\u6743\u9650',\n '\u786E\u8BA4\u5F53\u524D\u7528\u6237\u6709\u8DB3\u591F\u7684\u7CFB\u7EDF\u6743\u9650',\n '\u67E5\u770B\u662F\u5426\u9700\u8981\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C',\n '\u68C0\u67E5\u5DE5\u5177\u6743\u9650\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E',\n ],\n debugSteps: [\n '\u67E5\u770B PERMISSION_* \u65E5\u5FD7\u4E86\u89E3\u6743\u9650\u68C0\u67E5\u8FC7\u7A0B',\n '\u68C0\u67E5\u6587\u4EF6\u7CFB\u7EDF\u6743\u9650: ls -la',\n '\u9A8C\u8BC1\u5DE5\u5177\u5BA1\u6279\u72B6\u6001',\n '\u67E5\u770B TOOL_* \u76F8\u5173\u7684\u8C03\u8BD5\u65E5\u5FD7',\n ],\n }\n }\n\n if (\n errorMessage.includes('substring is not a function') ||\n errorMessage.includes('content')\n ) {\n return {\n errorType: 'RESPONSE_FORMAT',\n category: 'API',\n severity: 'MEDIUM',\n description: 'LLM response format mismatch between different providers',\n suggestions: [\n '\u68C0\u67E5\u5F53\u524D\u4F7F\u7528\u7684 provider \u662F\u5426\u4E0E\u671F\u671B\u4E00\u81F4',\n '\u9A8C\u8BC1\u54CD\u5E94\u683C\u5F0F\u5904\u7406\u903B\u8F91',\n '\u786E\u8BA4\u4E0D\u540C provider \u7684\u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02',\n '\u68C0\u67E5\u662F\u5426\u9700\u8981\u66F4\u65B0\u54CD\u5E94\u89E3\u6790\u4EE3\u7801',\n ],\n debugSteps: [\n '\u67E5\u770B LLM_CALL_DEBUG \u4E2D\u7684\u54CD\u5E94\u683C\u5F0F',\n '\u68C0\u67E5 provider \u914D\u7F6E\u548C\u5B9E\u9645\u4F7F\u7528\u7684 API',\n '\u5BF9\u6BD4 Anthropic \u548C OpenAI \u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02',\n '\u9A8C\u8BC1 logLLMInteraction \u51FD\u6570\u7684\u683C\u5F0F\u5904\u7406',\n ],\n }\n }\n\n if (\n errorMessage.includes('too long') ||\n errorMessage.includes('context') ||\n errorMessage.includes('token')\n ) {\n return {\n errorType: 'CONTEXT_OVERFLOW',\n category: 'SYSTEM',\n severity: 'MEDIUM',\n description: 'Context window exceeded - conversation too long',\n suggestions: [\n '\u8FD0\u884C /compact \u624B\u52A8\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2',\n '\u68C0\u67E5\u81EA\u52A8\u538B\u7F29\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E',\n '\u51CF\u5C11\u5355\u6B21\u8F93\u5165\u7684\u5185\u5BB9\u957F\u5EA6',\n '\u6E05\u7406\u4E0D\u5FC5\u8981\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F',\n ],\n debugSteps: [\n '\u67E5\u770B AUTO_COMPACT_* \u65E5\u5FD7\u68C0\u67E5\u538B\u7F29\u89E6\u53D1',\n '\u68C0\u67E5 token \u4F7F\u7528\u91CF\u548C\u9608\u503C',\n '\u67E5\u770B CONTEXT_COMPRESSION \u76F8\u5173\u65E5\u5FD7',\n '\u9A8C\u8BC1\u6A21\u578B\u7684\u6700\u5927 token \u9650\u5236',\n ],\n }\n }\n\n if (\n errorMessage.includes('config') ||\n (errorMessage.includes('undefined') && context?.configRelated)\n ) {\n return {\n errorType: 'CONFIGURATION',\n category: 'CONFIG',\n severity: 'MEDIUM',\n description: 'Configuration error - missing or invalid settings',\n suggestions: [\n '\u8FD0\u884C kode config \u68C0\u67E5\u914D\u7F6E\u8BBE\u7F6E',\n '\u5220\u9664\u635F\u574F\u7684\u914D\u7F6E\u6587\u4EF6\u91CD\u65B0\u521D\u59CB\u5316',\n '\u68C0\u67E5 JSON \u914D\u7F6E\u6587\u4EF6\u8BED\u6CD5\u662F\u5426\u6B63\u786E',\n '\u9A8C\u8BC1\u73AF\u5883\u53D8\u91CF\u8BBE\u7F6E',\n ],\n debugSteps: [\n '\u67E5\u770B CONFIG_LOAD \u548C CONFIG_SAVE \u65E5\u5FD7',\n '\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\u548C\u6743\u9650',\n '\u9A8C\u8BC1 JSON \u683C\u5F0F: cat ~/.kode/config.json | jq',\n '\u67E5\u770B\u914D\u7F6E\u7F13\u5B58\u76F8\u5173\u7684\u8C03\u8BD5\u4FE1\u606F',\n ],\n }\n }\n\n return {\n errorType: 'UNKNOWN',\n category: 'SYSTEM',\n severity: 'MEDIUM',\n description: `Unexpected error: ${errorMessage}`,\n suggestions: [\n '\u91CD\u65B0\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F',\n '\u68C0\u67E5\u7CFB\u7EDF\u8D44\u6E90\u662F\u5426\u5145\u8DB3',\n '\u67E5\u770B\u5B8C\u6574\u7684\u9519\u8BEF\u65E5\u5FD7\u83B7\u53D6\u66F4\u591A\u4FE1\u606F',\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u62A5\u544A\u6B64\u9519\u8BEF',\n ],\n debugSteps: [\n '\u4F7F\u7528 --debug-verbose \u83B7\u53D6\u8BE6\u7EC6\u65E5\u5FD7',\n '\u68C0\u67E5 error.log \u4E2D\u7684\u5B8C\u6574\u9519\u8BEF\u4FE1\u606F',\n '\u67E5\u770B\u7CFB\u7EDF\u8D44\u6E90\u4F7F\u7528\u60C5\u51B5',\n '\u6536\u96C6\u91CD\u73B0\u6B65\u9AA4\u548C\u73AF\u5883\u4FE1\u606F',\n ],\n relatedLogs: errorStack ? [errorStack] : undefined,\n }\n}\n\nexport function logErrorWithDiagnosis(\n error: any,\n context?: any,\n requestId?: string,\n) {\n if (!isDebugMode()) return\n\n const diagnosis = diagnoseError(error, context)\n const errorMessage = error instanceof Error ? error.message : String(error)\n\n debug.error(\n 'ERROR_OCCURRED',\n {\n error: errorMessage,\n errorType: diagnosis.errorType,\n category: diagnosis.category,\n severity: diagnosis.severity,\n context,\n },\n requestId,\n )\n\n terminalLog('\\n' + chalk.red('\uD83D\uDEA8 ERROR DIAGNOSIS'))\n terminalLog(chalk.gray('\u2501'.repeat(60)))\n\n terminalLog(chalk.red(`\u274C ${diagnosis.errorType}`))\n terminalLog(\n chalk.dim(\n `Category: ${diagnosis.category} | Severity: ${diagnosis.severity}`,\n ),\n )\n terminalLog(`\\n${diagnosis.description}`)\n\n terminalLog(chalk.yellow('\\n\uD83D\uDCA1 Recovery Suggestions:'))\n diagnosis.suggestions.forEach((suggestion, index) => {\n terminalLog(` ${index + 1}. ${suggestion}`)\n })\n\n terminalLog(chalk.cyan('\\n\uD83D\uDD0D Debug Steps:'))\n diagnosis.debugSteps.forEach((step, index) => {\n terminalLog(` ${index + 1}. ${step}`)\n })\n\n if (diagnosis.relatedLogs && diagnosis.relatedLogs.length > 0) {\n terminalLog(chalk.magenta('\\n\uD83D\uDCCB Related Information:'))\n diagnosis.relatedLogs.forEach(log => {\n const truncatedLog =\n log.length > 200 ? log.substring(0, 200) + '...' : log\n terminalLog(chalk.dim(` ${truncatedLog}`))\n })\n }\n\n const debugPath = DEBUG_PATHS.base()\n terminalLog(chalk.gray(`\\n\uD83D\uDCC1 Complete logs: ${debugPath}`))\n terminalLog(chalk.gray('\u2501'.repeat(60)))\n}\n", "import { appendFileSync, existsSync, mkdirSync } from 'fs'\nimport { join } from 'path'\nimport chalk from 'chalk'\n\nimport { SESSION_ID } from '#core/utils/log'\n\nimport { debug, getCurrentRequest } from './logger'\nimport { isDebugMode, isDebugVerboseMode, isVerboseMode } from './mode'\nimport { terminalLog } from './terminal'\nimport { KODE_DIR } from './transports'\n\nexport function logAPIError(context: {\n model: string\n endpoint: string\n status: number\n error: any\n request?: any\n response?: any\n provider?: string\n}) {\n const errorDir = join(KODE_DIR, 'logs', 'error', 'api')\n\n if (!existsSync(errorDir)) {\n try {\n mkdirSync(errorDir, { recursive: true })\n } catch (err) {\n terminalLog('Failed to create error log directory:', err)\n return\n }\n }\n\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\n const sanitizedModel = context.model.replace(/[^a-zA-Z0-9-_]/g, '_')\n const filename = `${sanitizedModel}_${timestamp}.log`\n const filepath = join(errorDir, filename)\n\n const fullLogContent = {\n timestamp: new Date().toISOString(),\n sessionId: SESSION_ID,\n requestId: getCurrentRequest()?.id,\n model: context.model,\n provider: context.provider,\n endpoint: context.endpoint,\n status: context.status,\n error: context.error,\n request: context.request,\n response: context.response,\n environment: {\n nodeVersion: process.version,\n platform: process.platform,\n cwd: process.cwd(),\n },\n }\n\n try {\n appendFileSync(filepath, JSON.stringify(fullLogContent, null, 2) + '\\n')\n appendFileSync(filepath, '='.repeat(80) + '\\n\\n')\n } catch (err) {\n terminalLog('Failed to write API error log:', err)\n }\n\n if (isDebugMode()) {\n debug.error('API_ERROR', {\n model: context.model,\n status: context.status,\n error:\n typeof context.error === 'string'\n ? context.error\n : context.error?.message || 'Unknown error',\n endpoint: context.endpoint,\n logFile: filename,\n })\n }\n\n if (isVerboseMode() || isDebugVerboseMode()) {\n terminalLog()\n terminalLog(chalk.red('\u2501'.repeat(60)))\n terminalLog(chalk.red.bold('\u26A0\uFE0F API Error'))\n terminalLog(chalk.red('\u2501'.repeat(60)))\n\n terminalLog(chalk.white(' Model: ') + chalk.yellow(context.model))\n terminalLog(chalk.white(' Status: ') + chalk.red(context.status))\n\n let errorMessage = 'Unknown error'\n if (typeof context.error === 'string') {\n errorMessage = context.error\n } else if (context.error?.message) {\n errorMessage = context.error.message\n } else if (context.error?.error?.message) {\n errorMessage = context.error.error.message\n }\n\n terminalLog(chalk.white(' Error: ') + chalk.red(errorMessage))\n\n if (context.response) {\n terminalLog()\n terminalLog(chalk.gray(' Response:'))\n const responseStr =\n typeof context.response === 'string'\n ? context.response\n : JSON.stringify(context.response, null, 2)\n\n responseStr.split('\\n').forEach(line => {\n terminalLog(chalk.gray(' ' + line))\n })\n }\n\n terminalLog()\n terminalLog(chalk.dim(` \uD83D\uDCC1 Full log: ${filepath}`))\n terminalLog(chalk.red('\u2501'.repeat(60)))\n terminalLog()\n }\n}\n", "import chalk from 'chalk'\n\nimport { isDebugMode } from './mode'\nimport { terminalLog } from './terminal'\n\ntype RoleColor = 'green' | 'blue' | 'yellow' | 'gray'\n\nconst ROLE_COLORS: Record<RoleColor, (text: string) => string> = {\n green: chalk.green,\n blue: chalk.blue,\n yellow: chalk.yellow,\n gray: chalk.gray,\n}\n\nexport function logLLMInteraction(context: {\n systemPrompt: string\n messages: any[]\n response: any\n usage?: { inputTokens: number; outputTokens: number }\n timing: { start: number; end: number }\n apiFormat?: 'anthropic' | 'openai'\n}) {\n if (!isDebugMode()) return\n\n const duration = context.timing.end - context.timing.start\n\n terminalLog('\\n' + chalk.blue('\uD83E\uDDE0 LLM CALL DEBUG'))\n terminalLog(chalk.gray('\u2501'.repeat(60)))\n\n terminalLog(chalk.yellow('\uD83D\uDCCA Context Overview:'))\n terminalLog(` Messages Count: ${context.messages.length}`)\n terminalLog(` System Prompt Length: ${context.systemPrompt.length} chars`)\n terminalLog(` Duration: ${duration.toFixed(0)}ms`)\n\n if (context.usage) {\n terminalLog(\n ` Token Usage: ${context.usage.inputTokens} \u2192 ${context.usage.outputTokens}`,\n )\n }\n\n const apiLabel = context.apiFormat\n ? ` (${context.apiFormat.toUpperCase()})`\n : ''\n terminalLog(chalk.cyan(`\\n\uD83D\uDCAC Real API Messages${apiLabel} (last 10):`))\n\n const recentMessages = context.messages.slice(-10)\n recentMessages.forEach((msg, index) => {\n const globalIndex = context.messages.length - recentMessages.length + index\n const roleColor: RoleColor =\n msg.role === 'user'\n ? 'green'\n : msg.role === 'assistant'\n ? 'blue'\n : msg.role === 'system'\n ? 'yellow'\n : 'gray'\n\n let content = ''\n let isReminder = false\n\n if (typeof msg.content === 'string') {\n if (msg.content.includes('<system-reminder>')) {\n isReminder = true\n const reminderContent = msg.content\n .replace(/<\\/?system-reminder>/g, '')\n .trim()\n content = `\uD83D\uDD14 ${reminderContent.length > 800 ? reminderContent.substring(0, 800) + '...' : reminderContent}`\n } else {\n const maxLength =\n msg.role === 'user' ? 1000 : msg.role === 'system' ? 1200 : 800\n content =\n msg.content.length > maxLength\n ? msg.content.substring(0, maxLength) + '...'\n : msg.content\n }\n } else if (Array.isArray(msg.content)) {\n const textBlocks = msg.content.filter(\n (block: any) => block.type === 'text',\n )\n const toolBlocks = msg.content.filter(\n (block: any) => block.type === 'tool_use',\n )\n if (textBlocks.length > 0) {\n const text = textBlocks[0].text || ''\n const maxLength = msg.role === 'assistant' ? 1000 : 800\n content =\n text.length > maxLength ? text.substring(0, maxLength) + '...' : text\n }\n if (toolBlocks.length > 0) {\n content += ` [+ ${toolBlocks.length} tool calls]`\n }\n if (textBlocks.length === 0 && toolBlocks.length === 0) {\n content = `[${msg.content.length} blocks: ${msg.content.map((b: any) => b.type || 'unknown').join(', ')}]`\n }\n } else {\n content = '[complex_content]'\n }\n\n if (isReminder) {\n terminalLog(\n ` [${globalIndex}] ${chalk.magenta('\uD83D\uDD14 REMINDER')}: ${chalk.dim(content)}`,\n )\n } else {\n const roleIcon =\n msg.role === 'user'\n ? '\uD83D\uDC64'\n : msg.role === 'assistant'\n ? '\uD83E\uDD16'\n : msg.role === 'system'\n ? '\u2699\uFE0F'\n : '\uD83D\uDCC4'\n const roleLabel = String(msg.role ?? '').toUpperCase()\n terminalLog(\n ` [${globalIndex}] ${ROLE_COLORS[roleColor](roleIcon + ' ' + roleLabel)}: ${content}`,\n )\n }\n\n if (msg.role === 'assistant' && Array.isArray(msg.content)) {\n const toolCalls = msg.content.filter(\n (block: any) => block.type === 'tool_use',\n )\n if (toolCalls.length > 0) {\n terminalLog(\n chalk.cyan(\n ` \uD83D\uDD27 \u2192 Tool calls (${toolCalls.length}): ${toolCalls.map((t: any) => t.name).join(', ')}`,\n ),\n )\n toolCalls.forEach((tool: any, idx: number) => {\n const inputStr = JSON.stringify(tool.input || {})\n const maxLength = 200\n const displayInput =\n inputStr.length > maxLength\n ? inputStr.substring(0, maxLength) + '...'\n : inputStr\n terminalLog(\n chalk.dim(` [${idx}] ${tool.name}: ${displayInput}`),\n )\n })\n }\n }\n if (msg.tool_calls && msg.tool_calls.length > 0) {\n terminalLog(\n chalk.cyan(\n ` \uD83D\uDD27 \u2192 Tool calls (${msg.tool_calls.length}): ${msg.tool_calls.map((t: any) => t.function.name).join(', ')}`,\n ),\n )\n msg.tool_calls.forEach((tool: any, idx: number) => {\n const inputStr = tool.function.arguments || '{}'\n const maxLength = 200\n const displayInput =\n inputStr.length > maxLength\n ? inputStr.substring(0, maxLength) + '...'\n : inputStr\n terminalLog(\n chalk.dim(` [${idx}] ${tool.function.name}: ${displayInput}`),\n )\n })\n }\n })\n\n terminalLog(chalk.magenta('\\n\uD83E\uDD16 LLM Response:'))\n\n let responseContent = ''\n let toolCalls: any[] = []\n\n if (Array.isArray(context.response.content)) {\n const textBlocks = context.response.content.filter(\n (block: any) => block.type === 'text',\n )\n responseContent = textBlocks.length > 0 ? textBlocks[0].text || '' : ''\n toolCalls = context.response.content.filter(\n (block: any) => block.type === 'tool_use',\n )\n } else if (typeof context.response.content === 'string') {\n responseContent = context.response.content\n toolCalls = context.response.tool_calls || context.response.toolCalls || []\n } else if (context.response.message?.content) {\n if (Array.isArray(context.response.message.content)) {\n const textBlocks = context.response.message.content.filter(\n (block: any) => block.type === 'text',\n )\n responseContent = textBlocks.length > 0 ? textBlocks[0].text || '' : ''\n toolCalls = context.response.message.content.filter(\n (block: any) => block.type === 'tool_use',\n )\n } else if (typeof context.response.message.content === 'string') {\n responseContent = context.response.message.content\n }\n } else {\n responseContent = JSON.stringify(\n context.response.content || context.response || '',\n )\n }\n\n const maxResponseLength = 1000\n const displayContent =\n responseContent.length > maxResponseLength\n ? responseContent.substring(0, maxResponseLength) + '...'\n : responseContent\n terminalLog(` Content: ${displayContent}`)\n\n if (toolCalls.length > 0) {\n const toolNames = toolCalls.map(\n (t: any) => t.name || t.function?.name || 'unknown',\n )\n terminalLog(\n chalk.cyan(\n ` \uD83D\uDD27 Tool Calls (${toolCalls.length}): ${toolNames.join(', ')}`,\n ),\n )\n toolCalls.forEach((tool: any, index: number) => {\n const toolName = tool.name || tool.function?.name || 'unknown'\n const toolInput = tool.input || tool.function?.arguments || '{}'\n const inputStr =\n typeof toolInput === 'string' ? toolInput : JSON.stringify(toolInput)\n const maxToolInputLength = 300\n const displayInput =\n inputStr.length > maxToolInputLength\n ? inputStr.substring(0, maxToolInputLength) + '...'\n : inputStr\n terminalLog(chalk.dim(` [${index}] ${toolName}: ${displayInput}`))\n })\n }\n\n terminalLog(\n ` Stop Reason: ${context.response.stop_reason || context.response.finish_reason || 'unknown'}`,\n )\n terminalLog(chalk.gray('\u2501'.repeat(60)))\n}\n\nexport function logSystemPromptConstruction(construction: {\n basePrompt: string\n kodeContext?: string\n reminders: string[]\n finalPrompt: string\n}) {\n if (!isDebugMode()) return\n\n terminalLog('\\n' + chalk.yellow('\uD83D\uDCDD SYSTEM PROMPT CONSTRUCTION'))\n terminalLog(` Base Prompt: ${construction.basePrompt.length} chars`)\n\n if (construction.kodeContext) {\n terminalLog(` + Kode Context: ${construction.kodeContext.length} chars`)\n }\n\n if (construction.reminders.length > 0) {\n terminalLog(\n ` + Dynamic Reminders: ${construction.reminders.length} items`,\n )\n construction.reminders.forEach((reminder, index) => {\n terminalLog(chalk.dim(` [${index}] ${reminder.substring(0, 80)}...`))\n })\n }\n\n terminalLog(` = Final Length: ${construction.finalPrompt.length} chars`)\n}\n\nexport function logContextCompression(compression: {\n beforeMessages: number\n afterMessages: number\n trigger: string\n preservedFiles: string[]\n compressionRatio: number\n}) {\n if (!isDebugMode()) return\n\n terminalLog('\\n' + chalk.red('\uD83D\uDDDC\uFE0F CONTEXT COMPRESSION'))\n terminalLog(` Trigger: ${compression.trigger}`)\n terminalLog(\n ` Messages: ${compression.beforeMessages} \u2192 ${compression.afterMessages}`,\n )\n terminalLog(\n ` Compression Ratio: ${(compression.compressionRatio * 100).toFixed(1)}%`,\n )\n\n if (compression.preservedFiles.length > 0) {\n terminalLog(` Preserved Files: ${compression.preservedFiles.join(', ')}`)\n }\n}\n\nexport function logUserFriendly(type: string, data: any, requestId?: string) {\n if (!isDebugMode()) return\n\n const timestamp = new Date().toLocaleTimeString()\n let message = ''\n let color = chalk.gray\n let icon = '\u2022'\n\n switch (type) {\n case 'SESSION_START':\n icon = '\uD83D\uDE80'\n color = chalk.green\n message = `Session started with ${data.model || 'default model'}`\n break\n case 'QUERY_START':\n icon = '\uD83D\uDCAD'\n color = chalk.blue\n message = `Processing query: \"${data.query?.substring(0, 50)}${data.query?.length > 50 ? '...' : ''}\"`\n break\n case 'QUERY_PROGRESS':\n icon = '\u23F3'\n color = chalk.yellow\n message = `${data.phase} (${data.elapsed}ms)`\n break\n case 'QUERY_COMPLETE':\n icon = '\u2705'\n color = chalk.green\n message = `Query completed in ${data.duration}ms - Cost: $${data.cost} - ${data.tokens} tokens`\n break\n case 'TOOL_EXECUTION':\n icon = '\uD83D\uDD27'\n color = chalk.cyan\n message = `${data.toolName}: ${data.action} ${data.target ? '\u2192 ' + data.target : ''}`\n break\n case 'ERROR_OCCURRED':\n icon = '\u274C'\n color = chalk.red\n message = `${data.error} ${data.context ? '(' + data.context + ')' : ''}`\n break\n case 'PERFORMANCE_SUMMARY':\n icon = '\uD83D\uDCCA'\n color = chalk.magenta\n message = `Session: ${data.queries} queries, $${data.totalCost}, ${data.avgResponseTime}ms avg`\n break\n default:\n message = JSON.stringify(data)\n }\n\n const reqId = requestId ? chalk.dim(`[${requestId.slice(0, 8)}]`) : ''\n terminalLog(`${color(`[${timestamp}]`)} ${icon} ${color(message)} ${reqId}`)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["chalk", "chalk", "chalk", "chalk", "chalk", "appendFileSync", "existsSync", "mkdirSync", "join", "chalk", "join", "existsSync", "mkdirSync", "appendFileSync", "chalk", "chalk", "chalk", "toolCalls", "chalk"]
7
+ }