@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
@@ -0,0 +1,102 @@
1
+ # Conversations writer locks and recovery
2
+
3
+ Updated daemons can share Conversations and use different sessions at the same
4
+ time. A loaded session still has one writer. Live activation belongs only to
5
+ the exact publisher of the stable Live locator; losing Live publication does
6
+ not disable standalone conversations.
7
+
8
+ ## A conversation will not open
9
+
10
+ `session_writer_conflict` means the writer fence prevented access. It can mean
11
+ another process has the conversation open, or that a residual lock cannot be
12
+ safely reclaimed. It is not proof that another writer is currently alive.
13
+ `session_writer_unavailable` means ownership could not be verified; retrying
14
+ does not authorize bypassing it. Archive and delete can return HTTP 200 with a
15
+ writer error for an individual session. Check every result item.
16
+
17
+ Close the conversation in the owning Qwen process normally, then use **Try
18
+ again** in the affected conversation. You can continue using other sessions.
19
+ Do not create a replacement conversation merely to make the error disappear.
20
+
21
+ After an ungraceful shutdown, a Linux reboot or a container restart into a new
22
+ PID namespace can leave an unsealed active writer record fenced indefinitely.
23
+ There may be no surviving owner to close. Follow
24
+ [Operator recovery for a residual lock](#operator-recovery-for-a-residual-lock)
25
+ instead of repeatedly retrying; this release does not reclaim across those
26
+ identity boundaries automatically.
27
+
28
+ If it persists, enable local debug logging (`QWEN_DEBUG_LOG_FILE=1`) when
29
+ starting the affected daemon and inspect the daemon and ACP child's diagnostics.
30
+ Lease-acquisition diagnostics include the session ID, error kind, and exact
31
+ `lockPath` resolved from that writer's runtime storage. Do not guess a lock path
32
+ from the primary workspace or a default home directory. Public HTTP/ACP errors
33
+ intentionally omit paths and ownership records. Keep diagnostic files private;
34
+ do not publish owner tokens or unredacted lock contents.
35
+
36
+ ## Which state can recover automatically?
37
+
38
+ These rules apply to session writer leases. Legacy global owner records use
39
+ the more limited compatibility check described below.
40
+
41
+ - Normal close releases the lease. A certified sealed handoff is accepted only
42
+ when its transcript proof is still valid.
43
+ - A dead active writer is reclaimable only when the existing identity checks
44
+ establish that its process belongs to the same verified liveness domain.
45
+ - Live or stalled writers remain fenced. Killing a daemon is insufficient if
46
+ its ACP writer child survives.
47
+ - Foreign or missing boot/process-namespace identity is not proof of death.
48
+ An absent PID in your namespace does not prove a foreign writer exited.
49
+ - Malformed records, uncertain transcript identity, and residual transition
50
+ claims fail closed. Elapsed time alone never authorizes takeover.
51
+
52
+ ## Operator recovery for a residual lock
53
+
54
+ 1. Identify the exact affected session and storage from local diagnostics.
55
+ Preserve the failure log and a private backup of its transcript and lock
56
+ artifacts. Record which binaries and hosts may access this storage.
57
+ 2. Stop or otherwise fence **every possible writer**, including detached ACP
58
+ children, other daemons, containers, namespaces, and machines sharing the
59
+ filesystem. Verify the fence from the relevant host/namespace. If you cannot
60
+ establish this, stop here and ask an operator who can.
61
+ 3. Inspect the exact record and any associated claim/retired artifacts with a
62
+ maintainer. Determine whether the last transcript and handoff proof are
63
+ authoritative. Do not edit ownership identity fields to manufacture a match.
64
+ 4. Only after writers are fenced and evidence is backed up, move individually
65
+ verified residual artifacts to private recovery storage under operator
66
+ supervision. Never recursively delete a lock directory or remove all locks.
67
+ 5. Start one updated daemon, restore the original session, and verify its last
68
+ recorded turn before appending. Retain the backups until continuity is
69
+ confirmed. Bring other updated daemons back only after that check.
70
+
71
+ There is no force-unlock API or automatic cross-boot/TTL takeover in this
72
+ release. When safe ownership cannot be established, retain the fence.
73
+
74
+ ## Coordinated upgrade and rollback
75
+
76
+ The backend cutover and Web Shell local-error/retry changes must ship in the
77
+ same release. This is **not a mixed-version rolling upgrade**: older daemons
78
+ can create a global owner after an updated daemon has already started.
79
+
80
+ Before upgrading, drain all old sessions and scheduled work, stop all old
81
+ daemons and their ACP children, preserve runtime data, and only then start the
82
+ updated binaries. An updated daemon encountering a live legacy owner returns
83
+ `503 conversation_runtime_in_use`; after that owner exits, retry without
84
+ restarting. Only an exactly revalidated stale legacy record is retired.
85
+ Malformed or unsafe legacy state requires operator investigation.
86
+
87
+ The legacy `conversations/runtime-owner.json` record carries a PID and nonce,
88
+ but no hostname, boot ID, or PID-namespace identity. Its compatibility check
89
+ can only test whether that PID exists in the updated daemon's own host and
90
+ PID namespace. It cannot detect an old writer that is alive elsewhere on shared
91
+ storage. This is another reason to fence every possible writer before starting
92
+ an updated daemon; the check does not make mixed-host or mixed-namespace
93
+ upgrades safe.
94
+
95
+ Before rollback, drain and fence every updated daemon and writer too. Inventory
96
+ active, sealed, claim, retired, and extended-schema records. Confirm the target
97
+ binary understands each retained schema and handoff state; never feed an
98
+ unsupported schema to an older writer or delete its protective record to make
99
+ rollback proceed. If compatibility cannot be established, keep writers stopped
100
+ and use maintainer-guided recovery or the coherent pre-upgrade backup. Never
101
+ restore an old transcript over later authoritative turns without explicitly
102
+ accounting for those turns.
@@ -118,7 +118,7 @@ The catalog is private to the exact channel, chat, and sender. Task names use 1
118
118
 
119
119
  Named results identify their originating task: direct chats use `[task]`, while group chats use `[sender · task]`. Named text permission prompts also show the exact request ID and the corresponding `/approve <id>`, `/approve-always <id>`, and `/deny <id>` commands. The label is presentation-only and is not stored in the model transcript.
120
120
 
121
- One task remains selected to receive the next normal message, but other named tasks may keep running concurrently. `/session new <name>` shares the configured workspace, while `/session new <name> --worktree` creates an isolated checkout for that task under the daemon workspace's `.qwen/worktrees/` directory. The daemon verifies the persisted worktree owner before reopening the task after a restart; a missing, changed, or foreign ownership record fails closed instead of silently moving the task into the shared workspace. Creating or selecting another task does not cancel or retarget earlier work, and late results retain their originating task label. A busy task cannot be closed, but its active prompt can be cancelled with `/session cancel [<name>]` through the existing Channel cancellation behavior. Independently queued turns are not cancelled, but in `collect` dispatch mode any follow-ups buffered behind the cancelled prompt are discarded by that existing behavior. Media preparation is not targeted. Bare permission commands apply only to the selected task, while an explicit request ID can answer an owned inactive task. `/clear`, `/new`, and `/reset` do not replace a selected worktree task; select or create a shared task first. Channel memory remains scoped to the chat rather than to a named task.
121
+ One task remains selected to receive the next normal message, but other named tasks may keep running concurrently. `/session new <name>` shares the configured workspace, while `/session new <name> --worktree` creates an isolated checkout for that task under the daemon workspace's `.qwen/worktrees/` directory. The daemon verifies the persisted worktree owner before reopening the task after a restart; a missing, changed, or foreign ownership record fails closed instead of silently moving the task into the shared workspace. Creating or selecting another task does not cancel or retarget earlier work, and late results retain their originating task label. A busy task cannot be closed, but its active prompt can be cancelled with `/session cancel [<name>]` through the existing Channel cancellation behavior. Independently queued turns are not cancelled, but in `collect` dispatch mode any follow-ups buffered behind the cancelled prompt are discarded by that existing behavior. Media preparation is not targeted. Bare permission commands apply only to the selected task, while an explicit request ID can answer an owned inactive task. `/clear`, `/new`, and `/reset` also work on a selected worktree task: the task gets a fresh conversation while its worktree and files are kept. A busy worktree task refuses the reset until its prompt finishes, and a task whose worktree record was damaged reports the failure without touching files. Channel memory remains scoped to the chat rather than to a named task.
122
122
 
123
123
  This mode is unavailable in standalone `qwen channel start`, with webhooks, with non-zero channel or group `groupHistoryLimit`, or with Channel loops. If an enabled loop already exists for that channel, the daemon worker refuses to start until the loop is disabled.
124
124
 
@@ -25,8 +25,8 @@ Node.js 22 or later and npm are required.
25
25
  When first used, the skill runs these commands itself:
26
26
 
27
27
  ```bash
28
- qwen mcp add --scope user node-repl npx -y @qwen-code/node-repl-mcp@0.1.2
29
- npm install --no-save --package-lock=false @qwen-code/cua-sdk@0.20.3
28
+ qwen mcp add --scope user node-repl npx -y @qwen-code/node-repl-mcp@0.1.3
29
+ npm install --no-save --package-lock=false @qwen-code/cua-sdk@0.20.4
30
30
  ```
31
31
 
32
32
  Restart Qwen Code after the MCP server is first added. The skill then resumes
@@ -45,11 +45,13 @@ Ask Qwen Code to use `$computer-use` for the desktop task. After bootstrap, it
45
45
  follows the standard Computer Use workflow:
46
46
 
47
47
  1. discovers the exact application and window;
48
- 2. observes full accessibility state;
49
- 3. acts through current semantic element tokens when possible;
50
- 4. fetches fresh state after every mutation;
51
- 5. verifies the requested result; and
52
- 6. closes the SDK client and resets the REPL.
48
+ 2. observes full accessibility state, then accumulates automatic incremental
49
+ updates into the current state;
50
+ 3. performs one or more actions through current semantic element tokens,
51
+ including unchanged tokens retained across compatible diffs;
52
+ 4. fetches the latest state before deciding what to do next; and
53
+ 5. closes the SDK client and resets the REPL only when no other persistent
54
+ state is needed.
53
55
 
54
56
  The driver is the only component that computes observation diffs. Model code
55
57
  uses the typed SDK methods and does not dispatch arbitrary driver tool names.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Qwen Code can predict what you want to type next and show it as placeholder text in the input area. This feature uses an LLM call to analyze the conversation context and generate a natural next step suggestion.
4
4
 
5
- This feature works end-to-end in both the CLI and Web Shell. Generation is automatic and server-side: after each completed turn the daemon emits the suggestion on the session stream (on by default; set `ui.enableFollowupSuggestions` to `false` to opt out), and Web Shell's composer already wires the `useDaemonFollowupSuggestion` hook, so suggestions render and accept with no additional host wiring.
5
+ This feature works end-to-end in both the CLI and Web Shell. Generation is automatic and server-side: after each cleanly completed turn (the daemon's `end_turn` stop reason — a `cancelled`, `refusal`, `max_tokens`, or `max_turn_requests` turn gets none) the daemon emits the suggestion on the session stream (on by default; set `ui.enableFollowupSuggestions` to `false` to opt out), and Web Shell's composer already wires the `useDaemonFollowupSuggestion` hook, so suggestions render and accept with no additional host wiring.
6
6
 
7
7
  ## How It Works
8
8
 
@@ -36,7 +36,7 @@ Suggestions are generated when all of the following conditions are met:
36
36
  - The approval mode is not set to `plan`
37
37
  - The feature is enabled (on by default — set `ui.enableFollowupSuggestions` to `false` to turn it off)
38
38
 
39
- Suggestions will not appear in non-interactive mode (e.g., headless/SDK mode).
39
+ Suggestions will not appear in the CLI's non-interactive mode (e.g., headless/SDK mode). In the daemon, generation is server-side and runs after every turn that meets the conditions above, so a headless or SDK client that cannot render the suggestion should set `ui.enableFollowupSuggestions` to `false` to avoid the per-turn LLM cost.
40
40
 
41
41
  Suggestions are automatically dismissed when:
42
42
 
@@ -16,13 +16,17 @@ A Goal keeps Qwen Code working across turns until a stated condition is met. Set
16
16
 
17
17
  Creating, editing, or resuming a Goal requires a trusted workspace (`/trust`). Headless usage is covered in [Headless Mode](./headless.md#run-a-persistent-goal).
18
18
 
19
+ Once a Goal has billed a turn, the footer pill and every status card show what it has spent against the window it is allowed, as `1.2k/30.0m`. The figure counts the model calls the Goal makes in its own turns; subagents and the verifier's own checks are not included. The window is set by [`model.goalTokenBudget`](../configuration/settings.md); resuming a Goal that has spent its window grants another one on top of what it has already spent, so the figure reads `30.0m/60.0m` rather than starting over. A Goal with no budget shows only what it has spent. A Goal that has not billed a turn yet shows no figures at all.
20
+
21
+ A long Goal periodically compresses the evidence it has recorded into checkpoint claims with a side model call, so later turns and the verifier still have it to cite. That call is bounded by [`model.goalCheckpointTimeoutSeconds`](../configuration/settings.md), 180 seconds by default; a checkpoint that does not finish in time is abandoned as an inconclusive check — the checkpoint stall streak is preserved rather than incremented — and a later turn retries it. The call is streamed, so the per-request transport timeout bounds only connect and first response, and the ceiling itself stops at the stream guards' 15-minute lifetime cap because past that the guard, not the setting, ends the call. That 15-minute limit on the setting is fixed, and raising the stream guard's own cap does not lift it.
22
+
19
23
  ## Interrupting a Goal
20
24
 
21
25
  Cancelling a Goal turn pauses the Goal. Press Esc while the model is answering or while its tools are still running, and the turn stops, the Goal moves to `paused`, and the card and `/goal` both say why it stopped. Nothing continues until you run `/goal resume`.
22
26
 
23
27
  Typing a message while a Goal is active does not pause it. Your message runs as the next Goal turn, so use it to steer the work; use `/goal pause` or `/goal clear` to stop it.
24
28
 
25
- Every pause states its reason: that you interrupted it, that you ran `/goal pause`, that the session token limit blocked the next model request, or that the turn failed. A Goal stopped by a limit keeps the reason for that limit instead.
29
+ Every pause states its reason: that you interrupted it, that you ran `/goal pause`, that the session token limit blocked the next model request, that the turn failed, or that three turns in a row recorded nothing the verifier could judge and no proposal — Goal bookkeeping reads (`get_goal`, `update_goal`) do not count as progress. A Goal stopped by a limit keeps the reason for that limit instead.
26
30
 
27
31
  ## How a Goal is judged
28
32
 
@@ -50,6 +54,8 @@ Put these into the objective, in this order:
50
54
 
51
55
  Keep it to one objective. `/goal set` and `/goal edit` accept any length, but stay roughly under 1,200 characters: the objective is re-sent on every Goal turn. An objective the model proposes through `propose_goal` is capped at 1,500 characters. Both commands collapse newlines to spaces, so number the items rather than relying on line breaks.
52
56
 
57
+ `Budget` is an instruction to the model about when to stop and report a blocker. Writing a turn count or time limit in the objective does not configure a runtime timer or change the Goal's token budget.
58
+
53
59
  | Weak | Why it fails | Stronger |
54
60
  | -------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
55
61
  | make checkout faster | No threshold, no check. | `Outcome: checkout p95 is below 250 ms. Done when: 1) npm run bench:checkout exits 0 and prints p95 < 250 (paste the line); 2) npm test exits 0. Must not: change the benchmark or skip tests. Budget: stop as blocked after 20 turns.` |
@@ -59,9 +65,15 @@ Keep it to one objective. `/goal set` and `/goal edit` accept any length, but st
59
65
 
60
66
  ## Let `/goal-draft` write it
61
67
 
62
- `/goal-draft <what you want done>` is a bundled skill that does the above for you. It checks whether the request is a Goal at all, reads the workspace for the real test and lint commands instead of guessing, asks at most one round of multiple-choice questions when the answer changes the check or the scope, drafts the objective in the format above, runs the self-check, and hands it over: in an interactive session it proposes the objective through the `propose_goal` approval dialog described below, otherwise it prints a `/goal set …` line you can run as-is. It never starts the work itself, and nothing is set without your approval.
68
+ `/goal-draft <what you want done>` is a bundled skill that does the above for you. It reads only enough of the workspace to establish the scope and real verification commands, without running tests, building, installing dependencies, or starting services. It asks at most one round of questions when essential choices are unclear, then writes a compact objective, usually with 3–5 completion checks (fewer when enough). Explicit requirements are preserved; it does not add checks just to reach a count.
69
+
70
+ For an audit, completion means covering the agreed scenarios and reporting evidence, including reproduction steps for confirmed defects. Finding no defects is a valid result. The draft should not invent a minimum number of scenarios, evidence files, exploration rounds, or defects.
71
+
72
+ If a success criterion, command, input path, or essential decision cannot be established, the skill returns a draft marked "Needs clarification" with `<TODO: …>` items. It does not offer that draft for approval or print a runnable `/goal set` or `/goal edit` command. Nonessential defaults are marked `[ASSUMPTION]`; they do not stand in for missing success criteria.
73
+
74
+ Once the objective is ready, an interactive terminal session can show the `propose_goal` approval dialog described below. Web Shell and other ACP clients, headless runs, sessions with the tool disabled, and sessions with an active Goal receive a command to run manually instead. The hand-off says that the draft has not been applied. The skill never starts the work itself, and nothing is set without your approval.
63
75
 
64
- Pass an existing objective to tighten it: `/goal-draft all tests pass and the lint is clean`.
76
+ Pass an existing objective to tighten it: `/goal-draft all tests pass and the lint is clean`. For an active Goal, an explicit request to tighten it produces `/goal edit`; a replacement uses `/goal set`. If the intended operation is unclear, the skill includes that choice in its single round of questions.
65
77
 
66
78
  ### Approve a Goal the model proposes
67
79
 
@@ -66,6 +66,12 @@ qwen serve
66
66
 
67
67
  The default bind is `127.0.0.1:4170`. Bearer auth is **off** and the primary listener is trusted, so any local process that can reach the port can use the full operator API, including executing code as the daemon user. Route-specific workspace trust, session ownership, `X-Qwen-Client-Id`, permission, feature, validation, and resource checks still apply. The daemon registers the current working directory as its primary workspace; use an absolute `--workspace /path/to/dir` to override it, and repeat the flag to register additional isolated runtimes.
68
68
 
69
+ For an API-only daemon, disable the Web Shell without narrowing the daemon's REST or SSE API:
70
+
71
+ ```bash
72
+ qwen serve --no-web
73
+ ```
74
+
69
75
  **Open the Web Shell UI.** Browse to `http://127.0.0.1:4170/` (or start the daemon with `qwen serve --open` to launch it automatically) for the full browser terminal — chat, diffs, commit history, tool calls, and permission prompts. The UI is served at the daemon root on the same origin as the API. The rest of this guide uses raw HTTP so you can script against the API directly.
70
76
 
71
77
  For an authenticated single-user launch without manually creating a token, opt in explicitly:
@@ -99,6 +105,18 @@ curl http://127.0.0.1:4170/daemon/status
99
105
  The `workspaceCwd` field surfaces the primary compatibility workspace so clients can intentionally omit `cwd` on `POST /session`. Current clients should select a trusted entry from `workspaces[]` and send that entry's `cwd` when targeting a runtime explicitly.
100
106
  The `limits.maxPendingPromptsPerSession` field advertises the active per-session prompt admission cap; `null` means the cap is disabled. `limits.maxTotalSessions` advertises the optional daemon-wide fresh-session cap; `null` means unlimited.
101
107
 
108
+ ### Adjust session live-state polling
109
+
110
+ Web Shell refreshes workspace session live-state every **5 seconds** by default. To use a different interval, set the daemon environment variable before starting it:
111
+
112
+ ```bash
113
+ QWEN_SESSION_LIVE_STATE_POLL_INTERVAL_MS=10000 qwen serve --web
114
+ ```
115
+
116
+ The value is an integer in milliseconds, from `1000` to `2147483647`. Missing or invalid values fall back to `5000`. The interval applies to all workspaces served by that daemon; restart the daemon and reload any open Web Shell pages after changing it. Local session actions and returning to a visible tab can still refresh immediately. This only changes live-state polling, not full session-catalog polling.
117
+
118
+ The daemon publishes the effective interval as `sessionLiveStatePollIntervalMs` in `/capabilities`. Web Shell uses that value and falls back to five seconds when connecting to an older daemon that omits it. SDK consumers can read the value when choosing their own polling schedule.
119
+
102
120
  ### Run channels from the daemon
103
121
 
104
122
  ```bash
@@ -217,7 +235,7 @@ idle daemon returns `initialized: false` with an empty snapshot. Once a
217
235
  session is alive they switch to `initialized: true` and surface the real
218
236
  state.
219
237
 
220
- To update workspace Skill settings by name, call `POST /workspace/skills/:name/enable` with `{ "enabled": true | false }` after checking the `workspace_skill_settings_toggle` capability. To change several names, check `workspace_skill_settings_batch_toggle` and call `POST /workspace/skills/enable` with `{ "skillNames": ["review", "deploy"], "enabled": false }`; it processes every structurally valid name together, persists all resulting declaration changes in at most one locked settings write, and refreshes active ACP sessions once when anything changed. These routes write workspace `skills.disabled` and `skills.enabled` without consulting the loaded Skill catalog, so names may be disabled before installation or while their Extension is inactive. Enabling removes a matching workspace disable and records an explicit `skills.enabled` opt-in, even before installation, so this entry can override an Extension's internal Skill disablement. Repeating the same declaration is a no-op (`changed: false`). Their paths and request bodies are unchanged; the settings-specific capabilities replace the retired catalog-validated Skill toggle tags. The batch `errors` array remains for wire compatibility and is empty for structurally valid names. A hard `skills.disabled` entry inherited from a higher scope remains authoritative for effective availability, but does not block the workspace from recording or removing its own declaration. Skill status cells expose `disabledReason` (`hard`, `default`, or `inactive_extension`) and an optional `lockedScope`. Untrusted workspace writes are still rejected. A `deferred` response means no child was live at the liveness check or a changed request lost its child/session during the required refresh; when `changed` is true, the persisted declaration applies when a child starts. Whether a declaration actually changed is reported by `changed` (on each result for a batch request). `skills.disabled` disables both manual and model use, unlike `disable-model-invocation: true`, which keeps direct `/skill-name` invocation available. For V2 Extension batches, check `extension_batch_activation_v2`: `PUT /extensions/activation` changes global defaults, while `PUT /workspaces/:workspace/extensions/activation` changes exact overrides for the selected workspace and accepts `"inherit"` to clear them. Both accept names in `extensionNames`; `enabled` and `disabled` may be declared before installation, while `inherit` for an unknown name is a no-op. Each request returns one operation to poll.
238
+ To update workspace Skill settings by name, call `POST /workspace/skills/:name/enable` with `{ "enabled": true | false }` after checking the `workspace_skill_settings_toggle` capability. To change several names, check `workspace_skill_settings_batch_toggle` and call `POST /workspace/skills/enable` with `{ "skillNames": ["review", "deploy"], "enabled": false }`; it processes every structurally valid name together, persists all resulting declaration changes in at most one locked settings write, and refreshes active ACP sessions once when anything changed. These routes write workspace `skills.disabled` and `skills.enabled` without consulting the loaded Skill catalog, so names may be disabled before installation or while their Extension is inactive. Enabling removes a matching workspace disable and records an explicit `skills.enabled` opt-in, even before installation, so this entry can override an Extension's internal Skill disablement. Repeating the same declaration is a no-op (`changed: false`). Their paths and request bodies are unchanged; the settings-specific capabilities replace the retired catalog-validated Skill toggle tags. The batch `errors` array remains for wire compatibility and is empty for structurally valid names. A hard `skills.disabled` entry inherited from a higher scope remains authoritative for effective availability, but does not block the workspace from recording or removing its own declaration. Skill status cells expose `disabledReason` (`hard`, `default`, or `inactive_extension`) and an optional `lockedScope`. Untrusted workspace writes are still rejected. A `deferred` response means no child was live at the liveness check or a changed request lost its child/session during the required refresh; when `changed` is true, the persisted declaration applies when a child starts. Whether a declaration actually changed is reported by `changed` (on each result for a batch request). `skills.disabled` disables both manual and model use, unlike `disable-model-invocation: true`, which keeps direct `/skill-name` invocation available. For V2 Extension batches, check `extension_batch_activation_v2`: `PUT /extensions/activation` changes global defaults, while `PUT /workspaces/:workspace/extensions/activation` changes exact overrides for the selected workspace and accepts `"inherit"` to clear them. Both accept names in `extensionNames`; `enabled` and `disabled` may be declared before installation, while `inherit` for an unknown name is a no-op. Each request returns one operation to poll. When `extension_activation_explicit_refresh` is advertised, that operation finishes after the activation policy is committed and does not directly refresh active sessions. To apply it immediately, submit the independent primary or workspace-qualified Extension refresh after activation succeeds. Without that explicit refresh, other workspaces can continue using the previous activation for up to the next 30-second generation-reconciler pass; failed reconciliation is retried by later passes.
221
239
 
222
240
  `GET /workspace/env` and `GET /workspace/preflight` always answer with
223
241
  `initialized: true` regardless of ACP state. `env` never consults ACP
@@ -14,34 +14,34 @@ import "./chunk-47ECGEJC.js";
14
14
  import "./chunk-2MIN6GRR.js";
15
15
  import "./chunk-QHTIBUWB.js";
16
16
  import "./chunk-RKUWKYED.js";
17
- import "./chunk-TXAEXF2B.js";
17
+ import "./chunk-BL6B2QS2.js";
18
18
  import "./chunk-GELRJXE2.js";
19
19
  import "./chunk-32CM56LO.js";
20
- import "./chunk-C7M445SS.js";
20
+ import "./chunk-G5QLLD53.js";
21
21
  import "./chunk-2EKVPSIJ.js";
22
22
  import "./chunk-LJZSMWOH.js";
23
- import "./chunk-E4VX6LXB.js";
24
- import "./chunk-RSU3I6UL.js";
23
+ import "./chunk-YZTGGCEE.js";
24
+ import "./chunk-DCPRCDSR.js";
25
25
  import "./chunk-DJXSOEFB.js";
26
- import "./chunk-KTLT7VCX.js";
26
+ import "./chunk-LN3WBOKU.js";
27
27
  import "./chunk-J3VZF2AL.js";
28
28
  import "./chunk-OWCFKIFQ.js";
29
29
  import "./chunk-ZPJWUGCS.js";
30
30
  import "./chunk-5Z4FCEPY.js";
31
31
  import "./chunk-BUQN5LTI.js";
32
- import "./chunk-VU7O7CGQ.js";
33
- import "./chunk-SD7Y2PMC.js";
32
+ import "./chunk-XDNFODER.js";
33
+ import "./chunk-XI7RST4D.js";
34
34
  import "./chunk-VNOVK4I7.js";
35
- import "./chunk-TSLRORQR.js";
35
+ import "./chunk-43CI6YWJ.js";
36
36
  import "./chunk-GOFAQQZA.js";
37
- import "./chunk-3K65MUKD.js";
37
+ import "./chunk-65I7S4Z3.js";
38
38
  import "./chunk-6HUXPLB5.js";
39
39
  import "./chunk-TWPJO254.js";
40
40
  import "./chunk-CQ35AJ4Z.js";
41
41
  import "./chunk-YHDGABDC.js";
42
42
  import "./chunk-LYT2OU7D.js";
43
43
  import "./chunk-B54PFQS5.js";
44
- import "./chunk-ERMAXPXA.js";
44
+ import "./chunk-HIXUUCGY.js";
45
45
  import "./chunk-6PVPNMXU.js";
46
46
  import "./chunk-565U2ANU.js";
47
47
  import "./chunk-FDOGGKAA.js";
@@ -59,26 +59,26 @@ import "./chunk-BF3RUIVP.js";
59
59
  import "./chunk-JX6XHPTX.js";
60
60
  import "./chunk-CLKE4IY3.js";
61
61
  import "./chunk-ZSTCM3MX.js";
62
- import "./chunk-NXWYCSPL.js";
62
+ import "./chunk-SOA4HKRJ.js";
63
63
  import "./chunk-MLXTMF7H.js";
64
- import "./chunk-OFB36ZBA.js";
64
+ import "./chunk-3LPJ776W.js";
65
65
  import "./chunk-3CZ2BQV6.js";
66
66
  import "./chunk-PQEISIKS.js";
67
- import "./chunk-3K456UJF.js";
67
+ import "./chunk-VF6D6EGV.js";
68
68
  import "./chunk-H3Q3RSKZ.js";
69
69
  import "./chunk-S6LOFUVP.js";
70
70
  import "./chunk-NAVJD2PQ.js";
71
- import "./chunk-UKADFFL2.js";
72
- import "./chunk-EJNYBDYC.js";
71
+ import "./chunk-OFVAS4AR.js";
72
+ import "./chunk-HNLMYDQE.js";
73
73
  import "./chunk-QHMLYMMS.js";
74
74
  import "./chunk-CFKIH3D3.js";
75
- import "./chunk-2LD5U7Q3.js";
75
+ import "./chunk-6YEOCHSE.js";
76
76
  import "./chunk-DJ2GSRLV.js";
77
- import "./chunk-W4LL5RZO.js";
78
- import "./chunk-3UMWOKJC.js";
77
+ import "./chunk-4ALNJDHL.js";
78
+ import "./chunk-NOO4QFXM.js";
79
79
  import "./chunk-KFFCDLKV.js";
80
80
  import "./chunk-7OCIQNKX.js";
81
- import "./chunk-WQBR7LN5.js";
81
+ import "./chunk-OIPUQE3S.js";
82
82
  import "./chunk-5ETULJLP.js";
83
83
  import "./chunk-XBVNNDPK.js";
84
84
  import "./chunk-VGC4I5JJ.js";
@@ -88,7 +88,7 @@ import "./chunk-HD7O6WLV.js";
88
88
  import "./chunk-WZAD4ZNJ.js";
89
89
  import "./chunk-FPGTNKCP.js";
90
90
  import "./chunk-TIGXX4PA.js";
91
- import "./chunk-PLUAIHZO.js";
91
+ import "./chunk-DTB5BXRG.js";
92
92
  import "./chunk-XFFRI3WM.js";
93
93
  import "./chunk-4HOEU2OR.js";
94
94
  import "./chunk-HHJLM3WQ.js";
@@ -4,16 +4,16 @@ import {
4
4
  ConfigContext,
5
5
  SessionPicker,
6
6
  SettingsContext
7
- } from "./chunk-B5FF3LRF.js";
8
- import "./chunk-KP5QK3FB.js";
9
- import "./chunk-T7TP5UQL.js";
7
+ } from "./chunk-WIRYFL2L.js";
8
+ import "./chunk-VH764G6B.js";
9
+ import "./chunk-ULY4ISY2.js";
10
10
  import {
11
11
  KeypressProvider
12
- } from "./chunk-AWDF462I.js";
13
- import "./chunk-VYCJITND.js";
14
- import "./chunk-I67KJGM6.js";
12
+ } from "./chunk-5GD7LYOH.js";
13
+ import "./chunk-QJAFSFYA.js";
14
+ import "./chunk-W3ONSAYO.js";
15
15
  import "./chunk-3SH53ANB.js";
16
- import "./chunk-HY3DXYZK.js";
16
+ import "./chunk-UYDQYDW2.js";
17
17
  import "./chunk-4WGODMVR.js";
18
18
  import "./chunk-KW7NOTN6.js";
19
19
  import "./chunk-2UWQX4FP.js";
@@ -30,59 +30,59 @@ import {
30
30
  import {
31
31
  require_react
32
32
  } from "./chunk-5QWWOFGG.js";
33
- import "./chunk-YLFICBYK.js";
34
- import "./chunk-22QOQKG4.js";
33
+ import "./chunk-VEQBVJYH.js";
34
+ import "./chunk-CG2PDIGD.js";
35
35
  import "./chunk-WXFCI3O5.js";
36
36
  import "./chunk-XQ4RDO5B.js";
37
37
  import "./chunk-EKTCKZV5.js";
38
- import "./chunk-37SOBIA3.js";
38
+ import "./chunk-ERXNTINK.js";
39
39
  import "./chunk-47ECGEJC.js";
40
40
  import "./chunk-2MIN6GRR.js";
41
41
  import "./chunk-QHTIBUWB.js";
42
42
  import "./chunk-57OAHC2Y.js";
43
- import "./chunk-UTVIIA7N.js";
44
- import "./chunk-RUMSY4ES.js";
45
- import "./chunk-QW7BUOSI.js";
43
+ import "./chunk-NVS4Z6GT.js";
44
+ import "./chunk-Q2F43WTJ.js";
45
+ import "./chunk-MWEF5MUK.js";
46
46
  import "./chunk-RKUWKYED.js";
47
47
  import "./chunk-BW4333PP.js";
48
48
  import "./chunk-IDS7MSUP.js";
49
- import "./chunk-LD53HMPV.js";
49
+ import "./chunk-CRZBDVP2.js";
50
50
  import "./chunk-5EJZE3FP.js";
51
- import "./chunk-4OCYWXKF.js";
52
- import "./chunk-NUQFUXOG.js";
53
- import "./chunk-GEV66YGE.js";
51
+ import "./chunk-Y6ZWXM44.js";
52
+ import "./chunk-QTNCGZHQ.js";
53
+ import "./chunk-7RXOEUFF.js";
54
54
  import "./chunk-NPQ5ZKRP.js";
55
55
  import "./chunk-MR3PXB6E.js";
56
- import "./chunk-TXAEXF2B.js";
56
+ import "./chunk-BL6B2QS2.js";
57
57
  import "./chunk-GELRJXE2.js";
58
58
  import "./chunk-32CM56LO.js";
59
- import "./chunk-C7M445SS.js";
59
+ import "./chunk-G5QLLD53.js";
60
60
  import "./chunk-2EKVPSIJ.js";
61
61
  import "./chunk-LJZSMWOH.js";
62
- import "./chunk-E4VX6LXB.js";
63
- import "./chunk-RSU3I6UL.js";
62
+ import "./chunk-YZTGGCEE.js";
63
+ import "./chunk-DCPRCDSR.js";
64
64
  import "./chunk-DJXSOEFB.js";
65
- import "./chunk-KTLT7VCX.js";
65
+ import "./chunk-LN3WBOKU.js";
66
66
  import "./chunk-J3VZF2AL.js";
67
67
  import "./chunk-OWCFKIFQ.js";
68
68
  import "./chunk-ZPJWUGCS.js";
69
69
  import "./chunk-5Z4FCEPY.js";
70
70
  import "./chunk-BUQN5LTI.js";
71
- import "./chunk-VU7O7CGQ.js";
72
- import "./chunk-SD7Y2PMC.js";
71
+ import "./chunk-XDNFODER.js";
72
+ import "./chunk-XI7RST4D.js";
73
73
  import "./chunk-VNOVK4I7.js";
74
74
  import {
75
75
  SessionService
76
- } from "./chunk-TSLRORQR.js";
76
+ } from "./chunk-43CI6YWJ.js";
77
77
  import "./chunk-GOFAQQZA.js";
78
- import "./chunk-3K65MUKD.js";
78
+ import "./chunk-65I7S4Z3.js";
79
79
  import "./chunk-6HUXPLB5.js";
80
80
  import "./chunk-TWPJO254.js";
81
81
  import "./chunk-CQ35AJ4Z.js";
82
82
  import "./chunk-YHDGABDC.js";
83
83
  import "./chunk-LYT2OU7D.js";
84
84
  import "./chunk-B54PFQS5.js";
85
- import "./chunk-ERMAXPXA.js";
85
+ import "./chunk-HIXUUCGY.js";
86
86
  import "./chunk-6PVPNMXU.js";
87
87
  import "./chunk-565U2ANU.js";
88
88
  import "./chunk-FDOGGKAA.js";
@@ -100,28 +100,28 @@ import "./chunk-BF3RUIVP.js";
100
100
  import "./chunk-JX6XHPTX.js";
101
101
  import "./chunk-CLKE4IY3.js";
102
102
  import "./chunk-ZSTCM3MX.js";
103
- import "./chunk-NXWYCSPL.js";
103
+ import "./chunk-SOA4HKRJ.js";
104
104
  import "./chunk-MLXTMF7H.js";
105
- import "./chunk-OFB36ZBA.js";
105
+ import "./chunk-3LPJ776W.js";
106
106
  import {
107
107
  getGitBranch
108
108
  } from "./chunk-3CZ2BQV6.js";
109
109
  import "./chunk-PQEISIKS.js";
110
- import "./chunk-3K456UJF.js";
110
+ import "./chunk-VF6D6EGV.js";
111
111
  import "./chunk-H3Q3RSKZ.js";
112
112
  import "./chunk-S6LOFUVP.js";
113
113
  import "./chunk-NAVJD2PQ.js";
114
- import "./chunk-UKADFFL2.js";
115
- import "./chunk-EJNYBDYC.js";
114
+ import "./chunk-OFVAS4AR.js";
115
+ import "./chunk-HNLMYDQE.js";
116
116
  import "./chunk-QHMLYMMS.js";
117
117
  import "./chunk-CFKIH3D3.js";
118
- import "./chunk-2LD5U7Q3.js";
118
+ import "./chunk-6YEOCHSE.js";
119
119
  import "./chunk-DJ2GSRLV.js";
120
- import "./chunk-W4LL5RZO.js";
121
- import "./chunk-3UMWOKJC.js";
120
+ import "./chunk-4ALNJDHL.js";
121
+ import "./chunk-NOO4QFXM.js";
122
122
  import "./chunk-KFFCDLKV.js";
123
123
  import "./chunk-7OCIQNKX.js";
124
- import "./chunk-WQBR7LN5.js";
124
+ import "./chunk-OIPUQE3S.js";
125
125
  import "./chunk-5ETULJLP.js";
126
126
  import "./chunk-XBVNNDPK.js";
127
127
  import "./chunk-VGC4I5JJ.js";
@@ -131,7 +131,7 @@ import "./chunk-HD7O6WLV.js";
131
131
  import "./chunk-WZAD4ZNJ.js";
132
132
  import "./chunk-FPGTNKCP.js";
133
133
  import "./chunk-TIGXX4PA.js";
134
- import "./chunk-PLUAIHZO.js";
134
+ import "./chunk-DTB5BXRG.js";
135
135
  import "./chunk-XFFRI3WM.js";
136
136
  import "./chunk-4HOEU2OR.js";
137
137
  import "./chunk-HHJLM3WQ.js";
@@ -144,7 +144,7 @@ import "./chunk-G6UUOCUT.js";
144
144
  import "./chunk-IZ2U57NY.js";
145
145
  import "./chunk-MWIO7MF6.js";
146
146
  import "./chunk-ZAFYHRVY.js";
147
- import "./chunk-HPE4LEWX.js";
147
+ import "./chunk-JDPBJIKI.js";
148
148
  import {
149
149
  writeStdoutLine
150
150
  } from "./chunk-7FA2II6K.js";
@@ -9,8 +9,8 @@ import {
9
9
  markAcpStartup,
10
10
  recordAcpConfigStartupEvent,
11
11
  resetAcpStartupProfilerForTesting
12
- } from "./chunk-IMWCUWQT.js";
13
- import "./chunk-Z6KFLEG7.js";
12
+ } from "./chunk-J3TJH52D.js";
13
+ import "./chunk-PSPAM24S.js";
14
14
  import "./chunk-5O2XNYP6.js";
15
15
  import "./chunk-J2S4EL5Y.js";
16
16
  export {