@qwen-code/qwen-code 0.22.0-nightly.20260825.22bb5e8b9f → 0.22.1

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 (379) hide show
  1. package/bundled/coordinate/SKILL.md +3 -3
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +2 -0
  3. package/bundled/qc-helper/docs/configuration/settings.md +6 -6
  4. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  6. package/bundled/qc-helper/docs/features/channels/overview.md +3 -3
  7. package/bundled/qc-helper/docs/features/code-review.md +1 -1
  8. package/bundled/qc-helper/docs/qwen-serve.md +2 -0
  9. package/bundled/review/SKILL.md +47 -12
  10. package/bundled/review/references/persistence.md +6 -6
  11. package/bundled/review/references/posting.md +2 -2
  12. package/chunks/MaxSizedBox-UUTUE42J.js +112 -0
  13. package/chunks/{StandaloneSessionPicker-NEWUAPCT.js → StandaloneSessionPicker-XF2TVJFK.js} +78 -77
  14. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  15. package/chunks/{acpAgent-A5CIQGW6.js → acpAgent-GY53MJIW.js} +254 -158
  16. package/chunks/{agent-TQ6CYOIL.js → agent-7U6CC5KF.js} +41 -41
  17. package/chunks/agent-headless-32O4L2CT.js +87 -0
  18. package/chunks/{anthropicContentGenerator-FSBGS426.js → anthropicContentGenerator-U76GTVB6.js} +7 -7
  19. package/chunks/{artifact-tool-UQTNZDUF.js → artifact-tool-XDJCZZCF.js} +2 -2
  20. package/chunks/{askUserQuestion-BSZALR7M.js → askUserQuestion-ZXXERLEV.js} +2 -2
  21. package/chunks/{bridge-MBOVCHXN.js → bridge-DFX2FFH4.js} +57 -56
  22. package/chunks/{ca-DZBZOMLU.js → ca-7HPYOYSZ.js} +1 -0
  23. package/chunks/{channel-management-service-XGGL6PLF.js → channel-management-service-HXXS3HOZ.js} +4 -4
  24. package/chunks/channel-settings-store-ELLH2M4M.js +117 -0
  25. package/chunks/{channel-worker-group-GIXIF4VT.js → channel-worker-group-EVDC2P4K.js} +5 -5
  26. package/chunks/{channel-worker-manager-ZBSYXJEB.js → channel-worker-manager-IJJZHGEI.js} +5 -5
  27. package/chunks/{channel-worker-supervisor-NI6JEY4Q.js → channel-worker-supervisor-YSKB5GVB.js} +9 -5
  28. package/chunks/{chunk-CPZQJP6J.js → chunk-27ONXAFY.js} +1 -1
  29. package/chunks/{chunk-FXNLH7E6.js → chunk-2CRNTW2B.js} +18 -2
  30. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  31. package/chunks/{chunk-YX4II73B.js → chunk-2FN2HNTI.js} +2 -2
  32. package/chunks/{chunk-7KGJGYGA.js → chunk-2MHGD7EE.js} +1 -1
  33. package/chunks/{chunk-H5K5MRU7.js → chunk-2NCVUT3C.js} +4 -4
  34. package/chunks/{chunk-VLEGGCEA.js → chunk-2NNTE2ED.js} +171 -1
  35. package/chunks/{chunk-LNKZTLTH.js → chunk-2SERYG4T.js} +1 -1
  36. package/chunks/{chunk-UEHH33VE.js → chunk-2YDYDDE2.js} +6 -6
  37. package/chunks/{chunk-U7GJPTEY.js → chunk-2YEZNBSD.js} +66 -60
  38. package/chunks/{chunk-L6PFEZUM.js → chunk-2ZV3CZKI.js} +82 -12
  39. package/chunks/{chunk-36XTQW3N.js → chunk-3B5DCAQU.js} +28 -11
  40. package/chunks/{chunk-DE24WTEJ.js → chunk-3BV7TZNQ.js} +3 -3
  41. package/chunks/{chunk-IKPQM6I5.js → chunk-3FSBMAYD.js} +1 -1
  42. package/chunks/{chunk-J54EA46E.js → chunk-3UZCLCXR.js} +3 -3
  43. package/chunks/{chunk-ZROP2DTX.js → chunk-43C2II2G.js} +5 -5
  44. package/chunks/{chunk-2ZH5XAOO.js → chunk-47SIHHPL.js} +8 -8
  45. package/chunks/{chunk-EEBIINBT.js → chunk-4DCP3362.js} +6 -14
  46. package/chunks/{chunk-DF6DJZIX.js → chunk-4TPAG3O7.js} +1 -1
  47. package/chunks/{chunk-6L5EXDDN.js → chunk-5CI4AXDD.js} +4 -4
  48. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  49. package/chunks/{chunk-YPJVAQ7V.js → chunk-5MK32KJV.js} +3 -3
  50. package/chunks/{chunk-XXA72PGJ.js → chunk-5T4LWWNX.js} +2 -2
  51. package/chunks/{chunk-NA6AZRDQ.js → chunk-5Y2JCJAH.js} +2 -2
  52. package/chunks/{chunk-3ROKI6MD.js → chunk-5ZYZPDDF.js} +978 -886
  53. package/chunks/{chunk-U4SJGOBF.js → chunk-62PXFOK4.js} +4 -4
  54. package/chunks/{chunk-SKXXO64C.js → chunk-6E4WHQJV.js} +1 -1
  55. package/chunks/{chunk-6Y7XMJFF.js → chunk-6HTMIKXZ.js} +6 -6
  56. package/chunks/{chunk-MGEXTDBI.js → chunk-6KS24S3X.js} +2 -2
  57. package/chunks/{chunk-ZJWFRMCY.js → chunk-6US7BF3G.js} +2 -2
  58. package/chunks/{chunk-RSOG6JND.js → chunk-6YAR6ZU3.js} +2 -2
  59. package/chunks/{chunk-Z3GFRVAY.js → chunk-73WFGVIZ.js} +3 -3
  60. package/chunks/{chunk-IX3CWNG7.js → chunk-76WGY6LW.js} +3 -3
  61. package/chunks/{chunk-CGWPQ6IM.js → chunk-77TOMRBG.js} +3 -3
  62. package/chunks/{chunk-JVTU5JYO.js → chunk-7AS7QX72.js} +1 -1
  63. package/chunks/{chunk-RLIS2VLZ.js → chunk-7DPKPBOQ.js} +2 -2
  64. package/chunks/{chunk-XQNWTA4Y.js → chunk-7JPW6IYH.js} +1 -1
  65. package/chunks/{chunk-UEY5WCRB.js → chunk-7QGEJI7M.js} +1 -1
  66. package/chunks/{chunk-GWUZOBCQ.js → chunk-A7X32SCT.js} +5 -5
  67. package/chunks/{chunk-R7Q5V3A5.js → chunk-AYVIGUUK.js} +1 -1
  68. package/chunks/{chunk-AIT6BMBI.js → chunk-BDHLBR46.js} +17 -3
  69. package/chunks/{chunk-3G6MRLTM.js → chunk-BKDAF7ES.js} +2 -2
  70. package/chunks/{chunk-5AHCPETA.js → chunk-BQBUZDDH.js} +3 -3
  71. package/chunks/{chunk-3KV5KXKU.js → chunk-BVE5EMIG.js} +2 -2
  72. package/chunks/{chunk-NDVTSFWZ.js → chunk-BX2BZPFJ.js} +3 -3
  73. package/chunks/{chunk-7UVAWPYG.js → chunk-C4WBKZJT.js} +4 -4
  74. package/chunks/{chunk-HYBEI2LH.js → chunk-CITGRGCM.js} +2 -1
  75. package/chunks/{chunk-TEQKBONY.js → chunk-CPPYZHBN.js} +1 -1
  76. package/chunks/chunk-DCSAVGDJ.js +20 -0
  77. package/chunks/{chunk-RSWDOHXS.js → chunk-DEYPMJPD.js} +1 -1
  78. package/chunks/{chunk-OWE7TE3F.js → chunk-DP7LABIB.js} +1 -1
  79. package/chunks/{chunk-LQF4PWEU.js → chunk-E4I5MVBR.js} +1 -1
  80. package/chunks/{chunk-NFDTDV37.js → chunk-E55H6BZ7.js} +4 -0
  81. package/chunks/{chunk-K623ENWT.js → chunk-E6FGMDFQ.js} +4 -0
  82. package/chunks/{chunk-QWTNAHCM.js → chunk-EAV3TENS.js} +3 -3
  83. package/chunks/{chunk-27HAGBZG.js → chunk-EB4VDXNI.js} +1 -1
  84. package/chunks/{chunk-RDPKOVXL.js → chunk-EC5BONC3.js} +1 -1
  85. package/chunks/{chunk-JHZIPJWY.js → chunk-EEQYTWGU.js} +5 -5
  86. package/chunks/{chunk-MFSV57XN.js → chunk-EKP3M4RF.js} +1 -1
  87. package/chunks/{chunk-R544UY5E.js → chunk-ELY4QVIB.js} +1 -1
  88. package/chunks/{chunk-PFCVB5ZI.js → chunk-EMGAVCBZ.js} +2 -2
  89. package/chunks/{chunk-JGDTCEBH.js → chunk-FJWICLG7.js} +1 -1
  90. package/chunks/{chunk-OXMS5HCS.js → chunk-FK4H3V6S.js} +5 -5
  91. package/chunks/{chunk-WANR3VVK.js → chunk-FN5C6C7G.js} +125 -60
  92. package/chunks/{chunk-5PVLDRGJ.js → chunk-FPH6TXD3.js} +1 -1
  93. package/chunks/{chunk-OY3ZSNQC.js → chunk-FVDQ5E67.js} +3 -3
  94. package/chunks/{chunk-J752LLEJ.js → chunk-GNMJNDZE.js} +1 -1
  95. package/chunks/{chunk-MSCVPOZR.js → chunk-GNRVKN76.js} +4 -4
  96. package/chunks/{chunk-FNZ42WN7.js → chunk-GTUKW3I6.js} +1 -1
  97. package/chunks/{chunk-NSPS67BG.js → chunk-GZJUCMH4.js} +1 -1
  98. package/chunks/{chunk-SNWAXNJ4.js → chunk-HJOWQUE2.js} +14 -11
  99. package/chunks/{chunk-3K5ORUVO.js → chunk-I32QCIK7.js} +1 -1
  100. package/chunks/{chunk-BOQRZ443.js → chunk-I6VVOZDK.js} +2 -2
  101. package/chunks/{chunk-KUPVZ4EO.js → chunk-I6YW3T3W.js} +207 -26
  102. package/chunks/{chunk-O6CS7VRT.js → chunk-ICWGPK23.js} +7 -7
  103. package/chunks/{chunk-EFT2T2LA.js → chunk-IJVDHPKD.js} +2 -2
  104. package/chunks/{chunk-SEMN7BNM.js → chunk-IKN3IUJP.js} +9 -8
  105. package/chunks/{chunk-O5ONGZGZ.js → chunk-ILPXSKGQ.js} +2 -2
  106. package/chunks/{chunk-QQQSUCC4.js → chunk-IPQA4SR5.js} +1 -1
  107. package/chunks/{chunk-SXBRB7ZP.js → chunk-IRIX323G.js} +2 -2
  108. package/chunks/{chunk-EJ5XRNOK.js → chunk-J7MLXFC5.js} +2 -2
  109. package/chunks/{chunk-KDGY3ST4.js → chunk-JECO75XD.js} +2 -2
  110. package/chunks/chunk-JLGFGPZJ.js +346 -0
  111. package/chunks/{chunk-COT2IXPM.js → chunk-JUIJ3FXC.js} +5 -5
  112. package/chunks/{chunk-IFWUT4GY.js → chunk-JVPFTDBK.js} +1 -1
  113. package/chunks/{chunk-455ZIBFX.js → chunk-K63NK3KL.js} +13 -13
  114. package/chunks/{chunk-MBLNXX3G.js → chunk-KCOXDRQL.js} +5 -5
  115. package/chunks/{chunk-3LUGIYS3.js → chunk-KOJ6MHD5.js} +3 -1
  116. package/chunks/{chunk-W4JA6Z44.js → chunk-KWFP3WV6.js} +9 -7
  117. package/chunks/{chunk-QKSMM4HF.js → chunk-L436XFLJ.js} +1 -1
  118. package/chunks/{chunk-M4TV7AJX.js → chunk-LI2HEMKO.js} +4 -4
  119. package/chunks/{chunk-FLTGTSLG.js → chunk-LJP2BBMK.js} +4 -4
  120. package/chunks/{chunk-HTIG2U5C.js → chunk-LRKMQPMD.js} +1 -1
  121. package/chunks/{chunk-YS4H3OFV.js → chunk-MDZO5V2O.js} +6 -6
  122. package/chunks/{chunk-2HYQZYPT.js → chunk-MW5AHWOZ.js} +7 -7
  123. package/chunks/{chunk-SJDR2S55.js → chunk-MYLXL7F6.js} +11 -11
  124. package/chunks/{chunk-PIZZIIEA.js → chunk-MZS7GEC7.js} +1 -1
  125. package/chunks/{chunk-H3JIT2M6.js → chunk-NER3H7PI.js} +1 -1
  126. package/chunks/{chunk-XYUJPDPB.js → chunk-NVK4HJYQ.js} +1 -1
  127. package/chunks/{chunk-GQQHY6TL.js → chunk-NY3IJYAV.js} +7 -7
  128. package/chunks/{chunk-3E53DKST.js → chunk-O3BUXIPM.js} +3 -3
  129. package/chunks/{chunk-QOUFO7TV.js → chunk-O5YGAEQS.js} +6 -6
  130. package/chunks/{chunk-OINGLDAX.js → chunk-ODXCSIH5.js} +4 -4
  131. package/chunks/{chunk-FMDWTE5I.js → chunk-OI2DR6QB.js} +2 -2
  132. package/chunks/{chunk-ENZMDVCM.js → chunk-OQ6LTSX3.js} +1 -1
  133. package/chunks/{chunk-KUDADN3R.js → chunk-OT26ITEY.js} +3 -3
  134. package/chunks/{chunk-FZUVUBYH.js → chunk-OX44MOAN.js} +3 -3
  135. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  136. package/chunks/{chunk-D2IGZJA7.js → chunk-PAJGKZAA.js} +272 -3
  137. package/chunks/{chunk-MTKBZIXU.js → chunk-PVBT5QPD.js} +1 -1
  138. package/chunks/{chunk-HDH5IDJH.js → chunk-R2ZJH3FV.js} +3 -3
  139. package/chunks/{chunk-SJLW5XGQ.js → chunk-RRKNX553.js} +1 -1
  140. package/chunks/{chunk-JS55F2GJ.js → chunk-SDVF6A42.js} +3 -3
  141. package/chunks/{chunk-DZPWZPGJ.js → chunk-SKNVVYIJ.js} +3 -3
  142. package/chunks/{chunk-SIC4S3RX.js → chunk-SLEWBQWM.js} +2 -2
  143. package/chunks/{chunk-P7DVAZKV.js → chunk-SM7ZVKTF.js} +7 -7
  144. package/chunks/{chunk-3N7EFOOM.js → chunk-SQPOJ4ZI.js} +11 -1
  145. package/chunks/{chunk-YOM3CJOP.js → chunk-SRGENTPF.js} +19 -19
  146. package/chunks/{chunk-ZB7VDPZB.js → chunk-T2CRBIDJ.js} +1 -1
  147. package/chunks/{chunk-F37T2S4O.js → chunk-T2HMXHYA.js} +6 -6
  148. package/chunks/{chunk-5X33EPHJ.js → chunk-T6OODF2U.js} +1 -1
  149. package/chunks/{chunk-7GECZMES.js → chunk-TKO4TLT6.js} +3 -3
  150. package/chunks/{chunk-PQ4RTSTH.js → chunk-TOF4UZHH.js} +3 -3
  151. package/chunks/{chunk-LD76HNCC.js → chunk-UCSV2IZW.js} +3 -3
  152. package/chunks/{chunk-EUZE3GSL.js → chunk-UX3IFLJM.js} +93 -9
  153. package/chunks/{chunk-AHQBSQYT.js → chunk-V3GINY6K.js} +3 -3
  154. package/chunks/{chunk-DD5XZICM.js → chunk-VL4YX3FH.js} +1 -1
  155. package/chunks/{chunk-DLYJ3RN7.js → chunk-VMDURMFY.js} +58 -32
  156. package/chunks/{chunk-E6BJFSLJ.js → chunk-W2WRNJKX.js} +6 -6
  157. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  158. package/chunks/{chunk-QKGJIP2H.js → chunk-WBT3STGU.js} +1 -1
  159. package/chunks/{chunk-X3PRXXUH.js → chunk-WEGXPP5E.js} +1 -1
  160. package/chunks/{chunk-V6R3IEHF.js → chunk-XJS54K4A.js} +2 -2
  161. package/chunks/{chunk-NDJ3436G.js → chunk-XNXWEGKB.js} +3 -3
  162. package/chunks/{chunk-UFWRXRQ5.js → chunk-XYX474JQ.js} +1312 -290
  163. package/chunks/{chunk-UY2JOZK7.js → chunk-ZEADBZLO.js} +3 -3
  164. package/chunks/{chunk-SNJOBGQV.js → chunk-ZJG323IA.js} +4 -3
  165. package/chunks/{chunk-CZIF7I53.js → chunk-ZKAZP2ZG.js} +2 -2
  166. package/chunks/{chunk-DV3KOUUU.js → chunk-ZLTEQYNC.js} +2 -2
  167. package/chunks/{chunk-RLR7K4JJ.js → chunk-ZWKGZB2K.js} +3 -3
  168. package/chunks/{chunk-EJ2GPZDU.js → chunk-ZXDM7DYV.js} +1049 -383
  169. package/chunks/config-utils-7M6PCTLT.js +113 -0
  170. package/chunks/contextCommand-G4QG3TW6.js +108 -0
  171. package/chunks/{core-runtime-SZFD2YQA.js → core-runtime-PKNQ63VL.js} +53 -52
  172. package/chunks/{create-sub-session-OXESCUS7.js → create-sub-session-PLGPY6TV.js} +53 -52
  173. package/chunks/{create-sub-session-5ZLCAS2P.js → create-sub-session-RVHSWVAP.js} +3 -3
  174. package/chunks/{cron-create-P4CPPO25.js → cron-create-IJGVR5R2.js} +4 -4
  175. package/chunks/{cron-delete-FPD75GL4.js → cron-delete-4N5BI6GL.js} +4 -4
  176. package/chunks/{cron-list-QPML4MWL.js → cron-list-2CATIPUX.js} +4 -4
  177. package/chunks/{daemon-HY4AVTUM.js → daemon-NAYK4XXU.js} +34 -12
  178. package/chunks/{daemon-git-worktree-guard-EAVTZ6CE.js → daemon-git-worktree-guard-LDBJXH2U.js} +331 -86
  179. package/chunks/daemon-status-provider-F5FEHVVG.js +118 -0
  180. package/chunks/daemon-trust-policy-C6YTU5CQ.js +114 -0
  181. package/chunks/{daemon-trust-policy-monitor-ITF54474.js → daemon-trust-policy-monitor-IGEJPHQ4.js} +59 -58
  182. package/chunks/{deferred-core-runtime-WQ4NQA3N.js → deferred-core-runtime-GHT3GDOR.js} +53 -52
  183. package/chunks/{display-image-HOBBUJS5.js → display-image-DR55LL6M.js} +5 -5
  184. package/chunks/dist-4Q7NTUNB.js +2512 -0
  185. package/chunks/{dist-RW4QZD3K.js → dist-6H6RZ5H6.js} +2 -2
  186. package/chunks/{dist-ZUWCGMJ4.js → dist-7CKN54NL.js} +1 -1
  187. package/chunks/{dist-ZQJEKFZH.js → dist-DJBNNPLN.js} +1 -1
  188. package/chunks/{dist-5BX3J3AL.js → dist-FVJZSIO4.js} +28 -7
  189. package/chunks/{dist-OB6D7E7T.js → dist-SATKXKUR.js} +1 -1
  190. package/chunks/{dist-MEANA2OS.js → dist-TJUDJTCB.js} +1 -1
  191. package/chunks/{dist-4LRFQF7R.js → dist-UQUFZDIY.js} +1 -1
  192. package/chunks/{dist-7HGG7XLA.js → dist-ZBVOXSKF.js} +1 -1
  193. package/chunks/earlyInputCapture-HOSJTLWP.js +109 -0
  194. package/chunks/{edit-4MZYBPF5.js → edit-KSPVUEAS.js} +42 -42
  195. package/chunks/{en-X66KZS7T.js → en-6MDBWMTG.js} +1 -0
  196. package/chunks/{enter-worktree-WNR4JUPU.js → enter-worktree-UOZ6ZTP7.js} +7 -7
  197. package/chunks/{enterPlanMode-2EL6YAM5.js → enterPlanMode-DZTABSKN.js} +41 -41
  198. package/chunks/{environment-4QYNT2L3.js → environment-JXOSW25V.js} +57 -54
  199. package/chunks/{errors-N66MMOYD.js → errors-IOXFDE4J.js} +55 -54
  200. package/chunks/{exit-worktree-BUHUM6YC.js → exit-worktree-G2QATUCV.js} +7 -7
  201. package/chunks/{exitPlanMode-F73VQJBO.js → exitPlanMode-PZG4FXRB.js} +41 -41
  202. package/chunks/{fast-path-3L4YK6SO.js → fast-path-EBS7NAVL.js} +2 -2
  203. package/chunks/{gemini-4PINQJWX.js → gemini-JELEKOVS.js} +107 -103
  204. package/chunks/{geminiContentGenerator-7T7IU2V5.js → geminiContentGenerator-I2CKP7XI.js} +8 -8
  205. package/chunks/{glob-TWUYSRRG.js → glob-TDVEVPQZ.js} +41 -41
  206. package/chunks/{goal-tools-FTDQHRRX.js → goal-tools-CNVXMSZD.js} +70 -27
  207. package/chunks/{grep-QUQ3J6SR.js → grep-3NLSS32D.js} +6 -6
  208. package/chunks/handleAutoUpdate-AWAGHKOX.js +111 -0
  209. package/chunks/{i18n-Q6K7AX7Y.js → i18n-CYA25C5F.js} +54 -53
  210. package/chunks/{image-gen-RYOBEDNB.js → image-gen-63NN2H5N.js} +9 -9
  211. package/chunks/initializer-JD2FLNLO.js +115 -0
  212. package/chunks/installationInfo-N3DCWVWR.js +109 -0
  213. package/chunks/{keychain-token-storage-LQTBIXSX.js → keychain-token-storage-3MGFRYGM.js} +2 -2
  214. package/chunks/list-XDQAUET5.js +118 -0
  215. package/chunks/{list-agents-522ILPAR.js → list-agents-EXRSHIDJ.js} +2 -2
  216. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +112 -0
  217. package/chunks/{loggingContentGenerator-RTDUJF6Y.js → loggingContentGenerator-CZWUAHAI.js} +20 -20
  218. package/chunks/{loop-wakeup-VSA4TBIC.js → loop-wakeup-XBPB2BRO.js} +5 -5
  219. package/chunks/{ls-FUCLEBTL.js → ls-WFONAND2.js} +4 -4
  220. package/chunks/{lsp-FYP6TW4R.js → lsp-DUKPDUXN.js} +2 -2
  221. package/chunks/{managed-npm-update-NUDVKV7F.js → managed-npm-update-54W23SP5.js} +54 -53
  222. package/chunks/mcp-2E7ZLMEE.js +112 -0
  223. package/chunks/{monitor-AU2SG5OL.js → monitor-A4J5QRGJ.js} +41 -41
  224. package/chunks/nonInteractiveCli-ZNDXB62Y.js +185 -0
  225. package/chunks/{notebook-edit-TGU7XHIO.js → notebook-edit-4ANFZON5.js} +42 -42
  226. package/chunks/{openaiContentGenerator-QPFWSUPT.js → openaiContentGenerator-JCCJJQZC.js} +24 -24
  227. package/chunks/pidfile-DHV2Y7UD.js +113 -0
  228. package/chunks/{processUtils-ZSHN6VGJ.js → processUtils-JJAR56SO.js} +2 -2
  229. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +107 -0
  230. package/chunks/{qwenContentGenerator-MEXKZX5O.js → qwenContentGenerator-5JM44ZSA.js} +46 -46
  231. package/chunks/{qwenOAuth2-QHHUP4KQ.js → qwenOAuth2-JIYAWXTW.js} +8 -8
  232. package/chunks/{read-file-T7ESVJAQ.js → read-file-N3E5DY7N.js} +12 -12
  233. package/chunks/{read-mcp-resource-5QGBDZ43.js → read-mcp-resource-7A7NFSFL.js} +2 -2
  234. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  235. package/chunks/{record-artifact-K6BYYWXY.js → record-artifact-CPJ4IJSD.js} +4 -4
  236. package/chunks/report-findings-VFM5DENC.js +33 -0
  237. package/chunks/{request-shutdown-EUXDG4IH.js → request-shutdown-AXVOFN5C.js} +7 -7
  238. package/chunks/{resumeHistoryUtils-JFEAZEWW.js → resumeHistoryUtils-YQRITQAG.js} +60 -59
  239. package/chunks/{ripGrep-KOP6AHIX.js → ripGrep-NEIHKBKB.js} +17 -17
  240. package/chunks/{run-qwen-serve-IAVPTDB7.js → run-qwen-serve-IWGPZADI.js} +577 -67
  241. package/chunks/{runtime-ZICTJKT5.js → runtime-I76HPFUE.js} +64 -63
  242. package/chunks/{scheduler-YNVAANNX.js → scheduler-M6YL4K4I.js} +55 -54
  243. package/chunks/{sdk-exporters-http-GCVM7E4X.js → sdk-exporters-http-XXSKBD2C.js} +2 -2
  244. package/chunks/{sdk-impl-E3KA6NMY.js → sdk-impl-VPNBLV7I.js} +4 -4
  245. package/chunks/{send-message-EJUCEIKN.js → send-message-A2GXDX3B.js} +7 -7
  246. package/chunks/{serve-NF25WYMU.js → serve-XY5S63GN.js} +59 -58
  247. package/chunks/{server-7LKYWHCE.js → server-TWXRRREO.js} +605 -334
  248. package/chunks/{session-5FBBDYPI.js → session-IT5ZXU7A.js} +104 -99
  249. package/chunks/{settings-F7IXLQQW.js → settings-IX5HOOCG.js} +58 -57
  250. package/chunks/{shell-IJYC4BVX.js → shell-LZ55AAJB.js} +41 -41
  251. package/chunks/{skill-RTZU743G.js → skill-WSZ53D2R.js} +107 -23
  252. package/chunks/{skill-settings-ZOHS4J2E.js → skill-settings-5U7FTJIK.js} +58 -57
  253. package/chunks/{spawnChannel-JLKWUMTV.js → spawnChannel-TMC6VXGN.js} +55 -54
  254. package/chunks/{standalone-update-W44DUURE.js → standalone-update-CUYGWTR4.js} +55 -54
  255. package/chunks/{startInteractiveUI-7HPDSR7W.js → startInteractiveUI-O6BI2OSA.js} +219 -170
  256. package/chunks/{syntheticOutput-3ITPRJOB.js → syntheticOutput-5AJ444QT.js} +3 -3
  257. package/chunks/{task-create-USIZE733.js → task-create-CDJSOEQD.js} +11 -11
  258. package/chunks/{task-list-AWAJUPIP.js → task-list-BELMPA75.js} +5 -5
  259. package/chunks/{task-stop-I2CQSMDX.js → task-stop-U3S3KZG2.js} +2 -2
  260. package/chunks/{task-update-TFF2KJGL.js → task-update-77VCFDDZ.js} +11 -11
  261. package/chunks/{team-create-IU2A6HD3.js → team-create-UF4TMQEH.js} +41 -41
  262. package/chunks/{team-delete-E4C4AMPF.js → team-delete-YWFXX77L.js} +5 -5
  263. package/chunks/{team-plan-approval-BWI43D37.js → team-plan-approval-U57NSR6C.js} +41 -41
  264. package/chunks/{terminal-image-renderer-GQAMHJF2.js → terminal-image-renderer-DRL3BROJ.js} +55 -54
  265. package/chunks/theme-manager-HHJPUDRN.js +104 -0
  266. package/chunks/{todoWrite-ZUS3HGEF.js → todoWrite-435EO2CS.js} +4 -4
  267. package/chunks/{tool-search-TQNHT22X.js → tool-search-SV35UV72.js} +17 -17
  268. package/chunks/{total-session-admission-JMM73HNK.js → total-session-admission-TQI7TCTL.js} +57 -56
  269. package/chunks/{trustedFolders-BKQ2UXIB.js → trustedFolders-YKK67IP3.js} +54 -53
  270. package/chunks/{update-relaunch-WI7IWWCM.js → update-relaunch-DX7LVA4P.js} +5 -5
  271. package/chunks/{updateCheck-K6WUHPPT.js → updateCheck-6JRTKTUF.js} +58 -57
  272. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +122 -0
  273. package/chunks/{validateNonInterActiveAuth-RXCZM7MM.js → validateNonInterActiveAuth-B26O4YJP.js} +100 -95
  274. package/chunks/{version-IRAYALVC.js → version-K5D7VJ4B.js} +2 -2
  275. package/chunks/{web-fetch-FUG5KGKQ.js → web-fetch-VFHZLLNZ.js} +16 -16
  276. package/chunks/{web-search-SO3LHSHP.js → web-search-AQE5A4J5.js} +9 -9
  277. package/chunks/{workflow-XJRA3GRI.js → workflow-XL6AEUZ7.js} +150 -52
  278. package/chunks/workspace-providers-status-H6TG34YV.js +116 -0
  279. package/chunks/{workspace-registration-store-LCB4GHNP.js → workspace-registration-store-I4U3V5LL.js} +1 -1
  280. package/chunks/{workspace-registry-QWPFWGEF.js → workspace-registry-2PWNIYNI.js} +57 -56
  281. package/chunks/{workspace-service-MPGLZJF6.js → workspace-service-4FGTUJLA.js} +65 -64
  282. package/chunks/workspace-skills-status-7VOLUDT6.js +115 -0
  283. package/chunks/{workspace-trust-reconciler-4QDDGBQZ.js → workspace-trust-reconciler-GJ466KCE.js} +65 -64
  284. package/chunks/write-file-PWOYCT2K.js +90 -0
  285. package/chunks/{zh-TW-FZ3ETVR2.js → zh-TW-MV4FWFB6.js} +1 -0
  286. package/chunks/{zh-K3OJZ5LI.js → zh-X3WGU6SI.js} +1 -0
  287. package/chunks/{zoom-image-TCBO2YL5.js → zoom-image-NYJPC3NI.js} +12 -12
  288. package/cli.js +13 -13
  289. package/locales/ca.js +1 -0
  290. package/locales/en.js +1 -0
  291. package/locales/zh-TW.js +1 -0
  292. package/locales/zh.js +1 -0
  293. package/package.json +3 -3
  294. package/web-shell/assets/{abnfDiagram-VCTEODGH-hQsSuKY7.js → abnfDiagram-VCTEODGH-yq7z7Anb.js} +1 -1
  295. package/web-shell/assets/{arc-CpKLq3XD.js → arc-CbJO0xnT.js} +1 -1
  296. package/web-shell/assets/{architectureDiagram-5GKGNRK7-Bplk1J-m.js → architectureDiagram-5GKGNRK7-CRh89421.js} +1 -1
  297. package/web-shell/assets/{blockDiagram-NRAW4CY4-B-cca4ej.js → blockDiagram-NRAW4CY4-C75KAhKv.js} +1 -1
  298. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ8cn00E.js → c4Diagram-UCG6FXSJ-BzlMveFB.js} +1 -1
  299. package/web-shell/assets/channel-B3sGR79J.js +1 -0
  300. package/web-shell/assets/{chunk-2Q5K7J3B-DEQ2uYU0.js → chunk-2Q5K7J3B-DA8QDX3a.js} +1 -1
  301. package/web-shell/assets/{chunk-5VM5RSS4-DqH8Lz-4.js → chunk-5VM5RSS4-Bgu7gQ7Y.js} +1 -1
  302. package/web-shell/assets/{chunk-F27PBJKO-Dru7qMTB.js → chunk-F27PBJKO-BOew7pIK.js} +1 -1
  303. package/web-shell/assets/{chunk-G27WJ6UU-DN8KcdzT.js → chunk-G27WJ6UU-DHx1I-hO.js} +1 -1
  304. package/web-shell/assets/{chunk-JWPE2WC7-DMS-EquZ.js → chunk-JWPE2WC7-SarFW0WU.js} +1 -1
  305. package/web-shell/assets/{chunk-LCL6LL3I-ubbLaEwq.js → chunk-LCL6LL3I-BLzP083Z.js} +1 -1
  306. package/web-shell/assets/{chunk-POPQ4Y6H-DdIZqnYy.js → chunk-POPQ4Y6H-Bmkv_iKm.js} +1 -1
  307. package/web-shell/assets/{chunk-SVP7TREG-DkgYFSnb.js → chunk-SVP7TREG-MPx9r1N2.js} +1 -1
  308. package/web-shell/assets/{chunk-XXDRQBXY-CaesHiYG.js → chunk-XXDRQBXY-Ck-09rKG.js} +1 -1
  309. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +1 -0
  310. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +1 -0
  311. package/web-shell/assets/{cose-bilkent-JH36ORCC-bqnC4Oq-.js → cose-bilkent-JH36ORCC-DWm6lfOG.js} +1 -1
  312. package/web-shell/assets/{cynefin-OW5HDTMX-mDRBhRzB.js → cynefin-OW5HDTMX-DcBUyr5R.js} +1 -1
  313. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-B4Tod_Ik.js → cynefinDiagram-5FMLGOSQ-Df8qmd_p.js} +1 -1
  314. package/web-shell/assets/{dagre-3AP2YEHR-DU9f-iCw.js → dagre-3AP2YEHR-DDmGspD7.js} +1 -1
  315. package/web-shell/assets/{diagram-S7CK7UJ4-BsYVeB7c.js → diagram-S7CK7UJ4-BK_qFvbi.js} +1 -1
  316. package/web-shell/assets/{diagram-UQ7AKVKN-frM5Sn9C.js → diagram-UQ7AKVKN-Uw3AP_bi.js} +1 -1
  317. package/web-shell/assets/{diagram-VSXAHHWV-C1Z7uZdv.js → diagram-VSXAHHWV-CJOQKxY7.js} +1 -1
  318. package/web-shell/assets/{diagram-VX7I27RA-CIY4x0M9.js → diagram-VX7I27RA-DhdvZna5.js} +1 -1
  319. package/web-shell/assets/{diagram-Z3DM3KII-hTl4GIbg.js → diagram-Z3DM3KII-edQU0nlP.js} +1 -1
  320. package/web-shell/assets/{ebnfDiagram-PWID7BFC-4loIGTHZ.js → ebnfDiagram-PWID7BFC-4kugBEsO.js} +1 -1
  321. package/web-shell/assets/{erDiagram-SSCWMZ5O-B9Up14ul.js → erDiagram-SSCWMZ5O-BMkFivWO.js} +1 -1
  322. package/web-shell/assets/{flowDiagram-A5DVABFB-CIPfQBl9.js → flowDiagram-A5DVABFB-BM1ea8g-.js} +1 -1
  323. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DaZk3lrl.js → ganttDiagram-EL5Y4UJY-CXj_cKRf.js} +1 -1
  324. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-D-knAHoQ.js → gitGraphDiagram-WWUBYQGX-D0nEqwqu.js} +1 -1
  325. package/web-shell/assets/{index-Di8dYJlQ.js → index-B6JN54Pd.js} +1 -1
  326. package/web-shell/assets/{index-RNKRtdDf.css → index-C-XlQn24.css} +1 -1
  327. package/web-shell/assets/{index-pkWucfFU.js → index-DLjXM0dn.js} +367 -367
  328. package/web-shell/assets/{infoDiagram-RXCK75RN-7AJndIyq.js → infoDiagram-RXCK75RN-DF7aGGbQ.js} +1 -1
  329. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DjIU3IKv.js → ishikawaDiagram-5VMMS53U-CZYNX1lL.js} +1 -1
  330. package/web-shell/assets/{journeyDiagram-EYS64GPL-D3cf3462.js → journeyDiagram-EYS64GPL-CvrqMUz1.js} +1 -1
  331. package/web-shell/assets/{kanban-definition-3QL26DDD-CmuPjlRe.js → kanban-definition-3QL26DDD-BZNJQZBj.js} +1 -1
  332. package/web-shell/assets/{layout-C2Ci1XAx.js → layout-Bf83x7D6.js} +1 -1
  333. package/web-shell/assets/{linear-CqOKGHue.js → linear-Bkc3ES2f.js} +1 -1
  334. package/web-shell/assets/{mermaid.core-Bnt57s5_.js → mermaid.core-C6xuovwz.js} +6 -6
  335. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BSSJVfj3.js → mindmap-definition-FBJOCRG2-DzH6gVRg.js} +1 -1
  336. package/web-shell/assets/{pegDiagram-XKGWAZYB-DNLHwge4.js → pegDiagram-XKGWAZYB-DCvLh2fa.js} +1 -1
  337. package/web-shell/assets/{pieDiagram-E7YTZNPT-CYRSio_9.js → pieDiagram-E7YTZNPT-BtjVlx_6.js} +1 -1
  338. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CzSwKETq.js → quadrantDiagram-AXDQQJYC-IbroqxFe.js} +1 -1
  339. package/web-shell/assets/{railroadDiagram-O6MQD6OU-Dzbg_Jis.js → railroadDiagram-O6MQD6OU-BvMykiWW.js} +1 -1
  340. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CY3Apuzl.js → requirementDiagram-EFPCY7ZU-D-HHMyrh.js} +1 -1
  341. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-432Hiv50.js → sankeyDiagram-P5KCCOFB-C0XXhB6d.js} +1 -1
  342. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-CucAf-fk.js → sequenceDiagram-WJ2MYXX4-DseAXj5d.js} +1 -1
  343. package/web-shell/assets/{sizeCapture-X5ZJPWSS-RBc9fiXv.js → sizeCapture-X5ZJPWSS-Cek2EweK.js} +1 -1
  344. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BwsgjK6k.js → stateDiagram-HBIQ2CUA-yLv8wafW.js} +1 -1
  345. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +1 -0
  346. package/web-shell/assets/{swimlanes-XN3QIQJK-DMMYIqPz.js → swimlanes-XN3QIQJK-Cwz-opvE.js} +1 -1
  347. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +8 -0
  348. package/web-shell/assets/{timeline-definition-24CTP7MA-BbmmEMJb.js → timeline-definition-24CTP7MA-BJuFD7OG.js} +1 -1
  349. package/web-shell/assets/{vennDiagram-4TSXK5OY-DlfQjNzM.js → vennDiagram-4TSXK5OY-CNAavdoV.js} +1 -1
  350. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-86EXFbP6.js → wardleyDiagram-VM6X3IG4-DaIjAidq.js} +1 -1
  351. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-794nZBSV.js → xychartDiagram-S5SC5T6Z-DkcQXjTy.js} +1 -1
  352. package/web-shell/index.html +2 -2
  353. package/chunks/MaxSizedBox-RQWAKXYC.js +0 -111
  354. package/chunks/agent-headless-YBSOXERA.js +0 -87
  355. package/chunks/channel-settings-store-DD6W3EJQ.js +0 -116
  356. package/chunks/config-utils-WXWWMH2D.js +0 -112
  357. package/chunks/contextCommand-UKPGPBW5.js +0 -107
  358. package/chunks/daemon-status-provider-D2HNWRDK.js +0 -116
  359. package/chunks/daemon-trust-policy-F4JM5CKX.js +0 -113
  360. package/chunks/earlyInputCapture-54M7AWAF.js +0 -108
  361. package/chunks/handleAutoUpdate-T36AMYVP.js +0 -110
  362. package/chunks/initializer-6USYPDX7.js +0 -114
  363. package/chunks/installationInfo-46TRIE5M.js +0 -108
  364. package/chunks/list-BCX6JAYS.js +0 -117
  365. package/chunks/loadedSettingsAdapter-7OBB7B6J.js +0 -111
  366. package/chunks/mcp-FCS6V74Y.js +0 -111
  367. package/chunks/nonInteractiveCli-CQUUSJ3N.js +0 -180
  368. package/chunks/pidfile-SIEQM3X5.js +0 -112
  369. package/chunks/prompt-terminal-ledger-YIAGDBHG.js +0 -106
  370. package/chunks/theme-manager-73W4SEDX.js +0 -103
  371. package/chunks/useAutoAcceptIndicator-SMCU7IYQ.js +0 -121
  372. package/chunks/workspace-providers-status-ZYXLTCJ5.js +0 -115
  373. package/chunks/workspace-skills-status-ZVFYCT5C.js +0 -114
  374. package/chunks/write-file-2KVXXVWB.js +0 -90
  375. package/web-shell/assets/channel-DggMZLoL.js +0 -1
  376. package/web-shell/assets/classDiagram-DTDB5LWJ-DPMQMV0q.js +0 -1
  377. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DPMQMV0q.js +0 -1
  378. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C_HLER48.js +0 -1
  379. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-KP0j5nd5.js +0 -8
@@ -21,13 +21,13 @@ import {
21
21
  shouldSuppressRememberErrorDetails,
22
22
  workspaceMemoryFailureCode,
23
23
  workspaceMemoryFailureDiagnostics
24
- } from "./chunk-W4JA6Z44.js";
24
+ } from "./chunk-KWFP3WV6.js";
25
25
  import {
26
26
  deriveWebSocketBase,
27
27
  openQwenAsrRealtimeStream,
28
28
  openVoiceStream,
29
29
  openVoiceStreamWithRetry
30
- } from "./chunk-TEQKBONY.js";
30
+ } from "./chunk-CPPYZHBN.js";
31
31
  import {
32
32
  SetupGithubError,
33
33
  collectSessionData,
@@ -39,15 +39,15 @@ import {
39
39
  toJson,
40
40
  toJsonl,
41
41
  toMarkdown
42
- } from "./chunk-SNWAXNJ4.js";
42
+ } from "./chunk-HJOWQUE2.js";
43
43
  import {
44
44
  OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
45
45
  ObservedChannelContactStore
46
- } from "./chunk-DF6DJZIX.js";
46
+ } from "./chunk-4TPAG3O7.js";
47
47
  import {
48
48
  escapeAnsiCtrlCodes
49
49
  } from "./chunk-E7REAOTN.js";
50
- import "./chunk-QKSMM4HF.js";
50
+ import "./chunk-L436XFLJ.js";
51
51
  import "./chunk-2MIN6GRR.js";
52
52
  import "./chunk-QHTIBUWB.js";
53
53
  import "./chunk-TXASDT2M.js";
@@ -128,7 +128,7 @@ import {
128
128
  tagListener,
129
129
  unsafeRevealSecret,
130
130
  validateMcpRuntimeServerName
131
- } from "./chunk-3N7EFOOM.js";
131
+ } from "./chunk-SQPOJ4ZI.js";
132
132
  import "./chunk-VGHZT6JR.js";
133
133
  import {
134
134
  isValidSessionId,
@@ -139,56 +139,11 @@ import {
139
139
  isLoopbackBind
140
140
  } from "./chunk-RXFQM6FQ.js";
141
141
  import "./chunk-UXEO7E3V.js";
142
- import {
143
- createTotalSessionAdmissionController
144
- } from "./chunk-X2UOOG5V.js";
145
- import {
146
- WorkspaceGenerationClosedError,
147
- createSingleWorkspaceRegistry,
148
- createWorkspaceSessionOwnerIndex
149
- } from "./chunk-K3LPAED5.js";
150
- import {
151
- isInternalWorkspaceRuntime
152
- } from "./chunk-NYWWQ437.js";
153
- import "./chunk-OIBUG24X.js";
154
- import {
155
- MAX_SESSION_RESTORE_TIMEOUT_MS,
156
- resolveSessionRestoreTimeoutMs,
157
- restoreRetryAfterSeconds
158
- } from "./chunk-4JRM2BSM.js";
159
- import {
160
- assertValidChannelSecretUpdates
161
- } from "./chunk-RSOG6JND.js";
162
- import {
163
- createWorkspaceProvidersStatusProvider
164
- } from "./chunk-GQQHY6TL.js";
165
- import "./chunk-4K7NQDCG.js";
166
- import {
167
- getAuthTypeFromEnv,
168
- resolveCliGenerationConfig
169
- } from "./chunk-MSCVPOZR.js";
170
- import {
171
- createWorkspaceSkillsStatusProvider
172
- } from "./chunk-NDVTSFWZ.js";
173
- import "./chunk-BGXZBI5B.js";
174
- import {
175
- isServeDebugMode,
176
- mountWebShellAssets,
177
- mountWebShellSpaFallback
178
- } from "./chunk-DIMEPKCW.js";
179
- import {
180
- require_express
181
- } from "./chunk-AYHQZBJ4.js";
182
- import "./chunk-FBX2SDQ4.js";
183
- import {
184
- evaluateDaemonWorkspaceTrust,
185
- readDaemonTrustPolicySnapshot
186
- } from "./chunk-YPJVAQ7V.js";
187
142
  import {
188
143
  readRecentPromptTerminals,
189
144
  reconcileDanglingPromptTerminals,
190
145
  withPromptTerminals
191
- } from "./chunk-SXBRB7ZP.js";
146
+ } from "./chunk-IRIX323G.js";
192
147
  import {
193
148
  EMPTY_WORKSPACE_VOICE_UPDATE_ERROR,
194
149
  MAX_WORKSPACE_SKILL_NAME_LENGTH,
@@ -202,14 +157,14 @@ import {
202
157
  validateWorkspaceSkillName,
203
158
  validateWorkspaceVoiceState,
204
159
  voiceSettingsScopeToWire
205
- } from "./chunk-SJDR2S55.js";
160
+ } from "./chunk-MYLXL7F6.js";
206
161
  import {
207
162
  PermissionRulesValidationError,
208
163
  buildPermissionSettings,
209
164
  isPermissionRuleType,
210
165
  normalizePermissionRules,
211
166
  readPermissionRuleSet
212
- } from "./chunk-3K5ORUVO.js";
167
+ } from "./chunk-I32QCIK7.js";
213
168
  import {
214
169
  assertVoiceBaseUrlNetworkAllowed,
215
170
  isStreamingVoiceModel,
@@ -217,47 +172,45 @@ import {
217
172
  resolveVoiceTranscriptionConfig,
218
173
  sanitizeVoiceErrorMessage,
219
174
  transcribeVoiceAudio
220
- } from "./chunk-IX3CWNG7.js";
175
+ } from "./chunk-76WGY6LW.js";
221
176
  import {
222
177
  isVoiceEnabled,
223
178
  isVoiceMode,
224
179
  readVoiceModel
225
- } from "./chunk-7KGJGYGA.js";
226
- import "./chunk-LNKZTLTH.js";
227
- import "./chunk-Z4X5MTRT.js";
180
+ } from "./chunk-2MHGD7EE.js";
181
+ import "./chunk-2SERYG4T.js";
228
182
  import {
229
- WorkspacePermissionRulesSessionRequiredError,
230
- WorkspaceSettingsPartialPersistError,
231
- mapWorkspaceSkillToggleError
232
- } from "./chunk-Z7VOMGDC.js";
183
+ createTotalSessionAdmissionController
184
+ } from "./chunk-X2UOOG5V.js";
233
185
  import {
234
- daemonObservedContactsPath,
235
- loadChannelsConfig
236
- } from "./chunk-P7DVAZKV.js";
237
- import "./chunk-GWUZOBCQ.js";
238
- import "./chunk-57OAHC2Y.js";
186
+ WorkspaceGenerationClosedError,
187
+ createSingleWorkspaceRegistry,
188
+ createWorkspaceSessionOwnerIndex
189
+ } from "./chunk-K3LPAED5.js";
239
190
  import {
240
- getStableLiveDiscoveryBaseDir
241
- } from "./chunk-5MK45KZ3.js";
191
+ isInternalWorkspaceRuntime
192
+ } from "./chunk-NYWWQ437.js";
193
+ import "./chunk-OIBUG24X.js";
242
194
  import {
243
- LIVE_HOST_BUNDLE_ID,
244
- LIVE_HOST_PROTOCOL_VERSION,
245
- LIVE_INPUT_AUDIO_EPOCH_BYTES
246
- } from "./chunk-NKLP3DCK.js";
195
+ MAX_SESSION_RESTORE_TIMEOUT_MS,
196
+ resolveSessionRestoreTimeoutMs,
197
+ restoreRetryAfterSeconds
198
+ } from "./chunk-4JRM2BSM.js";
199
+ import {
200
+ assertValidChannelSecretUpdates
201
+ } from "./chunk-6YAR6ZU3.js";
247
202
  import {
248
203
  createDaemonStatusProvider
249
- } from "./chunk-OINGLDAX.js";
204
+ } from "./chunk-ODXCSIH5.js";
250
205
  import "./chunk-JS73NNWF.js";
251
- import "./chunk-EEBIINBT.js";
252
- import {
253
- snapshotProcessEnv
254
- } from "./chunk-HDH5IDJH.js";
206
+ import "./chunk-4DCP3362.js";
207
+ import "./chunk-DCSAVGDJ.js";
255
208
  import {
256
209
  SessionArtifactAuthorizationError,
257
210
  SessionArtifactValidationError,
258
211
  createAcpSessionBridge,
259
212
  parseSessionSource
260
- } from "./chunk-KUPVZ4EO.js";
213
+ } from "./chunk-I6YW3T3W.js";
261
214
  import {
262
215
  EVENT_SCHEMA_VERSION,
263
216
  EventBus,
@@ -265,26 +218,74 @@ import {
265
218
  } from "./chunk-7U5G6JXI.js";
266
219
  import "./chunk-WCCLLK7X.js";
267
220
  import "./chunk-OCPBI7J5.js";
221
+ import {
222
+ createWorkspaceProvidersStatusProvider
223
+ } from "./chunk-NY3IJYAV.js";
224
+ import "./chunk-4K7NQDCG.js";
225
+ import {
226
+ getAuthTypeFromEnv,
227
+ resolveCliGenerationConfig
228
+ } from "./chunk-GNRVKN76.js";
229
+ import {
230
+ snapshotProcessEnv
231
+ } from "./chunk-R2ZJH3FV.js";
232
+ import {
233
+ createWorkspaceSkillsStatusProvider
234
+ } from "./chunk-BX2BZPFJ.js";
235
+ import "./chunk-BGXZBI5B.js";
236
+ import "./chunk-Z4X5MTRT.js";
237
+ import {
238
+ WorkspacePermissionRulesSessionRequiredError,
239
+ WorkspaceSettingsPartialPersistError,
240
+ mapWorkspaceSkillToggleError
241
+ } from "./chunk-Z7VOMGDC.js";
242
+ import {
243
+ isServeDebugMode,
244
+ mountWebShellAssets,
245
+ mountWebShellSpaFallback
246
+ } from "./chunk-DIMEPKCW.js";
247
+ import {
248
+ require_express
249
+ } from "./chunk-AYHQZBJ4.js";
250
+ import "./chunk-FBX2SDQ4.js";
251
+ import {
252
+ evaluateDaemonWorkspaceTrust,
253
+ readDaemonTrustPolicySnapshot
254
+ } from "./chunk-5MK32KJV.js";
255
+ import {
256
+ daemonObservedContactsPath,
257
+ loadChannelsConfig
258
+ } from "./chunk-SM7ZVKTF.js";
259
+ import "./chunk-A7X32SCT.js";
260
+ import "./chunk-57OAHC2Y.js";
261
+ import {
262
+ parseChannelWebhookConfigLenient
263
+ } from "./chunk-EAV3TENS.js";
264
+ import "./chunk-7JPW6IYH.js";
265
+ import {
266
+ supportedChannelCatalog
267
+ } from "./chunk-IKN3IUJP.js";
268
+ import "./chunk-V6WHFGST.js";
269
+ import {
270
+ getStableLiveDiscoveryBaseDir
271
+ } from "./chunk-5MK45KZ3.js";
272
+ import {
273
+ LIVE_HOST_BUNDLE_ID,
274
+ LIVE_HOST_PROTOCOL_VERSION,
275
+ LIVE_INPUT_AUDIO_EPOCH_BYTES
276
+ } from "./chunk-NKLP3DCK.js";
268
277
  import {
269
278
  createSpawnChannelFactory
270
- } from "./chunk-NSPS67BG.js";
279
+ } from "./chunk-GZJUCMH4.js";
271
280
  import {
272
281
  STATUS_SCHEMA_VERSION,
273
282
  SessionRestoreTimeoutError,
274
283
  createIdleWorkspaceMemoryStatus,
275
284
  mapDomainErrorToErrorKind
276
- } from "./chunk-HYBEI2LH.js";
285
+ } from "./chunk-CITGRGCM.js";
277
286
  import "./chunk-K6KS3LTN.js";
278
287
  import "./chunk-HMJ2P3SV.js";
279
288
  import "./chunk-7E7UCJHS.js";
280
- import {
281
- parseChannelWebhookConfigLenient
282
- } from "./chunk-QWTNAHCM.js";
283
- import "./chunk-XQNWTA4Y.js";
284
- import {
285
- supportedChannelCatalog
286
- } from "./chunk-SEMN7BNM.js";
287
- import "./chunk-V6WHFGST.js";
288
289
  import {
289
290
  MAX_REGISTERED_WORKSPACES,
290
291
  WorkspaceDisplayNameValidationError,
@@ -292,13 +293,13 @@ import {
292
293
  WorkspaceRegistrationStoreLimitError,
293
294
  normalizeWorkspaceDisplayName,
294
295
  workspaceRegistrationId
295
- } from "./chunk-ENZMDVCM.js";
296
+ } from "./chunk-OQ6LTSX3.js";
296
297
  import {
297
298
  CHANNEL_PROMPT_META_KEY,
298
299
  DAEMON_PROMPT_DISPLAY_TEXT_META_KEY,
299
300
  REQUESTED_SESSION_ID_META_KEY,
300
301
  gradeActiveWorkCoverage
301
- } from "./chunk-LURJYO2T.js";
302
+ } from "./chunk-OZ6KS6KW.js";
302
303
  import {
303
304
  BranchWhilePromptActiveError,
304
305
  BridgeChannelQuarantinedError,
@@ -354,7 +355,7 @@ import {
354
355
  } from "./chunk-7CWEZQ6T.js";
355
356
  import {
356
357
  normalizeWorkerDiagnostic
357
- } from "./chunk-IFWUT4GY.js";
358
+ } from "./chunk-JVPFTDBK.js";
358
359
  import {
359
360
  QWEN_SERVER_TOKEN_ENV
360
361
  } from "./chunk-GYTKQYDB.js";
@@ -369,7 +370,7 @@ import "./chunk-3VUENPWF.js";
369
370
  import "./chunk-5HBA2Z7V.js";
370
371
  import {
371
372
  sanitizeLogText
372
- } from "./chunk-NFDTDV37.js";
373
+ } from "./chunk-E55H6BZ7.js";
373
374
  import "./chunk-IW6RQPQB.js";
374
375
  import {
375
376
  WORKSPACE_RESTRICTED_SETTING_KEYS,
@@ -381,24 +382,26 @@ import {
381
382
  getWritableScopes,
382
383
  loadSettings,
383
384
  validateSettingValue
384
- } from "./chunk-YS4H3OFV.js";
385
+ } from "./chunk-MDZO5V2O.js";
385
386
  import "./chunk-RKUWKYED.js";
386
- import "./chunk-AIT6BMBI.js";
387
+ import "./chunk-BDHLBR46.js";
387
388
  import "./chunk-GOXKNSDZ.js";
388
389
  import "./chunk-IDS7MSUP.js";
389
390
  import {
390
391
  detectSystemLanguage,
391
392
  resolveLanguageSetting
392
- } from "./chunk-E6BJFSLJ.js";
393
+ } from "./chunk-W2WRNJKX.js";
393
394
  import {
394
395
  SUPPORTED_LANGUAGES,
395
396
  resolveSupportedLanguage
396
397
  } from "./chunk-5EJZE3FP.js";
397
- import "./chunk-FXNLH7E6.js";
398
+ import "./chunk-2CRNTW2B.js";
398
399
  import "./chunk-5PA6UEYA.js";
400
+ import "./chunk-6KS24S3X.js";
401
+ import "./chunk-W3N5XAZ6.js";
399
402
  import {
400
403
  getWorkspaceTrustStatus
401
- } from "./chunk-NDJ3436G.js";
404
+ } from "./chunk-XNXWEGKB.js";
402
405
  import "./chunk-NPQ5ZKRP.js";
403
406
  import {
404
407
  isWithinRoot as isWithinRoot2
@@ -428,21 +431,20 @@ import {
428
431
  shouldShowStep,
429
432
  watchRepoBranch,
430
433
  writeWorkspaceContextFile
431
- } from "./chunk-DLYJ3RN7.js";
432
- import "./chunk-EJ5XRNOK.js";
433
- import "./chunk-MGEXTDBI.js";
434
- import "./chunk-YLFLHKDL.js";
435
- import "./chunk-HTIG2U5C.js";
434
+ } from "./chunk-VMDURMFY.js";
435
+ import "./chunk-J7MLXFC5.js";
436
+ import "./chunk-LRKMQPMD.js";
436
437
  import "./chunk-LJZSMWOH.js";
437
- import "./chunk-2ZH5XAOO.js";
438
- import "./chunk-DZPWZPGJ.js";
438
+ import "./chunk-47SIHHPL.js";
439
+ import "./chunk-JLGFGPZJ.js";
440
+ import "./chunk-SKNVVYIJ.js";
439
441
  import {
440
442
  readWorktreeSession,
441
443
  writeWorktreeSession
442
- } from "./chunk-LD76HNCC.js";
443
- import "./chunk-F37T2S4O.js";
444
- import "./chunk-IKPQM6I5.js";
445
- import "./chunk-V6R3IEHF.js";
444
+ } from "./chunk-UCSV2IZW.js";
445
+ import "./chunk-T2HMXHYA.js";
446
+ import "./chunk-3FSBMAYD.js";
447
+ import "./chunk-XJS54K4A.js";
446
448
  import "./chunk-ZPJWUGCS.js";
447
449
  import {
448
450
  QwenOAuth2Client,
@@ -452,8 +454,8 @@ import {
452
454
  isDeviceAuthorizationSuccess,
453
455
  isDeviceTokenPending,
454
456
  isDeviceTokenSuccess
455
- } from "./chunk-RLR7K4JJ.js";
456
- import "./chunk-FZUVUBYH.js";
457
+ } from "./chunk-ZWKGZB2K.js";
458
+ import "./chunk-OX44MOAN.js";
457
459
  import {
458
460
  BuiltinAgentRegistry,
459
461
  Client,
@@ -475,12 +477,16 @@ import {
475
477
  SessionOrganizationError,
476
478
  SessionOrganizationService,
477
479
  SessionService,
480
+ SessionStorageEntryError,
481
+ SessionTranscriptChangedError,
478
482
  SessionTranscriptCursorCodec,
483
+ SessionTranscriptIdentityUnavailableError,
479
484
  SessionTranscriptPageTooLargeError,
480
485
  SessionTranscriptReader,
481
486
  SessionTranscriptSnapshotUnavailableError,
482
487
  SessionTranscriptTooLargeError,
483
488
  SessionWriterError,
489
+ SessionWriterUnavailableError,
484
490
  StandardFileSystemService,
485
491
  StdioClientTransport,
486
492
  StreamableHTTPClientTransport,
@@ -504,7 +510,7 @@ import {
504
510
  sleepInhibitor,
505
511
  stripTerminalControlSequences,
506
512
  upsertSessionPr
507
- } from "./chunk-UFWRXRQ5.js";
513
+ } from "./chunk-XYX474JQ.js";
508
514
  import "./chunk-GOFAQQZA.js";
509
515
  import "./chunk-5M6IDOMF.js";
510
516
  import "./chunk-TWPJO254.js";
@@ -512,12 +518,12 @@ import "./chunk-CQ35AJ4Z.js";
512
518
  import {
513
519
  MAX_JOBS,
514
520
  nextDurableFireMs
515
- } from "./chunk-J54EA46E.js";
516
- import "./chunk-PQ4RTSTH.js";
517
- import "./chunk-3E53DKST.js";
518
- import "./chunk-DV3KOUUU.js";
521
+ } from "./chunk-3UZCLCXR.js";
522
+ import "./chunk-TOF4UZHH.js";
523
+ import "./chunk-O3BUXIPM.js";
524
+ import "./chunk-ZLTEQYNC.js";
519
525
  import "./chunk-6PVPNMXU.js";
520
- import "./chunk-R7Q5V3A5.js";
526
+ import "./chunk-AYVIGUUK.js";
521
527
  import {
522
528
  nextFireTime,
523
529
  parseCron
@@ -530,39 +536,39 @@ import {
530
536
  readCronTasks,
531
537
  taskHasLegacyCondition,
532
538
  updateCronTasks
533
- } from "./chunk-KDGY3ST4.js";
539
+ } from "./chunk-JECO75XD.js";
534
540
  import "./chunk-O6GEWCJA.js";
535
541
  import "./chunk-T26EAKDL.js";
536
542
  import {
537
543
  GitWorktreeService,
538
544
  writeWorktreeSessionMarker
539
- } from "./chunk-FLTGTSLG.js";
545
+ } from "./chunk-LJP2BBMK.js";
540
546
  import "./chunk-CPBF7KYF.js";
541
- import "./chunk-NA6AZRDQ.js";
542
- import "./chunk-ZB7VDPZB.js";
543
- import "./chunk-CGWPQ6IM.js";
547
+ import "./chunk-5Y2JCJAH.js";
548
+ import "./chunk-T2CRBIDJ.js";
549
+ import "./chunk-77TOMRBG.js";
544
550
  import {
545
551
  findGitRoot,
546
552
  glob
547
- } from "./chunk-RSWDOHXS.js";
548
- import "./chunk-5X33EPHJ.js";
549
- import "./chunk-CPZQJP6J.js";
550
- import "./chunk-UY2JOZK7.js";
553
+ } from "./chunk-DEYPMJPD.js";
554
+ import "./chunk-T6OODF2U.js";
555
+ import "./chunk-27ONXAFY.js";
556
+ import "./chunk-ZEADBZLO.js";
551
557
  import {
552
558
  parseGoalControlRequest
553
- } from "./chunk-WANR3VVK.js";
559
+ } from "./chunk-FN5C6C7G.js";
554
560
  import {
555
561
  APPROVAL_MODES
556
- } from "./chunk-3KV5KXKU.js";
562
+ } from "./chunk-BVE5EMIG.js";
557
563
  import "./chunk-MLXTMF7H.js";
558
564
  import "./chunk-NAVJD2PQ.js";
559
- import "./chunk-OY3ZSNQC.js";
560
- import "./chunk-AHQBSQYT.js";
565
+ import "./chunk-FVDQ5E67.js";
566
+ import "./chunk-V3GINY6K.js";
561
567
  import "./chunk-QHMLYMMS.js";
562
568
  import {
563
569
  recordDaemonBridgeError,
564
570
  recordDaemonHttpRequest
565
- } from "./chunk-JS55F2GJ.js";
571
+ } from "./chunk-SDVF6A42.js";
566
572
  import "./chunk-P3QQPMQA.js";
567
573
  import {
568
574
  addDaemonRequestAttribute,
@@ -575,24 +581,24 @@ import {
575
581
  recordDaemonHttpResponse,
576
582
  runWithDaemonTelemetryContext,
577
583
  withDaemonRequestSpan
578
- } from "./chunk-O5ONGZGZ.js";
584
+ } from "./chunk-ILPXSKGQ.js";
579
585
  import "./chunk-XWRJCPHC.js";
580
586
  import "./chunk-VNOVK4I7.js";
581
587
  import "./chunk-SAH4BD2J.js";
582
- import "./chunk-CZIF7I53.js";
583
- import "./chunk-OWE7TE3F.js";
588
+ import "./chunk-ZKAZP2ZG.js";
589
+ import "./chunk-DP7LABIB.js";
584
590
  import "./chunk-S6LOFUVP.js";
585
591
  import "./chunk-2LD5U7Q3.js";
586
592
  import "./chunk-DJ2GSRLV.js";
587
- import "./chunk-BOQRZ443.js";
593
+ import "./chunk-I6VVOZDK.js";
588
594
  import "./chunk-K2OJUPOE.js";
589
595
  import "./chunk-CFKIH3D3.js";
590
- import "./chunk-27HAGBZG.js";
591
- import "./chunk-JGDTCEBH.js";
596
+ import "./chunk-EB4VDXNI.js";
597
+ import "./chunk-FJWICLG7.js";
592
598
  import {
593
599
  parseLineTolerant,
594
600
  read
595
- } from "./chunk-EUZE3GSL.js";
601
+ } from "./chunk-UX3IFLJM.js";
596
602
  import "./chunk-YRLW2MSX.js";
597
603
  import "./chunk-VGC4I5JJ.js";
598
604
  import {
@@ -603,41 +609,41 @@ import {
603
609
  getAllGeminiMdFilenames,
604
610
  isUtf8CompatibleEncoding,
605
611
  isWithinRoot
606
- } from "./chunk-QKGJIP2H.js";
607
- import "./chunk-MTKBZIXU.js";
608
- import "./chunk-QQQSUCC4.js";
612
+ } from "./chunk-WBT3STGU.js";
613
+ import "./chunk-PVBT5QPD.js";
614
+ import "./chunk-IPQA4SR5.js";
609
615
  import "./chunk-WZAD4ZNJ.js";
610
616
  import "./chunk-FPGTNKCP.js";
611
- import "./chunk-SIC4S3RX.js";
612
- import "./chunk-O6CS7VRT.js";
617
+ import "./chunk-SLEWBQWM.js";
618
+ import "./chunk-ICWGPK23.js";
613
619
  import "./chunk-XZA32HII.js";
614
- import "./chunk-UEY5WCRB.js";
615
- import "./chunk-FNZ42WN7.js";
620
+ import "./chunk-7QGEJI7M.js";
621
+ import "./chunk-GTUKW3I6.js";
616
622
  import "./chunk-HHJLM3WQ.js";
617
623
  import {
618
624
  isTelemetrySdkInitialized,
619
625
  redactUrlCredentials,
620
626
  stripAnsiAndControl
621
- } from "./chunk-ZJWFRMCY.js";
627
+ } from "./chunk-6US7BF3G.js";
622
628
  import "./chunk-74TONY4F.js";
623
- import "./chunk-DD5XZICM.js";
629
+ import "./chunk-VL4YX3FH.js";
624
630
  import {
625
631
  SubagentError,
626
632
  SubagentErrorCode
627
- } from "./chunk-COT2IXPM.js";
628
- import "./chunk-K623ENWT.js";
633
+ } from "./chunk-JUIJ3FXC.js";
634
+ import "./chunk-E6FGMDFQ.js";
629
635
  import {
630
636
  escapeXml
631
637
  } from "./chunk-AQ37AY7B.js";
632
- import "./chunk-SJLW5XGQ.js";
633
- import "./chunk-3LUGIYS3.js";
638
+ import "./chunk-RRKNX553.js";
639
+ import "./chunk-KOJ6MHD5.js";
634
640
  import {
635
641
  FatalConfigError,
636
642
  Storage,
637
643
  createDebugLogger,
638
644
  getErrorMessage,
639
645
  runWithoutDebugLogSession
640
- } from "./chunk-VLEGGCEA.js";
646
+ } from "./chunk-2NNTE2ED.js";
641
647
  import {
642
648
  writeStderrLine,
643
649
  writeStderrLineSafe,
@@ -3752,6 +3758,17 @@ function resolveWorkspaceRuntimeFromParam(registry, req, res, paramName = "works
3752
3758
  return runtime;
3753
3759
  }
3754
3760
  __name(resolveWorkspaceRuntimeFromParam, "resolveWorkspaceRuntimeFromParam");
3761
+ function resolveTrustedRuntime(registry, req, res, paramName = "workspace") {
3762
+ const runtime = resolveWorkspaceRuntimeFromParam(
3763
+ registry,
3764
+ req,
3765
+ res,
3766
+ paramName
3767
+ );
3768
+ if (!runtime) return null;
3769
+ return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
3770
+ }
3771
+ __name(resolveTrustedRuntime, "resolveTrustedRuntime");
3755
3772
  function resolveWorkspaceRuntimeWithLiveCompatibilityFromParam(registry, req, res, paramName = "workspace") {
3756
3773
  if (typeof registry.getManagedEntryByWorkspaceId !== "function" || typeof registry.getManagedEntryByWorkspaceCwd !== "function") {
3757
3774
  return resolveWorkspaceRuntimeFromParam(registry, req, res, paramName);
@@ -8287,56 +8304,68 @@ function isBoundTask(task) {
8287
8304
  return typeof task.sessionId === "string" && task.sessionId.length > 0;
8288
8305
  }
8289
8306
  __name(isBoundTask, "isBoundTask");
8290
- async function disableTasksForSessions(projectRoot, sessionIds) {
8307
+ async function disableTasksForSessions(projectRoot, sessionIds, options = {}) {
8291
8308
  if (sessionIds.length === 0) return;
8292
8309
  const targets = new Set(sessionIds);
8293
- await updateCronTasks(projectRoot, (tasks) => {
8294
- let changed = false;
8295
- const next = tasks.map((task) => {
8296
- if (isBoundTask(task) && targets.has(task.sessionId) && task.enabled !== false) {
8297
- changed = true;
8298
- return { ...task, enabled: false, disabledByArchive: true };
8299
- }
8300
- return task;
8301
- });
8302
- return changed ? next : tasks;
8303
- });
8310
+ await updateCronTasks(
8311
+ projectRoot,
8312
+ (tasks) => {
8313
+ let changed = false;
8314
+ const next = tasks.map((task) => {
8315
+ if (isBoundTask(task) && targets.has(task.sessionId) && task.enabled !== false) {
8316
+ changed = true;
8317
+ return { ...task, enabled: false, disabledByArchive: true };
8318
+ }
8319
+ return task;
8320
+ });
8321
+ return changed ? next : tasks;
8322
+ },
8323
+ options
8324
+ );
8304
8325
  }
8305
8326
  __name(disableTasksForSessions, "disableTasksForSessions");
8306
- async function enableTasksForSessions(projectRoot, sessionIds, now = Date.now()) {
8327
+ async function enableTasksForSessions(projectRoot, sessionIds, now = Date.now(), options = {}) {
8307
8328
  if (sessionIds.length === 0) return;
8308
8329
  const targets = new Set(sessionIds);
8309
- await updateCronTasks(projectRoot, (tasks) => {
8310
- let changed = false;
8311
- const next = tasks.map((task) => {
8312
- if (isBoundTask(task) && targets.has(task.sessionId) && task.enabled === false && task.disabledByArchive === true) {
8313
- changed = true;
8314
- const resumed = { ...task, enabled: true };
8315
- delete resumed.disabledByArchive;
8316
- const minute = now - now % 6e4;
8317
- if (resumed.recurring) {
8318
- resumed.lastFiredAt = minute;
8319
- } else {
8320
- resumed.createdAt = now;
8321
- resumed.lastFiredAt = minute;
8330
+ await updateCronTasks(
8331
+ projectRoot,
8332
+ (tasks) => {
8333
+ let changed = false;
8334
+ const next = tasks.map((task) => {
8335
+ if (isBoundTask(task) && targets.has(task.sessionId) && task.enabled === false && task.disabledByArchive === true) {
8336
+ changed = true;
8337
+ const resumed = { ...task, enabled: true };
8338
+ delete resumed.disabledByArchive;
8339
+ const minute = now - now % 6e4;
8340
+ if (resumed.recurring) {
8341
+ resumed.lastFiredAt = minute;
8342
+ } else {
8343
+ resumed.createdAt = now;
8344
+ resumed.lastFiredAt = minute;
8345
+ }
8346
+ return resumed;
8322
8347
  }
8323
- return resumed;
8324
- }
8325
- return task;
8326
- });
8327
- return changed ? next : tasks;
8328
- });
8348
+ return task;
8349
+ });
8350
+ return changed ? next : tasks;
8351
+ },
8352
+ options
8353
+ );
8329
8354
  }
8330
8355
  __name(enableTasksForSessions, "enableTasksForSessions");
8331
- async function removeTasksForSessions(projectRoot, sessionIds) {
8356
+ async function removeTasksForSessions(projectRoot, sessionIds, options = {}) {
8332
8357
  if (sessionIds.length === 0) return;
8333
8358
  const targets = new Set(sessionIds);
8334
- await updateCronTasks(projectRoot, (tasks) => {
8335
- const next = tasks.filter(
8336
- (task) => !isBoundTask(task) || !targets.has(task.sessionId)
8337
- );
8338
- return next.length === tasks.length ? tasks : next;
8339
- });
8359
+ await updateCronTasks(
8360
+ projectRoot,
8361
+ (tasks) => {
8362
+ const next = tasks.filter(
8363
+ (task) => !isBoundTask(task) || !targets.has(task.sessionId)
8364
+ );
8365
+ return next.length === tasks.length ? tasks : next;
8366
+ },
8367
+ options
8368
+ );
8340
8369
  }
8341
8370
  __name(removeTasksForSessions, "removeTasksForSessions");
8342
8371
 
@@ -8458,10 +8487,22 @@ async function runWithDaemonWriterLease(params) {
8458
8487
  } = params;
8459
8488
  let lease;
8460
8489
  try {
8461
- lease = await service.acquireSessionWriterLease(sessionId, {
8490
+ const leaseOptions = {
8462
8491
  processKind: "daemon",
8463
- reclaimPolicy: "never"
8464
- });
8492
+ reclaimPolicy: "never",
8493
+ takeoverPolicy: "certified"
8494
+ };
8495
+ try {
8496
+ lease = await service.acquireSessionWriterLease(sessionId, leaseOptions);
8497
+ } catch (error2) {
8498
+ if (!(error2 instanceof SessionWriterUnavailableError) && !(error2 instanceof SessionTranscriptChangedError)) {
8499
+ throw error2;
8500
+ }
8501
+ lease = await service.acquireSessionMaintenanceLease(
8502
+ sessionId,
8503
+ leaseOptions
8504
+ );
8505
+ }
8465
8506
  } catch (error2) {
8466
8507
  return { mutationApplied: false, error: error2 };
8467
8508
  }
@@ -8538,27 +8579,61 @@ function logMaintenanceLeaseReleaseFailure(params) {
8538
8579
  }
8539
8580
  __name(logMaintenanceLeaseReleaseFailure, "logMaintenanceLeaseReleaseFailure");
8540
8581
  async function classifySessionLocation(service, sessionId) {
8541
- return service.getSessionLocation(sessionId);
8582
+ return service.getMaintainableSessionLocation(sessionId);
8542
8583
  }
8543
8584
  __name(classifySessionLocation, "classifySessionLocation");
8544
8585
  function sessionLocationError(sessionId) {
8545
- return new Error(`Session archive conflict: ${sessionId}`);
8586
+ const error2 = new SessionConflictError(sessionId);
8587
+ error2.message = `Session "${sessionId}" exists in both active and archived directories. Retry with resolveConflicts: true to keep one copy.`;
8588
+ return error2;
8546
8589
  }
8547
8590
  __name(sessionLocationError, "sessionLocationError");
8548
- function updateScheduledTaskForMaintenance(service, sessionId, action) {
8591
+ function updateScheduledTaskForMaintenance(service, sessionId, action, assertCanMutate) {
8549
8592
  if (action === "archive") {
8550
- return disableTasksForSessions(service.getProjectRoot(), [sessionId]);
8593
+ return disableTasksForSessions(service.getProjectRoot(), [sessionId], {
8594
+ assertCanCommit: assertCanMutate
8595
+ });
8551
8596
  }
8552
8597
  if (action === "unarchive") {
8553
- return enableTasksForSessions(service.getProjectRoot(), [sessionId]);
8598
+ return enableTasksForSessions(
8599
+ service.getProjectRoot(),
8600
+ [sessionId],
8601
+ Date.now(),
8602
+ { assertCanCommit: assertCanMutate }
8603
+ );
8554
8604
  }
8555
- return removeTasksForSessions(service.getProjectRoot(), [sessionId]);
8605
+ return removeTasksForSessions(service.getProjectRoot(), [sessionId], {
8606
+ assertCanCommit: assertCanMutate
8607
+ });
8556
8608
  }
8557
8609
  __name(updateScheduledTaskForMaintenance, "updateScheduledTaskForMaintenance");
8558
- async function deletePersistedSessionWithLease(service, sessionId) {
8610
+ async function deletePersistedSessionWithLease(service, sessionId, assertCanMutate) {
8559
8611
  const initialLocation = await classifySessionLocation(service, sessionId);
8560
8612
  if (initialLocation === void 0) {
8561
- return { kind: "notFound", mutationApplied: false };
8613
+ let maintenanceError;
8614
+ try {
8615
+ assertCanMutate?.();
8616
+ await updateScheduledTaskForMaintenance(
8617
+ service,
8618
+ sessionId,
8619
+ "delete",
8620
+ assertCanMutate
8621
+ );
8622
+ } catch (error2) {
8623
+ maintenanceError = error2;
8624
+ logSessionArchiveWarning(
8625
+ `scheduled task lifecycle update failed action=delete workspace=${safeLogValue(
8626
+ service.getProjectRoot()
8627
+ )} session=${safeLogValue(sessionId)} error=${safeLogValue(
8628
+ errorMessage(error2)
8629
+ )}`
8630
+ );
8631
+ }
8632
+ return {
8633
+ kind: "notFound",
8634
+ mutationApplied: false,
8635
+ maintenanceError
8636
+ };
8562
8637
  }
8563
8638
  const mutation = await runWithDaemonWriterLease({
8564
8639
  action: "delete",
@@ -8572,26 +8647,38 @@ async function deletePersistedSessionWithLease(service, sessionId) {
8572
8647
  mutationApplied: false
8573
8648
  };
8574
8649
  }
8575
- await assertOwnedAndUnchanged();
8576
- const removed = await service.removeSession(sessionId);
8650
+ const removed = await service.removeSession(sessionId, {
8651
+ assertStorageUnchanged: assertOwnedAndUnchanged,
8652
+ assertCanMutate
8653
+ });
8577
8654
  return {
8578
8655
  value: removed ? "removed" : "notFound",
8579
8656
  mutationApplied: removed
8580
8657
  };
8581
8658
  }, "mutate"),
8582
8659
  mutationAppliedAfterError: /* @__PURE__ */ __name(async () => await classifySessionLocation(service, sessionId) === void 0, "mutationAppliedAfterError"),
8583
- afterMutationApplied: /* @__PURE__ */ __name(() => updateScheduledTaskForMaintenance(service, sessionId, "delete"), "afterMutationApplied")
8660
+ afterMutationApplied: /* @__PURE__ */ __name(async () => {
8661
+ assertCanMutate?.();
8662
+ await updateScheduledTaskForMaintenance(
8663
+ service,
8664
+ sessionId,
8665
+ "delete",
8666
+ assertCanMutate
8667
+ );
8668
+ }, "afterMutationApplied")
8584
8669
  });
8585
8670
  if (mutation.error !== void 0) {
8586
8671
  return {
8587
8672
  kind: "error",
8588
8673
  error: mutation.error,
8589
- mutationApplied: mutation.mutationApplied
8674
+ mutationApplied: mutation.mutationApplied,
8675
+ maintenanceError: mutation.maintenanceError
8590
8676
  };
8591
8677
  }
8592
8678
  return {
8593
8679
  kind: mutation.value ?? "notFound",
8594
- mutationApplied: mutation.mutationApplied
8680
+ mutationApplied: mutation.mutationApplied,
8681
+ maintenanceError: mutation.maintenanceError
8595
8682
  };
8596
8683
  }
8597
8684
  __name(deletePersistedSessionWithLease, "deletePersistedSessionWithLease");
@@ -8602,6 +8689,7 @@ async function deleteDaemonSessions(params) {
8602
8689
  bridge,
8603
8690
  coordinator,
8604
8691
  coordinatorLockHeld = false,
8692
+ assertCanMutate,
8605
8693
  onError
8606
8694
  } = params;
8607
8695
  const uniqueSessionIds = [
@@ -8616,10 +8704,12 @@ async function deleteDaemonSessions(params) {
8616
8704
  uniqueSessionIds.map(async (sessionId) => {
8617
8705
  try {
8618
8706
  const mutateSession = /* @__PURE__ */ __name(async () => {
8707
+ assertCanMutate?.();
8619
8708
  const removePersistedSession = /* @__PURE__ */ __name(async () => {
8620
8709
  const result = await deletePersistedSessionWithLease(
8621
8710
  service,
8622
- sessionId
8711
+ sessionId,
8712
+ assertCanMutate
8623
8713
  );
8624
8714
  if (result.kind === "error") {
8625
8715
  onError?.({
@@ -8630,7 +8720,13 @@ async function deleteDaemonSessions(params) {
8630
8720
  return result;
8631
8721
  }
8632
8722
  try {
8633
- await bridge.deleteSessionAttachments(sessionId);
8723
+ if (assertCanMutate) {
8724
+ await bridge.deleteSessionAttachments(sessionId, {
8725
+ assertCanCommit: assertCanMutate
8726
+ });
8727
+ } else {
8728
+ await bridge.deleteSessionAttachments(sessionId);
8729
+ }
8634
8730
  return result;
8635
8731
  } catch (error2) {
8636
8732
  onError?.({
@@ -8641,7 +8737,8 @@ async function deleteDaemonSessions(params) {
8641
8737
  return {
8642
8738
  kind: "error",
8643
8739
  error: error2,
8644
- mutationApplied: result.mutationApplied
8740
+ mutationApplied: result.mutationApplied,
8741
+ maintenanceError: result.maintenanceError
8645
8742
  };
8646
8743
  }
8647
8744
  }, "removePersistedSession");
@@ -8695,6 +8792,12 @@ async function deleteDaemonSessions(params) {
8695
8792
  } else {
8696
8793
  errors.push({ sessionId, error: errorMessage(result.error) });
8697
8794
  }
8795
+ if (result.maintenanceError !== void 0) {
8796
+ errors.push({
8797
+ sessionId,
8798
+ error: "Scheduled task lifecycle update failed."
8799
+ });
8800
+ }
8698
8801
  }
8699
8802
  return { removed, notFound, errors };
8700
8803
  }
@@ -8840,7 +8943,9 @@ async function archiveDaemonSessions(params) {
8840
8943
  service,
8841
8944
  bridge,
8842
8945
  coordinator,
8843
- coordinatorLockHeld = false
8946
+ coordinatorLockHeld = false,
8947
+ resolveConflicts = false,
8948
+ assertCanMutate
8844
8949
  } = params;
8845
8950
  const uniqueSessionIds = [
8846
8951
  ...new Set(sessionIds.map(normalizeSessionIdForLookup))
@@ -8854,6 +8959,7 @@ async function archiveDaemonSessions(params) {
8854
8959
  uniqueSessionIds.map(async (sessionId) => {
8855
8960
  try {
8856
8961
  const mutateSession = /* @__PURE__ */ __name(async () => {
8962
+ assertCanMutate?.();
8857
8963
  try {
8858
8964
  await bridge.closeSession(sessionId, void 0, {
8859
8965
  requireAgentClose: true
@@ -8875,12 +8981,31 @@ async function archiveDaemonSessions(params) {
8875
8981
  return { kind: "notFound", mutationApplied: false };
8876
8982
  }
8877
8983
  if (initialLocation === "archived") {
8984
+ let maintenanceError;
8985
+ try {
8986
+ await updateScheduledTaskForMaintenance(
8987
+ service,
8988
+ sessionId,
8989
+ "archive",
8990
+ assertCanMutate
8991
+ );
8992
+ } catch (error2) {
8993
+ maintenanceError = error2;
8994
+ logSessionArchiveWarning(
8995
+ `scheduled task lifecycle update failed action=archive workspace=${safeLogValue(
8996
+ service.getProjectRoot()
8997
+ )} session=${safeLogValue(sessionId)} error=${safeLogValue(
8998
+ errorMessage(error2)
8999
+ )}`
9000
+ );
9001
+ }
8878
9002
  return {
8879
9003
  kind: "alreadyArchived",
8880
- mutationApplied: false
9004
+ mutationApplied: false,
9005
+ maintenanceError
8881
9006
  };
8882
9007
  }
8883
- if (initialLocation === "conflict") {
9008
+ if (initialLocation === "conflict" && !resolveConflicts) {
8884
9009
  return {
8885
9010
  kind: "error",
8886
9011
  error: sessionLocationError(sessionId),
@@ -8908,17 +9033,18 @@ async function archiveDaemonSessions(params) {
8908
9033
  mutationApplied: false
8909
9034
  };
8910
9035
  }
8911
- if (lockedLocation === "conflict") {
9036
+ if (lockedLocation === "conflict" && !resolveConflicts) {
8912
9037
  throw sessionLocationError(sessionId);
8913
9038
  }
8914
- await assertOwnedAndUnchanged();
8915
9039
  const result = await service.archiveSessions([sessionId], {
8916
- knownLocation: "active"
9040
+ resolveConflicts,
9041
+ assertStorageUnchanged: assertOwnedAndUnchanged,
9042
+ assertCanMutate
8917
9043
  });
8918
9044
  if (result.errors[0]) throw result.errors[0].error;
8919
9045
  if (result.archived.length > 0) {
8920
9046
  return {
8921
- value: "archived",
9047
+ value: result.resolvedConflicts.length ? "resolvedConflict" : "archived",
8922
9048
  mutationApplied: true
8923
9049
  };
8924
9050
  }
@@ -8928,18 +9054,28 @@ async function archiveDaemonSessions(params) {
8928
9054
  };
8929
9055
  }, "mutate"),
8930
9056
  mutationAppliedAfterError: /* @__PURE__ */ __name(async () => await classifySessionLocation(service, sessionId) === "archived", "mutationAppliedAfterError"),
8931
- afterMutationApplied: /* @__PURE__ */ __name(() => updateScheduledTaskForMaintenance(service, sessionId, "archive"), "afterMutationApplied")
9057
+ afterMutationApplied: /* @__PURE__ */ __name(async () => {
9058
+ assertCanMutate?.();
9059
+ await updateScheduledTaskForMaintenance(
9060
+ service,
9061
+ sessionId,
9062
+ "archive",
9063
+ assertCanMutate
9064
+ );
9065
+ }, "afterMutationApplied")
8932
9066
  });
8933
9067
  if (mutation.error !== void 0) {
8934
9068
  return {
8935
9069
  kind: "error",
8936
9070
  error: mutation.error,
8937
- mutationApplied: mutation.mutationApplied
9071
+ mutationApplied: mutation.mutationApplied,
9072
+ maintenanceError: mutation.maintenanceError
8938
9073
  };
8939
9074
  }
8940
9075
  return {
8941
9076
  kind: mutation.value ?? "notFound",
8942
- mutationApplied: mutation.mutationApplied
9077
+ mutationApplied: mutation.mutationApplied,
9078
+ maintenanceError: mutation.maintenanceError
8943
9079
  };
8944
9080
  }, "mutateSession");
8945
9081
  return await (coordinatorLockHeld ? mutateSession() : coordinator.runExclusiveMany([sessionId], mutateSession));
@@ -8958,16 +9094,23 @@ async function archiveDaemonSessions(params) {
8958
9094
  );
8959
9095
  const archived = [];
8960
9096
  const alreadyArchived = [];
9097
+ const resolvedConflicts = [];
8961
9098
  const notFound = [];
8962
9099
  const errors = [];
8963
9100
  for (let i = 0; i < results.length; i++) {
8964
9101
  const sessionId = uniqueSessionIds[i];
8965
9102
  const result = results[i];
8966
9103
  if (result.kind === "archived") archived.push(sessionId);
8967
- else if (result.kind === "alreadyArchived") {
9104
+ else if (result.kind === "resolvedConflict") {
9105
+ archived.push(sessionId);
9106
+ resolvedConflicts.push(sessionId);
9107
+ } else if (result.kind === "alreadyArchived") {
8968
9108
  alreadyArchived.push(sessionId);
8969
9109
  } else if (result.kind === "notFound") notFound.push(sessionId);
8970
9110
  else errors.push({ sessionId, error: result.error });
9111
+ if ("maintenanceError" in result && result.maintenanceError !== void 0) {
9112
+ errors.push({ sessionId, error: result.maintenanceError });
9113
+ }
8971
9114
  }
8972
9115
  logSessionArchiveResult("archive", {
8973
9116
  requested: uniqueSessionIds,
@@ -8976,7 +9119,13 @@ async function archiveDaemonSessions(params) {
8976
9119
  notFound,
8977
9120
  errors
8978
9121
  });
8979
- return { archived, alreadyArchived, notFound, errors };
9122
+ return {
9123
+ archived,
9124
+ alreadyArchived,
9125
+ resolvedConflicts,
9126
+ notFound,
9127
+ errors
9128
+ };
8980
9129
  }
8981
9130
  __name(archiveDaemonSessions, "archiveDaemonSessions");
8982
9131
  async function unarchiveDaemonSessions(params) {
@@ -8984,7 +9133,9 @@ async function unarchiveDaemonSessions(params) {
8984
9133
  sessionIds,
8985
9134
  service,
8986
9135
  coordinator,
8987
- coordinatorLockHeld = false
9136
+ coordinatorLockHeld = false,
9137
+ resolveConflicts = false,
9138
+ assertCanMutate
8988
9139
  } = params;
8989
9140
  const uniqueSessionIds = [
8990
9141
  ...new Set(sessionIds.map(normalizeSessionIdForLookup))
@@ -8998,6 +9149,7 @@ async function unarchiveDaemonSessions(params) {
8998
9149
  uniqueSessionIds.map(async (sessionId) => {
8999
9150
  try {
9000
9151
  const mutateSession = /* @__PURE__ */ __name(async () => {
9152
+ assertCanMutate?.();
9001
9153
  const initialLocation = await classifySessionLocation(
9002
9154
  service,
9003
9155
  sessionId
@@ -9011,7 +9163,8 @@ async function unarchiveDaemonSessions(params) {
9011
9163
  await updateScheduledTaskForMaintenance(
9012
9164
  service,
9013
9165
  sessionId,
9014
- "unarchive"
9166
+ "unarchive",
9167
+ assertCanMutate
9015
9168
  );
9016
9169
  } catch (error2) {
9017
9170
  maintenanceError = error2;
@@ -9029,7 +9182,7 @@ async function unarchiveDaemonSessions(params) {
9029
9182
  maintenanceError
9030
9183
  };
9031
9184
  }
9032
- if (initialLocation === "conflict") {
9185
+ if (initialLocation === "conflict" && !resolveConflicts) {
9033
9186
  return {
9034
9187
  kind: "error",
9035
9188
  error: sessionLocationError(sessionId),
@@ -9057,17 +9210,18 @@ async function unarchiveDaemonSessions(params) {
9057
9210
  mutationApplied: false
9058
9211
  };
9059
9212
  }
9060
- if (lockedLocation === "conflict") {
9213
+ if (lockedLocation === "conflict" && !resolveConflicts) {
9061
9214
  throw sessionLocationError(sessionId);
9062
9215
  }
9063
- await assertOwnedAndUnchanged();
9064
9216
  const result = await service.unarchiveSessions([sessionId], {
9065
- knownLocation: "archived"
9217
+ resolveConflicts,
9218
+ assertStorageUnchanged: assertOwnedAndUnchanged,
9219
+ assertCanMutate
9066
9220
  });
9067
9221
  if (result.errors[0]) throw result.errors[0].error;
9068
9222
  if (result.unarchived.length > 0) {
9069
9223
  return {
9070
- value: "unarchived",
9224
+ value: result.resolvedConflicts.length ? "resolvedConflict" : "unarchived",
9071
9225
  mutationApplied: true
9072
9226
  };
9073
9227
  }
@@ -9077,17 +9231,22 @@ async function unarchiveDaemonSessions(params) {
9077
9231
  };
9078
9232
  }, "mutate"),
9079
9233
  mutationAppliedAfterError: /* @__PURE__ */ __name(async () => await classifySessionLocation(service, sessionId) === "active", "mutationAppliedAfterError"),
9080
- afterMutationApplied: /* @__PURE__ */ __name(() => updateScheduledTaskForMaintenance(
9081
- service,
9082
- sessionId,
9083
- "unarchive"
9084
- ), "afterMutationApplied")
9234
+ afterMutationApplied: /* @__PURE__ */ __name(async () => {
9235
+ assertCanMutate?.();
9236
+ await updateScheduledTaskForMaintenance(
9237
+ service,
9238
+ sessionId,
9239
+ "unarchive",
9240
+ assertCanMutate
9241
+ );
9242
+ }, "afterMutationApplied")
9085
9243
  });
9086
9244
  if (mutation.error !== void 0) {
9087
9245
  return {
9088
9246
  kind: "error",
9089
9247
  error: mutation.error,
9090
- mutationApplied: mutation.mutationApplied
9248
+ mutationApplied: mutation.mutationApplied,
9249
+ maintenanceError: mutation.maintenanceError
9091
9250
  };
9092
9251
  }
9093
9252
  return {
@@ -9112,13 +9271,17 @@ async function unarchiveDaemonSessions(params) {
9112
9271
  );
9113
9272
  const unarchived = [];
9114
9273
  const alreadyActive = [];
9274
+ const resolvedConflicts = [];
9115
9275
  const notFound = [];
9116
9276
  const errors = [];
9117
9277
  for (let i = 0; i < results.length; i++) {
9118
9278
  const sessionId = uniqueSessionIds[i];
9119
9279
  const result = results[i];
9120
9280
  if (result.kind === "unarchived") unarchived.push(sessionId);
9121
- else if (result.kind === "alreadyActive") alreadyActive.push(sessionId);
9281
+ else if (result.kind === "resolvedConflict") {
9282
+ unarchived.push(sessionId);
9283
+ resolvedConflicts.push(sessionId);
9284
+ } else if (result.kind === "alreadyActive") alreadyActive.push(sessionId);
9122
9285
  else if (result.kind === "notFound") notFound.push(sessionId);
9123
9286
  else errors.push({ sessionId, error: result.error });
9124
9287
  if (result.maintenanceError !== void 0) {
@@ -9132,7 +9295,13 @@ async function unarchiveDaemonSessions(params) {
9132
9295
  notFound,
9133
9296
  errors
9134
9297
  });
9135
- return { unarchived, alreadyActive, notFound, errors };
9298
+ return {
9299
+ unarchived,
9300
+ alreadyActive,
9301
+ resolvedConflicts,
9302
+ notFound,
9303
+ errors
9304
+ };
9136
9305
  }
9137
9306
  __name(unarchiveDaemonSessions, "unarchiveDaemonSessions");
9138
9307
 
@@ -9364,6 +9533,9 @@ var TRUSTED_WORKSPACE_METHODS = /* @__PURE__ */ new Set([
9364
9533
  `${QWEN_METHOD_NS}workspace/mcp/resources`,
9365
9534
  `${QWEN_METHOD_NS}workspace/mcp/servers/add`,
9366
9535
  `${QWEN_METHOD_NS}workspace/mcp/servers/remove`,
9536
+ `${QWEN_METHOD_NS}sessions/delete`,
9537
+ `${QWEN_METHOD_NS}sessions/archive`,
9538
+ `${QWEN_METHOD_NS}sessions/unarchive`,
9367
9539
  `${QWEN_METHOD_NS}workspace/agents/list`,
9368
9540
  `${QWEN_METHOD_NS}workspace/agents/get`,
9369
9541
  `${QWEN_METHOD_NS}workspace/agents/create`,
@@ -9393,6 +9565,9 @@ var WORKSPACE_GENERATION_MUTATION_METHODS = /* @__PURE__ */ new Set([
9393
9565
  `${QWEN_METHOD_NS}file/edit`,
9394
9566
  `${QWEN_METHOD_NS}workspace/mcp/servers/add`,
9395
9567
  `${QWEN_METHOD_NS}workspace/mcp/servers/remove`,
9568
+ `${QWEN_METHOD_NS}sessions/delete`,
9569
+ `${QWEN_METHOD_NS}sessions/archive`,
9570
+ `${QWEN_METHOD_NS}sessions/unarchive`,
9396
9571
  `${QWEN_METHOD_NS}workspace/agents/create`,
9397
9572
  `${QWEN_METHOD_NS}workspace/agents/update`,
9398
9573
  `${QWEN_METHOD_NS}workspace/agents/delete`,
@@ -10056,6 +10231,14 @@ var AcpDispatcher = class {
10056
10231
  }
10057
10232
  return [...new Set(sessionIds)];
10058
10233
  }
10234
+ parseResolveConflicts(params) {
10235
+ const value = params["resolveConflicts"];
10236
+ if (value === void 0) return false;
10237
+ if (typeof value !== "boolean") {
10238
+ throw new AcpParamError("`resolveConflicts` must be a boolean");
10239
+ }
10240
+ return value;
10241
+ }
10059
10242
  rejectActiveLiveSessionMutation(conn, id, sessionIds) {
10060
10243
  const activeSessionId = sessionIds.find(
10061
10244
  (sessionId) => this.liveSessionIsolation?.isSessionActive?.(sessionId)
@@ -12945,6 +13128,7 @@ var AcpDispatcher = class {
12945
13128
  service: svc,
12946
13129
  bridge: this.bridge,
12947
13130
  coordinator: this.archiveCoordinator,
13131
+ assertCanMutate: assertGenerationOpen,
12948
13132
  onError: /* @__PURE__ */ __name(({ phase, sessionId, error: error2 }) => {
12949
13133
  const safeSessionId = logSafe(sessionId.slice(0, 8));
12950
13134
  const safeMessage = logSafe(error2);
@@ -12954,11 +13138,13 @@ var AcpDispatcher = class {
12954
13138
  }, "onError")
12955
13139
  })
12956
13140
  );
13141
+ assertGenerationOpen?.();
12957
13142
  this.replyConn(conn, id, result);
12958
13143
  return;
12959
13144
  }
12960
13145
  case `${QWEN_METHOD_NS}sessions/archive`: {
12961
13146
  const ids = this.parseSessionIds(params);
13147
+ const resolveConflicts = this.parseResolveConflicts(params);
12962
13148
  if (this.rejectActiveLiveSessionMutation(conn, id, ids)) return;
12963
13149
  const svc = new SessionService(this.boundWorkspace, {
12964
13150
  onWarning: logSessionArchiveWarning
@@ -12969,12 +13155,16 @@ var AcpDispatcher = class {
12969
13155
  sessionIds: ids,
12970
13156
  service: svc,
12971
13157
  bridge: this.bridge,
12972
- coordinator: this.archiveCoordinator
13158
+ coordinator: this.archiveCoordinator,
13159
+ resolveConflicts,
13160
+ assertCanMutate: assertGenerationOpen
12973
13161
  })
12974
13162
  );
13163
+ assertGenerationOpen?.();
12975
13164
  this.replyConn(conn, id, {
12976
13165
  archived: result.archived,
12977
13166
  alreadyArchived: result.alreadyArchived,
13167
+ resolvedConflicts: result.resolvedConflicts,
12978
13168
  notFound: result.notFound,
12979
13169
  errors: this.serializeSessionErrors(result.errors)
12980
13170
  });
@@ -12982,6 +13172,7 @@ var AcpDispatcher = class {
12982
13172
  }
12983
13173
  case `${QWEN_METHOD_NS}sessions/unarchive`: {
12984
13174
  const ids = this.parseSessionIds(params);
13175
+ const resolveConflicts = this.parseResolveConflicts(params);
12985
13176
  const svc = new SessionService(this.boundWorkspace, {
12986
13177
  onWarning: logSessionArchiveWarning
12987
13178
  });
@@ -12990,12 +13181,16 @@ var AcpDispatcher = class {
12990
13181
  () => unarchiveDaemonSessions({
12991
13182
  sessionIds: ids,
12992
13183
  service: svc,
12993
- coordinator: this.archiveCoordinator
13184
+ coordinator: this.archiveCoordinator,
13185
+ resolveConflicts,
13186
+ assertCanMutate: assertGenerationOpen
12994
13187
  })
12995
13188
  );
13189
+ assertGenerationOpen?.();
12996
13190
  this.replyConn(conn, id, {
12997
13191
  unarchived: result.unarchived,
12998
13192
  alreadyActive: result.alreadyActive,
13193
+ resolvedConflicts: result.resolvedConflicts,
12999
13194
  notFound: result.notFound,
13000
13195
  errors: this.serializeSessionErrors(result.errors)
13001
13196
  });
@@ -26073,7 +26268,26 @@ function registerSessionRoutes(app, deps) {
26073
26268
  generation.guard.assertOpen();
26074
26269
  return true;
26075
26270
  }, "assertCurrentInternalGeneration");
26076
- const resolveQualifiedSessionRuntime = /* @__PURE__ */ __name(async (req, res, route, sessionIds, archiveState) => {
26271
+ const hasLifecycleStorageEvidence = /* @__PURE__ */ __name(async (service, sessionId) => {
26272
+ try {
26273
+ return await service.getMaintainableSessionLocation(sessionId) !== void 0;
26274
+ } catch (error2) {
26275
+ if (error2 instanceof SessionStorageEntryError) {
26276
+ return error2.reason !== "foreign_project";
26277
+ }
26278
+ if (error2 instanceof SessionTranscriptIdentityUnavailableError) {
26279
+ return true;
26280
+ }
26281
+ if (error2 instanceof SessionTranscriptChangedError) {
26282
+ return true;
26283
+ }
26284
+ if (error2 !== null && typeof error2 === "object" && typeof error2.code === "string") {
26285
+ return true;
26286
+ }
26287
+ throw error2;
26288
+ }
26289
+ }, "hasLifecycleStorageEvidence");
26290
+ const resolveQualifiedSessionRuntime = /* @__PURE__ */ __name(async (req, res, route, sessionIds, archiveState, options = {}) => {
26077
26291
  const target = resolveQualifiedSessionTarget(req, res);
26078
26292
  if (!target) return void 0;
26079
26293
  if (target.kind === "ordinary") return target.runtime;
@@ -26086,6 +26300,12 @@ function registerSessionRoutes(app, deps) {
26086
26300
  const runtime = generation.runtime;
26087
26301
  const service = createWorkspaceRuntimeSessionService(runtime);
26088
26302
  for (const sessionId of sessionIds) {
26303
+ if (options.lifecycleMaintenance) {
26304
+ if (!await hasLifecycleStorageEvidence(service, sessionId)) {
26305
+ throw new SessionNotFoundError(sessionId);
26306
+ }
26307
+ continue;
26308
+ }
26089
26309
  const location = await service.getSessionLocation(sessionId);
26090
26310
  if (location === "conflict") {
26091
26311
  if (archiveState !== "active") {
@@ -26678,20 +26898,42 @@ function registerSessionRoutes(app, deps) {
26678
26898
  }, "resolveSessionAnyStateRuntime");
26679
26899
  const resolveSessionBatchRuntime = /* @__PURE__ */ __name(async (req, res, route, sessionIds) => {
26680
26900
  if (req) {
26681
- return resolveQualifiedSessionRuntime(req, res, route, sessionIds, "any");
26901
+ return resolveQualifiedSessionRuntime(
26902
+ req,
26903
+ res,
26904
+ route,
26905
+ sessionIds,
26906
+ "any",
26907
+ { lifecycleMaintenance: true }
26908
+ );
26682
26909
  }
26683
26910
  let internalRuntime;
26684
26911
  let hasInternalSession = false;
26685
- const hasOrdinarySession = /* @__PURE__ */ __name(async (sessionId) => {
26686
- for (const runtime of workspaceRegistry.list()) {
26687
- if (await createWorkspaceRuntimeSessionService(
26688
- runtime
26689
- ).sessionExistsInAnyState(sessionId)) {
26690
- return true;
26912
+ let hasOrdinaryLiveSession = false;
26913
+ const findOrdinarySessions = /* @__PURE__ */ __name(async (sessionId) => {
26914
+ const runtimes = /* @__PURE__ */ new Set();
26915
+ for (const entry of workspaceRegistry.listAllEntries()) {
26916
+ const generation2 = entry.current;
26917
+ if (entry.internal || !generation2) continue;
26918
+ if (entry.state !== "active" || entry.current !== generation2 || generation2.guard.closed) {
26919
+ sendWorkspaceRuntimeUnavailable(res);
26920
+ return void 0;
26921
+ }
26922
+ generation2.guard.assertOpen();
26923
+ const exists = await hasLifecycleStorageEvidence(
26924
+ createWorkspaceRuntimeSessionService(generation2.runtime),
26925
+ sessionId
26926
+ );
26927
+ if (entry.state !== "active" || entry.current !== generation2 || generation2.guard.closed) {
26928
+ sendWorkspaceRuntimeUnavailable(res);
26929
+ return void 0;
26691
26930
  }
26931
+ if (!exists) continue;
26932
+ generation2.guard.assertOpen();
26933
+ runtimes.add(generation2.runtime);
26692
26934
  }
26693
- return false;
26694
- }, "hasOrdinarySession");
26935
+ return runtimes;
26936
+ }, "findOrdinarySessions");
26695
26937
  const sendBatchWorkspaceConflict = /* @__PURE__ */ __name(() => {
26696
26938
  res.status(409).json({
26697
26939
  error: "All sessions in this operation must share one workspace.",
@@ -26700,17 +26942,28 @@ function registerSessionRoutes(app, deps) {
26700
26942
  }, "sendBatchWorkspaceConflict");
26701
26943
  for (const sessionId of sessionIds) {
26702
26944
  const candidates = /* @__PURE__ */ new Set();
26945
+ const ordinaryLiveCandidates = /* @__PURE__ */ new Set();
26703
26946
  const owner = workspaceRegistry.resolveLiveSessionOwner(sessionId);
26704
26947
  if (owner.kind === "unavailable") {
26705
26948
  sendWorkspaceRuntimeUnavailable(res);
26706
26949
  return void 0;
26707
26950
  }
26708
- if (owner.kind === "found" && isInternalWorkspaceRuntime(owner.runtime)) {
26709
- candidates.add(owner.runtime);
26951
+ if (owner.kind === "found") {
26952
+ if (isInternalWorkspaceRuntime(owner.runtime)) {
26953
+ candidates.add(owner.runtime);
26954
+ } else {
26955
+ ordinaryLiveCandidates.add(owner.runtime);
26956
+ hasOrdinaryLiveSession = true;
26957
+ }
26710
26958
  }
26711
26959
  if (owner.kind === "ambiguous") {
26712
26960
  for (const runtime of owner.runtimes) {
26713
- if (isInternalWorkspaceRuntime(runtime)) candidates.add(runtime);
26961
+ if (isInternalWorkspaceRuntime(runtime)) {
26962
+ candidates.add(runtime);
26963
+ } else {
26964
+ ordinaryLiveCandidates.add(runtime);
26965
+ hasOrdinaryLiveSession = true;
26966
+ }
26714
26967
  }
26715
26968
  }
26716
26969
  for (const entry of workspaceRegistry.listAllEntries()) {
@@ -26721,32 +26974,32 @@ function registerSessionRoutes(app, deps) {
26721
26974
  }
26722
26975
  const runtime = generation2.runtime;
26723
26976
  const service = createWorkspaceRuntimeSessionService(runtime);
26724
- const exists = await service.sessionExistsInAnyState(sessionId);
26977
+ const exists = await hasLifecycleStorageEvidence(service, sessionId);
26725
26978
  if (!assertCurrentInternalGeneration(entry, generation2, res)) {
26726
26979
  return void 0;
26727
26980
  }
26728
26981
  if (!exists) continue;
26729
- const metadata = await readLoadableLiveConversationMetadata(
26730
- sessionId,
26731
- service
26732
- );
26733
- if (!assertCurrentInternalGeneration(entry, generation2, res)) {
26734
- return void 0;
26735
- }
26736
- if (!metadata) continue;
26737
26982
  candidates.add(runtime);
26738
26983
  }
26739
- if (candidates.size > 0) {
26740
- for (const runtime of workspaceRegistry.list()) {
26741
- const service = createWorkspaceRuntimeSessionService(runtime);
26742
- if (await service.sessionExistsInAnyState(sessionId)) {
26743
- candidates.add(runtime);
26744
- }
26984
+ if (candidates.size > 0 || hasInternalSession) {
26985
+ if (hasOrdinaryLiveSession && ordinaryLiveCandidates.size === 0) {
26986
+ sendBatchWorkspaceConflict();
26987
+ return void 0;
26988
+ }
26989
+ for (const runtime of ordinaryLiveCandidates) {
26990
+ candidates.add(runtime);
26991
+ }
26992
+ const ordinarySessions = await findOrdinarySessions(sessionId);
26993
+ if (!ordinarySessions) return void 0;
26994
+ for (const runtime of ordinarySessions) {
26995
+ candidates.add(runtime);
26745
26996
  }
26746
26997
  }
26747
26998
  if (candidates.size === 0) {
26748
26999
  if (hasInternalSession) {
26749
- if (await hasOrdinarySession(sessionId)) {
27000
+ const ordinarySessions = await findOrdinarySessions(sessionId);
27001
+ if (!ordinarySessions) return void 0;
27002
+ if (ordinarySessions.size > 0) {
26750
27003
  sendBatchWorkspaceConflict();
26751
27004
  return void 0;
26752
27005
  }
@@ -26773,20 +27026,15 @@ function registerSessionRoutes(app, deps) {
26773
27026
  }
26774
27027
  for (const sessionId of sessionIds) {
26775
27028
  const service = createWorkspaceRuntimeSessionService(internalRuntime);
26776
- if (!await service.sessionExistsInAnyState(sessionId)) {
26777
- if (await hasOrdinarySession(sessionId)) {
27029
+ if (!await hasLifecycleStorageEvidence(service, sessionId)) {
27030
+ const ordinarySessions = await findOrdinarySessions(sessionId);
27031
+ if (!ordinarySessions) return void 0;
27032
+ if (ordinarySessions.size > 0) {
26778
27033
  sendBatchWorkspaceConflict();
26779
27034
  return void 0;
26780
27035
  }
26781
27036
  throw new SessionNotFoundError(sessionId);
26782
27037
  }
26783
- const metadata = await readLoadableLiveConversationMetadata(
26784
- sessionId,
26785
- service
26786
- );
26787
- if (!metadata) {
26788
- throw new SessionNotFoundError(sessionId);
26789
- }
26790
27038
  }
26791
27039
  const internalEntry = workspaceRegistry.getManagedEntryByWorkspaceCwd(
26792
27040
  internalRuntime.workspaceCwd
@@ -26819,6 +27067,16 @@ function registerSessionRoutes(app, deps) {
26819
27067
  }
26820
27068
  return [...new Set(sessionIds)];
26821
27069
  }, "parseSessionIdsBody");
27070
+ const parseResolveConflicts = /* @__PURE__ */ __name((req, res) => {
27071
+ const value = safeBody(req)["resolveConflicts"];
27072
+ if (value === void 0) return false;
27073
+ if (typeof value === "boolean") return value;
27074
+ res.status(400).json({
27075
+ error: "`resolveConflicts` must be a boolean",
27076
+ code: "invalid_request"
27077
+ });
27078
+ return void 0;
27079
+ }, "parseResolveConflicts");
26822
27080
  const hasControlCharacter = /* @__PURE__ */ __name((value) => Array.from(value).some((character) => {
26823
27081
  const code = character.charCodeAt(0);
26824
27082
  return code <= 31 || code === 127;
@@ -26843,7 +27101,7 @@ function registerSessionRoutes(app, deps) {
26843
27101
  }, "parseSessionPrBody");
26844
27102
  const serializeSessionErrors = /* @__PURE__ */ __name((errors, redactDetails = false) => errors.map((e) => ({
26845
27103
  sessionId: e.sessionId,
26846
- error: redactDetails ? "Session operation failed." : e.error instanceof Error ? e.error.message : String(e.error)
27104
+ error: redactDetails && !(e.error instanceof SessionConflictError) ? "Session operation failed." : e.error instanceof Error ? e.error.message : String(e.error)
26847
27105
  })), "serializeSessionErrors");
26848
27106
  const runResolvedSessionBatch = /* @__PURE__ */ __name(async (params) => {
26849
27107
  const { req, res, route, sessionIds, run: run2 } = params;
@@ -26869,14 +27127,18 @@ function registerSessionRoutes(app, deps) {
26869
27127
  sendWorkspaceRuntimeUnavailable(res);
26870
27128
  return void 0;
26871
27129
  }
26872
- return { result: await run2(verifiedRuntime, true), internal: true };
27130
+ return {
27131
+ result: await run2(verifiedRuntime, true),
27132
+ internal: isInternalWorkspaceRuntime(verifiedRuntime)
27133
+ };
26873
27134
  });
26874
27135
  }, "runResolvedSessionBatch");
26875
27136
  const deleteSessions = /* @__PURE__ */ __name((req, res, route, sessionIds) => {
26876
27137
  const run2 = /* @__PURE__ */ __name(async (runtime, coordinatorLockHeld) => {
26877
- captureRuntimeGenerationAssertion(runtime)?.();
27138
+ const assertCanMutate = captureRuntimeGenerationAssertion(runtime);
27139
+ assertCanMutate?.();
26878
27140
  const service = createWorkspaceRuntimeSessionService(runtime);
26879
- return runWithSessionListInvalidation(
27141
+ const result = await runWithSessionListInvalidation(
26880
27142
  runtime,
26881
27143
  ["active", "archived"],
26882
27144
  () => runWithWorkspaceRuntimeStorage(
@@ -26887,6 +27149,7 @@ function registerSessionRoutes(app, deps) {
26887
27149
  bridge: runtime.bridge,
26888
27150
  coordinator: archiveCoordinator,
26889
27151
  coordinatorLockHeld,
27152
+ assertCanMutate,
26890
27153
  onError: /* @__PURE__ */ __name(({ phase, sessionId, error: error2 }) => {
26891
27154
  writeStderrLine(
26892
27155
  `qwen serve: ${phase}Session failed for ${safeLogValue(sessionId)}: ${safeLogValue(error2)}`
@@ -26895,16 +27158,19 @@ function registerSessionRoutes(app, deps) {
26895
27158
  })
26896
27159
  )
26897
27160
  );
27161
+ assertCanMutate?.();
27162
+ return result;
26898
27163
  }, "run");
26899
27164
  return runResolvedSessionBatch({ req, res, route, sessionIds, run: run2 });
26900
27165
  }, "deleteSessions");
26901
- const archiveSessions = /* @__PURE__ */ __name((req, res, route, sessionIds) => {
27166
+ const archiveSessions = /* @__PURE__ */ __name((req, res, route, sessionIds, resolveConflicts = false) => {
26902
27167
  const run2 = /* @__PURE__ */ __name(async (runtime, coordinatorLockHeld) => {
26903
- captureRuntimeGenerationAssertion(runtime)?.();
27168
+ const assertCanMutate = captureRuntimeGenerationAssertion(runtime);
27169
+ assertCanMutate?.();
26904
27170
  const service = createWorkspaceRuntimeSessionService(runtime, {
26905
27171
  onWarning: logSessionArchiveWarning
26906
27172
  });
26907
- return runWithSessionListInvalidation(
27173
+ const result = await runWithSessionListInvalidation(
26908
27174
  runtime,
26909
27175
  ["active", "archived"],
26910
27176
  () => runWithWorkspaceRuntimeStorage(
@@ -26914,20 +27180,25 @@ function registerSessionRoutes(app, deps) {
26914
27180
  service,
26915
27181
  bridge: runtime.bridge,
26916
27182
  coordinator: archiveCoordinator,
26917
- coordinatorLockHeld
27183
+ coordinatorLockHeld,
27184
+ resolveConflicts,
27185
+ assertCanMutate
26918
27186
  })
26919
27187
  )
26920
27188
  );
27189
+ assertCanMutate?.();
27190
+ return result;
26921
27191
  }, "run");
26922
27192
  return runResolvedSessionBatch({ req, res, route, sessionIds, run: run2 });
26923
27193
  }, "archiveSessions");
26924
- const unarchiveSessions = /* @__PURE__ */ __name((req, res, route, sessionIds) => {
27194
+ const unarchiveSessions = /* @__PURE__ */ __name((req, res, route, sessionIds, resolveConflicts = false) => {
26925
27195
  const run2 = /* @__PURE__ */ __name(async (runtime, coordinatorLockHeld) => {
26926
- captureRuntimeGenerationAssertion(runtime)?.();
27196
+ const assertCanMutate = captureRuntimeGenerationAssertion(runtime);
27197
+ assertCanMutate?.();
26927
27198
  const service = createWorkspaceRuntimeSessionService(runtime, {
26928
27199
  onWarning: logSessionArchiveWarning
26929
27200
  });
26930
- return runWithSessionListInvalidation(
27201
+ const result = await runWithSessionListInvalidation(
26931
27202
  runtime,
26932
27203
  ["active", "archived"],
26933
27204
  () => runWithWorkspaceRuntimeStorage(
@@ -26936,10 +27207,14 @@ function registerSessionRoutes(app, deps) {
26936
27207
  sessionIds,
26937
27208
  service,
26938
27209
  coordinator: archiveCoordinator,
26939
- coordinatorLockHeld
27210
+ coordinatorLockHeld,
27211
+ resolveConflicts,
27212
+ assertCanMutate
26940
27213
  })
26941
27214
  )
26942
27215
  );
27216
+ assertCanMutate?.();
27217
+ return result;
26943
27218
  }, "run");
26944
27219
  return runResolvedSessionBatch({ req, res, route, sessionIds, run: run2 });
26945
27220
  }, "unarchiveSessions");
@@ -29217,19 +29492,23 @@ function registerSessionRoutes(app, deps) {
29217
29492
  app.post("/sessions/archive", mutate(), async (req, res) => {
29218
29493
  const uniqueIds = parseSessionIdsBody(req, res);
29219
29494
  if (uniqueIds === void 0) return;
29495
+ const resolveConflicts = parseResolveConflicts(req, res);
29496
+ if (resolveConflicts === void 0) return;
29220
29497
  if (rejectActiveLiveSessionMutation(res, uniqueIds)) return;
29221
29498
  try {
29222
29499
  const operation = await archiveSessions(
29223
29500
  void 0,
29224
29501
  res,
29225
29502
  "POST /sessions/archive",
29226
- uniqueIds
29503
+ uniqueIds,
29504
+ resolveConflicts
29227
29505
  );
29228
29506
  if (!operation) return;
29229
29507
  const { result } = operation;
29230
29508
  res.status(200).json({
29231
29509
  archived: result.archived,
29232
29510
  alreadyArchived: result.alreadyArchived,
29511
+ resolvedConflicts: result.resolvedConflicts,
29233
29512
  notFound: result.notFound,
29234
29513
  errors: serializeSessionErrors(result.errors, operation.internal)
29235
29514
  });
@@ -29240,18 +29519,22 @@ function registerSessionRoutes(app, deps) {
29240
29519
  app.post("/sessions/unarchive", mutate(), async (req, res) => {
29241
29520
  const uniqueIds = parseSessionIdsBody(req, res);
29242
29521
  if (uniqueIds === void 0) return;
29522
+ const resolveConflicts = parseResolveConflicts(req, res);
29523
+ if (resolveConflicts === void 0) return;
29243
29524
  try {
29244
29525
  const operation = await unarchiveSessions(
29245
29526
  void 0,
29246
29527
  res,
29247
29528
  "POST /sessions/unarchive",
29248
- uniqueIds
29529
+ uniqueIds,
29530
+ resolveConflicts
29249
29531
  );
29250
29532
  if (!operation) return;
29251
29533
  const { result } = operation;
29252
29534
  res.status(200).json({
29253
29535
  unarchived: result.unarchived,
29254
29536
  alreadyActive: result.alreadyActive,
29537
+ resolvedConflicts: result.resolvedConflicts,
29255
29538
  notFound: result.notFound,
29256
29539
  errors: serializeSessionErrors(result.errors, operation.internal)
29257
29540
  });
@@ -29292,14 +29575,23 @@ function registerSessionRoutes(app, deps) {
29292
29575
  const route = "POST /workspaces/:workspace/sessions/archive";
29293
29576
  const uniqueIds = parseSessionIdsBody(req, res);
29294
29577
  if (uniqueIds === void 0) return;
29578
+ const resolveConflicts = parseResolveConflicts(req, res);
29579
+ if (resolveConflicts === void 0) return;
29295
29580
  if (rejectActiveLiveSessionMutation(res, uniqueIds)) return;
29296
29581
  try {
29297
- const operation = await archiveSessions(req, res, route, uniqueIds);
29582
+ const operation = await archiveSessions(
29583
+ req,
29584
+ res,
29585
+ route,
29586
+ uniqueIds,
29587
+ resolveConflicts
29588
+ );
29298
29589
  if (!operation) return;
29299
29590
  const { result } = operation;
29300
29591
  res.status(200).json({
29301
29592
  archived: result.archived,
29302
29593
  alreadyArchived: result.alreadyArchived,
29594
+ resolvedConflicts: result.resolvedConflicts,
29303
29595
  notFound: result.notFound,
29304
29596
  errors: serializeSessionErrors(result.errors, operation.internal)
29305
29597
  });
@@ -29315,13 +29607,22 @@ function registerSessionRoutes(app, deps) {
29315
29607
  const route = "POST /workspaces/:workspace/sessions/unarchive";
29316
29608
  const uniqueIds = parseSessionIdsBody(req, res);
29317
29609
  if (uniqueIds === void 0) return;
29610
+ const resolveConflicts = parseResolveConflicts(req, res);
29611
+ if (resolveConflicts === void 0) return;
29318
29612
  try {
29319
- const operation = await unarchiveSessions(req, res, route, uniqueIds);
29613
+ const operation = await unarchiveSessions(
29614
+ req,
29615
+ res,
29616
+ route,
29617
+ uniqueIds,
29618
+ resolveConflicts
29619
+ );
29320
29620
  if (!operation) return;
29321
29621
  const { result } = operation;
29322
29622
  res.status(200).json({
29323
29623
  unarchived: result.unarchived,
29324
29624
  alreadyActive: result.alreadyActive,
29625
+ resolvedConflicts: result.resolvedConflicts,
29325
29626
  notFound: result.notFound,
29326
29627
  errors: serializeSessionErrors(result.errors, operation.internal)
29327
29628
  });
@@ -32464,12 +32765,6 @@ function registerWorkspaceStatusRoutes(app, deps) {
32464
32765
  });
32465
32766
  }
32466
32767
  __name(registerWorkspaceStatusRoutes, "registerWorkspaceStatusRoutes");
32467
- function resolveTrustedRuntime(registry, req, res) {
32468
- const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
32469
- if (!runtime) return null;
32470
- return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
32471
- }
32472
- __name(resolveTrustedRuntime, "resolveTrustedRuntime");
32473
32768
  function registerWorkspaceQualifiedStatusRoutes(app, deps) {
32474
32769
  const { workspaceRegistry, sendBridgeError: sendBridgeError2 } = deps;
32475
32770
  app.get("/workspaces/:workspace/mcp", async (req, res) => {
@@ -37493,15 +37788,9 @@ function registerWorkspaceGitRoutes(app, deps) {
37493
37788
  });
37494
37789
  }
37495
37790
  __name(registerWorkspaceGitRoutes, "registerWorkspaceGitRoutes");
37496
- function resolveTrustedRuntime2(registry, req, res) {
37497
- const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
37498
- if (!runtime) return null;
37499
- return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
37500
- }
37501
- __name(resolveTrustedRuntime2, "resolveTrustedRuntime");
37502
37791
  function registerWorkspaceQualifiedGitRoutes(app, deps) {
37503
37792
  app.get("/workspaces/:workspace/git", async (req, res) => {
37504
- const runtime = resolveTrustedRuntime2(deps.workspaceRegistry, req, res);
37793
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
37505
37794
  if (!runtime) return;
37506
37795
  const route = "GET /workspaces/:workspace/git";
37507
37796
  try {
@@ -37677,15 +37966,9 @@ function registerWorkspaceGitDiffRoutes(app, deps) {
37677
37966
  });
37678
37967
  }
37679
37968
  __name(registerWorkspaceGitDiffRoutes, "registerWorkspaceGitDiffRoutes");
37680
- function resolveTrustedRuntime3(registry, req, res) {
37681
- const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
37682
- if (!runtime) return null;
37683
- return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
37684
- }
37685
- __name(resolveTrustedRuntime3, "resolveTrustedRuntime");
37686
37969
  function registerWorkspaceQualifiedGitDiffRoutes(app, deps) {
37687
37970
  app.get("/workspaces/:workspace/git/diff", (req, res) => {
37688
- const runtime = resolveTrustedRuntime3(deps.workspaceRegistry, req, res);
37971
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
37689
37972
  if (!runtime) return;
37690
37973
  void handleDiffList(
37691
37974
  res,
@@ -37696,7 +37979,7 @@ function registerWorkspaceQualifiedGitDiffRoutes(app, deps) {
37696
37979
  );
37697
37980
  });
37698
37981
  app.get("/workspaces/:workspace/git/diff/file", (req, res) => {
37699
- const runtime = resolveTrustedRuntime3(deps.workspaceRegistry, req, res);
37982
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
37700
37983
  if (!runtime) return;
37701
37984
  void handleDiffFile(
37702
37985
  req,
@@ -37837,15 +38120,9 @@ function registerWorkspaceGitLogRoutes(app, deps) {
37837
38120
  });
37838
38121
  }
37839
38122
  __name(registerWorkspaceGitLogRoutes, "registerWorkspaceGitLogRoutes");
37840
- function resolveTrustedRuntime4(registry, req, res) {
37841
- const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
37842
- if (!runtime) return null;
37843
- return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
37844
- }
37845
- __name(resolveTrustedRuntime4, "resolveTrustedRuntime");
37846
38123
  function registerWorkspaceQualifiedGitLogRoutes(app, deps) {
37847
38124
  app.get("/workspaces/:workspace/git/log", (req, res) => {
37848
- const runtime = resolveTrustedRuntime4(deps.workspaceRegistry, req, res);
38125
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
37849
38126
  if (!runtime) return;
37850
38127
  void handleLogList(
37851
38128
  req,
@@ -37856,7 +38133,7 @@ function registerWorkspaceQualifiedGitLogRoutes(app, deps) {
37856
38133
  );
37857
38134
  });
37858
38135
  app.get("/workspaces/:workspace/git/log/commit", (req, res) => {
37859
- const runtime = resolveTrustedRuntime4(deps.workspaceRegistry, req, res);
38136
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
37860
38137
  if (!runtime) return;
37861
38138
  void handleCommitDetail(
37862
38139
  req,
@@ -37872,12 +38149,6 @@ __name(registerWorkspaceQualifiedGitLogRoutes, "registerWorkspaceQualifiedGitLog
37872
38149
  // packages/cli/src/serve/routes/workspace-git-branches.ts
37873
38150
  init_esbuild_shims();
37874
38151
  var GIT_ERROR_MESSAGE_MAX = 512;
37875
- function resolveTrustedRuntime5(registry, req, res) {
37876
- const runtime = resolveWorkspaceRuntimeFromParam(registry, req, res);
37877
- if (!runtime) return null;
37878
- return requireTrustedWorkspaceRuntime(runtime, res) ? runtime : null;
37879
- }
37880
- __name(resolveTrustedRuntime5, "resolveTrustedRuntime");
37881
38152
  function sendGitError(res, err, route, sendBridgeError2, cwd) {
37882
38153
  let detail;
37883
38154
  if (err && typeof err === "object" && ("stdout" in err || "stderr" in err)) {
@@ -38186,7 +38457,7 @@ function registerWorkspaceGitBranchRoutes(app, deps) {
38186
38457
  __name(registerWorkspaceGitBranchRoutes, "registerWorkspaceGitBranchRoutes");
38187
38458
  function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38188
38459
  app.get("/workspaces/:workspace/git/branches", (req, res) => {
38189
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38460
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38190
38461
  if (!runtime) return;
38191
38462
  void handleBranches(
38192
38463
  res,
@@ -38201,7 +38472,7 @@ function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38201
38472
  "/workspaces/:workspace/git/checkout",
38202
38473
  deps.mutate({ strict: true }),
38203
38474
  (req, res) => {
38204
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38475
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38205
38476
  if (!runtime) return;
38206
38477
  try {
38207
38478
  runtime.generationGuard?.assertOpen();
@@ -38234,7 +38505,7 @@ function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38234
38505
  "/workspaces/:workspace/git/branch",
38235
38506
  deps.mutate({ strict: true }),
38236
38507
  (req, res) => {
38237
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38508
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38238
38509
  if (!runtime) return;
38239
38510
  try {
38240
38511
  runtime.generationGuard?.assertOpen();
@@ -38267,7 +38538,7 @@ function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38267
38538
  "/workspaces/:workspace/git/push",
38268
38539
  deps.mutate({ strict: true }),
38269
38540
  (req, res) => {
38270
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38541
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38271
38542
  if (!runtime) return;
38272
38543
  try {
38273
38544
  runtime.generationGuard?.assertOpen();
@@ -38300,7 +38571,7 @@ function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38300
38571
  "/workspaces/:workspace/git/pull",
38301
38572
  deps.mutate({ strict: true }),
38302
38573
  (req, res) => {
38303
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38574
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38304
38575
  if (!runtime) return;
38305
38576
  try {
38306
38577
  runtime.generationGuard?.assertOpen();
@@ -38333,7 +38604,7 @@ function registerWorkspaceQualifiedGitBranchRoutes(app, deps) {
38333
38604
  "/workspaces/:workspace/git/commit",
38334
38605
  deps.mutate({ strict: true }),
38335
38606
  (req, res) => {
38336
- const runtime = resolveTrustedRuntime5(deps.workspaceRegistry, req, res);
38607
+ const runtime = resolveTrustedRuntime(deps.workspaceRegistry, req, res);
38337
38608
  if (!runtime) return;
38338
38609
  try {
38339
38610
  runtime.generationGuard?.assertOpen();