@shareai-lab/kode 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +649 -25
  3. package/README.zh-CN.md +579 -0
  4. package/cli-acp.js +3 -17
  5. package/cli.js +5 -7
  6. package/dist/chunks/Doctor-M3J7GRTJ.js +12 -0
  7. package/dist/chunks/LogList-ISWZ6DDD.js +121 -0
  8. package/dist/chunks/LogList-ISWZ6DDD.js.map +7 -0
  9. package/dist/chunks/REPL-RQ6LO6S7.js +56 -0
  10. package/dist/chunks/ResumeConversation-6DMVBEGH.js +56 -0
  11. package/dist/chunks/agentLoader-FCRG3TFJ.js +31 -0
  12. package/dist/{agentsValidate-7LH4HTNR.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
  13. package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
  14. package/dist/{ask-3NHFFUQG.js → chunks/ask-D7SOHJ6Z.js} +36 -44
  15. package/dist/chunks/ask-D7SOHJ6Z.js.map +7 -0
  16. package/dist/chunks/autoUpdater-CNESBOKO.js +19 -0
  17. package/dist/{chunk-AFFSCMYS.js → chunks/chunk-2JN5MY67.js} +12 -14
  18. package/dist/chunks/chunk-2JN5MY67.js.map +7 -0
  19. package/dist/chunks/chunk-2QONJ5MG.js +14 -0
  20. package/dist/chunks/chunk-2QONJ5MG.js.map +7 -0
  21. package/dist/chunks/chunk-2WEXPKHH.js +903 -0
  22. package/dist/chunks/chunk-2WEXPKHH.js.map +7 -0
  23. package/dist/{chunk-ARZSBOAO.js → chunks/chunk-3BYE3ME6.js} +717 -792
  24. package/dist/chunks/chunk-3BYE3ME6.js.map +7 -0
  25. package/dist/chunks/chunk-3JDNWX7W.js +1264 -0
  26. package/dist/chunks/chunk-3JDNWX7W.js.map +7 -0
  27. package/dist/chunks/chunk-3OEJVB5A.js +906 -0
  28. package/dist/chunks/chunk-3OEJVB5A.js.map +7 -0
  29. package/dist/chunks/chunk-3TNIOEBO.js +369 -0
  30. package/dist/chunks/chunk-3TNIOEBO.js.map +7 -0
  31. package/dist/chunks/chunk-4A46ZXMJ.js +67 -0
  32. package/dist/chunks/chunk-4A46ZXMJ.js.map +7 -0
  33. package/dist/{chunk-UHYRLID6.js → chunks/chunk-4ATBQOFO.js} +107 -55
  34. package/dist/chunks/chunk-4ATBQOFO.js.map +7 -0
  35. package/dist/chunks/chunk-4CRUCZR4.js +0 -0
  36. package/dist/{chunk-YC6LJCDE.js → chunks/chunk-4EO6SIQY.js} +32 -75
  37. package/dist/chunks/chunk-4EO6SIQY.js.map +7 -0
  38. package/dist/chunks/chunk-53M46S5I.js +64 -0
  39. package/dist/chunks/chunk-53M46S5I.js.map +7 -0
  40. package/dist/{chunk-JC6NCUG5.js → chunks/chunk-54KOYG5C.js} +0 -2
  41. package/dist/{chunk-EZXMVTDU.js → chunks/chunk-6BAS4WY6.js} +29 -45
  42. package/dist/chunks/chunk-6BAS4WY6.js.map +7 -0
  43. package/dist/{chunk-3IN27HA5.js → chunks/chunk-6KRRFSDN.js} +4 -6
  44. package/dist/chunks/chunk-6KRRFSDN.js.map +7 -0
  45. package/dist/chunks/chunk-6LJNZK4K.js +39 -0
  46. package/dist/chunks/chunk-6LJNZK4K.js.map +7 -0
  47. package/dist/chunks/chunk-6ZWEOSEI.js +666 -0
  48. package/dist/chunks/chunk-6ZWEOSEI.js.map +7 -0
  49. package/dist/chunks/chunk-77XDJMBP.js +3326 -0
  50. package/dist/chunks/chunk-77XDJMBP.js.map +7 -0
  51. package/dist/chunks/chunk-7RRW4NTB.js +6454 -0
  52. package/dist/chunks/chunk-7RRW4NTB.js.map +7 -0
  53. package/dist/chunks/chunk-7X3TW4JB.js +4520 -0
  54. package/dist/chunks/chunk-7X3TW4JB.js.map +7 -0
  55. package/dist/chunks/chunk-B3MW3YGY.js +1409 -0
  56. package/dist/chunks/chunk-B3MW3YGY.js.map +7 -0
  57. package/dist/chunks/chunk-BBJFHTBC.js +28 -0
  58. package/dist/chunks/chunk-BBJFHTBC.js.map +7 -0
  59. package/dist/chunks/chunk-BHDHXOXB.js +24 -0
  60. package/dist/chunks/chunk-BHDHXOXB.js.map +7 -0
  61. package/dist/{chunk-73WGVYLQ.js → chunks/chunk-BTA7SZ26.js} +152 -223
  62. package/dist/chunks/chunk-BTA7SZ26.js.map +7 -0
  63. package/dist/chunks/chunk-CDGRYGPZ.js +103 -0
  64. package/dist/chunks/chunk-CDGRYGPZ.js.map +7 -0
  65. package/dist/{chunk-S6HRABTA.js → chunks/chunk-CP6E5UG6.js} +1 -4
  66. package/dist/chunks/chunk-CP6E5UG6.js.map +7 -0
  67. package/dist/{chunk-QVLYOPO5.js → chunks/chunk-DQ4JHXMT.js} +462 -424
  68. package/dist/chunks/chunk-DQ4JHXMT.js.map +7 -0
  69. package/dist/chunks/chunk-DXD76CMV.js +208 -0
  70. package/dist/chunks/chunk-DXD76CMV.js.map +7 -0
  71. package/dist/chunks/chunk-GCQCAXJZ.js +0 -0
  72. package/dist/chunks/chunk-GELCZWMB.js +42 -0
  73. package/dist/chunks/chunk-GELCZWMB.js.map +7 -0
  74. package/dist/{chunk-K2CWOTI2.js → chunks/chunk-HJYOH4HC.js} +23 -18
  75. package/dist/chunks/chunk-HJYOH4HC.js.map +7 -0
  76. package/dist/chunks/chunk-HPYNW6TT.js +744 -0
  77. package/dist/chunks/chunk-HPYNW6TT.js.map +7 -0
  78. package/dist/{chunk-RZWOUA25.js → chunks/chunk-HRJ3ICQK.js} +59 -55
  79. package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
  80. package/dist/{chunk-DZE5YA7L.js → chunks/chunk-IFCIADS3.js} +571 -573
  81. package/dist/chunks/chunk-IFCIADS3.js.map +7 -0
  82. package/dist/chunks/chunk-IN7XZ7BC.js +27 -0
  83. package/dist/chunks/chunk-IN7XZ7BC.js.map +7 -0
  84. package/dist/chunks/chunk-L7P4M4KW.js +193 -0
  85. package/dist/chunks/chunk-L7P4M4KW.js.map +7 -0
  86. package/dist/chunks/chunk-LB6TCPDI.js +0 -0
  87. package/dist/{chunk-3RUXVV4S.js → chunks/chunk-LOCXPQNJ.js} +1 -4
  88. package/dist/{chunk-3RUXVV4S.js.map → chunks/chunk-LOCXPQNJ.js.map} +2 -2
  89. package/dist/{chunk-7M2YN6TU.js → chunks/chunk-LOD5ZHCI.js} +213 -208
  90. package/dist/chunks/chunk-LOD5ZHCI.js.map +7 -0
  91. package/dist/{chunk-S3J2TLV6.js → chunks/chunk-M7P3QNRU.js} +1 -4
  92. package/dist/{chunk-S3J2TLV6.js.map → chunks/chunk-M7P3QNRU.js.map} +2 -2
  93. package/dist/chunks/chunk-PPHLQVL7.js +4234 -0
  94. package/dist/chunks/chunk-PPHLQVL7.js.map +7 -0
  95. package/dist/{chunk-ABLVTESJ.js → chunks/chunk-QAXE37B5.js} +1 -4
  96. package/dist/chunks/chunk-QAXE37B5.js.map +7 -0
  97. package/dist/chunks/chunk-QHQOBUF6.js +60 -0
  98. package/dist/chunks/chunk-QHQOBUF6.js.map +7 -0
  99. package/dist/{chunk-W7GRKO7Q.js → chunks/chunk-RPJXO7GG.js} +241 -214
  100. package/dist/chunks/chunk-RPJXO7GG.js.map +7 -0
  101. package/dist/{chunk-NPFOMITO.js → chunks/chunk-SWQV4KSY.js} +1 -4
  102. package/dist/{chunk-NPFOMITO.js.map → chunks/chunk-SWQV4KSY.js.map} +2 -2
  103. package/dist/chunks/chunk-SZLAPULP.js +28 -0
  104. package/dist/chunks/chunk-SZLAPULP.js.map +7 -0
  105. package/dist/{chunk-7U7L4NMD.js → chunks/chunk-T7RB5V5J.js} +23 -25
  106. package/dist/chunks/chunk-T7RB5V5J.js.map +7 -0
  107. package/dist/{chunk-HN4E4UUQ.js → chunks/chunk-TI2CTTMA.js} +25 -17
  108. package/dist/chunks/chunk-TI2CTTMA.js.map +7 -0
  109. package/dist/{chunk-ZVDRDPII.js → chunks/chunk-TNGVRTO5.js} +45 -20
  110. package/dist/chunks/chunk-TNGVRTO5.js.map +7 -0
  111. package/dist/chunks/chunk-TNWB3U5Y.js +2077 -0
  112. package/dist/chunks/chunk-TNWB3U5Y.js.map +7 -0
  113. package/dist/chunks/chunk-U2IHWPCU.js +12 -0
  114. package/dist/chunks/chunk-U2IHWPCU.js.map +7 -0
  115. package/dist/{chunk-KAA5BGMQ.js → chunks/chunk-UNOY3VJ2.js} +1 -4
  116. package/dist/{chunk-KAA5BGMQ.js.map → chunks/chunk-UNOY3VJ2.js.map} +2 -2
  117. package/dist/{chunk-MWRSY4X6.js → chunks/chunk-UVDJL6ZZ.js} +97 -58
  118. package/dist/chunks/chunk-UVDJL6ZZ.js.map +7 -0
  119. package/dist/chunks/chunk-VNCW4C2Z.js +13452 -0
  120. package/dist/chunks/chunk-VNCW4C2Z.js.map +7 -0
  121. package/dist/chunks/chunk-W5EGGA44.js +15 -0
  122. package/dist/chunks/chunk-W5EGGA44.js.map +7 -0
  123. package/dist/chunks/chunk-XR2W3MAM.js +1533 -0
  124. package/dist/chunks/chunk-XR2W3MAM.js.map +7 -0
  125. package/dist/{chunk-STSX7GIX.js → chunks/chunk-YIO5EBMQ.js} +423 -377
  126. package/dist/chunks/chunk-YIO5EBMQ.js.map +7 -0
  127. package/dist/chunks/chunk-ZBVLKZ5V.js +1062 -0
  128. package/dist/chunks/chunk-ZBVLKZ5V.js.map +7 -0
  129. package/dist/{chunk-E6YNABER.js → chunks/chunk-ZCLTZIVP.js} +1 -4
  130. package/dist/chunks/chunk-ZCLTZIVP.js.map +7 -0
  131. package/dist/chunks/client-SILZNM5N.js +42 -0
  132. package/dist/{config-RUSD6G5Y.js → chunks/config-25HRTPSP.js} +48 -10
  133. package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
  134. package/dist/{customCommands-TOIJFZAL.js → chunks/customCommands-TYMYZRG5.js} +11 -8
  135. package/dist/chunks/engine-MRVF6FK6.js +39 -0
  136. package/dist/{env-XGKBLU3D.js → chunks/env-TJ5NOBEB.js} +7 -5
  137. package/dist/{kodeAgentSessionId-X6XWQW7B.js → chunks/kodeAgentSessionId-VTNISJ2L.js} +2 -4
  138. package/dist/chunks/kodeAgentSessionLoad-YB2RKBGJ.js +15 -0
  139. package/dist/chunks/kodeAgentSessionResume-DZSIVKVA.js +13 -0
  140. package/dist/chunks/kodeAgentStreamJson-X5PLS2S6.js +11 -0
  141. package/dist/{kodeAgentStreamJsonSession-UGEZJJEB.js → chunks/kodeAgentStreamJsonSession-RDXM4XYF.js} +38 -24
  142. package/dist/chunks/kodeAgentStreamJsonSession-RDXM4XYF.js.map +7 -0
  143. package/dist/{chunk-4RTX4AG4.js → chunks/kodeAgentStructuredStdio-SVGDSB4P.js} +14 -9
  144. package/dist/chunks/kodeAgentStructuredStdio-SVGDSB4P.js.map +7 -0
  145. package/dist/{kodeHooks-QWM36A3D.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
  146. package/dist/{llm-ZUQC4WYM.js → chunks/llm-62N6T5ZT.js} +1734 -1526
  147. package/dist/chunks/llm-62N6T5ZT.js.map +7 -0
  148. package/dist/chunks/llmLazy-ZUSSE3ZA.js +13 -0
  149. package/dist/{mentionProcessor-EE3XFHCJ.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
  150. package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
  151. package/dist/{messages-EOYQKPGM.js → chunks/messages-EEWWLPHN.js} +2 -6
  152. package/dist/chunks/model-5TIEKQPD.js +37 -0
  153. package/dist/{openai-RRCWW33N.js → chunks/openai-XXK3YZG4.js} +13 -10
  154. package/dist/{outputStyles-62Q3VH2J.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
  155. package/dist/chunks/permissions-HO7INPWM.js +27 -0
  156. package/dist/{pluginRuntime-6ETCZ2LL.js → chunks/pluginRuntime-C7K5ULK2.js} +31 -48
  157. package/dist/chunks/pluginRuntime-C7K5ULK2.js.map +7 -0
  158. package/dist/chunks/pluginValidation-DAM7WRTC.js +20 -0
  159. package/dist/chunks/registry-XYJXMOA5.js +60 -0
  160. package/dist/chunks/responsesStreaming-JNGE2P3D.js +8 -0
  161. package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js +577 -0
  162. package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js.map +7 -0
  163. package/dist/chunks/server-REXXF5IK.js +46 -0
  164. package/dist/{skillMarketplace-3RXQBVOL.js → chunks/skillMarketplace-N4HVHNST.js} +8 -6
  165. package/dist/chunks/src-OROQIWP3.js +44 -0
  166. package/dist/chunks/src-QXLGGMUW.js +1647 -0
  167. package/dist/chunks/src-QXLGGMUW.js.map +7 -0
  168. package/dist/{cli-DOPVY2CW.js → chunks/src-SSDT6MVP.js} +2659 -3384
  169. package/dist/chunks/src-SSDT6MVP.js.map +7 -0
  170. package/dist/chunks/theme-YBJUIMWK.js +10 -0
  171. package/dist/{toolPermissionContext-65L65VEZ.js → chunks/toolPermissionContext-MOCTRR7N.js} +2 -4
  172. package/dist/chunks/toolPermissionSettings-EV2EJAXL.js +18 -0
  173. package/dist/chunks/toolPermissionSettings-EV2EJAXL.js.map +7 -0
  174. package/dist/chunks/uuid-6577SO6X.js +7 -0
  175. package/dist/chunks/uuid-6577SO6X.js.map +7 -0
  176. package/dist/chunks/webOnlyMode-ALXX7UQY.js +66 -0
  177. package/dist/chunks/webOnlyMode-ALXX7UQY.js.map +7 -0
  178. package/dist/entrypoints/cli.js +10 -0
  179. package/dist/entrypoints/cli.js.map +7 -0
  180. package/dist/entrypoints/daemon.js +10 -0
  181. package/dist/entrypoints/daemon.js.map +7 -0
  182. package/dist/entrypoints/mcp.js +71 -0
  183. package/dist/entrypoints/mcp.js.map +7 -0
  184. package/dist/index.js +6 -7
  185. package/dist/index.js.map +3 -3
  186. package/dist/sdk/client.cjs +391 -0
  187. package/dist/sdk/client.cjs.map +7 -0
  188. package/dist/sdk/client.js +364 -0
  189. package/dist/sdk/client.js.map +7 -0
  190. package/dist/sdk/core.cjs +19932 -0
  191. package/dist/sdk/core.cjs.map +7 -0
  192. package/dist/sdk/core.js +19893 -0
  193. package/dist/sdk/core.js.map +7 -0
  194. package/dist/sdk/daemon-client.cjs +257 -0
  195. package/dist/sdk/daemon-client.cjs.map +7 -0
  196. package/dist/sdk/daemon-client.js +221 -0
  197. package/dist/sdk/daemon-client.js.map +7 -0
  198. package/dist/sdk/protocol.cjs +170 -0
  199. package/dist/sdk/protocol.cjs.map +7 -0
  200. package/dist/sdk/protocol.js +140 -0
  201. package/dist/sdk/protocol.js.map +7 -0
  202. package/dist/sdk/runtime-node.cjs +236 -0
  203. package/dist/sdk/runtime-node.cjs.map +7 -0
  204. package/dist/sdk/runtime-node.js +222 -0
  205. package/dist/sdk/runtime-node.js.map +7 -0
  206. package/dist/sdk/runtime.cjs +17 -0
  207. package/dist/sdk/runtime.cjs.map +7 -0
  208. package/dist/sdk/runtime.js +0 -0
  209. package/dist/sdk/runtime.js.map +7 -0
  210. package/dist/sdk/tools.cjs +30300 -0
  211. package/dist/sdk/tools.cjs.map +7 -0
  212. package/dist/sdk/tools.js +30282 -0
  213. package/dist/sdk/tools.js.map +7 -0
  214. package/dist/webui/assets/index-5hlfByVS.css +1 -0
  215. package/dist/webui/assets/index-BR9lm1lA.js +82 -0
  216. package/dist/webui/index.html +28 -0
  217. package/package.json +93 -22
  218. package/scripts/binary-utils.cjs +12 -4
  219. package/scripts/cli-acp-wrapper.cjs +3 -17
  220. package/scripts/cli-wrapper.cjs +5 -7
  221. package/scripts/postinstall.js +8 -4
  222. package/dist/REPL-CW7AYLVL.js +0 -42
  223. package/dist/acp-VEPJ74LT.js +0 -1357
  224. package/dist/acp-VEPJ74LT.js.map +0 -7
  225. package/dist/agentsValidate-7LH4HTNR.js.map +0 -7
  226. package/dist/ask-3NHFFUQG.js.map +0 -7
  227. package/dist/autoUpdater-ITPIHCOI.js +0 -17
  228. package/dist/chunk-3IN27HA5.js.map +0 -7
  229. package/dist/chunk-4FX3IVPT.js +0 -164
  230. package/dist/chunk-4FX3IVPT.js.map +0 -7
  231. package/dist/chunk-4RTX4AG4.js.map +0 -7
  232. package/dist/chunk-5PDP7R6N.js +0 -515
  233. package/dist/chunk-5PDP7R6N.js.map +0 -7
  234. package/dist/chunk-73WGVYLQ.js.map +0 -7
  235. package/dist/chunk-7M2YN6TU.js.map +0 -7
  236. package/dist/chunk-7U7L4NMD.js.map +0 -7
  237. package/dist/chunk-ABLVTESJ.js.map +0 -7
  238. package/dist/chunk-AFFSCMYS.js.map +0 -7
  239. package/dist/chunk-ARZSBOAO.js.map +0 -7
  240. package/dist/chunk-CIG63V4E.js +0 -72
  241. package/dist/chunk-CIG63V4E.js.map +0 -7
  242. package/dist/chunk-CM3EGTG6.js +0 -1609
  243. package/dist/chunk-CM3EGTG6.js.map +0 -7
  244. package/dist/chunk-DZE5YA7L.js.map +0 -7
  245. package/dist/chunk-E6YNABER.js.map +0 -7
  246. package/dist/chunk-EZXMVTDU.js.map +0 -7
  247. package/dist/chunk-F2SJXUDI.js +0 -148
  248. package/dist/chunk-F2SJXUDI.js.map +0 -7
  249. package/dist/chunk-FC5ZCKBI.js +0 -30167
  250. package/dist/chunk-FC5ZCKBI.js.map +0 -7
  251. package/dist/chunk-HCBELH4J.js +0 -145
  252. package/dist/chunk-HCBELH4J.js.map +0 -7
  253. package/dist/chunk-HN4E4UUQ.js.map +0 -7
  254. package/dist/chunk-IZVMU4S2.js +0 -654
  255. package/dist/chunk-IZVMU4S2.js.map +0 -7
  256. package/dist/chunk-K2CWOTI2.js.map +0 -7
  257. package/dist/chunk-LC4TVOCZ.js +0 -835
  258. package/dist/chunk-LC4TVOCZ.js.map +0 -7
  259. package/dist/chunk-MIW7N2MY.js +0 -2613
  260. package/dist/chunk-MIW7N2MY.js.map +0 -7
  261. package/dist/chunk-MWRSY4X6.js.map +0 -7
  262. package/dist/chunk-ND3XWFO6.js +0 -34
  263. package/dist/chunk-ND3XWFO6.js.map +0 -7
  264. package/dist/chunk-QVLYOPO5.js.map +0 -7
  265. package/dist/chunk-RZWOUA25.js.map +0 -7
  266. package/dist/chunk-S6HRABTA.js.map +0 -7
  267. package/dist/chunk-STSX7GIX.js.map +0 -7
  268. package/dist/chunk-UHYRLID6.js.map +0 -7
  269. package/dist/chunk-UKHTVRJM.js +0 -47
  270. package/dist/chunk-UKHTVRJM.js.map +0 -7
  271. package/dist/chunk-UYXEDKOZ.js +0 -24
  272. package/dist/chunk-UYXEDKOZ.js.map +0 -7
  273. package/dist/chunk-W7GRKO7Q.js.map +0 -7
  274. package/dist/chunk-WVHORZQ5.js +0 -17
  275. package/dist/chunk-WVHORZQ5.js.map +0 -7
  276. package/dist/chunk-WWUWDNWW.js +0 -49
  277. package/dist/chunk-WWUWDNWW.js.map +0 -7
  278. package/dist/chunk-YC6LJCDE.js.map +0 -7
  279. package/dist/chunk-YXYYDIMI.js +0 -2931
  280. package/dist/chunk-YXYYDIMI.js.map +0 -7
  281. package/dist/chunk-ZVDRDPII.js.map +0 -7
  282. package/dist/cli-DOPVY2CW.js.map +0 -7
  283. package/dist/commands-2BF2CJ3A.js +0 -46
  284. package/dist/context-6FXPETYH.js +0 -30
  285. package/dist/costTracker-6SL26FDB.js +0 -19
  286. package/dist/kodeAgentSessionLoad-MITZADPB.js +0 -18
  287. package/dist/kodeAgentSessionResume-GVRWB4WO.js +0 -16
  288. package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
  289. package/dist/kodeAgentStreamJsonSession-UGEZJJEB.js.map +0 -7
  290. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
  291. package/dist/llm-ZUQC4WYM.js.map +0 -7
  292. package/dist/llmLazy-54QQHA54.js +0 -15
  293. package/dist/loader-FYHJQES5.js +0 -28
  294. package/dist/mcp-J332IKT3.js +0 -49
  295. package/dist/mentionProcessor-EE3XFHCJ.js.map +0 -7
  296. package/dist/model-FV3JDJKH.js +0 -30
  297. package/dist/pluginRuntime-6ETCZ2LL.js.map +0 -7
  298. package/dist/pluginValidation-I4YKUWGS.js +0 -17
  299. package/dist/prompts-ZLEKDD77.js +0 -48
  300. package/dist/query-VFRJPBGD.js +0 -50
  301. package/dist/responsesStreaming-AW344PQO.js +0 -10
  302. package/dist/ripgrep-3NTIKQYW.js +0 -17
  303. package/dist/state-P5G6CO5V.js +0 -16
  304. package/dist/theme-3LWP3BG7.js +0 -14
  305. package/dist/toolPermissionSettings-3ROBVTUK.js +0 -18
  306. package/dist/tools-RO7HSSE5.js +0 -47
  307. package/dist/userInput-JSBJRFSK.js +0 -311
  308. package/dist/userInput-JSBJRFSK.js.map +0 -7
  309. package/dist/uuid-QN2CNKKN.js +0 -9
  310. /package/dist/{REPL-CW7AYLVL.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
  311. /package/dist/{autoUpdater-ITPIHCOI.js.map → chunks/REPL-RQ6LO6S7.js.map} +0 -0
  312. /package/dist/{chunk-JC6NCUG5.js.map → chunks/ResumeConversation-6DMVBEGH.js.map} +0 -0
  313. /package/dist/{commands-2BF2CJ3A.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
  314. /package/dist/{config-RUSD6G5Y.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
  315. /package/dist/{context-6FXPETYH.js.map → chunks/chunk-4CRUCZR4.js.map} +0 -0
  316. /package/dist/{costTracker-6SL26FDB.js.map → chunks/chunk-54KOYG5C.js.map} +0 -0
  317. /package/dist/{customCommands-TOIJFZAL.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
  318. /package/dist/{env-XGKBLU3D.js.map → chunks/chunk-LB6TCPDI.js.map} +0 -0
  319. /package/dist/{kodeAgentSessionId-X6XWQW7B.js.map → chunks/client-SILZNM5N.js.map} +0 -0
  320. /package/dist/{kodeAgentSessionLoad-MITZADPB.js.map → chunks/config-25HRTPSP.js.map} +0 -0
  321. /package/dist/{kodeAgentSessionResume-GVRWB4WO.js.map → chunks/cost-tracker-Z2UZT2J5.js.map} +0 -0
  322. /package/dist/{kodeAgentStreamJson-NXFN7TXH.js.map → chunks/customCommands-TYMYZRG5.js.map} +0 -0
  323. /package/dist/{kodeAgentStructuredStdio-HGWJT7CU.js.map → chunks/engine-MRVF6FK6.js.map} +0 -0
  324. /package/dist/{kodeHooks-QWM36A3D.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
  325. /package/dist/{llmLazy-54QQHA54.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
  326. /package/dist/{loader-FYHJQES5.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
  327. /package/dist/{mcp-J332IKT3.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
  328. /package/dist/{messages-EOYQKPGM.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
  329. /package/dist/{model-FV3JDJKH.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
  330. /package/dist/{openai-RRCWW33N.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
  331. /package/dist/{outputStyles-62Q3VH2J.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
  332. /package/dist/{pluginValidation-I4YKUWGS.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
  333. /package/dist/{prompts-ZLEKDD77.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
  334. /package/dist/{query-VFRJPBGD.js.map → chunks/outputStyles-FAJTXN2A.js.map} +0 -0
  335. /package/dist/{responsesStreaming-AW344PQO.js.map → chunks/permissions-HO7INPWM.js.map} +0 -0
  336. /package/dist/{ripgrep-3NTIKQYW.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
  337. /package/dist/{skillMarketplace-3RXQBVOL.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
  338. /package/dist/{state-P5G6CO5V.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
  339. /package/dist/{theme-3LWP3BG7.js.map → chunks/server-REXXF5IK.js.map} +0 -0
  340. /package/dist/{toolPermissionContext-65L65VEZ.js.map → chunks/skillMarketplace-N4HVHNST.js.map} +0 -0
  341. /package/dist/{toolPermissionSettings-3ROBVTUK.js.map → chunks/src-OROQIWP3.js.map} +0 -0
  342. /package/dist/{tools-RO7HSSE5.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
  343. /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/runtime/src/shell/BunShell.ts", "../../packages/runtime/src/shell/state.ts", "../../packages/runtime/src/shell/exec.ts", "../../packages/runtime/src/shell/sandboxCommand.ts", "../../packages/runtime/src/shell/linuxSandbox.ts", "../../packages/runtime/src/shell/macosSandbox.ts", "../../packages/runtime/src/shell/streamReaders.ts", "../../packages/runtime/src/shell/shellCmd.ts", "../../packages/runtime/src/shell/execPromotable.ts", "../../packages/runtime/src/taskOutputStore.ts", "../../packages/runtime/src/shell/ids.ts", "../../packages/runtime/src/shell/background.ts", "../../packages/runtime/src/shell/notifications.ts"],
4
+ "sourcesContent": ["import { existsSync } from 'fs'\nimport { isAbsolute, resolve } from 'path'\n\nimport type {\n BackgroundProcess,\n BunShellExecOptions,\n BunShellPromotableExec,\n BackgroundShellStatusAttachment,\n BashNotification,\n} from './types'\nimport { createInitialState, type BunShellState } from './state'\nimport { exec } from './exec'\nimport { execPromotable } from './execPromotable'\nimport {\n execInBackground,\n flushBackgroundShellStatusAttachments,\n flushBashNotifications,\n getBackgroundOutput,\n killBackgroundShell,\n listBackgroundShells,\n readBackgroundOutput,\n} from './background'\nimport { getShellCmdForPlatform } from './shellCmd'\n\n/**\n * BunShell - Cross-platform shell using Node.js child_process.spawn with proper timeout support.\n */\nexport class BunShell {\n private state: BunShellState\n\n constructor(cwd: string) {\n this.state = createInitialState(cwd)\n }\n\n private static instance: BunShell | null = null\n\n static restart() {\n if (BunShell.instance) {\n BunShell.instance.close()\n BunShell.instance = null\n }\n }\n\n static getInstance(): BunShell {\n if (!BunShell.instance || !BunShell.instance.state.isAlive) {\n BunShell.instance = new BunShell(process.cwd())\n }\n return BunShell.instance\n }\n\n static getShellCmdForPlatform(\n platform: NodeJS.Platform,\n command: string,\n env: NodeJS.ProcessEnv = process.env,\n ): string[] {\n return getShellCmdForPlatform(platform, command, env)\n }\n\n execPromotable(\n command: string,\n abortSignal?: AbortSignal,\n timeout?: number,\n options?: BunShellExecOptions,\n ): BunShellPromotableExec {\n return execPromotable(this.state, command, abortSignal, timeout, options)\n }\n\n async exec(\n command: string,\n abortSignal?: AbortSignal,\n timeout?: number,\n options?: BunShellExecOptions,\n ) {\n return exec(this.state, command, abortSignal, timeout, options)\n }\n\n execInBackground(\n command: string,\n timeout?: number,\n options?: BunShellExecOptions,\n ): { bashId: string } {\n return execInBackground(this.state, command, timeout, options)\n }\n\n getBackgroundOutput(shellId: string) {\n return getBackgroundOutput(this.state, shellId)\n }\n\n readBackgroundOutput(bashId: string, options?: { filter?: string }) {\n return readBackgroundOutput(this.state, bashId, options)\n }\n\n killBackgroundShell(shellId: string): boolean {\n return killBackgroundShell(this.state, shellId)\n }\n\n listBackgroundShells(): BackgroundProcess[] {\n return listBackgroundShells(this.state)\n }\n\n pwd(): string {\n return this.state.cwd\n }\n\n async setCwd(cwd: string) {\n const resolved = isAbsolute(cwd) ? cwd : resolve(this.state.cwd, cwd)\n if (!existsSync(resolved)) {\n throw new Error(`Path \"${resolved}\" does not exist`)\n }\n this.state.cwd = resolved\n }\n\n killChildren() {\n this.state.abortController?.abort()\n this.state.currentProcess?.kill()\n for (const bg of Array.from(this.state.backgroundProcesses.keys())) {\n killBackgroundShell(this.state, bg)\n }\n }\n\n close(): void {\n this.state.isAlive = false\n this.killChildren()\n }\n\n flushBashNotifications(): BashNotification[] {\n return flushBashNotifications(this.state)\n }\n\n flushBackgroundShellStatusAttachments(): BackgroundShellStatusAttachment[] {\n return flushBackgroundShellStatusAttachments(this.state)\n }\n}\n", "import type { ChildProcess } from 'node:child_process'\nimport type { BackgroundProcess } from './types'\n\nexport type BunShellState = {\n cwd: string\n isAlive: boolean\n currentProcess: ChildProcess | null\n abortController: AbortController | null\n backgroundProcesses: Map<string, BackgroundProcess>\n}\n\nexport function createInitialState(cwd: string): BunShellState {\n return {\n cwd,\n isAlive: true,\n currentProcess: null,\n abortController: null,\n backgroundProcesses: new Map(),\n }\n}\n", "import { spawn } from 'node:child_process'\nimport type { BunShellExecOptions } from './types'\nimport type { BunShellState } from './state'\nimport {\n buildSandboxCommand,\n isSandboxInitFailure,\n maybeAnnotateMacosSandboxStderr,\n} from './sandboxCommand'\nimport { createCancellableTextCollector } from './streamReaders'\nimport { getShellCmdForPlatform } from './shellCmd'\n\nfunction logError(error: unknown): void {\n if (process.env.NODE_ENV === 'test') {\n console.error(error)\n }\n}\n\ntype ExecResult = {\n stdout: string\n stderr: string\n code: number\n interrupted: boolean\n}\n\nfunction normalizeExitCode(\n exitCode: number | null,\n interrupted: boolean,\n): number {\n if (typeof exitCode === 'number' && Number.isFinite(exitCode)) return exitCode\n return interrupted ? 143 : 0\n}\n\nexport async function exec(\n state: BunShellState,\n command: string,\n abortSignal?: AbortSignal,\n timeout?: number,\n options?: BunShellExecOptions,\n): Promise<ExecResult> {\n const DEFAULT_TIMEOUT = 120_000\n const commandTimeout = timeout ?? DEFAULT_TIMEOUT\n\n state.abortController = new AbortController()\n let wasAborted = false\n const onAbort = () => {\n wasAborted = true\n try {\n state.abortController?.abort()\n } catch {}\n try {\n state.currentProcess?.kill()\n } catch {}\n }\n\n // Link external abort signal\n if (abortSignal) {\n abortSignal.addEventListener('abort', onAbort, { once: true })\n }\n\n const sandbox = options?.sandbox\n const shouldAttemptSandbox = sandbox?.enabled === true\n const executionCwd =\n shouldAttemptSandbox && sandbox?.chdir ? sandbox.chdir : state.cwd\n\n const runOnce = async (\n cmd: string[],\n cwdOverride?: string,\n ): Promise<ExecResult> => {\n state.currentProcess = spawn(cmd[0], cmd.slice(1), {\n cwd: cwdOverride ?? executionCwd,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n const processRef = state.currentProcess\n\n const exitPromise = new Promise<\n { kind: 'exit'; code: number | null } | { kind: 'error'; error: Error }\n >(resolve => {\n processRef.once('exit', code => resolve({ kind: 'exit', code }))\n processRef.once('error', error => resolve({ kind: 'error', error }))\n })\n\n const stdoutCollector = createCancellableTextCollector(processRef.stdout, {\n onChunk: options?.onStdoutChunk,\n })\n const stderrCollector = createCancellableTextCollector(processRef.stderr, {\n onChunk: options?.onStderrChunk,\n })\n\n // Use Promise.race for real timeout - don't trust signal option alone\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null\n const timeoutPromise = new Promise<'timeout'>(resolve => {\n timeoutHandle = setTimeout(() => resolve('timeout'), commandTimeout)\n })\n\n const result = await Promise.race([\n exitPromise.then(() => 'completed' as const),\n timeoutPromise,\n ])\n if (timeoutHandle) clearTimeout(timeoutHandle)\n\n if (result === 'timeout') {\n // Actually kill the process\n try {\n processRef.kill()\n } catch {}\n try {\n state.abortController?.abort()\n } catch {}\n\n try {\n await exitPromise\n } catch {}\n\n // Ensure we don't hang reading stdout/stderr if a background child keeps fds open.\n await Promise.race([\n Promise.allSettled([stdoutCollector.done, stderrCollector.done]),\n new Promise(resolve => setTimeout(resolve, 250)),\n ])\n await Promise.allSettled([\n stdoutCollector.cancel(),\n stderrCollector.cancel(),\n ])\n return {\n stdout: '',\n stderr: 'Command timed out',\n code: 143,\n interrupted: true,\n }\n }\n\n // Process completed normally.\n // NOTE: stdout/stderr pipes may never reach EOF if the command backgrounds a child\n // process (e.g. `python -m http.server &`). In that case, we drain briefly and then\n // cancel readers to avoid hanging forever.\n await Promise.race([\n Promise.allSettled([stdoutCollector.done, stderrCollector.done]),\n new Promise(resolve => setTimeout(resolve, 250)),\n ])\n await Promise.allSettled([\n stdoutCollector.cancel(),\n stderrCollector.cancel(),\n ])\n\n const stdout = stdoutCollector.getText()\n let stderr = stderrCollector.getText()\n const interrupted =\n wasAborted ||\n abortSignal?.aborted === true ||\n state.abortController?.signal.aborted === true\n const exitOutcome = await exitPromise\n if (exitOutcome.kind === 'error') {\n stderr = [stderr, exitOutcome.error.message].filter(Boolean).join('\\n')\n }\n let exitCode: number | null =\n exitOutcome.kind === 'exit' ? exitOutcome.code : null\n if (exitOutcome.kind === 'error') exitCode = 2\n\n return {\n stdout,\n stderr,\n code: normalizeExitCode(exitCode, interrupted),\n interrupted,\n }\n }\n\n try {\n if (shouldAttemptSandbox) {\n const sandboxCmd = buildSandboxCommand({\n command,\n sandbox: sandbox!,\n cwd: state.cwd,\n })\n if (!sandboxCmd) {\n if (sandbox?.require) {\n return {\n stdout: '',\n stderr:\n 'System sandbox is required but unavailable (missing bubblewrap or unsupported platform).',\n code: 2,\n interrupted: false,\n }\n }\n const fallback = await runOnce(\n getShellCmdForPlatform(process.platform, command, process.env),\n )\n return {\n ...fallback,\n stderr:\n `[sandbox] unavailable, ran without isolation.\\n${fallback.stderr}`.trim(),\n }\n }\n\n const sandboxed = await runOnce(sandboxCmd.cmd)\n sandboxed.stderr = maybeAnnotateMacosSandboxStderr(\n sandboxed.stderr,\n sandbox,\n )\n if (\n !sandboxed.interrupted &&\n sandboxed.code !== 0 &&\n isSandboxInitFailure(sandboxed.stderr) &&\n !sandbox?.require\n ) {\n const fallback = await runOnce(\n getShellCmdForPlatform(process.platform, command, process.env),\n )\n return {\n ...fallback,\n stderr:\n `[sandbox] failed to start, ran without isolation.\\n${fallback.stderr}`.trim(),\n }\n }\n\n return sandboxed\n }\n\n return await runOnce(\n getShellCmdForPlatform(process.platform, command, process.env),\n )\n } catch (error) {\n // Handle external abort\n if (state.abortController?.signal.aborted) {\n state.currentProcess?.kill()\n return {\n stdout: '',\n stderr: 'Command was interrupted',\n code: 143,\n interrupted: true,\n }\n }\n\n const errorStr = error instanceof Error ? error.message : String(error)\n logError(`Shell execution error: ${errorStr}`)\n\n return {\n stdout: '',\n stderr: errorStr,\n code: 2,\n interrupted: false,\n }\n } finally {\n if (abortSignal) {\n abortSignal.removeEventListener('abort', onAbort)\n }\n state.currentProcess = null\n state.abortController = null\n }\n}\n", "import { existsSync, mkdirSync } from 'fs'\nimport { dirname } from 'path'\nimport which from 'which'\nimport { buildLinuxBwrapCommand } from './linuxSandbox'\nimport { buildMacosSandboxExecCommand } from './macosSandbox'\nimport type {\n BunShellSandboxOptions,\n BunShellSandboxReadConfig,\n BunShellSandboxWriteConfig,\n} from './types'\n\nexport function maybeAnnotateMacosSandboxStderr(\n stderr: string,\n sandbox: BunShellSandboxOptions | undefined,\n): string {\n if (!stderr) return stderr\n if (!sandbox || sandbox.enabled !== true) return stderr\n const platform = sandbox.__platformOverride ?? process.platform\n if (platform !== 'darwin') return stderr\n if (stderr.includes('[sandbox]')) return stderr\n\n const lower = stderr.toLowerCase()\n const looksLikeSandboxViolation =\n stderr.includes('KODE_SANDBOX') ||\n (lower.includes('sandbox-exec') &&\n (lower.includes('deny') || lower.includes('operation not permitted'))) ||\n (lower.includes('operation not permitted') && lower.includes('sandbox'))\n\n if (!looksLikeSandboxViolation) return stderr\n\n return [\n stderr.trimEnd(),\n '',\n '[sandbox] This failure looks like a macOS sandbox denial. Adjust sandbox settings (e.g. /sandbox or .kode/settings.json) to grant the minimal required access.',\n ].join('\\n')\n}\n\nexport function isSandboxInitFailure(stderr: string): boolean {\n const s = stderr.toLowerCase()\n return (\n s.includes('bwrap:') ||\n s.includes('bubblewrap') ||\n (s.includes('namespace') && s.includes('failed'))\n )\n}\n\nexport function buildSandboxCommand(options: {\n command: string\n sandbox: BunShellSandboxOptions\n cwd: string\n}): { cmd: string[] } | null {\n const sandbox = options.sandbox\n if (!sandbox.enabled) return null\n const platform = sandbox.__platformOverride ?? process.platform\n\n const needsNetworkRestriction =\n sandbox.needsNetworkRestriction !== undefined\n ? sandbox.needsNetworkRestriction\n : sandbox.allowNetwork === true\n ? false\n : true\n\n const writeConfig: BunShellSandboxWriteConfig | undefined =\n sandbox.writeConfig ??\n (sandbox.writableRoots && sandbox.writableRoots.length > 0\n ? { allowOnly: sandbox.writableRoots.filter(Boolean) }\n : undefined)\n\n const readConfig: BunShellSandboxReadConfig | undefined = sandbox.readConfig\n\n const hasReadRestrictions = (readConfig?.denyOnly?.length ?? 0) > 0\n const hasWriteRestrictions = writeConfig !== undefined\n const hasNetworkRestrictions = needsNetworkRestriction === true\n\n // Reference CLI parity: if there are no restrictions, do not wrap.\n if (\n !hasReadRestrictions &&\n !hasWriteRestrictions &&\n !hasNetworkRestrictions\n ) {\n return null\n }\n\n const binShell =\n sandbox.binShell ?? (which.sync('bash', { nothrow: true }) ? 'bash' : 'sh')\n const binShellPath = which.sync(binShell, { nothrow: true }) ?? binShell\n\n const cwd = sandbox.chdir || options.cwd\n\n if (platform === 'linux') {\n const bwrapPath =\n sandbox.__bwrapPathOverride !== undefined\n ? sandbox.__bwrapPathOverride\n : (which.sync('bwrap', { nothrow: true }) ??\n which.sync('bubblewrap', { nothrow: true }))\n if (!bwrapPath) return null\n\n try {\n mkdirSync('/tmp/kode', { recursive: true })\n } catch {}\n\n const cmd = buildLinuxBwrapCommand({\n bwrapPath,\n command: options.command,\n needsNetworkRestriction,\n readConfig,\n writeConfig,\n enableWeakerNestedSandbox: sandbox.enableWeakerNestedSandbox,\n binShellPath,\n cwd,\n })\n\n return { cmd }\n }\n\n if (platform === 'darwin') {\n const sandboxExecPath =\n sandbox.__sandboxExecPathOverride !== undefined\n ? sandbox.__sandboxExecPathOverride\n : existsSync('/usr/bin/sandbox-exec')\n ? '/usr/bin/sandbox-exec'\n : which.sync('sandbox-exec', { nothrow: true })\n if (!sandboxExecPath) return null\n\n try {\n mkdirSync('/tmp/kode', { recursive: true })\n } catch {}\n try {\n mkdirSync('/private/tmp/kode', { recursive: true })\n } catch {}\n\n return {\n cmd: buildMacosSandboxExecCommand({\n sandboxExecPath,\n binShellPath,\n command: options.command,\n needsNetworkRestriction,\n httpProxyPort: sandbox.httpProxyPort,\n socksProxyPort: sandbox.socksProxyPort,\n allowUnixSockets: sandbox.allowUnixSockets,\n allowAllUnixSockets: sandbox.allowAllUnixSockets,\n allowLocalBinding: sandbox.allowLocalBinding,\n readConfig,\n writeConfig,\n }),\n }\n }\n\n // Windows / unknown platforms: sandbox not supported.\n return null\n}\n", "import { existsSync, realpathSync, statSync } from 'fs'\nimport { homedir } from 'os'\nimport { dirname, isAbsolute, resolve } from 'path'\nimport type {\n BunShellSandboxReadConfig,\n BunShellSandboxWriteConfig,\n} from './types'\n\nexport function hasGlobPattern(value: string): boolean {\n return (\n value.includes('*') ||\n value.includes('?') ||\n value.includes('[') ||\n value.includes(']')\n )\n}\n\n// Reference CLI parity: YT() in cli.js (Linux sandbox path normalization)\nexport function normalizeLinuxSandboxPath(\n input: string,\n options?: { cwd?: string; homeDir?: string },\n): string {\n const cwd = options?.cwd ?? process.cwd()\n const homeDir = options?.homeDir ?? homedir()\n\n let resolved = input\n if (input === '~') resolved = homeDir\n else if (input.startsWith('~/')) resolved = homeDir + input.slice(1)\n else if (input.startsWith('./') || input.startsWith('../'))\n resolved = resolve(cwd, input)\n else if (!isAbsolute(input)) resolved = resolve(cwd, input)\n\n if (hasGlobPattern(resolved)) {\n const prefix = resolved.split(/[*?[\\]]/)[0]\n if (prefix && prefix !== '/') {\n const dir = prefix.endsWith('/') ? prefix.slice(0, -1) : dirname(prefix)\n try {\n const real = realpathSync(dir)\n const suffix = resolved.slice(dir.length)\n return real + suffix\n } catch {\n // fall through\n }\n }\n return resolved\n }\n\n try {\n resolved = realpathSync(resolved)\n } catch {\n // ignore\n }\n\n return resolved\n}\n\nexport function buildLinuxBwrapFilesystemArgs(options: {\n cwd?: string\n homeDir?: string\n readConfig?: BunShellSandboxReadConfig\n writeConfig?: BunShellSandboxWriteConfig\n extraDenyWithinAllow?: string[]\n}): string[] {\n const cwd = options.cwd ?? process.cwd()\n const homeDir = options.homeDir ?? homedir()\n\n const args: string[] = []\n\n const writeConfig = options.writeConfig\n if (writeConfig) {\n args.push('--ro-bind', '/', '/')\n\n const allowedRoots: string[] = []\n\n // Dedicated temp directory for sandboxed runs.\n // Bind it explicitly so tools can create temp files even when '/' is ro-bound.\n if (existsSync('/tmp/kode')) {\n args.push('--bind', '/tmp/kode', '/tmp/kode')\n allowedRoots.push('/tmp/kode')\n }\n for (const raw of writeConfig.allowOnly ?? []) {\n const resolved = normalizeLinuxSandboxPath(raw, { cwd, homeDir })\n if (resolved.startsWith('/dev/')) continue\n if (!existsSync(resolved)) continue\n args.push('--bind', resolved, resolved)\n allowedRoots.push(resolved)\n }\n\n const denyWithinAllow = [\n ...(writeConfig.denyWithinAllow ?? []),\n ...(options.extraDenyWithinAllow ?? []),\n ]\n for (const raw of denyWithinAllow) {\n const resolved = normalizeLinuxSandboxPath(raw, { cwd, homeDir })\n if (resolved.startsWith('/dev/')) continue\n if (!existsSync(resolved)) continue\n const withinAllowed = allowedRoots.some(\n root => resolved === root || resolved.startsWith(root + '/'),\n )\n if (!withinAllowed) continue\n args.push('--ro-bind', resolved, resolved)\n }\n } else {\n args.push('--bind', '/', '/')\n }\n\n const denyRead = [...(options.readConfig?.denyOnly ?? [])]\n if (existsSync('/etc/ssh/ssh_config.d'))\n denyRead.push('/etc/ssh/ssh_config.d')\n\n for (const raw of denyRead) {\n const resolved = normalizeLinuxSandboxPath(raw, { cwd, homeDir })\n if (resolved.startsWith('/dev/')) continue\n if (!existsSync(resolved)) continue\n if (statSync(resolved).isDirectory()) args.push('--tmpfs', resolved)\n else args.push('--ro-bind', '/dev/null', resolved)\n }\n\n return args\n}\n\nexport function buildLinuxBwrapCommand(options: {\n bwrapPath: string\n command: string\n needsNetworkRestriction?: boolean\n readConfig?: BunShellSandboxReadConfig\n writeConfig?: BunShellSandboxWriteConfig\n enableWeakerNestedSandbox?: boolean\n binShellPath: string\n cwd?: string\n homeDir?: string\n}): string[] {\n const args: string[] = []\n\n // Safer defaults: isolate namespaces and ensure sandbox dies with the parent.\n args.push(\n '--die-with-parent',\n '--new-session',\n '--unshare-pid',\n '--unshare-uts',\n '--unshare-ipc',\n )\n if (options.needsNetworkRestriction) args.push('--unshare-net')\n\n args.push(\n ...buildLinuxBwrapFilesystemArgs({\n cwd: options.cwd,\n homeDir: options.homeDir,\n readConfig: options.readConfig,\n writeConfig: options.writeConfig,\n }),\n )\n\n // Provide a minimal /dev and reference CLI temp env.\n args.push(\n '--dev',\n '/dev',\n '--setenv',\n 'SANDBOX_RUNTIME',\n '1',\n '--setenv',\n 'TMPDIR',\n '/tmp/kode',\n )\n if (!options.enableWeakerNestedSandbox) args.push('--proc', '/proc')\n\n args.push('--', options.binShellPath, '-c', options.command)\n\n return [options.bwrapPath, ...args]\n}\n", "import { existsSync } from 'fs'\nimport { dirname } from 'path'\nimport { hasGlobPattern, normalizeLinuxSandboxPath } from './linuxSandbox'\nimport type {\n BunShellSandboxReadConfig,\n BunShellSandboxWriteConfig,\n} from './types'\n\nfunction buildSandboxEnvAssignments(options?: {\n httpProxyPort?: number\n socksProxyPort?: number\n platform?: NodeJS.Platform\n}): string[] {\n const httpProxyPort = options?.httpProxyPort\n const socksProxyPort = options?.socksProxyPort\n const platform = options?.platform ?? process.platform\n\n const env: string[] = ['SANDBOX_RUNTIME=1', 'TMPDIR=/tmp/kode']\n if (!httpProxyPort && !socksProxyPort) return env\n\n const noProxy = [\n 'localhost',\n '127.0.0.1',\n '::1',\n '*.local',\n '.local',\n '169.254.0.0/16',\n '10.0.0.0/8',\n '172.16.0.0/12',\n '192.168.0.0/16',\n ].join(',')\n env.push(`NO_PROXY=${noProxy}`)\n env.push(`no_proxy=${noProxy}`)\n\n if (httpProxyPort) {\n env.push(`HTTP_PROXY=http://localhost:${httpProxyPort}`)\n env.push(`HTTPS_PROXY=http://localhost:${httpProxyPort}`)\n env.push(`http_proxy=http://localhost:${httpProxyPort}`)\n env.push(`https_proxy=http://localhost:${httpProxyPort}`)\n }\n\n if (socksProxyPort) {\n env.push(`ALL_PROXY=socks5h://localhost:${socksProxyPort}`)\n env.push(`all_proxy=socks5h://localhost:${socksProxyPort}`)\n if (platform === 'darwin') {\n env.push(\n `GIT_SSH_COMMAND=\"ssh -o ProxyCommand='nc -X 5 -x localhost:${socksProxyPort} %h %p'\"`,\n )\n }\n env.push(`FTP_PROXY=socks5h://localhost:${socksProxyPort}`)\n env.push(`ftp_proxy=socks5h://localhost:${socksProxyPort}`)\n env.push(`RSYNC_PROXY=localhost:${socksProxyPort}`)\n env.push(\n `DOCKER_HTTP_PROXY=http://localhost:${httpProxyPort || socksProxyPort}`,\n )\n env.push(\n `DOCKER_HTTPS_PROXY=http://localhost:${httpProxyPort || socksProxyPort}`,\n )\n if (httpProxyPort) {\n env.push('CLOUDSDK_PROXY_TYPE=https')\n env.push('CLOUDSDK_PROXY_ADDRESS=localhost')\n env.push(`CLOUDSDK_PROXY_PORT=${httpProxyPort}`)\n }\n env.push(`GRPC_PROXY=socks5h://localhost:${socksProxyPort}`)\n env.push(`grpc_proxy=socks5h://localhost:${socksProxyPort}`)\n }\n\n return env\n}\n\nfunction escapeRegexForSandboxGlobPattern(pattern: string): string {\n return (\n '^' +\n pattern\n .replace(/[.^$+{}()|\\\\]/g, '\\\\$&')\n .replace(/\\[([^\\]]*?)$/g, '\\\\[$1')\n .replace(/\\*\\*\\//g, '__GLOBSTAR_SLASH__')\n .replace(/\\*\\*/g, '__GLOBSTAR__')\n .replace(/\\*/g, '[^/]*')\n .replace(/\\?/g, '[^/]')\n .replace(/__GLOBSTAR_SLASH__/g, '(.*/)?')\n .replace(/__GLOBSTAR__/g, '.*') +\n '$'\n )\n}\n\nfunction getMacosTmpDirWriteAllowPaths(): string[] {\n const tmpdirValue = process.env.TMPDIR\n if (!tmpdirValue) return []\n if (!tmpdirValue.match(/^\\/(private\\/)?var\\/folders\\/[^/]{2}\\/[^/]+\\/T\\/?$/))\n return []\n const base = tmpdirValue.replace(/\\/T\\/?$/, '')\n if (base.startsWith('/private/var/'))\n return [base, base.replace('/private', '')]\n if (base.startsWith('/var/')) return [base, '/private' + base]\n return [base]\n}\n\nfunction buildMacosSandboxDenyUnlinkRules(\n paths: string[],\n logTag: string,\n): string[] {\n const lines: string[] = []\n for (const raw of paths) {\n const normalized = normalizeLinuxSandboxPath(raw)\n if (hasGlobPattern(normalized)) {\n const regex = escapeRegexForSandboxGlobPattern(normalized)\n lines.push(\n '(deny file-write-unlink',\n ` (regex ${JSON.stringify(regex)})`,\n ` (with message \"${logTag}\"))`,\n )\n\n const prefix = normalized.split(/[*?[\\]]/)[0]\n if (prefix && prefix !== '/') {\n const literal = prefix.endsWith('/')\n ? prefix.slice(0, -1)\n : dirname(prefix)\n lines.push(\n '(deny file-write-unlink',\n ` (literal ${JSON.stringify(literal)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n continue\n }\n\n lines.push(\n '(deny file-write-unlink',\n ` (subpath ${JSON.stringify(normalized)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n return lines\n}\n\nfunction buildMacosSandboxFileReadRules(\n readConfig: BunShellSandboxReadConfig | undefined,\n logTag: string,\n): string[] {\n if (!readConfig) return ['(allow file-read*)']\n\n const lines: string[] = ['(allow file-read*)']\n for (const raw of readConfig.denyOnly ?? []) {\n const normalized = normalizeLinuxSandboxPath(raw)\n if (hasGlobPattern(normalized)) {\n const regex = escapeRegexForSandboxGlobPattern(normalized)\n lines.push(\n '(deny file-read*',\n ` (regex ${JSON.stringify(regex)})`,\n ` (with message \"${logTag}\"))`,\n )\n } else {\n lines.push(\n '(deny file-read*',\n ` (subpath ${JSON.stringify(normalized)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n }\n\n lines.push(\n ...buildMacosSandboxDenyUnlinkRules(readConfig.denyOnly ?? [], logTag),\n )\n return lines\n}\n\nfunction buildMacosSandboxFileWriteRules(\n writeConfig: BunShellSandboxWriteConfig | undefined,\n logTag: string,\n): string[] {\n if (!writeConfig) return ['(allow file-write*)']\n\n const lines: string[] = []\n\n // Common safe sink used by shells and CLI tools.\n lines.push(\n '(allow file-write*',\n ` (literal \"/dev/null\")`,\n ` (with message \"${logTag}\"))`,\n )\n\n for (const raw of getMacosTmpDirWriteAllowPaths()) {\n const normalized = normalizeLinuxSandboxPath(raw)\n lines.push(\n '(allow file-write*',\n ` (subpath ${JSON.stringify(normalized)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n\n for (const raw of writeConfig.allowOnly ?? []) {\n const normalized = normalizeLinuxSandboxPath(raw)\n if (hasGlobPattern(normalized)) {\n const regex = escapeRegexForSandboxGlobPattern(normalized)\n lines.push(\n '(allow file-write*',\n ` (regex ${JSON.stringify(regex)})`,\n ` (with message \"${logTag}\"))`,\n )\n } else {\n lines.push(\n '(allow file-write*',\n ` (subpath ${JSON.stringify(normalized)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n }\n\n for (const raw of writeConfig.denyWithinAllow ?? []) {\n const normalized = normalizeLinuxSandboxPath(raw)\n if (hasGlobPattern(normalized)) {\n const regex = escapeRegexForSandboxGlobPattern(normalized)\n lines.push(\n '(deny file-write*',\n ` (regex ${JSON.stringify(regex)})`,\n ` (with message \"${logTag}\"))`,\n )\n } else {\n lines.push(\n '(deny file-write*',\n ` (subpath ${JSON.stringify(normalized)})`,\n ` (with message \"${logTag}\"))`,\n )\n }\n }\n\n lines.push(\n ...buildMacosSandboxDenyUnlinkRules(\n writeConfig.denyWithinAllow ?? [],\n logTag,\n ),\n )\n return lines\n}\n\nexport function buildMacosSandboxExecCommand(options: {\n sandboxExecPath: string\n binShellPath: string\n command: string\n needsNetworkRestriction: boolean\n httpProxyPort?: number\n socksProxyPort?: number\n allowUnixSockets?: string[]\n allowAllUnixSockets?: boolean\n allowLocalBinding?: boolean\n readConfig?: BunShellSandboxReadConfig\n writeConfig?: BunShellSandboxWriteConfig\n}): string[] {\n const logTag = 'KODE_SANDBOX'\n\n const profileLines: string[] = [\n '(version 1)',\n `(deny default (with message \"${logTag}\"))`,\n '',\n '; Kode sandbox-exec profile (reference CLI compatible)',\n '',\n // Keep this permissive enough for typical CLI tools (git, node, etc).\n '(allow process*)',\n '(allow sysctl-read)',\n '(allow mach-lookup)',\n '',\n '; Network',\n ]\n\n const allowUnixSockets = options.allowUnixSockets ?? []\n if (!options.needsNetworkRestriction) {\n profileLines.push('(allow network*)')\n } else {\n if (options.allowLocalBinding) {\n profileLines.push('(allow network-bind (local ip \"localhost:*\"))')\n profileLines.push('(allow network-inbound (local ip \"localhost:*\"))')\n profileLines.push('(allow network-outbound (local ip \"localhost:*\"))')\n }\n if (options.allowAllUnixSockets) {\n profileLines.push('(allow network* (subpath \"/\"))')\n } else if (allowUnixSockets.length > 0) {\n for (const socketPath of allowUnixSockets) {\n const normalized = normalizeLinuxSandboxPath(socketPath)\n profileLines.push(\n `(allow network* (subpath ${JSON.stringify(normalized)}))`,\n )\n }\n }\n if (options.httpProxyPort !== undefined) {\n profileLines.push(\n `(allow network-bind (local ip \"localhost:${options.httpProxyPort}\"))`,\n )\n profileLines.push(\n `(allow network-inbound (local ip \"localhost:${options.httpProxyPort}\"))`,\n )\n profileLines.push(\n `(allow network-outbound (remote ip \"localhost:${options.httpProxyPort}\"))`,\n )\n }\n if (options.socksProxyPort !== undefined) {\n profileLines.push(\n `(allow network-bind (local ip \"localhost:${options.socksProxyPort}\"))`,\n )\n profileLines.push(\n `(allow network-inbound (local ip \"localhost:${options.socksProxyPort}\"))`,\n )\n profileLines.push(\n `(allow network-outbound (remote ip \"localhost:${options.socksProxyPort}\"))`,\n )\n }\n }\n\n profileLines.push('')\n profileLines.push('; File read')\n profileLines.push(\n ...buildMacosSandboxFileReadRules(options.readConfig, logTag),\n )\n profileLines.push('')\n profileLines.push('; File write')\n profileLines.push(\n ...buildMacosSandboxFileWriteRules(options.writeConfig, logTag),\n )\n\n const profile = profileLines.join('\\n')\n const envAssignments = buildSandboxEnvAssignments({\n httpProxyPort: options.httpProxyPort,\n socksProxyPort: options.socksProxyPort,\n platform: 'darwin',\n })\n const envPrefix = envAssignments.length\n ? `export ${envAssignments.join(' ')} && `\n : ''\n\n return [\n options.sandboxExecPath,\n '-p',\n profile,\n options.binShellPath,\n '-c',\n `${envPrefix}${options.command}`,\n ]\n}\n", "function logError(error: unknown): void {\n if (process.env.NODE_ENV === 'test') {\n console.error(error)\n }\n}\n\nexport function startStreamReader(\n stream: NodeJS.ReadableStream | null | undefined,\n append: (chunk: string) => void,\n): void {\n if (!stream) return\n try {\n stream.setEncoding('utf8')\n } catch {}\n\n stream.on('data', (chunk: unknown) => {\n const text =\n typeof chunk === 'string'\n ? chunk\n : Buffer.isBuffer(chunk)\n ? chunk.toString('utf8')\n : String(chunk)\n if (text) append(text)\n })\n stream.on('error', err => {\n logError(\n `Stream read error: ${err instanceof Error ? err.message : String(err)}`,\n )\n })\n}\n\nexport function createCancellableTextCollector(\n stream: NodeJS.ReadableStream | null | undefined,\n options?: { onChunk?: (chunk: string) => void; collectText?: boolean },\n): {\n getText: () => string\n done: Promise<void>\n cancel: () => Promise<void>\n} {\n let text = ''\n const collectText = options?.collectText !== false\n if (!stream) {\n return {\n getText: () => text,\n done: Promise.resolve(),\n cancel: async () => {},\n }\n }\n\n let doneResolve: (() => void) | null = null\n const done = new Promise<void>(resolve => {\n doneResolve = resolve\n })\n\n let finished = false\n let cancelled = false\n\n const finish = () => {\n if (finished) return\n finished = true\n cleanup()\n doneResolve?.()\n doneResolve = null\n }\n\n const onData = (chunk: unknown) => {\n const value =\n typeof chunk === 'string'\n ? chunk\n : Buffer.isBuffer(chunk)\n ? chunk.toString('utf8')\n : String(chunk)\n if (!value) return\n if (collectText) text += value\n options?.onChunk?.(value)\n }\n\n const onError = (err: unknown) => {\n if (!cancelled) {\n logError(\n `Stream read error: ${err instanceof Error ? err.message : String(err)}`,\n )\n }\n finish()\n }\n\n const onEnd = () => finish()\n const onClose = () => finish()\n\n const hasDestroy = (\n value: NodeJS.ReadableStream,\n ): value is NodeJS.ReadableStream & { destroy: () => unknown } => {\n return typeof (value as { destroy?: unknown }).destroy === 'function'\n }\n\n const cleanup = () => {\n stream.removeListener('data', onData)\n stream.removeListener('error', onError)\n stream.removeListener('end', onEnd)\n stream.removeListener('close', onClose)\n }\n\n try {\n stream.setEncoding('utf8')\n } catch {}\n\n stream.on('data', onData)\n stream.on('error', onError)\n stream.on('end', onEnd)\n stream.on('close', onClose)\n\n return {\n getText: () => text,\n done,\n cancel: async () => {\n cancelled = true\n try {\n if (hasDestroy(stream)) {\n stream.destroy()\n }\n } catch {}\n finish()\n },\n }\n}\n", "import { existsSync } from 'fs'\n\nexport function getShellCmdForPlatform(\n platform: NodeJS.Platform,\n command: string,\n env: NodeJS.ProcessEnv = process.env,\n): string[] {\n if (platform === 'win32') {\n const comspec =\n typeof env.ComSpec === 'string' && env.ComSpec.length > 0\n ? env.ComSpec\n : 'cmd'\n return [comspec, '/c', command]\n }\n const sh = existsSync('/bin/sh') ? '/bin/sh' : 'sh'\n return [sh, '-c', command]\n}\n", "import { spawn } from 'node:child_process'\nimport type {\n BackgroundProcess,\n BunShellExecOptions,\n BunShellPromotableExec,\n BunShellPromotableExecStatus,\n} from './types'\nimport type { BunShellState } from './state'\nimport { appendTaskOutput, touchTaskOutputFile } from '../taskOutputStore'\nimport {\n buildSandboxCommand,\n maybeAnnotateMacosSandboxStderr,\n} from './sandboxCommand'\nimport { createCancellableTextCollector } from './streamReaders'\nimport { getShellCmdForPlatform } from './shellCmd'\nimport { makeBackgroundTaskId } from './ids'\n\ntype ExecResult = {\n stdout: string\n stderr: string\n code: number\n interrupted: boolean\n}\n\nfunction normalizeExitCode(code: number | null, interrupted: boolean): number {\n if (typeof code === 'number' && Number.isFinite(code)) return code\n return interrupted ? 143 : 0\n}\n\nexport function execPromotable(\n state: BunShellState,\n command: string,\n abortSignal?: AbortSignal,\n timeout?: number,\n options?: BunShellExecOptions,\n): BunShellPromotableExec {\n const DEFAULT_TIMEOUT = 120_000\n const commandTimeout = timeout ?? DEFAULT_TIMEOUT\n const startedAt = Date.now()\n\n const sandbox = options?.sandbox\n const shouldAttemptSandbox = sandbox?.enabled === true\n const executionCwd =\n shouldAttemptSandbox && sandbox?.chdir ? sandbox.chdir : state.cwd\n\n if (abortSignal?.aborted) {\n return {\n get status(): BunShellPromotableExecStatus {\n return 'killed'\n },\n background: () => null,\n kill: () => {},\n result: Promise.resolve({\n stdout: '',\n stderr: 'Command aborted before execution',\n code: 145,\n interrupted: true,\n }),\n }\n }\n\n const sandboxCmd = shouldAttemptSandbox\n ? buildSandboxCommand({ command, sandbox: sandbox!, cwd: state.cwd })\n : null\n if (shouldAttemptSandbox && sandbox?.require && !sandboxCmd) {\n return {\n get status(): BunShellPromotableExecStatus {\n return 'killed'\n },\n background: () => null,\n kill: () => {},\n result: Promise.resolve({\n stdout: '',\n stderr:\n 'System sandbox is required but unavailable (missing bubblewrap or unsupported platform).',\n code: 2,\n interrupted: false,\n }),\n }\n }\n\n const cmdToRun = sandboxCmd\n ? sandboxCmd.cmd\n : getShellCmdForPlatform(process.platform, command, process.env)\n\n const internalAbortController = new AbortController()\n state.abortController = internalAbortController\n\n let status: BunShellPromotableExecStatus = 'running'\n let backgroundProcess: BackgroundProcess | null = null\n let backgroundTaskId: string | null = null\n let stdout = ''\n let stderr = ''\n let wasAborted = false\n let wasBackgrounded = false\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null\n let timedOut = false\n let onTimeoutCb:\n | ((background: (bashId?: string) => { bashId: string } | null) => void)\n | null = null\n\n const countNonEmptyLines = (chunk: string): number =>\n chunk.split('\\n').filter(line => line.length > 0).length\n\n const spawnedProcess = spawn(cmdToRun[0], cmdToRun.slice(1), {\n cwd: executionCwd,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n state.currentProcess = spawnedProcess\n\n const exitPromise = new Promise<\n { kind: 'exit'; code: number | null } | { kind: 'error'; error: Error }\n >(resolve => {\n spawnedProcess.once('exit', code => resolve({ kind: 'exit', code }))\n spawnedProcess.once('error', error => resolve({ kind: 'error', error }))\n })\n\n const onAbort = () => {\n if (status === 'backgrounded') return\n wasAborted = true\n try {\n internalAbortController.abort()\n } catch {}\n try {\n spawnedProcess.kill()\n } catch {}\n if (backgroundProcess) backgroundProcess.interrupted = true\n }\n\n const clearForegroundGuards = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n timeoutHandle = null\n }\n if (abortSignal) {\n abortSignal.removeEventListener('abort', onAbort)\n }\n }\n\n if (abortSignal) {\n abortSignal.addEventListener('abort', onAbort, { once: true })\n if (abortSignal.aborted) onAbort()\n }\n\n const stdoutCollector = createCancellableTextCollector(\n spawnedProcess.stdout,\n {\n collectText: false,\n onChunk: chunk => {\n stdout += chunk\n options?.onStdoutChunk?.(chunk)\n if (backgroundProcess) {\n backgroundProcess.stdout = stdout\n appendTaskOutput(backgroundProcess.id, chunk)\n backgroundProcess.stdoutLineCount += countNonEmptyLines(chunk)\n }\n },\n },\n )\n const stderrCollector = createCancellableTextCollector(\n spawnedProcess.stderr,\n {\n collectText: false,\n onChunk: chunk => {\n stderr += chunk\n options?.onStderrChunk?.(chunk)\n if (backgroundProcess) {\n backgroundProcess.stderr = stderr\n appendTaskOutput(backgroundProcess.id, chunk)\n backgroundProcess.stderrLineCount += countNonEmptyLines(chunk)\n }\n },\n },\n )\n\n timeoutHandle = setTimeout(() => {\n if (status !== 'running') return\n if (onTimeoutCb) {\n onTimeoutCb(background)\n return\n }\n timedOut = true\n try {\n spawnedProcess.kill()\n } catch {}\n try {\n internalAbortController.abort()\n } catch {}\n }, commandTimeout)\n\n const background = (bashId?: string): { bashId: string } | null => {\n if (backgroundTaskId) return { bashId: backgroundTaskId }\n if (status !== 'running') return null\n\n backgroundTaskId = bashId ?? makeBackgroundTaskId()\n const outputFile = touchTaskOutputFile(backgroundTaskId)\n if (stdout) appendTaskOutput(backgroundTaskId, stdout)\n if (stderr) appendTaskOutput(backgroundTaskId, stderr)\n\n status = 'backgrounded'\n wasBackgrounded = true\n clearForegroundGuards()\n\n backgroundProcess = {\n id: backgroundTaskId,\n command,\n stdout,\n stderr,\n stdoutCursor: 0,\n stderrCursor: 0,\n stdoutLineCount: countNonEmptyLines(stdout),\n stderrLineCount: countNonEmptyLines(stderr),\n lastReportedStdoutLines: 0,\n lastReportedStderrLines: 0,\n code: null,\n interrupted: false,\n killed: false,\n timedOut: false,\n completionStatusSentInAttachment: false,\n notified: false,\n startedAt,\n timeoutAt: Number.POSITIVE_INFINITY,\n process: spawnedProcess,\n abortController: internalAbortController,\n timeoutHandle: null,\n cwd: executionCwd,\n outputFile,\n }\n\n state.backgroundProcesses.set(backgroundTaskId, backgroundProcess)\n\n // Foreground process is now managed as a background task.\n state.currentProcess = null\n state.abortController = null\n\n return { bashId: backgroundTaskId }\n }\n\n const kill = () => {\n status = 'killed'\n try {\n spawnedProcess.kill()\n } catch {}\n try {\n internalAbortController.abort()\n } catch {}\n\n if (backgroundProcess) {\n backgroundProcess.interrupted = true\n backgroundProcess.killed = true\n }\n }\n\n const result = (async (): Promise<ExecResult> => {\n try {\n const exitOutcome = await exitPromise\n if (exitOutcome.kind === 'error') {\n stderr = [stderr, exitOutcome.error.message].filter(Boolean).join('\\n')\n }\n\n if (status === 'running' || status === 'backgrounded')\n status = 'completed'\n\n if (backgroundProcess) {\n backgroundProcess.code =\n exitOutcome.kind === 'exit' ? (exitOutcome.code ?? 0) : 2\n backgroundProcess.interrupted =\n backgroundProcess.interrupted ||\n wasAborted ||\n internalAbortController.signal.aborted\n }\n\n if (!wasBackgrounded) {\n await Promise.race([\n Promise.allSettled([stdoutCollector.done, stderrCollector.done]),\n new Promise(resolve => setTimeout(resolve, 250)),\n ])\n await Promise.allSettled([\n stdoutCollector.cancel(),\n stderrCollector.cancel(),\n ])\n }\n\n const interrupted =\n wasAborted ||\n abortSignal?.aborted === true ||\n internalAbortController.signal.aborted === true ||\n timedOut\n\n let code: number | null =\n exitOutcome.kind === 'exit' ? exitOutcome.code : null\n if (exitOutcome.kind === 'error') code = 2\n\n const stderrWithTimeout = timedOut\n ? [`Command timed out`, stderr].filter(Boolean).join('\\n')\n : stderr\n const stderrAnnotated = sandboxCmd\n ? maybeAnnotateMacosSandboxStderr(stderrWithTimeout, sandbox)\n : stderrWithTimeout\n\n return {\n stdout,\n stderr: stderrAnnotated,\n code: normalizeExitCode(code, interrupted),\n interrupted,\n }\n } finally {\n clearForegroundGuards()\n\n if (state.currentProcess === spawnedProcess) {\n state.currentProcess = null\n state.abortController = null\n }\n }\n })()\n\n const execHandle: BunShellPromotableExec = {\n get status() {\n return status\n },\n background,\n kill,\n result,\n }\n\n execHandle.onTimeout = cb => {\n onTimeoutCb = cb\n }\n\n // Keep background task metadata updated even if the caller doesn't await `result`.\n result\n .then(r => {\n if (!backgroundProcess || !backgroundTaskId) return\n backgroundProcess.code = r.code\n backgroundProcess.interrupted = r.interrupted\n })\n .catch(() => {\n if (!backgroundProcess) return\n backgroundProcess.code = backgroundProcess.code ?? 2\n })\n\n return execHandle\n}\n", "import {\n appendFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n statSync,\n writeFileSync,\n} from 'fs'\nimport { dirname, join } from 'path'\nimport { homedir } from 'os'\n\nfunction getKodeBaseDir(): string {\n return (\n process.env.KODE_CONFIG_DIR ??\n process.env.CLAUDE_CONFIG_DIR ??\n join(homedir(), '.kode')\n )\n}\n\n// Reference CLI parity: project directory is a sanitized cwd string.\nfunction getProjectDir(cwd: string): string {\n return cwd.replace(/[^a-zA-Z0-9]/g, '-')\n}\n\n// Keep a stable root for the entire process lifetime (Kode does not process.chdir).\nconst PROJECT_ROOT = process.cwd()\n\nexport function getTaskOutputsDir(): string {\n return join(getKodeBaseDir(), getProjectDir(PROJECT_ROOT), 'tasks')\n}\n\nexport function getTaskOutputFilePath(taskId: string): string {\n return join(getTaskOutputsDir(), `${taskId}.output`)\n}\n\nexport function ensureTaskOutputsDirExists(): void {\n const dir = getTaskOutputsDir()\n if (existsSync(dir)) return\n mkdirSync(dir, { recursive: true })\n}\n\nexport function touchTaskOutputFile(taskId: string): string {\n ensureTaskOutputsDirExists()\n const filePath = getTaskOutputFilePath(taskId)\n if (!existsSync(filePath)) {\n const parent = dirname(filePath)\n if (!existsSync(parent)) mkdirSync(parent, { recursive: true })\n writeFileSync(filePath, '', 'utf8')\n }\n return filePath\n}\n\nexport function appendTaskOutput(taskId: string, chunk: string): void {\n try {\n ensureTaskOutputsDirExists()\n appendFileSync(getTaskOutputFilePath(taskId), chunk, 'utf8')\n } catch {\n // Best-effort: never crash the session on output persistence failures.\n }\n}\n\nexport function readTaskOutputDelta(\n taskId: string,\n offset: number,\n): {\n content: string\n newOffset: number\n} {\n try {\n const filePath = getTaskOutputFilePath(taskId)\n if (!existsSync(filePath)) return { content: '', newOffset: offset }\n const size = statSync(filePath).size\n if (size <= offset) return { content: '', newOffset: offset }\n return {\n content: readFileSync(filePath, 'utf8').slice(offset),\n newOffset: size,\n }\n } catch {\n return { content: '', newOffset: offset }\n }\n}\n\nexport function readTaskOutput(taskId: string): string {\n try {\n const filePath = getTaskOutputFilePath(taskId)\n if (!existsSync(filePath)) return ''\n return readFileSync(filePath, 'utf8')\n } catch {\n return ''\n }\n}\n", "import { randomUUID } from 'crypto'\n\nexport function makeBackgroundTaskId(): string {\n // Reference CLI parity: local_bash task IDs are prefixed with \"b\".\n return `b${randomUUID().replace(/-/g, '').slice(0, 6)}`\n}\n", "import { spawn } from 'node:child_process'\nimport type {\n BackgroundProcess,\n BackgroundShellStatusAttachment,\n BashNotification,\n BunShellExecOptions,\n} from './types'\nimport type { BunShellState } from './state'\nimport {\n appendTaskOutput,\n getTaskOutputFilePath,\n touchTaskOutputFile,\n} from '../taskOutputStore'\nimport {\n buildSandboxCommand,\n maybeAnnotateMacosSandboxStderr,\n} from './sandboxCommand'\nimport { startStreamReader } from './streamReaders'\nimport { getShellCmdForPlatform } from './shellCmd'\nimport { makeBackgroundTaskId } from './ids'\n\nexport function execInBackground(\n state: BunShellState,\n command: string,\n timeout?: number,\n options?: BunShellExecOptions,\n): { bashId: string } {\n const DEFAULT_TIMEOUT = 120_000\n const commandTimeout = timeout ?? DEFAULT_TIMEOUT\n const abortController = new AbortController()\n\n const sandbox = options?.sandbox\n const sandboxCmd =\n sandbox?.enabled === true\n ? buildSandboxCommand({ command, sandbox, cwd: state.cwd })\n : null\n const executionCwd =\n sandbox?.enabled === true && sandbox?.chdir ? sandbox.chdir : state.cwd\n\n if (sandbox?.enabled === true && sandbox?.require && !sandboxCmd) {\n throw new Error(\n 'System sandbox is required but unavailable (missing bubblewrap or unsupported platform).',\n )\n }\n\n const cmdToRun = sandboxCmd\n ? sandboxCmd.cmd\n : getShellCmdForPlatform(process.platform, command, process.env)\n\n const bashId = makeBackgroundTaskId()\n const outputFile = touchTaskOutputFile(bashId)\n\n const childProcess = spawn(cmdToRun[0], cmdToRun.slice(1), {\n cwd: executionCwd,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n const exitPromise = new Promise<\n { kind: 'exit'; code: number | null } | { kind: 'error'; error: Error }\n >(resolve => {\n childProcess.once('exit', code => resolve({ kind: 'exit', code }))\n childProcess.once('error', error => resolve({ kind: 'error', error }))\n })\n const timeoutHandle = setTimeout(() => {\n abortController.abort()\n backgroundProcess.timedOut = true\n childProcess.kill()\n }, commandTimeout)\n\n const backgroundProcess: BackgroundProcess = {\n id: bashId,\n command,\n stdout: '',\n stderr: '',\n stdoutCursor: 0,\n stderrCursor: 0,\n stdoutLineCount: 0,\n stderrLineCount: 0,\n lastReportedStdoutLines: 0,\n lastReportedStderrLines: 0,\n code: null,\n interrupted: false,\n killed: false,\n timedOut: false,\n completionStatusSentInAttachment: false,\n notified: false,\n startedAt: Date.now(),\n timeoutAt: Date.now() + commandTimeout,\n process: childProcess,\n abortController,\n timeoutHandle,\n cwd: executionCwd,\n outputFile,\n }\n\n const countNonEmptyLines = (chunk: string): number =>\n chunk.split('\\n').filter(line => line.length > 0).length\n\n startStreamReader(childProcess.stdout, chunk => {\n backgroundProcess.stdout += chunk\n appendTaskOutput(bashId, chunk)\n backgroundProcess.stdoutLineCount += countNonEmptyLines(chunk)\n })\n startStreamReader(childProcess.stderr, chunk => {\n backgroundProcess.stderr += chunk\n appendTaskOutput(bashId, chunk)\n backgroundProcess.stderrLineCount += countNonEmptyLines(chunk)\n })\n\n exitPromise.then(exitOutcome => {\n backgroundProcess.code =\n exitOutcome.kind === 'exit' ? (exitOutcome.code ?? 0) : 2\n if (exitOutcome.kind === 'error') {\n backgroundProcess.stderr = [\n backgroundProcess.stderr,\n exitOutcome.error.message,\n ]\n .filter(Boolean)\n .join('\\n')\n }\n backgroundProcess.interrupted =\n backgroundProcess.interrupted || abortController.signal.aborted\n if (sandbox?.enabled === true) {\n backgroundProcess.stderr = maybeAnnotateMacosSandboxStderr(\n backgroundProcess.stderr,\n sandbox,\n )\n }\n if (backgroundProcess.timeoutHandle) {\n clearTimeout(backgroundProcess.timeoutHandle)\n backgroundProcess.timeoutHandle = null\n }\n })\n\n state.backgroundProcesses.set(bashId, backgroundProcess)\n return { bashId }\n}\n\nexport function getBackgroundOutput(\n state: BunShellState,\n shellId: string,\n): {\n stdout: string\n stderr: string\n code: number | null\n interrupted: boolean\n killed: boolean\n timedOut: boolean\n running: boolean\n command: string\n cwd: string\n startedAt: number\n timeoutAt: number\n outputFile: string\n} | null {\n const proc = state.backgroundProcesses.get(shellId)\n if (!proc) return null\n const running = proc.code === null && !proc.interrupted\n return {\n stdout: proc.stdout,\n stderr: proc.stderr,\n code: proc.code,\n interrupted: proc.interrupted,\n killed: proc.killed,\n timedOut: proc.timedOut,\n running,\n command: proc.command,\n cwd: proc.cwd,\n startedAt: proc.startedAt,\n timeoutAt: proc.timeoutAt,\n outputFile: proc.outputFile,\n }\n}\n\nexport function readBackgroundOutput(\n state: BunShellState,\n bashId: string,\n options?: { filter?: string },\n): {\n shellId: string\n command: string\n cwd: string\n startedAt: number\n timeoutAt: number\n status: 'running' | 'completed' | 'failed' | 'killed'\n exitCode: number | null\n stdout: string\n stderr: string\n stdoutLines: number\n stderrLines: number\n filterPattern?: string\n} | null {\n const proc = state.backgroundProcesses.get(bashId)\n if (!proc) return null\n\n const stdoutDelta = proc.stdout.slice(proc.stdoutCursor)\n const stderrDelta = proc.stderr.slice(proc.stderrCursor)\n\n // Consume all new output (incremental semantics: only new output since last check)\n proc.stdoutCursor = proc.stdout.length\n proc.stderrCursor = proc.stderr.length\n\n const stdoutLines = stdoutDelta === '' ? 0 : stdoutDelta.split('\\n').length\n const stderrLines = stderrDelta === '' ? 0 : stderrDelta.split('\\n').length\n\n let stdoutToReturn = stdoutDelta\n let stderrToReturn = stderrDelta\n\n const filter = options?.filter?.trim()\n if (filter) {\n const regex = new RegExp(filter, 'i')\n stdoutToReturn = stdoutDelta\n .split('\\n')\n .filter(line => regex.test(line))\n .join('\\n')\n stderrToReturn = stderrDelta\n .split('\\n')\n .filter(line => regex.test(line))\n .join('\\n')\n }\n\n const status: 'running' | 'completed' | 'failed' | 'killed' = proc.killed\n ? 'killed'\n : proc.code === null\n ? 'running'\n : proc.code === 0\n ? 'completed'\n : 'failed'\n\n return {\n shellId: bashId,\n command: proc.command,\n cwd: proc.cwd,\n startedAt: proc.startedAt,\n timeoutAt: proc.timeoutAt,\n status,\n exitCode: proc.code,\n stdout: stdoutToReturn,\n stderr: stderrToReturn,\n stdoutLines,\n stderrLines,\n ...(filter ? { filterPattern: filter } : {}),\n }\n}\n\nexport function killBackgroundShell(\n state: BunShellState,\n shellId: string,\n): boolean {\n const proc = state.backgroundProcesses.get(shellId)\n if (!proc) return false\n try {\n proc.interrupted = true\n proc.killed = true\n proc.abortController.abort()\n proc.process.kill()\n if (proc.timeoutHandle) {\n clearTimeout(proc.timeoutHandle)\n proc.timeoutHandle = null\n }\n return true\n } catch {\n return false\n }\n}\n\nexport function listBackgroundShells(\n state: BunShellState,\n): BackgroundProcess[] {\n return Array.from(state.backgroundProcesses.values())\n}\n\nexport function flushBashNotifications(\n state: BunShellState,\n): BashNotification[] {\n const processes = Array.from(state.backgroundProcesses.values())\n\n const statusFor = (\n proc: BackgroundProcess,\n ): 'running' | 'completed' | 'failed' | 'killed' =>\n proc.killed\n ? 'killed'\n : proc.code === null\n ? 'running'\n : proc.code === 0\n ? 'completed'\n : 'failed'\n\n const notifications: BashNotification[] = []\n\n for (const proc of processes) {\n if (proc.notified) continue\n const status = statusFor(proc)\n if (status === 'running') continue\n\n notifications.push({\n type: 'bash_notification',\n taskId: proc.id,\n description: proc.command,\n outputFile: proc.outputFile || getTaskOutputFilePath(proc.id),\n status,\n ...(proc.code !== null ? { exitCode: proc.code } : {}),\n })\n\n proc.notified = true\n }\n\n return notifications\n}\n\nexport function flushBackgroundShellStatusAttachments(\n state: BunShellState,\n): BackgroundShellStatusAttachment[] {\n const processes = Array.from(state.backgroundProcesses.values())\n\n const statusFor = (\n proc: BackgroundProcess,\n ): 'running' | 'completed' | 'failed' | 'killed' =>\n proc.killed\n ? 'killed'\n : proc.code === null\n ? 'running'\n : proc.code === 0\n ? 'completed'\n : 'failed'\n\n const progressAttachments: BackgroundShellStatusAttachment[] = []\n\n for (const proc of processes) {\n if (statusFor(proc) !== 'running') continue\n\n const stdoutDelta = proc.stdoutLineCount - proc.lastReportedStdoutLines\n const stderrDelta = proc.stderrLineCount - proc.lastReportedStderrLines\n if (stdoutDelta === 0 && stderrDelta === 0) continue\n\n proc.lastReportedStdoutLines = proc.stdoutLineCount\n proc.lastReportedStderrLines = proc.stderrLineCount\n\n progressAttachments.push({\n type: 'task_progress',\n taskId: proc.id,\n stdoutLineDelta: stdoutDelta,\n stderrLineDelta: stderrDelta,\n outputFile: proc.outputFile || getTaskOutputFilePath(proc.id),\n })\n }\n\n return progressAttachments\n}\n", "import { getTaskOutputFilePath } from '../taskOutputStore'\nimport type { BackgroundShellStatusAttachment, BashNotification } from './types'\n\nexport function renderBackgroundShellStatusAttachment(\n attachment: BackgroundShellStatusAttachment,\n): string {\n const parts: string[] = []\n if (attachment.stdoutLineDelta > 0) {\n const n = attachment.stdoutLineDelta\n parts.push(`${n} line${n > 1 ? 's' : ''} of stdout`)\n }\n if (attachment.stderrLineDelta > 0) {\n const n = attachment.stderrLineDelta\n parts.push(`${n} line${n > 1 ? 's' : ''} of stderr`)\n }\n if (parts.length === 0) return ''\n return `Background bash ${attachment.taskId} has new output: ${parts.join(', ')}. Read ${attachment.outputFile} to see output.`\n}\n\n// Reference CLI parity: Rt1(...) bash-notification payload.\nexport function renderBashNotification(notification: BashNotification): string {\n const status = notification.status\n const exitCode = notification.exitCode\n\n const summarySuffix =\n status === 'completed'\n ? `completed${exitCode !== undefined ? ` (exit code ${exitCode})` : ''}`\n : status === 'failed'\n ? `failed${exitCode !== undefined ? ` with exit code ${exitCode}` : ''}`\n : 'was killed'\n\n return [\n '<bash-notification>',\n `<shell-id>${notification.taskId}</shell-id>`,\n `<output-file>${notification.outputFile || getTaskOutputFilePath(notification.taskId)}</output-file>`,\n `<status>${status}</status>`,\n `<summary>Background command \"${notification.description}\" ${summarySuffix}.</summary>`,\n 'Read the output file to retrieve the output.',\n '</bash-notification>',\n ].join('\\n')\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["existsSync", "isAbsolute", "resolve", "existsSync", "dirname", "dirname", "existsSync", "resolve", "existsSync", "logError", "resolve", "spawn", "existsSync", "mkdirSync", "statSync", "dirname", "homedir", "existsSync", "normalizeExitCode", "spawn", "resolve", "spawn", "spawn", "resolve", "isAbsolute", "resolve", "existsSync"]
7
+ }
@@ -0,0 +1,28 @@
1
+ import {
2
+ BunShell
3
+ } from "./chunk-B3MW3YGY.js";
4
+
5
+ // packages/core/src/utils/state.ts
6
+ import { cwd } from "process";
7
+ var STATE = {
8
+ originalCwd: cwd()
9
+ };
10
+ async function setCwd(cwd2) {
11
+ await BunShell.getInstance().setCwd(cwd2);
12
+ }
13
+ function setOriginalCwd(cwd2) {
14
+ STATE.originalCwd = cwd2;
15
+ }
16
+ function getOriginalCwd() {
17
+ return STATE.originalCwd;
18
+ }
19
+ function getCwd() {
20
+ return BunShell.getInstance().pwd();
21
+ }
22
+
23
+ export {
24
+ setCwd,
25
+ setOriginalCwd,
26
+ getOriginalCwd,
27
+ getCwd
28
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/utils/state.ts"],
4
+ "sourcesContent": ["import { cwd } from 'process'\nimport { BunShell } from '#runtime/shell'\n\n// DO NOT ADD MORE STATE HERE OR BORIS WILL CURSE YOU\nconst STATE: {\n originalCwd: string\n} = {\n originalCwd: cwd(),\n}\n\nexport async function setCwd(cwd: string): Promise<void> {\n await BunShell.getInstance().setCwd(cwd)\n}\n\nexport function setOriginalCwd(cwd: string): void {\n STATE.originalCwd = cwd\n}\n\nexport function getOriginalCwd(): string {\n return STATE.originalCwd\n}\n\nexport function getCwd(): string {\n return BunShell.getInstance().pwd()\n}\n"],
5
+ "mappings": ";;;;;AAAA,SAAS,WAAW;AAIpB,IAAM,QAEF;AAAA,EACF,aAAa,IAAI;AACnB;AAEA,eAAsB,OAAOA,MAA4B;AACvD,QAAM,SAAS,YAAY,EAAE,OAAOA,IAAG;AACzC;AAEO,SAAS,eAAeA,MAAmB;AAChD,QAAM,cAAcA;AACtB;AAEO,SAAS,iBAAyB;AACvC,SAAO,MAAM;AACf;AAEO,SAAS,SAAiB;AAC/B,SAAO,SAAS,YAAY,EAAE,IAAI;AACpC;",
6
+ "names": ["cwd"]
7
+ }
@@ -0,0 +1,24 @@
1
+ // packages/core/src/ai/llmLazy.ts
2
+ async function queryLLM(...args) {
3
+ const { queryLLM: inner } = await import("./llm-62N6T5ZT.js");
4
+ return inner(...args);
5
+ }
6
+ async function queryQuick(...args) {
7
+ const { queryQuick: inner } = await import("./llm-62N6T5ZT.js");
8
+ return inner(...args);
9
+ }
10
+ async function verifyApiKey(apiKey, baseURL, provider) {
11
+ const { verifyApiKey: inner } = await import("./llm-62N6T5ZT.js");
12
+ return inner(apiKey, baseURL, provider);
13
+ }
14
+ async function fetchAnthropicModels(apiKey, baseURL) {
15
+ const { fetchAnthropicModels: inner } = await import("./llm-62N6T5ZT.js");
16
+ return inner(apiKey, baseURL);
17
+ }
18
+
19
+ export {
20
+ queryLLM,
21
+ queryQuick,
22
+ verifyApiKey,
23
+ fetchAnthropicModels
24
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/ai/llmLazy.ts"],
4
+ "sourcesContent": ["import type {\n queryLLM as queryLLMImpl,\n queryQuick as queryQuickImpl,\n} from '#core/ai/llm'\n\ntype QueryLLM = typeof queryLLMImpl\ntype QueryQuick = typeof queryQuickImpl\n\nexport async function queryLLM(\n ...args: Parameters<QueryLLM>\n): ReturnType<QueryLLM> {\n const { queryLLM: inner } = await import('#core/ai/llm')\n return inner(...args)\n}\n\nexport async function queryQuick(\n ...args: Parameters<QueryQuick>\n): ReturnType<QueryQuick> {\n const { queryQuick: inner } = await import('#core/ai/llm')\n return inner(...args)\n}\n\nexport async function verifyApiKey(\n apiKey: string,\n baseURL?: string,\n provider?: string,\n): Promise<boolean> {\n const { verifyApiKey: inner } = await import('#core/ai/llm')\n return inner(apiKey, baseURL, provider)\n}\n\nexport async function fetchAnthropicModels(\n apiKey: string,\n baseURL?: string,\n): Promise<any[]> {\n const { fetchAnthropicModels: inner } = await import('#core/ai/llm')\n return inner(apiKey, baseURL)\n}\n"],
5
+ "mappings": ";AAQA,eAAsB,YACjB,MACmB;AACtB,QAAM,EAAE,UAAU,MAAM,IAAI,MAAM,OAAO,mBAAc;AACvD,SAAO,MAAM,GAAG,IAAI;AACtB;AAEA,eAAsB,cACjB,MACqB;AACxB,QAAM,EAAE,YAAY,MAAM,IAAI,MAAM,OAAO,mBAAc;AACzD,SAAO,MAAM,GAAG,IAAI;AACtB;AAEA,eAAsB,aACpB,QACA,SACA,UACkB;AAClB,QAAM,EAAE,cAAc,MAAM,IAAI,MAAM,OAAO,mBAAc;AAC3D,SAAO,MAAM,QAAQ,SAAS,QAAQ;AACxC;AAEA,eAAsB,qBACpB,QACA,SACgB;AAChB,QAAM,EAAE,sBAAsB,MAAM,IAAI,MAAM,OAAO,mBAAc;AACnE,SAAO,MAAM,QAAQ,OAAO;AAC9B;",
6
+ "names": []
7
+ }