@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
|
@@ -7,15 +7,17 @@ import {
|
|
|
7
7
|
resolveRequestTimeout
|
|
8
8
|
} from "./chunk-GLNBDYUX.js";
|
|
9
9
|
import {
|
|
10
|
-
buildRuntimeFetchOptions,
|
|
11
10
|
defaultOutputCeiling,
|
|
12
11
|
hasExplicitOutputLimit,
|
|
13
12
|
parsePositiveIntegerEnvValue,
|
|
14
13
|
tokenLimit
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UW5EOVUN.js";
|
|
15
|
+
import {
|
|
16
|
+
buildRuntimeFetchOptions
|
|
17
|
+
} from "./chunk-2JZBVYTU.js";
|
|
16
18
|
import {
|
|
17
19
|
createDebugLogger
|
|
18
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-NL7LTRLR.js";
|
|
19
21
|
import {
|
|
20
22
|
init_esbuild_shims
|
|
21
23
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
isPrivateHost
|
|
5
|
+
} from "./chunk-NH6KE4JX.js";
|
|
6
|
+
import {
|
|
7
|
+
loadUndici
|
|
8
|
+
} from "./chunk-2JZBVYTU.js";
|
|
9
|
+
import {
|
|
10
|
+
getErrorMessage
|
|
11
|
+
} from "./chunk-NL7LTRLR.js";
|
|
12
|
+
import {
|
|
13
|
+
init_esbuild_shims
|
|
14
|
+
} from "./chunk-5O2XNYP6.js";
|
|
15
|
+
import {
|
|
16
|
+
__name
|
|
17
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
18
|
+
|
|
19
|
+
// packages/core/src/services/image-generation-service.ts
|
|
20
|
+
init_esbuild_shims();
|
|
21
|
+
|
|
22
|
+
// packages/core/src/extension/network-policy.ts
|
|
23
|
+
init_esbuild_shims();
|
|
24
|
+
import { promises as dns } from "node:dns";
|
|
25
|
+
import { BlockList, isIP } from "node:net";
|
|
26
|
+
var blockedAddresses = new BlockList();
|
|
27
|
+
var publicIpv6Addresses = new BlockList();
|
|
28
|
+
publicIpv6Addresses.addSubnet("2000::", 3, "ipv6");
|
|
29
|
+
for (const [address, prefix] of [
|
|
30
|
+
["0.0.0.0", 8],
|
|
31
|
+
["10.0.0.0", 8],
|
|
32
|
+
["100.64.0.0", 10],
|
|
33
|
+
["127.0.0.0", 8],
|
|
34
|
+
["169.254.0.0", 16],
|
|
35
|
+
["172.16.0.0", 12],
|
|
36
|
+
["192.0.0.0", 24],
|
|
37
|
+
["192.0.2.0", 24],
|
|
38
|
+
["192.88.99.0", 24],
|
|
39
|
+
["192.168.0.0", 16],
|
|
40
|
+
["198.18.0.0", 15],
|
|
41
|
+
["198.51.100.0", 24],
|
|
42
|
+
["203.0.113.0", 24],
|
|
43
|
+
["224.0.0.0", 4],
|
|
44
|
+
["240.0.0.0", 4]
|
|
45
|
+
]) {
|
|
46
|
+
blockedAddresses.addSubnet(address, prefix, "ipv4");
|
|
47
|
+
}
|
|
48
|
+
for (const [address, prefix] of [
|
|
49
|
+
["2001::", 23],
|
|
50
|
+
["2001:db8::", 32],
|
|
51
|
+
["2002::", 16],
|
|
52
|
+
["3fff::", 20]
|
|
53
|
+
]) {
|
|
54
|
+
blockedAddresses.addSubnet(address, prefix, "ipv6");
|
|
55
|
+
}
|
|
56
|
+
async function waitForAbortable(promise, signal) {
|
|
57
|
+
if (!signal) return await promise;
|
|
58
|
+
signal.throwIfAborted();
|
|
59
|
+
return await new Promise((resolve, reject) => {
|
|
60
|
+
let settled = false;
|
|
61
|
+
const finish = /* @__PURE__ */ __name((callback) => {
|
|
62
|
+
if (settled) return;
|
|
63
|
+
settled = true;
|
|
64
|
+
signal.removeEventListener("abort", onAbort);
|
|
65
|
+
callback();
|
|
66
|
+
}, "finish");
|
|
67
|
+
const onAbort = /* @__PURE__ */ __name(() => finish(() => reject(signal.reason)), "onAbort");
|
|
68
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
69
|
+
if (signal.aborted) {
|
|
70
|
+
onAbort();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
promise.then(
|
|
74
|
+
(value) => finish(() => resolve(value)),
|
|
75
|
+
(error) => finish(() => reject(error))
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
__name(waitForAbortable, "waitForAbortable");
|
|
80
|
+
function stripIpv6Brackets(hostname) {
|
|
81
|
+
return hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : hostname;
|
|
82
|
+
}
|
|
83
|
+
__name(stripIpv6Brackets, "stripIpv6Brackets");
|
|
84
|
+
function parseMappedIpv4(address) {
|
|
85
|
+
const suffix = address.toLowerCase().slice("::ffff:".length);
|
|
86
|
+
if (isIP(suffix) === 4) return suffix;
|
|
87
|
+
const parts = suffix.split(":");
|
|
88
|
+
if (parts.length !== 2 || parts.some((part) => !/^[\da-f]{1,4}$/.test(part))) {
|
|
89
|
+
return void 0;
|
|
90
|
+
}
|
|
91
|
+
const upper = Number.parseInt(parts[0], 16);
|
|
92
|
+
const lower = Number.parseInt(parts[1], 16);
|
|
93
|
+
return `${upper >> 8}.${upper & 255}.${lower >> 8}.${lower & 255}`;
|
|
94
|
+
}
|
|
95
|
+
__name(parseMappedIpv4, "parseMappedIpv4");
|
|
96
|
+
function isBlockedAddress(address, family) {
|
|
97
|
+
if (family === 6 && address.toLowerCase().startsWith("::ffff:")) {
|
|
98
|
+
const mapped = parseMappedIpv4(address);
|
|
99
|
+
return mapped === void 0 || isBlockedAddress(mapped, 4);
|
|
100
|
+
}
|
|
101
|
+
if (family === 6 && !publicIpv6Addresses.check(address, "ipv6")) return true;
|
|
102
|
+
return blockedAddresses.check(address, family === 6 ? "ipv6" : "ipv4");
|
|
103
|
+
}
|
|
104
|
+
__name(isBlockedAddress, "isBlockedAddress");
|
|
105
|
+
async function resolveNetworkTarget(value, policy, signal) {
|
|
106
|
+
signal?.throwIfAborted();
|
|
107
|
+
const url = value instanceof URL ? value : new URL(value);
|
|
108
|
+
if (policy !== "public") return { url };
|
|
109
|
+
if (url.protocol !== "https:") {
|
|
110
|
+
throw new Error("Public extension network requests must use HTTPS.");
|
|
111
|
+
}
|
|
112
|
+
if (url.username || url.password) {
|
|
113
|
+
throw new Error(
|
|
114
|
+
"Public extension network requests must not use credentials."
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
const hostname = stripIpv6Brackets(url.hostname);
|
|
118
|
+
const literalFamily = isIP(hostname);
|
|
119
|
+
const addresses = literalFamily ? [{ address: hostname, family: literalFamily }] : await waitForAbortable(
|
|
120
|
+
dns.lookup(hostname, { all: true, verbatim: true }),
|
|
121
|
+
signal
|
|
122
|
+
);
|
|
123
|
+
if (addresses.length === 0) {
|
|
124
|
+
throw new Error(`Extension network host did not resolve: ${hostname}`);
|
|
125
|
+
}
|
|
126
|
+
if (addresses.some(({ address, family }) => isBlockedAddress(address, family))) {
|
|
127
|
+
throw new Error(
|
|
128
|
+
`Extension network host resolved to a blocked address: ${hostname}`
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
const selected = addresses[0];
|
|
132
|
+
const lookup = /* @__PURE__ */ __name((requestedHostname, options, callback) => {
|
|
133
|
+
if (stripIpv6Brackets(requestedHostname) !== hostname) {
|
|
134
|
+
const error = new Error(
|
|
135
|
+
"Pinned extension lookup hostname mismatch"
|
|
136
|
+
);
|
|
137
|
+
error.code = "ENOTFOUND";
|
|
138
|
+
callback(error, "", 0);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (options.all) {
|
|
142
|
+
callback(null, [selected]);
|
|
143
|
+
} else {
|
|
144
|
+
callback(null, selected.address, selected.family);
|
|
145
|
+
}
|
|
146
|
+
}, "lookup");
|
|
147
|
+
const port = url.port || "443";
|
|
148
|
+
const curlHostname = literalFamily === 6 ? `[${hostname}]` : hostname;
|
|
149
|
+
const curlAddress = selected.family === 6 ? `[${selected.address}]` : selected.address;
|
|
150
|
+
return {
|
|
151
|
+
url,
|
|
152
|
+
lookup,
|
|
153
|
+
curlResolve: `${curlHostname}:${port}:${curlAddress}`
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
__name(resolveNetworkTarget, "resolveNetworkTarget");
|
|
157
|
+
|
|
158
|
+
// packages/core/src/services/image-generation-service.ts
|
|
159
|
+
var GENERATION_TIMEOUT_MS = 24e4;
|
|
160
|
+
var DOWNLOAD_TIMEOUT_MS = 12e4;
|
|
161
|
+
var MAX_API_RESPONSE_BYTES = 1024 * 1024;
|
|
162
|
+
var MAX_IMAGE_BYTES = 10 * 1024 * 1024;
|
|
163
|
+
var MAX_DOWNLOAD_REDIRECTS = 3;
|
|
164
|
+
var REDIRECT_STATUSES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
165
|
+
var PNG_SIGNATURE = Buffer.from([
|
|
166
|
+
137,
|
|
167
|
+
80,
|
|
168
|
+
78,
|
|
169
|
+
71,
|
|
170
|
+
13,
|
|
171
|
+
10,
|
|
172
|
+
26,
|
|
173
|
+
10
|
|
174
|
+
]);
|
|
175
|
+
var ResponseSizeLimitError = class extends Error {
|
|
176
|
+
static {
|
|
177
|
+
__name(this, "ResponseSizeLimitError");
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
function normalizeImageGenerationBaseUrl(value) {
|
|
181
|
+
const baseUrl = value?.trim();
|
|
182
|
+
if (!baseUrl) return void 0;
|
|
183
|
+
let parsed;
|
|
184
|
+
try {
|
|
185
|
+
parsed = new URL(baseUrl);
|
|
186
|
+
} catch {
|
|
187
|
+
return void 0;
|
|
188
|
+
}
|
|
189
|
+
if (parsed.protocol !== "https:" || parsed.username || parsed.password || parsed.search || parsed.hash) {
|
|
190
|
+
return void 0;
|
|
191
|
+
}
|
|
192
|
+
return parsed.toString().replace(/\/+$/, "");
|
|
193
|
+
}
|
|
194
|
+
__name(normalizeImageGenerationBaseUrl, "normalizeImageGenerationBaseUrl");
|
|
195
|
+
async function generateImage(request) {
|
|
196
|
+
const fetchFn = request.fetchFn ?? fetch;
|
|
197
|
+
const baseUrl = normalizeImageGenerationBaseUrl(request.baseUrl);
|
|
198
|
+
if (!baseUrl) {
|
|
199
|
+
throw new Error(
|
|
200
|
+
"Image generation baseUrl must be a valid HTTPS URL without credentials, query, or fragment."
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
const generationUrl = baseUrl.endsWith(
|
|
204
|
+
"/services/aigc/multimodal-generation/generation"
|
|
205
|
+
) ? baseUrl : `${baseUrl}/services/aigc/multimodal-generation/generation`;
|
|
206
|
+
const parameters = {
|
|
207
|
+
n: 1,
|
|
208
|
+
prompt_extend: true,
|
|
209
|
+
watermark: false
|
|
210
|
+
};
|
|
211
|
+
if (request.size) {
|
|
212
|
+
parameters["size"] = request.size;
|
|
213
|
+
}
|
|
214
|
+
let response;
|
|
215
|
+
try {
|
|
216
|
+
response = await fetchFn(generationUrl, {
|
|
217
|
+
method: "POST",
|
|
218
|
+
headers: {
|
|
219
|
+
Authorization: `Bearer ${request.apiKey}`,
|
|
220
|
+
"Content-Type": "application/json"
|
|
221
|
+
},
|
|
222
|
+
body: JSON.stringify({
|
|
223
|
+
model: request.model,
|
|
224
|
+
input: {
|
|
225
|
+
messages: [
|
|
226
|
+
{
|
|
227
|
+
role: "user",
|
|
228
|
+
content: [{ text: request.prompt }]
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
parameters
|
|
233
|
+
}),
|
|
234
|
+
redirect: "error",
|
|
235
|
+
signal: combineWithTimeout(request.signal, GENERATION_TIMEOUT_MS)
|
|
236
|
+
});
|
|
237
|
+
} catch (error) {
|
|
238
|
+
throw new Error(
|
|
239
|
+
`Image generation request failed: ${getErrorMessage(error)}`,
|
|
240
|
+
{ cause: error }
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
if (!response.ok) {
|
|
244
|
+
let payload2 = {};
|
|
245
|
+
try {
|
|
246
|
+
payload2 = await readJsonResponse(response, MAX_API_RESPONSE_BYTES);
|
|
247
|
+
} catch {
|
|
248
|
+
}
|
|
249
|
+
throw new Error(formatImageGenerationError(response.status, payload2));
|
|
250
|
+
}
|
|
251
|
+
const payload = await readJsonResponse(response, MAX_API_RESPONSE_BYTES);
|
|
252
|
+
const imageUrl = findGeneratedImageUrl(payload);
|
|
253
|
+
if (!imageUrl) {
|
|
254
|
+
throw new Error("Image generation response did not contain an image URL.");
|
|
255
|
+
}
|
|
256
|
+
const bytes = await downloadPng(imageUrl, fetchFn, request.signal);
|
|
257
|
+
const requestId = readString(payload, "request_id", "requestId");
|
|
258
|
+
return {
|
|
259
|
+
bytes,
|
|
260
|
+
mimeType: "image/png",
|
|
261
|
+
...requestId ? { requestId } : {}
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
__name(generateImage, "generateImage");
|
|
265
|
+
async function readJsonResponse(response, maxBytes) {
|
|
266
|
+
const bytes = await readBoundedBody(response, maxBytes);
|
|
267
|
+
if (bytes.length === 0) {
|
|
268
|
+
return {};
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
return JSON.parse(bytes.toString("utf8"));
|
|
272
|
+
} catch {
|
|
273
|
+
throw new Error(
|
|
274
|
+
`Image generation endpoint returned malformed JSON (HTTP ${response.status}).`
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
__name(readJsonResponse, "readJsonResponse");
|
|
279
|
+
async function readBoundedBody(response, maxBytes) {
|
|
280
|
+
const contentLength = Number(response.headers.get("content-length"));
|
|
281
|
+
if (Number.isFinite(contentLength) && contentLength > maxBytes) {
|
|
282
|
+
await response.body?.cancel().catch(() => {
|
|
283
|
+
});
|
|
284
|
+
throw new ResponseSizeLimitError(
|
|
285
|
+
`Response exceeds the ${maxBytes}-byte limit.`
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
if (!response.body) {
|
|
289
|
+
return Buffer.alloc(0);
|
|
290
|
+
}
|
|
291
|
+
const chunks = [];
|
|
292
|
+
let total = 0;
|
|
293
|
+
const reader = response.body.getReader();
|
|
294
|
+
try {
|
|
295
|
+
for (; ; ) {
|
|
296
|
+
const { done, value } = await reader.read();
|
|
297
|
+
if (done) break;
|
|
298
|
+
total += value.byteLength;
|
|
299
|
+
if (total > maxBytes) {
|
|
300
|
+
throw new ResponseSizeLimitError(
|
|
301
|
+
`Response exceeds the ${maxBytes}-byte limit.`
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
chunks.push(value);
|
|
305
|
+
}
|
|
306
|
+
} finally {
|
|
307
|
+
await reader.cancel().catch(() => {
|
|
308
|
+
});
|
|
309
|
+
reader.releaseLock();
|
|
310
|
+
}
|
|
311
|
+
return Buffer.concat(chunks, total);
|
|
312
|
+
}
|
|
313
|
+
__name(readBoundedBody, "readBoundedBody");
|
|
314
|
+
function formatImageGenerationError(status, payload) {
|
|
315
|
+
const code = readString(payload, "code");
|
|
316
|
+
const message = readString(payload, "message");
|
|
317
|
+
const suffix = [code, message].filter(Boolean).join(": ");
|
|
318
|
+
if (status === 429 || /throttl|rate.?limit/i.test(`${code} ${message}`)) {
|
|
319
|
+
return `Image generation rate limit reached${suffix ? ` (${suffix})` : ""}.`;
|
|
320
|
+
}
|
|
321
|
+
if (status === 401 || status === 403 || /access|permission/i.test(code ?? "")) {
|
|
322
|
+
return `Image generation access denied${suffix ? ` (${suffix})` : ""}. Check the API key, endpoint, and model access.`;
|
|
323
|
+
}
|
|
324
|
+
if (/DataInspectionFailed/i.test(code ?? "")) {
|
|
325
|
+
return `The image generation endpoint blocked the prompt during content moderation${message ? `: ${message}` : "."}`;
|
|
326
|
+
}
|
|
327
|
+
return `Image generation failed with HTTP ${status}${suffix ? ` (${suffix})` : ""}.`;
|
|
328
|
+
}
|
|
329
|
+
__name(formatImageGenerationError, "formatImageGenerationError");
|
|
330
|
+
function findGeneratedImageUrl(payload) {
|
|
331
|
+
if (!isRecord(payload)) return void 0;
|
|
332
|
+
const output = payload["output"];
|
|
333
|
+
if (!isRecord(output) || !Array.isArray(output["choices"])) return void 0;
|
|
334
|
+
for (const choice of output["choices"]) {
|
|
335
|
+
if (!isRecord(choice)) continue;
|
|
336
|
+
const message = choice["message"];
|
|
337
|
+
if (!isRecord(message) || !Array.isArray(message["content"])) continue;
|
|
338
|
+
for (const part of message["content"]) {
|
|
339
|
+
if (!isRecord(part)) continue;
|
|
340
|
+
const image = part["image"];
|
|
341
|
+
if (typeof image === "string" && image.trim()) {
|
|
342
|
+
return image.trim();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return void 0;
|
|
347
|
+
}
|
|
348
|
+
__name(findGeneratedImageUrl, "findGeneratedImageUrl");
|
|
349
|
+
async function downloadPng(imageUrl, fetchFn, signal) {
|
|
350
|
+
const combinedSignal = combineWithTimeout(signal, DOWNLOAD_TIMEOUT_MS);
|
|
351
|
+
let currentTarget = await validateResultUrl(imageUrl, combinedSignal);
|
|
352
|
+
for (let redirectCount = 0; redirectCount <= MAX_DOWNLOAD_REDIRECTS; redirectCount++) {
|
|
353
|
+
let dispatcher;
|
|
354
|
+
if (currentTarget.lookup) {
|
|
355
|
+
const undici = await loadUndici();
|
|
356
|
+
const { Agent } = undici;
|
|
357
|
+
dispatcher = new Agent({ connect: { lookup: currentTarget.lookup } });
|
|
358
|
+
}
|
|
359
|
+
let response;
|
|
360
|
+
try {
|
|
361
|
+
response = await fetchFn(currentTarget.url.toString(), {
|
|
362
|
+
method: "GET",
|
|
363
|
+
headers: { Accept: "image/png" },
|
|
364
|
+
redirect: "manual",
|
|
365
|
+
signal: combinedSignal,
|
|
366
|
+
...dispatcher ? { dispatcher } : {}
|
|
367
|
+
});
|
|
368
|
+
} catch (error) {
|
|
369
|
+
await dispatcher?.close();
|
|
370
|
+
throw new Error("Generated image download failed before completion.", {
|
|
371
|
+
cause: error
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
try {
|
|
375
|
+
if (REDIRECT_STATUSES.has(response.status)) {
|
|
376
|
+
const location = response.headers.get("location");
|
|
377
|
+
await response.body?.cancel().catch(() => {
|
|
378
|
+
});
|
|
379
|
+
if (!location) {
|
|
380
|
+
throw new Error(
|
|
381
|
+
"Generated image redirect is missing a Location header."
|
|
382
|
+
);
|
|
383
|
+
}
|
|
384
|
+
let redirectUrl;
|
|
385
|
+
try {
|
|
386
|
+
redirectUrl = new URL(
|
|
387
|
+
location,
|
|
388
|
+
currentTarget.url.toString()
|
|
389
|
+
).toString();
|
|
390
|
+
} catch {
|
|
391
|
+
throw new Error("Generated image redirect URL is invalid.");
|
|
392
|
+
}
|
|
393
|
+
currentTarget = await validateResultUrl(redirectUrl, combinedSignal);
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
if (!response.ok) {
|
|
397
|
+
await response.body?.cancel().catch(() => {
|
|
398
|
+
});
|
|
399
|
+
throw new Error(
|
|
400
|
+
`Generated image download failed with HTTP ${response.status}.`
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
let bytes;
|
|
404
|
+
try {
|
|
405
|
+
bytes = await readBoundedBody(response, MAX_IMAGE_BYTES);
|
|
406
|
+
} catch (error) {
|
|
407
|
+
if (error instanceof ResponseSizeLimitError) {
|
|
408
|
+
throw error;
|
|
409
|
+
}
|
|
410
|
+
throw new Error("Generated image download failed before completion.", {
|
|
411
|
+
cause: error
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
if (bytes.length < PNG_SIGNATURE.length || !bytes.subarray(0, PNG_SIGNATURE.length).equals(PNG_SIGNATURE)) {
|
|
415
|
+
throw new Error("Downloaded result is not a valid PNG image.");
|
|
416
|
+
}
|
|
417
|
+
return bytes;
|
|
418
|
+
} finally {
|
|
419
|
+
await dispatcher?.close();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
throw new Error(
|
|
423
|
+
`Generated image download exceeded ${MAX_DOWNLOAD_REDIRECTS} redirects.`
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
__name(downloadPng, "downloadPng");
|
|
427
|
+
async function validateResultUrl(value, signal) {
|
|
428
|
+
let parsed;
|
|
429
|
+
try {
|
|
430
|
+
parsed = new URL(value);
|
|
431
|
+
} catch {
|
|
432
|
+
throw new Error("Image generation returned an invalid image URL.");
|
|
433
|
+
}
|
|
434
|
+
if (parsed.protocol !== "https:" || parsed.username || parsed.password || isPrivateHost(parsed.toString())) {
|
|
435
|
+
throw new Error(
|
|
436
|
+
"Image generation returned an image URL that is not a safe public HTTPS URL."
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
try {
|
|
440
|
+
return await resolveNetworkTarget(parsed, "public", signal);
|
|
441
|
+
} catch (error) {
|
|
442
|
+
signal.throwIfAborted();
|
|
443
|
+
throw new Error(
|
|
444
|
+
"Image generation returned an image URL that is not a safe public HTTPS URL.",
|
|
445
|
+
{ cause: error }
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
__name(validateResultUrl, "validateResultUrl");
|
|
450
|
+
function combineWithTimeout(signal, timeoutMs) {
|
|
451
|
+
return AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
|
|
452
|
+
}
|
|
453
|
+
__name(combineWithTimeout, "combineWithTimeout");
|
|
454
|
+
function readString(value, ...keys) {
|
|
455
|
+
if (!isRecord(value)) return void 0;
|
|
456
|
+
for (const key of keys) {
|
|
457
|
+
const candidate = value[key];
|
|
458
|
+
if (typeof candidate === "string" && candidate.trim()) {
|
|
459
|
+
return candidate.trim();
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return void 0;
|
|
463
|
+
}
|
|
464
|
+
__name(readString, "readString");
|
|
465
|
+
function isRecord(value) {
|
|
466
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
467
|
+
}
|
|
468
|
+
__name(isRecord, "isRecord");
|
|
469
|
+
|
|
470
|
+
export {
|
|
471
|
+
resolveNetworkTarget,
|
|
472
|
+
normalizeImageGenerationBaseUrl,
|
|
473
|
+
generateImage
|
|
474
|
+
};
|
|
475
|
+
/**
|
|
476
|
+
* @license
|
|
477
|
+
* Copyright 2025 Qwen Team
|
|
478
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
479
|
+
*/
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
formatHistoryGapNotice
|
|
5
|
-
} from "./chunk-LNDD3IML.js";
|
|
6
3
|
import {
|
|
7
4
|
sanitizeTerminalText
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IPUUTYMV.js";
|
|
6
|
+
import {
|
|
7
|
+
formatHistoryGapNotice
|
|
8
|
+
} from "./chunk-WCXCRJYB.js";
|
|
9
9
|
import {
|
|
10
10
|
isGoalStatusKind,
|
|
11
11
|
isTerminalGoalStatusKind
|
|
@@ -23,18 +23,18 @@ import {
|
|
|
23
23
|
setGoalTerminalObserver,
|
|
24
24
|
setLastGoalTerminal,
|
|
25
25
|
unregisterGoalHook
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-PHOF65IG.js";
|
|
27
27
|
import {
|
|
28
28
|
apiActivityTracker,
|
|
29
29
|
formatVisionBridgeNoticeDisplay,
|
|
30
30
|
isVisionBridgeNoticeDisplay
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-CIKQ7KKO.js";
|
|
32
32
|
import {
|
|
33
33
|
ToolNames
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-PR75REBZ.js";
|
|
35
35
|
import {
|
|
36
36
|
createDebugLogger
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-NL7LTRLR.js";
|
|
38
38
|
import {
|
|
39
39
|
init_esbuild_shims
|
|
40
40
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -677,9 +677,6 @@ async function realpathOrResolve(input) {
|
|
|
677
677
|
}
|
|
678
678
|
__name(realpathOrResolve, "realpathOrResolve");
|
|
679
679
|
|
|
680
|
-
// packages/cli/src/acp-integration/session/emitters/MessageEmitter.ts
|
|
681
|
-
init_esbuild_shims();
|
|
682
|
-
|
|
683
680
|
// packages/acp-bridge/src/transcript-replay.ts
|
|
684
681
|
init_esbuild_shims();
|
|
685
682
|
var MISSING_TRANSCRIPT_TOOL_RESULT_MESSAGE = "Tool result missing from saved history; the previous run likely ended before this tool completed.";
|
|
@@ -1535,6 +1532,9 @@ function dedupeStrings(values) {
|
|
|
1535
1532
|
}
|
|
1536
1533
|
__name(dedupeStrings, "dedupeStrings");
|
|
1537
1534
|
|
|
1535
|
+
// packages/cli/src/acp-integration/session/emitters/MessageEmitter.ts
|
|
1536
|
+
init_esbuild_shims();
|
|
1537
|
+
|
|
1538
1538
|
// packages/cli/src/acp-integration/session/emitters/base-emitter.ts
|
|
1539
1539
|
init_esbuild_shims();
|
|
1540
1540
|
var BaseEmitter = class {
|
|
@@ -2496,7 +2496,7 @@ async function extractMetadata(conversation, config) {
|
|
|
2496
2496
|
const gitBranch = firstRecord?.gitBranch;
|
|
2497
2497
|
let gitRepo;
|
|
2498
2498
|
if (cwd) {
|
|
2499
|
-
const { getGitRepoName } = await import("./src-
|
|
2499
|
+
const { getGitRepoName } = await import("./src-GE4TTTML.js");
|
|
2500
2500
|
gitRepo = getGitRepoName(cwd);
|
|
2501
2501
|
}
|
|
2502
2502
|
let model;
|
|
@@ -3351,6 +3351,7 @@ export {
|
|
|
3351
3351
|
GITHUB_WORKFLOW_PATHS,
|
|
3352
3352
|
SetupGithubError,
|
|
3353
3353
|
setupGithub,
|
|
3354
|
+
createTranscriptMessageUpdate,
|
|
3354
3355
|
MessageEmitter,
|
|
3355
3356
|
PlanEmitter,
|
|
3356
3357
|
ToolCallEmitter,
|