@qwen-code/qwen-code 0.23.3 → 0.23.4-dev.codemode-responses.20260914.87437db784
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/computer-use/SKILL.md +46 -198
- package/bundled/computer-use/references/macos.md +208 -0
- package/bundled/computer-use/references/windows-linux.md +247 -0
- package/bundled/goal-draft/SKILL.md +10 -10
- package/bundled/qc-helper/docs/configuration/settings.md +81 -71
- package/bundled/qc-helper/docs/extension/getting-started-extensions.md +2 -0
- package/bundled/qc-helper/docs/extension/introduction.md +9 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/agent-board.md +89 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -21
- package/bundled/qc-helper/docs/features/channels/dws.md +5 -1
- package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
- package/bundled/qc-helper/docs/features/code-review.md +18 -4
- package/bundled/qc-helper/docs/features/commands.md +9 -0
- package/bundled/qc-helper/docs/features/computer-use.md +26 -8
- package/bundled/qc-helper/docs/features/cross-session-protocol.md +23 -5
- package/bundled/qc-helper/docs/features/followup-suggestions.md +17 -5
- package/bundled/qc-helper/docs/features/goals.md +22 -18
- package/bundled/qc-helper/docs/features/hooks.md +48 -37
- package/bundled/qc-helper/docs/features/skills.md +33 -3
- package/bundled/qc-helper/docs/features/status-line.md +2 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -3
- package/bundled/review/SKILL.md +20 -10
- package/bundled/review/references/persistence.md +2 -0
- package/bundled/workflow-authoring/SKILL.md +442 -0
- package/bundled/workflow-creator/SKILL.md +1 -1
- package/chunks/{MaxSizedBox-D4LW7RZZ.js → MaxSizedBox-CSMC6NNQ.js} +59 -55
- package/chunks/{StandaloneSessionPicker-ALTTRWUP.js → StandaloneSessionPicker-5G46NROB.js} +83 -79
- package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
- package/chunks/acp-subagent-executor-4JLSF7SA.js +141 -0
- package/chunks/{acpAgent-BBSW7XZG.js → acpAgent-WJ45JV2S.js} +1026 -355
- package/chunks/{agent-SQ6OY3QD.js → agent-KWNOVXAD.js} +43 -39
- package/chunks/{agent-headless-RI2THRQ7.js → agent-headless-TU5N3GFF.js} +43 -39
- package/chunks/{anthropicContentGenerator-JSKMKS6V.js → anthropicContentGenerator-H5YPXIDE.js} +37 -15
- package/chunks/{artifact-tool-PMYZCYNH.js → artifact-tool-MFGORTWZ.js} +59 -109
- package/chunks/{askUserQuestion-4M4YYIB4.js → askUserQuestion-WS4GUT7C.js} +3 -3
- package/chunks/{bridge-DAFMI72L.js → bridge-PF7UX6MH.js} +63 -58
- package/chunks/{build-63BIOYWK.js → build-5KWQBWEQ.js} +1 -1
- package/chunks/{ca-KC2AISNS.js → ca-GZ4FDJU2.js} +3 -3
- package/chunks/{channel-management-service-OWDXVL7R.js → channel-management-service-AFVIT4VH.js} +8 -8
- package/chunks/{channel-settings-store-4I6JONT7.js → channel-settings-store-3OVAGIC2.js} +68 -64
- package/chunks/{channel-worker-group-F2ZZMLNS.js → channel-worker-group-JR6JOELM.js} +8 -8
- package/chunks/{channel-worker-manager-2SZLJJSJ.js → channel-worker-manager-AVKJEZFL.js} +8 -8
- package/chunks/{channel-worker-supervisor-ZFNWMG6D.js → channel-worker-supervisor-OOYY7BAQ.js} +5 -5
- package/chunks/{chunk-6JACAGYH.js → chunk-2S2WIGCM.js} +1 -1
- package/chunks/{chunk-NRXWJXJ4.js → chunk-2YGR3VN6.js} +15 -15
- package/chunks/{chunk-IUVIBDKU.js → chunk-2YMRRI2C.js} +9 -10
- package/chunks/{chunk-3BTSSIJO.js → chunk-3DOAKZYD.js} +99 -14
- package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
- package/chunks/{chunk-2ZN3O5FT.js → chunk-457DR2MC.js} +6 -6
- package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
- package/chunks/{chunk-W5ZQMAEM.js → chunk-4Y2I3CI3.js} +1 -1
- package/chunks/{chunk-HGEUHUEV.js → chunk-54B2LTKP.js} +1 -1
- package/chunks/{chunk-IRH27ZC2.js → chunk-5EZRLTLQ.js} +4 -4
- package/chunks/{chunk-DLH7YIX6.js → chunk-5FK4MSHB.js} +3 -3
- package/chunks/{chunk-CUEXOHQH.js → chunk-5ODRE7E5.js} +9 -15
- package/chunks/{chunk-532WHF4F.js → chunk-5VQR2DD7.js} +2 -2
- package/chunks/{chunk-3KQBQ6FM.js → chunk-63WKMKVD.js} +190 -28
- package/chunks/{chunk-YBUMTY7B.js → chunk-66N6C4EH.js} +1 -1
- package/chunks/{chunk-MLQNSPRZ.js → chunk-6MLDTOHU.js} +15 -5
- package/chunks/{chunk-SBRX4BDI.js → chunk-6NKDU7YL.js} +2 -2
- package/chunks/{chunk-3UXUOFO6.js → chunk-6TMXX4Z4.js} +9 -10
- package/chunks/{chunk-Y2MYW47X.js → chunk-6WXVEDT2.js} +9 -2
- package/chunks/{chunk-ZHKTKHMO.js → chunk-7MIBD3LG.js} +1 -1
- package/chunks/{chunk-EVTNACMT.js → chunk-A6QMKS5S.js} +12 -12
- package/chunks/{chunk-NOAG7N22.js → chunk-A6YU6R5N.js} +2 -2
- package/chunks/{chunk-76RGWKLS.js → chunk-ABNX6E6K.js} +1 -1
- package/chunks/chunk-ACHCT36C.js +28 -0
- package/chunks/{chunk-NE624IVP.js → chunk-ADQUK6WA.js} +1 -1
- package/chunks/{chunk-PLLIWEM3.js → chunk-AEWCOE64.js} +2 -2
- package/chunks/{chunk-3FPYT6QC.js → chunk-ARDHE6MM.js} +23 -0
- package/chunks/{chunk-LILGKQ4B.js → chunk-AXZMWAJV.js} +156 -26
- package/chunks/{chunk-SYLECP23.js → chunk-B776VKDA.js} +4 -4
- package/chunks/{chunk-AC6KDLH3.js → chunk-BNYQHLPR.js} +1 -1
- package/chunks/{chunk-BZM5U74J.js → chunk-BS7ON54G.js} +724 -468
- package/chunks/{chunk-TPKQIA7G.js → chunk-BSIOCNDK.js} +1 -1
- package/chunks/{chunk-U7O65WKL.js → chunk-BW2SMO6L.js} +1 -1
- package/chunks/{chunk-POC3YMHG.js → chunk-BY6CE34S.js} +4 -4
- package/chunks/{chunk-RLLRJJDR.js → chunk-C3VNHDWJ.js} +2 -2
- package/chunks/{chunk-WBCPROWX.js → chunk-C4HBZQNH.js} +1 -1
- package/chunks/{chunk-MSNHNAQZ.js → chunk-C5ABXOC2.js} +3 -3
- package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
- package/chunks/chunk-CCWWPFZJ.js +191 -0
- package/chunks/chunk-CFMZLE3L.js +75 -0
- package/chunks/{chunk-N7VWZDWW.js → chunk-CFSBWJBB.js} +4462 -3840
- package/chunks/{chunk-KOKPXIAN.js → chunk-CL7JONZN.js} +3 -3
- package/chunks/{chunk-AXTFYDXT.js → chunk-CXXAZ2LZ.js} +1 -1
- package/chunks/{chunk-JYKWOREU.js → chunk-DBUOMHLZ.js} +13 -3
- package/chunks/{chunk-R4Q2PEFV.js → chunk-DLJBYORJ.js} +1 -1
- package/chunks/{chunk-DT75RKNH.js → chunk-DNVA2MQ2.js} +3 -3
- package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
- package/chunks/{chunk-HGAELO7B.js → chunk-DQMBQCTY.js} +2 -2
- package/chunks/{chunk-2ALXPGB4.js → chunk-E6IR653O.js} +1 -1
- package/chunks/{chunk-ZKYR7QS4.js → chunk-EDB556X7.js} +2 -2
- package/chunks/chunk-EKJXDLDD.js +32 -0
- package/chunks/{chunk-NUQVB25K.js → chunk-EKMJR7M3.js} +2 -2
- package/chunks/{chunk-7QYWGTHB.js → chunk-EPVEPTI3.js} +44 -151
- package/chunks/{chunk-GCDXVPFK.js → chunk-EZSSJSKR.js} +31 -7
- package/chunks/{chunk-S6Q6Q4P2.js → chunk-FBDHP23D.js} +1 -1
- package/chunks/{chunk-UKZ45TJL.js → chunk-FFBP5POK.js} +420 -219
- package/chunks/{chunk-3I7W2POO.js → chunk-FGROOEKM.js} +5 -40
- package/chunks/{chunk-HNLMYDQE.js → chunk-FMLBBXHB.js} +13 -9
- package/chunks/{chunk-SSGAAWLY.js → chunk-GCV4NOHV.js} +95 -73
- package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
- package/chunks/{chunk-XBZTAGB7.js → chunk-GMN73IMT.js} +1 -1
- package/chunks/{chunk-IAEXTMED.js → chunk-GNV2SFO7.js} +173 -7
- package/chunks/{chunk-CXTPVBFA.js → chunk-GSS4SZNG.js} +100 -17
- package/chunks/chunk-GXN7DWZZ.js +154 -0
- package/chunks/{chunk-SODMFNAR.js → chunk-H23UWPF7.js} +5 -5
- package/chunks/{chunk-6HUXPLB5.js → chunk-HEOH7JZY.js} +5 -5
- package/chunks/{chunk-DTNV6UZY.js → chunk-HFJSQ4GL.js} +10 -24
- package/chunks/{chunk-GOXQL4YH.js → chunk-HWRXJQ6B.js} +2 -2
- package/chunks/{chunk-VZUCTJ2P.js → chunk-I6YJZGHS.js} +10 -10
- package/chunks/{chunk-RZHU3K6M.js → chunk-IAS753HG.js} +2 -20
- package/chunks/{chunk-EDMXGXAK.js → chunk-IBRQG2MP.js} +10 -13
- package/chunks/chunk-INGBUYL6.js +230 -0
- package/chunks/{chunk-7BXXIQG4.js → chunk-J73WJIMT.js} +36 -72
- package/chunks/{chunk-XGYHNWL3.js → chunk-J7LBAKDH.js} +3 -3
- package/chunks/{chunk-Z3GF56ME.js → chunk-JAYWZWZF.js} +3 -3
- package/chunks/{chunk-DYFOSJHU.js → chunk-JBFC2644.js} +2756 -1153
- package/chunks/{chunk-Q5BD56BW.js → chunk-JPCYCFYG.js} +7 -7
- package/chunks/{chunk-LG5Y4OWO.js → chunk-JRHKM3YQ.js} +2 -2
- package/chunks/{chunk-NHCZJQE4.js → chunk-JZKBMADP.js} +6 -6
- package/chunks/{chunk-MF6E7FSA.js → chunk-K7CQWBLT.js} +8 -201
- package/chunks/{chunk-K2OJUPOE.js → chunk-KP2FHIFR.js} +12 -0
- package/chunks/{chunk-ZU47FBOC.js → chunk-KSIOXYVX.js} +126 -12
- package/chunks/{chunk-IV7GDNKC.js → chunk-KZCK5JUN.js} +4 -4
- package/chunks/{chunk-3XLK2QMY.js → chunk-L3S2Y2FF.js} +59 -16
- package/chunks/{chunk-ZW2EUO2A.js → chunk-L6DIANLD.js} +1 -1
- package/chunks/{chunk-6W4HBUA2.js → chunk-LATAUG2M.js} +1 -1
- package/chunks/{chunk-RWVD5RRY.js → chunk-LBDASOPR.js} +3 -3
- package/chunks/{chunk-OX7IZ2G5.js → chunk-LF5AD7PY.js} +4 -4
- package/chunks/{chunk-NMRCXKQ5.js → chunk-LKCNETDW.js} +3 -3
- package/chunks/chunk-LMJSPC55.js +260 -0
- package/chunks/{chunk-X6K77VHC.js → chunk-LWWRJRCD.js} +1 -1
- package/chunks/{chunk-UXEO7E3V.js → chunk-LYD3T3H7.js} +1 -0
- package/chunks/{chunk-KFZYGSJN.js → chunk-M3YNPR56.js} +3 -3
- package/chunks/{chunk-HBQ2NXOU.js → chunk-MDG6GKSE.js} +2 -2
- package/chunks/{chunk-E4UEO3XM.js → chunk-ME4JBHSB.js} +324 -2
- package/chunks/{chunk-BV6Q5HMY.js → chunk-MJHLKWGJ.js} +8 -7
- package/chunks/{chunk-NFYEQRLG.js → chunk-MQRLLBMQ.js} +1 -1
- package/chunks/{chunk-O4KNCAX4.js → chunk-NCPFOLM2.js} +11 -0
- package/chunks/{chunk-2SZH22YO.js → chunk-NJ2OFVUX.js} +115 -97
- package/chunks/{chunk-DAWWT2ID.js → chunk-NN4EC2WO.js} +1374 -2164
- package/chunks/{chunk-6MBXY6WM.js → chunk-NRQI3PGS.js} +1 -1
- package/chunks/{chunk-HBU7EKY4.js → chunk-NRUKL236.js} +45 -15
- package/chunks/{chunk-53GWJOLP.js → chunk-NTCFKGQF.js} +3 -1
- package/chunks/{chunk-3CZ2BQV6.js → chunk-NXUZFW3G.js} +49 -19
- package/chunks/{chunk-X7UJKOHZ.js → chunk-OMDXAHCT.js} +4 -6
- package/chunks/{chunk-5GLDOLNQ.js → chunk-OWUAZXXN.js} +4 -3
- package/chunks/{chunk-2UWQX4FP.js → chunk-OZEV3R3S.js} +1 -1
- package/chunks/{acp-subagent-executor-LEUN3N7N.js → chunk-PAPBT3WP.js} +11 -110
- package/chunks/{chunk-7ICHPMBQ.js → chunk-PHSQVB6D.js} +4 -4
- package/chunks/{chunk-FCQJLMA2.js → chunk-Q3TFRP5G.js} +178 -8
- package/chunks/{chunk-YQHLFCPU.js → chunk-Q5CCYZD3.js} +32 -24
- package/chunks/chunk-QQL5BFOL.js +1416 -0
- package/chunks/{chunk-ZKZHSB5W.js → chunk-QR4Q425T.js} +9 -9
- package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
- package/chunks/{chunk-TP6FYVQT.js → chunk-RSWBT7AZ.js} +33 -1
- package/chunks/{chunk-2PJRI3EH.js → chunk-RVOD66ID.js} +218 -43
- package/chunks/{chunk-W5FIP7FC.js → chunk-S3PU3CNW.js} +5 -5
- package/chunks/chunk-S7UQ3V2H.js +87 -0
- package/chunks/{chunk-N6VQ37ZZ.js → chunk-SFL6U7U7.js} +1 -1
- package/chunks/{chunk-MOS5OAOG.js → chunk-SROLVJFY.js} +6 -6
- package/chunks/{chunk-HUXPEUFL.js → chunk-SYROIHU7.js} +1 -1
- package/chunks/{chunk-E7LB57MB.js → chunk-T3LUMYFP.js} +6 -6
- package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
- package/chunks/{chunk-5KI7ZDTB.js → chunk-TV5WDW7R.js} +24 -12
- package/chunks/{chunk-NMCDMLHL.js → chunk-TXUJOKVR.js} +50 -35
- package/chunks/{chunk-NHJKAR6E.js → chunk-TYWLBEL2.js} +972 -18
- package/chunks/chunk-U6H3XTFA.js +95 -0
- package/chunks/{chunk-GSILBZLN.js → chunk-U7RWQBGZ.js} +2 -2
- package/chunks/{chunk-7APZIRH3.js → chunk-V3CMBOQ6.js} +5 -5
- package/chunks/{chunk-JXNIF2O5.js → chunk-V545KI73.js} +1 -1
- package/chunks/chunk-VGY2RGXL.js +100 -0
- package/chunks/{chunk-TBEXLLAO.js → chunk-VRQZESKP.js} +1 -1
- package/chunks/{chunk-FN3JNDRU.js → chunk-VVI7MK3V.js} +3 -3
- package/chunks/{chunk-EUURTIV6.js → chunk-WBSJ6VPZ.js} +10 -2
- package/chunks/{chunk-NLNQNBZ2.js → chunk-WD6YQI5M.js} +1 -1
- package/chunks/chunk-WFNEY5G7.js +347 -0
- package/chunks/{chunk-XKBFYTCD.js → chunk-WK6DEH3Q.js} +46 -0
- package/chunks/{chunk-36HCNKDS.js → chunk-WKVZES7O.js} +65 -14
- package/chunks/{chunk-BWAMMKIS.js → chunk-WLLRNQVT.js} +135 -6
- package/chunks/{chunk-MHAADZOZ.js → chunk-WMSP3XZK.js} +3 -3
- package/chunks/{chunk-IL5M5NYD.js → chunk-WUTXSXPP.js} +11 -9
- package/chunks/{chunk-NJQTG2G3.js → chunk-XE5ZFBVD.js} +11 -11
- package/chunks/{chunk-OLTN767L.js → chunk-XO3Z27IL.js} +2 -2
- package/chunks/{chunk-VX63RJXE.js → chunk-XX5HQLCZ.js} +7 -0
- package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
- package/chunks/{chunk-V2P3DOQR.js → chunk-YDFOHRS5.js} +1 -1
- package/chunks/{chunk-QMUYLYT5.js → chunk-YGFJ6BRT.js} +1 -1
- package/chunks/{chunk-LK2WUCDQ.js → chunk-YM6KUQ2S.js} +1 -1
- package/chunks/{chunk-F42YYSCK.js → chunk-YVF4PKCV.js} +8 -8
- package/chunks/{chunk-LDVNJZGH.js → chunk-Z2H5HQS3.js} +17 -8
- package/chunks/chunk-Z72PLR74.js +36 -0
- package/chunks/{chunk-BWQLXU37.js → chunk-ZDHXRKRG.js} +381 -86
- package/chunks/{chunk-BHTYRHJF.js → chunk-ZJ7JQUGY.js} +4 -1
- package/chunks/{chunk-4ALNJDHL.js → chunk-ZKIAGIGH.js} +87 -4
- package/chunks/{chunk-VG3Q2NC4.js → chunk-ZNI3YJHS.js} +32 -12
- package/chunks/chunk-ZRZZLM37.js +2780 -0
- package/chunks/{chunk-Q2LVVIKF.js → chunk-ZZUXUBEB.js} +29 -12
- package/chunks/codex-subagent-executor-SM3TUSBA.js +586 -0
- package/chunks/{config-utils-L6KLDYIV.js → config-utils-JHKHFOG6.js} +60 -56
- package/chunks/{contextCommand-UYEH7NIU.js → contextCommand-XE4NDYQW.js} +58 -54
- package/chunks/{core-runtime-NVHT3Z3V.js → core-runtime-PNCWH3RE.js} +58 -55
- package/chunks/{create-sub-session-TIGCFGCS.js → create-sub-session-MSGNIM37.js} +5 -2
- package/chunks/{create-sub-session-YWASE5VH.js → create-sub-session-P7E5Y3HY.js} +169 -89
- package/chunks/{cron-create-AKWX67FO.js → cron-create-U2JJ5CCF.js} +3 -3
- package/chunks/{cron-delete-XPB6IYZJ.js → cron-delete-7DM4LJWD.js} +2 -2
- package/chunks/{cron-list-XBKO4WU5.js → cron-list-VCUSZK2Y.js} +2 -2
- package/chunks/{daemon-G5TYKZD6.js → daemon-NJB4PWZ7.js} +3 -1
- package/chunks/{daemon-git-worktree-guard-FOW4RQSK.js → daemon-git-worktree-guard-JFD5VZRN.js} +58 -54
- package/chunks/{daemon-status-provider-O5KQZYMP.js → daemon-status-provider-A3VFVFWW.js} +68 -63
- package/chunks/{daemon-trust-policy-3ATXEON7.js → daemon-trust-policy-NPZ47MZH.js} +64 -60
- package/chunks/{daemon-trust-policy-monitor-7MCNDNEC.js → daemon-trust-policy-monitor-XG2CHL3Z.js} +64 -60
- package/chunks/{de-UU2YTO37.js → de-VGY3VNBU.js} +3 -3
- package/chunks/{deferred-core-runtime-JK5IXL5K.js → deferred-core-runtime-V42EMU27.js} +56 -52
- package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
- package/chunks/{display-image-NAH3AZ63.js → display-image-QTHALY6N.js} +3 -3
- package/chunks/{dist-KLZ7XGEQ.js → dist-2QYIVNS6.js} +1 -4
- package/chunks/{dist-AHJYPSJL.js → dist-GUB7QRYA.js} +2 -5
- package/chunks/{dist-ZXTZTE54.js → dist-MPUZZOG5.js} +4 -17
- package/chunks/{dist-F2DVGTL3.js → dist-NIOJXMGY.js} +111 -101
- package/chunks/{dist-KJGRVIGJ.js → dist-PA7WPFVE.js} +5 -36
- package/chunks/{dist-AIKC5E5P.js → dist-SE4J6Z4O.js} +43 -669
- package/chunks/{dist-H6G3K26N.js → dist-T6DDPDLQ.js} +14 -34
- package/chunks/{dist-GWNQVPZT.js → dist-TFGETXFN.js} +10 -33
- package/chunks/{dist-ZA52JXAS.js → dist-VDLSBCLM.js} +1 -5
- package/chunks/{edit-SY35KYIE.js → edit-E2ZGJDBJ.js} +46 -42
- package/chunks/{en-CAJHTIQT.js → en-E5ZO5TZW.js} +5 -3
- package/chunks/{enter-worktree-54L5QJ3N.js → enter-worktree-CAARFWBI.js} +6 -5
- package/chunks/{enterPlanMode-HXX6KQJR.js → enterPlanMode-442YAAZB.js} +43 -39
- package/chunks/{environment-DKXHG4HB.js → environment-DCJ5FVHM.js} +59 -55
- package/chunks/{errors-ADY7LQJJ.js → errors-ZWTDW2NJ.js} +58 -54
- package/chunks/exec-RPKEY6HP.js +505 -0
- package/chunks/{exit-worktree-EORJDKDS.js → exit-worktree-JXGGUOBP.js} +6 -5
- package/chunks/{exitPlanMode-HSK2CQI6.js → exitPlanMode-4PLQOFOO.js} +43 -39
- package/chunks/{fast-path-U636VWN2.js → fast-path-DBSGDGB3.js} +10 -10
- package/chunks/{fast-path-settings-V7MI7EZJ.js → fast-path-settings-XDYX7X5Z.js} +2 -2
- package/chunks/{fr-HKNWVXRJ.js → fr-UAZJJH5N.js} +3 -3
- package/chunks/{glob-GUGGTH5L.js → glob-VWOE4W7K.js} +43 -39
- package/chunks/{goal-tools-PXYRSQGX.js → goal-tools-K6SIBXMB.js} +49 -41
- package/chunks/{grep-3PKFKLCA.js → grep-H2I33VAO.js} +8 -3
- package/chunks/{handleAutoUpdate-5KHS4HIN.js → handleAutoUpdate-NCC3XELY.js} +61 -57
- package/chunks/{i18n-KSGKMUPT.js → i18n-GO7JI4PT.js} +57 -53
- package/chunks/{image-gen-OCCR2WWU.js → image-gen-5G2TQ3DY.js} +6 -5
- package/chunks/{initializer-YYT5XEZF.js → initializer-BXKAW5A6.js} +64 -60
- package/chunks/{installationInfo-UNSBPYW2.js → installationInfo-5JONIX62.js} +57 -53
- package/chunks/{ja-GJS5RZGU.js → ja-2RITCMAJ.js} +3 -3
- package/chunks/list-QW74LCLS.js +133 -0
- package/chunks/{list-agents-QLDXS5OD.js → list-agents-EWDCEPIW.js} +3 -3
- package/chunks/{llm-XGGLBGPH.js → llm-FJHSMJTM.js} +161 -125
- package/chunks/{llm-content-generator-ZHQQT5W7.js → llm-content-generator-3VLLPQS4.js} +14 -7
- package/chunks/{loadedSettingsAdapter-3DXLASK7.js → loadedSettingsAdapter-OLMQSKVC.js} +64 -60
- package/chunks/{loggingContentGenerator-V72OCCJO.js → loggingContentGenerator-IMLIJULY.js} +47 -43
- package/chunks/{loop-wakeup-HHMYIC7Z.js → loop-wakeup-VG6CGBQA.js} +4 -4
- package/chunks/{ls-N7ABR6HI.js → ls-6ZB3BEIR.js} +1 -1
- package/chunks/{lsp-LTOFWG5P.js → lsp-M54FQARP.js} +5 -1
- package/chunks/{managed-npm-update-HV5LPZH2.js → managed-npm-update-LXLBWCNA.js} +57 -53
- package/chunks/mcp-FOXA3372.js +127 -0
- package/chunks/model-configuration-SCOI2KPF.js +140 -0
- package/chunks/modelConfigUtils-EA44S64C.js +119 -0
- package/chunks/{monitor-TLBNM4MV.js → monitor-TJAHYCCY.js} +43 -39
- package/chunks/{nonInteractiveCli-LSJSQ2W4.js → nonInteractiveCli-QH2HABWC.js} +112 -107
- package/chunks/{notebook-edit-OSPOLZP6.js → notebook-edit-WEMSBUBS.js} +45 -41
- package/chunks/{openaiContentGenerator-BE4S5TRD.js → openaiContentGenerator-WD5DWYOA.js} +24 -19
- package/chunks/{openaiResponsesContentGenerator-RTCAJ5V5.js → openaiResponsesContentGenerator-AWRYZLJU.js} +110 -19
- package/chunks/{pidfile-H32FEPWA.js → pidfile-TQL2LCEG.js} +56 -52
- package/chunks/{processUtils-SSLIPDEA.js → processUtils-6ZU56DCI.js} +2 -2
- package/chunks/{prompt-terminal-ledger-I5SLL6UF.js → prompt-terminal-ledger-3HAKHXFV.js} +57 -53
- package/chunks/{pt-FXMYXEUV.js → pt-5ZF7ZQUV.js} +3 -3
- package/chunks/{qwenContentGenerator-TMQC623Z.js → qwenContentGenerator-3OIZQZLC.js} +47 -43
- package/chunks/{qwenOAuth2-3ZRQHHTC.js → qwenOAuth2-WIEUEFEY.js} +5 -4
- package/chunks/{read-file-T2QAIZE2.js → read-file-2PWWL6J2.js} +9 -8
- package/chunks/{read-mcp-resource-B37WANAQ.js → read-mcp-resource-LPSWXVOD.js} +1 -1
- package/chunks/{record-artifact-OAXWXZ5D.js → record-artifact-PXMNP7GZ.js} +3 -3
- package/chunks/{record-source-D7R7X3GT.js → record-source-2GSY5JD5.js} +6 -6
- package/chunks/{report-findings-AR3VC6EQ.js → report-findings-W6GR7SYZ.js} +4 -4
- package/chunks/{request-shutdown-IKNWTX5M.js → request-shutdown-53SNYGVR.js} +5 -5
- package/chunks/{resumeHistoryUtils-QLKDH5GY.js → resumeHistoryUtils-S4TEUTKE.js} +63 -59
- package/chunks/{ripGrep-YGWL7KCV.js → ripGrep-5NMGLMLX.js} +13 -11
- package/chunks/{ru-RMHURE5U.js → ru-7BNZFQKG.js} +3 -3
- package/chunks/{run-qwen-serve-26KZDECC.js → run-qwen-serve-6MGYRK4V.js} +314 -127
- package/chunks/{runtime-BMEIVDDG.js → runtime-ZJYUQCPP.js} +69 -65
- package/chunks/{scheduled-tasks-NCFPP6VQ.js → scheduled-tasks-5MKF4EV3.js} +66 -60
- package/chunks/{scheduler-47TVMUVN.js → scheduler-72DZWRH5.js} +58 -54
- package/chunks/{sdk-exporters-http-VWTF4W6K.js → sdk-exporters-http-3R2TRQHE.js} +2 -1
- package/chunks/{sdk-impl-G6FVTBQZ.js → sdk-impl-4WF3VZ2F.js} +3 -3
- package/chunks/{send-message-TWOGWCBG.js → send-message-UMJKN27Q.js} +7 -7
- package/chunks/{serve-KL3G6LQQ.js → serve-7ZDMMA7I.js} +66 -62
- package/chunks/{server-LBPYXZ5G.js → server-ONK5RTEV.js} +783 -350
- package/chunks/{session-YG6742LO.js → session-XQW2LM4S.js} +117 -112
- package/chunks/{session-attachments-root-OUBQDYC4.js → session-attachments-root-Q5IUCMQV.js} +56 -52
- package/chunks/{session-pr-refresh-EKGMYNAW.js → session-pr-refresh-MVECWT3W.js} +66 -60
- package/chunks/{settings-DDNHJX2L.js → settings-DL6K2HQ3.js} +67 -63
- package/chunks/{shell-KUCXWITU.js → shell-BLP25QJU.js} +43 -39
- package/chunks/{skill-JQLKPNWZ.js → skill-7KURUNLD.js} +128 -23
- package/chunks/{skill-settings-XERQCUXZ.js → skill-settings-MY76LM46.js} +72 -60
- package/chunks/{spawnChannel-GQ45QFGB.js → spawnChannel-IJLH3Z74.js} +60 -55
- package/chunks/{standalone-update-PRF3ILGZ.js → standalone-update-YQKN7VNO.js} +58 -54
- package/chunks/{start-opentui-ui-JDSOZE3N.js → start-opentui-ui-ORNGKZTG.js} +2693 -2160
- package/chunks/{startInteractiveUI-RRW3JVHN.js → startInteractiveUI-PRLIKB4U.js} +1610 -1773
- package/chunks/{syntheticOutput-F6F27JMK.js → syntheticOutput-EX5L5GYI.js} +2 -2
- package/chunks/{task-create-Y623TBHB.js → task-create-75HVPEAH.js} +7 -7
- package/chunks/{task-list-FCPEEGWL.js → task-list-ZLJSMRFA.js} +2 -2
- package/chunks/{task-stop-QTKZXLPH.js → task-stop-MD7P6QGK.js} +1 -1
- package/chunks/{task-update-YLSXF25N.js → task-update-RI7QNVDP.js} +20 -13
- package/chunks/{team-create-5DRLOLOE.js → team-create-ANLKOQ44.js} +43 -39
- package/chunks/{team-delete-S7TLHZCF.js → team-delete-RIDINW6I.js} +1 -1
- package/chunks/{team-plan-approval-MWSGAL5T.js → team-plan-approval-EFUENI6Y.js} +43 -39
- package/chunks/{terminal-image-renderer-H7PD4FQW.js → terminal-image-renderer-CXMFIWKC.js} +58 -54
- package/chunks/{theme-manager-7AV73D6R.js → theme-manager-JUFYQDQQ.js} +56 -52
- package/chunks/{todoWrite-5QI2H2FW.js → todoWrite-XSTG2VT5.js} +6 -3
- package/chunks/{tool-search-UGYTBLUV.js → tool-search-SNCEA4VA.js} +17 -12
- package/chunks/{total-session-admission-JIHSTJ5S.js → total-session-admission-UHYNUO3L.js} +63 -58
- package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-NZ3QACD7.js} +1 -1
- package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-WXHLMORC.js} +1 -1
- package/chunks/{trustedFolders-5VCBXFOP.js → trustedFolders-YBR5URPG.js} +57 -53
- package/chunks/{update-relaunch-4LF3APCV.js → update-relaunch-L6MTSN76.js} +5 -5
- package/chunks/{updateCheck-4T3WUE5F.js → updateCheck-Z3SPZXHC.js} +60 -56
- package/chunks/{useAutoAcceptIndicator-UMGB64Z6.js → useAutoAcceptIndicator-PR5XGMO6.js} +68 -64
- package/chunks/{validateNonInterActiveAuth-GFJ72U2C.js → validateNonInterActiveAuth-KFLTWEYW.js} +109 -104
- package/chunks/{version-EAAZN4T2.js → version-NGAKFVUF.js} +1 -1
- package/chunks/{web-fetch-VRU3A2NI.js → web-fetch-WPGTHGU5.js} +15 -13
- package/chunks/web-search-JT63IJJV.js +39 -0
- package/chunks/{web-shell-static-CCN4JZEE.js → web-shell-static-T7UGLVE4.js} +2 -7
- package/chunks/{workflow-UHPFALVZ.js → workflow-EB63BAL4.js} +179 -79
- package/chunks/workspace-providers-status-NEPR67D2.js +133 -0
- package/chunks/{workspace-registration-store-A7RGKW62.js → workspace-registration-store-CFWXOMGH.js} +2 -2
- package/chunks/{workspace-registry-C2NGE6SD.js → workspace-registry-6KRZXOGB.js} +63 -58
- package/chunks/{workspace-runtime-coordinator-QKMZ24YF.js → workspace-runtime-coordinator-SP4X3UVH.js} +66 -59
- package/chunks/{workspace-service-RQTTAGGC.js → workspace-service-PRMYJTTV.js} +70 -65
- package/chunks/workspace-skills-status-VYTZJ5MB.js +130 -0
- package/chunks/{workspace-trust-reconciler-KFWATZUU.js → workspace-trust-reconciler-B4QMGDMI.js} +73 -68
- package/chunks/{write-file-DPVB2SBQ.js → write-file-EGBMW7TS.js} +45 -41
- package/chunks/{zh-TW-2K2WRFPY.js → zh-TW-7PRVUGLW.js} +5 -3
- package/chunks/{zh-S5V3Z5CR.js → zh-V2EYTYJP.js} +5 -3
- package/chunks/{zoom-image-S7AWLAPC.js → zoom-image-UR6K2LDR.js} +11 -10
- package/cli.js +18 -17
- package/codeModeHost.js +4425 -0
- package/export-transcript-document.css +1 -1
- package/export-transcript-document.js +151 -151
- package/locales/ca.js +5 -6
- package/locales/de.js +5 -6
- package/locales/en.js +7 -6
- package/locales/fr.js +6 -6
- package/locales/ja.js +5 -6
- package/locales/pt.js +5 -6
- package/locales/ru.js +6 -6
- package/locales/zh-TW.js +7 -6
- package/locales/zh.js +7 -6
- package/package.json +4 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-nU24rpIE.js → abnfDiagram-VCTEODGH-S_JCiANq.js} +1 -1
- package/web-shell/assets/{arc-D1hTu8QI.js → arc-DP-839Xn.js} +1 -1
- package/web-shell/assets/architectureDiagram-5GKGNRK7-C8rCd2KK.js +36 -0
- package/web-shell/assets/blockDiagram-NRAW4CY4-DQR82jwr.js +129 -0
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-kEFoC1ei.js → c4Diagram-UCG6FXSJ-D21PNMRP.js} +4 -4
- package/web-shell/assets/channel-BgGrpX_z.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DbT9wS7j.js → chunk-2Q5K7J3B-KdDInGLi.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-CNbULt6O.js → chunk-5VM5RSS4-ltb7zRmH.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-CbQRy4Tb.js → chunk-F27PBJKO-DcpQA0Ng.js} +1 -1
- package/web-shell/assets/chunk-G27WJ6UU-C8NDZxcy.js +231 -0
- package/web-shell/assets/chunk-JWPE2WC7-hXhhHTs1.js +1 -0
- package/web-shell/assets/chunk-LCL6LL3I-CLaOR-Hl.js +206 -0
- package/web-shell/assets/chunk-POPQ4Y6H-Y5_qlB1N.js +1 -0
- package/web-shell/assets/{chunk-SVP7TREG-DyBb2Axj.js → chunk-SVP7TREG-BWX2Voh7.js} +4 -4
- package/web-shell/assets/{chunk-XXDRQBXY-BIA0eb5B.js → chunk-XXDRQBXY-1wmj_kXI.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-jUH7ADYs.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-jUH7ADYs.js +1 -0
- package/web-shell/assets/cose-bilkent-JH36ORCC-DpLc-cdd.js +1 -0
- package/web-shell/assets/cynefin-OW5HDTMX-DhxGiPZW.js +178 -0
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-LENf_IUy.js → cynefinDiagram-5FMLGOSQ-Dl3jfBry.js} +1 -1
- package/web-shell/assets/{cytoscape.esm-CUqq0XTU.js → cytoscape.esm-DJK6lGiH.js} +3 -3
- package/web-shell/assets/dagre-3AP2YEHR-C8FA8vJk.js +4 -0
- package/web-shell/assets/diagram-S7CK7UJ4-D-quIUtW.js +30 -0
- package/web-shell/assets/diagram-UQ7AKVKN-Bjo09Uts.js +41 -0
- package/web-shell/assets/diagram-VSXAHHWV-IoI3ttq4.js +3 -0
- package/web-shell/assets/diagram-VX7I27RA-BKyOZ5SO.js +24 -0
- package/web-shell/assets/diagram-Z3DM3KII-Cu_OHEhw.js +24 -0
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-BGpiquRm.js → ebnfDiagram-PWID7BFC-UVB-bbPg.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-D0besu_U.js → erDiagram-SSCWMZ5O-l8drddto.js} +13 -13
- package/web-shell/assets/flowDiagram-A5DVABFB-DU1I_VAI.js +168 -0
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CNlsAeNr.js → ganttDiagram-EL5Y4UJY-BLRH05uB.js} +1 -1
- package/web-shell/assets/gitGraphDiagram-WWUBYQGX-Czg_BkRE.js +106 -0
- package/web-shell/assets/index-CmMV8Jla.js +3 -0
- package/web-shell/assets/{index-CGT341lL.js → index-DohPy72Z.js} +1 -1
- package/web-shell/assets/index-DyMtNYuu.js +2207 -0
- package/web-shell/assets/index-n6N-2a3v.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-Bpai64Ll.js → infoDiagram-RXCK75RN-BpBvjkro.js} +1 -1
- package/web-shell/assets/ishikawaDiagram-5VMMS53U-phy1l3jm.js +70 -0
- package/web-shell/assets/{journeyDiagram-EYS64GPL-iz_DKgFX.js → journeyDiagram-EYS64GPL-oY-9LgVS.js} +1 -1
- package/web-shell/assets/kanban-definition-3QL26DDD-slZoy-sc.js +89 -0
- package/web-shell/assets/{layout-qEvKgnvU.js → layout-0hnn_P9l.js} +1 -1
- package/web-shell/assets/{linear-C6lklGdq.js → linear-7Wqe8DRy.js} +1 -1
- package/web-shell/assets/mermaid.core-BaK8n0bq.js +312 -0
- package/web-shell/assets/mindmap-definition-FBJOCRG2-BedUdy_E.js +96 -0
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BhD0q0i6.js → pegDiagram-XKGWAZYB-DQLRdmxq.js} +1 -1
- package/web-shell/assets/pieDiagram-E7YTZNPT-UC20w9-5.js +39 -0
- package/web-shell/assets/quadrantDiagram-AXDQQJYC-CQx2Hmk3.js +7 -0
- package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-E1g2KIFK.js → railroadDiagram-O6MQD6OU-2UEJe_y-.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CuerYJOe.js → requirementDiagram-EFPCY7ZU-DOAJggB4.js} +13 -13
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CqWyCZGA.js → sankeyDiagram-P5KCCOFB-DnQ_qJo7.js} +7 -7
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-B-YWb8x4.js → sequenceDiagram-WJ2MYXX4-DZrZUoCo.js} +16 -16
- package/web-shell/assets/sizeCapture-X5ZJPWSS-B5G4GDQB.js +1 -0
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-C8LDpNHS.js → stateDiagram-HBIQ2CUA-Bn1cT0qF.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BF3xtNvJ.js +1 -0
- package/web-shell/assets/swimlanes-XN3QIQJK-Bzhcdn87.js +1 -0
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B753mA3E.js +8 -0
- package/web-shell/assets/timeline-definition-24CTP7MA-BqZ_3D10.js +120 -0
- package/web-shell/assets/vennDiagram-4TSXK5OY-z9kw1kmm.js +34 -0
- package/web-shell/assets/wardleyDiagram-VM6X3IG4-Cydp1zJW.js +78 -0
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-ruD2Wjhg.js → xychartDiagram-S5SC5T6Z-j4X1lQKo.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-7Q2AXRDJ.js +0 -114
- package/chunks/chunk-AEY27Z35.js +0 -1411
- package/chunks/chunk-CFKIH3D3.js +0 -50
- package/chunks/chunk-HWVUSYSN.js +0 -126
- package/chunks/chunk-QHMLYMMS.js +0 -32
- package/chunks/chunk-SAH4BD2J.js +0 -92
- package/chunks/chunk-TWUKBNWM.js +0 -86
- package/chunks/chunk-ZTTC7T4X.js +0 -126
- package/chunks/list-YL6LDQKQ.js +0 -129
- package/chunks/mcp-IYVSIW6O.js +0 -123
- package/chunks/web-search-NEGYQNDJ.js +0 -912
- package/chunks/workspace-providers-status-AEYISSU2.js +0 -127
- package/chunks/workspace-skills-status-5HWZU3HX.js +0 -126
- package/web-shell/assets/architectureDiagram-5GKGNRK7-B_fgkKe7.js +0 -36
- package/web-shell/assets/blockDiagram-NRAW4CY4-C3pddUNg.js +0 -129
- package/web-shell/assets/channel-Blod4z1X.js +0 -1
- package/web-shell/assets/chunk-G27WJ6UU-CVbXTxYk.js +0 -231
- package/web-shell/assets/chunk-JWPE2WC7-D89c_BXy.js +0 -1
- package/web-shell/assets/chunk-LCL6LL3I-B7-I_9KB.js +0 -206
- package/web-shell/assets/chunk-POPQ4Y6H-DcLQFzS4.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-D6hFDMqb.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-D6hFDMqb.js +0 -1
- package/web-shell/assets/cose-bilkent-JH36ORCC-Db2FYN85.js +0 -1
- package/web-shell/assets/cynefin-OW5HDTMX-i4GwmBVy.js +0 -178
- package/web-shell/assets/dagre-3AP2YEHR-CF9XVrD9.js +0 -4
- package/web-shell/assets/diagram-S7CK7UJ4-DD5PJfSm.js +0 -30
- package/web-shell/assets/diagram-UQ7AKVKN-CjD_sBMj.js +0 -41
- package/web-shell/assets/diagram-VSXAHHWV-U5WwMqyA.js +0 -3
- package/web-shell/assets/diagram-VX7I27RA-BujpHJJf.js +0 -24
- package/web-shell/assets/diagram-Z3DM3KII-3ZLtKEXo.js +0 -24
- package/web-shell/assets/flowDiagram-A5DVABFB-9DwDuIyr.js +0 -168
- package/web-shell/assets/gitGraphDiagram-WWUBYQGX-C_pPFiTR.js +0 -106
- package/web-shell/assets/index-BYWs4JWq.js +0 -3
- package/web-shell/assets/index-D3YS6KuJ.js +0 -2173
- package/web-shell/assets/index-eBxK3rs2.css +0 -36
- package/web-shell/assets/ishikawaDiagram-5VMMS53U-ktpJFq4r.js +0 -70
- package/web-shell/assets/kanban-definition-3QL26DDD-m_gG00Yt.js +0 -89
- package/web-shell/assets/mermaid.core-DSCYB_2P.js +0 -312
- package/web-shell/assets/mindmap-definition-FBJOCRG2-DRQbT8w-.js +0 -96
- package/web-shell/assets/pieDiagram-E7YTZNPT-BvIGQCSd.js +0 -39
- package/web-shell/assets/quadrantDiagram-AXDQQJYC-BDQtfpU-.js +0 -7
- package/web-shell/assets/sizeCapture-X5ZJPWSS-BB7YY4Tl.js +0 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C4CbdvGa.js +0 -1
- package/web-shell/assets/swimlanes-XN3QIQJK-D94vOoxZ.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN--QNSIOC8.js +0 -8
- package/web-shell/assets/timeline-definition-24CTP7MA-C9C8uEYm.js +0 -120
- package/web-shell/assets/vennDiagram-4TSXK5OY-CYzMHbVW.js +0 -34
- package/web-shell/assets/wardleyDiagram-VM6X3IG4-G9nhtLES.js +0 -78
- package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
|
@@ -11,40 +11,49 @@ import {
|
|
|
11
11
|
isActiveWorkflowStatus,
|
|
12
12
|
isTerminalWorkflowStatus,
|
|
13
13
|
isWorkflowRunPersistenceActive,
|
|
14
|
+
parseSkillContent,
|
|
14
15
|
rebuildToolRegistryOnOverride,
|
|
15
16
|
resolveExternalWorktreeDir,
|
|
16
17
|
toModelVisibleSubagentResult
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CFSBWJBB.js";
|
|
19
|
+
import {
|
|
20
|
+
parsePositiveIntegerEnv
|
|
21
|
+
} from "./chunk-6PVPNMXU.js";
|
|
18
22
|
import {
|
|
19
23
|
GitWorktreeService,
|
|
20
24
|
generateAgentWorktreeSlug,
|
|
21
25
|
writeWorktreeSessionMarker
|
|
22
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-WKVZES7O.js";
|
|
23
27
|
import {
|
|
24
|
-
|
|
25
|
-
} from "./chunk-
|
|
28
|
+
resolveBundleDir
|
|
29
|
+
} from "./chunk-ACHCT36C.js";
|
|
26
30
|
import {
|
|
27
31
|
SUBAGENT_PLAN_LIFECYCLE_TOOLS
|
|
28
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-AEWCOE64.js";
|
|
29
33
|
import {
|
|
30
34
|
runWithAgentContext
|
|
31
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-BW2SMO6L.js";
|
|
32
36
|
import {
|
|
33
37
|
read,
|
|
34
38
|
writeLine
|
|
35
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-NRUKL236.js";
|
|
40
|
+
import {
|
|
41
|
+
REASONING_EFFORT_TIERS,
|
|
42
|
+
normalizeReasoningEffort
|
|
43
|
+
} from "./chunk-ARDHE6MM.js";
|
|
36
44
|
import {
|
|
37
45
|
atomicWriteFile
|
|
38
46
|
} from "./chunk-XFFRI3WM.js";
|
|
39
47
|
import {
|
|
40
48
|
stripAnsiAndControl
|
|
41
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-4Y2I3CI3.js";
|
|
42
50
|
import {
|
|
43
51
|
SyntheticOutputTool
|
|
44
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-SYROIHU7.js";
|
|
45
53
|
import {
|
|
46
|
-
ToolNames
|
|
47
|
-
|
|
54
|
+
ToolNames,
|
|
55
|
+
resolveBuiltinToolName
|
|
56
|
+
} from "./chunk-RSWBT7AZ.js";
|
|
48
57
|
import {
|
|
49
58
|
Storage,
|
|
50
59
|
createDebugLogger
|
|
@@ -599,6 +608,7 @@ var MAX_LOG_LINES = 1e4;
|
|
|
599
608
|
var MAX_PHASE_ENTRIES = 1e4;
|
|
600
609
|
var ARGS_MAX_DEPTH = 64;
|
|
601
610
|
var DEFAULT_MAX_WALL_CLOCK_MS = 30 * 60 * 1e3;
|
|
611
|
+
var WORKFLOW_SYNC_EVALUATION_TIMEOUT_MS = 3e4;
|
|
602
612
|
function resolveMaxWallClockMs(opts) {
|
|
603
613
|
if (typeof opts.maxWallClockMs === "number" && opts.maxWallClockMs > 0) {
|
|
604
614
|
return opts.maxWallClockMs;
|
|
@@ -743,6 +753,18 @@ function createWorkflowSandbox(opts) {
|
|
|
743
753
|
pushLog: safeLog,
|
|
744
754
|
lastPhase: /* @__PURE__ */ __name(() => phases[phases.length - 1], "lastPhase"),
|
|
745
755
|
hostAgent: opts.dispatch,
|
|
756
|
+
// Effort tiers are resolved host-side so the sandbox accepts exactly the
|
|
757
|
+
// aliases `/effort` does without a second copy of the alias table. Takes
|
|
758
|
+
// and returns primitives only.
|
|
759
|
+
normalizeEffort: /* @__PURE__ */ __name((raw) => typeof raw === "string" ? normalizeReasoningEffort(raw) ?? null : null, "normalizeEffort"),
|
|
760
|
+
effortTiers: REASONING_EFFORT_TIERS.join(", "),
|
|
761
|
+
// A built-in tool named by its display name or a legacy alias becomes its
|
|
762
|
+
// tool name, so both spellings share one resume key; any other entry comes
|
|
763
|
+
// back as given for the host to judge. Primitives only.
|
|
764
|
+
canonicalDenyName: /* @__PURE__ */ __name((raw) => typeof raw === "string" ? resolveBuiltinToolName(raw) ?? raw : null, "canonicalDenyName"),
|
|
765
|
+
// JSON.stringify escapes only C0: strip DEL / C1 (incl. NEL) from a
|
|
766
|
+
// script-controlled echo so it cannot fragment a rejection message.
|
|
767
|
+
sanitizeForMessage: /* @__PURE__ */ __name((raw) => typeof raw === "string" ? stripAnsiAndControl(raw) : "", "sanitizeForMessage"),
|
|
746
768
|
// PR #4947 R2 T7 (qwen-code-ci-bot): host-side log hook for reviveInRealm's
|
|
747
769
|
// catch path. Mirrors the rejection-logging in settleToNullArray so an
|
|
748
770
|
// operator running with debug logging can distinguish "thunk rejected"
|
|
@@ -1216,7 +1238,7 @@ function createWorkflowSandbox(opts) {
|
|
|
1216
1238
|
// FIX-Round1-T13: throw on any opts key not in the allowlist \u2014 catches
|
|
1217
1239
|
// typos like { scema: ... } that previously slipped through the
|
|
1218
1240
|
// [key:string]: unknown index signature.
|
|
1219
|
-
const KNOWN_AGENT_OPTS = ['label', 'phase', 'schema', 'model', 'isolation', 'agentType', 'stallMs', 'workingDir'];
|
|
1241
|
+
const KNOWN_AGENT_OPTS = ['label', 'phase', 'schema', 'model', 'effort', 'isolation', 'agentType', 'stallMs', 'workingDir', 'disallowedTools'];
|
|
1220
1242
|
globalThis.agent = vmAsync(function (prompt, agentOpts) {
|
|
1221
1243
|
agentOpts = agentOpts || {};
|
|
1222
1244
|
const keys = Object.keys(agentOpts);
|
|
@@ -1274,11 +1296,6 @@ function createWorkflowSandbox(opts) {
|
|
|
1274
1296
|
);
|
|
1275
1297
|
}
|
|
1276
1298
|
}
|
|
1277
|
-
if (typeof agentOpts.phase === 'string' && agentOpts.phase.length > 0) {
|
|
1278
|
-
if (__b.lastPhase() !== agentOpts.phase) {
|
|
1279
|
-
__b.pushPhase(agentOpts.phase);
|
|
1280
|
-
}
|
|
1281
|
-
}
|
|
1282
1299
|
// SECURITY (P3 R2 self-review): user-script-controlled agentOpts
|
|
1283
1300
|
// cross the vm/host boundary verbatim via vmAsync's hostFn.apply.
|
|
1284
1301
|
// A Proxy / inherited-getter / non-plain object in agentOpts.schema
|
|
@@ -1297,6 +1314,55 @@ function createWorkflowSandbox(opts) {
|
|
|
1297
1314
|
String(e && e.message != null ? e.message : e)
|
|
1298
1315
|
);
|
|
1299
1316
|
}
|
|
1317
|
+
// effort and disallowedTools are validated on the REVIVED copy: that
|
|
1318
|
+
// is the object the host dispatch and the resume key see, so a getter
|
|
1319
|
+
// cannot show one value here and hand another to the dispatch. Both
|
|
1320
|
+
// are normalized in place (an effort alias becomes its tier; a deny
|
|
1321
|
+
// list has built-in display names mapped to tool names and is sorted
|
|
1322
|
+
// and de-duplicated) so equivalent spellings share one resume key.
|
|
1323
|
+
if (safeOpts.effort !== undefined) {
|
|
1324
|
+
var tier = __b.normalizeEffort(safeOpts.effort);
|
|
1325
|
+
if (tier === null) {
|
|
1326
|
+
throw new Error(
|
|
1327
|
+
"agent({effort}): unknown effort tier " + __b.sanitizeForMessage(JSON.stringify(safeOpts.effort)) + ". " +
|
|
1328
|
+
"Known tiers are: " + __b.effortTiers + "."
|
|
1329
|
+
);
|
|
1330
|
+
}
|
|
1331
|
+
safeOpts.effort = tier;
|
|
1332
|
+
}
|
|
1333
|
+
if (safeOpts.disallowedTools !== undefined) {
|
|
1334
|
+
var denied = safeOpts.disallowedTools;
|
|
1335
|
+
if (
|
|
1336
|
+
!Array.isArray(denied) ||
|
|
1337
|
+
denied.some(function (name) {
|
|
1338
|
+
return typeof name !== 'string' || name.length === 0 || name !== name.trim();
|
|
1339
|
+
})
|
|
1340
|
+
) {
|
|
1341
|
+
throw new Error(
|
|
1342
|
+
"agent({disallowedTools}): must be an array of non-empty tool-name strings " +
|
|
1343
|
+
"without surrounding whitespace, e.g. ['run_shell_command', 'write_file']."
|
|
1344
|
+
);
|
|
1345
|
+
}
|
|
1346
|
+
var uniqueDenied = [];
|
|
1347
|
+
for (var d = 0; d < denied.length; d++) {
|
|
1348
|
+
var deniedName = __b.canonicalDenyName(denied[d]);
|
|
1349
|
+
if (uniqueDenied.indexOf(deniedName) === -1) uniqueDenied.push(deniedName);
|
|
1350
|
+
}
|
|
1351
|
+
uniqueDenied.sort();
|
|
1352
|
+
if (uniqueDenied.length === 0) {
|
|
1353
|
+
delete safeOpts.disallowedTools;
|
|
1354
|
+
} else {
|
|
1355
|
+
safeOpts.disallowedTools = uniqueDenied;
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
// The phase is recorded only once every option gate above has passed,
|
|
1359
|
+
// so a call its options rejected leaves no phase that dispatched
|
|
1360
|
+
// nothing.
|
|
1361
|
+
if (typeof agentOpts.phase === 'string' && agentOpts.phase.length > 0) {
|
|
1362
|
+
if (__b.lastPhase() !== agentOpts.phase) {
|
|
1363
|
+
__b.pushPhase(agentOpts.phase);
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1300
1366
|
// SECURITY (PR #4947 R1 wenshao, extended for P3): vmAsync's resolve
|
|
1301
1367
|
// path is verbatim (no re-wrap of resolved values). Host-realm
|
|
1302
1368
|
// strings cross the boundary harmlessly because primitives have no
|
|
@@ -1582,7 +1648,7 @@ function createWorkflowSandbox(opts) {
|
|
|
1582
1648
|
throw workflowCancelledError();
|
|
1583
1649
|
}
|
|
1584
1650
|
const runOpts = {
|
|
1585
|
-
timeout:
|
|
1651
|
+
timeout: WORKFLOW_SYNC_EVALUATION_TIMEOUT_MS
|
|
1586
1652
|
};
|
|
1587
1653
|
const result = script.runInContext(ctx, runOpts);
|
|
1588
1654
|
const timeoutPromise = new Promise((_, reject) => {
|
|
@@ -1731,186 +1797,11 @@ var WorkflowBudgetExceededError = class extends Error {
|
|
|
1731
1797
|
}
|
|
1732
1798
|
};
|
|
1733
1799
|
|
|
1734
|
-
// packages/core/src/agents/runtime/workflow-stall.ts
|
|
1735
|
-
init_esbuild_shims();
|
|
1736
|
-
|
|
1737
|
-
// packages/core/src/agents/runtime/workflow-agent-failure.ts
|
|
1738
|
-
init_esbuild_shims();
|
|
1739
|
-
var WorkflowAgentFailedError = class extends Error {
|
|
1740
|
-
static {
|
|
1741
|
-
__name(this, "WorkflowAgentFailedError");
|
|
1742
|
-
}
|
|
1743
|
-
name = "WorkflowAgentFailedError";
|
|
1744
|
-
kind;
|
|
1745
|
-
terminateMode;
|
|
1746
|
-
constructor(message, kind, terminateMode) {
|
|
1747
|
-
super(message);
|
|
1748
|
-
this.kind = kind;
|
|
1749
|
-
this.terminateMode = terminateMode;
|
|
1750
|
-
}
|
|
1751
|
-
};
|
|
1752
|
-
function isWorkflowAgentFailedError(error) {
|
|
1753
|
-
return typeof error === "object" && error !== null && error.name === "WorkflowAgentFailedError";
|
|
1754
|
-
}
|
|
1755
|
-
__name(isWorkflowAgentFailedError, "isWorkflowAgentFailedError");
|
|
1756
|
-
var WorkflowAgentCapExceededError = class extends Error {
|
|
1757
|
-
static {
|
|
1758
|
-
__name(this, "WorkflowAgentCapExceededError");
|
|
1759
|
-
}
|
|
1760
|
-
name = "WorkflowAgentCapExceededError";
|
|
1761
|
-
constructor(maxAgents) {
|
|
1762
|
-
super(
|
|
1763
|
-
`Workflow exceeded the maximum of ${maxAgents} agent() calls per run.`
|
|
1764
|
-
);
|
|
1765
|
-
}
|
|
1766
|
-
};
|
|
1767
|
-
function isWorkflowRunLevelError(error) {
|
|
1768
|
-
if (typeof error !== "object" || error === null) return false;
|
|
1769
|
-
const name = error.name;
|
|
1770
|
-
return name === "WorkflowBudgetExceededError" || name === "WorkflowAgentCapExceededError";
|
|
1771
|
-
}
|
|
1772
|
-
__name(isWorkflowRunLevelError, "isWorkflowRunLevelError");
|
|
1773
|
-
var WORKFLOW_ABORT_REASON_STALLED = "stalled";
|
|
1774
|
-
|
|
1775
|
-
// packages/core/src/agents/runtime/workflow-stall.ts
|
|
1776
|
-
var DEFAULT_STALL_MS = 18e4;
|
|
1777
|
-
var MAX_STALL_ATTEMPTS = 3;
|
|
1778
|
-
var MAX_WORKFLOW_STALL_MS_ENV = "QWEN_CODE_WORKFLOW_STALL_SECONDS";
|
|
1779
|
-
function resolveStallMs(perCall, env = process.env) {
|
|
1780
|
-
if (typeof perCall === "number" && Number.isFinite(perCall)) {
|
|
1781
|
-
if (perCall === 0) return 0;
|
|
1782
|
-
if (perCall > 0) return perCall;
|
|
1783
|
-
}
|
|
1784
|
-
const raw = env[MAX_WORKFLOW_STALL_MS_ENV];
|
|
1785
|
-
const trimmed = raw?.trim();
|
|
1786
|
-
if (trimmed) {
|
|
1787
|
-
if (trimmed === "0") return 0;
|
|
1788
|
-
const sec = parsePositiveIntegerEnv(trimmed, 0);
|
|
1789
|
-
if (sec > 0) return sec * 1e3;
|
|
1790
|
-
}
|
|
1791
|
-
return DEFAULT_STALL_MS;
|
|
1792
|
-
}
|
|
1793
|
-
__name(resolveStallMs, "resolveStallMs");
|
|
1794
|
-
var debugLogger3 = createDebugLogger("WORKFLOW_STALL");
|
|
1795
|
-
function attachStallWatchdog(emitter, controller, stallMs) {
|
|
1796
|
-
if (stallMs <= 0) {
|
|
1797
|
-
return { stalled: /* @__PURE__ */ __name(() => false, "stalled"), dispose: /* @__PURE__ */ __name(() => {
|
|
1798
|
-
}, "dispose") };
|
|
1799
|
-
}
|
|
1800
|
-
let inFlightTools = 0;
|
|
1801
|
-
let fired = false;
|
|
1802
|
-
let timer;
|
|
1803
|
-
let disposed = false;
|
|
1804
|
-
const clear = /* @__PURE__ */ __name(() => {
|
|
1805
|
-
if (timer) {
|
|
1806
|
-
clearTimeout(timer);
|
|
1807
|
-
timer = void 0;
|
|
1808
|
-
}
|
|
1809
|
-
}, "clear");
|
|
1810
|
-
const arm = /* @__PURE__ */ __name(() => {
|
|
1811
|
-
clear();
|
|
1812
|
-
if (disposed || fired) return;
|
|
1813
|
-
if (inFlightTools > 0) return;
|
|
1814
|
-
timer = setTimeout(() => {
|
|
1815
|
-
if (disposed || fired) return;
|
|
1816
|
-
fired = true;
|
|
1817
|
-
debugLogger3.warn(
|
|
1818
|
-
`[Workflow] agent dispatch stalled \u2014 no progress for ${stallMs}ms; aborting.`
|
|
1819
|
-
);
|
|
1820
|
-
try {
|
|
1821
|
-
controller.abort(WORKFLOW_ABORT_REASON_STALLED);
|
|
1822
|
-
} catch (e) {
|
|
1823
|
-
debugLogger3.warn("stall watchdog abort threw:", e);
|
|
1824
|
-
}
|
|
1825
|
-
}, stallMs);
|
|
1826
|
-
if (typeof timer.unref === "function") {
|
|
1827
|
-
timer.unref();
|
|
1828
|
-
}
|
|
1829
|
-
}, "arm");
|
|
1830
|
-
const onActivity = /* @__PURE__ */ __name(() => arm(), "onActivity");
|
|
1831
|
-
const onToolCall = /* @__PURE__ */ __name(() => {
|
|
1832
|
-
inFlightTools += 1;
|
|
1833
|
-
clear();
|
|
1834
|
-
}, "onToolCall");
|
|
1835
|
-
const onToolResult = /* @__PURE__ */ __name(() => {
|
|
1836
|
-
inFlightTools = Math.max(0, inFlightTools - 1);
|
|
1837
|
-
arm();
|
|
1838
|
-
}, "onToolResult");
|
|
1839
|
-
emitter.on("round_start" /* ROUND_START */, onActivity);
|
|
1840
|
-
emitter.on("round_end" /* ROUND_END */, onActivity);
|
|
1841
|
-
emitter.on("stream_text" /* STREAM_TEXT */, onActivity);
|
|
1842
|
-
emitter.on("usage_metadata" /* USAGE_METADATA */, onActivity);
|
|
1843
|
-
emitter.on("tool_call" /* TOOL_CALL */, onToolCall);
|
|
1844
|
-
emitter.on("tool_result" /* TOOL_RESULT */, onToolResult);
|
|
1845
|
-
return {
|
|
1846
|
-
stalled: /* @__PURE__ */ __name(() => fired, "stalled"),
|
|
1847
|
-
dispose: /* @__PURE__ */ __name(() => {
|
|
1848
|
-
if (disposed) return;
|
|
1849
|
-
disposed = true;
|
|
1850
|
-
clear();
|
|
1851
|
-
emitter.off("round_start" /* ROUND_START */, onActivity);
|
|
1852
|
-
emitter.off("round_end" /* ROUND_END */, onActivity);
|
|
1853
|
-
emitter.off("stream_text" /* STREAM_TEXT */, onActivity);
|
|
1854
|
-
emitter.off("usage_metadata" /* USAGE_METADATA */, onActivity);
|
|
1855
|
-
emitter.off("tool_call" /* TOOL_CALL */, onToolCall);
|
|
1856
|
-
emitter.off("tool_result" /* TOOL_RESULT */, onToolResult);
|
|
1857
|
-
}, "dispose")
|
|
1858
|
-
};
|
|
1859
|
-
}
|
|
1860
|
-
__name(attachStallWatchdog, "attachStallWatchdog");
|
|
1861
|
-
async function runStallResilient(attemptFn, opts) {
|
|
1862
|
-
const { stallMs, signal, label } = opts;
|
|
1863
|
-
if (stallMs <= 0) {
|
|
1864
|
-
const emitter = new AgentEventEmitter();
|
|
1865
|
-
return attemptFn(signal ?? new AbortController().signal, emitter);
|
|
1866
|
-
}
|
|
1867
|
-
let attempt = 0;
|
|
1868
|
-
for (; ; ) {
|
|
1869
|
-
attempt += 1;
|
|
1870
|
-
const controller = new AbortController();
|
|
1871
|
-
let onParentAbort;
|
|
1872
|
-
if (signal) {
|
|
1873
|
-
if (signal.aborted) {
|
|
1874
|
-
controller.abort(signal.reason);
|
|
1875
|
-
} else {
|
|
1876
|
-
onParentAbort = /* @__PURE__ */ __name(() => controller.abort(signal.reason), "onParentAbort");
|
|
1877
|
-
signal.addEventListener("abort", onParentAbort);
|
|
1878
|
-
}
|
|
1879
|
-
}
|
|
1880
|
-
const emitter = new AgentEventEmitter();
|
|
1881
|
-
const watchdog = attachStallWatchdog(emitter, controller, stallMs);
|
|
1882
|
-
try {
|
|
1883
|
-
return await attemptFn(controller.signal, emitter);
|
|
1884
|
-
} catch (err) {
|
|
1885
|
-
if (signal?.aborted) throw err;
|
|
1886
|
-
if (watchdog.stalled() && attempt < MAX_STALL_ATTEMPTS) {
|
|
1887
|
-
debugLogger3.warn(
|
|
1888
|
-
`[Workflow] agent "${label ?? "workflow-agent"}" stalled (attempt ${attempt}/${MAX_STALL_ATTEMPTS}) \u2014 retrying.`
|
|
1889
|
-
);
|
|
1890
|
-
continue;
|
|
1891
|
-
}
|
|
1892
|
-
if (watchdog.stalled()) {
|
|
1893
|
-
throw new WorkflowAgentFailedError(
|
|
1894
|
-
`agent "${label ?? "workflow-agent"}" stalled on all ${MAX_STALL_ATTEMPTS} attempts (no progress for ${stallMs}ms each).`,
|
|
1895
|
-
"stalled"
|
|
1896
|
-
);
|
|
1897
|
-
}
|
|
1898
|
-
throw err;
|
|
1899
|
-
} finally {
|
|
1900
|
-
watchdog.dispose();
|
|
1901
|
-
if (onParentAbort && signal) {
|
|
1902
|
-
signal.removeEventListener("abort", onParentAbort);
|
|
1903
|
-
}
|
|
1904
|
-
}
|
|
1905
|
-
}
|
|
1906
|
-
}
|
|
1907
|
-
__name(runStallResilient, "runStallResilient");
|
|
1908
|
-
|
|
1909
1800
|
// packages/core/src/agents/runtime/workflow-saved.ts
|
|
1910
1801
|
init_esbuild_shims();
|
|
1911
1802
|
import { promises as fs } from "node:fs";
|
|
1912
1803
|
import * as path from "node:path";
|
|
1913
|
-
var
|
|
1804
|
+
var debugLogger3 = createDebugLogger("WORKFLOW_SAVED");
|
|
1914
1805
|
var WORKFLOW_NAME_PATTERN = /^[a-z][a-z0-9-]{0,40}$/;
|
|
1915
1806
|
function validateWorkflowName(name) {
|
|
1916
1807
|
if (!name) return "Workflow name is required.";
|
|
@@ -1940,7 +1831,7 @@ async function isSymlinkedRoot(dir) {
|
|
|
1940
1831
|
__name(isSymlinkedRoot, "isSymlinkedRoot");
|
|
1941
1832
|
async function listJsFiles(dir) {
|
|
1942
1833
|
if (await isSymlinkedRoot(dir)) {
|
|
1943
|
-
|
|
1834
|
+
debugLogger3.warn(`refusing symlinked saved-workflow dir: ${dir}`);
|
|
1944
1835
|
return [];
|
|
1945
1836
|
}
|
|
1946
1837
|
try {
|
|
@@ -1956,7 +1847,7 @@ async function listJsFiles(dir) {
|
|
|
1956
1847
|
} catch (e) {
|
|
1957
1848
|
const code = e?.code;
|
|
1958
1849
|
if (code !== "ENOENT") {
|
|
1959
|
-
|
|
1850
|
+
debugLogger3.warn(`listJsFiles failed for ${dir}: ${e}`);
|
|
1960
1851
|
}
|
|
1961
1852
|
return [];
|
|
1962
1853
|
}
|
|
@@ -2103,7 +1994,7 @@ __name(saveWorkflowScript, "saveWorkflowScript");
|
|
|
2103
1994
|
var INLINE_RUN_ID_PATTERN = /^wf_[0-9a-f]+$/;
|
|
2104
1995
|
async function persistInlineWorkflowScript(config, runId, script) {
|
|
2105
1996
|
if (!INLINE_RUN_ID_PATTERN.test(runId)) {
|
|
2106
|
-
|
|
1997
|
+
debugLogger3.warn(`refusing to persist a script for run id: ${runId}`);
|
|
2107
1998
|
return null;
|
|
2108
1999
|
}
|
|
2109
2000
|
const storage = config.storage;
|
|
@@ -2112,7 +2003,7 @@ async function persistInlineWorkflowScript(config, runId, script) {
|
|
|
2112
2003
|
const filePath = storage.getInlineWorkflowScriptPath(runId);
|
|
2113
2004
|
const dir = path.dirname(filePath);
|
|
2114
2005
|
if (await isSymlinkedRoot(storage.getGeneratedWorkflowsDir()) || await isSymlinkedRoot(dir)) {
|
|
2115
|
-
|
|
2006
|
+
debugLogger3.warn(
|
|
2116
2007
|
`refusing to persist an inline workflow script into a symlinked root: '${dir}'.`
|
|
2117
2008
|
);
|
|
2118
2009
|
return null;
|
|
@@ -2126,7 +2017,7 @@ async function persistInlineWorkflowScript(config, runId, script) {
|
|
|
2126
2017
|
});
|
|
2127
2018
|
return filePath;
|
|
2128
2019
|
} catch (error) {
|
|
2129
|
-
|
|
2020
|
+
debugLogger3.warn(
|
|
2130
2021
|
`failed to persist inline workflow script for ${runId}: ${error}`
|
|
2131
2022
|
);
|
|
2132
2023
|
return null;
|
|
@@ -2141,7 +2032,7 @@ async function deleteInlineWorkflowScript(config, runId) {
|
|
|
2141
2032
|
await fs.rm(storage.getInlineWorkflowScriptPath(runId), { force: true });
|
|
2142
2033
|
return true;
|
|
2143
2034
|
} catch (error) {
|
|
2144
|
-
|
|
2035
|
+
debugLogger3.warn(
|
|
2145
2036
|
`failed to delete inline workflow script for ${runId}: ${error}`
|
|
2146
2037
|
);
|
|
2147
2038
|
return false;
|
|
@@ -2155,6 +2046,179 @@ import { randomBytes } from "node:crypto";
|
|
|
2155
2046
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2156
2047
|
import * as os from "node:os";
|
|
2157
2048
|
|
|
2049
|
+
// packages/core/src/agents/runtime/workflow-agent-failure.ts
|
|
2050
|
+
init_esbuild_shims();
|
|
2051
|
+
var WorkflowAgentFailedError = class extends Error {
|
|
2052
|
+
static {
|
|
2053
|
+
__name(this, "WorkflowAgentFailedError");
|
|
2054
|
+
}
|
|
2055
|
+
name = "WorkflowAgentFailedError";
|
|
2056
|
+
kind;
|
|
2057
|
+
terminateMode;
|
|
2058
|
+
constructor(message, kind, terminateMode) {
|
|
2059
|
+
super(message);
|
|
2060
|
+
this.kind = kind;
|
|
2061
|
+
this.terminateMode = terminateMode;
|
|
2062
|
+
}
|
|
2063
|
+
};
|
|
2064
|
+
function isWorkflowAgentFailedError(error) {
|
|
2065
|
+
return typeof error === "object" && error !== null && error.name === "WorkflowAgentFailedError";
|
|
2066
|
+
}
|
|
2067
|
+
__name(isWorkflowAgentFailedError, "isWorkflowAgentFailedError");
|
|
2068
|
+
var WorkflowAgentCapExceededError = class extends Error {
|
|
2069
|
+
static {
|
|
2070
|
+
__name(this, "WorkflowAgentCapExceededError");
|
|
2071
|
+
}
|
|
2072
|
+
name = "WorkflowAgentCapExceededError";
|
|
2073
|
+
constructor(maxAgents) {
|
|
2074
|
+
super(
|
|
2075
|
+
`Workflow exceeded the maximum of ${maxAgents} agent() calls per run.`
|
|
2076
|
+
);
|
|
2077
|
+
}
|
|
2078
|
+
};
|
|
2079
|
+
function isWorkflowRunLevelError(error) {
|
|
2080
|
+
if (typeof error !== "object" || error === null) return false;
|
|
2081
|
+
const name = error.name;
|
|
2082
|
+
return name === "WorkflowBudgetExceededError" || name === "WorkflowAgentCapExceededError";
|
|
2083
|
+
}
|
|
2084
|
+
__name(isWorkflowRunLevelError, "isWorkflowRunLevelError");
|
|
2085
|
+
var WORKFLOW_ABORT_REASON_STALLED = "stalled";
|
|
2086
|
+
|
|
2087
|
+
// packages/core/src/agents/runtime/workflow-stall.ts
|
|
2088
|
+
init_esbuild_shims();
|
|
2089
|
+
var DEFAULT_STALL_MS = 18e4;
|
|
2090
|
+
var MAX_STALL_ATTEMPTS = 3;
|
|
2091
|
+
var MAX_WORKFLOW_STALL_MS_ENV = "QWEN_CODE_WORKFLOW_STALL_SECONDS";
|
|
2092
|
+
function resolveStallMs(perCall, env = process.env) {
|
|
2093
|
+
if (typeof perCall === "number" && Number.isFinite(perCall)) {
|
|
2094
|
+
if (perCall === 0) return 0;
|
|
2095
|
+
if (perCall > 0) return perCall;
|
|
2096
|
+
}
|
|
2097
|
+
const raw = env[MAX_WORKFLOW_STALL_MS_ENV];
|
|
2098
|
+
const trimmed = raw?.trim();
|
|
2099
|
+
if (trimmed) {
|
|
2100
|
+
if (trimmed === "0") return 0;
|
|
2101
|
+
const sec = parsePositiveIntegerEnv(trimmed, 0);
|
|
2102
|
+
if (sec > 0) return sec * 1e3;
|
|
2103
|
+
}
|
|
2104
|
+
return DEFAULT_STALL_MS;
|
|
2105
|
+
}
|
|
2106
|
+
__name(resolveStallMs, "resolveStallMs");
|
|
2107
|
+
var debugLogger4 = createDebugLogger("WORKFLOW_STALL");
|
|
2108
|
+
function attachStallWatchdog(emitter, controller, stallMs) {
|
|
2109
|
+
if (stallMs <= 0) {
|
|
2110
|
+
return { stalled: /* @__PURE__ */ __name(() => false, "stalled"), dispose: /* @__PURE__ */ __name(() => {
|
|
2111
|
+
}, "dispose") };
|
|
2112
|
+
}
|
|
2113
|
+
let inFlightTools = 0;
|
|
2114
|
+
let fired = false;
|
|
2115
|
+
let timer;
|
|
2116
|
+
let disposed = false;
|
|
2117
|
+
const clear = /* @__PURE__ */ __name(() => {
|
|
2118
|
+
if (timer) {
|
|
2119
|
+
clearTimeout(timer);
|
|
2120
|
+
timer = void 0;
|
|
2121
|
+
}
|
|
2122
|
+
}, "clear");
|
|
2123
|
+
const arm = /* @__PURE__ */ __name(() => {
|
|
2124
|
+
clear();
|
|
2125
|
+
if (disposed || fired) return;
|
|
2126
|
+
if (inFlightTools > 0) return;
|
|
2127
|
+
timer = setTimeout(() => {
|
|
2128
|
+
if (disposed || fired) return;
|
|
2129
|
+
fired = true;
|
|
2130
|
+
debugLogger4.warn(
|
|
2131
|
+
`[Workflow] agent dispatch stalled \u2014 no progress for ${stallMs}ms; aborting.`
|
|
2132
|
+
);
|
|
2133
|
+
try {
|
|
2134
|
+
controller.abort(WORKFLOW_ABORT_REASON_STALLED);
|
|
2135
|
+
} catch (e) {
|
|
2136
|
+
debugLogger4.warn("stall watchdog abort threw:", e);
|
|
2137
|
+
}
|
|
2138
|
+
}, stallMs);
|
|
2139
|
+
if (typeof timer.unref === "function") {
|
|
2140
|
+
timer.unref();
|
|
2141
|
+
}
|
|
2142
|
+
}, "arm");
|
|
2143
|
+
const onActivity = /* @__PURE__ */ __name(() => arm(), "onActivity");
|
|
2144
|
+
const onToolCall = /* @__PURE__ */ __name(() => {
|
|
2145
|
+
inFlightTools += 1;
|
|
2146
|
+
clear();
|
|
2147
|
+
}, "onToolCall");
|
|
2148
|
+
const onToolResult = /* @__PURE__ */ __name(() => {
|
|
2149
|
+
inFlightTools = Math.max(0, inFlightTools - 1);
|
|
2150
|
+
arm();
|
|
2151
|
+
}, "onToolResult");
|
|
2152
|
+
emitter.on("round_start" /* ROUND_START */, onActivity);
|
|
2153
|
+
emitter.on("round_end" /* ROUND_END */, onActivity);
|
|
2154
|
+
emitter.on("stream_text" /* STREAM_TEXT */, onActivity);
|
|
2155
|
+
emitter.on("usage_metadata" /* USAGE_METADATA */, onActivity);
|
|
2156
|
+
emitter.on("tool_call" /* TOOL_CALL */, onToolCall);
|
|
2157
|
+
emitter.on("tool_result" /* TOOL_RESULT */, onToolResult);
|
|
2158
|
+
return {
|
|
2159
|
+
stalled: /* @__PURE__ */ __name(() => fired, "stalled"),
|
|
2160
|
+
dispose: /* @__PURE__ */ __name(() => {
|
|
2161
|
+
if (disposed) return;
|
|
2162
|
+
disposed = true;
|
|
2163
|
+
clear();
|
|
2164
|
+
emitter.off("round_start" /* ROUND_START */, onActivity);
|
|
2165
|
+
emitter.off("round_end" /* ROUND_END */, onActivity);
|
|
2166
|
+
emitter.off("stream_text" /* STREAM_TEXT */, onActivity);
|
|
2167
|
+
emitter.off("usage_metadata" /* USAGE_METADATA */, onActivity);
|
|
2168
|
+
emitter.off("tool_call" /* TOOL_CALL */, onToolCall);
|
|
2169
|
+
emitter.off("tool_result" /* TOOL_RESULT */, onToolResult);
|
|
2170
|
+
}, "dispose")
|
|
2171
|
+
};
|
|
2172
|
+
}
|
|
2173
|
+
__name(attachStallWatchdog, "attachStallWatchdog");
|
|
2174
|
+
async function runStallResilient(attemptFn, opts) {
|
|
2175
|
+
const { stallMs, signal, label } = opts;
|
|
2176
|
+
if (stallMs <= 0) {
|
|
2177
|
+
const emitter = new AgentEventEmitter();
|
|
2178
|
+
return attemptFn(signal ?? new AbortController().signal, emitter);
|
|
2179
|
+
}
|
|
2180
|
+
let attempt = 0;
|
|
2181
|
+
for (; ; ) {
|
|
2182
|
+
attempt += 1;
|
|
2183
|
+
const controller = new AbortController();
|
|
2184
|
+
let onParentAbort;
|
|
2185
|
+
if (signal) {
|
|
2186
|
+
if (signal.aborted) {
|
|
2187
|
+
controller.abort(signal.reason);
|
|
2188
|
+
} else {
|
|
2189
|
+
onParentAbort = /* @__PURE__ */ __name(() => controller.abort(signal.reason), "onParentAbort");
|
|
2190
|
+
signal.addEventListener("abort", onParentAbort);
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
const emitter = new AgentEventEmitter();
|
|
2194
|
+
const watchdog = attachStallWatchdog(emitter, controller, stallMs);
|
|
2195
|
+
try {
|
|
2196
|
+
return await attemptFn(controller.signal, emitter);
|
|
2197
|
+
} catch (err) {
|
|
2198
|
+
if (signal?.aborted) throw err;
|
|
2199
|
+
if (watchdog.stalled() && attempt < MAX_STALL_ATTEMPTS) {
|
|
2200
|
+
debugLogger4.warn(
|
|
2201
|
+
`[Workflow] agent "${label ?? "workflow-agent"}" stalled (attempt ${attempt}/${MAX_STALL_ATTEMPTS}) \u2014 retrying.`
|
|
2202
|
+
);
|
|
2203
|
+
continue;
|
|
2204
|
+
}
|
|
2205
|
+
if (watchdog.stalled()) {
|
|
2206
|
+
throw new WorkflowAgentFailedError(
|
|
2207
|
+
`agent "${label ?? "workflow-agent"}" stalled on all ${MAX_STALL_ATTEMPTS} attempts (no progress for ${stallMs}ms each).`,
|
|
2208
|
+
"stalled"
|
|
2209
|
+
);
|
|
2210
|
+
}
|
|
2211
|
+
throw err;
|
|
2212
|
+
} finally {
|
|
2213
|
+
watchdog.dispose();
|
|
2214
|
+
if (onParentAbort && signal) {
|
|
2215
|
+
signal.removeEventListener("abort", onParentAbort);
|
|
2216
|
+
}
|
|
2217
|
+
}
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
2220
|
+
__name(runStallResilient, "runStallResilient");
|
|
2221
|
+
|
|
2158
2222
|
// packages/core/src/agents/runtime/workflow-journal.ts
|
|
2159
2223
|
init_esbuild_shims();
|
|
2160
2224
|
import { createHash } from "node:crypto";
|
|
@@ -2162,15 +2226,18 @@ import { constants, promises as fs2 } from "node:fs";
|
|
|
2162
2226
|
import path2 from "node:path";
|
|
2163
2227
|
var debugLogger5 = createDebugLogger("WORKFLOW_JOURNAL");
|
|
2164
2228
|
var JOURNAL_KEY_VERSION = "v2";
|
|
2229
|
+
var DISPATCH_AFFECTING_AGENT_OPTS = [
|
|
2230
|
+
"schema",
|
|
2231
|
+
"model",
|
|
2232
|
+
"effort",
|
|
2233
|
+
"isolation",
|
|
2234
|
+
"agentType",
|
|
2235
|
+
"workingDir",
|
|
2236
|
+
"disallowedTools"
|
|
2237
|
+
];
|
|
2165
2238
|
function canonicalizeAgentOpts(opts) {
|
|
2166
2239
|
const projected = {};
|
|
2167
|
-
for (const k of
|
|
2168
|
-
"schema",
|
|
2169
|
-
"model",
|
|
2170
|
-
"isolation",
|
|
2171
|
-
"agentType",
|
|
2172
|
-
"workingDir"
|
|
2173
|
-
]) {
|
|
2240
|
+
for (const k of DISPATCH_AFFECTING_AGENT_OPTS) {
|
|
2174
2241
|
const v = opts[k];
|
|
2175
2242
|
if (v === void 0 || typeof v === "function") continue;
|
|
2176
2243
|
projected[k] = v;
|
|
@@ -2671,11 +2738,11 @@ function terminalDispatchError(workflowAgentId, mode) {
|
|
|
2671
2738
|
}
|
|
2672
2739
|
__name(terminalDispatchError, "terminalDispatchError");
|
|
2673
2740
|
async function runSingleDispatch(config, prompt, opts, attemptSignal, emitter, workflowAgentId, agentIdentity, onTokens, subagentBounds) {
|
|
2674
|
-
const { AgentHeadless, ContextState } = await import("./agent-headless-
|
|
2741
|
+
const { AgentHeadless, ContextState } = await import("./agent-headless-TU5N3GFF.js");
|
|
2675
2742
|
const ctx = new ContextState();
|
|
2676
2743
|
ctx.set("task_prompt", prompt);
|
|
2677
2744
|
debugLogger.debug(`[workflow] Dispatch ${workflowAgentId}`);
|
|
2678
|
-
if (
|
|
2745
|
+
if (DISPATCH_AFFECTING_AGENT_OPTS.every((key) => opts[key] === void 0)) {
|
|
2679
2746
|
const subagent = await AgentHeadless.create(
|
|
2680
2747
|
agentIdentity.name,
|
|
2681
2748
|
config,
|
|
@@ -2740,12 +2807,39 @@ function reportTokens(subagent, opts, onTokens) {
|
|
|
2740
2807
|
}
|
|
2741
2808
|
}
|
|
2742
2809
|
__name(reportTokens, "reportTokens");
|
|
2810
|
+
function resolveDispatchEffort(raw) {
|
|
2811
|
+
if (raw === void 0) return void 0;
|
|
2812
|
+
const tier = typeof raw === "string" ? normalizeReasoningEffort(raw) : void 0;
|
|
2813
|
+
if (tier === void 0) {
|
|
2814
|
+
throw new Error(
|
|
2815
|
+
`agent({effort}): unknown effort tier ${sanitizeForErrorMessage(
|
|
2816
|
+
JSON.stringify(raw) ?? String(raw)
|
|
2817
|
+
)}. Known tiers are: ${REASONING_EFFORT_TIERS.join(", ")}.`
|
|
2818
|
+
);
|
|
2819
|
+
}
|
|
2820
|
+
return tier;
|
|
2821
|
+
}
|
|
2822
|
+
__name(resolveDispatchEffort, "resolveDispatchEffort");
|
|
2823
|
+
function resolveDispatchDenies(raw) {
|
|
2824
|
+
if (raw === void 0) return [];
|
|
2825
|
+
if (!Array.isArray(raw) || raw.some(
|
|
2826
|
+
(name) => typeof name !== "string" || name.length === 0 || name !== name.trim()
|
|
2827
|
+
)) {
|
|
2828
|
+
throw new Error(
|
|
2829
|
+
"agent({disallowedTools}): must be an array of non-empty tool-name strings without surrounding whitespace, e.g. ['run_shell_command', 'write_file']."
|
|
2830
|
+
);
|
|
2831
|
+
}
|
|
2832
|
+
return raw.map((name) => resolveBuiltinToolName(name) ?? name);
|
|
2833
|
+
}
|
|
2834
|
+
__name(resolveDispatchDenies, "resolveDispatchDenies");
|
|
2743
2835
|
async function runOverridePath(config, ctx, opts, signal, workflowAgentId, agentIdentity, onTokens, emitter, subagentBounds) {
|
|
2744
2836
|
if (opts.isolation === "remote") {
|
|
2745
2837
|
throw new Error(
|
|
2746
2838
|
"agent({isolation:'remote'}) is not available in this build."
|
|
2747
2839
|
);
|
|
2748
2840
|
}
|
|
2841
|
+
const effort = resolveDispatchEffort(opts.effort);
|
|
2842
|
+
const requestedDenies = resolveDispatchDenies(opts.disallowedTools);
|
|
2749
2843
|
const subagentMgr = config.getSubagentManager();
|
|
2750
2844
|
let baseConfig;
|
|
2751
2845
|
if (opts.agentType !== void 0) {
|
|
@@ -2784,10 +2878,28 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2784
2878
|
disallowedTools: Array.from(
|
|
2785
2879
|
/* @__PURE__ */ new Set([
|
|
2786
2880
|
...baseConfig.disallowedTools ?? [],
|
|
2787
|
-
...WORKFLOW_SUBAGENT_DISALLOWED_TOOLS
|
|
2881
|
+
...WORKFLOW_SUBAGENT_DISALLOWED_TOOLS,
|
|
2882
|
+
...requestedDenies
|
|
2788
2883
|
])
|
|
2789
2884
|
)
|
|
2790
2885
|
};
|
|
2886
|
+
if (requestedDenies.length > 0) {
|
|
2887
|
+
const unmatched = await subagentMgr.findUnmatchedToolNames(requestedDenies);
|
|
2888
|
+
if (unmatched.length > 0) {
|
|
2889
|
+
throw new Error(
|
|
2890
|
+
`agent({disallowedTools}): ${sanitizeForErrorMessage(
|
|
2891
|
+
unmatched.map((name) => JSON.stringify(name)).join(", ")
|
|
2892
|
+
)} ${unmatched.length === 1 ? "matches" : "match"} no tool. Use a tool name (run_shell_command, write_file, edit), a display name (Shell, WriteFile, Edit), or an MCP pattern (mcp__<server>, mcp__<server>__*, mcp__<server>__<tool>).`
|
|
2893
|
+
);
|
|
2894
|
+
}
|
|
2895
|
+
}
|
|
2896
|
+
if (opts.schema !== void 0 && [...baseConfig.disallowedTools ?? [], ...requestedDenies].some(
|
|
2897
|
+
(name) => (resolveBuiltinToolName(name) ?? name) === ToolNames.STRUCTURED_OUTPUT
|
|
2898
|
+
)) {
|
|
2899
|
+
throw new Error(
|
|
2900
|
+
"agent({schema, disallowedTools}): schema mode needs the structured_output tool, but disallowedTools deny it (from this call or from the agent type)."
|
|
2901
|
+
);
|
|
2902
|
+
}
|
|
2791
2903
|
let worktreeIsolation = null;
|
|
2792
2904
|
let effectiveContext = config;
|
|
2793
2905
|
let approvalCleanup;
|
|
@@ -2870,6 +2982,7 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2870
2982
|
max_turns: resolveSubagentMaxTurns(),
|
|
2871
2983
|
max_time_minutes: resolveSubagentMaxTimeMinutes()
|
|
2872
2984
|
},
|
|
2985
|
+
...effort !== void 0 ? { modelConfigOverrides: { reasoningEffort: effort } } : {},
|
|
2873
2986
|
eventEmitter,
|
|
2874
2987
|
taskName: String(ctx.get("task_prompt")),
|
|
2875
2988
|
subagentId: workflowAgentId
|
|
@@ -3853,12 +3966,98 @@ async function pruneSnapshots(config, dir) {
|
|
|
3853
3966
|
}
|
|
3854
3967
|
__name(pruneSnapshots, "pruneSnapshots");
|
|
3855
3968
|
|
|
3969
|
+
// packages/core/src/skills/workflow-authoring-skill.ts
|
|
3970
|
+
init_esbuild_shims();
|
|
3971
|
+
import { readFileSync } from "node:fs";
|
|
3972
|
+
import * as path4 from "node:path";
|
|
3973
|
+
var debugLogger7 = createDebugLogger("WORKFLOW_AUTHORING_SKILL");
|
|
3974
|
+
var WORKFLOW_AUTHORING_SKILL_NAME = "workflow-authoring";
|
|
3975
|
+
var cachedReference;
|
|
3976
|
+
function referencePath() {
|
|
3977
|
+
return path4.join(
|
|
3978
|
+
resolveBundleDir(import.meta.url),
|
|
3979
|
+
"bundled",
|
|
3980
|
+
WORKFLOW_AUTHORING_SKILL_NAME,
|
|
3981
|
+
"SKILL.md"
|
|
3982
|
+
);
|
|
3983
|
+
}
|
|
3984
|
+
__name(referencePath, "referencePath");
|
|
3985
|
+
function readWorkflowAuthoringReference() {
|
|
3986
|
+
if (cachedReference !== void 0) return cachedReference;
|
|
3987
|
+
try {
|
|
3988
|
+
const filePath = referencePath();
|
|
3989
|
+
const parsed = parseSkillContent(readFileSync(filePath, "utf8"), filePath);
|
|
3990
|
+
cachedReference = { body: parsed.body, baseDir: path4.dirname(filePath) };
|
|
3991
|
+
} catch (error) {
|
|
3992
|
+
debugLogger7.warn(`cannot read the workflow-authoring reference: ${error}`);
|
|
3993
|
+
cachedReference = null;
|
|
3994
|
+
}
|
|
3995
|
+
return cachedReference;
|
|
3996
|
+
}
|
|
3997
|
+
__name(readWorkflowAuthoringReference, "readWorkflowAuthoringReference");
|
|
3998
|
+
function resolveWorkflowAuthoringRoute(config) {
|
|
3999
|
+
try {
|
|
4000
|
+
if (config.getDisabledSkillLevels?.()?.has("bundled")) return "withheld";
|
|
4001
|
+
if (config.isSkillEnabled?.({
|
|
4002
|
+
name: WORKFLOW_AUTHORING_SKILL_NAME,
|
|
4003
|
+
level: "bundled"
|
|
4004
|
+
}) === false) {
|
|
4005
|
+
return "withheld";
|
|
4006
|
+
}
|
|
4007
|
+
if (!config.getSkillManager?.()) return "inline";
|
|
4008
|
+
const registry = config.getToolRegistry?.();
|
|
4009
|
+
const toolNames = registry?.getAllToolNames?.();
|
|
4010
|
+
if (!Array.isArray(toolNames)) return "skill";
|
|
4011
|
+
if (!toolNames.includes(ToolNames.SKILL)) return "inline";
|
|
4012
|
+
if (isToolDeferredBehindToolSearch(config, ToolNames.SKILL)) {
|
|
4013
|
+
return toolNames.includes(ToolNames.TOOL_SEARCH) ? "skill-via-tool-search" : "inline";
|
|
4014
|
+
}
|
|
4015
|
+
return "skill";
|
|
4016
|
+
} catch (error) {
|
|
4017
|
+
debugLogger7.warn(`cannot resolve the workflow-authoring route: ${error}`);
|
|
4018
|
+
return "skill";
|
|
4019
|
+
}
|
|
4020
|
+
}
|
|
4021
|
+
__name(resolveWorkflowAuthoringRoute, "resolveWorkflowAuthoringRoute");
|
|
4022
|
+
function resolveWorkflowAuthoringSurface(config) {
|
|
4023
|
+
const route = resolveWorkflowAuthoringRoute(config);
|
|
4024
|
+
switch (route) {
|
|
4025
|
+
case "skill":
|
|
4026
|
+
return "pointer";
|
|
4027
|
+
case "skill-via-tool-search":
|
|
4028
|
+
return "pointer-via-tool-search";
|
|
4029
|
+
case "withheld":
|
|
4030
|
+
return "withheld";
|
|
4031
|
+
case "inline":
|
|
4032
|
+
return readWorkflowAuthoringReference() ? "inline" : "pointer";
|
|
4033
|
+
default: {
|
|
4034
|
+
const unhandled = route;
|
|
4035
|
+
return unhandled;
|
|
4036
|
+
}
|
|
4037
|
+
}
|
|
4038
|
+
}
|
|
4039
|
+
__name(resolveWorkflowAuthoringSurface, "resolveWorkflowAuthoringSurface");
|
|
4040
|
+
function isToolDeferredBehindToolSearch(config, name) {
|
|
4041
|
+
if (!config.getToolRegistry?.()?.isPermissionDeferred?.(name)) return false;
|
|
4042
|
+
return !config.getVisibleTools?.()?.has(name);
|
|
4043
|
+
}
|
|
4044
|
+
__name(isToolDeferredBehindToolSearch, "isToolDeferredBehindToolSearch");
|
|
4045
|
+
function isToolHiddenBehindToolSearch(config, name) {
|
|
4046
|
+
if (!isToolDeferredBehindToolSearch(config, name)) return false;
|
|
4047
|
+
return !config.getToolRegistry?.()?.isDeferredToolRevealed?.(name);
|
|
4048
|
+
}
|
|
4049
|
+
__name(isToolHiddenBehindToolSearch, "isToolHiddenBehindToolSearch");
|
|
4050
|
+
function toolSearchRevealSentence(toolDisplayName) {
|
|
4051
|
+
return `If the ${toolDisplayName} tool is not in your tool list, reveal it with ToolSearch first.`;
|
|
4052
|
+
}
|
|
4053
|
+
__name(toolSearchRevealSentence, "toolSearchRevealSentence");
|
|
4054
|
+
|
|
3856
4055
|
// packages/core/src/agents/runtime/review-workflow.ts
|
|
3857
4056
|
init_esbuild_shims();
|
|
3858
4057
|
import { createHash as createHash2 } from "node:crypto";
|
|
3859
4058
|
import { promises as fs4 } from "node:fs";
|
|
3860
|
-
import
|
|
3861
|
-
var
|
|
4059
|
+
import path5 from "node:path";
|
|
4060
|
+
var debugLogger8 = createDebugLogger("REVIEW_WORKFLOW");
|
|
3862
4061
|
function resolveReviewWorkflowConcurrency(env = process.env) {
|
|
3863
4062
|
const configured = parsePositiveIntegerEnv(env[MAX_WORKFLOW_CONCURRENCY_ENV], 0) || parsePositiveIntegerEnv(env["QWEN_CODE_MAX_TOOL_CONCURRENCY"], 10);
|
|
3864
4063
|
return resolveConcurrencyLimit({
|
|
@@ -3872,12 +4071,12 @@ async function resolveReviewWorkflowLimits(scriptPath, generatedDir, scriptConte
|
|
|
3872
4071
|
if ((await fs4.lstat(generatedDir)).isSymbolicLink()) return void 0;
|
|
3873
4072
|
const generatedRoot = await fs4.realpath(generatedDir);
|
|
3874
4073
|
canonicalScript = await fs4.realpath(scriptPath);
|
|
3875
|
-
if (!canonicalScript.startsWith(
|
|
4074
|
+
if (!canonicalScript.startsWith(path5.join(generatedRoot, "review") + path5.sep)) {
|
|
3876
4075
|
return void 0;
|
|
3877
4076
|
}
|
|
3878
4077
|
} catch (error) {
|
|
3879
4078
|
if (error.code !== "ENOENT") {
|
|
3880
|
-
|
|
4079
|
+
debugLogger8.warn(
|
|
3881
4080
|
"Cannot classify review workflow; using generic limits:",
|
|
3882
4081
|
error
|
|
3883
4082
|
);
|
|
@@ -3885,7 +4084,7 @@ async function resolveReviewWorkflowLimits(scriptPath, generatedDir, scriptConte
|
|
|
3885
4084
|
return void 0;
|
|
3886
4085
|
}
|
|
3887
4086
|
const digest = /^qwen-review-[a-f0-9]{10}-([a-f0-9]{64})\.js$/.exec(
|
|
3888
|
-
|
|
4087
|
+
path5.basename(canonicalScript)
|
|
3889
4088
|
)?.[1];
|
|
3890
4089
|
if (!digest || createHash2("sha256").update(scriptContent).digest("hex") !== digest) {
|
|
3891
4090
|
return void 0;
|
|
@@ -3923,9 +4122,6 @@ export {
|
|
|
3923
4122
|
MAX_TOKENS_PER_WORKFLOW_ENV,
|
|
3924
4123
|
resolveMaxTokensPerWorkflow,
|
|
3925
4124
|
WorkflowBudgetImpl,
|
|
3926
|
-
DEFAULT_STALL_MS,
|
|
3927
|
-
MAX_STALL_ATTEMPTS,
|
|
3928
|
-
MAX_WORKFLOW_STALL_MS_ENV,
|
|
3929
4125
|
validateWorkflowName,
|
|
3930
4126
|
isSymlinkedRoot,
|
|
3931
4127
|
listSavedWorkflows,
|
|
@@ -3952,7 +4148,12 @@ export {
|
|
|
3952
4148
|
listWorkflowSnapshots,
|
|
3953
4149
|
deleteWorkflowSnapshot,
|
|
3954
4150
|
resolveReviewWorkflowConcurrency,
|
|
3955
|
-
resolveReviewWorkflowLimits
|
|
4151
|
+
resolveReviewWorkflowLimits,
|
|
4152
|
+
WORKFLOW_AUTHORING_SKILL_NAME,
|
|
4153
|
+
readWorkflowAuthoringReference,
|
|
4154
|
+
resolveWorkflowAuthoringSurface,
|
|
4155
|
+
isToolHiddenBehindToolSearch,
|
|
4156
|
+
toolSearchRevealSentence
|
|
3956
4157
|
};
|
|
3957
4158
|
/**
|
|
3958
4159
|
* @license
|