@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,257 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // apps/server/src/client.ts
30
+ var client_exports = {};
31
+ __export(client_exports, {
32
+ createKodeDaemonClient: () => createKodeDaemonClient
33
+ });
34
+ module.exports = __toCommonJS(client_exports);
35
+
36
+ // packages/protocol/src/agentEvent.ts
37
+ var import_zod = require("zod");
38
+ var ContentBlockSchema = import_zod.z.object({
39
+ type: import_zod.z.string()
40
+ }).passthrough();
41
+ var SystemEventSchema = import_zod.z.object({
42
+ type: import_zod.z.literal("system"),
43
+ subtype: import_zod.z.string(),
44
+ session_id: import_zod.z.string().optional(),
45
+ model: import_zod.z.string().optional(),
46
+ cwd: import_zod.z.string().optional(),
47
+ tools: import_zod.z.array(import_zod.z.string()).optional(),
48
+ slash_commands: import_zod.z.array(import_zod.z.string()).optional(),
49
+ status: import_zod.z.string().optional(),
50
+ uuid: import_zod.z.string().optional()
51
+ }).strict();
52
+ var UserEventSchema = import_zod.z.object({
53
+ type: import_zod.z.literal("user"),
54
+ session_id: import_zod.z.string().optional(),
55
+ uuid: import_zod.z.string().optional(),
56
+ parent_tool_use_id: import_zod.z.string().nullable().optional(),
57
+ message: import_zod.z.object({
58
+ role: import_zod.z.literal("user"),
59
+ content: import_zod.z.union([import_zod.z.string(), import_zod.z.array(ContentBlockSchema)])
60
+ }).strict()
61
+ }).strict();
62
+ var AssistantEventSchema = import_zod.z.object({
63
+ type: import_zod.z.literal("assistant"),
64
+ session_id: import_zod.z.string().optional(),
65
+ uuid: import_zod.z.string().optional(),
66
+ parent_tool_use_id: import_zod.z.string().nullable().optional(),
67
+ message: import_zod.z.object({
68
+ role: import_zod.z.literal("assistant"),
69
+ content: import_zod.z.array(ContentBlockSchema)
70
+ }).strict()
71
+ }).strict();
72
+ var ResultEventSchema = import_zod.z.object({
73
+ type: import_zod.z.literal("result"),
74
+ subtype: import_zod.z.enum(["success", "error_during_execution", "error_max_turns"]),
75
+ result: import_zod.z.string().optional(),
76
+ structured_output: import_zod.z.record(import_zod.z.unknown()).optional(),
77
+ num_turns: import_zod.z.number(),
78
+ usage: import_zod.z.unknown().optional(),
79
+ total_cost_usd: import_zod.z.number(),
80
+ duration_ms: import_zod.z.number(),
81
+ duration_api_ms: import_zod.z.number(),
82
+ is_error: import_zod.z.boolean(),
83
+ session_id: import_zod.z.string()
84
+ }).strict();
85
+ var LogEventSchema = import_zod.z.object({
86
+ type: import_zod.z.literal("log"),
87
+ log: import_zod.z.object({
88
+ level: import_zod.z.enum(["debug", "info", "warn", "error"]),
89
+ message: import_zod.z.string()
90
+ }).strict()
91
+ }).strict();
92
+ var PermissionRequestEventSchema = import_zod.z.object({
93
+ type: import_zod.z.literal("permission_request"),
94
+ request_id: import_zod.z.string(),
95
+ tool_name: import_zod.z.string(),
96
+ tool_description: import_zod.z.string(),
97
+ input: import_zod.z.record(import_zod.z.unknown())
98
+ }).strict();
99
+ var HistoryBeginEventSchema = import_zod.z.object({
100
+ type: import_zod.z.literal("history_begin"),
101
+ sessionId: import_zod.z.string()
102
+ }).strict();
103
+ var HistoryEndEventSchema = import_zod.z.object({
104
+ type: import_zod.z.literal("history_end"),
105
+ sessionId: import_zod.z.string()
106
+ }).strict();
107
+ var AgentEventSchema = import_zod.z.discriminatedUnion("type", [
108
+ SystemEventSchema,
109
+ UserEventSchema,
110
+ AssistantEventSchema,
111
+ ResultEventSchema,
112
+ LogEventSchema,
113
+ PermissionRequestEventSchema,
114
+ HistoryBeginEventSchema,
115
+ HistoryEndEventSchema
116
+ ]);
117
+
118
+ // apps/server/src/client.ts
119
+ function asRecord(value) {
120
+ if (!value || typeof value !== "object") return null;
121
+ return value;
122
+ }
123
+ function getGlobalWebSocketCtor() {
124
+ const ws = asRecord(globalThis)?.WebSocket;
125
+ return typeof ws === "function" ? ws : null;
126
+ }
127
+ async function getWebSocketImpl() {
128
+ const globalWebSocket = getGlobalWebSocketCtor();
129
+ if (globalWebSocket) return globalWebSocket;
130
+ const undici = await import("undici");
131
+ const ws = asRecord(undici)?.WebSocket;
132
+ if (typeof ws === "function") return ws;
133
+ throw new Error("No WebSocket implementation available");
134
+ }
135
+ var AsyncQueue = class _AsyncQueue {
136
+ items = [];
137
+ resolvers = [];
138
+ closed = false;
139
+ static doneResult() {
140
+ return { value: void 0, done: true };
141
+ }
142
+ push(item) {
143
+ if (this.closed) return;
144
+ const resolve = this.resolvers.shift();
145
+ if (resolve) {
146
+ resolve({ value: item, done: false });
147
+ return;
148
+ }
149
+ this.items.push(item);
150
+ }
151
+ close() {
152
+ if (this.closed) return;
153
+ this.closed = true;
154
+ while (this.resolvers.length > 0) {
155
+ const resolve = this.resolvers.shift();
156
+ resolve(_AsyncQueue.doneResult());
157
+ }
158
+ }
159
+ async next() {
160
+ if (this.items.length > 0) {
161
+ return { value: this.items.shift(), done: false };
162
+ }
163
+ if (this.closed) return _AsyncQueue.doneResult();
164
+ return await new Promise((resolve) => {
165
+ this.resolvers.push(resolve);
166
+ });
167
+ }
168
+ [Symbol.asyncIterator]() {
169
+ return this;
170
+ }
171
+ };
172
+ function createKodeDaemonClient(args) {
173
+ const base = new URL(args.url);
174
+ const token = args.token ?? base.searchParams.get("token") ?? "";
175
+ if (!token) {
176
+ throw new Error("Missing daemon token (pass ?token= or token option)");
177
+ }
178
+ const wsUrl = new URL(args.url);
179
+ wsUrl.protocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
180
+ wsUrl.pathname = "/ws";
181
+ wsUrl.searchParams.set("token", token);
182
+ const queue = new AsyncQueue();
183
+ let ws = null;
184
+ const connect = async (options) => {
185
+ if (ws && ws.readyState === 1) return;
186
+ const WebSocketImpl = await getWebSocketImpl();
187
+ const socket = new WebSocketImpl(wsUrl.toString());
188
+ ws = socket;
189
+ const timeoutMs = options?.timeoutMs ?? 5e3;
190
+ await new Promise((resolve, reject) => {
191
+ const onOpen = () => {
192
+ cleanup();
193
+ resolve();
194
+ };
195
+ const onError = () => {
196
+ cleanup();
197
+ reject(new Error("WebSocket connection error"));
198
+ };
199
+ const timer = setTimeout(() => {
200
+ cleanup();
201
+ reject(new Error("WebSocket connect timeout"));
202
+ }, timeoutMs);
203
+ const cleanup = () => {
204
+ clearTimeout(timer);
205
+ try {
206
+ socket.removeEventListener?.("open", onOpen);
207
+ socket.removeEventListener?.("error", onError);
208
+ } catch {
209
+ }
210
+ };
211
+ socket.addEventListener("open", onOpen, { once: true });
212
+ socket.addEventListener("error", onError, { once: true });
213
+ });
214
+ socket.addEventListener("message", (ev) => {
215
+ const raw = asRecord(ev)?.data;
216
+ const text = typeof raw === "string" ? raw : String(raw ?? "");
217
+ try {
218
+ const parsed = JSON.parse(text);
219
+ const validated = AgentEventSchema.safeParse(parsed);
220
+ if (validated.success) queue.push(validated.data);
221
+ } catch {
222
+ }
223
+ });
224
+ socket.addEventListener("close", () => {
225
+ queue.close();
226
+ });
227
+ };
228
+ const sendPrompt = (prompt) => {
229
+ if (!ws || ws.readyState !== 1) {
230
+ throw new Error("Daemon client is not connected");
231
+ }
232
+ ws.send(JSON.stringify({ type: "prompt", prompt }));
233
+ };
234
+ const cancel = () => {
235
+ if (!ws || ws.readyState !== 1) return;
236
+ ws.send(JSON.stringify({ type: "cancel" }));
237
+ };
238
+ const close = () => {
239
+ try {
240
+ ws?.close();
241
+ } catch {
242
+ }
243
+ queue.close();
244
+ };
245
+ return {
246
+ connect,
247
+ sendPrompt,
248
+ cancel,
249
+ events: queue,
250
+ close,
251
+ wsUrl: wsUrl.toString()
252
+ };
253
+ }
254
+ // Annotate the CommonJS export names for ESM import in node:
255
+ 0 && (module.exports = {
256
+ createKodeDaemonClient
257
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../apps/server/src/client.ts", "../../packages/protocol/src/agentEvent.ts"],
4
+ "sourcesContent": ["import type { AgentEvent } from '#protocol/agentEvent'\nimport { AgentEventSchema } from '#protocol/agentEvent'\n\ntype WebSocketLike = {\n readyState: number\n send: (data: string) => void\n close: () => void\n addEventListener: (\n type: string,\n listener: (ev: unknown) => void,\n options?: unknown,\n ) => void\n removeEventListener?: (type: string, listener: (ev: unknown) => void) => void\n}\n\ntype WebSocketCtor = new (url: string) => WebSocketLike\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object') return null\n return value as Record<string, unknown>\n}\n\nfunction getGlobalWebSocketCtor(): WebSocketCtor | null {\n const ws = asRecord(globalThis)?.WebSocket\n return typeof ws === 'function' ? (ws as unknown as WebSocketCtor) : null\n}\n\nasync function getWebSocketImpl(): Promise<WebSocketCtor> {\n const globalWebSocket = getGlobalWebSocketCtor()\n if (globalWebSocket) return globalWebSocket\n\n const undici = await import('undici')\n const ws = asRecord(undici)?.WebSocket\n if (typeof ws === 'function') return ws as unknown as WebSocketCtor\n throw new Error('No WebSocket implementation available')\n}\n\nclass AsyncQueue<T> implements AsyncIterable<T>, AsyncIterator<T> {\n private items: T[] = []\n private resolvers: Array<(value: IteratorResult<T>) => void> = []\n private closed = false\n\n private static doneResult<T>(): IteratorResult<T> {\n return { value: undefined as unknown as T, done: true }\n }\n\n push(item: T) {\n if (this.closed) return\n const resolve = this.resolvers.shift()\n if (resolve) {\n resolve({ value: item, done: false })\n return\n }\n this.items.push(item)\n }\n\n close() {\n if (this.closed) return\n this.closed = true\n while (this.resolvers.length > 0) {\n const resolve = this.resolvers.shift()!\n resolve(AsyncQueue.doneResult())\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n if (this.items.length > 0) {\n return { value: this.items.shift()!, done: false }\n }\n if (this.closed) return AsyncQueue.doneResult()\n return await new Promise<IteratorResult<T>>(resolve => {\n this.resolvers.push(resolve)\n })\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this\n }\n}\n\nexport type KodeDaemonClient = {\n connect: (options?: { timeoutMs?: number }) => Promise<void>\n sendPrompt: (prompt: string) => void\n cancel: () => void\n events: AsyncIterable<AgentEvent>\n close: () => void\n wsUrl: string\n}\n\nexport function createKodeDaemonClient(args: {\n url: string\n token?: string\n}): KodeDaemonClient {\n const base = new URL(args.url)\n const token = args.token ?? base.searchParams.get('token') ?? ''\n if (!token) {\n throw new Error('Missing daemon token (pass ?token= or token option)')\n }\n\n const wsUrl = new URL(args.url)\n wsUrl.protocol = wsUrl.protocol === 'https:' ? 'wss:' : 'ws:'\n wsUrl.pathname = '/ws'\n wsUrl.searchParams.set('token', token)\n\n const queue = new AsyncQueue<AgentEvent>()\n let ws: WebSocketLike | null = null\n\n const connect = async (options?: { timeoutMs?: number }) => {\n if (ws && ws.readyState === 1) return\n const WebSocketImpl = await getWebSocketImpl()\n const socket: WebSocketLike = new WebSocketImpl(wsUrl.toString())\n ws = socket\n\n const timeoutMs = options?.timeoutMs ?? 5_000\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n const onError = () => {\n cleanup()\n reject(new Error('WebSocket connection error'))\n }\n\n const timer = setTimeout(() => {\n cleanup()\n reject(new Error('WebSocket connect timeout'))\n }, timeoutMs)\n\n const cleanup = () => {\n clearTimeout(timer)\n try {\n socket.removeEventListener?.('open', onOpen)\n socket.removeEventListener?.('error', onError)\n } catch {}\n }\n\n socket.addEventListener('open', onOpen, { once: true })\n socket.addEventListener('error', onError, { once: true })\n })\n\n socket.addEventListener('message', (ev: unknown) => {\n const raw = asRecord(ev)?.data\n const text = typeof raw === 'string' ? raw : String(raw ?? '')\n try {\n const parsed = JSON.parse(text)\n const validated = AgentEventSchema.safeParse(parsed)\n if (validated.success) queue.push(validated.data)\n } catch {\n // ignore\n }\n })\n\n socket.addEventListener('close', () => {\n queue.close()\n })\n }\n\n const sendPrompt = (prompt: string) => {\n if (!ws || ws.readyState !== 1) {\n throw new Error('Daemon client is not connected')\n }\n ws.send(JSON.stringify({ type: 'prompt', prompt }))\n }\n\n const cancel = () => {\n if (!ws || ws.readyState !== 1) return\n ws.send(JSON.stringify({ type: 'cancel' }))\n }\n\n const close = () => {\n try {\n ws?.close()\n } catch {}\n queue.close()\n }\n\n return {\n connect,\n sendPrompt,\n cancel,\n events: queue,\n close,\n wsUrl: wsUrl.toString(),\n }\n}\n", "import { z } from 'zod'\n\nimport type { SdkMessage } from './streamJson'\n\nexport type PermissionRequestEvent = {\n type: 'permission_request'\n request_id: string\n tool_name: string\n tool_description: string\n input: Record<string, unknown>\n}\n\nexport type HistoryBeginEvent = {\n type: 'history_begin'\n sessionId: string\n}\n\nexport type HistoryEndEvent = {\n type: 'history_end'\n sessionId: string\n}\n\nexport type AgentEvent =\n | SdkMessage\n | PermissionRequestEvent\n | HistoryBeginEvent\n | HistoryEndEvent\n\nconst ContentBlockSchema = z\n .object({\n type: z.string(),\n })\n .passthrough()\n\nconst SystemEventSchema = z\n .object({\n type: z.literal('system'),\n subtype: z.string(),\n session_id: z.string().optional(),\n model: z.string().optional(),\n cwd: z.string().optional(),\n tools: z.array(z.string()).optional(),\n slash_commands: z.array(z.string()).optional(),\n status: z.string().optional(),\n uuid: z.string().optional(),\n })\n .strict()\n\nconst UserEventSchema = z\n .object({\n type: z.literal('user'),\n session_id: z.string().optional(),\n uuid: z.string().optional(),\n parent_tool_use_id: z.string().nullable().optional(),\n message: z\n .object({\n role: z.literal('user'),\n content: z.union([z.string(), z.array(ContentBlockSchema)]),\n })\n .strict(),\n })\n .strict()\n\nconst AssistantEventSchema = z\n .object({\n type: z.literal('assistant'),\n session_id: z.string().optional(),\n uuid: z.string().optional(),\n parent_tool_use_id: z.string().nullable().optional(),\n message: z\n .object({\n role: z.literal('assistant'),\n content: z.array(ContentBlockSchema),\n })\n .strict(),\n })\n .strict()\n\nconst ResultEventSchema = z\n .object({\n type: z.literal('result'),\n subtype: z.enum(['success', 'error_during_execution', 'error_max_turns']),\n result: z.string().optional(),\n structured_output: z.record(z.unknown()).optional(),\n num_turns: z.number(),\n usage: z.unknown().optional(),\n total_cost_usd: z.number(),\n duration_ms: z.number(),\n duration_api_ms: z.number(),\n is_error: z.boolean(),\n session_id: z.string(),\n })\n .strict()\n\nconst LogEventSchema = z\n .object({\n type: z.literal('log'),\n log: z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']),\n message: z.string(),\n })\n .strict(),\n })\n .strict()\n\nconst PermissionRequestEventSchema = z\n .object({\n type: z.literal('permission_request'),\n request_id: z.string(),\n tool_name: z.string(),\n tool_description: z.string(),\n input: z.record(z.unknown()),\n })\n .strict()\n\nconst HistoryBeginEventSchema = z\n .object({\n type: z.literal('history_begin'),\n sessionId: z.string(),\n })\n .strict()\n\nconst HistoryEndEventSchema = z\n .object({\n type: z.literal('history_end'),\n sessionId: z.string(),\n })\n .strict()\n\nexport const AgentEventSchema = z.discriminatedUnion('type', [\n SystemEventSchema,\n UserEventSchema,\n AssistantEventSchema,\n ResultEventSchema,\n LogEventSchema,\n PermissionRequestEventSchema,\n HistoryBeginEventSchema,\n HistoryEndEventSchema,\n]) as unknown as z.ZodType<AgentEvent>\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,221 @@
1
+ // packages/protocol/src/agentEvent.ts
2
+ import { z } from "zod";
3
+ var ContentBlockSchema = z.object({
4
+ type: z.string()
5
+ }).passthrough();
6
+ var SystemEventSchema = z.object({
7
+ type: z.literal("system"),
8
+ subtype: z.string(),
9
+ session_id: z.string().optional(),
10
+ model: z.string().optional(),
11
+ cwd: z.string().optional(),
12
+ tools: z.array(z.string()).optional(),
13
+ slash_commands: z.array(z.string()).optional(),
14
+ status: z.string().optional(),
15
+ uuid: z.string().optional()
16
+ }).strict();
17
+ var UserEventSchema = z.object({
18
+ type: z.literal("user"),
19
+ session_id: z.string().optional(),
20
+ uuid: z.string().optional(),
21
+ parent_tool_use_id: z.string().nullable().optional(),
22
+ message: z.object({
23
+ role: z.literal("user"),
24
+ content: z.union([z.string(), z.array(ContentBlockSchema)])
25
+ }).strict()
26
+ }).strict();
27
+ var AssistantEventSchema = z.object({
28
+ type: z.literal("assistant"),
29
+ session_id: z.string().optional(),
30
+ uuid: z.string().optional(),
31
+ parent_tool_use_id: z.string().nullable().optional(),
32
+ message: z.object({
33
+ role: z.literal("assistant"),
34
+ content: z.array(ContentBlockSchema)
35
+ }).strict()
36
+ }).strict();
37
+ var ResultEventSchema = z.object({
38
+ type: z.literal("result"),
39
+ subtype: z.enum(["success", "error_during_execution", "error_max_turns"]),
40
+ result: z.string().optional(),
41
+ structured_output: z.record(z.unknown()).optional(),
42
+ num_turns: z.number(),
43
+ usage: z.unknown().optional(),
44
+ total_cost_usd: z.number(),
45
+ duration_ms: z.number(),
46
+ duration_api_ms: z.number(),
47
+ is_error: z.boolean(),
48
+ session_id: z.string()
49
+ }).strict();
50
+ var LogEventSchema = z.object({
51
+ type: z.literal("log"),
52
+ log: z.object({
53
+ level: z.enum(["debug", "info", "warn", "error"]),
54
+ message: z.string()
55
+ }).strict()
56
+ }).strict();
57
+ var PermissionRequestEventSchema = z.object({
58
+ type: z.literal("permission_request"),
59
+ request_id: z.string(),
60
+ tool_name: z.string(),
61
+ tool_description: z.string(),
62
+ input: z.record(z.unknown())
63
+ }).strict();
64
+ var HistoryBeginEventSchema = z.object({
65
+ type: z.literal("history_begin"),
66
+ sessionId: z.string()
67
+ }).strict();
68
+ var HistoryEndEventSchema = z.object({
69
+ type: z.literal("history_end"),
70
+ sessionId: z.string()
71
+ }).strict();
72
+ var AgentEventSchema = z.discriminatedUnion("type", [
73
+ SystemEventSchema,
74
+ UserEventSchema,
75
+ AssistantEventSchema,
76
+ ResultEventSchema,
77
+ LogEventSchema,
78
+ PermissionRequestEventSchema,
79
+ HistoryBeginEventSchema,
80
+ HistoryEndEventSchema
81
+ ]);
82
+
83
+ // apps/server/src/client.ts
84
+ function asRecord(value) {
85
+ if (!value || typeof value !== "object") return null;
86
+ return value;
87
+ }
88
+ function getGlobalWebSocketCtor() {
89
+ const ws = asRecord(globalThis)?.WebSocket;
90
+ return typeof ws === "function" ? ws : null;
91
+ }
92
+ async function getWebSocketImpl() {
93
+ const globalWebSocket = getGlobalWebSocketCtor();
94
+ if (globalWebSocket) return globalWebSocket;
95
+ const undici = await import("undici");
96
+ const ws = asRecord(undici)?.WebSocket;
97
+ if (typeof ws === "function") return ws;
98
+ throw new Error("No WebSocket implementation available");
99
+ }
100
+ var AsyncQueue = class _AsyncQueue {
101
+ items = [];
102
+ resolvers = [];
103
+ closed = false;
104
+ static doneResult() {
105
+ return { value: void 0, done: true };
106
+ }
107
+ push(item) {
108
+ if (this.closed) return;
109
+ const resolve = this.resolvers.shift();
110
+ if (resolve) {
111
+ resolve({ value: item, done: false });
112
+ return;
113
+ }
114
+ this.items.push(item);
115
+ }
116
+ close() {
117
+ if (this.closed) return;
118
+ this.closed = true;
119
+ while (this.resolvers.length > 0) {
120
+ const resolve = this.resolvers.shift();
121
+ resolve(_AsyncQueue.doneResult());
122
+ }
123
+ }
124
+ async next() {
125
+ if (this.items.length > 0) {
126
+ return { value: this.items.shift(), done: false };
127
+ }
128
+ if (this.closed) return _AsyncQueue.doneResult();
129
+ return await new Promise((resolve) => {
130
+ this.resolvers.push(resolve);
131
+ });
132
+ }
133
+ [Symbol.asyncIterator]() {
134
+ return this;
135
+ }
136
+ };
137
+ function createKodeDaemonClient(args) {
138
+ const base = new URL(args.url);
139
+ const token = args.token ?? base.searchParams.get("token") ?? "";
140
+ if (!token) {
141
+ throw new Error("Missing daemon token (pass ?token= or token option)");
142
+ }
143
+ const wsUrl = new URL(args.url);
144
+ wsUrl.protocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
145
+ wsUrl.pathname = "/ws";
146
+ wsUrl.searchParams.set("token", token);
147
+ const queue = new AsyncQueue();
148
+ let ws = null;
149
+ const connect = async (options) => {
150
+ if (ws && ws.readyState === 1) return;
151
+ const WebSocketImpl = await getWebSocketImpl();
152
+ const socket = new WebSocketImpl(wsUrl.toString());
153
+ ws = socket;
154
+ const timeoutMs = options?.timeoutMs ?? 5e3;
155
+ await new Promise((resolve, reject) => {
156
+ const onOpen = () => {
157
+ cleanup();
158
+ resolve();
159
+ };
160
+ const onError = () => {
161
+ cleanup();
162
+ reject(new Error("WebSocket connection error"));
163
+ };
164
+ const timer = setTimeout(() => {
165
+ cleanup();
166
+ reject(new Error("WebSocket connect timeout"));
167
+ }, timeoutMs);
168
+ const cleanup = () => {
169
+ clearTimeout(timer);
170
+ try {
171
+ socket.removeEventListener?.("open", onOpen);
172
+ socket.removeEventListener?.("error", onError);
173
+ } catch {
174
+ }
175
+ };
176
+ socket.addEventListener("open", onOpen, { once: true });
177
+ socket.addEventListener("error", onError, { once: true });
178
+ });
179
+ socket.addEventListener("message", (ev) => {
180
+ const raw = asRecord(ev)?.data;
181
+ const text = typeof raw === "string" ? raw : String(raw ?? "");
182
+ try {
183
+ const parsed = JSON.parse(text);
184
+ const validated = AgentEventSchema.safeParse(parsed);
185
+ if (validated.success) queue.push(validated.data);
186
+ } catch {
187
+ }
188
+ });
189
+ socket.addEventListener("close", () => {
190
+ queue.close();
191
+ });
192
+ };
193
+ const sendPrompt = (prompt) => {
194
+ if (!ws || ws.readyState !== 1) {
195
+ throw new Error("Daemon client is not connected");
196
+ }
197
+ ws.send(JSON.stringify({ type: "prompt", prompt }));
198
+ };
199
+ const cancel = () => {
200
+ if (!ws || ws.readyState !== 1) return;
201
+ ws.send(JSON.stringify({ type: "cancel" }));
202
+ };
203
+ const close = () => {
204
+ try {
205
+ ws?.close();
206
+ } catch {
207
+ }
208
+ queue.close();
209
+ };
210
+ return {
211
+ connect,
212
+ sendPrompt,
213
+ cancel,
214
+ events: queue,
215
+ close,
216
+ wsUrl: wsUrl.toString()
217
+ };
218
+ }
219
+ export {
220
+ createKodeDaemonClient
221
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/protocol/src/agentEvent.ts", "../../apps/server/src/client.ts"],
4
+ "sourcesContent": ["import { z } from 'zod'\n\nimport type { SdkMessage } from './streamJson'\n\nexport type PermissionRequestEvent = {\n type: 'permission_request'\n request_id: string\n tool_name: string\n tool_description: string\n input: Record<string, unknown>\n}\n\nexport type HistoryBeginEvent = {\n type: 'history_begin'\n sessionId: string\n}\n\nexport type HistoryEndEvent = {\n type: 'history_end'\n sessionId: string\n}\n\nexport type AgentEvent =\n | SdkMessage\n | PermissionRequestEvent\n | HistoryBeginEvent\n | HistoryEndEvent\n\nconst ContentBlockSchema = z\n .object({\n type: z.string(),\n })\n .passthrough()\n\nconst SystemEventSchema = z\n .object({\n type: z.literal('system'),\n subtype: z.string(),\n session_id: z.string().optional(),\n model: z.string().optional(),\n cwd: z.string().optional(),\n tools: z.array(z.string()).optional(),\n slash_commands: z.array(z.string()).optional(),\n status: z.string().optional(),\n uuid: z.string().optional(),\n })\n .strict()\n\nconst UserEventSchema = z\n .object({\n type: z.literal('user'),\n session_id: z.string().optional(),\n uuid: z.string().optional(),\n parent_tool_use_id: z.string().nullable().optional(),\n message: z\n .object({\n role: z.literal('user'),\n content: z.union([z.string(), z.array(ContentBlockSchema)]),\n })\n .strict(),\n })\n .strict()\n\nconst AssistantEventSchema = z\n .object({\n type: z.literal('assistant'),\n session_id: z.string().optional(),\n uuid: z.string().optional(),\n parent_tool_use_id: z.string().nullable().optional(),\n message: z\n .object({\n role: z.literal('assistant'),\n content: z.array(ContentBlockSchema),\n })\n .strict(),\n })\n .strict()\n\nconst ResultEventSchema = z\n .object({\n type: z.literal('result'),\n subtype: z.enum(['success', 'error_during_execution', 'error_max_turns']),\n result: z.string().optional(),\n structured_output: z.record(z.unknown()).optional(),\n num_turns: z.number(),\n usage: z.unknown().optional(),\n total_cost_usd: z.number(),\n duration_ms: z.number(),\n duration_api_ms: z.number(),\n is_error: z.boolean(),\n session_id: z.string(),\n })\n .strict()\n\nconst LogEventSchema = z\n .object({\n type: z.literal('log'),\n log: z\n .object({\n level: z.enum(['debug', 'info', 'warn', 'error']),\n message: z.string(),\n })\n .strict(),\n })\n .strict()\n\nconst PermissionRequestEventSchema = z\n .object({\n type: z.literal('permission_request'),\n request_id: z.string(),\n tool_name: z.string(),\n tool_description: z.string(),\n input: z.record(z.unknown()),\n })\n .strict()\n\nconst HistoryBeginEventSchema = z\n .object({\n type: z.literal('history_begin'),\n sessionId: z.string(),\n })\n .strict()\n\nconst HistoryEndEventSchema = z\n .object({\n type: z.literal('history_end'),\n sessionId: z.string(),\n })\n .strict()\n\nexport const AgentEventSchema = z.discriminatedUnion('type', [\n SystemEventSchema,\n UserEventSchema,\n AssistantEventSchema,\n ResultEventSchema,\n LogEventSchema,\n PermissionRequestEventSchema,\n HistoryBeginEventSchema,\n HistoryEndEventSchema,\n]) as unknown as z.ZodType<AgentEvent>\n", "import type { AgentEvent } from '#protocol/agentEvent'\nimport { AgentEventSchema } from '#protocol/agentEvent'\n\ntype WebSocketLike = {\n readyState: number\n send: (data: string) => void\n close: () => void\n addEventListener: (\n type: string,\n listener: (ev: unknown) => void,\n options?: unknown,\n ) => void\n removeEventListener?: (type: string, listener: (ev: unknown) => void) => void\n}\n\ntype WebSocketCtor = new (url: string) => WebSocketLike\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object') return null\n return value as Record<string, unknown>\n}\n\nfunction getGlobalWebSocketCtor(): WebSocketCtor | null {\n const ws = asRecord(globalThis)?.WebSocket\n return typeof ws === 'function' ? (ws as unknown as WebSocketCtor) : null\n}\n\nasync function getWebSocketImpl(): Promise<WebSocketCtor> {\n const globalWebSocket = getGlobalWebSocketCtor()\n if (globalWebSocket) return globalWebSocket\n\n const undici = await import('undici')\n const ws = asRecord(undici)?.WebSocket\n if (typeof ws === 'function') return ws as unknown as WebSocketCtor\n throw new Error('No WebSocket implementation available')\n}\n\nclass AsyncQueue<T> implements AsyncIterable<T>, AsyncIterator<T> {\n private items: T[] = []\n private resolvers: Array<(value: IteratorResult<T>) => void> = []\n private closed = false\n\n private static doneResult<T>(): IteratorResult<T> {\n return { value: undefined as unknown as T, done: true }\n }\n\n push(item: T) {\n if (this.closed) return\n const resolve = this.resolvers.shift()\n if (resolve) {\n resolve({ value: item, done: false })\n return\n }\n this.items.push(item)\n }\n\n close() {\n if (this.closed) return\n this.closed = true\n while (this.resolvers.length > 0) {\n const resolve = this.resolvers.shift()!\n resolve(AsyncQueue.doneResult())\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n if (this.items.length > 0) {\n return { value: this.items.shift()!, done: false }\n }\n if (this.closed) return AsyncQueue.doneResult()\n return await new Promise<IteratorResult<T>>(resolve => {\n this.resolvers.push(resolve)\n })\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this\n }\n}\n\nexport type KodeDaemonClient = {\n connect: (options?: { timeoutMs?: number }) => Promise<void>\n sendPrompt: (prompt: string) => void\n cancel: () => void\n events: AsyncIterable<AgentEvent>\n close: () => void\n wsUrl: string\n}\n\nexport function createKodeDaemonClient(args: {\n url: string\n token?: string\n}): KodeDaemonClient {\n const base = new URL(args.url)\n const token = args.token ?? base.searchParams.get('token') ?? ''\n if (!token) {\n throw new Error('Missing daemon token (pass ?token= or token option)')\n }\n\n const wsUrl = new URL(args.url)\n wsUrl.protocol = wsUrl.protocol === 'https:' ? 'wss:' : 'ws:'\n wsUrl.pathname = '/ws'\n wsUrl.searchParams.set('token', token)\n\n const queue = new AsyncQueue<AgentEvent>()\n let ws: WebSocketLike | null = null\n\n const connect = async (options?: { timeoutMs?: number }) => {\n if (ws && ws.readyState === 1) return\n const WebSocketImpl = await getWebSocketImpl()\n const socket: WebSocketLike = new WebSocketImpl(wsUrl.toString())\n ws = socket\n\n const timeoutMs = options?.timeoutMs ?? 5_000\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n const onError = () => {\n cleanup()\n reject(new Error('WebSocket connection error'))\n }\n\n const timer = setTimeout(() => {\n cleanup()\n reject(new Error('WebSocket connect timeout'))\n }, timeoutMs)\n\n const cleanup = () => {\n clearTimeout(timer)\n try {\n socket.removeEventListener?.('open', onOpen)\n socket.removeEventListener?.('error', onError)\n } catch {}\n }\n\n socket.addEventListener('open', onOpen, { once: true })\n socket.addEventListener('error', onError, { once: true })\n })\n\n socket.addEventListener('message', (ev: unknown) => {\n const raw = asRecord(ev)?.data\n const text = typeof raw === 'string' ? raw : String(raw ?? '')\n try {\n const parsed = JSON.parse(text)\n const validated = AgentEventSchema.safeParse(parsed)\n if (validated.success) queue.push(validated.data)\n } catch {\n // ignore\n }\n })\n\n socket.addEventListener('close', () => {\n queue.close()\n })\n }\n\n const sendPrompt = (prompt: string) => {\n if (!ws || ws.readyState !== 1) {\n throw new Error('Daemon client is not connected')\n }\n ws.send(JSON.stringify({ type: 'prompt', prompt }))\n }\n\n const cancel = () => {\n if (!ws || ws.readyState !== 1) return\n ws.send(JSON.stringify({ type: 'cancel' }))\n }\n\n const close = () => {\n try {\n ws?.close()\n } catch {}\n queue.close()\n }\n\n return {\n connect,\n sendPrompt,\n cancel,\n events: queue,\n close,\n wsUrl: wsUrl.toString(),\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }