@qwen-code/qwen-code 0.21.5 → 0.21.6

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 (250) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +8 -8
  2. package/bundled/qc-helper/docs/configuration/settings.md +15 -15
  3. package/bundled/qc-helper/docs/features/channels/github.md +31 -19
  4. package/bundled/qc-helper/docs/features/code-review.md +5 -1
  5. package/bundled/qc-helper/docs/features/headless.md +31 -0
  6. package/bundled/qc-helper/docs/qwen-serve.md +75 -0
  7. package/bundled/review/SKILL.md +72 -60
  8. package/chunks/{MaxSizedBox-2MWU5JYB.js → MaxSizedBox-2HFKP4LI.js} +11 -10
  9. package/chunks/{StandaloneSessionPicker-B6MI5NTB.js → StandaloneSessionPicker-RBV72M5N.js} +26 -25
  10. package/chunks/{acp-startup-profiler-3RICG2YW.js → acp-startup-profiler-ORIQ2CCQ.js} +2 -2
  11. package/chunks/{acpAgent-MRPYN6FH.js → acpAgent-WO6JFCVQ.js} +1232 -139
  12. package/chunks/{agent-NAOXNW4I.js → agent-AHGLYNZ4.js} +11 -10
  13. package/chunks/{agent-headless-L4PPVFKW.js → agent-headless-NTXKKGRO.js} +11 -10
  14. package/chunks/{bridge-LHXGYNCO.js → bridge-RPAU64CA.js} +17 -15
  15. package/chunks/{channel-management-service-UHX56NBO.js → channel-management-service-IGEUOVRT.js} +3 -3
  16. package/chunks/{channel-settings-store-QB54TLYE.js → channel-settings-store-ON64MF7G.js} +18 -17
  17. package/chunks/{channel-worker-group-NDG4WOOZ.js → channel-worker-group-JWQK224X.js} +6 -5
  18. package/chunks/{channel-worker-manager-ZCW6UW34.js → channel-worker-manager-77E3OXRQ.js} +6 -5
  19. package/chunks/{channel-worker-supervisor-ATGFTZRN.js → channel-worker-supervisor-62YWUGP2.js} +4 -3
  20. package/chunks/{chunk-EXHQZBVJ.js → chunk-2POQWYM6.js} +2 -2
  21. package/chunks/{chunk-YMUZQ3MQ.js → chunk-3LZKY4V4.js} +3 -3
  22. package/chunks/{chunk-7MFQLOHZ.js → chunk-3PRJYMXC.js} +1 -1
  23. package/chunks/{chunk-SJMCYCUQ.js → chunk-3UOLYNTF.js} +5 -5
  24. package/chunks/{chunk-Q2V4AOQL.js → chunk-4JH77A2U.js} +1 -1
  25. package/chunks/{chunk-MISUEWB4.js → chunk-4S4OEQ6U.js} +10 -6
  26. package/chunks/{chunk-URJHXOSO.js → chunk-4WTAQEHV.js} +1 -1
  27. package/chunks/{chunk-ZLGPHA34.js → chunk-536SWZTA.js} +5 -5
  28. package/chunks/{chunk-WU5NBSLD.js → chunk-5MJGUQU5.js} +3 -3
  29. package/chunks/{chunk-3P4GP4S2.js → chunk-75QMRMO7.js} +4 -4
  30. package/chunks/{chunk-YLL3SC5S.js → chunk-A4VTILZT.js} +1032 -913
  31. package/chunks/{chunk-B3EBIZUY.js → chunk-ACZRB7AD.js} +8 -3
  32. package/chunks/chunk-BKHCW2BI.js +41 -0
  33. package/chunks/{chunk-XD2PNH3K.js → chunk-BOGOR4HB.js} +5 -5
  34. package/chunks/{chunk-QL4TN4HS.js → chunk-BRVWYMKV.js} +1 -1
  35. package/chunks/{chunk-TCOJPG2P.js → chunk-C4CBJQKY.js} +1 -1
  36. package/chunks/{chunk-4O6HLCOF.js → chunk-CA4UIDFU.js} +1 -1
  37. package/chunks/{chunk-SQTA6PAY.js → chunk-CJ5WLD5Y.js} +6 -2
  38. package/chunks/{chunk-7W5KOBYU.js → chunk-DIT4V3XH.js} +1 -1
  39. package/chunks/{chunk-OIGB253L.js → chunk-DVBEGGLG.js} +8 -8
  40. package/chunks/{chunk-DTAPI453.js → chunk-EMYZIABH.js} +1 -1
  41. package/chunks/{chunk-GBY3ODW7.js → chunk-EXCEQD22.js} +3 -3
  42. package/chunks/{chunk-VJPF6GF2.js → chunk-FZFP7RZI.js} +3 -3
  43. package/chunks/{chunk-3GOCVBYR.js → chunk-G5NNWEYE.js} +5 -5
  44. package/chunks/{chunk-IWYXZAGT.js → chunk-GESMMPAK.js} +33 -33
  45. package/chunks/{chunk-SVIEVA3L.js → chunk-GK2H5GRC.js} +29 -4
  46. package/chunks/{chunk-7M2RLFNX.js → chunk-GWRHVJY2.js} +11 -11
  47. package/chunks/{chunk-BK2UNYWD.js → chunk-HIBNSEJE.js} +12 -0
  48. package/chunks/{chunk-4LLUH3A7.js → chunk-HU5TUALO.js} +95 -8
  49. package/chunks/{chunk-J7I2BZHS.js → chunk-HY25ULVN.js} +23 -6
  50. package/chunks/{chunk-G2UXFO2B.js → chunk-IMOQO6YL.js} +1 -1
  51. package/chunks/{chunk-CAX76R46.js → chunk-JE44IPH6.js} +1 -1
  52. package/chunks/{chunk-IK3RYLAD.js → chunk-K2B3X3E7.js} +3 -3
  53. package/chunks/{chunk-OWAK7LMW.js → chunk-KGJGEEVR.js} +7 -0
  54. package/chunks/{chunk-K64OI7S7.js → chunk-KHUA3NQV.js} +2 -2
  55. package/chunks/{chunk-LEZFUYPM.js → chunk-LAAFLUQV.js} +4 -4
  56. package/chunks/{chunk-FHPKHXHT.js → chunk-MKVZE4ZJ.js} +5 -1
  57. package/chunks/{chunk-4NEBUDWS.js → chunk-N2GJU6KI.js} +9 -9
  58. package/chunks/{chunk-N3RERU5N.js → chunk-NGJOAKJY.js} +3 -3
  59. package/chunks/chunk-NKLP3DCK.js +22 -0
  60. package/chunks/{chunk-K6VEL5KP.js → chunk-NKSF7HYF.js} +1 -1
  61. package/chunks/{chunk-LMNM37OE.js → chunk-O7V7N4G7.js} +1 -1
  62. package/chunks/{chunk-3H5RFLTS.js → chunk-ODPXHGLL.js} +2 -2
  63. package/chunks/{chunk-KH2BIJ4H.js → chunk-OP2OHZ7K.js} +267 -11
  64. package/chunks/{chunk-VOA2UPZM.js → chunk-OWSW7EYP.js} +5 -5
  65. package/chunks/{chunk-B2RBYP7Z.js → chunk-OXX3FG2N.js} +2 -2
  66. package/chunks/{chunk-RM3F46UT.js → chunk-PPUOYL77.js} +71 -6
  67. package/chunks/{chunk-ZPGMDT4S.js → chunk-PX5DNLSA.js} +19 -92
  68. package/chunks/{chunk-FEUXV3DC.js → chunk-Q5RM32DR.js} +1 -1
  69. package/chunks/{chunk-AEWOKOJY.js → chunk-QZKYZCN3.js} +1 -1
  70. package/chunks/{chunk-UKZEXS6K.js → chunk-R574ATRM.js} +11 -0
  71. package/chunks/{chunk-OGAARVN7.js → chunk-R5RBXLNC.js} +3 -3
  72. package/chunks/{chunk-5HWAJ4BK.js → chunk-RFUHDCNF.js} +1 -1
  73. package/chunks/{chunk-LSYVASZS.js → chunk-RHTTKJTP.js} +1 -1
  74. package/chunks/{chunk-LYPXNRBX.js → chunk-RK2EE3T7.js} +1 -1
  75. package/chunks/{chunk-CIUUYB23.js → chunk-S7CV4KO6.js} +3 -3
  76. package/chunks/{chunk-4NNR24EP.js → chunk-SKNE3KQC.js} +3 -3
  77. package/chunks/{chunk-JDNWIXHJ.js → chunk-SLSWFHDF.js} +3 -3
  78. package/chunks/{chunk-UWSXFI6E.js → chunk-SQC6K5HI.js} +6 -2
  79. package/chunks/{chunk-P3SLTSNY.js → chunk-SQOMTWQT.js} +4 -4
  80. package/chunks/{chunk-D7QAZ5DF.js → chunk-SUKEUUAA.js} +1 -1
  81. package/chunks/{chunk-WTM5QONI.js → chunk-T4JSA7KU.js} +2 -2
  82. package/chunks/{chunk-I7JDGNG6.js → chunk-T5U6IM4C.js} +6 -2
  83. package/chunks/{chunk-2JBETW4S.js → chunk-TGGEZINK.js} +5 -5
  84. package/chunks/{chunk-C6ARWPCG.js → chunk-TOGZTG4X.js} +2 -2
  85. package/chunks/{chunk-A6SX5TAH.js → chunk-TSERKWCX.js} +6 -2
  86. package/chunks/{chunk-IWGMDSC3.js → chunk-U4AF3QLU.js} +355 -17
  87. package/chunks/{chunk-PDDYAXL2.js → chunk-UGTWD35F.js} +14 -1
  88. package/chunks/{chunk-BWLUCN35.js → chunk-ULPQQSDN.js} +2 -2
  89. package/chunks/{chunk-GEP54CHX.js → chunk-VGFPFM4U.js} +3 -3
  90. package/chunks/{chunk-NLQIEY6W.js → chunk-VNQCPBC2.js} +3 -3
  91. package/chunks/{chunk-K2ETEWG6.js → chunk-VSALQLT7.js} +1 -1
  92. package/chunks/{chunk-YO4JI7B4.js → chunk-W5DXUTXD.js} +12 -6
  93. package/chunks/{chunk-M744OFVE.js → chunk-W7U4ESW2.js} +1 -1
  94. package/chunks/{chunk-TJ56V3AR.js → chunk-WNU7TZTO.js} +4 -4
  95. package/chunks/{chunk-GTM6IHBB.js → chunk-WO2B5E5B.js} +1 -0
  96. package/chunks/chunk-WOJZWRAZ.js +123 -0
  97. package/chunks/{chunk-5XNO4AW7.js → chunk-XA4TMLFN.js} +11 -11
  98. package/chunks/{chunk-GP4IMBX5.js → chunk-XM2O73NC.js} +1696 -476
  99. package/chunks/{chunk-IZ2CMEYO.js → chunk-YMBOEAF4.js} +1 -1
  100. package/chunks/{chunk-QONSRAEV.js → chunk-YP5KH5Y7.js} +1 -1
  101. package/chunks/{chunk-ZLJQIGCH.js → chunk-YZQTA3ID.js} +28 -11
  102. package/chunks/{computer-use-XDOGP2KA.js → computer-use-5HXJ2P4X.js} +11 -10
  103. package/chunks/{config-utils-E3ZQTHGM.js → config-utils-VXD4SPVR.js} +2 -2
  104. package/chunks/{contextCommand-N3LQDCYJ.js → contextCommand-7BEHRX2H.js} +14 -13
  105. package/chunks/{core-runtime-STAFP45W.js → core-runtime-U4VJ5TIV.js} +11 -10
  106. package/chunks/create-sub-session-QZNQY332.js +772 -0
  107. package/chunks/{daemon-CCIX4BMG.js → daemon-YI5RY62O.js} +115 -3
  108. package/chunks/{daemon-status-provider-PPAH3ATF.js → daemon-status-provider-UJUGTDTL.js} +21 -19
  109. package/chunks/{daemon-trust-policy-X6XL3MB4.js → daemon-trust-policy-ZHDD5VYQ.js} +17 -16
  110. package/chunks/{daemon-trust-policy-monitor-M5LBL2HD.js → daemon-trust-policy-monitor-5SHYBDGA.js} +17 -16
  111. package/chunks/{deferred-core-runtime-O54YPTBU.js → deferred-core-runtime-QWAEBTR5.js} +11 -10
  112. package/chunks/discovery-XLHITE74.js +220 -0
  113. package/chunks/{dist-IKGVITP3.js → dist-KS4O2NKE.js} +99 -6
  114. package/chunks/{earlyInputCapture-CBIT2RGT.js → earlyInputCapture-5BMSGKOI.js} +11 -10
  115. package/chunks/{edit-KW2TOC6A.js → edit-IVQQVYYK.js} +11 -10
  116. package/chunks/{enter-worktree-YL34NEU5.js → enter-worktree-P3DF2N6O.js} +11 -10
  117. package/chunks/{enterPlanMode-JFJTDASQ.js → enterPlanMode-KKTDVLAD.js} +11 -10
  118. package/chunks/{environment-IATU5GXG.js → environment-W5TRDM3G.js} +14 -13
  119. package/chunks/{errors-SAVRDE7Q.js → errors-GJJB36IG.js} +14 -13
  120. package/chunks/{exit-worktree-5M43QPBB.js → exit-worktree-LV5RLOCU.js} +11 -10
  121. package/chunks/{exitPlanMode-W4EICZ4N.js → exitPlanMode-TUGOB2LL.js} +11 -10
  122. package/chunks/external-tool-guard-provider-5HTGOPGU.js +273 -0
  123. package/chunks/{fast-path-YQJPIKMP.js → fast-path-2FU23PAQ.js} +5 -5
  124. package/chunks/{gemini-FUF5SSPR.js → gemini-KDULDQPP.js} +70 -55
  125. package/chunks/{geminiContentGenerator-LLLZBOUG.js → geminiContentGenerator-LOCFHNVA.js} +1 -1
  126. package/chunks/{glob-LJFFMN4D.js → glob-Z4NQFKWS.js} +11 -10
  127. package/chunks/{grep-Q64EAM73.js → grep-Z67Z7EN6.js} +11 -10
  128. package/chunks/{handleAutoUpdate-QBMPRTSQ.js → handleAutoUpdate-DFUZE6I6.js} +16 -15
  129. package/chunks/{i18n-LDUW5DMN.js → i18n-R4FMZ7N2.js} +13 -12
  130. package/chunks/{image-gen-G7RLG3KR.js → image-gen-4CQJPQP5.js} +1 -1
  131. package/chunks/{initializer-74A7DMMD.js → initializer-DK672ZVE.js} +17 -16
  132. package/chunks/{installationInfo-OFDYLDFD.js → installationInfo-PO4Z3ES7.js} +12 -11
  133. package/chunks/{list-JA2EWRHJ.js → list-QXQF6C53.js} +20 -19
  134. package/chunks/{loadedSettingsAdapter-2GNJOQ3L.js → loadedSettingsAdapter-4D7GUGW6.js} +17 -16
  135. package/chunks/{loggingContentGenerator-B6B5EGB3.js → loggingContentGenerator-2P3MNACM.js} +4 -3
  136. package/chunks/{managed-npm-update-4YZHLUER.js → managed-npm-update-LWVJQTWO.js} +24 -14
  137. package/chunks/{mcp-LLK5YJVH.js → mcp-GHETAR6V.js} +17 -16
  138. package/chunks/{monitor-NYJPAWVP.js → monitor-4T7W4M6Q.js} +11 -10
  139. package/chunks/{nonInteractiveCli-HZBBBDJD.js → nonInteractiveCli-P4UKCJFM.js} +47 -45
  140. package/chunks/{notebook-edit-LLM6UXFX.js → notebook-edit-OC2V7U5D.js} +11 -10
  141. package/chunks/{openaiContentGenerator-2AEXDN55.js → openaiContentGenerator-RAJUFWQY.js} +5 -4
  142. package/chunks/{pidfile-3JUWX7G2.js → pidfile-HVPYVRLS.js} +11 -10
  143. package/chunks/{processUtils-JLLRVZHT.js → processUtils-VIQ4JHVX.js} +2 -2
  144. package/chunks/{qwenContentGenerator-2FESCF27.js → qwenContentGenerator-2QLCUFNZ.js} +12 -11
  145. package/chunks/{qwenOAuth2-2KKPYA5J.js → qwenOAuth2-J2X3EN43.js} +1 -1
  146. package/chunks/{read-file-5GVXLY74.js → read-file-ZNAN2B26.js} +3 -2
  147. package/chunks/{record-artifact-L3BAHQFN.js → record-artifact-E6AWQU2Z.js} +1 -1
  148. package/chunks/{resumeHistoryUtils-Z4OFBXPM.js → resumeHistoryUtils-RCY7AL5Y.js} +15 -14
  149. package/chunks/{ripGrep-TKOJTIAB.js → ripGrep-C3KMLZM5.js} +11 -10
  150. package/chunks/{run-qwen-serve-K5W6MM6M.js → run-qwen-serve-3JN75CIQ.js} +518 -75
  151. package/chunks/{runtime-IADXMRCY.js → runtime-VUA4WQYD.js} +20 -19
  152. package/chunks/{scheduler-T7AV37LD.js → scheduler-Z4IBXCOY.js} +11 -10
  153. package/chunks/{serve-ROEGMS3I.js → serve-67T3P7XI.js} +18 -16
  154. package/chunks/{server-NGXMRODI.js → server-46ZO2CLV.js} +7556 -397
  155. package/chunks/{session-RCDLDJA4.js → session-B4IFAFC4.js} +50 -48
  156. package/chunks/{settings-E6H3AURD.js → settings-AI2BTBOZ.js} +16 -15
  157. package/chunks/{shell-RHGGJ6BE.js → shell-BKII3B6E.js} +11 -10
  158. package/chunks/{skill-GQ7PBS25.js → skill-6CFOWVGA.js} +4 -3
  159. package/chunks/{skill-settings-E2F7OCBL.js → skill-settings-6BFQWMW4.js} +16 -15
  160. package/chunks/{spawnChannel-Q2IQBHME.js → spawnChannel-FJXW35U7.js} +14 -12
  161. package/chunks/{standalone-update-NYYZEHLD.js → standalone-update-WVINHRNS.js} +14 -13
  162. package/chunks/{startInteractiveUI-IX6I3Y2Z.js → startInteractiveUI-YE57CJ57.js} +140 -138
  163. package/chunks/{stdioHelpers-HGIYTWAY.js → stdioHelpers-7A2EE64Z.js} +5 -3
  164. package/chunks/{task-create-2X4UP4F3.js → task-create-Q727MXHJ.js} +2 -2
  165. package/chunks/{task-list-WOLJPZ64.js → task-list-G6KPQ5JT.js} +1 -1
  166. package/chunks/{task-update-VDUSN36E.js → task-update-YB7PXO4R.js} +2 -2
  167. package/chunks/{team-create-UTRVUEDA.js → team-create-GNC7NFY6.js} +11 -10
  168. package/chunks/{team-delete-D2VMSDOT.js → team-delete-GDO7H2T4.js} +1 -1
  169. package/chunks/{team-plan-approval-YZNB4U5U.js → team-plan-approval-ECALJLIO.js} +11 -10
  170. package/chunks/{terminal-image-renderer-QRSCS2BE.js → terminal-image-renderer-II74TFVW.js} +11 -10
  171. package/chunks/{theme-manager-EKZBY34I.js → theme-manager-2MGEDD22.js} +11 -10
  172. package/chunks/{tool-search-N2R7LVMC.js → tool-search-S6LRRACA.js} +3 -2
  173. package/chunks/{total-session-admission-HBIYARPO.js → total-session-admission-7WVAWQPU.js} +17 -15
  174. package/chunks/{trustedFolders-ZQLYRCSY.js → trustedFolders-NFS4KHO4.js} +13 -12
  175. package/chunks/{update-relaunch-PJWXMPCR.js → update-relaunch-Q5HLZ6UW.js} +6 -6
  176. package/chunks/{updateCheck-ZXRCGY66.js → updateCheck-UOVZSTP7.js} +15 -14
  177. package/chunks/{useAutoAcceptIndicator-ZYQW5SGJ.js → useAutoAcceptIndicator-PC6MOJCO.js} +19 -18
  178. package/chunks/{validateNonInterActiveAuth-M7J7OTRH.js → validateNonInterActiveAuth-YMQP3ZM7.js} +44 -42
  179. package/chunks/{version-2AOHMPK3.js → version-T4AQFZJH.js} +1 -1
  180. package/chunks/{web-fetch-DS34CJ3R.js → web-fetch-JQCJHEEX.js} +3 -2
  181. package/chunks/{web-search-ITFPD7V4.js → web-search-QGZ2KY4G.js} +4 -3
  182. package/chunks/{workflow-LZQ4PGNS.js → workflow-YIT27YWZ.js} +12 -11
  183. package/chunks/{workspace-providers-status-ZPTLKOBM.js → workspace-providers-status-FIDZQ2PL.js} +20 -19
  184. package/chunks/{workspace-registration-store-OTFKSGG7.js → workspace-registration-store-RCSPE4DU.js} +1 -1
  185. package/chunks/{workspace-registry-YZ3OXPHP.js → workspace-registry-5PEUCY6E.js} +17 -15
  186. package/chunks/{workspace-service-OCZXOOSQ.js → workspace-service-LANDVPL7.js} +21 -20
  187. package/chunks/{workspace-skills-status-K2ALGUCD.js → workspace-skills-status-2IQVJNIN.js} +18 -17
  188. package/chunks/{workspace-trust-reconciler-KMRZISJP.js → workspace-trust-reconciler-CZPZZCZC.js} +26 -24
  189. package/chunks/{write-file-AWBI4GJS.js → write-file-G5VNGCOG.js} +11 -10
  190. package/chunks/{zoom-image-NHKN6F77.js → zoom-image-6RBLD7X6.js} +3 -2
  191. package/cli-entry.js +14 -0
  192. package/cli.js +19 -15
  193. package/package.json +3 -3
  194. package/web-shell/assets/{arc-Dpg66jw7.js → arc-B-Vtkp1W.js} +1 -1
  195. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BJ4FIBxN.js → architectureDiagram-3BPJPVTR-qmTXIj64.js} +1 -1
  196. package/web-shell/assets/{blockDiagram-GPEHLZMM-VXmYdtYT.js → blockDiagram-GPEHLZMM-ZlnXEtdP.js} +1 -1
  197. package/web-shell/assets/{c4Diagram-AAUBKEIU-BNLDb8FE.js → c4Diagram-AAUBKEIU-Wyoirf6Z.js} +1 -1
  198. package/web-shell/assets/channel-DXaHnfjS.js +1 -0
  199. package/web-shell/assets/{chunk-2J33WTMH-DR5yHxr0.js → chunk-2J33WTMH-WQwbq9d8.js} +1 -1
  200. package/web-shell/assets/{chunk-4BX2VUAB-Czkq8UZU.js → chunk-4BX2VUAB-DQKnAXC4.js} +1 -1
  201. package/web-shell/assets/{chunk-55IACEB6-DugUgM6s.js → chunk-55IACEB6-DIdgXNcO.js} +1 -1
  202. package/web-shell/assets/{chunk-727SXJPM-Dw6quA1K.js → chunk-727SXJPM-CUwGOLEd.js} +1 -1
  203. package/web-shell/assets/{chunk-AQP2D5EJ-BoVYOTTz.js → chunk-AQP2D5EJ-CCBGZFZ4.js} +1 -1
  204. package/web-shell/assets/{chunk-FMBD7UC4--Amcse-j.js → chunk-FMBD7UC4-DMGXProk.js} +1 -1
  205. package/web-shell/assets/{chunk-ND2GUHAM-ajaEYAC8.js → chunk-ND2GUHAM-yejcFqsh.js} +1 -1
  206. package/web-shell/assets/{chunk-QZHKN3VN-CUNDZ7im.js → chunk-QZHKN3VN-DxCyqTf7.js} +1 -1
  207. package/web-shell/assets/classDiagram-4FO5ZUOK-BigU82A0.js +1 -0
  208. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BigU82A0.js +1 -0
  209. package/web-shell/assets/{cose-bilkent-S5V4N54A-BnfkD-m1.js → cose-bilkent-S5V4N54A-DOrF3cg_.js} +1 -1
  210. package/web-shell/assets/{dagre-BM42HDAG-BuUdFk7Z.js → dagre-BM42HDAG-Be6CdYQ_.js} +1 -1
  211. package/web-shell/assets/{diagram-2AECGRRQ-B2ZXxoab.js → diagram-2AECGRRQ-B_Rjsft2.js} +1 -1
  212. package/web-shell/assets/{diagram-5GNKFQAL-BsgOICzM.js → diagram-5GNKFQAL-BvQbKSm1.js} +1 -1
  213. package/web-shell/assets/{diagram-KO2AKTUF-DTTjG6U-.js → diagram-KO2AKTUF-BsdmMdpS.js} +1 -1
  214. package/web-shell/assets/{diagram-LMA3HP47-temLf1x7.js → diagram-LMA3HP47-CrQlBaNr.js} +1 -1
  215. package/web-shell/assets/{diagram-OG6HWLK6-CRFjScs2.js → diagram-OG6HWLK6-aB1MD_DL.js} +1 -1
  216. package/web-shell/assets/{erDiagram-TEJ5UH35-D4oaY-rQ.js → erDiagram-TEJ5UH35-F-eUUn9n.js} +1 -1
  217. package/web-shell/assets/{flowDiagram-I6XJVG4X-BqG8B49b.js → flowDiagram-I6XJVG4X-DY_d8lUK.js} +1 -1
  218. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DffQBdd5.js → ganttDiagram-6RSMTGT7-Dqu7KBPg.js} +1 -1
  219. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CMDPfseF.js → gitGraphDiagram-PVQCEYII-2IkU_VEj.js} +1 -1
  220. package/web-shell/assets/{index-qTQR_smP.js → index-BuSbqggh.js} +1 -1
  221. package/web-shell/assets/index-DrfC2e9s.js +1768 -0
  222. package/web-shell/assets/index-QQlUCJGg.css +5 -0
  223. package/web-shell/assets/{infoDiagram-5YYISTIA-Cn3T83MA.js → infoDiagram-5YYISTIA-C4orwzPw.js} +1 -1
  224. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-ijFs7e25.js → ishikawaDiagram-YF4QCWOH-fXUEfef_.js} +1 -1
  225. package/web-shell/assets/{journeyDiagram-JHISSGLW-CINTv8VB.js → journeyDiagram-JHISSGLW-Bs0I1_J5.js} +1 -1
  226. package/web-shell/assets/{kanban-definition-UN3LZRKU-CMGRZCxx.js → kanban-definition-UN3LZRKU-BPRj1dw_.js} +1 -1
  227. package/web-shell/assets/{linear-Co-2_37d.js → linear-DFS6ZDpW.js} +1 -1
  228. package/web-shell/assets/{mermaid.core-DijbyaN5.js → mermaid.core-CZxjWMaO.js} +5 -5
  229. package/web-shell/assets/{mindmap-definition-RKZ34NQL-k_sDYDPZ.js → mindmap-definition-RKZ34NQL-Dsr3PmNs.js} +1 -1
  230. package/web-shell/assets/{pieDiagram-4H26LBE5-CG-oz8V3.js → pieDiagram-4H26LBE5-D5Ngpz5Y.js} +1 -1
  231. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Baq7HIG2.js → quadrantDiagram-W4KKPZXB-WJK9I25z.js} +1 -1
  232. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CDM3ZvBt.js → requirementDiagram-4Y6WPE33-CmrYcwOH.js} +1 -1
  233. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C2dJbWKN.js → sankeyDiagram-5OEKKPKP-7SjCc4Mv.js} +1 -1
  234. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Cf1_h59p.js → sequenceDiagram-3UESZ5HK-Dl9E0IRM.js} +1 -1
  235. package/web-shell/assets/{stateDiagram-AJRCARHV-CI5clUEc.js → stateDiagram-AJRCARHV-CRRio7yV.js} +1 -1
  236. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-1atT7XaU.js +1 -0
  237. package/web-shell/assets/{timeline-definition-PNZ67QCA-B2O8cAZX.js → timeline-definition-PNZ67QCA-DVyXjjfq.js} +1 -1
  238. package/web-shell/assets/{vennDiagram-CIIHVFJN-BLsJ_h9s.js → vennDiagram-CIIHVFJN-Nb2Lckzq.js} +1 -1
  239. package/web-shell/assets/{wardley-L42UT6IY-BlPU4FTA.js → wardley-L42UT6IY-DuL_otIP.js} +1 -1
  240. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D_U-RdU4.js → wardleyDiagram-YWT4CUSO-DVI9Q4Aa.js} +1 -1
  241. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BynXGSTl.js → xychartDiagram-2RQKCTM6-BNjAm7KD.js} +1 -1
  242. package/web-shell/index.html +2 -2
  243. package/bundled/review/DESIGN.md +0 -724
  244. package/chunks/create-sub-session-2B3JENWD.js +0 -400
  245. package/web-shell/assets/channel-Bd9wOnaA.js +0 -1
  246. package/web-shell/assets/classDiagram-4FO5ZUOK-XhCT8FE3.js +0 -1
  247. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-XhCT8FE3.js +0 -1
  248. package/web-shell/assets/index-2F4RsNzd.js +0 -1756
  249. package/web-shell/assets/index-CaucmEO_.css +0 -5
  250. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDc8asKD.js +0 -1
@@ -11,35 +11,35 @@ import {
11
11
  resetEnvironmentTrackingForTesting,
12
12
  resetHomeEnvBootstrapForTesting,
13
13
  setUpCloudShellEnvironment
14
- } from "./chunk-LYPXNRBX.js";
14
+ } from "./chunk-RK2EE3T7.js";
15
15
  import {
16
16
  DEFAULT_EXCLUDED_ENV_VARS,
17
17
  ENV_CORRUPTED_PATH,
18
18
  ENV_WAS_RECOVERED
19
19
  } from "./chunk-6PEXNQTX.js";
20
- import "./chunk-B3EBIZUY.js";
20
+ import "./chunk-ACZRB7AD.js";
21
21
  import "./chunk-ALGGS7UH.js";
22
22
  import "./chunk-MR3PXB6E.js";
23
- import "./chunk-YLL3SC5S.js";
23
+ import "./chunk-A4VTILZT.js";
24
24
  import "./chunk-GOFAQQZA.js";
25
25
  import "./chunk-5M6IDOMF.js";
26
26
  import "./chunk-TWPJO254.js";
27
27
  import "./chunk-H6XPXXMH.js";
28
28
  import "./chunk-Z7JILXGX.js";
29
- import "./chunk-I7JDGNG6.js";
30
- import "./chunk-A6SX5TAH.js";
29
+ import "./chunk-T5U6IM4C.js";
30
+ import "./chunk-TSERKWCX.js";
31
31
  import "./chunk-33FNCQSY.js";
32
32
  import "./chunk-6PVPNMXU.js";
33
- import "./chunk-7W5KOBYU.js";
33
+ import "./chunk-DIT4V3XH.js";
34
34
  import "./chunk-IRH27ZC2.js";
35
35
  import "./chunk-QHWCP53L.js";
36
36
  import "./chunk-MOHAWIAW.js";
37
- import "./chunk-7MFQLOHZ.js";
37
+ import "./chunk-3PRJYMXC.js";
38
38
  import "./chunk-O6GEWCJA.js";
39
39
  import "./chunk-T26EAKDL.js";
40
40
  import "./chunk-ZPJWUGCS.js";
41
41
  import "./chunk-CPBF7KYF.js";
42
- import "./chunk-MISUEWB4.js";
42
+ import "./chunk-4S4OEQ6U.js";
43
43
  import "./chunk-KRXPRVGL.js";
44
44
  import "./chunk-A5YZ3FA2.js";
45
45
  import "./chunk-YAVY33G4.js";
@@ -51,7 +51,7 @@ import "./chunk-WVAESIM6.js";
51
51
  import "./chunk-K623ENWT.js";
52
52
  import "./chunk-AQ37AY7B.js";
53
53
  import "./chunk-432XCUHF.js";
54
- import "./chunk-4LLUH3A7.js";
54
+ import "./chunk-HU5TUALO.js";
55
55
  import "./chunk-XC656O42.js";
56
56
  import "./chunk-NAVJD2PQ.js";
57
57
  import "./chunk-QYPT3QUD.js";
@@ -60,19 +60,20 @@ import "./chunk-DGEIYUC3.js";
60
60
  import "./chunk-MPHPFVKK.js";
61
61
  import "./chunk-GLNBDYUX.js";
62
62
  import "./chunk-DJ2GSRLV.js";
63
- import "./chunk-AEWOKOJY.js";
63
+ import "./chunk-QZKYZCN3.js";
64
64
  import "./chunk-MGSSJT27.js";
65
65
  import "./chunk-2J3OJGTL.js";
66
66
  import "./chunk-P3QQPMQA.js";
67
67
  import "./chunk-6O5DVH27.js";
68
68
  import "./chunk-GLCZKT5V.js";
69
69
  import "./chunk-2DNKEBXY.js";
70
- import "./chunk-ZPGMDT4S.js";
70
+ import "./chunk-PX5DNLSA.js";
71
+ import "./chunk-WOJZWRAZ.js";
71
72
  import "./chunk-VGC4I5JJ.js";
72
73
  import "./chunk-E4WHKETF.js";
73
74
  import "./chunk-ZPPP6VCL.js";
74
75
  import "./chunk-D7D7RXIJ.js";
75
- import "./chunk-XD2PNH3K.js";
76
+ import "./chunk-BOGOR4HB.js";
76
77
  import "./chunk-46UV252V.js";
77
78
  import "./chunk-ZBVS26BY.js";
78
79
  import "./chunk-BFHXDAR7.js";
@@ -83,7 +84,7 @@ import "./chunk-W4RQUHY3.js";
83
84
  import "./chunk-LKRMNRSN.js";
84
85
  import "./chunk-3RXUYQJI.js";
85
86
  import "./chunk-VOQXFAY5.js";
86
- import "./chunk-OWAK7LMW.js";
87
+ import "./chunk-KGJGEEVR.js";
87
88
  import "./chunk-75DOP5OR.js";
88
89
  import "./chunk-DMTGGOSA.js";
89
90
  import "./chunk-YQ3U5MUC.js";
@@ -9,27 +9,27 @@ import {
9
9
  handleError,
10
10
  handleMaxTurnsExceededError,
11
11
  handleToolError
12
- } from "./chunk-VJPF6GF2.js";
13
- import "./chunk-YLL3SC5S.js";
12
+ } from "./chunk-FZFP7RZI.js";
13
+ import "./chunk-A4VTILZT.js";
14
14
  import "./chunk-GOFAQQZA.js";
15
15
  import "./chunk-5M6IDOMF.js";
16
16
  import "./chunk-TWPJO254.js";
17
17
  import "./chunk-H6XPXXMH.js";
18
18
  import "./chunk-Z7JILXGX.js";
19
- import "./chunk-I7JDGNG6.js";
20
- import "./chunk-A6SX5TAH.js";
19
+ import "./chunk-T5U6IM4C.js";
20
+ import "./chunk-TSERKWCX.js";
21
21
  import "./chunk-33FNCQSY.js";
22
22
  import "./chunk-6PVPNMXU.js";
23
- import "./chunk-7W5KOBYU.js";
23
+ import "./chunk-DIT4V3XH.js";
24
24
  import "./chunk-IRH27ZC2.js";
25
25
  import "./chunk-QHWCP53L.js";
26
26
  import "./chunk-MOHAWIAW.js";
27
- import "./chunk-7MFQLOHZ.js";
27
+ import "./chunk-3PRJYMXC.js";
28
28
  import "./chunk-O6GEWCJA.js";
29
29
  import "./chunk-T26EAKDL.js";
30
30
  import "./chunk-ZPJWUGCS.js";
31
31
  import "./chunk-CPBF7KYF.js";
32
- import "./chunk-MISUEWB4.js";
32
+ import "./chunk-4S4OEQ6U.js";
33
33
  import "./chunk-KRXPRVGL.js";
34
34
  import "./chunk-A5YZ3FA2.js";
35
35
  import "./chunk-YAVY33G4.js";
@@ -41,7 +41,7 @@ import "./chunk-WVAESIM6.js";
41
41
  import "./chunk-K623ENWT.js";
42
42
  import "./chunk-AQ37AY7B.js";
43
43
  import "./chunk-432XCUHF.js";
44
- import "./chunk-4LLUH3A7.js";
44
+ import "./chunk-HU5TUALO.js";
45
45
  import "./chunk-XC656O42.js";
46
46
  import "./chunk-NAVJD2PQ.js";
47
47
  import "./chunk-QYPT3QUD.js";
@@ -50,19 +50,20 @@ import "./chunk-DGEIYUC3.js";
50
50
  import "./chunk-MPHPFVKK.js";
51
51
  import "./chunk-GLNBDYUX.js";
52
52
  import "./chunk-DJ2GSRLV.js";
53
- import "./chunk-AEWOKOJY.js";
53
+ import "./chunk-QZKYZCN3.js";
54
54
  import "./chunk-MGSSJT27.js";
55
55
  import "./chunk-2J3OJGTL.js";
56
56
  import "./chunk-P3QQPMQA.js";
57
57
  import "./chunk-6O5DVH27.js";
58
58
  import "./chunk-GLCZKT5V.js";
59
59
  import "./chunk-2DNKEBXY.js";
60
- import "./chunk-ZPGMDT4S.js";
60
+ import "./chunk-PX5DNLSA.js";
61
+ import "./chunk-WOJZWRAZ.js";
61
62
  import "./chunk-VGC4I5JJ.js";
62
63
  import "./chunk-E4WHKETF.js";
63
64
  import "./chunk-ZPPP6VCL.js";
64
65
  import "./chunk-D7D7RXIJ.js";
65
- import "./chunk-XD2PNH3K.js";
66
+ import "./chunk-BOGOR4HB.js";
66
67
  import "./chunk-46UV252V.js";
67
68
  import "./chunk-ZBVS26BY.js";
68
69
  import "./chunk-BFHXDAR7.js";
@@ -73,8 +74,8 @@ import "./chunk-W4RQUHY3.js";
73
74
  import "./chunk-LKRMNRSN.js";
74
75
  import "./chunk-3RXUYQJI.js";
75
76
  import "./chunk-VOQXFAY5.js";
76
- import "./chunk-LSYVASZS.js";
77
- import "./chunk-OWAK7LMW.js";
77
+ import "./chunk-RHTTKJTP.js";
78
+ import "./chunk-KGJGEEVR.js";
78
79
  import "./chunk-75DOP5OR.js";
79
80
  import "./chunk-DMTGGOSA.js";
80
81
  import "./chunk-YQ3U5MUC.js";
@@ -7,26 +7,26 @@ import {
7
7
  readWorktreeSession,
8
8
  readWorktreeSessionMarker,
9
9
  worktreeBranchForSlug
10
- } from "./chunk-YLL3SC5S.js";
10
+ } from "./chunk-A4VTILZT.js";
11
11
  import "./chunk-GOFAQQZA.js";
12
12
  import "./chunk-5M6IDOMF.js";
13
13
  import "./chunk-TWPJO254.js";
14
14
  import "./chunk-H6XPXXMH.js";
15
15
  import "./chunk-Z7JILXGX.js";
16
- import "./chunk-I7JDGNG6.js";
17
- import "./chunk-A6SX5TAH.js";
16
+ import "./chunk-T5U6IM4C.js";
17
+ import "./chunk-TSERKWCX.js";
18
18
  import "./chunk-33FNCQSY.js";
19
19
  import "./chunk-6PVPNMXU.js";
20
- import "./chunk-7W5KOBYU.js";
20
+ import "./chunk-DIT4V3XH.js";
21
21
  import "./chunk-IRH27ZC2.js";
22
22
  import "./chunk-QHWCP53L.js";
23
23
  import "./chunk-MOHAWIAW.js";
24
- import "./chunk-7MFQLOHZ.js";
24
+ import "./chunk-3PRJYMXC.js";
25
25
  import "./chunk-O6GEWCJA.js";
26
26
  import "./chunk-T26EAKDL.js";
27
27
  import "./chunk-ZPJWUGCS.js";
28
28
  import "./chunk-CPBF7KYF.js";
29
- import "./chunk-MISUEWB4.js";
29
+ import "./chunk-4S4OEQ6U.js";
30
30
  import "./chunk-KRXPRVGL.js";
31
31
  import "./chunk-A5YZ3FA2.js";
32
32
  import "./chunk-YAVY33G4.js";
@@ -38,7 +38,7 @@ import "./chunk-WVAESIM6.js";
38
38
  import "./chunk-K623ENWT.js";
39
39
  import "./chunk-AQ37AY7B.js";
40
40
  import "./chunk-432XCUHF.js";
41
- import "./chunk-4LLUH3A7.js";
41
+ import "./chunk-HU5TUALO.js";
42
42
  import "./chunk-XC656O42.js";
43
43
  import "./chunk-NAVJD2PQ.js";
44
44
  import "./chunk-QYPT3QUD.js";
@@ -47,14 +47,15 @@ import "./chunk-DGEIYUC3.js";
47
47
  import "./chunk-MPHPFVKK.js";
48
48
  import "./chunk-GLNBDYUX.js";
49
49
  import "./chunk-DJ2GSRLV.js";
50
- import "./chunk-AEWOKOJY.js";
50
+ import "./chunk-QZKYZCN3.js";
51
51
  import "./chunk-MGSSJT27.js";
52
52
  import "./chunk-2J3OJGTL.js";
53
53
  import "./chunk-P3QQPMQA.js";
54
54
  import "./chunk-6O5DVH27.js";
55
55
  import "./chunk-GLCZKT5V.js";
56
56
  import "./chunk-2DNKEBXY.js";
57
- import "./chunk-ZPGMDT4S.js";
57
+ import "./chunk-PX5DNLSA.js";
58
+ import "./chunk-WOJZWRAZ.js";
58
59
  import "./chunk-VGC4I5JJ.js";
59
60
  import "./chunk-E4WHKETF.js";
60
61
  import "./chunk-ZPPP6VCL.js";
@@ -64,7 +65,7 @@ import {
64
65
  ToolDisplayNames,
65
66
  ToolNames
66
67
  } from "./chunk-D7D7RXIJ.js";
67
- import "./chunk-XD2PNH3K.js";
68
+ import "./chunk-BOGOR4HB.js";
68
69
  import "./chunk-46UV252V.js";
69
70
  import "./chunk-ZBVS26BY.js";
70
71
  import "./chunk-BFHXDAR7.js";
@@ -3,26 +3,26 @@
3
3
  import {
4
4
  ExitPlanModeTool,
5
5
  PLAN_EXIT_APPROVED_LLM_CONTENT_PREFIXES
6
- } from "./chunk-YLL3SC5S.js";
6
+ } from "./chunk-A4VTILZT.js";
7
7
  import "./chunk-GOFAQQZA.js";
8
8
  import "./chunk-5M6IDOMF.js";
9
9
  import "./chunk-TWPJO254.js";
10
10
  import "./chunk-H6XPXXMH.js";
11
11
  import "./chunk-Z7JILXGX.js";
12
- import "./chunk-I7JDGNG6.js";
13
- import "./chunk-A6SX5TAH.js";
12
+ import "./chunk-T5U6IM4C.js";
13
+ import "./chunk-TSERKWCX.js";
14
14
  import "./chunk-33FNCQSY.js";
15
15
  import "./chunk-6PVPNMXU.js";
16
- import "./chunk-7W5KOBYU.js";
16
+ import "./chunk-DIT4V3XH.js";
17
17
  import "./chunk-IRH27ZC2.js";
18
18
  import "./chunk-QHWCP53L.js";
19
19
  import "./chunk-MOHAWIAW.js";
20
- import "./chunk-7MFQLOHZ.js";
20
+ import "./chunk-3PRJYMXC.js";
21
21
  import "./chunk-O6GEWCJA.js";
22
22
  import "./chunk-T26EAKDL.js";
23
23
  import "./chunk-ZPJWUGCS.js";
24
24
  import "./chunk-CPBF7KYF.js";
25
- import "./chunk-MISUEWB4.js";
25
+ import "./chunk-4S4OEQ6U.js";
26
26
  import "./chunk-KRXPRVGL.js";
27
27
  import "./chunk-A5YZ3FA2.js";
28
28
  import "./chunk-YAVY33G4.js";
@@ -34,7 +34,7 @@ import "./chunk-WVAESIM6.js";
34
34
  import "./chunk-K623ENWT.js";
35
35
  import "./chunk-AQ37AY7B.js";
36
36
  import "./chunk-432XCUHF.js";
37
- import "./chunk-4LLUH3A7.js";
37
+ import "./chunk-HU5TUALO.js";
38
38
  import "./chunk-XC656O42.js";
39
39
  import "./chunk-NAVJD2PQ.js";
40
40
  import "./chunk-QYPT3QUD.js";
@@ -43,19 +43,20 @@ import "./chunk-DGEIYUC3.js";
43
43
  import "./chunk-MPHPFVKK.js";
44
44
  import "./chunk-GLNBDYUX.js";
45
45
  import "./chunk-DJ2GSRLV.js";
46
- import "./chunk-AEWOKOJY.js";
46
+ import "./chunk-QZKYZCN3.js";
47
47
  import "./chunk-MGSSJT27.js";
48
48
  import "./chunk-2J3OJGTL.js";
49
49
  import "./chunk-P3QQPMQA.js";
50
50
  import "./chunk-6O5DVH27.js";
51
51
  import "./chunk-GLCZKT5V.js";
52
52
  import "./chunk-2DNKEBXY.js";
53
- import "./chunk-ZPGMDT4S.js";
53
+ import "./chunk-PX5DNLSA.js";
54
+ import "./chunk-WOJZWRAZ.js";
54
55
  import "./chunk-VGC4I5JJ.js";
55
56
  import "./chunk-E4WHKETF.js";
56
57
  import "./chunk-ZPPP6VCL.js";
57
58
  import "./chunk-D7D7RXIJ.js";
58
- import "./chunk-XD2PNH3K.js";
59
+ import "./chunk-BOGOR4HB.js";
59
60
  import "./chunk-46UV252V.js";
60
61
  import "./chunk-ZBVS26BY.js";
61
62
  import "./chunk-BFHXDAR7.js";
@@ -0,0 +1,273 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ EXTERNAL_TOOL_GUARD_TOKEN_ENV,
5
+ containsUnsafeExternalToolGuardControlCharacter,
6
+ isValidExternalToolGuardDenialReason
7
+ } from "./chunk-BKHCW2BI.js";
8
+ import {
9
+ init_esbuild_shims
10
+ } from "./chunk-5O2XNYP6.js";
11
+ import {
12
+ __name
13
+ } from "./chunk-J2S4EL5Y.js";
14
+
15
+ // packages/cli/src/serve/external-tool-guard-provider.ts
16
+ init_esbuild_shims();
17
+ import { randomUUID } from "node:crypto";
18
+ import * as http from "node:http";
19
+ import * as https from "node:https";
20
+ var EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION = 1;
21
+ var DEFAULT_EXTERNAL_TOOL_GUARD_TIMEOUT_MS = 3e3;
22
+ var MIN_EXTERNAL_TOOL_GUARD_TIMEOUT_MS = 100;
23
+ var MAX_EXTERNAL_TOOL_GUARD_TIMEOUT_MS = 3e4;
24
+ var MAX_RESPONSE_BYTES = 64 * 1024;
25
+ var MAX_REQUEST_BYTES = 1024 * 1024;
26
+ function isRecord(value) {
27
+ return typeof value === "object" && value !== null && !Array.isArray(value);
28
+ }
29
+ __name(isRecord, "isRecord");
30
+ function hasExactKeys(value, required, optional = []) {
31
+ const keys = Object.keys(value);
32
+ const allowed = /* @__PURE__ */ new Set([...required, ...optional]);
33
+ return required.every((key) => Object.hasOwn(value, key)) && keys.every((key) => allowed.has(key));
34
+ }
35
+ __name(hasExactKeys, "hasExactKeys");
36
+ function normalizeEndpoint(raw) {
37
+ if (typeof raw !== "string") {
38
+ throw new TypeError(
39
+ "Invalid external tool guard endpoint: expected an absolute loopback HTTP(S) origin."
40
+ );
41
+ }
42
+ let endpoint;
43
+ try {
44
+ endpoint = new URL(raw);
45
+ } catch {
46
+ throw new TypeError(
47
+ "Invalid external tool guard endpoint: expected an absolute loopback HTTP(S) origin."
48
+ );
49
+ }
50
+ const hostname = endpoint.hostname.toLowerCase();
51
+ if (endpoint.protocol !== "http:" && endpoint.protocol !== "https:" || hostname !== "127.0.0.1" && hostname !== "localhost" && hostname !== "::1" && hostname !== "[::1]" || endpoint.username !== "" || endpoint.password !== "" || endpoint.pathname !== "/" || endpoint.search !== "" || endpoint.hash !== "") {
52
+ throw new TypeError(
53
+ "Invalid external tool guard endpoint: expected an origin-only loopback HTTP(S) URL."
54
+ );
55
+ }
56
+ return endpoint;
57
+ }
58
+ __name(normalizeEndpoint, "normalizeEndpoint");
59
+ function normalizeToken(raw) {
60
+ if (typeof raw !== "string" || containsUnsafeExternalToolGuardControlCharacter(raw)) {
61
+ throw new TypeError(
62
+ `Invalid ${EXTERNAL_TOOL_GUARD_TOKEN_ENV}: expected a non-blank token without control characters.`
63
+ );
64
+ }
65
+ const token = raw.trim();
66
+ if (token.length === 0 || token.length > 8192) {
67
+ throw new TypeError(
68
+ `Invalid ${EXTERNAL_TOOL_GUARD_TOKEN_ENV}: expected a non-blank token without control characters.`
69
+ );
70
+ }
71
+ return token;
72
+ }
73
+ __name(normalizeToken, "normalizeToken");
74
+ function normalizeTimeout(timeoutMs) {
75
+ const value = timeoutMs ?? DEFAULT_EXTERNAL_TOOL_GUARD_TIMEOUT_MS;
76
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < MIN_EXTERNAL_TOOL_GUARD_TIMEOUT_MS || value > MAX_EXTERNAL_TOOL_GUARD_TIMEOUT_MS) {
77
+ throw new TypeError(
78
+ `Invalid external tool guard timeout: expected an integer in [${MIN_EXTERNAL_TOOL_GUARD_TIMEOUT_MS}, ${MAX_EXTERNAL_TOOL_GUARD_TIMEOUT_MS}] ms.`
79
+ );
80
+ }
81
+ return value;
82
+ }
83
+ __name(normalizeTimeout, "normalizeTimeout");
84
+ function validateHandshakeResponse(value, nonce) {
85
+ if (!isRecord(value) || !hasExactKeys(value, ["protocolVersion", "nonce", "capabilities"]) || value["protocolVersion"] !== EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION || value["nonce"] !== nonce || !isRecord(value["capabilities"]) || !hasExactKeys(value["capabilities"], ["prepare"]) || value["capabilities"]["prepare"] !== true) {
86
+ throw new Error("External tool guard handshake response is incompatible.");
87
+ }
88
+ }
89
+ __name(validateHandshakeResponse, "validateHandshakeResponse");
90
+ function validatePrepareResponse(value, requestId) {
91
+ if (!isRecord(value) || !hasExactKeys(
92
+ value,
93
+ ["protocolVersion", "requestId", "allowed"],
94
+ ["reason"]
95
+ ) || value["protocolVersion"] !== EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION || value["requestId"] !== requestId || typeof value["allowed"] !== "boolean") {
96
+ throw new Error("External tool guard prepare response is invalid.");
97
+ }
98
+ if (value["allowed"]) {
99
+ if (Object.hasOwn(value, "reason")) {
100
+ throw new Error("External tool guard allow response contains a reason.");
101
+ }
102
+ return { allowed: true };
103
+ }
104
+ if (!Object.hasOwn(value, "reason")) return { allowed: false };
105
+ const reason = value["reason"];
106
+ if (!isValidExternalToolGuardDenialReason(reason)) {
107
+ throw new Error(
108
+ "External tool guard denial response contains an unsafe reason."
109
+ );
110
+ }
111
+ return { allowed: false, reason };
112
+ }
113
+ __name(validatePrepareResponse, "validatePrepareResponse");
114
+ var RequiredExternalToolGuard = class {
115
+ static {
116
+ __name(this, "RequiredExternalToolGuard");
117
+ }
118
+ endpoint;
119
+ token;
120
+ timeoutMs;
121
+ initialized = false;
122
+ constructor(options) {
123
+ this.endpoint = normalizeEndpoint(options.endpoint);
124
+ this.token = normalizeToken(options.token);
125
+ this.timeoutMs = normalizeTimeout(options.timeoutMs);
126
+ }
127
+ async initialize() {
128
+ const nonce = randomUUID();
129
+ const response = await this.request("/v1/handshake", {
130
+ protocolVersion: EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION,
131
+ nonce,
132
+ client: "qwen-code"
133
+ });
134
+ validateHandshakeResponse(response, nonce);
135
+ this.initialized = true;
136
+ }
137
+ prepare = /* @__PURE__ */ __name(async (request) => {
138
+ if (!this.initialized) {
139
+ throw new Error("External tool guard has not completed its handshake.");
140
+ }
141
+ const requestId = randomUUID();
142
+ const response = await this.request("/v1/prepare", {
143
+ protocolVersion: EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION,
144
+ requestId,
145
+ sessionId: request.sessionId,
146
+ promptId: request.promptId,
147
+ toolCallId: request.toolCallId,
148
+ toolName: request.toolName,
149
+ arguments: request.arguments
150
+ });
151
+ return validatePrepareResponse(response, requestId);
152
+ }, "prepare");
153
+ request(pathname, value) {
154
+ let body;
155
+ try {
156
+ body = Buffer.from(JSON.stringify(value), "utf8");
157
+ } catch {
158
+ return Promise.reject(
159
+ new Error("External tool guard request is not JSON serializable.")
160
+ );
161
+ }
162
+ if (body.byteLength > MAX_REQUEST_BYTES) {
163
+ return Promise.reject(
164
+ new Error("External tool guard request exceeds the size limit.")
165
+ );
166
+ }
167
+ const transport = this.endpoint.protocol === "https:" ? https : http;
168
+ return new Promise((resolve, reject) => {
169
+ let settled = false;
170
+ const finish = /* @__PURE__ */ __name((error, result) => {
171
+ if (settled) return;
172
+ settled = true;
173
+ clearTimeout(timer);
174
+ if (error) reject(error);
175
+ else resolve(result);
176
+ }, "finish");
177
+ const hostname = this.endpoint.hostname;
178
+ const localhost = hostname.toLowerCase() === "localhost";
179
+ const request = transport.request(
180
+ {
181
+ protocol: this.endpoint.protocol,
182
+ hostname: localhost ? "127.0.0.1" : hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : hostname,
183
+ port: this.endpoint.port || void 0,
184
+ // A security boundary must not inherit a process-global Agent that
185
+ // an embedding or dependency could have replaced with proxy logic.
186
+ agent: false,
187
+ ...localhost && this.endpoint.protocol === "https:" ? { servername: "localhost" } : {},
188
+ method: "POST",
189
+ path: pathname,
190
+ headers: {
191
+ authorization: `Bearer ${this.token}`,
192
+ "content-type": "application/json",
193
+ accept: "application/json",
194
+ host: this.endpoint.host,
195
+ "content-length": String(body.byteLength)
196
+ }
197
+ },
198
+ (response) => {
199
+ const chunks = [];
200
+ let received = 0;
201
+ response.on("data", (chunk) => {
202
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
203
+ received += bytes.byteLength;
204
+ if (received > MAX_RESPONSE_BYTES) {
205
+ finish(
206
+ new Error(
207
+ "External tool guard response exceeds the size limit."
208
+ )
209
+ );
210
+ response.destroy();
211
+ return;
212
+ }
213
+ chunks.push(bytes);
214
+ });
215
+ response.on("end", () => {
216
+ if (response.statusCode !== 200) {
217
+ finish(
218
+ new Error(
219
+ `External tool guard returned HTTP ${response.statusCode ?? "unknown"}.`
220
+ )
221
+ );
222
+ return;
223
+ }
224
+ const contentType = response.headers["content-type"];
225
+ if (typeof contentType !== "string" || !/^application\/json(?:\s*;|$)/iu.test(contentType)) {
226
+ finish(
227
+ new Error(
228
+ "External tool guard returned a non-JSON content type."
229
+ )
230
+ );
231
+ return;
232
+ }
233
+ try {
234
+ finish(
235
+ void 0,
236
+ JSON.parse(Buffer.concat(chunks).toString("utf8"))
237
+ );
238
+ } catch {
239
+ finish(new Error("External tool guard returned malformed JSON."));
240
+ }
241
+ });
242
+ response.on("error", () => {
243
+ finish(new Error("External tool guard response failed."));
244
+ });
245
+ response.on("aborted", () => {
246
+ finish(new Error("External tool guard response was aborted."));
247
+ });
248
+ }
249
+ );
250
+ const timer = setTimeout(() => {
251
+ request.destroy();
252
+ finish(new Error("External tool guard request timed out."));
253
+ }, this.timeoutMs);
254
+ timer.unref();
255
+ request.on("error", () => {
256
+ finish(new Error("External tool guard request failed."));
257
+ });
258
+ request.end(body);
259
+ });
260
+ }
261
+ };
262
+ export {
263
+ DEFAULT_EXTERNAL_TOOL_GUARD_TIMEOUT_MS,
264
+ EXTERNAL_TOOL_GUARD_PROTOCOL_VERSION,
265
+ MAX_EXTERNAL_TOOL_GUARD_TIMEOUT_MS,
266
+ MIN_EXTERNAL_TOOL_GUARD_TIMEOUT_MS,
267
+ RequiredExternalToolGuard
268
+ };
269
+ /**
270
+ * @license
271
+ * Copyright 2025 Qwen Team
272
+ * SPDX-License-Identifier: Apache-2.0
273
+ */
@@ -1,11 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- getHeadlessYoloSafetyWarning
5
- } from "./chunk-6H67XLET.js";
6
3
  import {
7
4
  RUNTIME_STARTUP_CANCELLED_MESSAGE
8
5
  } from "./chunk-QUPXZXLV.js";
6
+ import {
7
+ getHeadlessYoloSafetyWarning
8
+ } from "./chunk-6H67XLET.js";
9
9
  import {
10
10
  isValidMemoryBudgetMb,
11
11
  memoryBudgetRangeError
@@ -341,7 +341,7 @@ async function maybeOpenWebShellBrowser(handle, open) {
341
341
  } catch {
342
342
  return;
343
343
  }
344
- const { maybeOpenWebShellBrowser: openBrowser } = await import("./serve-ROEGMS3I.js");
344
+ const { maybeOpenWebShellBrowser: openBrowser } = await import("./serve-67T3P7XI.js");
345
345
  await openBrowser(handle, true);
346
346
  }
347
347
  __name(maybeOpenWebShellBrowser, "maybeOpenWebShellBrowser");
@@ -403,7 +403,7 @@ async function tryRunServeFastPath(rawArgv = process.argv.slice(2)) {
403
403
  process.exit(1);
404
404
  }
405
405
  writeServeWarnings(parsed);
406
- const { runQwenServe } = await import("./run-qwen-serve-K5W6MM6M.js");
406
+ const { runQwenServe } = await import("./run-qwen-serve-3JN75CIQ.js");
407
407
  let handle;
408
408
  try {
409
409
  handle = await runQwenServe(parsed.options, {