@qwen-code/qwen-code 0.19.8 → 0.19.9-nightly.20260714.9dd8389eb

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 (449) hide show
  1. package/bundled/qc-helper/SKILL.md +1 -0
  2. package/bundled/qc-helper/docs/configuration/auth.md +40 -55
  3. package/bundled/qc-helper/docs/configuration/model-providers.md +224 -218
  4. package/bundled/qc-helper/docs/configuration/settings.md +61 -51
  5. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  6. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -2
  7. package/bundled/qc-helper/docs/features/channels/overview.md +82 -7
  8. package/bundled/qc-helper/docs/features/channels/wecom.md +6 -0
  9. package/bundled/qc-helper/docs/features/code-review.md +109 -41
  10. package/bundled/qc-helper/docs/features/commands.md +45 -44
  11. package/bundled/qc-helper/docs/features/computer-use.md +77 -0
  12. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  13. package/bundled/qc-helper/docs/features/tool-use-summaries.md +19 -23
  14. package/bundled/qc-helper/docs/integration-vscode.md +2 -2
  15. package/bundled/qc-helper/docs/qwen-serve.md +60 -22
  16. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +2 -2
  17. package/bundled/review/DESIGN.md +303 -46
  18. package/bundled/review/SKILL.md +658 -165
  19. package/chunks/MaxSizedBox-QAYHOC4F.js +71 -0
  20. package/chunks/{StandaloneSessionPicker-EYRGH6PJ.js → StandaloneSessionPicker-D3R6YYX3.js} +82 -79
  21. package/chunks/{acpAgent-GRFTTRHW.js → acpAgent-ENHBW72A.js} +1178 -421
  22. package/chunks/agent-57LX4KMG.js +69 -0
  23. package/chunks/agent-headless-AC6EVNAP.js +63 -0
  24. package/chunks/{anthropicContentGenerator-CPF22MA7.js → anthropicContentGenerator-56U3YCP2.js} +187 -31
  25. package/chunks/{artifact-tool-D233YJFH.js → artifact-tool-BWZZJ42H.js} +5 -5
  26. package/chunks/{askUserQuestion-MKL5ZTMC.js → askUserQuestion-WU3S5A5T.js} +6 -6
  27. package/chunks/bridge-4OZH44MK.js +79 -0
  28. package/chunks/{ca-MKD32FQL.js → ca-C2JTT2N5.js} +68 -6
  29. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  30. package/chunks/channel-worker-manager-5RWKSGEU.js +418 -0
  31. package/chunks/channel-worker-supervisor-PCDAZN4D.js +20 -0
  32. package/chunks/{chunk-CSOTA7KX.js → chunk-2FO5GFKZ.js} +2 -2
  33. package/chunks/{chunk-QQDPRDVW.js → chunk-2HRYPZT5.js} +1 -1
  34. package/chunks/{chunk-I6WGFJJ3.js → chunk-2MF6ICOL.js} +38 -12
  35. package/chunks/{chunk-X3YGAX7V.js → chunk-2UUAIFQO.js} +4 -2
  36. package/chunks/{chunk-2PSWA5ID.js → chunk-2X56YUSZ.js} +1 -1
  37. package/chunks/{chunk-NQKLOAVJ.js → chunk-2Z5UX4KI.js} +2 -2
  38. package/chunks/chunk-3MX7D6QN.js +516 -0
  39. package/chunks/{chunk-YDOXPLYL.js → chunk-4DYYRLIE.js} +3890 -975
  40. package/chunks/{chunk-OQXDAMKY.js → chunk-4FPUAYTT.js} +8 -8
  41. package/chunks/{chunk-55ZMG67I.js → chunk-4LD5APFL.js} +4 -4
  42. package/chunks/{chunk-YKZIAK7C.js → chunk-4LJNI7MU.js} +166 -37
  43. package/chunks/{chunk-BOBOCR5H.js → chunk-4QOPEEL2.js} +4 -4
  44. package/chunks/{chunk-UIDXQNMV.js → chunk-4WGODMVR.js} +1 -1
  45. package/chunks/{chunk-E6US47KI.js → chunk-4WKAA4KS.js} +1 -1
  46. package/chunks/{chunk-3GONHQOA.js → chunk-57OAHC2Y.js} +1 -1
  47. package/chunks/{chunk-JZSY4WP3.js → chunk-5DTTYNB7.js} +1 -1
  48. package/chunks/chunk-5HBA2Z7V.js +28 -0
  49. package/chunks/{chunk-SKAZWEV5.js → chunk-5M6IDOMF.js} +35 -98
  50. package/chunks/{chunk-A4BMJM77.js → chunk-5O2XNYP6.js} +1 -0
  51. package/chunks/{chunk-GO6LNQXT.js → chunk-6AM5D4ME.js} +1 -1
  52. package/chunks/{chunk-BJBWRCSK.js → chunk-6H67XLET.js} +1 -1
  53. package/chunks/{chunk-AYNCLGTW.js → chunk-6HHAADP2.js} +8 -51
  54. package/chunks/{chunk-VZ7HY3YU.js → chunk-6OATMEYN.js} +3 -3
  55. package/chunks/{chunk-3UP777ZS.js → chunk-6RLROE6G.js} +1 -1
  56. package/chunks/{chunk-ZERZSAZL.js → chunk-75DOP5OR.js} +2 -2
  57. package/chunks/{chunk-RMLZAUWH.js → chunk-7BIZARI2.js} +10 -12
  58. package/chunks/{chunk-GN3F6PIU.js → chunk-7NAWTFVY.js} +5 -5
  59. package/chunks/{chunk-22MNNNXE.js → chunk-7NFB7LBQ.js} +11 -3
  60. package/chunks/{chunk-ZL5HN75Q.js → chunk-7R4DPSRA.js} +37 -3
  61. package/chunks/{chunk-BVYU3ZTI.js → chunk-7U7UIO5W.js} +1005 -942
  62. package/chunks/{chunk-SAIILPQ3.js → chunk-7X7TEQNX.js} +5 -3
  63. package/chunks/{chunk-IRJWHZWU.js → chunk-A4UCTEB5.js} +2 -2
  64. package/chunks/{chunk-WF4FAXDL.js → chunk-AAS2Q2TV.js} +62 -62
  65. package/chunks/{chunk-O7FIRWJV.js → chunk-AAWKZ5R7.js} +3 -3
  66. package/chunks/{chunk-JCH35JB3.js → chunk-AGBFWLA5.js} +2 -2
  67. package/chunks/{chunk-QYUE6W3T.js → chunk-ALGGS7UH.js} +2 -39
  68. package/chunks/{chunk-WMPVYQ4P.js → chunk-ARKANCNX.js} +3 -2
  69. package/chunks/{chunk-HDOH3QYE.js → chunk-ASVORVFT.js} +2 -2
  70. package/chunks/{chunk-CHB5SLZZ.js → chunk-AUGSSJX3.js} +3 -3
  71. package/chunks/{chunk-PUVCVELY.js → chunk-B6ABUBYY.js} +4 -4
  72. package/chunks/{chunk-L4AMBVQG.js → chunk-B6KHOCU7.js} +49 -21
  73. package/chunks/{chunk-HW4N45EE.js → chunk-B7NUUEXC.js} +38 -11
  74. package/chunks/{chunk-CD6USWHZ.js → chunk-BBNVFRGD.js} +2 -2
  75. package/chunks/{chunk-ZN5T4BHI.js → chunk-BPZALHVR.js} +2 -2
  76. package/chunks/{chunk-VGGOPZUL.js → chunk-C4CXFRKY.js} +12 -5
  77. package/chunks/{chunk-OFEVLU4C.js → chunk-CARU2RR2.js} +1 -1
  78. package/chunks/{chunk-SQ2UATK7.js → chunk-CLTWL6HD.js} +11 -11
  79. package/chunks/{chunk-GLE2YUPU.js → chunk-COH43MRJ.js} +1 -1
  80. package/chunks/{chunk-E5A7LHNN.js → chunk-CPBF7KYF.js} +1 -1
  81. package/chunks/{chunk-UWCTAVOD.js → chunk-CR3C7WXL.js} +1 -1
  82. package/chunks/{chunk-DIWVZ3VM.js → chunk-CSACSGAW.js} +5 -5
  83. package/chunks/{chunk-5P5XGNYH.js → chunk-CU3L64TP.js} +1 -1
  84. package/chunks/{chunk-IWKSG2AR.js → chunk-CXAOG665.js} +1 -1
  85. package/chunks/{chunk-64WXLC72.js → chunk-DJ2GSRLV.js} +1 -1
  86. package/chunks/chunk-DKXW66XA.js +38 -0
  87. package/chunks/{chunk-QN5NZ3UQ.js → chunk-DMTGGOSA.js} +2 -2
  88. package/chunks/{chunk-JZHIQJOE.js → chunk-DMTQY5GY.js} +6 -6
  89. package/chunks/{chunk-GSHQYYIV.js → chunk-DNKX35GS.js} +6 -26
  90. package/chunks/{chunk-6IAWPIQ6.js → chunk-DPSWJWZI.js} +4 -3
  91. package/chunks/{chunk-X2XNQQJI.js → chunk-E2UVIFI2.js} +186 -399
  92. package/chunks/{chunk-KHDZHZMH.js → chunk-E5Z2AVNV.js} +1 -1
  93. package/chunks/{chunk-3B26UVCX.js → chunk-E67NFMF4.js} +39 -10
  94. package/chunks/{chunk-ON3JA3RU.js → chunk-EU3U7USF.js} +7 -9
  95. package/chunks/{chunk-L46XKEGM.js → chunk-EUNRLYJG.js} +5 -8
  96. package/chunks/{chunk-OACJLMLD.js → chunk-FBU7WRZI.js} +18 -2
  97. package/chunks/{chunk-5IFG2VC4.js → chunk-FCMNKVXT.js} +1 -1
  98. package/chunks/{chunk-A5JOJ77H.js → chunk-FDL4PB5H.js} +38 -15
  99. package/chunks/{chunk-E7KNELIZ.js → chunk-FSA7ERJ2.js} +2 -2
  100. package/chunks/{chunk-TI3BWD4D.js → chunk-G6QTKQN4.js} +39 -19
  101. package/chunks/{chunk-44NROQYV.js → chunk-GDQQRV43.js} +4 -4
  102. package/chunks/{chunk-O2YT7VB4.js → chunk-GOXKNSDZ.js} +2 -65
  103. package/chunks/{chunk-V35MD7KN.js → chunk-GRC5HGPI.js} +1 -1
  104. package/chunks/chunk-GYGGUR4Q.js +253 -0
  105. package/chunks/{chunk-S6RLAIUR.js → chunk-GYTKQYDB.js} +1 -1
  106. package/chunks/{chunk-A2X3KLC3.js → chunk-GZXCZHCT.js} +3 -3
  107. package/chunks/{chunk-K5PGHDBN.js → chunk-H6XPXXMH.js} +1 -1
  108. package/chunks/{chunk-E7EMCSUG.js → chunk-HE54PGVI.js} +64 -42
  109. package/chunks/{chunk-KYMBIKIW.js → chunk-HTHUX2T5.js} +1 -1
  110. package/chunks/{chunk-LQ7TMOCE.js → chunk-HTO4JFDZ.js} +1 -1
  111. package/chunks/chunk-HZYUNZDQ.js +296 -0
  112. package/chunks/chunk-IDS7MSUP.js +74 -0
  113. package/chunks/chunk-J2TDDOSM.js +493 -0
  114. package/chunks/{chunk-4CGOWHKM.js → chunk-J4MOFEOK.js} +2 -2
  115. package/chunks/{chunk-22IFUCVR.js → chunk-JESCGQM3.js} +1 -1
  116. package/chunks/chunk-JR63TOV4.js +91 -0
  117. package/chunks/chunk-K3PPUB46.js +445 -0
  118. package/chunks/{chunk-42XGFRJS.js → chunk-KKRTYONM.js} +8 -6
  119. package/chunks/{chunk-GGQQA4JW.js → chunk-KSO42X3Z.js} +15 -2
  120. package/chunks/{chunk-MRO43B25.js → chunk-KW7NOTN6.js} +1 -1
  121. package/chunks/{chunk-54YZOP7P.js → chunk-L573Z2QZ.js} +11894 -5190
  122. package/chunks/{chunk-TLWA7TPR.js → chunk-L5U3ELZX.js} +2 -2
  123. package/chunks/{chunk-WHJQ3JUS.js → chunk-LAM6CGP5.js} +10 -10
  124. package/chunks/{chunk-H6EMK6QK.js → chunk-LQIDP6K5.js} +11913 -5207
  125. package/chunks/{chunk-MZ7BABX3.js → chunk-LXLTBIDP.js} +44 -7
  126. package/chunks/{chunk-HLKG6CZN.js → chunk-M5GB774H.js} +1 -1
  127. package/chunks/{chunk-EEN2TKST.js → chunk-MBJ3D6SF.js} +2 -2
  128. package/chunks/{chunk-PMFULMLX.js → chunk-MBP3K324.js} +2234 -377
  129. package/chunks/chunk-MR3PXB6E.js +48 -0
  130. package/chunks/{chunk-ZE6E424U.js → chunk-N7FCSERB.js} +2 -2
  131. package/chunks/{chunk-332PWN27.js → chunk-NHDKSOEY.js} +1 -1
  132. package/chunks/chunk-OATTJGPJ.js +448 -0
  133. package/chunks/{chunk-UX6OTBVD.js → chunk-OCC3UTWA.js} +2 -2
  134. package/chunks/{chunk-P7M4GA57.js → chunk-OCPBI7J5.js} +1 -1
  135. package/chunks/chunk-OJAMDVF5.js +66 -0
  136. package/chunks/{chunk-IJRL2S3D.js → chunk-OKAIGAYW.js} +6 -6
  137. package/chunks/{chunk-WQTHLB5T.js → chunk-P3S67A5R.js} +7 -7
  138. package/chunks/{chunk-FBET5XZ2.js → chunk-PEJWA3QQ.js} +29 -10
  139. package/chunks/{chunk-J7RCB6N5.js → chunk-PHYCWSDG.js} +2 -2
  140. package/chunks/{chunk-LAXNEOBG.js → chunk-PMRH4YYW.js} +18 -3
  141. package/chunks/{chunk-AGHU5VRK.js → chunk-PZL23GTM.js} +1 -1
  142. package/chunks/{chunk-PC4ZXHU2.js → chunk-Q6TUALBE.js} +3 -3
  143. package/chunks/{chunk-FXGLL2HL.js → chunk-Q7YDKOGY.js} +1 -1
  144. package/chunks/{chunk-P3XEEI3X.js → chunk-QABSSDQH.js} +36 -7
  145. package/chunks/{chunk-XOHNA2S6.js → chunk-QAW7PIHT.js} +3 -3
  146. package/chunks/{chunk-LGFAYIKX.js → chunk-QHTIBUWB.js} +1 -1
  147. package/chunks/{chunk-P3MYAZBY.js → chunk-QMGX2KO2.js} +1 -1
  148. package/chunks/{chunk-Z3I3QJK3.js → chunk-QRUIS3DN.js} +1 -1
  149. package/chunks/{chunk-ITOGNELQ.js → chunk-QSWDGAIC.js} +2 -2
  150. package/chunks/{chunk-GHOTR7HL.js → chunk-QUPXZXLV.js} +1 -1
  151. package/chunks/{chunk-W7EEOR7D.js → chunk-RCEEXIOO.js} +8 -6
  152. package/chunks/{chunk-2EM7ECZD.js → chunk-RJL5T4WJ.js} +281 -65
  153. package/chunks/{chunk-TLRYABYP.js → chunk-RKUWKYED.js} +1 -1
  154. package/chunks/{chunk-RNBYOUGV.js → chunk-RXFQM6FQ.js} +1 -1
  155. package/chunks/{chunk-JRQ7EVGE.js → chunk-S2QXYLUB.js} +2 -2
  156. package/chunks/{chunk-QXPI7FEC.js → chunk-S3TWXGKA.js} +4 -4
  157. package/chunks/{chunk-O33TBKDC.js → chunk-SE74CIZD.js} +155 -19
  158. package/chunks/{chunk-FV7425LN.js → chunk-SPJQO2CE.js} +18 -5
  159. package/chunks/{chunk-3GNOQZDC.js → chunk-SSFDPGFN.js} +11866 -11542
  160. package/chunks/{chunk-DCZWC4PF.js → chunk-SUWGUGAD.js} +5 -5
  161. package/chunks/{chunk-IBY3Q3HG.js → chunk-SXU3KKNI.js} +963 -181
  162. package/chunks/{chunk-MLZQVCF3.js → chunk-SZRN75WQ.js} +1 -1
  163. package/chunks/{chunk-M7S4GK5Z.js → chunk-T2L6SGQY.js} +115 -29
  164. package/chunks/{chunk-7RYW5LQV.js → chunk-T2NCM2ET.js} +2 -2
  165. package/chunks/{chunk-JPALE3PA.js → chunk-T5C2OUCI.js} +6 -6
  166. package/chunks/{chunk-BUZ6HGL4.js → chunk-T7FSRWQ5.js} +248 -55
  167. package/chunks/{chunk-Z2Z3GUXZ.js → chunk-TB6UDU4T.js} +1 -1
  168. package/chunks/{chunk-EXPMGZZV.js → chunk-TEGEBB2I.js} +1 -1
  169. package/chunks/{chunk-MX2YXRER.js → chunk-TJTKSVIV.js} +1 -1
  170. package/chunks/{chunk-CCGOFQV3.js → chunk-TQBODCFD.js} +8 -7
  171. package/chunks/chunk-TV6K2FB4.js +224 -0
  172. package/chunks/{chunk-5MBO76SL.js → chunk-TXY2C3D2.js} +3 -3
  173. package/chunks/{chunk-H6BD2ELD.js → chunk-TYAMGABM.js} +2 -2
  174. package/chunks/{chunk-QYNNN7BK.js → chunk-TYLOFD2U.js} +2 -2
  175. package/chunks/{chunk-VRDMOSQS.js → chunk-UDXSXLER.js} +2 -2
  176. package/chunks/{chunk-UXEW557D.js → chunk-UI3W56WF.js} +3 -3
  177. package/chunks/{chunk-CJCKDMWO.js → chunk-URK542T4.js} +1 -1
  178. package/chunks/{channel-worker-supervisor-NZQUOEFJ.js → chunk-URU5UEK6.js} +190 -34
  179. package/chunks/{chunk-AHNXYU4O.js → chunk-V6WHFGST.js} +1 -1
  180. package/chunks/chunk-V75IOTWF.js +71 -0
  181. package/chunks/{chunk-ZTQ26VBE.js → chunk-VDDGDZMA.js} +1 -1
  182. package/chunks/{chunk-OMX7CUOE.js → chunk-VGC4I5JJ.js} +1 -1
  183. package/chunks/{chunk-43W4YSO6.js → chunk-VJNBRRZG.js} +2 -2
  184. package/chunks/{chunk-ER3BKOLB.js → chunk-W7FJ3N32.js} +1 -1
  185. package/chunks/{chunk-3HX5LZ6R.js → chunk-WBL3FJEU.js} +2 -2
  186. package/chunks/{chunk-7LTB54MK.js → chunk-WIEO4CWB.js} +2 -2
  187. package/chunks/{chunk-BMFMJINR.js → chunk-WL4L7EZH.js} +1 -1
  188. package/chunks/{chunk-6VK6FIMQ.js → chunk-WM5HY72H.js} +415 -379
  189. package/chunks/{chunk-BOBRZZKD.js → chunk-WN4D7YCI.js} +5 -5
  190. package/chunks/{chunk-DHOLNQLC.js → chunk-WWQ3QIJS.js} +60 -40
  191. package/chunks/{chunk-FEJ2FZ3U.js → chunk-WX6SD4IQ.js} +2 -2
  192. package/chunks/{chunk-DICGXFAI.js → chunk-X7EBAABW.js} +11 -9
  193. package/chunks/{chunk-3RW4AZJV.js → chunk-XFSFZCM5.js} +1 -1
  194. package/chunks/{chunk-YHKAK72D.js → chunk-XHW5VUIQ.js} +102 -16
  195. package/chunks/{chunk-2MPVVENX.js → chunk-XU457J4V.js} +2 -2
  196. package/chunks/{chunk-SIUQ3YYX.js → chunk-XVNQMZ2I.js} +1 -1
  197. package/chunks/{chunk-SYCJMSIJ.js → chunk-XWRJCPHC.js} +1 -1
  198. package/chunks/{chunk-SUAKHHK7.js → chunk-Y66VOBRP.js} +3 -3
  199. package/chunks/chunk-YAF2MQZ6.js +19 -0
  200. package/chunks/{chunk-FQNC62B2.js → chunk-YH4J5XI3.js} +11 -11
  201. package/chunks/chunk-YHN5SUIJ.js +219 -0
  202. package/chunks/{chunk-BR4QREVK.js → chunk-YQ3U5MUC.js} +1 -1
  203. package/chunks/{chunk-Y6Z2O3WR.js → chunk-YUZI3WAC.js} +1 -1
  204. package/chunks/{chunk-II73RK2S.js → chunk-YVEDCAUE.js} +1 -1
  205. package/chunks/{chunk-XYR5RUA5.js → chunk-YWUK7OS7.js} +10 -3
  206. package/chunks/{chunk-27BHARDE.js → chunk-Z56JO4JZ.js} +2124 -30
  207. package/chunks/{chunk-TSPB77TG.js → chunk-ZLM3KXBT.js} +1015 -2967
  208. package/chunks/{chunk-AHNJGLFV.js → chunk-ZPAHLFZU.js} +3 -3
  209. package/chunks/chunk-ZRKBI3DP.js +34 -0
  210. package/chunks/cli-entry-path-4VJ3Y6T2.js +10 -0
  211. package/chunks/{computer-use-WMY3UOBX.js → computer-use-DIP5BWXP.js} +51 -50
  212. package/chunks/config-utils-CFT33LTP.js +24 -0
  213. package/chunks/contextCommand-QU4GJWWD.js +69 -0
  214. package/chunks/create-sub-session-TCLIYVGR.js +376 -0
  215. package/chunks/create-sub-session-WNX2OQVX.js +207 -0
  216. package/chunks/{cron-create-JSXEIPVS.js → cron-create-36TIFKRT.js} +9 -9
  217. package/chunks/{cron-delete-OIFVEPGU.js → cron-delete-OQD3WULU.js} +7 -7
  218. package/chunks/{cron-list-D4ZX4IOE.js → cron-list-4533T2FH.js} +14 -10
  219. package/chunks/{daemon-WPAENEBW.js → daemon-CEZ27OH4.js} +734 -24
  220. package/chunks/daemon-status-provider-SIBFMLBQ.js +77 -0
  221. package/chunks/{de-ZFPPQVSF.js → de-2VCDRDGU.js} +68 -6
  222. package/chunks/{devtools-FM6GJPYG.js → devtools-4QFYJT6U.js} +3 -3
  223. package/chunks/{dist-E6UANPIM.js → dist-3V3ZV6ML.js} +1011 -197
  224. package/chunks/{dist-SCFLLYMK.js → dist-ERCPDVA6.js} +12 -11
  225. package/chunks/{dist-Z34QPAQW.js → dist-HNN7DR2L.js} +529 -79
  226. package/chunks/{dist-O2IRTRPP.js → dist-JZE7F6YR.js} +10 -10
  227. package/chunks/{dist-BEXOZXLQ.js → dist-MOEC47TR.js} +36 -15
  228. package/chunks/{dist-H2AEJCZ5.js → dist-PHEPJLXD.js} +5 -5
  229. package/chunks/{dist-63IS3ZMI.js → dist-PZV5RKM6.js} +4 -4
  230. package/chunks/earlyInputCapture-L66BEG2C.js +70 -0
  231. package/chunks/{edit-OTYWAXGP.js → edit-Y5LAJSST.js} +52 -51
  232. package/chunks/{en-N4EPZAQI.js → en-NJCA3TAA.js} +78 -6
  233. package/chunks/{enter-worktree-HNYBDVCX.js → enter-worktree-X5LML7T4.js} +51 -50
  234. package/chunks/{enterPlanMode-CJCNGT63.js → enterPlanMode-XWF32QOW.js} +67 -51
  235. package/chunks/environment-YVMA5F4I.js +90 -0
  236. package/chunks/errors-4Y5SUAOC.js +76 -0
  237. package/chunks/{exit-worktree-DUUKOE3X.js → exit-worktree-SFHU7XYC.js} +51 -50
  238. package/chunks/{exitPlanMode-AMMSXOAJ.js → exitPlanMode-FP3NAN6E.js} +52 -51
  239. package/chunks/{fast-path-OV6NIP3K.js → fast-path-ZJNFFCBM.js} +8 -8
  240. package/chunks/{fast-path-settings-7RIFI3PK.js → fast-path-settings-DAOVFADC.js} +8 -6
  241. package/chunks/{fileFromPath-IBEHA3CO.js → fileFromPath-UDALK7FM.js} +3 -3
  242. package/chunks/{fr-5WWMY53B.js → fr-5F3E7WKD.js} +68 -6
  243. package/chunks/{gemini-NQ3WWBKB.js → gemini-5CAB22BI.js} +122 -109
  244. package/chunks/{geminiContentGenerator-CDUNEJQE.js → geminiContentGenerator-GE3HPIFB.js} +9 -9
  245. package/chunks/{getMachineId-bsd-4CASPIU4.js → getMachineId-bsd-EXV7SWPA.js} +3 -3
  246. package/chunks/{getMachineId-darwin-HPQPEMZR.js → getMachineId-darwin-IUOMFXU3.js} +3 -3
  247. package/chunks/{getMachineId-linux-AUARKYHL.js → getMachineId-linux-K7XJYFHL.js} +2 -2
  248. package/chunks/{getMachineId-unsupported-S32ZDA2T.js → getMachineId-unsupported-EA5FDRJ6.js} +2 -2
  249. package/chunks/{getMachineId-win-4EFLHYIJ.js → getMachineId-win-KBA6RAI5.js} +3 -3
  250. package/chunks/{glob-ROV3YS4R.js → glob-YPACZAEL.js} +98 -75
  251. package/chunks/{grep-NRITKDCD.js → grep-IPR4XW37.js} +51 -50
  252. package/chunks/handleAutoUpdate-P2KEP56V.js +70 -0
  253. package/chunks/i18n-BRCT66AA.js +85 -0
  254. package/chunks/initializer-34HXSK3A.js +74 -0
  255. package/chunks/installationInfo-WOTDQMSC.js +66 -0
  256. package/chunks/{ja-CUHZOLEJ.js → ja-66J6B53L.js} +69 -7
  257. package/chunks/{keychain-token-storage-UJV5XP4Z.js → keychain-token-storage-AU22CQI6.js} +4 -4
  258. package/chunks/{kittyProtocolDetector-OJRCJLIU.js → kittyProtocolDetector-HCNNKJTI.js} +2 -2
  259. package/chunks/list-XOGP7UPP.js +77 -0
  260. package/chunks/loadedSettingsAdapter-L4YKGU6F.js +71 -0
  261. package/chunks/{loop-wakeup-OHWEMFP5.js → loop-wakeup-MVUKDVCP.js} +10 -10
  262. package/chunks/{lowlight-FYAAUU5J.js → lowlight-J2OZNPCA.js} +1 -1
  263. package/chunks/{ls-7MFU2QYW.js → ls-RXNIAQDE.js} +6 -6
  264. package/chunks/{lsp-XHDTPTGV.js → lsp-HB5LM5IL.js} +4 -4
  265. package/chunks/mcp-HH7DIP7Y.js +71 -0
  266. package/chunks/{monitor-FL2ZO33W.js → monitor-25DEBT6U.js} +51 -50
  267. package/chunks/{multipart-parser-AJ4WASWR.js → multipart-parser-AWZKXSQN.js} +3 -3
  268. package/chunks/nonInteractiveCli-CT3VSSLK.js +130 -0
  269. package/chunks/{notebook-edit-6PULTHL5.js → notebook-edit-TAVXSWQ6.js} +52 -51
  270. package/chunks/openaiContentGenerator-6I7DKUAN.js +56 -0
  271. package/chunks/pidfile-SIQGCFLZ.js +74 -0
  272. package/chunks/{pt-OLYN42DS.js → pt-TFZO5Y6T.js} +68 -6
  273. package/chunks/{qwenContentGenerator-NX2E7PB7.js → qwenContentGenerator-5DDIXI2N.js} +53 -52
  274. package/chunks/{qwenOAuth2-ZV7YLMND.js → qwenOAuth2-LEYOU7RU.js} +9 -9
  275. package/chunks/read-file-WDOAYRFU.js +30 -0
  276. package/chunks/{read-mcp-resource-CNQHBSJM.js → read-mcp-resource-6LRTZKXI.js} +5 -5
  277. package/chunks/{read-package-up-ER5OJUGP.js → read-package-up-TCM6I7S2.js} +2 -2
  278. package/chunks/{record-artifact-SQ2OKRJW.js → record-artifact-PMDTY4OS.js} +4 -4
  279. package/chunks/ripGrep-MI7PHN3Q.js +61 -0
  280. package/chunks/{ru-LDM3GWVQ.js → ru-4L4LFHIT.js} +68 -6
  281. package/chunks/{run-qwen-serve-JK2DL7PI.js → run-qwen-serve-PNTYF3RE.js} +1289 -256
  282. package/chunks/runtime-V3FBMUTG.js +100 -0
  283. package/chunks/{scheduler-O4IGVZKK.js → scheduler-4TAUIJBM.js} +52 -51
  284. package/chunks/{send-message-76GT3JMC.js → send-message-SR4WSXP2.js} +7 -7
  285. package/chunks/serve-WB2TR7XM.js +77 -0
  286. package/chunks/{server-SGNPKX2O.js → server-AF6LNFPK.js} +8094 -2800
  287. package/chunks/{session-5BNM25EZ.js → session-BIGK4NRW.js} +341 -135
  288. package/chunks/settings-IXF5FIQO.js +121 -0
  289. package/chunks/shell-5VWJ2PPG.js +69 -0
  290. package/chunks/{skill-I22QK5XS.js → skill-SI667Y3B.js} +24 -24
  291. package/chunks/spawnChannel-IKX6DD7J.js +71 -0
  292. package/chunks/{src-BBQSM46M.js → src-55DZWDAK.js} +151 -52
  293. package/chunks/{src-7XL4G4DC.js → src-VLI3TKEY.js} +4 -4
  294. package/chunks/standalone-update-MHLSFHE6.js +80 -0
  295. package/chunks/{startInteractiveUI-JII36UGN.js → startInteractiveUI-V2EDWLAX.js} +2239 -1846
  296. package/chunks/stdioHelpers-UMY72QRP.js +14 -0
  297. package/chunks/{syntheticOutput-F7LSDCAR.js → syntheticOutput-YKFNUQZD.js} +5 -5
  298. package/chunks/task-create-NUFOHU53.js +23 -0
  299. package/chunks/{task-list-TGGJX7EA.js → task-list-Z2IKQY3S.js} +11 -10
  300. package/chunks/{task-stop-W7NGTMYQ.js → task-stop-KQFIVQTJ.js} +4 -4
  301. package/chunks/{task-update-XYWMHJGJ.js → task-update-HKADXSTD.js} +13 -12
  302. package/chunks/{team-create-A7NUU5AQ.js → team-create-IZAMLBJS.js} +51 -50
  303. package/chunks/{team-delete-UHQQ2QQX.js → team-delete-SDNTGZLG.js} +11 -10
  304. package/chunks/{team-plan-approval-TOQRJ2KI.js → team-plan-approval-3R4RCKCP.js} +51 -50
  305. package/chunks/theme-manager-LCOXZ5DO.js +65 -0
  306. package/chunks/{todoWrite-C4ZAMSR3.js → todoWrite-YNXB27GB.js} +6 -6
  307. package/chunks/{tool-search-SZ4EFS2T.js → tool-search-NYNCD5LF.js} +24 -24
  308. package/chunks/total-session-admission-PJWGOMQE.js +73 -0
  309. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  310. package/chunks/trustedFolders-DOJDHNYP.js +81 -0
  311. package/chunks/{types-QX5C3CHJ.js → types-JNKGKUJT.js} +2 -2
  312. package/chunks/updateCheck-ZXL66KIG.js +70 -0
  313. package/chunks/updateEventEmitter-5MKC7BLQ.js +10 -0
  314. package/chunks/validateNonInterActiveAuth-JSNJZCYY.js +195 -0
  315. package/chunks/{version-NO2XSNNP.js → version-3NLBENG5.js} +3 -3
  316. package/chunks/{web-fetch-UYGMOHW4.js → web-fetch-ZSPR3PRR.js} +8 -8
  317. package/chunks/{workflow-WO2H6NRI.js → workflow-BQYLF7XP.js} +52 -51
  318. package/chunks/workspace-providers-status-FA2DGEZW.js +74 -0
  319. package/chunks/workspace-registration-store-TARTAGMI.js +27 -0
  320. package/chunks/workspace-registry-AGE7WAXX.js +77 -0
  321. package/chunks/workspace-service-ERC5VR2B.js +83 -0
  322. package/chunks/workspace-skills-status-FKYWGNCN.js +73 -0
  323. package/chunks/{write-file-PX2Z7IBE.js → write-file-S47KSK7Z.js} +52 -51
  324. package/chunks/{yargs-B64EYTCF.js → yargs-6H2AUULL.js} +2 -2
  325. package/chunks/{zh-J4F6QWQV.js → zh-FSAH32JB.js} +79 -7
  326. package/chunks/{zh-TW-XVDWOLSW.js → zh-TW-D2YIE2LO.js} +79 -7
  327. package/cli.js +18 -17
  328. package/locales/ca.js +91 -7
  329. package/locales/de.js +90 -7
  330. package/locales/en.js +109 -7
  331. package/locales/fr.js +91 -7
  332. package/locales/ja.js +93 -7
  333. package/locales/pt.js +90 -7
  334. package/locales/ru.js +90 -7
  335. package/locales/zh-TW.js +106 -7
  336. package/locales/zh.js +106 -7
  337. package/package.json +3 -6
  338. package/web-shell/assets/{arc-BWyoJpY2.js → arc-Zj4EkBUY.js} +1 -1
  339. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BT0mGrz2.js → architectureDiagram-3BPJPVTR-DAk1Ua3Y.js} +1 -1
  340. package/web-shell/assets/{blockDiagram-GPEHLZMM-BLgUWvyf.js → blockDiagram-GPEHLZMM-DBNqUthM.js} +1 -1
  341. package/web-shell/assets/{c4Diagram-AAUBKEIU-DYx9M7oU.js → c4Diagram-AAUBKEIU-Dq5QGJ53.js} +1 -1
  342. package/web-shell/assets/channel-DWfYijFS.js +1 -0
  343. package/web-shell/assets/{chunk-2J33WTMH-CfMHWbuZ.js → chunk-2J33WTMH-DY0AeGru.js} +1 -1
  344. package/web-shell/assets/{chunk-4BX2VUAB-B1URoqEV.js → chunk-4BX2VUAB-COX3OyIi.js} +1 -1
  345. package/web-shell/assets/{chunk-55IACEB6-DAIaM4QF.js → chunk-55IACEB6-Csoyddbh.js} +1 -1
  346. package/web-shell/assets/{chunk-727SXJPM-B2X34knw.js → chunk-727SXJPM-BJPONdxX.js} +1 -1
  347. package/web-shell/assets/{chunk-AQP2D5EJ-Cif-zLTQ.js → chunk-AQP2D5EJ-syLVH6fg.js} +1 -1
  348. package/web-shell/assets/{chunk-FMBD7UC4-H18WCXdY.js → chunk-FMBD7UC4-Cfm59Nhw.js} +1 -1
  349. package/web-shell/assets/{chunk-ND2GUHAM-YFtetHi0.js → chunk-ND2GUHAM-DZf6tAqS.js} +1 -1
  350. package/web-shell/assets/{chunk-QZHKN3VN-By2hiH3r.js → chunk-QZHKN3VN-DKBp_v5q.js} +1 -1
  351. package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +1 -0
  352. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +1 -0
  353. package/web-shell/assets/{cose-bilkent-S5V4N54A-VrcnnLZu.js → cose-bilkent-S5V4N54A-DUU3mMQ5.js} +1 -1
  354. package/web-shell/assets/{dagre-BM42HDAG-CGo-IaVV.js → dagre-BM42HDAG-BUgNfbh-.js} +1 -1
  355. package/web-shell/assets/{diagram-2AECGRRQ-Dl4QjzIB.js → diagram-2AECGRRQ-DT7MVfAg.js} +1 -1
  356. package/web-shell/assets/{diagram-5GNKFQAL-qMLmsO0u.js → diagram-5GNKFQAL-Cv4YG-ec.js} +1 -1
  357. package/web-shell/assets/{diagram-KO2AKTUF-CHlmuxPI.js → diagram-KO2AKTUF-BAe9LLkn.js} +1 -1
  358. package/web-shell/assets/{diagram-LMA3HP47-BUwU3GwT.js → diagram-LMA3HP47-DW8wqTIP.js} +1 -1
  359. package/web-shell/assets/{diagram-OG6HWLK6-HEhwPDUM.js → diagram-OG6HWLK6-CmkuWbaK.js} +1 -1
  360. package/web-shell/assets/{erDiagram-TEJ5UH35-1n0llBmM.js → erDiagram-TEJ5UH35-DwvdHjZ9.js} +1 -1
  361. package/web-shell/assets/{flowDiagram-I6XJVG4X-BN74uMnt.js → flowDiagram-I6XJVG4X-CSsXrhW_.js} +1 -1
  362. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BoOq78i3.js → ganttDiagram-6RSMTGT7-BtuznCdi.js} +3 -3
  363. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CN8b00c8.js → gitGraphDiagram-PVQCEYII-DGmAm06g.js} +1 -1
  364. package/web-shell/assets/index-B9Xwf4OS.css +5 -0
  365. package/web-shell/assets/index-BEtz1cvN.js +3 -0
  366. package/web-shell/assets/index-BUkM4ZXX.js +1088 -0
  367. package/web-shell/assets/{infoDiagram-5YYISTIA-CCurnIna.js → infoDiagram-5YYISTIA-OAiZ1q0K.js} +1 -1
  368. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-AwuRqdUP.js → ishikawaDiagram-YF4QCWOH-DyK0KTIT.js} +1 -1
  369. package/web-shell/assets/{journeyDiagram-JHISSGLW-B7IICk-E.js → journeyDiagram-JHISSGLW-DzYJlwfO.js} +1 -1
  370. package/web-shell/assets/{kanban-definition-UN3LZRKU-BYF0OKhx.js → kanban-definition-UN3LZRKU-CU_tcDwi.js} +1 -1
  371. package/web-shell/assets/{linear-GWWguGfD.js → linear-DvZXjF17.js} +1 -1
  372. package/web-shell/assets/{mermaid.core-JqtkxvCl.js → mermaid.core-_ZFEQlOl.js} +5 -5
  373. package/web-shell/assets/{mindmap-definition-RKZ34NQL-B0MmHsZ6.js → mindmap-definition-RKZ34NQL-Or4p64HB.js} +1 -1
  374. package/web-shell/assets/{pieDiagram-4H26LBE5-DhImUZLQ.js → pieDiagram-4H26LBE5-lXE-zZ6b.js} +1 -1
  375. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DGeSC3DT.js → quadrantDiagram-W4KKPZXB-DUXb9mUV.js} +1 -1
  376. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DkspY6Re.js → requirementDiagram-4Y6WPE33-D_10uHfo.js} +1 -1
  377. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CaOofS2x.js → sankeyDiagram-5OEKKPKP-E8c0fPqe.js} +1 -1
  378. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DFQ_kFnN.js → sequenceDiagram-3UESZ5HK-CJMtFttK.js} +1 -1
  379. package/web-shell/assets/{stateDiagram-AJRCARHV-D3snw0Tz.js → stateDiagram-AJRCARHV-DhbviRbB.js} +1 -1
  380. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +1 -0
  381. package/web-shell/assets/{timeline-definition-PNZ67QCA-l4zH8nLM.js → timeline-definition-PNZ67QCA-CM5yMkFK.js} +1 -1
  382. package/web-shell/assets/{vennDiagram-CIIHVFJN-BnRlA98M.js → vennDiagram-CIIHVFJN-BCi-zWNN.js} +1 -1
  383. package/web-shell/assets/{wardley-L42UT6IY-BS0xUdmd.js → wardley-L42UT6IY-BJ_yJNjJ.js} +1 -1
  384. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKGBUWyQ.js → wardleyDiagram-YWT4CUSO-TjtLk-qN.js} +1 -1
  385. package/web-shell/assets/{xychartDiagram-2RQKCTM6-DVb2HuOB.js → xychartDiagram-2RQKCTM6-D1TjyoQ3.js} +1 -1
  386. package/web-shell/index.html +16 -4
  387. package/chunks/MaxSizedBox-5DT2SD7B.js +0 -71
  388. package/chunks/agent-H2DGKS77.js +0 -68
  389. package/chunks/agent-headless-KFMFIT6J.js +0 -62
  390. package/chunks/bridge-NA3ZQQKJ.js +0 -78
  391. package/chunks/chunk-6SHO7WFF.js +0 -79
  392. package/chunks/chunk-IFEWJXFS.js +0 -37
  393. package/chunks/chunk-XNXVCNAT.js +0 -88
  394. package/chunks/contextCommand-LXFZRP4L.js +0 -68
  395. package/chunks/daemon-status-provider-GJRXY5EN.js +0 -76
  396. package/chunks/earlyInputCapture-KNOYZ4MJ.js +0 -69
  397. package/chunks/environment-ATFTYMLZ.js +0 -88
  398. package/chunks/errors-A54HAADA.js +0 -75
  399. package/chunks/handleAutoUpdate-CEZJAARW.js +0 -65
  400. package/chunks/initializer-BRFJKRRX.js +0 -71
  401. package/chunks/list-KVHF7O4X.js +0 -73
  402. package/chunks/loadedSettingsAdapter-LL5PSFKX.js +0 -68
  403. package/chunks/mcp-3GCXRTOQ.js +0 -68
  404. package/chunks/nonInteractiveCli-PTQI3DV6.js +0 -119
  405. package/chunks/openaiContentGenerator-YE42PKCY.js +0 -56
  406. package/chunks/pidfile-NZYSCFRK.js +0 -73
  407. package/chunks/read-file-33XGP5HF.js +0 -30
  408. package/chunks/ripGrep-QWZLGTAN.js +0 -60
  409. package/chunks/serve-JTMIGANH.js +0 -74
  410. package/chunks/settings-3MI4XXP6.js +0 -118
  411. package/chunks/shell-YJKBE67T.js +0 -68
  412. package/chunks/spawnChannel-UNV6W4DU.js +0 -70
  413. package/chunks/task-create-WCHTB435.js +0 -22
  414. package/chunks/theme-manager-WZ4RRMMB.js +0 -64
  415. package/chunks/total-session-admission-ULXJWXFV.js +0 -72
  416. package/chunks/trustedFolders-LAZZPZ3D.js +0 -79
  417. package/chunks/updateCheck-KONLM73X.js +0 -65
  418. package/chunks/validateNonInterActiveAuth-MPKSRCXD.js +0 -184
  419. package/chunks/workspace-providers-status-3W7E7DFW.js +0 -71
  420. package/chunks/workspace-registry-SXJZNN3O.js +0 -74
  421. package/chunks/workspace-service-CZRQZ4Q4.js +0 -80
  422. package/chunks/workspace-skills-status-K7WFREPD.js +0 -70
  423. package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +0 -35
  424. package/node_modules/@qwen-code/audio-capture/dist/index.js +0 -48
  425. package/node_modules/@qwen-code/audio-capture/dist/index.js.map +0 -1
  426. package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +0 -7
  427. package/node_modules/@qwen-code/audio-capture/dist/platform.js +0 -18
  428. package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +0 -1
  429. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +0 -21
  430. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +0 -58
  431. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +0 -5
  432. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +0 -84
  433. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +0 -19
  434. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +0 -6
  435. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  436. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +0 -7
  437. package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +0 -43
  438. package/node_modules/@qwen-code/audio-capture/package.json +0 -30
  439. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  440. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  441. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-arm64/@qwen-code+audio-capture.node +0 -0
  442. package/node_modules/@qwen-code/audio-capture/prebuilds/linux-x64/@qwen-code+audio-capture.node +0 -0
  443. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  444. package/web-shell/assets/channel-wmPUGHtg.js +0 -1
  445. package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +0 -1
  446. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +0 -1
  447. package/web-shell/assets/index-CNwoO1Cn.js +0 -783
  448. package/web-shell/assets/index-CWQ0z6kZ.css +0 -5
  449. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +0 -1
@@ -1,8 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
5
+ } from "./chunk-5HBA2Z7V.js";
3
6
  import {
4
7
  init_esbuild_shims
5
- } from "./chunk-A4BMJM77.js";
8
+ } from "./chunk-5O2XNYP6.js";
6
9
  import {
7
10
  __name
8
11
  } from "./chunk-J2S4EL5Y.js";
@@ -339,10 +342,12 @@ var RestSseTransport = class {
339
342
  _disposed = false;
340
343
  type = "rest";
341
344
  supportsReplay = true;
345
+ restFetch;
342
346
  constructor(baseUrl, token, fetchFn) {
343
347
  this.baseUrl = baseUrl;
344
348
  this.token = token;
345
349
  this._fetch = fetchFn;
350
+ this.restFetch = fetchFn;
346
351
  }
347
352
  get connected() {
348
353
  return !this._disposed;
@@ -567,7 +572,7 @@ var DaemonClient = class {
567
572
  constructor(opts) {
568
573
  this.baseUrl = stripTrailingSlashes(opts.baseUrl);
569
574
  this.token = opts.token ?? readTokenFromEnv();
570
- this._fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);
575
+ this._fetch = opts.fetch ?? opts.transport?.restFetch ?? globalThis.fetch.bind(globalThis);
571
576
  const raw = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
572
577
  this.fetchTimeoutMs = Number.isFinite(raw) && raw > 0 ? raw : 0;
573
578
  this.promptLimit = normalizePendingPromptLimit(
@@ -683,9 +688,51 @@ var DaemonClient = class {
683
688
  if (!res.ok) throw await this.failOnError(res, label);
684
689
  return await res.json();
685
690
  },
691
+ opts.timeoutMs,
692
+ opts.mode
693
+ );
694
+ }
695
+ /** @internal */
696
+ async workspaceJsonRequest(workspaceSelector, path, label, opts = {}) {
697
+ return await this.jsonRequest(
698
+ `/workspaces/${workspaceSelector}${path}`,
699
+ label,
700
+ opts
701
+ );
702
+ }
703
+ /** @internal */
704
+ async workspaceNoContentRequest(workspaceSelector, path, label, opts = {}) {
705
+ return await this.fetchWithTimeout(
706
+ `${this.baseUrl}/workspaces/${workspaceSelector}${path}`,
707
+ {
708
+ ...opts.method ? { method: opts.method } : {},
709
+ headers: this.headers({}, opts.clientId)
710
+ },
711
+ async (res) => {
712
+ if (res.status === 204) {
713
+ try {
714
+ await res.body?.cancel();
715
+ } catch {
716
+ }
717
+ return;
718
+ }
719
+ if (res.status === 404 && opts.okNotFoundCode) {
720
+ const err = await this.failOnError(res, label);
721
+ const body = err.body;
722
+ if (body?.code === opts.okNotFoundCode) return;
723
+ throw err;
724
+ }
725
+ throw await this.failOnError(res, label);
726
+ },
686
727
  opts.timeoutMs
687
728
  );
688
729
  }
730
+ workspaceById(workspaceId) {
731
+ return new WorkspaceDaemonClient(this, urlEncode(workspaceId));
732
+ }
733
+ workspaceByCwd(workspaceCwd) {
734
+ return new WorkspaceDaemonClient(this, urlEncode(workspaceCwd));
735
+ }
689
736
  // -- Lifecycle / discovery ---------------------------------------------
690
737
  async health() {
691
738
  return await this.fetchWithTimeout(
@@ -748,6 +795,13 @@ var DaemonClient = class {
748
795
  }
749
796
  );
750
797
  }
798
+ async workspaceGit() {
799
+ return await this.jsonRequest(
800
+ "/workspace/git",
801
+ "GET /workspace/git",
802
+ { mode: "rest" }
803
+ );
804
+ }
751
805
  async workspaceMcpTools(serverName) {
752
806
  return await this.fetchWithTimeout(
753
807
  `${this.baseUrl}/workspace/mcp/${urlEncode(serverName)}/tools`,
@@ -787,6 +841,33 @@ var DaemonClient = class {
787
841
  }
788
842
  );
789
843
  }
844
+ async workspaceAcpPreheat(timeoutMs) {
845
+ const serverBudgetMs = timeoutMs ?? 5e3;
846
+ const suffix = timeoutMs !== void 0 ? `?timeoutMs=${encodeURIComponent(timeoutMs)}` : "";
847
+ return await this.fetchWithTimeout(
848
+ `${this.baseUrl}/workspace/acp/preheat${suffix}`,
849
+ { method: "POST", headers: this.headers() },
850
+ async (res) => {
851
+ if (!res.ok) {
852
+ throw await this.failOnError(res, "POST /workspace/acp/preheat");
853
+ }
854
+ return await res.json();
855
+ },
856
+ serverBudgetMs + 2e3
857
+ );
858
+ }
859
+ async workspaceAcpStatus() {
860
+ return await this.fetchWithTimeout(
861
+ `${this.baseUrl}/workspace/acp/status`,
862
+ { headers: this.headers() },
863
+ async (res) => {
864
+ if (!res.ok) {
865
+ throw await this.failOnError(res, "GET /workspace/acp/status");
866
+ }
867
+ return await res.json();
868
+ }
869
+ );
870
+ }
790
871
  async workspaceProviders() {
791
872
  return await this.fetchWithTimeout(
792
873
  `${this.baseUrl}/workspace/providers`,
@@ -1279,7 +1360,8 @@ var DaemonClient = class {
1279
1360
  // invalid_session_scope` surface the bug. Same shape the
1280
1361
  // bridge's own validation uses (`httpAcpBridge.ts:
1281
1362
  // spawnOrAttach`); SDK should be a transparent layer here.
1282
- ...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {}
1363
+ ...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
1364
+ ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
1283
1365
  })
1284
1366
  },
1285
1367
  async (res) => {
@@ -1289,8 +1371,8 @@ var DaemonClient = class {
1289
1371
  );
1290
1372
  }
1291
1373
  /**
1292
- * Enumerate live sessions in the given workspace. Used by session-picker
1293
- * UIs. Returns an empty list (not 404) when the workspace has no sessions.
1374
+ * Enumerate the session catalog for a workspace. Used by session-picker UIs.
1375
+ * Returns an empty list (not 404) when the workspace has no sessions.
1294
1376
  */
1295
1377
  async listWorkspaceSessions(workspaceCwd, options) {
1296
1378
  const page = await this.listWorkspaceSessionsPage(workspaceCwd, options);
@@ -1320,6 +1402,9 @@ var DaemonClient = class {
1320
1402
  if (options?.group !== void 0) {
1321
1403
  query.set("group", options.group);
1322
1404
  }
1405
+ if (options?.parentSessionId !== void 0) {
1406
+ query.set("parentSessionId", options.parentSessionId);
1407
+ }
1323
1408
  return await this.jsonRequest(
1324
1409
  `/workspace/${urlEncode(workspaceCwd)}/sessions?${query.toString()}`,
1325
1410
  "GET /workspace/sessions"
@@ -1390,6 +1475,20 @@ var DaemonClient = class {
1390
1475
  "rest"
1391
1476
  );
1392
1477
  }
1478
+ async getSessionTranscriptPage(sessionId, opts = {}) {
1479
+ const params = new URLSearchParams();
1480
+ if (opts.cursor !== void 0) params.set("cursor", opts.cursor);
1481
+ if (opts.limit !== void 0) params.set("limit", String(opts.limit));
1482
+ const query = params.toString();
1483
+ return await this.jsonRequest(
1484
+ `/session/${urlEncode(sessionId)}/transcript${query ? `?${query}` : ""}`,
1485
+ "GET /session/:id/transcript",
1486
+ {
1487
+ clientId: opts.clientId,
1488
+ mode: "rest"
1489
+ }
1490
+ );
1491
+ }
1393
1492
  async resumeSession(sessionId, req = {}, clientId) {
1394
1493
  return this.restoreSession("resume", sessionId, req, clientId);
1395
1494
  }
@@ -1437,6 +1536,21 @@ var DaemonClient = class {
1437
1536
  }
1438
1537
  );
1439
1538
  }
1539
+ /**
1540
+ * Read the current in-memory runtime status for one live daemon session.
1541
+ */
1542
+ async sessionStatus(sessionId, clientId) {
1543
+ return await this.fetchWithTimeout(
1544
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/status`,
1545
+ { headers: this.headers({}, clientId) },
1546
+ async (res) => {
1547
+ if (!res.ok) {
1548
+ throw await this.failOnError(res, "GET /session/:id/status");
1549
+ }
1550
+ return await res.json();
1551
+ }
1552
+ );
1553
+ }
1440
1554
  async sessionContextUsage(sessionId, opts = {}, clientId) {
1441
1555
  const params = new URLSearchParams();
1442
1556
  if (opts.detail === true) params.set("detail", "true");
@@ -1551,7 +1665,10 @@ var DaemonClient = class {
1551
1665
  {
1552
1666
  method: "POST",
1553
1667
  headers: this.headers({ "Content-Type": "application/json" }, clientId),
1554
- body: JSON.stringify({ cwd: req.workspaceCwd })
1668
+ body: JSON.stringify({
1669
+ cwd: req.workspaceCwd,
1670
+ ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
1671
+ })
1555
1672
  },
1556
1673
  async (res) => {
1557
1674
  if (!res.ok) {
@@ -1610,7 +1727,9 @@ var DaemonClient = class {
1610
1727
  );
1611
1728
  }
1612
1729
  return await res.json();
1613
- }
1730
+ },
1731
+ void 0,
1732
+ "rest"
1614
1733
  );
1615
1734
  }
1616
1735
  async rewindSession(sessionId, promptId, opts) {
@@ -1632,7 +1751,9 @@ var DaemonClient = class {
1632
1751
  throw await this.failOnError(res, "POST /session/:id/rewind");
1633
1752
  }
1634
1753
  return await res.json();
1635
- }
1754
+ },
1755
+ void 0,
1756
+ "rest"
1636
1757
  );
1637
1758
  }
1638
1759
  /**
@@ -1861,6 +1982,25 @@ var DaemonClient = class {
1861
1982
  }
1862
1983
  );
1863
1984
  }
1985
+ async deleteModel(target, opts) {
1986
+ return await this.fetchWithTimeout(
1987
+ `${this.baseUrl}/workspace/models`,
1988
+ {
1989
+ method: "DELETE",
1990
+ headers: this.headers(
1991
+ { "Content-Type": "application/json" },
1992
+ opts?.clientId
1993
+ ),
1994
+ body: JSON.stringify(target)
1995
+ },
1996
+ async (res) => {
1997
+ if (!res.ok) {
1998
+ throw await this.failOnError(res, "DELETE /workspace/models");
1999
+ }
2000
+ return await res.json();
2001
+ }
2002
+ );
2003
+ }
1864
2004
  async workspaceVoice(clientId) {
1865
2005
  return await this.jsonRequest(
1866
2006
  "/workspace/voice",
@@ -2047,6 +2187,84 @@ var DaemonClient = class {
2047
2187
  opts?.timeoutMs
2048
2188
  );
2049
2189
  }
2190
+ /**
2191
+ * Reload the daemon-managed channel worker: the daemon stops and relaunches
2192
+ * it so it re-reads settings.json (channels / proxy / per-channel model).
2193
+ * Requires an enabled runtime selection; otherwise the route responds 409.
2194
+ * Pre-flight the dynamic `channel_reload` capability.
2195
+ */
2196
+ async reloadChannelWorker(opts) {
2197
+ return await this.fetchWithTimeout(
2198
+ `${this.baseUrl}/workspace/channel/reload`,
2199
+ {
2200
+ method: "POST",
2201
+ headers: this.headers(
2202
+ { "Content-Type": "application/json" },
2203
+ opts?.clientId
2204
+ ),
2205
+ body: "{}"
2206
+ },
2207
+ async (res) => {
2208
+ if (!res.ok) {
2209
+ throw await this.failOnError(res, "POST /workspace/channel/reload");
2210
+ }
2211
+ return await res.json();
2212
+ },
2213
+ opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
2214
+ );
2215
+ }
2216
+ async getChannelWorkerControl(opts) {
2217
+ return await this.fetchWithTimeout(
2218
+ `${this.baseUrl}/workspace/channel`,
2219
+ {
2220
+ method: "GET",
2221
+ headers: this.headers({}, opts?.clientId)
2222
+ },
2223
+ async (res) => {
2224
+ if (!res.ok) {
2225
+ throw await this.failOnError(res, "GET /workspace/channel");
2226
+ }
2227
+ return await res.json();
2228
+ },
2229
+ opts?.timeoutMs
2230
+ );
2231
+ }
2232
+ async setChannelWorkerSelection(selection, opts) {
2233
+ return await this.fetchWithTimeout(
2234
+ `${this.baseUrl}/workspace/channel`,
2235
+ {
2236
+ method: "PUT",
2237
+ headers: this.headers(
2238
+ { "Content-Type": "application/json" },
2239
+ opts?.clientId
2240
+ ),
2241
+ body: JSON.stringify({ selection })
2242
+ },
2243
+ async (res) => {
2244
+ if (!res.ok) {
2245
+ throw await this.failOnError(res, "PUT /workspace/channel");
2246
+ }
2247
+ return await res.json();
2248
+ },
2249
+ opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
2250
+ );
2251
+ }
2252
+ async stopChannelWorker(opts) {
2253
+ return await this.fetchWithTimeout(
2254
+ `${this.baseUrl}/workspace/channel`,
2255
+ {
2256
+ method: "DELETE",
2257
+ headers: this.headers({}, opts?.clientId)
2258
+ },
2259
+ async (res) => {
2260
+ if (!res.ok) {
2261
+ throw await this.failOnError(res, "DELETE /workspace/channel");
2262
+ }
2263
+ return await res.json();
2264
+ },
2265
+ opts?.timeoutMs ?? CHANNEL_CONTROL_DEFAULT_TIMEOUT_MS
2266
+ );
2267
+ }
2050
2268
  async manageMcpServer(serverName, action, opts) {
2051
2269
  return await this.fetchWithTimeout(
2052
2270
  `${this.baseUrl}/workspace/mcp/${urlEncode(serverName)}/${urlEncode(action)}`,
@@ -2653,6 +2871,25 @@ var DaemonClient = class {
2653
2871
  }
2654
2872
  );
2655
2873
  }
2874
+ async addWorkspace(cwd, options = {}) {
2875
+ return await this.fetchWithTimeout(
2876
+ `${this.baseUrl}/workspaces`,
2877
+ {
2878
+ method: "POST",
2879
+ headers: this.headers({ "Content-Type": "application/json" }),
2880
+ body: JSON.stringify({
2881
+ cwd,
2882
+ ...options.persist ? { persist: true } : {}
2883
+ })
2884
+ },
2885
+ async (res) => {
2886
+ if (!res.ok) {
2887
+ throw await this.failOnError(res, "POST /workspaces");
2888
+ }
2889
+ return await res.json();
2890
+ }
2891
+ );
2892
+ }
2656
2893
  // -- Lifecycle / disposal ------------------------------------------------
2657
2894
  /**
2658
2895
  * Release transport resources (WS close, etc.). Idempotent.
@@ -2714,6 +2951,377 @@ var DaemonClient = class {
2714
2951
  );
2715
2952
  }
2716
2953
  };
2954
+ var WorkspaceDaemonClient = class {
2955
+ constructor(client, workspaceSelector) {
2956
+ this.client = client;
2957
+ this.workspaceSelector = workspaceSelector;
2958
+ }
2959
+ static {
2960
+ __name(this, "WorkspaceDaemonClient");
2961
+ }
2962
+ workspaceMcp() {
2963
+ return this.get("/mcp", "GET /workspaces/:workspace/mcp");
2964
+ }
2965
+ workspaceGit() {
2966
+ return this.client.workspaceJsonRequest(
2967
+ this.workspaceSelector,
2968
+ "/git",
2969
+ "GET /workspaces/:workspace/git",
2970
+ { mode: "rest" }
2971
+ );
2972
+ }
2973
+ workspaceSkills() {
2974
+ return this.get("/skills", "GET /workspaces/:workspace/skills");
2975
+ }
2976
+ workspaceProviders() {
2977
+ return this.get("/providers", "GET /workspaces/:workspace/providers");
2978
+ }
2979
+ workspaceHooks() {
2980
+ return this.get("/hooks", "GET /workspaces/:workspace/hooks");
2981
+ }
2982
+ workspaceEnv() {
2983
+ return this.get("/env", "GET /workspaces/:workspace/env");
2984
+ }
2985
+ workspacePreflight() {
2986
+ return this.get("/preflight", "GET /workspaces/:workspace/preflight");
2987
+ }
2988
+ workspaceTools() {
2989
+ return this.get("/tools", "GET /workspaces/:workspace/tools");
2990
+ }
2991
+ workspaceMemory() {
2992
+ return this.get("/memory", "GET /workspaces/:workspace/memory");
2993
+ }
2994
+ remove(options) {
2995
+ const body = options?.force === void 0 ? void 0 : {
2996
+ force: options.force
2997
+ };
2998
+ return this.client.workspaceJsonRequest(
2999
+ this.workspaceSelector,
3000
+ "",
3001
+ "DELETE /workspaces/:workspace",
3002
+ {
3003
+ method: "DELETE",
3004
+ ...body ? { body } : {},
3005
+ ...options?.timeoutMs !== void 0 ? { timeoutMs: options.timeoutMs } : {},
3006
+ mode: "rest"
3007
+ }
3008
+ );
3009
+ }
3010
+ writeWorkspaceMemory(req, clientId) {
3011
+ return this.post(
3012
+ "/memory",
3013
+ "POST /workspaces/:workspace/memory",
3014
+ { ...req, scope: "workspace" },
3015
+ clientId
3016
+ );
3017
+ }
3018
+ listWorkspaceAgents() {
3019
+ return this.get("/agents", "GET /workspaces/:workspace/agents");
3020
+ }
3021
+ createWorkspaceAgent(req, clientId) {
3022
+ return this.post(
3023
+ "/agents",
3024
+ "POST /workspaces/:workspace/agents",
3025
+ { ...req, scope: req.scope ?? "workspace" },
3026
+ clientId
3027
+ );
3028
+ }
3029
+ getWorkspaceAgent(agentType) {
3030
+ return this.get(
3031
+ `/agents/${urlEncode(agentType)}`,
3032
+ "GET /workspaces/:workspace/agents/:agentType"
3033
+ );
3034
+ }
3035
+ updateWorkspaceAgent(agentType, req, opts = {}) {
3036
+ const query = opts.scope ? `?scope=${urlEncode(opts.scope)}` : "";
3037
+ return this.post(
3038
+ `/agents/${urlEncode(agentType)}${query}`,
3039
+ "POST /workspaces/:workspace/agents/:agentType",
3040
+ req,
3041
+ opts.clientId
3042
+ );
3043
+ }
3044
+ async deleteWorkspaceAgent(agentType, opts = {}) {
3045
+ const query = opts.scope ? `?scope=${urlEncode(opts.scope)}` : "";
3046
+ return await this.client.workspaceNoContentRequest(
3047
+ this.workspaceSelector,
3048
+ `/agents/${urlEncode(agentType)}${query}`,
3049
+ "DELETE /workspaces/:workspace/agents/:agentType",
3050
+ {
3051
+ method: "DELETE",
3052
+ clientId: opts.clientId,
3053
+ okNotFoundCode: "agent_not_found"
3054
+ }
3055
+ );
3056
+ }
3057
+ listWorkspaceSessionsPage(options) {
3058
+ const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
3059
+ const pageSize = Math.max(
3060
+ 1,
3061
+ Math.min(
3062
+ 1e3,
3063
+ Math.round(
3064
+ Number.isFinite(requestedPageSize) ? requestedPageSize : DEFAULT_SESSION_LIST_PAGE_SIZE
3065
+ )
3066
+ )
3067
+ );
3068
+ const query = new URLSearchParams({ size: String(pageSize) });
3069
+ if (options?.cursor !== void 0) query.set("cursor", options.cursor);
3070
+ if (options?.archiveState !== void 0) {
3071
+ query.set("archiveState", options.archiveState);
3072
+ }
3073
+ if (options?.view !== void 0) query.set("view", options.view);
3074
+ if (options?.group !== void 0) query.set("group", options.group);
3075
+ if (options?.parentSessionId !== void 0) {
3076
+ query.set("parentSessionId", options.parentSessionId);
3077
+ }
3078
+ return this.get(
3079
+ `/sessions?${query.toString()}`,
3080
+ "GET /workspaces/:workspace/sessions"
3081
+ );
3082
+ }
3083
+ async listWorkspaceSessions(options) {
3084
+ const page = await this.listWorkspaceSessionsPage(options);
3085
+ return page.sessions;
3086
+ }
3087
+ /**
3088
+ * Read one page from an active persisted session transcript in this
3089
+ * workspace.
3090
+ * The daemon performs replay locally without attaching to the session or
3091
+ * starting ACP. This method always uses native REST transport.
3092
+ */
3093
+ getSessionTranscriptPage(sessionId, opts = {}) {
3094
+ const query = new URLSearchParams();
3095
+ if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
3096
+ if (opts.limit !== void 0) query.set("limit", String(opts.limit));
3097
+ const suffix = query.size > 0 ? `?${query.toString()}` : "";
3098
+ return this.client.workspaceJsonRequest(
3099
+ this.workspaceSelector,
3100
+ `/session/${urlEncode(sessionId)}/transcript${suffix}`,
3101
+ "GET /workspaces/:workspace/session/:id/transcript",
3102
+ { clientId: opts.clientId, mode: "rest" }
3103
+ );
3104
+ }
3105
+ listSessionGroups() {
3106
+ return this.get(
3107
+ "/session-groups",
3108
+ "GET /workspaces/:workspace/session-groups"
3109
+ );
3110
+ }
3111
+ async createSessionGroup(input) {
3112
+ const body = await this.post(
3113
+ "/session-groups",
3114
+ "POST /workspaces/:workspace/session-groups",
3115
+ input
3116
+ );
3117
+ return body.group;
3118
+ }
3119
+ async updateSessionGroup(groupId, update) {
3120
+ const body = await this.client.workspaceJsonRequest(
3121
+ this.workspaceSelector,
3122
+ `/session-groups/${urlEncode(groupId)}`,
3123
+ "PATCH /workspaces/:workspace/session-groups/:groupId",
3124
+ { method: "PATCH", body: update }
3125
+ );
3126
+ return body.group;
3127
+ }
3128
+ deleteSessionGroup(groupId) {
3129
+ return this.client.workspaceJsonRequest(
3130
+ this.workspaceSelector,
3131
+ `/session-groups/${urlEncode(groupId)}`,
3132
+ "DELETE /workspaces/:workspace/session-groups/:groupId",
3133
+ { method: "DELETE" }
3134
+ );
3135
+ }
3136
+ updateSessionOrganization(sessionId, update, clientId) {
3137
+ return this.client.workspaceJsonRequest(
3138
+ this.workspaceSelector,
3139
+ `/session/${urlEncode(sessionId)}/organization`,
3140
+ "PATCH /workspaces/:workspace/session/:id/organization",
3141
+ { method: "PATCH", body: update, clientId }
3142
+ );
3143
+ }
3144
+ deleteSessionsData(sessionIds, clientId) {
3145
+ return this.post(
3146
+ "/sessions/delete",
3147
+ "POST /workspaces/:workspace/sessions/delete",
3148
+ { sessionIds },
3149
+ clientId
3150
+ );
3151
+ }
3152
+ archiveSessionsData(sessionIds, clientId) {
3153
+ return this.post(
3154
+ "/sessions/archive",
3155
+ "POST /workspaces/:workspace/sessions/archive",
3156
+ { sessionIds },
3157
+ clientId
3158
+ );
3159
+ }
3160
+ unarchiveSessionsData(sessionIds, clientId) {
3161
+ return this.post(
3162
+ "/sessions/unarchive",
3163
+ "POST /workspaces/:workspace/sessions/unarchive",
3164
+ { sessionIds },
3165
+ clientId
3166
+ );
3167
+ }
3168
+ readWorkspaceFile(filePath, opts = {}, clientId) {
3169
+ const query = new URLSearchParams({ path: filePath });
3170
+ if (opts.maxBytes !== void 0)
3171
+ query.set("maxBytes", String(opts.maxBytes));
3172
+ if (opts.line !== void 0) query.set("line", String(opts.line));
3173
+ if (opts.limit !== void 0) query.set("limit", String(opts.limit));
3174
+ return this.get(
3175
+ `/file?${query.toString()}`,
3176
+ "GET /workspaces/:workspace/file",
3177
+ clientId
3178
+ );
3179
+ }
3180
+ readWorkspaceFileBytes(filePath, opts = {}, clientId) {
3181
+ const query = new URLSearchParams({ path: filePath });
3182
+ if (opts.offset !== void 0) query.set("offset", String(opts.offset));
3183
+ if (opts.maxBytes !== void 0)
3184
+ query.set("maxBytes", String(opts.maxBytes));
3185
+ return this.get(
3186
+ `/file/bytes?${query.toString()}`,
3187
+ "GET /workspaces/:workspace/file/bytes",
3188
+ clientId
3189
+ );
3190
+ }
3191
+ fileStat(filePath) {
3192
+ const query = new URLSearchParams({ path: filePath });
3193
+ return this.get(
3194
+ `/stat?${query.toString()}`,
3195
+ "GET /workspaces/:workspace/stat"
3196
+ );
3197
+ }
3198
+ dirList(dirPath) {
3199
+ const query = new URLSearchParams({ path: dirPath });
3200
+ return this.get(
3201
+ `/list?${query.toString()}`,
3202
+ "GET /workspaces/:workspace/list"
3203
+ );
3204
+ }
3205
+ glob(pattern) {
3206
+ const query = new URLSearchParams({ pattern });
3207
+ return this.get(
3208
+ `/glob?${query.toString()}`,
3209
+ "GET /workspaces/:workspace/glob"
3210
+ );
3211
+ }
3212
+ writeWorkspaceFile(req, clientId) {
3213
+ return this.post(
3214
+ "/file/write",
3215
+ "POST /workspaces/:workspace/file/write",
3216
+ req,
3217
+ clientId
3218
+ );
3219
+ }
3220
+ editWorkspaceFile(req, clientId) {
3221
+ return this.post(
3222
+ "/file/edit",
3223
+ "POST /workspaces/:workspace/file/edit",
3224
+ req,
3225
+ clientId
3226
+ );
3227
+ }
3228
+ workspaceSettings(opts) {
3229
+ return this.get(
3230
+ "/settings",
3231
+ "GET /workspaces/:workspace/settings",
3232
+ opts?.clientId
3233
+ );
3234
+ }
3235
+ setWorkspaceSetting(scope, key, value, opts) {
3236
+ return this.post(
3237
+ "/settings",
3238
+ "POST /workspaces/:workspace/settings",
3239
+ { scope, key, value },
3240
+ opts?.clientId
3241
+ );
3242
+ }
3243
+ workspaceTrust(opts) {
3244
+ return this.get(
3245
+ "/trust",
3246
+ "GET /workspaces/:workspace/trust",
3247
+ opts?.clientId
3248
+ );
3249
+ }
3250
+ requestWorkspaceTrustChange(request, clientId) {
3251
+ return this.post(
3252
+ "/trust/request",
3253
+ "POST /workspaces/:workspace/trust/request",
3254
+ request,
3255
+ clientId
3256
+ );
3257
+ }
3258
+ workspacePermissions(opts) {
3259
+ return this.get(
3260
+ "/permissions",
3261
+ "GET /workspaces/:workspace/permissions",
3262
+ opts?.clientId
3263
+ );
3264
+ }
3265
+ setWorkspacePermissionRules(ruleType, rules, opts) {
3266
+ return this.post(
3267
+ "/permissions",
3268
+ "POST /workspaces/:workspace/permissions",
3269
+ { scope: "workspace", ruleType, rules: [...rules] },
3270
+ opts?.clientId
3271
+ );
3272
+ }
3273
+ setWorkspaceToolEnabled(toolName, enabled, opts) {
3274
+ return this.post(
3275
+ `/tools/${urlEncode(toolName)}/enable`,
3276
+ "POST /workspaces/:workspace/tools/:name/enable",
3277
+ { enabled },
3278
+ opts?.clientId
3279
+ );
3280
+ }
3281
+ restartMcpServer(serverName, opts) {
3282
+ const query = opts?.entryIndex === void 0 ? "" : `?entryIndex=${urlEncode(String(opts.entryIndex))}`;
3283
+ return this.post(
3284
+ `/mcp/${urlEncode(serverName)}/restart${query}`,
3285
+ "POST /workspaces/:workspace/mcp/:server/restart",
3286
+ {},
3287
+ opts?.clientId,
3288
+ opts?.timeoutMs ?? MCP_RESTART_DEFAULT_TIMEOUT_MS
3289
+ );
3290
+ }
3291
+ reload(opts) {
3292
+ return this.post(
3293
+ "/reload",
3294
+ "POST /workspaces/:workspace/reload",
3295
+ {},
3296
+ opts?.clientId,
3297
+ opts?.timeoutMs
3298
+ );
3299
+ }
3300
+ initWorkspace(opts) {
3301
+ return this.post(
3302
+ "/init",
3303
+ "POST /workspaces/:workspace/init",
3304
+ opts?.force === true ? { force: true } : {},
3305
+ opts?.clientId
3306
+ );
3307
+ }
3308
+ get(path, label, clientId) {
3309
+ return this.client.workspaceJsonRequest(
3310
+ this.workspaceSelector,
3311
+ path,
3312
+ label,
3313
+ { clientId }
3314
+ );
3315
+ }
3316
+ post(path, label, body, clientId, timeoutMs) {
3317
+ return this.client.workspaceJsonRequest(
3318
+ this.workspaceSelector,
3319
+ path,
3320
+ label,
3321
+ { method: "POST", body, clientId, timeoutMs }
3322
+ );
3323
+ }
3324
+ };
2717
3325
  function composeAbortSignals2(signals) {
2718
3326
  const anyFn = AbortSignal.any;
2719
3327
  if (typeof anyFn === "function") return anyFn.call(AbortSignal, signals);
@@ -2807,7 +3415,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
2807
3415
  */
2808
3416
  static async createOrAttach(client, req = {}, clientId) {
2809
3417
  const session = await client.createOrAttachSession(req, clientId);
2810
- const lastEventId = !session.attached || req.modelServiceId ? 0 : void 0;
3418
+ const lastEventId = !session.attached || req.modelServiceId || req.approvalMode ? 0 : void 0;
2811
3419
  return new _DaemonSessionClient({
2812
3420
  client,
2813
3421
  session,
@@ -3110,6 +3718,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
3110
3718
  async context() {
3111
3719
  return await this.client.sessionContext(this.sessionId, this.clientId);
3112
3720
  }
3721
+ async status() {
3722
+ return await this.client.sessionStatus(this.sessionId, this.clientId);
3723
+ }
3113
3724
  async contextUsage(opts = {}) {
3114
3725
  return await this.client.sessionContextUsage(
3115
3726
  this.sessionId,
@@ -3304,6 +3915,7 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
3304
3915
  "session_died",
3305
3916
  "session_closed",
3306
3917
  "session_metadata_updated",
3918
+ "session_recording_degraded",
3307
3919
  "artifact_changed",
3308
3920
  MID_TURN_MESSAGE_INJECTED_EVENT,
3309
3921
  PENDING_PROMPT_ADDED_EVENT,
@@ -3414,7 +4026,8 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
3414
4026
  // `replay_complete` when `?snapshot=1` is set on the SSE endpoint.
3415
4027
  // Carries `currentModelId` and `currentApprovalMode` so reconnecting
3416
4028
  // clients can seed their reducer without an extra round-trip.
3417
- "session_snapshot"
4029
+ "session_snapshot",
4030
+ "git_branch_changed"
3418
4031
  ];
3419
4032
  var DAEMON_KNOWN_EVENT_TYPES = new Set(
3420
4033
  DAEMON_KNOWN_EVENT_TYPE_VALUES
@@ -3428,6 +4041,7 @@ var RESYNC_PASSTHROUGH_TYPES = /* @__PURE__ */ new Set([
3428
4041
  "session_closed",
3429
4042
  "client_evicted",
3430
4043
  "stream_error",
4044
+ "session_recording_degraded",
3431
4045
  // A5 (#4511): the snapshot is a full-state authoritative frame, not a
3432
4046
  // delta, so it is safe to apply during resync — and it is exactly what
3433
4047
  // lets a client that reconnected past the ring recover currentModelId /
@@ -3442,6 +4056,7 @@ function createDaemonSessionViewState(seed = {}) {
3442
4056
  sessionId: seed.sessionId,
3443
4057
  currentModelId: seed.currentModelId,
3444
4058
  displayName: seed.displayName,
4059
+ recordingDegraded: seed.recordingDegraded ?? false,
3445
4060
  lastSessionUpdate: seed.lastSessionUpdate,
3446
4061
  lastModelSwitchFailure: seed.lastModelSwitchFailure,
3447
4062
  terminalEvent: seed.terminalEvent,
@@ -3527,6 +4142,8 @@ function asKnownDaemonEvent(event) {
3527
4142
  return isSessionClosedData(event.data) ? event : void 0;
3528
4143
  case "session_metadata_updated":
3529
4144
  return isSessionMetadataUpdatedData(event.data) ? event : void 0;
4145
+ case "session_recording_degraded":
4146
+ return isSessionRecordingDegradedData(event.data) ? event : void 0;
3530
4147
  case "artifact_changed":
3531
4148
  return isArtifactChangedData(event.data) ? event : void 0;
3532
4149
  case MID_TURN_MESSAGE_INJECTED_EVENT:
@@ -3909,7 +4526,14 @@ function reduceDaemonSessionEvent(state, rawEvent) {
3909
4526
  ...base,
3910
4527
  sessionId: event.data.sessionId,
3911
4528
  ...event.data.currentModelId != null ? { currentModelId: event.data.currentModelId } : {},
3912
- ...event.data.currentApprovalMode != null ? { approvalMode: event.data.currentApprovalMode } : {}
4529
+ ...event.data.currentApprovalMode != null ? { approvalMode: event.data.currentApprovalMode } : {},
4530
+ ...event.data.recordingDegraded !== void 0 ? { recordingDegraded: event.data.recordingDegraded } : {}
4531
+ };
4532
+ case "session_recording_degraded":
4533
+ return {
4534
+ ...base,
4535
+ sessionId: event.data.sessionId,
4536
+ recordingDegraded: true
3913
4537
  };
3914
4538
  case "session_branched":
3915
4539
  return {
@@ -4153,7 +4777,7 @@ function isStateResyncRequiredData(value) {
4153
4777
  }
4154
4778
  __name(isStateResyncRequiredData, "isStateResyncRequiredData");
4155
4779
  function isHistoryTruncatedData(value) {
4156
- if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || value["fullTranscriptAvailable"] !== false) {
4780
+ if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || typeof value["fullTranscriptAvailable"] !== "boolean") {
4157
4781
  return false;
4158
4782
  }
4159
4783
  const truncatedTurns = value["truncatedTurns"];
@@ -4370,9 +4994,14 @@ function isSessionSnapshotData(value) {
4370
4994
  if (!isRecord(value) || !isNonEmptyString(value["sessionId"])) return false;
4371
4995
  const model = value["currentModelId"];
4372
4996
  const mode = value["currentApprovalMode"];
4373
- return (model === null || typeof model === "string") && (mode === null || typeof mode === "string");
4997
+ const recordingDegraded = value["recordingDegraded"];
4998
+ return (model === null || typeof model === "string") && (mode === null || typeof mode === "string") && (recordingDegraded === void 0 || typeof recordingDegraded === "boolean");
4374
4999
  }
4375
5000
  __name(isSessionSnapshotData, "isSessionSnapshotData");
5001
+ function isSessionRecordingDegradedData(value) {
5002
+ return isRecord(value) && isNonEmptyString(value["sessionId"]) && value["reason"] === "write_failed";
5003
+ }
5004
+ __name(isSessionRecordingDegradedData, "isSessionRecordingDegradedData");
4376
5005
  function isPermissionOption(value) {
4377
5006
  return isRecord(value) && isNonEmptyString(value["optionId"]);
4378
5007
  }
@@ -4700,6 +5329,7 @@ var MCP_RESTART_REFUSED_REASONS2 = /* @__PURE__ */ new Set([
4700
5329
  ]);
4701
5330
  var MALFORMED_MEMORY_CHANGED = "malformed memory_changed payload";
4702
5331
  var MAX_DETAILS_LENGTH = 4096;
5332
+ var SESSION_RECORDING_DEGRADED_MESSAGE = "Session recording stopped after a write failure. New messages for the affected session will not be saved. Check disk space and permissions, then start a new session to resume recording.";
4703
5333
  function normalizeDaemonEvent(event, opts = {}) {
4704
5334
  const base = createBase(event, opts);
4705
5335
  switch (event.type) {
@@ -4760,6 +5390,42 @@ function normalizeDaemonEvent(event, opts = {}) {
4760
5390
  text: `Session closed: ${getString2(event.data, "reason") ?? "closed"}`
4761
5391
  }
4762
5392
  ];
5393
+ case "session_recording_degraded": {
5394
+ const sessionId = getString2(event.data, "sessionId");
5395
+ if (!sessionId || getString2(event.data, "reason") !== "write_failed") {
5396
+ return fallbackDebug(event, base, "malformed recording state");
5397
+ }
5398
+ return [
5399
+ {
5400
+ ...base,
5401
+ type: "error",
5402
+ recoverable: true,
5403
+ code: "session_recording_degraded",
5404
+ text: SESSION_RECORDING_DEGRADED_MESSAGE
5405
+ }
5406
+ ];
5407
+ }
5408
+ case "session_snapshot": {
5409
+ if (!isRecord2(event.data) || !getString2(event.data, "sessionId")) {
5410
+ return fallbackDebug(event, base, "malformed recording snapshot");
5411
+ }
5412
+ const recordingDegraded = event.data["recordingDegraded"];
5413
+ if (recordingDegraded !== void 0 && typeof recordingDegraded !== "boolean") {
5414
+ return fallbackDebug(event, base, "malformed recording snapshot");
5415
+ }
5416
+ if (recordingDegraded === true) {
5417
+ return [
5418
+ {
5419
+ ...base,
5420
+ type: "error",
5421
+ recoverable: true,
5422
+ code: "session_recording_degraded",
5423
+ text: SESSION_RECORDING_DEGRADED_MESSAGE
5424
+ }
5425
+ ];
5426
+ }
5427
+ return [];
5428
+ }
4763
5429
  case "client_evicted":
4764
5430
  return [
4765
5431
  {
@@ -4865,6 +5531,8 @@ function normalizeDaemonEvent(event, opts = {}) {
4865
5531
  case "approval_mode_changed":
4866
5532
  return normalizeApprovalModeChanged(event, base);
4867
5533
  // ── Workspace events ──────────────────────────────────────
5534
+ case "git_branch_changed":
5535
+ return [];
4868
5536
  case "memory_changed":
4869
5537
  return normalizeMemoryChanged(event, base);
4870
5538
  case "agent_changed":
@@ -4891,6 +5559,8 @@ function normalizeDaemonEvent(event, opts = {}) {
4891
5559
  return normalizeMcpServerRestartRefused(event, base);
4892
5560
  case "extensions_changed":
4893
5561
  return normalizeExtensionsChanged(event, base);
5562
+ case "artifact_changed":
5563
+ return normalizeArtifactChanged(event, base);
4894
5564
  // ── Auth device-flow events (RFC 8628) ─────────────────
4895
5565
  case "auth_device_flow_started":
4896
5566
  return normalizeAuthDeviceFlowStarted(event, base);
@@ -4903,16 +5573,20 @@ function normalizeDaemonEvent(event, opts = {}) {
4903
5573
  case "auth_device_flow_cancelled":
4904
5574
  return normalizeAuthDeviceFlowCancelled(event, base);
4905
5575
  default:
4906
- return [
4907
- {
4908
- ...base,
4909
- type: "debug",
4910
- text: `${event.type} (unrecognized daemon event): ${stringifyRedactedJson(event.data)}`
4911
- }
4912
- ];
5576
+ return normalizeUnrecognizedEvent(event, base);
4913
5577
  }
4914
5578
  }
4915
5579
  __name(normalizeDaemonEvent, "normalizeDaemonEvent");
5580
+ function normalizeUnrecognizedEvent(event, base) {
5581
+ return [
5582
+ {
5583
+ ...base,
5584
+ type: "debug",
5585
+ text: `${event.type} (unrecognized daemon event): ${stringifyRedactedJson(event.data)}`
5586
+ }
5587
+ ];
5588
+ }
5589
+ __name(normalizeUnrecognizedEvent, "normalizeUnrecognizedEvent");
4916
5590
  function normalizeStateResyncRequired(event, base) {
4917
5591
  const reason = getString2(event.data, "reason");
4918
5592
  const lastDeliveredId = numberField(event.data, "lastDeliveredId");
@@ -4940,7 +5614,7 @@ function normalizeHistoryTruncated(event, base) {
4940
5614
  const truncatedEvents = numberField(event.data, "truncatedEvents");
4941
5615
  const retainedEvents = numberField(event.data, "retainedEvents");
4942
5616
  const maxBytes = numberField(event.data, "maxBytes");
4943
- if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || isRecord2(event.data) && event.data["fullTranscriptAvailable"] !== false) {
5617
+ if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || !isRecord2(event.data) || typeof event.data["fullTranscriptAvailable"] !== "boolean") {
4944
5618
  return fallbackDebug(event, base, "malformed history_truncated payload");
4945
5619
  }
4946
5620
  return [
@@ -5488,6 +6162,27 @@ function normalizeSessionMetadataUpdated(event, base) {
5488
6162
  ];
5489
6163
  }
5490
6164
  __name(normalizeSessionMetadataUpdated, "normalizeSessionMetadataUpdated");
6165
+ function normalizeArtifactChanged(event, base) {
6166
+ const sessionId = getString2(event.data, "sessionId");
6167
+ const change = isRecord2(event.data) ? event.data["change"] : void 0;
6168
+ if (!sessionId || !isRecord2(change)) {
6169
+ return fallbackDebug(event, base, "malformed artifact_changed payload");
6170
+ }
6171
+ const action = getString2(change, "action");
6172
+ const artifactId = getString2(change, "artifactId");
6173
+ if (!action || !artifactId) {
6174
+ return fallbackDebug(event, base, "missing action or artifactId");
6175
+ }
6176
+ return [
6177
+ {
6178
+ ...base,
6179
+ type: "session.artifact.changed",
6180
+ sessionId,
6181
+ change
6182
+ }
6183
+ ];
6184
+ }
6185
+ __name(normalizeArtifactChanged, "normalizeArtifactChanged");
5491
6186
  function normalizeApprovalModeChanged(event, base) {
5492
6187
  const sessionId = getString2(event.data, "sessionId");
5493
6188
  const previous = getString2(event.data, "previous");
@@ -6348,7 +7043,14 @@ var RESYNC_PASSTHROUGH_TYPES2 = /* @__PURE__ */ new Set([
6348
7043
  function appendLocalUserTranscriptMessage(state, text, opts = {}) {
6349
7044
  const next = cloneTranscriptState(state, opts);
6350
7045
  finishAssistant(next);
6351
- const block = createTextBlock(next, "user", text);
7046
+ const block = createTextBlock(
7047
+ next,
7048
+ "user",
7049
+ text,
7050
+ void 0,
7051
+ void 0,
7052
+ opts.meta
7053
+ );
6352
7054
  if (opts.images && opts.images.length > 0) {
6353
7055
  block.images = [...opts.images];
6354
7056
  }
@@ -6487,6 +7189,7 @@ function applyDaemonTranscriptEvent(next, event) {
6487
7189
  next.approvalMode = event.next;
6488
7190
  break;
6489
7191
  case "session.metadata.changed":
7192
+ case "session.artifact.changed":
6490
7193
  case "session.available_commands":
6491
7194
  break;
6492
7195
  case "session.state_resync_required":
@@ -7441,8 +8144,8 @@ function createDaemonTranscriptStore(seed = {}) {
7441
8144
  state = reduceDaemonTranscriptEvents(state, events);
7442
8145
  scheduleNotify();
7443
8146
  },
7444
- appendLocalUserMessage(text, images) {
7445
- state = appendLocalUserTranscriptMessage(state, text, { images });
8147
+ appendLocalUserMessage(text, images, meta) {
8148
+ state = appendLocalUserTranscriptMessage(state, text, { images, meta });
7446
8149
  scheduleNotify();
7447
8150
  },
7448
8151
  reset(nextSeed = {}) {
@@ -7587,6 +8290,12 @@ function daemonUiEventToTerminalText(event) {
7587
8290
  `metadata: ${event.displayName ?? "(no display name)"}`,
7588
8291
  "36"
7589
8292
  );
8293
+ case "session.artifact.changed":
8294
+ return terminalLine(
8295
+ "artifact",
8296
+ `${event.change.action} ${event.change.artifact?.title ?? event.change.artifactId}`,
8297
+ "36"
8298
+ );
7590
8299
  case "session.approval_mode.changed":
7591
8300
  return terminalLine(
7592
8301
  "approval-mode",
@@ -8691,6 +9400,7 @@ export {
8691
9400
  PENDING_PROMPT_COMPLETED_EVENT,
8692
9401
  PENDING_PROMPT_STARTED_EVENT,
8693
9402
  SseFramingError,
9403
+ WorkspaceDaemonClient,
8694
9404
  appendLocalUserTranscriptMessage,
8695
9405
  asKnownDaemonEvent,
8696
9406
  createDaemonAuthState,