@qwen-code/qwen-code 0.23.3 → 0.23.4

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 (462) hide show
  1. package/bundled/computer-use/SKILL.md +46 -198
  2. package/bundled/computer-use/references/macos.md +208 -0
  3. package/bundled/computer-use/references/windows-linux.md +247 -0
  4. package/bundled/goal-draft/SKILL.md +10 -10
  5. package/bundled/qc-helper/docs/configuration/settings.md +81 -71
  6. package/bundled/qc-helper/docs/extension/getting-started-extensions.md +2 -0
  7. package/bundled/qc-helper/docs/extension/introduction.md +9 -3
  8. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  9. package/bundled/qc-helper/docs/features/agent-board.md +89 -0
  10. package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -21
  11. package/bundled/qc-helper/docs/features/channels/dws.md +5 -1
  12. package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
  13. package/bundled/qc-helper/docs/features/code-review.md +18 -4
  14. package/bundled/qc-helper/docs/features/commands.md +9 -0
  15. package/bundled/qc-helper/docs/features/computer-use.md +26 -8
  16. package/bundled/qc-helper/docs/features/cross-session-protocol.md +23 -5
  17. package/bundled/qc-helper/docs/features/followup-suggestions.md +17 -5
  18. package/bundled/qc-helper/docs/features/goals.md +22 -18
  19. package/bundled/qc-helper/docs/features/hooks.md +48 -37
  20. package/bundled/qc-helper/docs/features/skills.md +33 -3
  21. package/bundled/qc-helper/docs/features/status-line.md +2 -0
  22. package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
  23. package/bundled/qc-helper/docs/qwen-serve.md +7 -3
  24. package/bundled/review/SKILL.md +20 -10
  25. package/bundled/review/references/persistence.md +2 -0
  26. package/bundled/workflow-authoring/SKILL.md +442 -0
  27. package/bundled/workflow-creator/SKILL.md +1 -1
  28. package/chunks/{MaxSizedBox-D4LW7RZZ.js → MaxSizedBox-Q44AWRWI.js} +59 -55
  29. package/chunks/{StandaloneSessionPicker-ALTTRWUP.js → StandaloneSessionPicker-UKII7M7U.js} +83 -79
  30. package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
  31. package/chunks/acp-subagent-executor-7RUAOXE7.js +141 -0
  32. package/chunks/{acpAgent-BBSW7XZG.js → acpAgent-5N3LHCO3.js} +1026 -355
  33. package/chunks/{agent-SQ6OY3QD.js → agent-LU5UJALC.js} +43 -39
  34. package/chunks/{agent-headless-RI2THRQ7.js → agent-headless-LTLADUGR.js} +43 -39
  35. package/chunks/{anthropicContentGenerator-JSKMKS6V.js → anthropicContentGenerator-H5YPXIDE.js} +37 -15
  36. package/chunks/{artifact-tool-PMYZCYNH.js → artifact-tool-MFGORTWZ.js} +59 -109
  37. package/chunks/{askUserQuestion-4M4YYIB4.js → askUserQuestion-WS4GUT7C.js} +3 -3
  38. package/chunks/{bridge-DAFMI72L.js → bridge-P34XQP3D.js} +63 -58
  39. package/chunks/{build-63BIOYWK.js → build-5KWQBWEQ.js} +1 -1
  40. package/chunks/{ca-KC2AISNS.js → ca-GZ4FDJU2.js} +3 -3
  41. package/chunks/{channel-management-service-OWDXVL7R.js → channel-management-service-AFVIT4VH.js} +8 -8
  42. package/chunks/{channel-settings-store-4I6JONT7.js → channel-settings-store-VE4ARRSR.js} +68 -64
  43. package/chunks/{channel-worker-group-F2ZZMLNS.js → channel-worker-group-JR6JOELM.js} +8 -8
  44. package/chunks/{channel-worker-manager-2SZLJJSJ.js → channel-worker-manager-AVKJEZFL.js} +8 -8
  45. package/chunks/{channel-worker-supervisor-ZFNWMG6D.js → channel-worker-supervisor-OOYY7BAQ.js} +5 -5
  46. package/chunks/{chunk-DAWWT2ID.js → chunk-2NRKLYID.js} +1374 -2164
  47. package/chunks/{chunk-53GWJOLP.js → chunk-2P2IXKDR.js} +3 -1
  48. package/chunks/{chunk-6JACAGYH.js → chunk-2S2WIGCM.js} +1 -1
  49. package/chunks/{chunk-IUVIBDKU.js → chunk-2YMRRI2C.js} +9 -10
  50. package/chunks/{chunk-MLQNSPRZ.js → chunk-3AYIKQTJ.js} +15 -5
  51. package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
  52. package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
  53. package/chunks/{chunk-BWAMMKIS.js → chunk-4XP7WXC4.js} +135 -6
  54. package/chunks/{chunk-W5ZQMAEM.js → chunk-4Y2I3CI3.js} +1 -1
  55. package/chunks/{chunk-HGEUHUEV.js → chunk-54B2LTKP.js} +1 -1
  56. package/chunks/{chunk-IRH27ZC2.js → chunk-5EZRLTLQ.js} +4 -4
  57. package/chunks/{chunk-DLH7YIX6.js → chunk-5FK4MSHB.js} +3 -3
  58. package/chunks/chunk-5JG3DAKS.js +1416 -0
  59. package/chunks/{chunk-CUEXOHQH.js → chunk-5ODRE7E5.js} +9 -15
  60. package/chunks/{chunk-532WHF4F.js → chunk-5VQR2DD7.js} +2 -2
  61. package/chunks/chunk-62MWBTS7.js +191 -0
  62. package/chunks/{chunk-YQHLFCPU.js → chunk-65ANUQSV.js} +32 -24
  63. package/chunks/{chunk-YBUMTY7B.js → chunk-66N6C4EH.js} +1 -1
  64. package/chunks/{chunk-AC6KDLH3.js → chunk-6TFZIA2L.js} +1 -1
  65. package/chunks/{chunk-Y2MYW47X.js → chunk-6WXVEDT2.js} +9 -2
  66. package/chunks/{chunk-NRXWJXJ4.js → chunk-7GKPKIUB.js} +15 -15
  67. package/chunks/chunk-7JGH6IMU.js +2780 -0
  68. package/chunks/{chunk-ZHKTKHMO.js → chunk-7MIBD3LG.js} +1 -1
  69. package/chunks/{chunk-HGAELO7B.js → chunk-7ML2ZLQF.js} +2 -2
  70. package/chunks/{chunk-3UXUOFO6.js → chunk-7W2Y3PZD.js} +9 -10
  71. package/chunks/{chunk-76RGWKLS.js → chunk-ABNX6E6K.js} +1 -1
  72. package/chunks/chunk-ACHCT36C.js +28 -0
  73. package/chunks/{chunk-NE624IVP.js → chunk-ADQUK6WA.js} +1 -1
  74. package/chunks/{chunk-PLLIWEM3.js → chunk-AEWCOE64.js} +2 -2
  75. package/chunks/{chunk-3FPYT6QC.js → chunk-ARDHE6MM.js} +23 -0
  76. package/chunks/{chunk-LILGKQ4B.js → chunk-AXZMWAJV.js} +156 -26
  77. package/chunks/{chunk-SYLECP23.js → chunk-BBMOAZ2E.js} +4 -4
  78. package/chunks/{chunk-RWVD5RRY.js → chunk-BDDE4YNP.js} +3 -3
  79. package/chunks/{chunk-TPKQIA7G.js → chunk-BSIOCNDK.js} +1 -1
  80. package/chunks/{chunk-U7O65WKL.js → chunk-BW2SMO6L.js} +1 -1
  81. package/chunks/{chunk-WBCPROWX.js → chunk-C4HBZQNH.js} +1 -1
  82. package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
  83. package/chunks/chunk-CFMZLE3L.js +75 -0
  84. package/chunks/{chunk-AXTFYDXT.js → chunk-CXXAZ2LZ.js} +1 -1
  85. package/chunks/{chunk-N7VWZDWW.js → chunk-DCRVSIK6.js} +4460 -3838
  86. package/chunks/{chunk-NJQTG2G3.js → chunk-DGTH4BSO.js} +11 -11
  87. package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
  88. package/chunks/{chunk-BWQLXU37.js → chunk-E4XZSQXB.js} +381 -86
  89. package/chunks/{chunk-2ALXPGB4.js → chunk-E6IR653O.js} +1 -1
  90. package/chunks/{chunk-R4Q2PEFV.js → chunk-E7HXORS7.js} +1 -1
  91. package/chunks/{chunk-ZKYR7QS4.js → chunk-EDB556X7.js} +2 -2
  92. package/chunks/{chunk-NUQVB25K.js → chunk-EKMJR7M3.js} +2 -2
  93. package/chunks/{chunk-Q5BD56BW.js → chunk-ELHAQ5H4.js} +7 -7
  94. package/chunks/{chunk-GSILBZLN.js → chunk-EOQXU3ZE.js} +2 -2
  95. package/chunks/{chunk-7QYWGTHB.js → chunk-EPVEPTI3.js} +44 -151
  96. package/chunks/{chunk-POC3YMHG.js → chunk-F2IRY2TD.js} +4 -4
  97. package/chunks/{chunk-S6Q6Q4P2.js → chunk-FBDHP23D.js} +1 -1
  98. package/chunks/{chunk-3I7W2POO.js → chunk-FGROOEKM.js} +5 -40
  99. package/chunks/{chunk-HNLMYDQE.js → chunk-FMLBBXHB.js} +13 -9
  100. package/chunks/{chunk-Z3GF56ME.js → chunk-FRISMWG3.js} +3 -3
  101. package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
  102. package/chunks/{chunk-IAEXTMED.js → chunk-GNV2SFO7.js} +173 -7
  103. package/chunks/{chunk-CXTPVBFA.js → chunk-GSS4SZNG.js} +100 -17
  104. package/chunks/{chunk-3XLK2QMY.js → chunk-H7L725Z6.js} +59 -16
  105. package/chunks/{chunk-6HUXPLB5.js → chunk-HEOH7JZY.js} +5 -5
  106. package/chunks/{chunk-DTNV6UZY.js → chunk-HFJSQ4GL.js} +10 -24
  107. package/chunks/{chunk-BZM5U74J.js → chunk-I6JRN375.js} +724 -468
  108. package/chunks/{chunk-VZUCTJ2P.js → chunk-I6YJZGHS.js} +10 -10
  109. package/chunks/{chunk-RZHU3K6M.js → chunk-IAS753HG.js} +2 -20
  110. package/chunks/{chunk-EDMXGXAK.js → chunk-IBRQG2MP.js} +10 -13
  111. package/chunks/{chunk-NOAG7N22.js → chunk-IGLX6UXJ.js} +2 -2
  112. package/chunks/chunk-INGBUYL6.js +230 -0
  113. package/chunks/{chunk-IL5M5NYD.js → chunk-IR5CVY5G.js} +11 -9
  114. package/chunks/{chunk-OX7IZ2G5.js → chunk-ITOB3LRT.js} +4 -4
  115. package/chunks/{chunk-LDVNJZGH.js → chunk-IUXWAKVS.js} +17 -8
  116. package/chunks/{chunk-2PJRI3EH.js → chunk-J4DRBDHX.js} +218 -43
  117. package/chunks/{chunk-XGYHNWL3.js → chunk-J7LBAKDH.js} +3 -3
  118. package/chunks/{chunk-W5FIP7FC.js → chunk-JLZ5YCMV.js} +5 -5
  119. package/chunks/{chunk-LG5Y4OWO.js → chunk-JRHKM3YQ.js} +2 -2
  120. package/chunks/{chunk-2ZN3O5FT.js → chunk-JZ3FFPES.js} +6 -6
  121. package/chunks/{chunk-NMCDMLHL.js → chunk-K2DCZ6SZ.js} +50 -35
  122. package/chunks/{chunk-F42YYSCK.js → chunk-KLGCF6G7.js} +8 -8
  123. package/chunks/{chunk-K2OJUPOE.js → chunk-KP2FHIFR.js} +12 -0
  124. package/chunks/{chunk-IV7GDNKC.js → chunk-KZCK5JUN.js} +4 -4
  125. package/chunks/{acp-subagent-executor-LEUN3N7N.js → chunk-L56E7YUM.js} +11 -110
  126. package/chunks/{chunk-NMRCXKQ5.js → chunk-L5BVU4JW.js} +3 -3
  127. package/chunks/{chunk-ZW2EUO2A.js → chunk-L6DIANLD.js} +1 -1
  128. package/chunks/{chunk-GOXQL4YH.js → chunk-LFNK4DGQ.js} +2 -2
  129. package/chunks/{chunk-UKZ45TJL.js → chunk-LMDMYMSS.js} +420 -219
  130. package/chunks/chunk-LMJSPC55.js +260 -0
  131. package/chunks/{chunk-X6K77VHC.js → chunk-LWWRJRCD.js} +1 -1
  132. package/chunks/{chunk-UXEO7E3V.js → chunk-LYD3T3H7.js} +1 -0
  133. package/chunks/{chunk-HBQ2NXOU.js → chunk-M6MID3FA.js} +2 -2
  134. package/chunks/{chunk-E4UEO3XM.js → chunk-ME4JBHSB.js} +324 -2
  135. package/chunks/{chunk-MF6E7FSA.js → chunk-MFPAVOYJ.js} +8 -201
  136. package/chunks/{chunk-BV6Q5HMY.js → chunk-MJHLKWGJ.js} +8 -7
  137. package/chunks/{chunk-NFYEQRLG.js → chunk-MQRLLBMQ.js} +1 -1
  138. package/chunks/{chunk-O4KNCAX4.js → chunk-NCPFOLM2.js} +11 -0
  139. package/chunks/{chunk-2SZH22YO.js → chunk-NJ2OFVUX.js} +115 -97
  140. package/chunks/{chunk-6MBXY6WM.js → chunk-NRQI3PGS.js} +1 -1
  141. package/chunks/{chunk-3CZ2BQV6.js → chunk-NXUZFW3G.js} +49 -19
  142. package/chunks/{chunk-X7UJKOHZ.js → chunk-O75ZXPOX.js} +4 -6
  143. package/chunks/{chunk-5GLDOLNQ.js → chunk-OWUAZXXN.js} +4 -3
  144. package/chunks/{chunk-XBZTAGB7.js → chunk-OXDQETZA.js} +1 -1
  145. package/chunks/{chunk-2UWQX4FP.js → chunk-OZEV3R3S.js} +1 -1
  146. package/chunks/{chunk-SBRX4BDI.js → chunk-P225AM5U.js} +2 -2
  147. package/chunks/{chunk-ZU47FBOC.js → chunk-P6XVYPWA.js} +126 -12
  148. package/chunks/{chunk-MHAADZOZ.js → chunk-PCIYPEYV.js} +3 -3
  149. package/chunks/{chunk-SSGAAWLY.js → chunk-PNACDSCO.js} +95 -73
  150. package/chunks/chunk-PRWRNC64.js +32 -0
  151. package/chunks/{chunk-7BXXIQG4.js → chunk-PVKEYO5D.js} +36 -72
  152. package/chunks/{chunk-FCQJLMA2.js → chunk-Q3TFRP5G.js} +178 -8
  153. package/chunks/{chunk-DYFOSJHU.js → chunk-QM2MRAG4.js} +2756 -1153
  154. package/chunks/{chunk-ZKZHSB5W.js → chunk-QR4Q425T.js} +9 -9
  155. package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
  156. package/chunks/{chunk-3BTSSIJO.js → chunk-RHTNPDGD.js} +99 -14
  157. package/chunks/{chunk-OLTN767L.js → chunk-RJFUPP3F.js} +2 -2
  158. package/chunks/chunk-RKXAOP6F.js +154 -0
  159. package/chunks/{chunk-TP6FYVQT.js → chunk-RSWBT7AZ.js} +33 -1
  160. package/chunks/{chunk-E7LB57MB.js → chunk-RWKR4VNK.js} +6 -6
  161. package/chunks/chunk-S7UQ3V2H.js +87 -0
  162. package/chunks/{chunk-N6VQ37ZZ.js → chunk-SFL6U7U7.js} +1 -1
  163. package/chunks/{chunk-SODMFNAR.js → chunk-SQCZDHBQ.js} +5 -5
  164. package/chunks/{chunk-MOS5OAOG.js → chunk-SROLVJFY.js} +6 -6
  165. package/chunks/{chunk-3KQBQ6FM.js → chunk-SYDMM6IX.js} +190 -28
  166. package/chunks/{chunk-HUXPEUFL.js → chunk-SYROIHU7.js} +1 -1
  167. package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
  168. package/chunks/{chunk-RLLRJJDR.js → chunk-TJDUJSVH.js} +2 -2
  169. package/chunks/{chunk-HBU7EKY4.js → chunk-TRKIKBUW.js} +45 -15
  170. package/chunks/{chunk-GCDXVPFK.js → chunk-TW2RLZPC.js} +31 -7
  171. package/chunks/chunk-U6H3XTFA.js +95 -0
  172. package/chunks/{chunk-NHJKAR6E.js → chunk-UGEDTVL6.js} +972 -18
  173. package/chunks/{chunk-KOKPXIAN.js → chunk-UL4DXZMP.js} +3 -3
  174. package/chunks/{chunk-MSNHNAQZ.js → chunk-UUT7EFX3.js} +3 -3
  175. package/chunks/{chunk-JXNIF2O5.js → chunk-V545KI73.js} +1 -1
  176. package/chunks/{chunk-7ICHPMBQ.js → chunk-VELFTVEO.js} +4 -4
  177. package/chunks/chunk-VGY2RGXL.js +100 -0
  178. package/chunks/{chunk-5KI7ZDTB.js → chunk-VQ3SUPLA.js} +24 -12
  179. package/chunks/{chunk-TBEXLLAO.js → chunk-VRQZESKP.js} +1 -1
  180. package/chunks/{chunk-FN3JNDRU.js → chunk-VVI7MK3V.js} +3 -3
  181. package/chunks/{chunk-EUURTIV6.js → chunk-WBSJ6VPZ.js} +10 -2
  182. package/chunks/{chunk-NLNQNBZ2.js → chunk-WD6YQI5M.js} +1 -1
  183. package/chunks/{chunk-KFZYGSJN.js → chunk-WDB57HEI.js} +3 -3
  184. package/chunks/chunk-WFNEY5G7.js +347 -0
  185. package/chunks/{chunk-XKBFYTCD.js → chunk-WK6DEH3Q.js} +46 -0
  186. package/chunks/{chunk-EVTNACMT.js → chunk-WKQX4FND.js} +12 -12
  187. package/chunks/{chunk-36HCNKDS.js → chunk-WKVZES7O.js} +65 -14
  188. package/chunks/{chunk-NHCZJQE4.js → chunk-WLFILD4T.js} +6 -6
  189. package/chunks/{chunk-JYKWOREU.js → chunk-WMEX6CFP.js} +13 -3
  190. package/chunks/{chunk-6W4HBUA2.js → chunk-WNQRJXKP.js} +1 -1
  191. package/chunks/{chunk-7APZIRH3.js → chunk-X7GOO6VM.js} +5 -5
  192. package/chunks/{chunk-VX63RJXE.js → chunk-XX5HQLCZ.js} +7 -0
  193. package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
  194. package/chunks/{chunk-V2P3DOQR.js → chunk-YDFOHRS5.js} +1 -1
  195. package/chunks/{chunk-QMUYLYT5.js → chunk-YGFJ6BRT.js} +1 -1
  196. package/chunks/{chunk-LK2WUCDQ.js → chunk-YM6KUQ2S.js} +1 -1
  197. package/chunks/chunk-Z72PLR74.js +36 -0
  198. package/chunks/{chunk-BHTYRHJF.js → chunk-ZJ7JQUGY.js} +4 -1
  199. package/chunks/{chunk-4ALNJDHL.js → chunk-ZKIAGIGH.js} +87 -4
  200. package/chunks/{chunk-VG3Q2NC4.js → chunk-ZNI3YJHS.js} +32 -12
  201. package/chunks/{chunk-DT75RKNH.js → chunk-ZXUKZHMV.js} +3 -3
  202. package/chunks/{chunk-Q2LVVIKF.js → chunk-ZZUXUBEB.js} +29 -12
  203. package/chunks/codex-subagent-executor-WCRCJMQK.js +586 -0
  204. package/chunks/{config-utils-L6KLDYIV.js → config-utils-73C3RGYN.js} +60 -56
  205. package/chunks/{contextCommand-UYEH7NIU.js → contextCommand-4ZDPQJHD.js} +58 -54
  206. package/chunks/{core-runtime-NVHT3Z3V.js → core-runtime-ZDUA5DYE.js} +58 -55
  207. package/chunks/{create-sub-session-YWASE5VH.js → create-sub-session-JK3SSJKO.js} +169 -89
  208. package/chunks/{create-sub-session-TIGCFGCS.js → create-sub-session-MSGNIM37.js} +5 -2
  209. package/chunks/{cron-create-AKWX67FO.js → cron-create-U2JJ5CCF.js} +3 -3
  210. package/chunks/{cron-delete-XPB6IYZJ.js → cron-delete-7DM4LJWD.js} +2 -2
  211. package/chunks/{cron-list-XBKO4WU5.js → cron-list-VCUSZK2Y.js} +2 -2
  212. package/chunks/{daemon-G5TYKZD6.js → daemon-NJB4PWZ7.js} +3 -1
  213. package/chunks/{daemon-git-worktree-guard-FOW4RQSK.js → daemon-git-worktree-guard-QU2CCJIE.js} +58 -54
  214. package/chunks/{daemon-status-provider-O5KQZYMP.js → daemon-status-provider-2PO7NLDQ.js} +68 -63
  215. package/chunks/{daemon-trust-policy-3ATXEON7.js → daemon-trust-policy-IMDTIUWB.js} +64 -60
  216. package/chunks/{daemon-trust-policy-monitor-7MCNDNEC.js → daemon-trust-policy-monitor-6IVBNUAD.js} +64 -60
  217. package/chunks/{de-UU2YTO37.js → de-VGY3VNBU.js} +3 -3
  218. package/chunks/{deferred-core-runtime-JK5IXL5K.js → deferred-core-runtime-3AZUE7F3.js} +56 -52
  219. package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
  220. package/chunks/{display-image-NAH3AZ63.js → display-image-QTHALY6N.js} +3 -3
  221. package/chunks/{dist-KLZ7XGEQ.js → dist-2QYIVNS6.js} +1 -4
  222. package/chunks/{dist-AHJYPSJL.js → dist-GUB7QRYA.js} +2 -5
  223. package/chunks/{dist-ZXTZTE54.js → dist-MPUZZOG5.js} +4 -17
  224. package/chunks/{dist-F2DVGTL3.js → dist-NIOJXMGY.js} +111 -101
  225. package/chunks/{dist-KJGRVIGJ.js → dist-PA7WPFVE.js} +5 -36
  226. package/chunks/{dist-AIKC5E5P.js → dist-SE4J6Z4O.js} +43 -669
  227. package/chunks/{dist-H6G3K26N.js → dist-T6DDPDLQ.js} +14 -34
  228. package/chunks/{dist-GWNQVPZT.js → dist-TFGETXFN.js} +10 -33
  229. package/chunks/{dist-ZA52JXAS.js → dist-VDLSBCLM.js} +1 -5
  230. package/chunks/{edit-SY35KYIE.js → edit-HXMBABZU.js} +46 -42
  231. package/chunks/{en-CAJHTIQT.js → en-E5ZO5TZW.js} +5 -3
  232. package/chunks/{enter-worktree-54L5QJ3N.js → enter-worktree-CAARFWBI.js} +6 -5
  233. package/chunks/{enterPlanMode-HXX6KQJR.js → enterPlanMode-KAMW2I2C.js} +43 -39
  234. package/chunks/{environment-DKXHG4HB.js → environment-HYMXOTVB.js} +59 -55
  235. package/chunks/{errors-ADY7LQJJ.js → errors-NQRH7NAM.js} +58 -54
  236. package/chunks/exec-RPKEY6HP.js +505 -0
  237. package/chunks/{exit-worktree-EORJDKDS.js → exit-worktree-JXGGUOBP.js} +6 -5
  238. package/chunks/{exitPlanMode-HSK2CQI6.js → exitPlanMode-SMEBS5EF.js} +43 -39
  239. package/chunks/{fast-path-U636VWN2.js → fast-path-CUWUTJUR.js} +10 -10
  240. package/chunks/{fast-path-settings-V7MI7EZJ.js → fast-path-settings-XDYX7X5Z.js} +2 -2
  241. package/chunks/{fr-HKNWVXRJ.js → fr-UAZJJH5N.js} +3 -3
  242. package/chunks/{glob-GUGGTH5L.js → glob-VOM5DVZ3.js} +43 -39
  243. package/chunks/{goal-tools-PXYRSQGX.js → goal-tools-YBYJ5KPM.js} +49 -41
  244. package/chunks/{grep-3PKFKLCA.js → grep-H2I33VAO.js} +8 -3
  245. package/chunks/{handleAutoUpdate-5KHS4HIN.js → handleAutoUpdate-4CEHNJ2F.js} +61 -57
  246. package/chunks/{i18n-KSGKMUPT.js → i18n-G7ODGUGN.js} +57 -53
  247. package/chunks/{image-gen-OCCR2WWU.js → image-gen-5G2TQ3DY.js} +6 -5
  248. package/chunks/{initializer-YYT5XEZF.js → initializer-GZ73HSOA.js} +64 -60
  249. package/chunks/{installationInfo-UNSBPYW2.js → installationInfo-PV472I52.js} +57 -53
  250. package/chunks/{ja-GJS5RZGU.js → ja-2RITCMAJ.js} +3 -3
  251. package/chunks/list-D4A7LFOF.js +133 -0
  252. package/chunks/{list-agents-QLDXS5OD.js → list-agents-EWDCEPIW.js} +3 -3
  253. package/chunks/{llm-XGGLBGPH.js → llm-PJU4VT3K.js} +161 -125
  254. package/chunks/{llm-content-generator-ZHQQT5W7.js → llm-content-generator-ITOMDK65.js} +14 -7
  255. package/chunks/{loadedSettingsAdapter-3DXLASK7.js → loadedSettingsAdapter-NNU4BY5Q.js} +64 -60
  256. package/chunks/{loggingContentGenerator-V72OCCJO.js → loggingContentGenerator-SMI2AJYY.js} +47 -43
  257. package/chunks/{loop-wakeup-HHMYIC7Z.js → loop-wakeup-VG6CGBQA.js} +4 -4
  258. package/chunks/{ls-N7ABR6HI.js → ls-6ZB3BEIR.js} +1 -1
  259. package/chunks/{lsp-LTOFWG5P.js → lsp-M54FQARP.js} +5 -1
  260. package/chunks/{managed-npm-update-HV5LPZH2.js → managed-npm-update-AN5RDI5D.js} +57 -53
  261. package/chunks/mcp-RIIEZ7NJ.js +127 -0
  262. package/chunks/model-configuration-E5M35A3M.js +140 -0
  263. package/chunks/modelConfigUtils-43SY2EDS.js +119 -0
  264. package/chunks/{monitor-TLBNM4MV.js → monitor-5WYDOXLI.js} +43 -39
  265. package/chunks/{nonInteractiveCli-LSJSQ2W4.js → nonInteractiveCli-D3YFYXNB.js} +112 -107
  266. package/chunks/{notebook-edit-OSPOLZP6.js → notebook-edit-GQNFJTIR.js} +45 -41
  267. package/chunks/{openaiContentGenerator-BE4S5TRD.js → openaiContentGenerator-VJAKFZ32.js} +24 -19
  268. package/chunks/{openaiResponsesContentGenerator-RTCAJ5V5.js → openaiResponsesContentGenerator-AWRYZLJU.js} +110 -19
  269. package/chunks/{pidfile-H32FEPWA.js → pidfile-I5SWEJDX.js} +56 -52
  270. package/chunks/{processUtils-SSLIPDEA.js → processUtils-NSYM3SKR.js} +2 -2
  271. package/chunks/{prompt-terminal-ledger-I5SLL6UF.js → prompt-terminal-ledger-KWBANHUE.js} +57 -53
  272. package/chunks/{pt-FXMYXEUV.js → pt-5ZF7ZQUV.js} +3 -3
  273. package/chunks/{qwenContentGenerator-TMQC623Z.js → qwenContentGenerator-LR6HNFBU.js} +47 -43
  274. package/chunks/{qwenOAuth2-3ZRQHHTC.js → qwenOAuth2-WIEUEFEY.js} +5 -4
  275. package/chunks/{read-file-T2QAIZE2.js → read-file-LOSUPKDX.js} +9 -8
  276. package/chunks/{read-mcp-resource-B37WANAQ.js → read-mcp-resource-LPSWXVOD.js} +1 -1
  277. package/chunks/{record-artifact-OAXWXZ5D.js → record-artifact-PXMNP7GZ.js} +3 -3
  278. package/chunks/{record-source-D7R7X3GT.js → record-source-2GSY5JD5.js} +6 -6
  279. package/chunks/{report-findings-AR3VC6EQ.js → report-findings-W6GR7SYZ.js} +4 -4
  280. package/chunks/{request-shutdown-IKNWTX5M.js → request-shutdown-53SNYGVR.js} +5 -5
  281. package/chunks/{resumeHistoryUtils-QLKDH5GY.js → resumeHistoryUtils-6IFK3MQO.js} +63 -59
  282. package/chunks/{ripGrep-YGWL7KCV.js → ripGrep-MBSYRHNP.js} +13 -11
  283. package/chunks/{ru-RMHURE5U.js → ru-7BNZFQKG.js} +3 -3
  284. package/chunks/{run-qwen-serve-26KZDECC.js → run-qwen-serve-WYEEYIHV.js} +314 -127
  285. package/chunks/{runtime-BMEIVDDG.js → runtime-FVTTOB4E.js} +69 -65
  286. package/chunks/{scheduled-tasks-NCFPP6VQ.js → scheduled-tasks-RN6DUY7E.js} +66 -60
  287. package/chunks/{scheduler-47TVMUVN.js → scheduler-T7DDWINW.js} +58 -54
  288. package/chunks/{sdk-exporters-http-VWTF4W6K.js → sdk-exporters-http-3R2TRQHE.js} +2 -1
  289. package/chunks/{sdk-impl-G6FVTBQZ.js → sdk-impl-4WF3VZ2F.js} +3 -3
  290. package/chunks/{send-message-TWOGWCBG.js → send-message-UMJKN27Q.js} +7 -7
  291. package/chunks/{serve-KL3G6LQQ.js → serve-LVMPJBTV.js} +66 -62
  292. package/chunks/{server-LBPYXZ5G.js → server-U7K7EJEP.js} +783 -350
  293. package/chunks/{session-YG6742LO.js → session-BQNC5QUN.js} +117 -112
  294. package/chunks/{session-attachments-root-OUBQDYC4.js → session-attachments-root-LQDHWZST.js} +56 -52
  295. package/chunks/{session-pr-refresh-EKGMYNAW.js → session-pr-refresh-J7DQYX2I.js} +66 -60
  296. package/chunks/{settings-DDNHJX2L.js → settings-WAWJIZHR.js} +67 -63
  297. package/chunks/{shell-KUCXWITU.js → shell-WFJEYGQI.js} +43 -39
  298. package/chunks/{skill-JQLKPNWZ.js → skill-RHQWSDOK.js} +128 -23
  299. package/chunks/{skill-settings-XERQCUXZ.js → skill-settings-ALFUQQD6.js} +72 -60
  300. package/chunks/{spawnChannel-GQ45QFGB.js → spawnChannel-D35CB5JB.js} +60 -55
  301. package/chunks/{standalone-update-PRF3ILGZ.js → standalone-update-NMMY6CAO.js} +58 -54
  302. package/chunks/{start-opentui-ui-JDSOZE3N.js → start-opentui-ui-F6BN46GE.js} +2693 -2160
  303. package/chunks/{startInteractiveUI-RRW3JVHN.js → startInteractiveUI-E6U7L5AD.js} +1610 -1773
  304. package/chunks/{syntheticOutput-F6F27JMK.js → syntheticOutput-EX5L5GYI.js} +2 -2
  305. package/chunks/{task-create-Y623TBHB.js → task-create-75HVPEAH.js} +7 -7
  306. package/chunks/{task-list-FCPEEGWL.js → task-list-ZLJSMRFA.js} +2 -2
  307. package/chunks/{task-stop-QTKZXLPH.js → task-stop-MD7P6QGK.js} +1 -1
  308. package/chunks/{task-update-YLSXF25N.js → task-update-RI7QNVDP.js} +20 -13
  309. package/chunks/{team-create-5DRLOLOE.js → team-create-DKAJ3OUY.js} +43 -39
  310. package/chunks/{team-delete-S7TLHZCF.js → team-delete-RIDINW6I.js} +1 -1
  311. package/chunks/{team-plan-approval-MWSGAL5T.js → team-plan-approval-ZUG32DAK.js} +43 -39
  312. package/chunks/{terminal-image-renderer-H7PD4FQW.js → terminal-image-renderer-U3Z5PMGO.js} +58 -54
  313. package/chunks/{theme-manager-7AV73D6R.js → theme-manager-GA65ZFKB.js} +56 -52
  314. package/chunks/{todoWrite-5QI2H2FW.js → todoWrite-XSTG2VT5.js} +6 -3
  315. package/chunks/{tool-search-UGYTBLUV.js → tool-search-XCEN7VXX.js} +17 -12
  316. package/chunks/{total-session-admission-JIHSTJ5S.js → total-session-admission-FZSHBR32.js} +63 -58
  317. package/chunks/{trustedFolders-5VCBXFOP.js → trustedFolders-SXPNZESV.js} +57 -53
  318. package/chunks/{update-relaunch-4LF3APCV.js → update-relaunch-QOUTZZ7Q.js} +5 -5
  319. package/chunks/{updateCheck-4T3WUE5F.js → updateCheck-DYRX7M34.js} +60 -56
  320. package/chunks/{useAutoAcceptIndicator-UMGB64Z6.js → useAutoAcceptIndicator-QOG7LUT3.js} +68 -64
  321. package/chunks/{validateNonInterActiveAuth-GFJ72U2C.js → validateNonInterActiveAuth-FJPAEMDD.js} +109 -104
  322. package/chunks/{version-EAAZN4T2.js → version-5IC46F2Z.js} +1 -1
  323. package/chunks/{web-fetch-VRU3A2NI.js → web-fetch-WSW4QZBA.js} +15 -13
  324. package/chunks/web-search-5QFKXWUV.js +39 -0
  325. package/chunks/{web-shell-static-CCN4JZEE.js → web-shell-static-T7UGLVE4.js} +2 -7
  326. package/chunks/{workflow-UHPFALVZ.js → workflow-ZF4DLK4V.js} +179 -79
  327. package/chunks/workspace-providers-status-4E4XWBFS.js +133 -0
  328. package/chunks/{workspace-registration-store-A7RGKW62.js → workspace-registration-store-M3QEP27F.js} +2 -2
  329. package/chunks/{workspace-registry-C2NGE6SD.js → workspace-registry-H2ENI5G2.js} +63 -58
  330. package/chunks/{workspace-runtime-coordinator-QKMZ24YF.js → workspace-runtime-coordinator-CRRNB7PC.js} +66 -59
  331. package/chunks/{workspace-service-RQTTAGGC.js → workspace-service-GJ2GOHKU.js} +70 -65
  332. package/chunks/workspace-skills-status-CRWHV35X.js +130 -0
  333. package/chunks/{workspace-trust-reconciler-KFWATZUU.js → workspace-trust-reconciler-GG2JA7KI.js} +73 -68
  334. package/chunks/{write-file-DPVB2SBQ.js → write-file-LZ4EMF36.js} +45 -41
  335. package/chunks/{zh-TW-2K2WRFPY.js → zh-TW-7PRVUGLW.js} +5 -3
  336. package/chunks/{zh-S5V3Z5CR.js → zh-V2EYTYJP.js} +5 -3
  337. package/chunks/{zoom-image-S7AWLAPC.js → zoom-image-J5IMS3WD.js} +11 -10
  338. package/cli.js +18 -17
  339. package/codeModeHost.js +4425 -0
  340. package/export-transcript-document.css +1 -1
  341. package/export-transcript-document.js +151 -151
  342. package/locales/ca.js +5 -6
  343. package/locales/de.js +5 -6
  344. package/locales/en.js +7 -6
  345. package/locales/fr.js +6 -6
  346. package/locales/ja.js +5 -6
  347. package/locales/pt.js +5 -6
  348. package/locales/ru.js +6 -6
  349. package/locales/zh-TW.js +7 -6
  350. package/locales/zh.js +7 -6
  351. package/package.json +4 -3
  352. package/web-shell/assets/{abnfDiagram-VCTEODGH-nU24rpIE.js → abnfDiagram-VCTEODGH-S_JCiANq.js} +1 -1
  353. package/web-shell/assets/{arc-D1hTu8QI.js → arc-DP-839Xn.js} +1 -1
  354. package/web-shell/assets/architectureDiagram-5GKGNRK7-C8rCd2KK.js +36 -0
  355. package/web-shell/assets/blockDiagram-NRAW4CY4-DQR82jwr.js +129 -0
  356. package/web-shell/assets/{c4Diagram-UCG6FXSJ-kEFoC1ei.js → c4Diagram-UCG6FXSJ-D21PNMRP.js} +4 -4
  357. package/web-shell/assets/channel-BgGrpX_z.js +1 -0
  358. package/web-shell/assets/{chunk-2Q5K7J3B-DbT9wS7j.js → chunk-2Q5K7J3B-KdDInGLi.js} +1 -1
  359. package/web-shell/assets/{chunk-5VM5RSS4-CNbULt6O.js → chunk-5VM5RSS4-ltb7zRmH.js} +1 -1
  360. package/web-shell/assets/{chunk-F27PBJKO-CbQRy4Tb.js → chunk-F27PBJKO-DcpQA0Ng.js} +1 -1
  361. package/web-shell/assets/chunk-G27WJ6UU-C8NDZxcy.js +231 -0
  362. package/web-shell/assets/chunk-JWPE2WC7-hXhhHTs1.js +1 -0
  363. package/web-shell/assets/chunk-LCL6LL3I-CLaOR-Hl.js +206 -0
  364. package/web-shell/assets/chunk-POPQ4Y6H-Y5_qlB1N.js +1 -0
  365. package/web-shell/assets/{chunk-SVP7TREG-DyBb2Axj.js → chunk-SVP7TREG-BWX2Voh7.js} +4 -4
  366. package/web-shell/assets/{chunk-XXDRQBXY-BIA0eb5B.js → chunk-XXDRQBXY-1wmj_kXI.js} +1 -1
  367. package/web-shell/assets/classDiagram-DTDB5LWJ-jUH7ADYs.js +1 -0
  368. package/web-shell/assets/classDiagram-v2-JRS7N3AN-jUH7ADYs.js +1 -0
  369. package/web-shell/assets/cose-bilkent-JH36ORCC-DpLc-cdd.js +1 -0
  370. package/web-shell/assets/cynefin-OW5HDTMX-DhxGiPZW.js +178 -0
  371. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-LENf_IUy.js → cynefinDiagram-5FMLGOSQ-Dl3jfBry.js} +1 -1
  372. package/web-shell/assets/{cytoscape.esm-CUqq0XTU.js → cytoscape.esm-DJK6lGiH.js} +3 -3
  373. package/web-shell/assets/dagre-3AP2YEHR-C8FA8vJk.js +4 -0
  374. package/web-shell/assets/diagram-S7CK7UJ4-D-quIUtW.js +30 -0
  375. package/web-shell/assets/diagram-UQ7AKVKN-Bjo09Uts.js +41 -0
  376. package/web-shell/assets/diagram-VSXAHHWV-IoI3ttq4.js +3 -0
  377. package/web-shell/assets/diagram-VX7I27RA-BKyOZ5SO.js +24 -0
  378. package/web-shell/assets/diagram-Z3DM3KII-Cu_OHEhw.js +24 -0
  379. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BGpiquRm.js → ebnfDiagram-PWID7BFC-UVB-bbPg.js} +1 -1
  380. package/web-shell/assets/{erDiagram-SSCWMZ5O-D0besu_U.js → erDiagram-SSCWMZ5O-l8drddto.js} +13 -13
  381. package/web-shell/assets/flowDiagram-A5DVABFB-DU1I_VAI.js +168 -0
  382. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CNlsAeNr.js → ganttDiagram-EL5Y4UJY-BLRH05uB.js} +1 -1
  383. package/web-shell/assets/gitGraphDiagram-WWUBYQGX-Czg_BkRE.js +106 -0
  384. package/web-shell/assets/index-CmMV8Jla.js +3 -0
  385. package/web-shell/assets/{index-CGT341lL.js → index-DohPy72Z.js} +1 -1
  386. package/web-shell/assets/index-DyMtNYuu.js +2207 -0
  387. package/web-shell/assets/index-n6N-2a3v.css +36 -0
  388. package/web-shell/assets/{infoDiagram-RXCK75RN-Bpai64Ll.js → infoDiagram-RXCK75RN-BpBvjkro.js} +1 -1
  389. package/web-shell/assets/ishikawaDiagram-5VMMS53U-phy1l3jm.js +70 -0
  390. package/web-shell/assets/{journeyDiagram-EYS64GPL-iz_DKgFX.js → journeyDiagram-EYS64GPL-oY-9LgVS.js} +1 -1
  391. package/web-shell/assets/kanban-definition-3QL26DDD-slZoy-sc.js +89 -0
  392. package/web-shell/assets/{layout-qEvKgnvU.js → layout-0hnn_P9l.js} +1 -1
  393. package/web-shell/assets/{linear-C6lklGdq.js → linear-7Wqe8DRy.js} +1 -1
  394. package/web-shell/assets/mermaid.core-BaK8n0bq.js +312 -0
  395. package/web-shell/assets/mindmap-definition-FBJOCRG2-BedUdy_E.js +96 -0
  396. package/web-shell/assets/{pegDiagram-XKGWAZYB-BhD0q0i6.js → pegDiagram-XKGWAZYB-DQLRdmxq.js} +1 -1
  397. package/web-shell/assets/pieDiagram-E7YTZNPT-UC20w9-5.js +39 -0
  398. package/web-shell/assets/quadrantDiagram-AXDQQJYC-CQx2Hmk3.js +7 -0
  399. package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
  400. package/web-shell/assets/{railroadDiagram-O6MQD6OU-E1g2KIFK.js → railroadDiagram-O6MQD6OU-2UEJe_y-.js} +1 -1
  401. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CuerYJOe.js → requirementDiagram-EFPCY7ZU-DOAJggB4.js} +13 -13
  402. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CqWyCZGA.js → sankeyDiagram-P5KCCOFB-DnQ_qJo7.js} +7 -7
  403. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-B-YWb8x4.js → sequenceDiagram-WJ2MYXX4-DZrZUoCo.js} +16 -16
  404. package/web-shell/assets/sizeCapture-X5ZJPWSS-B5G4GDQB.js +1 -0
  405. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C8LDpNHS.js → stateDiagram-HBIQ2CUA-Bn1cT0qF.js} +1 -1
  406. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BF3xtNvJ.js +1 -0
  407. package/web-shell/assets/swimlanes-XN3QIQJK-Bzhcdn87.js +1 -0
  408. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B753mA3E.js +8 -0
  409. package/web-shell/assets/timeline-definition-24CTP7MA-BqZ_3D10.js +120 -0
  410. package/web-shell/assets/vennDiagram-4TSXK5OY-z9kw1kmm.js +34 -0
  411. package/web-shell/assets/wardleyDiagram-VM6X3IG4-Cydp1zJW.js +78 -0
  412. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-ruD2Wjhg.js → xychartDiagram-S5SC5T6Z-j4X1lQKo.js} +1 -1
  413. package/web-shell/index.html +2 -2
  414. package/chunks/chunk-7Q2AXRDJ.js +0 -114
  415. package/chunks/chunk-AEY27Z35.js +0 -1411
  416. package/chunks/chunk-CFKIH3D3.js +0 -50
  417. package/chunks/chunk-HWVUSYSN.js +0 -126
  418. package/chunks/chunk-QHMLYMMS.js +0 -32
  419. package/chunks/chunk-SAH4BD2J.js +0 -92
  420. package/chunks/chunk-TWUKBNWM.js +0 -86
  421. package/chunks/chunk-ZTTC7T4X.js +0 -126
  422. package/chunks/list-YL6LDQKQ.js +0 -129
  423. package/chunks/mcp-IYVSIW6O.js +0 -123
  424. package/chunks/web-search-NEGYQNDJ.js +0 -912
  425. package/chunks/workspace-providers-status-AEYISSU2.js +0 -127
  426. package/chunks/workspace-skills-status-5HWZU3HX.js +0 -126
  427. package/web-shell/assets/architectureDiagram-5GKGNRK7-B_fgkKe7.js +0 -36
  428. package/web-shell/assets/blockDiagram-NRAW4CY4-C3pddUNg.js +0 -129
  429. package/web-shell/assets/channel-Blod4z1X.js +0 -1
  430. package/web-shell/assets/chunk-G27WJ6UU-CVbXTxYk.js +0 -231
  431. package/web-shell/assets/chunk-JWPE2WC7-D89c_BXy.js +0 -1
  432. package/web-shell/assets/chunk-LCL6LL3I-B7-I_9KB.js +0 -206
  433. package/web-shell/assets/chunk-POPQ4Y6H-DcLQFzS4.js +0 -1
  434. package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +0 -1
  435. package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +0 -1
  436. package/web-shell/assets/cose-bilkent-JH36ORCC-Db2FYN85.js +0 -1
  437. package/web-shell/assets/cynefin-OW5HDTMX-i4GwmBVy.js +0 -178
  438. package/web-shell/assets/dagre-3AP2YEHR-CF9XVrD9.js +0 -4
  439. package/web-shell/assets/diagram-S7CK7UJ4-DD5PJfSm.js +0 -30
  440. package/web-shell/assets/diagram-UQ7AKVKN-CjD_sBMj.js +0 -41
  441. package/web-shell/assets/diagram-VSXAHHWV-U5WwMqyA.js +0 -3
  442. package/web-shell/assets/diagram-VX7I27RA-BujpHJJf.js +0 -24
  443. package/web-shell/assets/diagram-Z3DM3KII-3ZLtKEXo.js +0 -24
  444. package/web-shell/assets/flowDiagram-A5DVABFB-9DwDuIyr.js +0 -168
  445. package/web-shell/assets/gitGraphDiagram-WWUBYQGX-C_pPFiTR.js +0 -106
  446. package/web-shell/assets/index-BYWs4JWq.js +0 -3
  447. package/web-shell/assets/index-D3YS6KuJ.js +0 -2173
  448. package/web-shell/assets/index-eBxK3rs2.css +0 -36
  449. package/web-shell/assets/ishikawaDiagram-5VMMS53U-ktpJFq4r.js +0 -70
  450. package/web-shell/assets/kanban-definition-3QL26DDD-m_gG00Yt.js +0 -89
  451. package/web-shell/assets/mermaid.core-DSCYB_2P.js +0 -312
  452. package/web-shell/assets/mindmap-definition-FBJOCRG2-DRQbT8w-.js +0 -96
  453. package/web-shell/assets/pieDiagram-E7YTZNPT-BvIGQCSd.js +0 -39
  454. package/web-shell/assets/quadrantDiagram-AXDQQJYC-BDQtfpU-.js +0 -7
  455. package/web-shell/assets/sizeCapture-X5ZJPWSS-BB7YY4Tl.js +0 -1
  456. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +0 -1
  457. package/web-shell/assets/swimlanes-XN3QIQJK-D94vOoxZ.js +0 -1
  458. package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +0 -8
  459. package/web-shell/assets/timeline-definition-24CTP7MA-C9C8uEYm.js +0 -120
  460. package/web-shell/assets/vennDiagram-4TSXK5OY-CYzMHbVW.js +0 -34
  461. package/web-shell/assets/wardleyDiagram-VM6X3IG4-G9nhtLES.js +0 -78
  462. package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
@@ -0,0 +1,260 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ skillRestrictionNames
5
+ } from "./chunk-NJ2OFVUX.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/config/skill-settings.ts
14
+ init_esbuild_shims();
15
+ function normalizeSkillNames(value) {
16
+ if (!Array.isArray(value)) return /* @__PURE__ */ new Set();
17
+ return new Set(
18
+ value.filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
19
+ );
20
+ }
21
+ __name(normalizeSkillNames, "normalizeSkillNames");
22
+ function skillSettingStrings(settings, scope, key) {
23
+ const value = settings.forScope(scope).settings.skills?.[key];
24
+ return Array.isArray(value) ? value.filter((name) => typeof name === "string") : [];
25
+ }
26
+ __name(skillSettingStrings, "skillSettingStrings");
27
+ function resolveSkillSettings(settings) {
28
+ const hardDisabled = normalizeSkillNames(settings.merged.skills?.disabled);
29
+ const defaultDisabled = normalizeSkillNames(
30
+ settings.merged.skills?.defaultDisabled
31
+ );
32
+ const enabled = normalizeSkillNames(settings.merged.skills?.enabled);
33
+ const disablements = /* @__PURE__ */ new Map();
34
+ for (const name of defaultDisabled) {
35
+ if (!enabled.has(name)) disablements.set(name, { reason: "default" });
36
+ }
37
+ const lockedScopes = [
38
+ ["SystemDefaults" /* SystemDefaults */, "systemDefaults"],
39
+ ["User" /* User */, "user"],
40
+ ["System" /* System */, "system"]
41
+ ];
42
+ const lockedByName = /* @__PURE__ */ new Map();
43
+ for (const [scope, label] of lockedScopes) {
44
+ for (const name of normalizeSkillNames(
45
+ skillSettingStrings(settings, scope, "disabled")
46
+ )) {
47
+ lockedByName.set(name, label);
48
+ }
49
+ }
50
+ for (const name of hardDisabled) {
51
+ const lockedScope = lockedByName.get(name);
52
+ disablements.set(name, {
53
+ reason: "hard",
54
+ ...lockedScope ? { lockedScope } : {}
55
+ });
56
+ }
57
+ return {
58
+ disabledNames: new Set(disablements.keys()),
59
+ defaultDisabledNames: defaultDisabled,
60
+ enabledNames: enabled,
61
+ disablements
62
+ };
63
+ }
64
+ __name(resolveSkillSettings, "resolveSkillSettings");
65
+ function lookupSkillSetting(entries, skill) {
66
+ for (const name of skillRestrictionNames(skill)) {
67
+ const found = entries.get(name);
68
+ if (found !== void 0) return found;
69
+ }
70
+ return void 0;
71
+ }
72
+ __name(lookupSkillSetting, "lookupSkillSetting");
73
+ function lookupSkillDisablement(disablements, skill) {
74
+ let fallback;
75
+ let hard;
76
+ for (const name of skillRestrictionNames(skill)) {
77
+ const found = disablements.get(name);
78
+ if (found?.reason === "hard") {
79
+ if (found.lockedScope) return found;
80
+ hard ??= found;
81
+ continue;
82
+ }
83
+ fallback ??= found;
84
+ }
85
+ return hard ?? fallback;
86
+ }
87
+ __name(lookupSkillDisablement, "lookupSkillDisablement");
88
+ function buildHigherDisabled(settings) {
89
+ const scopeOfEntry = /* @__PURE__ */ new Map();
90
+ for (const [scope, label] of [
91
+ ["SystemDefaults" /* SystemDefaults */, "SystemDefaults"],
92
+ ["User" /* User */, "User"],
93
+ ["System" /* System */, "System"]
94
+ ]) {
95
+ for (const name of normalizeSkillNames(
96
+ skillSettingStrings(settings, scope, "disabled")
97
+ )) {
98
+ scopeOfEntry.set(name, label);
99
+ }
100
+ }
101
+ const hardEntries = /* @__PURE__ */ new Map();
102
+ const defaultEntries = /* @__PURE__ */ new Map();
103
+ for (const [scope, label] of [
104
+ ["SystemDefaults" /* SystemDefaults */, "SystemDefaults"],
105
+ ["User" /* User */, "User"],
106
+ ["Workspace" /* Workspace */, "Workspace"],
107
+ ["System" /* System */, "System"]
108
+ ]) {
109
+ if (scope === "Workspace" /* Workspace */ && !settings.isTrusted) continue;
110
+ for (const name of normalizeSkillNames(
111
+ skillSettingStrings(settings, scope, "disabled")
112
+ )) {
113
+ hardEntries.set(name, label);
114
+ }
115
+ for (const name of normalizeSkillNames(
116
+ skillSettingStrings(settings, scope, "defaultDisabled")
117
+ )) {
118
+ defaultEntries.set(name, label);
119
+ }
120
+ }
121
+ const enabledEntries = new Set(
122
+ [
123
+ "SystemDefaults" /* SystemDefaults */,
124
+ "User" /* User */,
125
+ "System" /* System */,
126
+ ...settings.isTrusted ? ["Workspace" /* Workspace */] : []
127
+ ].flatMap((scope) => [
128
+ ...normalizeSkillNames(skillSettingStrings(settings, scope, "enabled"))
129
+ ])
130
+ );
131
+ const workspaceDisabled = new Set(
132
+ settings.isTrusted ? normalizeSkillNames(
133
+ skillSettingStrings(settings, "Workspace" /* Workspace */, "disabled")
134
+ ) : []
135
+ );
136
+ const blockIn = /* @__PURE__ */ __name((skill) => {
137
+ const registry = skill.name.trim().toLowerCase();
138
+ const spellings = skillRestrictionNames(skill);
139
+ for (const spelling of spellings) {
140
+ const scope = scopeOfEntry.get(spelling);
141
+ if (scope) {
142
+ return { reason: "hard", list: "disabled", entry: spelling, scope };
143
+ }
144
+ }
145
+ for (const spelling of spellings) {
146
+ const hard = hardEntries.get(spelling);
147
+ if (hard) {
148
+ if (spelling === registry && workspaceDisabled.has(spelling)) {
149
+ continue;
150
+ }
151
+ return {
152
+ reason: "hard",
153
+ list: "disabled",
154
+ entry: spelling,
155
+ scope: hard
156
+ };
157
+ }
158
+ const def = defaultEntries.get(spelling);
159
+ if (def) {
160
+ if (spelling === registry || enabledEntries.has(spelling)) continue;
161
+ return {
162
+ reason: "default",
163
+ list: "defaultDisabled",
164
+ entry: spelling,
165
+ scope: def
166
+ };
167
+ }
168
+ }
169
+ return null;
170
+ }, "blockIn");
171
+ return {
172
+ blockIn,
173
+ lockedIn: /* @__PURE__ */ __name((skill) => {
174
+ const block = blockIn(skill);
175
+ if (!block) return null;
176
+ if (block.reason === "hard" && block.scope !== "Workspace") {
177
+ return block.scope;
178
+ }
179
+ return `skills.${block.list} '${block.entry}' (${block.scope})`;
180
+ }, "lockedIn")
181
+ };
182
+ }
183
+ __name(buildHigherDisabled, "buildHigherDisabled");
184
+ function skillToggleBlockForName(settings, skillName) {
185
+ const prefixEnd = skillName.indexOf(":");
186
+ return buildHigherDisabled(settings).blockIn({
187
+ name: skillName,
188
+ ...prefixEnd > 0 ? { authoredName: skillName.slice(prefixEnd + 1) } : {}
189
+ });
190
+ }
191
+ __name(skillToggleBlockForName, "skillToggleBlockForName");
192
+ function updateTarget(names, skillName, include) {
193
+ const normalizedName = skillName.trim().toLowerCase();
194
+ const next = [];
195
+ let found = false;
196
+ for (const name of names) {
197
+ if (name.trim().toLowerCase() !== normalizedName) {
198
+ next.push(name);
199
+ } else if (include && !found) {
200
+ next.push(skillName);
201
+ found = true;
202
+ }
203
+ }
204
+ if (include && !found) next.push(skillName);
205
+ return next;
206
+ }
207
+ __name(updateTarget, "updateTarget");
208
+ function updateWorkspaceSkillSettingLists(lists, skillName, enabled) {
209
+ if (enabled) {
210
+ return {
211
+ disabled: updateTarget(lists.disabled, skillName, false),
212
+ enabled: updateTarget(lists.enabled, skillName, true)
213
+ };
214
+ }
215
+ return {
216
+ disabled: updateTarget(lists.disabled, skillName, true),
217
+ enabled: updateTarget(lists.enabled, skillName, false)
218
+ };
219
+ }
220
+ __name(updateWorkspaceSkillSettingLists, "updateWorkspaceSkillSettingLists");
221
+ function computeWorkspaceSkillListUpdates(workspaceDisabled, workspaceEnabled, toggles) {
222
+ const previousDisabled = [...workspaceDisabled];
223
+ const previousEnabled = [...workspaceEnabled];
224
+ let next = {
225
+ disabled: previousDisabled,
226
+ enabled: previousEnabled
227
+ };
228
+ for (const toggle of toggles) {
229
+ if (toggle.wasEnabled === toggle.isEnabled) continue;
230
+ next = updateWorkspaceSkillSettingLists(
231
+ next,
232
+ toggle.name,
233
+ toggle.isEnabled
234
+ );
235
+ }
236
+ return {
237
+ disabled: next.disabled,
238
+ enabled: next.enabled,
239
+ disabledChanged: JSON.stringify(previousDisabled) !== JSON.stringify(next.disabled),
240
+ enabledChanged: JSON.stringify(previousEnabled) !== JSON.stringify(next.enabled)
241
+ };
242
+ }
243
+ __name(computeWorkspaceSkillListUpdates, "computeWorkspaceSkillListUpdates");
244
+
245
+ export {
246
+ normalizeSkillNames,
247
+ skillSettingStrings,
248
+ resolveSkillSettings,
249
+ lookupSkillSetting,
250
+ lookupSkillDisablement,
251
+ buildHigherDisabled,
252
+ skillToggleBlockForName,
253
+ updateWorkspaceSkillSettingLists,
254
+ computeWorkspaceSkillListUpdates
255
+ };
256
+ /**
257
+ * @license
258
+ * Copyright 2026 Qwen
259
+ * SPDX-License-Identifier: Apache-2.0
260
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getGlobalQwenDir
5
- } from "./chunk-7QYWGTHB.js";
5
+ } from "./chunk-EPVEPTI3.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -143,6 +143,7 @@ export {
143
143
  MAX_CHILD_HEAP_MB,
144
144
  JOURNAL_GROWTH_POOL_FRACTION,
145
145
  MAX_JOURNAL_GROWTH_POOL_MB,
146
+ detectAvailableMemoryMb,
146
147
  isValidMemoryBudgetMb,
147
148
  memoryBudgetRangeError,
148
149
  recommendedChildShareMb,
@@ -6,8 +6,8 @@ import {
6
6
 
7
7
  // packages/cli/src/generated/git-commit.ts
8
8
  init_esbuild_shims();
9
- var GIT_COMMIT_INFO = "b695664b8d";
10
- var CLI_VERSION = "0.23.3";
9
+ var GIT_COMMIT_INFO = "fdcd7c2761";
10
+ var CLI_VERSION = "0.23.4";
11
11
 
12
12
  export {
13
13
  GIT_COMMIT_INFO,
@@ -449,6 +449,23 @@ var MAX_PERSISTED_MIME_CHARS = 120;
449
449
  var MAX_PERSISTED_FIELD_CHARS = 200;
450
450
  var MAX_PERSISTED_TIMESTAMP_CHARS = 64;
451
451
  var SECRET_TOKEN_VALUE_PATTERN = /(?:^|\s)(?:bearer\s+\S{8,}|sk-[A-Za-z0-9_-]{12,}|(?:gh[pousr]|github_pat)_[A-Za-z0-9_/-]{12,}|[a-f0-9]{40,}|[A-Za-z0-9+/]{48,}={0,2})(?:$|\s)/i;
452
+ function getWebPreviewSnapshotId(artifact) {
453
+ const id = /^preview-([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/.exec(
454
+ artifact.managedId ?? ""
455
+ )?.[1];
456
+ const sha256 = artifact.metadata?.[PUBLISHED_CONTENT_SHA256_METADATA_KEY];
457
+ if (!id || artifact.kind !== "html" || artifact.storage !== "published" || artifact.metadata?.["artifactType"] !== "web_preview_snapshot" || typeof sha256 !== "string" || !/^[0-9a-f]{64}$/.test(sha256) || artifact.source !== void 0 && (artifact.source !== "tool" || artifact.toolName?.toLowerCase() !== "artifact") || artifact.toolName !== void 0 && artifact.toolName.toLowerCase() !== "artifact")
458
+ return void 0;
459
+ try {
460
+ const url = new URL(artifact.url ?? "");
461
+ if (url.protocol === "file:" && !url.host && !url.search && !url.hash && url.pathname.endsWith(`/artifacts/snapshots/${id}/index.html`))
462
+ return id;
463
+ } catch {
464
+ return void 0;
465
+ }
466
+ return void 0;
467
+ }
468
+ __name(getWebPreviewSnapshotId, "getWebPreviewSnapshotId");
452
469
  function isSessionArtifactRecord(record) {
453
470
  return isTranscriptArtifactRecord(record);
454
471
  }
@@ -797,7 +814,7 @@ function isForkSafeArtifact(artifact) {
797
814
  if (artifact.metadata && hasRestoreUnsafeMetadata(artifact.metadata)) {
798
815
  return false;
799
816
  }
800
- if (artifact.url && hasRestoreUnsafeUrl(artifact.url)) {
817
+ if (artifact.url && hasRestoreUnsafeUrl(artifact.url) && !getWebPreviewSnapshotId(artifact)) {
801
818
  return false;
802
819
  }
803
820
  return true;
@@ -1233,6 +1250,296 @@ function getNonNegativeInteger(record, key) {
1233
1250
  }
1234
1251
  __name(getNonNegativeInteger, "getNonNegativeInteger");
1235
1252
 
1253
+ // packages/core/src/tools/artifact/html.ts
1254
+ init_esbuild_shims();
1255
+ var MAX_ARTIFACT_BYTES = 16 * 1024 * 1024;
1256
+ var CSS_RESET = `*,*::before,*::after{box-sizing:border-box}
1257
+ html{-webkit-text-size-adjust:100%}
1258
+ body{margin:0;padding:1.5rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;color:#1a1a1a;background:#fff}
1259
+ img,svg,video,canvas{max-width:100%;height:auto}
1260
+ pre,table{max-width:100%;overflow-x:auto}
1261
+ :where(a){color:#0969da}`;
1262
+ var DEFAULT_TITLE = "Artifact";
1263
+ function sanitizeArtifactTitle(raw) {
1264
+ const cleaned = (raw ?? "").replace(/\s+/g, " ").trim().slice(0, 120);
1265
+ return cleaned || DEFAULT_TITLE;
1266
+ }
1267
+ __name(sanitizeArtifactTitle, "sanitizeArtifactTitle");
1268
+ function escapeForTitle(s) {
1269
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1270
+ }
1271
+ __name(escapeForTitle, "escapeForTitle");
1272
+ function validateSelfContained(fragment) {
1273
+ if (!fragment.trim()) {
1274
+ return "Artifact file is empty \u2014 write the page content (a body-only HTML fragment) first.";
1275
+ }
1276
+ const scan = normalizeAttributeQuotes(fragment);
1277
+ const head = fragment.replace(/^\s+/, "").replace(/^(?:<!--[\s\S]*?-->\s*)+/, "");
1278
+ const wrapperTag = /^(?:<!doctype\b|<html[\s>]|<head[\s>]|<body[\s>])/i.exec(
1279
+ head
1280
+ );
1281
+ if (wrapperTag) {
1282
+ return `Write a body-only fragment \u2014 it starts with a full-document tag (${wrapperTag[0].trim()}). Omit <!doctype>, <html>, <head>, and <body>; they are added at publish time.`;
1283
+ }
1284
+ const extResource = /\b(?:src|srcset|poster)\s*=\s*["']?\s*(?:https?:)?\/\//i.exec(scan) ?? /<link\b[^>]*\bhref\s*=\s*["']?\s*(?:https?:)?\/\//i.exec(scan);
1285
+ if (extResource) {
1286
+ return `Artifact must be self-contained \u2014 found an external reference (${truncate(extResource[0])}). Inline scripts/styles and embed assets as data: URIs.`;
1287
+ }
1288
+ const jsUri = /\b(?:href|src)\s*=\s*["']?\s*javascript\s*:/i.exec(scan);
1289
+ if (jsUri) {
1290
+ return `Artifact must be self-contained \u2014 found a javascript: URI (${truncate(jsUri[0])}). Use inline <script> blocks instead.`;
1291
+ }
1292
+ const extScript = /\b(?:fetch|WebSocket|XMLHttpRequest)\s*\(\s*["']\s*(?:https?|wss?):\/\//i.exec(
1293
+ scan
1294
+ ) ?? /\bimport\s*\(\s*["'](?:https?:)?\/\//i.exec(scan) ?? /\bwindow\.open\s*\(/i.exec(scan) ?? /\blocation\.\w+\s*[=(]/i.exec(scan) ?? /\bnavigator\.sendBeacon\s*\(\s*["']\s*(?:https?:)?\/\//i.exec(scan);
1295
+ if (extScript) {
1296
+ return `Artifact must be self-contained \u2014 found browser network egress (${truncate(extScript[0])}). Embed data in the artifact instead of fetching it at runtime.`;
1297
+ }
1298
+ const metaRefresh = /<meta\b[^>]*http-equiv\s*=\s*["']?refresh["']?[^>]*\burl\s*=\s*(?:https?:)?\/\//i.exec(
1299
+ scan
1300
+ );
1301
+ if (metaRefresh) {
1302
+ return `Artifact must be self-contained \u2014 found a meta refresh redirect (${truncate(metaRefresh[0])}).`;
1303
+ }
1304
+ const extCss = /(?:@import\s+(?:url\()?|url\()\s*["']?\s*(?:https?:)?\/\//i.exec(scan);
1305
+ if (extCss) {
1306
+ return `Artifact must be self-contained \u2014 found an external CSS reference (${truncate(extCss[0])}). Inline CSS and embed fonts/images as data: URIs.`;
1307
+ }
1308
+ return null;
1309
+ }
1310
+ __name(validateSelfContained, "validateSelfContained");
1311
+ function normalizeAttributeQuotes(s) {
1312
+ return s.replace(/&quot;|&#34;|&#x22;/gi, '"').replace(/&apos;|&#39;|&#x27;/gi, "'");
1313
+ }
1314
+ __name(normalizeAttributeQuotes, "normalizeAttributeQuotes");
1315
+ function truncate(s, max = 60) {
1316
+ const t = s.replace(/\s+/g, " ").trim();
1317
+ return t.length > max ? `${t.slice(0, max)}\u2026` : t;
1318
+ }
1319
+ __name(truncate, "truncate");
1320
+ function wrapArtifactHtml(bodyFragment, title) {
1321
+ const safeTitle = escapeForTitle(sanitizeArtifactTitle(title));
1322
+ return `<!doctype html>
1323
+ <html lang="en">
1324
+ <head>
1325
+ <meta charset="utf-8">
1326
+ <meta name="viewport" content="width=device-width, initial-scale=1">
1327
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; media-src data:; connect-src 'none'; form-action 'none'; base-uri 'none'; frame-ancestors 'none'; sandbox allow-scripts;">
1328
+ <title>${safeTitle}</title>
1329
+ <style>${CSS_RESET}</style>
1330
+ </head>
1331
+ <body>
1332
+ ${bodyFragment}
1333
+ </body>
1334
+ </html>
1335
+ `;
1336
+ }
1337
+ __name(wrapArtifactHtml, "wrapArtifactHtml");
1338
+ function byteLength(s) {
1339
+ return Buffer.byteLength(s, "utf8");
1340
+ }
1341
+ __name(byteLength, "byteLength");
1342
+
1343
+ // packages/core/src/tools/artifact/artifact-snapshots.ts
1344
+ init_esbuild_shims();
1345
+ import { createHash as createHash2, randomUUID } from "node:crypto";
1346
+ import { constants, promises as fs } from "node:fs";
1347
+ import path from "node:path";
1348
+ import { pathToFileURL } from "node:url";
1349
+ var SNAPSHOT_REFERENCES_METADATA_KEY = "qwen.snapshot.references";
1350
+ async function saveArtifactSnapshot(html, title, publishedUrl, sessionId, runtimeBaseDir) {
1351
+ const id = randomUUID();
1352
+ const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
1353
+ await fs.mkdir(root, { recursive: true });
1354
+ const dir = path.join(root, id);
1355
+ await fs.mkdir(dir);
1356
+ const file = path.join(dir, "index.html");
1357
+ try {
1358
+ const references = path.join(dir, "references");
1359
+ await fs.mkdir(references);
1360
+ await fs.writeFile(
1361
+ path.join(references, snapshotReference(sessionId)),
1362
+ "",
1363
+ {
1364
+ flag: "wx",
1365
+ mode: 384,
1366
+ flush: true
1367
+ }
1368
+ );
1369
+ await fs.writeFile(file, html, {
1370
+ encoding: "utf8",
1371
+ flag: "wx",
1372
+ mode: 384,
1373
+ flush: true
1374
+ });
1375
+ await syncSnapshotDirectory(references);
1376
+ await syncSnapshotDirectory(dir);
1377
+ await syncSnapshotDirectory(root);
1378
+ } catch (error) {
1379
+ await fs.rm(dir, { recursive: true, force: true }).catch(() => void 0);
1380
+ throw error;
1381
+ }
1382
+ return {
1383
+ kind: "html",
1384
+ storage: "published",
1385
+ title,
1386
+ url: pathToFileURL(file).href,
1387
+ managedId: `preview-${id}`,
1388
+ mimeType: "text/html",
1389
+ sizeBytes: Buffer.byteLength(html, "utf8"),
1390
+ metadata: {
1391
+ artifactType: "web_preview_snapshot",
1392
+ [SNAPSHOT_REFERENCES_METADATA_KEY]: 1,
1393
+ publishedUrl,
1394
+ [PUBLISHED_CONTENT_SHA256_METADATA_KEY]: createHash2("sha256").update(html).digest("hex")
1395
+ }
1396
+ };
1397
+ }
1398
+ __name(saveArtifactSnapshot, "saveArtifactSnapshot");
1399
+ async function readArtifactSnapshot(artifact, runtimeBaseDir) {
1400
+ const id = getWebPreviewSnapshotId(artifact);
1401
+ const sha256 = artifact.metadata?.[PUBLISHED_CONTENT_SHA256_METADATA_KEY];
1402
+ const unavailable = /* @__PURE__ */ __name(() => new Error("Saved webpage version is unavailable."), "unavailable");
1403
+ if (!id) throw unavailable();
1404
+ const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
1405
+ const file = path.join(root, id, "index.html");
1406
+ if (artifact.url !== pathToFileURL(file).href) throw unavailable();
1407
+ const realRoot = await fs.realpath(root);
1408
+ if (await fs.realpath(file) !== path.join(realRoot, id, "index.html")) {
1409
+ throw unavailable();
1410
+ }
1411
+ const handle = await fs.open(
1412
+ file,
1413
+ // O_NOFOLLOW refuses a symlink swapped in after the realpath check, and
1414
+ // O_NONBLOCK keeps a FIFO swapped into the same window from blocking the
1415
+ // open: the path is only proven to be a regular file by the fstat below.
1416
+ constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK
1417
+ );
1418
+ try {
1419
+ const stat = await handle.stat();
1420
+ if (!stat.isFile() || stat.size > MAX_ARTIFACT_BYTES) throw unavailable();
1421
+ const bytes = Buffer.alloc(stat.size + 1);
1422
+ let length = 0;
1423
+ while (length < bytes.length) {
1424
+ const { bytesRead } = await handle.read(
1425
+ bytes,
1426
+ length,
1427
+ bytes.length - length
1428
+ );
1429
+ if (bytesRead === 0) break;
1430
+ length += bytesRead;
1431
+ }
1432
+ const content = bytes.subarray(0, length);
1433
+ if (length !== stat.size || createHash2("sha256").update(content).digest("hex") !== sha256) {
1434
+ throw unavailable();
1435
+ }
1436
+ return content.toString("utf8");
1437
+ } finally {
1438
+ await handle.close();
1439
+ }
1440
+ }
1441
+ __name(readArtifactSnapshot, "readArtifactSnapshot");
1442
+ function snapshotReference(sessionId, operationId) {
1443
+ const owner = createHash2("sha256").update(sessionId).digest("hex");
1444
+ return operationId ? `${owner}-${createHash2("sha256").update(operationId).digest("hex")}` : owner;
1445
+ }
1446
+ __name(snapshotReference, "snapshotReference");
1447
+ async function syncSnapshotDirectory(directory) {
1448
+ try {
1449
+ const handle = await fs.open(directory, "r");
1450
+ try {
1451
+ await handle.sync();
1452
+ } finally {
1453
+ await handle.close();
1454
+ }
1455
+ } catch (error) {
1456
+ if (process.platform !== "win32") throw error;
1457
+ }
1458
+ }
1459
+ __name(syncSnapshotDirectory, "syncSnapshotDirectory");
1460
+ async function snapshotDirectory(artifact, runtimeBaseDir) {
1461
+ const id = getWebPreviewSnapshotId(artifact);
1462
+ if (!id) return void 0;
1463
+ const root = path.join(runtimeBaseDir, "artifacts", "snapshots");
1464
+ const dir = path.join(root, id);
1465
+ if (artifact.url !== pathToFileURL(path.join(dir, "index.html")).href) {
1466
+ return void 0;
1467
+ }
1468
+ if (artifact.metadata?.[SNAPSHOT_REFERENCES_METADATA_KEY] !== 1)
1469
+ return void 0;
1470
+ const realRoot = await fs.realpath(root);
1471
+ if (await fs.realpath(dir) !== path.join(realRoot, id)) return void 0;
1472
+ if (await fs.realpath(path.join(dir, "index.html")) !== path.join(realRoot, id, "index.html"))
1473
+ return void 0;
1474
+ if (await fs.realpath(path.join(dir, "references")) !== path.join(realRoot, id, "references")) {
1475
+ return void 0;
1476
+ }
1477
+ return dir;
1478
+ }
1479
+ __name(snapshotDirectory, "snapshotDirectory");
1480
+ async function retainArtifactSnapshot(artifact, runtimeBaseDir, sessionId, operationId) {
1481
+ try {
1482
+ const dir = await snapshotDirectory(artifact, runtimeBaseDir);
1483
+ if (!dir) return;
1484
+ const references = path.join(dir, "references");
1485
+ const owner = snapshotReference(sessionId);
1486
+ const entries = await fs.readdir(references);
1487
+ if (!operationId && entries.some((entry) => entry === owner || entry.startsWith(`${owner}-`)))
1488
+ return;
1489
+ await fs.writeFile(
1490
+ path.join(references, snapshotReference(sessionId, operationId)),
1491
+ "",
1492
+ { flag: "wx", mode: 384, flush: true }
1493
+ );
1494
+ await syncSnapshotDirectory(references);
1495
+ } catch (error) {
1496
+ const code = error.code;
1497
+ if (code !== "EEXIST" && !(code === "ENOENT" && !operationId)) throw error;
1498
+ }
1499
+ }
1500
+ __name(retainArtifactSnapshot, "retainArtifactSnapshot");
1501
+ async function deleteArtifactSnapshot(artifact, runtimeBaseDir, sessionId, operationId, assertCleanupOwned) {
1502
+ try {
1503
+ const dir = await snapshotDirectory(artifact, runtimeBaseDir);
1504
+ if (!dir) return;
1505
+ await releaseSnapshotDirectory(
1506
+ dir,
1507
+ sessionId,
1508
+ operationId,
1509
+ assertCleanupOwned
1510
+ );
1511
+ } catch {
1512
+ assertCleanupOwned?.();
1513
+ }
1514
+ }
1515
+ __name(deleteArtifactSnapshot, "deleteArtifactSnapshot");
1516
+ async function releaseSnapshotDirectory(dir, sessionId, operationId, assertCleanupOwned) {
1517
+ const references = path.join(dir, "references");
1518
+ const owner = snapshotReference(sessionId, operationId);
1519
+ let released = false;
1520
+ for (const reference of await fs.readdir(references)) {
1521
+ if (reference === owner || !operationId && reference.startsWith(`${owner}-`)) {
1522
+ assertCleanupOwned?.();
1523
+ await fs.unlink(path.join(references, reference));
1524
+ released = true;
1525
+ }
1526
+ }
1527
+ if (!released) return;
1528
+ try {
1529
+ assertCleanupOwned?.();
1530
+ await fs.rmdir(references);
1531
+ } catch (error) {
1532
+ if (error.code === "ENOTEMPTY") return;
1533
+ throw error;
1534
+ }
1535
+ const file = path.join(dir, "index.html");
1536
+ assertCleanupOwned?.();
1537
+ await fs.unlink(file);
1538
+ assertCleanupOwned?.();
1539
+ await fs.rmdir(dir);
1540
+ }
1541
+ __name(releaseSnapshotDirectory, "releaseSnapshotDirectory");
1542
+
1236
1543
  export {
1237
1544
  TranscriptRecordPreparationError,
1238
1545
  stripGeneratedAttachmentTokens,
@@ -1250,6 +1557,7 @@ export {
1250
1557
  WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY,
1251
1558
  WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY,
1252
1559
  PUBLISHED_CONTENT_SHA256_METADATA_KEY,
1560
+ getWebPreviewSnapshotId,
1253
1561
  isSessionArtifactRecord,
1254
1562
  selectActiveSideArtifactRecordUuids,
1255
1563
  stableSessionArtifactId,
@@ -1261,7 +1569,16 @@ export {
1261
1569
  isPrototypeMetadataKey,
1262
1570
  isReservedWorkspaceMetadataKey,
1263
1571
  isAdoptableContentFingerprintKey,
1264
- metadataBudgetBytes
1572
+ metadataBudgetBytes,
1573
+ MAX_ARTIFACT_BYTES,
1574
+ sanitizeArtifactTitle,
1575
+ validateSelfContained,
1576
+ wrapArtifactHtml,
1577
+ byteLength,
1578
+ saveArtifactSnapshot,
1579
+ readArtifactSnapshot,
1580
+ retainArtifactSnapshot,
1581
+ deleteArtifactSnapshot
1265
1582
  };
1266
1583
  /**
1267
1584
  * @license
@@ -1273,3 +1590,8 @@ export {
1273
1590
  * Copyright 2026 Qwen Team
1274
1591
  * SPDX-License-Identifier: Apache-2.0
1275
1592
  */
1593
+ /**
1594
+ * @license
1595
+ * Copyright 2025 Google LLC
1596
+ * SPDX-License-Identifier: Apache-2.0
1597
+ */