@qwen-code/qwen-code 0.19.3-nightly.20260701.a974594d7 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/bundled/loop/loop-tick-resolver.test.ts +42 -0
  2. package/bundled/loop/loop-tick-resolver.ts +1 -1
  3. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  4. package/bundled/qc-helper/docs/configuration/settings.md +23 -11
  5. package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
  6. package/bundled/qc-helper/docs/features/auto-mode.md +40 -0
  7. package/bundled/qc-helper/docs/features/channels/overview.md +81 -18
  8. package/bundled/qc-helper/docs/features/code-review.md +17 -61
  9. package/bundled/qc-helper/docs/features/commands.md +6 -6
  10. package/bundled/qc-helper/docs/features/mcp.md +3 -1
  11. package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
  12. package/bundled/qc-helper/docs/qwen-serve.md +19 -0
  13. package/bundled/review/DESIGN.md +21 -26
  14. package/bundled/review/SKILL.md +45 -129
  15. package/chunks/{MaxSizedBox-UZHJ73JB.js → MaxSizedBox-ERTNFI22.js} +20 -18
  16. package/chunks/{StandaloneSessionPicker-GGUIZWCE.js → StandaloneSessionPicker-Y5NGRLRY.js} +32 -29
  17. package/chunks/{acpAgent-QYZFICEZ.js → acpAgent-UMN6OYTR.js} +473 -187
  18. package/chunks/{agent-2EN7YNSW.js → agent-56DZU4ZU.js} +17 -15
  19. package/chunks/{agent-headless-SLTEZ5LV.js → agent-headless-SR7N2IJG.js} +17 -15
  20. package/chunks/{anthropicContentGenerator-CA3JTAMO.js → anthropicContentGenerator-5OZFO6WQ.js} +1 -1
  21. package/chunks/{artifact-tool-RM7WINJO.js → artifact-tool-JVZMHA4B.js} +1 -1
  22. package/chunks/{askUserQuestion-J3P6QAJ7.js → askUserQuestion-CMJZ2F3D.js} +1 -1
  23. package/chunks/{bridge-HZVAUTMX.js → bridge-AUHNFOUS.js} +23 -21
  24. package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
  25. package/chunks/{chunk-N4V4VBP6.js → chunk-2X2JUE47.js} +2 -2
  26. package/chunks/{chunk-JV7A66DR.js → chunk-4VZH35PN.js} +528 -358
  27. package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
  28. package/chunks/{chunk-WGY3GIPP.js → chunk-6AQR7732.js} +1 -1
  29. package/chunks/{chunk-FR3II765.js → chunk-6CIIP6OE.js} +4 -4
  30. package/chunks/{chunk-IKO44NAT.js → chunk-6TLY5W3B.js} +2 -2
  31. package/chunks/{chunk-VN4CKYUW.js → chunk-73H73ASU.js} +1 -1
  32. package/chunks/{chunk-IBEM64M4.js → chunk-75X2VLSH.js} +36 -25
  33. package/chunks/{chunk-PLQTLKMR.js → chunk-7KPI4LAI.js} +3 -3
  34. package/chunks/{chunk-NVTRORSK.js → chunk-7VPC7D7O.js} +2 -2
  35. package/chunks/chunk-AHNXYU4O.js +24 -0
  36. package/chunks/{chunk-MTJVHQDP.js → chunk-B7KGXIPZ.js} +302 -257
  37. package/chunks/{chunk-35FH347N.js → chunk-BFG6OZN7.js} +16097 -16236
  38. package/chunks/{chunk-T44AF4I6.js → chunk-BNJLLAQ7.js} +1 -1
  39. package/chunks/{chunk-OEY3YAL2.js → chunk-BQNJBEUA.js} +2 -2
  40. package/chunks/{chunk-Q7TDHJ2G.js → chunk-C2IHHGBZ.js} +10 -10
  41. package/chunks/chunk-CG7SVARK.js +367 -0
  42. package/chunks/{chunk-7SP275SH.js → chunk-CS5XYDBO.js} +5 -5
  43. package/chunks/{chunk-V5YJAUHW.js → chunk-CUGEBAKG.js} +1 -1
  44. package/chunks/{chunk-FQDMX5IL.js → chunk-D5KISTLW.js} +309 -72
  45. package/chunks/{chunk-I4MXURND.js → chunk-DQ74W65K.js} +356 -468
  46. package/chunks/chunk-E5A7LHNN.js +51 -0
  47. package/chunks/{chunk-3PJXIDKI.js → chunk-E6US47KI.js} +3 -27
  48. package/chunks/chunk-EDAGQADF.js +21 -0
  49. package/chunks/{chunk-HUGAEYZR.js → chunk-FNLXLI4I.js} +2 -2
  50. package/chunks/{chunk-WJAY4WXR.js → chunk-FYKX6XOT.js} +1 -1
  51. package/chunks/{chunk-CA4ML3VH.js → chunk-G7OQ3RFJ.js} +1 -1
  52. package/chunks/{chunk-VHRREANT.js → chunk-GICCHL2Q.js} +3 -1
  53. package/chunks/{chunk-QHHNFG22.js → chunk-GLPV75ES.js} +1 -1
  54. package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
  55. package/chunks/chunk-HI55Z6PR.js +3523 -0
  56. package/chunks/{chunk-B5MPZI4K.js → chunk-HJDF3ZVU.js} +2670 -1233
  57. package/chunks/{chunk-GDIG7TMG.js → chunk-HRZB5CSC.js} +1 -1
  58. package/chunks/{chunk-LDWTYE33.js → chunk-J3F7X3LW.js} +1 -1
  59. package/chunks/{chunk-FV4SQ54H.js → chunk-KVPFPC4J.js} +227 -85
  60. package/chunks/{chunk-Q3JOGB4U.js → chunk-L7QPM2YD.js} +1 -1
  61. package/chunks/{chunk-4722VFFU.js → chunk-L7VH7HQA.js} +6 -6
  62. package/chunks/{chunk-HWG4XLD7.js → chunk-LKWAVAB5.js} +1 -1
  63. package/chunks/{chunk-YCRTJYSQ.js → chunk-MEQWZGK5.js} +1 -1
  64. package/chunks/{chunk-6FIWYVN4.js → chunk-MKHC4BYZ.js} +30 -5
  65. package/chunks/{chunk-YCEHOJZJ.js → chunk-MNDTD5E5.js} +65 -38
  66. package/chunks/{chunk-ZGSV5ORL.js → chunk-MVZXZWGT.js} +809 -759
  67. package/chunks/chunk-MX2YXRER.js +44 -0
  68. package/chunks/{chunk-TMILTLP3.js → chunk-ND25GXEU.js} +21 -4
  69. package/chunks/{chunk-AIBPG5MB.js → chunk-OAFUMTWW.js} +2 -2
  70. package/chunks/chunk-OJCECIJA.js +238 -0
  71. package/chunks/{chunk-EUURTJY7.js → chunk-PIYV6COW.js} +1 -1
  72. package/chunks/{chunk-LXEW6BHF.js → chunk-Q7VHIRDD.js} +1 -1
  73. package/chunks/{chunk-DBR7PF4B.js → chunk-QAFQLTXG.js} +1 -1
  74. package/chunks/{chunk-3TK7FSCP.js → chunk-QMIND2AS.js} +3 -3
  75. package/chunks/{chunk-ESVSWG6Z.js → chunk-QOMAHFYI.js} +1 -1
  76. package/chunks/{chunk-J37FGIOA.js → chunk-QXPI7FEC.js} +38 -4
  77. package/chunks/chunk-RM3PGSGL.js +66 -0
  78. package/chunks/chunk-RNBYOUGV.js +42 -0
  79. package/chunks/chunk-S5EQPDTM.js +91 -0
  80. package/chunks/{chunk-GZKQ36JS.js → chunk-SFN4TEHY.js} +4 -4
  81. package/chunks/{chunk-DHXWNSJA.js → chunk-T22H4V4R.js} +42 -0
  82. package/chunks/{chunk-LXGWLOCM.js → chunk-TENOUWY2.js} +1 -1
  83. package/chunks/{chunk-BLAE2TCO.js → chunk-TTFNVEO5.js} +3 -3
  84. package/chunks/{chunk-FZY7NH37.js → chunk-UANCYOOQ.js} +1 -1
  85. package/chunks/{chunk-E5I6YSNO.js → chunk-UQFP2FEF.js} +1 -1
  86. package/chunks/{chunk-3O2BJMFW.js → chunk-UQYOMM6J.js} +4 -4
  87. package/chunks/{chunk-JERW36RG.js → chunk-UT5JU5DJ.js} +15 -15
  88. package/chunks/{chunk-DJ25MIU2.js → chunk-VKGG724L.js} +8 -8
  89. package/chunks/{chunk-G525INVW.js → chunk-W2ZOAX7F.js} +3 -3
  90. package/chunks/{chunk-HIYUAXBG.js → chunk-W6X4FGWX.js} +1 -1
  91. package/chunks/{chunk-OE5J6UA7.js → chunk-XCUFHOAD.js} +1 -1
  92. package/chunks/{chunk-KXVVXAAC.js → chunk-YBDZ63KI.js} +3 -3
  93. package/chunks/{chunk-Z34RYLRO.js → chunk-ZJP5T7IA.js} +1 -1
  94. package/chunks/{chunk-NOYV2NXI.js → chunk-ZXCVPMIK.js} +411 -43
  95. package/chunks/{computer-use-FCNWHVPW.js → computer-use-VWN5HH6A.js} +20 -18
  96. package/chunks/{contextCommand-FVFMZZEU.js → contextCommand-DFFG5KDJ.js} +19 -17
  97. package/chunks/{cron-create-IY5NMIHQ.js → cron-create-CSSWJ67I.js} +1 -1
  98. package/chunks/{cron-delete-OLNEQWKO.js → cron-delete-E56CFQ7A.js} +1 -1
  99. package/chunks/{cron-list-YAUAUV24.js → cron-list-BKSINY6Y.js} +1 -1
  100. package/chunks/daemon-5T6IHWJV.js +8430 -0
  101. package/chunks/{daemon-status-provider-42JEXENZ.js → daemon-status-provider-V5UY7O7J.js} +26 -24
  102. package/chunks/{dist-4FCNM6KJ.js → dist-2HDL5SHQ.js} +2 -2
  103. package/chunks/{dist-SU6L7ZNJ.js → dist-B7SSDVWT.js} +3 -3
  104. package/chunks/{dist-VD7HXTML.js → dist-BL3SL665.js} +1 -1
  105. package/chunks/{dist-UKPWQJCL.js → dist-TAVAGZU6.js} +37 -13
  106. package/chunks/{dist-K4XZILIO.js → dist-XBOVZ3R5.js} +26 -5
  107. package/chunks/{earlyInputCapture-FFFEC6P4.js → earlyInputCapture-VVYU4FDO.js} +17 -15
  108. package/chunks/{edit-32ILSGZY.js → edit-F35PTMBA.js} +17 -15
  109. package/chunks/{en-U3LWGSFX.js → en-FZREZFPO.js} +18 -0
  110. package/chunks/{enter-worktree-XWZKIN6A.js → enter-worktree-3DIW7EGJ.js} +17 -15
  111. package/chunks/{enterPlanMode-LPFFY7BJ.js → enterPlanMode-QNXT77KP.js} +27 -15
  112. package/chunks/{errors-UXBPYPI2.js → errors-M53YG76R.js} +19 -17
  113. package/chunks/{exit-worktree-IBS4UIU7.js → exit-worktree-BSDWNWHZ.js} +17 -15
  114. package/chunks/{exitPlanMode-JA72YHII.js → exitPlanMode-EL7AY327.js} +41 -23
  115. package/chunks/{fast-path-7UU67Y2W.js → fast-path-DUCSMUFW.js} +2 -2
  116. package/chunks/{gemini-GMVKJNMX.js → gemini-F3IERB37.js} +59 -51
  117. package/chunks/{geminiContentGenerator-7NIFF2L4.js → geminiContentGenerator-6OULAKFQ.js} +1 -1
  118. package/chunks/{glob-4NJCW5HI.js → glob-ZMLFTD4T.js} +17 -15
  119. package/chunks/{grep-PAIMLQEL.js → grep-H5X66EI7.js} +17 -15
  120. package/chunks/{initializer-R6KU4VYM.js → initializer-LEOT2OLH.js} +21 -19
  121. package/chunks/{list-H7LXAO64.js → list-M3DKXML6.js} +23 -21
  122. package/chunks/{loadedSettingsAdapter-H27JMTLU.js → loadedSettingsAdapter-OKMQFGGG.js} +21 -19
  123. package/chunks/{loop-wakeup-Y3OIRQFM.js → loop-wakeup-FPBAVVPR.js} +2 -2
  124. package/chunks/{ls-TVJEYS7O.js → ls-UGWQXPTY.js} +1 -1
  125. package/chunks/{lsp-JZSDVR3F.js → lsp-24WV7NXB.js} +1 -1
  126. package/chunks/{monitor-JSIHDPXP.js → monitor-ARL5P45R.js} +19 -16
  127. package/chunks/{nonInteractiveCli-Y4CHOETG.js → nonInteractiveCli-NUVLF3YR.js} +53 -45
  128. package/chunks/{notebook-edit-SHRNL2UM.js → notebook-edit-ANTZ2DDY.js} +17 -15
  129. package/chunks/{openaiContentGenerator-ORZZ7VFO.js → openaiContentGenerator-TFGMKGHN.js} +6 -6
  130. package/chunks/pidfile-AWTL4C63.js +72 -0
  131. package/chunks/{qwenContentGenerator-H643PL2G.js → qwenContentGenerator-6QWAYTWS.js} +18 -16
  132. package/chunks/{qwenOAuth2-OI2B7PES.js → qwenOAuth2-LWLA6MQG.js} +3 -3
  133. package/chunks/{read-file-5PRNPTTY.js → read-file-EJY73XQ3.js} +4 -4
  134. package/chunks/{read-mcp-resource-QTXGKTEV.js → read-mcp-resource-NCBTPP7X.js} +1 -1
  135. package/chunks/{ripGrep-JIKZMABJ.js → ripGrep-HC4SA6CQ.js} +17 -15
  136. package/chunks/{run-qwen-serve-PQV7QOHZ.js → run-qwen-serve-AGLZ642J.js} +291 -55
  137. package/chunks/{scheduler-OS3R5MGU.js → scheduler-TURO7NGY.js} +17 -15
  138. package/chunks/{send-message-DKGHWSTF.js → send-message-3S2NYS3O.js} +5 -3
  139. package/chunks/{serve-LVYZDKCZ.js → serve-5DAMOIDW.js} +22 -19
  140. package/chunks/{server-P4YIH35I.js → server-4AGEK2HC.js} +2268 -1222
  141. package/chunks/{session-DE4TZBKH.js → session-7ZOQUC4Y.js} +54 -46
  142. package/chunks/{settings-DFTYMJYF.js → settings-DR4V6L5Y.js} +20 -18
  143. package/chunks/{shell-3GNQLNV7.js → shell-H5WFKUXH.js} +17 -15
  144. package/chunks/{skill-NCNG4KKZ.js → skill-ANHU5ZCR.js} +4 -4
  145. package/chunks/{spawnChannel-DHRIMDVL.js → spawnChannel-VN5LJV7Z.js} +19 -17
  146. package/chunks/{src-PNZYGM3R.js → src-OVZLTVVM.js} +49 -17
  147. package/chunks/{startInteractiveUI-P6GZBFQW.js → startInteractiveUI-OA22V32P.js} +11110 -10670
  148. package/chunks/{syntheticOutput-X7L5HWLN.js → syntheticOutput-SV7GBHZ5.js} +2 -2
  149. package/chunks/{task-create-AWEUI4GI.js → task-create-W2H2UJCH.js} +6 -5
  150. package/chunks/{task-list-KZ3VJLDU.js → task-list-THBOPV4G.js} +5 -4
  151. package/chunks/{task-stop-GUNOZKJ5.js → task-stop-33FVCNCJ.js} +1 -1
  152. package/chunks/{task-update-Y56GP6DU.js → task-update-LVFQLXEI.js} +6 -5
  153. package/chunks/{team-create-6JMW3KQK.js → team-create-OYL5CAQO.js} +17 -15
  154. package/chunks/{team-delete-6AFRGDJY.js → team-delete-NTUQ25UY.js} +5 -4
  155. package/chunks/{theme-manager-FEHQO22G.js → theme-manager-XCMPF2SI.js} +17 -15
  156. package/chunks/{todoWrite-JRS6NOEU.js → todoWrite-SEPO2RI3.js} +1 -1
  157. package/chunks/{tool-search-IXAEKS7J.js → tool-search-YXW55X6Z.js} +29 -5
  158. package/chunks/{trustedFolders-SJRXNHZE.js → trustedFolders-TEPGM5YL.js} +18 -16
  159. package/chunks/{validateNonInterActiveAuth-HCH7OBDH.js → validateNonInterActiveAuth-OQIS7WUE.js} +50 -42
  160. package/chunks/{web-fetch-RELNL37A.js → web-fetch-OE7LHURA.js} +4 -4
  161. package/chunks/{workflow-M2COBI7R.js → workflow-RTUWORAP.js} +48 -27
  162. package/chunks/{workspace-providers-status-GOCWYDMK.js → workspace-providers-status-DM2XANVB.js} +23 -21
  163. package/chunks/{workspace-service-34C7SUBU.js → workspace-service-VKBI2KZD.js} +27 -25
  164. package/chunks/{write-file-E52WRXZL.js → write-file-WGALQ53L.js} +17 -15
  165. package/chunks/{zh-TW-LKLBTZHE.js → zh-TW-6GIKXEAN.js} +18 -0
  166. package/chunks/{zh-F5T4WWZO.js → zh-V3B4TFWL.js} +18 -0
  167. package/cli.js +6 -6
  168. package/locales/en.js +30 -0
  169. package/locales/fr.js +1 -2
  170. package/locales/ja.js +1 -2
  171. package/locales/zh-TW.js +29 -0
  172. package/locales/zh.js +29 -0
  173. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  174. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  175. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  176. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  177. package/package.json +3 -3
  178. package/web-shell/assets/{arc-C2DILvUl.js → arc-Det5Ccum.js} +1 -1
  179. package/web-shell/assets/{architectureDiagram-3BPJPVTR-b8gZ2cNw.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
  180. package/web-shell/assets/{blockDiagram-GPEHLZMM-BuRpghMj.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
  181. package/web-shell/assets/{c4Diagram-AAUBKEIU-2ItdhFmE.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
  182. package/web-shell/assets/channel-Bm0bFauD.js +1 -0
  183. package/web-shell/assets/{chunk-2J33WTMH-B1QXa0q3.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
  184. package/web-shell/assets/{chunk-4BX2VUAB-DXfhKlNq.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
  185. package/web-shell/assets/{chunk-55IACEB6-ClSNjxLo.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
  186. package/web-shell/assets/{chunk-727SXJPM-Dsh2wisB.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
  187. package/web-shell/assets/{chunk-AQP2D5EJ-C1TkY5AR.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
  188. package/web-shell/assets/{chunk-FMBD7UC4-CGtN9XR6.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
  189. package/web-shell/assets/{chunk-ND2GUHAM-BHiPi1SS.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
  190. package/web-shell/assets/{chunk-QZHKN3VN-CzG3I5o1.js → chunk-QZHKN3VN-a8PtLMck.js} +1 -1
  191. package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +1 -0
  192. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +1 -0
  193. package/web-shell/assets/{cose-bilkent-S5V4N54A-EgrIoH_K.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
  194. package/web-shell/assets/{dagre-BM42HDAG-BUnpdX8S.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
  195. package/web-shell/assets/{diagram-2AECGRRQ-BlLUCVYu.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
  196. package/web-shell/assets/{diagram-5GNKFQAL-FG-enmjQ.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
  197. package/web-shell/assets/{diagram-KO2AKTUF-BlzmTONk.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
  198. package/web-shell/assets/{diagram-LMA3HP47-CoBQ8mIx.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
  199. package/web-shell/assets/{diagram-OG6HWLK6-DvxV6sX8.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
  200. package/web-shell/assets/{erDiagram-TEJ5UH35-Jq1tpAoj.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
  201. package/web-shell/assets/{flowDiagram-I6XJVG4X-CbtYOry5.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
  202. package/web-shell/assets/{ganttDiagram-6RSMTGT7-ZEn2VEKR.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
  203. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BZh-LkhJ.js → gitGraphDiagram-PVQCEYII-DPrmySxO.js} +1 -1
  204. package/web-shell/assets/index-BpKnmyFV.js +717 -0
  205. package/web-shell/assets/index-fLrtxpOG.css +5 -0
  206. package/web-shell/assets/{infoDiagram-5YYISTIA-B9HuZygK.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
  207. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D76cNpYG.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
  208. package/web-shell/assets/{journeyDiagram-JHISSGLW-6bGo7P1t.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
  209. package/web-shell/assets/{kanban-definition-UN3LZRKU-DuYyRBvB.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
  210. package/web-shell/assets/{linear-CpdSW1BC.js → linear-CQ6irBL9.js} +1 -1
  211. package/web-shell/assets/{mermaid.core-s5xbZMMj.js → mermaid.core-DtB6NO1e.js} +72 -72
  212. package/web-shell/assets/{mindmap-definition-RKZ34NQL-go01fZ2y.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
  213. package/web-shell/assets/{pieDiagram-4H26LBE5-BfuZiEHO.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
  214. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DsoINqV6.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
  215. package/web-shell/assets/{requirementDiagram-4Y6WPE33-B7FU4LiU.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
  216. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BEDjFnGB.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
  217. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-gzmmL5tK.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
  218. package/web-shell/assets/{stateDiagram-AJRCARHV-BtHD4IN_.js → stateDiagram-AJRCARHV-BjwUmrJF.js} +1 -1
  219. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +1 -0
  220. package/web-shell/assets/{timeline-definition-PNZ67QCA-T_8gmMCf.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
  221. package/web-shell/assets/{vennDiagram-CIIHVFJN-DdjuqnjO.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
  222. package/web-shell/assets/{wardley-L42UT6IY-Cgtrvb37.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
  223. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BW3f3-yW.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
  224. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BUS9IKkc.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
  225. package/web-shell/index.html +18 -2
  226. package/chunks/chunk-2JKEQWDZ.js +0 -1596
  227. package/chunks/chunk-32MCHZQC.js +0 -73
  228. package/chunks/chunk-UAKXW3DN.js +0 -30
  229. package/web-shell/assets/channel-eRvn2UA3.js +0 -1
  230. package/web-shell/assets/classDiagram-4FO5ZUOK-YZNwy1rx.js +0 -1
  231. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-YZNwy1rx.js +0 -1
  232. package/web-shell/assets/index-5FhE0ORO.css +0 -5
  233. package/web-shell/assets/index-CDTGmqVm.js +0 -720
  234. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DFy6gLDd.js +0 -1
@@ -1,5 +1,8 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ isLoopbackBind
5
+ } from "./chunk-RNBYOUGV.js";
3
6
  import {
4
7
  require_lib
5
8
  } from "./chunk-3HX5LZ6R.js";
@@ -11332,13 +11335,13 @@ var require_is_promise = __commonJS({
11332
11335
  }
11333
11336
  });
11334
11337
 
11335
- // node_modules/router/node_modules/path-to-regexp/dist/index.js
11338
+ // node_modules/path-to-regexp/dist/index.js
11336
11339
  var require_dist2 = __commonJS({
11337
- "node_modules/router/node_modules/path-to-regexp/dist/index.js"(exports) {
11340
+ "node_modules/path-to-regexp/dist/index.js"(exports) {
11338
11341
  "use strict";
11339
11342
  init_esbuild_shims();
11340
11343
  Object.defineProperty(exports, "__esModule", { value: true });
11341
- exports.TokenData = void 0;
11344
+ exports.PathError = exports.TokenData = void 0;
11342
11345
  exports.parse = parse;
11343
11346
  exports.compile = compile;
11344
11347
  exports.match = match;
@@ -11348,176 +11351,129 @@ var require_dist2 = __commonJS({
11348
11351
  var NOOP_VALUE = /* @__PURE__ */ __name((value) => value, "NOOP_VALUE");
11349
11352
  var ID_START = /^[$_\p{ID_Start}]$/u;
11350
11353
  var ID_CONTINUE = /^[$\u200c\u200d\p{ID_Continue}]$/u;
11351
- var DEBUG_URL = "https://git.new/pathToRegexpError";
11352
- var SIMPLE_TOKENS = {
11353
- // Groups.
11354
- "{": "{",
11355
- "}": "}",
11356
- // Reserved.
11357
- "(": "(",
11358
- ")": ")",
11359
- "[": "[",
11360
- "]": "]",
11361
- "+": "+",
11362
- "?": "?",
11363
- "!": "!"
11364
- };
11354
+ var ID = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;
11365
11355
  function escapeText(str) {
11366
- return str.replace(/[{}()\[\]+?!:*]/g, "\\$&");
11356
+ return str.replace(/[{}()\[\]+?!:*\\]/g, "\\$&");
11367
11357
  }
11368
11358
  __name(escapeText, "escapeText");
11369
11359
  function escape(str) {
11370
11360
  return str.replace(/[.+*?^${}()[\]|/\\]/g, "\\$&");
11371
11361
  }
11372
11362
  __name(escape, "escape");
11373
- function* lexer(str) {
11374
- const chars = [...str];
11375
- let i = 0;
11376
- function name() {
11377
- let value = "";
11378
- if (ID_START.test(chars[++i])) {
11379
- value += chars[i];
11380
- while (ID_CONTINUE.test(chars[++i])) {
11381
- value += chars[i];
11382
- }
11383
- } else if (chars[i] === '"') {
11384
- let pos = i;
11385
- while (i < chars.length) {
11386
- if (chars[++i] === '"') {
11387
- i++;
11388
- pos = 0;
11389
- break;
11390
- }
11391
- if (chars[i] === "\\") {
11392
- value += chars[++i];
11393
- } else {
11394
- value += chars[i];
11395
- }
11396
- }
11397
- if (pos) {
11398
- throw new TypeError(`Unterminated quote at ${pos}: ${DEBUG_URL}`);
11399
- }
11400
- }
11401
- if (!value) {
11402
- throw new TypeError(`Missing parameter name at ${i}: ${DEBUG_URL}`);
11403
- }
11404
- return value;
11405
- }
11406
- __name(name, "name");
11407
- while (i < chars.length) {
11408
- const value = chars[i];
11409
- const type = SIMPLE_TOKENS[value];
11410
- if (type) {
11411
- yield { type, index: i++, value };
11412
- } else if (value === "\\") {
11413
- yield { type: "ESCAPED", index: i++, value: chars[i++] };
11414
- } else if (value === ":") {
11415
- const value2 = name();
11416
- yield { type: "PARAM", index: i, value: value2 };
11417
- } else if (value === "*") {
11418
- const value2 = name();
11419
- yield { type: "WILDCARD", index: i, value: value2 };
11420
- } else {
11421
- yield { type: "CHAR", index: i, value: chars[i++] };
11422
- }
11423
- }
11424
- return { type: "END", index: i, value: "" };
11425
- }
11426
- __name(lexer, "lexer");
11427
- var Iter = class {
11363
+ var TokenData = class {
11428
11364
  static {
11429
- __name(this, "Iter");
11365
+ __name(this, "TokenData");
11430
11366
  }
11431
- constructor(tokens) {
11367
+ constructor(tokens, originalPath) {
11432
11368
  this.tokens = tokens;
11433
- }
11434
- peek() {
11435
- if (!this._peek) {
11436
- const next = this.tokens.next();
11437
- this._peek = next.value;
11438
- }
11439
- return this._peek;
11440
- }
11441
- tryConsume(type) {
11442
- const token = this.peek();
11443
- if (token.type !== type)
11444
- return;
11445
- this._peek = void 0;
11446
- return token.value;
11447
- }
11448
- consume(type) {
11449
- const value = this.tryConsume(type);
11450
- if (value !== void 0)
11451
- return value;
11452
- const { type: nextType, index } = this.peek();
11453
- throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}: ${DEBUG_URL}`);
11454
- }
11455
- text() {
11456
- let result = "";
11457
- let value;
11458
- while (value = this.tryConsume("CHAR") || this.tryConsume("ESCAPED")) {
11459
- result += value;
11460
- }
11461
- return result;
11369
+ this.originalPath = originalPath;
11462
11370
  }
11463
11371
  };
11464
- var TokenData = class {
11372
+ exports.TokenData = TokenData;
11373
+ var PathError = class extends TypeError {
11465
11374
  static {
11466
- __name(this, "TokenData");
11375
+ __name(this, "PathError");
11467
11376
  }
11468
- constructor(tokens) {
11469
- this.tokens = tokens;
11377
+ constructor(message, originalPath) {
11378
+ let text = message;
11379
+ if (originalPath)
11380
+ text += `: ${originalPath}`;
11381
+ text += `; visit https://git.new/pathToRegexpError for info`;
11382
+ super(text);
11383
+ this.originalPath = originalPath;
11470
11384
  }
11471
11385
  };
11472
- exports.TokenData = TokenData;
11386
+ exports.PathError = PathError;
11473
11387
  function parse(str, options = {}) {
11474
11388
  const { encodePath = NOOP_VALUE } = options;
11475
- const it = new Iter(lexer(str));
11476
- function consume(endType) {
11477
- const tokens2 = [];
11478
- while (true) {
11479
- const path3 = it.text();
11480
- if (path3)
11481
- tokens2.push({ type: "text", value: encodePath(path3) });
11482
- const param = it.tryConsume("PARAM");
11483
- if (param) {
11484
- tokens2.push({
11485
- type: "param",
11486
- name: param
11487
- });
11389
+ const chars = [...str];
11390
+ let index = 0;
11391
+ function consumeUntil(end) {
11392
+ const output = [];
11393
+ let path3 = "";
11394
+ function writePath() {
11395
+ if (!path3)
11396
+ return;
11397
+ output.push({
11398
+ type: "text",
11399
+ value: encodePath(path3)
11400
+ });
11401
+ path3 = "";
11402
+ }
11403
+ __name(writePath, "writePath");
11404
+ while (index < chars.length) {
11405
+ const value = chars[index++];
11406
+ if (value === end) {
11407
+ writePath();
11408
+ return output;
11409
+ }
11410
+ if (value === "\\") {
11411
+ if (index === chars.length) {
11412
+ throw new PathError(`Unexpected end after \\ at index ${index}`, str);
11413
+ }
11414
+ path3 += chars[index++];
11488
11415
  continue;
11489
11416
  }
11490
- const wildcard = it.tryConsume("WILDCARD");
11491
- if (wildcard) {
11492
- tokens2.push({
11493
- type: "wildcard",
11494
- name: wildcard
11495
- });
11417
+ if (value === ":" || value === "*") {
11418
+ const type = value === ":" ? "param" : "wildcard";
11419
+ let name = "";
11420
+ if (ID_START.test(chars[index])) {
11421
+ do {
11422
+ name += chars[index++];
11423
+ } while (ID_CONTINUE.test(chars[index]));
11424
+ } else if (chars[index] === '"') {
11425
+ let quoteStart = index;
11426
+ while (index < chars.length) {
11427
+ if (chars[++index] === '"') {
11428
+ index++;
11429
+ quoteStart = 0;
11430
+ break;
11431
+ }
11432
+ if (chars[index] === "\\")
11433
+ index++;
11434
+ name += chars[index];
11435
+ }
11436
+ if (quoteStart) {
11437
+ throw new PathError(`Unterminated quote at index ${quoteStart}`, str);
11438
+ }
11439
+ }
11440
+ if (!name) {
11441
+ throw new PathError(`Missing parameter name at index ${index}`, str);
11442
+ }
11443
+ writePath();
11444
+ output.push({ type, name });
11496
11445
  continue;
11497
11446
  }
11498
- const open = it.tryConsume("{");
11499
- if (open) {
11500
- tokens2.push({
11447
+ if (value === "{") {
11448
+ writePath();
11449
+ output.push({
11501
11450
  type: "group",
11502
- tokens: consume("}")
11451
+ tokens: consumeUntil("}")
11503
11452
  });
11504
11453
  continue;
11505
11454
  }
11506
- it.consume(endType);
11507
- return tokens2;
11455
+ if (value === "}" || value === "(" || value === ")" || value === "[" || value === "]" || value === "+" || value === "?" || value === "!") {
11456
+ throw new PathError(`Unexpected ${value} at index ${index - 1}`, str);
11457
+ }
11458
+ path3 += value;
11508
11459
  }
11460
+ if (end) {
11461
+ throw new PathError(`Unexpected end at index ${index}, expected ${end}`, str);
11462
+ }
11463
+ writePath();
11464
+ return output;
11509
11465
  }
11510
- __name(consume, "consume");
11511
- const tokens = consume("END");
11512
- return new TokenData(tokens);
11466
+ __name(consumeUntil, "consumeUntil");
11467
+ return new TokenData(consumeUntil(""), str);
11513
11468
  }
11514
11469
  __name(parse, "parse");
11515
11470
  function compile(path3, options = {}) {
11516
11471
  const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
11517
- const data = path3 instanceof TokenData ? path3 : parse(path3, options);
11472
+ const data = typeof path3 === "object" ? path3 : parse(path3, options);
11518
11473
  const fn = tokensToFunction(data.tokens, delimiter, encode);
11519
- return /* @__PURE__ */ __name(function path4(data2 = {}) {
11520
- const [path5, ...missing] = fn(data2);
11474
+ return /* @__PURE__ */ __name(function path4(params = {}) {
11475
+ const missing = [];
11476
+ const path5 = fn(params, missing);
11521
11477
  if (missing.length) {
11522
11478
  throw new TypeError(`Missing parameters: ${missing.join(", ")}`);
11523
11479
  }
@@ -11527,12 +11483,10 @@ var require_dist2 = __commonJS({
11527
11483
  __name(compile, "compile");
11528
11484
  function tokensToFunction(tokens, delimiter, encode) {
11529
11485
  const encoders = tokens.map((token) => tokenToFunction(token, delimiter, encode));
11530
- return (data) => {
11531
- const result = [""];
11486
+ return (data, missing) => {
11487
+ let result = "";
11532
11488
  for (const encoder of encoders) {
11533
- const [value, ...extras] = encoder(data);
11534
- result[0] += value;
11535
- result.push(...extras);
11489
+ result += encoder(data, missing);
11536
11490
  }
11537
11491
  return result;
11538
11492
  };
@@ -11540,43 +11494,51 @@ var require_dist2 = __commonJS({
11540
11494
  __name(tokensToFunction, "tokensToFunction");
11541
11495
  function tokenToFunction(token, delimiter, encode) {
11542
11496
  if (token.type === "text")
11543
- return () => [token.value];
11497
+ return () => token.value;
11544
11498
  if (token.type === "group") {
11545
11499
  const fn = tokensToFunction(token.tokens, delimiter, encode);
11546
- return (data) => {
11547
- const [value, ...missing] = fn(data);
11548
- if (!missing.length)
11549
- return [value];
11550
- return [""];
11500
+ return (data, missing) => {
11501
+ const len = missing.length;
11502
+ const value = fn(data, missing);
11503
+ if (missing.length === len)
11504
+ return value;
11505
+ missing.length = len;
11506
+ return "";
11551
11507
  };
11552
11508
  }
11553
11509
  const encodeValue = encode || NOOP_VALUE;
11554
11510
  if (token.type === "wildcard" && encode !== false) {
11555
- return (data) => {
11511
+ return (data, missing) => {
11556
11512
  const value = data[token.name];
11557
- if (value == null)
11558
- return ["", token.name];
11513
+ if (value == null) {
11514
+ missing.push(token.name);
11515
+ return "";
11516
+ }
11559
11517
  if (!Array.isArray(value) || value.length === 0) {
11560
11518
  throw new TypeError(`Expected "${token.name}" to be a non-empty array`);
11561
11519
  }
11562
- return [
11563
- value.map((value2, index) => {
11564
- if (typeof value2 !== "string") {
11565
- throw new TypeError(`Expected "${token.name}/${index}" to be a string`);
11566
- }
11567
- return encodeValue(value2);
11568
- }).join(delimiter)
11569
- ];
11520
+ let result = "";
11521
+ for (let i = 0; i < value.length; i++) {
11522
+ if (typeof value[i] !== "string") {
11523
+ throw new TypeError(`Expected "${token.name}/${i}" to be a string`);
11524
+ }
11525
+ if (i > 0)
11526
+ result += delimiter;
11527
+ result += encodeValue(value[i]);
11528
+ }
11529
+ return result;
11570
11530
  };
11571
11531
  }
11572
- return (data) => {
11532
+ return (data, missing) => {
11573
11533
  const value = data[token.name];
11574
- if (value == null)
11575
- return ["", token.name];
11534
+ if (value == null) {
11535
+ missing.push(token.name);
11536
+ return "";
11537
+ }
11576
11538
  if (typeof value !== "string") {
11577
11539
  throw new TypeError(`Expected "${token.name}" to be a string`);
11578
11540
  }
11579
- return [encodeValue(value)];
11541
+ return encodeValue(value);
11580
11542
  };
11581
11543
  }
11582
11544
  __name(tokenToFunction, "tokenToFunction");
@@ -11610,112 +11572,161 @@ var require_dist2 = __commonJS({
11610
11572
  function pathToRegexp(path3, options = {}) {
11611
11573
  const { delimiter = DEFAULT_DELIMITER, end = true, sensitive = false, trailing = true } = options;
11612
11574
  const keys = [];
11613
- const sources = [];
11614
- const flags = sensitive ? "" : "i";
11615
- const paths = Array.isArray(path3) ? path3 : [path3];
11616
- const items = paths.map((path4) => path4 instanceof TokenData ? path4 : parse(path4, options));
11617
- for (const { tokens } of items) {
11618
- for (const seq of flatten(tokens, 0, [])) {
11619
- const regexp2 = sequenceToRegExp(seq, delimiter, keys);
11620
- sources.push(regexp2);
11575
+ let source = "";
11576
+ let combinations = 0;
11577
+ function process2(path4) {
11578
+ if (Array.isArray(path4)) {
11579
+ for (const p of path4)
11580
+ process2(p);
11581
+ return;
11621
11582
  }
11583
+ const data = typeof path4 === "object" ? path4 : parse(path4, options);
11584
+ flatten(data.tokens, 0, [], (tokens) => {
11585
+ if (combinations >= 256) {
11586
+ throw new PathError("Too many path combinations", data.originalPath);
11587
+ }
11588
+ if (combinations > 0)
11589
+ source += "|";
11590
+ source += toRegExpSource(tokens, delimiter, keys, data.originalPath);
11591
+ combinations++;
11592
+ });
11622
11593
  }
11623
- let pattern = `^(?:${sources.join("|")})`;
11594
+ __name(process2, "process");
11595
+ process2(path3);
11596
+ let pattern = `^(?:${source})`;
11624
11597
  if (trailing)
11625
- pattern += `(?:${escape(delimiter)}$)?`;
11626
- pattern += end ? "$" : `(?=${escape(delimiter)}|$)`;
11627
- const regexp = new RegExp(pattern, flags);
11628
- return { regexp, keys };
11598
+ pattern += "(?:" + escape(delimiter) + "$)?";
11599
+ pattern += end ? "$" : "(?=" + escape(delimiter) + "|$)";
11600
+ return { regexp: new RegExp(pattern, sensitive ? "" : "i"), keys };
11629
11601
  }
11630
11602
  __name(pathToRegexp, "pathToRegexp");
11631
- function* flatten(tokens, index, init) {
11632
- if (index === tokens.length) {
11633
- return yield init;
11634
- }
11635
- const token = tokens[index];
11636
- if (token.type === "group") {
11637
- const fork = init.slice();
11638
- for (const seq of flatten(token.tokens, 0, fork)) {
11639
- yield* flatten(tokens, index + 1, seq);
11603
+ function flatten(tokens, index, result, callback) {
11604
+ while (index < tokens.length) {
11605
+ const token = tokens[index++];
11606
+ if (token.type === "group") {
11607
+ const len = result.length;
11608
+ flatten(token.tokens, 0, result, (seq) => flatten(tokens, index, seq, callback));
11609
+ result.length = len;
11610
+ continue;
11640
11611
  }
11641
- } else {
11642
- init.push(token);
11612
+ result.push(token);
11643
11613
  }
11644
- yield* flatten(tokens, index + 1, init);
11614
+ callback(result);
11645
11615
  }
11646
11616
  __name(flatten, "flatten");
11647
- function sequenceToRegExp(tokens, delimiter, keys) {
11617
+ function toRegExpSource(tokens, delimiter, keys, originalPath) {
11648
11618
  let result = "";
11649
11619
  let backtrack = "";
11650
- let isSafeSegmentParam = true;
11651
- for (let i = 0; i < tokens.length; i++) {
11652
- const token = tokens[i];
11620
+ let wildcardBacktrack = "";
11621
+ let prevCaptureType = 0;
11622
+ let hasSegmentCapture = 0;
11623
+ let index = 0;
11624
+ function hasInSegment(index2, type) {
11625
+ while (index2 < tokens.length) {
11626
+ const token = tokens[index2++];
11627
+ if (token.type === type)
11628
+ return true;
11629
+ if (token.type === "text") {
11630
+ if (token.value.includes(delimiter))
11631
+ break;
11632
+ }
11633
+ }
11634
+ return false;
11635
+ }
11636
+ __name(hasInSegment, "hasInSegment");
11637
+ function peekText(index2) {
11638
+ let result2 = "";
11639
+ while (index2 < tokens.length) {
11640
+ const token = tokens[index2++];
11641
+ if (token.type !== "text")
11642
+ break;
11643
+ result2 += token.value;
11644
+ }
11645
+ return result2;
11646
+ }
11647
+ __name(peekText, "peekText");
11648
+ while (index < tokens.length) {
11649
+ const token = tokens[index++];
11653
11650
  if (token.type === "text") {
11654
11651
  result += escape(token.value);
11655
11652
  backtrack += token.value;
11656
- isSafeSegmentParam || (isSafeSegmentParam = token.value.includes(delimiter));
11653
+ if (prevCaptureType === 2)
11654
+ wildcardBacktrack += token.value;
11655
+ if (token.value.includes(delimiter))
11656
+ hasSegmentCapture = 0;
11657
11657
  continue;
11658
11658
  }
11659
11659
  if (token.type === "param" || token.type === "wildcard") {
11660
- if (!isSafeSegmentParam && !backtrack) {
11661
- throw new TypeError(`Missing text after "${token.name}": ${DEBUG_URL}`);
11660
+ if (prevCaptureType && !backtrack) {
11661
+ throw new PathError(`Missing text before "${token.name}" ${token.type}`, originalPath);
11662
11662
  }
11663
11663
  if (token.type === "param") {
11664
- result += `(${negate(delimiter, isSafeSegmentParam ? "" : backtrack)}+)`;
11664
+ result += hasSegmentCapture & 2 ? `(${negate(delimiter, backtrack)}+)` : hasInSegment(index, "wildcard") ? `(${negate(delimiter, peekText(index))}+)` : hasSegmentCapture & 1 ? `(${negate(delimiter, backtrack)}+|${escape(backtrack)})` : `(${negate(delimiter, "")}+)`;
11665
+ hasSegmentCapture |= prevCaptureType = 1;
11665
11666
  } else {
11666
- result += `([\\s\\S]+)`;
11667
+ result += hasSegmentCapture & 2 ? `(${negate(backtrack, "")}+)` : wildcardBacktrack ? `(${negate(wildcardBacktrack, "")}+|${negate(delimiter, "")}+)` : `([^]+)`;
11668
+ wildcardBacktrack = "";
11669
+ hasSegmentCapture |= prevCaptureType = 2;
11667
11670
  }
11668
11671
  keys.push(token);
11669
11672
  backtrack = "";
11670
- isSafeSegmentParam = false;
11671
11673
  continue;
11672
11674
  }
11675
+ throw new TypeError(`Unknown token type: ${token.type}`);
11673
11676
  }
11674
11677
  return result;
11675
11678
  }
11676
- __name(sequenceToRegExp, "sequenceToRegExp");
11677
- function negate(delimiter, backtrack) {
11678
- if (backtrack.length < 2) {
11679
- if (delimiter.length < 2)
11680
- return `[^${escape(delimiter + backtrack)}]`;
11681
- return `(?:(?!${escape(delimiter)})[^${escape(backtrack)}])`;
11682
- }
11683
- if (delimiter.length < 2) {
11684
- return `(?:(?!${escape(backtrack)})[^${escape(delimiter)}])`;
11685
- }
11686
- return `(?:(?!${escape(backtrack)}|${escape(delimiter)})[\\s\\S])`;
11679
+ __name(toRegExpSource, "toRegExpSource");
11680
+ function negate(a, b) {
11681
+ if (b.length > a.length)
11682
+ return negate(b, a);
11683
+ if (a === b)
11684
+ b = "";
11685
+ if (b.length > 1)
11686
+ return `(?:(?!${escape(a)}|${escape(b)})[^])`;
11687
+ if (a.length > 1)
11688
+ return `(?:(?!${escape(a)})[^${escape(b)}])`;
11689
+ return `[^${escape(a + b)}]`;
11687
11690
  }
11688
11691
  __name(negate, "negate");
11689
- function stringify(data) {
11690
- return data.tokens.map(/* @__PURE__ */ __name(function stringifyToken(token, index, tokens) {
11691
- if (token.type === "text")
11692
- return escapeText(token.value);
11692
+ function stringifyTokens(tokens, index) {
11693
+ let value = "";
11694
+ while (index < tokens.length) {
11695
+ const token = tokens[index++];
11696
+ if (token.type === "text") {
11697
+ value += escapeText(token.value);
11698
+ continue;
11699
+ }
11693
11700
  if (token.type === "group") {
11694
- return `{${token.tokens.map(stringifyToken).join("")}}`;
11701
+ value += "{" + stringifyTokens(token.tokens, 0) + "}";
11702
+ continue;
11695
11703
  }
11696
- const isSafe = isNameSafe(token.name) && isNextNameSafe(tokens[index + 1]);
11697
- const key = isSafe ? token.name : JSON.stringify(token.name);
11698
- if (token.type === "param")
11699
- return `:${key}`;
11700
- if (token.type === "wildcard")
11701
- return `*${key}`;
11702
- throw new TypeError(`Unexpected token: ${token}`);
11703
- }, "stringifyToken")).join("");
11704
+ if (token.type === "param") {
11705
+ value += ":" + stringifyName(token.name, tokens[index]);
11706
+ continue;
11707
+ }
11708
+ if (token.type === "wildcard") {
11709
+ value += "*" + stringifyName(token.name, tokens[index]);
11710
+ continue;
11711
+ }
11712
+ throw new TypeError(`Unknown token type: ${token.type}`);
11713
+ }
11714
+ return value;
11704
11715
  }
11705
- __name(stringify, "stringify");
11706
- function isNameSafe(name) {
11707
- const [first, ...rest] = name;
11708
- if (!ID_START.test(first))
11709
- return false;
11710
- return rest.every((char) => ID_CONTINUE.test(char));
11716
+ __name(stringifyTokens, "stringifyTokens");
11717
+ function stringify(data) {
11718
+ return stringifyTokens(data.tokens, 0);
11711
11719
  }
11712
- __name(isNameSafe, "isNameSafe");
11713
- function isNextNameSafe(token) {
11714
- if ((token === null || token === void 0 ? void 0 : token.type) !== "text")
11715
- return true;
11716
- return !ID_CONTINUE.test(token.value[0]);
11720
+ __name(stringify, "stringify");
11721
+ function stringifyName(name, next) {
11722
+ if (!ID.test(name))
11723
+ return JSON.stringify(name);
11724
+ if ((next === null || next === void 0 ? void 0 : next.type) === "text" && ID_CONTINUE.test(next.value[0])) {
11725
+ return JSON.stringify(name);
11726
+ }
11727
+ return name;
11717
11728
  }
11718
- __name(isNextNameSafe, "isNextNameSafe");
11729
+ __name(stringifyName, "stringifyName");
11719
11730
  }
11720
11731
  });
11721
11732
 
@@ -16100,19 +16111,6 @@ function createBridgeFileSystemAdapter(factory) {
16100
16111
  }
16101
16112
  __name(createBridgeFileSystemAdapter, "createBridgeFileSystemAdapter");
16102
16113
 
16103
- // packages/cli/src/serve/loopback-binds.ts
16104
- init_esbuild_shims();
16105
- var LOOPBACK_BINDS = /* @__PURE__ */ new Set([
16106
- "127.0.0.1",
16107
- "localhost",
16108
- "::1",
16109
- "[::1]"
16110
- ]);
16111
- function isLoopbackBind(hostname) {
16112
- return LOOPBACK_BINDS.has(hostname.toLowerCase());
16113
- }
16114
- __name(isLoopbackBind, "isLoopbackBind");
16115
-
16116
16114
  // packages/cli/src/serve/web-shell-resolver.ts
16117
16115
  init_esbuild_shims();
16118
16116
  import { existsSync } from "node:fs";
@@ -16454,6 +16452,10 @@ var SERVE_CAPABILITY_REGISTRY = {
16454
16452
  // hierarchical QWEN.md state and accepts append/replace writes scoped
16455
16453
  // to either the bound workspace or the global ~/.qwen directory.
16456
16454
  workspace_memory: { since: "v1" },
16455
+ workspace_memory_remember: {
16456
+ since: "v1",
16457
+ modes: ["workspace", "clean"]
16458
+ },
16457
16459
  // Workspace agents CRUD (`GET/POST /workspace/agents` +
16458
16460
  // `GET/POST/DELETE /workspace/agents/:agentType`). Wraps
16459
16461
  // `SubagentManager` over HTTP so remote clients can list / read /
@@ -16471,6 +16473,7 @@ var SERVE_CAPABILITY_REGISTRY = {
16471
16473
  session_lsp: { since: "v1" },
16472
16474
  session_status: { since: "v1" },
16473
16475
  session_close: { since: "v1" },
16476
+ session_archive: { since: "v1" },
16474
16477
  session_metadata: { since: "v1" },
16475
16478
  // Daemon supports the MCP client guardrail surface: an in-process
16476
16479
  // counter exposed on `GET /workspace/mcp`, a `--mcp-client-budget=N`
@@ -16641,14 +16644,15 @@ var SERVE_CAPABILITY_REGISTRY = {
16641
16644
  // reusing the SDK-MCP-server control-plane pattern. Inbound WS frame types:
16642
16645
  // `mcp_register` { server }, `mcp_message` { id, server, payload }
16643
16646
  // (bidirectional, request/response correlated by `id`), `mcp_unregister`
16644
- // { server }. Advertised CONDITIONALLY only when the operator opts in
16645
- // (the public contract is still settling per #5626), so clients pre-flight
16646
- // this tag before attempting to register a client-hosted server.
16647
+ // { server }. Advertised CONDITIONALLY so clients pre-flight this tag before
16648
+ // attempting to register a client-hosted server. `runQwenServe` enables it
16649
+ // only when explicitly requested by option or env.
16647
16650
  client_mcp_over_ws: { since: "v1" },
16648
16651
  // Plan C "CDP tunnel" (issue #5626): the daemon exposes a `/cdp` WebSocket
16649
16652
  // where a loopback puppeteer client (chrome-devtools-mcp) drives ONE real tab
16650
16653
  // via the extension's `chrome.debugger`, tunneled over `/acp` as `cdp_*`
16651
- // frames. Advertised only when the operator opts in (contract still settling).
16654
+ // frames. Advertised when explicitly enabled or when the daemon is serving a
16655
+ // Chrome extension origin.
16652
16656
  cdp_tunnel_over_ws: { since: "v1" },
16653
16657
  // Daemon hosts the `/voice/stream` WebSocket: the browser captures audio and
16654
16658
  // streams raw PCM, the daemon transcribes server-side via the configured
@@ -17198,9 +17202,21 @@ async function buildDaemonStatusResponse(detail, input) {
17198
17202
  const bridgeSnapshot = input.bridge.getDaemonStatusSnapshot();
17199
17203
  const acpSnapshot = input.acpHandle?.registry.getSnapshot();
17200
17204
  const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
17205
+ const channelWorker = input.getChannelWorkerSnapshot?.() ?? {
17206
+ enabled: false,
17207
+ state: "disabled",
17208
+ channels: []
17209
+ };
17201
17210
  const issues = [];
17202
17211
  let full;
17203
- pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, input);
17212
+ pushRuntimeIssues(
17213
+ issues,
17214
+ bridgeSnapshot,
17215
+ acpSnapshot,
17216
+ rateLimitHits,
17217
+ input,
17218
+ channelWorker
17219
+ );
17204
17220
  if (detail === "full") {
17205
17221
  full = await buildFullStatus(input, bridgeSnapshot, acpSnapshot);
17206
17222
  pushFullIssues(issues, full);
@@ -17251,6 +17267,7 @@ async function buildDaemonStatusResponse(detail, input) {
17251
17267
  policy: bridgeSnapshot.permissionPolicy
17252
17268
  },
17253
17269
  channel: { live: bridgeSnapshot.channelLive },
17270
+ channelWorker,
17254
17271
  transport: {
17255
17272
  restSseActive: input.getRestSseActive(),
17256
17273
  acp: {
@@ -17385,7 +17402,7 @@ async function withTimeout(promise, section, timeoutMs) {
17385
17402
  }
17386
17403
  }
17387
17404
  __name(withTimeout, "withTimeout");
17388
- function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, input) {
17405
+ function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, input, channelWorker) {
17389
17406
  if (bridgeSnapshot.limits.maxSessions !== null && bridgeSnapshot.limits.maxSessions > 0 && bridgeSnapshot.sessionCount / bridgeSnapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
17390
17407
  issues.push({
17391
17408
  code: "session_capacity_high",
@@ -17421,6 +17438,35 @@ function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, i
17421
17438
  message: `${sumRateHits(rateLimitHits)} request(s) have been rejected by rate limiting since start.`
17422
17439
  });
17423
17440
  }
17441
+ if (channelWorker.enabled && (channelWorker.state === "exited" || channelWorker.state === "failed")) {
17442
+ const detailParts = [
17443
+ channelWorker.pid !== void 0 ? `pid=${channelWorker.pid}` : void 0,
17444
+ channelWorker.exitCode !== void 0 ? `code=${channelWorker.exitCode ?? "null"}` : void 0,
17445
+ channelWorker.signal ? `signal=${channelWorker.signal}` : void 0
17446
+ ].filter(Boolean);
17447
+ const details = detailParts.length > 0 ? ` (${detailParts.join(", ")})` : "";
17448
+ const error = channelWorker.error ? `: ${channelWorker.error}` : "";
17449
+ issues.push({
17450
+ code: "channel_worker_exited",
17451
+ severity: "warning",
17452
+ message: `Channel worker is ${channelWorker.state}${details}${error}.`,
17453
+ section: "runtime.channelWorker"
17454
+ });
17455
+ }
17456
+ if (channelWorker.enabled && channelWorker.state === "running" && channelWorker.requestedChannels !== void 0) {
17457
+ const connected = new Set(channelWorker.channels);
17458
+ const failed = channelWorker.requestedChannels.filter(
17459
+ (channel) => !connected.has(channel)
17460
+ );
17461
+ if (failed.length > 0) {
17462
+ issues.push({
17463
+ code: "channel_worker_partial_connect",
17464
+ severity: "warning",
17465
+ message: `Channel worker connected ${channelWorker.channels.length}/${channelWorker.requestedChannels.length} channel(s). Failed: ${failed.join(", ")}.`,
17466
+ section: "runtime.channelWorker"
17467
+ });
17468
+ }
17469
+ }
17424
17470
  }
17425
17471
  __name(pushRuntimeIssues, "pushRuntimeIssues");
17426
17472
  function pushFullIssues(issues, full) {
@@ -17630,7 +17676,6 @@ export {
17630
17676
  getDeviceFlowRegistry,
17631
17677
  DeviceFlowRegistry,
17632
17678
  createBridgeFileSystemAdapter,
17633
- isLoopbackBind,
17634
17679
  resolveWebShellDir,
17635
17680
  denyBrowserOriginCors,
17636
17681
  parseAllowOriginPatterns,