@qwen-code/qwen-code 0.22.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) 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/qc-helper/docs/configuration/auth.md +7 -7
  5. package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
  6. package/bundled/qc-helper/docs/configuration/settings.md +40 -40
  7. package/bundled/qc-helper/docs/extension/introduction.md +3 -1
  8. package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  9. package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
  10. package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
  11. package/bundled/qc-helper/docs/features/channels/overview.md +3 -3
  12. package/bundled/qc-helper/docs/features/code-review.md +25 -21
  13. package/bundled/qc-helper/docs/features/commands.md +2 -2
  14. package/bundled/qc-helper/docs/features/computer-use.md +57 -51
  15. package/bundled/qc-helper/docs/features/mcp.md +35 -12
  16. package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
  17. package/bundled/qc-helper/docs/features/worktree.md +1 -1
  18. package/bundled/qc-helper/docs/overview.md +1 -1
  19. package/bundled/qc-helper/docs/quickstart.md +1 -1
  20. package/bundled/qc-helper/docs/qwen-serve.md +29 -6
  21. package/bundled/review/SKILL.md +119 -417
  22. package/bundled/review/references/aone.md +18 -0
  23. package/bundled/review/references/persistence.md +105 -0
  24. package/bundled/review/references/posting.md +270 -0
  25. package/chunks/MaxSizedBox-UUTUE42J.js +112 -0
  26. package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-XF2TVJFK.js} +87 -86
  27. package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
  28. package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-GY53MJIW.js} +2216 -1931
  29. package/chunks/agent-7U6CC5KF.js +97 -0
  30. package/chunks/agent-headless-32O4L2CT.js +87 -0
  31. package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-U76GTVB6.js} +128 -58
  32. package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XDJCZZCF.js} +2 -2
  33. package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-ZXXERLEV.js} +2 -2
  34. package/chunks/bridge-DFX2FFH4.js +119 -0
  35. package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
  36. package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-HXXS3HOZ.js} +4 -4
  37. package/chunks/channel-settings-store-ELLH2M4M.js +117 -0
  38. package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-EVDC2P4K.js} +8 -7
  39. package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-IJJZHGEI.js} +8 -7
  40. package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-YSKB5GVB.js} +12 -7
  41. package/chunks/{chunk-2TRNCJK4.js → chunk-27ONXAFY.js} +1 -1
  42. package/chunks/{chunk-OVH5Y7KS.js → chunk-2CRNTW2B.js} +19 -3
  43. package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
  44. package/chunks/{chunk-DB2OKNTU.js → chunk-2FN2HNTI.js} +2 -2
  45. package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
  46. package/chunks/{chunk-QJHPWLZC.js → chunk-2MHGD7EE.js} +1 -1
  47. package/chunks/{chunk-BMCSKS37.js → chunk-2NCVUT3C.js} +6 -6
  48. package/chunks/{chunk-A5F2YNO6.js → chunk-2NNTE2ED.js} +245 -10
  49. package/chunks/{chunk-Z3JMO2CH.js → chunk-2SERYG4T.js} +1 -1
  50. package/chunks/{chunk-4J7OPYNS.js → chunk-2YDYDDE2.js} +6 -6
  51. package/chunks/{chunk-PXOJLJ5W.js → chunk-2YEZNBSD.js} +333 -184
  52. package/chunks/{chunk-UU4WC7DK.js → chunk-2ZV3CZKI.js} +82 -12
  53. package/chunks/{chunk-SE55HQGF.js → chunk-3B5DCAQU.js} +74 -52
  54. package/chunks/{chunk-UIRLQ3N7.js → chunk-3BV7TZNQ.js} +3 -3
  55. package/chunks/{chunk-2Z6LSQMF.js → chunk-3FSBMAYD.js} +1 -1
  56. package/chunks/{chunk-DJEHYM4H.js → chunk-3UZCLCXR.js} +3 -3
  57. package/chunks/{chunk-WWUSHZ7M.js → chunk-43C2II2G.js} +5 -5
  58. package/chunks/{chunk-2GXYDNXP.js → chunk-47SIHHPL.js} +8 -8
  59. package/chunks/{chunk-PHJJ3RVO.js → chunk-4DCP3362.js} +7 -15
  60. package/chunks/chunk-4K7NQDCG.js +104 -0
  61. package/chunks/{chunk-UZPYR3EV.js → chunk-4TPAG3O7.js} +1 -1
  62. package/chunks/{chunk-BEGIBJAZ.js → chunk-5CI4AXDD.js} +4 -4
  63. package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
  64. package/chunks/{chunk-7HFULI45.js → chunk-5MK32KJV.js} +3 -3
  65. package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
  66. package/chunks/{chunk-IBJ5S45N.js → chunk-5T4LWWNX.js} +2 -2
  67. package/chunks/{chunk-VUMLT7E5.js → chunk-5Y2JCJAH.js} +2 -2
  68. package/chunks/{chunk-YZBDKFRQ.js → chunk-5ZYZPDDF.js} +993 -895
  69. package/chunks/{chunk-2A4C2MEG.js → chunk-62PXFOK4.js} +35 -12
  70. package/chunks/{chunk-IIWGSX4L.js → chunk-6E4WHQJV.js} +1 -1
  71. package/chunks/{chunk-6PCOVQO2.js → chunk-6HTMIKXZ.js} +8 -8
  72. package/chunks/{chunk-RDG44S5I.js → chunk-6KS24S3X.js} +2 -2
  73. package/chunks/{chunk-GAHYKJPV.js → chunk-6US7BF3G.js} +7 -59
  74. package/chunks/{chunk-MHG6NDS6.js → chunk-6YAR6ZU3.js} +2 -2
  75. package/chunks/{chunk-3CLIDIVQ.js → chunk-73WFGVIZ.js} +3 -3
  76. package/chunks/{chunk-ZZUVC6RI.js → chunk-76WGY6LW.js} +3 -3
  77. package/chunks/{chunk-XLDFW44M.js → chunk-77TOMRBG.js} +3 -3
  78. package/chunks/{chunk-PDL6LKB5.js → chunk-7AS7QX72.js} +1 -1
  79. package/chunks/{chunk-ND7NOI4P.js → chunk-7CWEZQ6T.js} +0 -15
  80. package/chunks/{chunk-DWCKACFL.js → chunk-7DPKPBOQ.js} +2 -2
  81. package/chunks/{chunk-45NQKMYB.js → chunk-7JPW6IYH.js} +1 -1
  82. package/chunks/{chunk-HDKCKCYO.js → chunk-7QGEJI7M.js} +1 -1
  83. package/chunks/{chunk-S4C4JJKE.js → chunk-A7X32SCT.js} +5 -5
  84. package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
  85. package/chunks/{chunk-7DYNJFES.js → chunk-AYVIGUUK.js} +6 -1
  86. package/chunks/{chunk-7DMTAQJ6.js → chunk-BDHLBR46.js} +132 -49
  87. package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
  88. package/chunks/{chunk-AP3B7LKD.js → chunk-BKDAF7ES.js} +2 -2
  89. package/chunks/{chunk-B6UBOIFE.js → chunk-BQBUZDDH.js} +14 -11
  90. package/chunks/{chunk-VLRBJ24J.js → chunk-BVE5EMIG.js} +2 -2
  91. package/chunks/{chunk-P47E4SJC.js → chunk-BX2BZPFJ.js} +3 -3
  92. package/chunks/{chunk-OARZJFZX.js → chunk-C4WBKZJT.js} +4 -4
  93. package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
  94. package/chunks/{chunk-URN2JIAQ.js → chunk-CITGRGCM.js} +2 -1
  95. package/chunks/{chunk-WU5E4HMO.js → chunk-CPPYZHBN.js} +1 -1
  96. package/chunks/chunk-DCSAVGDJ.js +20 -0
  97. package/chunks/{chunk-Q54XG7IX.js → chunk-DEYPMJPD.js} +1 -1
  98. package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
  99. package/chunks/{chunk-I432KXWD.js → chunk-DP7LABIB.js} +1 -1
  100. package/chunks/{chunk-36OF5PRW.js → chunk-E4I5MVBR.js} +7 -3
  101. package/chunks/{chunk-AW27A43Y.js → chunk-E55H6BZ7.js} +93 -1
  102. package/chunks/{chunk-K623ENWT.js → chunk-E6FGMDFQ.js} +4 -0
  103. package/chunks/{chunk-5XUTPXQU.js → chunk-EAV3TENS.js} +6 -9
  104. package/chunks/{chunk-LI4YHTQK.js → chunk-EB4VDXNI.js} +1 -1
  105. package/chunks/{chunk-JOLJTKIG.js → chunk-EC5BONC3.js} +1 -1
  106. package/chunks/{chunk-25NESM4G.js → chunk-EEQYTWGU.js} +29 -5
  107. package/chunks/{chunk-4CWDWDL6.js → chunk-EKP3M4RF.js} +1 -1
  108. package/chunks/{chunk-W4CRPSC5.js → chunk-ELY4QVIB.js} +1 -1
  109. package/chunks/{chunk-BB5IMQCV.js → chunk-EMGAVCBZ.js} +2 -2
  110. package/chunks/chunk-FBX2SDQ4.js +48 -0
  111. package/chunks/{chunk-C72BXMJ5.js → chunk-FJWICLG7.js} +1 -1
  112. package/chunks/{chunk-6FRJEE2S.js → chunk-FK4H3V6S.js} +5 -5
  113. package/chunks/{chunk-LDGWX737.js → chunk-FN5C6C7G.js} +160 -59
  114. package/chunks/{chunk-3ZFJUBTP.js → chunk-FPH6TXD3.js} +1 -1
  115. package/chunks/{chunk-WRT324N6.js → chunk-FVDQ5E67.js} +3 -3
  116. package/chunks/{chunk-VFACN2CE.js → chunk-GNMJNDZE.js} +1 -1
  117. package/chunks/{chunk-FVBVJEBG.js → chunk-GNRVKN76.js} +10 -8
  118. package/chunks/{chunk-PZRUV52H.js → chunk-GTUKW3I6.js} +20 -2
  119. package/chunks/chunk-GYTKQYDB.js +23 -0
  120. package/chunks/{chunk-VMJL7RH6.js → chunk-GZJUCMH4.js} +4 -4
  121. package/chunks/{chunk-MQP3MHWN.js → chunk-HJOWQUE2.js} +21 -15
  122. package/chunks/{chunk-ZS5BHEPD.js → chunk-I32QCIK7.js} +1 -1
  123. package/chunks/{chunk-7IV52LTO.js → chunk-I6VVOZDK.js} +2 -2
  124. package/chunks/{chunk-X7V3N6YH.js → chunk-I6YW3T3W.js} +218 -37
  125. package/chunks/{chunk-2E3V7G6Y.js → chunk-ICWGPK23.js} +55 -50
  126. package/chunks/{chunk-SQS55KR4.js → chunk-IJVDHPKD.js} +2 -2
  127. package/chunks/{chunk-QS4ENGVF.js → chunk-IKN3IUJP.js} +9 -8
  128. package/chunks/{chunk-2UZJWSVD.js → chunk-ILPXSKGQ.js} +2 -2
  129. package/chunks/{chunk-ZRYQMWEP.js → chunk-IPQA4SR5.js} +2 -2
  130. package/chunks/{chunk-XYQHT3AW.js → chunk-IRIX323G.js} +2 -2
  131. package/chunks/{chunk-5HJUPACR.js → chunk-J7MLXFC5.js} +2 -2
  132. package/chunks/{chunk-AZF6SME3.js → chunk-JECO75XD.js} +3 -3
  133. package/chunks/chunk-JLGFGPZJ.js +346 -0
  134. package/chunks/{chunk-WZDM44SB.js → chunk-JUIJ3FXC.js} +7 -7
  135. package/chunks/{chunk-A6NRNRKE.js → chunk-JVPFTDBK.js} +1 -1
  136. package/chunks/{chunk-2J3OJGTL.js → chunk-K2OJUPOE.js} +1 -21
  137. package/chunks/{chunk-GHY5OIYP.js → chunk-K63NK3KL.js} +13 -13
  138. package/chunks/{chunk-7JBHIQS2.js → chunk-KCOXDRQL.js} +7 -13
  139. package/chunks/{chunk-6NFAEG54.js → chunk-KOJ6MHD5.js} +24 -13
  140. package/chunks/{chunk-WS7PAXXR.js → chunk-KWFP3WV6.js} +18 -13
  141. package/chunks/{chunk-A5F63FEW.js → chunk-L436XFLJ.js} +1 -1
  142. package/chunks/{chunk-KIVGVFMM.js → chunk-LI2HEMKO.js} +16 -4
  143. package/chunks/{chunk-GIWB5QLV.js → chunk-LJP2BBMK.js} +4 -4
  144. package/chunks/{create-sub-session-XBCVGNFU.js → chunk-LRKMQPMD.js} +4 -6
  145. package/chunks/{chunk-6UQSU7CQ.js → chunk-MDZO5V2O.js} +58 -107
  146. package/chunks/{chunk-AO4M6NMD.js → chunk-MW5AHWOZ.js} +60 -20
  147. package/chunks/{chunk-FYZMB6DB.js → chunk-MYLXL7F6.js} +11 -11
  148. package/chunks/{chunk-ZLCT4C5A.js → chunk-MZS7GEC7.js} +1 -1
  149. package/chunks/{chunk-VEND4KA4.js → chunk-NER3H7PI.js} +1 -1
  150. package/chunks/{chunk-AVCCKIZ6.js → chunk-NVK4HJYQ.js} +1 -1
  151. package/chunks/{chunk-MPHLIJYL.js → chunk-NY3IJYAV.js} +14 -8
  152. package/chunks/{chunk-XZJKSETB.js → chunk-O3BUXIPM.js} +3 -3
  153. package/chunks/{chunk-4XPSVIED.js → chunk-O5YGAEQS.js} +6 -6
  154. package/chunks/{chunk-NW35NVFN.js → chunk-ODXCSIH5.js} +4 -4
  155. package/chunks/{chunk-5XHAOUWD.js → chunk-OI2DR6QB.js} +3 -3
  156. package/chunks/{chunk-BUGYW6FB.js → chunk-OQ6LTSX3.js} +1 -1
  157. package/chunks/{chunk-J5ZDDUKM.js → chunk-OT26ITEY.js} +4 -4
  158. package/chunks/{chunk-EFB657PR.js → chunk-OX44MOAN.js} +3 -3
  159. package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
  160. package/chunks/{chunk-4F5WV4RF.js → chunk-PAJGKZAA.js} +281 -10
  161. package/chunks/{chunk-HIK2OF33.js → chunk-PVBT5QPD.js} +1 -1
  162. package/chunks/chunk-QHMLYMMS.js +32 -0
  163. package/chunks/{chunk-U2UYQMM6.js → chunk-R2ZJH3FV.js} +3 -3
  164. package/chunks/{chunk-K52PZNU4.js → chunk-RRKNX553.js} +2 -2
  165. package/chunks/chunk-RXFQM6FQ.js +42 -0
  166. package/chunks/{chunk-SJ4HB27T.js → chunk-SDVF6A42.js} +3 -3
  167. package/chunks/{chunk-TBVSALA3.js → chunk-SKNVVYIJ.js} +3 -3
  168. package/chunks/{chunk-JGUBDRBC.js → chunk-SLEWBQWM.js} +3 -3
  169. package/chunks/{chunk-ZRFUT5VV.js → chunk-SM7ZVKTF.js} +7 -7
  170. package/chunks/{chunk-UUQFJILB.js → chunk-SQPOJ4ZI.js} +15 -3
  171. package/chunks/{chunk-RPJQ3O4M.js → chunk-SRGENTPF.js} +31 -41
  172. package/chunks/{chunk-ISJMN3ML.js → chunk-T2CRBIDJ.js} +1 -1
  173. package/chunks/{chunk-MZKWFWVG.js → chunk-T2HMXHYA.js} +6 -6
  174. package/chunks/{chunk-FEMQ6Y7W.js → chunk-T6OODF2U.js} +47 -126
  175. package/chunks/{chunk-VYC7XFYV.js → chunk-TKO4TLT6.js} +5 -5
  176. package/chunks/{chunk-KVGR4MCF.js → chunk-TOF4UZHH.js} +3 -3
  177. package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
  178. package/chunks/{chunk-7NBVNAJJ.js → chunk-UCSV2IZW.js} +3 -3
  179. package/chunks/{chunk-FDD2IUEL.js → chunk-UX3IFLJM.js} +229 -21
  180. package/chunks/{chunk-YDJRMQU4.js → chunk-V3GINY6K.js} +3 -3
  181. package/chunks/{chunk-XL5K4SVK.js → chunk-VL4YX3FH.js} +1 -1
  182. package/chunks/{chunk-62JOGZL5.js → chunk-VMDURMFY.js} +199 -87
  183. package/chunks/{chunk-OE52YHCZ.js → chunk-W2WRNJKX.js} +11 -11
  184. package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
  185. package/chunks/{chunk-IWOWEENB.js → chunk-WBT3STGU.js} +385 -25
  186. package/chunks/{chunk-S3G6YFQC.js → chunk-WEGXPP5E.js} +1 -1
  187. package/chunks/{chunk-RDQ7QB4Y.js → chunk-XJS54K4A.js} +2 -2
  188. package/chunks/{chunk-L4HVF7LM.js → chunk-XNXWEGKB.js} +3 -3
  189. package/chunks/{chunk-T6XLJRQY.js → chunk-XYX474JQ.js} +36509 -5182
  190. package/chunks/{chunk-F6WFNA7U.js → chunk-XZA32HII.js} +3 -6
  191. package/chunks/{chunk-NUGZAFR2.js → chunk-ZEADBZLO.js} +147 -6
  192. package/chunks/chunk-ZELCTN6Y.js +29 -0
  193. package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
  194. package/chunks/{chunk-IOSEW6KP.js → chunk-ZJG323IA.js} +5 -4
  195. package/chunks/{chunk-VSNPOSDN.js → chunk-ZKAZP2ZG.js} +107 -12
  196. package/chunks/{chunk-YMVFIYHV.js → chunk-ZLTEQYNC.js} +2 -2
  197. package/chunks/{chunk-O5BDEWBC.js → chunk-ZWKGZB2K.js} +3 -3
  198. package/chunks/{chunk-6QSA4JHL.js → chunk-ZXDM7DYV.js} +2772 -814
  199. package/chunks/chunk-ZYNTSXWK.js +32 -0
  200. package/chunks/config-utils-7M6PCTLT.js +113 -0
  201. package/chunks/contextCommand-G4QG3TW6.js +108 -0
  202. package/chunks/{core-runtime-CES6JSVV.js → core-runtime-PKNQ63VL.js} +63 -58
  203. package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-PLGPY6TV.js} +60 -58
  204. package/chunks/create-sub-session-RVHSWVAP.js +17 -0
  205. package/chunks/{cron-create-IKA56DAF.js → cron-create-IJGVR5R2.js} +4 -4
  206. package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-4N5BI6GL.js} +4 -4
  207. package/chunks/{cron-list-QBFGAMP7.js → cron-list-2CATIPUX.js} +4 -4
  208. package/chunks/{daemon-RZZUPGOJ.js → daemon-NAYK4XXU.js} +51 -24
  209. package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-LDBJXH2U.js} +338 -92
  210. package/chunks/daemon-status-provider-F5FEHVVG.js +118 -0
  211. package/chunks/daemon-trust-policy-C6YTU5CQ.js +114 -0
  212. package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-IGEJPHQ4.js} +68 -66
  213. package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
  214. package/chunks/deferred-core-runtime-GHT3GDOR.js +116 -0
  215. package/chunks/{display-image-OEJMJV3S.js → display-image-DR55LL6M.js} +5 -5
  216. package/chunks/dist-4Q7NTUNB.js +2512 -0
  217. package/chunks/{dist-ESS34DHC.js → dist-6H6RZ5H6.js} +2 -2
  218. package/chunks/{dist-LZO24N3E.js → dist-7CKN54NL.js} +1 -1
  219. package/chunks/{dist-5EV2G6MC.js → dist-DJBNNPLN.js} +1 -1
  220. package/chunks/{dist-J6P3C52Z.js → dist-FVJZSIO4.js} +28 -7
  221. package/chunks/{dist-K7IQB53U.js → dist-SATKXKUR.js} +1 -1
  222. package/chunks/{dist-ES6HNUW2.js → dist-TJUDJTCB.js} +246 -17
  223. package/chunks/{dist-VVQBOKDH.js → dist-UQUFZDIY.js} +1 -1
  224. package/chunks/{dist-2OG3PGKO.js → dist-ZBVOXSKF.js} +3 -3
  225. package/chunks/earlyInputCapture-HOSJTLWP.js +109 -0
  226. package/chunks/{edit-A2633SLR.js → edit-KSPVUEAS.js} +48 -48
  227. package/chunks/{en-3RHLPITS.js → en-6MDBWMTG.js} +3 -0
  228. package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-UOZ6ZTP7.js} +7 -8
  229. package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-DZTABSKN.js} +47 -47
  230. package/chunks/environment-JXOSW25V.js +131 -0
  231. package/chunks/errors-IOXFDE4J.js +115 -0
  232. package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-G2QATUCV.js} +7 -8
  233. package/chunks/exitPlanMode-PZG4FXRB.js +85 -0
  234. package/chunks/{fast-path-3AVP3G35.js → fast-path-EBS7NAVL.js} +28 -7
  235. package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
  236. package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
  237. package/chunks/{gemini-7PVQWHTH.js → gemini-JELEKOVS.js} +129 -123
  238. package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-I2CKP7XI.js} +16 -13
  239. package/chunks/{glob-7YGXE6OV.js → glob-TDVEVPQZ.js} +47 -47
  240. package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-CNVXMSZD.js} +72 -28
  241. package/chunks/{grep-6DV6LTON.js → grep-3NLSS32D.js} +6 -6
  242. package/chunks/handleAutoUpdate-AWAGHKOX.js +111 -0
  243. package/chunks/i18n-CYA25C5F.js +126 -0
  244. package/chunks/{image-gen-7CSCJ73T.js → image-gen-63NN2H5N.js} +9 -11
  245. package/chunks/initializer-JD2FLNLO.js +115 -0
  246. package/chunks/installationInfo-N3DCWVWR.js +109 -0
  247. package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
  248. package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-3MGFRYGM.js} +2 -2
  249. package/chunks/list-XDQAUET5.js +118 -0
  250. package/chunks/{list-agents-43XUEXJV.js → list-agents-EXRSHIDJ.js} +2 -2
  251. package/chunks/loadedSettingsAdapter-IK7H5JRK.js +112 -0
  252. package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-CZWUAHAI.js} +27 -30
  253. package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XBPB2BRO.js} +5 -5
  254. package/chunks/{ls-CGL2UC3H.js → ls-WFONAND2.js} +4 -4
  255. package/chunks/{lsp-5IKUO5DX.js → lsp-DUKPDUXN.js} +2 -2
  256. package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-54W23SP5.js} +61 -59
  257. package/chunks/mcp-2E7ZLMEE.js +112 -0
  258. package/chunks/{monitor-PXYSGSUN.js → monitor-A4J5QRGJ.js} +47 -47
  259. package/chunks/nonInteractiveCli-ZNDXB62Y.js +185 -0
  260. package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-4ANFZON5.js} +48 -48
  261. package/chunks/open-with-auth-4UI3KHUR.js +55 -0
  262. package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-JCCJJQZC.js} +29 -30
  263. package/chunks/pidfile-DHV2Y7UD.js +113 -0
  264. package/chunks/{processUtils-YK2TDTTU.js → processUtils-JJAR56SO.js} +2 -2
  265. package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +107 -0
  266. package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
  267. package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-5JM44ZSA.js} +53 -59
  268. package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-JIYAWXTW.js} +8 -10
  269. package/chunks/{read-file-2HOD2ATO.js → read-file-N3E5DY7N.js} +13 -14
  270. package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-7A7NFSFL.js} +2 -2
  271. package/chunks/read-package-up-6T6ICKR7.js +13 -0
  272. package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-CPJ4IJSD.js} +4 -5
  273. package/chunks/report-findings-VFM5DENC.js +33 -0
  274. package/chunks/request-shutdown-AXVOFN5C.js +133 -0
  275. package/chunks/resumeHistoryUtils-YQRITQAG.js +120 -0
  276. package/chunks/ripGrep-NEIHKBKB.js +39 -0
  277. package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
  278. package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-IWGPZADI.js} +622 -79
  279. package/chunks/{runtime-J4SPTJRQ.js → runtime-I76HPFUE.js} +73 -71
  280. package/chunks/{scheduler-VRAEZZ4E.js → scheduler-M6YL4K4I.js} +62 -60
  281. package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-XXSKBD2C.js} +5 -5
  282. package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-VPNBLV7I.js} +7 -7
  283. package/chunks/{send-message-J4VT46OI.js → send-message-A2GXDX3B.js} +10 -31
  284. package/chunks/serve-XY5S63GN.js +120 -0
  285. package/chunks/{server-74ONDK62.js → server-TWXRRREO.js} +965 -405
  286. package/chunks/{session-BO6VBWJP.js → session-IT5ZXU7A.js} +151 -140
  287. package/chunks/{settings-35QZNFDG.js → settings-IX5HOOCG.js} +71 -69
  288. package/chunks/shell-LZ55AAJB.js +95 -0
  289. package/chunks/{skill-DKEMQSNJ.js → skill-WSZ53D2R.js} +108 -25
  290. package/chunks/skill-settings-5U7FTJIK.js +120 -0
  291. package/chunks/spawnChannel-TMC6VXGN.js +113 -0
  292. package/chunks/standalone-update-CUYGWTR4.js +120 -0
  293. package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-O6BI2OSA.js} +381 -293
  294. package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-5AJ444QT.js} +3 -3
  295. package/chunks/{task-create-I2H322E4.js → task-create-CDJSOEQD.js} +11 -11
  296. package/chunks/{task-list-3OLIWFTQ.js → task-list-BELMPA75.js} +5 -5
  297. package/chunks/{task-stop-JAUY6MSY.js → task-stop-U3S3KZG2.js} +2 -2
  298. package/chunks/{task-update-B3XO4CPI.js → task-update-77VCFDDZ.js} +11 -11
  299. package/chunks/{team-create-W534PMGX.js → team-create-UF4TMQEH.js} +48 -48
  300. package/chunks/{team-delete-Q7GE7RRI.js → team-delete-YWFXX77L.js} +5 -5
  301. package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-U57NSR6C.js} +47 -47
  302. package/chunks/terminal-image-renderer-DRL3BROJ.js +116 -0
  303. package/chunks/theme-manager-HHJPUDRN.js +104 -0
  304. package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-435EO2CS.js} +4 -4
  305. package/chunks/{tool-search-Y4KL3LRE.js → tool-search-SV35UV72.js} +18 -19
  306. package/chunks/total-session-admission-TQI7TCTL.js +114 -0
  307. package/chunks/trustedFolders-YKK67IP3.js +124 -0
  308. package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-DX7LVA4P.js} +6 -6
  309. package/chunks/updateCheck-6JRTKTUF.js +120 -0
  310. package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +122 -0
  311. package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-B26O4YJP.js} +113 -106
  312. package/chunks/{version-QMDRADXM.js → version-K5D7VJ4B.js} +2 -2
  313. package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-VFHZLLNZ.js} +25 -242
  314. package/chunks/{web-search-JS3E76O6.js → web-search-AQE5A4J5.js} +11 -11
  315. package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
  316. package/chunks/webapi-Z5OM224P.js +4118 -0
  317. package/chunks/{workflow-2FCMBTBZ.js → workflow-XL6AEUZ7.js} +635 -94
  318. package/chunks/workspace-providers-status-H6TG34YV.js +116 -0
  319. package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-I4U3V5LL.js} +1 -1
  320. package/chunks/workspace-registry-2PWNIYNI.js +123 -0
  321. package/chunks/workspace-service-4FGTUJLA.js +131 -0
  322. package/chunks/workspace-skills-status-7VOLUDT6.js +115 -0
  323. package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-GJ466KCE.js} +74 -73
  324. package/chunks/write-file-PWOYCT2K.js +90 -0
  325. package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-MV4FWFB6.js} +3 -0
  326. package/chunks/{zh-3JQ75KFU.js → zh-X3WGU6SI.js} +3 -0
  327. package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-NYJPC3NI.js} +13 -14
  328. package/cli.js +15 -15
  329. package/locales/ca.js +3 -0
  330. package/locales/de.js +1 -0
  331. package/locales/en.js +3 -0
  332. package/locales/fr.js +1 -0
  333. package/locales/ja.js +1 -0
  334. package/locales/pt.js +1 -0
  335. package/locales/ru.js +1 -0
  336. package/locales/zh-TW.js +3 -0
  337. package/locales/zh.js +3 -0
  338. package/package.json +3 -3
  339. package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-yq7z7Anb.js} +1 -1
  340. package/web-shell/assets/{arc-CXKjm86V.js → arc-CbJO0xnT.js} +1 -1
  341. package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-CRh89421.js} +1 -1
  342. package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-C75KAhKv.js} +1 -1
  343. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-BzlMveFB.js} +1 -1
  344. package/web-shell/assets/channel-B3sGR79J.js +1 -0
  345. package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-DA8QDX3a.js} +1 -1
  346. package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-Bgu7gQ7Y.js} +1 -1
  347. package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-BOew7pIK.js} +1 -1
  348. package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-DHx1I-hO.js} +1 -1
  349. package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-SarFW0WU.js} +1 -1
  350. package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-BLzP083Z.js} +1 -1
  351. package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-Bmkv_iKm.js} +1 -1
  352. package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-MPx9r1N2.js} +1 -1
  353. package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-Ck-09rKG.js} +1 -1
  354. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +1 -0
  355. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +1 -0
  356. package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-DWm6lfOG.js} +1 -1
  357. package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DcBUyr5R.js} +1 -1
  358. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-Df8qmd_p.js} +1 -1
  359. package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DDmGspD7.js} +1 -1
  360. package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-BK_qFvbi.js} +1 -1
  361. package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-Uw3AP_bi.js} +1 -1
  362. package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-CJOQKxY7.js} +1 -1
  363. package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-DhdvZna5.js} +1 -1
  364. package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-edQU0nlP.js} +1 -1
  365. package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-4kugBEsO.js} +1 -1
  366. package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-BMkFivWO.js} +1 -1
  367. package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-BM1ea8g-.js} +1 -1
  368. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-CXj_cKRf.js} +1 -1
  369. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-D0nEqwqu.js} +1 -1
  370. package/web-shell/assets/{index-tYXRIPz4.js → index-B6JN54Pd.js} +1 -1
  371. package/web-shell/assets/{index-BN_m_uHJ.css → index-C-XlQn24.css} +1 -1
  372. package/web-shell/assets/index-DLjXM0dn.js +1860 -0
  373. package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-DF7aGGbQ.js} +1 -1
  374. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CZYNX1lL.js} +1 -1
  375. package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CvrqMUz1.js} +1 -1
  376. package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-BZNJQZBj.js} +1 -1
  377. package/web-shell/assets/{layout-O2uHVkPd.js → layout-Bf83x7D6.js} +1 -1
  378. package/web-shell/assets/{linear-BVqYgjSc.js → linear-Bkc3ES2f.js} +1 -1
  379. package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-C6xuovwz.js} +6 -6
  380. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-DzH6gVRg.js} +1 -1
  381. package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-DCvLh2fa.js} +1 -1
  382. package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-BtjVlx_6.js} +1 -1
  383. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-IbroqxFe.js} +1 -1
  384. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-BvMykiWW.js} +1 -1
  385. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-D-HHMyrh.js} +1 -1
  386. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-C0XXhB6d.js} +1 -1
  387. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DseAXj5d.js} +1 -1
  388. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-Cek2EweK.js} +1 -1
  389. package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-yLv8wafW.js} +1 -1
  390. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +1 -0
  391. package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-Cwz-opvE.js} +1 -1
  392. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +8 -0
  393. package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-BJuFD7OG.js} +1 -1
  394. package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-CNAavdoV.js} +1 -1
  395. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-DaIjAidq.js} +1 -1
  396. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-DkcQXjTy.js} +1 -1
  397. package/web-shell/index.html +19 -4
  398. package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
  399. package/chunks/agent-BFE3DQM3.js +0 -93
  400. package/chunks/agent-headless-LLVKZZ4P.js +0 -87
  401. package/chunks/bridge-EBYO4SYM.js +0 -118
  402. package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
  403. package/chunks/chunk-AXMWHKXA.js +0 -42
  404. package/chunks/chunk-IO257NUD.js +0 -623
  405. package/chunks/chunk-YHC2EYYG.js +0 -125
  406. package/chunks/computer-use-EGPWFEX6.js +0 -2142
  407. package/chunks/config-utils-WZ43VOBS.js +0 -25
  408. package/chunks/contextCommand-5DSEQI6S.js +0 -106
  409. package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
  410. package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
  411. package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
  412. package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
  413. package/chunks/environment-WUPHLPKZ.js +0 -127
  414. package/chunks/errors-WPMPVIAT.js +0 -113
  415. package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
  416. package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
  417. package/chunks/i18n-C562S6KN.js +0 -124
  418. package/chunks/initializer-7YPGOFP4.js +0 -113
  419. package/chunks/installationInfo-ARU5Q2H7.js +0 -107
  420. package/chunks/list-KTSK275C.js +0 -116
  421. package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
  422. package/chunks/mcp-6ONTVPAY.js +0 -110
  423. package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
  424. package/chunks/pidfile-IO7ALSZF.js +0 -111
  425. package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
  426. package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
  427. package/chunks/ripGrep-E7P6K4QR.js +0 -40
  428. package/chunks/serve-KEAWV4TI.js +0 -118
  429. package/chunks/shell-H6K63WG3.js +0 -95
  430. package/chunks/skill-settings-TCKLXIXM.js +0 -118
  431. package/chunks/spawnChannel-2K6NKWM5.js +0 -111
  432. package/chunks/standalone-update-LSCGOEFP.js +0 -118
  433. package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
  434. package/chunks/theme-manager-6B47ZPIF.js +0 -102
  435. package/chunks/total-session-admission-NSCFWGJH.js +0 -113
  436. package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
  437. package/chunks/updateCheck-EOVLHD4T.js +0 -118
  438. package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
  439. package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
  440. package/chunks/workspace-registry-BQISXT6Y.js +0 -122
  441. package/chunks/workspace-service-LLY6HCUC.js +0 -129
  442. package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
  443. package/chunks/write-file-EJHU2Z3E.js +0 -90
  444. package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
  445. package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
  446. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
  447. package/web-shell/assets/index-DrlJu79f.js +0 -1792
  448. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
  449. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
@@ -6,6 +6,9 @@ import {
6
6
  import {
7
7
  RUNTIME_STARTUP_CANCELLED_MESSAGE
8
8
  } from "./chunk-QUPXZXLV.js";
9
+ import {
10
+ resolveServeToken
11
+ } from "./chunk-ZELCTN6Y.js";
9
12
  import {
10
13
  ACCESS_LOG_CONTROLLER_LOCAL,
11
14
  CAPABILITIES_SCHEMA_VERSION,
@@ -37,28 +40,23 @@ import {
37
40
  resolveAcpHttpEnabled,
38
41
  setDeferredRuntimeRequestTiming,
39
42
  toDaemonStatusMemoryLimits
40
- } from "./chunk-UUQFJILB.js";
43
+ } from "./chunk-SQPOJ4ZI.js";
41
44
  import "./chunk-VGHZT6JR.js";
42
45
  import {
43
- isLoopbackBind,
44
46
  normalizeSessionIdForLookup
45
- } from "./chunk-TQOF5KBL.js";
47
+ } from "./chunk-ZEZKIS2K.js";
48
+ import {
49
+ isLoopbackBind
50
+ } from "./chunk-RXFQM6FQ.js";
46
51
  import {
47
52
  formatMemoryBudgetStderr,
48
53
  resolveDaemonMemoryBudget,
49
54
  serveJournalGrowthPoolMb
50
55
  } from "./chunk-UXEO7E3V.js";
51
56
  import "./chunk-NYWWQ437.js";
52
- import {
53
- require_express,
54
- resolveWebShellDir
55
- } from "./chunk-O5Z7EB6Y.js";
56
57
  import {
57
58
  resolveSessionRestoreTimeoutMs
58
59
  } from "./chunk-4JRM2BSM.js";
59
- import {
60
- LIVE_HOST_PROTOCOL_VERSION
61
- } from "./chunk-NKLP3DCK.js";
62
60
  import {
63
61
  DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
64
62
  DEFAULT_MAX_JOURNAL_BYTES,
@@ -68,41 +66,63 @@ import {
68
66
  normalizeMaxJournalBytes,
69
67
  normalizeMaxJournalEvents
70
68
  } from "./chunk-WCCLLK7X.js";
71
- import "./chunk-HMJ2P3SV.js";
69
+ import {
70
+ require_express
71
+ } from "./chunk-AYHQZBJ4.js";
72
+ import {
73
+ resolveWebShellDir
74
+ } from "./chunk-FBX2SDQ4.js";
72
75
  import {
73
76
  resolveChannelCwd
74
- } from "./chunk-45NQKMYB.js";
77
+ } from "./chunk-7JPW6IYH.js";
78
+ import {
79
+ LIVE_HOST_PROTOCOL_VERSION
80
+ } from "./chunk-NKLP3DCK.js";
81
+ import "./chunk-K6KS3LTN.js";
82
+ import "./chunk-HMJ2P3SV.js";
83
+ import "./chunk-7E7UCJHS.js";
84
+ import {
85
+ consumeServeFastPathRejectedLoaderKeys,
86
+ loadServeFastPathSettings,
87
+ preResolveServeFastPathHomeEnvOverrides
88
+ } from "./chunk-TWSKM647.js";
75
89
  import {
76
90
  MAX_REGISTERED_WORKSPACES,
77
91
  resolveWorkspaceInputs,
78
92
  workspaceRegistrationId
79
- } from "./chunk-BUGYW6FB.js";
80
- import "./chunk-IOSEW6KP.js";
93
+ } from "./chunk-OQ6LTSX3.js";
94
+ import "./chunk-ZJG323IA.js";
81
95
  import {
82
96
  LOAD_REPLAY_META_KEY
83
- } from "./chunk-LURJYO2T.js";
97
+ } from "./chunk-OZ6KS6KW.js";
84
98
  import "./chunk-624NHDGB.js";
85
99
  import {
86
100
  canonicalizeWorkspace,
87
101
  translateAndCheckAbsoluteWorkspacePath
88
102
  } from "./chunk-6PLDPT2C.js";
89
- import "./chunk-4F5WV4RF.js";
103
+ import {
104
+ ExtraCaInspectionError,
105
+ loadableCertificates
106
+ } from "./chunk-PAJGKZAA.js";
90
107
  import "./chunk-FYJ7W2PI.js";
91
108
  import "./chunk-Z7B6SRPM.js";
92
109
  import {
93
110
  ChannelDeliveryError,
94
111
  ChannelWebhookEnqueueError,
95
- QWEN_SERVER_TOKEN_ENV,
96
112
  isChannelDeliveryError
97
- } from "./chunk-ND7NOI4P.js";
113
+ } from "./chunk-7CWEZQ6T.js";
98
114
  import {
99
115
  normalizeWorkerDiagnostic,
100
116
  sanitizeWorkerDiagnostic
101
- } from "./chunk-A6NRNRKE.js";
117
+ } from "./chunk-JVPFTDBK.js";
118
+ import {
119
+ QWEN_SERVER_TOKEN_ENV
120
+ } from "./chunk-GYTKQYDB.js";
102
121
  import {
103
122
  channelSelectionNames
104
123
  } from "./chunk-ALMR3E6Q.js";
105
124
  import "./chunk-UDG5EZJI.js";
125
+ import "./chunk-M5GB774H.js";
106
126
  import {
107
127
  EXTERNAL_TOOL_GUARD_PROVIDER_ATTACHED_VALUE,
108
128
  EXTERNAL_TOOL_GUARD_REQUIRED_VALUE,
@@ -110,21 +130,13 @@ import {
110
130
  PRIVATE_EXTERNAL_TOOL_GUARD_ENV,
111
131
  PRIVATE_EXTERNAL_TOOL_GUARD_PROVIDER_ENV
112
132
  } from "./chunk-3VUENPWF.js";
113
- import "./chunk-M5GB774H.js";
114
133
  import {
115
134
  MAX_DAEMON_WORKSPACES
116
135
  } from "./chunk-5HBA2Z7V.js";
117
- import "./chunk-K6KS3LTN.js";
118
- import "./chunk-7E7UCJHS.js";
119
136
  import {
120
137
  sanitizeLogText
121
- } from "./chunk-AW27A43Y.js";
138
+ } from "./chunk-E55H6BZ7.js";
122
139
  import "./chunk-IW6RQPQB.js";
123
- import {
124
- consumeServeFastPathRejectedLoaderKeys,
125
- loadServeFastPathSettings,
126
- preResolveServeFastPathHomeEnvOverrides
127
- } from "./chunk-LD5VIJ7S.js";
128
140
  import "./chunk-GOXKNSDZ.js";
129
141
  import {
130
142
  getGlobalQwenDirLite,
@@ -135,20 +147,20 @@ import {
135
147
  clearLoaderKeyRejectionReporterIfCurrent,
136
148
  scrubInheritedLoaderEnv,
137
149
  setLoaderKeyRejectionReporter
138
- } from "./chunk-CXJHQVEK.js";
150
+ } from "./chunk-5PA6UEYA.js";
139
151
  import {
140
152
  getCliVersion
141
- } from "./chunk-RDG44S5I.js";
142
- import "./chunk-YLFLHKDL.js";
153
+ } from "./chunk-6KS24S3X.js";
154
+ import "./chunk-W3N5XAZ6.js";
143
155
  import "./chunk-NPQ5ZKRP.js";
144
156
  import {
145
157
  isWithinRoot
146
158
  } from "./chunk-MR3PXB6E.js";
147
159
  import "./chunk-LJZSMWOH.js";
148
160
  import "./chunk-GOFAQQZA.js";
161
+ import "./chunk-5M6IDOMF.js";
149
162
  import "./chunk-TWPJO254.js";
150
163
  import "./chunk-CQ35AJ4Z.js";
151
- import "./chunk-5M6IDOMF.js";
152
164
  import {
153
165
  require_proper_lockfile
154
166
  } from "./chunk-MLXTMF7H.js";
@@ -182,9 +194,11 @@ import {
182
194
  init_esbuild_shims();
183
195
  var import_express = __toESM(require_express(), 1);
184
196
  import { X509Certificate, createHash as createHash3, timingSafeEqual } from "node:crypto";
197
+ import { execFile } from "node:child_process";
185
198
  import * as fs from "node:fs";
186
199
  import { createServer } from "node:http";
187
200
  import * as https from "node:https";
201
+ import { isIP } from "node:net";
188
202
  import * as path from "node:path";
189
203
  import * as os from "node:os";
190
204
  import { monitorEventLoopDelay, performance as performance2 } from "node:perf_hooks";
@@ -3273,14 +3287,453 @@ function workspaceRuntimeEffectiveEnv(runtime, daemonEnv) {
3273
3287
  return runtime.env.effectiveEnv ?? daemonEnv;
3274
3288
  }
3275
3289
  __name(workspaceRuntimeEffectiveEnv, "workspaceRuntimeEffectiveEnv");
3276
- function formatChannelWorkerDaemonUrl(host, port) {
3290
+ function formatChannelWorkerDaemonUrl(host, port, tls = false) {
3291
+ const scheme = tls ? "https" : "http";
3277
3292
  const normalized = host.trim().toLowerCase();
3278
3293
  if (normalized === "" || normalized === "0.0.0.0" || normalized === "::" || normalized === "[::]") {
3279
- return `http://127.0.0.1:${port}`;
3294
+ return `${scheme}://127.0.0.1:${port}`;
3280
3295
  }
3281
- return `http://${formatHostForUrl(host)}:${port}`;
3296
+ return `${scheme}://${formatHostForUrl(host)}:${port}`;
3282
3297
  }
3283
3298
  __name(formatChannelWorkerDaemonUrl, "formatChannelWorkerDaemonUrl");
3299
+ var WORKER_TLS_TRUST_PROBE = `
3300
+ import { isIP } from 'node:net';
3301
+ import * as tls from 'node:tls';
3302
+ const url = new URL(process.argv[1]);
3303
+ const timeoutMs = Number(process.argv[2]);
3304
+ const hostname = url.hostname.replace(/^\\[|\\]$/g, '');
3305
+ let socket;
3306
+ let settled = false;
3307
+ const finish = (result) => {
3308
+ if (settled) return;
3309
+ settled = true;
3310
+ process.stdout.write(JSON.stringify(result));
3311
+ socket?.destroy();
3312
+ };
3313
+ try {
3314
+ socket = tls.connect({
3315
+ host: hostname,
3316
+ port: Number(url.port || '443'),
3317
+ rejectUnauthorized: true,
3318
+ ...(isIP(hostname) === 0 ? { servername: hostname } : {}),
3319
+ }, () => finish({ ok: true }));
3320
+ socket.once('error', (error) => finish({
3321
+ ok: false,
3322
+ code: error.code ?? 'WORKER_TLS_VERIFY_FAILED',
3323
+ message: error.message,
3324
+ }));
3325
+ socket.setTimeout(timeoutMs, () => finish({
3326
+ ok: false,
3327
+ code: 'WORKER_TLS_VERIFY_TIMEOUT',
3328
+ message: 'TLS verification probe timed out.',
3329
+ }));
3330
+ } catch (error) {
3331
+ finish({
3332
+ ok: false,
3333
+ code: error.code ?? 'WORKER_TLS_VERIFY_FAILED',
3334
+ message: error.message,
3335
+ });
3336
+ }
3337
+ `;
3338
+ async function verifyWorkerTlsTrust(opts) {
3339
+ const timeoutMs = opts.timeoutMs ?? 5e3;
3340
+ return new Promise((resolve4) => {
3341
+ execFile(
3342
+ process.execPath,
3343
+ [
3344
+ "--input-type=module",
3345
+ "--eval",
3346
+ WORKER_TLS_TRUST_PROBE,
3347
+ opts.daemonUrl,
3348
+ String(timeoutMs)
3349
+ ],
3350
+ {
3351
+ env: {
3352
+ ...process.env,
3353
+ NODE_EXTRA_CA_CERTS: opts.caCertPath
3354
+ },
3355
+ encoding: "utf8",
3356
+ timeout: timeoutMs + 1e3
3357
+ },
3358
+ (error, stdout) => {
3359
+ try {
3360
+ const result = JSON.parse(stdout);
3361
+ resolve4(result.ok ? void 0 : result);
3362
+ } catch {
3363
+ const failure = error;
3364
+ resolve4({
3365
+ code: failure?.code != null ? String(failure.code) : "WORKER_TLS_VERIFY_FAILED",
3366
+ message: failure?.message ?? "TLS verification probe failed."
3367
+ });
3368
+ }
3369
+ }
3370
+ );
3371
+ });
3372
+ }
3373
+ __name(verifyWorkerTlsTrust, "verifyWorkerTlsTrust");
3374
+ function describeWorkerTlsTrustGaps(opts) {
3375
+ const chain = parseCertChain(opts.cert);
3376
+ const x509 = bootParsedLeaf(opts.cert);
3377
+ if (!x509) {
3378
+ return [];
3379
+ }
3380
+ const gaps = [];
3381
+ const operatorChain = opts.operatorCaCert ? loadableCertificates(
3382
+ opts.operatorCaCert.toString("utf8"),
3383
+ opts.operatorCaCertSourcePath
3384
+ ) : void 0;
3385
+ const servingBlocks = loadableCertificates(
3386
+ opts.cert.toString("utf8"),
3387
+ opts.certSourcePath
3388
+ );
3389
+ const operatorDiscarded = !servingBlocks && operatorChain !== void 0;
3390
+ const servingChain = servingBlocks === void 0 ? [
3391
+ x509,
3392
+ ...chain.filter(
3393
+ (member) => member.fingerprint256 !== x509.fingerprint256
3394
+ )
3395
+ ] : (
3396
+ // The loader can read blocks out of the file and still not read the
3397
+ // block the daemon SERVES — a leaf exported by `openssl x509
3398
+ // -trustout` carries the `TRUSTED CERTIFICATE` label, which is not one
3399
+ // the loader takes a certificate from, so a `trusted leaf + plain root`
3400
+ // serving file yields `servingBlocks = [root]`. Starting the walk at
3401
+ // that root put it at depth 0, where the leaf-depth exemption below
3402
+ // waives the CA-capability check, and the walk returned anchored with
3403
+ // zero gaps: measured `gaps: []` at boot for a CA:FALSE root
3404
+ // (handshake INVALID_PURPOSE) and for a CA:TRUE root without
3405
+ // keyCertSign (handshake UNSPECIFIED), while `createSecureContext`
3406
+ // accepts the file and the daemon boots green and silent.
3407
+ //
3408
+ // So anchor the walk at the certificate boot parsed, the way the
3409
+ // `servingBlocks === undefined` fallback above already does; the
3410
+ // remaining blocks supply the rest of the chain.
3411
+ servingBlocks.some(
3412
+ (block) => block.fingerprint256 === x509.fingerprint256
3413
+ ) ? servingBlocks : [x509, ...servingBlocks]
3414
+ );
3415
+ const leafHeldByWorkers = servingBlocks !== void 0 && servingBlocks.some((block) => block.fingerprint256 === x509.fingerprint256);
3416
+ const workerTrustStore = operatorChain && servingBlocks ? [...operatorChain, ...servingChain] : servingChain;
3417
+ const anchorPath = walkWorkerAnchorPath(
3418
+ x509,
3419
+ workerTrustStore,
3420
+ // The `servingBlocks === undefined` fallback prepends the leaf too, but
3421
+ // that file already reports its own gap below and the workers receive it
3422
+ // verbatim; only the partial-read case needs the distinction.
3423
+ servingBlocks === void 0 || leafHeldByWorkers
3424
+ );
3425
+ if (opts.operatorCaCertReadError !== void 0) {
3426
+ const servingFallbackAnchors = anchorPath.anchored && servingBlocks !== void 0;
3427
+ gaps.push(
3428
+ `NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" could not be read by the daemon (${opts.operatorCaCertReadError}), so channel workers receive no CA from it \u2014 a root-owned or mode-600 file is the usual cause, and its contents are not the problem. ` + (servingFallbackAnchors ? `--tls-cert "${opts.certPath}" carries an anchor of its own, and that file is what the workers fall back to, so their trust does not rest on this one today \u2014 whatever it was meant to add reaches nobody. Fix that file's permissions or path and restart.` : servingBlocks === void 0 ? `--tls-cert "${opts.certPath}" itself holds no block the workers' loader can read, so their fallback bundle is that file alone and it anchors nothing \u2014 fixing this CA file's permissions changes nothing; re-export the serving file as the gap below describes and restart.` : `Every worker handshake to the daemon will fail UNABLE_TO_VERIFY_LEAF_SIGNATURE unless the issuing CA is already in the workers' default trust store. Fix that file's permissions or path and restart.`)
3429
+ );
3430
+ } else if (opts.operatorCaCert && !operatorChain) {
3431
+ gaps.push(
3432
+ `NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" holds no PEM certificate block Node's loader can read \u2014 every -----BEGIN/END CERTIFICATE----- marker must sit alone on its own line and every block must decode, and a DER file is never read at all. Channel workers therefore receive the daemon cert alone and anchor nothing through this file. Re-export it as PEM and restart.`
3433
+ );
3434
+ }
3435
+ if (!servingBlocks) {
3436
+ gaps.push(
3437
+ `--tls-cert "${opts.certPath}" holds no PEM certificate block Node's loader can read, so ` + (operatorDiscarded ? `the channel workers' bundle cannot be merged: they receive that file alone and NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" is discarded. ` : `the channel workers receive a bundle their loader takes nothing from. `) + `Every worker handshake to the daemon will fail UNABLE_TO_VERIFY_LEAF_SIGNATURE. Re-export --tls-cert as PEM with every -----BEGIN/END CERTIFICATE----- marker alone on its own line and restart.`
3438
+ );
3439
+ }
3440
+ const leafPurposeDefect = tlsServerPurposeDefect(x509);
3441
+ if (leafPurposeDefect) {
3442
+ gaps.push(
3443
+ `--tls-cert "${opts.certPath}" cannot be used as a TLS server certificate because ${leafPurposeDefect}. Every worker handshake to the daemon will fail INVALID_PURPOSE. Reissue the leaf with a TLS-server keyUsage and serverAuth extendedKeyUsage, then restart.`
3444
+ );
3445
+ }
3446
+ if (anchorPath.nonCaTerminator) {
3447
+ const terminatorSubject = anchorPath.nonCaTerminator.subject.replace(
3448
+ /\r?\n/g,
3449
+ ", "
3450
+ );
3451
+ gaps.push(
3452
+ issuerRefusedForKeyUsage(anchorPath.nonCaTerminator) ? `--tls-cert "${opts.certPath}" chains up to "${terminatorSubject}", which is self-signed but whose keyUsage does not include keyCertSign, so OpenSSL refuses to let it issue the certificates below it however its basicConstraints reads. Every worker handshake to the daemon will fail "key usage does not include certificate signing" even though the chain terminates on a self-signed certificate. Reissue that certificate with keyCertSign in its keyUsage and restart \u2014 CA:TRUE alone does not fix it, and no NODE_EXTRA_CA_CERTS can anchor a self-signed certificate through anything but itself.` : `--tls-cert "${opts.certPath}" chains up to "${terminatorSubject}", which is self-signed but is not a CA \u2014 it carries basicConstraints CA:FALSE or, as an X.509 v3 certificate, no basicConstraints at all, and OpenSSL refuses to let it issue the certificates below it, so every worker handshake to the daemon will fail INVALID_PURPOSE ("unsuitable certificate purpose"). Reissue that certificate with CA:TRUE, or point NODE_EXTRA_CA_CERTS at a real CA that anchors the chain, and restart.`
3453
+ );
3454
+ } else if (anchorPath.incapableIssuer) {
3455
+ const keyUsageIsTheCause = issuerRefusedForKeyUsage(
3456
+ anchorPath.incapableIssuer
3457
+ );
3458
+ gaps.push(
3459
+ `--tls-cert "${opts.certPath}" chains through "${anchorPath.incapableIssuer.subject.replace(/\r?\n/g, ", ")}", ` + (keyUsageIsTheCause ? `whose keyUsage does not include keyCertSign, so OpenSSL refuses to let it issue the certificate below it however its basicConstraints reads. Every worker handshake to the daemon will fail with an invalid-CA error even though the chain looks complete, and the issuing CA IS in their bundle. Reissue that intermediate with keyCertSign in its keyUsage and restart \u2014 pointing NODE_EXTRA_CA_CERTS elsewhere cannot fix it.` : `which is not a CA \u2014 it carries basicConstraints CA:FALSE or, as an X.509 v3 certificate, no basicConstraints at all, and OpenSSL refuses to let it issue the certificate below it. Every worker handshake to the daemon will fail INVALID_PURPOSE or INVALID_CA even though the chain looks complete. Reissue that intermediate with CA:TRUE, or point NODE_EXTRA_CA_CERTS at a chain whose intermediates are real CAs, and restart.`)
3460
+ );
3461
+ } else if (anchorPath.pathLengthViolation) {
3462
+ const { cert, constraint } = anchorPath.pathLengthViolation;
3463
+ gaps.push(
3464
+ `--tls-cert "${opts.certPath}" chains through "${cert.subject.replace(/\r?\n/g, ", ")}", whose basicConstraints carries pathlen:${constraint} \u2014 it permits at most ${constraint} intermediate CA${constraint === 1 ? "" : "s"} below it, and this chain has more. Every worker handshake to the daemon will fail PATH_LENGTH_EXCEEDED even though every certificate in the bundle verifies. Reissue that CA with a pathlen that covers the chain, or shorten the chain, and restart.`
3465
+ );
3466
+ } else if (anchorPath.unheldSelfSignedLeaf) {
3467
+ gaps.push(
3468
+ `--tls-cert "${opts.certPath}" serves a self-signed certificate whose own PEM block is not one Node's NODE_EXTRA_CA_CERTS loader takes (a -----BEGIN TRUSTED CERTIFICATE----- block, as \`openssl x509 -trustout\` writes, is the usual cause), so the channel workers never receive that certificate \u2014 and a self-signed certificate verifies only when it is itself in the trust store. The daemon serves it fine, but every worker handshake will fail DEPTH_ZERO_SELF_SIGNED_CERT with nothing logged. Re-export --tls-cert with a plain -----BEGIN CERTIFICATE----- block and restart.`
3469
+ );
3470
+ } else if (!anchorPath.anchored) {
3471
+ gaps.push(
3472
+ `--tls-cert "${opts.certPath}" is issued by another CA (${x509.issuer.replace(/\r?\n/g, ", ")}), not self-signed, and ${!opts.operatorCaCertPath ? `no NODE_EXTRA_CA_CERTS is set` : opts.operatorCaCertReadError !== void 0 ? `NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" could not be read, so whatever it carries reached nobody` : operatorDiscarded ? `NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" was discarded together with the unloadable serving file above, whatever it carries` : `NODE_EXTRA_CA_CERTS "${opts.operatorCaCertPath}" does not carry a certificate that anchors it`}, so nothing in the channel workers' bundle anchors their trust \u2014 every worker handshake to the daemon will fail UNABLE_TO_VERIFY_LEAF_SIGNATURE unless the issuing CA is already in the workers' default trust store. ` + (operatorDiscarded ? `Re-export --tls-cert as described above and restart; NODE_EXTRA_CA_CERTS is not the file to change.` : opts.operatorCaCertReadError !== void 0 ? `Make NODE_EXTRA_CA_CERTS readable by the daemon as described above and restart.` : `Point NODE_EXTRA_CA_CERTS at the issuing CA (for mkcert: "$(mkcert -CAROOT)/rootCA.pem") and restart.`)
3473
+ );
3474
+ }
3475
+ const now = Date.now();
3476
+ for (const member of anchorPath.path) {
3477
+ if (member.fingerprint256 === x509.fingerprint256) continue;
3478
+ const subject = member.subject.replace(/\r?\n/g, ", ");
3479
+ if (member.keyUsage && !member.keyUsage.includes(TLS_SERVER_AUTH_OID)) {
3480
+ gaps.push(
3481
+ `--tls-cert "${opts.certPath}" chains through "${subject}", whose extendedKeyUsage does not include serverAuth \u2014 every worker handshake to the daemon will fail INVALID_PURPOSE. Reissue that chain member with serverAuth in its extendedKeyUsage and restart.`
3482
+ );
3483
+ continue;
3484
+ }
3485
+ if (new Date(member.validTo).getTime() < now) {
3486
+ gaps.push(
3487
+ `--tls-cert "${opts.certPath}" chains through "${subject}", which expired on ${member.validTo} \u2014 every worker handshake to the daemon will fail CERT_HAS_EXPIRED. Renew that chain member and restart.`
3488
+ );
3489
+ } else if (new Date(member.validFrom).getTime() > now) {
3490
+ gaps.push(
3491
+ `--tls-cert "${opts.certPath}" chains through "${subject}", which is not yet valid (validFrom: ${member.validFrom}) \u2014 every worker handshake to the daemon will fail CERT_NOT_YET_VALID. Check that chain member's notBefore date or the system clock.`
3492
+ );
3493
+ }
3494
+ }
3495
+ const host = workerDialHost(opts.daemonUrl);
3496
+ if (host && !certCoversHost(x509, host)) {
3497
+ gaps.push(
3498
+ `--tls-cert "${opts.certPath}" has no subjectAltName covering "${host}", the host channel workers dial \u2014 every worker handshake will fail ERR_TLS_CERT_ALTNAME_INVALID. Reissue the certificate with that host in its SANs and restart.`
3499
+ );
3500
+ }
3501
+ return gaps;
3502
+ }
3503
+ __name(describeWorkerTlsTrustGaps, "describeWorkerTlsTrustGaps");
3504
+ var BASIC_CONSTRAINTS_OID = Buffer.from([85, 29, 19]);
3505
+ var KEY_USAGE_OID = Buffer.from([85, 29, 15]);
3506
+ var KEY_CERT_SIGN_MASK = 4;
3507
+ var TLS_SERVER_KEY_USAGE_MASK = 168;
3508
+ var TLS_SERVER_AUTH_OID = "1.3.6.1.5.5.7.3.1";
3509
+ var VERSION_TAG = 160;
3510
+ var EXTENSIONS_TAG = 163;
3511
+ var SEQUENCE_TAG = 48;
3512
+ var BOOLEAN_TAG = 1;
3513
+ var INTEGER_TAG = 2;
3514
+ function derElementAt(der, at) {
3515
+ const tag = der[at];
3516
+ const header = der[at + 1];
3517
+ if (tag === void 0 || header === void 0) return void 0;
3518
+ let start = at + 2;
3519
+ let length = header & 127;
3520
+ if ((header & 128) !== 0) {
3521
+ if (length === 0 || length > 4) return void 0;
3522
+ let value = 0;
3523
+ for (let index = 0; index < length; index += 1) {
3524
+ const byte = der[start + index];
3525
+ if (byte === void 0) return void 0;
3526
+ value = value * 256 + byte;
3527
+ }
3528
+ start += length;
3529
+ length = value;
3530
+ }
3531
+ const end = start + length;
3532
+ return end <= der.length ? { tag, start, end } : void 0;
3533
+ }
3534
+ __name(derElementAt, "derElementAt");
3535
+ function tbsCertificateOf(cert) {
3536
+ const certificate = derElementAt(cert.raw, 0);
3537
+ if (certificate?.tag !== SEQUENCE_TAG) return void 0;
3538
+ const tbs = derElementAt(cert.raw, certificate.start);
3539
+ return tbs?.tag === SEQUENCE_TAG ? tbs : void 0;
3540
+ }
3541
+ __name(tbsCertificateOf, "tbsCertificateOf");
3542
+ function certificateExtension(cert, oid) {
3543
+ const der = cert.raw;
3544
+ const tbs = tbsCertificateOf(cert);
3545
+ if (!tbs) return void 0;
3546
+ let at = tbs.start;
3547
+ while (at < tbs.end) {
3548
+ const member = derElementAt(der, at);
3549
+ if (!member) return void 0;
3550
+ if (member.tag !== EXTENSIONS_TAG) {
3551
+ at = member.end;
3552
+ continue;
3553
+ }
3554
+ const list = derElementAt(der, member.start);
3555
+ if (list?.tag !== SEQUENCE_TAG) return void 0;
3556
+ let entry = list.start;
3557
+ while (entry < list.end) {
3558
+ const extension = derElementAt(der, entry);
3559
+ if (extension?.tag !== SEQUENCE_TAG) return void 0;
3560
+ const id = derElementAt(der, extension.start);
3561
+ if (!id) return void 0;
3562
+ let valueAt = id.end;
3563
+ const critical = derElementAt(der, valueAt);
3564
+ if (critical?.tag === BOOLEAN_TAG) valueAt = critical.end;
3565
+ const value = derElementAt(der, valueAt);
3566
+ if (!value) return void 0;
3567
+ if (der.subarray(id.start, id.end).equals(oid)) {
3568
+ return der.subarray(value.start, value.end);
3569
+ }
3570
+ entry = extension.end;
3571
+ }
3572
+ return void 0;
3573
+ }
3574
+ return void 0;
3575
+ }
3576
+ __name(certificateExtension, "certificateExtension");
3577
+ function keyUsageAllowsCertSign(der) {
3578
+ const bits = derElementAt(der, 0);
3579
+ if (!bits) return false;
3580
+ const first = der[bits.start + 1];
3581
+ return first !== void 0 && (first & KEY_CERT_SIGN_MASK) !== 0;
3582
+ }
3583
+ __name(keyUsageAllowsCertSign, "keyUsageAllowsCertSign");
3584
+ function tlsServerPurposeDefect(cert) {
3585
+ const keyUsage = certificateExtension(cert, KEY_USAGE_OID);
3586
+ if (keyUsage !== void 0) {
3587
+ const bits = derElementAt(keyUsage, 0);
3588
+ const first = bits ? keyUsage[bits.start + 1] : void 0;
3589
+ if (first === void 0 || (first & TLS_SERVER_KEY_USAGE_MASK) === 0) {
3590
+ return "its keyUsage permits none of digitalSignature, keyEncipherment, or keyAgreement";
3591
+ }
3592
+ }
3593
+ if (cert.keyUsage && !cert.keyUsage.includes(TLS_SERVER_AUTH_OID)) {
3594
+ return "its extendedKeyUsage does not include serverAuth";
3595
+ }
3596
+ return void 0;
3597
+ }
3598
+ __name(tlsServerPurposeDefect, "tlsServerPurposeDefect");
3599
+ function isV1Certificate(cert) {
3600
+ const tbs = tbsCertificateOf(cert);
3601
+ return tbs !== void 0 && cert.raw[tbs.start] !== VERSION_TAG;
3602
+ }
3603
+ __name(isV1Certificate, "isV1Certificate");
3604
+ function cannotIssueCertificates(cert) {
3605
+ const keyUsage = certificateExtension(cert, KEY_USAGE_OID);
3606
+ if (keyUsage !== void 0 && !keyUsageAllowsCertSign(keyUsage)) return true;
3607
+ if (certificateExtension(cert, BASIC_CONSTRAINTS_OID) !== void 0) {
3608
+ return !cert.ca;
3609
+ }
3610
+ return !isV1Certificate(cert) && keyUsage === void 0;
3611
+ }
3612
+ __name(cannotIssueCertificates, "cannotIssueCertificates");
3613
+ function isSelfSignedCert(x509) {
3614
+ if (x509.subject !== x509.issuer) return false;
3615
+ try {
3616
+ return x509.verify(x509.publicKey);
3617
+ } catch {
3618
+ return true;
3619
+ }
3620
+ }
3621
+ __name(isSelfSignedCert, "isSelfSignedCert");
3622
+ var PEM_CERTIFICATE_BLOCK = /-----BEGIN CERTIFICATE-----[^-]*-----END CERTIFICATE-----/g;
3623
+ function parseCertChain(cert) {
3624
+ const blocks = cert.toString("utf8").match(PEM_CERTIFICATE_BLOCK);
3625
+ if (!blocks) {
3626
+ try {
3627
+ return [new X509Certificate(cert)];
3628
+ } catch {
3629
+ return [];
3630
+ }
3631
+ }
3632
+ const chain = [];
3633
+ for (const block of blocks) {
3634
+ try {
3635
+ chain.push(new X509Certificate(block));
3636
+ } catch {
3637
+ }
3638
+ }
3639
+ return chain;
3640
+ }
3641
+ __name(parseCertChain, "parseCertChain");
3642
+ function bootParsedLeaf(cert) {
3643
+ try {
3644
+ return new X509Certificate(cert);
3645
+ } catch {
3646
+ return void 0;
3647
+ }
3648
+ }
3649
+ __name(bootParsedLeaf, "bootParsedLeaf");
3650
+ function certIssuedBy(cert, issuer) {
3651
+ try {
3652
+ return cert.issuer === issuer.subject && cert.verify(issuer.publicKey);
3653
+ } catch {
3654
+ return false;
3655
+ }
3656
+ }
3657
+ __name(certIssuedBy, "certIssuedBy");
3658
+ function issuerRefusedForKeyUsage(cert) {
3659
+ const keyUsage = certificateExtension(cert, KEY_USAGE_OID);
3660
+ return keyUsage !== void 0 && !keyUsageAllowsCertSign(keyUsage);
3661
+ }
3662
+ __name(issuerRefusedForKeyUsage, "issuerRefusedForKeyUsage");
3663
+ function pathLengthConstraint(cert) {
3664
+ const value = certificateExtension(cert, BASIC_CONSTRAINTS_OID);
3665
+ if (!value) return void 0;
3666
+ const sequence = derElementAt(value, 0);
3667
+ if (sequence?.tag !== SEQUENCE_TAG) return void 0;
3668
+ let at = sequence.start;
3669
+ const first = derElementAt(value, at);
3670
+ if (!first) return void 0;
3671
+ if (first.tag === BOOLEAN_TAG) at = first.end;
3672
+ const integer = derElementAt(value, at);
3673
+ if (integer?.tag !== INTEGER_TAG) return void 0;
3674
+ let length = 0;
3675
+ for (let index = integer.start; index < integer.end; index += 1) {
3676
+ const byte = value[index];
3677
+ if (byte === void 0) return void 0;
3678
+ length = length * 256 + byte;
3679
+ }
3680
+ return length;
3681
+ }
3682
+ __name(pathLengthConstraint, "pathLengthConstraint");
3683
+ function walkWorkerAnchorPath(leaf, chain, leafHeldByWorkers = true) {
3684
+ let next = leaf;
3685
+ const walked = /* @__PURE__ */ new Set();
3686
+ const path2 = [];
3687
+ let pathLengthViolation;
3688
+ while (next) {
3689
+ const current = next;
3690
+ path2.push(current);
3691
+ if (path2.length > 1 && pathLengthViolation === void 0) {
3692
+ const constraint = pathLengthConstraint(current);
3693
+ const intermediatesBelow = path2.length - 2;
3694
+ if (constraint !== void 0 && intermediatesBelow > constraint) {
3695
+ pathLengthViolation = { cert: current, constraint };
3696
+ }
3697
+ }
3698
+ if (isSelfSignedCert(current)) {
3699
+ if (path2.length > 1 && cannotIssueCertificates(current)) {
3700
+ return { anchored: false, path: path2, nonCaTerminator: current };
3701
+ }
3702
+ if (path2.length === 1 && !leafHeldByWorkers) {
3703
+ return { anchored: false, path: path2, unheldSelfSignedLeaf: current };
3704
+ }
3705
+ return pathLengthViolation ? { anchored: false, path: path2, pathLengthViolation } : { anchored: true, path: path2 };
3706
+ }
3707
+ walked.add(current.fingerprint256);
3708
+ const issuer = chain.find(
3709
+ (candidate) => !walked.has(candidate.fingerprint256) && certIssuedBy(current, candidate)
3710
+ );
3711
+ if (issuer && !isSelfSignedCert(issuer) && !issuer.ca) {
3712
+ return { anchored: false, path: path2, incapableIssuer: issuer };
3713
+ }
3714
+ next = issuer;
3715
+ }
3716
+ return pathLengthViolation ? { anchored: false, path: path2, pathLengthViolation } : { anchored: false, path: path2 };
3717
+ }
3718
+ __name(walkWorkerAnchorPath, "walkWorkerAnchorPath");
3719
+ function workerDialHost(daemonUrl) {
3720
+ try {
3721
+ const hostname = new URL(daemonUrl).hostname;
3722
+ if (!hostname) return void 0;
3723
+ return hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : hostname;
3724
+ } catch {
3725
+ return void 0;
3726
+ }
3727
+ }
3728
+ __name(workerDialHost, "workerDialHost");
3729
+ function certCoversHost(x509, host) {
3730
+ try {
3731
+ return isIP(host) ? Boolean(x509.checkIP(host)) : Boolean(x509.checkHost(host));
3732
+ } catch {
3733
+ return true;
3734
+ }
3735
+ }
3736
+ __name(certCoversHost, "certCoversHost");
3284
3737
  function extractContextFilename(value) {
3285
3738
  if (typeof value === "string") {
3286
3739
  const trimmed = value.trim();
@@ -3346,12 +3799,12 @@ __name(hasRetryableChannelWorkerShutdownError, "hasRetryableChannelWorkerShutdow
3346
3799
  var channelWorkerRuntimePromise;
3347
3800
  async function loadChannelWorkerRuntime() {
3348
3801
  channelWorkerRuntimePromise ??= Promise.all([
3349
- import("./channel-worker-supervisor-F6I6WSWW.js"),
3350
- import("./pidfile-IO7ALSZF.js"),
3351
- import("./runtime-J4SPTJRQ.js"),
3802
+ import("./channel-worker-supervisor-YSKB5GVB.js"),
3803
+ import("./pidfile-DHV2Y7UD.js"),
3804
+ import("./runtime-I76HPFUE.js"),
3352
3805
  import("./cli-entry-path-4VJ3Y6T2.js"),
3353
- import("./channel-worker-group-BJNMR2MP.js"),
3354
- import("./channel-worker-manager-EMA7CQDJ.js")
3806
+ import("./channel-worker-group-EVDC2P4K.js"),
3807
+ import("./channel-worker-manager-IJJZHGEI.js")
3355
3808
  ]).then(
3356
3809
  ([
3357
3810
  supervisor,
@@ -3362,6 +3815,7 @@ async function loadChannelWorkerRuntime() {
3362
3815
  workerManager
3363
3816
  ]) => ({
3364
3817
  createChannelWorkerSupervisor: supervisor.createChannelWorkerSupervisor,
3818
+ resolveWorkerCaCertPath: supervisor.resolveWorkerCaCertPath,
3365
3819
  channelServicePidfile: pidfile,
3366
3820
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
3367
3821
  createChannelWorkerGroup: workerGroup.createChannelWorkerGroup,
@@ -3456,7 +3910,7 @@ function shouldPreheatBridge(deps) {
3456
3910
  __name(shouldPreheatBridge, "shouldPreheatBridge");
3457
3911
  var coreRuntimePromise;
3458
3912
  function loadCoreRuntime() {
3459
- coreRuntimePromise ??= import("./core-runtime-CES6JSVV.js");
3913
+ coreRuntimePromise ??= import("./core-runtime-PKNQ63VL.js");
3460
3914
  return coreRuntimePromise;
3461
3915
  }
3462
3916
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -3492,10 +3946,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
3492
3946
  var settingsRuntimePromise;
3493
3947
  function loadSettingsRuntimeModules() {
3494
3948
  settingsRuntimePromise ??= Promise.all([
3495
- import("./settings-35QZNFDG.js"),
3496
- import("./environment-WUPHLPKZ.js"),
3497
- import("./loadedSettingsAdapter-F3T2EQ5J.js"),
3498
- import("./trustedFolders-7XMJWGQ3.js")
3949
+ import("./settings-IX5HOOCG.js"),
3950
+ import("./environment-JXOSW25V.js"),
3951
+ import("./loadedSettingsAdapter-IK7H5JRK.js"),
3952
+ import("./trustedFolders-YKK67IP3.js")
3499
3953
  ]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
3500
3954
  settings,
3501
3955
  environment,
@@ -3508,8 +3962,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
3508
3962
  var channelWebhookConfigRuntimePromise;
3509
3963
  function loadChannelWebhookConfigRuntime() {
3510
3964
  channelWebhookConfigRuntimePromise ??= Promise.all([
3511
- import("./runtime-J4SPTJRQ.js"),
3512
- import("./config-utils-WZ43VOBS.js")
3965
+ import("./runtime-I76HPFUE.js"),
3966
+ import("./config-utils-7M6PCTLT.js")
3513
3967
  ]).then(([channelRuntime, configUtils]) => ({
3514
3968
  loadChannelsConfig: channelRuntime.loadChannelsConfig,
3515
3969
  parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
@@ -3535,18 +3989,18 @@ async function loadServeRuntimeModules() {
3535
3989
  workspaceRegistryModule,
3536
3990
  promptLedgerModule
3537
3991
  ] = await Promise.all([
3538
- import("./server-74ONDK62.js"),
3539
- import("./bridge-EBYO4SYM.js"),
3540
- import("./spawnChannel-2K6NKWM5.js"),
3992
+ import("./server-TWXRRREO.js"),
3993
+ import("./bridge-DFX2FFH4.js"),
3994
+ import("./spawnChannel-TMC6VXGN.js"),
3541
3995
  import("./process-registry-PMJOA5CO.js"),
3542
- import("./workspace-service-LLY6HCUC.js"),
3996
+ import("./workspace-service-4FGTUJLA.js"),
3543
3997
  import("./types-WYCFCEHR.js"),
3544
- import("./daemon-status-provider-EYMLPYJU.js"),
3545
- import("./workspace-providers-status-GPGU5YMT.js"),
3546
- import("./workspace-skills-status-L5N2Y3ZP.js"),
3547
- import("./total-session-admission-NSCFWGJH.js"),
3548
- import("./workspace-registry-BQISXT6Y.js"),
3549
- import("./prompt-terminal-ledger-TCE7PMCE.js")
3998
+ import("./daemon-status-provider-F5FEHVVG.js"),
3999
+ import("./workspace-providers-status-H6TG34YV.js"),
4000
+ import("./workspace-skills-status-7VOLUDT6.js"),
4001
+ import("./total-session-admission-TQI7TCTL.js"),
4002
+ import("./workspace-registry-2PWNIYNI.js"),
4003
+ import("./prompt-terminal-ledger-LDZ6QVYA.js")
3550
4004
  ]);
3551
4005
  return {
3552
4006
  createServeApp: serverModule.createServeApp,
@@ -4302,8 +4756,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4302
4756
  loaderEnvScrub.release();
4303
4757
  }, "restoreScrubbedLoaderEnv");
4304
4758
  loggerLifecycle.scrubApplied(restoreScrubbedLoaderEnv);
4305
- const rawToken = optsIn.token ?? process.env[QWEN_SERVER_TOKEN_ENV];
4306
- const token = typeof rawToken === "string" && rawToken.trim().length > 0 ? rawToken.trim() : void 0;
4759
+ const token = resolveServeToken(optsIn.token);
4307
4760
  const channelDeliveryDiagnosticRedaction = {
4308
4761
  workerEnv: daemonRuntimeBaseEnv,
4309
4762
  ...token ? { daemonToken: token } : {}
@@ -4415,6 +4868,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4415
4868
  );
4416
4869
  }
4417
4870
  let tlsOptions;
4871
+ let tlsCertPath;
4418
4872
  if (opts.tlsCert && !opts.tlsKey || !opts.tlsCert && opts.tlsKey) {
4419
4873
  throw new Error(
4420
4874
  `--tls-cert and --tls-key must be provided together (got only --tls-${opts.tlsCert ? "cert" : "key"}).`
@@ -4457,6 +4911,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4457
4911
  );
4458
4912
  }
4459
4913
  tlsOptions = { cert, key };
4914
+ tlsCertPath = path.resolve(opts.tlsCert);
4460
4915
  }
4461
4916
  if (!isLoopbackBind(opts.hostname) && !token) {
4462
4917
  throw new Error(
@@ -4586,7 +5041,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4586
5041
  }
4587
5042
  let workspaceRegistrationStore = deps.workspaceRegistrationStore;
4588
5043
  if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
4589
- const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-SU4EJKSD.js");
5044
+ const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-I4U3V5LL.js");
4590
5045
  workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
4591
5046
  }
4592
5047
  if (workspaceRegistrationStore) {
@@ -4870,7 +5325,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4870
5325
  "qwen serve: required external tool guard handshake succeeded."
4871
5326
  );
4872
5327
  }
4873
- const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-3QY2BQYB.js");
5328
+ const { createDaemonToolGuard } = await import("./daemon-git-worktree-guard-LDBJXH2U.js");
4874
5329
  const daemonToolGuardHandler = createDaemonToolGuard(
4875
5330
  externalToolGuardHandler
4876
5331
  );
@@ -4886,6 +5341,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
4886
5341
  const diagnosticSink = /* @__PURE__ */ __name((line, level) => daemonLog.raw(line, level), "diagnosticSink");
4887
5342
  let actualPort = opts.port;
4888
5343
  const webShellDir = opts.serveWebShell === false ? void 0 : resolveWebShellDir();
5344
+ if (optsIn.requireWebShell && !webShellDir) {
5345
+ throw new Error("--open-with-auth requires built Web Shell assets.");
5346
+ }
4889
5347
  if (opts.serveWebShell !== false) {
4890
5348
  if (!webShellDir) {
4891
5349
  writeStderrLine(
@@ -5206,7 +5664,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5206
5664
  loadCoreRuntime(),
5207
5665
  loadSettingsRuntimeModules(),
5208
5666
  cliVersionPromise,
5209
- import("./daemon-trust-policy-CQYKZ7VO.js")
5667
+ import("./daemon-trust-policy-C6YTU5CQ.js")
5210
5668
  ]);
5211
5669
  cliVersion = resolvedCliVersion;
5212
5670
  settingsRuntime.environment.preResolveHomeEnvOverrides();
@@ -5582,7 +6040,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5582
6040
  resolveSkillSettings,
5583
6041
  skillSettingStrings,
5584
6042
  updateWorkspaceSkillSettingLists
5585
- } = await import("./skill-settings-TCKLXIXM.js");
6043
+ } = await import("./skill-settings-5U7FTJIK.js");
5586
6044
  const fresh = loadSettingsForPersistence(workspace);
5587
6045
  const normalizedName = skillName.trim().toLowerCase();
5588
6046
  const resolved = resolveSkillSettings(fresh);
@@ -5647,7 +6105,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5647
6105
  resolveSkillSettings,
5648
6106
  skillSettingStrings,
5649
6107
  updateWorkspaceSkillSettingLists
5650
- } = await import("./skill-settings-TCKLXIXM.js");
6108
+ } = await import("./skill-settings-5U7FTJIK.js");
5651
6109
  const fresh = loadSettingsForPersistence(workspace);
5652
6110
  const resolved = resolveSkillSettings(fresh);
5653
6111
  const initialDisabled = skillSettingStrings(
@@ -5752,7 +6210,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
5752
6210
  );
5753
6211
  }
5754
6212
  }), "persistSettingsFn");
5755
- const { createSubSessionLauncher } = await import("./create-sub-session-UJTPMVOG.js");
6213
+ const { createSubSessionLauncher } = await import("./create-sub-session-PLGPY6TV.js");
5756
6214
  const subSessionLauncher = createSubSessionLauncher({
5757
6215
  getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
5758
6216
  boundWorkspace,
@@ -6004,6 +6462,27 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6004
6462
  }
6005
6463
  };
6006
6464
  }, "createRuntimeEnvMetadata");
6465
+ const readLiveConversationScheduledTasks = /* @__PURE__ */ __name(async () => {
6466
+ if (!fs.existsSync(liveConversationWorkspace.rootPath)) return [];
6467
+ const { canonicalRoot } = await liveConversationWorkspace.revalidate();
6468
+ let settings;
6469
+ try {
6470
+ settings = settingsRuntime.settings.loadSettings(canonicalRoot, {
6471
+ skipLoadEnvironment: true,
6472
+ skipWorkspaceSettings: false,
6473
+ workspaceTrusted: true
6474
+ });
6475
+ } catch (err) {
6476
+ writeStderrLine(
6477
+ `qwen serve: could not read full settings for Conversations (${err instanceof Error ? err.message : String(err)}); falling back to defaults.`
6478
+ );
6479
+ }
6480
+ const env = createRuntimeEnvMetadata(canonicalRoot, settings, true);
6481
+ return core.Storage.runWithResolvedRuntimeBaseDir(
6482
+ env.sessionRuntimeBaseDir,
6483
+ () => core.readCronTasks(canonicalRoot)
6484
+ );
6485
+ }, "readLiveConversationScheduledTasks");
6007
6486
  const subSessionStoppers = [];
6008
6487
  const subSessionStoppersByRuntime = /* @__PURE__ */ new WeakMap();
6009
6488
  const runtimeCleanupPromises = /* @__PURE__ */ new WeakMap();
@@ -6711,6 +7190,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6711
7190
  const serveAppForRuntimeLifecycle = { current: void 0 };
6712
7191
  const workspaceRuntimeRemoval = {
6713
7192
  async runtimeAdded(runtimeAdded) {
7193
+ const app3 = serveAppForRuntimeLifecycle.current ?? runtimeApp ?? runtimeAppForCleanup;
7194
+ const startScheduledTaskKeepaliveForWorkspace = app3?.locals?.["startScheduledTaskKeepaliveForWorkspace"];
7195
+ startScheduledTaskKeepaliveForWorkspace?.(runtimeAdded);
6714
7196
  if (runtimeAdded.provenance === "live-conversation") return;
6715
7197
  channelWebhookEnvByWorkspace.set(
6716
7198
  runtimeAdded.workspaceCwd,
@@ -6718,9 +7200,6 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6718
7200
  );
6719
7201
  channelWebhookConfigVersion += 1;
6720
7202
  refreshChannelWebhookConfigs?.();
6721
- const app3 = serveAppForRuntimeLifecycle.current ?? runtimeApp ?? runtimeAppForCleanup;
6722
- const startScheduledTaskKeepaliveForWorkspace = app3?.locals?.["startScheduledTaskKeepaliveForWorkspace"];
6723
- startScheduledTaskKeepaliveForWorkspace?.(runtimeAdded);
6724
7203
  if (!channelWorkerManager) return;
6725
7204
  try {
6726
7205
  if (runtimeAdded.trusted) {
@@ -6960,8 +7439,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
6960
7439
  { createChannelManagementService },
6961
7440
  { WorkspaceChannelSettingsStore }
6962
7441
  ] = await Promise.all([
6963
- import("./channel-management-service-IRTT7RNE.js"),
6964
- import("./channel-settings-store-5VP2Y2YM.js")
7442
+ import("./channel-management-service-HXXS3HOZ.js"),
7443
+ import("./channel-settings-store-ELLH2M4M.js")
6965
7444
  ]);
6966
7445
  return createChannelManagementService({
6967
7446
  workspaceCwd: targetRuntime.workspaceCwd,
@@ -7027,6 +7506,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7027
7506
  } : {},
7028
7507
  managedScratchRoot,
7029
7508
  liveConversationWorkspace,
7509
+ readLiveConversationScheduledTasks,
7030
7510
  workspaceRegistrationStore,
7031
7511
  workspaceRuntimeRemoval,
7032
7512
  workspaceTrustHotReloadAvailable,
@@ -7164,8 +7644,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7164
7644
  { createWorkspaceTrustReconciler },
7165
7645
  { createDaemonTrustPolicyMonitor }
7166
7646
  ] = await Promise.all([
7167
- import("./workspace-trust-reconciler-4Y4F7XIX.js"),
7168
- import("./daemon-trust-policy-monitor-TK4K7M63.js")
7647
+ import("./workspace-trust-reconciler-GJ466KCE.js"),
7648
+ import("./daemon-trust-policy-monitor-IGEJPHQ4.js")
7169
7649
  ]);
7170
7650
  const materializationFor = /* @__PURE__ */ __name((entry, snapshot, decision) => {
7171
7651
  const boundWorkspaces2 = entry.primary && decision.targetTrusted ? runtime.resolveBoundWorkspacesFromIdeEnv(
@@ -7360,7 +7840,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7360
7840
  // through (and start the runtime) exactly like the warm app would.
7361
7841
  // Dynamic import keeps web-shell-static out of the serve fast-path
7362
7842
  // static closure (see the import-boundary guards in fast-path.test.ts).
7363
- isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-3NUTRHAH.js").then(
7843
+ isPreAuthRequest: webShellMounted ? (req) => import("./web-shell-static-A6QMUNNV.js").then(
7364
7844
  (webShellStatic) => webShellStatic.isPreAuthWebShellRequest(req)
7365
7845
  ) : void 0
7366
7846
  });
@@ -7380,7 +7860,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7380
7860
  );
7381
7861
  }
7382
7862
  const channelValidationSettingsRuntime = opts.channelSelection ? await loadSettingsRuntimeModules() : void 0;
7383
- const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-CQYKZ7VO.js") : void 0;
7863
+ const channelValidationTrustPolicy = opts.channelSelection ? await import("./daemon-trust-policy-C6YTU5CQ.js") : void 0;
7384
7864
  const channelValidationTrustSnapshot = channelValidationTrustPolicy ? await channelValidationTrustPolicy.readDaemonTrustPolicySnapshot() : void 0;
7385
7865
  const resolveChannelWorkspaceGroupsAtListen = /* @__PURE__ */ __name(() => {
7386
7866
  if (!opts.channelSelection || !channelValidationSettingsRuntime || !channelRuntime) {
@@ -7933,6 +8413,69 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7933
8413
  );
7934
8414
  }
7935
8415
  const workerRuntime = await ensureChannelRuntime();
8416
+ const workerDaemonUrl = formatChannelWorkerDaemonUrl(
8417
+ opts.hostname,
8418
+ actualPort,
8419
+ tlsOptions !== void 0
8420
+ );
8421
+ if (tlsOptions && tlsCertPath && process.env["NODE_TLS_REJECT_UNAUTHORIZED"] === "0") {
8422
+ daemonLog.warn(
8423
+ `NODE_TLS_REJECT_UNAUTHORIZED=0 disables certificate verification for channel workers; skipping the worker TLS trust check.`
8424
+ );
8425
+ } else if (tlsOptions && tlsCertPath) {
8426
+ const operatorCaCertPath = process.env["NODE_EXTRA_CA_CERTS"];
8427
+ let operatorCaCert;
8428
+ let operatorCaCertReadError;
8429
+ if (operatorCaCertPath) {
8430
+ try {
8431
+ operatorCaCert = fs.readFileSync(operatorCaCertPath);
8432
+ } catch (error2) {
8433
+ operatorCaCertReadError = error2?.code ?? "read failed";
8434
+ }
8435
+ }
8436
+ let predictedGaps = [];
8437
+ try {
8438
+ predictedGaps = describeWorkerTlsTrustGaps({
8439
+ cert: tlsOptions.cert,
8440
+ certPath: tlsCertPath,
8441
+ certSourcePath: tlsCertPath,
8442
+ daemonUrl: workerDaemonUrl,
8443
+ ...operatorCaCertPath ? { operatorCaCertPath } : {},
8444
+ ...operatorCaCert ? {
8445
+ operatorCaCert,
8446
+ operatorCaCertSourcePath: operatorCaCertPath
8447
+ } : {},
8448
+ ...operatorCaCertReadError ? { operatorCaCertReadError } : {}
8449
+ });
8450
+ } catch (error2) {
8451
+ if (!(error2 instanceof ExtraCaInspectionError)) throw error2;
8452
+ daemonLog.warn(
8453
+ `Channel worker TLS trust-gap inspection could not run: ${error2.message} Continuing with the live handshake probe only.`
8454
+ );
8455
+ }
8456
+ const workerCaCertPath = workerRuntime.resolveWorkerCaCertPath(
8457
+ tlsCertPath,
8458
+ operatorCaCertPath
8459
+ );
8460
+ const trustFailure = await (deps.workerTlsTrustVerifier ?? verifyWorkerTlsTrust)({
8461
+ daemonUrl: workerDaemonUrl,
8462
+ caCertPath: workerCaCertPath
8463
+ });
8464
+ if (shuttingDown || runtimeStartupError !== void 0) {
8465
+ throw new Error(
8466
+ "Daemon stopped while the channel worker TLS trust check was running."
8467
+ );
8468
+ }
8469
+ if (trustFailure) {
8470
+ if (predictedGaps.length > 0) {
8471
+ for (const gap of predictedGaps) daemonLog.warn(gap);
8472
+ } else {
8473
+ daemonLog.warn(
8474
+ `Channel worker TLS verification failed against the exact CA bundle workers receive (${sanitizeLogText(normalizeWorkerDiagnostic(trustFailure.code), 80)}): ${sanitizeLogText(normalizeWorkerDiagnostic(trustFailure.message), 300)}`
8475
+ );
8476
+ }
8477
+ }
8478
+ }
7936
8479
  const createSupervisor = deps.channelWorkerSupervisorFactory ?? workerRuntime.createChannelWorkerSupervisor;
7937
8480
  const createGroup = /* @__PURE__ */ __name((groups) => workerRuntime.createChannelWorkerGroup({
7938
8481
  groups,
@@ -7940,11 +8483,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
7940
8483
  createSupervisor,
7941
8484
  shared: {
7942
8485
  cliEntryPath: workerRuntime.findCliEntryPath(),
7943
- daemonUrl: formatChannelWorkerDaemonUrl(
7944
- opts.hostname,
7945
- actualPort
7946
- ),
7947
- ...token ? { daemonToken: token } : {}
8486
+ daemonUrl: workerDaemonUrl,
8487
+ ...token ? { daemonToken: token } : {},
8488
+ ...tlsCertPath ? { workerTlsCaCertPath: tlsCertPath } : {}
7948
8489
  },
7949
8490
  onReady: /* @__PURE__ */ __name((snapshot) => {
7950
8491
  if (runtimeStartupError !== void 0) return;
@@ -8578,6 +9119,7 @@ export {
8578
9119
  createBoundChannelDeliveryHandler,
8579
9120
  createDisabledChannelWorkerSupervisor,
8580
9121
  createLazyBridgeProxy,
9122
+ describeWorkerTlsTrustGaps,
8581
9123
  extractContextFilename,
8582
9124
  formatChannelWorkerDaemonUrl,
8583
9125
  resolveRuntimeStartupTimeoutMs,
@@ -8585,6 +9127,7 @@ export {
8585
9127
  subSessionConcurrencyCapsFromSettings,
8586
9128
  validateAndCanonicalizeWorkspaceInput,
8587
9129
  validatePolicyConfig,
9130
+ verifyWorkerTlsTrust,
8588
9131
  waitForRuntimeStartingForShutdown
8589
9132
  };
8590
9133
  /**