@qwen-code/qwen-code 0.20.2-headless-image-routing.1 → 0.21.0
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 +5 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +23 -5
- package/bundled/qc-helper/docs/integration-github-action.md +9 -9
- package/bundled/review/SKILL.md +7 -3
- package/chunks/MaxSizedBox-5DPPWPGT.js +85 -0
- package/chunks/{StandaloneSessionPicker-PLQQB22E.js → StandaloneSessionPicker-BIRMPLRD.js} +66 -59
- package/chunks/{acp-startup-profiler-N3RHHXJ3.js → acp-startup-profiler-RV3IV562.js} +2 -2
- package/chunks/{acpAgent-AIVK2EM5.js → acpAgent-6J2U72PQ.js} +705 -182
- package/chunks/agent-6ODUANDO.js +81 -0
- package/chunks/agent-headless-7BYQTMHW.js +75 -0
- package/chunks/{anthropicContentGenerator-HGWAHO24.js → anthropicContentGenerator-75BKLTSP.js} +117 -43
- package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-Y5T7GG7F.js} +3 -3
- package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-2H6747FR.js} +3 -3
- package/chunks/bridge-ZUB64FAE.js +90 -0
- package/chunks/{build-GHIZ4MSZ.js → build-RV63TIRH.js} +2 -3
- package/chunks/{ca-N6VVUFVB.js → ca-25EDXPFZ.js} +2 -0
- package/chunks/{channel-worker-group-QZV2SP5U.js → channel-worker-group-2ZD7TVAT.js} +8 -7
- package/chunks/{channel-worker-manager-3GMAU45H.js → channel-worker-manager-4OA4BCGB.js} +190 -30
- package/chunks/{channel-worker-supervisor-QCXSXCRY.js → channel-worker-supervisor-V7KCFJTS.js} +7 -6
- package/chunks/{chunk-TYQMGACW.js → chunk-22C7BQ6D.js} +508 -10967
- package/chunks/chunk-2JZBVYTU.js +452 -0
- package/chunks/{chunk-H2XVO6NE.js → chunk-2MIN6GRR.js} +1 -1
- package/chunks/{chunk-4DWTDZGS.js → chunk-2NH6DYI4.js} +12 -12
- package/chunks/chunk-2SCDWPXI.js +246 -0
- package/chunks/{chunk-QE4KFTBS.js → chunk-2X55UKQE.js} +3 -3
- package/chunks/{chunk-QBUDF33N.js → chunk-3QMGYBFN.js} +1 -1
- package/chunks/{chunk-3OAKYHRG.js → chunk-3RN6GBKS.js} +1 -1
- package/chunks/{chunk-QR6U5QPP.js → chunk-3SJ43L4W.js} +4 -0
- package/chunks/chunk-46UV252V.js +128 -0
- package/chunks/{chunk-GHRSKGHF.js → chunk-4WIZGAH3.js} +7 -7
- package/chunks/{chunk-CAS7CB3T.js → chunk-55DJUCI2.js} +87 -29
- package/chunks/{chunk-QNLNLENL.js → chunk-5I2IWRSH.js} +2 -2
- package/chunks/{chunk-H24SOJIQ.js → chunk-5NBDS5S6.js} +147 -7
- package/chunks/{chunk-E4IMU4Y5.js → chunk-63P4EL5V.js} +1 -1
- package/chunks/chunk-6FGBXPWM.js +293 -0
- package/chunks/{chunk-FFFM6NJV.js → chunk-6GMVPFB2.js} +155 -73
- package/chunks/{chunk-KWK7UE6L.js → chunk-6OUGMXDC.js} +6 -6
- package/chunks/{chunk-QRUIS3DN.js → chunk-6PEXNQTX.js} +22 -1
- package/chunks/{chunk-FZPTCQY7.js → chunk-7JURR4JT.js} +1 -1
- package/chunks/{chunk-Q6NAKZTA.js → chunk-7MVVZO4N.js} +4 -4
- package/chunks/{chunk-6ZBPS62S.js → chunk-7ZCNENPP.js} +1 -1
- package/chunks/{chunk-6X4GWOPW.js → chunk-A5L3JMUA.js} +1 -1
- package/chunks/{chunk-YO2XRXY6.js → chunk-ACY3A37B.js} +3 -3
- package/chunks/chunk-AMDSOFFV.js +10860 -0
- package/chunks/{chunk-RV4C2ZFG.js → chunk-BIQWWWJN.js} +1 -1
- package/chunks/{chunk-ZHERRXZJ.js → chunk-BJX6ZSUK.js} +4 -4
- package/chunks/chunk-BK2UNYWD.js +29 -0
- package/chunks/{chunk-FRPDJNK3.js → chunk-BKHWX6I2.js} +3 -3
- package/chunks/chunk-BPJSQIJX.js +100 -0
- package/chunks/{chunk-M7WBGLYP.js → chunk-BULDBTYC.js} +2 -0
- package/chunks/{chunk-ZDP2Y2AL.js → chunk-CIKQ7KKO.js} +4625 -8645
- package/chunks/{chunk-PEJWA3QQ.js → chunk-D3UEZIQH.js} +4 -2
- package/chunks/chunk-DHHOYAPR.js +1462 -0
- package/chunks/{chunk-LESHKUWF.js → chunk-DLWL3Z7A.js} +5 -3
- package/chunks/{chunk-XHATNRQA.js → chunk-DP3IHZGG.js} +0 -2
- package/chunks/chunk-E5TUC6CA.js +479 -0
- package/chunks/{chunk-JC26SJ5Y.js → chunk-EBJQ6AXW.js} +13 -12
- package/chunks/{chunk-RCWKCN2Z.js → chunk-EPDRMGT4.js} +164 -17
- package/chunks/{chunk-FUFCALSJ.js → chunk-ETSW4KLJ.js} +2 -2
- package/chunks/{chunk-KHOVYUHX.js → chunk-FNQ6T3CV.js} +20 -3
- package/chunks/{chunk-SP5WRGVG.js → chunk-FQK6JAFG.js} +72 -23
- package/chunks/{chunk-NWZY2SPY.js → chunk-FSITMZJH.js} +8 -8
- package/chunks/{chunk-6RLROE6G.js → chunk-GLWP3FDB.js} +80 -15
- package/chunks/{chunk-KPBVP6SL.js → chunk-GSN55ZRI.js} +5 -5
- package/chunks/{chunk-MLYGPZGU.js → chunk-H4SBPHSA.js} +3 -3
- package/chunks/chunk-H5FFA6TH.js +902 -0
- package/chunks/{chunk-TDKQP3M6.js → chunk-HIJQF5B5.js} +1 -1
- package/chunks/{chunk-5G3ZVADU.js → chunk-IJTOWOD7.js} +17 -6
- package/chunks/chunk-IKCX4CCL.js +469 -0
- package/chunks/{chunk-LPEONXNV.js → chunk-IKYJHJNF.js} +3 -3
- package/chunks/{chunk-DTZY2SH2.js → chunk-IO3IX5Q4.js} +1 -1
- package/chunks/{chunk-RS7MT2QG.js → chunk-IPUUTYMV.js} +2 -4
- package/chunks/{chunk-XU457J4V.js → chunk-IRH27ZC2.js} +2 -2
- package/chunks/{chunk-46DK772E.js → chunk-J24WCGIN.js} +4 -4
- package/chunks/{chunk-4LVZNIDO.js → chunk-J56UI34H.js} +4 -13
- package/chunks/{chunk-TJTKSVIV.js → chunk-JLU636DO.js} +5 -1
- package/chunks/{chunk-RKWX4CMO.js → chunk-JVPM2ULZ.js} +6 -6
- package/chunks/{chunk-ENPCQK44.js → chunk-JXJFVC6E.js} +37 -18
- package/chunks/{chunk-NABLFI57.js → chunk-JZA3JUDJ.js} +1 -1
- package/chunks/{chunk-CGLQAVZE.js → chunk-K36B6G2O.js} +5 -5
- package/chunks/{chunk-GPSKDNEE.js → chunk-K4XWPEWB.js} +4 -4
- package/chunks/{chunk-QOZOIPSF.js → chunk-KIM5GUMA.js} +650 -113
- package/chunks/{chunk-JZSM2IZ3.js → chunk-KMQ33DO4.js} +7 -5
- package/chunks/{chunk-E2UVIFI2.js → chunk-KRXPRVGL.js} +0 -1
- package/chunks/{chunk-WHGVTP7Q.js → chunk-L26JL52R.js} +3 -3
- package/chunks/{chunk-7Z6JQEL6.js → chunk-L5UHQJTJ.js} +1 -1
- package/chunks/{chunk-O2XSCRCS.js → chunk-LB6DUZ26.js} +259 -67
- package/chunks/chunk-LEH5C7FV.js +232 -0
- package/chunks/{chunk-RWV32G2M.js → chunk-LH2BYDQ5.js} +6 -4
- package/chunks/{chunk-QKTHJXCS.js → chunk-LK7CHLVP.js} +79 -2
- package/chunks/{chunk-VRRF3GW5.js → chunk-LKEJ26GS.js} +11 -11
- package/chunks/{chunk-SQFXI7VK.js → chunk-LQIW3YFY.js} +227 -41
- package/chunks/chunk-LS77BEZP.js +405 -0
- package/chunks/{chunk-BSHD62QJ.js → chunk-M4FMGVY4.js} +3 -3
- package/chunks/{chunk-57FIIFJN.js → chunk-M5JM7OSF.js} +1 -1
- package/chunks/{chunk-7362QS5B.js → chunk-MB4MZHMJ.js} +80 -37
- package/chunks/{chunk-4K56OJFJ.js → chunk-MUP3T3AD.js} +1 -1
- package/chunks/{chunk-3HFNGB2O.js → chunk-MVSUYZDT.js} +4 -4
- package/chunks/{chunk-T5IO6FZ4.js → chunk-MZAXJAUM.js} +1 -1
- package/chunks/{chunk-QKNXKTZX.js → chunk-NH6KE4JX.js} +3 -3
- package/chunks/chunk-NIBLUX3Y.js +934 -0
- package/chunks/{chunk-OQB4EXO4.js → chunk-NL7LTRLR.js} +1 -1
- package/chunks/{chunk-CS2FSS7W.js → chunk-OFDOK3VM.js} +5 -5
- package/chunks/{chunk-LIZRAKPB.js → chunk-OHNBB4XR.js} +1 -1
- package/chunks/{chunk-MDZTPSXO.js → chunk-OKY7HXPG.js} +2 -2
- package/chunks/{chunk-NHDKSOEY.js → chunk-P3QQPMQA.js} +5 -5
- package/chunks/{chunk-7THPNISK.js → chunk-PC6JANNU.js} +5 -5
- package/chunks/{chunk-OTQ6PSZC.js → chunk-PHOF65IG.js} +3498 -1030
- package/chunks/{chunk-OQ5SYCPE.js → chunk-PJIZUQVC.js} +2 -2
- package/chunks/{chunk-5DTTYNB7.js → chunk-PQNHRFJC.js} +16 -3
- package/chunks/{chunk-YM3SZTH4.js → chunk-PR75REBZ.js} +18 -1
- package/chunks/{chunk-RECUEJ7B.js → chunk-PSOO6YXD.js} +18 -15
- package/chunks/{chunk-X6N25LXS.js → chunk-PWTZEM3C.js} +2 -2
- package/chunks/{chunk-5NJTNQUW.js → chunk-PWVFN2LF.js} +1 -1
- package/chunks/{chunk-7AUH6A4T.js → chunk-Q4M4MDQ4.js} +2 -2
- package/chunks/{chunk-EZPB6S2I.js → chunk-QAF7NMK7.js} +1 -1
- package/chunks/{chunk-5GI55PF5.js → chunk-R5AFZNQW.js} +5 -5
- package/chunks/{chunk-T5B5NQZX.js → chunk-RF3EXIHJ.js} +47 -60
- package/chunks/{chunk-4K7VDKAD.js → chunk-RHLZR4E5.js} +1 -1
- package/chunks/{chunk-TJDW42MV.js → chunk-RIBKPMRP.js} +220 -141
- package/chunks/{chunk-RVLZCXEE.js → chunk-RWTEFFPU.js} +82 -3
- package/chunks/{chunk-L5QZGCRH.js → chunk-RZIX2G32.js} +1 -1
- package/chunks/{chunk-LLKWRXSS.js → chunk-SQCQ4KO2.js} +350 -418
- package/chunks/{chunk-THJNPLI4.js → chunk-TARRHLLG.js} +1 -0
- package/chunks/{chunk-XCXYRDHB.js → chunk-TEHGS6UP.js} +47 -18
- package/chunks/{chunk-PQIVAWXN.js → chunk-TGILQ3YH.js} +8 -8
- package/chunks/{chunk-Q2YKNMLS.js → chunk-TOFQCPDC.js} +43 -10
- package/chunks/{chunk-L3KUB6XM.js → chunk-TPRQ7RZH.js} +586 -242
- package/chunks/{chunk-T4TZQJ7W.js → chunk-TWPJO254.js} +5 -16
- package/chunks/{chunk-HIP6TVWA.js → chunk-U7M2DMGW.js} +3 -3
- package/chunks/{chunk-ACW3VNUE.js → chunk-UDX5OBWR.js} +41 -9
- package/chunks/{chunk-LW2FUYBN.js → chunk-USTWD7QV.js} +6 -4
- package/chunks/{chunk-NPQDJGKU.js → chunk-UUUTRMI2.js} +1 -1
- package/chunks/chunk-UW5EOVUN.js +249 -0
- package/chunks/{chunk-6IL7KRLE.js → chunk-VAK25FTU.js} +1 -1
- package/chunks/{chunk-O4BHWVUD.js → chunk-VIA5XA4U.js} +5 -2
- package/chunks/{chunk-EBXZ2YGV.js → chunk-VRYUBFMC.js} +1 -1
- package/chunks/{chunk-TWVE5ZS5.js → chunk-VULLI6WQ.js} +172 -6
- package/chunks/{chunk-LNDD3IML.js → chunk-WCXCRJYB.js} +1 -1
- package/chunks/{chunk-2LI23QA6.js → chunk-X5XDDSSH.js} +1 -1
- package/chunks/{chunk-Q35QUZDQ.js → chunk-Y34KJKDC.js} +1 -1
- package/chunks/{chunk-7NR2AIK6.js → chunk-YBL3QUDD.js} +2 -2
- package/chunks/{chunk-H4AR2JQF.js → chunk-YH6G52F2.js} +3 -3
- package/chunks/{chunk-MBOJHHPI.js → chunk-YPE6A4GC.js} +2 -2
- package/chunks/{chunk-3EK5ZOUQ.js → chunk-YX324OPW.js} +1 -1
- package/chunks/{chunk-4PTLZ3NX.js → chunk-Z2BC6UJ5.js} +3 -3
- package/chunks/{chunk-QLJUC7TG.js → chunk-ZD6UTE4A.js} +1 -1
- package/chunks/{chunk-LX3COOXF.js → chunk-ZFDTEDCF.js} +6 -6
- package/chunks/chunk-ZJHVAS7M.js +289 -0
- package/chunks/{chunk-4OWXOUYF.js → chunk-ZNAUOR2I.js} +15 -12
- package/chunks/{chunk-T2L47JJK.js → chunk-ZOIFNCKL.js} +4 -4
- package/chunks/{computer-use-2VIV73WK.js → computer-use-SOQ4E3VX.js} +43 -35
- package/chunks/{config-utils-FYTBZLCJ.js → config-utils-7V7GGIW6.js} +3 -3
- package/chunks/contextCommand-JLHYA34Z.js +80 -0
- package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-IWW2IZ2T.js} +3 -3
- package/chunks/{create-sub-session-XDHHC2P4.js → create-sub-session-QRJLW5BV.js} +43 -35
- package/chunks/{cron-create-KTWJM7QT.js → cron-create-YIID5XAW.js} +6 -6
- package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-ZVHYCEP2.js} +5 -5
- package/chunks/{cron-list-PXDPGEDQ.js → cron-list-XEGS463Q.js} +5 -5
- package/chunks/{daemon-RAPSDJH7.js → daemon-YO6433NF.js} +350 -53
- package/chunks/daemon-status-provider-2233Q37D.js +89 -0
- package/chunks/{de-4IBXM7CN.js → de-HGRCYDEJ.js} +1 -0
- package/chunks/{dist-UIFWIFRO.js → dist-46NQKLTW.js} +2 -2
- package/chunks/{dist-XRYV6TJP.js → dist-AIKFMUKK.js} +50 -4
- package/chunks/{dist-XBJVSWS2.js → dist-BBLXMS3N.js} +14 -2
- package/chunks/{dist-OMW6WDEO.js → dist-F6IBUDR4.js} +40 -9
- package/chunks/{dist-PJLG2XYX.js → dist-WEAHOXDM.js} +1 -1
- package/chunks/{dist-OAV7LJGJ.js → dist-YFNEUWSE.js} +26 -2
- package/chunks/earlyInputCapture-A7NDU3PF.js +82 -0
- package/chunks/{edit-CS6SFEXC.js → edit-OBDSQURM.js} +43 -35
- package/chunks/{en-USMCCJAJ.js → en-MTWBNGDO.js} +15 -0
- package/chunks/{enter-worktree-LMAL75DY.js → enter-worktree-U6MRPQ2P.js} +43 -35
- package/chunks/{enterPlanMode-WVJB4DSS.js → enterPlanMode-BC5QUZZ2.js} +43 -35
- package/chunks/{environment-6YHC4JAJ.js → environment-W5UFC2CH.js} +46 -38
- package/chunks/errors-M7CLORXH.js +88 -0
- package/chunks/{exit-worktree-KPFD742L.js → exit-worktree-DGNYMECB.js} +43 -35
- package/chunks/{exitPlanMode-UEJS6CDY.js → exitPlanMode-GXTBWQAR.js} +43 -35
- package/chunks/{fast-path-G2N4NRCA.js → fast-path-JJZFJANL.js} +6 -6
- package/chunks/{fast-path-settings-DAOVFADC.js → fast-path-settings-WQJU2LAT.js} +2 -2
- package/chunks/{fr-WVHEBDDB.js → fr-45RLL55O.js} +1 -0
- package/chunks/{gemini-2MDVIOVT.js → gemini-QS36EBZV.js} +132 -102
- package/chunks/{geminiContentGenerator-ZXTDBMFR.js → geminiContentGenerator-AG4KB6CV.js} +14 -8
- package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-V7W3GODC.js} +1 -1
- package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-TDO75DQP.js} +1 -1
- package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-TF43WQT2.js} +1 -1
- package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-ZGUO3TXT.js} +1 -1
- package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-ECFYZZFQ.js} +1 -1
- package/chunks/{glob-562XFLIZ.js → glob-V7R3PSK3.js} +43 -35
- package/chunks/{grep-MGEFBDQK.js → grep-QYPSK7OP.js} +43 -35
- package/chunks/handleAutoUpdate-6DBEZYPV.js +81 -0
- package/chunks/{i18n-R6HJENXA.js → i18n-VUJJZIMU.js} +44 -36
- package/chunks/image-gen-Z3VPGKRC.js +240 -0
- package/chunks/initializer-UWAK5U5O.js +86 -0
- package/chunks/installationInfo-6O2YAA52.js +80 -0
- package/chunks/{ja-KY4ROZTE.js → ja-B7DF7DFG.js} +1 -0
- package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-MDTG3WRM.js} +3 -3
- package/chunks/{kittyProtocolDetector-HCNNKJTI.js → kittyProtocolDetector-MBRTDRBK.js} +5 -3
- package/chunks/list-GB4ESM3T.js +89 -0
- package/chunks/list-agents-5KJJHR6I.js +80 -0
- package/chunks/loadedSettingsAdapter-OT6JVQ7U.js +83 -0
- package/chunks/loggingContentGenerator-HS3S5H3Q.js +1077 -0
- package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-FXKNNYSY.js} +7 -7
- package/chunks/{ls-J2ZI5XYK.js → ls-NTK6VOQJ.js} +5 -5
- package/chunks/{lsp-UMS3NUB5.js → lsp-2JI24STP.js} +3 -3
- package/chunks/{managed-npm-update-4KNYSOYC.js → managed-npm-update-JYEMMXA3.js} +94 -38
- package/chunks/mcp-6DBDJPFU.js +83 -0
- package/chunks/{monitor-DMHKE4SW.js → monitor-R3ODH5U6.js} +45 -36
- package/chunks/node-UUDY34IG.js +305 -0
- package/chunks/nonInteractiveCli-MOYCYBBU.js +141 -0
- package/chunks/{notebook-edit-35SJGEOR.js → notebook-edit-BNOK452R.js} +43 -35
- package/chunks/{openaiContentGenerator-5LPAFXPF.js → openaiContentGenerator-WMCU3O2H.js} +27 -17
- package/chunks/pidfile-TFRZZZIO.js +86 -0
- package/chunks/{processUtils-GM2I55KF.js → processUtils-RT7UNCC2.js} +2 -2
- package/chunks/{pt-OK455PLH.js → pt-22Q3FP73.js} +1 -0
- package/chunks/{qwenContentGenerator-HKOYNP7H.js → qwenContentGenerator-HHCRK4SX.js} +56 -42
- package/chunks/{qwenOAuth2-NUUYC3V5.js → qwenOAuth2-OWLB5AKH.js} +14 -27
- package/chunks/read-file-APMO3PSX.js +31 -0
- package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-4DKQWGHD.js} +3 -3
- package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-RQKFYO5B.js} +3 -3
- package/chunks/resumeHistoryUtils-6KRYEAWZ.js +91 -0
- package/chunks/ripGrep-BEJDEDXW.js +73 -0
- package/chunks/{ru-7SPDGMGD.js → ru-FZCNZHDC.js} +1 -0
- package/chunks/{run-qwen-serve-5VH3F4NW.js → run-qwen-serve-FU6HEM4J.js} +271 -57
- package/chunks/{runtime-OH77YH7W.js → runtime-XXRRTNP6.js} +55 -45
- package/chunks/{scheduler-WJQSLCSV.js → scheduler-G2ZS2Z7E.js} +43 -35
- package/chunks/{sdk-exporters-grpc-ETLH47EP.js → sdk-exporters-grpc-AK3LGHNO.js} +3 -3
- package/chunks/{sdk-exporters-http-T3POX73F.js → sdk-exporters-http-FYBSUCPD.js} +6 -6
- package/chunks/{sdk-impl-NSLPDH6I.js → sdk-impl-GMVPB7NB.js} +6 -6
- package/chunks/{send-message-PYIJ2PZL.js → send-message-Q6OOR6BR.js} +46 -9
- package/chunks/serve-7BSTXJ4T.js +89 -0
- package/chunks/{server-E4N4AI6Z.js → server-4UMH7OIZ.js} +2362 -411
- package/chunks/{session-5YUWIOQE.js → session-K3O3Q2SV.js} +105 -87
- package/chunks/{settings-YY7ZSFO7.js → settings-CR2EWTBA.js} +53 -45
- package/chunks/shell-HH3PF3A2.js +83 -0
- package/chunks/{skill-PAIDX3EU.js → skill-I3SDA4MB.js} +17 -16
- package/chunks/spawnChannel-RWNDBXGA.js +82 -0
- package/chunks/{src-IZXLJI5M.js → src-GE4TTTML.js} +302 -184
- package/chunks/{standalone-update-X675JVBL.js → standalone-update-Q6WFRZZQ.js} +45 -37
- package/chunks/{startInteractiveUI-ND2IVBU3.js → startInteractiveUI-SLZGHRPH.js} +747 -310
- package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-I3757IWH.js} +4 -4
- package/chunks/{task-create-7474AJJD.js → task-create-N7WQSGYA.js} +10 -10
- package/chunks/{task-list-633HGOIB.js → task-list-FOPULZEP.js} +7 -7
- package/chunks/{task-stop-MNUGHPIA.js → task-stop-H6RHXFVQ.js} +4 -4
- package/chunks/{task-update-66GQB5LI.js → task-update-M57TFZJT.js} +10 -10
- package/chunks/{team-create-2DEYNMMN.js → team-create-YJALH5D2.js} +46 -38
- package/chunks/{team-delete-BB3CG3QF.js → team-delete-QE2UXJL7.js} +7 -7
- package/chunks/{team-plan-approval-65AVAOCT.js → team-plan-approval-34QFYKGN.js} +43 -35
- package/chunks/theme-manager-SWRILQHI.js +77 -0
- package/chunks/{todoWrite-KRAUN54W.js → todoWrite-VQ7FKOHL.js} +5 -5
- package/chunks/{tool-search-ZQP3SMTV.js → tool-search-NF7GB6LE.js} +16 -16
- package/chunks/total-session-admission-DLHHHLD3.js +84 -0
- package/chunks/{tree-sitter-FS4VPMZA.js → tree-sitter-4D7QS7F6.js} +1 -1
- package/chunks/{tree-sitter-bash-6B46JJCV.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
- package/chunks/{trustedFolders-LURI52LP.js → trustedFolders-KHXHY6PY.js} +44 -36
- package/chunks/{update-relaunch-BPWFIDLM.js → update-relaunch-WBUZJC5O.js} +5 -5
- package/chunks/updateCheck-RKL6M5XN.js +92 -0
- package/chunks/useAutoAcceptIndicator-CFQ5BUJL.js +93 -0
- package/chunks/{validateNonInterActiveAuth-HWD6Y22I.js → validateNonInterActiveAuth-3R223G3R.js} +89 -80
- package/chunks/{version-OD4JAFG7.js → version-HS7YSFHV.js} +1 -1
- package/chunks/{web-fetch-RFBKNU24.js → web-fetch-NKCSG7ZE.js} +18 -16
- package/chunks/{web-search-AKTVS5YZ.js → web-search-S62WAP4S.js} +13 -27
- package/chunks/{workflow-VZVCOSZN.js → workflow-QAGU5RU4.js} +44 -36
- package/chunks/workspace-providers-status-QSVZUETE.js +86 -0
- package/chunks/{workspace-registration-store-Q5SFJSX4.js → workspace-registration-store-24JMHDGF.js} +2 -2
- package/chunks/workspace-registry-UT4RBNBM.js +88 -0
- package/chunks/workspace-service-JFWRUS4V.js +98 -0
- package/chunks/workspace-skills-status-ZBBKJOI2.js +85 -0
- package/chunks/write-file-VHIXW5M7.js +73 -0
- package/chunks/{zh-WY5DWYZD.js → zh-LUIGBD55.js} +15 -0
- package/chunks/{zh-TW-BM47YBFH.js → zh-TW-F5KG2IYD.js} +15 -0
- package/cli-entry.js +10 -1
- package/cli.js +13 -13
- package/locales/ca.js +2 -0
- package/locales/de.js +1 -0
- package/locales/en.js +25 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +23 -0
- package/locales/zh.js +23 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-BWFm0SI0.js → arc-DcbWnB9T.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CZ_yL-DQ.js → architectureDiagram-3BPJPVTR-kMMF5sud.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B9F9mJvG.js → blockDiagram-GPEHLZMM-Htl9vTJS.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BUdwJW5f.js → c4Diagram-AAUBKEIU-BnZnm0mQ.js} +1 -1
- package/web-shell/assets/channel-Cq7YKtfC.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-w4cF-qlF.js → chunk-2J33WTMH-DziB7kDG.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BXwURxHJ.js → chunk-4BX2VUAB-CmkD8daw.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Gem3LalC.js → chunk-55IACEB6-CHAd9A_U.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-A3ddVojI.js → chunk-727SXJPM-Dqaam3fE.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CjHZ5L_R.js → chunk-AQP2D5EJ-D_-saBYM.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CKgdgcpv.js → chunk-FMBD7UC4-B9r_veWD.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-Cn2Dykjb.js → chunk-ND2GUHAM-B3EaCSpL.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN--0SyraC5.js → chunk-QZHKN3VN-CYq8x9mn.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ9aC1Tg.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CphhAity.js → cose-bilkent-S5V4N54A-D0ng4uiB.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DU--jiKp.js → dagre-BM42HDAG-DCZollQv.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BzvuZw1Y.js → diagram-2AECGRRQ-Dfk2pWS0.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-D84-49Y0.js → diagram-5GNKFQAL-kX38ltWR.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DQTq-3_3.js → diagram-KO2AKTUF-CJz2vsXh.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-8FTrshzN.js → diagram-LMA3HP47-BvMLZm_7.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BCjpDBCm.js → diagram-OG6HWLK6-l7kfStkO.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BtRObkmg.js → erDiagram-TEJ5UH35-BSVa8GGT.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DTrW6oxy.js → flowDiagram-I6XJVG4X-CoawKIXH.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BgPNSW6j.js → ganttDiagram-6RSMTGT7-DFUDH0zF.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BTclNgGV.js → gitGraphDiagram-PVQCEYII-Y2pvpT4e.js} +1 -1
- package/web-shell/assets/{index-CxA7AqY6.js → index-D0GX0zZf.js} +1 -1
- package/web-shell/assets/index-D9haPt0X.css +5 -0
- package/web-shell/assets/index-ckX9Pq5k.js +1230 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DCE4AJt2.js → infoDiagram-5YYISTIA-CU8_zLiX.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-C8iE6q4Y.js → ishikawaDiagram-YF4QCWOH-AVQiV0DU.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-C_dxdyEc.js → journeyDiagram-JHISSGLW-DQ0VSKa3.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Dw3n1u3w.js → kanban-definition-UN3LZRKU-BqnWqsE_.js} +1 -1
- package/web-shell/assets/{linear-C2BF2zJ9.js → linear-BkoihsaA.js} +1 -1
- package/web-shell/assets/{mermaid.core-CGTQU3MA.js → mermaid.core-5RJs-31j.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BVFZm9ZC.js → mindmap-definition-RKZ34NQL-D33Bxnpd.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Cc-TNN3n.js → pieDiagram-4H26LBE5-BuEAw3BH.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CgW3Rzsi.js → quadrantDiagram-W4KKPZXB-Kox_usEq.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BAaj0Y3B.js → requirementDiagram-4Y6WPE33-CNjeUif0.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-XJWmekxS.js → sankeyDiagram-5OEKKPKP-BCd2OL_U.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CtRc_0wf.js → sequenceDiagram-3UESZ5HK-CF2ZTsz0.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-WCnvMGy5.js → stateDiagram-AJRCARHV-qenSzHtm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B7W4zlCr.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-C9cRx49L.js → timeline-definition-PNZ67QCA-B5DyWdgs.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BvXOCEt-.js → vennDiagram-CIIHVFJN-DqP4I_o_.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-ByafGtzu.js → wardley-L42UT6IY-CJe2e4mg.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CozAnw8x.js → wardleyDiagram-YWT4CUSO-BMDSw-Rr.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Camu9Qvq.js → xychartDiagram-2RQKCTM6-BTVZYkxD.js} +1 -1
- package/web-shell/index.html +17 -13
- package/chunks/MaxSizedBox-3XQIBACV.js +0 -78
- package/chunks/agent-QXD5NSKA.js +0 -73
- package/chunks/agent-headless-4VXR2TBK.js +0 -67
- package/chunks/bridge-GIBRSPE6.js +0 -81
- package/chunks/chunk-CBOQ3HY7.js +0 -2019
- package/chunks/chunk-MA6GYKK7.js +0 -6928
- package/chunks/contextCommand-XQU7KLIH.js +0 -72
- package/chunks/daemon-status-provider-KQVNB4VA.js +0 -80
- package/chunks/earlyInputCapture-WP5SA3KH.js +0 -74
- package/chunks/errors-JEYPXX4S.js +0 -80
- package/chunks/handleAutoUpdate-2VJPAW43.js +0 -73
- package/chunks/initializer-UOX67ZFQ.js +0 -78
- package/chunks/installationInfo-NQNY34X3.js +0 -72
- package/chunks/list-2Z7KS7ZF.js +0 -81
- package/chunks/loadedSettingsAdapter-LIYY3LE4.js +0 -75
- package/chunks/mcp-AJ4QW3JA.js +0 -75
- package/chunks/nonInteractiveCli-PUSO5QF6.js +0 -134
- package/chunks/pidfile-EH2JW2PB.js +0 -78
- package/chunks/read-file-JZ5VXILQ.js +0 -31
- package/chunks/resumeHistoryUtils-Z3HG4WKM.js +0 -84
- package/chunks/ripGrep-JNLJCT2B.js +0 -65
- package/chunks/serve-NN5FXWR6.js +0 -81
- package/chunks/shell-FXT3NVC6.js +0 -75
- package/chunks/spawnChannel-XAWLXNOD.js +0 -74
- package/chunks/theme-manager-2WZHPK2M.js +0 -69
- package/chunks/total-session-admission-HULB2TEQ.js +0 -75
- package/chunks/updateCheck-D4ESCHBJ.js +0 -88
- package/chunks/useAutoAcceptIndicator-CBNLOF2P.js +0 -86
- package/chunks/workspace-providers-status-TJTVHORI.js +0 -78
- package/chunks/workspace-registry-H6VM5WXK.js +0 -79
- package/chunks/workspace-service-ZNKD3I2J.js +0 -90
- package/chunks/workspace-skills-status-OOBIXADG.js +0 -77
- package/chunks/write-file-CAKK5IAO.js +0 -65
- package/web-shell/assets/channel-DiLlxxIf.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CkylTdM4.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CkylTdM4.js +0 -1
- package/web-shell/assets/index-CGtQqOIa.css +0 -5
- package/web-shell/assets/index-TtM0hVjU.js +0 -1207
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D1gzH2Ue.js +0 -1
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
atomicWriteFileSync
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-A5L3JMUA.js";
|
|
6
6
|
import {
|
|
7
7
|
Storage,
|
|
8
8
|
createDebugLogger
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NL7LTRLR.js";
|
|
10
10
|
import {
|
|
11
11
|
init_esbuild_shims
|
|
12
12
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
CHANNEL_DAEMON_WORKER_SENTINEL,
|
|
5
|
+
CHANNEL_DELIVERY_IPC_TIMEOUT_MS,
|
|
5
6
|
CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
|
|
6
7
|
CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
|
|
8
|
+
ChannelDeliveryError,
|
|
7
9
|
ChannelWebhookEnqueueError,
|
|
10
|
+
MAX_CHANNEL_DELIVERIES_IN_FLIGHT,
|
|
8
11
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
9
12
|
MAX_CHANNEL_STARTUP_FAILURE_CHANNEL_LENGTH,
|
|
10
13
|
MAX_CHANNEL_STARTUP_FAILURE_CODE_LENGTH,
|
|
@@ -13,26 +16,28 @@ import {
|
|
|
13
16
|
QWEN_DAEMON_URL_ENV,
|
|
14
17
|
QWEN_DAEMON_WORKSPACE_ENV,
|
|
15
18
|
QWEN_SERVER_TOKEN_ENV,
|
|
19
|
+
createChannelDeliveryMessage,
|
|
16
20
|
createChannelWebhookTaskMessage,
|
|
17
21
|
createWorkerDiagnosticRedactor,
|
|
22
|
+
isChannelDeliveryResultMessage,
|
|
18
23
|
isChannelStartupReportMessage,
|
|
19
24
|
isChannelStartupReportType,
|
|
20
25
|
isChannelWebhookEnqueueErrorCode,
|
|
21
26
|
isChannelWebhookTaskResultMessage,
|
|
22
27
|
normalizeWorkerDiagnostic,
|
|
23
28
|
sanitizeWorkerDiagnostic
|
|
24
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-LK7CHLVP.js";
|
|
25
30
|
import {
|
|
26
31
|
channelSelectionNames
|
|
27
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-JLU636DO.js";
|
|
33
|
+
import {
|
|
34
|
+
sanitizeLogText
|
|
35
|
+
} from "./chunk-RWTEFFPU.js";
|
|
28
36
|
import {
|
|
29
37
|
CHANNEL_WORKER_KILL_GRACE_MS,
|
|
30
38
|
CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
|
|
31
39
|
CHANNEL_WORKER_STOP_GRACE_MS
|
|
32
40
|
} from "./chunk-5HBA2Z7V.js";
|
|
33
|
-
import {
|
|
34
|
-
sanitizeLogText
|
|
35
|
-
} from "./chunk-RVLZCXEE.js";
|
|
36
41
|
import {
|
|
37
42
|
init_esbuild_shims
|
|
38
43
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -263,6 +268,7 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
263
268
|
let staleHeartbeatTimer;
|
|
264
269
|
let restartAttemptTimes = [];
|
|
265
270
|
const pendingWebhookTasks = /* @__PURE__ */ new Map();
|
|
271
|
+
const pendingChannelDeliveries = /* @__PURE__ */ new Map();
|
|
266
272
|
let restarting;
|
|
267
273
|
let disposed = false;
|
|
268
274
|
const snapshotCopy = /* @__PURE__ */ __name(() => ({
|
|
@@ -273,7 +279,8 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
273
279
|
startupFailures: snapshot.startupFailures.map((failure) => ({
|
|
274
280
|
...failure
|
|
275
281
|
}))
|
|
276
|
-
} : {}
|
|
282
|
+
} : {},
|
|
283
|
+
...snapshot.adapters ? { adapters: snapshot.adapters.map((adapter) => ({ ...adapter })) } : {}
|
|
277
284
|
}), "snapshotCopy");
|
|
278
285
|
const clearRestartTimer = /* @__PURE__ */ __name(() => {
|
|
279
286
|
if (restartTimer) {
|
|
@@ -325,6 +332,39 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
325
332
|
}
|
|
326
333
|
return true;
|
|
327
334
|
}, "settleWebhookTask");
|
|
335
|
+
const rejectPendingChannelDeliveries = /* @__PURE__ */ __name((code, message) => {
|
|
336
|
+
for (const pending of pendingChannelDeliveries.values()) {
|
|
337
|
+
clearTimeout(pending.timer);
|
|
338
|
+
pending.reject(new ChannelDeliveryError(code, message));
|
|
339
|
+
}
|
|
340
|
+
pendingChannelDeliveries.clear();
|
|
341
|
+
}, "rejectPendingChannelDeliveries");
|
|
342
|
+
const rejectPendingChannelDelivery = /* @__PURE__ */ __name((id, error) => {
|
|
343
|
+
const pending = pendingChannelDeliveries.get(id);
|
|
344
|
+
if (!pending) return;
|
|
345
|
+
pendingChannelDeliveries.delete(id);
|
|
346
|
+
clearTimeout(pending.timer);
|
|
347
|
+
pending.reject(error);
|
|
348
|
+
}, "rejectPendingChannelDelivery");
|
|
349
|
+
const settleChannelDelivery = /* @__PURE__ */ __name((message) => {
|
|
350
|
+
if (!isChannelDeliveryResultMessage(message)) return false;
|
|
351
|
+
const pending = pendingChannelDeliveries.get(message.id);
|
|
352
|
+
if (!pending) return true;
|
|
353
|
+
if (message.ok) {
|
|
354
|
+
pendingChannelDeliveries.delete(message.id);
|
|
355
|
+
clearTimeout(pending.timer);
|
|
356
|
+
pending.resolve({ delivered: true });
|
|
357
|
+
} else {
|
|
358
|
+
rejectPendingChannelDelivery(
|
|
359
|
+
message.id,
|
|
360
|
+
new ChannelDeliveryError(
|
|
361
|
+
message.code,
|
|
362
|
+
message.error || "Channel delivery failed."
|
|
363
|
+
)
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
return true;
|
|
367
|
+
}, "settleChannelDelivery");
|
|
328
368
|
const pruneRestartAttempts = /* @__PURE__ */ __name((nowMs) => {
|
|
329
369
|
restartAttemptTimes = restartAttemptTimes.filter(
|
|
330
370
|
(attemptMs) => nowMs - attemptMs < restartPolicy.windowMs
|
|
@@ -432,6 +472,12 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
432
472
|
state: "starting",
|
|
433
473
|
channels: channelSelectionNames(opts.selection),
|
|
434
474
|
...requestedChannels ? { requestedChannels } : {},
|
|
475
|
+
...requestedChannels ? {
|
|
476
|
+
adapters: requestedChannels.map((name) => ({
|
|
477
|
+
name,
|
|
478
|
+
state: "starting"
|
|
479
|
+
}))
|
|
480
|
+
} : {},
|
|
435
481
|
startedAt,
|
|
436
482
|
restartCount: snapshot.restartCount ?? 0,
|
|
437
483
|
...snapshot.lastExitAt ? { lastExitAt: snapshot.lastExitAt } : {},
|
|
@@ -615,7 +661,14 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
615
661
|
};
|
|
616
662
|
snapshot = {
|
|
617
663
|
...snapshot,
|
|
618
|
-
startupFailures: [...snapshot.startupFailures ?? [], failure]
|
|
664
|
+
startupFailures: [...snapshot.startupFailures ?? [], failure],
|
|
665
|
+
adapters: snapshot.adapters?.map(
|
|
666
|
+
(adapter) => adapter.name === failure.channel ? {
|
|
667
|
+
name: adapter.name,
|
|
668
|
+
state: "error",
|
|
669
|
+
error: failure.message
|
|
670
|
+
} : adapter
|
|
671
|
+
)
|
|
619
672
|
};
|
|
620
673
|
acknowledgeStartupReport();
|
|
621
674
|
}, "handleStartupReport");
|
|
@@ -637,6 +690,22 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
637
690
|
if (message.requestedChannels?.length) {
|
|
638
691
|
next.requestedChannels = [...message.requestedChannels];
|
|
639
692
|
}
|
|
693
|
+
const adapterNames = message.requestedChannels?.length ? message.requestedChannels : next.requestedChannels ?? next.channels;
|
|
694
|
+
const connected = new Set(next.channels);
|
|
695
|
+
const failures = new Map(
|
|
696
|
+
next.startupFailures?.map((failure) => [failure.channel, failure])
|
|
697
|
+
);
|
|
698
|
+
next.adapters = adapterNames.map((name) => {
|
|
699
|
+
if (connected.has(name)) {
|
|
700
|
+
return { name, state: "connected" };
|
|
701
|
+
}
|
|
702
|
+
const failure = failures.get(name);
|
|
703
|
+
return {
|
|
704
|
+
name,
|
|
705
|
+
state: "error",
|
|
706
|
+
...failure ? { error: failure.message } : {}
|
|
707
|
+
};
|
|
708
|
+
});
|
|
640
709
|
snapshot = next;
|
|
641
710
|
armStaleHeartbeatTimer(startedChild);
|
|
642
711
|
notifyReady(opts.onReady, snapshotCopy());
|
|
@@ -656,6 +725,9 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
656
725
|
}, "handleHeartbeat");
|
|
657
726
|
function handleMessage(message) {
|
|
658
727
|
if (child !== startedChild) return;
|
|
728
|
+
if (settleChannelDelivery(message)) {
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
659
731
|
if (settleWebhookTask(message)) {
|
|
660
732
|
return;
|
|
661
733
|
}
|
|
@@ -684,6 +756,10 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
684
756
|
"channel_worker_unavailable",
|
|
685
757
|
"Channel worker exited."
|
|
686
758
|
);
|
|
759
|
+
rejectPendingChannelDeliveries(
|
|
760
|
+
"channel_worker_unavailable",
|
|
761
|
+
"Channel worker exited."
|
|
762
|
+
);
|
|
687
763
|
child = void 0;
|
|
688
764
|
if ((ready || kind === "restart") && !stopping) {
|
|
689
765
|
scheduleRestart();
|
|
@@ -759,6 +835,10 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
759
835
|
"channel_worker_unavailable",
|
|
760
836
|
"Channel worker stopped."
|
|
761
837
|
);
|
|
838
|
+
rejectPendingChannelDeliveries(
|
|
839
|
+
"channel_worker_unavailable",
|
|
840
|
+
"Channel worker stopped."
|
|
841
|
+
);
|
|
762
842
|
if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
|
|
763
843
|
child = void 0;
|
|
764
844
|
snapshot = { ...snapshot, state: "stopped" };
|
|
@@ -803,6 +883,10 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
803
883
|
"channel_worker_unavailable",
|
|
804
884
|
"Channel worker stopped."
|
|
805
885
|
);
|
|
886
|
+
rejectPendingChannelDeliveries(
|
|
887
|
+
"channel_worker_unavailable",
|
|
888
|
+
"Channel worker stopped."
|
|
889
|
+
);
|
|
806
890
|
if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
|
|
807
891
|
clearRestartTimer();
|
|
808
892
|
clearStaleHeartbeatTimer();
|
|
@@ -825,6 +909,62 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
825
909
|
snapshot() {
|
|
826
910
|
return snapshotCopy();
|
|
827
911
|
},
|
|
912
|
+
async deliverChannelMessage(request) {
|
|
913
|
+
const startedChild = child;
|
|
914
|
+
if (!startedChild || snapshot.state !== "running") {
|
|
915
|
+
throw new ChannelDeliveryError(
|
|
916
|
+
"channel_worker_unavailable",
|
|
917
|
+
"Channel worker is not running."
|
|
918
|
+
);
|
|
919
|
+
}
|
|
920
|
+
const send = startedChild.send;
|
|
921
|
+
if (!send) {
|
|
922
|
+
throw new ChannelDeliveryError(
|
|
923
|
+
"channel_worker_unavailable",
|
|
924
|
+
"Channel worker IPC send failed."
|
|
925
|
+
);
|
|
926
|
+
}
|
|
927
|
+
if (pendingChannelDeliveries.size >= MAX_CHANNEL_DELIVERIES_IN_FLIGHT) {
|
|
928
|
+
throw new ChannelDeliveryError(
|
|
929
|
+
"channel_delivery_queue_full",
|
|
930
|
+
"Channel delivery queue is full."
|
|
931
|
+
);
|
|
932
|
+
}
|
|
933
|
+
const message = createChannelDeliveryMessage(request);
|
|
934
|
+
return await new Promise((resolve, reject) => {
|
|
935
|
+
const timer = setTimeout(() => {
|
|
936
|
+
pendingChannelDeliveries.delete(message.id);
|
|
937
|
+
reject(
|
|
938
|
+
new ChannelDeliveryError(
|
|
939
|
+
"channel_delivery_timeout",
|
|
940
|
+
"Channel delivery IPC timed out."
|
|
941
|
+
)
|
|
942
|
+
);
|
|
943
|
+
}, CHANNEL_DELIVERY_IPC_TIMEOUT_MS);
|
|
944
|
+
timer.unref();
|
|
945
|
+
pendingChannelDeliveries.set(message.id, { resolve, reject, timer });
|
|
946
|
+
try {
|
|
947
|
+
send.call(startedChild, message, (error) => {
|
|
948
|
+
if (!error) return;
|
|
949
|
+
rejectPendingChannelDelivery(
|
|
950
|
+
message.id,
|
|
951
|
+
new ChannelDeliveryError(
|
|
952
|
+
"channel_worker_unavailable",
|
|
953
|
+
`Channel worker IPC send failed: ${error.message}`
|
|
954
|
+
)
|
|
955
|
+
);
|
|
956
|
+
});
|
|
957
|
+
} catch (error) {
|
|
958
|
+
rejectPendingChannelDelivery(
|
|
959
|
+
message.id,
|
|
960
|
+
new ChannelDeliveryError(
|
|
961
|
+
"channel_worker_unavailable",
|
|
962
|
+
`Channel worker IPC send failed: ${error instanceof Error ? error.message : String(error)}`
|
|
963
|
+
)
|
|
964
|
+
);
|
|
965
|
+
}
|
|
966
|
+
});
|
|
967
|
+
},
|
|
828
968
|
async enqueueWebhookTask(task) {
|
|
829
969
|
const startedChild = child;
|
|
830
970
|
if (!startedChild || snapshot.state !== "running") {
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
getErrorStatus
|
|
5
|
+
} from "./chunk-NL7LTRLR.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/quotaErrorDetection.ts
|
|
14
|
+
init_esbuild_shims();
|
|
15
|
+
function isApiError(error) {
|
|
16
|
+
return typeof error === "object" && error !== null && "error" in error && typeof error.error === "object" && error.error !== null && "message" in error.error;
|
|
17
|
+
}
|
|
18
|
+
__name(isApiError, "isApiError");
|
|
19
|
+
function isStructuredError(error) {
|
|
20
|
+
return typeof error === "object" && error !== null && "message" in error && typeof error.message === "string";
|
|
21
|
+
}
|
|
22
|
+
__name(isStructuredError, "isStructuredError");
|
|
23
|
+
function isProQuotaExceededError(error) {
|
|
24
|
+
const checkMessage = /* @__PURE__ */ __name((message) => message.includes("Quota exceeded for quota metric 'Gemini") && message.includes("Pro Requests'"), "checkMessage");
|
|
25
|
+
if (typeof error === "string") {
|
|
26
|
+
return checkMessage(error);
|
|
27
|
+
}
|
|
28
|
+
if (isStructuredError(error)) {
|
|
29
|
+
return checkMessage(error.message);
|
|
30
|
+
}
|
|
31
|
+
if (isApiError(error)) {
|
|
32
|
+
return checkMessage(error.error.message);
|
|
33
|
+
}
|
|
34
|
+
if (error && typeof error === "object" && "response" in error) {
|
|
35
|
+
const gaxiosError = error;
|
|
36
|
+
if (gaxiosError.response && gaxiosError.response.data) {
|
|
37
|
+
if (typeof gaxiosError.response.data === "string") {
|
|
38
|
+
return checkMessage(gaxiosError.response.data);
|
|
39
|
+
}
|
|
40
|
+
if (typeof gaxiosError.response.data === "object" && gaxiosError.response.data !== null && "error" in gaxiosError.response.data) {
|
|
41
|
+
const errorData = gaxiosError.response.data;
|
|
42
|
+
return checkMessage(errorData.error?.message || "");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
__name(isProQuotaExceededError, "isProQuotaExceededError");
|
|
49
|
+
function isGenericQuotaExceededError(error) {
|
|
50
|
+
if (typeof error === "string") {
|
|
51
|
+
return error.includes("Quota exceeded for quota metric");
|
|
52
|
+
}
|
|
53
|
+
if (isStructuredError(error)) {
|
|
54
|
+
return error.message.includes("Quota exceeded for quota metric");
|
|
55
|
+
}
|
|
56
|
+
if (isApiError(error)) {
|
|
57
|
+
return error.error.message.includes("Quota exceeded for quota metric");
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
__name(isGenericQuotaExceededError, "isGenericQuotaExceededError");
|
|
62
|
+
function isQwenQuotaExceededError(error) {
|
|
63
|
+
if (typeof error !== "object" || error === null) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const { status, code, message } = error;
|
|
67
|
+
return status === 429 && code === "insufficient_quota" && typeof message === "string" && message.toLowerCase().includes("free allocated quota exceeded");
|
|
68
|
+
}
|
|
69
|
+
__name(isQwenQuotaExceededError, "isQwenQuotaExceededError");
|
|
70
|
+
|
|
71
|
+
// packages/core/src/utils/rateLimit.ts
|
|
72
|
+
init_esbuild_shims();
|
|
73
|
+
|
|
74
|
+
// packages/core/src/utils/retryPolicy.ts
|
|
75
|
+
init_esbuild_shims();
|
|
76
|
+
var MAX_TIMEOUT_MS = 2147483647;
|
|
77
|
+
function getRetryDelayMs(options) {
|
|
78
|
+
const normalizedAttempt = Math.max(1, options.attempt);
|
|
79
|
+
const delayCeilingMs = Math.min(options.maxDelayMs, MAX_TIMEOUT_MS);
|
|
80
|
+
const exponent = Math.min(normalizedAttempt - 1, 31);
|
|
81
|
+
const cappedExponentialDelayMs = Math.min(
|
|
82
|
+
options.initialDelayMs * Math.pow(2, exponent),
|
|
83
|
+
delayCeilingMs
|
|
84
|
+
);
|
|
85
|
+
const retryAfterMode = options.retryAfterMode ?? "ignore";
|
|
86
|
+
const retryAfterMs = retryAfterMode === "ignore" ? null : getRetryAfterDelayMs(options.error);
|
|
87
|
+
if (retryAfterMs !== null && retryAfterMs > 0) {
|
|
88
|
+
const retryAfterCapMs = Math.min(
|
|
89
|
+
options.retryAfterMaxDelayMs ?? options.maxDelayMs,
|
|
90
|
+
MAX_TIMEOUT_MS
|
|
91
|
+
);
|
|
92
|
+
const cappedRetryAfterMs = Math.min(retryAfterMs, retryAfterCapMs);
|
|
93
|
+
return Math.max(cappedExponentialDelayMs, cappedRetryAfterMs);
|
|
94
|
+
}
|
|
95
|
+
const jitterRatio = options.jitterRatio ?? 0;
|
|
96
|
+
if (jitterRatio <= 0) return cappedExponentialDelayMs;
|
|
97
|
+
const random = options.random ?? Math.random;
|
|
98
|
+
const jitter = cappedExponentialDelayMs * jitterRatio * (random() * 2 - 1);
|
|
99
|
+
return Math.min(
|
|
100
|
+
Math.max(0, cappedExponentialDelayMs + jitter),
|
|
101
|
+
delayCeilingMs
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
__name(getRetryDelayMs, "getRetryDelayMs");
|
|
105
|
+
function getRetryAfterDelayMs(error) {
|
|
106
|
+
const value = getHeaderValue(error, "retry-after") ?? getResponseHeaderValue(error, "retry-after");
|
|
107
|
+
if (value === null) return null;
|
|
108
|
+
const trimmed = value.trim();
|
|
109
|
+
if (/^\d+(\.\d+)?$/.test(trimmed)) {
|
|
110
|
+
const seconds = Number(trimmed);
|
|
111
|
+
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
112
|
+
return Math.min(seconds * 1e3, MAX_TIMEOUT_MS);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const retryAtMs = Date.parse(trimmed);
|
|
116
|
+
if (!Number.isFinite(retryAtMs)) return null;
|
|
117
|
+
const delayMs = retryAtMs - Date.now();
|
|
118
|
+
return delayMs > 0 ? Math.min(delayMs, MAX_TIMEOUT_MS) : 0;
|
|
119
|
+
}
|
|
120
|
+
__name(getRetryAfterDelayMs, "getRetryAfterDelayMs");
|
|
121
|
+
function getHeaderValue(error, headerName) {
|
|
122
|
+
if (!hasHeaders(error)) return null;
|
|
123
|
+
const { headers } = error;
|
|
124
|
+
if (typeof headers.get === "function") {
|
|
125
|
+
const value = headers.get(headerName);
|
|
126
|
+
return typeof value === "string" ? value : null;
|
|
127
|
+
}
|
|
128
|
+
if (typeof headers !== "object" || headers === null) return null;
|
|
129
|
+
const lowerHeaderName = headerName.toLowerCase();
|
|
130
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
131
|
+
if (key.toLowerCase() !== lowerHeaderName) continue;
|
|
132
|
+
return typeof value === "string" ? value : null;
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
__name(getHeaderValue, "getHeaderValue");
|
|
137
|
+
function getResponseHeaderValue(error, headerName) {
|
|
138
|
+
if (!hasResponseHeaders(error)) return null;
|
|
139
|
+
return getHeaderValue(error.response, headerName);
|
|
140
|
+
}
|
|
141
|
+
__name(getResponseHeaderValue, "getResponseHeaderValue");
|
|
142
|
+
function hasHeaders(error) {
|
|
143
|
+
return typeof error === "object" && error !== null && "headers" in error && error.headers != null;
|
|
144
|
+
}
|
|
145
|
+
__name(hasHeaders, "hasHeaders");
|
|
146
|
+
function hasResponseHeaders(error) {
|
|
147
|
+
return typeof error === "object" && error !== null && "response" in error && typeof error.response === "object" && error.response !== null && "headers" in error.response && error.response.headers != null;
|
|
148
|
+
}
|
|
149
|
+
__name(hasResponseHeaders, "hasResponseHeaders");
|
|
150
|
+
|
|
151
|
+
// packages/core/src/utils/rateLimit.ts
|
|
152
|
+
var RATE_LIMIT_ERROR_CODES = /* @__PURE__ */ new Set([429, 503, 1302, 1305]);
|
|
153
|
+
function isRateLimitError(error, extraCodes) {
|
|
154
|
+
const code = getErrorCode(error);
|
|
155
|
+
if (code === null) return false;
|
|
156
|
+
if (RATE_LIMIT_ERROR_CODES.has(code)) return true;
|
|
157
|
+
if (extraCodes && extraCodes.includes(code)) return true;
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
__name(isRateLimitError, "isRateLimitError");
|
|
161
|
+
function getRateLimitErrorDetails(error) {
|
|
162
|
+
const statusCode = getErrorStatus(error);
|
|
163
|
+
const payload = getProviderErrorPayload(error);
|
|
164
|
+
const message = getRawErrorMessage(error);
|
|
165
|
+
const transport = message?.includes("event:error") || message?.includes("HTTP_STATUS/") ? "sse" : statusCode !== void 0 ? "http" : "unknown";
|
|
166
|
+
return {
|
|
167
|
+
...statusCode !== void 0 ? { statusCode } : {},
|
|
168
|
+
...payload?.code !== void 0 ? { providerCode: String(payload.code) } : {},
|
|
169
|
+
...payload?.message !== void 0 ? { providerMessage: payload.message } : {},
|
|
170
|
+
...payload?.requestId !== void 0 ? { requestId: payload.requestId } : {},
|
|
171
|
+
transport
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
__name(getRateLimitErrorDetails, "getRateLimitErrorDetails");
|
|
175
|
+
function getRateLimitRetryDelayMs(attempt, options) {
|
|
176
|
+
return getRetryDelayMs({
|
|
177
|
+
attempt,
|
|
178
|
+
initialDelayMs: options.initialDelayMs,
|
|
179
|
+
maxDelayMs: options.maxDelayMs,
|
|
180
|
+
retryAfterMode: "minimum",
|
|
181
|
+
retryAfterMaxDelayMs: options.maxDelayMs,
|
|
182
|
+
error: options.error
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
__name(getRateLimitRetryDelayMs, "getRateLimitRetryDelayMs");
|
|
186
|
+
function getErrorCode(error) {
|
|
187
|
+
if (isApiError(error)) {
|
|
188
|
+
const n = Number(error.error.code);
|
|
189
|
+
if (Number.isFinite(n) && n > 0) return n;
|
|
190
|
+
}
|
|
191
|
+
const msg = error instanceof Error ? error.message : typeof error === "string" ? error : null;
|
|
192
|
+
if (msg) {
|
|
193
|
+
const i = msg.indexOf("{");
|
|
194
|
+
if (i !== -1) {
|
|
195
|
+
try {
|
|
196
|
+
const p = JSON.parse(msg.substring(i));
|
|
197
|
+
if (isApiError(p)) {
|
|
198
|
+
const n = Number(p.error.code);
|
|
199
|
+
if (Number.isFinite(n) && n > 0) return n;
|
|
200
|
+
}
|
|
201
|
+
} catch {
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (isStructuredError(error) && typeof error.status === "number") {
|
|
206
|
+
return error.status;
|
|
207
|
+
}
|
|
208
|
+
if (error instanceof Error && "status" in error) {
|
|
209
|
+
const s = error.status;
|
|
210
|
+
if (typeof s === "number") return s;
|
|
211
|
+
}
|
|
212
|
+
return getErrorStatus(error) ?? null;
|
|
213
|
+
}
|
|
214
|
+
__name(getErrorCode, "getErrorCode");
|
|
215
|
+
function getProviderErrorPayload(error) {
|
|
216
|
+
for (const payload of getJsonPayloads(error)) {
|
|
217
|
+
if (typeof payload !== "object" || payload === null) continue;
|
|
218
|
+
const direct = payload;
|
|
219
|
+
const nestedError = payload.error;
|
|
220
|
+
const nested = typeof nestedError === "object" && nestedError !== null ? nestedError : void 0;
|
|
221
|
+
const source = nested ?? direct;
|
|
222
|
+
const code = typeof source.code === "string" || typeof source.code === "number" ? source.code : void 0;
|
|
223
|
+
const message = typeof source.message === "string" ? source.message : void 0;
|
|
224
|
+
const requestId = typeof source.request_id === "string" ? source.request_id : typeof source.requestId === "string" ? source.requestId : typeof direct.request_id === "string" ? direct.request_id : typeof direct.requestId === "string" ? direct.requestId : void 0;
|
|
225
|
+
if (code !== void 0 || message !== void 0 || requestId !== void 0) {
|
|
226
|
+
return { code, message, requestId };
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (isApiError(error)) {
|
|
230
|
+
return {
|
|
231
|
+
code: error.error.code,
|
|
232
|
+
message: error.error.message
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
__name(getProviderErrorPayload, "getProviderErrorPayload");
|
|
238
|
+
function getJsonPayloads(error) {
|
|
239
|
+
const message = getRawErrorMessage(error);
|
|
240
|
+
if (!message) return [];
|
|
241
|
+
const payloads = [];
|
|
242
|
+
for (const line of message.split(/\r?\n/)) {
|
|
243
|
+
if (!line.startsWith("data:")) continue;
|
|
244
|
+
const data = line.slice("data:".length).trim();
|
|
245
|
+
if (!data || data === "[DONE]") continue;
|
|
246
|
+
try {
|
|
247
|
+
payloads.push(JSON.parse(data));
|
|
248
|
+
} catch {
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (payloads.length > 0) return payloads;
|
|
252
|
+
const jsonStart = message.indexOf("{");
|
|
253
|
+
const jsonEnd = message.lastIndexOf("}");
|
|
254
|
+
if (jsonStart !== -1 && jsonEnd > jsonStart) {
|
|
255
|
+
try {
|
|
256
|
+
payloads.push(
|
|
257
|
+
JSON.parse(message.slice(jsonStart, jsonEnd + 1))
|
|
258
|
+
);
|
|
259
|
+
} catch {
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return payloads;
|
|
263
|
+
}
|
|
264
|
+
__name(getJsonPayloads, "getJsonPayloads");
|
|
265
|
+
function getRawErrorMessage(error) {
|
|
266
|
+
if (error instanceof Error) return error.message;
|
|
267
|
+
if (typeof error === "string") return error;
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
__name(getRawErrorMessage, "getRawErrorMessage");
|
|
271
|
+
|
|
272
|
+
export {
|
|
273
|
+
isApiError,
|
|
274
|
+
isStructuredError,
|
|
275
|
+
isProQuotaExceededError,
|
|
276
|
+
isGenericQuotaExceededError,
|
|
277
|
+
isQwenQuotaExceededError,
|
|
278
|
+
getRetryDelayMs,
|
|
279
|
+
getRetryAfterDelayMs,
|
|
280
|
+
isRateLimitError,
|
|
281
|
+
getRateLimitErrorDetails,
|
|
282
|
+
getRateLimitRetryDelayMs
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* @license
|
|
286
|
+
* Copyright 2025 Google LLC
|
|
287
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
288
|
+
*/
|
|
289
|
+
/**
|
|
290
|
+
* @license
|
|
291
|
+
* Copyright 2026 Google LLC
|
|
292
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
293
|
+
*/
|