@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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
readRuntimeStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WKVZES7O.js";
|
|
6
6
|
import {
|
|
7
7
|
atomicWriteJSON
|
|
8
8
|
} from "./chunk-XFFRI3WM.js";
|
|
@@ -67,17 +67,17 @@ async function readWorktreeSessionStrict(filePath) {
|
|
|
67
67
|
let observedSidecar = false;
|
|
68
68
|
try {
|
|
69
69
|
const flags = nodeFs.constants.O_RDONLY | (nodeFs.constants.O_NOFOLLOW ?? 0) | (nodeFs.constants.O_NONBLOCK ?? 0);
|
|
70
|
-
const before = await fs.lstat(filePath);
|
|
70
|
+
const before = await fs.lstat(filePath, { bigint: true });
|
|
71
71
|
observedSidecar = true;
|
|
72
|
-
if (before.isSymbolicLink() || !before.isFile() || before.nlink !==
|
|
72
|
+
if (before.isSymbolicLink() || !before.isFile() || before.nlink !== 1n) {
|
|
73
73
|
return { state: "invalid", reason: "unsafe sidecar file type" };
|
|
74
74
|
}
|
|
75
|
-
if (before.ino ===
|
|
75
|
+
if (before.ino === 0n || before.size > BigInt(WORKTREE_SESSION_SIDECAR_MAX_BYTES)) {
|
|
76
76
|
return { state: "invalid", reason: "unsafe sidecar size or identity" };
|
|
77
77
|
}
|
|
78
78
|
handle = await fs.open(filePath, flags);
|
|
79
|
-
const opened = await handle.stat();
|
|
80
|
-
if (!opened.isFile() || opened.nlink !==
|
|
79
|
+
const opened = await handle.stat({ bigint: true });
|
|
80
|
+
if (!opened.isFile() || opened.nlink !== 1n || opened.dev !== before.dev || opened.ino !== before.ino) {
|
|
81
81
|
return {
|
|
82
82
|
state: "invalid",
|
|
83
83
|
reason: "sidecar identity changed before read"
|
|
@@ -98,9 +98,9 @@ async function readWorktreeSessionStrict(filePath) {
|
|
|
98
98
|
if (bytesRead > WORKTREE_SESSION_SIDECAR_MAX_BYTES) {
|
|
99
99
|
return { state: "invalid", reason: "unsafe sidecar size or identity" };
|
|
100
100
|
}
|
|
101
|
-
const after = await handle.stat();
|
|
102
|
-
const pathStats = await fs.lstat(filePath);
|
|
103
|
-
if (!after.isFile() || after.nlink !==
|
|
101
|
+
const after = await handle.stat({ bigint: true });
|
|
102
|
+
const pathStats = await fs.lstat(filePath, { bigint: true });
|
|
103
|
+
if (!after.isFile() || after.nlink !== 1n || after.size !== BigInt(bytesRead) || after.dev !== opened.dev || after.ino !== opened.ino || !pathStats.isFile() || pathStats.nlink !== 1n || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
|
|
104
104
|
return {
|
|
105
105
|
state: "invalid",
|
|
106
106
|
reason: "sidecar identity changed during read"
|
|
@@ -9074,10 +9074,11 @@ async function processSingleFileContent(filePath, config, optionsOrOffset, legac
|
|
|
9074
9074
|
filePath,
|
|
9075
9075
|
signal ?? new AbortController().signal
|
|
9076
9076
|
);
|
|
9077
|
+
const zoomHint = config.getCodeModeOnly?.() ? `If details are too small, call tools.zoom_image with coordinates normalized from 0 to 1000.` : `If details are too small, use tool_search for "zoom image", then call zoom_image with coordinates normalized from 0 to 1000.`;
|
|
9077
9078
|
return {
|
|
9078
9079
|
llmContent: [
|
|
9079
9080
|
{
|
|
9080
|
-
text: `Image overview: ${view.outputWidth}x${view.outputHeight}; oriented source: ${view.sourceWidth}x${view.sourceHeight}.
|
|
9081
|
+
text: `Image overview: ${view.outputWidth}x${view.outputHeight}; oriented source: ${view.sourceWidth}x${view.sourceHeight}. ` + zoomHint
|
|
9081
9082
|
},
|
|
9082
9083
|
{
|
|
9083
9084
|
inlineData: {
|
|
@@ -15926,6 +15926,7 @@ var CONCURRENCY_SAFE_KINDS = /* @__PURE__ */ new Set([
|
|
|
15926
15926
|
// packages/core/src/tools/tool-names.ts
|
|
15927
15927
|
init_esbuild_shims();
|
|
15928
15928
|
var ToolNames = {
|
|
15929
|
+
EXEC: "exec",
|
|
15929
15930
|
EDIT: "edit",
|
|
15930
15931
|
WRITE_FILE: "write_file",
|
|
15931
15932
|
READ_FILE: "read_file",
|
|
@@ -15978,6 +15979,7 @@ var ToolNames = {
|
|
|
15978
15979
|
DISPLAY_IMAGE: "display_image"
|
|
15979
15980
|
};
|
|
15980
15981
|
var ToolDisplayNames = {
|
|
15982
|
+
EXEC: "Exec",
|
|
15981
15983
|
EDIT: "Edit",
|
|
15982
15984
|
WRITE_FILE: "WriteFile",
|
|
15983
15985
|
READ_FILE: "ReadFile",
|
|
@@ -16053,6 +16055,35 @@ var ToolDisplayNamesMigration = {
|
|
|
16053
16055
|
TodoWrite: ToolDisplayNames.TODO_WRITE
|
|
16054
16056
|
// Old display name for TodoList (renamed from TodoWrite)
|
|
16055
16057
|
};
|
|
16058
|
+
var BUILTIN_TOOL_NAMES = (() => {
|
|
16059
|
+
const lookup = /* @__PURE__ */ new Map();
|
|
16060
|
+
const displayNames = ToolDisplayNames;
|
|
16061
|
+
for (const name of Object.values(ToolNames)) {
|
|
16062
|
+
lookup.set(name, name);
|
|
16063
|
+
}
|
|
16064
|
+
for (const [key, name] of Object.entries(ToolNames)) {
|
|
16065
|
+
const display = displayNames[key];
|
|
16066
|
+
if (display !== void 0 && !lookup.has(display)) {
|
|
16067
|
+
lookup.set(display, name);
|
|
16068
|
+
}
|
|
16069
|
+
}
|
|
16070
|
+
for (const [legacy, name] of Object.entries(ToolNamesMigration)) {
|
|
16071
|
+
if (!lookup.has(legacy)) lookup.set(legacy, name);
|
|
16072
|
+
}
|
|
16073
|
+
for (const [legacyDisplay, display] of Object.entries(
|
|
16074
|
+
ToolDisplayNamesMigration
|
|
16075
|
+
)) {
|
|
16076
|
+
const name = lookup.get(display);
|
|
16077
|
+
if (name !== void 0 && !lookup.has(legacyDisplay)) {
|
|
16078
|
+
lookup.set(legacyDisplay, name);
|
|
16079
|
+
}
|
|
16080
|
+
}
|
|
16081
|
+
return lookup;
|
|
16082
|
+
})();
|
|
16083
|
+
function resolveBuiltinToolName(name) {
|
|
16084
|
+
return BUILTIN_TOOL_NAMES.get(name);
|
|
16085
|
+
}
|
|
16086
|
+
__name(resolveBuiltinToolName, "resolveBuiltinToolName");
|
|
16056
16087
|
|
|
16057
16088
|
export {
|
|
16058
16089
|
require_fast_deep_equal,
|
|
@@ -16074,7 +16105,8 @@ export {
|
|
|
16074
16105
|
ToolDisplayNames,
|
|
16075
16106
|
ToolNamesMigration,
|
|
16076
16107
|
canonicalToolName,
|
|
16077
|
-
ToolDisplayNamesMigration
|
|
16108
|
+
ToolDisplayNamesMigration,
|
|
16109
|
+
resolveBuiltinToolName
|
|
16078
16110
|
};
|
|
16079
16111
|
/**
|
|
16080
16112
|
* @license
|
|
@@ -5,48 +5,55 @@ import {
|
|
|
5
5
|
parseChannelDelivery,
|
|
6
6
|
scheduledTaskRunSessionName,
|
|
7
7
|
scheduledTaskRunSourceId
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JAYWZWZF.js";
|
|
9
9
|
import {
|
|
10
10
|
parseCallerSuppliedSessionId
|
|
11
11
|
} from "./chunk-ZEZKIS2K.js";
|
|
12
|
+
import {
|
|
13
|
+
createSessionOrganizationService
|
|
14
|
+
} from "./chunk-EKJXDLDD.js";
|
|
12
15
|
import {
|
|
13
16
|
isInternalWorkspaceRuntime
|
|
14
17
|
} from "./chunk-NYWWQ437.js";
|
|
15
18
|
import {
|
|
16
19
|
SCHEDULED_TASK_RUN_SOURCE_TYPE
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-63WKMKVD.js";
|
|
18
21
|
import {
|
|
19
22
|
SessionNotFoundError
|
|
20
23
|
} from "./chunk-FAWTMDX7.js";
|
|
21
|
-
import {
|
|
22
|
-
isChannelDeliveryError
|
|
23
|
-
} from "./chunk-RKFGE7JH.js";
|
|
24
24
|
import {
|
|
25
25
|
canonicalizeWorkspace
|
|
26
26
|
} from "./chunk-6PLDPT2C.js";
|
|
27
|
+
import {
|
|
28
|
+
isChannelDeliveryError
|
|
29
|
+
} from "./chunk-RKFGE7JH.js";
|
|
27
30
|
import {
|
|
28
31
|
isWithinRoot
|
|
29
32
|
} from "./chunk-MR3PXB6E.js";
|
|
30
33
|
import {
|
|
31
34
|
SessionService,
|
|
32
35
|
stripTerminalControlSequences
|
|
33
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-CFSBWJBB.js";
|
|
34
37
|
import {
|
|
35
38
|
MAX_JOBS,
|
|
36
39
|
nextDurableFireMs
|
|
37
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-GNV2SFO7.js";
|
|
38
41
|
import {
|
|
39
42
|
nextFireTime,
|
|
40
43
|
parseCron
|
|
41
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-5EZRLTLQ.js";
|
|
42
45
|
import {
|
|
46
|
+
MAX_CRON_TASK_ROUTING_ID_LENGTH,
|
|
43
47
|
annotateCronRunSession,
|
|
44
48
|
appendCronRun,
|
|
49
|
+
cronTaskSessionDeletionId,
|
|
45
50
|
generateCronTaskId,
|
|
51
|
+
getCronFilePath,
|
|
52
|
+
isValidCronTaskRoutingId,
|
|
46
53
|
readCronTasks,
|
|
47
54
|
taskHasLegacyCondition,
|
|
48
55
|
updateCronTasks
|
|
49
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-3LMDSCLU.js";
|
|
50
57
|
import {
|
|
51
58
|
Storage
|
|
52
59
|
} from "./chunk-ZAFYHRVY.js";
|
|
@@ -63,6 +70,7 @@ import {
|
|
|
63
70
|
// packages/cli/src/serve/routes/scheduled-tasks.ts
|
|
64
71
|
init_esbuild_shims();
|
|
65
72
|
import { isDeepStrictEqual } from "node:util";
|
|
73
|
+
import { access } from "node:fs/promises";
|
|
66
74
|
|
|
67
75
|
// packages/cli/src/serve/workspace-route-runtime.ts
|
|
68
76
|
init_esbuild_shims();
|
|
@@ -335,6 +343,7 @@ var MAX_SCHEDULED_TASKS = MAX_JOBS;
|
|
|
335
343
|
var MAX_PROMPT_LENGTH = 1e5;
|
|
336
344
|
var MAX_NAME_LENGTH = 200;
|
|
337
345
|
var MAX_CRON_LENGTH = 200;
|
|
346
|
+
var MAX_ROUTING_ID_LENGTH = MAX_CRON_TASK_ROUTING_ID_LENGTH;
|
|
338
347
|
var MAX_SESSION_NAME_LENGTH = 60;
|
|
339
348
|
function scheduledTaskSessionName(label) {
|
|
340
349
|
const cleaned = stripTerminalControlSequences(label).replace(/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g, "").trim().replace(/\s+/g, " ");
|
|
@@ -521,6 +530,8 @@ async function createScheduledTaskWithExistingSession(target, input, options) {
|
|
|
521
530
|
sessionId: input.sessionId,
|
|
522
531
|
sessionOwnedByTask: false,
|
|
523
532
|
sessionMode: input.sessionMode === "per_run" ? "per_run" : "persistent",
|
|
533
|
+
...input.sessionMode === "per_run" && input.modelServiceId !== void 0 ? { modelServiceId: input.modelServiceId } : {},
|
|
534
|
+
...input.sessionMode === "per_run" && input.groupId !== void 0 ? { groupId: input.groupId } : {},
|
|
524
535
|
...input.delivery !== void 0 ? { delivery: input.delivery } : {},
|
|
525
536
|
...input.name !== void 0 ? { name: input.name } : {}
|
|
526
537
|
};
|
|
@@ -592,18 +603,36 @@ async function rollbackCronMutation(target, before, after, route) {
|
|
|
592
603
|
});
|
|
593
604
|
}
|
|
594
605
|
__name(rollbackCronMutation, "rollbackCronMutation");
|
|
595
|
-
async function restoreConsumedOneShot(target, before,
|
|
606
|
+
async function restoreConsumedOneShot(target, before, failedTask, removalGenerations, route) {
|
|
607
|
+
const id = failedTask.id;
|
|
596
608
|
const index = before?.findIndex((t) => t.id === id) ?? -1;
|
|
597
609
|
const original = index === -1 ? void 0 : before[index];
|
|
598
|
-
if (!original) return;
|
|
610
|
+
if (!original || !removalGenerations) return;
|
|
611
|
+
let restoreGenerations;
|
|
599
612
|
await runWithScheduledTaskTarget(
|
|
600
613
|
target,
|
|
601
|
-
() => updateCronTasks(
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
614
|
+
() => updateCronTasks(
|
|
615
|
+
target.workspaceCwd,
|
|
616
|
+
(tasks) => {
|
|
617
|
+
if ([...removalGenerations].some(
|
|
618
|
+
([key, generation]) => restoreGenerations?.get(key) !== generation
|
|
619
|
+
))
|
|
620
|
+
return tasks;
|
|
621
|
+
if (tasks.some((t) => t.id === id)) return tasks;
|
|
622
|
+
const restored = [...tasks];
|
|
623
|
+
restored.splice(Math.min(index, restored.length), 0, {
|
|
624
|
+
...failedTask,
|
|
625
|
+
enabled: false
|
|
626
|
+
});
|
|
627
|
+
return restored;
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
observeDeletionIds: [...removalGenerations.keys()],
|
|
631
|
+
onDeletionGenerations: /* @__PURE__ */ __name((generations) => {
|
|
632
|
+
restoreGenerations = generations;
|
|
633
|
+
}, "onDeletionGenerations")
|
|
634
|
+
}
|
|
635
|
+
)
|
|
607
636
|
).catch((error) => {
|
|
608
637
|
writeStderrLine(
|
|
609
638
|
`qwen serve: ${route} failed to restore the consumed one-shot task: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -636,6 +665,7 @@ async function dispatchTaskToFreshSession(target, task) {
|
|
|
636
665
|
target,
|
|
637
666
|
() => bridge.spawnOrAttach({
|
|
638
667
|
workspaceCwd: target.workspaceCwd,
|
|
668
|
+
...task.modelServiceId ? { modelServiceId: task.modelServiceId } : {},
|
|
639
669
|
sessionScope: "thread",
|
|
640
670
|
parentSessionId: task.sessionId,
|
|
641
671
|
sourceType: SCHEDULED_TASK_RUN_SOURCE_TYPE,
|
|
@@ -643,16 +673,21 @@ async function dispatchTaskToFreshSession(target, task) {
|
|
|
643
673
|
})
|
|
644
674
|
);
|
|
645
675
|
try {
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
task
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
676
|
+
if (task.modelServiceId && child.modelApplied === false) {
|
|
677
|
+
throw new Error(
|
|
678
|
+
`Scheduled task model selection failed: ${task.modelServiceId}`
|
|
679
|
+
);
|
|
680
|
+
}
|
|
681
|
+
try {
|
|
682
|
+
bridge.updateSessionMetadata(child.sessionId, {
|
|
683
|
+
displayName: scheduledTaskRunSessionName(
|
|
684
|
+
task.name ?? task.prompt,
|
|
685
|
+
triggeredAt
|
|
686
|
+
),
|
|
687
|
+
titleSource: "auto"
|
|
688
|
+
});
|
|
689
|
+
} catch {
|
|
690
|
+
}
|
|
656
691
|
let markPromptAdmitted;
|
|
657
692
|
const promptAdmitted = new Promise((resolve) => {
|
|
658
693
|
markPromptAdmitted = resolve;
|
|
@@ -680,6 +715,11 @@ async function dispatchTaskToFreshSession(target, task) {
|
|
|
680
715
|
onPromptAdmitted: markPromptAdmitted
|
|
681
716
|
}
|
|
682
717
|
);
|
|
718
|
+
void turn.catch((error) => {
|
|
719
|
+
writeStderrLine(
|
|
720
|
+
`qwen serve: scheduled-task session ${child.sessionId} prompt failed: ${error instanceof Error ? error.message : String(error)}`
|
|
721
|
+
);
|
|
722
|
+
});
|
|
683
723
|
await Promise.race([
|
|
684
724
|
promptAdmitted,
|
|
685
725
|
turn.then(
|
|
@@ -687,11 +727,24 @@ async function dispatchTaskToFreshSession(target, task) {
|
|
|
687
727
|
(error) => Promise.reject(error)
|
|
688
728
|
)
|
|
689
729
|
]);
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
730
|
+
if (task.groupId) {
|
|
731
|
+
try {
|
|
732
|
+
await runWithScheduledTaskTarget(
|
|
733
|
+
target,
|
|
734
|
+
() => createSessionOrganizationService(
|
|
735
|
+
target.workspaceCwd
|
|
736
|
+
).updateSessionOrganization(child.sessionId, {
|
|
737
|
+
groupId: task.groupId,
|
|
738
|
+
color: null
|
|
739
|
+
})
|
|
740
|
+
);
|
|
741
|
+
bridge.markSessionCatalogChanged?.();
|
|
742
|
+
} catch (error) {
|
|
743
|
+
writeStderrLine(
|
|
744
|
+
`qwen serve: scheduled-task session ${child.sessionId} could not be assigned to group ${task.groupId}: ${error instanceof Error ? error.message : String(error)}`
|
|
745
|
+
);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
695
748
|
} catch (error) {
|
|
696
749
|
await teardownBoundSession(target, child.sessionId);
|
|
697
750
|
throw error;
|
|
@@ -741,6 +794,8 @@ function toView(task) {
|
|
|
741
794
|
// unbound tool-created/legacy task.
|
|
742
795
|
sessionId: typeof task.sessionId === "string" && task.sessionId.length > 0 ? task.sessionId : null,
|
|
743
796
|
sessionMode: task.sessionMode === "per_run" ? "per_run" : "persistent",
|
|
797
|
+
modelServiceId: task.modelServiceId ?? null,
|
|
798
|
+
groupId: task.groupId ?? null,
|
|
744
799
|
// Absent runs (tool-created / never-fired) normalizes to [] so the client
|
|
745
800
|
// never special-cases undefined.
|
|
746
801
|
runs: Array.isArray(task.runs) ? task.runs : [],
|
|
@@ -893,6 +948,42 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
893
948
|
});
|
|
894
949
|
return;
|
|
895
950
|
}
|
|
951
|
+
const modelServiceId = body["modelServiceId"];
|
|
952
|
+
if (modelServiceId !== void 0 && !isValidCronTaskRoutingId(modelServiceId)) {
|
|
953
|
+
res.status(400).json({
|
|
954
|
+
error: `\`modelServiceId\` must be a non-empty string of at most ${MAX_ROUTING_ID_LENGTH} characters without control characters`,
|
|
955
|
+
code: "invalid_model_service_id"
|
|
956
|
+
});
|
|
957
|
+
return;
|
|
958
|
+
}
|
|
959
|
+
const groupId = body["groupId"];
|
|
960
|
+
if (groupId !== void 0 && !isValidCronTaskRoutingId(groupId)) {
|
|
961
|
+
res.status(400).json({
|
|
962
|
+
error: `\`groupId\` must be a non-empty string of at most ${MAX_ROUTING_ID_LENGTH} characters without control characters`,
|
|
963
|
+
code: "invalid_group_id"
|
|
964
|
+
});
|
|
965
|
+
return;
|
|
966
|
+
}
|
|
967
|
+
if (sessionMode !== "per_run" && (modelServiceId !== void 0 || groupId !== void 0)) {
|
|
968
|
+
res.status(400).json({
|
|
969
|
+
error: '`modelServiceId` and `groupId` are only supported when `sessionMode` is "per_run"',
|
|
970
|
+
code: "session_routing_requires_per_run"
|
|
971
|
+
});
|
|
972
|
+
return;
|
|
973
|
+
}
|
|
974
|
+
if (typeof groupId === "string") {
|
|
975
|
+
const groups = await runWithScheduledTaskTarget(
|
|
976
|
+
target,
|
|
977
|
+
() => createSessionOrganizationService(workspaceCwd).listGroups()
|
|
978
|
+
);
|
|
979
|
+
if (!groups.groups.some((group) => group.id === groupId)) {
|
|
980
|
+
res.status(400).json({
|
|
981
|
+
error: `Group not found: ${groupId}`,
|
|
982
|
+
code: "group_not_found"
|
|
983
|
+
});
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
}
|
|
896
987
|
const parsedSessionId = parseCallerSuppliedSessionId(body["sessionId"]);
|
|
897
988
|
if (parsedSessionId.kind === "invalid") {
|
|
898
989
|
res.status(400).json({
|
|
@@ -945,6 +1036,8 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
945
1036
|
recurring,
|
|
946
1037
|
enabled,
|
|
947
1038
|
sessionMode,
|
|
1039
|
+
...typeof modelServiceId === "string" ? { modelServiceId } : {},
|
|
1040
|
+
...typeof groupId === "string" ? { groupId } : {},
|
|
948
1041
|
...delivery !== void 0 ? { delivery } : {},
|
|
949
1042
|
...nameResult.value !== void 0 ? { name: nameResult.value } : {}
|
|
950
1043
|
},
|
|
@@ -1051,6 +1144,8 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1051
1144
|
lastFiredAt: now - now % 6e4,
|
|
1052
1145
|
enabled,
|
|
1053
1146
|
sessionMode,
|
|
1147
|
+
...typeof modelServiceId === "string" ? { modelServiceId } : {},
|
|
1148
|
+
...typeof groupId === "string" ? { groupId } : {},
|
|
1054
1149
|
...delivery !== void 0 ? { delivery } : {},
|
|
1055
1150
|
...boundSessionId !== void 0 ? {
|
|
1056
1151
|
sessionId: boundSessionId
|
|
@@ -1144,6 +1239,9 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1144
1239
|
const patch = {};
|
|
1145
1240
|
let clearName = false;
|
|
1146
1241
|
let clearDelivery = false;
|
|
1242
|
+
let clearModelServiceId = false;
|
|
1243
|
+
let clearGroupId = false;
|
|
1244
|
+
let missingGroupId;
|
|
1147
1245
|
const removedPatchField = findRemovedTaskField(body);
|
|
1148
1246
|
if (removedPatchField) {
|
|
1149
1247
|
res.status(400).json(removedFieldError(removedPatchField));
|
|
@@ -1218,6 +1316,41 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1218
1316
|
}
|
|
1219
1317
|
patch.sessionMode = body["sessionMode"];
|
|
1220
1318
|
}
|
|
1319
|
+
if ("modelServiceId" in body) {
|
|
1320
|
+
const value = body["modelServiceId"];
|
|
1321
|
+
if (value === null || value === "") {
|
|
1322
|
+
clearModelServiceId = true;
|
|
1323
|
+
} else if (!isValidCronTaskRoutingId(value)) {
|
|
1324
|
+
res.status(400).json({
|
|
1325
|
+
error: `\`modelServiceId\` must be null or a non-empty string of at most ${MAX_ROUTING_ID_LENGTH} characters without control characters`,
|
|
1326
|
+
code: "invalid_model_service_id"
|
|
1327
|
+
});
|
|
1328
|
+
return;
|
|
1329
|
+
} else {
|
|
1330
|
+
patch.modelServiceId = value;
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
if ("groupId" in body) {
|
|
1334
|
+
const value = body["groupId"];
|
|
1335
|
+
if (value === null || value === "") {
|
|
1336
|
+
clearGroupId = true;
|
|
1337
|
+
} else if (!isValidCronTaskRoutingId(value)) {
|
|
1338
|
+
res.status(400).json({
|
|
1339
|
+
error: `\`groupId\` must be null or a non-empty string of at most ${MAX_ROUTING_ID_LENGTH} characters without control characters`,
|
|
1340
|
+
code: "invalid_group_id"
|
|
1341
|
+
});
|
|
1342
|
+
return;
|
|
1343
|
+
} else {
|
|
1344
|
+
const groups = await runWithScheduledTaskTarget(
|
|
1345
|
+
target,
|
|
1346
|
+
() => createSessionOrganizationService(workspaceCwd).listGroups()
|
|
1347
|
+
);
|
|
1348
|
+
if (!groups.groups.some((group) => group.id === value)) {
|
|
1349
|
+
missingGroupId = value;
|
|
1350
|
+
}
|
|
1351
|
+
patch.groupId = value;
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1221
1354
|
if ("delivery" in body) {
|
|
1222
1355
|
if (body["delivery"] === null) {
|
|
1223
1356
|
clearDelivery = true;
|
|
@@ -1231,7 +1364,7 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1231
1364
|
}
|
|
1232
1365
|
}
|
|
1233
1366
|
}
|
|
1234
|
-
if (Object.keys(patch).length === 0 && !clearName && !clearDelivery) {
|
|
1367
|
+
if (Object.keys(patch).length === 0 && !clearName && !clearDelivery && !clearModelServiceId && !clearGroupId) {
|
|
1235
1368
|
res.status(400).json({
|
|
1236
1369
|
error: "No updatable fields provided",
|
|
1237
1370
|
code: "empty_patch"
|
|
@@ -1245,6 +1378,7 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1245
1378
|
let blockedSessionModeDelivery = false;
|
|
1246
1379
|
let blockedSessionModeUnavailable = false;
|
|
1247
1380
|
let blockedSessionModeUnbound = false;
|
|
1381
|
+
let blockedGroupNotFound = false;
|
|
1248
1382
|
let rollbackBefore;
|
|
1249
1383
|
let rollbackAfter;
|
|
1250
1384
|
try {
|
|
@@ -1257,6 +1391,10 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1257
1391
|
if (idx === -1) return tasks;
|
|
1258
1392
|
found = true;
|
|
1259
1393
|
const current = tasks[idx];
|
|
1394
|
+
if (missingGroupId !== void 0 && current.groupId !== missingGroupId) {
|
|
1395
|
+
blockedGroupNotFound = true;
|
|
1396
|
+
return tasks;
|
|
1397
|
+
}
|
|
1260
1398
|
const convertingToPerRun = patch.sessionMode === "per_run" && current.sessionMode !== "per_run";
|
|
1261
1399
|
if (convertingToPerRun && (!bridge || !bridge.sendPrompt)) {
|
|
1262
1400
|
blockedSessionModeUnavailable = true;
|
|
@@ -1277,6 +1415,12 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1277
1415
|
const next = { ...current, ...patch };
|
|
1278
1416
|
if (clearName) delete next.name;
|
|
1279
1417
|
if (clearDelivery) delete next.delivery;
|
|
1418
|
+
if (clearModelServiceId) delete next.modelServiceId;
|
|
1419
|
+
if (clearGroupId) delete next.groupId;
|
|
1420
|
+
if (next.sessionMode !== "per_run") {
|
|
1421
|
+
delete next.modelServiceId;
|
|
1422
|
+
delete next.groupId;
|
|
1423
|
+
}
|
|
1280
1424
|
if (next.sessionMode === "per_run" && next.delivery) {
|
|
1281
1425
|
blockedSessionModeDelivery = true;
|
|
1282
1426
|
return tasks;
|
|
@@ -1285,12 +1429,13 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1285
1429
|
const cronChanged = patch.cron !== void 0 && canonicalCron(patch.cron) !== canonicalCron(current.cron);
|
|
1286
1430
|
const becameRecurring = patch.recurring === true && current.recurring !== true;
|
|
1287
1431
|
const becameOneShot = patch.recurring === false && current.recurring !== false;
|
|
1432
|
+
const retryFailedOneShot = !next.recurring && justReEnabled && !cronChanged && !becameOneShot && current.runs?.at(-1)?.sessionDispatchFailed === true;
|
|
1288
1433
|
{
|
|
1289
1434
|
const now = Date.now();
|
|
1290
1435
|
const minute = now - now % 6e4;
|
|
1291
1436
|
if (next.recurring && (justReEnabled || cronChanged || becameRecurring)) {
|
|
1292
1437
|
next.lastFiredAt = minute;
|
|
1293
|
-
} else if (!next.recurring && (justReEnabled || cronChanged || becameOneShot)) {
|
|
1438
|
+
} else if (!next.recurring && !retryFailedOneShot && (justReEnabled || cronChanged || becameOneShot)) {
|
|
1294
1439
|
next.createdAt = now;
|
|
1295
1440
|
next.lastFiredAt = minute;
|
|
1296
1441
|
}
|
|
@@ -1329,6 +1474,17 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1329
1474
|
throw error;
|
|
1330
1475
|
}
|
|
1331
1476
|
}
|
|
1477
|
+
if (!found) {
|
|
1478
|
+
res.status(404).json({ error: "Task not found", code: "task_not_found" });
|
|
1479
|
+
return;
|
|
1480
|
+
}
|
|
1481
|
+
if (missingGroupId !== void 0 && blockedGroupNotFound) {
|
|
1482
|
+
res.status(400).json({
|
|
1483
|
+
error: `Group not found: ${missingGroupId}`,
|
|
1484
|
+
code: "group_not_found"
|
|
1485
|
+
});
|
|
1486
|
+
return;
|
|
1487
|
+
}
|
|
1332
1488
|
if (blockedLegacy) {
|
|
1333
1489
|
res.status(409).json({
|
|
1334
1490
|
error: "This task uses the removed isolated run mode with a precondition and can no longer be enabled or run. Recreate it (and call the `create_sub_session` tool from the prompt if you need per-run isolation).",
|
|
@@ -1364,7 +1520,7 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1364
1520
|
});
|
|
1365
1521
|
return;
|
|
1366
1522
|
}
|
|
1367
|
-
if (!
|
|
1523
|
+
if (!updated) {
|
|
1368
1524
|
res.status(404).json({ error: "Task not found", code: "task_not_found" });
|
|
1369
1525
|
return;
|
|
1370
1526
|
}
|
|
@@ -1415,9 +1571,14 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1415
1571
|
let rollbackBefore;
|
|
1416
1572
|
let rollbackAfter;
|
|
1417
1573
|
try {
|
|
1418
|
-
await runWithScheduledTaskTarget(
|
|
1419
|
-
|
|
1420
|
-
|
|
1574
|
+
await runWithScheduledTaskTarget(target, async () => {
|
|
1575
|
+
try {
|
|
1576
|
+
await access(getCronFilePath(workspaceCwd));
|
|
1577
|
+
} catch (error) {
|
|
1578
|
+
if (error.code === "ENOENT") return;
|
|
1579
|
+
throw error;
|
|
1580
|
+
}
|
|
1581
|
+
await updateCronTasks(
|
|
1421
1582
|
workspaceCwd,
|
|
1422
1583
|
(tasks) => {
|
|
1423
1584
|
const idx = tasks.findIndex((t) => t.id === id);
|
|
@@ -1432,9 +1593,12 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1432
1593
|
rollbackAfter = tasks.filter((_, i) => i !== idx);
|
|
1433
1594
|
return rollbackAfter;
|
|
1434
1595
|
},
|
|
1435
|
-
{
|
|
1436
|
-
|
|
1437
|
-
|
|
1596
|
+
{
|
|
1597
|
+
assertCanCommit: target.assertGenerationOpen,
|
|
1598
|
+
deletionIds: [id]
|
|
1599
|
+
}
|
|
1600
|
+
);
|
|
1601
|
+
});
|
|
1438
1602
|
} catch (err) {
|
|
1439
1603
|
if (sendActivityGateError(res, err)) return;
|
|
1440
1604
|
if (sendGenerationClosedError(res, err)) return;
|
|
@@ -1502,6 +1666,7 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1502
1666
|
let updated;
|
|
1503
1667
|
let rollbackBefore;
|
|
1504
1668
|
let rollbackAfter;
|
|
1669
|
+
let removalGenerations;
|
|
1505
1670
|
try {
|
|
1506
1671
|
await runWithScheduledTaskTarget(
|
|
1507
1672
|
target,
|
|
@@ -1535,7 +1700,16 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1535
1700
|
rollbackAfter = nextTasks;
|
|
1536
1701
|
return nextTasks;
|
|
1537
1702
|
},
|
|
1538
|
-
{
|
|
1703
|
+
{
|
|
1704
|
+
assertCanCommit: target.assertGenerationOpen,
|
|
1705
|
+
observeDeletionIds: /* @__PURE__ */ __name((tasks) => {
|
|
1706
|
+
const task = tasks.find((task2) => task2.id === id);
|
|
1707
|
+
return task?.sessionId ? [id, cronTaskSessionDeletionId(task.sessionId)] : [id];
|
|
1708
|
+
}, "observeDeletionIds"),
|
|
1709
|
+
onDeletionGenerations: /* @__PURE__ */ __name((generations) => {
|
|
1710
|
+
removalGenerations = generations;
|
|
1711
|
+
}, "onDeletionGenerations")
|
|
1712
|
+
}
|
|
1539
1713
|
)
|
|
1540
1714
|
);
|
|
1541
1715
|
} catch (err) {
|
|
@@ -1615,7 +1789,8 @@ function registerScheduledTaskCrudRoutes(app, deps) {
|
|
|
1615
1789
|
await restoreConsumedOneShot(
|
|
1616
1790
|
target,
|
|
1617
1791
|
rollbackBefore,
|
|
1618
|
-
|
|
1792
|
+
updated,
|
|
1793
|
+
removalGenerations,
|
|
1619
1794
|
`POST ${base}/${id}/run fresh-session dispatch`
|
|
1620
1795
|
);
|
|
1621
1796
|
}
|
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
t
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-I6YJZGHS.js";
|
|
6
6
|
import {
|
|
7
7
|
computeThresholds,
|
|
8
8
|
estimateContextTextTokens,
|
|
9
9
|
formatContextFileDisplayPath,
|
|
10
10
|
getMainSessionBaseSystemPrompt
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CFSBWJBB.js";
|
|
12
12
|
import {
|
|
13
13
|
buildSkillLlmContent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WBSJ6VPZ.js";
|
|
15
15
|
import {
|
|
16
16
|
DiscoveredMCPTool,
|
|
17
17
|
uiTelemetryService
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-NRUKL236.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_TOKEN_LIMIT
|
|
21
21
|
} from "./chunk-FPGTNKCP.js";
|
|
22
22
|
import {
|
|
23
23
|
ToolNames
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-RSWBT7AZ.js";
|
|
25
25
|
import {
|
|
26
26
|
init_esbuild_shims
|
|
27
27
|
} from "./chunk-5O2XNYP6.js";
|