@qwen-code/qwen-code 0.22.0 → 0.22.2-nightly.20260828.7357136dd1

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 (483) hide show
  1. package/bundled/computer-use/SKILL.md +229 -0
  2. package/bundled/computer-use/agents/openai.yaml +4 -0
  3. package/bundled/coordinate/SKILL.md +5 -5
  4. package/bundled/goal-draft/SKILL.md +109 -0
  5. package/bundled/qc-helper/docs/configuration/auth.md +7 -7
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
  7. package/bundled/qc-helper/docs/configuration/settings.md +48 -48
  8. package/bundled/qc-helper/docs/extension/introduction.md +3 -1
  9. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  10. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  11. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
  12. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  13. package/bundled/qc-helper/docs/features/channels/overview.md +37 -6
  14. package/bundled/qc-helper/docs/features/code-review.md +27 -23
  15. package/bundled/qc-helper/docs/features/commands.md +4 -3
  16. package/bundled/qc-helper/docs/features/computer-use.md +57 -51
  17. package/bundled/qc-helper/docs/features/goals.md +58 -0
  18. package/bundled/qc-helper/docs/features/headless.md +13 -11
  19. package/bundled/qc-helper/docs/features/mcp.md +35 -12
  20. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  21. package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
  22. package/bundled/qc-helper/docs/features/worktree.md +1 -1
  23. package/bundled/qc-helper/docs/overview.md +1 -1
  24. package/bundled/qc-helper/docs/quickstart.md +1 -1
  25. package/bundled/qc-helper/docs/qwen-serve.md +29 -6
  26. package/bundled/review/SKILL.md +185 -435
  27. package/bundled/review/references/aone.md +18 -0
  28. package/bundled/review/references/persistence.md +109 -0
  29. package/bundled/review/references/posting.md +272 -0
  30. package/chunks/MaxSizedBox-LMWXCLDV.js +110 -0
  31. package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-W3F7U3JL.js} +87 -88
  32. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  33. package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-EYZ6EEHD.js} +3223 -2145
  34. package/chunks/agent-RBLGBY65.js +95 -0
  35. package/chunks/agent-headless-L5T4Y4OZ.js +85 -0
  36. package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-GMHML35Q.js} +128 -59
  37. package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XSMPHZBT.js} +11 -3
  38. package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-4SWJY65V.js} +2 -2
  39. package/chunks/bridge-5LR2F2ND.js +119 -0
  40. package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
  41. package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-KHR3N6CH.js} +6 -6
  42. package/chunks/channel-settings-store-4FOAZW72.js +120 -0
  43. package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-6NA6BBZV.js} +9 -7
  44. package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-NEZ2J6RK.js} +11 -8
  45. package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-FKU7DIHJ.js} +12 -6
  46. package/chunks/{chunk-HDKCKCYO.js → chunk-23RFD54N.js} +1 -1
  47. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  48. package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
  49. package/chunks/{chunk-GIWB5QLV.js → chunk-2SXSLSQE.js} +4 -4
  50. package/chunks/chunk-2TNL5KPM.js +49 -0
  51. package/chunks/chunk-335CJSNF.js +2320 -0
  52. package/chunks/chunk-36LGBEM6.js +130 -0
  53. package/chunks/{chunk-O5BDEWBC.js → chunk-3JXM2CVW.js} +3 -3
  54. package/chunks/{chunk-2E3V7G6Y.js → chunk-3K6TUZHS.js} +55 -50
  55. package/chunks/{chunk-WWUSHZ7M.js → chunk-3OOXT6CR.js} +5 -5
  56. package/chunks/{chunk-2UZJWSVD.js → chunk-3WK3QDNV.js} +2 -2
  57. package/chunks/{chunk-4J7OPYNS.js → chunk-3XOKEVII.js} +6 -6
  58. package/chunks/chunk-3Y34Q3JV.js +1584 -0
  59. package/chunks/{chunk-YMVFIYHV.js → chunk-42IDLQWS.js} +26 -20
  60. package/chunks/{chunk-7HFULI45.js → chunk-454XFGH4.js} +3 -3
  61. package/chunks/chunk-4CMJKUND.js +95 -0
  62. package/chunks/{chunk-XLDFW44M.js → chunk-4K7KNVWH.js} +3 -3
  63. package/chunks/{chunk-YDJRMQU4.js → chunk-4QHPPXK2.js} +16 -8
  64. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  65. package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
  66. package/chunks/{chunk-7NBVNAJJ.js → chunk-62GQFYID.js} +3 -3
  67. package/chunks/{chunk-JGUBDRBC.js → chunk-6DIGWMGT.js} +3 -3
  68. package/chunks/{chunk-X7V3N6YH.js → chunk-6JCGO55P.js} +885 -3380
  69. package/chunks/{chunk-HIK2OF33.js → chunk-6PJOTWAN.js} +1 -1
  70. package/chunks/{chunk-VUMLT7E5.js → chunk-6W2IK5KC.js} +956 -17
  71. package/chunks/{chunk-S4C4JJKE.js → chunk-6ZZBRRKQ.js} +5 -5
  72. package/chunks/{chunk-W4CRPSC5.js → chunk-7EQQR46F.js} +1 -1
  73. package/chunks/{chunk-PHJJ3RVO.js → chunk-7GWQW5ID.js} +7 -15
  74. package/chunks/chunk-7J6OTNGO.js +424 -0
  75. package/chunks/{chunk-URN2JIAQ.js → chunk-7TUBJBBJ.js} +5 -1
  76. package/chunks/{chunk-A5F63FEW.js → chunk-7VD6IPQM.js} +1 -1
  77. package/chunks/{chunk-36OF5PRW.js → chunk-ABS25QER.js} +7 -3
  78. package/chunks/{chunk-UU4WC7DK.js → chunk-AJGR6E6Z.js} +117 -30
  79. package/chunks/{chunk-MQP3MHWN.js → chunk-AU3MMVJF.js} +43 -20
  80. package/chunks/{chunk-ZS5BHEPD.js → chunk-AXC26UCQ.js} +1 -1
  81. package/chunks/{chunk-PDL6LKB5.js → chunk-AY3BNYEQ.js} +1 -1
  82. package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
  83. package/chunks/{chunk-WRT324N6.js → chunk-B466ZSHZ.js} +3 -3
  84. package/chunks/{chunk-5XHAOUWD.js → chunk-B5OUL5EL.js} +3 -3
  85. package/chunks/{chunk-GAHYKJPV.js → chunk-B5PHIJGI.js} +186 -60
  86. package/chunks/{chunk-IBJ5S45N.js → chunk-B7CDU2SL.js} +2 -2
  87. package/chunks/{chunk-UZPYR3EV.js → chunk-BFPESSTR.js} +1 -1
  88. package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
  89. package/chunks/{chunk-IWOWEENB.js → chunk-BKWNKLZB.js} +404 -44
  90. package/chunks/{chunk-3CLIDIVQ.js → chunk-BOWFGCEU.js} +3 -3
  91. package/chunks/{chunk-BB5IMQCV.js → chunk-BPAKYXQ3.js} +2 -2
  92. package/chunks/{chunk-ZRYQMWEP.js → chunk-BWORX6FA.js} +2 -2
  93. package/chunks/{chunk-AP3B7LKD.js → chunk-BXDAPVQU.js} +2 -2
  94. package/chunks/{chunk-NUGZAFR2.js → chunk-C2X7KY45.js} +147 -6
  95. package/chunks/{chunk-MZKWFWVG.js → chunk-C3KURPP7.js} +6 -6
  96. package/chunks/{chunk-WZDM44SB.js → chunk-CAJTKR6W.js} +7 -7
  97. package/chunks/{chunk-DB2OKNTU.js → chunk-CFJY4DGX.js} +2 -2
  98. package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
  99. package/chunks/{chunk-I432KXWD.js → chunk-CMHFCLBU.js} +1 -1
  100. package/chunks/{create-sub-session-XBCVGNFU.js → chunk-CQH5KTKC.js} +4 -6
  101. package/chunks/{chunk-5HJUPACR.js → chunk-CRKKHXTI.js} +185 -174
  102. package/chunks/{chunk-L4HVF7LM.js → chunk-CYAUBK46.js} +3 -3
  103. package/chunks/{chunk-AZF6SME3.js → chunk-D5LUXLUH.js} +3 -3
  104. package/chunks/{chunk-RPJQ3O4M.js → chunk-DFDWJE6Z.js} +60 -53
  105. package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
  106. package/chunks/chunk-DJBQCO2E.js +842 -0
  107. package/chunks/{chunk-OVH5Y7KS.js → chunk-DP4MWIM3.js} +19 -3
  108. package/chunks/{chunk-LI4YHTQK.js → chunk-DYXFD5RO.js} +182 -3
  109. package/chunks/{chunk-NW35NVFN.js → chunk-E3XVSVKK.js} +26 -4
  110. package/chunks/{chunk-VSNPOSDN.js → chunk-EB6QRGHM.js} +108 -13
  111. package/chunks/{chunk-FVBVJEBG.js → chunk-EKNBU2X7.js} +10 -8
  112. package/chunks/{chunk-DJEHYM4H.js → chunk-EKSCLBBF.js} +3 -3
  113. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  114. package/chunks/chunk-EW5VVLJT.js +3525 -0
  115. package/chunks/{chunk-T6XLJRQY.js → chunk-EWIQ3NAE.js} +38774 -6955
  116. package/chunks/{chunk-4XPSVIED.js → chunk-FALBWZF4.js} +6 -6
  117. package/chunks/chunk-FBX2SDQ4.js +48 -0
  118. package/chunks/{chunk-VMJL7RH6.js → chunk-FEHMA4RO.js} +539 -651
  119. package/chunks/{chunk-PXOJLJ5W.js → chunk-FMFBLTLY.js} +606 -223
  120. package/chunks/{chunk-ZLCT4C5A.js → chunk-FTF2YIZ5.js} +1 -1
  121. package/chunks/{chunk-IOSEW6KP.js → chunk-G6FECKTJ.js} +9 -6
  122. package/chunks/{chunk-RDG44S5I.js → chunk-GGNE3JAW.js} +2 -2
  123. package/chunks/chunk-GYTKQYDB.js +23 -0
  124. package/chunks/{chunk-B6UBOIFE.js → chunk-H33EQVMG.js} +14 -11
  125. package/chunks/chunk-H72BQNM3.js +645 -0
  126. package/chunks/{chunk-YZBDKFRQ.js → chunk-HGIMWQVT.js} +995 -892
  127. package/chunks/chunk-HOCJDUFY.js +20 -0
  128. package/chunks/{chunk-6UQSU7CQ.js → chunk-HPXV655A.js} +60 -107
  129. package/chunks/{chunk-45NQKMYB.js → chunk-HVC3PNVC.js} +1 -1
  130. package/chunks/{chunk-QJHPWLZC.js → chunk-HYDJDQGJ.js} +1 -1
  131. package/chunks/{chunk-7DMTAQJ6.js → chunk-IB7FQJRY.js} +163 -57
  132. package/chunks/{chunk-AW27A43Y.js → chunk-ICURCKIU.js} +1428 -120
  133. package/chunks/{chunk-4F5WV4RF.js → chunk-ISKH4QX3.js} +288 -15
  134. package/chunks/{chunk-SE55HQGF.js → chunk-J6S24ZJE.js} +92 -70
  135. package/chunks/{chunk-7DYNJFES.js → chunk-JB4JIVTJ.js} +6 -1
  136. package/chunks/{chunk-OARZJFZX.js → chunk-JN4IWWMN.js} +4 -4
  137. package/chunks/{chunk-6PCOVQO2.js → chunk-JUUBLSZU.js} +8 -8
  138. package/chunks/{chunk-FEMQ6Y7W.js → chunk-JWALNCLT.js} +47 -126
  139. package/chunks/{chunk-TBVSALA3.js → chunk-K5KXUXWC.js} +3 -3
  140. package/chunks/{chunk-XYQHT3AW.js → chunk-KTJFDCX4.js} +2 -2
  141. package/chunks/{chunk-6FRJEE2S.js → chunk-LEFCFTEX.js} +6 -6
  142. package/chunks/{chunk-BUGYW6FB.js → chunk-LEGTMYAE.js} +1 -1
  143. package/chunks/{chunk-MPHLIJYL.js → chunk-LLZA2IK3.js} +20 -8
  144. package/chunks/{chunk-BEGIBJAZ.js → chunk-LNETQKBE.js} +4 -4
  145. package/chunks/{chunk-KVGR4MCF.js → chunk-LUEHOUHM.js} +3 -3
  146. package/chunks/{chunk-2A4C2MEG.js → chunk-LVPZO674.js} +35 -12
  147. package/chunks/{chunk-25NESM4G.js → chunk-M4ORUPYI.js} +29 -5
  148. package/chunks/{chunk-VFACN2CE.js → chunk-M6FOJXW3.js} +1 -1
  149. package/chunks/{chunk-FYZMB6DB.js → chunk-MAYHGRP4.js} +12 -12
  150. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  151. package/chunks/{chunk-ZRFUT5VV.js → chunk-MTJN7FOT.js} +7 -7
  152. package/chunks/{chunk-BGXZBI5B.js → chunk-N4X7G4J2.js} +2 -1
  153. package/chunks/{chunk-2TRNCJK4.js → chunk-NIFYWDYN.js} +1 -1
  154. package/chunks/{chunk-SQS55KR4.js → chunk-NU7RKEZR.js} +2 -2
  155. package/chunks/{chunk-U2UYQMM6.js → chunk-NXMBRVMQ.js} +3 -3
  156. package/chunks/chunk-OI4NY7RA.js +346 -0
  157. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  158. package/chunks/{chunk-K52PZNU4.js → chunk-PDQGMSZK.js} +2 -2
  159. package/chunks/{chunk-PZRUV52H.js → chunk-PPKZ7JOE.js} +20 -2
  160. package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
  161. package/chunks/{chunk-AO4M6NMD.js → chunk-PWIGAMA4.js} +146 -27
  162. package/chunks/{chunk-S3G6YFQC.js → chunk-QFCDF5PL.js} +1 -1
  163. package/chunks/chunk-QHMLYMMS.js +32 -0
  164. package/chunks/{chunk-5XUTPXQU.js → chunk-QPTRRPZU.js} +47 -13
  165. package/chunks/{chunk-UUQFJILB.js → chunk-RFI4YGMR.js} +34 -267
  166. package/chunks/{chunk-A6NRNRKE.js → chunk-RFIDDFAL.js} +1 -1
  167. package/chunks/chunk-RKFGE7JH.js +93 -0
  168. package/chunks/chunk-RNVFRIOO.js +275 -0
  169. package/chunks/{chunk-WU5E4HMO.js → chunk-RU7BK6B3.js} +1 -1
  170. package/chunks/{chunk-J5ZDDUKM.js → chunk-RVXDXY6I.js} +4 -4
  171. package/chunks/{chunk-OE52YHCZ.js → chunk-RWZB422L.js} +11 -11
  172. package/chunks/chunk-RXFQM6FQ.js +42 -0
  173. package/chunks/{chunk-MHG6NDS6.js → chunk-RYNZQGXN.js} +19 -2
  174. package/chunks/{chunk-4CWDWDL6.js → chunk-SJ5ERAW3.js} +1 -1
  175. package/chunks/{chunk-Q54XG7IX.js → chunk-SMPR7SPO.js} +1 -1
  176. package/chunks/{chunk-UIRLQ3N7.js → chunk-SRZZY4IY.js} +3 -3
  177. package/chunks/{chunk-ND7NOI4P.js → chunk-STUJ7IMZ.js} +0 -92
  178. package/chunks/{chunk-VYC7XFYV.js → chunk-SUX7HDNA.js} +5 -5
  179. package/chunks/{chunk-ZZUVC6RI.js → chunk-SVNO44PF.js} +3 -3
  180. package/chunks/{chunk-FDD2IUEL.js → chunk-SZLBBZH4.js} +370 -35
  181. package/chunks/{chunk-GHY5OIYP.js → chunk-T2NKRHZZ.js} +13 -13
  182. package/chunks/chunk-T4EFG2P5.js +113 -0
  183. package/chunks/{chunk-BMCSKS37.js → chunk-TLHUNMO7.js} +6 -6
  184. package/chunks/{chunk-JOLJTKIG.js → chunk-TPI7O7HR.js} +1 -1
  185. package/chunks/{chunk-6QSA4JHL.js → chunk-TQHGJYR3.js} +4492 -1121
  186. package/chunks/{chunk-ISJMN3ML.js → chunk-TTX2JUE6.js} +1 -1
  187. package/chunks/{chunk-EFB657PR.js → chunk-TW3E6YNO.js} +3 -3
  188. package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
  189. package/chunks/chunk-U54AYGEC.js +337 -0
  190. package/chunks/{chunk-A5F2YNO6.js → chunk-UHQFIS7N.js} +260 -10
  191. package/chunks/{chunk-6NFAEG54.js → chunk-UTLCH2FK.js} +24 -13
  192. package/chunks/{chunk-7JBHIQS2.js → chunk-UY3PBNY3.js} +19 -37
  193. package/chunks/{chunk-DWCKACFL.js → chunk-V2NDP3I4.js} +2 -2
  194. package/chunks/{chunk-2GXYDNXP.js → chunk-V2QDDC5J.js} +19 -9
  195. package/chunks/{chunk-VLRBJ24J.js → chunk-V5J4J5TP.js} +2 -2
  196. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  197. package/chunks/{chunk-RDQ7QB4Y.js → chunk-VTHREBQM.js} +2 -2
  198. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  199. package/chunks/{chunk-62JOGZL5.js → chunk-W6DUQ5GA.js} +11497 -10502
  200. package/chunks/{chunk-P47E4SJC.js → chunk-WALC5VJH.js} +4 -4
  201. package/chunks/{chunk-3ZFJUBTP.js → chunk-WAOIHTJS.js} +1 -1
  202. package/chunks/{chunk-KIVGVFMM.js → chunk-WBHKK3CU.js} +16 -4
  203. package/chunks/{chunk-XZJKSETB.js → chunk-WXEA74YB.js} +3 -3
  204. package/chunks/{chunk-VEND4KA4.js → chunk-X3ZRTCJD.js} +1 -1
  205. package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
  206. package/chunks/{chunk-XL5K4SVK.js → chunk-XF63PKEN.js} +1 -1
  207. package/chunks/{chunk-LDGWX737.js → chunk-XLLQJRAH.js} +323 -510
  208. package/chunks/{chunk-2Z6LSQMF.js → chunk-XQFT3QUF.js} +1 -1
  209. package/chunks/{chunk-P3QQPMQA.js → chunk-XZA32HII.js} +4 -4
  210. package/chunks/{chunk-C72BXMJ5.js → chunk-Y3QL45LS.js} +1 -1
  211. package/chunks/{chunk-QS4ENGVF.js → chunk-Y4TPOUEV.js} +17 -8
  212. package/chunks/{chunk-AVCCKIZ6.js → chunk-YRZX2PHA.js} +1 -1
  213. package/chunks/{chunk-Z3JMO2CH.js → chunk-YTDVNSUQ.js} +1 -1
  214. package/chunks/{chunk-WS7PAXXR.js → chunk-YWQ237GX.js} +15 -199
  215. package/chunks/chunk-ZELCTN6Y.js +29 -0
  216. package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
  217. package/chunks/{chunk-IIWGSX4L.js → chunk-ZTP35P4B.js} +1 -1
  218. package/chunks/{chunk-K623ENWT.js → chunk-ZU4UDIWX.js} +23 -1
  219. package/chunks/chunk-ZYNTSXWK.js +32 -0
  220. package/chunks/config-utils-JVGAP34H.js +113 -0
  221. package/chunks/contextCommand-XDB7OSO7.js +106 -0
  222. package/chunks/{core-runtime-CES6JSVV.js → core-runtime-XHYA2RH7.js} +66 -63
  223. package/chunks/create-sub-session-23ITIELI.js +17 -0
  224. package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-MHYCFNCM.js} +168 -87
  225. package/chunks/{cron-create-IKA56DAF.js → cron-create-KJ4IY6PP.js} +57 -10
  226. package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-MBLQCAYY.js} +4 -4
  227. package/chunks/{cron-list-QBFGAMP7.js → cron-list-DWH2PQ47.js} +4 -4
  228. package/chunks/{daemon-RZZUPGOJ.js → daemon-K5XS42ID.js} +567 -27
  229. package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-V3P5XLHB.js} +339 -95
  230. package/chunks/daemon-status-provider-KKU7ZTLM.js +117 -0
  231. package/chunks/daemon-trust-policy-TZGK34DW.js +112 -0
  232. package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-F23DD2M4.js} +69 -69
  233. package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
  234. package/chunks/deferred-core-runtime-LKLGBCGZ.js +114 -0
  235. package/chunks/{display-image-OEJMJV3S.js → display-image-BE7I6ZB6.js} +5 -5
  236. package/chunks/{dist-5EV2G6MC.js → dist-4WXLCBDR.js} +1 -1
  237. package/chunks/{dist-ES6HNUW2.js → dist-5VXFRTWU.js} +525 -64
  238. package/chunks/{dist-ESS34DHC.js → dist-6BPYWHVD.js} +89 -65
  239. package/chunks/{dist-2OG3PGKO.js → dist-GFN5DCBX.js} +76 -67
  240. package/chunks/{dist-K7IQB53U.js → dist-HZNT6GQS.js} +1 -1
  241. package/chunks/{dist-J6P3C52Z.js → dist-LVZCXVPF.js} +99 -26
  242. package/chunks/{dist-LZO24N3E.js → dist-N6W6E753.js} +71 -64
  243. package/chunks/dist-QDLFKWOL.js +2512 -0
  244. package/chunks/{dist-VVQBOKDH.js → dist-SWQMYP2Q.js} +18 -16
  245. package/chunks/earlyInputCapture-NERYFYTR.js +107 -0
  246. package/chunks/{edit-A2633SLR.js → edit-ACCATIXB.js} +49 -51
  247. package/chunks/{en-3RHLPITS.js → en-YLXBXM4Z.js} +5 -1
  248. package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-35QCAAFP.js} +7 -8
  249. package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-NEN6EPVM.js} +48 -50
  250. package/chunks/environment-CKWHBC5T.js +129 -0
  251. package/chunks/errors-XTZPNQ77.js +113 -0
  252. package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-XQD6D543.js} +7 -8
  253. package/chunks/exitPlanMode-CY344X5J.js +83 -0
  254. package/chunks/{fast-path-3AVP3G35.js → fast-path-YSOX4PAM.js} +31 -10
  255. package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
  256. package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
  257. package/chunks/{gemini-7PVQWHTH.js → gemini-VQY2YCPH.js} +137 -129
  258. package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-PAPXNIGU.js} +16 -13
  259. package/chunks/{glob-7YGXE6OV.js → glob-GVCUSBBF.js} +48 -50
  260. package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-5STK6OXW.js} +77 -31
  261. package/chunks/{grep-6DV6LTON.js → grep-5GPICQBU.js} +6 -6
  262. package/chunks/handleAutoUpdate-ZJPJN42W.js +109 -0
  263. package/chunks/i18n-BZYKOST7.js +124 -0
  264. package/chunks/{image-gen-7CSCJ73T.js → image-gen-J6FDGUZP.js} +8 -12
  265. package/chunks/initializer-GO2C5HE3.js +113 -0
  266. package/chunks/installationInfo-WM2GXQZ6.js +107 -0
  267. package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
  268. package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-37XPR34V.js} +2 -2
  269. package/chunks/list-ERDJB7PQ.js +116 -0
  270. package/chunks/{list-agents-43XUEXJV.js → list-agents-DI3YFTDT.js} +2 -2
  271. package/chunks/loadedSettingsAdapter-7JOCVOKV.js +110 -0
  272. package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-3ONLU3BS.js} +327 -39
  273. package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XJFONSQ7.js} +5 -5
  274. package/chunks/{ls-CGL2UC3H.js → ls-3VAT2J7A.js} +4 -4
  275. package/chunks/{lsp-5IKUO5DX.js → lsp-5W7IRUBH.js} +2 -2
  276. package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-TLRCC2GE.js} +62 -62
  277. package/chunks/mcp-2LH3QXR2.js +110 -0
  278. package/chunks/{monitor-PXYSGSUN.js → monitor-P7LDAL4W.js} +48 -50
  279. package/chunks/nonInteractiveCli-E5T7PZ27.js +184 -0
  280. package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-F7KSG4WQ.js} +49 -51
  281. package/chunks/open-with-auth-4UI3KHUR.js +55 -0
  282. package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-2EXCZUGN.js} +29 -32
  283. package/chunks/pidfile-P25DWA5Q.js +111 -0
  284. package/chunks/process-registry-OAEG6WGC.js +662 -0
  285. package/chunks/{processUtils-YK2TDTTU.js → processUtils-PVDKBL35.js} +2 -2
  286. package/chunks/prompt-terminal-ledger-AJ7T7OIV.js +105 -0
  287. package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
  288. package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-TBBRLWIT.js} +54 -62
  289. package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-OF5WRBQT.js} +7 -11
  290. package/chunks/read-file-6IIY4RLJ.js +32 -0
  291. package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-XD257PGJ.js} +2 -2
  292. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  293. package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-VW23GS4F.js} +4 -5
  294. package/chunks/report-findings-XA3FJG3N.js +33 -0
  295. package/chunks/request-shutdown-BCLA3JV2.js +133 -0
  296. package/chunks/resumeHistoryUtils-44IETXDY.js +118 -0
  297. package/chunks/ripGrep-E7ESZ7SS.js +39 -0
  298. package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
  299. package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-DXBCYW7V.js} +924 -356
  300. package/chunks/runtime-RUSPD35D.js +148 -0
  301. package/chunks/scheduled-tasks-DVRJZO6I.js +127 -0
  302. package/chunks/scheduler-TDRB2NSY.js +122 -0
  303. package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-TTU2CHBU.js} +5 -5
  304. package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-UUMVYMAL.js} +12 -6
  305. package/chunks/{send-message-J4VT46OI.js → send-message-AJ4OCUBV.js} +24 -29
  306. package/chunks/serve-KITOM7OR.js +118 -0
  307. package/chunks/{server-74ONDK62.js → server-THCOMUC2.js} +5814 -4549
  308. package/chunks/{session-BO6VBWJP.js → session-XKR5MPXE.js} +152 -142
  309. package/chunks/session-pr-refresh-KRBH7KDA.js +278 -0
  310. package/chunks/{settings-35QZNFDG.js → settings-YXZ4XBKK.js} +72 -72
  311. package/chunks/shell-5FJ2DZ3W.js +93 -0
  312. package/chunks/{skill-DKEMQSNJ.js → skill-VMMJZ6CJ.js} +161 -33
  313. package/chunks/skill-settings-7SG4YA2W.js +118 -0
  314. package/chunks/spawnChannel-BPMIXRBI.js +112 -0
  315. package/chunks/standalone-update-QN5HFRIC.js +118 -0
  316. package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-5A7RQFRP.js} +3139 -2438
  317. package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-ML43GEFN.js} +3 -3
  318. package/chunks/{task-create-I2H322E4.js → task-create-QN4LYRSE.js} +11 -11
  319. package/chunks/{task-list-3OLIWFTQ.js → task-list-JPLGK45U.js} +5 -5
  320. package/chunks/{task-stop-JAUY6MSY.js → task-stop-CXEH5L2D.js} +2 -2
  321. package/chunks/{task-update-B3XO4CPI.js → task-update-IWEOJFV2.js} +11 -11
  322. package/chunks/{team-create-W534PMGX.js → team-create-HVGVUL2L.js} +49 -51
  323. package/chunks/{team-delete-Q7GE7RRI.js → team-delete-RZVVSGCY.js} +5 -5
  324. package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-S5A5FQWU.js} +48 -50
  325. package/chunks/terminal-image-renderer-SIVPPXDI.js +114 -0
  326. package/chunks/theme-manager-TA33UZZX.js +102 -0
  327. package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-WDJNQEMW.js} +43 -25
  328. package/chunks/{tool-search-Y4KL3LRE.js → tool-search-NX7IPDKP.js} +19 -20
  329. package/chunks/total-session-admission-PWXZBOVX.js +114 -0
  330. package/chunks/trustedFolders-V6Y4CU3F.js +122 -0
  331. package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-CGSX3R37.js} +6 -6
  332. package/chunks/updateCheck-T5O2WGIB.js +118 -0
  333. package/chunks/useAutoAcceptIndicator-ULBJJWPY.js +120 -0
  334. package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-E5S2JSRC.js} +114 -108
  335. package/chunks/{version-QMDRADXM.js → version-LS5JPU36.js} +2 -2
  336. package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-RLMFZTS3.js} +25 -244
  337. package/chunks/{web-search-JS3E76O6.js → web-search-LMCIC4N5.js} +11 -13
  338. package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
  339. package/chunks/webapi-Z5OM224P.js +4118 -0
  340. package/chunks/{workflow-2FCMBTBZ.js → workflow-JBXU3IGA.js} +713 -138
  341. package/chunks/workspace-providers-status-525ORQBH.js +114 -0
  342. package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-7Y44R4LV.js} +1 -1
  343. package/chunks/workspace-registry-HS4RWUSQ.js +123 -0
  344. package/chunks/workspace-service-7PXDM6EB.js +129 -0
  345. package/chunks/workspace-skills-status-FMJGC2XI.js +113 -0
  346. package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-3YTWSQBY.js} +78 -77
  347. package/chunks/write-file-BVQRYQQO.js +88 -0
  348. package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-RPTMRTHG.js} +5 -1
  349. package/chunks/{zh-3JQ75KFU.js → zh-UNY63FR3.js} +5 -1
  350. package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-FGCELNS4.js} +14 -15
  351. package/cli.js +13 -13
  352. package/locales/ca.js +3 -0
  353. package/locales/de.js +1 -0
  354. package/locales/en.js +5 -0
  355. package/locales/fr.js +1 -0
  356. package/locales/ja.js +1 -0
  357. package/locales/pt.js +1 -0
  358. package/locales/ru.js +1 -0
  359. package/locales/zh-TW.js +5 -0
  360. package/locales/zh.js +5 -0
  361. package/package.json +3 -3
  362. package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-2XZDeWYO.js} +1 -1
  363. package/web-shell/assets/{arc-CXKjm86V.js → arc-B6UgMh90.js} +1 -1
  364. package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-DZgNFeN1.js} +1 -1
  365. package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-DQ2wvBFN.js} +1 -1
  366. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-DMmQMrc4.js} +1 -1
  367. package/web-shell/assets/channel-D_TyfiTx.js +1 -0
  368. package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-C8Zh2e9y.js} +1 -1
  369. package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-C3LTenP8.js} +1 -1
  370. package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-CxABOc8n.js} +1 -1
  371. package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-CD_JxHDC.js} +1 -1
  372. package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-BdmZPmce.js} +1 -1
  373. package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-80bcHmfK.js} +1 -1
  374. package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-CNpLZyQF.js} +1 -1
  375. package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-CXlKgMv3.js} +1 -1
  376. package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-CivyYyvL.js} +1 -1
  377. package/web-shell/assets/classDiagram-DTDB5LWJ-Bw_H3xMd.js +1 -0
  378. package/web-shell/assets/classDiagram-v2-JRS7N3AN-Bw_H3xMd.js +1 -0
  379. package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-COAjRH3w.js} +1 -1
  380. package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DqU1JHO6.js} +1 -1
  381. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-BCLI1Bvj.js} +1 -1
  382. package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DmAz8nqF.js} +1 -1
  383. package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-Ck-5QLT5.js} +1 -1
  384. package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-C0ljX0mW.js} +1 -1
  385. package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-DPgvT24v.js} +1 -1
  386. package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-D7hWr1LR.js} +1 -1
  387. package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-D59tlOta.js} +1 -1
  388. package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-CY2DDx00.js} +1 -1
  389. package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-AR4h8Q8k.js} +1 -1
  390. package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-DbF0HqBz.js} +1 -1
  391. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-J52mrIhc.js} +1 -1
  392. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-CcgMY5EV.js} +1 -1
  393. package/web-shell/assets/index-BjUg3vPr.css +5 -0
  394. package/web-shell/assets/index-CFwYYVFU.js +1873 -0
  395. package/web-shell/assets/{index-tYXRIPz4.js → index-MQs7l15A.js} +1 -1
  396. package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-Buu3ibp2.js} +1 -1
  397. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CoKQxnF3.js} +1 -1
  398. package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CxK35mTC.js} +1 -1
  399. package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-tk2CHTQ1.js} +1 -1
  400. package/web-shell/assets/{layout-O2uHVkPd.js → layout-DEpMwb4u.js} +1 -1
  401. package/web-shell/assets/{linear-BVqYgjSc.js → linear-DSQsLh53.js} +1 -1
  402. package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-DIZuPBQT.js} +6 -6
  403. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-CCAvk8r_.js} +1 -1
  404. package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-CpJ28jxz.js} +1 -1
  405. package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-ziJR2R32.js} +1 -1
  406. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-B60zE3Mh.js} +1 -1
  407. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-M3GqQ_g1.js} +1 -1
  408. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-ntCtYqTk.js} +1 -1
  409. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-AYLoItcZ.js} +1 -1
  410. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DEWk4Mlj.js} +1 -1
  411. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-OOWvzPay.js} +1 -1
  412. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-BcMmvxem.js} +1 -1
  413. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DRLLqPWO.js +1 -0
  414. package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-DuZTWWvh.js} +1 -1
  415. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DOfLQQYt.js +8 -0
  416. package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-CjqtZXEd.js} +1 -1
  417. package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-knVCVkQ4.js} +1 -1
  418. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-yoWhw0a2.js} +1 -1
  419. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-ue14E_gL.js} +1 -1
  420. package/web-shell/index.html +20 -5
  421. package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
  422. package/chunks/agent-BFE3DQM3.js +0 -93
  423. package/chunks/agent-headless-LLVKZZ4P.js +0 -87
  424. package/chunks/bridge-EBYO4SYM.js +0 -118
  425. package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
  426. package/chunks/chunk-2J3OJGTL.js +0 -98
  427. package/chunks/chunk-7IV52LTO.js +0 -202
  428. package/chunks/chunk-AXMWHKXA.js +0 -42
  429. package/chunks/chunk-F6WFNA7U.js +0 -22
  430. package/chunks/chunk-IO257NUD.js +0 -623
  431. package/chunks/chunk-JS73NNWF.js +0 -30
  432. package/chunks/chunk-SJ4HB27T.js +0 -945
  433. package/chunks/chunk-VGHZT6JR.js +0 -51
  434. package/chunks/chunk-YHC2EYYG.js +0 -125
  435. package/chunks/computer-use-EGPWFEX6.js +0 -2142
  436. package/chunks/config-utils-WZ43VOBS.js +0 -25
  437. package/chunks/contextCommand-5DSEQI6S.js +0 -106
  438. package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
  439. package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
  440. package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
  441. package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
  442. package/chunks/environment-WUPHLPKZ.js +0 -127
  443. package/chunks/errors-WPMPVIAT.js +0 -113
  444. package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
  445. package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
  446. package/chunks/i18n-C562S6KN.js +0 -124
  447. package/chunks/initializer-7YPGOFP4.js +0 -113
  448. package/chunks/installationInfo-ARU5Q2H7.js +0 -107
  449. package/chunks/list-KTSK275C.js +0 -116
  450. package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
  451. package/chunks/mcp-6ONTVPAY.js +0 -110
  452. package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
  453. package/chunks/pidfile-IO7ALSZF.js +0 -111
  454. package/chunks/process-registry-PMJOA5CO.js +0 -172
  455. package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
  456. package/chunks/read-file-2HOD2ATO.js +0 -33
  457. package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
  458. package/chunks/ripGrep-E7P6K4QR.js +0 -40
  459. package/chunks/runtime-J4SPTJRQ.js +0 -148
  460. package/chunks/scheduler-VRAEZZ4E.js +0 -122
  461. package/chunks/serve-KEAWV4TI.js +0 -118
  462. package/chunks/shell-H6K63WG3.js +0 -95
  463. package/chunks/skill-settings-TCKLXIXM.js +0 -118
  464. package/chunks/spawnChannel-2K6NKWM5.js +0 -111
  465. package/chunks/standalone-update-LSCGOEFP.js +0 -118
  466. package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
  467. package/chunks/theme-manager-6B47ZPIF.js +0 -102
  468. package/chunks/total-session-admission-NSCFWGJH.js +0 -113
  469. package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
  470. package/chunks/updateCheck-EOVLHD4T.js +0 -118
  471. package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
  472. package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
  473. package/chunks/workspace-registry-BQISXT6Y.js +0 -122
  474. package/chunks/workspace-service-LLY6HCUC.js +0 -129
  475. package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
  476. package/chunks/write-file-EJHU2Z3E.js +0 -90
  477. package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
  478. package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
  479. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
  480. package/web-shell/assets/index-BN_m_uHJ.css +0 -5
  481. package/web-shell/assets/index-DrlJu79f.js +0 -1792
  482. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
  483. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
@@ -0,0 +1,842 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ isTranscriptArtifactRecord
5
+ } from "./chunk-7J6OTNGO.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-5O2XNYP6.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/core/src/services/session-artifact-persistence.ts
14
+ init_esbuild_shims();
15
+ import { createHash } from "node:crypto";
16
+ var SESSION_ARTIFACT_PERSISTENCE_VERSION = 2;
17
+ var CONTENT_ID_PATTERN = /^[0-9a-f]{64}-[0-9a-f]{16}$/;
18
+ var WORKSPACE_CONTENT_SHA256_METADATA_KEY = "qwen.workspace.sha256";
19
+ var WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY = "qwen.workspace.mtimeMs";
20
+ var WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY = "qwen.workspace.sizeBytes";
21
+ var PUBLISHED_CONTENT_SHA256_METADATA_KEY = "qwen.published.sha256";
22
+ var MAX_PERSISTED_ARTIFACTS = 500;
23
+ var MAX_PERSISTED_EVENT_CHANGES = 800;
24
+ var MAX_PERSISTED_IDS = 500;
25
+ var MAX_PERSISTED_MARKER_ARTIFACTS = MAX_PERSISTED_IDS * 2;
26
+ var MAX_PERSISTED_ID_CHARS = 200;
27
+ var MAX_PERSISTED_TITLE_CHARS = 200;
28
+ var MAX_PERSISTED_DESCRIPTION_CHARS = 1e3;
29
+ var MAX_PERSISTED_PATH_CHARS = 500;
30
+ var MAX_PERSISTED_URL_CHARS = 2048;
31
+ var MAX_PERSISTED_MIME_CHARS = 120;
32
+ var MAX_PERSISTED_FIELD_CHARS = 200;
33
+ var MAX_PERSISTED_TIMESTAMP_CHARS = 64;
34
+ 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;
35
+ function isSessionArtifactRecord(record) {
36
+ return isTranscriptArtifactRecord(record);
37
+ }
38
+ __name(isSessionArtifactRecord, "isSessionArtifactRecord");
39
+ function selectActiveSideArtifactRecordUuids(records, activeRecordUuids) {
40
+ const activeUuids = new Set(activeRecordUuids);
41
+ const firstActiveUuid = activeRecordUuids[0];
42
+ const firstActiveIndex = firstActiveUuid === void 0 ? -1 : records.findIndex((record) => record.uuid === firstActiveUuid);
43
+ const nextActiveUuidByIndex = /* @__PURE__ */ new Map();
44
+ const nextBlockingUuidByIndex = /* @__PURE__ */ new Map();
45
+ let nextActiveUuid;
46
+ let nextBlockingUuid;
47
+ for (let index = records.length - 1; index >= 0; index--) {
48
+ if (nextActiveUuid !== void 0) {
49
+ nextActiveUuidByIndex.set(index, nextActiveUuid);
50
+ }
51
+ if (nextBlockingUuid !== void 0) {
52
+ nextBlockingUuidByIndex.set(index, nextBlockingUuid);
53
+ }
54
+ const record = records[index];
55
+ if (activeUuids.has(record.uuid)) {
56
+ nextActiveUuid = record.uuid;
57
+ nextBlockingUuid = void 0;
58
+ } else if (!isSessionArtifactRecord(record) && !(record.type === "system" && record.subtype === "custom_title")) {
59
+ nextBlockingUuid = record.uuid;
60
+ }
61
+ }
62
+ const selected = [];
63
+ const includedSideArtifactUuids = /* @__PURE__ */ new Set();
64
+ let previousActiveUuid;
65
+ for (let index = 0; index < records.length; index++) {
66
+ const record = records[index];
67
+ if (activeUuids.has(record.uuid)) {
68
+ previousActiveUuid = record.uuid;
69
+ continue;
70
+ }
71
+ if (!isSessionArtifactRecord(record)) continue;
72
+ const nextUuid = nextActiveUuidByIndex.get(index);
73
+ const isInActiveSegment = !nextBlockingUuidByIndex.has(index) && (nextUuid !== void 0 ? activeUuids.has(nextUuid) : previousActiveUuid !== void 0 && activeUuids.has(previousActiveUuid));
74
+ if (record.parentUuid !== null && (activeUuids.has(record.parentUuid) || includedSideArtifactUuids.has(record.parentUuid)) && isInActiveSegment && (record.parentUuid === previousActiveUuid || includedSideArtifactUuids.has(record.parentUuid))) {
75
+ selected.push(record.uuid);
76
+ includedSideArtifactUuids.add(record.uuid);
77
+ } else if (record.parentUuid === null && index < firstActiveIndex && isInActiveSegment) {
78
+ selected.push(record.uuid);
79
+ includedSideArtifactUuids.add(record.uuid);
80
+ }
81
+ }
82
+ return selected;
83
+ }
84
+ __name(selectActiveSideArtifactRecordUuids, "selectActiveSideArtifactRecordUuids");
85
+ function stableSessionArtifactId(sessionId, identityKey) {
86
+ return createHash("sha256").update(`${sessionId}:${identityKey}`).digest("hex").slice(0, 16);
87
+ }
88
+ __name(stableSessionArtifactId, "stableSessionArtifactId");
89
+ function sessionArtifactIdentityKey(artifact) {
90
+ if (artifact.workspacePath) return `workspace:${artifact.workspacePath}`;
91
+ if (artifact.managedId) return `managed:${artifact.managedId}`;
92
+ if (artifact.url) return `url:${artifact.url}`;
93
+ return void 0;
94
+ }
95
+ __name(sessionArtifactIdentityKey, "sessionArtifactIdentityKey");
96
+ var SessionArtifactSnapshotAccumulator = class {
97
+ static {
98
+ __name(this, "SessionArtifactSnapshotAccumulator");
99
+ }
100
+ artifacts = /* @__PURE__ */ new Map();
101
+ tombstonedIds = /* @__PURE__ */ new Set();
102
+ stickyEphemeralIds = /* @__PURE__ */ new Set();
103
+ markerArtifacts = /* @__PURE__ */ new Map();
104
+ warnings = [];
105
+ sequence = 0;
106
+ lastSnapshotSequence = 0;
107
+ sessionId;
108
+ sawRecord = false;
109
+ constructor(fallbackSessionId) {
110
+ this.sessionId = fallbackSessionId;
111
+ }
112
+ add(record) {
113
+ if (!isSessionArtifactRecord(record)) return;
114
+ if (record.subtype === "session_artifact_snapshot") {
115
+ const payload2 = normalizeSnapshotPayload(
116
+ record.systemPayload,
117
+ this.warnings
118
+ );
119
+ if (!payload2) return;
120
+ this.sawRecord = true;
121
+ this.sessionId = payload2.sessionId;
122
+ this.sequence = Math.max(this.sequence, payload2.sequence);
123
+ this.lastSnapshotSequence = payload2.sequence;
124
+ this.artifacts.clear();
125
+ this.tombstonedIds.clear();
126
+ this.stickyEphemeralIds.clear();
127
+ this.markerArtifacts.clear();
128
+ for (const id of payload2.tombstonedIds ?? []) this.tombstonedIds.add(id);
129
+ for (const id of payload2.stickyEphemeralIds ?? []) {
130
+ this.stickyEphemeralIds.add(id);
131
+ }
132
+ const markerIds = /* @__PURE__ */ new Set([
133
+ ...this.tombstonedIds,
134
+ ...this.stickyEphemeralIds
135
+ ]);
136
+ for (const artifact of payload2.markerArtifacts ?? []) {
137
+ if (markerIds.has(artifact.id)) {
138
+ this.markerArtifacts.set(artifact.id, artifact);
139
+ }
140
+ }
141
+ for (const artifact of payload2.artifacts) {
142
+ if (artifact.retention === "ephemeral") continue;
143
+ this.artifacts.set(artifact.id, artifact);
144
+ this.markerArtifacts.delete(artifact.id);
145
+ }
146
+ return;
147
+ }
148
+ const payload = normalizeEventPayload(record.systemPayload, this.warnings);
149
+ if (!payload) return;
150
+ this.sawRecord = true;
151
+ this.sessionId = payload.sessionId;
152
+ if (payload.sequence <= this.lastSnapshotSequence) {
153
+ this.warnings.push(
154
+ `skipped stale event sequence ${payload.sequence} at or before snapshot sequence ${this.lastSnapshotSequence}`
155
+ );
156
+ return;
157
+ }
158
+ this.sequence = Math.max(this.sequence, payload.sequence);
159
+ for (const change of payload.changes) {
160
+ if (change.action === "removed") {
161
+ this.artifacts.delete(change.artifactId);
162
+ if (change.reason === "explicit") {
163
+ this.tombstonedIds.add(change.artifactId);
164
+ this.stickyEphemeralIds.delete(change.artifactId);
165
+ if (change.artifact) {
166
+ this.markerArtifacts.set(change.artifactId, change.artifact);
167
+ }
168
+ }
169
+ if (change.reason === "eviction") {
170
+ this.stickyEphemeralIds.delete(change.artifactId);
171
+ this.markerArtifacts.delete(change.artifactId);
172
+ }
173
+ if (change.reason === "unpin_to_ephemeral") {
174
+ this.stickyEphemeralIds.add(change.artifactId);
175
+ if (change.artifact) {
176
+ this.markerArtifacts.set(change.artifactId, change.artifact);
177
+ }
178
+ }
179
+ continue;
180
+ }
181
+ if (!change.artifact || change.artifact.retention === "ephemeral") {
182
+ continue;
183
+ }
184
+ this.artifacts.set(change.artifact.id, change.artifact);
185
+ this.tombstonedIds.delete(change.artifact.id);
186
+ this.stickyEphemeralIds.delete(change.artifact.id);
187
+ this.markerArtifacts.delete(change.artifact.id);
188
+ }
189
+ }
190
+ finish() {
191
+ if (!this.sawRecord || !this.sessionId) return void 0;
192
+ return {
193
+ v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
194
+ sessionId: this.sessionId,
195
+ sequence: this.sequence,
196
+ artifacts: Array.from(this.artifacts.values()),
197
+ tombstonedIds: Array.from(this.tombstonedIds),
198
+ stickyEphemeralIds: Array.from(this.stickyEphemeralIds),
199
+ ...this.markerArtifacts.size > 0 ? { markerArtifacts: Array.from(this.markerArtifacts.values()) } : {},
200
+ warnings: this.warnings
201
+ };
202
+ }
203
+ };
204
+ function rebuildSessionArtifactSnapshot(records, fallbackSessionId) {
205
+ const accumulator = new SessionArtifactSnapshotAccumulator(fallbackSessionId);
206
+ for (const record of records) accumulator.add(record);
207
+ return accumulator.finish();
208
+ }
209
+ __name(rebuildSessionArtifactSnapshot, "rebuildSessionArtifactSnapshot");
210
+ function remapSessionArtifactPayloadForFork(payload, sourceSessionId, newSessionId, remappedArtifactIds = /* @__PURE__ */ new Map()) {
211
+ const snapshot = normalizeSnapshotPayload(payload, []);
212
+ if (snapshot) {
213
+ const {
214
+ markerArtifacts: snapshotMarkerArtifacts,
215
+ ...snapshotWithoutMarkers
216
+ } = snapshot;
217
+ const artifacts = [];
218
+ for (const artifact of snapshot.artifacts) {
219
+ const remapped = remapForkSafeSessionArtifactForFork(
220
+ artifact,
221
+ sourceSessionId,
222
+ newSessionId
223
+ );
224
+ if (!remapped) {
225
+ seedForkArtifactIdRemap(artifact, newSessionId, remappedArtifactIds);
226
+ continue;
227
+ }
228
+ remappedArtifactIds.set(artifact.id, remapped.id);
229
+ artifacts.push(remapped);
230
+ }
231
+ const markerIds = /* @__PURE__ */ new Set([
232
+ ...snapshot.tombstonedIds ?? [],
233
+ ...snapshot.stickyEphemeralIds ?? []
234
+ ]);
235
+ const markerArtifacts = (snapshotMarkerArtifacts ?? []).filter((artifact) => markerIds.has(artifact.id)).map((artifact) => {
236
+ const remapped = remapForkSafeSessionArtifactForFork(
237
+ artifact,
238
+ sourceSessionId,
239
+ newSessionId
240
+ );
241
+ if (!remapped) {
242
+ seedForkArtifactIdRemap(artifact, newSessionId, remappedArtifactIds);
243
+ return void 0;
244
+ }
245
+ remappedArtifactIds.set(artifact.id, remapped.id);
246
+ return remapped;
247
+ }).filter((artifact) => artifact !== void 0);
248
+ return {
249
+ ...snapshotWithoutMarkers,
250
+ sessionId: newSessionId,
251
+ artifacts,
252
+ ...markerArtifacts.length > 0 ? { markerArtifacts } : {},
253
+ tombstonedIds: (snapshot.tombstonedIds ?? []).map(
254
+ (artifactId) => remapArtifactIdForFork(
255
+ artifactId,
256
+ sourceSessionId,
257
+ newSessionId,
258
+ remappedArtifactIds
259
+ )
260
+ ),
261
+ stickyEphemeralIds: (snapshot.stickyEphemeralIds ?? []).map(
262
+ (artifactId) => remapArtifactIdForFork(
263
+ artifactId,
264
+ sourceSessionId,
265
+ newSessionId,
266
+ remappedArtifactIds
267
+ )
268
+ )
269
+ };
270
+ }
271
+ const event = normalizeEventPayload(payload, []);
272
+ if (!event) return payload;
273
+ return {
274
+ ...event,
275
+ sessionId: newSessionId,
276
+ changes: event.changes.map((change) => {
277
+ if (change.artifact) {
278
+ const artifact = remapForkSafeSessionArtifactForFork(
279
+ change.artifact,
280
+ sourceSessionId,
281
+ newSessionId
282
+ );
283
+ if (!artifact) {
284
+ if (change.action !== "removed") return void 0;
285
+ seedForkArtifactIdRemap(
286
+ change.artifact,
287
+ newSessionId,
288
+ remappedArtifactIds
289
+ );
290
+ const { artifact: _unsafeArtifact, ...changeWithoutArtifact } = change;
291
+ return {
292
+ ...changeWithoutArtifact,
293
+ artifactId: remapArtifactIdForFork(
294
+ change.artifactId,
295
+ sourceSessionId,
296
+ newSessionId,
297
+ remappedArtifactIds
298
+ )
299
+ };
300
+ }
301
+ remappedArtifactIds.set(change.artifactId, artifact.id);
302
+ return {
303
+ ...change,
304
+ artifactId: artifact.id,
305
+ artifact
306
+ };
307
+ }
308
+ if (change.action === "removed") {
309
+ return {
310
+ ...change,
311
+ artifactId: remapArtifactIdForFork(
312
+ change.artifactId,
313
+ sourceSessionId,
314
+ newSessionId,
315
+ remappedArtifactIds
316
+ )
317
+ };
318
+ }
319
+ return {
320
+ ...change,
321
+ artifactId: remapArtifactIdForFork(
322
+ change.artifactId,
323
+ sourceSessionId,
324
+ newSessionId,
325
+ remappedArtifactIds
326
+ )
327
+ };
328
+ }).filter((change) => change !== void 0)
329
+ };
330
+ }
331
+ __name(remapSessionArtifactPayloadForFork, "remapSessionArtifactPayloadForFork");
332
+ function remapForkSafeSessionArtifactForFork(artifact, sourceSessionId, newSessionId) {
333
+ if (!isForkSafeArtifact(artifact)) return void 0;
334
+ return remapSessionArtifactForFork(artifact, sourceSessionId, newSessionId);
335
+ }
336
+ __name(remapForkSafeSessionArtifactForFork, "remapForkSafeSessionArtifactForFork");
337
+ function seedForkArtifactIdRemap(artifact, newSessionId, remappedArtifactIds) {
338
+ const identityKey = forkSafeSessionArtifactIdentityKey(artifact);
339
+ if (!identityKey) return;
340
+ remappedArtifactIds.set(
341
+ artifact.id,
342
+ stableSessionArtifactId(newSessionId, identityKey)
343
+ );
344
+ }
345
+ __name(seedForkArtifactIdRemap, "seedForkArtifactIdRemap");
346
+ function forkSafeSessionArtifactIdentityKey(artifact) {
347
+ if (artifact.workspacePath) return `workspace:${artifact.workspacePath}`;
348
+ if (artifact.managedId) return `managed:${artifact.managedId}`;
349
+ if (artifact.url && !hasRestoreUnsafeUrl(artifact.url)) {
350
+ return `url:${artifact.url}`;
351
+ }
352
+ return void 0;
353
+ }
354
+ __name(forkSafeSessionArtifactIdentityKey, "forkSafeSessionArtifactIdentityKey");
355
+ function remapArtifactIdForFork(artifactId, sourceSessionId, newSessionId, remappedArtifactIds) {
356
+ return remappedArtifactIds.get(artifactId) ?? stableSessionArtifactId(
357
+ newSessionId,
358
+ `fork:${sourceSessionId}:${artifactId}`
359
+ );
360
+ }
361
+ __name(remapArtifactIdForFork, "remapArtifactIdForFork");
362
+ function remapSessionArtifactForFork(artifact, sourceSessionId, newSessionId) {
363
+ const identityKey = sessionArtifactIdentityKey(artifact);
364
+ const id = identityKey ? stableSessionArtifactId(newSessionId, identityKey) : stableSessionArtifactId(
365
+ newSessionId,
366
+ `fork:${sourceSessionId}:${artifact.id}`
367
+ );
368
+ const next = {
369
+ ...artifact,
370
+ id,
371
+ retention: artifact.retention === "pinned" ? "restorable" : artifact.retention
372
+ };
373
+ delete next.contentRef;
374
+ delete next.expiresAt;
375
+ delete next.clientId;
376
+ return next;
377
+ }
378
+ __name(remapSessionArtifactForFork, "remapSessionArtifactForFork");
379
+ function isForkSafeArtifact(artifact) {
380
+ if (artifact.metadata && hasRestoreUnsafeMetadata(artifact.metadata)) {
381
+ return false;
382
+ }
383
+ if (artifact.url && hasRestoreUnsafeUrl(artifact.url)) {
384
+ return false;
385
+ }
386
+ return true;
387
+ }
388
+ __name(isForkSafeArtifact, "isForkSafeArtifact");
389
+ function hasRestoreUnsafeMetadata(metadata) {
390
+ for (const [key, value] of Object.entries(metadata)) {
391
+ if (!key || isSecretLikeText(key)) {
392
+ return true;
393
+ }
394
+ if (typeof value === "number" && !Number.isFinite(value)) {
395
+ return true;
396
+ }
397
+ if (typeof value === "string" && !isReservedWorkspaceMetadataKey(key) && isSecretLikeMetadataValue(value)) {
398
+ return true;
399
+ }
400
+ }
401
+ return false;
402
+ }
403
+ __name(hasRestoreUnsafeMetadata, "hasRestoreUnsafeMetadata");
404
+ function hasRestoreUnsafeUrl(value) {
405
+ let parsed;
406
+ try {
407
+ parsed = new URL(value);
408
+ } catch {
409
+ return true;
410
+ }
411
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
412
+ return true;
413
+ }
414
+ if (parsed.username || parsed.password) {
415
+ return true;
416
+ }
417
+ for (const [key, urlValue] of parsed.searchParams) {
418
+ if (isSecretLikeText(key) || isSecretLikeUrlValue(urlValue)) {
419
+ return true;
420
+ }
421
+ }
422
+ for (const segment of parsed.pathname.split("/").filter(Boolean)) {
423
+ let decodedSegment = segment;
424
+ try {
425
+ decodedSegment = decodeURIComponent(segment);
426
+ } catch {
427
+ }
428
+ if (isSecretLikeUrlValue(decodedSegment)) {
429
+ return true;
430
+ }
431
+ }
432
+ const fragment = parsed.hash.slice(1);
433
+ return hasSecretLikeUrlFragment(fragment);
434
+ }
435
+ __name(hasRestoreUnsafeUrl, "hasRestoreUnsafeUrl");
436
+ function hasSecretLikeUrlFragment(fragment) {
437
+ if (!fragment) return false;
438
+ const candidates = /* @__PURE__ */ new Set([fragment]);
439
+ try {
440
+ candidates.add(decodeURIComponent(fragment));
441
+ } catch {
442
+ }
443
+ for (const candidate of candidates) {
444
+ if (isSecretLikeText(candidate) || isSecretLikeUrlValue(candidate)) {
445
+ return true;
446
+ }
447
+ for (const [key, value] of new URLSearchParams(candidate)) {
448
+ if (isSecretLikeText(key) || isSecretLikeUrlValue(value)) {
449
+ return true;
450
+ }
451
+ }
452
+ }
453
+ return false;
454
+ }
455
+ __name(hasSecretLikeUrlFragment, "hasSecretLikeUrlFragment");
456
+ function isSecretLikeText(value) {
457
+ const normalized = value.replace(/([a-z])([A-Z])/g, "$1-$2");
458
+ return /(?:^|[-_.])(token|secret|password|passwd|pwd|cookie|authorization|credential|signature|sig|api[-_]?key|access[-_]?key)(?:$|[-_.=&#])/i.test(
459
+ normalized
460
+ );
461
+ }
462
+ __name(isSecretLikeText, "isSecretLikeText");
463
+ function isSecretLikeUrlValue(value) {
464
+ return SECRET_TOKEN_VALUE_PATTERN.test(value.trim());
465
+ }
466
+ __name(isSecretLikeUrlValue, "isSecretLikeUrlValue");
467
+ function isSecretLikeMetadataValue(value) {
468
+ return /^(?:bearer\s+\S{8,}|sk-[A-Za-z0-9_-]{12,}|(?:gh[pousr]|github_pat)_[A-Za-z0-9_/-]{12,})$/i.test(
469
+ value.trim()
470
+ );
471
+ }
472
+ __name(isSecretLikeMetadataValue, "isSecretLikeMetadataValue");
473
+ function normalizeSnapshotPayload(value, warnings) {
474
+ if (!isRecord(value)) {
475
+ warnings.push("skipped malformed snapshot record");
476
+ return void 0;
477
+ }
478
+ if (value["v"] !== SESSION_ARTIFACT_PERSISTENCE_VERSION) {
479
+ warnings.push(
480
+ `skipped v${String(value["v"])} snapshot record (expected v${SESSION_ARTIFACT_PERSISTENCE_VERSION})`
481
+ );
482
+ return void 0;
483
+ }
484
+ if (!Array.isArray(value["artifacts"])) {
485
+ warnings.push("skipped snapshot record without artifacts array");
486
+ return void 0;
487
+ }
488
+ const sessionId = getString(value, "sessionId");
489
+ if (!sessionId) {
490
+ warnings.push("skipped snapshot record without sessionId");
491
+ return void 0;
492
+ }
493
+ const rawArtifacts = value["artifacts"];
494
+ if (rawArtifacts.length > MAX_PERSISTED_ARTIFACTS) {
495
+ warnings.push(
496
+ `snapshot artifact list truncated to ${MAX_PERSISTED_ARTIFACTS}`
497
+ );
498
+ }
499
+ const rawMarkerArtifacts = Array.isArray(value["markerArtifacts"]) ? value["markerArtifacts"] : [];
500
+ if (rawMarkerArtifacts.length > MAX_PERSISTED_MARKER_ARTIFACTS) {
501
+ warnings.push(
502
+ `snapshot marker artifact list truncated to ${MAX_PERSISTED_MARKER_ARTIFACTS}`
503
+ );
504
+ }
505
+ const artifacts = rawArtifacts.slice(0, MAX_PERSISTED_ARTIFACTS).map((artifact) => normalizePersistedArtifact(artifact, warnings)).filter((artifact) => artifact !== void 0);
506
+ const markerArtifacts = rawMarkerArtifacts.slice(0, MAX_PERSISTED_MARKER_ARTIFACTS).map((artifact) => normalizePersistedArtifact(artifact, warnings)).filter((artifact) => artifact !== void 0);
507
+ return {
508
+ v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
509
+ sessionId,
510
+ sequence: getNonNegativeInteger(value, "sequence") ?? 0,
511
+ recordedAt: getString(value, "recordedAt", MAX_PERSISTED_TIMESTAMP_CHARS) ?? (/* @__PURE__ */ new Date(0)).toISOString(),
512
+ artifacts,
513
+ ...markerArtifacts.length > 0 ? { markerArtifacts } : {},
514
+ tombstonedIds: getStringArray(value, "tombstonedIds", MAX_PERSISTED_IDS),
515
+ stickyEphemeralIds: getStringArray(
516
+ value,
517
+ "stickyEphemeralIds",
518
+ MAX_PERSISTED_IDS
519
+ )
520
+ };
521
+ }
522
+ __name(normalizeSnapshotPayload, "normalizeSnapshotPayload");
523
+ function normalizeEventPayload(value, warnings) {
524
+ if (!isRecord(value)) {
525
+ warnings.push("skipped malformed event record");
526
+ return void 0;
527
+ }
528
+ if (value["v"] !== SESSION_ARTIFACT_PERSISTENCE_VERSION) {
529
+ warnings.push(
530
+ `skipped v${String(value["v"])} event record (expected v${SESSION_ARTIFACT_PERSISTENCE_VERSION})`
531
+ );
532
+ return void 0;
533
+ }
534
+ if (!Array.isArray(value["changes"])) {
535
+ warnings.push("skipped event record without changes array");
536
+ return void 0;
537
+ }
538
+ const sessionId = getString(value, "sessionId", MAX_PERSISTED_ID_CHARS);
539
+ if (!sessionId) {
540
+ warnings.push("skipped event record without sessionId");
541
+ return void 0;
542
+ }
543
+ const rawChanges = value["changes"];
544
+ if (rawChanges.length > MAX_PERSISTED_EVENT_CHANGES) {
545
+ warnings.push(
546
+ `event change list truncated to ${MAX_PERSISTED_EVENT_CHANGES}`
547
+ );
548
+ }
549
+ return {
550
+ v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
551
+ sessionId,
552
+ sequence: getNonNegativeInteger(value, "sequence") ?? 0,
553
+ recordedAt: getString(value, "recordedAt", MAX_PERSISTED_TIMESTAMP_CHARS) ?? (/* @__PURE__ */ new Date(0)).toISOString(),
554
+ changes: rawChanges.slice(0, MAX_PERSISTED_EVENT_CHANGES).map((change) => normalizePersistedChange(change, warnings)).filter((change) => change !== void 0)
555
+ };
556
+ }
557
+ __name(normalizeEventPayload, "normalizeEventPayload");
558
+ function normalizePersistedChange(value, warnings) {
559
+ if (!isRecord(value)) {
560
+ warnings.push("skipped malformed artifact change");
561
+ return void 0;
562
+ }
563
+ const action = value["action"];
564
+ if (action !== "created" && action !== "updated" && action !== "removed") {
565
+ warnings.push("skipped artifact change with invalid action");
566
+ return void 0;
567
+ }
568
+ const artifact = normalizePersistedArtifact(value["artifact"], warnings);
569
+ const artifactId = getString(value, "artifactId", MAX_PERSISTED_ID_CHARS) ?? artifact?.id;
570
+ if (!artifactId) {
571
+ warnings.push("skipped artifact change without artifactId");
572
+ return void 0;
573
+ }
574
+ const reason = value["reason"];
575
+ return {
576
+ action,
577
+ artifactId,
578
+ ...artifact ? { artifact } : {},
579
+ ...reason === "explicit" || reason === "eviction" || reason === "unpin_to_ephemeral" ? { reason } : {}
580
+ };
581
+ }
582
+ __name(normalizePersistedChange, "normalizePersistedChange");
583
+ function normalizePersistedArtifact(value, warnings) {
584
+ if (!isRecord(value)) return void 0;
585
+ const id = getString(value, "id", MAX_PERSISTED_ID_CHARS);
586
+ const title = getString(value, "title", MAX_PERSISTED_TITLE_CHARS);
587
+ if (!id || !title) {
588
+ warnings.push("skipped artifact without id/title");
589
+ return void 0;
590
+ }
591
+ const kind = normalizeLiteral(value["kind"], [
592
+ "file",
593
+ "link",
594
+ "html",
595
+ "image",
596
+ "video",
597
+ "audio",
598
+ "pdf",
599
+ "notebook",
600
+ "document",
601
+ "other"
602
+ ]);
603
+ const storage = normalizeLiteral(
604
+ value["storage"],
605
+ ["workspace", "external_url", "managed", "published"]
606
+ );
607
+ const source = normalizeLiteral(
608
+ value["source"],
609
+ ["tool", "hook", "client"]
610
+ );
611
+ const status = normalizeLiteral(value["status"], [
612
+ "available",
613
+ "missing",
614
+ "changed"
615
+ ]) ?? "missing";
616
+ const retention = normalizeLiteral(value["retention"], [
617
+ "ephemeral",
618
+ "restorable",
619
+ "pinned"
620
+ ]) ?? "restorable";
621
+ if (!kind || !storage || !source) {
622
+ warnings.push(`skipped malformed artifact ${id}`);
623
+ return void 0;
624
+ }
625
+ const metadata = normalizeMetadata(value["metadata"], warnings, id);
626
+ const description = getString(
627
+ value,
628
+ "description",
629
+ MAX_PERSISTED_DESCRIPTION_CHARS
630
+ );
631
+ const workspacePath = getString(
632
+ value,
633
+ "workspacePath",
634
+ MAX_PERSISTED_PATH_CHARS
635
+ );
636
+ const managedId = getString(value, "managedId", MAX_PERSISTED_FIELD_CHARS);
637
+ const url = getString(value, "url", MAX_PERSISTED_URL_CHARS);
638
+ const mimeType = getString(value, "mimeType", MAX_PERSISTED_MIME_CHARS);
639
+ const sizeBytes = getNonNegativeInteger(value, "sizeBytes");
640
+ const persistedAt = getString(
641
+ value,
642
+ "persistedAt",
643
+ MAX_PERSISTED_TIMESTAMP_CHARS
644
+ );
645
+ const expiresAt = getString(
646
+ value,
647
+ "expiresAt",
648
+ MAX_PERSISTED_TIMESTAMP_CHARS
649
+ );
650
+ const contentRef = normalizeContentRef(value["contentRef"]);
651
+ const toolCallId = getString(value, "toolCallId", MAX_PERSISTED_FIELD_CHARS);
652
+ const toolName = getString(value, "toolName", MAX_PERSISTED_FIELD_CHARS);
653
+ const hookEventName = getString(
654
+ value,
655
+ "hookEventName",
656
+ MAX_PERSISTED_FIELD_CHARS
657
+ );
658
+ const clientId = getString(value, "clientId", MAX_PERSISTED_FIELD_CHARS);
659
+ return {
660
+ id,
661
+ kind,
662
+ storage,
663
+ source,
664
+ status,
665
+ title,
666
+ ...description ? { description } : {},
667
+ ...workspacePath ? { workspacePath } : {},
668
+ ...managedId ? { managedId } : {},
669
+ ...url ? { url } : {},
670
+ ...mimeType ? { mimeType } : {},
671
+ ...sizeBytes !== void 0 ? { sizeBytes } : {},
672
+ ...metadata ? { metadata } : {},
673
+ retention,
674
+ clientRetained: value["clientRetained"] === true,
675
+ createdAt: getString(value, "createdAt", MAX_PERSISTED_TIMESTAMP_CHARS) ?? (/* @__PURE__ */ new Date(0)).toISOString(),
676
+ updatedAt: getString(value, "updatedAt", MAX_PERSISTED_TIMESTAMP_CHARS) ?? (/* @__PURE__ */ new Date(0)).toISOString(),
677
+ ...persistedAt ? { persistedAt } : {},
678
+ ...expiresAt ? { expiresAt } : {},
679
+ ...contentRef ? { contentRef } : {},
680
+ ...toolCallId ? { toolCallId } : {},
681
+ ...toolName ? { toolName } : {},
682
+ ...hookEventName ? { hookEventName } : {},
683
+ ...clientId ? { clientId } : {}
684
+ };
685
+ }
686
+ __name(normalizePersistedArtifact, "normalizePersistedArtifact");
687
+ function normalizeContentRef(value) {
688
+ if (!isRecord(value) || value["kind"] !== "managed_copy") return void 0;
689
+ const contentId = getString(value, "contentId", MAX_PERSISTED_FIELD_CHARS);
690
+ const sha256 = getString(value, "sha256", 64);
691
+ const sizeBytes = getNonNegativeInteger(value, "sizeBytes");
692
+ const createdAt = getString(
693
+ value,
694
+ "createdAt",
695
+ MAX_PERSISTED_TIMESTAMP_CHARS
696
+ );
697
+ if (!contentId || !CONTENT_ID_PATTERN.test(contentId) || !sha256 || !/^[0-9a-f]{64}$/.test(sha256) || sizeBytes === void 0 || !createdAt) {
698
+ return void 0;
699
+ }
700
+ return { kind: "managed_copy", contentId, sha256, sizeBytes, createdAt };
701
+ }
702
+ __name(normalizeContentRef, "normalizeContentRef");
703
+ function normalizeMetadata(value, warnings, artifactId) {
704
+ if (!isRecord(value)) return void 0;
705
+ const normalized = {};
706
+ for (const [key, item] of Object.entries(value)) {
707
+ if (isPrototypeMetadataKey(key)) continue;
708
+ if (key.length > 120) continue;
709
+ if (hasControlCharacter(key) || hasUnsafeDisplayPayload(key)) continue;
710
+ if (item === null || typeof item === "string" || typeof item === "number" || typeof item === "boolean") {
711
+ if (isAdoptableContentFingerprintKey(key) && !isContentFingerprintMetadataEntry(key, item)) {
712
+ continue;
713
+ }
714
+ if (typeof item === "string" && (hasControlCharacter(item) || hasUnsafeDisplayPayload(item))) {
715
+ continue;
716
+ }
717
+ normalized[key] = item;
718
+ }
719
+ }
720
+ if (Object.keys(normalized).length === 0) return void 0;
721
+ if (metadataBudgetBytes(normalized) > 4096) {
722
+ warnings.push(`skipped oversized metadata for artifact ${artifactId}`);
723
+ return void 0;
724
+ }
725
+ return normalized;
726
+ }
727
+ __name(normalizeMetadata, "normalizeMetadata");
728
+ function isPrototypeMetadataKey(key) {
729
+ return key === "__proto__" || key === "constructor" || key === "prototype";
730
+ }
731
+ __name(isPrototypeMetadataKey, "isPrototypeMetadataKey");
732
+ function isReservedWorkspaceMetadataKey(key) {
733
+ return key === WORKSPACE_CONTENT_SHA256_METADATA_KEY || key === WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY || key === WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY;
734
+ }
735
+ __name(isReservedWorkspaceMetadataKey, "isReservedWorkspaceMetadataKey");
736
+ function isAdoptableContentFingerprintKey(key) {
737
+ return isReservedWorkspaceMetadataKey(key) || key === PUBLISHED_CONTENT_SHA256_METADATA_KEY;
738
+ }
739
+ __name(isAdoptableContentFingerprintKey, "isAdoptableContentFingerprintKey");
740
+ function hasControlCharacter(value) {
741
+ for (let i = 0; i < value.length; i++) {
742
+ const code = value.charCodeAt(i);
743
+ if (code <= 31 || code === 127 || code >= 8203 && code <= 8207 || code === 8232 || code === 8233 || code >= 8234 && code <= 8238 || code >= 8294 && code <= 8297 || code === 65279) {
744
+ return true;
745
+ }
746
+ }
747
+ return false;
748
+ }
749
+ __name(hasControlCharacter, "hasControlCharacter");
750
+ function hasUnsafeDisplayPayload(value) {
751
+ return /<\s*\/?[a-z!]|&(?:#[0-9]+|#x[0-9a-f]+|[a-z][a-z0-9]+);|javascript\s*:|data\s*:\s*(?:text\/(?:html|javascript)|application\/javascript|image\/svg\+xml)/i.test(
752
+ value
753
+ ) || /(?:^|[\s"'`<])on[a-z][a-z0-9-]*\s*=/i.test(value);
754
+ }
755
+ __name(hasUnsafeDisplayPayload, "hasUnsafeDisplayPayload");
756
+ function metadataBudgetBytes(metadata, budget = "persisted") {
757
+ if (budget === "user") {
758
+ return Buffer.byteLength(JSON.stringify(metadata), "utf8");
759
+ }
760
+ const userMetadata = Object.fromEntries(
761
+ Object.entries(metadata).filter(
762
+ ([key, value]) => !isContentFingerprintMetadataEntry(key, value)
763
+ )
764
+ );
765
+ return Buffer.byteLength(JSON.stringify(userMetadata), "utf8");
766
+ }
767
+ __name(metadataBudgetBytes, "metadataBudgetBytes");
768
+ function isWorkspaceContentMetadataEntry(key, value) {
769
+ if (key === WORKSPACE_CONTENT_SHA256_METADATA_KEY) {
770
+ return typeof value === "string" && /^[0-9a-f]{64}$/.test(value);
771
+ }
772
+ if (key === WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY) {
773
+ return typeof value === "number" && Number.isFinite(value);
774
+ }
775
+ if (key === WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY) {
776
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
777
+ }
778
+ return false;
779
+ }
780
+ __name(isWorkspaceContentMetadataEntry, "isWorkspaceContentMetadataEntry");
781
+ function isContentFingerprintMetadataEntry(key, value) {
782
+ if (isWorkspaceContentMetadataEntry(key, value)) {
783
+ return true;
784
+ }
785
+ return key === PUBLISHED_CONTENT_SHA256_METADATA_KEY && typeof value === "string" && /^[0-9a-f]{64}$/.test(value);
786
+ }
787
+ __name(isContentFingerprintMetadataEntry, "isContentFingerprintMetadataEntry");
788
+ function normalizeLiteral(value, allowed) {
789
+ return typeof value === "string" && allowed.includes(value) ? value : void 0;
790
+ }
791
+ __name(normalizeLiteral, "normalizeLiteral");
792
+ function isRecord(value) {
793
+ return typeof value === "object" && value !== null && !Array.isArray(value);
794
+ }
795
+ __name(isRecord, "isRecord");
796
+ function getString(record, key, maxLength = MAX_PERSISTED_FIELD_CHARS) {
797
+ const value = record[key];
798
+ if (typeof value !== "string" || value.length > maxLength) {
799
+ return void 0;
800
+ }
801
+ return value;
802
+ }
803
+ __name(getString, "getString");
804
+ function getStringArray(record, key, maxItems = MAX_PERSISTED_IDS, maxLength = MAX_PERSISTED_ID_CHARS) {
805
+ const value = record[key];
806
+ if (!Array.isArray(value)) return void 0;
807
+ const items = value.filter(
808
+ (item) => typeof item === "string" && item.length <= maxLength
809
+ ).slice(-maxItems);
810
+ return items.length > 0 ? items : void 0;
811
+ }
812
+ __name(getStringArray, "getStringArray");
813
+ function getNonNegativeInteger(record, key) {
814
+ const value = record[key];
815
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : void 0;
816
+ }
817
+ __name(getNonNegativeInteger, "getNonNegativeInteger");
818
+
819
+ export {
820
+ SESSION_ARTIFACT_PERSISTENCE_VERSION,
821
+ WORKSPACE_CONTENT_SHA256_METADATA_KEY,
822
+ WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY,
823
+ WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY,
824
+ PUBLISHED_CONTENT_SHA256_METADATA_KEY,
825
+ isSessionArtifactRecord,
826
+ selectActiveSideArtifactRecordUuids,
827
+ stableSessionArtifactId,
828
+ SessionArtifactSnapshotAccumulator,
829
+ rebuildSessionArtifactSnapshot,
830
+ remapSessionArtifactPayloadForFork,
831
+ normalizeSnapshotPayload,
832
+ normalizeEventPayload,
833
+ isPrototypeMetadataKey,
834
+ isReservedWorkspaceMetadataKey,
835
+ isAdoptableContentFingerprintKey,
836
+ metadataBudgetBytes
837
+ };
838
+ /**
839
+ * @license
840
+ * Copyright 2026 Qwen Team
841
+ * SPDX-License-Identifier: Apache-2.0
842
+ */