@qwen-code/qwen-code 0.20.0 → 0.20.1-nightly.20260724.7d17c44a3
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/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
- package/bundled/qc-helper/docs/features/commands.md +54 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
- package/bundled/qc-helper/docs/integration-github-action.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +2 -1
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +7 -5
- package/chunks/MaxSizedBox-LGRTXB47.js +84 -0
- package/chunks/{StandaloneSessionPicker-CEGO2AZX.js → StandaloneSessionPicker-H3TBU3C3.js} +68 -56
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-YUR43TLG.js → acpAgent-5D7P4BB5.js} +2061 -556
- package/chunks/agent-W7UAHCCI.js +80 -0
- package/chunks/agent-headless-KTBMPRSC.js +74 -0
- package/chunks/{anthropicContentGenerator-HVKLXOOU.js → anthropicContentGenerator-ZLQ3X2HI.js} +112 -45
- package/chunks/{artifact-tool-WBCAMD3O.js → artifact-tool-OKMWONT6.js} +3 -3
- package/chunks/{askUserQuestion-6DZC4UV5.js → askUserQuestion-V6FUS23G.js} +3 -3
- package/chunks/bridge-FFC4C6VD.js +89 -0
- package/chunks/{build-SSCNEHZZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-2SL2BXTK.js → ca-GKRQZ7AM.js} +612 -201
- package/chunks/{channel-worker-group-53CMOPFT.js → channel-worker-group-MA3WXWYX.js} +7 -6
- package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-TIYYYBCT.js} +189 -29
- package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-CXRCDA4Y.js} +6 -5
- package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
- package/chunks/{chunk-4EP2PYYL.js → chunk-2G6QIHYL.js} +5 -5
- package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
- package/chunks/chunk-2RFKHEXL.js +74 -0
- package/chunks/{chunk-7SXZC7ID.js → chunk-2WTVWAKT.js} +7 -6
- package/chunks/{chunk-TIH2ZTOC.js → chunk-32A4PI3E.js} +2 -2
- package/chunks/chunk-36HSVBBU.js +469 -0
- package/chunks/{chunk-IR46U7RB.js → chunk-3FB2Y2OE.js} +3 -3
- package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
- package/chunks/chunk-3Z43GZUQ.js +32 -0
- package/chunks/chunk-43T5WDQ7.js +127 -0
- package/chunks/chunk-46UV252V.js +128 -0
- package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
- package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
- package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
- package/chunks/{chunk-OWCALFEG.js → chunk-54R2CV2G.js} +1 -1
- package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
- package/chunks/chunk-5BS3KLRP.js +6194 -0
- package/chunks/{chunk-NEEB7UEN.js → chunk-6GMVPFB2.js} +153 -72
- package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
- package/chunks/chunk-6PVPNMXU.js +29 -0
- package/chunks/chunk-6QHAUJUE.js +293 -0
- package/chunks/chunk-6VK3IRTX.js +10017 -0
- package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
- package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
- package/chunks/{chunk-FSL5W5TI.js → chunk-AFFGGOF6.js} +4 -4
- package/chunks/chunk-AMDSOFFV.js +10860 -0
- package/chunks/chunk-AXUW635Q.js +934 -0
- package/chunks/{chunk-A5LYNIW7.js → chunk-BJBUDCM3.js} +8 -8
- package/chunks/chunk-BK2UNYWD.js +29 -0
- package/chunks/{chunk-6RLROE6G.js → chunk-BLFVGB7D.js} +30 -4
- package/chunks/chunk-BPJSQIJX.js +100 -0
- package/chunks/{chunk-FLSVD6BS.js → chunk-BRTR7S7O.js} +3 -3
- package/chunks/{chunk-KG3XV6FH.js → chunk-BSNWBC33.js} +32 -2
- package/chunks/chunk-BULDBTYC.js +153 -0
- package/chunks/{chunk-PBWEWI4N.js → chunk-BW5Z5NOG.js} +83 -74
- package/chunks/{chunk-EIAK6Q2B.js → chunk-C3VHAXP2.js} +20 -3
- package/chunks/{chunk-6AFUCL3D.js → chunk-CEZB3XFD.js} +1 -1
- package/chunks/chunk-CHMENNJV.js +1832 -0
- package/chunks/{chunk-TMQ6XQCX.js → chunk-CK3IEEHR.js} +416 -291
- package/chunks/{chunk-OYZWQNWG.js → chunk-CK6UABV2.js} +2 -2
- package/chunks/{chunk-VZQUV7VK.js → chunk-CKTMY3EP.js} +1 -1
- package/chunks/{chunk-VDWBQ5AW.js → chunk-CUPAVLRY.js} +5 -2
- package/chunks/{chunk-I2PYAYFM.js → chunk-CXUFILV3.js} +3 -3
- package/chunks/chunk-DP3IHZGG.js +1498 -0
- package/chunks/{chunk-BMWMT5Y2.js → chunk-DP5GT2MW.js} +7 -375
- package/chunks/{chunk-D22SX43D.js → chunk-DWNZ6PVQ.js} +1 -1
- package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
- package/chunks/{chunk-DP5GXXNZ.js → chunk-EL2IQ2S5.js} +5 -1
- package/chunks/{chunk-EZVDJFZ7.js → chunk-ERLGR7GI.js} +1 -1
- package/chunks/{chunk-IVPSS6EL.js → chunk-F5MBYZSU.js} +4 -4
- package/chunks/{chunk-AQIEINAY.js → chunk-F6IYL66A.js} +28 -1766
- package/chunks/{chunk-FEOZBUMT.js → chunk-FODK6UMO.js} +0 -27
- package/chunks/{chunk-PGEPSDJI.js → chunk-FWNZ7CVN.js} +24 -20
- package/chunks/{chunk-5JBR5XIK.js → chunk-G7EFBBVF.js} +220 -141
- package/chunks/chunk-GLNBDYUX.js +38 -0
- package/chunks/{chunk-ANPINBOF.js → chunk-H4YKEV2X.js} +5 -5
- package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
- package/chunks/{chunk-FQD7GFSV.js → chunk-HJJDKFL5.js} +3 -3
- package/chunks/{chunk-4N3KMAIL.js → chunk-HPWHDJID.js} +152 -35
- package/chunks/{chunk-KQNM4EO7.js → chunk-HQCSRJ3P.js} +138 -6
- package/chunks/chunk-HTR4WV6U.js +327 -0
- package/chunks/{chunk-YWEW33JY.js → chunk-HVO55LUD.js} +7 -7
- package/chunks/{chunk-MJ6S23WZ.js → chunk-HZEWYOVI.js} +5 -5
- package/chunks/chunk-IFG6TYJ2.js +16577 -0
- package/chunks/{chunk-B3KGZCQN.js → chunk-IJTOWOD7.js} +322 -202
- package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
- package/chunks/{chunk-4ILMYHEI.js → chunk-IRDZJSCL.js} +3 -3
- package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
- package/chunks/{chunk-33XUAINQ.js → chunk-J5UKQEFG.js} +69 -9
- package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
- package/chunks/{chunk-S2XVRHDN.js → chunk-JDFBBGRD.js} +1 -1
- package/chunks/{chunk-4XNLIGVA.js → chunk-JKCALGYN.js} +1023 -383
- package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
- package/chunks/{chunk-VEXFOTEO.js → chunk-JYUSL2V4.js} +3 -3
- package/chunks/{chunk-S2PD3EZD.js → chunk-KJEMJWNH.js} +1 -1
- package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
- package/chunks/{chunk-CZF3E5GF.js → chunk-LA5H3LM5.js} +1 -1
- package/chunks/{chunk-NDMQLV4Y.js → chunk-LBAO2XRA.js} +4 -4
- package/chunks/{chunk-7RMOXZTC.js → chunk-LDPP5VTZ.js} +4 -4
- package/chunks/{chunk-KDC6GNQR.js → chunk-LEEWLFHW.js} +4 -4
- package/chunks/{chunk-KX6UK4VJ.js → chunk-LI4I37W4.js} +22152 -18007
- package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
- package/chunks/{chunk-AJSJ5TTU.js → chunk-LP2E4MQG.js} +1 -1
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-BRRF37CO.js → chunk-LYTBLSSW.js} +5 -5
- package/chunks/{chunk-DBE4QFZS.js → chunk-MB7ENXPR.js} +39 -37
- package/chunks/{chunk-GKY2OJ7R.js → chunk-MOHAWVLH.js} +4 -4
- package/chunks/chunk-NABLFI57.js +82 -0
- package/chunks/chunk-NBQDBANR.js +411 -0
- package/chunks/{chunk-EAUYY7SS.js → chunk-NOAAFNTJ.js} +43 -10
- package/chunks/chunk-NXS53EA7.js +1462 -0
- package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
- package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
- package/chunks/{chunk-OP4MOGXF.js → chunk-P5RRUHL7.js} +23 -1
- package/chunks/{chunk-KOR3XKCA.js → chunk-PBII2NFX.js} +12 -6
- package/chunks/{chunk-O3OCNYY5.js → chunk-PDYB7HG2.js} +2 -2
- package/chunks/{chunk-2HOVDT7W.js → chunk-PFSUKTZH.js} +1 -1
- package/chunks/chunk-PKL3HGNZ.js +2299 -0
- package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
- package/chunks/{chunk-OLMETXLX.js → chunk-PXHK5ONM.js} +41 -9
- package/chunks/{chunk-PF4CHQOJ.js → chunk-Q6GU6TKM.js} +11 -10
- package/chunks/{chunk-4ODB7WIB.js → chunk-QAFKR7WR.js} +1 -1
- package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
- package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
- package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
- package/chunks/{chunk-333CXMNJ.js → chunk-QXZTZJLX.js} +5 -5
- package/chunks/chunk-R6D2CTQR.js +289 -0
- package/chunks/{chunk-7PZ2ATFZ.js → chunk-R6SKHK3T.js} +54 -29
- package/chunks/{chunk-OONJNQ42.js → chunk-RGG6M2WF.js} +4 -4
- package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
- package/chunks/{chunk-O3Z73NBP.js → chunk-RW2NEXYJ.js} +15 -11
- package/chunks/{chunk-HZPN55E5.js → chunk-SJEDL7DI.js} +1 -1
- package/chunks/{chunk-AKX4WPPP.js → chunk-SWBJRDYC.js} +866 -183
- package/chunks/{chunk-NBMIC7DR.js → chunk-SX4PK3FC.js} +145 -5
- package/chunks/chunk-T3452DP5.js +246 -0
- package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/chunk-U7ZFW55U.js +2098 -0
- package/chunks/{chunk-JNWZQ27S.js → chunk-UCOJC6EB.js} +72 -23
- package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
- package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
- package/chunks/{chunk-2LL7TXB4.js → chunk-UH7242DI.js} +3 -3
- package/chunks/{chunk-CB2HFGRV.js → chunk-UJV643E2.js} +31 -6
- package/chunks/chunk-UO7DCGEV.js +121 -0
- package/chunks/{chunk-Y2ENGUD6.js → chunk-UPF7PTBI.js} +79 -2
- package/chunks/chunk-UW5EOVUN.js +249 -0
- package/chunks/{chunk-SJMV7ZBK.js → chunk-VLVO52KC.js} +8 -8
- package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
- package/chunks/{chunk-S2W2LVDU.js → chunk-WHFK6G6U.js} +8 -9
- package/chunks/chunk-WI3KCKZ5.js +391 -0
- package/chunks/{chunk-NGFEPAE6.js → chunk-WLEFWSSC.js} +8 -6
- package/chunks/{chunk-XVVH63JG.js → chunk-WUJXJ34P.js} +3 -3
- package/chunks/{chunk-MAQQGNQ5.js → chunk-WYLPWQHJ.js} +56 -717
- package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
- package/chunks/chunk-XAWJ2526.js +1049 -0
- package/chunks/{chunk-CV63PP6U.js → chunk-YCIM6O3I.js} +1 -1
- package/chunks/{chunk-OEO2ERWK.js → chunk-Z44CVEUF.js} +54 -33
- package/chunks/{chunk-TKLLK6XQ.js → chunk-ZT4POVWC.js} +11 -11
- package/chunks/{chunk-NIJEXGV6.js → chunk-ZXYUQXY5.js} +148 -10
- package/chunks/{computer-use-NIWQNUZF.js → computer-use-UJ5T34TE.js} +50 -37
- package/chunks/{config-utils-AHQ6YZ66.js → config-utils-XQRXHAN3.js} +3 -3
- package/chunks/contextCommand-CSCB4E5M.js +79 -0
- package/chunks/{create-sub-session-MGNX52P3.js → create-sub-session-55F3GOLK.js} +46 -33
- package/chunks/{create-sub-session-P26FE5GG.js → create-sub-session-JPCSYZAJ.js} +3 -3
- package/chunks/{cron-create-JWFHBDRQ.js → cron-create-CUMELMPL.js} +6 -6
- package/chunks/{cron-delete-GDX4E26G.js → cron-delete-QZFV6U3P.js} +5 -5
- package/chunks/{cron-list-USMAIWPT.js → cron-list-IDKO7ZO2.js} +5 -5
- package/chunks/{daemon-RG2MAI6T.js → daemon-7LP7R6IU.js} +500 -133
- package/chunks/daemon-status-provider-6YNZ3UAE.js +88 -0
- package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
- package/chunks/{dist-WGTQO7F2.js → dist-376652EZ.js} +114 -28
- package/chunks/{dist-53PZYC5B.js → dist-3YCTE6HD.js} +2 -2
- package/chunks/{dist-2BHAYBKP.js → dist-D7Z3HOO7.js} +14 -2
- package/chunks/{dist-FUTEXY6A.js → dist-MEGJFGAI.js} +40 -9
- package/chunks/{dist-2MIU4UUH.js → dist-NQ436QEX.js} +1 -1
- package/chunks/{dist-AU7NQQRP.js → dist-NQNTOIEN.js} +26 -2
- package/chunks/earlyInputCapture-HPUVJ2KH.js +81 -0
- package/chunks/{edit-3QV3JZJL.js → edit-7CMAN3F4.js} +50 -39
- package/chunks/{en-XE34GKAA.js → en-SALLIJS7.js} +6 -1
- package/chunks/{enter-worktree-4GMMF7EG.js → enter-worktree-3PH4YTY2.js} +49 -36
- package/chunks/{enterPlanMode-L5UWBAUC.js → enterPlanMode-MSXLSWLI.js} +55 -37
- package/chunks/{environment-3OV7UQOT.js → environment-KS36ZHBE.js} +48 -35
- package/chunks/errors-LCPFS62A.js +87 -0
- package/chunks/{exit-worktree-DDP57JLV.js → exit-worktree-ARA4C3CK.js} +49 -36
- package/chunks/{exitPlanMode-CJBLGPIP.js → exitPlanMode-GCDIQPB7.js} +49 -36
- package/chunks/{fast-path-M6RP2ING.js → fast-path-IDHBVIT6.js} +3 -2
- package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
- package/chunks/{gemini-H4PHBJTL.js → gemini-2AFQJMX5.js} +141 -105
- package/chunks/{geminiContentGenerator-VURJYPWP.js → geminiContentGenerator-UDIH3YI6.js} +9 -8
- package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
- package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
- package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
- package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
- package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
- package/chunks/{glob-2KUSRAVQ.js → glob-HCL7HZ67.js} +49 -36
- package/chunks/{grep-B5RXVESV.js → grep-CJLBSCTV.js} +49 -36
- package/chunks/handleAutoUpdate-Q572P3FL.js +80 -0
- package/chunks/i18n-OBB4R7SR.js +96 -0
- package/chunks/initializer-LXEY6V3C.js +85 -0
- package/chunks/installationInfo-XUAOVMEE.js +79 -0
- package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
- package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
- package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
- package/chunks/list-WAXY7QOU.js +88 -0
- package/chunks/list-agents-AH3P5NB7.js +80 -0
- package/chunks/loadedSettingsAdapter-OZFNBRHE.js +82 -0
- package/chunks/loggingContentGenerator-7WDTTE6G.js +1068 -0
- package/chunks/{loop-wakeup-5GLTUBHA.js → loop-wakeup-IHRW6TNB.js} +7 -7
- package/chunks/{ls-FHBY3Y7I.js → ls-ZAXZ2G2W.js} +5 -5
- package/chunks/{lsp-B6VMEW6Y.js → lsp-R4ZG3UGQ.js} +3 -3
- package/chunks/managed-npm-update-N42DO5QW.js +339 -0
- package/chunks/mcp-6SOORKTY.js +82 -0
- package/chunks/{monitor-GLJZDNPS.js → monitor-4PSVNVU4.js} +51 -37
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-FBR5S7IZ.js +140 -0
- package/chunks/{notebook-edit-AVCIWS4F.js → notebook-edit-QK26632S.js} +50 -39
- package/chunks/{openaiContentGenerator-B7W24G3D.js → openaiContentGenerator-IXJS6C2U.js} +33 -20
- package/chunks/pidfile-UCFCJOAP.js +85 -0
- package/chunks/{processUtils-XZPY2PBB.js → processUtils-YL2LXON2.js} +2 -2
- package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
- package/chunks/{qwenContentGenerator-6GUTWJIC.js → qwenContentGenerator-H6WZPJKC.js} +56 -36
- package/chunks/{qwenOAuth2-GASEEWGU.js → qwenOAuth2-HTROHKXO.js} +10 -23
- package/chunks/read-file-FOYTMUNL.js +31 -0
- package/chunks/{read-mcp-resource-AKCL7I43.js → read-mcp-resource-65BWNF3F.js} +3 -3
- package/chunks/{record-artifact-PEUB7727.js → record-artifact-2RLSOP6U.js} +3 -3
- package/chunks/resumeHistoryUtils-ZNHTWBXS.js +90 -0
- package/chunks/ripGrep-K4K4QLNJ.js +72 -0
- package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
- package/chunks/{run-qwen-serve-OZGR3FQA.js → run-qwen-serve-XI4MCAFV.js} +343 -88
- package/chunks/runtime-4CTBU5WX.js +115 -0
- package/chunks/{scheduler-Z7QLMUWA.js → scheduler-TTEITHBF.js} +46 -33
- package/chunks/sdk-exporters-grpc-N3OLDF63.js +23214 -0
- package/chunks/sdk-exporters-http-AOHAEOMC.js +563 -0
- package/chunks/sdk-impl-TLQOC7P4.js +9193 -0
- package/chunks/{send-message-3RHE7HSM.js → send-message-GEY4CNPS.js} +47 -8
- package/chunks/serve-W7UKJTQT.js +88 -0
- package/chunks/{server-SO64U3X5.js → server-JD5PIE7A.js} +3069 -517
- package/chunks/{session-2KL2WQAH.js → session-R4BDHLYR.js} +112 -177
- package/chunks/{settings-KITVOUSV.js → settings-BXZHA6TZ.js} +50 -37
- package/chunks/shell-XYMFCGN5.js +82 -0
- package/chunks/{skill-SOQHY455.js → skill-YKXYEPOF.js} +25 -20
- package/chunks/spawnChannel-IO4HQLFS.js +81 -0
- package/chunks/{src-43LM7JLB.js → src-LKKTJ4NG.js} +382 -235
- package/chunks/standalone-update-76JG7DVN.js +91 -0
- package/chunks/{startInteractiveUI-3RGTGEX5.js → startInteractiveUI-BXWQUXAS.js} +1314 -958
- package/chunks/{syntheticOutput-FG5PQKIR.js → syntheticOutput-2WNMXEU5.js} +4 -4
- package/chunks/task-create-R5H74Y76.js +25 -0
- package/chunks/{task-list-QWSY4ZIU.js → task-list-WXAFDSRY.js} +7 -7
- package/chunks/{task-stop-GWC6UWAL.js → task-stop-CHFZP23W.js} +4 -4
- package/chunks/{task-update-NCTAB73Q.js → task-update-Z44A4GAR.js} +11 -9
- package/chunks/{team-create-FXN3PEBP.js → team-create-5Y3MCAIM.js} +49 -36
- package/chunks/{team-delete-KK37HTOG.js → team-delete-YDCMRSI4.js} +7 -7
- package/chunks/{team-plan-approval-GEIZ356Q.js → team-plan-approval-HYJJZ76T.js} +49 -36
- package/chunks/theme-manager-3YF2SUZL.js +76 -0
- package/chunks/{todoWrite-ERCAMLFS.js → todoWrite-ED2IVZJL.js} +5 -5
- package/chunks/{tool-search-XKK7DNOK.js → tool-search-3ZO2XMEP.js} +21 -17
- package/chunks/total-session-admission-NDF7EVG7.js +83 -0
- package/chunks/trustedFolders-Q7RALK4T.js +92 -0
- package/chunks/{chunk-6EFTQYW7.js → undici-3FJYTMOF.js} +24 -399
- package/chunks/{chunk-L573Z2QZ.js → undici-PYHBDDPN.js} +1 -5
- package/chunks/{update-relaunch-FMVZK6XF.js → update-relaunch-BTW5XGVT.js} +17 -17
- package/chunks/updateCheck-MXIU6DWQ.js +91 -0
- package/chunks/useAutoAcceptIndicator-BJXHJW77.js +92 -0
- package/chunks/{validateNonInterActiveAuth-PRVEB6GG.js → validateNonInterActiveAuth-FLEPF3QQ.js} +90 -76
- package/chunks/{version-AZMG6KWL.js → version-75VRONIL.js} +1 -1
- package/chunks/{web-fetch-EPGJ5OQQ.js → web-fetch-5X27LYHB.js} +101 -41
- package/chunks/web-search-IDMTBJUP.js +718 -0
- package/chunks/{workflow-UTNVPW22.js → workflow-JOD2OPFQ.js} +54 -40
- package/chunks/workspace-providers-status-WDLBDLPG.js +85 -0
- package/chunks/{workspace-registration-store-F3ZX3YHT.js → workspace-registration-store-26Z6J6P5.js} +9 -3
- package/chunks/workspace-registry-IABDATX3.js +87 -0
- package/chunks/workspace-service-BI4KDYPD.js +97 -0
- package/chunks/workspace-skills-status-OVB4LPHA.js +84 -0
- package/chunks/write-file-276AJ7KE.js +72 -0
- package/chunks/{zh-6ANG2HTL.js → zh-Q54GA5SV.js} +6 -1
- package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-VOBNFOPU.js} +6 -1
- package/cli-entry.js +164 -12
- package/cli.js +19 -12
- package/locales/ca.js +773 -203
- package/locales/de.js +8 -2
- package/locales/en.js +9 -2
- package/locales/fr.js +8 -2
- package/locales/ja.js +8 -2
- package/locales/pt.js +8 -2
- package/locales/ru.js +8 -2
- package/locales/zh-TW.js +9 -2
- package/locales/zh.js +9 -2
- package/package.json +3 -3
- package/web-shell/assets/{arc-Buk1besA.js → arc-CMb7lr2P.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-D6KQ5Kwm.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-Ce7YYSf8.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-DaStHfor.js} +1 -1
- package/web-shell/assets/channel-Dg4f-Kry.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-CPaqadg9.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-Veh9ZGKg.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-BPTX5n4q.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-CtXsE_ca.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-D8DDCJ8h.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-cjMDGzHz.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-BaZ1hNhV.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-C7w-9w5-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CT7Fo2aW.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CT7Fo2aW.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-DqvBEEIe.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-RkPyoMAk.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-D9b6nNyg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-CiiNKUIy.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-CP1qizXd.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-BGe30TWx.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-CvoEPARH.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-DWfLzVkV.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-D-dTQmo6.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-CYPHKaGY.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-DA7_aQYD.js} +1 -1
- package/web-shell/assets/index-B0i-TOYM.css +5 -0
- package/web-shell/assets/index-CgCHD46L.js +1225 -0
- package/web-shell/assets/{index-wFXp7W68.js → index-DqHNAB8C.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-B87ljDPa.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-CYSpyjaN.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-DAL6Js6f.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-_zufKGJv.js} +1 -1
- package/web-shell/assets/{linear-0ZVQFVKf.js → linear-DidhMgku.js} +1 -1
- package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-DAkX3h3a.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-DbZxUBEH.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-Du9uoqrf.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-DwjELuKm.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-BAqfVtBL.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP--hm2VpmK.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-R5MUQaIt.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-VsX032xQ.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-uPWLcSfy.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-BqjVRXzg.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-i2tkvlkg.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-Ch8G49EM.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-bYpWeQNy.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-C9NhuBqB.js} +1 -1
- package/web-shell/index.html +17 -13
- package/chunks/MaxSizedBox-B5YGZSYE.js +0 -72
- package/chunks/agent-H4JIDL7S.js +0 -67
- package/chunks/agent-headless-TTBEREQV.js +0 -61
- package/chunks/bridge-VL7ITBU5.js +0 -75
- package/chunks/chunk-542SK7KV.js +0 -8293
- package/chunks/chunk-CPCVCKKF.js +0 -358
- package/chunks/chunk-SEKHYHMS.js +0 -45
- package/chunks/chunk-W7FJ3N32.js +0 -49
- package/chunks/chunk-ZFKNWQGQ.js +0 -74639
- package/chunks/contextCommand-L2COEUHS.js +0 -66
- package/chunks/daemon-status-provider-NL4IAG7B.js +0 -74
- package/chunks/earlyInputCapture-L6I2A22T.js +0 -68
- package/chunks/errors-LEOF5QG4.js +0 -74
- package/chunks/handleAutoUpdate-QQVIWXKT.js +0 -67
- package/chunks/i18n-N6OBDORT.js +0 -83
- package/chunks/initializer-6WCFNDLL.js +0 -72
- package/chunks/installationInfo-6J3WPXNS.js +0 -64
- package/chunks/list-HOWQSWP6.js +0 -75
- package/chunks/loadedSettingsAdapter-AO4YBRXZ.js +0 -69
- package/chunks/mcp-QH7QNXOH.js +0 -69
- package/chunks/nonInteractiveCli-TI7EMPXD.js +0 -126
- package/chunks/pidfile-UEHAT6DH.js +0 -72
- package/chunks/read-file-SQJONF6A.js +0 -29
- package/chunks/resumeHistoryUtils-PFQ2A23X.js +0 -78
- package/chunks/ripGrep-QCK22GDU.js +0 -59
- package/chunks/runtime-SNVAP6EH.js +0 -100
- package/chunks/serve-BT7KS6SC.js +0 -75
- package/chunks/shell-BITUVH2R.js +0 -69
- package/chunks/spawnChannel-2BU3AULL.js +0 -68
- package/chunks/standalone-update-YG5JUYCM.js +0 -78
- package/chunks/task-create-HX32YXO7.js +0 -23
- package/chunks/theme-manager-IAETOI25.js +0 -63
- package/chunks/total-session-admission-BJLDHKJN.js +0 -69
- package/chunks/trustedFolders-5XCVNEUU.js +0 -79
- package/chunks/updateCheck-YZZB7YBU.js +0 -70
- package/chunks/useAutoAcceptIndicator-ZSQX4I2H.js +0 -80
- package/chunks/workspace-providers-status-EADV364W.js +0 -72
- package/chunks/workspace-registry-W6VMFYZU.js +0 -73
- package/chunks/workspace-service-F3KIN2UN.js +0 -84
- package/chunks/workspace-skills-status-YVICUR5Y.js +0 -71
- package/chunks/write-file-CVGF2OKV.js +0 -596
- package/web-shell/assets/channel-04R0vLbG.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
- package/web-shell/assets/index-DgkKrjw3.js +0 -1187
- package/web-shell/assets/index-Rv6mOAN9.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +0 -1
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
DaemonMetricsRing,
|
|
5
5
|
computeCpuPercent
|
|
6
6
|
} from "./chunk-HGT6JR3U.js";
|
|
7
|
+
import {
|
|
8
|
+
RUNTIME_STARTUP_CANCELLED_MESSAGE
|
|
9
|
+
} from "./chunk-QUPXZXLV.js";
|
|
7
10
|
import {
|
|
8
11
|
ACCESS_LOG_CONTROLLER_LOCAL,
|
|
9
12
|
CAPABILITIES_SCHEMA_VERSION,
|
|
@@ -23,31 +26,31 @@ import {
|
|
|
23
26
|
hostAllowlist,
|
|
24
27
|
isBrowserAutomationMcpAvailable,
|
|
25
28
|
isDeepHealthQuery,
|
|
29
|
+
isManagedScratchChild,
|
|
26
30
|
listenerMaxConnections,
|
|
27
31
|
parseAllowOriginPatterns,
|
|
28
32
|
parseDaemonStatusDetail,
|
|
29
33
|
positiveFiniteOrNull,
|
|
34
|
+
prepareManagedScratchRoot,
|
|
30
35
|
require_express,
|
|
31
36
|
resolveWebShellDir,
|
|
32
37
|
setDeferredRuntimeRequestTiming
|
|
33
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-IJTOWOD7.js";
|
|
34
39
|
import {
|
|
35
40
|
isLoopbackBind
|
|
36
41
|
} from "./chunk-RXFQM6FQ.js";
|
|
37
42
|
import {
|
|
38
|
-
|
|
39
|
-
} from "./chunk-
|
|
43
|
+
LOAD_REPLAY_META_KEY
|
|
44
|
+
} from "./chunk-3SJ43L4W.js";
|
|
40
45
|
import {
|
|
41
46
|
DEFAULT_COMPACTED_REPLAY_MAX_BYTES,
|
|
42
47
|
normalizeCompactedReplayMaxBytes
|
|
43
48
|
} from "./chunk-COH43MRJ.js";
|
|
44
|
-
import {
|
|
45
|
-
LOAD_REPLAY_META_KEY
|
|
46
|
-
} from "./chunk-QR6U5QPP.js";
|
|
47
49
|
import "./chunk-WBL3FJEU.js";
|
|
50
|
+
import "./chunk-T2NCM2ET.js";
|
|
48
51
|
import {
|
|
49
52
|
resolveChannelCwd
|
|
50
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-QAFKR7WR.js";
|
|
51
54
|
import {
|
|
52
55
|
loadServeFastPathSettings,
|
|
53
56
|
preResolveServeFastPathHomeEnvOverrides
|
|
@@ -56,25 +59,30 @@ import {
|
|
|
56
59
|
MAX_REGISTERED_WORKSPACES,
|
|
57
60
|
resolveWorkspaceInputs,
|
|
58
61
|
workspaceRegistrationId
|
|
59
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-HQCSRJ3P.js";
|
|
60
63
|
import {
|
|
61
|
-
canonicalizeWorkspace
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
import "./chunk-
|
|
64
|
+
canonicalizeWorkspace,
|
|
65
|
+
translateAndCheckAbsoluteWorkspacePath
|
|
66
|
+
} from "./chunk-2RFKHEXL.js";
|
|
67
|
+
import "./chunk-PXHK5ONM.js";
|
|
68
|
+
import "./chunk-SX4PK3FC.js";
|
|
65
69
|
import {
|
|
70
|
+
ChannelDeliveryError,
|
|
66
71
|
ChannelWebhookEnqueueError,
|
|
67
|
-
QWEN_SERVER_TOKEN_ENV
|
|
68
|
-
|
|
72
|
+
QWEN_SERVER_TOKEN_ENV,
|
|
73
|
+
isChannelDeliveryError,
|
|
74
|
+
normalizeWorkerDiagnostic,
|
|
75
|
+
sanitizeWorkerDiagnostic
|
|
76
|
+
} from "./chunk-UPF7PTBI.js";
|
|
69
77
|
import {
|
|
70
78
|
channelSelectionNames
|
|
71
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-JLU636DO.js";
|
|
80
|
+
import "./chunk-BK2UNYWD.js";
|
|
72
81
|
import "./chunk-M5GB774H.js";
|
|
73
82
|
import "./chunk-5HBA2Z7V.js";
|
|
74
|
-
import "./chunk-T2NCM2ET.js";
|
|
75
83
|
import {
|
|
76
84
|
sanitizeLogText
|
|
77
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-ZXYUQXY5.js";
|
|
78
86
|
import "./chunk-UDXSXLER.js";
|
|
79
87
|
import "./chunk-GOXKNSDZ.js";
|
|
80
88
|
import {
|
|
@@ -84,7 +92,7 @@ import {
|
|
|
84
92
|
import "./chunk-QRUIS3DN.js";
|
|
85
93
|
import {
|
|
86
94
|
getCliVersion
|
|
87
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-54R2CV2G.js";
|
|
88
96
|
import "./chunk-VJNBRRZG.js";
|
|
89
97
|
import "./chunk-ALGGS7UH.js";
|
|
90
98
|
import {
|
|
@@ -95,11 +103,11 @@ import {
|
|
|
95
103
|
writeStdoutLine
|
|
96
104
|
} from "./chunk-OWAK7LMW.js";
|
|
97
105
|
import "./chunk-5M6IDOMF.js";
|
|
98
|
-
import "./chunk-
|
|
106
|
+
import "./chunk-TWPJO254.js";
|
|
99
107
|
import "./chunk-H6XPXXMH.js";
|
|
100
108
|
import {
|
|
101
109
|
require_proper_lockfile
|
|
102
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-KRXPRVGL.js";
|
|
103
111
|
import "./chunk-CR3C7WXL.js";
|
|
104
112
|
import "./chunk-XWRJCPHC.js";
|
|
105
113
|
import {
|
|
@@ -2015,6 +2023,89 @@ function asRecord(value) {
|
|
|
2015
2023
|
}
|
|
2016
2024
|
__name(asRecord, "asRecord");
|
|
2017
2025
|
|
|
2026
|
+
// packages/cli/src/serve/channel-delivery-authorization.ts
|
|
2027
|
+
init_esbuild_shims();
|
|
2028
|
+
function authorizationKey(workspaceCwd, sessionId, id) {
|
|
2029
|
+
return JSON.stringify([workspaceCwd, sessionId, id]);
|
|
2030
|
+
}
|
|
2031
|
+
__name(authorizationKey, "authorizationKey");
|
|
2032
|
+
function targetsEqual(left, right) {
|
|
2033
|
+
return left.channelName === right.channelName && left.type === right.type && left.id === right.id;
|
|
2034
|
+
}
|
|
2035
|
+
__name(targetsEqual, "targetsEqual");
|
|
2036
|
+
var ChannelDeliveryAuthorizationStore = class {
|
|
2037
|
+
static {
|
|
2038
|
+
__name(this, "ChannelDeliveryAuthorizationStore");
|
|
2039
|
+
}
|
|
2040
|
+
#prompts = /* @__PURE__ */ new Map();
|
|
2041
|
+
#scheduledTasks = /* @__PURE__ */ new Map();
|
|
2042
|
+
authorizePrompt(workspaceCwd, authorization) {
|
|
2043
|
+
this.#prompts.set(
|
|
2044
|
+
authorizationKey(
|
|
2045
|
+
workspaceCwd,
|
|
2046
|
+
authorization.sessionId,
|
|
2047
|
+
authorization.deliveryId
|
|
2048
|
+
),
|
|
2049
|
+
authorization.target
|
|
2050
|
+
);
|
|
2051
|
+
}
|
|
2052
|
+
revokePrompt(workspaceCwd, sessionId, deliveryId) {
|
|
2053
|
+
this.#prompts.delete(authorizationKey(workspaceCwd, sessionId, deliveryId));
|
|
2054
|
+
}
|
|
2055
|
+
registerScheduledTask(workspaceCwd, authorization) {
|
|
2056
|
+
const key = authorizationKey(
|
|
2057
|
+
workspaceCwd,
|
|
2058
|
+
authorization.sessionId,
|
|
2059
|
+
authorization.taskId
|
|
2060
|
+
);
|
|
2061
|
+
const current = this.#scheduledTasks.get(key);
|
|
2062
|
+
this.#scheduledTasks.set(key, {
|
|
2063
|
+
sessionId: authorization.sessionId,
|
|
2064
|
+
taskId: authorization.taskId,
|
|
2065
|
+
target: authorization.target,
|
|
2066
|
+
recurring: authorization.recurring,
|
|
2067
|
+
lastConsumedAt: current?.lastConsumedAt ?? authorization.lastFiredAt ?? 0
|
|
2068
|
+
});
|
|
2069
|
+
}
|
|
2070
|
+
revokeScheduledTask(workspaceCwd, sessionId, taskId) {
|
|
2071
|
+
this.#scheduledTasks.delete(
|
|
2072
|
+
authorizationKey(workspaceCwd, sessionId, taskId)
|
|
2073
|
+
);
|
|
2074
|
+
}
|
|
2075
|
+
consume(workspaceCwd, request) {
|
|
2076
|
+
if (request.source === "prompt") {
|
|
2077
|
+
if (request.promptId !== request.deliveryId) return false;
|
|
2078
|
+
const key2 = authorizationKey(
|
|
2079
|
+
workspaceCwd,
|
|
2080
|
+
request.sessionId,
|
|
2081
|
+
request.deliveryId
|
|
2082
|
+
);
|
|
2083
|
+
const target = this.#prompts.get(key2);
|
|
2084
|
+
if (!target || !targetsEqual(target, request.target)) return false;
|
|
2085
|
+
this.#prompts.delete(key2);
|
|
2086
|
+
return true;
|
|
2087
|
+
}
|
|
2088
|
+
if (typeof request.taskId !== "string" || typeof request.firedAt !== "number" || request.deliveryId !== `${request.taskId}:${request.firedAt}`) {
|
|
2089
|
+
return false;
|
|
2090
|
+
}
|
|
2091
|
+
const key = authorizationKey(
|
|
2092
|
+
workspaceCwd,
|
|
2093
|
+
request.sessionId,
|
|
2094
|
+
request.taskId
|
|
2095
|
+
);
|
|
2096
|
+
const authorization = this.#scheduledTasks.get(key);
|
|
2097
|
+
if (!authorization || request.firedAt <= authorization.lastConsumedAt || !targetsEqual(authorization.target, request.target)) {
|
|
2098
|
+
return false;
|
|
2099
|
+
}
|
|
2100
|
+
if (authorization.recurring) {
|
|
2101
|
+
authorization.lastConsumedAt = request.firedAt;
|
|
2102
|
+
} else {
|
|
2103
|
+
this.#scheduledTasks.delete(key);
|
|
2104
|
+
}
|
|
2105
|
+
return true;
|
|
2106
|
+
}
|
|
2107
|
+
};
|
|
2108
|
+
|
|
2018
2109
|
// packages/cli/src/serve/channel-workspace-grouping.ts
|
|
2019
2110
|
init_esbuild_shims();
|
|
2020
2111
|
function resolveChannelOwnerCwd(rawCwd, workspaceCwd) {
|
|
@@ -2136,6 +2227,90 @@ var QWEN_SERVE_PROMPT_DEADLINE_MS_ENV = "QWEN_SERVE_PROMPT_DEADLINE_MS";
|
|
|
2136
2227
|
var QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS_ENV = "QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS";
|
|
2137
2228
|
var SHUTDOWN_FORCE_CLOSE_MS = 5e3;
|
|
2138
2229
|
var DAEMON_LOG_FORCED_FLUSH_BUDGET_MS = 250;
|
|
2230
|
+
function channelDeliveryPublicError(code) {
|
|
2231
|
+
switch (code) {
|
|
2232
|
+
case "channel_worker_unavailable":
|
|
2233
|
+
return "Channel worker is unavailable.";
|
|
2234
|
+
case "channel_delivery_timeout":
|
|
2235
|
+
return "Channel delivery timed out.";
|
|
2236
|
+
case "channel_delivery_invalid":
|
|
2237
|
+
return "Channel delivery is invalid.";
|
|
2238
|
+
case "channel_delivery_rejected":
|
|
2239
|
+
return "Channel delivery was rejected.";
|
|
2240
|
+
case "channel_delivery_queue_full":
|
|
2241
|
+
return "Channel delivery queue is full.";
|
|
2242
|
+
case "channel_delivery_failed":
|
|
2243
|
+
return "Channel delivery failed.";
|
|
2244
|
+
default:
|
|
2245
|
+
return "Channel delivery failed.";
|
|
2246
|
+
}
|
|
2247
|
+
}
|
|
2248
|
+
__name(channelDeliveryPublicError, "channelDeliveryPublicError");
|
|
2249
|
+
function createBoundChannelDeliveryHandler(boundWorkspace, getManager, authorizations, daemonLog, diagnosticRedaction = {
|
|
2250
|
+
workerEnv: {}
|
|
2251
|
+
}) {
|
|
2252
|
+
return async (info) => {
|
|
2253
|
+
const failed = /* @__PURE__ */ __name((code, error, diagnostic) => {
|
|
2254
|
+
writeDaemonLifecycleBestEffort(() => {
|
|
2255
|
+
if (!daemonLog) return;
|
|
2256
|
+
let diagnosticText;
|
|
2257
|
+
if (diagnostic !== void 0) {
|
|
2258
|
+
const message = diagnostic instanceof Error ? diagnostic.message : String(diagnostic);
|
|
2259
|
+
const sanitized = sanitizeWorkerDiagnostic(
|
|
2260
|
+
message,
|
|
2261
|
+
512,
|
|
2262
|
+
diagnosticRedaction
|
|
2263
|
+
);
|
|
2264
|
+
const targetId = normalizeWorkerDiagnostic(info.target.id);
|
|
2265
|
+
diagnosticText = sanitizeLogText(
|
|
2266
|
+
targetId.length > 0 ? sanitized.replaceAll(targetId, "<redacted>") : sanitized,
|
|
2267
|
+
512
|
|
2268
|
+
);
|
|
2269
|
+
}
|
|
2270
|
+
daemonLog.warn("channel delivery failed", {
|
|
2271
|
+
sessionId: info.sessionId,
|
|
2272
|
+
deliveryId: info.deliveryId,
|
|
2273
|
+
source: info.source,
|
|
2274
|
+
channelName: info.target.channelName,
|
|
2275
|
+
code,
|
|
2276
|
+
...diagnosticText ? { diagnostic: diagnosticText } : {}
|
|
2277
|
+
});
|
|
2278
|
+
});
|
|
2279
|
+
return { status: "failed", code, error };
|
|
2280
|
+
}, "failed");
|
|
2281
|
+
if (!authorizations.consume(boundWorkspace, info)) {
|
|
2282
|
+
return failed(
|
|
2283
|
+
"channel_delivery_invalid",
|
|
2284
|
+
"Channel delivery is not authorized."
|
|
2285
|
+
);
|
|
2286
|
+
}
|
|
2287
|
+
if (info.text.trim().length === 0) {
|
|
2288
|
+
return { status: "skipped" };
|
|
2289
|
+
}
|
|
2290
|
+
const manager = getManager();
|
|
2291
|
+
if (!manager) {
|
|
2292
|
+
return failed(
|
|
2293
|
+
"channel_worker_unavailable",
|
|
2294
|
+
"Channel worker is not running."
|
|
2295
|
+
);
|
|
2296
|
+
}
|
|
2297
|
+
try {
|
|
2298
|
+
await manager.deliverChannelMessage(boundWorkspace, {
|
|
2299
|
+
deliveryId: info.deliveryId,
|
|
2300
|
+
channelName: info.target.channelName,
|
|
2301
|
+
target: { type: info.target.type, id: info.target.id },
|
|
2302
|
+
text: info.text
|
|
2303
|
+
});
|
|
2304
|
+
return { status: "delivered" };
|
|
2305
|
+
} catch (err) {
|
|
2306
|
+
if (isChannelDeliveryError(err)) {
|
|
2307
|
+
return failed(err.code, channelDeliveryPublicError(err.code), err);
|
|
2308
|
+
}
|
|
2309
|
+
return failed("channel_delivery_failed", "Channel delivery failed.", err);
|
|
2310
|
+
}
|
|
2311
|
+
};
|
|
2312
|
+
}
|
|
2313
|
+
__name(createBoundChannelDeliveryHandler, "createBoundChannelDeliveryHandler");
|
|
2139
2314
|
async function flushDaemonLogBounded(daemonLog, budgetMs) {
|
|
2140
2315
|
let timer;
|
|
2141
2316
|
try {
|
|
@@ -2357,12 +2532,12 @@ __name(withSettingsLock, "withSettingsLock");
|
|
|
2357
2532
|
var channelWorkerRuntimePromise;
|
|
2358
2533
|
async function loadChannelWorkerRuntime() {
|
|
2359
2534
|
channelWorkerRuntimePromise ??= Promise.all([
|
|
2360
|
-
import("./channel-worker-supervisor-
|
|
2361
|
-
import("./pidfile-
|
|
2362
|
-
import("./runtime-
|
|
2535
|
+
import("./channel-worker-supervisor-CXRCDA4Y.js"),
|
|
2536
|
+
import("./pidfile-UCFCJOAP.js"),
|
|
2537
|
+
import("./runtime-4CTBU5WX.js"),
|
|
2363
2538
|
import("./cli-entry-path-4VJ3Y6T2.js"),
|
|
2364
|
-
import("./channel-worker-group-
|
|
2365
|
-
import("./channel-worker-manager-
|
|
2539
|
+
import("./channel-worker-group-MA3WXWYX.js"),
|
|
2540
|
+
import("./channel-worker-manager-TIYYYBCT.js")
|
|
2366
2541
|
]).then(
|
|
2367
2542
|
([
|
|
2368
2543
|
supervisor,
|
|
@@ -2467,7 +2642,7 @@ function shouldPreheatBridge(deps) {
|
|
|
2467
2642
|
__name(shouldPreheatBridge, "shouldPreheatBridge");
|
|
2468
2643
|
var coreRuntimePromise;
|
|
2469
2644
|
function loadCoreRuntime() {
|
|
2470
|
-
coreRuntimePromise ??= import("./src-
|
|
2645
|
+
coreRuntimePromise ??= import("./src-LKKTJ4NG.js");
|
|
2471
2646
|
return coreRuntimePromise;
|
|
2472
2647
|
}
|
|
2473
2648
|
__name(loadCoreRuntime, "loadCoreRuntime");
|
|
@@ -2497,10 +2672,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
|
|
|
2497
2672
|
var settingsRuntimePromise;
|
|
2498
2673
|
function loadSettingsRuntimeModules() {
|
|
2499
2674
|
settingsRuntimePromise ??= Promise.all([
|
|
2500
|
-
import("./settings-
|
|
2501
|
-
import("./environment-
|
|
2502
|
-
import("./loadedSettingsAdapter-
|
|
2503
|
-
import("./trustedFolders-
|
|
2675
|
+
import("./settings-BXZHA6TZ.js"),
|
|
2676
|
+
import("./environment-KS36ZHBE.js"),
|
|
2677
|
+
import("./loadedSettingsAdapter-OZFNBRHE.js"),
|
|
2678
|
+
import("./trustedFolders-Q7RALK4T.js")
|
|
2504
2679
|
]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
|
|
2505
2680
|
settings,
|
|
2506
2681
|
environment,
|
|
@@ -2513,8 +2688,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
|
|
|
2513
2688
|
var channelWebhookConfigRuntimePromise;
|
|
2514
2689
|
function loadChannelWebhookConfigRuntime() {
|
|
2515
2690
|
channelWebhookConfigRuntimePromise ??= Promise.all([
|
|
2516
|
-
import("./runtime-
|
|
2517
|
-
import("./config-utils-
|
|
2691
|
+
import("./runtime-4CTBU5WX.js"),
|
|
2692
|
+
import("./config-utils-XQRXHAN3.js")
|
|
2518
2693
|
]).then(([channelRuntime, configUtils]) => ({
|
|
2519
2694
|
loadChannelsConfig: channelRuntime.loadChannelsConfig,
|
|
2520
2695
|
parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
|
|
@@ -2538,16 +2713,16 @@ async function loadServeRuntimeModules() {
|
|
|
2538
2713
|
totalSessionAdmissionModule,
|
|
2539
2714
|
workspaceRegistryModule
|
|
2540
2715
|
] = await Promise.all([
|
|
2541
|
-
import("./server-
|
|
2542
|
-
import("./bridge-
|
|
2543
|
-
import("./spawnChannel-
|
|
2544
|
-
import("./workspace-service-
|
|
2716
|
+
import("./server-JD5PIE7A.js"),
|
|
2717
|
+
import("./bridge-FFC4C6VD.js"),
|
|
2718
|
+
import("./spawnChannel-IO4HQLFS.js"),
|
|
2719
|
+
import("./workspace-service-BI4KDYPD.js"),
|
|
2545
2720
|
import("./types-ML3TRJQ5.js"),
|
|
2546
|
-
import("./daemon-status-provider-
|
|
2547
|
-
import("./workspace-providers-status-
|
|
2548
|
-
import("./workspace-skills-status-
|
|
2549
|
-
import("./total-session-admission-
|
|
2550
|
-
import("./workspace-registry-
|
|
2721
|
+
import("./daemon-status-provider-6YNZ3UAE.js"),
|
|
2722
|
+
import("./workspace-providers-status-WDLBDLPG.js"),
|
|
2723
|
+
import("./workspace-skills-status-OVB4LPHA.js"),
|
|
2724
|
+
import("./total-session-admission-NDF7EVG7.js"),
|
|
2725
|
+
import("./workspace-registry-IABDATX3.js")
|
|
2551
2726
|
]);
|
|
2552
2727
|
return {
|
|
2553
2728
|
createServeApp: serverModule.createServeApp,
|
|
@@ -2599,6 +2774,7 @@ function currentServeFeaturesForRunQwenServe(opts, sessionShellCommandEnabled, s
|
|
|
2599
2774
|
sessionShellCommandEnabled,
|
|
2600
2775
|
sessionArtifactsPersistenceAvailable,
|
|
2601
2776
|
sessionGenerationAvailable: true,
|
|
2777
|
+
workspaceGenerationAvailable: true,
|
|
2602
2778
|
rateLimit: opts.rateLimit === true,
|
|
2603
2779
|
reloadAvailable: true,
|
|
2604
2780
|
channelReloadAvailable: opts.channelSelection !== void 0,
|
|
@@ -3128,6 +3304,39 @@ function runSynchronousRequestGate(handler, req, res, next) {
|
|
|
3128
3304
|
return passed;
|
|
3129
3305
|
}
|
|
3130
3306
|
__name(runSynchronousRequestGate, "runSynchronousRequestGate");
|
|
3307
|
+
function validateAndCanonicalizeWorkspaceInput(rawWorkspace) {
|
|
3308
|
+
const workspace = translateAndCheckAbsoluteWorkspacePath(rawWorkspace);
|
|
3309
|
+
if (workspace === null) {
|
|
3310
|
+
throw new Error(
|
|
3311
|
+
`Invalid --workspace "${rawWorkspace}": must be an absolute path.`
|
|
3312
|
+
);
|
|
3313
|
+
}
|
|
3314
|
+
try {
|
|
3315
|
+
const stats = fs.statSync(workspace);
|
|
3316
|
+
if (!stats.isDirectory()) {
|
|
3317
|
+
throw new Error(
|
|
3318
|
+
`Invalid --workspace "${workspace}": exists but is not a directory.`
|
|
3319
|
+
);
|
|
3320
|
+
}
|
|
3321
|
+
} catch (err) {
|
|
3322
|
+
if (err && typeof err === "object" && "code" in err) {
|
|
3323
|
+
const code = err.code;
|
|
3324
|
+
if (code === "ENOENT") {
|
|
3325
|
+
throw new Error(
|
|
3326
|
+
`Invalid --workspace "${workspace}": directory does not exist.`
|
|
3327
|
+
);
|
|
3328
|
+
}
|
|
3329
|
+
if (code === "EACCES" || code === "EPERM") {
|
|
3330
|
+
throw new Error(
|
|
3331
|
+
`Invalid --workspace "${workspace}": permission denied (${String(code)}). The path exists but cannot be stat'd by the current user.`
|
|
3332
|
+
);
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
throw err;
|
|
3336
|
+
}
|
|
3337
|
+
return canonicalizeWorkspace(workspace);
|
|
3338
|
+
}
|
|
3339
|
+
__name(validateAndCanonicalizeWorkspaceInput, "validateAndCanonicalizeWorkspaceInput");
|
|
3131
3340
|
async function runQwenServe(optsIn, deps = {}) {
|
|
3132
3341
|
let daemonLog;
|
|
3133
3342
|
let owner = "startup";
|
|
@@ -3160,6 +3369,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3160
3369
|
__name(runQwenServe, "runQwenServe");
|
|
3161
3370
|
async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
3162
3371
|
const runStartedAt = performance2.now();
|
|
3372
|
+
const channelDeliveryAuthorizations = new ChannelDeliveryAuthorizationStore();
|
|
3163
3373
|
const shouldPreheat = !deps.bridge && shouldPreheatBridge(deps);
|
|
3164
3374
|
const startup = {
|
|
3165
3375
|
processStartedAt: new Date(
|
|
@@ -3175,6 +3385,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3175
3385
|
});
|
|
3176
3386
|
const rawToken = optsIn.token ?? process.env[QWEN_SERVER_TOKEN_ENV];
|
|
3177
3387
|
const token = typeof rawToken === "string" && rawToken.trim().length > 0 ? rawToken.trim() : void 0;
|
|
3388
|
+
const channelDeliveryDiagnosticRedaction = {
|
|
3389
|
+
workerEnv: daemonRuntimeBaseEnv,
|
|
3390
|
+
...token ? { daemonToken: token } : {}
|
|
3391
|
+
};
|
|
3178
3392
|
const sessionShellCommandEnabled = optsIn.enableSessionShell === true && token !== void 0;
|
|
3179
3393
|
if (optsIn.enableSessionShell === true && token === void 0) {
|
|
3180
3394
|
writeStderrLine(
|
|
@@ -3351,40 +3565,11 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3351
3565
|
"qwen serve: --allow-private-auth-base-url enabled; /workspace/auth/provider may install localhost/private-network model endpoints. Use only for local development with trusted clients."
|
|
3352
3566
|
);
|
|
3353
3567
|
}
|
|
3354
|
-
const validateAndCanonicalizeWorkspace =
|
|
3355
|
-
if (!path.isAbsolute(workspace)) {
|
|
3356
|
-
throw new Error(
|
|
3357
|
-
`Invalid --workspace "${workspace}": must be an absolute path.`
|
|
3358
|
-
);
|
|
3359
|
-
}
|
|
3360
|
-
try {
|
|
3361
|
-
const stats = fs.statSync(workspace);
|
|
3362
|
-
if (!stats.isDirectory()) {
|
|
3363
|
-
throw new Error(
|
|
3364
|
-
`Invalid --workspace "${workspace}": exists but is not a directory.`
|
|
3365
|
-
);
|
|
3366
|
-
}
|
|
3367
|
-
} catch (err) {
|
|
3368
|
-
if (err && typeof err === "object" && "code" in err) {
|
|
3369
|
-
const code = err.code;
|
|
3370
|
-
if (code === "ENOENT") {
|
|
3371
|
-
throw new Error(
|
|
3372
|
-
`Invalid --workspace "${workspace}": directory does not exist.`
|
|
3373
|
-
);
|
|
3374
|
-
}
|
|
3375
|
-
if (code === "EACCES" || code === "EPERM") {
|
|
3376
|
-
throw new Error(
|
|
3377
|
-
`Invalid --workspace "${workspace}": permission denied (${String(code)}). The path exists but cannot be stat'd by the current user.`
|
|
3378
|
-
);
|
|
3379
|
-
}
|
|
3380
|
-
}
|
|
3381
|
-
throw err;
|
|
3382
|
-
}
|
|
3383
|
-
return canonicalizeWorkspace(workspace);
|
|
3384
|
-
}, "validateAndCanonicalizeWorkspace");
|
|
3568
|
+
const validateAndCanonicalizeWorkspace = validateAndCanonicalizeWorkspaceInput;
|
|
3385
3569
|
const workspaceInputs = rawWorkspaces.map((workspace) => ({
|
|
3386
3570
|
raw: workspace,
|
|
3387
3571
|
cwd: validateAndCanonicalizeWorkspace(workspace),
|
|
3572
|
+
displayName: void 0,
|
|
3388
3573
|
removable: false,
|
|
3389
3574
|
registrationIds: []
|
|
3390
3575
|
}));
|
|
@@ -3425,7 +3610,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3425
3610
|
}
|
|
3426
3611
|
let workspaceRegistrationStore = deps.workspaceRegistrationStore;
|
|
3427
3612
|
if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
|
|
3428
|
-
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-
|
|
3613
|
+
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-26Z6J6P5.js");
|
|
3429
3614
|
workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
|
|
3430
3615
|
}
|
|
3431
3616
|
if (workspaceRegistrationStore) {
|
|
@@ -3433,6 +3618,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3433
3618
|
const stored = await workspaceRegistrationStore.read();
|
|
3434
3619
|
for (const storedWorkspace of stored.workspaces) {
|
|
3435
3620
|
const registrationId = workspaceRegistrationId(storedWorkspace);
|
|
3621
|
+
const displayName = stored.displayNames?.[registrationId];
|
|
3436
3622
|
let cwd;
|
|
3437
3623
|
try {
|
|
3438
3624
|
cwd = validateAndCanonicalizeWorkspace(storedWorkspace);
|
|
@@ -3449,6 +3635,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3449
3635
|
);
|
|
3450
3636
|
if (existingInput) {
|
|
3451
3637
|
existingInput.registrationIds.push(registrationId);
|
|
3638
|
+
existingInput.displayName ??= displayName;
|
|
3452
3639
|
continue;
|
|
3453
3640
|
}
|
|
3454
3641
|
const nested = workspaceInputs.some(
|
|
@@ -3473,6 +3660,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3473
3660
|
workspaceInputs.push({
|
|
3474
3661
|
raw: storedWorkspace,
|
|
3475
3662
|
cwd,
|
|
3663
|
+
displayName,
|
|
3476
3664
|
removable: true,
|
|
3477
3665
|
registrationIds: [registrationId]
|
|
3478
3666
|
});
|
|
@@ -3605,6 +3793,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3605
3793
|
);
|
|
3606
3794
|
}
|
|
3607
3795
|
}
|
|
3796
|
+
if (opts.initializeTimeoutMs !== void 0) {
|
|
3797
|
+
if (!isPositiveIntegerMs(opts.initializeTimeoutMs)) {
|
|
3798
|
+
throw new TypeError(
|
|
3799
|
+
`Invalid initializeTimeoutMs: ${opts.initializeTimeoutMs}. Must be a positive integer (milliseconds).`
|
|
3800
|
+
);
|
|
3801
|
+
}
|
|
3802
|
+
assertTimerDelayInRange("initializeTimeoutMs", opts.initializeTimeoutMs);
|
|
3803
|
+
}
|
|
3608
3804
|
if (opts.permissionResponseTimeoutMs !== void 0) {
|
|
3609
3805
|
if (!Number.isFinite(opts.permissionResponseTimeoutMs) || !Number.isInteger(opts.permissionResponseTimeoutMs) || opts.permissionResponseTimeoutMs < 0) {
|
|
3610
3806
|
throw new TypeError(
|
|
@@ -3906,6 +4102,17 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3906
4102
|
cliVersionPromise
|
|
3907
4103
|
]);
|
|
3908
4104
|
cliVersion = resolvedCliVersion;
|
|
4105
|
+
let managedScratchRoot;
|
|
4106
|
+
try {
|
|
4107
|
+
managedScratchRoot = prepareManagedScratchRoot(
|
|
4108
|
+
path.join(core.Storage.getGlobalQwenDir(), "scratch-workspaces"),
|
|
4109
|
+
workspaceInputs.map((workspace) => workspace.cwd)
|
|
4110
|
+
);
|
|
4111
|
+
} catch (err) {
|
|
4112
|
+
writeStderrLine(
|
|
4113
|
+
`qwen serve: managed scratch workspaces are unavailable: ${err instanceof Error ? err.message : String(err)}`
|
|
4114
|
+
);
|
|
4115
|
+
}
|
|
3909
4116
|
let runtimeBootSettings;
|
|
3910
4117
|
try {
|
|
3911
4118
|
runtimeBootSettings = settingsRuntime.settings.loadSettings(boundWorkspace);
|
|
@@ -3976,7 +4183,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
3976
4183
|
}
|
|
3977
4184
|
throw err;
|
|
3978
4185
|
}
|
|
3979
|
-
core.initializeTelemetry(
|
|
4186
|
+
await core.initializeTelemetry(
|
|
3980
4187
|
createDaemonTelemetryRuntimeConfig(
|
|
3981
4188
|
daemonTelemetrySettings,
|
|
3982
4189
|
resolvedCliVersion,
|
|
@@ -4276,7 +4483,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4276
4483
|
);
|
|
4277
4484
|
}
|
|
4278
4485
|
}), "persistSettingsFn");
|
|
4279
|
-
const { createSubSessionLauncher } = await import("./create-sub-session-
|
|
4486
|
+
const { createSubSessionLauncher } = await import("./create-sub-session-55F3GOLK.js");
|
|
4280
4487
|
const subSessionLauncher = createSubSessionLauncher({
|
|
4281
4488
|
getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
|
|
4282
4489
|
boundWorkspace
|
|
@@ -4286,6 +4493,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4286
4493
|
// connection that hosts a named client MCP server (#5626).
|
|
4287
4494
|
clientMcpSender: clientMcpSenderRegistry.lookup,
|
|
4288
4495
|
onCreateSubSession: subSessionLauncher.launch,
|
|
4496
|
+
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
4497
|
+
boundWorkspace,
|
|
4498
|
+
() => channelWorkerManager,
|
|
4499
|
+
channelDeliveryAuthorizations,
|
|
4500
|
+
daemonLog,
|
|
4501
|
+
channelDeliveryDiagnosticRedaction
|
|
4502
|
+
),
|
|
4289
4503
|
maxSessions: opts.maxSessions,
|
|
4290
4504
|
freshSessionAdmission: totalSessionAdmission.admit,
|
|
4291
4505
|
sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
|
|
@@ -4293,6 +4507,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4293
4507
|
...opts.eventRingSize !== void 0 ? { eventRingSize: opts.eventRingSize } : {},
|
|
4294
4508
|
...opts.compactedReplayMaxBytes !== void 0 ? { compactedReplayMaxBytes: opts.compactedReplayMaxBytes } : {},
|
|
4295
4509
|
...opts.channelIdleTimeoutMs !== void 0 ? { channelIdleTimeoutMs: opts.channelIdleTimeoutMs } : {},
|
|
4510
|
+
...opts.initializeTimeoutMs !== void 0 ? { initializeTimeoutMs: opts.initializeTimeoutMs } : {},
|
|
4296
4511
|
...opts.sessionReapIntervalMs !== void 0 ? { sessionReapIntervalMs: opts.sessionReapIntervalMs } : {},
|
|
4297
4512
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
4298
4513
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
@@ -4406,6 +4621,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4406
4621
|
{
|
|
4407
4622
|
workspaceId: daemonWorkspaceHash,
|
|
4408
4623
|
workspaceCwd: boundWorkspace,
|
|
4624
|
+
...workspaceInputs[0]?.displayName ? { displayName: workspaceInputs[0].displayName } : {},
|
|
4409
4625
|
primary: true,
|
|
4410
4626
|
trusted: trustedWorkspace,
|
|
4411
4627
|
removable: false,
|
|
@@ -4518,6 +4734,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4518
4734
|
const secondaryBridge = runtime.createAcpSessionBridge({
|
|
4519
4735
|
clientMcpSender: secondaryClientMcpSenderRegistry.lookup,
|
|
4520
4736
|
onCreateSubSession: secondarySubSessionLauncher.launch,
|
|
4737
|
+
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
4738
|
+
workspaceInput.cwd,
|
|
4739
|
+
() => channelWorkerManager,
|
|
4740
|
+
channelDeliveryAuthorizations,
|
|
4741
|
+
daemonLog,
|
|
4742
|
+
channelDeliveryDiagnosticRedaction
|
|
4743
|
+
),
|
|
4521
4744
|
maxSessions: opts.maxSessions,
|
|
4522
4745
|
freshSessionAdmission: totalSessionAdmission.admit,
|
|
4523
4746
|
sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
|
|
@@ -4525,6 +4748,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4525
4748
|
...opts.eventRingSize !== void 0 ? { eventRingSize: opts.eventRingSize } : {},
|
|
4526
4749
|
...opts.compactedReplayMaxBytes !== void 0 ? { compactedReplayMaxBytes: opts.compactedReplayMaxBytes } : {},
|
|
4527
4750
|
...opts.channelIdleTimeoutMs !== void 0 ? { channelIdleTimeoutMs: opts.channelIdleTimeoutMs } : {},
|
|
4751
|
+
...opts.initializeTimeoutMs !== void 0 ? { initializeTimeoutMs: opts.initializeTimeoutMs } : {},
|
|
4528
4752
|
...opts.sessionReapIntervalMs !== void 0 ? { sessionReapIntervalMs: opts.sessionReapIntervalMs } : {},
|
|
4529
4753
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
4530
4754
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
@@ -4624,6 +4848,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4624
4848
|
workspaceRuntimes.push({
|
|
4625
4849
|
workspaceId: secondaryWorkspaceHash,
|
|
4626
4850
|
workspaceCwd: workspaceInput.cwd,
|
|
4851
|
+
...workspaceInput.displayName ? { displayName: workspaceInput.displayName } : {},
|
|
4627
4852
|
primary: false,
|
|
4628
4853
|
trusted: secondaryTrusted,
|
|
4629
4854
|
removable: workspaceInput.removable,
|
|
@@ -4730,7 +4955,12 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4730
4955
|
metricsLoopDelay.disable();
|
|
4731
4956
|
}
|
|
4732
4957
|
};
|
|
4733
|
-
const createDynamicWorkspaceRuntime = /* @__PURE__ */ __name(async (cwd) => {
|
|
4958
|
+
const createDynamicWorkspaceRuntime = /* @__PURE__ */ __name(async (cwd, options) => {
|
|
4959
|
+
if (options.provenance === "managed-scratch" && (!managedScratchRoot || !isManagedScratchChild(cwd, managedScratchRoot.canonicalRoot))) {
|
|
4960
|
+
throw new Error(
|
|
4961
|
+
"Managed scratch runtime must use an accepted direct child directory"
|
|
4962
|
+
);
|
|
4963
|
+
}
|
|
4734
4964
|
let wsSettings;
|
|
4735
4965
|
try {
|
|
4736
4966
|
wsSettings = settingsRuntime.settings.loadSettings(cwd);
|
|
@@ -4739,10 +4969,10 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4739
4969
|
`qwen serve: could not read full settings for dynamic workspace ${cwd} (${err instanceof Error ? err.message : String(err)}); falling back to defaults.`
|
|
4740
4970
|
);
|
|
4741
4971
|
}
|
|
4742
|
-
const trusted = wsSettings ? settingsRuntime.trustedFolders.getWorkspaceTrustStatus(
|
|
4972
|
+
const trusted = options.provenance === "managed-scratch" || (wsSettings ? settingsRuntime.trustedFolders.getWorkspaceTrustStatus(
|
|
4743
4973
|
wsSettings.merged,
|
|
4744
4974
|
cwd
|
|
4745
|
-
).effective.state === "trusted" : false;
|
|
4975
|
+
).effective.state === "trusted" : false);
|
|
4746
4976
|
const wsEnv = createRuntimeEnvMetadata(cwd, wsSettings);
|
|
4747
4977
|
const wsHash = core.hashDaemonWorkspace(cwd);
|
|
4748
4978
|
const wsFsFactory = runtime.resolveBridgeFsFactory({
|
|
@@ -4777,6 +5007,13 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4777
5007
|
wsBridge = runtime.createAcpSessionBridge({
|
|
4778
5008
|
clientMcpSender: wsClientMcpRegistry.lookup,
|
|
4779
5009
|
onCreateSubSession: wsSubSessionLauncher.launch,
|
|
5010
|
+
onChannelDelivery: createBoundChannelDeliveryHandler(
|
|
5011
|
+
cwd,
|
|
5012
|
+
() => channelWorkerManager,
|
|
5013
|
+
channelDeliveryAuthorizations,
|
|
5014
|
+
daemonLog,
|
|
5015
|
+
channelDeliveryDiagnosticRedaction
|
|
5016
|
+
),
|
|
4780
5017
|
maxSessions: opts.maxSessions,
|
|
4781
5018
|
freshSessionAdmission: totalSessionAdmission.admit,
|
|
4782
5019
|
sessionLifecycle: sessionOwnerIndex.handleBridgeSessionLifecycle,
|
|
@@ -4784,6 +5021,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
4784
5021
|
...opts.eventRingSize !== void 0 ? { eventRingSize: opts.eventRingSize } : {},
|
|
4785
5022
|
...opts.compactedReplayMaxBytes !== void 0 ? { compactedReplayMaxBytes: opts.compactedReplayMaxBytes } : {},
|
|
4786
5023
|
...opts.channelIdleTimeoutMs !== void 0 ? { channelIdleTimeoutMs: opts.channelIdleTimeoutMs } : {},
|
|
5024
|
+
...opts.initializeTimeoutMs !== void 0 ? { initializeTimeoutMs: opts.initializeTimeoutMs } : {},
|
|
4787
5025
|
...opts.sessionReapIntervalMs !== void 0 ? { sessionReapIntervalMs: opts.sessionReapIntervalMs } : {},
|
|
4788
5026
|
...opts.sessionIdleTimeoutMs !== void 0 ? { sessionIdleTimeoutMs: opts.sessionIdleTimeoutMs } : {},
|
|
4789
5027
|
...opts.permissionResponseTimeoutMs !== void 0 ? { permissionResponseTimeoutMs: opts.permissionResponseTimeoutMs } : {},
|
|
@@ -5039,6 +5277,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5039
5277
|
const app2 = runtime.createServeApp(opts, () => actualPort, {
|
|
5040
5278
|
workspaceRegistry,
|
|
5041
5279
|
createWorkspaceRuntime: createDynamicWorkspaceRuntime,
|
|
5280
|
+
managedScratchRoot,
|
|
5042
5281
|
workspaceRegistrationStore,
|
|
5043
5282
|
workspaceRuntimeRemoval,
|
|
5044
5283
|
voiceCoordinator: workspaceVoiceCoordinator,
|
|
@@ -5077,6 +5316,19 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5077
5316
|
}
|
|
5078
5317
|
return channelWorkerManager.enqueueWebhookTask(task);
|
|
5079
5318
|
}, "enqueueChannelWebhookTask"),
|
|
5319
|
+
deliverChannelMessage: /* @__PURE__ */ __name(async (workspaceCwd, request) => {
|
|
5320
|
+
if (!channelWorkerManager) {
|
|
5321
|
+
throw new ChannelDeliveryError(
|
|
5322
|
+
"channel_worker_unavailable",
|
|
5323
|
+
"Channel worker is not running."
|
|
5324
|
+
);
|
|
5325
|
+
}
|
|
5326
|
+
return channelWorkerManager.deliverChannelMessage(
|
|
5327
|
+
workspaceCwd,
|
|
5328
|
+
request
|
|
5329
|
+
);
|
|
5330
|
+
}, "deliverChannelMessage"),
|
|
5331
|
+
channelDeliveryAuthorizations,
|
|
5080
5332
|
reloadChannelWorker,
|
|
5081
5333
|
getPerfSnapshot: /* @__PURE__ */ __name(() => ({
|
|
5082
5334
|
eventLoop: currentDaemonEventLoopMonitor.snapshot(),
|
|
@@ -5268,7 +5520,8 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5268
5520
|
reserveChannelServicePidfile(opts.channelSelection);
|
|
5269
5521
|
}
|
|
5270
5522
|
return await new Promise((resolve, reject) => {
|
|
5271
|
-
const onListening = /* @__PURE__ */ __name(() => {
|
|
5523
|
+
const onListening = /* @__PURE__ */ __name((error) => {
|
|
5524
|
+
if (error) return;
|
|
5272
5525
|
startup.listenerReadyAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
5273
5526
|
startup.processToListenMs = Math.round(process.uptime() * 1e3);
|
|
5274
5527
|
startup.runQwenServeToListenMs = Math.round(
|
|
@@ -5288,7 +5541,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5288
5541
|
channelWorkspaceGroups = resolveChannelWorkspaceGroupsAtListen();
|
|
5289
5542
|
} catch (err) {
|
|
5290
5543
|
removeCurrentServePidfile();
|
|
5291
|
-
const
|
|
5544
|
+
const error2 = err instanceof Error ? err : new Error(String(err));
|
|
5292
5545
|
server.close((closeErr) => {
|
|
5293
5546
|
if (closeErr) {
|
|
5294
5547
|
daemonLog.error(
|
|
@@ -5296,7 +5549,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5296
5549
|
closeErr
|
|
5297
5550
|
);
|
|
5298
5551
|
}
|
|
5299
|
-
reject(
|
|
5552
|
+
reject(error2);
|
|
5300
5553
|
});
|
|
5301
5554
|
return;
|
|
5302
5555
|
}
|
|
@@ -5366,9 +5619,9 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5366
5619
|
"deferred runtime: cancelled, server closed before startup"
|
|
5367
5620
|
);
|
|
5368
5621
|
runtimeStartupSettled = true;
|
|
5369
|
-
const
|
|
5370
|
-
runtimeStartupError =
|
|
5371
|
-
markRuntimeFailed(
|
|
5622
|
+
const error2 = new Error(RUNTIME_STARTUP_CANCELLED_MESSAGE);
|
|
5623
|
+
runtimeStartupError = error2.message;
|
|
5624
|
+
markRuntimeFailed(error2);
|
|
5372
5625
|
}, "cancelDeferredRuntimeStartup");
|
|
5373
5626
|
const shutdownBridgeAfterFailedStartup = /* @__PURE__ */ __name(async (bridge) => {
|
|
5374
5627
|
if (!bridge || deps.bridge) return;
|
|
@@ -5401,7 +5654,7 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5401
5654
|
}
|
|
5402
5655
|
}, "stopChannelWorkerAfterFailedStartup");
|
|
5403
5656
|
const failRuntimeStartup = /* @__PURE__ */ __name(async (err, bridgeForCleanup) => {
|
|
5404
|
-
const
|
|
5657
|
+
const error2 = err instanceof Error ? err : new Error(String(err));
|
|
5405
5658
|
if (runtimeStartupSettled) {
|
|
5406
5659
|
disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
|
|
5407
5660
|
await shutdownBridgeAfterFailedStartup(bridgeForCleanup);
|
|
@@ -5411,15 +5664,15 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
5411
5664
|
disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
|
|
5412
5665
|
runtimeApp = void 0;
|
|
5413
5666
|
clearRuntimeStartupTimer();
|
|
5414
|
-
const message =
|
|
5667
|
+
const message = error2.message;
|
|
5415
5668
|
runtimeStartupError = message;
|
|
5416
5669
|
if (startup.preheat.status === "scheduled" || startup.preheat.status === "running") {
|
|
5417
5670
|
startup.preheat.status = "failed";
|
|
5418
5671
|
startup.preheat.error = message;
|
|
5419
5672
|
}
|
|
5420
5673
|
writeStderrLine(`qwen serve: runtime startup failed: ${message}`);
|
|
5421
|
-
daemonLog.error("runtime startup failed",
|
|
5422
|
-
markRuntimeFailed(
|
|
5674
|
+
daemonLog.error("runtime startup failed", error2);
|
|
5675
|
+
markRuntimeFailed(error2);
|
|
5423
5676
|
if (closeServerAfterChannelWorkerStartupFailure && server.listening) {
|
|
5424
5677
|
runtimeFailureListenerClose = new Promise((resolve2) => {
|
|
5425
5678
|
server.close((closeErr) => {
|
|
@@ -6011,12 +6264,14 @@ async function runQwenServeImpl(optsIn, deps, loggerLifecycle) {
|
|
|
6011
6264
|
__name(runQwenServeImpl, "runQwenServeImpl");
|
|
6012
6265
|
export {
|
|
6013
6266
|
InvalidPolicyConfigError,
|
|
6267
|
+
createBoundChannelDeliveryHandler,
|
|
6014
6268
|
createDisabledChannelWorkerSupervisor,
|
|
6015
6269
|
createLazyBridgeProxy,
|
|
6016
6270
|
extractContextFilename,
|
|
6017
6271
|
formatChannelWorkerDaemonUrl,
|
|
6018
6272
|
resolveRuntimeStartupTimeoutMs,
|
|
6019
6273
|
runQwenServe,
|
|
6274
|
+
validateAndCanonicalizeWorkspaceInput,
|
|
6020
6275
|
validatePolicyConfig,
|
|
6021
6276
|
waitForRuntimeStartingForShutdown
|
|
6022
6277
|
};
|