@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.2-preview.0

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 (297) hide show
  1. package/bundled/computer-use/SKILL.md +189 -116
  2. package/bundled/goal-draft/SKILL.md +23 -13
  3. package/bundled/qc-helper/docs/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
  5. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  6. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  7. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  8. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  9. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  10. package/bundled/qc-helper/docs/features/goals.md +15 -3
  11. package/bundled/qc-helper/docs/qwen-serve.md +19 -1
  12. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-ZZJT3PJF.js} +20 -20
  13. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-DIOSZTMX.js} +38 -38
  14. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  15. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-62JUP5A7.js} +118 -91
  16. package/chunks/{agent-GEBPAEJS.js → agent-NLPEQQDZ.js} +13 -13
  17. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-Y2GR5F2Q.js} +13 -13
  18. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
  19. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-I5W5S3D6.js} +1 -1
  20. package/chunks/{bridge-MHWO5I5T.js → bridge-Q66BD62H.js} +23 -23
  21. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TRTLQTSV.js} +4 -4
  22. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-R5STFWUW.js} +31 -31
  23. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-PIYPVCTF.js} +6 -6
  24. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-FQHEDTD2.js} +6 -6
  25. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
  26. package/chunks/{chunk-ZJ2LM2SI.js → chunk-2OR32P5M.js} +104 -33
  27. package/chunks/chunk-2Z3T52OC.js +82 -0
  28. package/chunks/{chunk-5FYGZ7E3.js → chunk-33MLFMCL.js} +2 -2
  29. package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
  30. package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
  31. package/chunks/{chunk-TSLRORQR.js → chunk-43CI6YWJ.js} +1467 -1323
  32. package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
  33. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  34. package/chunks/{chunk-RRCNEW2A.js → chunk-4BLTSTF6.js} +58 -4
  35. package/chunks/{chunk-3RMVM33U.js → chunk-4JKLPTV6.js} +5 -5
  36. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  37. package/chunks/{chunk-AWDF462I.js → chunk-5GD7LYOH.js} +2 -2
  38. package/chunks/{chunk-HZS3JRQW.js → chunk-5VZFJTL2.js} +40 -2
  39. package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
  40. package/chunks/{chunk-ZT3XUGSU.js → chunk-63ACHB2H.js} +86 -9
  41. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  42. package/chunks/{chunk-REDVV5NC.js → chunk-6GRDHIVI.js} +7 -7
  43. package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
  44. package/chunks/{chunk-C4NXRR7T.js → chunk-743XE7N7.js} +2 -2
  45. package/chunks/{chunk-I7UNCY24.js → chunk-7GZCCHJL.js} +3 -3
  46. package/chunks/{chunk-XX4MBBFW.js → chunk-7L35FKPF.js} +3 -3
  47. package/chunks/{chunk-GEV66YGE.js → chunk-7RXOEUFF.js} +1 -1
  48. package/chunks/{chunk-TXAEXF2B.js → chunk-BL6B2QS2.js} +21 -8
  49. package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
  50. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  51. package/chunks/{chunk-22QOQKG4.js → chunk-CG2PDIGD.js} +1 -1
  52. package/chunks/{chunk-MFCWL4LI.js → chunk-CPJRFFPH.js} +451 -396
  53. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  54. package/chunks/{chunk-RSU3I6UL.js → chunk-DCPRCDSR.js} +1 -1
  55. package/chunks/{chunk-PLUAIHZO.js → chunk-DTB5BXRG.js} +6 -6
  56. package/chunks/{chunk-FWH4736Q.js → chunk-EA4NFWVG.js} +3 -3
  57. package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
  58. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  59. package/chunks/{chunk-EGRFCIXD.js → chunk-EUXF6URV.js} +79 -18
  60. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  61. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  62. package/chunks/{chunk-C7M445SS.js → chunk-G5QLLD53.js} +1 -1
  63. package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
  64. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  65. package/chunks/{chunk-7PMKXGRP.js → chunk-GXIHBIHC.js} +66 -9
  66. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  67. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  68. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  69. package/chunks/{chunk-SHX2HIE7.js → chunk-ISPBBKJN.js} +1 -1
  70. package/chunks/{chunk-QQGAR64U.js → chunk-IUJLW6ZI.js} +4 -4
  71. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  72. package/chunks/{chunk-AIMZIXZM.js → chunk-J4ECGDA3.js} +5 -7
  73. package/chunks/{chunk-HPE4LEWX.js → chunk-JDPBJIKI.js} +1 -1
  74. package/chunks/{chunk-Y3C5COGI.js → chunk-L6ZME3W7.js} +1 -1
  75. package/chunks/{chunk-EPZWBYQI.js → chunk-LBKYQ33T.js} +8 -6
  76. package/chunks/{chunk-KTLT7VCX.js → chunk-LN3WBOKU.js} +2 -2
  77. package/chunks/{chunk-FXYNIZPW.js → chunk-LUVXLLMS.js} +51 -10
  78. package/chunks/{chunk-RQNAO42A.js → chunk-M6YLOETP.js} +1 -1
  79. package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
  80. package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
  81. package/chunks/{chunk-SI6Q52UI.js → chunk-MMMA36MN.js} +3 -3
  82. package/chunks/{chunk-QW7BUOSI.js → chunk-MWEF5MUK.js} +20 -3
  83. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  84. package/chunks/chunk-NOO4QFXM.js +171 -0
  85. package/chunks/{chunk-UTVIIA7N.js → chunk-NVS4Z6GT.js} +1 -1
  86. package/chunks/{chunk-VMFPZXRT.js → chunk-ODBNTMZW.js} +43 -31
  87. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  88. package/chunks/{chunk-WQBR7LN5.js → chunk-OIPUQE3S.js} +1 -1
  89. package/chunks/{chunk-2C3XDBGL.js → chunk-ORREXWOM.js} +4 -4
  90. package/chunks/{chunk-RD3VPM4E.js → chunk-PQWM4SX2.js} +2 -2
  91. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  92. package/chunks/{chunk-RUMSY4ES.js → chunk-Q2F43WTJ.js} +8 -7
  93. package/chunks/{chunk-VYCJITND.js → chunk-QJAFSFYA.js} +1 -1
  94. package/chunks/{chunk-L36LLVA5.js → chunk-QLM7D7W3.js} +3 -3
  95. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  96. package/chunks/{chunk-XNC2TCUO.js → chunk-QXXBW2G4.js} +4 -4
  97. package/chunks/{chunk-TDHVOZ65.js → chunk-R2266LQ5.js} +2 -2
  98. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  99. package/chunks/{chunk-LYHYXJJ3.js → chunk-RDV4NLI3.js} +3 -3
  100. package/chunks/{chunk-733KQL63.js → chunk-RN6V5HKE.js} +3 -3
  101. package/chunks/{chunk-WLZRMF3C.js → chunk-RX3FYFCN.js} +353 -11
  102. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  103. package/chunks/{chunk-ZNI3V2XA.js → chunk-TK4XHPKW.js} +2 -2
  104. package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
  105. package/chunks/{chunk-T7TP5UQL.js → chunk-ULY4ISY2.js} +4 -4
  106. package/chunks/{chunk-PMGWY6ZP.js → chunk-UULHYZ4W.js} +13 -10
  107. package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
  108. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  109. package/chunks/{chunk-YLFICBYK.js → chunk-VEQBVJYH.js} +3 -3
  110. package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
  111. package/chunks/{chunk-KP5QK3FB.js → chunk-VH764G6B.js} +397 -54
  112. package/chunks/{chunk-IGOIYZBG.js → chunk-VHPG7BH6.js} +2 -2
  113. package/chunks/{chunk-I67KJGM6.js → chunk-W3ONSAYO.js} +3 -3
  114. package/chunks/{chunk-SHK2SIR5.js → chunk-W673V2H3.js} +4 -4
  115. package/chunks/{chunk-C55CR5I4.js → chunk-W7PXLIZJ.js} +6 -6
  116. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  117. package/chunks/{chunk-B5FF3LRF.js → chunk-WIRYFL2L.js} +22 -15
  118. package/chunks/{chunk-P5Z7VD23.js → chunk-WZ4YULVF.js} +106 -39
  119. package/chunks/{chunk-WFXD5OZH.js → chunk-WZS3X663.js} +1 -1
  120. package/chunks/{chunk-HWZOOSEB.js → chunk-XAXTQURR.js} +3 -3
  121. package/chunks/{chunk-ANVC5CSK.js → chunk-XBLG564H.js} +10 -10
  122. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  123. package/chunks/{chunk-SD7Y2PMC.js → chunk-XI7RST4D.js} +2 -2
  124. package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
  125. package/chunks/{chunk-4OCYWXKF.js → chunk-Y6ZWXM44.js} +3 -3
  126. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  127. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  128. package/chunks/{chunk-75UQFGFE.js → chunk-ZIPYCXQP.js} +1 -1
  129. package/chunks/{chunk-AUJOWIT5.js → chunk-ZUNWKOAP.js} +3 -3
  130. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-37FHWPTP.js} +24 -24
  131. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-R4JUBV5N.js} +22 -22
  132. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-6U4OXU5C.js} +20 -20
  133. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-LLUYAGZN.js} +21 -21
  134. package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
  135. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-O2UTNFJC.js} +20 -20
  136. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-7GMAKSTX.js} +27 -27
  137. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-VNP76VMO.js} +27 -27
  138. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-TD5O3BZA.js} +27 -27
  139. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-NJM63YJS.js} +20 -20
  140. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  141. package/chunks/{dist-NXW4DUUX.js → dist-24TCWK5H.js} +1 -1
  142. package/chunks/{dist-I74QLLQS.js → dist-5I4HLUTO.js} +1 -1
  143. package/chunks/{dist-XINEKB5A.js → dist-FDISN4AK.js} +1 -1
  144. package/chunks/{dist-VCAS67N5.js → dist-M4CBX53H.js} +1 -1
  145. package/chunks/{dist-AI25RVRA.js → dist-NQ2636VT.js} +1 -1
  146. package/chunks/{dist-3H3WODVS.js → dist-OR2ZQTXZ.js} +1 -1
  147. package/chunks/{dist-P6YWBITG.js → dist-STAGIFNB.js} +430 -51
  148. package/chunks/{dist-YNQU4CKC.js → dist-WZTUKIDR.js} +2 -2
  149. package/chunks/{dist-T4PRA5EZ.js → dist-XJ25G6OH.js} +1 -1
  150. package/chunks/{edit-WPVXLL3T.js → edit-GL7OA6RV.js} +13 -13
  151. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  152. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-VC4BCSZE.js} +13 -13
  153. package/chunks/{environment-5LLJ3I3W.js → environment-BI6IBAZJ.js} +23 -23
  154. package/chunks/{errors-IQT3YZEP.js → errors-D6G2ZM2R.js} +22 -22
  155. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  156. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-DX446CA6.js} +13 -13
  157. package/chunks/{fast-path-PAUQQEVU.js → fast-path-MAYDLJIP.js} +3 -3
  158. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  159. package/chunks/{glob-SQ7CTZ7F.js → glob-TVKRFY36.js} +13 -13
  160. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-CA6YANRN.js} +13 -13
  161. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-AW4ZAHON.js} +23 -23
  162. package/chunks/{i18n-SF5MPWEB.js → i18n-IH5CRAY7.js} +23 -21
  163. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  164. package/chunks/{initializer-CK4WPYZG.js → initializer-UBR37ZNM.js} +27 -27
  165. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-Y52756EC.js} +20 -20
  166. package/chunks/{list-E3PS3EBJ.js → list-7V5JDZPO.js} +30 -30
  167. package/chunks/{llm-JQKBOYAF.js → llm-QDB6JVF5.js} +62 -62
  168. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-EO6MZCEO.js} +23 -8
  169. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-I3YQKMC4.js} +27 -27
  170. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-MNXYUGDG.js} +14 -14
  171. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-EA3EXPTO.js} +20 -20
  172. package/chunks/{mcp-I7G2AEWS.js → mcp-QTAJ544Y.js} +27 -27
  173. package/chunks/{monitor-4R76BCRZ.js → monitor-6FQKQOTP.js} +13 -13
  174. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-MRCTZL5X.js} +64 -61
  175. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-BQQCKI7K.js} +13 -13
  176. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-TTSKXNVH.js} +8 -8
  177. package/chunks/{pidfile-TGIUY2GG.js → pidfile-KPIS6RIT.js} +20 -20
  178. package/chunks/{processUtils-3USXUQWX.js → processUtils-ZCASPKK4.js} +2 -2
  179. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-D6HM6TV7.js} +21 -21
  180. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-GGZEFLBD.js} +16 -16
  181. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  182. package/chunks/{read-file-R256LDWQ.js → read-file-VE5GDFLP.js} +2 -2
  183. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-HSSGMYDC.js} +23 -23
  184. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-SEJE7AA6.js} +3 -3
  185. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-OJYVH7N6.js} +58 -60
  186. package/chunks/{runtime-FS5TL6P7.js → runtime-KGMQQFJD.js} +32 -32
  187. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-7H5HWHYD.js} +25 -25
  188. package/chunks/{scheduler-EXU5HMVK.js → scheduler-BE42AKDG.js} +22 -22
  189. package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
  190. package/chunks/{serve-ITJC7WNN.js → serve-KZVKYMSL.js} +27 -27
  191. package/chunks/{server-6JQY3PTU.js → server-PJRALPJQ.js} +1296 -822
  192. package/chunks/{session-PJDEKXD4.js → session-IHITXU2S.js} +63 -62
  193. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-GQ2TUI3Y.js} +20 -20
  194. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-H43LULTE.js} +24 -24
  195. package/chunks/{settings-LO6J5SAZ.js → settings-RKEQQDFC.js} +26 -26
  196. package/chunks/{shell-ANAFVYGR.js → shell-6PJ444U5.js} +13 -13
  197. package/chunks/{skill-SHJWKSPH.js → skill-Q3UP7B5V.js} +2 -2
  198. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-LZR5YRRW.js} +26 -26
  199. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-WM3DT2BF.js} +20 -20
  200. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-E5474IBI.js} +22 -22
  201. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLWZNQ2I.js} +1991 -986
  202. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-FBQSGWGO.js} +1119 -1478
  203. package/chunks/{team-create-WKTPCH6D.js → team-create-VIGUFUT4.js} +13 -13
  204. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-HQVZA3MD.js} +13 -13
  205. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-LUKNCOVM.js} +20 -20
  206. package/chunks/{theme-manager-BNWESY26.js → theme-manager-LOENKYLY.js} +20 -20
  207. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-ZIFAQCE2.js} +2 -2
  208. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-FUUJH3QH.js} +24 -24
  209. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-C76KYROP.js} +21 -21
  210. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4G2SRXKX.js} +5 -5
  211. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-EIZIO7HI.js} +22 -22
  212. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-EAA6KSY4.js} +29 -29
  213. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-BRX22QCN.js} +59 -58
  214. package/chunks/{version-RO2FPO76.js → version-E56RU7PR.js} +1 -1
  215. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-AAUCD7RM.js} +5 -5
  216. package/chunks/{web-search-XA5Z4ZCD.js → web-search-HFUQF44Q.js} +18 -7
  217. package/chunks/{workflow-QFIOCMDM.js → workflow-3MABM53N.js} +15 -15
  218. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-2FRLBZ5I.js} +29 -29
  219. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-YL7HLYYI.js} +1 -1
  220. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-BNRP2ELW.js} +24 -24
  221. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-WKGF7VHS.js} +24 -24
  222. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-4MYO72MM.js} +31 -31
  223. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-SU66TJLZ.js} +27 -27
  224. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-D5QT7WQB.js} +31 -31
  225. package/chunks/{write-file-QOYVHAKK.js → write-file-NVPQE2AZ.js} +14 -14
  226. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-RJHC66WG.js} +2 -2
  227. package/cli.js +13 -13
  228. package/export-transcript-document.js +126 -122
  229. package/package.json +3 -3
  230. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
  231. package/web-shell/assets/{arc-DKW0mbPo.js → arc-BQ9m8TDV.js} +1 -1
  232. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
  233. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
  234. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
  235. package/web-shell/assets/channel-uMMdTrYk.js +1 -0
  236. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
  237. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
  238. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
  239. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
  240. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
  241. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
  242. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
  243. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
  244. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
  245. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
  246. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
  247. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
  248. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  249. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
  250. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
  251. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
  252. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
  253. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
  254. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
  255. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
  256. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
  257. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
  258. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
  259. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
  260. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
  261. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
  262. package/web-shell/assets/{index-C9R-iojE.js → index-BbMXfhNG.js} +1 -1
  263. package/web-shell/assets/{index-B4TLaxWs.js → index-Bu-rZoJ-.js} +462 -454
  264. package/web-shell/assets/index-CsPwZ1ut.css +36 -0
  265. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
  266. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
  267. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
  268. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
  269. package/web-shell/assets/{layout-CFVu37BB.js → layout-BEWc0Al9.js} +1 -1
  270. package/web-shell/assets/{linear-ChBxdtWf.js → linear-CNuNxirL.js} +1 -1
  271. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-DZBre674.js} +6 -6
  272. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
  273. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
  274. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
  275. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
  276. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
  277. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
  278. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
  279. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
  280. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
  281. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
  282. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
  283. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
  284. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
  285. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
  286. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
  287. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
  288. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
  289. package/web-shell/index.html +2 -2
  290. package/chunks/chunk-3UMWOKJC.js +0 -78
  291. package/chunks/chunk-IQAFKVXS.js +0 -22
  292. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  293. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  294. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  295. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  296. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  297. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getGlobalQwenDir
5
- } from "./chunk-65GHQ4FX.js";
5
+ } from "./chunk-XVTCSVBK.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -146,12 +146,49 @@ init_esbuild_shims();
146
146
  var RATE_LIMIT_ERROR_CODES = /* @__PURE__ */ new Set([429, 503, 1302, 1305]);
147
147
  function isRateLimitError(error, extraCodes) {
148
148
  const code = getErrorCode(error);
149
- if (code === null) return false;
149
+ if (code === null) return isStatuslessThrottle(error);
150
150
  if (RATE_LIMIT_ERROR_CODES.has(code)) return true;
151
151
  if (extraCodes && extraCodes.includes(code)) return true;
152
152
  return false;
153
153
  }
154
154
  __name(isRateLimitError, "isRateLimitError");
155
+ function isStatuslessThrottle(error) {
156
+ for (const payload of [error, ...getJsonPayloads(error)]) {
157
+ const selected = providerErrorSource(payload);
158
+ if (!selected) continue;
159
+ const { source } = selected;
160
+ const { type, message } = source;
161
+ if (type === "rate_limit_error" || type === "overloaded_error") return true;
162
+ if (type !== "invalid_request_error" || typeof message !== "string")
163
+ continue;
164
+ const detail = decodeProviderMessage(message)?.["message"] ?? message;
165
+ if (typeof detail === "string" && /^too many requests\b/i.test(detail.trim()) && /\b(?:wait|try(?:ing)? again)\b/i.test(detail)) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ __name(isStatuslessThrottle, "isStatuslessThrottle");
172
+ function providerErrorSource(payload) {
173
+ if (typeof payload !== "object" || payload === null) return null;
174
+ const direct = payload;
175
+ const nested = direct["error"];
176
+ const source = typeof nested === "object" && nested !== null ? nested : direct;
177
+ return { source, direct };
178
+ }
179
+ __name(providerErrorSource, "providerErrorSource");
180
+ function decodeProviderMessage(message) {
181
+ try {
182
+ const selected = providerErrorSource(JSON.parse(message));
183
+ if (!selected || typeof selected.source["message"] !== "string") {
184
+ return null;
185
+ }
186
+ return { ...selected.direct, ...selected.source };
187
+ } catch {
188
+ return null;
189
+ }
190
+ }
191
+ __name(decodeProviderMessage, "decodeProviderMessage");
155
192
  function getRateLimitErrorDetails(error) {
156
193
  const statusCode = getErrorStatus(error);
157
194
  const payload = getProviderErrorPayload(error);
@@ -159,7 +196,7 @@ function getRateLimitErrorDetails(error) {
159
196
  const transport = message?.includes("event:error") || message?.includes("HTTP_STATUS/") ? "sse" : statusCode !== void 0 ? "http" : "unknown";
160
197
  return {
161
198
  ...statusCode !== void 0 ? { statusCode } : {},
162
- ...payload?.code !== void 0 ? { providerCode: String(payload.code) } : {},
199
+ ...payload?.code !== void 0 || payload?.type !== void 0 ? { providerCode: String(payload.code ?? payload.type) } : {},
163
200
  ...payload?.message !== void 0 ? { providerMessage: payload.message } : {},
164
201
  ...payload?.requestId !== void 0 ? { requestId: payload.requestId } : {},
165
202
  transport
@@ -208,22 +245,24 @@ function getErrorCode(error) {
208
245
  __name(getErrorCode, "getErrorCode");
209
246
  function getProviderErrorPayload(error) {
210
247
  for (const payload of getJsonPayloads(error)) {
211
- if (typeof payload !== "object" || payload === null) continue;
212
- const direct = payload;
213
- const nestedError = payload.error;
214
- const nested = typeof nestedError === "object" && nestedError !== null ? nestedError : void 0;
215
- const source = nested ?? direct;
216
- const code = typeof source.code === "string" || typeof source.code === "number" ? source.code : void 0;
217
- const message = typeof source.message === "string" ? source.message : void 0;
218
- const requestId = typeof source.request_id === "string" ? source.request_id : typeof source.requestId === "string" ? source.requestId : typeof direct.request_id === "string" ? direct.request_id : typeof direct.requestId === "string" ? direct.requestId : void 0;
219
- if (code !== void 0 || message !== void 0 || requestId !== void 0) {
220
- return { code, message, requestId };
248
+ const selected = providerErrorSource(payload);
249
+ if (!selected) continue;
250
+ const { source, direct } = selected;
251
+ const decoded = typeof source["message"] === "string" ? decodeProviderMessage(source["message"]) : null;
252
+ const code = typeof source["code"] === "string" || typeof source["code"] === "number" ? source["code"] : typeof decoded?.["code"] === "string" || typeof decoded?.["code"] === "number" ? decoded["code"] : void 0;
253
+ const type = typeof source["type"] === "string" ? source["type"] : typeof decoded?.["type"] === "string" ? decoded["type"] : void 0;
254
+ const message = typeof decoded?.["message"] === "string" ? decoded["message"] : typeof source["message"] === "string" ? source["message"] : void 0;
255
+ const requestId = typeof source["request_id"] === "string" ? source["request_id"] : typeof source["requestId"] === "string" ? source["requestId"] : typeof direct["request_id"] === "string" ? direct["request_id"] : typeof direct["requestId"] === "string" ? direct["requestId"] : typeof decoded?.["request_id"] === "string" ? decoded["request_id"] : typeof decoded?.["requestId"] === "string" ? decoded["requestId"] : void 0;
256
+ if (code !== void 0 || type !== void 0 || message !== void 0 || requestId !== void 0) {
257
+ return { code, type, message, requestId };
221
258
  }
222
259
  }
223
260
  if (isApiError(error)) {
261
+ const decoded = decodeProviderMessage(error.error.message);
224
262
  return {
225
263
  code: error.error.code,
226
- message: error.error.message
264
+ ...typeof decoded?.["type"] === "string" ? { type: decoded["type"] } : {},
265
+ message: typeof decoded?.["message"] === "string" ? decoded["message"] : error.error.message
227
266
  };
228
267
  }
229
268
  return null;
@@ -2,20 +2,21 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-VMFPZXRT.js";
5
+ } from "./chunk-ODBNTMZW.js";
6
6
  import {
7
7
  observeHeadlessToolResultProjection,
8
8
  observeHeadlessToolResultWire,
9
9
  projectJsonStringToByteBudget
10
- } from "./chunk-PMGWY6ZP.js";
10
+ } from "./chunk-UULHYZ4W.js";
11
11
  import {
12
+ createNotStartedToolErrorResponse,
12
13
  parseAndFormatApiError,
13
14
  toolResultBoundaryArtifact
14
- } from "./chunk-TSLRORQR.js";
15
+ } from "./chunk-43CI6YWJ.js";
15
16
  import {
16
17
  formatVisionBridgeNoticeDisplay,
17
18
  isVisionBridgeNoticeDisplay
18
- } from "./chunk-WQBR7LN5.js";
19
+ } from "./chunk-OIPUQE3S.js";
19
20
  import {
20
21
  init_esbuild_shims
21
22
  } from "./chunk-5O2XNYP6.js";
@@ -378,6 +379,49 @@ var BaseJsonOutputAdapter = class {
378
379
  startAssistantMessage() {
379
380
  this.startAssistantMessageInternal(this.mainAgentMessageState);
380
381
  }
382
+ /**
383
+ * Starts a replacement provider attempt. Continuation retries keep the
384
+ * already-delivered text; fresh retries and fallbacks discard the pending
385
+ * assistant state. Streaming adapters override this to pair any tool_use
386
+ * frames that are already on the wire before resetting.
387
+ */
388
+ restartAttempt(preserveText, discardedToolCalls) {
389
+ if (preserveText) {
390
+ const discardedIds = new Set(
391
+ discardedToolCalls.map((request) => request.callId)
392
+ );
393
+ if (discardedIds.size > 0) {
394
+ const state = this.mainAgentMessageState;
395
+ const retainedBlocks = [];
396
+ const retainedOpenBlocks = /* @__PURE__ */ new Set();
397
+ for (const [index, block] of state.blocks.entries()) {
398
+ if (block.type === "tool_use" && discardedIds.has(block.id)) {
399
+ continue;
400
+ }
401
+ const retainedIndex = retainedBlocks.length;
402
+ retainedBlocks.push(block);
403
+ if (state.openBlocks.has(index)) {
404
+ retainedOpenBlocks.add(retainedIndex);
405
+ }
406
+ }
407
+ state.blocks = retainedBlocks;
408
+ state.openBlocks = retainedOpenBlocks;
409
+ state.currentBlockType = retainedBlocks.at(-1)?.type ?? null;
410
+ state.messageStarted = retainedBlocks.length > 0;
411
+ }
412
+ return;
413
+ }
414
+ this.startAssistantMessageInternal(this.mainAgentMessageState);
415
+ }
416
+ emitDiscardedAttemptToolResults(discardedToolCalls) {
417
+ const message = "Skipped because the provider attempt was retried before execution.";
418
+ for (const request of discardedToolCalls) {
419
+ this.emitToolResult(
420
+ request,
421
+ createNotStartedToolErrorResponse(request, message)
422
+ );
423
+ }
424
+ }
381
425
  /**
382
426
  * Processes an LLM stream event.
383
427
  * This is a shared implementation used by both streaming and non-streaming adapters.
@@ -1072,6 +1116,16 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
1072
1116
  this.mainTurnMessageStartEmitted = false;
1073
1117
  super.startAssistantMessage();
1074
1118
  }
1119
+ restartAttempt(preserveText, discardedToolCalls) {
1120
+ if (preserveText && discardedToolCalls.length === 0) {
1121
+ return;
1122
+ }
1123
+ if (this.mainAgentMessageState.messageStarted && !this.mainAgentMessageState.finalized) {
1124
+ this.finalizeAssistantMessage();
1125
+ }
1126
+ this.emitDiscardedAttemptToolResults(discardedToolCalls);
1127
+ super.restartAttempt(false, discardedToolCalls);
1128
+ }
1075
1129
  finalizeAssistantMessage() {
1076
1130
  const message = this.finalizeAssistantMessageInternal(
1077
1131
  this.mainAgentMessageState,
@@ -2,20 +2,20 @@
2
2
  "use strict";
3
3
  import {
4
4
  getExtensionManager
5
- } from "./chunk-2C3XDBGL.js";
5
+ } from "./chunk-ORREXWOM.js";
6
6
  import {
7
7
  parseChannelConfig
8
- } from "./chunk-BNWIX6BM.js";
8
+ } from "./chunk-UXDVUFKU.js";
9
9
  import {
10
10
  getPlugin,
11
11
  registerPlugin
12
- } from "./chunk-RGAQDQ3Z.js";
12
+ } from "./chunk-UHUT4IDM.js";
13
13
  import {
14
14
  sanitizeLogText
15
- } from "./chunk-65GHQ4FX.js";
15
+ } from "./chunk-XVTCSVBK.js";
16
16
  import {
17
17
  loadSettings
18
- } from "./chunk-RUMSY4ES.js";
18
+ } from "./chunk-Q2F43WTJ.js";
19
19
  import {
20
20
  hashDaemonWorkspace
21
21
  } from "./chunk-7OCIQNKX.js";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-N6VQ37ZZ.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-LD53HMPV.js";
11
+ } from "./chunk-CRZBDVP2.js";
12
12
  import {
13
13
  getPackageJson
14
14
  } from "./chunk-W3N5XAZ6.js";
@@ -16,7 +16,7 @@ import {
16
16
  MODIFIER_SHIFT_BIT,
17
17
  MODIFIER_SUPER_BIT,
18
18
  clipboardHasImage
19
- } from "./chunk-HY3DXYZK.js";
19
+ } from "./chunk-UYDQYDW2.js";
20
20
  import {
21
21
  noteInteraction
22
22
  } from "./chunk-KW7NOTN6.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  KittySequenceOverflowEvent,
35
35
  logKittySequenceOverflow
36
- } from "./chunk-WQBR7LN5.js";
36
+ } from "./chunk-OIPUQE3S.js";
37
37
  import {
38
38
  createDebugLogger
39
39
  } from "./chunk-ZAFYHRVY.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  BaseJsonOutputAdapter
5
- } from "./chunk-RRCNEW2A.js";
5
+ } from "./chunk-4BLTSTF6.js";
6
6
  import {
7
7
  observeHeadlessJsonToolResultWire
8
- } from "./chunk-PMGWY6ZP.js";
8
+ } from "./chunk-UULHYZ4W.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -20,6 +20,8 @@ var JsonOutputAdapter = class extends BaseJsonOutputAdapter {
20
20
  __name(this, "JsonOutputAdapter");
21
21
  }
22
22
  messages = [];
23
+ attemptMessageCheckpoint = 0;
24
+ lastAssistantMessageAtAttemptStart = null;
23
25
  constructor(config) {
24
26
  super(config);
25
27
  }
@@ -39,6 +41,42 @@ var JsonOutputAdapter = class extends BaseJsonOutputAdapter {
39
41
  shouldEmitStreamEvents() {
40
42
  return false;
41
43
  }
44
+ startAssistantMessage() {
45
+ this.attemptMessageCheckpoint = this.messages.length;
46
+ this.lastAssistantMessageAtAttemptStart = this.lastAssistantMessage;
47
+ super.startAssistantMessage();
48
+ }
49
+ restartAttempt(preserveText, discardedToolCalls) {
50
+ if (preserveText) {
51
+ const discardedIds = new Set(
52
+ discardedToolCalls.map((request) => request.callId)
53
+ );
54
+ if (discardedIds.size > 0) {
55
+ const retained = this.messages.slice(this.attemptMessageCheckpoint).filter(
56
+ (message) => message.type !== "assistant" || !message.message.content.some(
57
+ (block) => block.type === "tool_use" && discardedIds.has(block.id)
58
+ )
59
+ );
60
+ this.messages.splice(
61
+ this.attemptMessageCheckpoint,
62
+ this.messages.length - this.attemptMessageCheckpoint,
63
+ ...retained
64
+ );
65
+ this.lastAssistantMessage = this.messages.findLast(
66
+ (message) => message.type === "assistant"
67
+ ) ?? this.lastAssistantMessageAtAttemptStart;
68
+ }
69
+ } else {
70
+ const retained = this.messages.slice(this.attemptMessageCheckpoint).filter((message) => message.type !== "assistant");
71
+ this.messages.splice(
72
+ this.attemptMessageCheckpoint,
73
+ this.messages.length - this.attemptMessageCheckpoint,
74
+ ...retained
75
+ );
76
+ this.lastAssistantMessage = this.lastAssistantMessageAtAttemptStart;
77
+ }
78
+ super.restartAttempt(preserveText, discardedToolCalls);
79
+ }
42
80
  finalizeAssistantMessage() {
43
81
  return this.finalizeAssistantMessageInternal(
44
82
  this.mainAgentMessageState,
@@ -3012,6 +3012,62 @@ var DaemonClient = class {
3012
3012
  async resumeSession(sessionId, req = {}, clientId) {
3013
3013
  return this.restoreSession("resume", sessionId, req, clientId);
3014
3014
  }
3015
+ /**
3016
+ * Transfer a worktree session's checkout ownership to a fresh replacement
3017
+ * session (`POST /session/:id/worktree-reset`, capability
3018
+ * `session_worktree_reset_v1`). Resolves 200 with the replacement
3019
+ * session's create-shape response. The route never reads a caller-supplied
3020
+ * client id, so this method takes none — but the response is not
3021
+ * registration-free: a fresh transfer mints an owner-style `clientId` for
3022
+ * the spawn it performs, registers it on the replacement, and returns it in
3023
+ * the body, while an idempotent resume of a committed transfer returns
3024
+ * none. That registration is not an attachment (the replacement's attach
3025
+ * count is unaffected), and nothing detaches it for you — pass a minted id
3026
+ * you do not keep using to `detachSession`, or the replacement never
3027
+ * reaches the daemon's idle cleanup. Typed 409 bodies carry the reset
3028
+ * taxonomy: `worktree_reset_unsupported` (not a worktree session),
3029
+ * `worktree_reset_active` (a session involved is busy), and
3030
+ * `worktree_reset_invalid_state` (corrupt or ambiguous ownership state; a
3031
+ * partial transfer this request started is rolled back, while a
3032
+ * pre-existing interrupted state is left untouched for operator repair).
3033
+ * A crashed transfer whose sidecar links agree is self-healed here: a
3034
+ * pre-commit one (the marker still names this session, or is absent while
3035
+ * the replacement is dormant) is rolled back and re-run in the same
3036
+ * request, and a committed one (the marker names the replacement) is
3037
+ * finished idempotently. Every other interrupted shape — disagreeing links,
3038
+ * an invalid marker, a marker naming a third session, a replacement still
3039
+ * live with no marker — is reported as `worktree_reset_invalid_state` (or
3040
+ * `worktree_reset_active` when the committed replacement is busy) and left
3041
+ * untouched: a retry re-reads the same state and returns the same 409, so
3042
+ * it does not converge and needs operator repair rather than a retry loop.
3043
+ * `worktree_reset_interrupted`, `worktree_session_superseded`, and
3044
+ * `worktree_marker_missing` belong to the restore surface (`loadSession` /
3045
+ * `resumeSession`) instead; for `worktree_reset_interrupted` — the
3046
+ * agreeing-links shape — retrying this reset against the superseded session
3047
+ * is the repair.
3048
+ */
3049
+ async resetWorktreeSession(sessionId, req = {}) {
3050
+ return await this.fetchWithTimeout(
3051
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/worktree-reset`,
3052
+ {
3053
+ method: "POST",
3054
+ headers: this.headers({ "Content-Type": "application/json" }),
3055
+ body: JSON.stringify({
3056
+ ...req.workspaceCwd !== void 0 ? { cwd: req.workspaceCwd } : {},
3057
+ ...req.modelServiceId !== void 0 ? { modelServiceId: req.modelServiceId } : {},
3058
+ ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
3059
+ ...req.sourceType !== void 0 ? { sourceType: req.sourceType } : {},
3060
+ ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {}
3061
+ })
3062
+ },
3063
+ async (res) => {
3064
+ if (!res.ok) {
3065
+ throw await this.failOnError(res, "POST /session/:id/worktree-reset");
3066
+ }
3067
+ return await res.json();
3068
+ }
3069
+ );
3070
+ }
3015
3071
  async branchSession(sessionId, req = {}, clientId) {
3016
3072
  return await this.fetchWithTimeout(
3017
3073
  `${this.baseUrl}/session/${urlEncode(sessionId)}/branch`,
@@ -6437,6 +6493,36 @@ var DaemonSessionClient = class _DaemonSessionClient {
6437
6493
  eventEpoch
6438
6494
  });
6439
6495
  }
6496
+ /**
6497
+ * Transfer a worktree session's checkout ownership to a fresh replacement
6498
+ * session and return a client bound to the replacement's identity. That
6499
+ * client carries whatever `clientId` the response had: a fresh transfer
6500
+ * mints and registers an owner-style one for the spawn it performs, while
6501
+ * an idempotent resume of a committed transfer returns none. The
6502
+ * registration is not an attachment (the replacement's attach count is
6503
+ * unaffected), but it is a client registration, and a non-empty one is what
6504
+ * holds the daemon's idle cleanup off — so detach a minted id you do not
6505
+ * keep using, or the replacement stays live indefinitely. A registered
6506
+ * attachment still requires the normal restore surface: load or resume the
6507
+ * replacement, passing the minted id to reuse that registration instead of
6508
+ * adding a second one. The replacement is a brand-new conversation; the
6509
+ * superseded session keeps its transcript on the daemon and is never
6510
+ * restored again (its restore surfaces `worktree_session_superseded`). The
6511
+ * existing reattach identity guard applies to the replacement client
6512
+ * unchanged.
6513
+ */
6514
+ static async resetWorktree(client, sessionId, req = {}) {
6515
+ const session = await client.resetWorktreeSession(sessionId, req);
6516
+ return new _DaemonSessionClient({
6517
+ client,
6518
+ session,
6519
+ hasActivePrompt: session.hasActivePrompt,
6520
+ // The replacement is freshly created: seed from the start of its bus
6521
+ // so events fired during the transfer window are not skipped.
6522
+ lastEventId: 0,
6523
+ eventEpoch: session.eventEpoch
6524
+ });
6525
+ }
6440
6526
  static async createStandalone(client, options = {}) {
6441
6527
  const session = await client.createStandaloneSession(options);
6442
6528
  return new _DaemonSessionClient({
@@ -6672,16 +6758,21 @@ var DaemonSessionClient = class _DaemonSessionClient {
6672
6758
  });
6673
6759
  this.reattaching = resume.then(async (session) => {
6674
6760
  if (this.session.worktreeState === "persisted-v1") {
6675
- const sameWorktree = session.worktreeState === "persisted-v1" && session.worktree?.path === this.session.worktree?.path;
6676
- if (!sameWorktree) {
6677
- await this.client.detachSession(session.sessionId, session.clientId).catch(() => {
6678
- });
6679
- throw new Error(
6680
- `Daemon lost durable worktree identity for session ${this.sessionId}`
6681
- );
6761
+ if (!session.worktree) {
6762
+ this.session.worktree = void 0;
6763
+ this.session.worktreeState = void 0;
6764
+ } else {
6765
+ const sameWorktree = session.worktreeState === "persisted-v1" && session.worktree.path === this.session.worktree?.path;
6766
+ if (!sameWorktree) {
6767
+ await this.client.detachSession(session.sessionId, session.clientId).catch(() => {
6768
+ });
6769
+ throw new Error(
6770
+ `Daemon lost durable worktree identity for session ${this.sessionId}`
6771
+ );
6772
+ }
6773
+ this.session.worktree = session.worktree;
6774
+ this.session.worktreeState = session.worktreeState;
6682
6775
  }
6683
- this.session.worktree = session.worktree;
6684
- this.session.worktreeState = session.worktreeState;
6685
6776
  }
6686
6777
  this.session.clientId = session.clientId;
6687
6778
  });
@@ -9369,13 +9460,10 @@ function normalizeDaemonEvent(event, opts = {}) {
9369
9460
  }
9370
9461
  ];
9371
9462
  case "slow_client_warning":
9372
- return [
9373
- {
9374
- ...base,
9375
- type: "status",
9376
- text: "SSE stream is lagging"
9377
- }
9378
- ];
9463
+ if (typeof console !== "undefined") {
9464
+ console.warn?.("[daemon-ui] SSE stream is lagging", event.data);
9465
+ }
9466
+ return [];
9379
9467
  case "stream_error": {
9380
9468
  const errorKind = asDaemonErrorKind(getString2(event.data, "errorKind"));
9381
9469
  return [