@qwen-code/qwen-code 0.22.2 → 0.22.3-nightly.20260831.3a0c4c6108
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 +3 -3
- package/bundled/qc-helper/docs/common-workflow.md +32 -0
- package/bundled/qc-helper/docs/configuration/auth.md +6 -6
- package/bundled/qc-helper/docs/configuration/model-providers.md +4 -2
- package/bundled/qc-helper/docs/configuration/settings.md +47 -44
- package/bundled/qc-helper/docs/extension/introduction.md +1 -1
- package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
- package/bundled/qc-helper/docs/features/auto-mode.md +34 -17
- package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +36 -3
- package/bundled/qc-helper/docs/features/code-review.md +5 -5
- package/bundled/qc-helper/docs/features/commands.md +41 -0
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/hooks.md +6 -2
- package/bundled/qc-helper/docs/features/memory.md +1 -0
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +17 -7
- package/bundled/qc-helper/docs/qwen-serve.md +59 -55
- package/bundled/review/SKILL.md +90 -31
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +11 -5
- package/chunks/MaxSizedBox-IHRTWGSY.js +115 -0
- package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-TLVWVTJ7.js} +88 -85
- package/chunks/{acp-startup-profiler-GNYAL6LI.js → acp-startup-profiler-M4X5F3VK.js} +2 -2
- package/chunks/{acpAgent-MXEAN54C.js → acpAgent-7I5LLPP3.js} +1563 -407
- package/chunks/agent-4Z4NTJXD.js +99 -0
- package/chunks/agent-headless-TVUJXQWU.js +89 -0
- package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-VSSPG7XV.js} +84 -55
- package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-TEYW6I4A.js} +11 -3
- package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-PYNBWV63.js} +45 -7
- package/chunks/bridge-EVURP4NO.js +122 -0
- package/chunks/{ca-7HPYOYSZ.js → ca-BNU7YNDE.js} +3 -0
- package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-IDBNYSFW.js} +6 -6
- package/chunks/channel-settings-store-MZNXRKVI.js +125 -0
- package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-ZLP5SJHT.js} +7 -7
- package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-FG5377T2.js} +7 -7
- package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-HDVE4ADS.js} +4 -4
- package/chunks/{chunk-PPKZ7JOE.js → chunk-22UH7VTP.js} +1 -1
- package/chunks/chunk-24FVUD5P.js +49 -0
- package/chunks/{chunk-CMHFCLBU.js → chunk-26SIKQIC.js} +1 -1
- package/chunks/{chunk-5PA6UEYA.js → chunk-3452WXOK.js} +4 -1
- package/chunks/{chunk-SFPGAQUL.js → chunk-373DQUVA.js} +72 -31
- package/chunks/{chunk-H2WDGQ6D.js → chunk-3AKCBZVW.js} +3 -3
- package/chunks/{chunk-LXIBMVRN.js → chunk-3CZGSTZX.js} +15 -9
- package/chunks/{chunk-JVPFTDBK.js → chunk-3EGEBDTW.js} +1 -1
- package/chunks/{chunk-K2NQPH5D.js → chunk-3NQCZMUB.js} +79 -5
- package/chunks/{chunk-E7REAOTN.js → chunk-47ECGEJC.js} +4 -0
- package/chunks/{chunk-WKK5BQNP.js → chunk-4P7PPAHN.js} +45 -421
- package/chunks/chunk-4VQBQLIZ.js +293 -0
- package/chunks/{chunk-4JWNNLPT.js → chunk-5FGWVPCM.js} +4 -4
- package/chunks/{chunk-ZFKOCECU.js → chunk-5ICKESC3.js} +2 -2
- package/chunks/{chunk-3I6UTTDX.js → chunk-67AY5D3M.js} +20 -20
- package/chunks/chunk-6HUXPLB5.js +110 -0
- package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
- package/chunks/{chunk-6LFTG244.js → chunk-6NWPR2EB.js} +19 -9
- package/chunks/chunk-6OO7QEWV.js +2581 -0
- package/chunks/{chunk-TWSKM647.js → chunk-6VHIWUJP.js} +1 -1
- package/chunks/{chunk-RJC5EIKY.js → chunk-6YXNJXQW.js} +7 -5
- package/chunks/{chunk-TPI7O7HR.js → chunk-7DDTI7Q3.js} +1 -1
- package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-NIFYWDYN.js → chunk-7TBU7PU2.js} +1 -1
- package/chunks/{chunk-3FDFA4MZ.js → chunk-7XICSE62.js} +3 -3
- package/chunks/{chunk-V2NDP3I4.js → chunk-7XL4WRXM.js} +2 -2
- package/chunks/{chunk-F7TNAPZ4.js → chunk-AAX236AR.js} +45 -11
- package/chunks/{chunk-T32W2JHI.js → chunk-ACZ4YRYK.js} +6 -6
- package/chunks/chunk-ADJD4LZF.js +210 -0
- package/chunks/{chunk-JWALNCLT.js → chunk-AF3QB6OL.js} +1 -1
- package/chunks/{chunk-P2SU6ZTI.js → chunk-AI35S34R.js} +3 -3
- package/chunks/{chunk-OIP7C4FE.js → chunk-AKNQMSL2.js} +5 -5
- package/chunks/{chunk-6CGL7E7G.js → chunk-AN3KFCNH.js} +2 -2
- package/chunks/{chunk-ABS25QER.js → chunk-ANVG3BVV.js} +1 -1
- package/chunks/chunk-AYYKUUKP.js +972 -0
- package/chunks/chunk-B2RIIK3K.js +346 -0
- package/chunks/{chunk-F5SZP77N.js → chunk-BBYTY46C.js} +153 -112
- package/chunks/{chunk-XRSOI3DL.js → chunk-BE5FGT5Z.js} +1 -1
- package/chunks/{chunk-BGXZBI5B.js → chunk-BHTYRHJF.js} +3 -2
- package/chunks/{chunk-CSMI4FP5.js → chunk-BSJOBW4U.js} +1 -1
- package/chunks/{chunk-Z7TGYN5F.js → chunk-BXNKREX7.js} +3 -3
- package/chunks/{chunk-4MQEPP3Y.js → chunk-BY24DZ4J.js} +5 -119
- package/chunks/{chunk-5XBFCMWD.js → chunk-CAZADEU7.js} +17 -9
- package/chunks/chunk-CHEIIBT3.js +40 -0
- package/chunks/{chunk-BBWV7ONL.js → chunk-CM4F4JBB.js} +6 -6
- package/chunks/{chunk-CAJTKR6W.js → chunk-D7D3HSYQ.js} +6 -5
- package/chunks/{chunk-3DXFGHAJ.js → chunk-DBTMP3P4.js} +213 -185
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-RXFQM6FQ.js → chunk-DMEUXLSS.js} +16 -1
- package/chunks/{chunk-3AFMQUTI.js → chunk-E4JNFXNI.js} +3 -3
- package/chunks/{chunk-UHQFIS7N.js → chunk-EAHOJF6V.js} +28 -4
- package/chunks/{chunk-OIVXBW3W.js → chunk-ED7DD7MV.js} +3 -3
- package/chunks/{chunk-6DIGWMGT.js → chunk-EIJT2PQ6.js} +2 -2
- package/chunks/{chunk-XQFT3QUF.js → chunk-ENYUKMFK.js} +1 -1
- package/chunks/{chunk-CQH5KTKC.js → chunk-ERHAMGAA.js} +1 -1
- package/chunks/{chunk-IOPCFOTF.js → chunk-ERRJA23L.js} +3 -3
- package/chunks/{chunk-LDP5OD6N.js → chunk-EU2B4P3D.js} +12 -12
- package/chunks/{chunk-W5MJJ2V7.js → chunk-FHPYRXRH.js} +1 -1
- package/chunks/{chunk-IZIVM7LZ.js → chunk-FIWZOMBF.js} +3 -3
- package/chunks/{chunk-4HV6HH33.js → chunk-FPMQT2YY.js} +9 -9
- package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
- package/chunks/{chunk-L2M46FP5.js → chunk-FXUSWLBF.js} +225 -12
- package/chunks/{chunk-VVW4ZNFY.js → chunk-GB4UKWY5.js} +16 -8
- package/chunks/{chunk-PKAYJDB3.js → chunk-GCUR24KK.js} +22 -4
- package/chunks/{chunk-DIMEPKCW.js → chunk-GDXSXL3H.js} +11 -1
- package/chunks/{chunk-7JPW6IYH.js → chunk-GN422P4J.js} +1 -1
- package/chunks/{chunk-66KDY3LV.js → chunk-GS7XT345.js} +3 -3
- package/chunks/{chunk-PFCQ62V4.js → chunk-H2A2GJGL.js} +6 -6
- package/chunks/{chunk-Z7FLBQPR.js → chunk-H5GPPDGY.js} +8 -8
- package/chunks/{chunk-CPGJJJLU.js → chunk-HDMKCJHI.js} +1 -1
- package/chunks/{chunk-6PJOTWAN.js → chunk-HT5S5TRQ.js} +1 -1
- package/chunks/{chunk-Z4X5MTRT.js → chunk-HWVUSYSN.js} +5 -12
- package/chunks/{chunk-V4QXXQJ2.js → chunk-I75VKFCJ.js} +4 -4
- package/chunks/{chunk-NU7RKEZR.js → chunk-IBMUI5EV.js} +3 -3
- package/chunks/{chunk-4J657AJR.js → chunk-ID33ZRWH.js} +42 -42
- package/chunks/{chunk-R4PMVSR5.js → chunk-IIFL7QDN.js} +30 -192
- package/chunks/{chunk-MQM5PJML.js → chunk-IVUWTA2D.js} +1 -1
- package/chunks/{chunk-E55H6BZ7.js → chunk-IXEZHTDR.js} +1616 -151
- package/chunks/{chunk-XF63PKEN.js → chunk-IXHV5MIC.js} +1 -1
- package/chunks/{chunk-JHS74YAB.js → chunk-J4Y3QJHF.js} +3 -1
- package/chunks/{chunk-MIIVI25Q.js → chunk-JDIO45X7.js} +3 -3
- package/chunks/{chunk-QFCDF5PL.js → chunk-JHN7UIDW.js} +1 -1
- package/chunks/{chunk-FDY5RMGH.js → chunk-JLSZT354.js} +2 -2
- package/chunks/chunk-JMRE4WJQ.js +1849 -0
- package/chunks/{chunk-FY76G3G5.js → chunk-JOTYTYYW.js} +6 -6
- package/chunks/{chunk-TRZTNIQ6.js → chunk-JOWQD4LO.js} +3 -3
- package/chunks/{chunk-KEKZFOL6.js → chunk-JPKTAQS3.js} +1 -1
- package/chunks/chunk-JS73NNWF.js +30 -0
- package/chunks/chunk-JX6XHPTX.js +26 -0
- package/chunks/{chunk-5JTIYALA.js → chunk-JZWOCUZ3.js} +1 -1
- package/chunks/{chunk-3JGZSIDA.js → chunk-KFN2IZYR.js} +3 -3
- package/chunks/{chunk-23RFD54N.js → chunk-KHP66DFN.js} +1 -1
- package/chunks/{chunk-AGR5UROZ.js → chunk-KUDI54QQ.js} +23 -33
- package/chunks/{chunk-3SGB2UHX.js → chunk-L2OKAIUK.js} +28 -16
- package/chunks/{chunk-BXDAPVQU.js → chunk-L6CUJZDG.js} +28 -4
- package/chunks/chunk-LAUEEBDL.js +277 -0
- package/chunks/{chunk-BNMF3K5X.js → chunk-LFAR7CPW.js} +55 -39
- package/chunks/{chunk-Y3QL45LS.js → chunk-LKODFJRD.js} +9 -9
- package/chunks/{chunk-BWORX6FA.js → chunk-LMMHS3RS.js} +1 -1
- package/chunks/{chunk-UTLCH2FK.js → chunk-LYSZVCCD.js} +10 -7
- package/chunks/{chunk-F6FV3C5K.js → chunk-MBZ5ORJB.js} +264 -283
- package/chunks/{chunk-L6YT5H34.js → chunk-MJBHSZEJ.js} +5 -5
- package/chunks/{chunk-B7CDU2SL.js → chunk-MOF6VZN2.js} +18 -21
- package/chunks/{chunk-6LFJEACX.js → chunk-MZ5A5PQW.js} +7 -7
- package/chunks/chunk-MZYWNU66.js +149 -0
- package/chunks/{chunk-2TNL5KPM.js → chunk-N4QWUPDM.js} +7 -0
- package/chunks/{chunk-5O72BNDD.js → chunk-ND7TQQPE.js} +9 -9
- package/chunks/{chunk-QP4C6WCE.js → chunk-NGKLMNWN.js} +3 -3
- package/chunks/{chunk-JSC3H3TD.js → chunk-NT5XIL5H.js} +46 -18
- package/chunks/{chunk-KUX5D6DK.js → chunk-NT7LXVV5.js} +11010 -11138
- package/chunks/{chunk-PDQGMSZK.js → chunk-ODZF64DM.js} +1 -1
- package/chunks/{chunk-FBSSIAAQ.js → chunk-OE5AQVNB.js} +8 -8
- package/chunks/chunk-OHU2H5CS.js +130 -0
- package/chunks/{chunk-2K6ORIHJ.js → chunk-OKMDOATP.js} +13 -13
- package/chunks/{chunk-JB4JIVTJ.js → chunk-OKTNXDVO.js} +1 -1
- package/chunks/{chunk-XDLEZ5HX.js → chunk-OQYXJK2V.js} +1 -1
- package/chunks/{chunk-EFUM7RVY.js → chunk-OSTQZIOY.js} +944 -18
- package/chunks/{chunk-VQUGEVGR.js → chunk-OTTNXUT5.js} +1 -1
- package/chunks/{chunk-T3WXYEZ4.js → chunk-PB7JBAHF.js} +53 -54
- package/chunks/{chunk-WAOIHTJS.js → chunk-PDAKFU7M.js} +1 -1
- package/chunks/{chunk-43GGFFLY.js → chunk-PDXYZBBQ.js} +3 -3
- package/chunks/{chunk-4CMJKUND.js → chunk-PNIGAVY6.js} +67 -2
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-4CDSK5AZ.js → chunk-PWR2NQBS.js} +6 -6
- package/chunks/{chunk-YTDVNSUQ.js → chunk-QAK5475D.js} +1 -1
- package/chunks/{chunk-IJKTMLBE.js → chunk-QE7DTCLX.js} +1 -1
- package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
- package/chunks/{chunk-C6K43ZDE.js → chunk-QTMPM6RC.js} +16 -10
- package/chunks/{chunk-P5GGM4KS.js → chunk-RAEEQEC5.js} +5 -5
- package/chunks/{chunk-XDFHY4R3.js → chunk-RGEV5AUD.js} +242 -14
- package/chunks/{chunk-M6FOJXW3.js → chunk-RKW36UWC.js} +1 -1
- package/chunks/{chunk-RIEFGNTP.js → chunk-RLSPPTWH.js} +5119 -683
- package/chunks/{chunk-PDMJ3KGS.js → chunk-RT4QNQ5P.js} +3 -3
- package/chunks/{chunk-SJ3ZUWFK.js → chunk-RVCGAHC7.js} +4 -26
- package/chunks/{chunk-77RG5SFQ.js → chunk-RY7DL5IF.js} +11 -6
- package/chunks/{chunk-4FTKQNWJ.js → chunk-S2T7H5MI.js} +182 -3
- package/chunks/{chunk-EOGELB3H.js → chunk-SDCHI64N.js} +4 -4
- package/chunks/{chunk-EKSCLBBF.js → chunk-SMJYTKTB.js} +23 -5
- package/chunks/{chunk-MZS7GEC7.js → chunk-SMRDCANI.js} +1 -1
- package/chunks/{chunk-43UYNAWX.js → chunk-T3TL6S3B.js} +4 -4
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-IK5BW3CS.js → chunk-T4RMUTTT.js} +16 -5
- package/chunks/{chunk-L6BZRIUL.js → chunk-TBJ3SNS3.js} +183 -5
- package/chunks/{chunk-CCBZDVUA.js → chunk-TNMOFNT4.js} +133 -122
- package/chunks/{chunk-Y6LSMB6J.js → chunk-TV7BJ7TX.js} +1 -1
- package/chunks/{chunk-G34IR3D6.js → chunk-U5RTYI7D.js} +102 -146
- package/chunks/{chunk-TTX2JUE6.js → chunk-U6D2PPMN.js} +1 -1
- package/chunks/{chunk-D5LUXLUH.js → chunk-UJ4DUYIH.js} +18 -4
- package/chunks/{chunk-A7YP63XN.js → chunk-UKB2TZAO.js} +5 -5
- package/chunks/{chunk-VTHREBQM.js → chunk-UKYXYWI2.js} +2 -2
- package/chunks/{chunk-2NYCN6F2.js → chunk-UVYKCRJZ.js} +46 -29
- package/chunks/{chunk-HVEYF6VT.js → chunk-UXEW7TQS.js} +2 -2
- package/chunks/{chunk-HVQ3B7FF.js → chunk-V4HN35IF.js} +44 -7
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-V5J4J5TP.js → chunk-VYSZUQGU.js} +2 -20
- package/chunks/{chunk-6IUNAPLR.js → chunk-W4BDHLRT.js} +3 -3
- package/chunks/{chunk-Q26AYA62.js → chunk-W7KWB6AH.js} +7 -4
- package/chunks/chunk-WLEYH7CD.js +332 -0
- package/chunks/{chunk-RU7BK6B3.js → chunk-X7C7KFWA.js} +2 -2
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-BFPESSTR.js → chunk-XEAAO654.js} +1 -1
- package/chunks/{chunk-JU4EEXC7.js → chunk-XLENZQXH.js} +2 -2
- package/chunks/{chunk-JSHHYW6T.js → chunk-XPDKSOVW.js} +69 -64
- package/chunks/chunk-YDQ4OCDK.js +1222 -0
- package/chunks/{chunk-ZU4UDIWX.js → chunk-YKADANK6.js} +6 -7
- package/chunks/{chunk-JCQD3INC.js → chunk-YNG7XAJU.js} +3 -3
- package/chunks/{chunk-O2UN57NX.js → chunk-YOFULAHO.js} +19 -2
- package/chunks/{chunk-BAJKAAOY.js → chunk-YOMKOM7E.js} +4892 -1504
- package/chunks/{chunk-ERFDKH32.js → chunk-YPISTYEI.js} +8 -7
- package/chunks/{chunk-TGWAQ5RB.js → chunk-ZBDYI7VM.js} +6900 -6882
- package/chunks/{chunk-OZ6KS6KW.js → chunk-ZGCKTAL5.js} +6 -1
- package/chunks/chunk-ZHO2CW6D.js +205 -0
- package/chunks/{chunk-DZWPESIF.js → chunk-ZQ3FKEWA.js} +3 -3
- package/chunks/{chunk-7EQQR46F.js → chunk-ZVP4PWBU.js} +1 -1
- package/chunks/{chunk-7UYV53BC.js → chunk-ZYPJ7HVZ.js} +1 -1
- package/chunks/config-utils-NNUPVGEC.js +118 -0
- package/chunks/contextCommand-S3TPCDM5.js +111 -0
- package/chunks/{core-runtime-677KFX6Q.js → core-runtime-NASPCSQX.js} +66 -63
- package/chunks/{create-sub-session-23ITIELI.js → create-sub-session-36TNCHCP.js} +3 -3
- package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-DS4BJLYZ.js} +97 -68
- package/chunks/{cron-create-KJ4IY6PP.js → cron-create-QXHTYUTO.js} +4 -4
- package/chunks/{cron-delete-MBLQCAYY.js → cron-delete-WV2BM42M.js} +4 -4
- package/chunks/{cron-list-DWH2PQ47.js → cron-list-7KVNBLZ7.js} +4 -4
- package/chunks/{daemon-MJQUO7RA.js → daemon-UCVUHPJD.js} +723 -90
- package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-ATXVQPS3.js} +63 -60
- package/chunks/daemon-status-provider-UI3GBTMO.js +121 -0
- package/chunks/daemon-trust-policy-SUCBJ2CA.js +117 -0
- package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-3LM5RQNS.js} +71 -68
- package/chunks/{de-X6HLSIFE.js → de-T4BLOKEC.js} +3 -0
- package/chunks/deferred-core-runtime-SCOJLVYG.js +119 -0
- package/chunks/{display-image-BE7I6ZB6.js → display-image-Z4VBQDEJ.js} +5 -5
- package/chunks/{dist-TJUDJTCB.js → dist-5423MG3D.js} +411 -91
- package/chunks/{dist-ILDBUWDB.js → dist-7WDZYMWV.js} +43 -25
- package/chunks/{dist-ZBVOXSKF.js → dist-FLJLHASF.js} +219 -121
- package/chunks/{dist-QODVOVWI.js → dist-GPSRNVVP.js} +43 -35
- package/chunks/{dist-DJBNNPLN.js → dist-LY66XNUL.js} +10 -3
- package/chunks/{dist-7CKN54NL.js → dist-S3BKCTWF.js} +205 -89
- package/chunks/{dist-UQUFZDIY.js → dist-SDKHGH5O.js} +41 -20
- package/chunks/{dist-4Q7NTUNB.js → dist-WAUO5OMN.js} +46 -22
- package/chunks/{dist-SATKXKUR.js → dist-WIVVPE7M.js} +28 -14
- package/chunks/earlyInputCapture-INWJ2STR.js +112 -0
- package/chunks/{edit-BSV6YRVW.js → edit-B7ZRRGAE.js} +51 -49
- package/chunks/{en-YLXBXM4Z.js → en-E4AYTX6H.js} +3 -0
- package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-SPZHEETQ.js} +7 -7
- package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-S554IKJ2.js} +55 -53
- package/chunks/environment-25ADH4Y6.js +134 -0
- package/chunks/errors-G2I6LFTW.js +118 -0
- package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-AWUXAMAM.js} +7 -7
- package/chunks/exitPlanMode-ZFH4OYPM.js +87 -0
- package/chunks/{fast-path-773PV7PU.js → fast-path-WZHVZ2ER.js} +8 -7
- package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-NILM6QZL.js} +3 -3
- package/chunks/{fr-FTZWF462.js → fr-BGHGYX6A.js} +3 -0
- package/chunks/{glob-CZHOWUEA.js → glob-UOVDMBUP.js} +50 -48
- package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-7TNK5ZHC.js} +5 -4
- package/chunks/{grep-5GPICQBU.js → grep-LHYJ5V2N.js} +9 -7
- package/chunks/handleAutoUpdate-4MZ45DZY.js +114 -0
- package/chunks/i18n-KWUEI4DS.js +129 -0
- package/chunks/{image-gen-HAYOEQ4O.js → image-gen-YZDVO5YS.js} +8 -10
- package/chunks/initializer-2NBROGMG.js +118 -0
- package/chunks/installationInfo-YKUSY3ZB.js +112 -0
- package/chunks/{ja-2GL5FKYJ.js → ja-G3FTD5XE.js} +3 -0
- package/chunks/{keychain-token-storage-37XPR34V.js → keychain-token-storage-REZVMJA6.js} +2 -2
- package/chunks/list-W2WV3COM.js +121 -0
- package/chunks/list-agents-PMVMHNY7.js +128 -0
- package/chunks/{gemini-IP4FJAP5.js → llm-NPPHLIJI.js} +162 -133
- package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-YK3WN6XW.js} +29 -29
- package/chunks/loadedSettingsAdapter-2P7DFWUR.js +115 -0
- package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-QYYYGU6V.js} +318 -35
- package/chunks/{loop-wakeup-XJFONSQ7.js → loop-wakeup-EBM4F5MZ.js} +5 -5
- package/chunks/{ls-3VAT2J7A.js → ls-F6TRX3DD.js} +4 -4
- package/chunks/{lsp-5W7IRUBH.js → lsp-QYTOS2FI.js} +2 -2
- package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-UMC4NBWW.js} +64 -61
- package/chunks/mcp-OFI6XDP2.js +115 -0
- package/chunks/{monitor-FI7PY36Z.js → monitor-QX3BM3JY.js} +50 -48
- package/chunks/nonInteractiveCli-NVRMD5MN.js +193 -0
- package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-AAILDPSV.js} +51 -49
- package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-D6JD6LDS.js} +4 -4
- package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-53PB3CMN.js} +27 -29
- package/chunks/pidfile-5ACKG2LI.js +116 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-IQZBYWSB.js → processUtils-2BCDO3DZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-3RKW73A2.js +110 -0
- package/chunks/{pt-XN2YWJVM.js → pt-D73IFYT7.js} +3 -0
- package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-N4LLWDPH.js} +56 -54
- package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-7AOCKSOQ.js} +7 -9
- package/chunks/{read-file-QE2B5FTX.js → read-file-DPAKXHYE.js} +13 -13
- package/chunks/{read-mcp-resource-XD257PGJ.js → read-mcp-resource-R4NO75DW.js} +2 -2
- package/chunks/{record-artifact-RZGZBENU.js → record-artifact-2EAYLAL5.js} +4 -4
- package/chunks/{report-findings-Q3SYKKW5.js → report-findings-Y4MSHDS3.js} +9 -5
- package/chunks/{request-shutdown-BCLA3JV2.js → request-shutdown-DWRMGTMB.js} +8 -7
- package/chunks/resumeHistoryUtils-3JQORXAK.js +123 -0
- package/chunks/ripGrep-AHF5QCI7.js +39 -0
- package/chunks/{ru-OLTMFJEW.js → ru-QMISLKRH.js} +3 -0
- package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-3LKV7KDC.js} +728 -256
- package/chunks/runtime-66F4W3IA.js +153 -0
- package/chunks/scheduled-tasks-2NVKS5Q2.js +132 -0
- package/chunks/scheduler-JNV7T3ZO.js +127 -0
- package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-MFIWD23D.js} +2 -2
- package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-2RXJ4Q6X.js} +11 -5
- package/chunks/send-message-WPZRCJOB.js +442 -0
- package/chunks/serve-GP2UNRP7.js +123 -0
- package/chunks/{server-DFUSSSHI.js → server-7W6C3SOW.js} +5233 -3623
- package/chunks/{session-3TEHNENZ.js → session-PZLBAQGG.js} +125 -118
- package/chunks/session-pr-refresh-OIVL3U3Z.js +367 -0
- package/chunks/{settings-VOZYKLTT.js → settings-ZOHIQWYK.js} +70 -67
- package/chunks/shell-FWZT6IUR.js +97 -0
- package/chunks/{skill-FEOKFX26.js → skill-RTQC2YGA.js} +121 -65
- package/chunks/skill-settings-AKMIXFSJ.js +123 -0
- package/chunks/spawnChannel-ZP23JL6O.js +116 -0
- package/chunks/standalone-update-P2Q5H4ZU.js +123 -0
- package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-NSA6QPQZ.js} +2018 -1526
- package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
- package/chunks/{syntheticOutput-ML43GEFN.js → syntheticOutput-5URSQLIS.js} +3 -3
- package/chunks/{task-create-TMSV7RD5.js → task-create-3EXVDG3G.js} +12 -12
- package/chunks/{task-list-W55RBFRX.js → task-list-PIBYNSE7.js} +5 -6
- package/chunks/{task-stop-CXEH5L2D.js → task-stop-IV3BYWJC.js} +2 -2
- package/chunks/{task-update-N536I4GQ.js → task-update-H5BPDS5Y.js} +13 -14
- package/chunks/{team-create-QYSWCYCL.js → team-create-53T42W37.js} +56 -55
- package/chunks/{team-delete-FJRFX33M.js → team-delete-X3WPELS6.js} +25 -8
- package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-D45ZC5OE.js} +50 -48
- package/chunks/terminal-image-renderer-FCRUWT6C.js +121 -0
- package/chunks/theme-manager-MHNPEDP7.js +107 -0
- package/chunks/{todoWrite-WDJNQEMW.js → todoWrite-A5IOZZ3P.js} +4 -4
- package/chunks/{tool-search-F2EMIAPV.js → tool-search-6RPBGGUX.js} +27 -23
- package/chunks/total-session-admission-MGV56XDK.js +117 -0
- package/chunks/trustedFolders-QJYEFMTU.js +127 -0
- package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
- package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-ZDMQX63C.js} +6 -6
- package/chunks/updateCheck-4QZWCGP6.js +123 -0
- package/chunks/useAutoAcceptIndicator-DLIQN256.js +125 -0
- package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-HGTG7AEK.js} +114 -107
- package/chunks/{version-ANP4TS6O.js → version-CPAZMC4B.js} +1 -1
- package/chunks/{web-fetch-QJADSAH3.js → web-fetch-N4K5M3M4.js} +16 -18
- package/chunks/{web-search-7TTQKEKM.js → web-search-4VZKM5SF.js} +9 -11
- package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-PW7OEDQO.js} +3 -2
- package/chunks/{workflow-5XN6XSOT.js → workflow-2ALQKTHG.js} +229 -146
- package/chunks/workspace-providers-status-5JM4CB6R.js +119 -0
- package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-RNMFVCH7.js} +2 -1
- package/chunks/workspace-registry-6EULAPZC.js +126 -0
- package/chunks/workspace-runtime-coordinator-IRI2DRCJ.js +127 -0
- package/chunks/workspace-service-SETHN4WE.js +131 -0
- package/chunks/workspace-skills-status-4D4EUEQU.js +118 -0
- package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-4LR3CDL4.js} +77 -76
- package/chunks/write-file-45GWPSOI.js +92 -0
- package/chunks/{zh-UNY63FR3.js → zh-2BQ7P6OD.js} +3 -0
- package/chunks/{zh-TW-RPTMRTHG.js → zh-TW-UFXRZTXX.js} +3 -0
- package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-K6IQUKRC.js} +13 -13
- package/cli.js +129 -92
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +6 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +6 -0
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +6 -0
- package/locales/zh.js +6 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-C80OZcPP.js} +1 -1
- package/web-shell/assets/{arc-BSTnk5pu.js → arc-AUqStYgf.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-CQYOdYla.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-lYKlFysy.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-BoS23iIp.js} +1 -1
- package/web-shell/assets/channel-B0ovOJeK.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-DLLooL1E.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-kPfJxScY.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-CVGFBqkD.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-CnM_kOVV.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Cj-ajOkT.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-8L5c-wFo.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-DsXTxpvL.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-DU5GE1_z.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-D2IIWZKt.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-CF_txUJr.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-DEZ-My-Z.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-BV7EKUS6.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-JGIX0G4H.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-DdUY7q6A.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-fhzRZ19v.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-BOgOex6q.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-C0NknIz6.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-C__3mUBX.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-BvPhqycH.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-BqzoNoL9.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CJKOre47.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-C5xZjrp0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-C0EjwuPK.js} +1 -1
- package/web-shell/assets/index-B_IPzA0h.js +2020 -0
- package/web-shell/assets/{index-CBGz4Qjl.js → index-C5M93syE.js} +1 -1
- package/web-shell/assets/index-D1OKGQlM.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-BUwzsYOs.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-EDJ_DH3V.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BnfcOsS0.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-D_ofTVGu.js} +1 -1
- package/web-shell/assets/{layout-CEz_1L8z.js → layout-CBuQFdfZ.js} +1 -1
- package/web-shell/assets/{linear-CBjTq9Hc.js → linear-DRIHtmGv.js} +1 -1
- package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-CmR5wZH6.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-BV374olC.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-Bpy1SplK.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-CeZx4hR2.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-COYKs14h.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-5g2pOeTs.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-Yn8uPGtF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-CTayAGq6.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-BFWDKzUU.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-CtErUbj4.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-Co3HFzOd.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-CDZuxzOj.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-UcNHj8At.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-JKR9pVFG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-C4SU-yIW.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-D_yoWGZ4.js} +1 -1
- package/web-shell/index.html +197 -3
- package/chunks/MaxSizedBox-X5FZSNAJ.js +0 -112
- package/chunks/agent-PJIPDWHB.js +0 -97
- package/chunks/agent-headless-B4JVD7UK.js +0 -87
- package/chunks/bridge-FKZTVIS3.js +0 -121
- package/chunks/channel-settings-store-4UFCLBBG.js +0 -117
- package/chunks/chunk-7DJCPZE3.js +0 -945
- package/chunks/chunk-CPBF7KYF.js +0 -51
- package/chunks/chunk-H72BQNM3.js +0 -645
- package/chunks/chunk-J2OSJFP3.js +0 -202
- package/chunks/chunk-K2OJUPOE.js +0 -78
- package/chunks/chunk-P3QQPMQA.js +0 -19
- package/chunks/chunk-RUGNCYNO.js +0 -699
- package/chunks/chunk-T26EAKDL.js +0 -13
- package/chunks/chunk-ZGXYO7DY.js +0 -3416
- package/chunks/chunk-ZYNTSXWK.js +0 -32
- package/chunks/config-utils-BBOCOGZW.js +0 -113
- package/chunks/contextCommand-EET67MQ2.js +0 -108
- package/chunks/daemon-status-provider-RFKZOK3S.js +0 -119
- package/chunks/daemon-trust-policy-DRZPFB4Q.js +0 -114
- package/chunks/deferred-core-runtime-BBVIOP24.js +0 -116
- package/chunks/earlyInputCapture-2JOMMNQ4.js +0 -109
- package/chunks/environment-MOZMPUHR.js +0 -131
- package/chunks/errors-DMPQVYJL.js +0 -115
- package/chunks/exitPlanMode-UE4FGCY4.js +0 -85
- package/chunks/handleAutoUpdate-SGXKTQM6.js +0 -111
- package/chunks/i18n-B42HKHKH.js +0 -126
- package/chunks/initializer-FB66WYR3.js +0 -115
- package/chunks/installationInfo-Y7AULNMX.js +0 -109
- package/chunks/list-2HWGSVRA.js +0 -118
- package/chunks/list-agents-DI3YFTDT.js +0 -80
- package/chunks/loadedSettingsAdapter-7Y7IEI6T.js +0 -112
- package/chunks/mcp-QGG5NMJJ.js +0 -112
- package/chunks/nonInteractiveCli-4LO2TL72.js +0 -186
- package/chunks/pidfile-JMF2CLMY.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-DCZO6S7C.js +0 -107
- package/chunks/resumeHistoryUtils-CZ4JRDVW.js +0 -120
- package/chunks/ripGrep-R6B6HWPX.js +0 -39
- package/chunks/runtime-TTIGSBM4.js +0 -150
- package/chunks/scheduled-tasks-QB4ZVUQS.js +0 -129
- package/chunks/scheduler-YRUG22M7.js +0 -124
- package/chunks/send-message-Y5I6NYAM.js +0 -295
- package/chunks/serve-MXXCDAQN.js +0 -120
- package/chunks/shell-6RTKZVMI.js +0 -95
- package/chunks/skill-settings-VA4XVYVL.js +0 -120
- package/chunks/spawnChannel-F6WVP723.js +0 -114
- package/chunks/standalone-update-RGILUQVK.js +0 -120
- package/chunks/terminal-image-renderer-SMQE46UJ.js +0 -116
- package/chunks/theme-manager-RFO5WWFF.js +0 -104
- package/chunks/total-session-admission-HTVTP4BS.js +0 -116
- package/chunks/trustedFolders-7OCNMUQE.js +0 -124
- package/chunks/updateCheck-7QBDXZRT.js +0 -120
- package/chunks/useAutoAcceptIndicator-UI4SNL2O.js +0 -122
- package/chunks/workspace-providers-status-PDFZWL5Q.js +0 -116
- package/chunks/workspace-registry-23R7XRB5.js +0 -125
- package/chunks/workspace-service-MUYO2QIC.js +0 -131
- package/chunks/workspace-skills-status-IKECTOOQ.js +0 -115
- package/chunks/write-file-GGRBB5TZ.js +0 -90
- package/web-shell/assets/channel-CENAhErJ.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
- package/web-shell/assets/index-8hXIpvo4.js +0 -1865
- package/web-shell/assets/index-DclEv91i.css +0 -5
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
|
@@ -4,120 +4,124 @@ import {
|
|
|
4
4
|
isSymlinkedRoot,
|
|
5
5
|
resolveSavedWorkflowScript,
|
|
6
6
|
writeWorkflowSnapshot
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DBTMP3P4.js";
|
|
8
8
|
import {
|
|
9
9
|
AgentEventEmitter,
|
|
10
|
-
FileDiscoveryService,
|
|
11
10
|
attachJsonlTranscriptWriter,
|
|
12
11
|
buildAgentTranscriptAttach,
|
|
12
|
+
deriveApprovalModeConfig,
|
|
13
|
+
deriveConfig,
|
|
14
|
+
deriveWorktreeConfig,
|
|
13
15
|
getRuleDisplayName,
|
|
16
|
+
getWorkflowTaskMutationKey,
|
|
14
17
|
isTerminalWorkflowStatus,
|
|
15
18
|
rebuildToolRegistryOnOverride,
|
|
16
19
|
resolveExternalWorktreeDir,
|
|
17
20
|
resolveToolName,
|
|
18
|
-
toModelVisibleSubagentResult
|
|
19
|
-
|
|
21
|
+
toModelVisibleSubagentResult,
|
|
22
|
+
tryWithWorkflowTaskMutation
|
|
23
|
+
} from "./chunk-ZBDYI7VM.js";
|
|
20
24
|
import "./chunk-GOFAQQZA.js";
|
|
21
25
|
import "./chunk-5M6IDOMF.js";
|
|
26
|
+
import "./chunk-6HUXPLB5.js";
|
|
22
27
|
import "./chunk-TWPJO254.js";
|
|
23
28
|
import "./chunk-CQ35AJ4Z.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-SFPGAQUL.js";
|
|
29
|
+
import "./chunk-SMJYTKTB.js";
|
|
30
|
+
import "./chunk-AI35S34R.js";
|
|
31
|
+
import "./chunk-FIWZOMBF.js";
|
|
28
32
|
import {
|
|
29
33
|
parsePositiveIntegerEnv
|
|
30
34
|
} from "./chunk-6PVPNMXU.js";
|
|
31
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-OKTNXDVO.js";
|
|
36
|
+
import "./chunk-DJBQCO2E.js";
|
|
32
37
|
import "./chunk-IRH27ZC2.js";
|
|
33
38
|
import "./chunk-QHWCP53L.js";
|
|
34
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-UJ4DUYIH.js";
|
|
35
40
|
import "./chunk-O6GEWCJA.js";
|
|
36
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-YDQ4OCDK.js";
|
|
37
42
|
import {
|
|
38
43
|
GitWorktreeService,
|
|
39
44
|
generateAgentWorktreeSlug,
|
|
40
45
|
writeWorktreeSessionMarker
|
|
41
|
-
} from "./chunk-
|
|
42
|
-
import "./chunk-
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
50
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-SDCHI64N.js";
|
|
47
|
+
import "./chunk-B2RIIK3K.js";
|
|
48
|
+
import "./chunk-373DQUVA.js";
|
|
49
|
+
import "./chunk-OSTQZIOY.js";
|
|
50
|
+
import "./chunk-U6D2PPMN.js";
|
|
51
|
+
import "./chunk-PDXYZBBQ.js";
|
|
52
|
+
import "./chunk-QJNDUTOL.js";
|
|
53
|
+
import "./chunk-ZHO2CW6D.js";
|
|
54
|
+
import "./chunk-AF3QB6OL.js";
|
|
55
|
+
import "./chunk-7TBU7PU2.js";
|
|
56
|
+
import "./chunk-E4JNFXNI.js";
|
|
57
|
+
import "./chunk-4P7PPAHN.js";
|
|
58
|
+
import "./chunk-7J6OTNGO.js";
|
|
59
|
+
import "./chunk-CHEIIBT3.js";
|
|
51
60
|
import {
|
|
52
61
|
SUBAGENT_PLAN_LIFECYCLE_TOOLS
|
|
53
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-VYSZUQGU.js";
|
|
63
|
+
import "./chunk-JX6XHPTX.js";
|
|
54
64
|
import "./chunk-MLXTMF7H.js";
|
|
55
65
|
import "./chunk-NAVJD2PQ.js";
|
|
56
|
-
import "./chunk-
|
|
57
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-KFN2IZYR.js";
|
|
67
|
+
import "./chunk-GB4UKWY5.js";
|
|
58
68
|
import "./chunk-QHMLYMMS.js";
|
|
59
|
-
import "./chunk-
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-SAH4BD2J.js";
|
|
63
|
-
import "./chunk-PDMJ3KGS.js";
|
|
69
|
+
import "./chunk-UXEW7TQS.js";
|
|
70
|
+
import "./chunk-PQEISIKS.js";
|
|
71
|
+
import "./chunk-RT4QNQ5P.js";
|
|
64
72
|
import {
|
|
65
73
|
runWithAgentContext
|
|
66
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-26SIKQIC.js";
|
|
67
75
|
import "./chunk-S6LOFUVP.js";
|
|
76
|
+
import "./chunk-CFKIH3D3.js";
|
|
68
77
|
import "./chunk-2LD5U7Q3.js";
|
|
69
78
|
import {
|
|
70
79
|
createAbortController,
|
|
71
80
|
createChildAbortController
|
|
72
81
|
} from "./chunk-DJ2GSRLV.js";
|
|
73
|
-
import "./chunk-
|
|
74
|
-
import "./chunk-
|
|
75
|
-
import "./chunk-CFKIH3D3.js";
|
|
76
|
-
import "./chunk-4FTKQNWJ.js";
|
|
77
|
-
import "./chunk-Y3QL45LS.js";
|
|
82
|
+
import "./chunk-S2T7H5MI.js";
|
|
83
|
+
import "./chunk-LKODFJRD.js";
|
|
78
84
|
import {
|
|
79
85
|
WorkflowRunEvent,
|
|
80
86
|
logWorkflowRun,
|
|
81
87
|
read,
|
|
82
88
|
writeLine
|
|
83
|
-
} from "./chunk-
|
|
84
|
-
import "./chunk-
|
|
89
|
+
} from "./chunk-FXUSWLBF.js";
|
|
90
|
+
import "./chunk-XBVNNDPK.js";
|
|
85
91
|
import "./chunk-VGC4I5JJ.js";
|
|
86
92
|
import {
|
|
87
93
|
isWithinRoot
|
|
88
|
-
} from "./chunk-
|
|
89
|
-
import "./chunk-
|
|
90
|
-
import "./chunk-
|
|
94
|
+
} from "./chunk-67AY5D3M.js";
|
|
95
|
+
import "./chunk-HT5S5TRQ.js";
|
|
96
|
+
import "./chunk-LMMHS3RS.js";
|
|
91
97
|
import "./chunk-WZAD4ZNJ.js";
|
|
92
98
|
import "./chunk-FPGTNKCP.js";
|
|
93
|
-
import "./chunk-
|
|
94
|
-
import "./chunk-
|
|
99
|
+
import "./chunk-EIJT2PQ6.js";
|
|
100
|
+
import "./chunk-H5GPPDGY.js";
|
|
95
101
|
import "./chunk-XZA32HII.js";
|
|
96
|
-
import "./chunk-
|
|
97
|
-
import "./chunk-
|
|
102
|
+
import "./chunk-KHP66DFN.js";
|
|
103
|
+
import "./chunk-22UH7VTP.js";
|
|
98
104
|
import "./chunk-HHJLM3WQ.js";
|
|
99
105
|
import {
|
|
100
106
|
stripAnsiAndControl
|
|
101
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-TBJ3SNS3.js";
|
|
102
108
|
import "./chunk-74TONY4F.js";
|
|
103
109
|
import {
|
|
104
110
|
SyntheticOutputTool
|
|
105
|
-
} from "./chunk-
|
|
106
|
-
import "./chunk-
|
|
107
|
-
import "./chunk-
|
|
111
|
+
} from "./chunk-IXHV5MIC.js";
|
|
112
|
+
import "./chunk-D7D3HSYQ.js";
|
|
113
|
+
import "./chunk-YKADANK6.js";
|
|
108
114
|
import "./chunk-AQ37AY7B.js";
|
|
109
|
-
import
|
|
110
|
-
WorkspaceContext
|
|
111
|
-
} from "./chunk-PDQGMSZK.js";
|
|
115
|
+
import "./chunk-ODZF64DM.js";
|
|
112
116
|
import {
|
|
113
117
|
BaseDeclarativeTool,
|
|
114
118
|
BaseToolInvocation,
|
|
115
119
|
ToolDisplayNames,
|
|
116
120
|
ToolNames
|
|
117
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-LYSZVCCD.js";
|
|
118
122
|
import {
|
|
119
123
|
createDebugLogger
|
|
120
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-EAHOJF6V.js";
|
|
121
125
|
import "./chunk-75DOP5OR.js";
|
|
122
126
|
import "./chunk-DMTGGOSA.js";
|
|
123
127
|
import "./chunk-YQ3U5MUC.js";
|
|
@@ -546,6 +550,12 @@ function compileWorkflowScript(scriptSource) {
|
|
|
546
550
|
return { script, meta };
|
|
547
551
|
}
|
|
548
552
|
__name(compileWorkflowScript, "compileWorkflowScript");
|
|
553
|
+
function workflowCancelledError() {
|
|
554
|
+
const error = new Error("Workflow run was aborted (cancelled).");
|
|
555
|
+
error.name = "AbortError";
|
|
556
|
+
return error;
|
|
557
|
+
}
|
|
558
|
+
__name(workflowCancelledError, "workflowCancelledError");
|
|
549
559
|
var COMPILE_ERROR_LINE_WIDTH = 80;
|
|
550
560
|
function describeWorkflowCompileError(error, authorLineCount) {
|
|
551
561
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
@@ -1632,16 +1642,22 @@ function createWorkflowSandbox(opts) {
|
|
|
1632
1642
|
let watchdog;
|
|
1633
1643
|
let stopWatchingState;
|
|
1634
1644
|
let rearmWatchdogOnAbort;
|
|
1645
|
+
let settleOnAbort;
|
|
1646
|
+
let wallClockFired = false;
|
|
1635
1647
|
process.on("unhandledRejection", adoptionEscapeHook);
|
|
1636
1648
|
try {
|
|
1637
1649
|
const { script, meta } = compileWorkflowScript(scriptSource);
|
|
1638
1650
|
extractedMeta = meta;
|
|
1651
|
+
if (opts.abortOnTimeout?.signal.aborted) {
|
|
1652
|
+
throw workflowCancelledError();
|
|
1653
|
+
}
|
|
1639
1654
|
const runOpts = {
|
|
1640
1655
|
timeout: 3e4
|
|
1641
1656
|
};
|
|
1642
1657
|
const result = script.runInContext(ctx, runOpts);
|
|
1643
1658
|
const timeoutPromise = new Promise((_, reject) => {
|
|
1644
1659
|
watchdog = new WallClockWatchdog(maxWallClockMs, () => {
|
|
1660
|
+
wallClockFired = true;
|
|
1645
1661
|
opts.abortOnTimeout?.abort();
|
|
1646
1662
|
reject(
|
|
1647
1663
|
new Error(
|
|
@@ -1664,7 +1680,15 @@ function createWorkflowSandbox(opts) {
|
|
|
1664
1680
|
rearmWatchdogOnAbort,
|
|
1665
1681
|
{ once: true }
|
|
1666
1682
|
);
|
|
1667
|
-
|
|
1683
|
+
const abortPromise = new Promise((_, reject) => {
|
|
1684
|
+
const signal = opts.abortOnTimeout?.signal;
|
|
1685
|
+
if (!signal) return;
|
|
1686
|
+
settleOnAbort = /* @__PURE__ */ __name(() => {
|
|
1687
|
+
if (!wallClockFired) reject(workflowCancelledError());
|
|
1688
|
+
}, "settleOnAbort");
|
|
1689
|
+
signal.addEventListener("abort", settleOnAbort, { once: true });
|
|
1690
|
+
});
|
|
1691
|
+
return await Promise.race([result, timeoutPromise, abortPromise]);
|
|
1668
1692
|
} finally {
|
|
1669
1693
|
if (rearmWatchdogOnAbort) {
|
|
1670
1694
|
opts.abortOnTimeout?.signal.removeEventListener(
|
|
@@ -1672,6 +1696,12 @@ function createWorkflowSandbox(opts) {
|
|
|
1672
1696
|
rearmWatchdogOnAbort
|
|
1673
1697
|
);
|
|
1674
1698
|
}
|
|
1699
|
+
if (settleOnAbort) {
|
|
1700
|
+
opts.abortOnTimeout?.signal.removeEventListener(
|
|
1701
|
+
"abort",
|
|
1702
|
+
settleOnAbort
|
|
1703
|
+
);
|
|
1704
|
+
}
|
|
1675
1705
|
stopWatchingState?.();
|
|
1676
1706
|
watchdog?.stop();
|
|
1677
1707
|
await flushUnconsumedRejections();
|
|
@@ -2165,7 +2195,7 @@ function resolveMaxAgentsPerRun(env = process.env) {
|
|
|
2165
2195
|
__name(resolveMaxAgentsPerRun, "resolveMaxAgentsPerRun");
|
|
2166
2196
|
var MAX_WORKFLOW_CONCURRENCY_ENV = "QWEN_CODE_MAX_WORKFLOW_CONCURRENCY";
|
|
2167
2197
|
var HARD_MAX_CONCURRENCY_CEILING = 64;
|
|
2168
|
-
function resolveConcurrencyLimit(env = process.env) {
|
|
2198
|
+
function resolveConcurrencyLimit(env = process.env, availableParallelism2 = os.availableParallelism) {
|
|
2169
2199
|
const raw = env[MAX_WORKFLOW_CONCURRENCY_ENV];
|
|
2170
2200
|
if (raw !== void 0 && raw.trim() !== "") {
|
|
2171
2201
|
const parsed = parsePositiveIntegerEnv(raw, 0);
|
|
@@ -2182,7 +2212,7 @@ function resolveConcurrencyLimit(env = process.env) {
|
|
|
2182
2212
|
`Invalid ${MAX_WORKFLOW_CONCURRENCY_ENV}=${JSON.stringify(raw)}, using cpu-derived default`
|
|
2183
2213
|
);
|
|
2184
2214
|
}
|
|
2185
|
-
return Math.max(
|
|
2215
|
+
return Math.max(2, Math.min(16, availableParallelism2() - 2));
|
|
2186
2216
|
}
|
|
2187
2217
|
__name(resolveConcurrencyLimit, "resolveConcurrencyLimit");
|
|
2188
2218
|
var DEFAULT_WORKFLOW_SUBAGENT_MAX_TURNS = 50;
|
|
@@ -2353,7 +2383,7 @@ function attachDispatchTranscript(config, agentId, prompt, agentName, emitter, a
|
|
|
2353
2383
|
}
|
|
2354
2384
|
__name(attachDispatchTranscript, "attachDispatchTranscript");
|
|
2355
2385
|
async function runSingleDispatch(config, prompt, opts, attemptSignal, emitter, workflowAgentId, agentIdentity, onTokens) {
|
|
2356
|
-
const { AgentHeadless, ContextState } = await import("./agent-headless-
|
|
2386
|
+
const { AgentHeadless, ContextState } = await import("./agent-headless-TVUJXQWU.js");
|
|
2357
2387
|
const ctx = new ContextState();
|
|
2358
2388
|
ctx.set("task_prompt", prompt);
|
|
2359
2389
|
debugLogger.debug(`[workflow] Dispatch ${workflowAgentId}`);
|
|
@@ -2473,6 +2503,7 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2473
2503
|
};
|
|
2474
2504
|
let worktreeIsolation = null;
|
|
2475
2505
|
let effectiveContext = config;
|
|
2506
|
+
let approvalCleanup;
|
|
2476
2507
|
if (opts.isolation !== void 0 && opts.workingDir !== void 0) {
|
|
2477
2508
|
throw new Error(
|
|
2478
2509
|
"agent({workingDir, isolation}): incompatible options. workingDir pins the agent to a worktree you already own; isolation creates a fresh one and removes it afterwards. Pass one."
|
|
@@ -2480,10 +2511,9 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2480
2511
|
}
|
|
2481
2512
|
if (opts.isolation === "worktree") {
|
|
2482
2513
|
worktreeIsolation = await provisionWorkflowWorktree(config);
|
|
2483
|
-
effectiveContext =
|
|
2484
|
-
config
|
|
2485
|
-
|
|
2486
|
-
);
|
|
2514
|
+
effectiveContext = deriveWorktreeConfig(config, worktreeIsolation.path, {
|
|
2515
|
+
customIgnoreFiles: config.getFileFilteringOptions().customIgnoreFiles
|
|
2516
|
+
});
|
|
2487
2517
|
} else if (opts.workingDir !== void 0) {
|
|
2488
2518
|
if (typeof opts.workingDir !== "string" || opts.workingDir.trim().length === 0) {
|
|
2489
2519
|
throw new Error(
|
|
@@ -2500,7 +2530,17 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2500
2530
|
`agent({workingDir: ${sanitizeForErrorMessage(JSON.stringify(opts.workingDir))}}): ${sanitizeForErrorMessage(resolved.error)}`
|
|
2501
2531
|
);
|
|
2502
2532
|
}
|
|
2503
|
-
effectiveContext =
|
|
2533
|
+
effectiveContext = deriveWorktreeConfig(config, resolved.path, {
|
|
2534
|
+
customIgnoreFiles: config.getFileFilteringOptions().customIgnoreFiles
|
|
2535
|
+
});
|
|
2536
|
+
}
|
|
2537
|
+
if (effectiveContext !== config) {
|
|
2538
|
+
const approvalHandle = deriveApprovalModeConfig(
|
|
2539
|
+
effectiveContext,
|
|
2540
|
+
config.getApprovalMode()
|
|
2541
|
+
);
|
|
2542
|
+
approvalCleanup = approvalHandle.cleanup;
|
|
2543
|
+
effectiveContext = approvalHandle.config;
|
|
2504
2544
|
}
|
|
2505
2545
|
let onParentAbort;
|
|
2506
2546
|
try {
|
|
@@ -2613,6 +2653,7 @@ ${WORKFLOW_SUBAGENT_SYSTEM_PROMPT_WITH_SCHEMA}` : WORKFLOW_SUBAGENT_SYSTEM_PROMP
|
|
|
2613
2653
|
if (onParentAbort && signal) {
|
|
2614
2654
|
signal.removeEventListener("abort", onParentAbort);
|
|
2615
2655
|
}
|
|
2656
|
+
approvalCleanup?.();
|
|
2616
2657
|
if (worktreeIsolation) {
|
|
2617
2658
|
try {
|
|
2618
2659
|
await cleanupWorkflowWorktree(worktreeIsolation);
|
|
@@ -2695,26 +2736,6 @@ async function provisionWorkflowWorktree(config) {
|
|
|
2695
2736
|
};
|
|
2696
2737
|
}
|
|
2697
2738
|
__name(provisionWorkflowWorktree, "provisionWorkflowWorktree");
|
|
2698
|
-
function createDirScopedConfigOverride(base, wtPath) {
|
|
2699
|
-
const ov = Object.create(base);
|
|
2700
|
-
ov.targetDir = wtPath;
|
|
2701
|
-
ov.cwd = wtPath;
|
|
2702
|
-
ov.getTargetDir = () => wtPath;
|
|
2703
|
-
ov.getCwd = () => wtPath;
|
|
2704
|
-
ov.getWorkingDir = () => wtPath;
|
|
2705
|
-
ov.getProjectRoot = () => wtPath;
|
|
2706
|
-
const wtFileService = new FileDiscoveryService(
|
|
2707
|
-
wtPath,
|
|
2708
|
-
base.getFileFilteringOptions().customIgnoreFiles
|
|
2709
|
-
);
|
|
2710
|
-
ov.fileDiscoveryService = wtFileService;
|
|
2711
|
-
ov.getFileService = () => wtFileService;
|
|
2712
|
-
const wtWorkspace = new WorkspaceContext(wtPath);
|
|
2713
|
-
ov.workspaceContext = wtWorkspace;
|
|
2714
|
-
ov.getWorkspaceContext = () => wtWorkspace;
|
|
2715
|
-
return ov;
|
|
2716
|
-
}
|
|
2717
|
-
__name(createDirScopedConfigOverride, "createDirScopedConfigOverride");
|
|
2718
2739
|
async function cleanupWorkflowWorktree(isolation) {
|
|
2719
2740
|
const wtService = new GitWorktreeService(isolation.repoRoot);
|
|
2720
2741
|
const [hasChanges, hasUnmerged] = await Promise.all([
|
|
@@ -2804,7 +2825,7 @@ function attachSchemaListeners(emitter, state) {
|
|
|
2804
2825
|
}
|
|
2805
2826
|
__name(attachSchemaListeners, "attachSchemaListeners");
|
|
2806
2827
|
async function createSchemaConfigOverride(base, schema) {
|
|
2807
|
-
const override =
|
|
2828
|
+
const override = deriveConfig(base);
|
|
2808
2829
|
await rebuildToolRegistryOnOverride(override, base);
|
|
2809
2830
|
const registry = override.getToolRegistry();
|
|
2810
2831
|
registry.registerTool(new SyntheticOutputTool(schema));
|
|
@@ -3269,74 +3290,111 @@ Workflow scripts must be plain JavaScript \u2014 the usual causes are TypeScript
|
|
|
3269
3290
|
__name(this, "WorkflowScriptNotLaunchedError");
|
|
3270
3291
|
}
|
|
3271
3292
|
};
|
|
3293
|
+
var WorkflowStartCancelledError = class extends Error {
|
|
3294
|
+
static {
|
|
3295
|
+
__name(this, "WorkflowStartCancelledError");
|
|
3296
|
+
}
|
|
3297
|
+
constructor() {
|
|
3298
|
+
super("Workflow start was cancelled.");
|
|
3299
|
+
this.name = "WorkflowStartCancelledError";
|
|
3300
|
+
}
|
|
3301
|
+
};
|
|
3272
3302
|
var WorkflowRunner = class {
|
|
3273
3303
|
static {
|
|
3274
3304
|
__name(this, "WorkflowRunner");
|
|
3275
3305
|
}
|
|
3276
3306
|
static async start(options) {
|
|
3307
|
+
if (options.resumeFromRunId) {
|
|
3308
|
+
const attempt = await tryWithWorkflowTaskMutation(
|
|
3309
|
+
getWorkflowTaskMutationKey(options.config, options.resumeFromRunId),
|
|
3310
|
+
() => this.startClaimed(options)
|
|
3311
|
+
);
|
|
3312
|
+
if (!attempt.acquired) {
|
|
3313
|
+
throw new Error(
|
|
3314
|
+
`Workflow run ${options.resumeFromRunId} is already being modified.`
|
|
3315
|
+
);
|
|
3316
|
+
}
|
|
3317
|
+
return attempt.value;
|
|
3318
|
+
}
|
|
3319
|
+
return this.startClaimed(options);
|
|
3320
|
+
}
|
|
3321
|
+
static async startClaimed(options) {
|
|
3277
3322
|
const config = options.config;
|
|
3278
3323
|
const runInBackground = options.runInBackground === true;
|
|
3279
3324
|
const budget = WorkflowBudgetImpl.fromEnv();
|
|
3280
|
-
const loaded = options.scriptPath && options.script === void 0 ? await resolveSavedWorkflowScript(
|
|
3281
|
-
{ scriptPath: options.scriptPath },
|
|
3282
|
-
config
|
|
3283
|
-
) : void 0;
|
|
3284
|
-
const script = loaded?.script ?? options.script ?? "";
|
|
3285
|
-
const scriptPath = loaded?.scriptPath ?? options.scriptPath;
|
|
3286
|
-
try {
|
|
3287
|
-
compileWorkflowScript(script);
|
|
3288
|
-
} catch (error) {
|
|
3289
|
-
throw new WorkflowScriptNotLaunchedError(
|
|
3290
|
-
describeWorkflowCompileError(
|
|
3291
|
-
error,
|
|
3292
|
-
script.split(/\r\n|[\n\r\u2028\u2029]/).length
|
|
3293
|
-
)
|
|
3294
|
-
);
|
|
3295
|
-
}
|
|
3296
3325
|
const runId = options.resumeFromRunId ?? `wf_${randomBytes2(8).toString("hex")}`;
|
|
3297
|
-
const storage = config.storage;
|
|
3298
|
-
const journal = storage ? new WorkflowJournal(storage.getWorkflowRunJournalPath(runId)) : void 0;
|
|
3299
|
-
const resumeReplay = options.resumeFromRunId ? await journal?.load() : void 0;
|
|
3300
|
-
if (runInBackground && options.signal.aborted) {
|
|
3301
|
-
throw new Error("Background workflow start was cancelled.");
|
|
3302
|
-
}
|
|
3303
|
-
const callerWasAbortedBeforeStart = options.signal.aborted;
|
|
3304
3326
|
const registry = config.getWorkflowRunRegistry?.();
|
|
3305
3327
|
let entry;
|
|
3306
3328
|
const isCurrentEntry = /* @__PURE__ */ __name(() => registry === void 0 || entry !== void 0 && registry.get(runId) === entry, "isCurrentEntry");
|
|
3307
|
-
const
|
|
3308
|
-
const
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
entry
|
|
3317
|
-
) : () => void 0 : void 0
|
|
3318
|
-
);
|
|
3319
|
-
const orchestrator = new WorkflowOrchestrator(dispatch);
|
|
3329
|
+
const createController = /* @__PURE__ */ __name(() => runInBackground ? createAbortController() : createChildAbortController(options.signal), "createController");
|
|
3330
|
+
const controller = registry ? registry.reserveStart(runId, createController) : createController();
|
|
3331
|
+
const storage = config.storage;
|
|
3332
|
+
const journal = storage ? new WorkflowJournal(storage.getWorkflowRunJournalPath(runId)) : void 0;
|
|
3333
|
+
let script;
|
|
3334
|
+
let scriptPath;
|
|
3335
|
+
let resumeReplay;
|
|
3336
|
+
let callerWasAbortedBeforeStart;
|
|
3337
|
+
let orchestrator;
|
|
3320
3338
|
try {
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
+
const loaded = options.scriptPath && options.script === void 0 ? await resolveSavedWorkflowScript(
|
|
3340
|
+
{ scriptPath: options.scriptPath },
|
|
3341
|
+
config
|
|
3342
|
+
) : void 0;
|
|
3343
|
+
script = loaded?.script ?? options.script ?? "";
|
|
3344
|
+
scriptPath = loaded?.scriptPath ?? options.scriptPath;
|
|
3345
|
+
try {
|
|
3346
|
+
compileWorkflowScript(script);
|
|
3347
|
+
} catch (error) {
|
|
3348
|
+
throw new WorkflowScriptNotLaunchedError(
|
|
3349
|
+
describeWorkflowCompileError(
|
|
3350
|
+
error,
|
|
3351
|
+
script.split(/\r\n|[\n\r\u2028\u2029]/).length
|
|
3352
|
+
)
|
|
3353
|
+
);
|
|
3354
|
+
}
|
|
3355
|
+
resumeReplay = options.resumeFromRunId ? await journal?.load() : void 0;
|
|
3356
|
+
if (controller.signal.aborted && !options.signal.aborted) {
|
|
3357
|
+
throw new WorkflowStartCancelledError();
|
|
3358
|
+
}
|
|
3359
|
+
if (runInBackground && options.signal.aborted) {
|
|
3360
|
+
throw new WorkflowStartCancelledError();
|
|
3361
|
+
}
|
|
3362
|
+
callerWasAbortedBeforeStart = options.signal.aborted;
|
|
3363
|
+
const dispatch = options.dispatch ?? createProductionDispatch(
|
|
3364
|
+
config,
|
|
3365
|
+
controller.signal,
|
|
3366
|
+
(outputTokens) => budget.recordSpent(outputTokens),
|
|
3367
|
+
registry ? (emitter2, dispatchId) => isCurrentEntry() ? registry.bridgeApprovalEvents(
|
|
3368
|
+
runId,
|
|
3369
|
+
emitter2,
|
|
3370
|
+
dispatchId,
|
|
3371
|
+
entry
|
|
3372
|
+
) : () => void 0 : void 0
|
|
3373
|
+
);
|
|
3374
|
+
orchestrator = new WorkflowOrchestrator(dispatch);
|
|
3375
|
+
entry = registry?.register(
|
|
3376
|
+
{
|
|
3377
|
+
runId,
|
|
3378
|
+
toolUseId: options.toolUseId,
|
|
3379
|
+
meta: null,
|
|
3380
|
+
status: "running",
|
|
3381
|
+
startTime: Date.now(),
|
|
3382
|
+
outputFile: "",
|
|
3383
|
+
abortController: controller,
|
|
3384
|
+
tokenBudgetTotal: budget.total,
|
|
3385
|
+
script,
|
|
3386
|
+
scriptPath,
|
|
3387
|
+
args: options.args,
|
|
3388
|
+
...options.resumeFromRunId ? {
|
|
3389
|
+
sourceRunId: options.resumeFromRunId,
|
|
3390
|
+
startMode: "retry"
|
|
3391
|
+
} : {},
|
|
3392
|
+
isBackgrounded: runInBackground
|
|
3393
|
+
},
|
|
3394
|
+
controller
|
|
3395
|
+
);
|
|
3339
3396
|
} catch (error) {
|
|
3397
|
+
registry?.releaseStart(runId, controller);
|
|
3340
3398
|
controller.abort();
|
|
3341
3399
|
throw error;
|
|
3342
3400
|
}
|
|
@@ -3443,7 +3501,14 @@ var WorkflowRunner = class {
|
|
|
3443
3501
|
const message = extractErrorMessage2(error);
|
|
3444
3502
|
if (entry && details?.meta && !entry.meta) entry.meta = details.meta;
|
|
3445
3503
|
if (details?.logs) registry?.setRecentLogs(runId, details.logs);
|
|
3446
|
-
if (
|
|
3504
|
+
if (entry && isTerminalWorkflowStatus(entry.status)) {
|
|
3505
|
+
return {
|
|
3506
|
+
ok: false,
|
|
3507
|
+
message: entry.status === "cancelled" ? "Workflow run cancelled." : entry.error ?? message,
|
|
3508
|
+
details
|
|
3509
|
+
};
|
|
3510
|
+
}
|
|
3511
|
+
if (callerWasAbortedBeforeStart || !runInBackground && options.signal.aborted) {
|
|
3447
3512
|
registry?.cancel(runId, Date.now());
|
|
3448
3513
|
} else {
|
|
3449
3514
|
registry?.fail(runId, message, Date.now());
|
|
@@ -3460,7 +3525,13 @@ var WorkflowRunner = class {
|
|
|
3460
3525
|
tokens_spent: entry.tokensSpent,
|
|
3461
3526
|
duration_ms: (entry.endTime ?? entry.startTime) - entry.startTime
|
|
3462
3527
|
});
|
|
3463
|
-
await writeWorkflowSnapshot(
|
|
3528
|
+
const snapshotPersisted = await writeWorkflowSnapshot(
|
|
3529
|
+
config,
|
|
3530
|
+
entry
|
|
3531
|
+
);
|
|
3532
|
+
if (snapshotPersisted) {
|
|
3533
|
+
registry?.notifySnapshotPersisted(entry.runId);
|
|
3534
|
+
}
|
|
3464
3535
|
await journal?.drain();
|
|
3465
3536
|
try {
|
|
3466
3537
|
logWorkflowRun(config, telemetryEvent);
|
|
@@ -3493,7 +3564,7 @@ var WORKFLOW_PARAM_SCHEMA = {
|
|
|
3493
3564
|
properties: {
|
|
3494
3565
|
script: {
|
|
3495
3566
|
type: "string",
|
|
3496
|
-
description: `JavaScript source of the workflow. Wrapped as an async IIFE. May call the injected globals \`phase(title)\`, \`log(msg)\`, \`agent(prompt, opts?)\`, and read \`args\`. agent() opts: \`{ label?, phase?, schema?, model?, agentType?, isolation?, workingDir?, stallMs? }\`. \`schema\` (JSON Schema object): the subagent must deliver its result by calling \`structured_output\` with arguments matching the schema; agent() resolves to the validated object. Two failed attempts produce a terminal error "subagent completed without calling StructuredOutput (after 2 in-conversation nudges)". \`agentType\` (string): resolves against the declarative-agents registry (\`.qwen/agents/<name>.md\`, project then user then built-in). Unresolved names throw "agent({agentType}): agent type 'X' not found". \`model\` (string): per-call model override; routes provider correctly via the subagent runtime view. \`isolation\`: \`'worktree'\` provisions a fresh git worktree under \`<projectRoot>/.qwen/worktrees/agent-<7hex>\`; the worktree is auto-removed if no changes, otherwise the path and branch are returned alongside the result. \`'remote'\` throws "agent({isolation:'remote'}) is not available in this build" (parity with upstream). isolation=worktree refuses to run when the parent working tree has uncommitted changes (the subagent would see a stale HEAD). \`workingDir\` (string): pin the subagent to an EXISTING git worktree of this repository that the caller owns \u2014 nothing is created and nothing is removed. Use it when the directory the agent must work in already exists and its uncommitted state is the point (a review worktree, a checkout a previous step provisioned) \u2014 exactly the case isolation cannot serve. Mutually exclusive with \`isolation\`. The path must be a linked worktree of this repository registered via \`git worktree add\` (it may live anywhere on disk) \u2014 the main checkout is not eligible. \`stallMs\` (number, ms): a no-progress watchdog, not a wall-clock cap. The dispatch is aborted and retried (up to ${MAX_STALL_ATTEMPTS} attempts total) after this many milliseconds with no observable subagent progress \u2014 including before the first response arrives; the timer is suspended while a tool is in flight, so a legitimately slow tool is not a stall. Default ${DEFAULT_STALL_MS} (override via \`${MAX_WORKFLOW_STALL_MS_ENV}\`, whole seconds); \`0\` disables the watchdog. Wall time per attempt is bounded separately. Workflow subagents always have SendMessage / Monitor / EnterPlanMode / ExitPlanMode in their disallowed-tool floor regardless of agentType. Concurrency: \`parallel([() => agent(...), ...])\` runs thunks through a shared per-run window (default \`max(
|
|
3567
|
+
description: `JavaScript source of the workflow. Wrapped as an async IIFE. May call the injected globals \`phase(title)\`, \`log(msg)\`, \`agent(prompt, opts?)\`, and read \`args\`. agent() opts: \`{ label?, phase?, schema?, model?, agentType?, isolation?, workingDir?, stallMs? }\`. \`schema\` (JSON Schema object): the subagent must deliver its result by calling \`structured_output\` with arguments matching the schema; agent() resolves to the validated object. Two failed attempts produce a terminal error "subagent completed without calling StructuredOutput (after 2 in-conversation nudges)". \`agentType\` (string): resolves against the declarative-agents registry (\`.qwen/agents/<name>.md\`, project then user then built-in). Unresolved names throw "agent({agentType}): agent type 'X' not found". \`model\` (string): per-call model override; routes provider correctly via the subagent runtime view. \`isolation\`: \`'worktree'\` provisions a fresh git worktree under \`<projectRoot>/.qwen/worktrees/agent-<7hex>\`; the worktree is auto-removed if no changes, otherwise the path and branch are returned alongside the result. \`'remote'\` throws "agent({isolation:'remote'}) is not available in this build" (parity with upstream). isolation=worktree refuses to run when the parent working tree has uncommitted changes (the subagent would see a stale HEAD). \`workingDir\` (string): pin the subagent to an EXISTING git worktree of this repository that the caller owns \u2014 nothing is created and nothing is removed. Use it when the directory the agent must work in already exists and its uncommitted state is the point (a review worktree, a checkout a previous step provisioned) \u2014 exactly the case isolation cannot serve. Mutually exclusive with \`isolation\`. The path must be a linked worktree of this repository registered via \`git worktree add\` (it may live anywhere on disk) \u2014 the main checkout is not eligible. \`stallMs\` (number, ms): a no-progress watchdog, not a wall-clock cap. The dispatch is aborted and retried (up to ${MAX_STALL_ATTEMPTS} attempts total) after this many milliseconds with no observable subagent progress \u2014 including before the first response arrives; the timer is suspended while a tool is in flight, so a legitimately slow tool is not a stall. Default ${DEFAULT_STALL_MS} (override via \`${MAX_WORKFLOW_STALL_MS_ENV}\`, whole seconds); \`0\` disables the watchdog. Wall time per attempt is bounded separately. Workflow subagents always have SendMessage / Monitor / EnterPlanMode / ExitPlanMode in their disallowed-tool floor regardless of agentType. Concurrency: \`parallel([() => agent(...), ...])\` runs thunks through a shared per-run window (default \`max(2, min(16, cpus-2))\` agents in flight; override via \`${MAX_WORKFLOW_CONCURRENCY_ENV}\`) and resolves to a position-aligned array \u2014 a thunk that throws, or resolves to a non-JSON-serializable value, becomes \`null\` at its index (errors-as-data); parallel() itself rejects only on invalid arguments or abort. \`pipeline(items, ...stages)\` runs each item through the stages (staggered, no inter-stage barrier); a stage that throws, returns \`null\`, or returns a non-JSON-serializable value drops that item to \`null\`. Pass THUNKS to parallel, not eager calls: \`parallel([() => agent(...)])\`, not \`parallel([agent(...)])\`. At most ${DEFAULT_MAX_AGENTS_PER_RUN} agent() calls per run (override via \`${MAX_WORKFLOW_AGENTS_ENV}\`). \`Date.now()\` and \`Math.random()\` both throw \u2014 workflow scripts must be deterministic for resume. \`export const meta = {...}\` declarations are stripped before execution.`
|
|
3497
3568
|
},
|
|
3498
3569
|
scriptPath: {
|
|
3499
3570
|
type: "string",
|
|
@@ -3621,7 +3692,7 @@ var WorkflowToolInvocation = class extends BaseToolInvocation {
|
|
|
3621
3692
|
async execute(signal, updateOutput, _shellExecutionConfig) {
|
|
3622
3693
|
const runInBackground = this.params.run_in_background === true;
|
|
3623
3694
|
if (runInBackground && signal.aborted) {
|
|
3624
|
-
return
|
|
3695
|
+
return startCancelledResult();
|
|
3625
3696
|
}
|
|
3626
3697
|
let handle;
|
|
3627
3698
|
try {
|
|
@@ -3638,8 +3709,8 @@ var WorkflowToolInvocation = class extends BaseToolInvocation {
|
|
|
3638
3709
|
onUpdate: !runInBackground && updateOutput ? (entry) => safeEmitUpdate(updateOutput, entry) : void 0
|
|
3639
3710
|
});
|
|
3640
3711
|
} catch (error) {
|
|
3641
|
-
if (runInBackground && signal.aborted) {
|
|
3642
|
-
return
|
|
3712
|
+
if (error instanceof WorkflowStartCancelledError || runInBackground && signal.aborted) {
|
|
3713
|
+
return startCancelledResult();
|
|
3643
3714
|
}
|
|
3644
3715
|
if (error instanceof WorkflowScriptNotLaunchedError) {
|
|
3645
3716
|
return {
|
|
@@ -3725,13 +3796,13 @@ ${safeStringifyDisplayPayload({
|
|
|
3725
3796
|
}
|
|
3726
3797
|
}
|
|
3727
3798
|
};
|
|
3728
|
-
function
|
|
3799
|
+
function startCancelledResult() {
|
|
3729
3800
|
return {
|
|
3730
3801
|
llmContent: "Workflow was cancelled before it could start.",
|
|
3731
3802
|
returnDisplay: "Workflow cancelled."
|
|
3732
3803
|
};
|
|
3733
3804
|
}
|
|
3734
|
-
__name(
|
|
3805
|
+
__name(startCancelledResult, "startCancelledResult");
|
|
3735
3806
|
function buildLivePhaseTreeDisplay(entry) {
|
|
3736
3807
|
const payload = {
|
|
3737
3808
|
runId: entry.runId,
|
|
@@ -3934,7 +4005,7 @@ Reach for one to be comprehensive (decompose the work and cover every part in pa
|
|
|
3934
4005
|
|
|
3935
4006
|
**Runtime** \u2014 see the \`script\` parameter for the detailed authoring contract.
|
|
3936
4007
|
|
|
3937
|
-
\`phase(title)\`, \`log(msg)\`, \`agent(prompt, opts?)\`, \`parallel(thunks)\`, \`pipeline(items, ...stages)\`, \`workflow(nameOrRef, args?)\`, plus the \`args\` and \`budget\` globals. \`workflow()\` runs a saved workflow inline under this run's caps and nests one level only \u2014 a workflow reached through \`workflow()\` cannot call \`workflow()\` itself, and doing so throws. Saved workflows are \`<name>.js\` files under \`<projectRoot>/.qwen/workflows\` (project scope, also surfaced as \`/<name>\` slash commands) or \`~/.qwen/workflows\` (user scope, lower precedence when both define the same name); \`workflow('<name>')\` resolves against those two directories, while \`scriptPath\` takes an absolute path to a script inside either of them or inside the generated-scripts root (\`$QWEN_CODE_PROJECT_DIR/workflows/generated\` \u2014 the per-project runtime dir, not the project tree \u2014 where a tool emitting a one-run script writes it; never a slash command, never resolvable by name); a path outside those roots is refused. Default \`max(
|
|
4008
|
+
\`phase(title)\`, \`log(msg)\`, \`agent(prompt, opts?)\`, \`parallel(thunks)\`, \`pipeline(items, ...stages)\`, \`workflow(nameOrRef, args?)\`, plus the \`args\` and \`budget\` globals. \`workflow()\` runs a saved workflow inline under this run's caps and nests one level only \u2014 a workflow reached through \`workflow()\` cannot call \`workflow()\` itself, and doing so throws. Saved workflows are \`<name>.js\` files under \`<projectRoot>/.qwen/workflows\` (project scope, also surfaced as \`/<name>\` slash commands) or \`~/.qwen/workflows\` (user scope, lower precedence when both define the same name); \`workflow('<name>')\` resolves against those two directories, while \`scriptPath\` takes an absolute path to a script inside either of them or inside the generated-scripts root (\`$QWEN_CODE_PROJECT_DIR/workflows/generated\` \u2014 the per-project runtime dir, not the project tree \u2014 where a tool emitting a one-run script writes it; never a slash command, never resolvable by name); a path outside those roots is refused. Default \`max(2, min(16, cpus-2))\` agents in flight per run (\`${MAX_WORKFLOW_CONCURRENCY_ENV}\`), up to ${DEFAULT_MAX_AGENTS_PER_RUN} agents total (\`${MAX_WORKFLOW_AGENTS_ENV}\`), under a 30-minute wall-clock cap per run (\`QWEN_CODE_MAX_WORKFLOW_SECONDS\`) \u2014 a fan-out near the agent cap will not fit inside the default cap. Each subagent attempt is separately capped at ${DEFAULT_WORKFLOW_SUBAGENT_MAX_TURNS} turns (\`${WORKFLOW_SUBAGENT_MAX_TURNS_ENV}\`) and ${DEFAULT_WORKFLOW_SUBAGENT_MAX_TIME_MINUTES} minutes (\`${WORKFLOW_SUBAGENT_MAX_MINUTES_ENV}\`) \u2014 an attempt that hits either becomes \`null\` in \`parallel()\`/\`pipeline()\`, indistinguishable from a missing agent, so raise them for legitimately long work. A per-run output-token cap may also be in effect: read \`budget.total\` (\`null\` = uncapped) before committing to a large fan-out, because once the cap is reached every further \`agent()\` call is refused \u2014 a bare sequential \`await agent()\` sees the rejection, while inside \`parallel()\`/\`pipeline()\` the refused slot becomes \`null\` and the script keeps running on partial results. Per-call \`agent({ schema, agentType, model, isolation: 'worktree', workingDir, stallMs })\` covers structured-output contracts, declarative-agent selection, model override, git-worktree-isolated subagents, pinning an agent to a caller-owned worktree, and the no-progress stall watchdog (\`stallMs: 0\` disables it). \`resumeFromRunId\` resumes a prior run \u2014 agent() calls whose rolling prefix-hash matches the journal are served from cache for the longest unchanged prefix. Runs appear in the background-tasks view and the \`/workflows\` dialog (live phase tree, token usage, cooperative pause/resume, cancel); \`run_in_background: true\` returns a run handle immediately in the interactive TUI and delivers completion through the conversation. Scripts run in a node:vm sandbox with no filesystem or shell access \u2014 all I/O happens through the spawned agents.
|
|
3938
4009
|
|
|
3939
4010
|
**Scout first, then orchestrate**
|
|
3940
4011
|
|
|
@@ -3980,6 +4051,18 @@ var WorkflowTool = class extends BaseDeclarativeTool {
|
|
|
3980
4051
|
static {
|
|
3981
4052
|
__name(this, "WorkflowTool");
|
|
3982
4053
|
}
|
|
4054
|
+
buildSessionOwnedBackground(params) {
|
|
4055
|
+
const validationError = this.validateToolParams(params);
|
|
4056
|
+
if (validationError) {
|
|
4057
|
+
throw new Error(validationError);
|
|
4058
|
+
}
|
|
4059
|
+
if (!this.config.getWorkflowRunRegistry().hasCompletionCallback()) {
|
|
4060
|
+
throw new Error(
|
|
4061
|
+
"WorkflowTool: session-owned background runs require an active workflow completion channel."
|
|
4062
|
+
);
|
|
4063
|
+
}
|
|
4064
|
+
return this.createInvocation({ ...params, run_in_background: true });
|
|
4065
|
+
}
|
|
3983
4066
|
validateToolParamValues(params) {
|
|
3984
4067
|
const hasScript = typeof params.script === "string" && params.script.length > 0;
|
|
3985
4068
|
const hasPath = typeof params.scriptPath === "string" && params.scriptPath.length > 0;
|