@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.
- package/bundled/loop/loop-tick-resolver.test.ts +42 -0
- package/bundled/loop/loop-tick-resolver.ts +1 -1
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/settings.md +23 -11
- package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
- package/bundled/qc-helper/docs/features/auto-mode.md +40 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +81 -18
- package/bundled/qc-helper/docs/features/code-review.md +17 -61
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/mcp.md +3 -1
- package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
- package/bundled/qc-helper/docs/qwen-serve.md +19 -0
- package/bundled/review/DESIGN.md +21 -26
- package/bundled/review/SKILL.md +45 -129
- package/chunks/{MaxSizedBox-UZHJ73JB.js → MaxSizedBox-ERTNFI22.js} +20 -18
- package/chunks/{StandaloneSessionPicker-GGUIZWCE.js → StandaloneSessionPicker-Y5NGRLRY.js} +32 -29
- package/chunks/{acpAgent-QYZFICEZ.js → acpAgent-UMN6OYTR.js} +473 -187
- package/chunks/{agent-2EN7YNSW.js → agent-56DZU4ZU.js} +17 -15
- package/chunks/{agent-headless-SLTEZ5LV.js → agent-headless-SR7N2IJG.js} +17 -15
- package/chunks/{anthropicContentGenerator-CA3JTAMO.js → anthropicContentGenerator-5OZFO6WQ.js} +1 -1
- package/chunks/{artifact-tool-RM7WINJO.js → artifact-tool-JVZMHA4B.js} +1 -1
- package/chunks/{askUserQuestion-J3P6QAJ7.js → askUserQuestion-CMJZ2F3D.js} +1 -1
- package/chunks/{bridge-HZVAUTMX.js → bridge-AUHNFOUS.js} +23 -21
- package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
- package/chunks/{chunk-N4V4VBP6.js → chunk-2X2JUE47.js} +2 -2
- package/chunks/{chunk-JV7A66DR.js → chunk-4VZH35PN.js} +528 -358
- package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
- package/chunks/{chunk-WGY3GIPP.js → chunk-6AQR7732.js} +1 -1
- package/chunks/{chunk-FR3II765.js → chunk-6CIIP6OE.js} +4 -4
- package/chunks/{chunk-IKO44NAT.js → chunk-6TLY5W3B.js} +2 -2
- package/chunks/{chunk-VN4CKYUW.js → chunk-73H73ASU.js} +1 -1
- package/chunks/{chunk-IBEM64M4.js → chunk-75X2VLSH.js} +36 -25
- package/chunks/{chunk-PLQTLKMR.js → chunk-7KPI4LAI.js} +3 -3
- package/chunks/{chunk-NVTRORSK.js → chunk-7VPC7D7O.js} +2 -2
- package/chunks/chunk-AHNXYU4O.js +24 -0
- package/chunks/{chunk-MTJVHQDP.js → chunk-B7KGXIPZ.js} +302 -257
- package/chunks/{chunk-35FH347N.js → chunk-BFG6OZN7.js} +16097 -16236
- package/chunks/{chunk-T44AF4I6.js → chunk-BNJLLAQ7.js} +1 -1
- package/chunks/{chunk-OEY3YAL2.js → chunk-BQNJBEUA.js} +2 -2
- package/chunks/{chunk-Q7TDHJ2G.js → chunk-C2IHHGBZ.js} +10 -10
- package/chunks/chunk-CG7SVARK.js +367 -0
- package/chunks/{chunk-7SP275SH.js → chunk-CS5XYDBO.js} +5 -5
- package/chunks/{chunk-V5YJAUHW.js → chunk-CUGEBAKG.js} +1 -1
- package/chunks/{chunk-FQDMX5IL.js → chunk-D5KISTLW.js} +309 -72
- package/chunks/{chunk-I4MXURND.js → chunk-DQ74W65K.js} +356 -468
- package/chunks/chunk-E5A7LHNN.js +51 -0
- package/chunks/{chunk-3PJXIDKI.js → chunk-E6US47KI.js} +3 -27
- package/chunks/chunk-EDAGQADF.js +21 -0
- package/chunks/{chunk-HUGAEYZR.js → chunk-FNLXLI4I.js} +2 -2
- package/chunks/{chunk-WJAY4WXR.js → chunk-FYKX6XOT.js} +1 -1
- package/chunks/{chunk-CA4ML3VH.js → chunk-G7OQ3RFJ.js} +1 -1
- package/chunks/{chunk-VHRREANT.js → chunk-GICCHL2Q.js} +3 -1
- package/chunks/{chunk-QHHNFG22.js → chunk-GLPV75ES.js} +1 -1
- package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
- package/chunks/chunk-HI55Z6PR.js +3523 -0
- package/chunks/{chunk-B5MPZI4K.js → chunk-HJDF3ZVU.js} +2670 -1233
- package/chunks/{chunk-GDIG7TMG.js → chunk-HRZB5CSC.js} +1 -1
- package/chunks/{chunk-LDWTYE33.js → chunk-J3F7X3LW.js} +1 -1
- package/chunks/{chunk-FV4SQ54H.js → chunk-KVPFPC4J.js} +227 -85
- package/chunks/{chunk-Q3JOGB4U.js → chunk-L7QPM2YD.js} +1 -1
- package/chunks/{chunk-4722VFFU.js → chunk-L7VH7HQA.js} +6 -6
- package/chunks/{chunk-HWG4XLD7.js → chunk-LKWAVAB5.js} +1 -1
- package/chunks/{chunk-YCRTJYSQ.js → chunk-MEQWZGK5.js} +1 -1
- package/chunks/{chunk-6FIWYVN4.js → chunk-MKHC4BYZ.js} +30 -5
- package/chunks/{chunk-YCEHOJZJ.js → chunk-MNDTD5E5.js} +65 -38
- package/chunks/{chunk-ZGSV5ORL.js → chunk-MVZXZWGT.js} +809 -759
- package/chunks/chunk-MX2YXRER.js +44 -0
- package/chunks/{chunk-TMILTLP3.js → chunk-ND25GXEU.js} +21 -4
- package/chunks/{chunk-AIBPG5MB.js → chunk-OAFUMTWW.js} +2 -2
- package/chunks/chunk-OJCECIJA.js +238 -0
- package/chunks/{chunk-EUURTJY7.js → chunk-PIYV6COW.js} +1 -1
- package/chunks/{chunk-LXEW6BHF.js → chunk-Q7VHIRDD.js} +1 -1
- package/chunks/{chunk-DBR7PF4B.js → chunk-QAFQLTXG.js} +1 -1
- package/chunks/{chunk-3TK7FSCP.js → chunk-QMIND2AS.js} +3 -3
- package/chunks/{chunk-ESVSWG6Z.js → chunk-QOMAHFYI.js} +1 -1
- package/chunks/{chunk-J37FGIOA.js → chunk-QXPI7FEC.js} +38 -4
- package/chunks/chunk-RM3PGSGL.js +66 -0
- package/chunks/chunk-RNBYOUGV.js +42 -0
- package/chunks/chunk-S5EQPDTM.js +91 -0
- package/chunks/{chunk-GZKQ36JS.js → chunk-SFN4TEHY.js} +4 -4
- package/chunks/{chunk-DHXWNSJA.js → chunk-T22H4V4R.js} +42 -0
- package/chunks/{chunk-LXGWLOCM.js → chunk-TENOUWY2.js} +1 -1
- package/chunks/{chunk-BLAE2TCO.js → chunk-TTFNVEO5.js} +3 -3
- package/chunks/{chunk-FZY7NH37.js → chunk-UANCYOOQ.js} +1 -1
- package/chunks/{chunk-E5I6YSNO.js → chunk-UQFP2FEF.js} +1 -1
- package/chunks/{chunk-3O2BJMFW.js → chunk-UQYOMM6J.js} +4 -4
- package/chunks/{chunk-JERW36RG.js → chunk-UT5JU5DJ.js} +15 -15
- package/chunks/{chunk-DJ25MIU2.js → chunk-VKGG724L.js} +8 -8
- package/chunks/{chunk-G525INVW.js → chunk-W2ZOAX7F.js} +3 -3
- package/chunks/{chunk-HIYUAXBG.js → chunk-W6X4FGWX.js} +1 -1
- package/chunks/{chunk-OE5J6UA7.js → chunk-XCUFHOAD.js} +1 -1
- package/chunks/{chunk-KXVVXAAC.js → chunk-YBDZ63KI.js} +3 -3
- package/chunks/{chunk-Z34RYLRO.js → chunk-ZJP5T7IA.js} +1 -1
- package/chunks/{chunk-NOYV2NXI.js → chunk-ZXCVPMIK.js} +411 -43
- package/chunks/{computer-use-FCNWHVPW.js → computer-use-VWN5HH6A.js} +20 -18
- package/chunks/{contextCommand-FVFMZZEU.js → contextCommand-DFFG5KDJ.js} +19 -17
- package/chunks/{cron-create-IY5NMIHQ.js → cron-create-CSSWJ67I.js} +1 -1
- package/chunks/{cron-delete-OLNEQWKO.js → cron-delete-E56CFQ7A.js} +1 -1
- package/chunks/{cron-list-YAUAUV24.js → cron-list-BKSINY6Y.js} +1 -1
- package/chunks/daemon-5T6IHWJV.js +8430 -0
- package/chunks/{daemon-status-provider-42JEXENZ.js → daemon-status-provider-V5UY7O7J.js} +26 -24
- package/chunks/{dist-4FCNM6KJ.js → dist-2HDL5SHQ.js} +2 -2
- package/chunks/{dist-SU6L7ZNJ.js → dist-B7SSDVWT.js} +3 -3
- package/chunks/{dist-VD7HXTML.js → dist-BL3SL665.js} +1 -1
- package/chunks/{dist-UKPWQJCL.js → dist-TAVAGZU6.js} +37 -13
- package/chunks/{dist-K4XZILIO.js → dist-XBOVZ3R5.js} +26 -5
- package/chunks/{earlyInputCapture-FFFEC6P4.js → earlyInputCapture-VVYU4FDO.js} +17 -15
- package/chunks/{edit-32ILSGZY.js → edit-F35PTMBA.js} +17 -15
- package/chunks/{en-U3LWGSFX.js → en-FZREZFPO.js} +18 -0
- package/chunks/{enter-worktree-XWZKIN6A.js → enter-worktree-3DIW7EGJ.js} +17 -15
- package/chunks/{enterPlanMode-LPFFY7BJ.js → enterPlanMode-QNXT77KP.js} +27 -15
- package/chunks/{errors-UXBPYPI2.js → errors-M53YG76R.js} +19 -17
- package/chunks/{exit-worktree-IBS4UIU7.js → exit-worktree-BSDWNWHZ.js} +17 -15
- package/chunks/{exitPlanMode-JA72YHII.js → exitPlanMode-EL7AY327.js} +41 -23
- package/chunks/{fast-path-7UU67Y2W.js → fast-path-DUCSMUFW.js} +2 -2
- package/chunks/{gemini-GMVKJNMX.js → gemini-F3IERB37.js} +59 -51
- package/chunks/{geminiContentGenerator-7NIFF2L4.js → geminiContentGenerator-6OULAKFQ.js} +1 -1
- package/chunks/{glob-4NJCW5HI.js → glob-ZMLFTD4T.js} +17 -15
- package/chunks/{grep-PAIMLQEL.js → grep-H5X66EI7.js} +17 -15
- package/chunks/{initializer-R6KU4VYM.js → initializer-LEOT2OLH.js} +21 -19
- package/chunks/{list-H7LXAO64.js → list-M3DKXML6.js} +23 -21
- package/chunks/{loadedSettingsAdapter-H27JMTLU.js → loadedSettingsAdapter-OKMQFGGG.js} +21 -19
- package/chunks/{loop-wakeup-Y3OIRQFM.js → loop-wakeup-FPBAVVPR.js} +2 -2
- package/chunks/{ls-TVJEYS7O.js → ls-UGWQXPTY.js} +1 -1
- package/chunks/{lsp-JZSDVR3F.js → lsp-24WV7NXB.js} +1 -1
- package/chunks/{monitor-JSIHDPXP.js → monitor-ARL5P45R.js} +19 -16
- package/chunks/{nonInteractiveCli-Y4CHOETG.js → nonInteractiveCli-NUVLF3YR.js} +53 -45
- package/chunks/{notebook-edit-SHRNL2UM.js → notebook-edit-ANTZ2DDY.js} +17 -15
- package/chunks/{openaiContentGenerator-ORZZ7VFO.js → openaiContentGenerator-TFGMKGHN.js} +6 -6
- package/chunks/pidfile-AWTL4C63.js +72 -0
- package/chunks/{qwenContentGenerator-H643PL2G.js → qwenContentGenerator-6QWAYTWS.js} +18 -16
- package/chunks/{qwenOAuth2-OI2B7PES.js → qwenOAuth2-LWLA6MQG.js} +3 -3
- package/chunks/{read-file-5PRNPTTY.js → read-file-EJY73XQ3.js} +4 -4
- package/chunks/{read-mcp-resource-QTXGKTEV.js → read-mcp-resource-NCBTPP7X.js} +1 -1
- package/chunks/{ripGrep-JIKZMABJ.js → ripGrep-HC4SA6CQ.js} +17 -15
- package/chunks/{run-qwen-serve-PQV7QOHZ.js → run-qwen-serve-AGLZ642J.js} +291 -55
- package/chunks/{scheduler-OS3R5MGU.js → scheduler-TURO7NGY.js} +17 -15
- package/chunks/{send-message-DKGHWSTF.js → send-message-3S2NYS3O.js} +5 -3
- package/chunks/{serve-LVYZDKCZ.js → serve-5DAMOIDW.js} +22 -19
- package/chunks/{server-P4YIH35I.js → server-4AGEK2HC.js} +2268 -1222
- package/chunks/{session-DE4TZBKH.js → session-7ZOQUC4Y.js} +54 -46
- package/chunks/{settings-DFTYMJYF.js → settings-DR4V6L5Y.js} +20 -18
- package/chunks/{shell-3GNQLNV7.js → shell-H5WFKUXH.js} +17 -15
- package/chunks/{skill-NCNG4KKZ.js → skill-ANHU5ZCR.js} +4 -4
- package/chunks/{spawnChannel-DHRIMDVL.js → spawnChannel-VN5LJV7Z.js} +19 -17
- package/chunks/{src-PNZYGM3R.js → src-OVZLTVVM.js} +49 -17
- package/chunks/{startInteractiveUI-P6GZBFQW.js → startInteractiveUI-OA22V32P.js} +11110 -10670
- package/chunks/{syntheticOutput-X7L5HWLN.js → syntheticOutput-SV7GBHZ5.js} +2 -2
- package/chunks/{task-create-AWEUI4GI.js → task-create-W2H2UJCH.js} +6 -5
- package/chunks/{task-list-KZ3VJLDU.js → task-list-THBOPV4G.js} +5 -4
- package/chunks/{task-stop-GUNOZKJ5.js → task-stop-33FVCNCJ.js} +1 -1
- package/chunks/{task-update-Y56GP6DU.js → task-update-LVFQLXEI.js} +6 -5
- package/chunks/{team-create-6JMW3KQK.js → team-create-OYL5CAQO.js} +17 -15
- package/chunks/{team-delete-6AFRGDJY.js → team-delete-NTUQ25UY.js} +5 -4
- package/chunks/{theme-manager-FEHQO22G.js → theme-manager-XCMPF2SI.js} +17 -15
- package/chunks/{todoWrite-JRS6NOEU.js → todoWrite-SEPO2RI3.js} +1 -1
- package/chunks/{tool-search-IXAEKS7J.js → tool-search-YXW55X6Z.js} +29 -5
- package/chunks/{trustedFolders-SJRXNHZE.js → trustedFolders-TEPGM5YL.js} +18 -16
- package/chunks/{validateNonInterActiveAuth-HCH7OBDH.js → validateNonInterActiveAuth-OQIS7WUE.js} +50 -42
- package/chunks/{web-fetch-RELNL37A.js → web-fetch-OE7LHURA.js} +4 -4
- package/chunks/{workflow-M2COBI7R.js → workflow-RTUWORAP.js} +48 -27
- package/chunks/{workspace-providers-status-GOCWYDMK.js → workspace-providers-status-DM2XANVB.js} +23 -21
- package/chunks/{workspace-service-34C7SUBU.js → workspace-service-VKBI2KZD.js} +27 -25
- package/chunks/{write-file-E52WRXZL.js → write-file-WGALQ53L.js} +17 -15
- package/chunks/{zh-TW-LKLBTZHE.js → zh-TW-6GIKXEAN.js} +18 -0
- package/chunks/{zh-F5T4WWZO.js → zh-V3B4TFWL.js} +18 -0
- package/cli.js +6 -6
- package/locales/en.js +30 -0
- package/locales/fr.js +1 -2
- package/locales/ja.js +1 -2
- package/locales/zh-TW.js +29 -0
- package/locales/zh.js +29 -0
- package/node_modules/@qwen-code/audio-capture/package.json +1 -1
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-C2DILvUl.js → arc-Det5Ccum.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-b8gZ2cNw.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BuRpghMj.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-2ItdhFmE.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
- package/web-shell/assets/channel-Bm0bFauD.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-B1QXa0q3.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DXfhKlNq.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-ClSNjxLo.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Dsh2wisB.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C1TkY5AR.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGtN9XR6.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BHiPi1SS.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CzG3I5o1.js → chunk-QZHKN3VN-a8PtLMck.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-EgrIoH_K.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BUnpdX8S.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BlLUCVYu.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-FG-enmjQ.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BlzmTONk.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-CoBQ8mIx.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DvxV6sX8.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Jq1tpAoj.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CbtYOry5.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-ZEn2VEKR.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BZh-LkhJ.js → gitGraphDiagram-PVQCEYII-DPrmySxO.js} +1 -1
- package/web-shell/assets/index-BpKnmyFV.js +717 -0
- package/web-shell/assets/index-fLrtxpOG.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-B9HuZygK.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D76cNpYG.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-6bGo7P1t.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DuYyRBvB.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
- package/web-shell/assets/{linear-CpdSW1BC.js → linear-CQ6irBL9.js} +1 -1
- package/web-shell/assets/{mermaid.core-s5xbZMMj.js → mermaid.core-DtB6NO1e.js} +72 -72
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-go01fZ2y.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BfuZiEHO.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DsoINqV6.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-B7FU4LiU.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BEDjFnGB.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-gzmmL5tK.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-BtHD4IN_.js → stateDiagram-AJRCARHV-BjwUmrJF.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-T_8gmMCf.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DdjuqnjO.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-Cgtrvb37.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BW3f3-yW.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BUS9IKkc.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
- package/web-shell/index.html +18 -2
- package/chunks/chunk-2JKEQWDZ.js +0 -1596
- package/chunks/chunk-32MCHZQC.js +0 -73
- package/chunks/chunk-UAKXW3DN.js +0 -30
- package/web-shell/assets/channel-eRvn2UA3.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-YZNwy1rx.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-YZNwy1rx.js +0 -1
- package/web-shell/assets/index-5FhE0ORO.css +0 -5
- package/web-shell/assets/index-CDTGmqVm.js +0 -720
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DFy6gLDd.js +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-A4BMJM77.js";
|
|
6
|
+
import {
|
|
7
|
+
__name
|
|
8
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
9
|
+
|
|
10
|
+
// packages/cli/src/serve/channel-selection.ts
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
function normalizeServeChannelSelection(rawChannels) {
|
|
13
|
+
if (rawChannels === void 0 || rawChannels.length === 0) {
|
|
14
|
+
return void 0;
|
|
15
|
+
}
|
|
16
|
+
const names = [];
|
|
17
|
+
const seen = /* @__PURE__ */ new Set();
|
|
18
|
+
for (const raw of rawChannels) {
|
|
19
|
+
const name = raw.trim();
|
|
20
|
+
if (!name) {
|
|
21
|
+
throw new Error("--channel requires a non-empty channel name.");
|
|
22
|
+
}
|
|
23
|
+
if (seen.has(name)) continue;
|
|
24
|
+
seen.add(name);
|
|
25
|
+
names.push(name);
|
|
26
|
+
}
|
|
27
|
+
if (seen.has("all")) {
|
|
28
|
+
if (names.length > 1) {
|
|
29
|
+
throw new Error("--channel all cannot be combined with channel names.");
|
|
30
|
+
}
|
|
31
|
+
return { mode: "all" };
|
|
32
|
+
}
|
|
33
|
+
return { mode: "names", names };
|
|
34
|
+
}
|
|
35
|
+
__name(normalizeServeChannelSelection, "normalizeServeChannelSelection");
|
|
36
|
+
function channelSelectionNames(selection) {
|
|
37
|
+
return selection.mode === "all" ? ["all"] : [...selection.names];
|
|
38
|
+
}
|
|
39
|
+
__name(channelSelectionNames, "channelSelectionNames");
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
normalizeServeChannelSelection,
|
|
43
|
+
channelSelectionNames
|
|
44
|
+
};
|
|
@@ -8,14 +8,17 @@ import {
|
|
|
8
8
|
} from "./chunk-ALX6BUYW.js";
|
|
9
9
|
import {
|
|
10
10
|
loadSettings
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MKHC4BYZ.js";
|
|
12
|
+
import {
|
|
13
|
+
normalizeServeChannelSelection
|
|
14
|
+
} from "./chunk-MX2YXRER.js";
|
|
12
15
|
import {
|
|
13
16
|
writeStderrLine
|
|
14
17
|
} from "./chunk-Y6Z2O3WR.js";
|
|
15
18
|
import {
|
|
16
19
|
MCP_BUDGET_WARN_FRACTION,
|
|
17
20
|
parsePositiveIntegerEnv
|
|
18
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-BFG6OZN7.js";
|
|
19
22
|
import {
|
|
20
23
|
openBrowserSecurely,
|
|
21
24
|
shouldLaunchBrowser
|
|
@@ -104,6 +107,10 @@ var serveCommand = {
|
|
|
104
107
|
type: "boolean",
|
|
105
108
|
default: false,
|
|
106
109
|
description: "Forward the experimental LSP opt-in to spawned agent sessions."
|
|
110
|
+
}).option("channel", {
|
|
111
|
+
type: "string",
|
|
112
|
+
array: true,
|
|
113
|
+
description: "Experimental: start a daemon-managed channel worker for the named channel. Repeat to select multiple channels, or use --channel all."
|
|
107
114
|
}).option("web", {
|
|
108
115
|
type: "boolean",
|
|
109
116
|
default: true,
|
|
@@ -183,6 +190,15 @@ var serveCommand = {
|
|
|
183
190
|
"qwen serve: --token is visible in the process command line; prefer the QWEN_SERVER_TOKEN env var for any non-trivial deployment."
|
|
184
191
|
);
|
|
185
192
|
}
|
|
193
|
+
let channelSelection;
|
|
194
|
+
try {
|
|
195
|
+
channelSelection = normalizeServeChannelSelection(argv.channel);
|
|
196
|
+
} catch (err) {
|
|
197
|
+
writeStderrLine(
|
|
198
|
+
`qwen serve: ${err instanceof Error ? err.message : String(err)}`
|
|
199
|
+
);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
186
202
|
const mcpClientBudget = argv["mcp-client-budget"];
|
|
187
203
|
const mcpBudgetMode = argv["mcp-budget-mode"];
|
|
188
204
|
if (mcpClientBudget !== void 0) {
|
|
@@ -257,7 +273,7 @@ var serveCommand = {
|
|
|
257
273
|
process.exit(1);
|
|
258
274
|
}
|
|
259
275
|
}
|
|
260
|
-
const { runQwenServe } = await import("./run-qwen-serve-
|
|
276
|
+
const { runQwenServe } = await import("./run-qwen-serve-AGLZ642J.js");
|
|
261
277
|
try {
|
|
262
278
|
const handle = await runQwenServe({
|
|
263
279
|
port: argv.port,
|
|
@@ -289,7 +305,8 @@ var serveCommand = {
|
|
|
289
305
|
...rateLimitMutation !== void 0 ? { rateLimitMutation } : {},
|
|
290
306
|
...rateLimitRead !== void 0 ? { rateLimitRead } : {},
|
|
291
307
|
...rateLimitWindowMs !== void 0 ? { rateLimitWindowMs } : {},
|
|
292
|
-
...argv.experimentalLsp === true ? { experimentalLsp: true } : {}
|
|
308
|
+
...argv.experimentalLsp === true ? { experimentalLsp: true } : {},
|
|
309
|
+
...channelSelection !== void 0 ? { channelSelection } : {}
|
|
293
310
|
});
|
|
294
311
|
await maybeOpenWebShellBrowser(handle, argv.open);
|
|
295
312
|
} catch (err) {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
JsonFormatter,
|
|
8
8
|
parseAndFormatApiError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BFG6OZN7.js";
|
|
10
10
|
import {
|
|
11
11
|
FatalBudgetExceededError,
|
|
12
12
|
FatalCancellationError,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-AVQDCKNF.js";
|
|
16
16
|
import {
|
|
17
17
|
runExitCleanup
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FYKX6XOT.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
Storage
|
|
5
|
+
} from "./chunk-AVQDCKNF.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-A4BMJM77.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/cli/src/commands/channel/pidfile.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
import {
|
|
16
|
+
existsSync,
|
|
17
|
+
readFileSync,
|
|
18
|
+
writeFileSync,
|
|
19
|
+
mkdirSync,
|
|
20
|
+
unlinkSync,
|
|
21
|
+
openSync,
|
|
22
|
+
closeSync,
|
|
23
|
+
constants,
|
|
24
|
+
ftruncateSync,
|
|
25
|
+
writeSync
|
|
26
|
+
} from "node:fs";
|
|
27
|
+
import * as path from "node:path";
|
|
28
|
+
function pidFilePath() {
|
|
29
|
+
return path.join(Storage.getGlobalQwenDir(), "channels", "service.pid");
|
|
30
|
+
}
|
|
31
|
+
__name(pidFilePath, "pidFilePath");
|
|
32
|
+
function isValidPid(pid) {
|
|
33
|
+
return typeof pid === "number" && Number.isSafeInteger(pid) && pid > 0;
|
|
34
|
+
}
|
|
35
|
+
__name(isValidPid, "isValidPid");
|
|
36
|
+
function parseServiceInfo(value) {
|
|
37
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const info = value;
|
|
41
|
+
const owner = info.owner ?? "channel";
|
|
42
|
+
if (owner !== "channel" && owner !== "serve") return null;
|
|
43
|
+
if (!isValidPid(info.pid) || typeof info.startedAt !== "string" || Number.isNaN(Date.parse(info.startedAt)) || !Array.isArray(info.channels) || !info.channels.every((channel) => typeof channel === "string")) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (info.servePid !== void 0 && !isValidPid(info.servePid)) return null;
|
|
47
|
+
if (info.workerPid !== void 0 && !isValidPid(info.workerPid)) return null;
|
|
48
|
+
return {
|
|
49
|
+
owner,
|
|
50
|
+
pid: info.pid,
|
|
51
|
+
startedAt: info.startedAt,
|
|
52
|
+
channels: info.channels,
|
|
53
|
+
...info.servePid !== void 0 ? { servePid: info.servePid } : {},
|
|
54
|
+
...info.workerPid !== void 0 ? { workerPid: info.workerPid } : {}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
__name(parseServiceInfo, "parseServiceInfo");
|
|
58
|
+
function unlinkPidFile(filePath) {
|
|
59
|
+
try {
|
|
60
|
+
unlinkSync(filePath);
|
|
61
|
+
} catch {
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
__name(unlinkPidFile, "unlinkPidFile");
|
|
65
|
+
function isProcessAlive(pid) {
|
|
66
|
+
if (!isValidPid(pid)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
process.kill(pid, 0);
|
|
71
|
+
return true;
|
|
72
|
+
} catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
__name(isProcessAlive, "isProcessAlive");
|
|
77
|
+
function readServiceInfo() {
|
|
78
|
+
const filePath = pidFilePath();
|
|
79
|
+
if (!existsSync(filePath)) return null;
|
|
80
|
+
let parsed;
|
|
81
|
+
try {
|
|
82
|
+
parsed = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
83
|
+
} catch {
|
|
84
|
+
unlinkPidFile(filePath);
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const info = parseServiceInfo(parsed);
|
|
88
|
+
if (!info) {
|
|
89
|
+
unlinkPidFile(filePath);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (!isProcessAlive(info.pid)) {
|
|
93
|
+
unlinkPidFile(filePath);
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return info;
|
|
97
|
+
}
|
|
98
|
+
__name(readServiceInfo, "readServiceInfo");
|
|
99
|
+
function writeInfo(info, flag = "w") {
|
|
100
|
+
const filePath = pidFilePath();
|
|
101
|
+
const dir = path.dirname(filePath);
|
|
102
|
+
if (!existsSync(dir)) {
|
|
103
|
+
mkdirSync(dir, { recursive: true });
|
|
104
|
+
}
|
|
105
|
+
writeFileSync(filePath, JSON.stringify(info, null, 2), {
|
|
106
|
+
encoding: "utf-8",
|
|
107
|
+
flag
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
__name(writeInfo, "writeInfo");
|
|
111
|
+
function fileExistsError(message) {
|
|
112
|
+
const err = new Error(message);
|
|
113
|
+
err.code = "EEXIST";
|
|
114
|
+
return err;
|
|
115
|
+
}
|
|
116
|
+
__name(fileExistsError, "fileExistsError");
|
|
117
|
+
function writeServiceInfo(channels) {
|
|
118
|
+
const info = {
|
|
119
|
+
owner: "channel",
|
|
120
|
+
pid: process.pid,
|
|
121
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
122
|
+
channels
|
|
123
|
+
};
|
|
124
|
+
writeInfo(info, "wx");
|
|
125
|
+
}
|
|
126
|
+
__name(writeServiceInfo, "writeServiceInfo");
|
|
127
|
+
function writeServeServiceInfo({
|
|
128
|
+
channels,
|
|
129
|
+
servePid = process.pid,
|
|
130
|
+
workerPid
|
|
131
|
+
}) {
|
|
132
|
+
const info = {
|
|
133
|
+
owner: "serve",
|
|
134
|
+
pid: servePid,
|
|
135
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
136
|
+
channels,
|
|
137
|
+
servePid,
|
|
138
|
+
...workerPid !== void 0 ? { workerPid } : {}
|
|
139
|
+
};
|
|
140
|
+
const filePath = pidFilePath();
|
|
141
|
+
let fd;
|
|
142
|
+
try {
|
|
143
|
+
fd = openSync(filePath, constants.O_RDWR | constants.O_NOFOLLOW);
|
|
144
|
+
} catch (err) {
|
|
145
|
+
if (err.code === "ENOENT") {
|
|
146
|
+
writeInfo(info, "wx");
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
throw err;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
let existing = null;
|
|
153
|
+
try {
|
|
154
|
+
existing = parseServiceInfo(JSON.parse(readFileSync(fd, "utf-8")));
|
|
155
|
+
} catch {
|
|
156
|
+
}
|
|
157
|
+
if (!existing || existing.owner !== "serve" || existing.pid !== servePid || existing.servePid !== servePid) {
|
|
158
|
+
throw fileExistsError(
|
|
159
|
+
"Channel service pidfile is owned by another process."
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
ftruncateSync(fd, 0);
|
|
163
|
+
writeSync(fd, JSON.stringify(info, null, 2), 0, "utf-8");
|
|
164
|
+
} finally {
|
|
165
|
+
closeSync(fd);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
__name(writeServeServiceInfo, "writeServeServiceInfo");
|
|
169
|
+
function reserveServeServiceInfo({
|
|
170
|
+
channels,
|
|
171
|
+
servePid = process.pid
|
|
172
|
+
}) {
|
|
173
|
+
const info = {
|
|
174
|
+
owner: "serve",
|
|
175
|
+
pid: servePid,
|
|
176
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
177
|
+
channels,
|
|
178
|
+
servePid
|
|
179
|
+
};
|
|
180
|
+
writeInfo(info, "wx");
|
|
181
|
+
}
|
|
182
|
+
__name(reserveServeServiceInfo, "reserveServeServiceInfo");
|
|
183
|
+
function removeServiceInfo() {
|
|
184
|
+
const filePath = pidFilePath();
|
|
185
|
+
if (existsSync(filePath)) {
|
|
186
|
+
unlinkPidFile(filePath);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
__name(removeServiceInfo, "removeServiceInfo");
|
|
190
|
+
function removeServeServiceInfo(servePid = process.pid) {
|
|
191
|
+
const filePath = pidFilePath();
|
|
192
|
+
if (!existsSync(filePath)) return false;
|
|
193
|
+
let parsed;
|
|
194
|
+
try {
|
|
195
|
+
parsed = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
196
|
+
} catch {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
const info = parseServiceInfo(parsed);
|
|
200
|
+
if (!info || info.owner !== "serve" || info.servePid !== servePid || info.pid !== servePid) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
unlinkPidFile(filePath);
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
__name(removeServeServiceInfo, "removeServeServiceInfo");
|
|
207
|
+
function signalService(pid, signal = "SIGTERM") {
|
|
208
|
+
if (!isValidPid(pid)) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
process.kill(pid, signal);
|
|
213
|
+
return true;
|
|
214
|
+
} catch {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
__name(signalService, "signalService");
|
|
219
|
+
async function waitForExit(pid, timeoutMs = 5e3, pollMs = 200) {
|
|
220
|
+
const start = Date.now();
|
|
221
|
+
while (Date.now() - start < timeoutMs) {
|
|
222
|
+
if (!isProcessAlive(pid)) return true;
|
|
223
|
+
await new Promise((r) => setTimeout(r, pollMs));
|
|
224
|
+
}
|
|
225
|
+
return !isProcessAlive(pid);
|
|
226
|
+
}
|
|
227
|
+
__name(waitForExit, "waitForExit");
|
|
228
|
+
|
|
229
|
+
export {
|
|
230
|
+
readServiceInfo,
|
|
231
|
+
writeServiceInfo,
|
|
232
|
+
writeServeServiceInfo,
|
|
233
|
+
reserveServeServiceInfo,
|
|
234
|
+
removeServiceInfo,
|
|
235
|
+
removeServeServiceInfo,
|
|
236
|
+
signalService,
|
|
237
|
+
waitForExit
|
|
238
|
+
};
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
createTask
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-G7OQ3RFJ.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveActiveTeamName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GO6LNQXT.js";
|
|
9
9
|
import {
|
|
10
10
|
BaseDeclarativeTool,
|
|
11
11
|
BaseToolInvocation,
|
|
12
12
|
ToolDisplayNames,
|
|
13
13
|
ToolNames
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-4VZH35PN.js";
|
|
15
15
|
import {
|
|
16
16
|
init_esbuild_shims
|
|
17
17
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
require_type
|
|
8
8
|
} from "./chunk-7RYW5LQV.js";
|
|
9
9
|
import {
|
|
10
|
+
require_function_bind,
|
|
10
11
|
require_hasown
|
|
11
12
|
} from "./chunk-UWCTAVOD.js";
|
|
12
13
|
import {
|
|
@@ -658,6 +659,18 @@ var require_es_set_tostringtag = __commonJS({
|
|
|
658
659
|
}
|
|
659
660
|
});
|
|
660
661
|
|
|
662
|
+
// node_modules/form-data/node_modules/hasown/index.js
|
|
663
|
+
var require_hasown2 = __commonJS({
|
|
664
|
+
"node_modules/form-data/node_modules/hasown/index.js"(exports, module) {
|
|
665
|
+
"use strict";
|
|
666
|
+
init_esbuild_shims();
|
|
667
|
+
var call = Function.prototype.call;
|
|
668
|
+
var $hasOwn = Object.prototype.hasOwnProperty;
|
|
669
|
+
var bind = require_function_bind();
|
|
670
|
+
module.exports = bind.call(call, $hasOwn);
|
|
671
|
+
}
|
|
672
|
+
});
|
|
673
|
+
|
|
661
674
|
// node_modules/form-data/lib/populate.js
|
|
662
675
|
var require_populate = __commonJS({
|
|
663
676
|
"node_modules/form-data/lib/populate.js"(exports, module) {
|
|
@@ -689,8 +702,12 @@ var require_form_data = __commonJS({
|
|
|
689
702
|
var mime = require_mime_types();
|
|
690
703
|
var asynckit = require_asynckit();
|
|
691
704
|
var setToStringTag = require_es_set_tostringtag();
|
|
692
|
-
var hasOwn =
|
|
705
|
+
var hasOwn = require_hasown2();
|
|
693
706
|
var populate = require_populate();
|
|
707
|
+
function escapeHeaderParam(str) {
|
|
708
|
+
return String(str).replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/"/g, "%22");
|
|
709
|
+
}
|
|
710
|
+
__name(escapeHeaderParam, "escapeHeaderParam");
|
|
694
711
|
function FormData(options) {
|
|
695
712
|
if (!(this instanceof FormData)) {
|
|
696
713
|
return new FormData(options);
|
|
@@ -781,7 +798,7 @@ var require_form_data = __commonJS({
|
|
|
781
798
|
var contents = "";
|
|
782
799
|
var headers = {
|
|
783
800
|
// add custom disposition as third element or keep it two elements if not
|
|
784
|
-
"Content-Disposition": ["form-data", 'name="' + field + '"'].concat(contentDisposition || []),
|
|
801
|
+
"Content-Disposition": ["form-data", 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []),
|
|
785
802
|
// if no content type. allow it to be empty array
|
|
786
803
|
"Content-Type": [].concat(contentType || [])
|
|
787
804
|
};
|
|
@@ -815,7 +832,7 @@ var require_form_data = __commonJS({
|
|
|
815
832
|
filename = path.basename(value.client._httpMessage.path || "");
|
|
816
833
|
}
|
|
817
834
|
if (filename) {
|
|
818
|
-
return 'filename="' + filename + '"';
|
|
835
|
+
return 'filename="' + escapeHeaderParam(filename) + '"';
|
|
819
836
|
}
|
|
820
837
|
};
|
|
821
838
|
FormData.prototype._getContentType = function(value, options) {
|
|
@@ -1113,6 +1130,11 @@ var require_follow_redirects = __commonJS({
|
|
|
1113
1130
|
} catch (error) {
|
|
1114
1131
|
useNativeURL = error.code === "ERR_INVALID_URL";
|
|
1115
1132
|
}
|
|
1133
|
+
var sensitiveHeaders = [
|
|
1134
|
+
"Authorization",
|
|
1135
|
+
"Proxy-Authorization",
|
|
1136
|
+
"Cookie"
|
|
1137
|
+
];
|
|
1116
1138
|
var preservedUrlFields = [
|
|
1117
1139
|
"auth",
|
|
1118
1140
|
"host",
|
|
@@ -1177,6 +1199,7 @@ var require_follow_redirects = __commonJS({
|
|
|
1177
1199
|
self.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause }));
|
|
1178
1200
|
}
|
|
1179
1201
|
};
|
|
1202
|
+
this._headerFilter = new RegExp("^(?:" + sensitiveHeaders.concat(options.sensitiveHeaders).map(escapeRegex).join("|") + ")$", "i");
|
|
1180
1203
|
this._performRequest();
|
|
1181
1204
|
}
|
|
1182
1205
|
__name(RedirectableRequest, "RedirectableRequest");
|
|
@@ -1318,6 +1341,9 @@ var require_follow_redirects = __commonJS({
|
|
|
1318
1341
|
if (!options.headers) {
|
|
1319
1342
|
options.headers = {};
|
|
1320
1343
|
}
|
|
1344
|
+
if (!isArray(options.sensitiveHeaders)) {
|
|
1345
|
+
options.sensitiveHeaders = [];
|
|
1346
|
+
}
|
|
1321
1347
|
if (options.host) {
|
|
1322
1348
|
if (!options.hostname) {
|
|
1323
1349
|
options.hostname = options.host;
|
|
@@ -1423,7 +1449,7 @@ var require_follow_redirects = __commonJS({
|
|
|
1423
1449
|
this._isRedirect = true;
|
|
1424
1450
|
spreadUrlObject(redirectUrl, this._options);
|
|
1425
1451
|
if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) {
|
|
1426
|
-
removeMatchingHeaders(
|
|
1452
|
+
removeMatchingHeaders(this._headerFilter, this._options.headers);
|
|
1427
1453
|
}
|
|
1428
1454
|
if (isFunction(beforeRedirect)) {
|
|
1429
1455
|
var responseDetails = {
|
|
@@ -1585,6 +1611,10 @@ var require_follow_redirects = __commonJS({
|
|
|
1585
1611
|
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
|
1586
1612
|
}
|
|
1587
1613
|
__name(isSubdomain, "isSubdomain");
|
|
1614
|
+
function isArray(value) {
|
|
1615
|
+
return value instanceof Array;
|
|
1616
|
+
}
|
|
1617
|
+
__name(isArray, "isArray");
|
|
1588
1618
|
function isString(value) {
|
|
1589
1619
|
return typeof value === "string" || value instanceof String;
|
|
1590
1620
|
}
|
|
@@ -1601,6 +1631,10 @@ var require_follow_redirects = __commonJS({
|
|
|
1601
1631
|
return URL && value instanceof URL;
|
|
1602
1632
|
}
|
|
1603
1633
|
__name(isURL, "isURL");
|
|
1634
|
+
function escapeRegex(regex) {
|
|
1635
|
+
return regex.replace(/[\]\\/()*+?.$]/g, "\\$&");
|
|
1636
|
+
}
|
|
1637
|
+
__name(escapeRegex, "escapeRegex");
|
|
1604
1638
|
module.exports = wrap({ http, https });
|
|
1605
1639
|
module.exports.wrap = wrap;
|
|
1606
1640
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-A4BMJM77.js";
|
|
6
|
+
import {
|
|
7
|
+
__name
|
|
8
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
9
|
+
|
|
10
|
+
// packages/cli/src/serve/workspace-remember-errors.ts
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
function errorCodeFromRecord(record) {
|
|
13
|
+
if (typeof record["code"] === "string") return record["code"];
|
|
14
|
+
const data = record["data"];
|
|
15
|
+
if (data && typeof data === "object") {
|
|
16
|
+
const dataRecord = data;
|
|
17
|
+
if (typeof dataRecord["errorKind"] === "string") {
|
|
18
|
+
return dataRecord["errorKind"];
|
|
19
|
+
}
|
|
20
|
+
if (typeof dataRecord["code"] === "string") return dataRecord["code"];
|
|
21
|
+
}
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
__name(errorCodeFromRecord, "errorCodeFromRecord");
|
|
25
|
+
function extractRememberErrorCode(err) {
|
|
26
|
+
if (err && typeof err === "object") {
|
|
27
|
+
const record = err;
|
|
28
|
+
const direct = errorCodeFromRecord(record);
|
|
29
|
+
if (direct) return direct;
|
|
30
|
+
const cause = record["cause"];
|
|
31
|
+
if (cause && typeof cause === "object") {
|
|
32
|
+
const causedBy = errorCodeFromRecord(cause);
|
|
33
|
+
if (causedBy) return causedBy;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return "remember_failed";
|
|
37
|
+
}
|
|
38
|
+
__name(extractRememberErrorCode, "extractRememberErrorCode");
|
|
39
|
+
|
|
40
|
+
// packages/cli/src/serve/workspace-memory-remember-constants.ts
|
|
41
|
+
init_esbuild_shims();
|
|
42
|
+
var MAX_REMEMBER_CONTENT_BYTES = 64 * 1024;
|
|
43
|
+
|
|
44
|
+
// packages/cli/src/serve/validate-server-name.ts
|
|
45
|
+
init_esbuild_shims();
|
|
46
|
+
var VALID_SERVER_NAME = /^[A-Za-z0-9_-]+$/;
|
|
47
|
+
var RESERVED_SERVER_NAMES = /* @__PURE__ */ new Set([
|
|
48
|
+
"__proto__",
|
|
49
|
+
"constructor",
|
|
50
|
+
"prototype"
|
|
51
|
+
]);
|
|
52
|
+
function isValidServerName(name) {
|
|
53
|
+
return typeof name === "string" && name.length > 0 && name.length <= 256 && VALID_SERVER_NAME.test(name) && !RESERVED_SERVER_NAMES.has(name);
|
|
54
|
+
}
|
|
55
|
+
__name(isValidServerName, "isValidServerName");
|
|
56
|
+
|
|
57
|
+
export {
|
|
58
|
+
extractRememberErrorCode,
|
|
59
|
+
MAX_REMEMBER_CONTENT_BYTES,
|
|
60
|
+
isValidServerName
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* @license
|
|
64
|
+
* Copyright 2026 Qwen Team
|
|
65
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
66
|
+
*/
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-A4BMJM77.js";
|
|
6
|
+
import {
|
|
7
|
+
__name
|
|
8
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
9
|
+
|
|
10
|
+
// packages/cli/src/serve/loopback-binds.ts
|
|
11
|
+
init_esbuild_shims();
|
|
12
|
+
var LOOPBACK_BINDS = /* @__PURE__ */ new Set([
|
|
13
|
+
"127.0.0.1",
|
|
14
|
+
"localhost",
|
|
15
|
+
"::1",
|
|
16
|
+
"[::1]"
|
|
17
|
+
]);
|
|
18
|
+
function isIpv4Loopback(hostname) {
|
|
19
|
+
const octets = hostname.split(".");
|
|
20
|
+
if (octets.length !== 4) return false;
|
|
21
|
+
const [first, ...rest] = octets;
|
|
22
|
+
return first === "127" && rest.every((octet) => {
|
|
23
|
+
if (!/^\d+$/.test(octet)) return false;
|
|
24
|
+
const value = Number(octet);
|
|
25
|
+
return value >= 0 && value <= 255;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
__name(isIpv4Loopback, "isIpv4Loopback");
|
|
29
|
+
function isLoopbackBind(hostname) {
|
|
30
|
+
const normalized = hostname.toLowerCase();
|
|
31
|
+
return LOOPBACK_BINDS.has(normalized) || isIpv4Loopback(normalized);
|
|
32
|
+
}
|
|
33
|
+
__name(isLoopbackBind, "isLoopbackBind");
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
isLoopbackBind
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* @license
|
|
40
|
+
* Copyright 2025 Qwen Team
|
|
41
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
42
|
+
*/
|