@qwen-code/qwen-code 0.23.2 → 0.23.3-nightly.20260911.aaa6a32aae

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 (419) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/goal-draft/SKILL.md +10 -10
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -28
  5. package/bundled/qc-helper/docs/configuration/settings.md +8 -3
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +0 -20
  8. package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
  9. package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
  10. package/bundled/qc-helper/docs/features/commands.md +62 -9
  11. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  12. package/bundled/qc-helper/docs/features/cross-session-protocol.md +338 -0
  13. package/bundled/qc-helper/docs/features/goals.md +22 -18
  14. package/bundled/qc-helper/docs/features/hooks.md +28 -22
  15. package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +23 -6
  17. package/bundled/review/SKILL.md +93 -80
  18. package/bundled/review/references/persistence.md +2 -0
  19. package/bundled/review/references/posting.md +31 -14
  20. package/bundled/workflow-authoring/SKILL.md +410 -0
  21. package/bundled/workflow-creator/SKILL.md +1 -1
  22. package/chunks/{MaxSizedBox-4C3BKKKY.js → MaxSizedBox-7C5XTBZI.js} +64 -53
  23. package/chunks/{StandaloneSessionPicker-TXVF65YW.js → StandaloneSessionPicker-IGTT3ZRX.js} +88 -76
  24. package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
  25. package/chunks/acp-subagent-executor-IUHVNVVO.js +140 -0
  26. package/chunks/{acpAgent-H5XBKGB4.js → acpAgent-W43WM2K4.js} +957 -243
  27. package/chunks/{agent-T5LEFJIU.js → agent-2XMXC5JW.js} +48 -38
  28. package/chunks/{agent-headless-VZKSRH36.js → agent-headless-2HHBVCP6.js} +48 -38
  29. package/chunks/{anthropicContentGenerator-PRJWWVYJ.js → anthropicContentGenerator-7RI3MPIW.js} +69 -36
  30. package/chunks/{artifact-tool-G5LHNECG.js → artifact-tool-HHVHCPNG.js} +59 -109
  31. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-RFMXTD3B.js} +2 -2
  32. package/chunks/{bridge-AOX5IY44.js → bridge-ID6N4IH5.js} +69 -58
  33. package/chunks/{ca-KC2AISNS.js → ca-MX3WCEEG.js} +1 -1
  34. package/chunks/{channel-management-service-MWQGHPAS.js → channel-management-service-ASCXI7FR.js} +6 -6
  35. package/chunks/{channel-settings-store-XZCGDGHW.js → channel-settings-store-TPJFQAZY.js} +76 -65
  36. package/chunks/{channel-worker-group-SQ5FRWOH.js → channel-worker-group-JR6JOELM.js} +9 -9
  37. package/chunks/{channel-worker-manager-TU4ZNWOE.js → channel-worker-manager-AVKJEZFL.js} +19 -10
  38. package/chunks/{channel-worker-supervisor-EMITFMCP.js → channel-worker-supervisor-OOYY7BAQ.js} +7 -7
  39. package/chunks/{chunk-4WMGYG3F.js → chunk-22FWWGSM.js} +2 -2
  40. package/chunks/{chunk-LWX4WDFF.js → chunk-2S5RIGZJ.js} +43 -15
  41. package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
  42. package/chunks/{chunk-HJ5UJQQL.js → chunk-2UKKQGRA.js} +3639 -1804
  43. package/chunks/{chunk-MWIO7MF6.js → chunk-2WSLXP3W.js} +4 -0
  44. package/chunks/{chunk-HNLMYDQE.js → chunk-33LYAC4R.js} +10 -6
  45. package/chunks/{chunk-VBLAI2HA.js → chunk-3FPYT6QC.js} +0 -31
  46. package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
  47. package/chunks/{chunk-WXFCI3O5.js → chunk-3MAUPOZ4.js} +2 -2
  48. package/chunks/{chunk-CRZBDVP2.js → chunk-432JQKIO.js} +10 -10
  49. package/chunks/{chunk-IRGDIDGJ.js → chunk-43RQ552L.js} +364 -84
  50. package/chunks/{chunk-PFKGV6PO.js → chunk-465USTVK.js} +9 -15
  51. package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
  52. package/chunks/{chunk-J3VZF2AL.js → chunk-4O2AXZXU.js} +2 -2
  53. package/chunks/{chunk-N6S3NUYJ.js → chunk-55VOWZ4C.js} +1 -1
  54. package/chunks/{chunk-OWCFKIFQ.js → chunk-5CZMWDJI.js} +2 -2
  55. package/chunks/{chunk-7NDZKE2M.js → chunk-5MUIHID6.js} +5 -5
  56. package/chunks/{chunk-RM244SCQ.js → chunk-5Z74GE4N.js} +1 -1
  57. package/chunks/{chunk-G5VOXCRX.js → chunk-6375QMAO.js} +2 -2
  58. package/chunks/{chunk-3LPJ776W.js → chunk-63GQZKXL.js} +164 -31
  59. package/chunks/{chunk-O2FEO2CB.js → chunk-6GDELAVL.js} +18 -2
  60. package/chunks/{chunk-7PD7ZMX5.js → chunk-6HI2I3OM.js} +168 -6
  61. package/chunks/{chunk-CALNF3Z3.js → chunk-7C57HCOR.js} +1 -1
  62. package/chunks/{chunk-UYDQYDW2.js → chunk-7IBS746B.js} +1 -1
  63. package/chunks/{chunk-AUTUFD5X.js → chunk-ABNX6E6K.js} +1 -1
  64. package/chunks/chunk-ACHCT36C.js +28 -0
  65. package/chunks/{chunk-2WC3Y7YY.js → chunk-AEY27Z35.js} +401 -23
  66. package/chunks/{chunk-AO2VMS72.js → chunk-AQFRRH73.js} +3 -3
  67. package/chunks/{chunk-PDN7FJZV.js → chunk-ASWEMQIZ.js} +4 -4
  68. package/chunks/chunk-AYEJOTIU.js +43 -0
  69. package/chunks/{chunk-QFJZAY7W.js → chunk-BKFRA4F5.js} +5 -5
  70. package/chunks/{chunk-KCF2436G.js → chunk-BNLW5N6U.js} +4 -4
  71. package/chunks/{chunk-GOKAOSCN.js → chunk-BRFOZEPA.js} +2 -2
  72. package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
  73. package/chunks/chunk-C5CECJ46.js +340 -0
  74. package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
  75. package/chunks/chunk-CAAMI77K.js +937 -0
  76. package/chunks/{chunk-QTB4VP4K.js → chunk-CBGHRAWM.js} +304 -23
  77. package/chunks/chunk-CF5KXZZX.js +150 -0
  78. package/chunks/chunk-CFMZLE3L.js +75 -0
  79. package/chunks/{chunk-TGNNLRC3.js → chunk-CJ3DHN5I.js} +1 -0
  80. package/chunks/{chunk-ERXNTINK.js → chunk-CQZJYGRX.js} +1 -1
  81. package/chunks/{chunk-WBU2PIZ5.js → chunk-CSDKDHWV.js} +23 -16
  82. package/chunks/{chunk-2EKVPSIJ.js → chunk-D754KKNZ.js} +9 -2
  83. package/chunks/{chunk-E6TI726I.js → chunk-DGC7BKEZ.js} +1 -1
  84. package/chunks/{chunk-7SVM3RP2.js → chunk-DMMOQWRF.js} +4 -6
  85. package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
  86. package/chunks/{chunk-2BMXHB6N.js → chunk-DWBNQR53.js} +7 -7
  87. package/chunks/{chunk-ZN5TKAVR.js → chunk-E5LTUWKZ.js} +3 -3
  88. package/chunks/chunk-EGW3ZP6Y.js +32 -0
  89. package/chunks/chunk-ELRMZTPF.js +374 -0
  90. package/chunks/{chunk-RNAJVXUG.js → chunk-ENAUXRPG.js} +6 -6
  91. package/chunks/{chunk-WXD7INFV.js → chunk-EO4U2X47.js} +10 -8
  92. package/chunks/{chunk-WDVV3LRM.js → chunk-EPVEPTI3.js} +45 -152
  93. package/chunks/chunk-ERU3SDXT.js +27 -0
  94. package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
  95. package/chunks/{chunk-GSFV5RQW.js → chunk-EYN3G5XD.js} +328 -4
  96. package/chunks/{chunk-QB3KS3N3.js → chunk-FGROOEKM.js} +5 -40
  97. package/chunks/{chunk-TOOOLHVS.js → chunk-FH5AVEWJ.js} +3 -3
  98. package/chunks/{chunk-DAI65CMX.js → chunk-FJZWRNEW.js} +1 -1
  99. package/chunks/{chunk-GNY7B3CA.js → chunk-FUQK5ZNL.js} +1 -1
  100. package/chunks/{chunk-GOEVQADN.js → chunk-GDIPPCW6.js} +330 -175
  101. package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
  102. package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
  103. package/chunks/{chunk-ELD3OBPU.js → chunk-GWOVD63C.js} +3 -3
  104. package/chunks/{chunk-IWABUX6T.js → chunk-GX5FF2IE.js} +6 -6
  105. package/chunks/{chunk-22GORRNY.js → chunk-GZMNHAYC.js} +1 -1
  106. package/chunks/{chunk-YZTGGCEE.js → chunk-H3TFIFX3.js} +1 -1
  107. package/chunks/{chunk-6G4V7SE4.js → chunk-HG46TTAG.js} +1 -1
  108. package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
  109. package/chunks/{chunk-KEPC5BOL.js → chunk-IBRQG2MP.js} +12 -15
  110. package/chunks/{chunk-OXR34GCD.js → chunk-IILWL3KY.js} +2054 -146
  111. package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
  112. package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
  113. package/chunks/{chunk-CMWU6P4D.js → chunk-IRJRB3OD.js} +1 -1
  114. package/chunks/{chunk-QHLHE2OT.js → chunk-IUN5ZMFY.js} +1 -1
  115. package/chunks/{chunk-LYT2OU7D.js → chunk-IXXV6BVB.js} +172 -6
  116. package/chunks/{chunk-R3JIDRUL.js → chunk-J6H4JP25.js} +4 -4
  117. package/chunks/{chunk-NB3NDQQK.js → chunk-J6SBP5G2.js} +1 -1
  118. package/chunks/{chunk-TRQNRP2H.js → chunk-J7LBAKDH.js} +46 -3
  119. package/chunks/{chunk-67XTVRVB.js → chunk-JJFHISXU.js} +30 -25
  120. package/chunks/chunk-JL6APGBX.js +43 -0
  121. package/chunks/{chunk-NX7ZTXFF.js → chunk-JSKEW4E7.js} +2 -1
  122. package/chunks/{chunk-BK7D2JR6.js → chunk-JVTXAA35.js} +3 -3
  123. package/chunks/chunk-K2OJUPOE.js +78 -0
  124. package/chunks/{chunk-G3ZUMSFS.js → chunk-K3U6VB3O.js} +6 -6
  125. package/chunks/{chunk-4I3WFI3U.js → chunk-K4KWLF7Q.js} +12 -12
  126. package/chunks/{chunk-WXPPUPHM.js → chunk-KWFFJ6AK.js} +1 -1
  127. package/chunks/{chunk-46MMBZHI.js → chunk-KZYOFJ6V.js} +4 -4
  128. package/chunks/{chunk-ULZECEIP.js → chunk-LDQHA6L4.js} +2 -20
  129. package/chunks/{chunk-7LTCFO6T.js → chunk-LQBAFO5D.js} +6 -5
  130. package/chunks/{chunk-SOA4HKRJ.js → chunk-LT2XFADM.js} +2 -2
  131. package/chunks/{chunk-JYGIJA4W.js → chunk-LWWRJRCD.js} +1 -1
  132. package/chunks/{chunk-YQGW3M6Z.js → chunk-MFQWRBFB.js} +5 -5
  133. package/chunks/{chunk-TODNHE76.js → chunk-MUFGTWQH.js} +5 -5
  134. package/chunks/{chunk-5DQ4YTIZ.js → chunk-MV5XRRML.js} +3 -3
  135. package/chunks/{chunk-IR6JKBAP.js → chunk-NOUK63IR.js} +2 -2
  136. package/chunks/{chunk-XQ4RDO5B.js → chunk-NV77SEX3.js} +1 -1
  137. package/chunks/{chunk-OFVAS4AR.js → chunk-NWDPOFJI.js} +2 -2
  138. package/chunks/chunk-NY6OPAPS.js +820 -0
  139. package/chunks/{chunk-WDN64MVT.js → chunk-O5VX66FB.js} +127 -18
  140. package/chunks/{chunk-MV5DTLJV.js → chunk-OHCR4O3U.js} +1 -1
  141. package/chunks/{chunk-LEAOJ43M.js → chunk-OKOPKQ2X.js} +1310 -2107
  142. package/chunks/{chunk-B25JYXZE.js → chunk-ONLJBOI2.js} +971 -17
  143. package/chunks/{chunk-QQK4L3UU.js → chunk-OWUAZXXN.js} +132 -26
  144. package/chunks/{chunk-R457KFV7.js → chunk-P42IUOAO.js} +3 -3
  145. package/chunks/{chunk-LUNC5KCL.js → chunk-PRELUGCQ.js} +214 -39
  146. package/chunks/{chunk-5OZUKLL7.js → chunk-QSMQKTXV.js} +4 -4
  147. package/chunks/{chunk-FAJPLSYF.js → chunk-QTQYLQ5A.js} +85 -81
  148. package/chunks/{chunk-CALTQWTZ.js → chunk-QVZDV4ZS.js} +2 -2
  149. package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
  150. package/chunks/{chunk-KFECPHLV.js → chunk-RBWAGV73.js} +3 -3
  151. package/chunks/{chunk-4VY3ITHR.js → chunk-RF5RQRTD.js} +3 -3
  152. package/chunks/{chunk-HIXUUCGY.js → chunk-RPMXMR6U.js} +2 -2
  153. package/chunks/{chunk-3OAXF3UK.js → chunk-RRQEZBL2.js} +3756 -1343
  154. package/chunks/{chunk-4ALNJDHL.js → chunk-RSGEAWFJ.js} +19 -1
  155. package/chunks/{chunk-5BH2AIEY.js → chunk-RUE62UH6.js} +2 -2
  156. package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
  157. package/chunks/{chunk-A7EFXK7P.js → chunk-SAOJHRWY.js} +2 -2
  158. package/chunks/{chunk-JO77FGNZ.js → chunk-SDUIETBG.js} +19 -7
  159. package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
  160. package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
  161. package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
  162. package/chunks/{chunk-XDNFODER.js → chunk-TUIW5LLK.js} +1 -1
  163. package/chunks/{chunk-APXIW2TF.js → chunk-TVV5FA3G.js} +4 -4
  164. package/chunks/chunk-U6H3XTFA.js +95 -0
  165. package/chunks/{chunk-S5QR6CB5.js → chunk-UKMWZ5NS.js} +108 -887
  166. package/chunks/{chunk-U6REWGVR.js → chunk-VG2BRSEK.js} +2 -2
  167. package/chunks/chunk-VGBOJH2D.js +127 -0
  168. package/chunks/chunk-VGY2RGXL.js +100 -0
  169. package/chunks/{chunk-ZP5XDLSA.js → chunk-VLWG3EHY.js} +12 -12
  170. package/chunks/{chunk-4JNHNVAZ.js → chunk-W547PYQ7.js} +9 -4
  171. package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
  172. package/chunks/{chunk-QAZ2MGYT.js → chunk-W7JJLUSB.js} +2 -2
  173. package/chunks/{chunk-CCBTNJB4.js → chunk-W7Q7XDQI.js} +39 -27
  174. package/chunks/{chunk-DARWOZY6.js → chunk-WD6YQI5M.js} +1 -1
  175. package/chunks/{chunk-F2NYVASI.js → chunk-WXAWG3JS.js} +30 -13
  176. package/chunks/{chunk-NPKCVSXX.js → chunk-XB5JRCAM.js} +11 -9
  177. package/chunks/{chunk-XSOXPG2L.js → chunk-XE46RQFI.js} +136 -8
  178. package/chunks/{chunk-QTNCGZHQ.js → chunk-XX5HQLCZ.js} +16 -0
  179. package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
  180. package/chunks/chunk-YC6XOB5N.js +691 -0
  181. package/chunks/{chunk-CWVZBIZJ.js → chunk-YDW4ERSS.js} +1 -1
  182. package/chunks/{chunk-TRWQQBVH.js → chunk-YGCTOXUT.js} +10 -24
  183. package/chunks/{chunk-WK7P62DV.js → chunk-YKC67ZEF.js} +6 -6
  184. package/chunks/{chunk-KA5HR3G2.js → chunk-YKM6MITI.js} +5 -5
  185. package/chunks/{chunk-X7LFJF5D.js → chunk-YM6KUQ2S.js} +36 -84
  186. package/chunks/{chunk-HZ2HUXX7.js → chunk-YS2ZJSOA.js} +29 -12
  187. package/chunks/{chunk-G37O7YO6.js → chunk-ZAWM6KRF.js} +3 -3
  188. package/chunks/{chunk-H3Q3RSKZ.js → chunk-ZFIWHBJ3.js} +1 -1
  189. package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
  190. package/chunks/{chunk-YLOHCA6I.js → chunk-ZKWO4CF4.js} +2 -2
  191. package/chunks/{chunk-VJJXG73H.js → chunk-ZMQL5BL5.js} +21 -6
  192. package/chunks/{chunk-FGHPZGOP.js → chunk-ZMUYBOYB.js} +39 -55
  193. package/chunks/{chunk-FV4DM2M4.js → chunk-ZNI3YJHS.js} +26 -6
  194. package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
  195. package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
  196. package/chunks/codex-subagent-executor-26XOHVKH.js +585 -0
  197. package/chunks/{config-utils-GPLIABL2.js → config-utils-JUG3MOYN.js} +68 -57
  198. package/chunks/{contextCommand-NCUQUDBY.js → contextCommand-6K3POZFA.js} +65 -54
  199. package/chunks/{core-runtime-WKYKWVYU.js → core-runtime-XQFZLA2V.js} +66 -55
  200. package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-4UJ6RM6W.js} +5 -2
  201. package/chunks/{create-sub-session-PPLXB3JJ.js → create-sub-session-T4IYIOC7.js} +178 -91
  202. package/chunks/{cron-create-GTPVMJCF.js → cron-create-6466RWSO.js} +2 -2
  203. package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-W4QUWHOA.js} +2 -2
  204. package/chunks/{cron-list-KTFKFDKC.js → cron-list-Q5LJ5PZE.js} +2 -2
  205. package/chunks/{daemon-2CKIAO3I.js → daemon-PHPJUXDZ.js} +4 -2
  206. package/chunks/{daemon-git-worktree-guard-73ZWOLKL.js → daemon-git-worktree-guard-5WEMZ64U.js} +65 -54
  207. package/chunks/{daemon-status-provider-OK7VONJG.js → daemon-status-provider-GMD7QD4T.js} +74 -63
  208. package/chunks/{daemon-trust-policy-CAUCREG2.js → daemon-trust-policy-IPBZES2Z.js} +71 -60
  209. package/chunks/{daemon-trust-policy-monitor-3Y36OOEQ.js → daemon-trust-policy-monitor-MHYEN7X7.js} +71 -60
  210. package/chunks/{de-UU2YTO37.js → de-OOLZAU2U.js} +1 -1
  211. package/chunks/{deferred-core-runtime-Q7WFWYD3.js → deferred-core-runtime-CY43FZNZ.js} +63 -52
  212. package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
  213. package/chunks/{display-image-CTNHJRZC.js → display-image-6AZIHP3J.js} +3 -3
  214. package/chunks/{dist-F34J4FZX.js → dist-2QYIVNS6.js} +2 -5
  215. package/chunks/{dist-6YDUH3BB.js → dist-GIMQXYLI.js} +10 -631
  216. package/chunks/{dist-NP7QKLVG.js → dist-GUB7QRYA.js} +3 -6
  217. package/chunks/{dist-Y5KC3IHW.js → dist-L45UB6DG.js} +233 -35
  218. package/chunks/{dist-XLV33CLY.js → dist-MPUZZOG5.js} +5 -18
  219. package/chunks/{dist-ZDNJK74R.js → dist-PA7WPFVE.js} +6 -37
  220. package/chunks/{dist-F6JLAJLE.js → dist-T6DDPDLQ.js} +16 -36
  221. package/chunks/{dist-BNQVF565.js → dist-TFGETXFN.js} +14 -37
  222. package/chunks/{dist-UFTFGI6I.js → dist-VDLSBCLM.js} +2 -6
  223. package/chunks/{edit-YJD6IETK.js → edit-6NUP5IPX.js} +48 -38
  224. package/chunks/{en-YJNRUQG4.js → en-ZSZW3PZX.js} +4 -1
  225. package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-EETDMJRF.js} +5 -5
  226. package/chunks/{enterPlanMode-EFPVTWIH.js → enterPlanMode-AZHYHEII.js} +48 -38
  227. package/chunks/{environment-HP3AXFTB.js → environment-ON6GIQ4F.js} +66 -55
  228. package/chunks/{errors-22ON46G7.js → errors-DQE63SCC.js} +65 -54
  229. package/chunks/exec-66WQIVYU.js +505 -0
  230. package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-DIPJ6S55.js} +5 -5
  231. package/chunks/{exitPlanMode-MOQUNCBH.js → exitPlanMode-NHBV6LAI.js} +48 -38
  232. package/chunks/{fast-path-2X7BPMXX.js → fast-path-EPJSUZZC.js} +7 -7
  233. package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-XDYX7X5Z.js} +2 -2
  234. package/chunks/{fr-HKNWVXRJ.js → fr-JJWM2HUS.js} +1 -1
  235. package/chunks/{glob-Y7ACIB3P.js → glob-MNEXQ2NV.js} +51 -41
  236. package/chunks/{goal-tools-DABMICUC.js → goal-tools-D2A4QBCJ.js} +54 -40
  237. package/chunks/{grep-BLHF2S5D.js → grep-EFWPV3MM.js} +2 -2
  238. package/chunks/{handleAutoUpdate-MCAMHYDI.js → handleAutoUpdate-2RY3OQA6.js} +67 -56
  239. package/chunks/{i18n-C3GDCALP.js → i18n-HTHDB3I7.js} +64 -53
  240. package/chunks/{image-gen-XP4NNIYG.js → image-gen-2PHED3P4.js} +8 -6
  241. package/chunks/{initializer-4URDQL2G.js → initializer-JEVLJCQA.js} +71 -60
  242. package/chunks/{installationInfo-LBOL6SBV.js → installationInfo-ITRB6J4L.js} +63 -52
  243. package/chunks/{ja-GJS5RZGU.js → ja-L67TXFDJ.js} +1 -1
  244. package/chunks/list-KOUIMHT5.js +133 -0
  245. package/chunks/{list-agents-2CXPGJUE.js → list-agents-IY4NEWLP.js} +17 -7
  246. package/chunks/{llm-2KPNSAVY.js → llm-F7WHGESY.js} +132 -120
  247. package/chunks/{llm-content-generator-GR3FOHLB.js → llm-content-generator-NYQ2NAVA.js} +6 -5
  248. package/chunks/{loadedSettingsAdapter-DVKROEJD.js → loadedSettingsAdapter-HZUAX5CX.js} +71 -60
  249. package/chunks/{loggingContentGenerator-P4K6K5W4.js → loggingContentGenerator-WMNU7C5J.js} +70 -59
  250. package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-ANX25YW2.js} +3 -3
  251. package/chunks/{ls-YV7RKLKY.js → ls-4XCMJNZF.js} +4 -4
  252. package/chunks/{lsp-NO3AMRZT.js → lsp-K5E2Y64R.js} +1 -1
  253. package/chunks/{managed-npm-update-VWBKHNIN.js → managed-npm-update-EJJB65QI.js} +63 -52
  254. package/chunks/mcp-I73R6HS3.js +127 -0
  255. package/chunks/{monitor-A255TNZR.js → monitor-T56GJNA4.js} +50 -40
  256. package/chunks/{nonInteractiveCli-LXGIKQAT.js → nonInteractiveCli-CKHHJ423.js} +120 -109
  257. package/chunks/{notebook-edit-5UYHS2DM.js → notebook-edit-W5TU3EZ3.js} +48 -38
  258. package/chunks/openai-WX26N5OJ.js +47 -0
  259. package/chunks/{openaiContentGenerator-A6MAMEO5.js → openaiContentGenerator-TH6YAWAH.js} +33 -25
  260. package/chunks/openaiResponsesContentGenerator-EWLWQPKS.js +1738 -0
  261. package/chunks/{pidfile-B7DZC4TP.js → pidfile-RCC6TCEM.js} +63 -52
  262. package/chunks/process-registry-X6ZCASEN.js +10 -0
  263. package/chunks/{processUtils-BPZ2MCZS.js → processUtils-DQDQBRMC.js} +2 -2
  264. package/chunks/{prompt-terminal-ledger-FYYTAOXS.js → prompt-terminal-ledger-2LXWAGWU.js} +64 -53
  265. package/chunks/{pt-FXMYXEUV.js → pt-77SBDL4B.js} +1 -1
  266. package/chunks/{qwenContentGenerator-4IOJFD4S.js → qwenContentGenerator-LG65Z2YV.js} +61 -49
  267. package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-PJ63CCFD.js} +7 -5
  268. package/chunks/{read-file-A4H4O3VQ.js → read-file-72HMRUT4.js} +12 -9
  269. package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-NPF44YSC.js} +1 -1
  270. package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-MDXCCW2J.js} +3 -3
  271. package/chunks/record-source-VJLKDGGR.js +22 -0
  272. package/chunks/{report-findings-TJ34R7QK.js → report-findings-CZTYMZTC.js} +4 -4
  273. package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-KOZHPVZU.js} +5 -5
  274. package/chunks/{resumeHistoryUtils-YQQ43E4N.js → resumeHistoryUtils-S2Q3M3EH.js} +69 -58
  275. package/chunks/{ripGrep-W32NWFTA.js → ripGrep-B2I3L5CO.js} +17 -13
  276. package/chunks/{ru-RMHURE5U.js → ru-UYWHKWF2.js} +1 -1
  277. package/chunks/{run-qwen-serve-WBSWWIRV.js → run-qwen-serve-AOPYFCVP.js} +305 -132
  278. package/chunks/{runtime-VRVBX2E5.js → runtime-TZMHKZAP.js} +77 -66
  279. package/chunks/{scheduled-tasks-D65KJDA3.js → scheduled-tasks-7RL6ZOYT.js} +72 -60
  280. package/chunks/{scheduler-M2YPN7Z7.js → scheduler-D6RLOFNU.js} +65 -54
  281. package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
  282. package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
  283. package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
  284. package/chunks/{send-message-76BKWKFZ.js → send-message-MMZVSS7P.js} +12 -9
  285. package/chunks/{serve-BE3H2P6P.js → serve-HWWDYI37.js} +72 -61
  286. package/chunks/{server-FLY5JERG.js → server-MD2X5U5L.js} +3156 -564
  287. package/chunks/{session-JVN62R5K.js → session-AFUMFNN7.js} +124 -113
  288. package/chunks/{session-attachments-root-7ACGLHXA.js → session-attachments-root-QPN3YWTY.js} +63 -52
  289. package/chunks/{session-pr-refresh-TQS57SDK.js → session-pr-refresh-4Y2ANMJX.js} +72 -60
  290. package/chunks/{settings-D44YMZFT.js → settings-QQRQ2LR7.js} +74 -63
  291. package/chunks/{shell-3VE6I4V5.js → shell-NUYUYMVI.js} +48 -38
  292. package/chunks/{skill-FHEGRRZU.js → skill-KHLDVOXW.js} +68 -30
  293. package/chunks/{skill-settings-VHEJMBFL.js → skill-settings-INLEGDEZ.js} +70 -59
  294. package/chunks/{spawnChannel-T6MX2ZDN.js → spawnChannel-KBGZHW2G.js} +67 -56
  295. package/chunks/{standalone-update-QUGHFMCS.js → standalone-update-3QP5NDVJ.js} +65 -54
  296. package/chunks/{start-opentui-ui-IHIIZ2LE.js → start-opentui-ui-VBT3XDWN.js} +2682 -2153
  297. package/chunks/{startInteractiveUI-LR7K2ARZ.js → startInteractiveUI-AZHKCHMR.js} +1562 -2317
  298. package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-KRASPDE3.js} +2 -2
  299. package/chunks/{task-create-MWXJFRRM.js → task-create-TNXNT7ZD.js} +8 -8
  300. package/chunks/{task-list-EYO3FE57.js → task-list-FHNIJDKT.js} +1 -1
  301. package/chunks/{task-stop-BFSKRTGV.js → task-stop-MG4ZMTEI.js} +1 -1
  302. package/chunks/{task-update-2JJJRHMT.js → task-update-4HU62CJT.js} +8 -8
  303. package/chunks/{team-create-GY3VFY47.js → team-create-K5DNSJXR.js} +50 -40
  304. package/chunks/{team-delete-IQZ6XGFI.js → team-delete-2T44GUNN.js} +1 -1
  305. package/chunks/{team-plan-approval-BQPGZOT5.js → team-plan-approval-2ZNAQT2A.js} +48 -38
  306. package/chunks/{terminal-image-renderer-YNYW5CQG.js → terminal-image-renderer-23CW4A6Q.js} +65 -54
  307. package/chunks/{theme-manager-U6CIK3GM.js → theme-manager-G2333AMH.js} +63 -52
  308. package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-BO2GR5MN.js} +4 -4
  309. package/chunks/{tool-search-XI3QWD5I.js → tool-search-MKQCKXN5.js} +22 -15
  310. package/chunks/{total-session-admission-3SNSJJ32.js → total-session-admission-ENKTM2KX.js} +69 -58
  311. package/chunks/{trustedFolders-OVAQKNV5.js → trustedFolders-2ETDL7OD.js} +64 -53
  312. package/chunks/{update-relaunch-XV5O74E3.js → update-relaunch-FMVNN5KA.js} +5 -5
  313. package/chunks/{updateCheck-CHUYWD6L.js → updateCheck-KWRV5KLJ.js} +66 -55
  314. package/chunks/{useAutoAcceptIndicator-VKSVIXZC.js → useAutoAcceptIndicator-7AUXAIQF.js} +73 -62
  315. package/chunks/{validateNonInterActiveAuth-ZNUTD3E5.js → validateNonInterActiveAuth-NETKLLDV.js} +117 -106
  316. package/chunks/{version-EK7VAGSI.js → version-DACNN2ZM.js} +1 -1
  317. package/chunks/{web-fetch-24KZO763.js → web-fetch-CIVCRET4.js} +16 -12
  318. package/chunks/{web-search-CRNXKZ2X.js → web-search-GOHZRGMM.js} +389 -327
  319. package/chunks/{web-shell-static-BFDESDD4.js → web-shell-static-T7UGLVE4.js} +2 -7
  320. package/chunks/workflow-IL2FOALZ.js +1324 -0
  321. package/chunks/workspace-providers-status-YGXL6N5U.js +131 -0
  322. package/chunks/{workspace-registration-store-HKLJEDQX.js → workspace-registration-store-E4IAOFFZ.js} +3 -1
  323. package/chunks/{workspace-registry-7RDDOBLN.js → workspace-registry-KX6BIBYK.js} +69 -58
  324. package/chunks/{workspace-runtime-coordinator-LEPDPXJO.js → workspace-runtime-coordinator-2KYYGDDR.js} +72 -59
  325. package/chunks/{workspace-service-5IFDCNN3.js → workspace-service-5Q6LWBYR.js} +76 -65
  326. package/chunks/{workspace-skills-status-FJ3HNH4H.js → workspace-skills-status-PJZTFPVV.js} +72 -61
  327. package/chunks/{workspace-trust-reconciler-PQFHIWLR.js → workspace-trust-reconciler-HS6PWNEA.js} +77 -66
  328. package/chunks/{write-file-ERG67ZFX.js → write-file-JB3DRM7O.js} +50 -40
  329. package/chunks/{zh-VBFCRQBL.js → zh-7UJA4ICT.js} +4 -1
  330. package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-RV24PWUI.js} +4 -1
  331. package/chunks/{zoom-image-WQYEC3SR.js → zoom-image-AVHQFOOQ.js} +12 -9
  332. package/cli.js +16 -16
  333. package/codeModeHost.js +4425 -0
  334. package/export-transcript-document.css +1 -0
  335. package/export-transcript-document.js +164 -165
  336. package/locales/ca.js +2 -2
  337. package/locales/de.js +2 -2
  338. package/locales/en.js +5 -2
  339. package/locales/fr.js +2 -2
  340. package/locales/ja.js +2 -2
  341. package/locales/pt.js +2 -2
  342. package/locales/ru.js +2 -2
  343. package/locales/zh-TW.js +5 -2
  344. package/locales/zh.js +5 -2
  345. package/package.json +6 -4
  346. package/web-shell/assets/{abnfDiagram-VCTEODGH-BRLgQbnT.js → abnfDiagram-VCTEODGH-BH2nK5Z_.js} +1 -1
  347. package/web-shell/assets/{arc-qAF9_XsR.js → arc-CUUQ6krv.js} +1 -1
  348. package/web-shell/assets/{architectureDiagram-5GKGNRK7-BorUttEz.js → architectureDiagram-5GKGNRK7-CJjiRuGx.js} +1 -1
  349. package/web-shell/assets/{blockDiagram-NRAW4CY4-Bj0qZVxu.js → blockDiagram-NRAW4CY4-GCDyU9ZX.js} +1 -1
  350. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BTqJis32.js → c4Diagram-UCG6FXSJ-C68MiN6h.js} +1 -1
  351. package/web-shell/assets/channel-DauVlmdF.js +1 -0
  352. package/web-shell/assets/{chunk-2Q5K7J3B-RrQ5X8m-.js → chunk-2Q5K7J3B-_8B6frXZ.js} +1 -1
  353. package/web-shell/assets/{chunk-5VM5RSS4-uUjDl8wO.js → chunk-5VM5RSS4-CroSinX7.js} +1 -1
  354. package/web-shell/assets/{chunk-F27PBJKO-C3JhpyzI.js → chunk-F27PBJKO-CGn4Z0Fx.js} +1 -1
  355. package/web-shell/assets/{chunk-G27WJ6UU-C8ZNFs7F.js → chunk-G27WJ6UU-BI5nLQcf.js} +1 -1
  356. package/web-shell/assets/{chunk-JWPE2WC7-DNpXtEOs.js → chunk-JWPE2WC7-CYJH0FuH.js} +1 -1
  357. package/web-shell/assets/{chunk-LCL6LL3I-DagA2ZLw.js → chunk-LCL6LL3I-DjWZUqA1.js} +1 -1
  358. package/web-shell/assets/{chunk-POPQ4Y6H-R23uH7Xm.js → chunk-POPQ4Y6H-DcTkIHm8.js} +1 -1
  359. package/web-shell/assets/{chunk-SVP7TREG-Qz9RN_BR.js → chunk-SVP7TREG-E8sZT5uK.js} +1 -1
  360. package/web-shell/assets/{chunk-XXDRQBXY-jYb1_hni.js → chunk-XXDRQBXY-CurjPKw_.js} +1 -1
  361. package/web-shell/assets/classDiagram-DTDB5LWJ-BuIh7bj1.js +1 -0
  362. package/web-shell/assets/classDiagram-v2-JRS7N3AN-BuIh7bj1.js +1 -0
  363. package/web-shell/assets/{cose-bilkent-JH36ORCC-Cv2OunpE.js → cose-bilkent-JH36ORCC-CJEnNhth.js} +1 -1
  364. package/web-shell/assets/{cynefin-OW5HDTMX-LH42KFJx.js → cynefin-OW5HDTMX-jwEkm0yw.js} +1 -1
  365. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Dha4_OoR.js → cynefinDiagram-5FMLGOSQ-B-OVQ6AO.js} +1 -1
  366. package/web-shell/assets/{dagre-3AP2YEHR-Br5lnUKD.js → dagre-3AP2YEHR-CKKK9WNR.js} +1 -1
  367. package/web-shell/assets/{diagram-S7CK7UJ4-dpKq2bBX.js → diagram-S7CK7UJ4-D486veFQ.js} +1 -1
  368. package/web-shell/assets/{diagram-UQ7AKVKN-BAgHWpXr.js → diagram-UQ7AKVKN-C3GujqHv.js} +1 -1
  369. package/web-shell/assets/{diagram-VSXAHHWV-GRRzpyE2.js → diagram-VSXAHHWV-BrOTDwuU.js} +1 -1
  370. package/web-shell/assets/{diagram-VX7I27RA-BNFiaYpG.js → diagram-VX7I27RA-C4D9kWE3.js} +1 -1
  371. package/web-shell/assets/{diagram-Z3DM3KII-BisZzB_h.js → diagram-Z3DM3KII-7rAManT0.js} +1 -1
  372. package/web-shell/assets/{ebnfDiagram-PWID7BFC-B1xbwycf.js → ebnfDiagram-PWID7BFC-CqVzKOdr.js} +1 -1
  373. package/web-shell/assets/{erDiagram-SSCWMZ5O-CQMzbGE5.js → erDiagram-SSCWMZ5O-D2s08fc_.js} +1 -1
  374. package/web-shell/assets/{flowDiagram-A5DVABFB-CZ_Zondl.js → flowDiagram-A5DVABFB-CrKtBxB2.js} +1 -1
  375. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BTh2ShxS.js → ganttDiagram-EL5Y4UJY-CD1CKdlt.js} +1 -1
  376. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js → gitGraphDiagram-WWUBYQGX-CHDXdVNn.js} +1 -1
  377. package/web-shell/assets/index-D8tzgUOC.css +36 -0
  378. package/web-shell/assets/{index-DWoFMu5x.js → index-DWz95m74.js} +1 -1
  379. package/web-shell/assets/index-cDFf68Wd.js +2204 -0
  380. package/web-shell/assets/{infoDiagram-RXCK75RN-C0QpudbG.js → infoDiagram-RXCK75RN-Cr1oLCwe.js} +1 -1
  381. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-a6B741uT.js → ishikawaDiagram-5VMMS53U--RghV1mm.js} +1 -1
  382. package/web-shell/assets/{journeyDiagram-EYS64GPL-Dbht9ICp.js → journeyDiagram-EYS64GPL-MN1ZkGW8.js} +1 -1
  383. package/web-shell/assets/{kanban-definition-3QL26DDD-D4OFR8-h.js → kanban-definition-3QL26DDD-DL05VTn0.js} +1 -1
  384. package/web-shell/assets/{layout-Dvdh5jRH.js → layout-D_TvQzvn.js} +1 -1
  385. package/web-shell/assets/{linear-Dvc6KIW2.js → linear-B_0OH6XF.js} +1 -1
  386. package/web-shell/assets/{mermaid.core-CB36RfIb.js → mermaid.core-B9Nklh9I.js} +6 -6
  387. package/web-shell/assets/{mindmap-definition-FBJOCRG2-Fmqo1CjP.js → mindmap-definition-FBJOCRG2-CevIQ0LR.js} +1 -1
  388. package/web-shell/assets/{pegDiagram-XKGWAZYB-CCxYBoA4.js → pegDiagram-XKGWAZYB-DQ8PIv0d.js} +1 -1
  389. package/web-shell/assets/{pieDiagram-E7YTZNPT-BVHKQFzt.js → pieDiagram-E7YTZNPT-BVTV1pPe.js} +1 -1
  390. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-l95IznwR.js → quadrantDiagram-AXDQQJYC-DHN6nhpe.js} +1 -1
  391. package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
  392. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BlLdRdXp.js → railroadDiagram-O6MQD6OU-8HOyX0u-.js} +1 -1
  393. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BkDLBR5w.js → requirementDiagram-EFPCY7ZU-9W4_14i8.js} +1 -1
  394. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-jAIqRp65.js → sankeyDiagram-P5KCCOFB-DSUBB2XP.js} +1 -1
  395. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-f-soZYPr.js → sequenceDiagram-WJ2MYXX4-DD3jH6Jn.js} +1 -1
  396. package/web-shell/assets/{sizeCapture-X5ZJPWSS-BzOuAfB2.js → sizeCapture-X5ZJPWSS-RAFTU3Cz.js} +1 -1
  397. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BPLSs12r.js → stateDiagram-HBIQ2CUA-Drk-oZ2x.js} +1 -1
  398. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-QzYteVIm.js +1 -0
  399. package/web-shell/assets/{swimlanes-XN3QIQJK-D-9E_RIR.js → swimlanes-XN3QIQJK-Cy2nlOGx.js} +1 -1
  400. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-xTr-HG26.js +8 -0
  401. package/web-shell/assets/{timeline-definition-24CTP7MA-CT56K-gV.js → timeline-definition-24CTP7MA-B7outYof.js} +1 -1
  402. package/web-shell/assets/{vennDiagram-4TSXK5OY-B-vi4IyO.js → vennDiagram-4TSXK5OY-Di_u1Ic6.js} +1 -1
  403. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9O7Ju98.js → wardleyDiagram-VM6X3IG4-DYocuCAM.js} +1 -1
  404. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-6d8w3jg2.js → xychartDiagram-S5SC5T6Z-AADDse54.js} +1 -1
  405. package/web-shell/index.html +29 -5
  406. package/chunks/chunk-V7RNNPGC.js +0 -44
  407. package/chunks/list-JOGBAC2R.js +0 -122
  408. package/chunks/mcp-6YYNSYLK.js +0 -116
  409. package/chunks/workflow-HD5NYMW5.js +0 -2907
  410. package/chunks/workspace-providers-status-MAM42IZS.js +0 -120
  411. package/web-shell/assets/channel-COIuCrVH.js +0 -1
  412. package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +0 -1
  413. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +0 -1
  414. package/web-shell/assets/index-CI1ysIEv.js +0 -2154
  415. package/web-shell/assets/index-CpxXGH-8.css +0 -36
  416. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +0 -1
  417. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +0 -8
  418. package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
  419. package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  channelFactoryForwardsChildEnv,
22
22
  defaultSpawnChannelFactory
23
- } from "./chunk-KA5HR3G2.js";
23
+ } from "./chunk-YKM6MITI.js";
24
24
  import {
25
25
  BridgeChannelClosedError,
26
26
  BridgeTimeoutError,
@@ -30,7 +30,7 @@ import {
30
30
  SessionRestoreTimeoutError,
31
31
  createIdleWorkspaceExtensionsStatus,
32
32
  createIdleWorkspaceHooksStatus
33
- } from "./chunk-FETY36NQ.js";
33
+ } from "./chunk-HGEUHUEV.js";
34
34
  import {
35
35
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
36
36
  ACTIVE_WORK_CLOSE_TIMEOUT_MS,
@@ -53,6 +53,7 @@ import {
53
53
  DAEMON_PERMISSION_CANCEL_REASON_META_KEY,
54
54
  DAEMON_PROMPT_DISPLAY_TEXT_META_KEY,
55
55
  DAEMON_RESTORE_ASK_USER_QUESTION_META_KEY,
56
+ DAEMON_SUBMITTED_PROMPT_META_KEY,
56
57
  DAEMON_SUPPRESS_RESTORE_ASK_USER_QUESTION_META_KEY,
57
58
  DAEMON_SUPPRESS_WORKTREE_CONTEXT_RESTORE_META_KEY,
58
59
  LOAD_REPLAY_BULK_MODE,
@@ -68,6 +69,8 @@ import {
68
69
  REQUESTED_SESSION_ID_META_KEY,
69
70
  SESSION_INITIALIZATION_DEADLINE_META_KEY,
70
71
  SESSION_INITIALIZATION_TIMEOUT_ERROR_KIND,
72
+ SESSION_MODEL_PERSIST_DEFAULT_META_KEY,
73
+ SUBMITTED_PROMPT_META_KEY,
71
74
  TODO_STOP_GUARD_CONTINUATION_CLAIM_METHOD,
72
75
  TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
73
76
  WORKTREE_MCP_DEFER_META_KEY,
@@ -75,7 +78,7 @@ import {
75
78
  clampActiveWorkIntervalMs,
76
79
  isValidTrustedModelPrompt,
77
80
  sessionCloseDrainBudgetMs
78
- } from "./chunk-PSPAM24S.js";
81
+ } from "./chunk-TBSCTWKF.js";
79
82
  import {
80
83
  BranchWhilePromptActiveError,
81
84
  BridgeChannelQuarantinedError,
@@ -121,7 +124,7 @@ import {
121
124
  ClientSideConnection,
122
125
  PROTOCOL_VERSION,
123
126
  RequestError
124
- } from "./chunk-IW6RQPQB.js";
127
+ } from "./chunk-IJOS26LH.js";
125
128
  import {
126
129
  PRIVATE_CONVERSATIONS_RUNTIME_ENABLE,
127
130
  PRIVATE_CONVERSATIONS_RUNTIME_ENV
@@ -136,7 +139,7 @@ import {
136
139
  isOfficeDocumentExtension,
137
140
  isRecordableDerivedChild,
138
141
  pathHasSkippedDirectoryComponent
139
- } from "./chunk-OWCFKIFQ.js";
142
+ } from "./chunk-5CZMWDJI.js";
140
143
  import {
141
144
  SESSION_PR_LIST_LIMIT,
142
145
  SESSION_PR_URL_MAX_LENGTH,
@@ -148,7 +151,7 @@ import {
148
151
  canonicalSessionPrUrl,
149
152
  normalizeTurnResultError,
150
153
  toSessionPrInfo
151
- } from "./chunk-HJ5UJQQL.js";
154
+ } from "./chunk-2UKKQGRA.js";
152
155
  import {
153
156
  isUnverifiableIdentityError,
154
157
  openNoFollow
@@ -159,20 +162,31 @@ import {
159
162
  WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY,
160
163
  WORKSPACE_CONTENT_SHA256_METADATA_KEY,
161
164
  WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY,
165
+ deleteArtifactSnapshot,
166
+ getWebPreviewSnapshotId,
162
167
  isAdoptableContentFingerprintKey,
163
168
  isPrototypeMetadataKey,
164
169
  isReservedWorkspaceMetadataKey,
165
170
  metadataBudgetBytes,
166
171
  normalizeSnapshotPayload,
172
+ retainArtifactSnapshot,
167
173
  stableSessionArtifactId
168
- } from "./chunk-GSFV5RQW.js";
174
+ } from "./chunk-EYN3G5XD.js";
175
+ import {
176
+ MAX_CRON_TASK_ROUTING_ID_LENGTH,
177
+ isValidCronTaskRoutingId
178
+ } from "./chunk-3LMDSCLU.js";
179
+ import {
180
+ SessionSourceError,
181
+ validateSessionSourceInput
182
+ } from "./chunk-ELRMZTPF.js";
169
183
  import {
170
184
  APPROVAL_MODES
171
185
  } from "./chunk-JX6XHPTX.js";
172
186
  import {
173
187
  DAEMON_TRACEPARENT_META_KEY,
174
188
  DAEMON_TRACESTATE_META_KEY
175
- } from "./chunk-7OCIQNKX.js";
189
+ } from "./chunk-ZW2EUO2A.js";
176
190
  import {
177
191
  INVOCATION_CONTEXT_META_KEY,
178
192
  PRIVATE_ACP_CAPABILITY_ENV,
@@ -180,7 +194,10 @@ import {
180
194
  } from "./chunk-5ETULJLP.js";
181
195
  import {
182
196
  getSpecificMimeType
183
- } from "./chunk-J6MB5ZHZ.js";
197
+ } from "./chunk-QZW6WRB7.js";
198
+ import {
199
+ Storage
200
+ } from "./chunk-ZAFYHRVY.js";
184
201
  import {
185
202
  init_esbuild_shims
186
203
  } from "./chunk-5O2XNYP6.js";
@@ -4058,10 +4075,24 @@ var BridgeClient = class {
4058
4075
  );
4059
4076
  }
4060
4077
  const model = params["model"];
4078
+ const groupId = params["groupId"];
4079
+ if (model !== void 0 && !isValidCronTaskRoutingId(model)) {
4080
+ throw RequestError.invalidParams(
4081
+ void 0,
4082
+ `\`model\` must be a non-empty string of at most ${MAX_CRON_TASK_ROUTING_ID_LENGTH} characters without control characters`
4083
+ );
4084
+ }
4085
+ if (groupId !== void 0 && (!isScheduledTaskRunSource(source) || !isValidCronTaskRoutingId(groupId))) {
4086
+ throw RequestError.invalidParams(
4087
+ void 0,
4088
+ `\`groupId\` must be a non-empty string of at most ${MAX_CRON_TASK_ROUTING_ID_LENGTH} characters without control characters and is only supported for scheduled-task runs`
4089
+ );
4090
+ }
4061
4091
  const result = await this.onCreateSubSession({
4062
4092
  prompt,
4063
4093
  completion,
4064
- ...typeof model === "string" && model.length > 0 && model.length <= 128 ? { model } : {},
4094
+ ...typeof model === "string" ? { model } : {},
4095
+ ...typeof groupId === "string" ? { groupId } : {},
4065
4096
  ...typeof name === "string" && name.length > 0 ? { name } : {},
4066
4097
  ...source,
4067
4098
  callerSessionId
@@ -4239,6 +4270,19 @@ var BridgeClient = class {
4239
4270
  if (typeof notificationSessionId === "string" && this.abandonedRestoreIds.has(notificationSessionId)) {
4240
4271
  return;
4241
4272
  }
4273
+ if (method === "qwen/notify/session/sources-changed") {
4274
+ const sessionId2 = params["sessionId"];
4275
+ const revision = params["revision"];
4276
+ if (typeof sessionId2 !== "string" || typeof revision !== "number" || !Number.isSafeInteger(revision) || revision < 0 || !this.ownsSession(sessionId2))
4277
+ return;
4278
+ const entry = this.resolveEntry(sessionId2);
4279
+ if (!entry) return;
4280
+ entry.events.publish({
4281
+ type: "source_changed",
4282
+ data: { sessionId: sessionId2, revision }
4283
+ });
4284
+ return;
4285
+ }
4242
4286
  if (method === ACTIVE_WORK_NOTIFICATION_METHOD) {
4243
4287
  const snapshot = parseActiveWorkSnapshot(params);
4244
4288
  if (snapshot) {
@@ -5246,6 +5290,7 @@ var SessionArtifactStore = class {
5246
5290
  }
5247
5291
  sessionId;
5248
5292
  workspaceCwd;
5293
+ runtimeBaseDir;
5249
5294
  maxArtifacts;
5250
5295
  persistence;
5251
5296
  artifacts = /* @__PURE__ */ new Map();
@@ -5260,11 +5305,14 @@ var SessionArtifactStore = class {
5260
5305
  tombstonedClientIds = /* @__PURE__ */ new Map();
5261
5306
  stickyEphemeralIds = /* @__PURE__ */ new Set();
5262
5307
  markerArtifacts = /* @__PURE__ */ new Map();
5308
+ // Failed removals or partial restores can leave ownership without a live record.
5309
+ pendingSnapshotRemovals = /* @__PURE__ */ new Set();
5263
5310
  lastRestoreWarnings = [];
5264
5311
  lastRestoreWarningDetails = [];
5265
5312
  constructor(options) {
5266
5313
  this.sessionId = options.sessionId;
5267
5314
  this.workspaceCwd = options.workspaceCwd;
5315
+ this.runtimeBaseDir = options.runtimeBaseDir ?? Storage.getRuntimeBaseDir();
5268
5316
  this.maxArtifacts = options.maxArtifacts ?? 200;
5269
5317
  this.persistence = options.persistence;
5270
5318
  }
@@ -5352,6 +5400,11 @@ var SessionArtifactStore = class {
5352
5400
  }
5353
5401
  }
5354
5402
  const changes = [];
5403
+ let rollbackArtifacts = [];
5404
+ const rollback = /* @__PURE__ */ __name(async () => {
5405
+ this.restoreState(before);
5406
+ await this.reclaimSnapshotFiles(rollbackArtifacts);
5407
+ }, "rollback");
5355
5408
  try {
5356
5409
  for (const normalized of coalesceByIdentity(normalizedResults)) {
5357
5410
  const artifact = this.applyStickyEphemeralOverride(normalized);
@@ -5422,6 +5475,23 @@ var SessionArtifactStore = class {
5422
5475
  const createdIds = new Set(
5423
5476
  changes.filter((change) => change.action === "created").map((change) => change.artifactId)
5424
5477
  );
5478
+ rollbackArtifacts = changes.flatMap(
5479
+ (change) => change.action !== "removed" && change.artifact ? [change.artifact] : []
5480
+ );
5481
+ for (const artifact of rollbackArtifacts) {
5482
+ try {
5483
+ await retainArtifactSnapshot(
5484
+ artifact,
5485
+ this.runtimeBaseDir,
5486
+ this.sessionId
5487
+ );
5488
+ } catch (error) {
5489
+ if (validationStrict || persistenceStrict) throw error;
5490
+ warnings.push(
5491
+ `artifact ${artifact.id} kept without retaining its snapshot: ${error instanceof Error ? error.message : String(error)}`
5492
+ );
5493
+ }
5494
+ }
5425
5495
  const overflowRemoved = await this.evictOverflow(
5426
5496
  createdIds,
5427
5497
  changes,
@@ -5441,7 +5511,7 @@ var SessionArtifactStore = class {
5441
5511
  try {
5442
5512
  persistenceWarnings = await this.persistChanges(changes, true);
5443
5513
  } catch (error) {
5444
- this.restoreState(before);
5514
+ await rollback();
5445
5515
  const artifactIds = changes.filter(shouldCommitBeforeDurablePersistence).map((change) => change.artifactId);
5446
5516
  const warning = "artifact durable removal not persisted; live changes rolled back";
5447
5517
  writeStderrLine(
@@ -5481,9 +5551,15 @@ var SessionArtifactStore = class {
5481
5551
  )
5482
5552
  );
5483
5553
  stripDurableTombstoneMarkers(changes);
5554
+ await this.reclaimSnapshotFiles([
5555
+ ...changes.filter(
5556
+ (change) => change.action === "removed" && change.reason === "eviction"
5557
+ ).map((change) => change.artifact),
5558
+ ...overflowRemoved.droppedArtifacts
5559
+ ]);
5484
5560
  } catch (error) {
5485
5561
  if (validationStrict || persistenceStrict || error instanceof SessionArtifactAuthorizationError) {
5486
- this.restoreState(before);
5562
+ await rollback();
5487
5563
  }
5488
5564
  throw error;
5489
5565
  }
@@ -5578,6 +5654,7 @@ var SessionArtifactStore = class {
5578
5654
  }
5579
5655
  const warnings = needsDurableTombstone ? [] : await this.persistChanges(changes, false);
5580
5656
  stripDurableTombstoneMarkers(changes);
5657
+ await this.reclaimSnapshotFiles([removeChange.artifact]);
5581
5658
  const warningDetails = detailsForPersistenceWarnings(
5582
5659
  warnings,
5583
5660
  changes,
@@ -5645,7 +5722,7 @@ var SessionArtifactStore = class {
5645
5722
  let normalized = await this.normalizeInput(
5646
5723
  input,
5647
5724
  ++this.receivedSeq,
5648
- artifact.storage === "published" && !isFileArtifactUrl(artifact.url),
5725
+ artifact.storage === "published" && (!isFileArtifactUrl(artifact.url) || Boolean(getWebPreviewSnapshotId(artifact))),
5649
5726
  {
5650
5727
  metadataBudget: "persisted",
5651
5728
  workspaceExpected: workspaceExpectedFromArtifact(artifact),
@@ -5688,6 +5765,17 @@ var SessionArtifactStore = class {
5688
5765
  durableTombstoneRequired: retention !== "ephemeral" ? true : void 0,
5689
5766
  insertSeq: ++this.insertSeq
5690
5767
  };
5768
+ try {
5769
+ await retainArtifactSnapshot(
5770
+ stored,
5771
+ this.runtimeBaseDir,
5772
+ this.sessionId
5773
+ );
5774
+ } catch (error) {
5775
+ warnings.push(
5776
+ `restored artifact ${stored.id} without retaining its snapshot: ${error instanceof Error ? error.message : String(error)}`
5777
+ );
5778
+ }
5691
5779
  this.artifacts.set(stored.id, stored);
5692
5780
  restoredCount++;
5693
5781
  } catch (error) {
@@ -5723,10 +5811,37 @@ var SessionArtifactStore = class {
5723
5811
  insertSeq: ++this.insertSeq
5724
5812
  });
5725
5813
  }
5814
+ if (!warnings.some(isArtifactSnapshotCompletenessWarning)) {
5815
+ this.pendingSnapshotRemovals.clear();
5816
+ }
5726
5817
  const evicted = await this.evictOverflow(/* @__PURE__ */ new Set(), []);
5727
5818
  if (evicted.removed.length > 0) {
5728
5819
  warnings.push("restored artifact list pruned to live limit");
5729
- warnings.push(...await this.persistChanges(evicted.removed, false));
5820
+ const persistenceWarnings = await this.persistChanges(
5821
+ evicted.removed,
5822
+ false
5823
+ );
5824
+ warnings.push(...persistenceWarnings);
5825
+ if (persistenceWarnings.length === 0) {
5826
+ await this.reclaimSnapshotFiles(
5827
+ evicted.removed.map((change) => change.artifact)
5828
+ );
5829
+ }
5830
+ }
5831
+ const restoredIds = /* @__PURE__ */ new Set([
5832
+ ...snapshot.artifacts.map((artifact) => artifact.id),
5833
+ ...preservedLiveEphemeralArtifacts.map((artifact) => artifact.id)
5834
+ ]);
5835
+ const discarded = [...previousState.artifacts.values()].filter(
5836
+ (artifact) => !restoredIds.has(artifact.id)
5837
+ );
5838
+ if (warnings.some(isArtifactSnapshotCompletenessWarning)) {
5839
+ for (const artifact of previousState.artifacts.values()) {
5840
+ const id = getWebPreviewSnapshotId(artifact);
5841
+ if (id) this.pendingSnapshotRemovals.add(id);
5842
+ }
5843
+ } else {
5844
+ await this.reclaimSnapshotFiles(discarded);
5730
5845
  }
5731
5846
  this.setLastRestoreWarnings(warnings);
5732
5847
  return warnings;
@@ -5749,6 +5864,7 @@ var SessionArtifactStore = class {
5749
5864
  this.persistenceSeq = sequence;
5750
5865
  this.durableEventsSinceSnapshot = 0;
5751
5866
  this.consecutiveSnapshotFailures = 0;
5867
+ this.pendingSnapshotRemovals.clear();
5752
5868
  return [];
5753
5869
  } catch (error) {
5754
5870
  writeStderrLine(
@@ -5772,7 +5888,7 @@ var SessionArtifactStore = class {
5772
5888
  const normalized = await this.normalizeInput(
5773
5889
  input,
5774
5890
  ++this.receivedSeq,
5775
- artifact.storage === "published" && !isFileArtifactUrl(artifact.url),
5891
+ artifact.storage === "published" && (!isFileArtifactUrl(artifact.url) || Boolean(getWebPreviewSnapshotId(artifact))),
5776
5892
  {
5777
5893
  metadataBudget: "persisted",
5778
5894
  workspaceExpected: workspaceExpectedFromArtifact(artifact),
@@ -5823,6 +5939,7 @@ var SessionArtifactStore = class {
5823
5939
  tombstonedClientIds: new Map(this.tombstonedClientIds),
5824
5940
  stickyEphemeralIds: new Set(this.stickyEphemeralIds),
5825
5941
  markerArtifacts: new Map(this.markerArtifacts),
5942
+ pendingSnapshotRemovals: new Set(this.pendingSnapshotRemovals),
5826
5943
  lastRestoreWarnings: [...this.lastRestoreWarnings],
5827
5944
  lastRestoreWarningDetails: [...this.lastRestoreWarningDetails]
5828
5945
  };
@@ -5853,6 +5970,10 @@ var SessionArtifactStore = class {
5853
5970
  for (const [id, artifact] of state.markerArtifacts) {
5854
5971
  this.markerArtifacts.set(id, artifact);
5855
5972
  }
5973
+ this.pendingSnapshotRemovals.clear();
5974
+ for (const id of state.pendingSnapshotRemovals) {
5975
+ this.pendingSnapshotRemovals.add(id);
5976
+ }
5856
5977
  this.setLastRestoreWarnings(state.lastRestoreWarnings);
5857
5978
  this.lastRestoreWarningDetails = [...state.lastRestoreWarningDetails];
5858
5979
  }
@@ -5897,6 +6018,8 @@ var SessionArtifactStore = class {
5897
6018
  await this.persistence.recordEvent(payload);
5898
6019
  this.persistenceSeq = sequence;
5899
6020
  for (const change of durableChanges) {
6021
+ const snapshotId = change.artifact && getWebPreviewSnapshotId(change.artifact);
6022
+ if (snapshotId) this.pendingSnapshotRemovals.delete(snapshotId);
5900
6023
  if (change.action === "removed") continue;
5901
6024
  const stored = this.artifacts.get(change.artifactId);
5902
6025
  if (!stored) continue;
@@ -5941,6 +6064,7 @@ var SessionArtifactStore = class {
5941
6064
  this.persistenceSeq = sequence;
5942
6065
  this.durableEventsSinceSnapshot = 0;
5943
6066
  this.consecutiveSnapshotFailures = 0;
6067
+ this.pendingSnapshotRemovals.clear();
5944
6068
  } catch (error) {
5945
6069
  this.consecutiveSnapshotFailures = Math.min(
5946
6070
  this.consecutiveSnapshotFailures + 1,
@@ -5998,6 +6122,8 @@ var SessionArtifactStore = class {
5998
6122
  for (const change of changes) {
5999
6123
  if (change.action === "removed") {
6000
6124
  removalNotPersisted = true;
6125
+ const snapshotId = change.artifact && getWebPreviewSnapshotId(change.artifact);
6126
+ if (snapshotId) this.pendingSnapshotRemovals.add(snapshotId);
6001
6127
  if (change.reason === "explicit") {
6002
6128
  this.rememberTombstone(change);
6003
6129
  this.stickyEphemeralIds.delete(change.artifactId);
@@ -6571,10 +6697,29 @@ var SessionArtifactStore = class {
6571
6697
  );
6572
6698
  }
6573
6699
  }
6700
+ async reclaimSnapshotFiles(artifacts) {
6701
+ for (const artifact of artifacts) {
6702
+ if (!artifact) continue;
6703
+ const id = getWebPreviewSnapshotId(artifact);
6704
+ if (!id || this.pendingSnapshotRemovals.has(id) || [...this.artifacts.values()].some(
6705
+ (kept) => getWebPreviewSnapshotId(kept) === id
6706
+ ))
6707
+ continue;
6708
+ try {
6709
+ await deleteArtifactSnapshot(
6710
+ artifact,
6711
+ this.runtimeBaseDir,
6712
+ this.sessionId
6713
+ );
6714
+ } catch {
6715
+ }
6716
+ }
6717
+ }
6574
6718
  async evictOverflow(createdIds, changes, strict = false) {
6575
6719
  const removed = [];
6720
+ const droppedArtifacts = [];
6576
6721
  if (this.artifacts.size <= this.maxArtifacts) {
6577
- return { removed, droppedCreated: 0 };
6722
+ return { removed, droppedCreated: 0, droppedArtifacts };
6578
6723
  }
6579
6724
  const createdInThisBatch = new Set(createdIds);
6580
6725
  const candidates = Array.from(this.artifacts.values()).filter(
@@ -6617,12 +6762,13 @@ var SessionArtifactStore = class {
6617
6762
  }
6618
6763
  this.artifacts.delete(artifact.id);
6619
6764
  droppedCreated++;
6765
+ droppedArtifacts.push(toPublicArtifact(artifact));
6620
6766
  writeStderrLine(
6621
6767
  `[artifacts] session=${this.sessionId} action=dropped reason="max artifacts exceeded" artifactId=${artifact.id}`
6622
6768
  );
6623
6769
  removePriorChange(changes, artifact.id);
6624
6770
  }
6625
- return { removed, droppedCreated };
6771
+ return { removed, droppedCreated, droppedArtifacts };
6626
6772
  }
6627
6773
  };
6628
6774
  function coalesceByIdentity(artifacts) {
@@ -8445,6 +8591,11 @@ function broadcastTurnComplete(entry, sessionId, promptResult, promptId, origina
8445
8591
  assistantRecordUuid: rawBranchPoint["assistantRecordUuid"],
8446
8592
  checkpointUuid: rawBranchPoint["checkpointUuid"]
8447
8593
  } : void 0;
8594
+ const rawPromptCancelled = meta?.["qwen.promptCancelled"] && typeof meta["qwen.promptCancelled"] === "object" ? meta["qwen.promptCancelled"] : void 0;
8595
+ const promptCancelled = promptResult.stopReason === "cancelled" && typeof rawPromptCancelled?.["cancelledAt"] === "number" && Number.isFinite(rawPromptCancelled["cancelledAt"]) && typeof rawPromptCancelled["elapsedMs"] === "number" && Number.isFinite(rawPromptCancelled["elapsedMs"]) && rawPromptCancelled["elapsedMs"] >= 0 ? {
8596
+ cancelledAt: rawPromptCancelled["cancelledAt"],
8597
+ elapsedMs: rawPromptCancelled["elapsedMs"]
8598
+ } : void 0;
8448
8599
  const published = entry.events.publish({
8449
8600
  type: "turn_complete",
8450
8601
  ...promptId ? { promptId } : {},
@@ -8452,7 +8603,8 @@ function broadcastTurnComplete(entry, sessionId, promptResult, promptId, origina
8452
8603
  sessionId,
8453
8604
  stopReason: promptResult.stopReason ?? "end_turn",
8454
8605
  ...promptId ? { promptId } : {},
8455
- ...branchPoint ? { branchPoint } : {}
8606
+ ...branchPoint ? { branchPoint } : {},
8607
+ ...promptCancelled ? { promptCancelled } : {}
8456
8608
  },
8457
8609
  ...originatorClientId ? { originatorClientId } : {}
8458
8610
  });
@@ -8527,6 +8679,7 @@ var REFRESH_APPEND_BOOKKEEPING_EVENT_TYPES = /* @__PURE__ */ new Set([
8527
8679
  "session_metadata_updated",
8528
8680
  "session_cwd_changed",
8529
8681
  "artifact_changed",
8682
+ "source_changed",
8530
8683
  "settings_changed",
8531
8684
  "extensions_changed",
8532
8685
  "mcp_server_changed",
@@ -10297,6 +10450,7 @@ function createAcpSessionBridge(opts) {
10297
10450
  [PRIVATE_PARENT_CAPABILITY_META_KEY]: privateParentCapability
10298
10451
  },
10299
10452
  clientCapabilities: {
10453
+ _meta: { "qwen.goalProposals": true },
10300
10454
  fs: {
10301
10455
  readTextFile: delegateReadTextFileToClient,
10302
10456
  writeTextFile: true
@@ -10882,11 +11036,20 @@ function createAcpSessionBridge(opts) {
10882
11036
  entry.modelRoundtripInFlight = true;
10883
11037
  let succeeded = false;
10884
11038
  try {
11039
+ const persistDefault = !isScheduledTaskRunSource({
11040
+ sourceType: entry.sourceType,
11041
+ sourceId: entry.sourceId
11042
+ });
10885
11043
  const result = await Promise.race([
10886
11044
  withTimeout(
10887
11045
  conn.unstable_setSessionModel({
10888
11046
  sessionId: entry.sessionId,
10889
- modelId
11047
+ modelId,
11048
+ ...!persistDefault ? {
11049
+ _meta: {
11050
+ [SESSION_MODEL_PERSIST_DEFAULT_META_KEY]: false
11051
+ }
11052
+ } : {}
10890
11053
  }),
10891
11054
  timeoutMs,
10892
11055
  "setSessionModel"
@@ -10894,7 +11057,7 @@ function createAcpSessionBridge(opts) {
10894
11057
  transportClosed
10895
11058
  ]);
10896
11059
  publishModelSwitched(entry, modelId, originatorClientId);
10897
- if (!isReservedStandaloneSessionSourceType(entry.sourceType)) {
11060
+ if (persistDefault && !isReservedStandaloneSessionSourceType(entry.sourceType)) {
10898
11061
  broadcastWorkspaceEvent({
10899
11062
  type: "settings_changed",
10900
11063
  data: {
@@ -11428,6 +11591,16 @@ function createAcpSessionBridge(opts) {
11428
11591
  ]);
11429
11592
  return response;
11430
11593
  }, "requestSessionStatus");
11594
+ const requestSessionSources = /* @__PURE__ */ __name(async (sessionId, method, params = {}) => {
11595
+ const result = await requestSessionStatus(sessionId, method, params);
11596
+ if (result.sourceError) {
11597
+ throw new SessionSourceError(
11598
+ result.sourceError.code,
11599
+ result.sourceError.message
11600
+ );
11601
+ }
11602
+ return result;
11603
+ }, "requestSessionSources");
11431
11604
  const notifyAgentSessionClose = /* @__PURE__ */ __name(async (entry, ci, label, opts2) => {
11432
11605
  if (!ci || ci.channel !== entry.channel) {
11433
11606
  if (opts2?.throwOnFailure === true) {
@@ -11463,8 +11636,8 @@ function createAcpSessionBridge(opts) {
11463
11636
  return response["closed"] === true;
11464
11637
  } catch (err) {
11465
11638
  writeStderrLine(
11466
- `qwen serve: ${label} ACP session close notification failed for session ${JSON.stringify(entry.sessionId)}: ${String(
11467
- err instanceof Error ? err.message : err
11639
+ `qwen serve: ${label} ACP session close notification failed for session ${JSON.stringify(entry.sessionId)}: ${extractErrorMessage(
11640
+ err
11468
11641
  )}`
11469
11642
  );
11470
11643
  if (opts2?.throwOnFailure === true) {
@@ -11668,6 +11841,7 @@ function createAcpSessionBridge(opts) {
11668
11841
  artifacts: new SessionArtifactStore({
11669
11842
  sessionId,
11670
11843
  workspaceCwd,
11844
+ runtimeBaseDir: opts.artifactSnapshotRuntimeBaseDir,
11671
11845
  persistence: createSessionArtifactPersistence(ci.connection, sessionId)
11672
11846
  }),
11673
11847
  artifactWorkspaceCwd: workspaceCwd,
@@ -12046,6 +12220,9 @@ function createAcpSessionBridge(opts) {
12046
12220
  }
12047
12221
  __name(requestSessionTurnIndexPage, "requestSessionTurnIndexPage");
12048
12222
  async function refreshedReplayFieldsFor(entry, historyPageSize, liveReplayMode) {
12223
+ if (entry.pendingInteractions.size > 0) {
12224
+ return replayFieldsFor(entry, "load", liveReplayMode);
12225
+ }
12049
12226
  for (let attempt = 0; attempt < 2; attempt++) {
12050
12227
  try {
12051
12228
  const lastEventId = entry.events.lastEventId;
@@ -12092,6 +12269,7 @@ function createAcpSessionBridge(opts) {
12092
12269
  ...page.hasMore ? { historyHasMore: true } : {}
12093
12270
  };
12094
12271
  }
12272
+ if (entry.pendingInteractions.size > 0) break;
12095
12273
  } catch {
12096
12274
  break;
12097
12275
  }
@@ -14013,9 +14191,18 @@ function createAcpSessionBridge(opts) {
14013
14191
  delete meta[DAEMON_RESTORE_ASK_USER_QUESTION_META_KEY];
14014
14192
  delete meta[DAEMON_CHANNEL_DELIVERY_META_KEY];
14015
14193
  delete meta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
14194
+ delete meta[SUBMITTED_PROMPT_META_KEY];
14195
+ delete meta[DAEMON_SUBMITTED_PROMPT_META_KEY];
14196
+ if (typeof context?.submittedPrompt === "string" && !isPromotedMidTurn && context?.channelPrompt !== true) {
14197
+ meta[DAEMON_SUBMITTED_PROMPT_META_KEY] = context.submittedPrompt;
14198
+ }
14016
14199
  delete meta[DAEMON_MODEL_PROMPT_META_KEY];
14017
14200
  delete meta[DAEMON_ATTACHMENT_REFERENCES_META_KEY];
14018
14201
  delete meta[CHANNEL_PROMPT_META_KEY];
14202
+ delete meta["qwen.goalProposalApproval"];
14203
+ if (originatorClientId !== void 0 && entry.clientIds.has(originatorClientId) && !context?.channelPrompt && !isContinue && !isRestoreAskUserQuestion) {
14204
+ meta["qwen.goalProposalApproval"] = true;
14205
+ }
14019
14206
  if (isRetry) {
14020
14207
  meta[DAEMON_RETRY_META_KEY] = true;
14021
14208
  }
@@ -14487,6 +14674,28 @@ function createAcpSessionBridge(opts) {
14487
14674
  );
14488
14675
  }
14489
14676
  markSessionCatalogChanged();
14677
+ const sourceWarnings = [];
14678
+ const copySources = /* @__PURE__ */ __name(async (attachments) => {
14679
+ try {
14680
+ const attachmentIds = attachments ? (await attachments.list()).map((item) => item.attachmentId) : [];
14681
+ const copied = await Promise.race([
14682
+ entry.connection.extMethod("qwen/session/sources/copy", {
14683
+ sessionId,
14684
+ targetSessionId: result.newSessionId,
14685
+ targetCwd: boundWorkspace,
14686
+ attachmentIds
14687
+ }),
14688
+ getTransportClosedReject(entry)
14689
+ ]);
14690
+ if (copied.sourceError) {
14691
+ sourceWarnings.push("Session sources could not be copied.");
14692
+ } else {
14693
+ sourceWarnings.push(...copied.warnings ?? []);
14694
+ }
14695
+ } catch {
14696
+ sourceWarnings.push("Session sources could not be copied.");
14697
+ }
14698
+ }, "copySources");
14490
14699
  if (opts.sessionAttachmentsRoot) {
14491
14700
  const branchAttachments = new SessionAttachmentStore(
14492
14701
  opts.sessionAttachmentsRoot,
@@ -14500,13 +14709,17 @@ function createAcpSessionBridge(opts) {
14500
14709
  `qwen serve: failed to copy attachments for branched session ${result.newSessionId}: ${error instanceof Error ? error.message : String(error)}`
14501
14710
  );
14502
14711
  } finally {
14712
+ await copySources(branchAttachments);
14503
14713
  await branchAttachments.close();
14504
14714
  }
14715
+ } else if (!restoreBranch) {
14716
+ await copySources();
14505
14717
  }
14506
14718
  const rawBranchName = result.displayName ?? result.title;
14507
14719
  const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
14508
14720
  if (!restoreBranch) {
14509
14721
  return {
14722
+ ...sourceWarnings.length > 0 ? { sourceWarnings } : {},
14510
14723
  sessionId: result.newSessionId,
14511
14724
  displayName: branchDisplayName,
14512
14725
  forkedFrom: {
@@ -14570,7 +14783,7 @@ function createAcpSessionBridge(opts) {
14570
14783
  }
14571
14784
  } catch (cleanupErr) {
14572
14785
  writeStderrLine(
14573
- `qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
14786
+ `qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${extractErrorMessage(cleanupErr)}`
14574
14787
  );
14575
14788
  }
14576
14789
  throw restoreErr;
@@ -14585,6 +14798,9 @@ function createAcpSessionBridge(opts) {
14585
14798
  );
14586
14799
  }
14587
14800
  }
14801
+ if (!opts.sessionAttachmentsRoot) {
14802
+ await copySources(newEntry?.attachments);
14803
+ }
14588
14804
  if (newEntry) newEntry.displayName = branchDisplayName;
14589
14805
  let sourcePersisted;
14590
14806
  if (newEntry?.sourceType) {
@@ -14611,6 +14827,7 @@ function createAcpSessionBridge(opts) {
14611
14827
  }
14612
14828
  return {
14613
14829
  ...restored,
14830
+ ...sourceWarnings.length > 0 ? { sourceWarnings } : {},
14614
14831
  displayName: branchDisplayName,
14615
14832
  forkedFrom: {
14616
14833
  sessionId,
@@ -14772,6 +14989,7 @@ function createAcpSessionBridge(opts) {
14772
14989
  const artifacts = new SessionArtifactStore({
14773
14990
  sessionId,
14774
14991
  workspaceCwd: expectation.child.canonicalPath,
14992
+ runtimeBaseDir: opts.artifactSnapshotRuntimeBaseDir,
14775
14993
  persistence: createSessionArtifactPersistence(
14776
14994
  entry.connection,
14777
14995
  sessionId
@@ -15076,6 +15294,69 @@ function createAcpSessionBridge(opts) {
15076
15294
  } catch {
15077
15295
  }
15078
15296
  },
15297
+ async getSessionSources(sessionId, context) {
15298
+ const entry = byId.get(sessionId);
15299
+ if (!entry) throw new SessionNotFoundError(sessionId);
15300
+ if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
15301
+ throw standaloneWorkingDirectoryMissingError();
15302
+ }
15303
+ resolveTrustedClientId(entry, context?.clientId);
15304
+ return requestSessionSources(sessionId, "qwen/session/sources/list");
15305
+ },
15306
+ async upsertSessionSource(sessionId, input, context) {
15307
+ const entry = byId.get(sessionId);
15308
+ if (!entry) throw new SessionNotFoundError(sessionId);
15309
+ if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
15310
+ throw standaloneWorkingDirectoryMissingError();
15311
+ }
15312
+ const clientId = resolveTrustedClientId(entry, context.clientId);
15313
+ if (!clientId) {
15314
+ throw new RequestError(
15315
+ -32602,
15316
+ "A session-bound client id is required",
15317
+ {
15318
+ errorKind: "client_id_required"
15319
+ }
15320
+ );
15321
+ }
15322
+ const validated = validateSessionSourceInput(input);
15323
+ if (validated.locator.type === "attachment") {
15324
+ const attachmentId = validated.locator.attachmentId;
15325
+ const attachments = await entry.attachments.list();
15326
+ if (byId.get(sessionId) !== entry) {
15327
+ throw new SessionNotFoundError(sessionId);
15328
+ }
15329
+ resolveTrustedClientId(entry, context.clientId);
15330
+ if (!attachments.some((item) => item.attachmentId === attachmentId)) {
15331
+ throw new RequestError(-32602, "Session attachment not found", {
15332
+ errorKind: "source_attachment_not_found"
15333
+ });
15334
+ }
15335
+ }
15336
+ return requestSessionSources(sessionId, "qwen/session/sources/upsert", {
15337
+ input: validated
15338
+ });
15339
+ },
15340
+ async removeSessionSource(sessionId, sourceId, context) {
15341
+ const entry = byId.get(sessionId);
15342
+ if (!entry) throw new SessionNotFoundError(sessionId);
15343
+ if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
15344
+ throw standaloneWorkingDirectoryMissingError();
15345
+ }
15346
+ const clientId = resolveTrustedClientId(entry, context.clientId);
15347
+ if (!clientId) {
15348
+ throw new RequestError(
15349
+ -32602,
15350
+ "A session-bound client id is required",
15351
+ {
15352
+ errorKind: "client_id_required"
15353
+ }
15354
+ );
15355
+ }
15356
+ return requestSessionSources(sessionId, "qwen/session/sources/remove", {
15357
+ sourceId
15358
+ });
15359
+ },
15079
15360
  async getSessionArtifacts(sessionId, context) {
15080
15361
  const entry = byId.get(sessionId);
15081
15362
  if (!entry) throw new SessionNotFoundError(sessionId);