@qwen-code/qwen-code 0.19.9 → 0.19.10
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 +7 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
- package/bundled/qc-helper/docs/features/code-review.md +88 -44
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/hooks.md +29 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +46 -20
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/DESIGN.md +219 -33
- package/bundled/review/SKILL.md +449 -153
- package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-67ODZ4SZ.js} +31 -31
- package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-SIPBQT5Z.js} +51 -49
- package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-VPZJXLFX.js} +528 -478
- package/chunks/{agent-HOLHB3RT.js → agent-Z7NWL6XL.js} +26 -26
- package/chunks/{agent-headless-SXL6H56A.js → agent-headless-73HZ6ROQ.js} +26 -26
- package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
- package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-BWZZJ42H.js} +2 -2
- package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-WU3S5A5T.js} +2 -2
- package/chunks/{bridge-BCJQ7BBB.js → bridge-XFKW6S7Q.js} +32 -32
- package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
- package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
- package/chunks/channel-worker-manager-5RWKSGEU.js +418 -0
- package/chunks/channel-worker-supervisor-PCDAZN4D.js +20 -0
- package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
- package/chunks/{chunk-B5ORX3FG.js → chunk-2UUAIFQO.js} +1 -1
- package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
- package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
- package/chunks/chunk-3MX7D6QN.js +516 -0
- package/chunks/{chunk-E2IY465S.js → chunk-3XJFUTNM.js} +10 -10
- package/chunks/{chunk-JZETEN3Z.js → chunk-422XAKCK.js} +3 -3
- package/chunks/{chunk-N3EMS75V.js → chunk-4FMG7EDJ.js} +1268 -1233
- package/chunks/{chunk-HKMAENAO.js → chunk-4YWLED2A.js} +8 -6
- package/chunks/{chunk-SCGXUJBT.js → chunk-5EBKKSBX.js} +3 -3
- package/chunks/chunk-5HBA2Z7V.js +28 -0
- package/chunks/{chunk-XYQSMABS.js → chunk-5LROA5W4.js} +4 -4
- package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
- package/chunks/{chunk-VA4KQY6V.js → chunk-65N2J6V2.js} +3 -3
- package/chunks/{chunk-4C5BQ2D2.js → chunk-6GETGQWP.js} +71 -12
- package/chunks/{chunk-PVZM22CK.js → chunk-6GKMJPOC.js} +5 -5
- package/chunks/{chunk-W2UIXQDL.js → chunk-6OATMEYN.js} +1 -1
- package/chunks/{chunk-GZRTYZ2R.js → chunk-6W6DI34P.js} +154 -1
- package/chunks/{chunk-EMDMPBJ4.js → chunk-7L4XBYVW.js} +3 -3
- package/chunks/{chunk-EAXLGSFP.js → chunk-7MJAZMXK.js} +8 -8
- package/chunks/{chunk-K434OPES.js → chunk-7NAWTFVY.js} +3 -3
- package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
- package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
- package/chunks/{chunk-P67PFTUT.js → chunk-AAR5SGMD.js} +4 -4
- package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
- package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
- package/chunks/{chunk-D2GFWEXB.js → chunk-B5I2IIWY.js} +6 -6
- package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
- package/chunks/{chunk-CUMMSHH6.js → chunk-BBNVFRGD.js} +1 -1
- package/chunks/{chunk-5HOMWMCL.js → chunk-CEW4HDPK.js} +4166 -1338
- package/chunks/chunk-CJFNEBYB.js +91 -0
- package/chunks/{chunk-VWPVHAMO.js → chunk-CUUXANEQ.js} +5 -1
- package/chunks/{chunk-GWLSNBG4.js → chunk-DK33QJ3V.js} +30 -26
- package/chunks/{chunk-HPDUL5MF.js → chunk-DPFBNG72.js} +1 -1
- package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
- package/chunks/{chunk-MC23XKFE.js → chunk-E67NFMF4.js} +3 -3
- package/chunks/{chunk-OQ4DRIOA.js → chunk-EQY6POVO.js} +2 -2
- package/chunks/{chunk-XUOOWUZS.js → chunk-F7NXQH4Y.js} +1 -1
- package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
- package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
- package/chunks/{chunk-PDZ7MBDG.js → chunk-FXMC7SL2.js} +27 -6
- package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
- package/chunks/{chunk-34MW4KTI.js → chunk-GGJII3FM.js} +2 -2
- package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-HVY356M2.js → chunk-H3FQOPPS.js} +3 -3
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-WQUQVGTF.js → chunk-HHEFI4RP.js} +183 -96
- package/chunks/chunk-IDS7MSUP.js +74 -0
- package/chunks/{chunk-6PESIEKJ.js → chunk-JSJFKYWT.js} +68 -6
- package/chunks/{chunk-CNEIYWSA.js → chunk-K4PZ5F5T.js} +5 -5
- package/chunks/{chunk-NVYTCB5Z.js → chunk-K7CRWKOE.js} +14534 -13980
- package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
- package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
- package/chunks/chunk-L37RC7MQ.js +493 -0
- package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
- package/chunks/{chunk-3G7CIHVV.js → chunk-L62SEJWY.js} +4 -4
- package/chunks/{chunk-EGYZ275M.js → chunk-LNUXFLLJ.js} +4 -4
- package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
- package/chunks/{chunk-VTU57BWZ.js → chunk-LQU7EVFA.js} +1 -1
- package/chunks/{chunk-B4G2WOFA.js → chunk-LTNI523B.js} +2 -2
- package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
- package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
- package/chunks/chunk-MR3PXB6E.js +48 -0
- package/chunks/{chunk-5VXNZWGF.js → chunk-N6FXRR6P.js} +1 -1
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-TO6QE22P.js → chunk-OATTJGPJ.js} +26 -22
- package/chunks/{chunk-X6TJ3YZV.js → chunk-OFEVHGVU.js} +159 -57
- package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
- package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
- package/chunks/{chunk-3VAGG5T5.js → chunk-P6LART6G.js} +116 -15
- package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
- package/chunks/{chunk-BAPGSC7U.js → chunk-Q5GLXH5Q.js} +23 -9
- package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
- package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
- package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
- package/chunks/{chunk-YAUFFXDS.js → chunk-RDRVMDWV.js} +12 -11
- package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
- package/chunks/{chunk-U2NNEY4R.js → chunk-SPUYQB4T.js} +1 -1
- package/chunks/{chunk-34Z3U5RQ.js → chunk-SXU3KKNI.js} +514 -114
- package/chunks/{chunk-ECNYL4AA.js → chunk-TISZXPAX.js} +1 -1
- package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
- package/chunks/{chunk-AKIVHSJR.js → chunk-TTUO4DNG.js} +111 -93
- package/chunks/chunk-TV6K2FB4.js +224 -0
- package/chunks/{chunk-4GORAUCN.js → chunk-TXY2C3D2.js} +1 -1
- package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
- package/chunks/{chunk-CLFKOZEK.js → chunk-UFOKA4PR.js} +1 -1
- package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-URU5UEK6.js} +67 -35
- package/chunks/{chunk-D5SKC4YG.js → chunk-V7EQTZYR.js} +41 -13
- package/chunks/{chunk-L6P4KPHR.js → chunk-VBRRNQB7.js} +59 -39
- package/chunks/{chunk-BMGVRZN4.js → chunk-W34A5MJH.js} +1 -1
- package/chunks/{chunk-PODM4SZ4.js → chunk-WDW64OW3.js} +5 -5
- package/chunks/{chunk-W3JHSWRP.js → chunk-WDWJ4OQJ.js} +4 -4
- package/chunks/{chunk-Q4YQW46J.js → chunk-WIASPMLX.js} +31 -17
- package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
- package/chunks/{chunk-A3XKDTSH.js → chunk-WLXYAKV7.js} +4 -4
- package/chunks/{chunk-Q6I5QHMH.js → chunk-WTSXKLG5.js} +1 -1
- package/chunks/{chunk-J3JA76CF.js → chunk-WX6SD4IQ.js} +1 -1
- package/chunks/{chunk-77XJ3SWN.js → chunk-X362TMXZ.js} +5 -5
- package/chunks/{chunk-CCDMCZPP.js → chunk-XLIRF7IK.js} +1 -1
- package/chunks/{chunk-AURZZYMD.js → chunk-XXJKGHZV.js} +4 -4
- package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
- package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
- package/chunks/{chunk-3AHXV67U.js → chunk-YU56QGXX.js} +1 -1
- package/chunks/{chunk-5U27BZ72.js → chunk-YX4LLZ3D.js} +187 -75
- package/chunks/{chunk-ATAKVRIF.js → chunk-YYPXHMWO.js} +7 -7
- package/chunks/{chunk-XLA62MYB.js → chunk-ZKMGAFYV.js} +2 -2
- package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
- package/chunks/{chunk-7PU4FYLG.js → chunk-ZQTZXVHP.js} +4 -4
- package/chunks/chunk-ZRKBI3DP.js +34 -0
- package/chunks/{computer-use-HM37RX6A.js → computer-use-IYTX45WA.js} +26 -26
- package/chunks/{config-utils-NV2SVGPB.js → config-utils-CFT33LTP.js} +3 -2
- package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-272V77WU.js} +28 -28
- package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-CBJMQLYP.js} +26 -26
- package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-WNX2OQVX.js} +2 -2
- package/chunks/{cron-create-AMBKGZX6.js → cron-create-36TIFKRT.js} +4 -4
- package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-OQD3WULU.js} +4 -4
- package/chunks/{cron-list-WVP2JXER.js → cron-list-4533T2FH.js} +4 -4
- package/chunks/{daemon-ARHTSTXP.js → daemon-RNGFPMAB.js} +575 -58
- package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-L4STG5VO.js} +36 -36
- package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
- package/chunks/{dist-VHV4EVHG.js → dist-3V3ZV6ML.js} +1 -1
- package/chunks/{dist-XKU3ABM5.js → dist-ERCPDVA6.js} +1 -1
- package/chunks/{dist-PNVLTKTL.js → dist-HNN7DR2L.js} +158 -4
- package/chunks/{dist-WKPOYU7O.js → dist-JZE7F6YR.js} +1 -1
- package/chunks/{dist-QYCAEZIT.js → dist-MOEC47TR.js} +5 -1
- package/chunks/{dist-R7LN5AZE.js → dist-PHEPJLXD.js} +2 -2
- package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-EN4BRREQ.js} +27 -27
- package/chunks/{edit-VNI4NJ73.js → edit-OMAF2QDR.js} +27 -27
- package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
- package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-BBZX52HG.js} +26 -26
- package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-5NNFMBUY.js} +42 -27
- package/chunks/{environment-5HSSRMJ7.js → environment-7TEWMJYN.js} +30 -29
- package/chunks/{errors-HMFCJJ7P.js → errors-I4VKVX3F.js} +28 -28
- package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-FUWRJI33.js} +26 -26
- package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-IHCJ5EEI.js} +26 -26
- package/chunks/{fast-path-FRDMDVHG.js → fast-path-ZA57TOH4.js} +3 -3
- package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
- package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
- package/chunks/{gemini-QYSEGHAX.js → gemini-UOAKVXBG.js} +139 -76
- package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-G6UCE6MW.js} +4 -4
- package/chunks/{glob-BRCSGFOT.js → glob-4GJQ2UFF.js} +28 -27
- package/chunks/{grep-EE2DUOSY.js → grep-5QSYXF2E.js} +26 -26
- package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-ULHNWL6R.js} +30 -30
- package/chunks/{i18n-BASPENNQ.js → i18n-CYDUTF6F.js} +27 -27
- package/chunks/initializer-NRFKUGIO.js +73 -0
- package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-WELKRHHE.js} +27 -27
- package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
- package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
- package/chunks/list-JVDXEG2E.js +76 -0
- package/chunks/loadedSettingsAdapter-WAM4VUTG.js +70 -0
- package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-MVUKDVCP.js} +5 -5
- package/chunks/{ls-ZB2BDP6T.js → ls-RXNIAQDE.js} +4 -4
- package/chunks/{lsp-V5DN4YUJ.js → lsp-HB5LM5IL.js} +2 -2
- package/chunks/mcp-YHOZN3ZM.js +70 -0
- package/chunks/{monitor-X5Z3H4FY.js → monitor-R7XZPJHQ.js} +26 -26
- package/chunks/nonInteractiveCli-NSOB6D74.js +129 -0
- package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-6RNKE2L2.js} +27 -27
- package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-XNS5S64I.js} +12 -12
- package/chunks/{pidfile-D4I4FTVA.js → pidfile-XE4RRR2P.js} +27 -27
- package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
- package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-APDPJ3VN.js} +28 -28
- package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
- package/chunks/{read-file-7SZSIZOL.js → read-file-XSUWXSR7.js} +8 -8
- package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-6LRTZKXI.js} +2 -2
- package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-PMDTY4OS.js} +2 -2
- package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-APB3CDMU.js} +26 -26
- package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
- package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-NWTGPERT.js} +1232 -371
- package/chunks/{runtime-57WWRVHN.js → runtime-EIO3NQKR.js} +42 -37
- package/chunks/{scheduler-YBLGWSIL.js → scheduler-JJDZBDRN.js} +26 -26
- package/chunks/{send-message-F36YD6KQ.js → send-message-SR4WSXP2.js} +3 -3
- package/chunks/{serve-R63NK3CV.js → serve-WTIPB3EI.js} +36 -34
- package/chunks/{server-Z22GCAXP.js → server-NJPHQHLH.js} +5238 -1328
- package/chunks/{session-HKAAI7BN.js → session-O4AO7FTS.js} +298 -98
- package/chunks/{settings-3EYN66GK.js → settings-HQNDK7TG.js} +34 -32
- package/chunks/{shell-6YXINTWJ.js → shell-UIXM6PWG.js} +26 -26
- package/chunks/{skill-OO57P4X6.js → skill-3XMB4ULV.js} +10 -10
- package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-3R632QRM.js} +28 -28
- package/chunks/{src-G5UPLZSZ.js → src-USZKPUOC.js} +85 -27
- package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-L5XW3D7K.js} +28 -28
- package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-CPZOL2WB.js} +730 -397
- package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-YKFNUQZD.js} +3 -3
- package/chunks/{task-create-FRGOEIKY.js → task-create-NUFOHU53.js} +8 -7
- package/chunks/{task-list-OW766BXZ.js → task-list-Z2IKQY3S.js} +6 -5
- package/chunks/{task-stop-SIR5SNBN.js → task-stop-KQFIVQTJ.js} +2 -2
- package/chunks/{task-update-YRA532MT.js → task-update-HKADXSTD.js} +8 -7
- package/chunks/{team-create-PECAAPXK.js → team-create-XXPRF3IQ.js} +26 -26
- package/chunks/{team-delete-6OSECUZC.js → team-delete-SDNTGZLG.js} +6 -5
- package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-EOTTKHDW.js} +26 -26
- package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-P6UITO2L.js} +27 -27
- package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-YNXB27GB.js} +4 -4
- package/chunks/{tool-search-THVIWAPB.js → tool-search-DDNGK2LR.js} +9 -9
- package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-PL5N7DNY.js} +33 -33
- package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
- package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-C5LMF3UR.js} +29 -28
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-QTVVISH7.js} +29 -29
- package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-RY4RKBQG.js} +75 -71
- package/chunks/{version-3UEA6ZIR.js → version-U45RYOSD.js} +1 -1
- package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-ZSPR3PRR.js} +5 -5
- package/chunks/{workflow-QCCCMYP3.js → workflow-TCIAQYOA.js} +27 -27
- package/chunks/workspace-providers-status-I3G2HYLY.js +73 -0
- package/chunks/workspace-registration-store-IH5GLZ6Y.js +27 -0
- package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-QEKBELIX.js} +33 -33
- package/chunks/workspace-service-ORKHGLP3.js +86 -0
- package/chunks/workspace-skills-status-D7QCNDYY.js +72 -0
- package/chunks/{write-file-I3MUDRIE.js → write-file-JGRQR5VM.js} +27 -27
- package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
- package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
- package/cli.js +11 -11
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +8 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +7 -1
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +9 -1
- package/locales/zh.js +9 -1
- package/package.json +3 -3
- package/web-shell/assets/{arc-C15hqnJe.js → arc-CUeDlxvE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
- package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +3 -3
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
- package/web-shell/assets/index-Cnvv4VcI.css +5 -0
- package/web-shell/assets/index-D1Uyklxa.js +1088 -0
- package/web-shell/assets/index-DzHwQkQq.js +3 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
- package/web-shell/assets/{linear-C8wKCbIC.js → linear-atZRE_L2.js} +1 -1
- package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-KKudX-JC.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/initializer-UTQ7FB7G.js +0 -71
- package/chunks/list-DEICDL65.js +0 -74
- package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
- package/chunks/mcp-L5JXEEIA.js +0 -68
- package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
- package/chunks/types-JNKGKUJT.js +0 -12
- package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
- package/chunks/workspace-service-RVLBMSMZ.js +0 -80
- package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
- package/web-shell/assets/channel-CLiQD50f.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
- package/web-shell/assets/index-D5IWFVk1.css +0 -5
- package/web-shell/assets/index-KFJRDhX7.js +0 -783
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
|
@@ -2,28 +2,33 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
CHANNEL_DAEMON_WORKER_SENTINEL,
|
|
5
|
-
CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
|
|
6
5
|
CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
|
|
7
|
-
ChannelWebhookEnqueueError,
|
|
8
6
|
QWEN_DAEMON_TOKEN_ENV,
|
|
9
7
|
QWEN_DAEMON_URL_ENV,
|
|
10
8
|
QWEN_DAEMON_WORKSPACE_ENV,
|
|
11
|
-
QWEN_SERVER_TOKEN_ENV
|
|
12
|
-
|
|
13
|
-
isChannelWebhookEnqueueErrorCode,
|
|
14
|
-
isChannelWebhookTaskResultMessage
|
|
15
|
-
} from "./chunk-X4NKFGFJ.js";
|
|
9
|
+
QWEN_SERVER_TOKEN_ENV
|
|
10
|
+
} from "./chunk-GYTKQYDB.js";
|
|
16
11
|
import {
|
|
17
12
|
channelSelectionNames
|
|
18
13
|
} from "./chunk-TJTKSVIV.js";
|
|
19
14
|
import {
|
|
20
15
|
redactLogCredentials
|
|
21
16
|
} from "./chunk-M5GB774H.js";
|
|
17
|
+
import {
|
|
18
|
+
CHANNEL_WORKER_KILL_GRACE_MS,
|
|
19
|
+
CHANNEL_WORKER_STARTUP_TIMEOUT_MS,
|
|
20
|
+
CHANNEL_WORKER_STOP_GRACE_MS
|
|
21
|
+
} from "./chunk-5HBA2Z7V.js";
|
|
22
|
+
import {
|
|
23
|
+
CHANNEL_WEBHOOK_TASK_IPC_TIMEOUT_MS,
|
|
24
|
+
ChannelWebhookEnqueueError,
|
|
25
|
+
createChannelWebhookTaskMessage,
|
|
26
|
+
isChannelWebhookEnqueueErrorCode,
|
|
27
|
+
isChannelWebhookTaskResultMessage
|
|
28
|
+
} from "./chunk-OJAMDVF5.js";
|
|
22
29
|
import {
|
|
23
30
|
sanitizeLogText
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-UDXSXLER.js";
|
|
26
|
-
import "./chunk-H6XPXXMH.js";
|
|
31
|
+
} from "./chunk-SXU3KKNI.js";
|
|
27
32
|
import {
|
|
28
33
|
init_esbuild_shims
|
|
29
34
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -35,9 +40,7 @@ import {
|
|
|
35
40
|
init_esbuild_shims();
|
|
36
41
|
import { fork } from "node:child_process";
|
|
37
42
|
import { randomUUID } from "node:crypto";
|
|
38
|
-
var DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS = 3e4;
|
|
39
43
|
var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
|
|
40
|
-
var CHANNEL_WORKER_STOP_GRACE_MS = 1e4;
|
|
41
44
|
var MAX_WORKER_LOG_LINE_LENGTH = 4096;
|
|
42
45
|
var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
|
|
43
46
|
var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
|
|
@@ -47,6 +50,15 @@ var ANSI_CSI_SEQUENCE_RE = new RegExp(
|
|
|
47
50
|
);
|
|
48
51
|
var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
|
|
49
52
|
var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
|
|
53
|
+
var ChannelWorkerStopError = class extends Error {
|
|
54
|
+
static {
|
|
55
|
+
__name(this, "ChannelWorkerStopError");
|
|
56
|
+
}
|
|
57
|
+
constructor(message = "Channel worker did not exit after SIGKILL.") {
|
|
58
|
+
super(message);
|
|
59
|
+
this.name = "ChannelWorkerStopError";
|
|
60
|
+
}
|
|
61
|
+
};
|
|
50
62
|
var DEFAULT_RESTART_POLICY = {
|
|
51
63
|
maxRestarts: 3,
|
|
52
64
|
windowMs: 5 * 6e4,
|
|
@@ -118,15 +130,17 @@ __name(notifyLog, "notifyLog");
|
|
|
118
130
|
function waitForExit(child, timeoutMs) {
|
|
119
131
|
return new Promise((resolve) => {
|
|
120
132
|
let settled = false;
|
|
133
|
+
const onExit = /* @__PURE__ */ __name(() => done(true), "onExit");
|
|
121
134
|
const done = /* @__PURE__ */ __name((exited) => {
|
|
122
135
|
if (settled) return;
|
|
123
136
|
settled = true;
|
|
124
|
-
|
|
137
|
+
clearTimeout(timer);
|
|
138
|
+
child.removeListener("exit", onExit);
|
|
125
139
|
resolve(exited);
|
|
126
140
|
}, "done");
|
|
127
141
|
const timer = setTimeout(() => done(false), timeoutMs);
|
|
128
142
|
timer.unref();
|
|
129
|
-
child.once("exit",
|
|
143
|
+
child.once("exit", onExit);
|
|
130
144
|
});
|
|
131
145
|
}
|
|
132
146
|
__name(waitForExit, "waitForExit");
|
|
@@ -135,7 +149,7 @@ function hasObservedExit(snapshot) {
|
|
|
135
149
|
}
|
|
136
150
|
__name(hasObservedExit, "hasObservedExit");
|
|
137
151
|
function createWorkerEnv(opts) {
|
|
138
|
-
const env = { ...process.env };
|
|
152
|
+
const env = { ...opts.baseEnv ?? process.env };
|
|
139
153
|
env["QWEN_CODE_NO_RELAUNCH"] = "true";
|
|
140
154
|
env[CHANNEL_DAEMON_WORKER_SENTINEL] = randomUUID();
|
|
141
155
|
env[QWEN_DAEMON_URL_ENV] = opts.daemonUrl;
|
|
@@ -428,7 +442,8 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
428
442
|
const env = createWorkerEnv({
|
|
429
443
|
daemonUrl: opts.daemonUrl,
|
|
430
444
|
workspace: opts.workspace,
|
|
431
|
-
...opts.daemonToken ? { daemonToken: opts.daemonToken } : {}
|
|
445
|
+
...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
|
|
446
|
+
...opts.workerBaseEnv ? { baseEnv: opts.workerBaseEnv } : {}
|
|
432
447
|
});
|
|
433
448
|
const redaction = workerLogRedactionOptions(opts.daemonToken, env);
|
|
434
449
|
const requestedChannels = requestedChannelNames(opts.selection);
|
|
@@ -507,18 +522,27 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
507
522
|
cleanupLaunch();
|
|
508
523
|
if (terminatingBeforeReady) return;
|
|
509
524
|
terminatingBeforeReady = true;
|
|
510
|
-
const exited = waitForExit(startedChild,
|
|
525
|
+
const exited = waitForExit(startedChild, CHANNEL_WORKER_KILL_GRACE_MS);
|
|
511
526
|
startedChild.kill("SIGTERM");
|
|
512
527
|
void exited.then(async (didExit) => {
|
|
513
528
|
if (!didExit && child === startedChild && !exitObserved) {
|
|
514
|
-
const killed = waitForExit(
|
|
529
|
+
const killed = waitForExit(
|
|
530
|
+
startedChild,
|
|
531
|
+
CHANNEL_WORKER_KILL_GRACE_MS
|
|
532
|
+
);
|
|
515
533
|
startedChild.kill("SIGKILL");
|
|
516
534
|
if (!await killed && child === startedChild && !exitObserved) {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
}
|
|
535
|
+
stopping = true;
|
|
536
|
+
notifyLog(opts.onLog, {
|
|
537
|
+
stream: "stderr",
|
|
538
|
+
line: "Channel worker did not exit after SIGKILL; automatic restart is disabled."
|
|
539
|
+
});
|
|
540
|
+
snapshot = {
|
|
541
|
+
...snapshot,
|
|
542
|
+
state: "failed",
|
|
543
|
+
error: snapshot.error ?? "Channel worker did not exit after SIGKILL."
|
|
544
|
+
};
|
|
545
|
+
notifyExit(opts.onExit, snapshotCopy());
|
|
522
546
|
}
|
|
523
547
|
}
|
|
524
548
|
});
|
|
@@ -628,7 +652,7 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
628
652
|
}
|
|
629
653
|
__name(settleError, "settleError");
|
|
630
654
|
startupTimer = setTimeout(() => {
|
|
631
|
-
const timeoutMs = opts.startupTimeoutMs ??
|
|
655
|
+
const timeoutMs = opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
|
|
632
656
|
const error = `Channel worker did not become ready within ${timeoutMs}ms.`;
|
|
633
657
|
snapshot = {
|
|
634
658
|
...snapshot,
|
|
@@ -639,7 +663,7 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
639
663
|
if (child === startedChild) {
|
|
640
664
|
terminateBeforeReady();
|
|
641
665
|
}
|
|
642
|
-
}, opts.startupTimeoutMs ??
|
|
666
|
+
}, opts.startupTimeoutMs ?? CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
|
|
643
667
|
startupTimer.unref();
|
|
644
668
|
startedChild.on("message", handleMessage);
|
|
645
669
|
startedChild.once("exit", settleExit);
|
|
@@ -648,7 +672,15 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
648
672
|
}, "launch");
|
|
649
673
|
const supervisor = {
|
|
650
674
|
async start() {
|
|
651
|
-
if (disposed
|
|
675
|
+
if (disposed) return;
|
|
676
|
+
if (child) {
|
|
677
|
+
if (stopping) {
|
|
678
|
+
throw new ChannelWorkerStopError(
|
|
679
|
+
"Channel worker stop is not yet confirmed."
|
|
680
|
+
);
|
|
681
|
+
}
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
652
684
|
stopping = false;
|
|
653
685
|
clearRestartTimer();
|
|
654
686
|
restartAttemptTimes = [];
|
|
@@ -666,22 +698,20 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
666
698
|
snapshot = { ...snapshot, state: "stopped" };
|
|
667
699
|
return;
|
|
668
700
|
}
|
|
669
|
-
const
|
|
701
|
+
const stoppingChild = child;
|
|
702
|
+
const exited = waitForExit(stoppingChild, CHANNEL_WORKER_STOP_GRACE_MS);
|
|
670
703
|
stopping = true;
|
|
671
|
-
|
|
672
|
-
if (!await exited) {
|
|
673
|
-
const killed = waitForExit(
|
|
674
|
-
|
|
704
|
+
stoppingChild.kill("SIGTERM");
|
|
705
|
+
if (!await exited && child === stoppingChild) {
|
|
706
|
+
const killed = waitForExit(stoppingChild, CHANNEL_WORKER_KILL_GRACE_MS);
|
|
707
|
+
stoppingChild.kill("SIGKILL");
|
|
675
708
|
if (!await killed) {
|
|
676
|
-
child = void 0;
|
|
677
|
-
stopping = false;
|
|
678
709
|
snapshot = {
|
|
679
710
|
...snapshot,
|
|
680
711
|
state: "failed",
|
|
681
|
-
signal: "SIGKILL",
|
|
682
712
|
error: "Channel worker did not exit after SIGKILL."
|
|
683
713
|
};
|
|
684
|
-
|
|
714
|
+
throw new ChannelWorkerStopError();
|
|
685
715
|
}
|
|
686
716
|
}
|
|
687
717
|
child = void 0;
|
|
@@ -784,6 +814,8 @@ function createChannelWorkerSupervisor(opts) {
|
|
|
784
814
|
return supervisor;
|
|
785
815
|
}
|
|
786
816
|
__name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
|
|
817
|
+
|
|
787
818
|
export {
|
|
819
|
+
ChannelWorkerStopError,
|
|
788
820
|
createChannelWorkerSupervisor
|
|
789
821
|
};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
+
InvalidStreamError,
|
|
4
5
|
OpenAIContentConverter,
|
|
5
6
|
TaggedThinkingParser,
|
|
6
7
|
getRateLimitErrorDetails,
|
|
7
8
|
openaiRequestCaptureContext
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-P6LART6G.js";
|
|
9
10
|
import {
|
|
10
11
|
RequestTokenizer
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GDQQRV43.js";
|
|
12
13
|
import {
|
|
13
14
|
DASHSCOPE_PROXY_BASE_URL,
|
|
14
15
|
DEFAULT_DASHSCOPE_BASE_URL,
|
|
@@ -22,11 +23,11 @@ import {
|
|
|
22
23
|
reconcileMaxTokens,
|
|
23
24
|
resolveRequestTimeout,
|
|
24
25
|
tokenLimit
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-B7NUUEXC.js";
|
|
26
27
|
import {
|
|
27
28
|
runtimeDiagnostics,
|
|
28
29
|
safeJsonParse
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-TQBODCFD.js";
|
|
30
31
|
import {
|
|
31
32
|
GenerateContentResponse
|
|
32
33
|
} from "./chunk-4LD5APFL.js";
|
|
@@ -36,13 +37,13 @@ import {
|
|
|
36
37
|
import {
|
|
37
38
|
buildRuntimeFetchOptions,
|
|
38
39
|
redactProxyError
|
|
39
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-LQIDP6K5.js";
|
|
40
41
|
import {
|
|
41
42
|
createDebugLogger,
|
|
42
43
|
getErrorStatus,
|
|
43
44
|
getErrorType,
|
|
44
45
|
isAbortError
|
|
45
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
46
47
|
import {
|
|
47
48
|
init_esbuild_shims
|
|
48
49
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -7788,6 +7789,7 @@ var StreamingToolCallParser = class {
|
|
|
7788
7789
|
escapes = /* @__PURE__ */ new Map();
|
|
7789
7790
|
/** Metadata for each tool call index */
|
|
7790
7791
|
toolCallMeta = /* @__PURE__ */ new Map();
|
|
7792
|
+
namelessToolCallIndices = /* @__PURE__ */ new Set();
|
|
7791
7793
|
/** Map from tool call ID to actual index used for storage */
|
|
7792
7794
|
idToIndexMap = /* @__PURE__ */ new Map();
|
|
7793
7795
|
/** Counter for generating new indices when collisions occur */
|
|
@@ -7809,8 +7811,16 @@ var StreamingToolCallParser = class {
|
|
|
7809
7811
|
* @returns ToolCallParseResult with completion status, parsed value, and repair info
|
|
7810
7812
|
*/
|
|
7811
7813
|
addChunk(index, chunk, id, name) {
|
|
7814
|
+
if (!id && !name && !chunk.trim()) {
|
|
7815
|
+
const depth2 = this.depths.get(index) ?? 0;
|
|
7816
|
+
const inString2 = this.inStrings.get(index) ?? false;
|
|
7817
|
+
if (!this.buffers.has(index) || depth2 === 0 && !inString2) {
|
|
7818
|
+
return { complete: false };
|
|
7819
|
+
}
|
|
7820
|
+
}
|
|
7812
7821
|
let actualIndex = index;
|
|
7813
7822
|
const isKnownId = Boolean(id && this.idToIndexMap.has(id));
|
|
7823
|
+
const isNameOnlyDelta = Boolean(name && chunk.length === 0);
|
|
7814
7824
|
if (id) {
|
|
7815
7825
|
if (this.idToIndexMap.has(id)) {
|
|
7816
7826
|
actualIndex = this.idToIndexMap.get(id);
|
|
@@ -7835,7 +7845,7 @@ var StreamingToolCallParser = class {
|
|
|
7835
7845
|
}
|
|
7836
7846
|
this.idToIndexMap.set(id, actualIndex);
|
|
7837
7847
|
}
|
|
7838
|
-
} else {
|
|
7848
|
+
} else if (!isNameOnlyDelta) {
|
|
7839
7849
|
if (this.buffers.has(index)) {
|
|
7840
7850
|
const existingBuffer = this.buffers.get(index);
|
|
7841
7851
|
const existingDepth = this.depths.get(index);
|
|
@@ -7860,6 +7870,17 @@ var StreamingToolCallParser = class {
|
|
|
7860
7870
|
}
|
|
7861
7871
|
const currentBuffer = this.buffers.get(actualIndex);
|
|
7862
7872
|
const currentDepth = this.depths.get(actualIndex);
|
|
7873
|
+
const meta = this.toolCallMeta.get(actualIndex);
|
|
7874
|
+
if (chunk.length === 0 && (id || name)) {
|
|
7875
|
+
if (id) meta.id = id;
|
|
7876
|
+
if (name && !meta.name) meta.name = name;
|
|
7877
|
+
if (!meta.name && meta.id) {
|
|
7878
|
+
this.namelessToolCallIndices.add(actualIndex);
|
|
7879
|
+
} else {
|
|
7880
|
+
this.namelessToolCallIndices.delete(actualIndex);
|
|
7881
|
+
}
|
|
7882
|
+
return { complete: false };
|
|
7883
|
+
}
|
|
7863
7884
|
if (isKnownId && currentDepth === 0) {
|
|
7864
7885
|
if (currentBuffer.trim()) {
|
|
7865
7886
|
try {
|
|
@@ -7870,20 +7891,19 @@ var StreamingToolCallParser = class {
|
|
|
7870
7891
|
return { complete: false };
|
|
7871
7892
|
} catch {
|
|
7872
7893
|
}
|
|
7873
|
-
} else if (this.toolCallMeta.get(actualIndex)?.name && name && !chunk.trim()) {
|
|
7874
|
-
debugLogger3.debug(
|
|
7875
|
-
`Ignoring replayed opener for no-argument toolCall id=${id}`
|
|
7876
|
-
);
|
|
7877
|
-
return { complete: false };
|
|
7878
7894
|
}
|
|
7879
7895
|
}
|
|
7880
|
-
const meta = this.toolCallMeta.get(actualIndex);
|
|
7881
7896
|
if (id) meta.id = id;
|
|
7882
7897
|
if (name) meta.name = name;
|
|
7883
7898
|
const currentInString = this.inStrings.get(actualIndex);
|
|
7884
7899
|
const currentEscape = this.escapes.get(actualIndex);
|
|
7885
7900
|
const newBuffer = currentBuffer + chunk;
|
|
7886
7901
|
this.buffers.set(actualIndex, newBuffer);
|
|
7902
|
+
if (!meta.name && (meta.id || /\S/.test(newBuffer))) {
|
|
7903
|
+
this.namelessToolCallIndices.add(actualIndex);
|
|
7904
|
+
} else {
|
|
7905
|
+
this.namelessToolCallIndices.delete(actualIndex);
|
|
7906
|
+
}
|
|
7887
7907
|
let depth = currentDepth;
|
|
7888
7908
|
let inString = currentInString;
|
|
7889
7909
|
let escape2 = currentEscape;
|
|
@@ -7933,6 +7953,9 @@ var StreamingToolCallParser = class {
|
|
|
7933
7953
|
getToolCallMeta(index) {
|
|
7934
7954
|
return this.toolCallMeta.get(index) || {};
|
|
7935
7955
|
}
|
|
7956
|
+
hasNamelessToolCall() {
|
|
7957
|
+
return this.namelessToolCallIndices.size > 0;
|
|
7958
|
+
}
|
|
7936
7959
|
/**
|
|
7937
7960
|
* Gets all completed tool calls that are ready to be emitted
|
|
7938
7961
|
*
|
|
@@ -8064,6 +8087,7 @@ var StreamingToolCallParser = class {
|
|
|
8064
8087
|
this.inStrings.set(index, false);
|
|
8065
8088
|
this.escapes.set(index, false);
|
|
8066
8089
|
this.toolCallMeta.set(index, {});
|
|
8090
|
+
this.namelessToolCallIndices.delete(index);
|
|
8067
8091
|
}
|
|
8068
8092
|
/**
|
|
8069
8093
|
* Resets the entire parser state for processing a new stream
|
|
@@ -8078,6 +8102,7 @@ var StreamingToolCallParser = class {
|
|
|
8078
8102
|
this.inStrings.clear();
|
|
8079
8103
|
this.escapes.clear();
|
|
8080
8104
|
this.toolCallMeta.clear();
|
|
8105
|
+
this.namelessToolCallIndices.clear();
|
|
8081
8106
|
this.idToIndexMap.clear();
|
|
8082
8107
|
this.nextAvailableIndex = 0;
|
|
8083
8108
|
}
|
|
@@ -8450,6 +8475,9 @@ var ContentGenerationPipeline = class {
|
|
|
8450
8475
|
yield pendingFinishResponse;
|
|
8451
8476
|
}
|
|
8452
8477
|
} catch (error) {
|
|
8478
|
+
if (error instanceof InvalidStreamError) {
|
|
8479
|
+
throw error;
|
|
8480
|
+
}
|
|
8453
8481
|
if (error instanceof StreamContentError) {
|
|
8454
8482
|
throw redactProxyError(error);
|
|
8455
8483
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
settleChatRecording,
|
|
5
|
+
subscribeToHeadlessChatRecordingFailures
|
|
6
|
+
} from "./chunk-CJFNEBYB.js";
|
|
6
7
|
import {
|
|
7
8
|
JsonOutputAdapter
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-F7NXQH4Y.js";
|
|
9
10
|
import {
|
|
10
11
|
StreamJsonOutputAdapter
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LTNI523B.js";
|
|
13
|
+
import {
|
|
14
|
+
handleAtCommand
|
|
15
|
+
} from "./chunk-X362TMXZ.js";
|
|
12
16
|
import {
|
|
13
17
|
buildInitialSystemReminders,
|
|
14
18
|
buildSystemMessage,
|
|
@@ -20,10 +24,10 @@ import {
|
|
|
20
24
|
insertAfterFunctionResponses,
|
|
21
25
|
isSlashCommand,
|
|
22
26
|
normalizePartList
|
|
23
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-YX4LLZ3D.js";
|
|
24
28
|
import {
|
|
25
29
|
RunBudgetEnforcer
|
|
26
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-CEW4HDPK.js";
|
|
27
31
|
import {
|
|
28
32
|
AlreadyReportedError,
|
|
29
33
|
handleBudgetExceededError,
|
|
@@ -31,17 +35,15 @@ import {
|
|
|
31
35
|
handleError,
|
|
32
36
|
handleMaxTurnsExceededError,
|
|
33
37
|
handleToolError
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-65N2J6V2.js";
|
|
35
39
|
import {
|
|
36
40
|
isInlineModelOverrideAllowed
|
|
37
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-GGJII3FM.js";
|
|
38
42
|
import {
|
|
39
|
-
|
|
40
|
-
buildSyntheticToolResponseParts,
|
|
43
|
+
buildSessionRecoveryPlanFromApiHistory,
|
|
41
44
|
createDuplicateProviderToolCallResponse,
|
|
42
45
|
detectAutonomousSentinel,
|
|
43
46
|
detectLoopSentinel,
|
|
44
|
-
detectTurnInterruption,
|
|
45
47
|
executeToolCall,
|
|
46
48
|
findRepeatedDuplicateProviderToolCall,
|
|
47
49
|
isSystemReminderContent,
|
|
@@ -49,19 +51,19 @@ import {
|
|
|
49
51
|
parseAndFormatApiError,
|
|
50
52
|
promptIdContext,
|
|
51
53
|
restoreWorktreeContext
|
|
52
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-K7CRWKOE.js";
|
|
53
55
|
import {
|
|
54
56
|
isTelemetrySdkInitialized,
|
|
55
57
|
shutdownTelemetry,
|
|
56
58
|
uiTelemetryService
|
|
57
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-P6LART6G.js";
|
|
58
60
|
import {
|
|
59
61
|
ToolNames
|
|
60
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-2UUAIFQO.js";
|
|
61
63
|
import {
|
|
62
64
|
FatalInputError,
|
|
63
65
|
createDebugLogger
|
|
64
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-7NFB7LBQ.js";
|
|
65
67
|
import {
|
|
66
68
|
init_esbuild_shims
|
|
67
69
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -140,6 +142,7 @@ async function emitNonInteractiveFinalMessage(params) {
|
|
|
140
142
|
const usage = computeUsageFromMetrics(metrics);
|
|
141
143
|
const outputFormat = config.getOutputFormat();
|
|
142
144
|
const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
|
|
145
|
+
await params.beforeEmit();
|
|
143
146
|
adapter.emitResult({
|
|
144
147
|
isError,
|
|
145
148
|
durationMs: Date.now() - params.startTimeMs,
|
|
@@ -166,7 +169,17 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
166
169
|
} else {
|
|
167
170
|
adapter = new JsonOutputAdapter(config);
|
|
168
171
|
}
|
|
169
|
-
const
|
|
172
|
+
const ownsAdapter = options.adapter === void 0;
|
|
173
|
+
const unsubscribeRecordingFailure = ownsAdapter ? subscribeToHeadlessChatRecordingFailures(config, adapter) : void 0;
|
|
174
|
+
let chatRecordingSettlement;
|
|
175
|
+
const settleBeforeTerminalOutput = /* @__PURE__ */ __name(() => {
|
|
176
|
+
chatRecordingSettlement ??= settleChatRecording(config, {
|
|
177
|
+
finalize: ownsAdapter
|
|
178
|
+
}).then(() => void 0);
|
|
179
|
+
return chatRecordingSettlement;
|
|
180
|
+
}, "settleBeforeTerminalOutput");
|
|
181
|
+
const emitResult = /* @__PURE__ */ __name(async (result) => {
|
|
182
|
+
await settleBeforeTerminalOutput();
|
|
170
183
|
adapter.emitResult(result);
|
|
171
184
|
options.onResultEmitted?.();
|
|
172
185
|
}, "emitResult");
|
|
@@ -186,6 +199,7 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
|
|
|
186
199
|
);
|
|
187
200
|
budgetEnforcer.start();
|
|
188
201
|
const routeAbort = /* @__PURE__ */ __name(async () => {
|
|
202
|
+
await settleBeforeTerminalOutput();
|
|
189
203
|
const exceeded = budgetEnforcer.getExceeded();
|
|
190
204
|
if (exceeded) {
|
|
191
205
|
await handleBudgetExceededError(config, exceeded);
|
|
@@ -306,32 +320,30 @@ ${reason}
|
|
|
306
320
|
);
|
|
307
321
|
let inlineModelOverride;
|
|
308
322
|
if (options.continueInterrupted) {
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
323
|
+
const recoveryPlan = buildSessionRecoveryPlanFromApiHistory({
|
|
324
|
+
sessionId,
|
|
325
|
+
apiHistory: geminiClient.getChat().getHistory()
|
|
326
|
+
});
|
|
327
|
+
debugLogger.info("[runNonInteractive] continueInterrupted recovery", {
|
|
328
|
+
kind: recoveryPlan.kind,
|
|
329
|
+
repairs: recoveryPlan.repairs,
|
|
330
|
+
hasContinuation: recoveryPlan.continuation !== void 0
|
|
316
331
|
});
|
|
317
|
-
if (
|
|
332
|
+
if (!recoveryPlan.continuation) {
|
|
318
333
|
await emitNonInteractiveFinalMessage({
|
|
319
334
|
message: "No interrupted turn to continue.",
|
|
320
335
|
isError: false,
|
|
321
336
|
adapter,
|
|
322
337
|
config,
|
|
323
|
-
startTimeMs: startTime
|
|
338
|
+
startTimeMs: startTime,
|
|
339
|
+
beforeEmit: settleBeforeTerminalOutput
|
|
324
340
|
});
|
|
325
341
|
return 0;
|
|
326
342
|
}
|
|
327
|
-
|
|
328
|
-
|
|
343
|
+
initialPartList = recoveryPlan.continuation.parts;
|
|
344
|
+
if (recoveryPlan.continuation.mode === "retry_user_parts") {
|
|
329
345
|
continueSendType = "retry" /* Retry */;
|
|
330
346
|
} else {
|
|
331
|
-
initialPartList = buildSyntheticToolResponseParts(
|
|
332
|
-
detection.danglingCalls,
|
|
333
|
-
ORPHAN_TOOL_USE_REPAIR_REASON
|
|
334
|
-
);
|
|
335
347
|
continueSendType = "toolResult" /* ToolResult */;
|
|
336
348
|
}
|
|
337
349
|
const reminderParts = buildInitialSystemReminders(config);
|
|
@@ -381,7 +393,8 @@ ${reason}
|
|
|
381
393
|
isError: slashCommandResult.messageType === "error",
|
|
382
394
|
adapter,
|
|
383
395
|
config,
|
|
384
|
-
startTimeMs: startTime
|
|
396
|
+
startTimeMs: startTime,
|
|
397
|
+
beforeEmit: settleBeforeTerminalOutput
|
|
385
398
|
});
|
|
386
399
|
return slashCommandResult.messageType === "error" ? 1 : 0;
|
|
387
400
|
}
|
|
@@ -395,7 +408,8 @@ ${reason}
|
|
|
395
408
|
isError: true,
|
|
396
409
|
adapter,
|
|
397
410
|
config,
|
|
398
|
-
startTimeMs: startTime
|
|
411
|
+
startTimeMs: startTime,
|
|
412
|
+
beforeEmit: settleBeforeTerminalOutput
|
|
399
413
|
});
|
|
400
414
|
return 1;
|
|
401
415
|
}
|
|
@@ -553,7 +567,7 @@ ${text}
|
|
|
553
567
|
const metrics = uiTelemetryService.getMetrics();
|
|
554
568
|
const usage = computeUsageFromMetrics(metrics);
|
|
555
569
|
const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
|
|
556
|
-
emitResult({
|
|
570
|
+
await emitResult({
|
|
557
571
|
isError: false,
|
|
558
572
|
durationMs: Date.now() - startTime,
|
|
559
573
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -564,17 +578,18 @@ ${text}
|
|
|
564
578
|
});
|
|
565
579
|
return 0;
|
|
566
580
|
}, "emitStructuredSuccess");
|
|
567
|
-
const emitLoopDetectedResult = /* @__PURE__ */ __name(() => {
|
|
581
|
+
const emitLoopDetectedResult = /* @__PURE__ */ __name(async () => {
|
|
568
582
|
registry.abortAll();
|
|
569
583
|
flushQueuedNotificationsToSdk(localQueue);
|
|
570
584
|
finalizeOneShotMonitors();
|
|
571
585
|
if (outputFormat === "text" /* TEXT */) {
|
|
586
|
+
await settleBeforeTerminalOutput();
|
|
572
587
|
return 1;
|
|
573
588
|
}
|
|
574
589
|
const metrics = uiTelemetryService.getMetrics();
|
|
575
590
|
const usage = computeUsageFromMetrics(metrics);
|
|
576
591
|
const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
|
|
577
|
-
|
|
592
|
+
await emitResult({
|
|
578
593
|
isError: true,
|
|
579
594
|
durationMs: Date.now() - startTime,
|
|
580
595
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -773,6 +788,7 @@ ${text}
|
|
|
773
788
|
hasUnsentToolResponse = false;
|
|
774
789
|
turnCount++;
|
|
775
790
|
if (config.getMaxSessionTurns() >= 0 && turnCount > config.getMaxSessionTurns()) {
|
|
791
|
+
await settleBeforeTerminalOutput();
|
|
776
792
|
await handleMaxTurnsExceededError(config);
|
|
777
793
|
}
|
|
778
794
|
let sendType;
|
|
@@ -894,6 +910,7 @@ ${text}
|
|
|
894
910
|
}
|
|
895
911
|
}
|
|
896
912
|
if (abortController.signal.aborted) {
|
|
913
|
+
await settleBeforeTerminalOutput();
|
|
897
914
|
await handleCancellationError(config);
|
|
898
915
|
}
|
|
899
916
|
if (teamManager) {
|
|
@@ -923,6 +940,7 @@ ${text}
|
|
|
923
940
|
};
|
|
924
941
|
turnCount++;
|
|
925
942
|
if (config.getMaxSessionTurns() >= 0 && turnCount > config.getMaxSessionTurns()) {
|
|
943
|
+
await settleBeforeTerminalOutput();
|
|
926
944
|
await handleMaxTurnsExceededError(config);
|
|
927
945
|
}
|
|
928
946
|
let itemMessages = [
|
|
@@ -1117,7 +1135,7 @@ ${text}
|
|
|
1117
1135
|
const previewSnippet = plainTextPreview.trim();
|
|
1118
1136
|
const previewSuffix = previewSnippet ? ` Output preview (${plainTextPreview.length}${plainTextPreview.length >= PLAIN_TEXT_PREVIEW_LIMIT ? "+" : ""} chars): ${JSON.stringify(previewSnippet)}.` : "";
|
|
1119
1137
|
const errorMessage = `Model produced plain text instead of calling the structured_output tool as required by --json-schema after ${turnCount} turn(s).` + previewSuffix;
|
|
1120
|
-
emitResult({
|
|
1138
|
+
await emitResult({
|
|
1121
1139
|
isError: true,
|
|
1122
1140
|
durationMs: Date.now() - startTime,
|
|
1123
1141
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -1128,7 +1146,7 @@ ${text}
|
|
|
1128
1146
|
});
|
|
1129
1147
|
return 1;
|
|
1130
1148
|
}
|
|
1131
|
-
emitResult({
|
|
1149
|
+
await emitResult({
|
|
1132
1150
|
isError: false,
|
|
1133
1151
|
durationMs: Date.now() - startTime,
|
|
1134
1152
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -1153,9 +1171,10 @@ ${text}
|
|
|
1153
1171
|
const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
|
|
1154
1172
|
const isAlreadyReportedError = error instanceof AlreadyReportedError;
|
|
1155
1173
|
const skipAdapterEmit = outputFormat === "text" /* TEXT */ && isAlreadyReportedError;
|
|
1174
|
+
await settleBeforeTerminalOutput();
|
|
1156
1175
|
if (!skipAdapterEmit) {
|
|
1157
1176
|
try {
|
|
1158
|
-
emitResult({
|
|
1177
|
+
await emitResult({
|
|
1159
1178
|
isError: true,
|
|
1160
1179
|
durationMs: Date.now() - startTime,
|
|
1161
1180
|
apiDurationMs: totalApiDurationMs,
|
|
@@ -1194,6 +1213,7 @@ ${text}
|
|
|
1194
1213
|
if (options.captureMonitorRegistrations !== false) {
|
|
1195
1214
|
monReg.setRegisterCallback(void 0);
|
|
1196
1215
|
}
|
|
1216
|
+
unsubscribeRecordingFailure?.();
|
|
1197
1217
|
process.stdout.removeListener("error", stdoutErrorHandler);
|
|
1198
1218
|
process.removeListener("SIGINT", shutdownHandler);
|
|
1199
1219
|
process.removeListener("SIGTERM", shutdownHandler);
|
|
@@ -9,19 +9,19 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_COMPACTED_REPLAY_MAX_BYTES
|
|
11
11
|
} from "./chunk-COH43MRJ.js";
|
|
12
|
-
import {
|
|
13
|
-
loadSettings
|
|
14
|
-
} from "./chunk-4C5BQ2D2.js";
|
|
15
12
|
import {
|
|
16
13
|
normalizeServeChannelSelection
|
|
17
14
|
} from "./chunk-TJTKSVIV.js";
|
|
15
|
+
import {
|
|
16
|
+
loadSettings
|
|
17
|
+
} from "./chunk-6GETGQWP.js";
|
|
18
18
|
import {
|
|
19
19
|
writeStderrLine
|
|
20
20
|
} from "./chunk-YUZI3WAC.js";
|
|
21
21
|
import {
|
|
22
22
|
MCP_BUDGET_WARN_FRACTION,
|
|
23
23
|
parsePositiveIntegerEnv
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-K7CRWKOE.js";
|
|
25
25
|
import {
|
|
26
26
|
openBrowserSecurely,
|
|
27
27
|
shouldLaunchBrowser
|
|
@@ -297,7 +297,7 @@ var serveCommand = {
|
|
|
297
297
|
process.exit(1);
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
|
-
const { runQwenServe } = await import("./run-qwen-serve-
|
|
300
|
+
const { runQwenServe } = await import("./run-qwen-serve-NWTGPERT.js");
|
|
301
301
|
try {
|
|
302
302
|
const handle = await runQwenServe({
|
|
303
303
|
port: argv.port,
|