@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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
createDebugLogger
|
|
5
|
+
} from "./chunk-OQB4EXO4.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/core/src/hooks/registerSkillHooks.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
var debugLogger = createDebugLogger("SKILL_HOOKS");
|
|
16
|
+
function registerSkillHooks(sessionHooksManager, sessionId, skill) {
|
|
17
|
+
if (!skill.hooks) {
|
|
18
|
+
debugLogger.debug(`Skill '${skill.name}' has no hooks to register`);
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
const hooksSettings = skill.hooks;
|
|
22
|
+
let registeredCount = 0;
|
|
23
|
+
for (const eventName of Object.keys(hooksSettings)) {
|
|
24
|
+
const matchers = hooksSettings[eventName];
|
|
25
|
+
if (!matchers) continue;
|
|
26
|
+
for (const matcher of matchers) {
|
|
27
|
+
const matcherPattern = matcher.matcher || "";
|
|
28
|
+
for (const hook of matcher.hooks) {
|
|
29
|
+
if (hook.type === "function" /* Function */) {
|
|
30
|
+
debugLogger.debug(
|
|
31
|
+
"Skipping function hook from skill (not supported in frontmatter)"
|
|
32
|
+
);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const hookConfig = prepareHookConfig(
|
|
36
|
+
hook,
|
|
37
|
+
skill.skillRoot
|
|
38
|
+
);
|
|
39
|
+
sessionHooksManager.addSessionHook(
|
|
40
|
+
sessionId,
|
|
41
|
+
eventName,
|
|
42
|
+
matcherPattern,
|
|
43
|
+
hookConfig,
|
|
44
|
+
{ skillRoot: skill.skillRoot }
|
|
45
|
+
);
|
|
46
|
+
registeredCount++;
|
|
47
|
+
debugLogger.debug(
|
|
48
|
+
`Registered hook for ${eventName} with matcher '${matcherPattern}' from skill '${skill.name}'`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (registeredCount > 0) {
|
|
54
|
+
debugLogger.info(
|
|
55
|
+
`Registered ${registeredCount} hooks from skill '${skill.name}'`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
return registeredCount;
|
|
59
|
+
}
|
|
60
|
+
__name(registerSkillHooks, "registerSkillHooks");
|
|
61
|
+
function prepareHookConfig(hook, skillRoot) {
|
|
62
|
+
if (hook.type === "command" && skillRoot) {
|
|
63
|
+
return {
|
|
64
|
+
...hook,
|
|
65
|
+
env: {
|
|
66
|
+
...hook.env,
|
|
67
|
+
QWEN_SKILL_ROOT: skillRoot
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return hook;
|
|
72
|
+
}
|
|
73
|
+
__name(prepareHookConfig, "prepareHookConfig");
|
|
74
|
+
|
|
75
|
+
export {
|
|
76
|
+
registerSkillHooks
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @license
|
|
80
|
+
* Copyright 2026 Qwen Team
|
|
81
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
82
|
+
*/
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
createDebugLogger
|
|
5
|
+
} from "./chunk-OQB4EXO4.js";
|
|
6
|
+
import {
|
|
7
|
+
init_esbuild_shims
|
|
8
|
+
} from "./chunk-5O2XNYP6.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
12
|
+
|
|
13
|
+
// packages/core/src/utils/runtimeFetchOptions.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
var debugLogger = createDebugLogger("RUNTIME_FETCH");
|
|
16
|
+
var undiciModule;
|
|
17
|
+
var undiciModulePromise;
|
|
18
|
+
async function loadUndici() {
|
|
19
|
+
undiciModulePromise ??= import("./undici-3FJYTMOF.js").then((mod) => {
|
|
20
|
+
const keys = Object.keys(mod);
|
|
21
|
+
if (keys.length === 1 && keys[0] === "default") {
|
|
22
|
+
return mod.default;
|
|
23
|
+
}
|
|
24
|
+
return mod;
|
|
25
|
+
});
|
|
26
|
+
return undiciModulePromise;
|
|
27
|
+
}
|
|
28
|
+
__name(loadUndici, "loadUndici");
|
|
29
|
+
async function preloadRuntimeFetchModule() {
|
|
30
|
+
if (undiciModule) return;
|
|
31
|
+
undiciModule = await loadUndici();
|
|
32
|
+
}
|
|
33
|
+
__name(preloadRuntimeFetchModule, "preloadRuntimeFetchModule");
|
|
34
|
+
function requireUndici() {
|
|
35
|
+
if (!undiciModule) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
"undici is not loaded yet; await preloadRuntimeFetchModule() before building runtime fetch options or dispatchers"
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return undiciModule;
|
|
41
|
+
}
|
|
42
|
+
__name(requireUndici, "requireUndici");
|
|
43
|
+
function isTlsVerificationDisabled() {
|
|
44
|
+
const flag = process.env["QWEN_TLS_INSECURE"];
|
|
45
|
+
if (flag !== void 0 && /^(1|true|yes|on)$/i.test(flag.trim())) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return process.env["NODE_TLS_REJECT_UNAUTHORIZED"] === "0";
|
|
49
|
+
}
|
|
50
|
+
__name(isTlsVerificationDisabled, "isTlsVerificationDisabled");
|
|
51
|
+
function detectRuntime() {
|
|
52
|
+
if (typeof process !== "undefined" && process.versions?.["bun"]) {
|
|
53
|
+
return "bun";
|
|
54
|
+
}
|
|
55
|
+
if (typeof process !== "undefined" && process.versions?.node) {
|
|
56
|
+
return "node";
|
|
57
|
+
}
|
|
58
|
+
return "unknown";
|
|
59
|
+
}
|
|
60
|
+
__name(detectRuntime, "detectRuntime");
|
|
61
|
+
function buildRuntimeFetchOptions(sdkType, proxyUrl) {
|
|
62
|
+
const runtime = detectRuntime();
|
|
63
|
+
switch (runtime) {
|
|
64
|
+
case "bun": {
|
|
65
|
+
if (sdkType === "openai") {
|
|
66
|
+
return {
|
|
67
|
+
fetchOptions: {
|
|
68
|
+
timeout: false
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
} else {
|
|
72
|
+
const bunFetch = /* @__PURE__ */ __name(async (input, init) => {
|
|
73
|
+
const bunFetchOptions = {
|
|
74
|
+
...init,
|
|
75
|
+
// @ts-expect-error - Bun-specific timeout option
|
|
76
|
+
timeout: false
|
|
77
|
+
};
|
|
78
|
+
return fetch(input, bunFetchOptions);
|
|
79
|
+
}, "bunFetch");
|
|
80
|
+
return {
|
|
81
|
+
fetch: bunFetch
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
case "node": {
|
|
86
|
+
return buildFetchOptionsWithDispatcher(sdkType, proxyUrl);
|
|
87
|
+
}
|
|
88
|
+
default: {
|
|
89
|
+
return buildFetchOptionsWithDispatcher(sdkType, proxyUrl);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
__name(buildRuntimeFetchOptions, "buildRuntimeFetchOptions");
|
|
94
|
+
var dispatcherCache = /* @__PURE__ */ new Map();
|
|
95
|
+
var proxyFailureCounts = /* @__PURE__ */ new Map();
|
|
96
|
+
var NO_DISPATCHER_FALLBACK = {
|
|
97
|
+
openai: void 0,
|
|
98
|
+
anthropic: {}
|
|
99
|
+
};
|
|
100
|
+
function getOrCreateSharedDispatcher(proxyUrl, insecure = isTlsVerificationDisabled()) {
|
|
101
|
+
const cacheKey = insecure ? `${proxyUrl}#insecure` : proxyUrl;
|
|
102
|
+
const cached = dispatcherCache.get(cacheKey);
|
|
103
|
+
if (cached) {
|
|
104
|
+
return cached;
|
|
105
|
+
}
|
|
106
|
+
const { EnvHttpProxyAgent } = requireUndici();
|
|
107
|
+
const dispatcher = new EnvHttpProxyAgent({
|
|
108
|
+
httpProxy: proxyUrl,
|
|
109
|
+
httpsProxy: proxyUrl,
|
|
110
|
+
headersTimeout: 0,
|
|
111
|
+
bodyTimeout: 0,
|
|
112
|
+
keepAliveTimeout: 6e4,
|
|
113
|
+
// EnvHttpProxyAgent can dispatch either directly or through a proxy.
|
|
114
|
+
// `connect` covers a direct NO_PROXY connection, `requestTls` covers the
|
|
115
|
+
// origin through a proxy, and `proxyTls` covers an HTTPS proxy itself.
|
|
116
|
+
...insecure ? {
|
|
117
|
+
connect: { rejectUnauthorized: false },
|
|
118
|
+
requestTls: { rejectUnauthorized: false },
|
|
119
|
+
proxyTls: { rejectUnauthorized: false }
|
|
120
|
+
} : {}
|
|
121
|
+
});
|
|
122
|
+
dispatcherCache.set(cacheKey, dispatcher);
|
|
123
|
+
return dispatcher;
|
|
124
|
+
}
|
|
125
|
+
__name(getOrCreateSharedDispatcher, "getOrCreateSharedDispatcher");
|
|
126
|
+
function extractHostnameFromProxyUrl(proxyUrl) {
|
|
127
|
+
try {
|
|
128
|
+
const url = new URL(proxyUrl);
|
|
129
|
+
if (url.hostname) {
|
|
130
|
+
return url.port ? `${url.hostname}:${url.port}` : url.hostname;
|
|
131
|
+
}
|
|
132
|
+
} catch {
|
|
133
|
+
}
|
|
134
|
+
const match = proxyUrl.match(/@([^:/\s]+)(:\d+)?/);
|
|
135
|
+
return match ? match[1] + (match[2] ?? "") : redactProxyCredentials(proxyUrl);
|
|
136
|
+
}
|
|
137
|
+
__name(extractHostnameFromProxyUrl, "extractHostnameFromProxyUrl");
|
|
138
|
+
function hasPlausibleProxyPort(host) {
|
|
139
|
+
const portMatch = host.match(/:(\d{1,5})$/);
|
|
140
|
+
if (!portMatch) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
const port = Number(portMatch[1]);
|
|
144
|
+
return port >= 80 && port <= 65535;
|
|
145
|
+
}
|
|
146
|
+
__name(hasPlausibleProxyPort, "hasPlausibleProxyPort");
|
|
147
|
+
function hasLocalOrProxyLikeHost(host) {
|
|
148
|
+
const hostWithoutPort = host.replace(/:\d{1,5}$/, "").toLowerCase();
|
|
149
|
+
if (hostWithoutPort === "localhost") {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostWithoutPort)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
return hostWithoutPort.split(/[.-]/).some((label) => /^(proxy|gateway|gw|squid)\d*$/.test(label));
|
|
156
|
+
}
|
|
157
|
+
__name(hasLocalOrProxyLikeHost, "hasLocalOrProxyLikeHost");
|
|
158
|
+
function hasNetworkErrorContext(message, offset) {
|
|
159
|
+
const context = message.slice(Math.max(0, offset - 80), offset).toLowerCase();
|
|
160
|
+
return /\b(connect|dispatcher|econnrefused|econnreset|enotfound|etimedout|proxy|tunnel)\b/.test(
|
|
161
|
+
context
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
__name(hasNetworkErrorContext, "hasNetworkErrorContext");
|
|
165
|
+
function shouldRedactTokenOnlyCredential(host, message, offset) {
|
|
166
|
+
return hasPlausibleProxyPort(host) && (hasLocalOrProxyLikeHost(host) || hasNetworkErrorContext(message, offset));
|
|
167
|
+
}
|
|
168
|
+
__name(shouldRedactTokenOnlyCredential, "shouldRedactTokenOnlyCredential");
|
|
169
|
+
function redactProxyCredentials(message) {
|
|
170
|
+
let result = message.replace(/\/\/[^/\s]*@/g, "//<redacted>@");
|
|
171
|
+
result = result.replace(
|
|
172
|
+
/(^|[\s([=:])([^\s/@()[\]=]+@[^@\s/()[\]=]+)/g,
|
|
173
|
+
(match, prefix, candidate, offset, message2) => {
|
|
174
|
+
const atIndex = candidate.indexOf("@");
|
|
175
|
+
const userInfo = candidate.slice(0, atIndex);
|
|
176
|
+
const host = candidate.slice(atIndex + 1);
|
|
177
|
+
if (!userInfo.includes(":") && !shouldRedactTokenOnlyCredential(host, message2, offset)) {
|
|
178
|
+
return match;
|
|
179
|
+
}
|
|
180
|
+
return `${prefix}<redacted>@${host}`;
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
__name(redactProxyCredentials, "redactProxyCredentials");
|
|
186
|
+
function redactProxyError(error) {
|
|
187
|
+
return redactProxyErrorValue(error, /* @__PURE__ */ new WeakMap());
|
|
188
|
+
}
|
|
189
|
+
__name(redactProxyError, "redactProxyError");
|
|
190
|
+
function redactProxyErrorValue(error, seen) {
|
|
191
|
+
if (typeof error === "string") {
|
|
192
|
+
return redactProxyCredentials(error);
|
|
193
|
+
}
|
|
194
|
+
if (!error || typeof error !== "object") {
|
|
195
|
+
return error;
|
|
196
|
+
}
|
|
197
|
+
if (seen.has(error)) {
|
|
198
|
+
return seen.get(error);
|
|
199
|
+
}
|
|
200
|
+
const errorRecord = error;
|
|
201
|
+
const needsClone = shouldCloneForRedaction(error, errorRecord);
|
|
202
|
+
const redactedMessage = typeof errorRecord.message === "string" ? redactProxyCredentials(errorRecord.message) : void 0;
|
|
203
|
+
const redactedStack = typeof errorRecord.stack === "string" ? redactProxyCredentials(errorRecord.stack) : void 0;
|
|
204
|
+
let redactedCause = errorRecord.cause;
|
|
205
|
+
let redactedErrors = errorRecord.errors;
|
|
206
|
+
if (needsClone) {
|
|
207
|
+
const clone = Object.create(Object.getPrototypeOf(error));
|
|
208
|
+
seen.set(error, clone);
|
|
209
|
+
if (errorRecord.cause !== void 0) {
|
|
210
|
+
redactedCause = redactProxyErrorValue(errorRecord.cause, seen);
|
|
211
|
+
}
|
|
212
|
+
if (errorRecord.errors !== void 0) {
|
|
213
|
+
redactedErrors = redactProxyErrorCollection(errorRecord.errors, seen);
|
|
214
|
+
}
|
|
215
|
+
cloneErrorWithRedactedFields(
|
|
216
|
+
error,
|
|
217
|
+
clone,
|
|
218
|
+
redactedMessage,
|
|
219
|
+
redactedStack,
|
|
220
|
+
redactedCause,
|
|
221
|
+
redactedErrors
|
|
222
|
+
);
|
|
223
|
+
return clone;
|
|
224
|
+
}
|
|
225
|
+
seen.set(error, error);
|
|
226
|
+
try {
|
|
227
|
+
if (redactedMessage !== void 0) {
|
|
228
|
+
errorRecord.message = redactedMessage;
|
|
229
|
+
}
|
|
230
|
+
if (redactedStack !== void 0) {
|
|
231
|
+
errorRecord.stack = redactedStack;
|
|
232
|
+
}
|
|
233
|
+
if (errorRecord.cause !== void 0) {
|
|
234
|
+
redactedCause = redactProxyErrorValue(errorRecord.cause, seen);
|
|
235
|
+
errorRecord.cause = redactedCause;
|
|
236
|
+
}
|
|
237
|
+
if (errorRecord.errors !== void 0) {
|
|
238
|
+
redactedErrors = redactProxyErrorCollection(errorRecord.errors, seen);
|
|
239
|
+
errorRecord.errors = redactedErrors;
|
|
240
|
+
}
|
|
241
|
+
return error;
|
|
242
|
+
} catch {
|
|
243
|
+
const clone = Object.create(Object.getPrototypeOf(error));
|
|
244
|
+
seen.set(error, clone);
|
|
245
|
+
if (errorRecord.cause !== void 0) {
|
|
246
|
+
redactedCause = redactProxyErrorValue(errorRecord.cause, seen);
|
|
247
|
+
}
|
|
248
|
+
if (errorRecord.errors !== void 0) {
|
|
249
|
+
redactedErrors = redactProxyErrorCollection(errorRecord.errors, seen);
|
|
250
|
+
}
|
|
251
|
+
cloneErrorWithRedactedFields(
|
|
252
|
+
error,
|
|
253
|
+
clone,
|
|
254
|
+
redactedMessage,
|
|
255
|
+
redactedStack,
|
|
256
|
+
redactedCause,
|
|
257
|
+
redactedErrors
|
|
258
|
+
);
|
|
259
|
+
return clone;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
__name(redactProxyErrorValue, "redactProxyErrorValue");
|
|
263
|
+
function redactProxyErrorCollection(errors, seen) {
|
|
264
|
+
if (!Array.isArray(errors)) {
|
|
265
|
+
return redactProxyErrorValue(errors, seen);
|
|
266
|
+
}
|
|
267
|
+
if (seen.has(errors)) {
|
|
268
|
+
return seen.get(errors);
|
|
269
|
+
}
|
|
270
|
+
const redactedErrors = [];
|
|
271
|
+
seen.set(errors, redactedErrors);
|
|
272
|
+
for (const error of errors) {
|
|
273
|
+
redactedErrors.push(redactProxyErrorValue(error, seen));
|
|
274
|
+
}
|
|
275
|
+
return redactedErrors;
|
|
276
|
+
}
|
|
277
|
+
__name(redactProxyErrorCollection, "redactProxyErrorCollection");
|
|
278
|
+
function shouldCloneForRedaction(error, errorRecord) {
|
|
279
|
+
return typeof errorRecord.message === "string" && !canAssignProperty(error, "message") || typeof errorRecord.stack === "string" && !canAssignProperty(error, "stack") || errorRecord.cause !== void 0 && !canAssignProperty(error, "cause") || errorRecord.errors !== void 0 && !canAssignProperty(error, "errors");
|
|
280
|
+
}
|
|
281
|
+
__name(shouldCloneForRedaction, "shouldCloneForRedaction");
|
|
282
|
+
function canAssignProperty(target, key) {
|
|
283
|
+
let current = target;
|
|
284
|
+
while (current) {
|
|
285
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, key);
|
|
286
|
+
if (descriptor) {
|
|
287
|
+
if ("writable" in descriptor) {
|
|
288
|
+
return descriptor.writable === true;
|
|
289
|
+
}
|
|
290
|
+
return typeof descriptor.set === "function";
|
|
291
|
+
}
|
|
292
|
+
current = Object.getPrototypeOf(current);
|
|
293
|
+
}
|
|
294
|
+
return Object.isExtensible(target);
|
|
295
|
+
}
|
|
296
|
+
__name(canAssignProperty, "canAssignProperty");
|
|
297
|
+
function cloneErrorWithRedactedFields(error, clone, redactedMessage, redactedStack, redactedCause, redactedErrors) {
|
|
298
|
+
const copiedKeys = /* @__PURE__ */ new Set();
|
|
299
|
+
for (const key of Reflect.ownKeys(error)) {
|
|
300
|
+
const descriptor = Object.getOwnPropertyDescriptor(error, key);
|
|
301
|
+
if (!descriptor) {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
copiedKeys.add(key);
|
|
305
|
+
const updatedDescriptor = getRedactedPropertyDescriptor(
|
|
306
|
+
key,
|
|
307
|
+
descriptor,
|
|
308
|
+
redactedMessage,
|
|
309
|
+
redactedStack,
|
|
310
|
+
redactedCause,
|
|
311
|
+
redactedErrors
|
|
312
|
+
);
|
|
313
|
+
try {
|
|
314
|
+
Object.defineProperty(clone, key, updatedDescriptor);
|
|
315
|
+
} catch {
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
defineMissingRedactedValue(clone, copiedKeys, "message", redactedMessage);
|
|
319
|
+
defineMissingRedactedValue(clone, copiedKeys, "stack", redactedStack);
|
|
320
|
+
defineMissingRedactedValue(clone, copiedKeys, "cause", redactedCause);
|
|
321
|
+
defineMissingRedactedValue(clone, copiedKeys, "errors", redactedErrors);
|
|
322
|
+
}
|
|
323
|
+
__name(cloneErrorWithRedactedFields, "cloneErrorWithRedactedFields");
|
|
324
|
+
function getRedactedPropertyDescriptor(key, descriptor, redactedMessage, redactedStack, redactedCause, redactedErrors) {
|
|
325
|
+
const redactedValue = key === "message" ? redactedMessage : key === "stack" ? redactedStack : key === "cause" ? redactedCause : key === "errors" ? redactedErrors : void 0;
|
|
326
|
+
if (redactedValue === void 0) {
|
|
327
|
+
return { ...descriptor };
|
|
328
|
+
}
|
|
329
|
+
if ("value" in descriptor) {
|
|
330
|
+
return { ...descriptor, value: redactedValue };
|
|
331
|
+
}
|
|
332
|
+
return {
|
|
333
|
+
configurable: descriptor.configurable,
|
|
334
|
+
enumerable: descriptor.enumerable,
|
|
335
|
+
value: redactedValue,
|
|
336
|
+
writable: true
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
__name(getRedactedPropertyDescriptor, "getRedactedPropertyDescriptor");
|
|
340
|
+
function defineMissingRedactedValue(target, copiedKeys, key, value) {
|
|
341
|
+
if (value === void 0 || copiedKeys.has(key)) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
try {
|
|
345
|
+
Object.defineProperty(target, key, {
|
|
346
|
+
configurable: true,
|
|
347
|
+
enumerable: false,
|
|
348
|
+
value,
|
|
349
|
+
writable: true
|
|
350
|
+
});
|
|
351
|
+
} catch {
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
__name(defineMissingRedactedValue, "defineMissingRedactedValue");
|
|
355
|
+
function recordProxyFailure(hostname) {
|
|
356
|
+
const failureCount = (proxyFailureCounts.get(hostname) ?? 0) + 1;
|
|
357
|
+
proxyFailureCounts.set(hostname, failureCount);
|
|
358
|
+
return failureCount;
|
|
359
|
+
}
|
|
360
|
+
__name(recordProxyFailure, "recordProxyFailure");
|
|
361
|
+
function buildFetchOptionsWithDispatcher(sdkType, proxyUrl) {
|
|
362
|
+
const insecure = isTlsVerificationDisabled();
|
|
363
|
+
const { Agent, fetch: undiciFetch } = requireUndici();
|
|
364
|
+
if (!proxyUrl) {
|
|
365
|
+
const NO_PROXY_KEY = insecure ? "__no_proxy__#insecure" : "__no_proxy__";
|
|
366
|
+
let dispatcher = dispatcherCache.get(NO_PROXY_KEY);
|
|
367
|
+
if (!dispatcher) {
|
|
368
|
+
dispatcher = new Agent({
|
|
369
|
+
headersTimeout: 0,
|
|
370
|
+
bodyTimeout: 0,
|
|
371
|
+
keepAliveTimeout: 6e4,
|
|
372
|
+
// For a direct (non-proxy) Agent, `connect` options flow straight to
|
|
373
|
+
// the TLS connector, so this disables upstream cert verification.
|
|
374
|
+
...insecure ? { connect: { rejectUnauthorized: false } } : {}
|
|
375
|
+
});
|
|
376
|
+
dispatcherCache.set(NO_PROXY_KEY, dispatcher);
|
|
377
|
+
}
|
|
378
|
+
return { fetchOptions: { dispatcher }, fetch: undiciFetch };
|
|
379
|
+
}
|
|
380
|
+
try {
|
|
381
|
+
const dispatcher = getOrCreateSharedDispatcher(proxyUrl, insecure);
|
|
382
|
+
return { fetchOptions: { dispatcher }, fetch: undiciFetch };
|
|
383
|
+
} catch (error) {
|
|
384
|
+
const hostname = extractHostnameFromProxyUrl(proxyUrl);
|
|
385
|
+
const failureCount = recordProxyFailure(hostname);
|
|
386
|
+
const failureLabel = failureCount === 1 ? "first failure" : `failure #${failureCount}`;
|
|
387
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
388
|
+
const redactedMessage = redactProxyCredentials(errorMessage);
|
|
389
|
+
const logMessage = `Failed to create proxy dispatcher for ${hostname} (${failureLabel}), falling back to direct connection: ${redactedMessage}`;
|
|
390
|
+
debugLogger.warn(logMessage);
|
|
391
|
+
console.error(`[RUNTIME_FETCH] ${logMessage}`);
|
|
392
|
+
return NO_DISPATCHER_FALLBACK[sdkType];
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
__name(buildFetchOptionsWithDispatcher, "buildFetchOptionsWithDispatcher");
|
|
396
|
+
|
|
397
|
+
export {
|
|
398
|
+
loadUndici,
|
|
399
|
+
preloadRuntimeFetchModule,
|
|
400
|
+
isTlsVerificationDisabled,
|
|
401
|
+
detectRuntime,
|
|
402
|
+
buildRuntimeFetchOptions,
|
|
403
|
+
getOrCreateSharedDispatcher,
|
|
404
|
+
redactProxyCredentials,
|
|
405
|
+
redactProxyError
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* @license
|
|
409
|
+
* Copyright 2025 Qwen Team
|
|
410
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
411
|
+
*/
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
matches,
|
|
5
5
|
nextFireTime,
|
|
6
6
|
parseCron
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IRH27ZC2.js";
|
|
8
8
|
import {
|
|
9
9
|
humanReadableCron
|
|
10
10
|
} from "./chunk-VDDGDZMA.js";
|
|
@@ -19,15 +19,15 @@ import {
|
|
|
19
19
|
taskHasLegacyCondition,
|
|
20
20
|
taskHasLegacyRunMode,
|
|
21
21
|
updateCronTasks
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-C3VHAXP2.js";
|
|
23
23
|
import {
|
|
24
24
|
ToolNames
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-P5RRUHL7.js";
|
|
26
26
|
import {
|
|
27
27
|
Storage,
|
|
28
28
|
createDebugLogger,
|
|
29
29
|
getProjectHash
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-OQB4EXO4.js";
|
|
31
31
|
import {
|
|
32
32
|
init_esbuild_shims
|
|
33
33
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -191,6 +191,16 @@ function computeJitter(id, cronExpr, recurring) {
|
|
|
191
191
|
return 0;
|
|
192
192
|
}
|
|
193
193
|
__name(computeJitter, "computeJitter");
|
|
194
|
+
function cronJitterWindowMinutes(jitterMs) {
|
|
195
|
+
return Math.ceil(Math.abs(jitterMs) / 6e4);
|
|
196
|
+
}
|
|
197
|
+
__name(cronJitterWindowMinutes, "cronJitterWindowMinutes");
|
|
198
|
+
function isCronSlotVisibleToTick(slotMinuteMs, currentMs, jitterMs) {
|
|
199
|
+
const currentMinute = new Date(currentMs);
|
|
200
|
+
currentMinute.setSeconds(0, 0);
|
|
201
|
+
return Math.abs(currentMinute.getTime() - slotMinuteMs) <= cronJitterWindowMinutes(jitterMs) * 6e4;
|
|
202
|
+
}
|
|
203
|
+
__name(isCronSlotVisibleToTick, "isCronSlotVisibleToTick");
|
|
194
204
|
var generateId = generateCronTaskId;
|
|
195
205
|
function clampWakeupSeconds(delaySeconds) {
|
|
196
206
|
if (!Number.isFinite(delaySeconds)) return WAKEUP_DEFAULT_SECONDS;
|
|
@@ -285,6 +295,10 @@ var CronScheduler = class {
|
|
|
285
295
|
// the live job away (or clear its pendingRemoval guard) as if it had
|
|
286
296
|
// been deleted on disk.
|
|
287
297
|
pendingAdd = /* @__PURE__ */ new Set();
|
|
298
|
+
// Durable one-shots this continuously-running scheduler loaded while it was
|
|
299
|
+
// eligible to fire them. Cleared on stop so a later enable still treats
|
|
300
|
+
// genuinely overdue work as missed.
|
|
301
|
+
armedDurableOneShots = /* @__PURE__ */ new Set();
|
|
288
302
|
// Ids of legacy tasks (a pre-removal `isolated` task with a `condition`
|
|
289
303
|
// precondition) already reported as skipped, so the fail-closed remediation
|
|
290
304
|
// breadcrumb is logged once per task rather than on every file reload.
|
|
@@ -462,6 +476,9 @@ var CronScheduler = class {
|
|
|
462
476
|
this.pendingAdd.add(job.id);
|
|
463
477
|
try {
|
|
464
478
|
await addCronTask(this.projectRoot, jobToDurableTask(job));
|
|
479
|
+
if (!job.recurring && this.durableEnabled && this.#shouldFireDurable(job)) {
|
|
480
|
+
this.armedDurableOneShots.add(job.id);
|
|
481
|
+
}
|
|
465
482
|
} catch (error) {
|
|
466
483
|
this.jobs.delete(job.id);
|
|
467
484
|
throw error;
|
|
@@ -491,6 +508,7 @@ var CronScheduler = class {
|
|
|
491
508
|
throw error;
|
|
492
509
|
}
|
|
493
510
|
}
|
|
511
|
+
this.armedDurableOneShots.delete(id);
|
|
494
512
|
return true;
|
|
495
513
|
}
|
|
496
514
|
/**
|
|
@@ -656,6 +674,8 @@ var CronScheduler = class {
|
|
|
656
674
|
const anchor = t.recurring ? t.lastFiredAt ?? t.createdAt : t.createdAt;
|
|
657
675
|
const nextFire = computeNextFireMs(t.cron, anchor, jitter);
|
|
658
676
|
if (nextFire === null || nextFire >= now) continue;
|
|
677
|
+
if (!t.recurring && this.timer !== null && this.armedDurableOneShots.has(t.id) && isCronSlotVisibleToTick(nextFire - jitter, now, jitter))
|
|
678
|
+
continue;
|
|
659
679
|
if (!t.recurring) {
|
|
660
680
|
missedOneShots.push(t);
|
|
661
681
|
} else if (now - t.createdAt >= this.recurringMaxAgeMs) {
|
|
@@ -671,6 +691,7 @@ var CronScheduler = class {
|
|
|
671
691
|
}
|
|
672
692
|
for (const t of [...missedOneShots, ...finalTasks]) {
|
|
673
693
|
this.pendingRemoval.add(t.id);
|
|
694
|
+
this.armedDurableOneShots.delete(t.id);
|
|
674
695
|
this.jobs.delete(t.id);
|
|
675
696
|
}
|
|
676
697
|
}
|
|
@@ -679,6 +700,7 @@ var CronScheduler = class {
|
|
|
679
700
|
for (const job of this.jobs.values()) {
|
|
680
701
|
if (job.durable && !diskIds.has(job.id)) {
|
|
681
702
|
this.jobs.delete(job.id);
|
|
703
|
+
this.armedDurableOneShots.delete(job.id);
|
|
682
704
|
}
|
|
683
705
|
}
|
|
684
706
|
for (const id of this.pendingRemoval) {
|
|
@@ -700,6 +722,11 @@ var CronScheduler = class {
|
|
|
700
722
|
job.lastFiredAt = Math.max(existing.lastFiredAt, job.lastFiredAt ?? 0);
|
|
701
723
|
}
|
|
702
724
|
this.jobs.set(task.id, job);
|
|
725
|
+
if (!task.recurring && this.#shouldFireDurable(job)) {
|
|
726
|
+
this.armedDurableOneShots.add(task.id);
|
|
727
|
+
} else {
|
|
728
|
+
this.armedDurableOneShots.delete(task.id);
|
|
729
|
+
}
|
|
703
730
|
if (!existing) durableJobCount++;
|
|
704
731
|
}
|
|
705
732
|
if (catchUpIds.length > 0) {
|
|
@@ -762,7 +789,8 @@ var CronScheduler = class {
|
|
|
762
789
|
onFire({
|
|
763
790
|
...carrier,
|
|
764
791
|
prompt: buildMissedCronNotification(runnable),
|
|
765
|
-
missed: true
|
|
792
|
+
missed: true,
|
|
793
|
+
delivery: void 0
|
|
766
794
|
});
|
|
767
795
|
this.removeMissedFromDisk(runnable.map((t) => t.id));
|
|
768
796
|
}
|
|
@@ -966,6 +994,7 @@ var CronScheduler = class {
|
|
|
966
994
|
}
|
|
967
995
|
this.wakeupChainStartedAt = null;
|
|
968
996
|
this.onFire = null;
|
|
997
|
+
this.armedDurableOneShots.clear();
|
|
969
998
|
if (this.durableEnabled) {
|
|
970
999
|
this.durableGeneration++;
|
|
971
1000
|
if (this.isOwner && this.projectRoot && this.sessionId) {
|
|
@@ -1067,7 +1096,10 @@ var CronScheduler = class {
|
|
|
1067
1096
|
}
|
|
1068
1097
|
}
|
|
1069
1098
|
if (this.projectRoot && (firedAt.size > 0 || removedIds.length > 0)) {
|
|
1070
|
-
for (const id of removedIds)
|
|
1099
|
+
for (const id of removedIds) {
|
|
1100
|
+
this.pendingRemoval.add(id);
|
|
1101
|
+
this.armedDurableOneShots.delete(id);
|
|
1102
|
+
}
|
|
1071
1103
|
const removed = new Set(removedIds);
|
|
1072
1104
|
const guarded = [...firedAt.keys()];
|
|
1073
1105
|
this.markFirePersistPending(guarded);
|
|
@@ -1108,8 +1140,7 @@ var CronScheduler = class {
|
|
|
1108
1140
|
* and 'none' otherwise.
|
|
1109
1141
|
*/
|
|
1110
1142
|
processJob(job, currentDate, currentMs) {
|
|
1111
|
-
const
|
|
1112
|
-
const windowMinutes = Math.ceil(absJitter / 6e4);
|
|
1143
|
+
const windowMinutes = cronJitterWindowMinutes(job.jitterMs);
|
|
1113
1144
|
const nowMinuteStart = new Date(currentDate);
|
|
1114
1145
|
nowMinuteStart.setSeconds(0, 0);
|
|
1115
1146
|
const nowMinuteMs = nowMinuteStart.getTime();
|
|
@@ -1220,7 +1251,8 @@ function durableTaskToJob(task, recurringMaxAgeMs, existing) {
|
|
|
1220
1251
|
lastFiredAt: task.lastFiredAt ?? void 0,
|
|
1221
1252
|
jitterMs,
|
|
1222
1253
|
durable: true,
|
|
1223
|
-
...task.sessionId ? { boundSessionId: task.sessionId } : {}
|
|
1254
|
+
...task.sessionId ? { boundSessionId: task.sessionId } : {},
|
|
1255
|
+
...task.delivery && task.sessionId ? { delivery: task.delivery } : {}
|
|
1224
1256
|
};
|
|
1225
1257
|
}
|
|
1226
1258
|
__name(durableTaskToJob, "durableTaskToJob");
|
|
@@ -1232,7 +1264,8 @@ function jobToDurableTask(job) {
|
|
|
1232
1264
|
recurring: job.recurring,
|
|
1233
1265
|
createdAt: job.createdAt,
|
|
1234
1266
|
lastFiredAt: job.lastFiredAt ?? null,
|
|
1235
|
-
...job.boundSessionId ? { sessionId: job.boundSessionId } : {}
|
|
1267
|
+
...job.boundSessionId ? { sessionId: job.boundSessionId } : {},
|
|
1268
|
+
...job.delivery ? { delivery: job.delivery } : {}
|
|
1236
1269
|
};
|
|
1237
1270
|
}
|
|
1238
1271
|
__name(jobToDurableTask, "jobToDurableTask");
|