@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": ["../../apps/server/src/server.ts", "../../apps/server/src/server/serveNode.ts", "../../apps/server/src/server/auth.ts", "../../apps/server/src/server/webui.ts", "../../apps/server/src/handlers/workspaces.handler.ts", "../../apps/server/src/routes/index.ts", "../../apps/server/src/handlers/chat.handler.ts", "../../apps/server/src/handlers/session.handler.ts", "../../apps/server/src/ws/events.ts", "../../apps/server/src/routes/chat.ts", "../../apps/server/src/routes/session.ts", "../../apps/server/src/ws/connection.ts"],
4
+ "sourcesContent": ["import { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport { setCwd, setOriginalCwd } from '@kode/core/utils/state'\nimport { grantReadPermissionForOriginalDir } from '@kode/core/utils/permissions/filesystem'\nimport { getTools } from '@kode/tools'\n\nimport { serveNode } from './server/serveNode'\nimport { createTokenChecker } from './server/auth'\nimport { detectWebuiDir } from './server/webui'\nimport { createWorkspaceLister } from './handlers/workspaces.handler'\nimport { createRoutes } from './routes'\nimport { createWebSocketHandlers } from './ws/connection'\nimport type { DaemonSession } from './ws/types'\n\nexport type KodeDaemon = {\n url: string\n host: string\n port: number\n token: string\n stop: () => void\n}\n\nexport async function startKodeDaemon(args: {\n host?: string\n port?: number\n cwd: string\n token?: string\n webuiDir?: string\n /**\n * Test-only mode: never calls an LLM, replies by echoing user prompt.\n */\n echo?: boolean\n}): Promise<KodeDaemon> {\n const host = args.host ?? '127.0.0.1'\n const port = args.port ?? 0\n const token = args.token ?? crypto.randomUUID().replace(/-/g, '').slice(0, 9)\n const cwd = resolve(args.cwd)\n const echo = args.echo === true || process.env.KODE_DAEMON_ECHO === '1'\n\n const moduleDir = dirname(fileURLToPath(import.meta.url))\n const webuiDir =\n typeof args.webuiDir === 'string'\n ? args.webuiDir\n : detectWebuiDir(moduleDir)\n const webuiRoot = webuiDir ? resolve(webuiDir) : null\n\n setOriginalCwd(cwd)\n await setCwd(cwd)\n grantReadPermissionForOriginalDir()\n\n const tools = await getTools()\n const toolNames = tools.map(t => t.name)\n const commands: unknown[] = []\n const slashCommands: string[] = []\n\n const sessions = new Map<string, DaemonSession>()\n const checkToken = createTokenChecker({ token })\n const workspaces = createWorkspaceLister({ cwd })\n\n const routes = createRoutes({\n webuiRoot,\n checkToken,\n listWorkspaces: workspaces.listWorkspaces,\n sessions,\n cwd,\n echo,\n commands,\n tools,\n toolNames,\n slashCommands,\n })\n\n const websocket = createWebSocketHandlers({\n sessions,\n toolNames,\n slashCommands,\n commands,\n tools,\n echo,\n })\n\n const server = await serveNode<{ session: DaemonSession }>({\n hostname: host,\n port,\n fetch: routes.fetch,\n websocket,\n })\n\n const displayHost = host === '127.0.0.1' ? 'localhost' : host\n\n return {\n url: `http://${displayHost}:${server.port}?token=${encodeURIComponent(token)}`,\n host,\n port: server.port,\n token,\n stop: () => {\n try {\n server.stop(true)\n } catch {}\n },\n }\n}\n", "import {\n createServer,\n type IncomingMessage,\n type ServerResponse,\n} from 'node:http'\nimport type { Duplex } from 'node:stream'\nimport { WebSocketServer, type RawData, type WebSocket } from 'ws'\n\ntype ServeNodeFetchServer<TData> = {\n upgrade: (req: Request, options: { data: TData }) => boolean\n}\n\nexport type ServeNodeOptions<TData> = {\n hostname: string\n port: number\n fetch: (\n req: Request,\n server: ServeNodeFetchServer<TData>,\n ) => Response | Promise<Response | undefined> | undefined\n websocket: {\n open: (ws: WebSocket & { data: TData }) => void\n message: (\n ws: WebSocket & { data: TData },\n message: RawData,\n ) => void | Promise<void>\n close: (ws: WebSocket & { data: TData }) => void\n }\n}\n\nexport type ServeNodeResult = {\n port: number\n stop: (force?: boolean) => void\n}\n\nasync function readRequestBody(\n req: IncomingMessage,\n): Promise<ArrayBuffer | undefined> {\n const method = req.method ?? 'GET'\n if (method === 'GET' || method === 'HEAD') return undefined\n\n const chunks: Buffer[] = []\n for await (const chunk of req) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n if (chunks.length === 0) return undefined\n const buf = Buffer.concat(chunks)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n}\n\nasync function toFetchRequest(\n req: IncomingMessage,\n hostname: string,\n): Promise<Request> {\n const base = `http://${req.headers.host ?? hostname}`\n const url = new URL(req.url ?? '/', base)\n const headers = new Headers()\n for (const [key, value] of Object.entries(req.headers)) {\n if (typeof value === 'string') headers.set(key, value)\n else if (Array.isArray(value)) headers.set(key, value.join(', '))\n }\n const body = await readRequestBody(req)\n return new Request(url.toString(), {\n method: req.method ?? 'GET',\n headers,\n ...(body ? { body } : {}),\n })\n}\n\nasync function sendFetchResponse(\n res: ServerResponse,\n response: Response,\n): Promise<void> {\n res.statusCode = response.status\n for (const [key, value] of response.headers.entries()) {\n try {\n res.setHeader(key, value)\n } catch {}\n }\n\n if (!response.body || res.req?.method === 'HEAD') {\n res.end()\n return\n }\n\n const buf = Buffer.from(await response.arrayBuffer())\n res.setHeader('content-length', String(buf.length))\n res.end(buf)\n}\n\nasync function sendFetchResponseToSocket(\n socket: Duplex,\n response: Response,\n): Promise<void> {\n const headers: string[] = []\n for (const [key, value] of response.headers.entries()) {\n headers.push(`${key}: ${value}`)\n }\n if (!response.headers.has('connection')) headers.push('connection: close')\n\n const body = response.body\n ? Buffer.from(await response.arrayBuffer())\n : Buffer.alloc(0)\n headers.push(`content-length: ${body.length}`)\n\n const statusText = response.statusText || 'OK'\n socket.write(`HTTP/1.1 ${response.status} ${statusText}\\r\\n`)\n socket.write(headers.join('\\r\\n'))\n socket.write('\\r\\n\\r\\n')\n if (body.length) socket.write(body)\n socket.destroy()\n}\n\nexport async function serveNode<TData>(\n options: ServeNodeOptions<TData>,\n): Promise<ServeNodeResult> {\n const wss = new WebSocketServer({ noServer: true })\n\n const httpServer = createServer(async (req, res) => {\n const request = await toFetchRequest(req, options.hostname)\n const response = await options.fetch(request, { upgrade: () => false })\n if (!response) {\n res.statusCode = 500\n res.end('No response')\n return\n }\n await sendFetchResponse(res, response)\n })\n\n httpServer.on('upgrade', async (req, socket, head) => {\n const request = await toFetchRequest(req, options.hostname)\n let upgraded = false\n\n const response = await options.fetch(request, {\n upgrade: (_request, upgradeOptions) => {\n if (upgraded) return true\n upgraded = true\n\n try {\n wss.handleUpgrade(req, socket, head, ws => {\n const wsWithData = Object.assign(ws, { data: upgradeOptions.data })\n\n try {\n options.websocket.open(wsWithData)\n } catch {}\n\n ws.on('message', message => {\n Promise.resolve(\n options.websocket.message(wsWithData, message),\n ).catch(() => {})\n })\n ws.on('close', () => {\n try {\n options.websocket.close(wsWithData)\n } catch {}\n })\n })\n return true\n } catch {\n return false\n }\n },\n })\n\n if (upgraded) return\n if (response) {\n await sendFetchResponseToSocket(socket, response)\n return\n }\n socket.destroy()\n })\n\n await new Promise<void>((resolve, reject) => {\n const onError = (err: Error) => {\n reject(err)\n }\n httpServer.once('error', onError)\n httpServer.listen(options.port, options.hostname, () => {\n httpServer.removeListener('error', onError)\n resolve()\n })\n })\n\n const address = httpServer.address()\n const actualPort =\n typeof address === 'object' && address && typeof address.port === 'number'\n ? address.port\n : options.port\n\n const stop = () => {\n try {\n wss.clients.forEach(ws => {\n try {\n ws.close()\n } catch {}\n })\n } catch {}\n try {\n wss.close()\n } catch {}\n try {\n httpServer.close()\n } catch {}\n }\n\n return { port: actualPort, stop }\n}\n", "import { timingSafeEqual } from 'node:crypto'\n\nfunction timingSafeEquals(a: string, b: string): boolean {\n try {\n const aBuf = Buffer.from(a, 'utf8')\n const bBuf = Buffer.from(b, 'utf8')\n if (aBuf.length !== bBuf.length) return false\n return timingSafeEqual(aBuf, bBuf)\n } catch {\n return false\n }\n}\n\nfunction getCookieValue(\n cookieHeader: string | null,\n name: string,\n): string | null {\n if (!cookieHeader) return null\n const parts = cookieHeader.split(';')\n for (const part of parts) {\n const [k, ...rest] = part.trim().split('=')\n if (!k) continue\n if (k === name) {\n const value = rest.join('=')\n if (!value) return ''\n try {\n return decodeURIComponent(value)\n } catch {\n return null\n }\n }\n }\n return null\n}\n\nexport function createTokenChecker(args: {\n token: string\n}): (req: Request) => boolean {\n const token = args.token\n\n return (req: Request): boolean => {\n const url = new URL(req.url)\n const qp = url.searchParams.get('token')\n if (qp && timingSafeEquals(qp, token)) return true\n\n const header = req.headers.get('authorization')\n if (header && header.startsWith('Bearer ')) {\n const h = header.slice('Bearer '.length).trim()\n if (h && timingSafeEquals(h, token)) return true\n }\n\n const cookieToken = getCookieValue(req.headers.get('cookie'), 'kode_token')\n if (cookieToken && timingSafeEquals(cookieToken, token)) return true\n\n return false\n }\n}\n", "import { existsSync, readFileSync } from 'node:fs'\nimport { resolve, sep } from 'node:path'\n\nexport function detectWebuiDir(moduleDir: string): string | null {\n const candidates: string[] = [\n // Packaged: dist/* \u2192 dist/webui (compiled chunks may live in dist/, dist/entrypoints/, dist/chunks/, etc.)\n resolve(moduleDir, 'webui'),\n resolve(moduleDir, '..', 'webui'),\n resolve(moduleDir, '..', '..', 'webui'),\n ]\n\n // Dev/workspace: find ui/web (and/or dist/webui) from common repo layouts.\n for (let up = 0; up <= 6; up++) {\n const parents = Array(up).fill('..')\n candidates.push(resolve(moduleDir, ...parents, 'apps', 'server', 'static'))\n candidates.push(resolve(moduleDir, ...parents, 'ui', 'web', 'dist'))\n candidates.push(resolve(moduleDir, ...parents, 'ui', 'web'))\n candidates.push(resolve(moduleDir, ...parents, 'dist', 'webui'))\n }\n\n for (const candidate of candidates) {\n try {\n if (existsSync(resolve(candidate, 'index.html'))) return candidate\n } catch {}\n }\n return null\n}\n\nfunction contentTypeForPath(filePath: string): string {\n const ext = filePath.split('.').pop()?.toLowerCase() ?? ''\n return ext === 'html'\n ? 'text/html; charset=utf-8'\n : ext === 'js'\n ? 'text/javascript; charset=utf-8'\n : ext === 'css'\n ? 'text/css; charset=utf-8'\n : ext === 'svg'\n ? 'image/svg+xml'\n : ext === 'json'\n ? 'application/json; charset=utf-8'\n : ext === 'png'\n ? 'image/png'\n : ext === 'jpg' || ext === 'jpeg'\n ? 'image/jpeg'\n : 'application/octet-stream'\n}\n\nexport function maybeServeWebui(args: {\n webuiRoot: string\n url: URL\n}): Response | null {\n const webuiRoot = resolve(args.webuiRoot)\n const pathname = args.url.pathname\n const requested = pathname === '/' ? '/index.html' : pathname\n const rel = requested.startsWith('/') ? requested.slice(1) : requested\n const filePath = resolve(webuiRoot, rel)\n\n if (!(filePath === webuiRoot || filePath.startsWith(webuiRoot + sep))) {\n return null\n }\n if (!existsSync(filePath)) return null\n\n const file = readFileSync(filePath)\n return new Response(file, {\n headers: {\n 'content-type': contentTypeForPath(filePath),\n 'cache-control': 'no-cache',\n },\n })\n}\n", "import { spawn } from 'node:child_process'\nimport { basename, resolve } from 'node:path'\n\nexport type WorkspaceInfo = {\n id: string\n path: string\n title: string\n branch: string | null\n isCurrent: boolean\n}\n\ntype ExecResult = {\n stdout: string\n stderr: string\n code: number\n interrupted: boolean\n}\n\nfunction parseWorktreePorcelain(\n stdout: string,\n): Array<{ path: string; branch: string | null }> {\n const entries: Array<{ path: string; branch: string | null }> = []\n let current: { path: string; branch: string | null } | null = null\n\n const lines = stdout.split(/\\r?\\n/)\n for (const rawLine of lines) {\n const line = rawLine.trim()\n if (!line) {\n if (current?.path) entries.push(current)\n current = null\n continue\n }\n if (line.startsWith('worktree ')) {\n if (current?.path) entries.push(current)\n current = { path: line.slice('worktree '.length).trim(), branch: null }\n continue\n }\n if (!current) continue\n if (line.startsWith('branch ')) {\n const ref = line.slice('branch '.length).trim()\n const branch = ref.startsWith('refs/heads/')\n ? ref.slice('refs/heads/'.length)\n : ref\n current.branch = branch || null\n }\n }\n if (current?.path) entries.push(current)\n return entries\n}\n\nasync function execArgs(\n cmd: string[],\n options: {\n cwd: string\n abortSignal?: AbortSignal\n timeoutMs?: number\n env?: Record<string, string | undefined>\n },\n): Promise<ExecResult> {\n const timeoutMs = options.timeoutMs ?? 120_000\n const abortController = new AbortController()\n let wasAborted = false\n let proc: ReturnType<typeof spawn> | null = null\n\n const onAbort = () => {\n wasAborted = true\n try {\n abortController.abort()\n } catch {}\n try {\n proc?.kill()\n } catch {}\n }\n\n if (options.abortSignal) {\n options.abortSignal.addEventListener('abort', onAbort, { once: true })\n }\n\n try {\n proc = spawn(cmd[0] ?? '', cmd.slice(1), {\n cwd: options.cwd,\n env: { ...process.env, ...(options.env ?? {}) },\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n let stdout = ''\n let stderr = ''\n\n proc.stdout?.setEncoding('utf8')\n proc.stdout?.on('data', chunk => {\n stdout += chunk\n })\n proc.stderr?.setEncoding('utf8')\n proc.stderr?.on('data', chunk => {\n stderr += chunk\n })\n\n const exitPromise = new Promise<\n { kind: 'exit'; code: number | null } | { kind: 'error'; error: Error }\n >(resolve => {\n proc?.once('exit', code => resolve({ kind: 'exit', code }))\n proc?.once('error', error => resolve({ kind: 'error', error }))\n })\n\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null\n const timeoutPromise = new Promise<'timeout'>(resolveTimeout => {\n timeoutHandle = setTimeout(() => resolveTimeout('timeout'), timeoutMs)\n })\n\n const outcome = await Promise.race([\n exitPromise.then(() => 'completed' as const),\n timeoutPromise,\n ])\n\n if (timeoutHandle) clearTimeout(timeoutHandle)\n\n if (outcome === 'timeout') {\n onAbort()\n try {\n await exitPromise\n } catch {}\n\n return {\n stdout: '',\n stderr: 'Command timed out',\n code: 143,\n interrupted: true,\n }\n }\n\n const exitOutcome = await exitPromise\n if (exitOutcome.kind === 'error') {\n stderr = [stderr, exitOutcome.error.message].filter(Boolean).join('\\n')\n }\n\n const interrupted =\n wasAborted ||\n options.abortSignal?.aborted === true ||\n abortController.signal.aborted === true\n\n const code =\n exitOutcome.kind === 'exit' && typeof exitOutcome.code === 'number'\n ? exitOutcome.code\n : exitOutcome.kind === 'error'\n ? 2\n : interrupted\n ? 143\n : 0\n\n return { stdout, stderr, code, interrupted }\n } finally {\n if (options.abortSignal) {\n options.abortSignal.removeEventListener('abort', onAbort)\n }\n }\n}\n\nexport function createWorkspaceLister(args: {\n cwd: string\n cacheTtlMs?: number\n}): {\n listWorkspaces: () => Promise<{\n workspaces: WorkspaceInfo[]\n currentId: string\n }>\n} {\n const workspaceCacheTtlMs = args.cacheTtlMs ?? 2_000\n let workspaceCache: {\n at: number\n workspaces: WorkspaceInfo[]\n currentId: string\n } | null = null\n\n const listWorkspaces = async (): Promise<{\n workspaces: WorkspaceInfo[]\n currentId: string\n }> => {\n const now = Date.now()\n if (workspaceCache && now - workspaceCache.at < workspaceCacheTtlMs) {\n return {\n workspaces: workspaceCache.workspaces,\n currentId: workspaceCache.currentId,\n }\n }\n\n const absCwd = resolve(args.cwd)\n const repoRootRes = await execArgs(\n ['git', 'rev-parse', '--show-toplevel'],\n {\n cwd: absCwd,\n timeoutMs: 2000,\n },\n )\n const repoRoot = repoRootRes.code === 0 ? repoRootRes.stdout.trim() : ''\n\n if (!repoRoot) {\n const only: WorkspaceInfo = {\n id: absCwd,\n path: absCwd,\n title: basename(absCwd) || absCwd,\n branch: null,\n isCurrent: true,\n }\n workspaceCache = { at: now, workspaces: [only], currentId: only.id }\n return { workspaces: [only], currentId: only.id }\n }\n\n const porcelainRes = await execArgs(\n ['git', 'worktree', 'list', '--porcelain'],\n { cwd: repoRoot, timeoutMs: 3000 },\n )\n const worktreeEntries =\n porcelainRes.code === 0 ? parseWorktreePorcelain(porcelainRes.stdout) : []\n\n const normalized = worktreeEntries\n .map(e => ({\n path: resolve(e.path),\n branch: e.branch,\n }))\n .filter(e => e.path)\n\n const currentRoot = resolve(repoRoot)\n const unique = new Map<string, WorkspaceInfo>()\n for (const e of normalized) {\n unique.set(e.path, {\n id: e.path,\n path: e.path,\n title: e.branch || basename(e.path) || e.path,\n branch: e.branch,\n isCurrent: e.path === currentRoot,\n })\n }\n\n if (!unique.has(currentRoot)) {\n unique.set(currentRoot, {\n id: currentRoot,\n path: currentRoot,\n title: basename(currentRoot) || currentRoot,\n branch: null,\n isCurrent: true,\n })\n }\n\n const workspaces = Array.from(unique.values()).sort((a, b) => {\n if (a.isCurrent !== b.isCurrent) return a.isCurrent ? -1 : 1\n return a.title.localeCompare(b.title)\n })\n const currentId =\n workspaces.find(w => w.isCurrent)?.id ?? workspaces[0]?.id ?? currentRoot\n\n workspaceCache = { at: now, workspaces, currentId }\n return { workspaces, currentId }\n }\n\n return { listWorkspaces }\n}\n", "import { basename, resolve } from 'node:path'\n\nimport { loadToolPermissionContextFromDisk } from '@kode/core/utils/permissions/toolPermissionSettings'\nimport type { Tool } from '@kode/core/tooling/Tool'\n\nimport { maybeServeWebui } from '../server/webui'\nimport { routeChat } from './chat'\nimport { routeSession } from './session'\nimport type { WorkspaceInfo } from '../handlers/workspaces.handler'\nimport type { DaemonSession } from '../ws/types'\n\ntype UpgradeServer<TData> = {\n upgrade: (req: Request, options: { data: TData }) => boolean\n}\n\nexport function createRoutes(args: {\n webuiRoot: string | null\n checkToken: (req: Request) => boolean\n listWorkspaces: () => Promise<{\n workspaces: WorkspaceInfo[]\n currentId: string\n }>\n sessions: Map<string, DaemonSession>\n cwd: string\n echo: boolean\n commands: unknown[]\n tools: Tool[]\n toolNames: string[]\n slashCommands: string[]\n}): {\n fetch: (\n req: Request,\n server: UpgradeServer<{ session: DaemonSession }>,\n ) => Promise<Response | undefined>\n} {\n return {\n async fetch(req, server) {\n const url = new URL(req.url)\n\n if (args.webuiRoot) {\n const response = maybeServeWebui({ webuiRoot: args.webuiRoot, url })\n if (response) return response\n }\n\n if (url.pathname === '/health') {\n return Response.json({\n ok: true,\n version: process.env.npm_package_version ?? null,\n pid: process.pid,\n })\n }\n\n if (url.pathname === '/api/health') {\n if (!args.checkToken(req))\n return new Response('Unauthorized', { status: 401 })\n return Response.json({ ok: true })\n }\n\n if (url.pathname.startsWith('/api/')) {\n if (!args.checkToken(req))\n return new Response('Unauthorized', { status: 401 })\n }\n\n if (url.pathname === '/api/workspaces') {\n try {\n const { workspaces, currentId } = await args.listWorkspaces()\n return Response.json({ workspaces, currentId })\n } catch (err) {\n const only = resolve(args.cwd)\n return Response.json(\n {\n workspaces: [\n {\n id: only,\n path: only,\n title: basename(only) || only,\n branch: null,\n isCurrent: true,\n },\n ],\n currentId: only,\n error: err instanceof Error ? err.message : String(err),\n },\n { status: 200 },\n )\n }\n }\n\n const chatResponse = await routeChat(req, {\n sessions: args.sessions,\n echo: args.echo,\n commands: args.commands,\n tools: args.tools,\n toolNames: args.toolNames,\n slashCommands: args.slashCommands,\n })\n if (chatResponse) return chatResponse\n\n const sessionResponse = await routeSession(req, { cwd: args.cwd })\n if (sessionResponse) return sessionResponse\n\n if (url.pathname === '/ws') {\n if (!args.checkToken(req))\n return new Response('Unauthorized', { status: 401 })\n const { workspaces, currentId } = await args.listWorkspaces()\n const requested = url.searchParams.get('workspace')\n const selected =\n requested && workspaces.some(w => w.id === requested)\n ? requested\n : currentId\n const selectedCwd =\n workspaces.find(w => w.id === selected)?.path ?? resolve(args.cwd)\n\n const sessionId = crypto.randomUUID()\n const session: DaemonSession = {\n sessionId,\n cwd: selectedCwd,\n ws: null,\n messages: [],\n readFileTimestamps: {},\n responseState: {},\n toolPermissionContext: loadToolPermissionContextFromDisk({\n projectDir: selectedCwd,\n includeKodeProjectConfig: true,\n isBypassPermissionsModeAvailable: true,\n }),\n activeAbortController: null,\n inflightPermissionRequests: new Map(),\n }\n args.sessions.set(sessionId, session)\n\n const ok = server.upgrade(req, { data: { session } })\n return ok ? undefined : new Response('Upgrade failed', { status: 400 })\n }\n\n return new Response('Not found', { status: 404 })\n },\n }\n}\n", "import type { Message as ApiMessage } from '@anthropic-ai/sdk/resources/index.mjs'\n\nimport {\n createUserMessage,\n createAssistantMessage,\n REJECT_MESSAGE,\n REJECT_MESSAGE_WITH_FEEDBACK_PREFIX,\n} from '@kode/core/utils/messages'\nimport {\n buildSystemPromptForSession,\n getSessionContext,\n runTurn,\n} from '@kode/core/engine'\nimport type { AssistantMessage, Message } from '@kode/core/query'\nimport type { CanUseToolFn } from '@kode/core/permissions/canUseTool'\nimport { hasPermissionsToUseTool, savePermission } from '@kode/core/permissions'\nimport { getTotalCost } from '@kode/core/cost-tracker'\nimport {\n kodeMessageToSdkMessage,\n makeSdkResultMessage,\n} from '#protocol/utils/kodeAgentStreamJson'\nimport { setKodeAgentSessionId } from '#protocol/utils/kodeAgentSessionId'\nimport { setCwd, setOriginalCwd } from '@kode/core/utils/state'\nimport { grantReadPermissionForOriginalDir } from '@kode/core/utils/permissions/filesystem'\nimport type { Tool, ToolUseContext } from '@kode/core/tooling/Tool'\nimport type { InflightPermissionDecision } from '../ws/types'\nimport type { DaemonSession } from '../ws/types'\n\ntype WsSend = (payload: unknown) => void\n\ntype PermissionRequest = {\n type: 'permission_request'\n request_id: string\n tool_name: string\n tool_description: string\n input: Record<string, unknown>\n}\n\nfunction extractFirstAssistantText(message: ApiMessage): string | null {\n const blocks = Array.isArray(message.content) ? message.content : []\n for (const block of blocks) {\n if (block && typeof block === 'object' && block.type === 'text') {\n const maybeText = (block as { text?: unknown }).text\n if (typeof maybeText === 'string') return maybeText\n }\n }\n return null\n}\n\nasync function getToolDescription(\n tool: Tool,\n input: Record<string, unknown>,\n): Promise<string> {\n if (typeof tool.description === 'function') {\n return await tool.description(input as never)\n }\n if (typeof tool.description === 'string') return tool.description\n return `Tool: ${tool.name}`\n}\n\nexport async function handleChatPrompt(args: {\n wsSend: WsSend\n session: DaemonSession\n prompt: string\n echo: boolean\n commands: unknown[]\n tools: Tool[]\n toolNames: string[]\n slashCommands: string[]\n}): Promise<void> {\n const {\n wsSend,\n session,\n prompt,\n echo,\n commands,\n tools,\n toolNames,\n slashCommands,\n } = args\n\n setOriginalCwd(session.cwd)\n await setCwd(session.cwd)\n grantReadPermissionForOriginalDir()\n\n setKodeAgentSessionId(session.sessionId)\n\n const abortController = new AbortController()\n session.activeAbortController = abortController\n\n const startedAt = Date.now()\n const costBefore = getTotalCost()\n\n const userMsg = createUserMessage(prompt)\n session.messages.push(userMsg)\n const sdkUser = kodeMessageToSdkMessage(userMsg, session.sessionId)\n if (sdkUser) wsSend(sdkUser)\n\n if (echo) {\n const assistant = createAssistantMessage(prompt)\n session.messages.push(assistant)\n const sdkAssistant = kodeMessageToSdkMessage(assistant, session.sessionId)\n if (sdkAssistant) wsSend(sdkAssistant)\n\n wsSend(\n makeSdkResultMessage({\n sessionId: session.sessionId,\n result: prompt,\n numTurns: 1,\n usage: undefined,\n totalCostUsd: 0,\n durationMs: Date.now() - startedAt,\n durationApiMs: 0,\n isError: false,\n }),\n )\n\n session.activeAbortController = null\n return\n }\n\n const requestToolPermission = async (params: {\n tool: Tool\n input: Record<string, unknown>\n toolUseContext: ToolUseContext\n assistantMessage: AssistantMessage\n }): Promise<\n | { result: true }\n | {\n result: false\n message: string\n shouldPromptUser?: boolean\n }\n > => {\n const base = await hasPermissionsToUseTool(\n params.tool,\n params.input,\n params.toolUseContext,\n params.assistantMessage,\n )\n if (base.result === true) return { result: true }\n\n if (base.shouldPromptUser === false) {\n return {\n result: false,\n message: base.message,\n shouldPromptUser: false,\n }\n }\n\n if (params.toolUseContext.abortController.signal.aborted) {\n return {\n result: false,\n message: REJECT_MESSAGE,\n shouldPromptUser: false,\n }\n }\n\n const requestId =\n typeof params.toolUseContext.toolUseId === 'string' &&\n params.toolUseContext.toolUseId\n ? params.toolUseContext.toolUseId\n : crypto.randomUUID()\n\n const toolDescription = await getToolDescription(params.tool, params.input)\n\n const request: PermissionRequest = {\n type: 'permission_request',\n request_id: requestId,\n tool_name: params.tool.name,\n tool_description: toolDescription,\n input: params.input,\n }\n wsSend(request)\n\n const decision = await new Promise<InflightPermissionDecision>(resolve => {\n session.inflightPermissionRequests.set(requestId, resolve)\n })\n\n if (params.toolUseContext.abortController.signal.aborted) {\n return {\n result: false,\n message: REJECT_MESSAGE,\n shouldPromptUser: false,\n }\n }\n\n if (decision.updatedInput && typeof decision.updatedInput === 'object') {\n Object.assign(params.input, decision.updatedInput)\n }\n\n if (decision.decision === 'deny') {\n try {\n params.toolUseContext.abortController.abort()\n } catch {}\n const message =\n decision.rejectionMessage && decision.rejectionMessage.trim()\n ? `${REJECT_MESSAGE_WITH_FEEDBACK_PREFIX}${decision.rejectionMessage.trim()}`\n : REJECT_MESSAGE\n return { result: false, message, shouldPromptUser: false }\n }\n\n if (decision.decision === 'allow_always') {\n try {\n await savePermission(\n params.tool,\n params.input,\n null,\n params.toolUseContext,\n )\n } catch {}\n }\n\n return { result: true }\n }\n\n const canUseTool: CanUseToolFn = async (\n tool,\n input,\n toolUseContext,\n assistantMessage,\n ) => {\n return await requestToolPermission({\n tool,\n input,\n toolUseContext,\n assistantMessage,\n })\n }\n\n const [context, systemPrompt] = await Promise.all([\n getSessionContext(),\n buildSystemPromptForSession({ disableSlashCommands: false }),\n ])\n\n const options = {\n commands,\n tools,\n verbose: true,\n safeMode: false,\n forkNumber: 0,\n messageLogName: session.sessionId,\n maxThinkingTokens: 0,\n persistSession: true,\n toolPermissionContext: session.toolPermissionContext,\n mcpClients: [],\n shouldAvoidPermissionPrompts: false,\n }\n\n let lastAssistant: AssistantMessage | null = null\n let queryError: unknown = null\n\n try {\n const baseMessages: Message[] = [...session.messages]\n\n for await (const m of runTurn({\n messages: baseMessages,\n systemPrompt,\n context,\n canUseTool,\n toolUseContext: {\n options,\n abortController,\n messageId: undefined,\n readFileTimestamps: session.readFileTimestamps,\n setToolJSX: () => {},\n agentId: 'main',\n responseState: session.responseState,\n },\n })) {\n if (abortController.signal.aborted) break\n\n if (m.type === 'assistant') lastAssistant = m\n if (m.type !== 'progress') {\n session.messages.push(m)\n }\n const sdk = kodeMessageToSdkMessage(m, session.sessionId)\n if (sdk) wsSend(sdk)\n }\n } catch (err) {\n queryError = err\n try {\n abortController.abort()\n } catch {}\n } finally {\n session.activeAbortController = null\n }\n\n const resultFromAssistant = lastAssistant\n ? extractFirstAssistantText(lastAssistant.message)\n : null\n const resultText =\n typeof resultFromAssistant === 'string'\n ? resultFromAssistant\n : queryError instanceof Error\n ? queryError.message\n : queryError\n ? String(queryError)\n : ''\n\n const usage = lastAssistant?.message?.usage\n const durationMs = Date.now() - startedAt\n const totalCostUsd = Math.max(0, getTotalCost() - costBefore)\n const isError = Boolean(queryError) || abortController.signal.aborted\n\n wsSend(\n makeSdkResultMessage({\n sessionId: session.sessionId,\n result: String(resultText),\n numTurns: 1,\n usage,\n totalCostUsd,\n durationMs,\n durationApiMs: 0,\n isError,\n }),\n )\n}\n", "import type { Session } from '@kode/protocol'\n\nimport { loadKodeAgentSessionMessages } from '#protocol/utils/kodeAgentSessionLoad'\nimport { listKodeAgentSessions } from '#protocol/utils/kodeAgentSessionResume'\nimport type { Message } from '#protocol/utils/kodeAgentSessionLoad'\n\ntype WsLike = { send: (data: string) => void }\n\nexport function loadSessionMessages(args: {\n cwd: string\n sessionId: string\n}): Message[] {\n return loadKodeAgentSessionMessages(args)\n}\n\nexport function buildSessionList(args: { cwd: string }): Session[] {\n return listKodeAgentSessions({ cwd: args.cwd }).map(s => ({\n sessionId: s.sessionId,\n slug: s.slug,\n customTitle: s.customTitle,\n tag: s.tag,\n summary: s.summary,\n cwd: s.cwd,\n createdAt: s.createdAt ? s.createdAt.toISOString() : null,\n modifiedAt: s.modifiedAt ? s.modifiedAt.toISOString() : null,\n }))\n}\n\nexport function sendSessionList(\n ws: WsLike,\n args: { cwd: string; onError?: (message: string) => void },\n): void {\n try {\n const sessions = buildSessionList({ cwd: args.cwd })\n ws.send(JSON.stringify({ type: 'session_list', sessions }))\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n args.onError?.(message)\n }\n}\n", "import type { RawData } from 'ws'\n\nexport type ClientWsMessage =\n | { type: 'cancel' }\n | {\n type: 'permission_response'\n requestId: string\n decision: 'allow_once' | 'allow_always' | 'deny'\n updatedInput: Record<string, unknown> | null\n rejectionMessage: string | null\n }\n | { type: 'list_sessions' }\n | { type: 'new_session' }\n | { type: 'resume'; sessionId: string }\n | { type: 'prompt'; prompt: string }\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error'\n\nexport type LogMessage = {\n type: 'log'\n log: { level: LogLevel; message: string }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction toText(message: RawData): string {\n if (typeof message === 'string') return message\n if (Array.isArray(message)) {\n return message\n .map(part => (typeof part === 'string' ? part : part.toString()))\n .join('')\n }\n return message.toString()\n}\n\nexport function parseClientWsMessage(message: RawData):\n | {\n ok: true\n value: ClientWsMessage\n }\n | { ok: false; error: string } {\n const text = toText(message)\n let payload: unknown\n try {\n payload = JSON.parse(text)\n } catch {\n return { ok: false, error: 'Invalid JSON message' }\n }\n\n if (!isRecord(payload)) return { ok: false, error: 'Invalid payload' }\n\n const type = payload.type\n if (type === 'cancel') return { ok: true, value: { type: 'cancel' } }\n if (type === 'list_sessions')\n return { ok: true, value: { type: 'list_sessions' } }\n if (type === 'new_session')\n return { ok: true, value: { type: 'new_session' } }\n\n if (type === 'resume') {\n const sessionId =\n typeof payload.session_id === 'string' ? payload.session_id.trim() : ''\n if (!sessionId) return { ok: false, error: 'Invalid session_id' }\n return { ok: true, value: { type: 'resume', sessionId } }\n }\n\n if (type === 'prompt') {\n const prompt = typeof payload.prompt === 'string' ? payload.prompt : ''\n if (!prompt.trim()) return { ok: false, error: 'Missing prompt' }\n return { ok: true, value: { type: 'prompt', prompt } }\n }\n\n if (type === 'permission_response') {\n const requestId =\n typeof payload.request_id === 'string' ? payload.request_id : ''\n const decision =\n payload.decision === 'allow_once' ||\n payload.decision === 'allow_always' ||\n payload.decision === 'deny'\n ? payload.decision\n : null\n if (!requestId || !decision)\n return { ok: false, error: 'Invalid permission response' }\n\n const updatedInput = isRecord(payload.updated_input)\n ? payload.updated_input\n : null\n const rejectionMessage =\n typeof payload.rejection_message === 'string'\n ? payload.rejection_message\n : null\n\n return {\n ok: true,\n value: {\n type: 'permission_response',\n requestId,\n decision,\n updatedInput,\n rejectionMessage,\n },\n }\n }\n\n return { ok: false, error: `Unsupported message type: ${String(type)}` }\n}\n\nexport function sendJson(\n ws: { send: (data: string) => void },\n payload: unknown,\n): void {\n ws.send(JSON.stringify(payload))\n}\n\nexport function log(level: LogLevel, message: string): LogMessage {\n return { type: 'log', log: { level, message } }\n}\n", "import type { Tool } from '@kode/core/tooling/Tool'\n\nimport { handleChatPrompt } from '../handlers/chat.handler'\nimport { sendSessionList } from '../handlers/session.handler'\nimport { log } from '../ws/events'\nimport type { DaemonSession } from '../ws/types'\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction sendJson(\n ws: { send: (data: string) => void },\n payload: unknown,\n): void {\n ws.send(JSON.stringify(payload))\n}\n\nexport async function routeChat(\n req: Request,\n ctx: {\n sessions: Map<string, DaemonSession>\n echo: boolean\n commands: unknown[]\n tools: Tool[]\n toolNames: string[]\n slashCommands: string[]\n },\n): Promise<Response | undefined> {\n const url = new URL(req.url)\n if (url.pathname !== '/api/chat') return undefined\n\n if (req.method !== 'POST') {\n return new Response('Method Not Allowed', { status: 405 })\n }\n\n let body: unknown\n try {\n body = await req.json()\n } catch {\n body = null\n }\n\n if (!isRecord(body)) {\n return Response.json(\n { ok: false, error: 'Invalid JSON body' },\n { status: 400 },\n )\n }\n\n const sessionId =\n typeof body.sessionId === 'string' ? body.sessionId.trim() : ''\n const prompt = typeof body.prompt === 'string' ? body.prompt : ''\n\n if (!sessionId) {\n return Response.json(\n { ok: false, error: 'Missing sessionId' },\n { status: 400 },\n )\n }\n if (!prompt.trim()) {\n return Response.json(\n { ok: false, error: 'Missing prompt' },\n { status: 400 },\n )\n }\n\n const session = ctx.sessions.get(sessionId)\n if (!session) {\n return Response.json(\n { ok: false, error: 'Unknown session' },\n { status: 404 },\n )\n }\n const ws = session.ws\n if (!ws) {\n return Response.json(\n { ok: false, error: 'No active websocket connection for this session' },\n { status: 409 },\n )\n }\n\n if (session.activeAbortController) {\n return Response.json(\n { ok: false, error: 'Session already has an active prompt' },\n { status: 409 },\n )\n }\n\n const wsSend = (payload: unknown) => {\n try {\n sendJson(ws, payload)\n } catch {}\n }\n\n void (async () => {\n try {\n await handleChatPrompt({\n wsSend,\n session,\n prompt,\n echo: ctx.echo,\n commands: ctx.commands,\n tools: ctx.tools,\n toolNames: ctx.toolNames,\n slashCommands: ctx.slashCommands,\n })\n } catch (err) {\n wsSend(log('error', err instanceof Error ? err.message : String(err)))\n } finally {\n try {\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => wsSend(log('error', message)),\n })\n } catch {}\n }\n })()\n\n return Response.json({ ok: true })\n}\n", "import type { Session } from '@kode/protocol'\n\nimport { kodeMessageToSdkMessage } from '#protocol/utils/kodeAgentStreamJson'\nimport { isUuid } from '@kode/core/utils/uuid'\n\nimport {\n buildSessionList,\n loadSessionMessages,\n} from '../handlers/session.handler'\n\nexport async function routeSession(\n req: Request,\n ctx: { cwd: string },\n): Promise<Response | undefined> {\n const url = new URL(req.url)\n if (!url.pathname.startsWith('/api/sessions')) return undefined\n\n if (req.method !== 'GET') {\n return new Response('Method Not Allowed', { status: 405 })\n }\n\n const pathParts = url.pathname.split('/').filter(Boolean)\n const hasId = pathParts.length >= 3\n const requestedId = hasId ? (pathParts[2] ?? '') : ''\n\n if (!hasId) {\n const sessions = buildSessionList({ cwd: ctx.cwd })\n return Response.json({ sessions })\n }\n\n const sessionId = requestedId.trim()\n if (!sessionId || !isUuid(sessionId)) {\n return Response.json(\n { ok: false, error: 'Invalid session id' },\n { status: 400 },\n )\n }\n\n const sessions = buildSessionList({ cwd: ctx.cwd })\n const base: Session = sessions.find(s => s.sessionId === sessionId) ?? {\n sessionId,\n slug: null,\n customTitle: null,\n tag: null,\n summary: null,\n cwd: ctx.cwd,\n createdAt: null,\n modifiedAt: null,\n }\n\n const messages = loadSessionMessages({ cwd: ctx.cwd, sessionId })\n const events = messages\n .map(m => kodeMessageToSdkMessage(m, sessionId))\n .filter((e): e is NonNullable<typeof e> => Boolean(e))\n\n return Response.json({ ...base, events })\n}\n", "import type { RawData, WebSocket } from 'ws'\n\nimport {\n makeSdkInitMessage,\n kodeMessageToSdkMessage,\n} from '#protocol/utils/kodeAgentStreamJson'\nimport { isUuid } from '@kode/core/utils/uuid'\nimport { loadToolPermissionContextFromDisk } from '@kode/core/utils/permissions/toolPermissionSettings'\n\nimport type { Tool } from '@kode/core/tooling/Tool'\n\nimport {\n sendSessionList,\n loadSessionMessages,\n} from '../handlers/session.handler'\nimport { handleChatPrompt } from '../handlers/chat.handler'\nimport { parseClientWsMessage, sendJson, log } from './events'\nimport type { DaemonSession } from './types'\n\ntype WsWithSession = WebSocket & { data: { session: DaemonSession } }\n\nexport function createWebSocketHandlers(args: {\n sessions: Map<string, DaemonSession>\n toolNames: string[]\n slashCommands: string[]\n commands: unknown[]\n tools: Tool[]\n echo: boolean\n}) {\n return {\n open(ws: WsWithSession) {\n const session = ws.data.session\n session.ws = ws\n sendJson(\n ws,\n makeSdkInitMessage({\n sessionId: session.sessionId,\n cwd: session.cwd,\n tools: args.toolNames,\n slashCommands: args.slashCommands,\n }),\n )\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => sendJson(ws, log('error', message)),\n })\n },\n\n async message(ws: WsWithSession, message: RawData) {\n const session = ws.data.session\n const parsed = parseClientWsMessage(message)\n if (parsed.ok === false) {\n sendJson(ws, log('error', parsed.error))\n return\n }\n\n const payload = parsed.value\n\n if (payload.type === 'cancel') {\n try {\n session.activeAbortController?.abort()\n } catch {}\n for (const resolve of session.inflightPermissionRequests.values()) {\n try {\n resolve({\n decision: 'deny',\n rejectionMessage: 'Cancelled',\n updatedInput: null,\n })\n } catch {}\n }\n session.inflightPermissionRequests.clear()\n return\n }\n\n if (payload.type === 'permission_response') {\n const resolve = session.inflightPermissionRequests.get(\n payload.requestId,\n )\n if (!resolve) return\n session.inflightPermissionRequests.delete(payload.requestId)\n try {\n resolve({\n decision: payload.decision,\n updatedInput: payload.updatedInput,\n rejectionMessage: payload.rejectionMessage,\n })\n } catch {}\n return\n }\n\n if (payload.type === 'list_sessions') {\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => sendJson(ws, log('error', message)),\n })\n return\n }\n\n if (payload.type === 'new_session') {\n try {\n session.activeAbortController?.abort()\n } catch {}\n for (const resolve of session.inflightPermissionRequests.values()) {\n try {\n resolve({\n decision: 'deny',\n rejectionMessage: 'Cancelled',\n updatedInput: null,\n })\n } catch {}\n }\n session.inflightPermissionRequests.clear()\n\n session.messages = []\n session.readFileTimestamps = {}\n session.responseState = {}\n session.activeAbortController = null\n\n session.toolPermissionContext = loadToolPermissionContextFromDisk({\n projectDir: session.cwd,\n includeKodeProjectConfig: true,\n isBypassPermissionsModeAvailable: true,\n })\n\n const nextId = crypto.randomUUID()\n args.sessions.delete(session.sessionId)\n session.sessionId = nextId\n args.sessions.set(session.sessionId, session)\n\n sendJson(\n ws,\n makeSdkInitMessage({\n sessionId: session.sessionId,\n cwd: session.cwd,\n tools: args.toolNames,\n slashCommands: args.slashCommands,\n }),\n )\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => sendJson(ws, log('error', message)),\n })\n return\n }\n\n if (payload.type === 'resume') {\n if (!isUuid(payload.sessionId)) {\n sendJson(ws, log('error', 'Invalid session_id'))\n return\n }\n\n try {\n const loaded = loadSessionMessages({\n cwd: session.cwd,\n sessionId: payload.sessionId,\n })\n\n session.messages = loaded\n session.readFileTimestamps = {}\n session.responseState = {}\n try {\n session.activeAbortController?.abort()\n } catch {}\n session.activeAbortController = null\n\n args.sessions.delete(session.sessionId)\n session.sessionId = payload.sessionId\n args.sessions.set(session.sessionId, session)\n\n sendJson(\n ws,\n makeSdkInitMessage({\n sessionId: session.sessionId,\n cwd: session.cwd,\n tools: args.toolNames,\n slashCommands: args.slashCommands,\n }),\n )\n\n sendJson(ws, { type: 'history_begin', sessionId: session.sessionId })\n for (const m of loaded) {\n const sdk = kodeMessageToSdkMessage(m, session.sessionId)\n if (sdk) sendJson(ws, sdk)\n }\n sendJson(ws, { type: 'history_end', sessionId: session.sessionId })\n\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => sendJson(ws, log('error', message)),\n })\n } catch (err) {\n sendJson(\n ws,\n log('error', err instanceof Error ? err.message : String(err)),\n )\n }\n return\n }\n\n if (payload.type === 'prompt') {\n if (session.activeAbortController) {\n sendJson(ws, log('error', 'Session already has an active prompt'))\n return\n }\n\n const wsSend = (outgoing: unknown) => sendJson(ws, outgoing)\n\n try {\n await handleChatPrompt({\n wsSend,\n session,\n prompt: payload.prompt,\n echo: args.echo,\n commands: args.commands,\n tools: args.tools,\n toolNames: args.toolNames,\n slashCommands: args.slashCommands,\n })\n } finally {\n sendSessionList(ws, {\n cwd: session.cwd,\n onError: message => sendJson(ws, log('error', message)),\n })\n }\n }\n },\n\n close(ws: WsWithSession) {\n const session = ws.data.session\n session.ws = null\n try {\n session.activeAbortController?.abort()\n } catch {}\n for (const resolve of session.inflightPermissionRequests.values()) {\n try {\n resolve({\n decision: 'deny',\n rejectionMessage: 'Disconnected',\n updatedInput: null,\n })\n } catch {}\n }\n session.inflightPermissionRequests.clear()\n args.sessions.delete(session.sessionId)\n },\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["resolve", "resolve", "resolve", "code", "basename", "resolve", "resolve", "isRecord", "sendJson", "sessions", "resolve", "basename", "resolve", "message", "resolve"]
7
+ }