@shareai-lab/kode 2.1.0 → 2.1.2

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 (205) hide show
  1. package/dist/chunks/{Doctor-AES5ON33.js → Doctor-TWRIVOVW.js} +13 -13
  2. package/dist/chunks/{LogList-PQJEJHHE.js → LogList-PUTPM24L.js} +10 -10
  3. package/dist/chunks/REPL-YGIR5VXC.js +78 -0
  4. package/dist/chunks/{ResumeConversation-OWQ3DB4M.js → ResumeConversation-IJMKQXBU.js} +44 -44
  5. package/dist/chunks/{ScreenFrame-AGLR6B4D.js → ScreenFrame-PQJRZ5DQ.js} +2 -2
  6. package/dist/chunks/{agentLoader-BMWB4UKI.js → agentLoader-GOYNJTAO.js} +5 -5
  7. package/dist/chunks/{agentsValidate-LSMJSFYW.js → agentsValidate-R26AKPAA.js} +6 -6
  8. package/dist/chunks/{ask-3TSZR6AJ.js → ask-6SYVJONJ.js} +18 -18
  9. package/dist/chunks/{autoUpdater-MEPC7LJF.js → autoUpdater-SDLJ5QSH.js} +4 -4
  10. package/dist/chunks/{chunk-NC3RX5AB.js → chunk-2B2TR2S3.js} +4 -4
  11. package/dist/chunks/{chunk-HDEYMVIJ.js → chunk-437YGKVA.js} +2 -2
  12. package/dist/chunks/{chunk-WGMKKKS2.js → chunk-4BBWDSDC.js} +1 -1
  13. package/dist/chunks/{chunk-KKOES3YK.js → chunk-4T5LR4P5.js} +55 -116
  14. package/dist/chunks/chunk-4T5LR4P5.js.map +7 -0
  15. package/dist/chunks/{chunk-PMC3BZ3M.js → chunk-5HZWM4JB.js} +1 -1
  16. package/dist/chunks/{chunk-REQTXUXO.js → chunk-5LBRVQT5.js} +1 -1
  17. package/dist/chunks/{chunk-BEDQTC44.js → chunk-5LL33G6X.js} +2 -2
  18. package/dist/chunks/{chunk-YUXYJB45.js → chunk-5RCVEFJS.js} +19 -8
  19. package/dist/chunks/chunk-5RCVEFJS.js.map +7 -0
  20. package/dist/chunks/{chunk-MDCOIZVX.js → chunk-6C6VNA2D.js} +2 -2
  21. package/dist/chunks/{chunk-P77NF36M.js → chunk-6CAQXUDY.js} +1 -1
  22. package/dist/chunks/{chunk-DPQE5NA4.js → chunk-7SRIFZDJ.js} +1 -1
  23. package/dist/chunks/{chunk-TI2CTTMA.js → chunk-7ZC22R33.js} +1 -1
  24. package/dist/chunks/{chunk-EV56PDOI.js → chunk-AX3VXMUS.js} +1 -1
  25. package/dist/chunks/{chunk-5MVUCX6O.js → chunk-AZHJLRRP.js} +1 -1
  26. package/dist/chunks/{chunk-LIBZWJEW.js → chunk-BNSPVA24.js} +11 -10
  27. package/dist/chunks/chunk-BNSPVA24.js.map +7 -0
  28. package/dist/chunks/{chunk-Z3J3WJ2K.js → chunk-BPMYW5DT.js} +415 -414
  29. package/dist/chunks/chunk-BPMYW5DT.js.map +7 -0
  30. package/dist/chunks/{chunk-QBW7VU7C.js → chunk-DWKF6SQH.js} +3 -3
  31. package/dist/chunks/{chunk-4RVYYLN7.js → chunk-E4C4N7OV.js} +1 -1
  32. package/dist/chunks/{chunk-4RVYYLN7.js.map → chunk-E4C4N7OV.js.map} +1 -1
  33. package/dist/chunks/chunk-ESRGV7DC.js +34 -0
  34. package/dist/chunks/chunk-ESRGV7DC.js.map +7 -0
  35. package/dist/chunks/{chunk-VSKGDU73.js → chunk-FKWFR23G.js} +2 -2
  36. package/dist/chunks/{chunk-E6BU32L2.js → chunk-H5F7M5D3.js} +2 -2
  37. package/dist/chunks/{chunk-DZPD6H7A.js → chunk-JXYXMP2Q.js} +2 -2
  38. package/dist/chunks/{chunk-65FLXXMH.js → chunk-KA543BHH.js} +8 -8
  39. package/dist/chunks/{chunk-MEQ7TAT7.js → chunk-KHMXPPO7.js} +4 -4
  40. package/dist/chunks/{chunk-G5ET7GFB.js → chunk-KQV5FGSS.js} +5 -5
  41. package/dist/chunks/{chunk-DPVCHIF7.js → chunk-KRBZO255.js} +1 -1
  42. package/dist/chunks/{chunk-Y33AS3MY.js → chunk-L2LWCVUF.js} +21 -7
  43. package/dist/chunks/chunk-L2LWCVUF.js.map +7 -0
  44. package/dist/chunks/{chunk-EKXQ7ZWV.js → chunk-L5ZJIOEF.js} +4 -4
  45. package/dist/chunks/{chunk-UUJN5ZCN.js → chunk-LBHVWSUP.js} +2 -2
  46. package/dist/chunks/{chunk-GL6HUBBX.js → chunk-LKDMUCWA.js} +6 -6
  47. package/dist/chunks/{chunk-HJCYE2AS.js → chunk-LUZMHHQF.js} +10 -10
  48. package/dist/chunks/{chunk-MXFN7OSL.js → chunk-MOGUUWKG.js} +1 -1
  49. package/dist/chunks/{chunk-4UDKRYWZ.js → chunk-N4772IDQ.js} +3 -3
  50. package/dist/chunks/{chunk-TJMA65RL.js → chunk-N5AH66UG.js} +168 -23
  51. package/dist/chunks/chunk-N5AH66UG.js.map +7 -0
  52. package/dist/chunks/{chunk-JJ67KF6A.js → chunk-PTIAF6KF.js} +4 -4
  53. package/dist/chunks/{chunk-YUJB4WDK.js → chunk-PVMCLI36.js} +1 -1
  54. package/dist/chunks/{chunk-3TLVYEGW.js → chunk-RTGKCKD3.js} +1 -1
  55. package/dist/chunks/{chunk-AKC4BUW5.js → chunk-SOBWNYOW.js} +7 -6
  56. package/dist/chunks/chunk-SOBWNYOW.js.map +7 -0
  57. package/dist/chunks/{chunk-3DBNJOZI.js → chunk-SUNG5KP5.js} +1 -1
  58. package/dist/chunks/{chunk-VBGSHKHX.js → chunk-SVRXO73D.js} +16 -13
  59. package/dist/chunks/chunk-SVRXO73D.js.map +7 -0
  60. package/dist/chunks/{chunk-Q55CB4Y4.js → chunk-WE7CQGRG.js} +2 -2
  61. package/dist/chunks/{chunk-V3IXG64X.js → chunk-WOMV4RCI.js} +404 -446
  62. package/dist/chunks/chunk-WOMV4RCI.js.map +7 -0
  63. package/dist/chunks/{chunk-ZAT5BSQI.js → chunk-WVJMXIKQ.js} +12 -12
  64. package/dist/chunks/{chunk-ZAT5BSQI.js.map → chunk-WVJMXIKQ.js.map} +1 -1
  65. package/dist/chunks/{chunk-DELUVYKS.js → chunk-XVNEJVZC.js} +2 -2
  66. package/dist/chunks/{chunk-KDY7XYYS.js → chunk-YQ3YJSMI.js} +1 -1
  67. package/dist/chunks/{chunk-6CNJ3CYQ.js → chunk-YUZBVKVH.js} +3 -3
  68. package/dist/chunks/{chunk-VJ2QSQ3E.js → chunk-ZXOTOID7.js} +2 -2
  69. package/dist/chunks/{client-OWTJ7TPE.js → client-QUCHWMEW.js} +5 -5
  70. package/dist/chunks/{customCommands-FA6HRXXV.js → customCommands-S6YGRUED.js} +5 -5
  71. package/dist/chunks/{engine-UBCAVO7E.js → engine-FRDEQVDF.js} +17 -17
  72. package/dist/chunks/{env-JIMGBRE2.js → env-YH77MILU.js} +3 -3
  73. package/dist/chunks/{kodeAgentSessionLoad-BZRTCPMB.js → kodeAgentSessionLoad-TBPU4TWU.js} +3 -3
  74. package/dist/chunks/{kodeAgentSessionResume-V3WB3OWQ.js → kodeAgentSessionResume-3CNE5T6N.js} +3 -3
  75. package/dist/chunks/{kodeHooks-R3YHG4ZI.js → kodeHooks-6SWQE5W7.js} +4 -4
  76. package/dist/chunks/{llm-C4F2Q7I2.js → llm-PONI6QWH.js} +47 -20
  77. package/dist/chunks/llm-PONI6QWH.js.map +7 -0
  78. package/dist/chunks/{llmLazy-IBED5LIH.js → llmLazy-O4T62IIT.js} +1 -1
  79. package/dist/chunks/{mcpCli-A744Z3FL.js → mcpCli-HIA4I4GG.js} +5 -5
  80. package/dist/chunks/{mentionProcessor-VV6DN2LJ.js → mentionProcessor-HH4EF7BE.js} +6 -6
  81. package/dist/chunks/{messages-ZR64JVON.js → messages-WKWCZBGM.js} +1 -1
  82. package/dist/chunks/{model-NPMMYL2U.js → model-4EIFU5QN.js} +5 -5
  83. package/dist/chunks/{openai-FEBNBOGM.js → openai-KTBJ2KNZ.js} +5 -5
  84. package/dist/chunks/{permissions-34CRWMCH.js → permissions-C3N4DKS2.js} +7 -7
  85. package/dist/chunks/{pluginRuntime-7YBUMVFI.js → pluginRuntime-2FKZLVA5.js} +3 -3
  86. package/dist/chunks/{pluginValidation-NZ4LOT3Q.js → pluginValidation-X5NZZCFA.js} +7 -7
  87. package/dist/chunks/registry-3UVW32YF.js +68 -0
  88. package/dist/chunks/{responsesStreaming-JNGE2P3D.js → responsesStreaming-LB4THIUM.js} +2 -2
  89. package/dist/chunks/{ripgrep-KGHLK4RO.js → ripgrep-N7O6M4IE.js} +4 -4
  90. package/dist/chunks/{runNonTextPrintMode-U3TKEYYN.js → runNonTextPrintMode-YFWCUTWZ.js} +12 -12
  91. package/dist/chunks/server-3CICV7EL.js +59 -0
  92. package/dist/chunks/server-FRP7OT4H.js +61 -0
  93. package/dist/chunks/{skillMarketplace-PPPUBC4N.js → skillMarketplace-4Y2H4JFK.js} +4 -4
  94. package/dist/chunks/{src-TVS6YABL.js → src-IETAWKYR.js} +30 -30
  95. package/dist/chunks/{src-QST7UD2A.js → src-OB2HE3RX.js} +27 -27
  96. package/dist/chunks/{src-DB7GKD4L.js → src-Y2IM2VKU.js} +78 -78
  97. package/dist/chunks/{thinking-O7LIIMFW.js → thinking-XG3FB4HO.js} +6 -6
  98. package/dist/chunks/{toolPermissionContext-UWGATCUZ.js → toolPermissionContext-RFYFDINH.js} +1 -1
  99. package/dist/chunks/{toolPermissionSettings-WD7CB37T.js → toolPermissionSettings-EEFURGBO.js} +5 -5
  100. package/dist/chunks/{useScreenLayout-PKLCMNZD.js → useScreenLayout-OUGQRR4I.js} +2 -2
  101. package/dist/chunks/{webOnlyMode-GJ6PQCPU.js → webOnlyMode-FRQBIAXG.js} +1 -1
  102. package/dist/entrypoints/cli.js +1 -1
  103. package/dist/entrypoints/daemon.js +1 -1
  104. package/dist/entrypoints/mcp.js +28 -28
  105. package/dist/index.js +5 -5
  106. package/dist/sdk/core.cjs +93 -34
  107. package/dist/sdk/core.cjs.map +3 -3
  108. package/dist/sdk/core.js +96 -37
  109. package/dist/sdk/core.js.map +4 -4
  110. package/dist/sdk/tools.cjs +1787 -1748
  111. package/dist/sdk/tools.cjs.map +4 -4
  112. package/dist/sdk/tools.js +1611 -1572
  113. package/dist/sdk/tools.js.map +4 -4
  114. package/package.json +1 -1
  115. package/dist/chunks/REPL-KD7YOSI5.js +0 -78
  116. package/dist/chunks/chunk-AKC4BUW5.js.map +0 -7
  117. package/dist/chunks/chunk-KKOES3YK.js.map +0 -7
  118. package/dist/chunks/chunk-LIBZWJEW.js.map +0 -7
  119. package/dist/chunks/chunk-LOCXPQNJ.js +0 -20
  120. package/dist/chunks/chunk-LOCXPQNJ.js.map +0 -7
  121. package/dist/chunks/chunk-TJMA65RL.js.map +0 -7
  122. package/dist/chunks/chunk-V3IXG64X.js.map +0 -7
  123. package/dist/chunks/chunk-VBGSHKHX.js.map +0 -7
  124. package/dist/chunks/chunk-Y33AS3MY.js.map +0 -7
  125. package/dist/chunks/chunk-YUXYJB45.js.map +0 -7
  126. package/dist/chunks/chunk-Z3J3WJ2K.js.map +0 -7
  127. package/dist/chunks/llm-C4F2Q7I2.js.map +0 -7
  128. package/dist/chunks/registry-FHPZ36EO.js +0 -68
  129. package/dist/chunks/server-Y42VR6YJ.js +0 -59
  130. package/dist/chunks/server-ZSC5G3TU.js +0 -61
  131. /package/dist/chunks/{Doctor-AES5ON33.js.map → Doctor-TWRIVOVW.js.map} +0 -0
  132. /package/dist/chunks/{LogList-PQJEJHHE.js.map → LogList-PUTPM24L.js.map} +0 -0
  133. /package/dist/chunks/{REPL-KD7YOSI5.js.map → REPL-YGIR5VXC.js.map} +0 -0
  134. /package/dist/chunks/{ResumeConversation-OWQ3DB4M.js.map → ResumeConversation-IJMKQXBU.js.map} +0 -0
  135. /package/dist/chunks/{ScreenFrame-AGLR6B4D.js.map → ScreenFrame-PQJRZ5DQ.js.map} +0 -0
  136. /package/dist/chunks/{agentLoader-BMWB4UKI.js.map → agentLoader-GOYNJTAO.js.map} +0 -0
  137. /package/dist/chunks/{agentsValidate-LSMJSFYW.js.map → agentsValidate-R26AKPAA.js.map} +0 -0
  138. /package/dist/chunks/{ask-3TSZR6AJ.js.map → ask-6SYVJONJ.js.map} +0 -0
  139. /package/dist/chunks/{autoUpdater-MEPC7LJF.js.map → autoUpdater-SDLJ5QSH.js.map} +0 -0
  140. /package/dist/chunks/{chunk-NC3RX5AB.js.map → chunk-2B2TR2S3.js.map} +0 -0
  141. /package/dist/chunks/{chunk-HDEYMVIJ.js.map → chunk-437YGKVA.js.map} +0 -0
  142. /package/dist/chunks/{chunk-WGMKKKS2.js.map → chunk-4BBWDSDC.js.map} +0 -0
  143. /package/dist/chunks/{chunk-PMC3BZ3M.js.map → chunk-5HZWM4JB.js.map} +0 -0
  144. /package/dist/chunks/{chunk-REQTXUXO.js.map → chunk-5LBRVQT5.js.map} +0 -0
  145. /package/dist/chunks/{chunk-BEDQTC44.js.map → chunk-5LL33G6X.js.map} +0 -0
  146. /package/dist/chunks/{chunk-MDCOIZVX.js.map → chunk-6C6VNA2D.js.map} +0 -0
  147. /package/dist/chunks/{chunk-P77NF36M.js.map → chunk-6CAQXUDY.js.map} +0 -0
  148. /package/dist/chunks/{chunk-DPQE5NA4.js.map → chunk-7SRIFZDJ.js.map} +0 -0
  149. /package/dist/chunks/{chunk-TI2CTTMA.js.map → chunk-7ZC22R33.js.map} +0 -0
  150. /package/dist/chunks/{chunk-EV56PDOI.js.map → chunk-AX3VXMUS.js.map} +0 -0
  151. /package/dist/chunks/{chunk-5MVUCX6O.js.map → chunk-AZHJLRRP.js.map} +0 -0
  152. /package/dist/chunks/{chunk-QBW7VU7C.js.map → chunk-DWKF6SQH.js.map} +0 -0
  153. /package/dist/chunks/{chunk-VSKGDU73.js.map → chunk-FKWFR23G.js.map} +0 -0
  154. /package/dist/chunks/{chunk-E6BU32L2.js.map → chunk-H5F7M5D3.js.map} +0 -0
  155. /package/dist/chunks/{chunk-DZPD6H7A.js.map → chunk-JXYXMP2Q.js.map} +0 -0
  156. /package/dist/chunks/{chunk-65FLXXMH.js.map → chunk-KA543BHH.js.map} +0 -0
  157. /package/dist/chunks/{chunk-MEQ7TAT7.js.map → chunk-KHMXPPO7.js.map} +0 -0
  158. /package/dist/chunks/{chunk-G5ET7GFB.js.map → chunk-KQV5FGSS.js.map} +0 -0
  159. /package/dist/chunks/{chunk-DPVCHIF7.js.map → chunk-KRBZO255.js.map} +0 -0
  160. /package/dist/chunks/{chunk-EKXQ7ZWV.js.map → chunk-L5ZJIOEF.js.map} +0 -0
  161. /package/dist/chunks/{chunk-UUJN5ZCN.js.map → chunk-LBHVWSUP.js.map} +0 -0
  162. /package/dist/chunks/{chunk-GL6HUBBX.js.map → chunk-LKDMUCWA.js.map} +0 -0
  163. /package/dist/chunks/{chunk-HJCYE2AS.js.map → chunk-LUZMHHQF.js.map} +0 -0
  164. /package/dist/chunks/{chunk-MXFN7OSL.js.map → chunk-MOGUUWKG.js.map} +0 -0
  165. /package/dist/chunks/{chunk-4UDKRYWZ.js.map → chunk-N4772IDQ.js.map} +0 -0
  166. /package/dist/chunks/{chunk-JJ67KF6A.js.map → chunk-PTIAF6KF.js.map} +0 -0
  167. /package/dist/chunks/{chunk-YUJB4WDK.js.map → chunk-PVMCLI36.js.map} +0 -0
  168. /package/dist/chunks/{chunk-3TLVYEGW.js.map → chunk-RTGKCKD3.js.map} +0 -0
  169. /package/dist/chunks/{chunk-3DBNJOZI.js.map → chunk-SUNG5KP5.js.map} +0 -0
  170. /package/dist/chunks/{chunk-Q55CB4Y4.js.map → chunk-WE7CQGRG.js.map} +0 -0
  171. /package/dist/chunks/{chunk-DELUVYKS.js.map → chunk-XVNEJVZC.js.map} +0 -0
  172. /package/dist/chunks/{chunk-KDY7XYYS.js.map → chunk-YQ3YJSMI.js.map} +0 -0
  173. /package/dist/chunks/{chunk-6CNJ3CYQ.js.map → chunk-YUZBVKVH.js.map} +0 -0
  174. /package/dist/chunks/{chunk-VJ2QSQ3E.js.map → chunk-ZXOTOID7.js.map} +0 -0
  175. /package/dist/chunks/{client-OWTJ7TPE.js.map → client-QUCHWMEW.js.map} +0 -0
  176. /package/dist/chunks/{customCommands-FA6HRXXV.js.map → customCommands-S6YGRUED.js.map} +0 -0
  177. /package/dist/chunks/{engine-UBCAVO7E.js.map → engine-FRDEQVDF.js.map} +0 -0
  178. /package/dist/chunks/{env-JIMGBRE2.js.map → env-YH77MILU.js.map} +0 -0
  179. /package/dist/chunks/{kodeAgentSessionLoad-BZRTCPMB.js.map → kodeAgentSessionLoad-TBPU4TWU.js.map} +0 -0
  180. /package/dist/chunks/{kodeAgentSessionResume-V3WB3OWQ.js.map → kodeAgentSessionResume-3CNE5T6N.js.map} +0 -0
  181. /package/dist/chunks/{kodeHooks-R3YHG4ZI.js.map → kodeHooks-6SWQE5W7.js.map} +0 -0
  182. /package/dist/chunks/{llmLazy-IBED5LIH.js.map → llmLazy-O4T62IIT.js.map} +0 -0
  183. /package/dist/chunks/{mcpCli-A744Z3FL.js.map → mcpCli-HIA4I4GG.js.map} +0 -0
  184. /package/dist/chunks/{mentionProcessor-VV6DN2LJ.js.map → mentionProcessor-HH4EF7BE.js.map} +0 -0
  185. /package/dist/chunks/{messages-ZR64JVON.js.map → messages-WKWCZBGM.js.map} +0 -0
  186. /package/dist/chunks/{model-NPMMYL2U.js.map → model-4EIFU5QN.js.map} +0 -0
  187. /package/dist/chunks/{openai-FEBNBOGM.js.map → openai-KTBJ2KNZ.js.map} +0 -0
  188. /package/dist/chunks/{permissions-34CRWMCH.js.map → permissions-C3N4DKS2.js.map} +0 -0
  189. /package/dist/chunks/{pluginRuntime-7YBUMVFI.js.map → pluginRuntime-2FKZLVA5.js.map} +0 -0
  190. /package/dist/chunks/{pluginValidation-NZ4LOT3Q.js.map → pluginValidation-X5NZZCFA.js.map} +0 -0
  191. /package/dist/chunks/{registry-FHPZ36EO.js.map → registry-3UVW32YF.js.map} +0 -0
  192. /package/dist/chunks/{responsesStreaming-JNGE2P3D.js.map → responsesStreaming-LB4THIUM.js.map} +0 -0
  193. /package/dist/chunks/{ripgrep-KGHLK4RO.js.map → ripgrep-N7O6M4IE.js.map} +0 -0
  194. /package/dist/chunks/{runNonTextPrintMode-U3TKEYYN.js.map → runNonTextPrintMode-YFWCUTWZ.js.map} +0 -0
  195. /package/dist/chunks/{server-Y42VR6YJ.js.map → server-3CICV7EL.js.map} +0 -0
  196. /package/dist/chunks/{server-ZSC5G3TU.js.map → server-FRP7OT4H.js.map} +0 -0
  197. /package/dist/chunks/{skillMarketplace-PPPUBC4N.js.map → skillMarketplace-4Y2H4JFK.js.map} +0 -0
  198. /package/dist/chunks/{src-TVS6YABL.js.map → src-IETAWKYR.js.map} +0 -0
  199. /package/dist/chunks/{src-QST7UD2A.js.map → src-OB2HE3RX.js.map} +0 -0
  200. /package/dist/chunks/{src-DB7GKD4L.js.map → src-Y2IM2VKU.js.map} +0 -0
  201. /package/dist/chunks/{thinking-O7LIIMFW.js.map → thinking-XG3FB4HO.js.map} +0 -0
  202. /package/dist/chunks/{toolPermissionContext-UWGATCUZ.js.map → toolPermissionContext-RFYFDINH.js.map} +0 -0
  203. /package/dist/chunks/{toolPermissionSettings-WD7CB37T.js.map → toolPermissionSettings-EEFURGBO.js.map} +0 -0
  204. /package/dist/chunks/{useScreenLayout-PKLCMNZD.js.map → useScreenLayout-OUGQRR4I.js.map} +0 -0
  205. /package/dist/chunks/{webOnlyMode-GJ6PQCPU.js.map → webOnlyMode-FRQBIAXG.js.map} +0 -0
@@ -7,13 +7,13 @@ import {
7
7
  USE_VERTEX,
8
8
  getModelManager,
9
9
  getVertexRegionForModel
10
- } from "./chunk-VSKGDU73.js";
10
+ } from "./chunk-FKWFR23G.js";
11
11
  import {
12
12
  PRODUCT_COMMAND
13
- } from "./chunk-AKC4BUW5.js";
13
+ } from "./chunk-SOBWNYOW.js";
14
14
  import {
15
15
  MACRO
16
- } from "./chunk-P77NF36M.js";
16
+ } from "./chunk-6CAQXUDY.js";
17
17
  import {
18
18
  getAnthropicApiKey,
19
19
  getGlobalConfig
@@ -1,7 +1,7 @@
1
1
  // packages/core/src/types/toolPermissionContext.ts
2
2
  function createDefaultToolPermissionContext(options) {
3
3
  return {
4
- mode: "default",
4
+ mode: "yolo",
5
5
  additionalWorkingDirectories: /* @__PURE__ */ new Map(),
6
6
  alwaysAllowRules: {},
7
7
  alwaysDenyRules: {},
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/core/src/types/toolPermissionContext.ts"],
4
- "sourcesContent": ["import type { PermissionMode } from './PermissionMode'\n\n// Compatibility: mirrors the toolPermissionContext shape and update operations used by legacy transcripts.\n\nexport type ToolPermissionUpdateDestination =\n | 'session'\n | 'localSettings'\n | 'userSettings'\n | 'projectSettings'\n | 'flagSettings'\n | 'policySettings'\n | 'cliArg'\n | 'command'\n\nexport type ToolPermissionRuleBehavior = 'allow' | 'deny' | 'ask'\n\nexport type AdditionalWorkingDirectoryEntry = {\n path: string\n source: ToolPermissionUpdateDestination\n}\n\nexport type ToolPermissionContext = {\n mode: PermissionMode\n additionalWorkingDirectories: Map<string, AdditionalWorkingDirectoryEntry>\n alwaysAllowRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysDenyRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysAskRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n isBypassPermissionsModeAvailable: boolean\n}\n\nexport type ToolPermissionContextUpdate =\n | {\n type: 'setMode'\n mode: PermissionMode\n destination: ToolPermissionUpdateDestination\n }\n | {\n type: 'addRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'replaceRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'removeRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'addDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n | {\n type: 'removeDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n\nexport function createDefaultToolPermissionContext(options?: {\n isBypassPermissionsModeAvailable?: boolean\n}): ToolPermissionContext {\n return {\n mode: 'default',\n additionalWorkingDirectories: new Map(),\n alwaysAllowRules: {},\n alwaysDenyRules: {},\n alwaysAskRules: {},\n isBypassPermissionsModeAvailable:\n options?.isBypassPermissionsModeAvailable ?? false,\n }\n}\n\nexport function applyToolPermissionContextUpdate(\n context: ToolPermissionContext,\n update: ToolPermissionContextUpdate,\n): ToolPermissionContext {\n switch (update.type) {\n case 'setMode':\n return { ...context, mode: update.mode }\n case 'addRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const existing = context[key][update.destination] ?? []\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...existing, ...update.rules],\n },\n }\n }\n case 'replaceRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...update.rules],\n },\n }\n }\n case 'removeRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const current = context[key][update.destination] ?? []\n const toRemove = new Set(update.rules)\n const next = current.filter(rule => !toRemove.has(rule))\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: next,\n },\n }\n }\n case 'addDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.set(dir, { path: dir, source: update.destination })\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n case 'removeDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.delete(dir)\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n default:\n return context\n }\n}\n\nexport function applyToolPermissionContextUpdates(\n context: ToolPermissionContext,\n updates: ToolPermissionContextUpdate[],\n): ToolPermissionContext {\n let next = context\n for (const update of updates) {\n next = applyToolPermissionContextUpdate(next, update)\n }\n return next\n}\n\nexport function isPersistableToolPermissionDestination(\n destination: ToolPermissionUpdateDestination,\n): destination is 'localSettings' | 'userSettings' | 'projectSettings' {\n return (\n destination === 'localSettings' ||\n destination === 'userSettings' ||\n destination === 'projectSettings'\n )\n}\n\nexport function canUserModifyToolPermissionUpdate(\n update: ToolPermissionContextUpdate,\n): boolean {\n if (update.destination !== 'policySettings') return true\n // Managed policy settings are read-only (at least for deletion/overwrite).\n if (update.type === 'removeRules') return false\n if (update.type === 'replaceRules') return false\n if (update.type === 'removeDirectories') return false\n return true\n}\n"],
4
+ "sourcesContent": ["import type { PermissionMode } from './PermissionMode'\n\n// Compatibility: mirrors the toolPermissionContext shape and update operations used by legacy transcripts.\n\nexport type ToolPermissionUpdateDestination =\n | 'session'\n | 'localSettings'\n | 'userSettings'\n | 'projectSettings'\n | 'flagSettings'\n | 'policySettings'\n | 'cliArg'\n | 'command'\n\nexport type ToolPermissionRuleBehavior = 'allow' | 'deny' | 'ask'\n\nexport type AdditionalWorkingDirectoryEntry = {\n path: string\n source: ToolPermissionUpdateDestination\n}\n\nexport type ToolPermissionContext = {\n mode: PermissionMode\n additionalWorkingDirectories: Map<string, AdditionalWorkingDirectoryEntry>\n alwaysAllowRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysDenyRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysAskRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n isBypassPermissionsModeAvailable: boolean\n}\n\nexport type ToolPermissionContextUpdate =\n | {\n type: 'setMode'\n mode: PermissionMode\n destination: ToolPermissionUpdateDestination\n }\n | {\n type: 'addRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'replaceRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'removeRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'addDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n | {\n type: 'removeDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n\nexport function createDefaultToolPermissionContext(options?: {\n isBypassPermissionsModeAvailable?: boolean\n}): ToolPermissionContext {\n return {\n mode: 'yolo',\n additionalWorkingDirectories: new Map(),\n alwaysAllowRules: {},\n alwaysDenyRules: {},\n alwaysAskRules: {},\n isBypassPermissionsModeAvailable:\n options?.isBypassPermissionsModeAvailable ?? false,\n }\n}\n\nexport function applyToolPermissionContextUpdate(\n context: ToolPermissionContext,\n update: ToolPermissionContextUpdate,\n): ToolPermissionContext {\n switch (update.type) {\n case 'setMode':\n return { ...context, mode: update.mode }\n case 'addRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const existing = context[key][update.destination] ?? []\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...existing, ...update.rules],\n },\n }\n }\n case 'replaceRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...update.rules],\n },\n }\n }\n case 'removeRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const current = context[key][update.destination] ?? []\n const toRemove = new Set(update.rules)\n const next = current.filter(rule => !toRemove.has(rule))\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: next,\n },\n }\n }\n case 'addDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.set(dir, { path: dir, source: update.destination })\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n case 'removeDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.delete(dir)\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n default:\n return context\n }\n}\n\nexport function applyToolPermissionContextUpdates(\n context: ToolPermissionContext,\n updates: ToolPermissionContextUpdate[],\n): ToolPermissionContext {\n let next = context\n for (const update of updates) {\n next = applyToolPermissionContextUpdate(next, update)\n }\n return next\n}\n\nexport function isPersistableToolPermissionDestination(\n destination: ToolPermissionUpdateDestination,\n): destination is 'localSettings' | 'userSettings' | 'projectSettings' {\n return (\n destination === 'localSettings' ||\n destination === 'userSettings' ||\n destination === 'projectSettings'\n )\n}\n\nexport function canUserModifyToolPermissionUpdate(\n update: ToolPermissionContextUpdate,\n): boolean {\n if (update.destination !== 'policySettings') return true\n // Managed policy settings are read-only (at least for deletion/overwrite).\n if (update.type === 'removeRules') return false\n if (update.type === 'replaceRules') return false\n if (update.type === 'removeDirectories') return false\n return true\n}\n"],
5
5
  "mappings": ";AAiEO,SAAS,mCAAmC,SAEzB;AACxB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,8BAA8B,oBAAI,IAAI;AAAA,IACtC,kBAAkB,CAAC;AAAA,IACnB,iBAAiB,CAAC;AAAA,IAClB,gBAAgB,CAAC;AAAA,IACjB,kCACE,SAAS,oCAAoC;AAAA,EACjD;AACF;AAEO,SAAS,iCACd,SACA,QACuB;AACvB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,SAAS,MAAM,OAAO,KAAK;AAAA,IACzC,KAAK,YAAY;AACf,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,YAAM,WAAW,QAAQ,GAAG,EAAE,OAAO,WAAW,KAAK,CAAC;AACtD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG,CAAC,GAAG,UAAU,GAAG,OAAO,KAAK;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG,CAAC,GAAG,OAAO,KAAK;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAClB,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,YAAM,UAAU,QAAQ,GAAG,EAAE,OAAO,WAAW,KAAK,CAAC;AACrD,YAAM,WAAW,IAAI,IAAI,OAAO,KAAK;AACrC,YAAM,OAAO,QAAQ,OAAO,UAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;AACvD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AACrB,YAAM,WAAW,IAAI,IAAI,QAAQ,4BAA4B;AAC7D,iBAAW,OAAO,OAAO,aAAa;AACpC,iBAAS,IAAI,KAAK,EAAE,MAAM,KAAK,QAAQ,OAAO,YAAY,CAAC;AAAA,MAC7D;AACA,aAAO,EAAE,GAAG,SAAS,8BAA8B,SAAS;AAAA,IAC9D;AAAA,IACA,KAAK,qBAAqB;AACxB,YAAM,WAAW,IAAI,IAAI,QAAQ,4BAA4B;AAC7D,iBAAW,OAAO,OAAO,aAAa;AACpC,iBAAS,OAAO,GAAG;AAAA,MACrB;AACA,aAAO,EAAE,GAAG,SAAS,8BAA8B,SAAS;AAAA,IAC9D;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,kCACd,SACA,SACuB;AACvB,MAAI,OAAO;AACX,aAAW,UAAU,SAAS;AAC5B,WAAO,iCAAiC,MAAM,MAAM;AAAA,EACtD;AACA,SAAO;AACT;AAEO,SAAS,uCACd,aACqE;AACrE,SACE,gBAAgB,mBAChB,gBAAgB,kBAChB,gBAAgB;AAEpB;AAEO,SAAS,kCACd,QACS;AACT,MAAI,OAAO,gBAAgB,iBAAkB,QAAO;AAEpD,MAAI,OAAO,SAAS,cAAe,QAAO;AAC1C,MAAI,OAAO,SAAS,eAAgB,QAAO;AAC3C,MAAI,OAAO,SAAS,oBAAqB,QAAO;AAChD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,34 @@
1
+ // packages/core/src/utils/requestStatus.ts
2
+ var current = { kind: "idle", updatedAt: Date.now() };
3
+ var listeners = /* @__PURE__ */ new Set();
4
+ function getRequestStatus() {
5
+ return current;
6
+ }
7
+ function setRequestStatus(status) {
8
+ current = { ...current, ...status, updatedAt: Date.now() };
9
+ for (const listener of listeners) listener(current);
10
+ }
11
+ function setRequestInputTokens(inputTokens) {
12
+ if (current.kind !== "idle") {
13
+ current = { ...current, inputTokens, outputTokens: void 0, updatedAt: Date.now() };
14
+ for (const listener of listeners) listener(current);
15
+ }
16
+ }
17
+ function updateRequestTokens(outputTokens) {
18
+ if (current.kind !== "idle") {
19
+ current = { ...current, outputTokens, updatedAt: Date.now() };
20
+ for (const listener of listeners) listener(current);
21
+ }
22
+ }
23
+ function subscribeRequestStatus(listener) {
24
+ listeners.add(listener);
25
+ return () => listeners.delete(listener);
26
+ }
27
+
28
+ export {
29
+ getRequestStatus,
30
+ setRequestStatus,
31
+ setRequestInputTokens,
32
+ updateRequestTokens,
33
+ subscribeRequestStatus
34
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/utils/requestStatus.ts"],
4
+ "sourcesContent": ["export type RequestStatusKind = 'idle' | 'thinking' | 'streaming' | 'tool'\n\nexport type RequestStatus = {\n kind: RequestStatusKind\n detail?: string\n updatedAt: number\n inputTokens?: number\n outputTokens?: number\n thinkingDurationMs?: number\n}\n\nlet current: RequestStatus = { kind: 'idle', updatedAt: Date.now() }\nconst listeners = new Set<(status: RequestStatus) => void>()\n\nexport function getRequestStatus(): RequestStatus {\n return current\n}\n\nexport function setRequestStatus(\n status: Omit<RequestStatus, 'updatedAt'>,\n): void {\n current = { ...current, ...status, updatedAt: Date.now() }\n for (const listener of listeners) listener(current)\n}\n\nexport function setRequestInputTokens(inputTokens: number): void {\n if (current.kind !== 'idle') {\n current = { ...current, inputTokens, outputTokens: undefined, updatedAt: Date.now() }\n for (const listener of listeners) listener(current)\n }\n}\n\nexport function updateRequestTokens(outputTokens: number): void {\n if (current.kind !== 'idle') {\n current = { ...current, outputTokens, updatedAt: Date.now() }\n for (const listener of listeners) listener(current)\n }\n}\n\nexport function subscribeRequestStatus(\n listener: (status: RequestStatus) => void,\n): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n"],
5
+ "mappings": ";AAWA,IAAI,UAAyB,EAAE,MAAM,QAAQ,WAAW,KAAK,IAAI,EAAE;AACnE,IAAM,YAAY,oBAAI,IAAqC;AAEpD,SAAS,mBAAkC;AAChD,SAAO;AACT;AAEO,SAAS,iBACd,QACM;AACN,YAAU,EAAE,GAAG,SAAS,GAAG,QAAQ,WAAW,KAAK,IAAI,EAAE;AACzD,aAAW,YAAY,UAAW,UAAS,OAAO;AACpD;AAEO,SAAS,sBAAsB,aAA2B;AAC/D,MAAI,QAAQ,SAAS,QAAQ;AAC3B,cAAU,EAAE,GAAG,SAAS,aAAa,cAAc,QAAW,WAAW,KAAK,IAAI,EAAE;AACpF,eAAW,YAAY,UAAW,UAAS,OAAO;AAAA,EACpD;AACF;AAEO,SAAS,oBAAoB,cAA4B;AAC9D,MAAI,QAAQ,SAAS,QAAQ;AAC3B,cAAU,EAAE,GAAG,SAAS,cAAc,WAAW,KAAK,IAAI,EAAE;AAC5D,eAAW,YAAY,UAAW,UAAS,OAAO;AAAA,EACpD;AACF;AAEO,SAAS,uBACd,UACY;AACZ,YAAU,IAAI,QAAQ;AACtB,SAAO,MAAM,UAAU,OAAO,QAAQ;AACxC;",
6
+ "names": []
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  debug
3
- } from "./chunk-KDY7XYYS.js";
3
+ } from "./chunk-YQ3YJSMI.js";
4
4
  import {
5
5
  logError
6
- } from "./chunk-AKC4BUW5.js";
6
+ } from "./chunk-SOBWNYOW.js";
7
7
  import {
8
8
  DEFAULT_GLOBAL_CONFIG,
9
9
  getGlobalConfig,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  setInkInstanceForStdout
3
- } from "./chunk-HJCYE2AS.js";
3
+ } from "./chunk-LUZMHHQF.js";
4
4
  import {
5
5
  disableLineWrapping,
6
6
  ensureTuiStdioPatched
7
- } from "./chunk-DELUVYKS.js";
7
+ } from "./chunk-XVNEJVZC.js";
8
8
  import {
9
9
  getGlobalConfigCached
10
10
  } from "./chunk-EYEZUJGL.js";
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-UINOTNT3.js";
8
8
  import {
9
9
  debug
10
- } from "./chunk-KDY7XYYS.js";
10
+ } from "./chunk-YQ3YJSMI.js";
11
11
  import {
12
12
  logError
13
- } from "./chunk-AKC4BUW5.js";
13
+ } from "./chunk-SOBWNYOW.js";
14
14
  import {
15
15
  getKodeRoot
16
16
  } from "./chunk-KGE74PKI.js";
@@ -2,16 +2,16 @@ import {
2
2
  buildSystemPromptForSession,
3
3
  getSessionContext,
4
4
  runTurn
5
- } from "./chunk-Q55CB4Y4.js";
5
+ } from "./chunk-WE7CQGRG.js";
6
6
  import {
7
7
  isUuid
8
8
  } from "./chunk-UNOY3VJ2.js";
9
9
  import {
10
10
  listKodeAgentSessions
11
- } from "./chunk-EV56PDOI.js";
11
+ } from "./chunk-AX3VXMUS.js";
12
12
  import {
13
13
  getTools
14
- } from "./chunk-V3IXG64X.js";
14
+ } from "./chunk-WOMV4RCI.js";
15
15
  import {
16
16
  kodeMessageToSdkMessage,
17
17
  makeSdkInitMessage,
@@ -19,21 +19,21 @@ import {
19
19
  } from "./chunk-XX7Z3ORN.js";
20
20
  import {
21
21
  loadKodeAgentSessionMessages
22
- } from "./chunk-YUJB4WDK.js";
22
+ } from "./chunk-PVMCLI36.js";
23
23
  import {
24
24
  grantReadPermissionForOriginalDir,
25
25
  hasPermissionsToUseTool,
26
26
  savePermission
27
- } from "./chunk-TJMA65RL.js";
27
+ } from "./chunk-N5AH66UG.js";
28
28
  import {
29
29
  resolveToolDescription
30
- } from "./chunk-QBW7VU7C.js";
30
+ } from "./chunk-DWKF6SQH.js";
31
31
  import {
32
32
  setSessionId
33
33
  } from "./chunk-UINOTNT3.js";
34
34
  import {
35
35
  loadToolPermissionContextFromDisk
36
- } from "./chunk-UUJN5ZCN.js";
36
+ } from "./chunk-LBHVWSUP.js";
37
37
  import {
38
38
  setKodeAgentSessionForkInfo
39
39
  } from "./chunk-RPKUSL6P.js";
@@ -42,7 +42,7 @@ import {
42
42
  REJECT_MESSAGE_WITH_FEEDBACK_PREFIX,
43
43
  createAssistantMessage,
44
44
  createUserMessage
45
- } from "./chunk-Y33AS3MY.js";
45
+ } from "./chunk-L2LWCVUF.js";
46
46
  import {
47
47
  getTotalCost
48
48
  } from "./chunk-GJYXZ5IL.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  INTERRUPT_MESSAGE,
3
3
  INTERRUPT_MESSAGE_FOR_TOOL_USE
4
- } from "./chunk-Y33AS3MY.js";
4
+ } from "./chunk-L2LWCVUF.js";
5
5
  import {
6
6
  getSessionStartAdditionalContext
7
- } from "./chunk-BEDQTC44.js";
7
+ } from "./chunk-5LL33G6X.js";
8
8
  import {
9
9
  PRODUCT_COMMAND,
10
10
  PRODUCT_NAME,
@@ -12,13 +12,13 @@ import {
12
12
  env,
13
13
  execFileNoThrow,
14
14
  logError
15
- } from "./chunk-AKC4BUW5.js";
15
+ } from "./chunk-SOBWNYOW.js";
16
16
  import {
17
17
  getCwd
18
18
  } from "./chunk-5ARRC2T2.js";
19
19
  import {
20
20
  MACRO
21
- } from "./chunk-P77NF36M.js";
21
+ } from "./chunk-6CAQXUDY.js";
22
22
  import {
23
23
  getKodeAgentSessionId
24
24
  } from "./chunk-SWQV4KSY.js";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  getProjectDocs
3
- } from "./chunk-MEQ7TAT7.js";
3
+ } from "./chunk-KHMXPPO7.js";
4
4
  import {
5
5
  generateSystemReminders
6
- } from "./chunk-DZPD6H7A.js";
6
+ } from "./chunk-JXYXMP2Q.js";
7
7
  import {
8
8
  getModelManager
9
- } from "./chunk-VSKGDU73.js";
9
+ } from "./chunk-FKWFR23G.js";
10
10
  import {
11
11
  debug
12
- } from "./chunk-KDY7XYYS.js";
12
+ } from "./chunk-YQ3YJSMI.js";
13
13
  import {
14
14
  logError
15
- } from "./chunk-AKC4BUW5.js";
15
+ } from "./chunk-SOBWNYOW.js";
16
16
 
17
17
  // packages/core/src/ai/llm/kodeContext.ts
18
18
  var KodeContextManager = class _KodeContextManager {
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-QHQOBUF6.js";
9
9
  import {
10
10
  package_default
11
- } from "./chunk-ZAT5BSQI.js";
11
+ } from "./chunk-WVJMXIKQ.js";
12
12
  import {
13
13
  getKodeAgentSessionId
14
14
  } from "./chunk-SWQV4KSY.js";
@@ -19,7 +19,7 @@ var SYNTHETIC_ASSISTANT_MESSAGES = /* @__PURE__ */ new Set([
19
19
  ]);
20
20
 
21
21
  // packages/core/src/engine/messages/create.ts
22
- import { randomUUID } from "crypto";
22
+ import { createHash, randomUUID } from "crypto";
23
23
 
24
24
  // packages/core/src/ai/llm/constants.ts
25
25
  var API_ERROR_MESSAGE_PREFIX = "API Error";
@@ -30,6 +30,10 @@ var NO_CONTENT_MESSAGE = "(no content)";
30
30
  var MAIN_QUERY_TEMPERATURE = 1;
31
31
 
32
32
  // packages/core/src/engine/messages/create.ts
33
+ function stableUuidFromSeed(seed) {
34
+ const hex = createHash("sha256").update(seed).digest("hex").slice(0, 32);
35
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
36
+ }
33
37
  function baseCreateAssistantMessage(content, extra) {
34
38
  return {
35
39
  type: "assistant",
@@ -95,7 +99,7 @@ function createProgressMessage(toolUseID, siblingToolUseIDs, content, normalized
95
99
  siblingToolUseIDs,
96
100
  tools,
97
101
  toolUseID,
98
- uuid: randomUUID()
102
+ uuid: stableUuidFromSeed(`progress:${toolUseID}`)
99
103
  };
100
104
  }
101
105
  function createToolResultStopMessage(toolUseID) {
@@ -152,9 +156,9 @@ function extractTag(html, tagName) {
152
156
  }
153
157
 
154
158
  // packages/core/src/engine/messages/normalize.ts
155
- import { createHash, randomUUID as randomUUID2 } from "crypto";
156
- function stableUuidFromSeed(seed) {
157
- const hex = createHash("sha256").update(seed).digest("hex").slice(0, 32);
159
+ import { createHash as createHash2, randomUUID as randomUUID2 } from "crypto";
160
+ function stableUuidFromSeed2(seed) {
161
+ const hex = createHash2("sha256").update(seed).digest("hex").slice(0, 32);
158
162
  return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
159
163
  }
160
164
  function isNotEmptyMessage(message) {
@@ -188,13 +192,23 @@ function normalizeMessages(messages) {
188
192
  }
189
193
  const contentBlocks = message.message.content.filter(
190
194
  (block) => !(block.type === "thinking" && !(typeof block.thinking === "string" && block.thinking.trim().length > 0))
191
- );
195
+ ).sort((a, b) => {
196
+ const order = {
197
+ thinking: 0,
198
+ redacted_thinking: 1,
199
+ text: 2,
200
+ tool_use: 3,
201
+ server_tool_use: 3,
202
+ mcp_tool_use: 3
203
+ };
204
+ return (order[a.type] ?? 2) - (order[b.type] ?? 2);
205
+ });
192
206
  return contentBlocks.map((block, blockIndex) => {
193
207
  const msgRecord = message;
194
208
  const baseSeed = typeof msgRecord.uuid === "string" ? msgRecord.uuid : String(msgRecord.message?.id ?? randomUUID2());
195
209
  return {
196
210
  type: "assistant",
197
- uuid: stableUuidFromSeed(`${baseSeed}:${blockIndex}`),
211
+ uuid: stableUuidFromSeed2(`${baseSeed}:${blockIndex}`),
198
212
  message: {
199
213
  ...message.message,
200
214
  content: [block]
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/core/src/engine/messages/constants.ts", "../../packages/core/src/engine/messages/create.ts", "../../packages/core/src/ai/llm/constants.ts", "../../packages/core/src/engine/messages/tags.ts", "../../packages/core/src/engine/messages/normalize.ts", "../../packages/core/src/engine/messages/toolUse.ts", "../../packages/core/src/engine/messages/api.ts"],
4
+ "sourcesContent": ["export const INTERRUPT_MESSAGE = '[Request interrupted by user]'\nexport const INTERRUPT_MESSAGE_FOR_TOOL_USE =\n '[Request interrupted by user for tool use]'\nexport const CANCEL_MESSAGE =\n \"The user doesn't want to take this action right now. STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE =\n \"The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE_WITH_FEEDBACK_PREFIX = `The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). To tell you how to proceed, the user said:\\n`\nexport const REJECTED_PLAN_PREFIX = `The agent proposed a plan that was rejected by the user. The user chose to stay in plan mode rather than proceed with implementation.\\n\\nRejected plan:\\n`\nexport const NO_RESPONSE_REQUESTED = 'No response requested.'\n\nexport const SYNTHETIC_ASSISTANT_MESSAGES = new Set([\n INTERRUPT_MESSAGE,\n INTERRUPT_MESSAGE_FOR_TOOL_USE,\n CANCEL_MESSAGE,\n REJECT_MESSAGE,\n NO_RESPONSE_REQUESTED,\n])\n", "import { createHash, randomUUID } from 'crypto'\nimport type { UUID } from 'crypto'\n\nimport type {\n ContentBlock,\n ContentBlockParam,\n ToolResultBlockParam,\n} from '@anthropic-ai/sdk/resources/index.mjs'\n\nimport { NO_CONTENT_MESSAGE } from '#core/ai/constants'\nimport type { Tool } from '#core/tooling/Tool'\nimport type {\n AssistantMessage,\n Message,\n ProgressMessage,\n UserMessage,\n} from '#core/query'\n\nimport { CANCEL_MESSAGE } from './constants'\nimport type { NormalizedMessage } from './normalize'\n\nfunction stableUuidFromSeed(seed: string): UUID {\n const hex = createHash('sha256').update(seed).digest('hex').slice(0, 32)\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}` as UUID\n}\n\nfunction baseCreateAssistantMessage(\n content: ContentBlock[],\n extra?: Partial<AssistantMessage>,\n): AssistantMessage {\n return {\n type: 'assistant',\n costUSD: 0,\n durationMs: 0,\n uuid: randomUUID(),\n message: {\n id: randomUUID(),\n model: '<synthetic>',\n role: 'assistant',\n stop_reason: 'stop_sequence',\n stop_sequence: '',\n type: 'message',\n usage: {\n input_tokens: 0,\n output_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n },\n content,\n },\n ...extra,\n }\n}\n\nexport function createAssistantMessage(content: string): AssistantMessage {\n return baseCreateAssistantMessage([\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ])\n}\n\nexport function createAssistantAPIErrorMessage(\n content: string,\n): AssistantMessage {\n return baseCreateAssistantMessage(\n [\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ],\n { isApiErrorMessage: true },\n )\n}\n\nexport type FullToolUseResult = {\n data: unknown\n resultForAssistant: ToolResultBlockParam['content']\n newMessages?: Message[]\n contextModifier?: { modifyContext: (ctx: any) => any }\n}\n\nexport function createUserMessage(\n content: string | ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m: UserMessage = {\n type: 'user',\n message: {\n role: 'user',\n content,\n },\n uuid: randomUUID(),\n toolUseResult,\n }\n return m\n}\n\nexport function createProgressMessage(\n toolUseID: string,\n siblingToolUseIDs: Set<string>,\n content: AssistantMessage,\n normalizedMessages: NormalizedMessage[],\n tools: Tool[],\n): ProgressMessage {\n return {\n type: 'progress',\n content,\n normalizedMessages,\n siblingToolUseIDs,\n tools,\n toolUseID,\n uuid: stableUuidFromSeed(`progress:${toolUseID}`),\n }\n}\n\nexport function createToolResultStopMessage(\n toolUseID: string,\n): ToolResultBlockParam {\n return {\n type: 'tool_result',\n content: CANCEL_MESSAGE,\n is_error: true,\n tool_use_id: toolUseID,\n }\n}\n", "export const API_ERROR_MESSAGE_PREFIX = 'API Error'\nexport const PROMPT_TOO_LONG_ERROR_MESSAGE = 'Prompt is too long'\nexport const CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = 'Credit balance is too low'\nexport const INVALID_API_KEY_ERROR_MESSAGE =\n 'Invalid API key \u00B7 Please run /login'\nexport const NO_CONTENT_MESSAGE = '(no content)'\n\n// Keep at 1 for more variation in binary feedback sampling (matches existing behavior).\nexport const MAIN_QUERY_TEMPERATURE = 1\n", "import type { Message } from '#core/query'\n\nexport function extractTagFromMessage(\n message: Message,\n tagName: string,\n): string | null {\n if (message.type === 'progress') {\n return null\n }\n if (typeof message.message.content !== 'string') {\n return null\n }\n return extractTag(message.message.content, tagName)\n}\n\nexport function extractTag(html: string, tagName: string): string | null {\n if (!html.trim() || !tagName.trim()) {\n return null\n }\n\n const escapedTag = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n const pattern = new RegExp(\n `<${escapedTag}(?:\\\\s+[^>]*)?>` + '([\\\\s\\\\S]*?)' + `<\\\\/${escapedTag}>`,\n 'gi',\n )\n\n let match\n let depth = 0\n let lastIndex = 0\n const openingTag = new RegExp(`<${escapedTag}(?:\\\\s+[^>]*?)?>`, 'gi')\n const closingTag = new RegExp(`<\\\\/${escapedTag}>`, 'gi')\n\n while ((match = pattern.exec(html)) !== null) {\n const content = match[1]\n const beforeMatch = html.slice(lastIndex, match.index)\n\n depth = 0\n\n openingTag.lastIndex = 0\n while (openingTag.exec(beforeMatch) !== null) {\n depth++\n }\n\n closingTag.lastIndex = 0\n while (closingTag.exec(beforeMatch) !== null) {\n depth--\n }\n\n if (depth === 0 && content) {\n return content\n }\n\n lastIndex = match.index + match[0].length\n }\n\n return null\n}\n", "import { createHash, randomUUID } from 'crypto'\nimport type { UUID } from 'crypto'\n\nimport type {\n ImageBlockParam,\n TextBlockParam,\n ToolResultBlockParam,\n ToolUseBlockParam,\n} from '@anthropic-ai/sdk/resources/index.mjs'\n\nimport { NO_CONTENT_MESSAGE } from '#core/ai/constants'\nimport type { AssistantMessage, Message, ProgressMessage } from '#core/query'\n\nimport { INTERRUPT_MESSAGE_FOR_TOOL_USE } from './constants'\n\nfunction stableUuidFromSeed(seed: string): UUID {\n const hex = createHash('sha256').update(seed).digest('hex').slice(0, 32)\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}` as UUID\n}\n\nexport function isNotEmptyMessage(message: Message): boolean {\n if (message.type === 'progress') {\n return true\n }\n\n if (typeof message.message.content === 'string') {\n return message.message.content.trim().length > 0\n }\n\n if (message.message.content.length === 0) {\n return false\n }\n\n if (message.message.content.length > 1) {\n return true\n }\n\n if (message.message.content[0]!.type !== 'text') {\n return true\n }\n\n return (\n message.message.content[0]!.text.trim().length > 0 &&\n message.message.content[0]!.text !== NO_CONTENT_MESSAGE &&\n message.message.content[0]!.text !== INTERRUPT_MESSAGE_FOR_TOOL_USE\n )\n}\n\ntype NormalizedUserMessage = {\n message: {\n content: [\n | TextBlockParam\n | ImageBlockParam\n | ToolUseBlockParam\n | ToolResultBlockParam,\n ]\n role: 'user'\n }\n type: 'user'\n uuid: UUID\n}\n\nexport type NormalizedMessage =\n | NormalizedUserMessage\n | AssistantMessage\n | ProgressMessage\n\nexport function normalizeMessages(messages: Message[]): NormalizedMessage[] {\n return messages.flatMap(message => {\n if (message.type === 'progress') {\n return [message] as NormalizedMessage[]\n }\n if (typeof message.message.content === 'string') {\n return [message] as NormalizedMessage[]\n }\n\n // User messages should not be split by content blocks - return as single message\n if (message.type === 'user') {\n return [message] as NormalizedMessage[]\n }\n\n // Only assistant messages need to be split by content blocks\n // Sort blocks so thinking/text appear before tool_use (for better UX)\n const contentBlocks = message.message.content\n .filter(\n block =>\n !(\n block.type === 'thinking' &&\n !(\n typeof (block as { thinking?: unknown }).thinking === 'string' &&\n (block as { thinking: string }).thinking.trim().length > 0\n )\n ),\n )\n .sort((a, b) => {\n const order: Record<string, number> = {\n thinking: 0,\n redacted_thinking: 1,\n text: 2,\n tool_use: 3,\n server_tool_use: 3,\n mcp_tool_use: 3,\n }\n return (order[a.type] ?? 2) - (order[b.type] ?? 2)\n })\n\n return contentBlocks.map((block, blockIndex) => {\n const msgRecord = message as {\n uuid?: unknown\n message?: { id?: unknown }\n }\n const baseSeed =\n typeof msgRecord.uuid === 'string'\n ? msgRecord.uuid\n : String(msgRecord.message?.id ?? randomUUID())\n return {\n type: 'assistant',\n uuid: stableUuidFromSeed(`${baseSeed}:${blockIndex}`),\n message: {\n ...message.message,\n content: [block],\n },\n costUSD:\n (message as AssistantMessage).costUSD / contentBlocks.length,\n durationMs: (message as AssistantMessage).durationMs,\n } as NormalizedMessage\n })\n })\n}\n", "import { memoize } from 'lodash-es'\n\nimport type {\n ToolResultBlockParam,\n ToolUseBlockParam,\n} from '@anthropic-ai/sdk/resources/index.mjs'\n\nimport type { AssistantMessage, Message, ProgressMessage } from '#core/query'\n\nimport type { NormalizedMessage } from './normalize'\nimport { extractTag } from './tags'\n\ntype ToolUseRequestMessage = AssistantMessage & {\n message: { content: any[] }\n}\n\ntype ToolUseLikeBlockParam = ToolUseBlockParam & {\n type: 'tool_use' | 'server_tool_use' | 'mcp_tool_use'\n}\n\nfunction isToolUseLikeBlockParam(block: any): block is ToolUseLikeBlockParam {\n return (\n block &&\n typeof block === 'object' &&\n (block.type === 'tool_use' ||\n block.type === 'server_tool_use' ||\n block.type === 'mcp_tool_use') &&\n typeof block.id === 'string'\n )\n}\n\nfunction isToolUseRequestMessage(\n message: Message,\n): message is ToolUseRequestMessage {\n return (\n message.type === 'assistant' &&\n 'costUSD' in message &&\n message.message.content.some(isToolUseLikeBlockParam)\n )\n}\n\nexport function reorderMessages(\n messages: NormalizedMessage[],\n): NormalizedMessage[] {\n const ms: NormalizedMessage[] = []\n const toolUseMessages: ToolUseRequestMessage[] = []\n\n for (const message of messages) {\n if (isToolUseRequestMessage(message)) {\n toolUseMessages.push(message)\n }\n\n if (message.type === 'progress') {\n const existingProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === message.toolUseID,\n )\n if (existingProgressMessage) {\n ms[ms.indexOf(existingProgressMessage)] = message\n continue\n }\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === message.toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n }\n\n if (\n message.type === 'user' &&\n Array.isArray(message.message.content) &&\n message.message.content[0]?.type === 'tool_result'\n ) {\n const toolUseID = (message.message.content[0] as ToolResultBlockParam)\n ?.tool_use_id\n\n const lastProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === toolUseID,\n )\n if (lastProgressMessage) {\n ms.splice(ms.indexOf(lastProgressMessage) + 1, 0, message)\n continue\n }\n\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n } else {\n ms.push(message)\n }\n }\n\n return ms\n}\n\nconst getToolResultIDs = memoize(\n (normalizedMessages: NormalizedMessage[]): { [toolUseID: string]: boolean } =>\n Object.fromEntries(\n normalizedMessages.flatMap(_ =>\n _.type === 'user' && _.message.content[0]?.type === 'tool_result'\n ? [\n [\n _.message.content[0]!.tool_use_id,\n _.message.content[0]!.is_error ?? false,\n ],\n ]\n : ([] as [string, boolean][]),\n ),\n ),\n)\n\nexport function getUnresolvedToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const toolResults = getToolResultIDs(normalizedMessages)\n return new Set(\n normalizedMessages\n .filter(\n (\n _,\n ): _ is AssistantMessage & {\n message: { content: [ToolUseLikeBlockParam] }\n } =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n !(_.message.content[0].id in toolResults),\n )\n .map(_ => _.message.content[0].id),\n )\n}\n\nexport function getInProgressToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const unresolvedToolUseIDs = getUnresolvedToolUseIDs(normalizedMessages)\n\n function isQueuedWaitingProgressMessage(message: NormalizedMessage): boolean {\n if (message.type !== 'progress') return false\n const firstBlock = message.content.message.content[0]\n if (!firstBlock || firstBlock.type !== 'text') return false\n const rawText = String(firstBlock.text ?? '')\n const text = rawText.startsWith('<tool-progress>')\n ? (extractTag(rawText, 'tool-progress') ?? rawText)\n : rawText\n return text.trim() === 'Waiting\u2026'\n }\n\n const toolUseIDsThatHaveProgressMessages = new Set(\n normalizedMessages\n .filter(\n (_): _ is ProgressMessage =>\n _.type === 'progress' && !isQueuedWaitingProgressMessage(_),\n )\n .map(_ => _.toolUseID),\n )\n return new Set(\n (\n normalizedMessages.filter(_ => {\n if (_.type !== 'assistant') {\n return false\n }\n const firstBlock = _.message.content[0]\n if (!isToolUseLikeBlockParam(firstBlock)) return false\n const toolUseID = firstBlock.id\n if (toolUseID === unresolvedToolUseIDs.values().next().value) {\n return true\n }\n\n if (\n toolUseIDsThatHaveProgressMessages.has(toolUseID) &&\n unresolvedToolUseIDs.has(toolUseID)\n ) {\n return true\n }\n\n return false\n }) as AssistantMessage[]\n ).map(_ => (_.message.content[0]! as ToolUseBlockParam).id),\n )\n}\n\nexport function getErroredToolUseMessages(\n normalizedMessages: NormalizedMessage[],\n): AssistantMessage[] {\n const toolResults = getToolResultIDs(normalizedMessages)\n return normalizedMessages.filter(\n _ =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n _.message.content[0].id in toolResults &&\n toolResults[_.message.content[0].id],\n ) as AssistantMessage[]\n}\n\nexport function getToolUseID(message: NormalizedMessage): string | null {\n switch (message.type) {\n case 'assistant':\n return isToolUseLikeBlockParam(message.message.content[0])\n ? message.message.content[0].id\n : null\n case 'user':\n if (message.message.content[0]?.type !== 'tool_result') {\n return null\n }\n return message.message.content[0].tool_use_id\n case 'progress':\n return message.toolUseID\n }\n}\n", "import { last } from 'lodash-es'\n\nimport type {\n ContentBlockParam,\n Message as APIMessage,\n} from '@anthropic-ai/sdk/resources/index.mjs'\n\nimport { NO_CONTENT_MESSAGE } from '#core/ai/constants'\nimport type { AssistantMessage, Message, UserMessage } from '#core/query'\n\nexport function normalizeMessagesForAPI(\n messages: Message[],\n): (UserMessage | AssistantMessage)[] {\n function isSyntheticApiErrorMessage(message: Message): boolean {\n return (\n message.type === 'assistant' &&\n message.isApiErrorMessage === true &&\n message.message.model === '<synthetic>'\n )\n }\n\n function normalizeUserContent(\n content: UserMessage['message']['content'],\n ): ContentBlockParam[] {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }]\n }\n return content\n }\n\n function toolResultsFirst(content: ContentBlockParam[]): ContentBlockParam[] {\n const toolResults: ContentBlockParam[] = []\n const rest: ContentBlockParam[] = []\n for (const block of content) {\n if (block.type === 'tool_result') {\n toolResults.push(block)\n } else {\n rest.push(block)\n }\n }\n return [...toolResults, ...rest]\n }\n\n function mergeUserMessages(\n base: UserMessage,\n next: UserMessage,\n ): UserMessage {\n const baseBlocks = normalizeUserContent(base.message.content)\n const nextBlocks = normalizeUserContent(next.message.content)\n return {\n ...base,\n message: {\n ...base.message,\n content: toolResultsFirst([...baseBlocks, ...nextBlocks]),\n },\n }\n }\n\n function isUserToolResultMessage(message: Message): message is UserMessage {\n if (message.type !== 'user') return false\n if (!Array.isArray(message.message.content)) return false\n return message.message.content.some(block => block.type === 'tool_result')\n }\n\n const result: (UserMessage | AssistantMessage)[] = []\n for (const message of messages) {\n if (message.type === 'progress') continue\n if (isSyntheticApiErrorMessage(message)) continue\n\n switch (message.type) {\n case 'user': {\n const prev = last(result)\n if (prev?.type === 'user') {\n result[result.indexOf(prev)] = mergeUserMessages(prev, message)\n } else {\n result.push(message)\n }\n break\n }\n case 'assistant': {\n let merged = false\n for (let i = result.length - 1; i >= 0; i--) {\n const prev = result[i]\n if (prev.type !== 'assistant' && !isUserToolResultMessage(prev)) {\n break\n }\n if (prev.type === 'assistant') {\n if (prev.message.id === message.message.id) {\n result[i] = {\n ...prev,\n message: {\n ...prev.message,\n content: [\n ...(Array.isArray(prev.message.content)\n ? prev.message.content\n : []),\n ...(Array.isArray(message.message.content)\n ? message.message.content\n : []),\n ],\n },\n }\n merged = true\n }\n break\n }\n }\n if (!merged) {\n result.push(message)\n }\n break\n }\n }\n }\n\n return result\n}\n\nexport function normalizeContentFromAPI(\n content: APIMessage['content'],\n): APIMessage['content'] {\n const filteredContent = content.filter(\n _ => _.type !== 'text' || _.text.trim().length > 0,\n )\n\n if (filteredContent.length === 0) {\n return [{ type: 'text', text: NO_CONTENT_MESSAGE, citations: [] }]\n }\n\n return filteredContent\n}\n\nexport function isEmptyMessageText(text: string): boolean {\n return (\n stripSystemMessages(text).trim() === '' ||\n text.trim() === NO_CONTENT_MESSAGE\n )\n}\n\nconst STRIPPED_TAGS = [\n 'commit_analysis',\n 'context',\n 'function_analysis',\n 'pr_analysis',\n]\n\nexport function stripSystemMessages(content: string): string {\n const regex = new RegExp(\n `<(${STRIPPED_TAGS.join('|')})>.*?</\\\\\\\\1>\\\\n?`,\n 'gs',\n )\n return content.replace(regex, '').trim()\n}\n\nexport function getLastAssistantMessageId(\n messages: Message[],\n): string | undefined {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]\n if (message && message.type === 'assistant') {\n return message.message.id\n }\n }\n return undefined\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["createHash", "randomUUID", "stableUuidFromSeed", "createHash", "randomUUID"]
7
+ }
@@ -2,16 +2,16 @@ import {
2
2
  emitReminderEvent,
3
3
  getAgentFilePath,
4
4
  systemReminderService
5
- } from "./chunk-DZPD6H7A.js";
5
+ } from "./chunk-JXYXMP2Q.js";
6
6
  import {
7
7
  debug
8
- } from "./chunk-KDY7XYYS.js";
8
+ } from "./chunk-YQ3YJSMI.js";
9
9
  import {
10
10
  listAllContentFiles
11
- } from "./chunk-WGMKKKS2.js";
11
+ } from "./chunk-4BBWDSDC.js";
12
12
  import {
13
13
  logError
14
- } from "./chunk-AKC4BUW5.js";
14
+ } from "./chunk-SOBWNYOW.js";
15
15
  import {
16
16
  getCwd
17
17
  } from "./chunk-5ARRC2T2.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createDefaultToolPermissionContext,
3
3
  isPersistableToolPermissionDestination
4
- } from "./chunk-4RVYYLN7.js";
4
+ } from "./chunk-E4C4N7OV.js";
5
5
  import {
6
6
  logError
7
- } from "./chunk-AKC4BUW5.js";
7
+ } from "./chunk-SOBWNYOW.js";
8
8
  import {
9
9
  getCwd
10
10
  } from "./chunk-5ARRC2T2.js";
@@ -3,22 +3,22 @@ import {
3
3
  } from "./chunk-QAXE37B5.js";
4
4
  import {
5
5
  getAllTools
6
- } from "./chunk-V3IXG64X.js";
6
+ } from "./chunk-WOMV4RCI.js";
7
7
  import {
8
8
  resolveToolDescription
9
- } from "./chunk-QBW7VU7C.js";
9
+ } from "./chunk-DWKF6SQH.js";
10
10
  import {
11
11
  createAssistantMessage
12
- } from "./chunk-Y33AS3MY.js";
12
+ } from "./chunk-L2LWCVUF.js";
13
13
  import {
14
14
  logError
15
- } from "./chunk-AKC4BUW5.js";
15
+ } from "./chunk-SOBWNYOW.js";
16
16
  import {
17
17
  setCwd
18
18
  } from "./chunk-5ARRC2T2.js";
19
19
  import {
20
20
  MACRO
21
- } from "./chunk-P77NF36M.js";
21
+ } from "./chunk-6CAQXUDY.js";
22
22
  import {
23
23
  LEGACY_ENV
24
24
  } from "./chunk-IJOMPG6S.js";
@@ -155,7 +155,7 @@ async function startMCPServer(cwd) {
155
155
  );
156
156
  }
157
157
  const assistantMessage = createAssistantMessage("");
158
- const permission = await (await import("./permissions-34CRWMCH.js")).hasPermissionsToUseTool(
158
+ const permission = await (await import("./permissions-C3N4DKS2.js")).hasPermissionsToUseTool(
159
159
  tool,
160
160
  toolInput,
161
161
  toolUseContext,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useDoublePress,
3
3
  useExitOnCtrlCD
4
- } from "./chunk-5MVUCX6O.js";
4
+ } from "./chunk-AZHJLRRP.js";
5
5
  import {
6
6
  wrapLines
7
7
  } from "./chunk-7FPYAZAS.js";
@@ -10,26 +10,26 @@ import {
10
10
  terminalCapabilityManager,
11
11
  useKeypress,
12
12
  writeToStdout
13
- } from "./chunk-DELUVYKS.js";
13
+ } from "./chunk-XVNEJVZC.js";
14
14
  import {
15
15
  ScreenFrame
16
- } from "./chunk-REQTXUXO.js";
16
+ } from "./chunk-5LBRVQT5.js";
17
17
  import {
18
18
  useScreenLayout
19
- } from "./chunk-DPQE5NA4.js";
19
+ } from "./chunk-7SRIFZDJ.js";
20
20
  import {
21
21
  models_default
22
22
  } from "./chunk-2WEXPKHH.js";
23
23
  import {
24
24
  fetchCustomModels,
25
25
  providers
26
- } from "./chunk-MXFN7OSL.js";
26
+ } from "./chunk-MOGUUWKG.js";
27
27
  import {
28
28
  FileWriteTool,
29
29
  normalizeLineEndings,
30
30
  shouldAggregatePasteChunk,
31
31
  shouldTreatAsSpecialPaste
32
- } from "./chunk-LIBZWJEW.js";
32
+ } from "./chunk-BNSPVA24.js";
33
33
  import {
34
34
  getCachedStringWidth
35
35
  } from "./chunk-UKNILZCN.js";
@@ -38,7 +38,7 @@ import {
38
38
  getCompatSyspromptPrefix,
39
39
  getCompatSystemPrompt,
40
40
  getSystemPrompt
41
- } from "./chunk-MEQ7TAT7.js";
41
+ } from "./chunk-KHMXPPO7.js";
42
42
  import {
43
43
  COMPAT_TOOL_ALLOWLIST,
44
44
  buildCompatHeaders,
@@ -50,14 +50,14 @@ import {
50
50
  } from "./chunk-HDVL5VTM.js";
51
51
  import {
52
52
  getModelManager
53
- } from "./chunk-VSKGDU73.js";
53
+ } from "./chunk-FKWFR23G.js";
54
54
  import {
55
55
  debug
56
- } from "./chunk-KDY7XYYS.js";
56
+ } from "./chunk-YQ3YJSMI.js";
57
57
  import {
58
58
  PRODUCT_NAME,
59
59
  logError
60
- } from "./chunk-AKC4BUW5.js";
60
+ } from "./chunk-SOBWNYOW.js";
61
61
  import {
62
62
  DEFAULT_GLOBAL_CONFIG,
63
63
  getGlobalConfig,
@@ -9,7 +9,7 @@ import {
9
9
  debug,
10
10
  getCurrentRequest,
11
11
  logAPIError
12
- } from "./chunk-KDY7XYYS.js";
12
+ } from "./chunk-YQ3YJSMI.js";
13
13
  import {
14
14
  getGlobalConfig
15
15
  } from "./chunk-EYEZUJGL.js";
@@ -6,11 +6,11 @@ import {
6
6
  } from "./chunk-M7P3QNRU.js";
7
7
  import {
8
8
  debug
9
- } from "./chunk-KDY7XYYS.js";
9
+ } from "./chunk-YQ3YJSMI.js";
10
10
  import {
11
11
  getKodeBaseDir,
12
12
  logError
13
- } from "./chunk-AKC4BUW5.js";
13
+ } from "./chunk-SOBWNYOW.js";
14
14
  import {
15
15
  getCwd
16
16
  } from "./chunk-5ARRC2T2.js";
@@ -975,7 +975,7 @@ function emitCustomCommandReloaded(event) {
975
975
  async function reloadCustomCommandsForSession(args) {
976
976
  try {
977
977
  reloadCustomCommands();
978
- const { getCommands } = await import("./registry-FHPZ36EO.js");
978
+ const { getCommands } = await import("./registry-3UVW32YF.js");
979
979
  getCommands.cache.clear?.();
980
980
  } catch (error) {
981
981
  logError(error);