@qwen-code/qwen-code 0.23.5-preview.0 → 0.24.0-nightly.20260917.f822124af5
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/goal-draft/SKILL.md +5 -5
- package/bundled/qc-helper/docs/configuration/auth.md +1 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +43 -14
- package/bundled/qc-helper/docs/configuration/settings.md +2 -1
- package/bundled/qc-helper/docs/extension/introduction.md +2 -0
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/goals.md +11 -11
- package/bundled/qc-helper/docs/features/hooks.md +8 -10
- package/bundled/qc-helper/docs/features/omni-fixed-policies-preset.json +242 -0
- package/bundled/qc-helper/docs/features/omni-media-policies.md +443 -0
- package/bundled/qc-helper/docs/overview.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +2 -3
- package/bundled/review/SKILL.md +1 -1
- package/bundled/workflow-authoring/SKILL.md +22 -7
- package/chunks/MaxSizedBox-4VDYUHUI.js +148 -0
- package/chunks/{StandaloneSessionPicker-V635V72I.js → StandaloneSessionPicker-SGMGJOH3.js} +115 -91
- package/chunks/acp-subagent-executor-EGAATYQA.js +164 -0
- package/chunks/{acpAgent-3DPWZTNC.js → acpAgent-2JQ2N2T5.js} +361 -229
- package/chunks/{agent-KIHGINKN.js → agent-QWNE3MPD.js} +59 -49
- package/chunks/agent-headless-GRSMZK5Z.js +104 -0
- package/chunks/{anthropicContentGenerator-4FGOM5LK.js → anthropicContentGenerator-INV24RMG.js} +30 -27
- package/chunks/{artifact-tool-MUTNH4NI.js → artifact-tool-3MWM6SN2.js} +11 -7
- package/chunks/{askUserQuestion-AKIRLVB5.js → askUserQuestion-YFFBB4K3.js} +6 -4
- package/chunks/bridge-R65BJ2YL.js +156 -0
- package/chunks/{build-5KWQBWEQ.js → build-5OQN7CDU.js} +1 -1
- package/chunks/caption-audio-UXXLI3JZ.js +443 -0
- package/chunks/caption-image-B7O4TUFP.js +247 -0
- package/chunks/{channel-management-service-RRILWSXX.js → channel-management-service-GRJG5R46.js} +1 -1
- package/chunks/channel-settings-store-TBLCDTV2.js +158 -0
- package/chunks/{channel-worker-group-3DUJFZJR.js → channel-worker-group-SCSKCSBJ.js} +4 -4
- package/chunks/{channel-worker-manager-E5UW2VLA.js → channel-worker-manager-AHCZCKON.js} +4 -4
- package/chunks/{channel-worker-supervisor-VN33GSEC.js → channel-worker-supervisor-BGUAVITB.js} +3 -3
- package/chunks/{chunk-5NUKK2DT.js → chunk-25FMWESU.js} +47 -8
- package/chunks/{chunk-VVI7MK3V.js → chunk-2A6RZKP2.js} +9 -7
- package/chunks/{chunk-3WWPEFMX.js → chunk-2FQM443D.js} +82 -4
- package/chunks/{chunk-D3KVGQUV.js → chunk-37XDTMFG.js} +4 -4
- package/chunks/{chunk-TDKUXSJO.js → chunk-3MW6PPA5.js} +1 -1
- package/chunks/{chunk-4LIPOIXS.js → chunk-3NHJLWOD.js} +1 -1
- package/chunks/{chunk-AQP3H22J.js → chunk-3ZGIRRAE.js} +1 -1
- package/chunks/{chunk-WSJI6ODG.js → chunk-422D2UIO.js} +210 -150
- package/chunks/chunk-43QUA4MC.js +135 -0
- package/chunks/{chunk-Q2SAQTEJ.js → chunk-4B7U3KQP.js} +1 -1
- package/chunks/{chunk-SFL6U7U7.js → chunk-4JFRCIMW.js} +2 -2
- package/chunks/{chunk-IVFTLUZD.js → chunk-4SZ2636R.js} +3 -3
- package/chunks/{chunk-6OTF7TTE.js → chunk-4VYTH6OF.js} +24 -1
- package/chunks/{chunk-7CLLH5TI.js → chunk-4YS7RMCB.js} +6 -4
- package/chunks/{chunk-BW2SMO6L.js → chunk-5FHOPPLZ.js} +1 -1
- package/chunks/{chunk-QIPLWW6Q.js → chunk-5MYQ66UF.js} +1 -1
- package/chunks/{chunk-TXTCM3TC.js → chunk-5VDOVBNG.js} +18 -14
- package/chunks/{chunk-L2A5VBDL.js → chunk-67ZCKSV6.js} +9 -9
- package/chunks/chunk-6C3D7BKK.js +153 -0
- package/chunks/{chunk-DC4ZNGH4.js → chunk-6DB6UHY3.js} +3 -3
- package/chunks/{chunk-AXPOOQAW.js → chunk-736AZVPL.js} +2 -2
- package/chunks/{chunk-M22WLKLI.js → chunk-77ORAIEF.js} +7 -7
- package/chunks/{chunk-BUQN5LTI.js → chunk-7PQ65Z5F.js} +2 -2
- package/chunks/{chunk-CXY6BICQ.js → chunk-A5EGR6ZS.js} +204 -120
- package/chunks/{chunk-VQDWCQOE.js → chunk-ANKISCKU.js} +1 -0
- package/chunks/{chunk-7D4CV7JH.js → chunk-APHDK7GV.js} +116 -4
- package/chunks/{chunk-B5TJK7B3.js → chunk-ARKOX7HM.js} +1 -1
- package/chunks/{chunk-NXUZFW3G.js → chunk-AUFTA63J.js} +1 -1
- package/chunks/{chunk-36SDZ2Q4.js → chunk-B3HGO6BB.js} +7 -5
- package/chunks/{chunk-6USYH3EU.js → chunk-B3XJFEEH.js} +5 -3
- package/chunks/{chunk-AEWCOE64.js → chunk-B5WYAQ4I.js} +2 -2
- package/chunks/{chunk-GSKX53AN.js → chunk-BA6AXQDA.js} +1 -1
- package/chunks/{chunk-Y2KJC55Y.js → chunk-BBHLWLIK.js} +4 -4
- package/chunks/chunk-BKVPLSEI.js +133 -0
- package/chunks/chunk-BQMSZSG6.js +21 -0
- package/chunks/{chunk-3LMDSCLU.js → chunk-C4FISGDN.js} +2 -2
- package/chunks/{chunk-SFHX5G2S.js → chunk-C4MMZVYX.js} +80 -15
- package/chunks/{chunk-4JFLRHNE.js → chunk-C4QWV63F.js} +1 -1
- package/chunks/{chunk-XFFRI3WM.js → chunk-CA63HYHU.js} +4 -2
- package/chunks/{chunk-FBY32737.js → chunk-CJNWKJFH.js} +4 -4
- package/chunks/{chunk-QT6Z2IBF.js → chunk-CYFQLCCG.js} +2 -2
- package/chunks/{chunk-X7AYIXC7.js → chunk-DJLCK66M.js} +5 -3
- package/chunks/chunk-DJYHML3Y.js +121 -0
- package/chunks/{chunk-MO4XID7S.js → chunk-DNDECZXY.js} +3 -3
- package/chunks/{chunk-H6L4NEAT.js → chunk-DQCGGSDO.js} +1 -1
- package/chunks/{chunk-347O2YZJ.js → chunk-DUWQ5Q6R.js} +115 -67
- package/chunks/{chunk-FEDFZBGR.js → chunk-E6A52AP2.js} +28 -17
- package/chunks/{chunk-TIGXX4PA.js → chunk-EKBQJ627.js} +2 -2
- package/chunks/{chunk-RSWBT7AZ.js → chunk-ERIBG3BX.js} +35 -551
- package/chunks/{chunk-PPJSG2PU.js → chunk-EVZT24AF.js} +6 -142
- package/chunks/{chunk-YZXSDPOQ.js → chunk-F7L4ZMKS.js} +84 -40
- package/chunks/{chunk-HX4WXX3H.js → chunk-FGAWVV4X.js} +101 -75
- package/chunks/chunk-FT3O44AZ.js +1635 -0
- package/chunks/chunk-FTKXJMQV.js +255 -0
- package/chunks/{chunk-5FK4MSHB.js → chunk-FWP5GZRY.js} +6 -4
- package/chunks/{chunk-TRZ22SG5.js → chunk-FXPP7VLM.js} +6 -4
- package/chunks/{chunk-INN5ORKX.js → chunk-G25IQMCV.js} +1 -1
- package/chunks/{chunk-OWUAZXXN.js → chunk-GHG4PQY2.js} +3 -3
- package/chunks/{chunk-FASYATAZ.js → chunk-GL5TRVMS.js} +1 -1
- package/chunks/{chunk-G45B3INR.js → chunk-GVTAFLWB.js} +2 -2
- package/chunks/{chunk-G6UUOCUT.js → chunk-GXNXX7A2.js} +7 -1
- package/chunks/{chunk-GI7SLDOI.js → chunk-HUUBCY33.js} +6 -6
- package/chunks/chunk-I7MIPRIQ.js +181 -0
- package/chunks/{chunk-NQ272MQG.js → chunk-IAKJXTGS.js} +7 -5
- package/chunks/{chunk-V4JJAVHQ.js → chunk-ID7XHHY5.js} +2 -2
- package/chunks/{chunk-IXO2OCIP.js → chunk-IIHFUREY.js} +12 -8
- package/chunks/{chunk-IZ2U57NY.js → chunk-IITTKFWM.js} +4 -2
- package/chunks/chunk-IVPSLX4P.js +578 -0
- package/chunks/{chunk-BTICBRPL.js → chunk-IWMYX5LB.js} +3 -3
- package/chunks/{chunk-UZSB57EV.js → chunk-JR2WFCQG.js} +29 -17
- package/chunks/{chunk-GJKP6XOB.js → chunk-JWV5GI77.js} +16 -19
- package/chunks/chunk-JYGESWZM.js +149 -0
- package/chunks/{chunk-KVC7HZWK.js → chunk-JYTJ5FCM.js} +1 -1
- package/chunks/{chunk-SOLRBF7L.js → chunk-JZUSFW64.js} +10 -10
- package/chunks/{chunk-CDDP4ONL.js → chunk-K2T5PKFS.js} +60 -134
- package/chunks/{chunk-EIBECN2J.js → chunk-K5VVDHDV.js} +5 -5
- package/chunks/{chunk-NKTMUPHJ.js → chunk-KDM4KSVG.js} +14 -4
- package/chunks/{chunk-3WILPKTJ.js → chunk-KKPIFWTZ.js} +11 -6
- package/chunks/{chunk-3HTUE6ZR.js → chunk-KPK6NQVR.js} +4 -4
- package/chunks/{chunk-CXONOVBN.js → chunk-KS6F6LZQ.js} +8 -6
- package/chunks/{chunk-D7JMO2GP.js → chunk-KSECLXYH.js} +1 -1
- package/chunks/chunk-KSEKRQJO.js +253 -0
- package/chunks/{chunk-KEM7MWS7.js → chunk-KWZ2DDOC.js} +765 -428
- package/chunks/{chunk-U4AASWUQ.js → chunk-L4GF4IK2.js} +3 -3
- package/chunks/{chunk-CQPM66MG.js → chunk-L7HFHYGB.js} +4 -4
- package/chunks/{chunk-DJXSOEFB.js → chunk-LAE6RY3L.js} +1 -1
- package/chunks/{chunk-WNQIJTOP.js → chunk-LDM3JQZF.js} +243 -17
- package/chunks/{chunk-KVQ3QL4K.js → chunk-LLTRNLK2.js} +3 -3
- package/chunks/{chunk-IKBEIDOH.js → chunk-LVXTBFWP.js} +13 -13
- package/chunks/{chunk-AKRSSKUT.js → chunk-LWALWKFU.js} +10 -10
- package/chunks/{chunk-WL36KHUQ.js → chunk-LWV4RLBT.js} +11 -9
- package/chunks/{chunk-3BZI5GDP.js → chunk-M5YIHMXP.js} +6 -4
- package/chunks/{chunk-6WXVEDT2.js → chunk-MC2RYJMU.js} +5 -3
- package/chunks/chunk-MNU36NGH.js +233 -0
- package/chunks/{chunk-ZMYKNKET.js → chunk-MQWZWHTY.js} +3 -3
- package/chunks/{chunk-M4U2LTD2.js → chunk-MS4SXNJ6.js} +1 -1
- package/chunks/{chunk-QHSOINX6.js → chunk-MZKXPQWL.js} +2 -2
- package/chunks/{chunk-36NRLIR6.js → chunk-NBLWUMYE.js} +13 -11
- package/chunks/{chunk-DRAX5YAI.js → chunk-NFC4WTY2.js} +6 -4
- package/chunks/chunk-NX6JUO42.js +102 -0
- package/chunks/chunk-O345BAI3.js +42 -0
- package/chunks/{chunk-YM6KUQ2S.js → chunk-O4A2B6V2.js} +3 -3
- package/chunks/chunk-O55EKI4S.js +7668 -0
- package/chunks/{chunk-3UGMLA4V.js → chunk-OA5H5PPQ.js} +10 -10
- package/chunks/{chunk-DX6JTDMR.js → chunk-OB57Y2WH.js} +1 -1
- package/chunks/{chunk-4QPVZA5J.js → chunk-OOSOAFCT.js} +3 -3
- package/chunks/{chunk-E2VSBAFA.js → chunk-OXBD7VUE.js} +5 -5
- package/chunks/{chunk-M23GFJ5B.js → chunk-OY5GQPMU.js} +1 -1
- package/chunks/chunk-PF3RVYRK.js +108 -0
- package/chunks/{chunk-XWJFDJZK.js → chunk-PJSZXERN.js} +1 -1
- package/chunks/{chunk-GSAOVDTH.js → chunk-POMFSBEC.js} +4 -4
- package/chunks/{chunk-EWNKP4V4.js → chunk-PPVM7YLS.js} +1 -1
- package/chunks/{chunk-WK6DEH3Q.js → chunk-PQQV3OBW.js} +6 -4
- package/chunks/{chunk-ZSTCM3MX.js → chunk-Q5N5NEVT.js} +1 -1
- package/chunks/{chunk-HYHSMTRA.js → chunk-QCTWNYL6.js} +4 -4
- package/chunks/{chunk-KFFCDLKV.js → chunk-QE36VXWP.js} +1 -1
- package/chunks/{chunk-3LLEB5CU.js → chunk-QG73VXTF.js} +2 -2
- package/chunks/{chunk-QMENOK5T.js → chunk-QJJN2VJY.js} +10 -8
- package/chunks/{chunk-XICCGDWF.js → chunk-QKYAXSNG.js} +2 -2
- package/chunks/{chunk-V545KI73.js → chunk-QPTE6BKL.js} +1 -1
- package/chunks/{chunk-2GP6BQ2J.js → chunk-RA6PKQVM.js} +2 -2
- package/chunks/{chunk-TPY6HW55.js → chunk-RFAX4WKE.js} +13 -7
- package/chunks/chunk-RSFNJ6UU.js +1252 -0
- package/chunks/{chunk-EDIDYZBT.js → chunk-RVT5L74D.js} +1 -1
- package/chunks/{chunk-FCPJXKDG.js → chunk-RXDTMGUH.js} +9 -9
- package/chunks/{chunk-P42KMMU6.js → chunk-RZZLNI74.js} +27 -25
- package/chunks/{chunk-ZFHKUQZ4.js → chunk-S2R4L34O.js} +12 -5
- package/chunks/chunk-S34QJ6IR.js +290 -0
- package/chunks/chunk-S5BHLTHK.js +190 -0
- package/chunks/{chunk-2XRE4KE4.js → chunk-S7BE3FMA.js} +1 -1
- package/chunks/{chunk-7O5PYQ3M.js → chunk-SBP43AO6.js} +1 -1
- package/chunks/chunk-SLHYLVRW.js +1377 -0
- package/chunks/{chunk-SSWTA7CH.js → chunk-SLV3GU2S.js} +12 -12
- package/chunks/chunk-SLVJ55G3.js +11397 -0
- package/chunks/{chunk-5VQR2DD7.js → chunk-SQRZJD25.js} +5 -3
- package/chunks/{chunk-K4XMAIRX.js → chunk-SRFYBJ4P.js} +14 -14
- package/chunks/{chunk-Y4NNIGYO.js → chunk-SSFOFDNL.js} +1 -1
- package/chunks/{chunk-NFXXBWSE.js → chunk-SU64336V.js} +2 -2
- package/chunks/{chunk-RRI764F7.js → chunk-SWHBXWVS.js} +45 -26
- package/chunks/{chunk-BHVF3R6B.js → chunk-TAMBGU42.js} +4 -4
- package/chunks/chunk-TFDCK56Y.js +154 -0
- package/chunks/{chunk-Q54O3EIA.js → chunk-TNTYSST7.js} +55 -33
- package/chunks/{chunk-JRHKM3YQ.js → chunk-TS4JJ7NN.js} +2 -2
- package/chunks/{chunk-VEXUA6DX.js → chunk-TWD6EZLA.js} +13 -11
- package/chunks/{chunk-WZWTY7SG.js → chunk-TZ4QKMPU.js} +6 -6
- package/chunks/{chunk-C4HBZQNH.js → chunk-U3MTHCJF.js} +1 -1
- package/chunks/{chunk-VU3XMZ5I.js → chunk-U3VIKF53.js} +3 -3
- package/chunks/{chunk-BHG3H6OZ.js → chunk-U4KO33OD.js} +1 -1
- package/chunks/{chunk-2C5TR6HN.js → chunk-UANUZBL2.js} +1 -1
- package/chunks/{chunk-Y53DG2HA.js → chunk-UIWUFHRJ.js} +1 -1
- package/chunks/{chunk-UQGRJTDK.js → chunk-UP3XL4VB.js} +3 -3
- package/chunks/{chunk-43Y26NPF.js → chunk-UR27ZXFZ.js} +3 -3
- package/chunks/{chunk-LO2UWNO5.js → chunk-UXC6MURF.js} +3 -3
- package/chunks/chunk-UXEI7POA.js +273 -0
- package/chunks/chunk-V2XJJTAB.js +228 -0
- package/chunks/chunk-VDNCKE2O.js +24 -0
- package/chunks/{chunk-YQQ2U7AS.js → chunk-VLBL6Q7X.js} +1 -1
- package/chunks/{chunk-HNFKYKHH.js → chunk-VNQTV5NC.js} +104 -26
- package/chunks/chunk-VPGRGNNH.js +578 -0
- package/chunks/{chunk-TKF4JINY.js → chunk-VVQ57VLE.js} +1 -1
- package/chunks/{chunk-AUX2FL5T.js → chunk-W2UTVLT2.js} +641 -11
- package/chunks/{chunk-SYMXYRM5.js → chunk-W7JWIIRC.js} +1 -1
- package/chunks/{chunk-WBSJ6VPZ.js → chunk-WDVSRQIQ.js} +3 -3
- package/chunks/{chunk-AZCTY64Z.js → chunk-WEUQIY3Q.js} +1 -1
- package/chunks/{chunk-FX6PZBOV.js → chunk-WHBL5HJF.js} +4 -4
- package/chunks/chunk-WL2V7PTE.js +78 -0
- package/chunks/{chunk-OSG23MR3.js → chunk-X3T5IOX6.js} +2 -2
- package/chunks/{chunk-OZEV3R3S.js → chunk-XYAB5R6E.js} +3 -3
- package/chunks/chunk-XZA32HII.js +19 -0
- package/chunks/{chunk-4FLUQWJ4.js → chunk-Y3Q5OK4D.js} +1 -1
- package/chunks/chunk-YDERQ7ZV.js +248 -0
- package/chunks/{chunk-QGEISOJ2.js → chunk-YKM7SY3N.js} +3 -3
- package/chunks/{chunk-HXUI5D4H.js → chunk-YRNAZIDX.js} +1 -1
- package/chunks/{chunk-MFDKHGTD.js → chunk-YRNLF4SV.js} +3 -1
- package/chunks/{chunk-3XBUCOWS.js → chunk-YSD6IY6F.js} +2 -2
- package/chunks/{chunk-CH2YDT6X.js → chunk-YVYK3JYU.js} +5 -3
- package/chunks/{chunk-YL3UJML3.js → chunk-YWDVNBGE.js} +4 -4
- package/chunks/{chunk-KAYC5FBN.js → chunk-Z3DLUFMT.js} +1595 -1399
- package/chunks/chunk-Z547XC3A.js +44 -0
- package/chunks/{chunk-B6RMK4ED.js → chunk-Z5UFM7P6.js} +9 -7
- package/chunks/chunk-ZAX2LW35.js +1330 -0
- package/chunks/{chunk-C3T6HPNM.js → chunk-ZGADNVME.js} +5 -5
- package/chunks/{chunk-M3JGHRMQ.js → chunk-ZJ7KIWG5.js} +1 -1
- package/chunks/{chunk-SYROIHU7.js → chunk-ZRQGTRHA.js} +4 -2
- package/chunks/{chunk-NCPFOLM2.js → chunk-ZTBP4SFC.js} +78 -18
- package/chunks/{chunk-ZAFYHRVY.js → chunk-ZYDMQCQP.js} +4 -274
- package/chunks/{chunk-YP2K3WOS.js → chunk-ZYLZNSBW.js} +7 -4
- package/chunks/clip-audio-SH4L7AEY.js +255 -0
- package/chunks/clip-image-BQRPECIS.js +239 -0
- package/chunks/clip-video-JIRMV5IH.js +277 -0
- package/chunks/{codex-subagent-executor-AEAIQZDC.js → codex-subagent-executor-BQZZ3Z4E.js} +92 -68
- package/chunks/config-3X4AXU45.js +21 -0
- package/chunks/config-T5RO4NJV.js +17 -0
- package/chunks/config-utils-65HZJG2Y.js +151 -0
- package/chunks/contextCommand-P2WZOTZP.js +144 -0
- package/chunks/convert-image-D52K2FFB.js +231 -0
- package/chunks/{core-runtime-ZI4RTOJQ.js → core-runtime-G7RWUDR5.js} +94 -67
- package/chunks/{create-sub-session-MSGNIM37.js → create-sub-session-6EDEANCD.js} +7 -5
- package/chunks/{create-sub-session-BBWFQARJ.js → create-sub-session-C6OHZMEI.js} +90 -66
- package/chunks/{cron-create-U2JJ5CCF.js → cron-create-GS7ORRO6.js} +8 -5
- package/chunks/{cron-delete-7DM4LJWD.js → cron-delete-3GGDNNXD.js} +8 -5
- package/chunks/{cron-list-VCUSZK2Y.js → cron-list-EX27DW4H.js} +8 -5
- package/chunks/{daemon-INCM4VBX.js → daemon-62G2N3ZH.js} +1 -1
- package/chunks/{daemon-git-worktree-guard-KECEMV6A.js → daemon-git-worktree-guard-Y5MRUXHR.js} +90 -66
- package/chunks/daemon-status-provider-ORUXPQJO.js +155 -0
- package/chunks/daemon-trust-policy-CG35YJC5.js +150 -0
- package/chunks/{daemon-trust-policy-monitor-546N5ZVL.js → daemon-trust-policy-monitor-PT2ZJL3A.js} +96 -72
- package/chunks/deferred-core-runtime-K74JXKVR.js +153 -0
- package/chunks/{display-image-QTHALY6N.js → display-image-L3A755PZ.js} +10 -7
- package/chunks/{dist-BNW423XT.js → dist-CXDHIHN4.js} +5 -0
- package/chunks/downsample-audio-LPDWX6GF.js +217 -0
- package/chunks/downsample-image-A5JEYIV5.js +249 -0
- package/chunks/downscale-video-4W5BX5KO.js +249 -0
- package/chunks/{earlyInputCapture-BXP7V2P3.js → earlyInputCapture-UJ3KFVZQ.js} +3 -2
- package/chunks/{edit-CMSQB7NP.js → edit-VBS2GF24.js} +68 -56
- package/chunks/{en-56QLKXS2.js → en-FCK6MBTI.js} +16 -0
- package/chunks/{enter-worktree-DA6A4XC5.js → enter-worktree-QK7DR5EF.js} +12 -9
- package/chunks/{enterPlanMode-UDPMNESD.js → enterPlanMode-WC33QFGB.js} +62 -51
- package/chunks/environment-HN47IXJZ.js +167 -0
- package/chunks/errors-JC3V3RJA.js +151 -0
- package/chunks/{exec-RPKEY6HP.js → exec-7CFNHYCV.js} +31 -9
- package/chunks/{exit-worktree-4H6Z2VQI.js → exit-worktree-62COYIHF.js} +14 -10
- package/chunks/exitPlanMode-7R7DYPUV.js +102 -0
- package/chunks/extract-audio-GSSZQV6G.js +229 -0
- package/chunks/extract-keyframes-Q6DRMQAJ.js +621 -0
- package/chunks/{fast-path-F2CYDDZ4.js → fast-path-WN7SASHV.js} +6 -6
- package/chunks/{fast-path-settings-N2VGRGDJ.js → fast-path-settings-ASPHHCAG.js} +2 -2
- package/chunks/ffmpeg-N4LIIVNR.js +21 -0
- package/chunks/{glob-Z2JMJKKN.js → glob-HHM36TVT.js} +63 -51
- package/chunks/{goal-tools-HXVVLGCV.js → goal-tools-JTF7S4FP.js} +59 -49
- package/chunks/{grep-H2I33VAO.js → grep-JB5DGQ3B.js} +13 -9
- package/chunks/handleAutoUpdate-GGFSWLAH.js +147 -0
- package/chunks/i18n-NYQWDZWJ.js +164 -0
- package/chunks/{image-gen-HIAZCB5T.js → image-gen-LX3C4V3R.js} +16 -11
- package/chunks/initializer-6IZ4SNMM.js +151 -0
- package/chunks/installationInfo-K4KMCK7Q.js +145 -0
- package/chunks/{keychain-token-storage-NQ5XWIPX.js → keychain-token-storage-ZZNRE6D4.js} +3 -2
- package/chunks/list-KAWCG4I6.js +154 -0
- package/chunks/{list-agents-EWDCEPIW.js → list-agents-HS6HH4DJ.js} +10 -7
- package/chunks/{llm-LSUBOJAR.js → llm-UAZU4HC5.js} +162 -135
- package/chunks/{llm-content-generator-MLIONRXE.js → llm-content-generator-M3MT4BP3.js} +11 -9
- package/chunks/loadedSettingsAdapter-XKUVLEYR.js +152 -0
- package/chunks/{loggingContentGenerator-TUPEXFMM.js → loggingContentGenerator-2WW2O46K.js} +74 -63
- package/chunks/{loop-wakeup-ZBVRI6VH.js → loop-wakeup-4B7OY3TV.js} +9 -6
- package/chunks/{ls-6ZB3BEIR.js → ls-EZ5PSWU2.js} +8 -5
- package/chunks/{lsp-M54FQARP.js → lsp-DYFFHKB3.js} +6 -3
- package/chunks/{managed-npm-update-WEA5XMFZ.js → managed-npm-update-VRSID5W3.js} +91 -67
- package/chunks/mcp-DQEPGE5B.js +148 -0
- package/chunks/memory-side-query-DRV7FXK4.js +221 -0
- package/chunks/model-call-collection-HXYIVZDO.js +171 -0
- package/chunks/model-configuration-5FJL5BJE.js +161 -0
- package/chunks/modelConfigUtils-UE3FDHG3.js +140 -0
- package/chunks/{monitor-CI7YE7MT.js → monitor-IRKGV3RU.js} +63 -51
- package/chunks/nonInteractiveCli-LF5DTTUJ.js +235 -0
- package/chunks/nonInteractiveToolExecutor-KGIGCNUC.js +101 -0
- package/chunks/{notebook-edit-3WCVRNGL.js → notebook-edit-E2NGGRVT.js} +63 -52
- package/chunks/ocr-image-Q4HYJ3U7.js +252 -0
- package/chunks/omni-EHZU5MVU.js +147 -0
- package/chunks/{openaiContentGenerator-OGILGUZE.js → openaiContentGenerator-VZ4QWOSU.js} +36 -31
- package/chunks/{openaiResponsesContentGenerator-NXOXUPFM.js → openaiResponsesContentGenerator-OQFPKE6V.js} +15 -12
- package/chunks/pidfile-OQREIPGE.js +151 -0
- package/chunks/{processUtils-O4II3RYH.js → processUtils-VFFEEP7L.js} +2 -2
- package/chunks/prompt-terminal-ledger-46ELXYOX.js +143 -0
- package/chunks/{qwenContentGenerator-I4LRYADV.js → qwenContentGenerator-H3CWSIV5.js} +70 -60
- package/chunks/{qwenOAuth2-3J66TOT5.js → qwenOAuth2-GD3UIYUP.js} +9 -8
- package/chunks/reactive-degrade-KRTLV22M.js +375 -0
- package/chunks/read-file-BSZJVJ4F.js +37 -0
- package/chunks/{read-mcp-resource-LPSWXVOD.js → read-mcp-resource-INJIV3UC.js} +8 -4
- package/chunks/recall-media-memory-tool-PEE2BWRY.js +198 -0
- package/chunks/{record-artifact-L3CFJOMA.js → record-artifact-KKW3AIMJ.js} +6 -4
- package/chunks/record-source-OZ7JQFJK.js +24 -0
- package/chunks/{report-findings-LY5HQY4K.js → report-findings-OZSLWYAS.js} +7 -5
- package/chunks/{request-shutdown-53SNYGVR.js → request-shutdown-NMWMWGNR.js} +12 -9
- package/chunks/resumeHistoryUtils-P33LLL4M.js +156 -0
- package/chunks/ripGrep-2FWQ6RU3.js +43 -0
- package/chunks/{run-qwen-serve-ZVEKGS7Y.js → run-qwen-serve-HMQ2QCS7.js} +85 -73
- package/chunks/runtime-5X746HBH.js +188 -0
- package/chunks/sandbox-5FENHQ3J.js +170 -0
- package/chunks/sandboxConfig-7V6K3L4N.js +138 -0
- package/chunks/scheduled-tasks-Z4YOCKQV.js +167 -0
- package/chunks/scheduler-64LTQG3P.js +160 -0
- package/chunks/{sdk-exporters-http-DR4G663K.js → sdk-exporters-http-SWXTEEVT.js} +3 -2
- package/chunks/{sdk-impl-SJR26MQF.js → sdk-impl-FK4JY6LX.js} +5 -4
- package/chunks/{send-message-DN76MXDX.js → send-message-SNCXOZA7.js} +16 -13
- package/chunks/serve-C56AM3HW.js +156 -0
- package/chunks/{server-UHMKPCAZ.js → server-5NPGYNJG.js} +2169 -529
- package/chunks/{session-ZLUK7E4P.js → session-JOY4PHTN.js} +152 -128
- package/chunks/session-attachments-root-765GPAJU.js +141 -0
- package/chunks/{session-pr-refresh-3OMTQWCZ.js → session-pr-refresh-JUKB3A7P.js} +95 -71
- package/chunks/{settings-P4DHIIUP.js → settings-P326ULSH.js} +95 -71
- package/chunks/{shell-IMFUVQQ5.js → shell-747O3UYW.js} +59 -49
- package/chunks/{skill-NB5RJGZW.js → skill-DOHHQC32.js} +22 -17
- package/chunks/skill-settings-RI5JR6ZG.js +164 -0
- package/chunks/spawnChannel-745P6IB6.js +152 -0
- package/chunks/standalone-update-JC4E4UEO.js +156 -0
- package/chunks/{start-opentui-ui-JKAIWGF7.js → start-opentui-ui-RC62XZUC.js} +1611 -800
- package/chunks/{startInteractiveUI-YRPOT6GH.js → startInteractiveUI-PIBA3ADH.js} +521 -374
- package/chunks/storage-VZECDJNX.js +17 -0
- package/chunks/{syntheticOutput-EX5L5GYI.js → syntheticOutput-SSXJ2NEY.js} +5 -3
- package/chunks/task-create-FD3EJI7F.js +30 -0
- package/chunks/{task-list-ZLJSMRFA.js → task-list-GA5GOR74.js} +9 -6
- package/chunks/{task-stop-MD7P6QGK.js → task-stop-3MXTDL7H.js} +6 -3
- package/chunks/{task-update-3LSYQDRW.js → task-update-YHFYE7L6.js} +16 -13
- package/chunks/{team-create-2XTBYRJF.js → team-create-PJYGG3AE.js} +62 -51
- package/chunks/{team-delete-RIDINW6I.js → team-delete-V2CROTI6.js} +9 -6
- package/chunks/{team-plan-approval-CFNWW7ZQ.js → team-plan-approval-B36IMXRL.js} +61 -50
- package/chunks/terminal-image-renderer-7OSAIRLS.js +156 -0
- package/chunks/theme-manager-PVMU3VN5.js +140 -0
- package/chunks/{todoWrite-XSTG2VT5.js → todoWrite-LT75PK2W.js} +8 -5
- package/chunks/tool-result-media-S6D7T7TZ.js +45 -0
- package/chunks/{tool-search-ZHTJU2MV.js → tool-search-MNRENFML.js} +43 -21
- package/chunks/total-session-admission-XOFLP43R.js +151 -0
- package/chunks/transcribe-audio-AJQZPNEV.js +30 -0
- package/chunks/trustedFolders-SBORXKH4.js +160 -0
- package/chunks/understand-video-segments-5TMRDQUB.js +438 -0
- package/chunks/{update-relaunch-LI7GRP36.js → update-relaunch-FVAD6CYB.js} +5 -5
- package/chunks/updateCheck-PK4QHA67.js +156 -0
- package/chunks/upload-cache-5YULQVZZ.js +17 -0
- package/chunks/upload-config-AZ63YJU2.js +25 -0
- package/chunks/useAutoAcceptIndicator-SPTOOUWR.js +158 -0
- package/chunks/{validateNonInterActiveAuth-YFPCYYNL.js → validateNonInterActiveAuth-XXHRLXWV.js} +144 -120
- package/chunks/{version-4MTL4JVU.js → version-AGTZHZNY.js} +1 -1
- package/chunks/{web-fetch-O6RG6ISB.js → web-fetch-KMXKLQKY.js} +27 -20
- package/chunks/{web-search-JHAXVEMD.js → web-search-OLBQWW2Y.js} +14 -11
- package/chunks/{web-shell-static-FFWCUUZS.js → web-shell-static-XSCCMXKQ.js} +3 -3
- package/chunks/{workflow-O7L6VDYU.js → workflow-2LC5ZV4Z.js} +214 -73
- package/chunks/workspace-providers-status-4IJHDGCM.js +154 -0
- package/chunks/{workspace-registration-store-7G4E7YPY.js → workspace-registration-store-M4LBEY5A.js} +1 -1
- package/chunks/workspace-registry-D4HQ3TWX.js +160 -0
- package/chunks/workspace-runtime-coordinator-ZG3IRRQ6.js +163 -0
- package/chunks/workspace-service-7ORHK4P4.js +165 -0
- package/chunks/workspace-skills-status-J43O7A5Q.js +151 -0
- package/chunks/{workspace-trust-reconciler-XEBW5FUL.js → workspace-trust-reconciler-7ZMDX27O.js} +99 -75
- package/chunks/write-file-MWN2PNMG.js +107 -0
- package/chunks/{zh-TW-S3YTQ4DS.js → zh-TW-SRB5QSER.js} +16 -0
- package/chunks/{zh-F76MZTL3.js → zh-UBQIFP4A.js} +16 -0
- package/chunks/{zoom-image-RDPRTP4B.js → zoom-image-H7MLEC2E.js} +18 -13
- package/cli.js +14 -14
- package/export-transcript-document.js +52 -52
- package/locales/en.js +18 -0
- package/locales/zh-TW.js +17 -0
- package/locales/zh.js +17 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-RxykUDmi.js → abnfDiagram-VCTEODGH-L57MVQ_O.js} +1 -1
- package/web-shell/assets/{arc-CZpgGCJC.js → arc-Cdl4BCU9.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-BHSMzNDT.js → architectureDiagram-5GKGNRK7-wLGfVuoB.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-Bn4mF9SZ.js → blockDiagram-NRAW4CY4-LXdTypiA.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-CBM-Bj6t.js → c4Diagram-UCG6FXSJ-Ci95CJAD.js} +1 -1
- package/web-shell/assets/channel-DwdlDVan.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-D5Fin58O.js → chunk-2Q5K7J3B-CTb0CG3P.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-CY05weF7.js → chunk-5VM5RSS4-BIyA8dbi.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-3neZnj5Y.js → chunk-F27PBJKO-BlcPeoaN.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-Cd7EU4BE.js → chunk-G27WJ6UU-KdH5H1ne.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-DwK1mqFw.js → chunk-JWPE2WC7-DEh0r7ty.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-Sl7vY22C.js → chunk-LCL6LL3I-DwD-l0mq.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-BXNzpbVg.js → chunk-POPQ4Y6H-D_ybAWGG.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-DjjButcp.js → chunk-SVP7TREG-Bk6Dq0yA.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-DNOiCjOJ.js → chunk-XXDRQBXY-D4vL2YuW.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-CIyD-qft.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-CIyD-qft.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-BUnker7a.js → cose-bilkent-JH36ORCC-BditfMcM.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-DcUgdWE5.js → cynefin-OW5HDTMX-DAlaYMkD.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CvDKsZsL.js → cynefinDiagram-5FMLGOSQ-B9jOfS3X.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-jpCmUbr1.js → dagre-3AP2YEHR-DO6EyeMX.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DBe_bKE5.js → diagram-S7CK7UJ4-DIwGJ7mC.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-oXvPpDgs.js → diagram-UQ7AKVKN-DT5RqZBV.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BD7-_SGh.js → diagram-VSXAHHWV-DJBMayCs.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DOJL0wub.js → diagram-VX7I27RA-BllSiq1w.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-DRIiodDD.js → diagram-Z3DM3KII-Vw1NsAH3.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-Db31Ulmb.js → ebnfDiagram-PWID7BFC-TY7loKI3.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CVHhwI2_.js → erDiagram-SSCWMZ5O-BYrxi-FK.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-DWOFy1FK.js → flowDiagram-A5DVABFB-BTQ4IRh-.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-C0sxQtPd.js → ganttDiagram-EL5Y4UJY-96GXN9_Z.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-CNituBYC.js → gitGraphDiagram-WWUBYQGX-BgIxQjuh.js} +1 -1
- package/web-shell/assets/{index-B15NlwB8.js → index-BvmsVGIg.js} +472 -465
- package/web-shell/assets/{index-BSrS0tQ6.css → index-D0aLpdAG.css} +2 -2
- package/web-shell/assets/{index-gm9tLk7h.js → index-SPar5CcF.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-CxhJYtIR.js → infoDiagram-RXCK75RN-BlyUMpEA.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-By2mchUy.js → ishikawaDiagram-5VMMS53U-94uLMZ3k.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-CVH-OweI.js → journeyDiagram-EYS64GPL-DbnJfG3S.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-Cc9dQXLy.js → kanban-definition-3QL26DDD-gjWM2ioU.js} +1 -1
- package/web-shell/assets/{layout-C_60ysHw.js → layout-CmDpGoK-.js} +1 -1
- package/web-shell/assets/{linear-BvAVfqwu.js → linear-DksWgqn0.js} +1 -1
- package/web-shell/assets/{mermaid.core-C3CoBKAc.js → mermaid.core-DCpE5atR.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-Cuu8Q8LM.js → mindmap-definition-FBJOCRG2-DanEOvck.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DmAeyDO2.js → pegDiagram-XKGWAZYB-V2ee76OP.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-B7vbB_xv.js → pieDiagram-E7YTZNPT-CYvmbkkp.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-BqOBkRR7.js → quadrantDiagram-AXDQQJYC-BRkw6ha0.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-sI06lZIu.js → railroadDiagram-O6MQD6OU-D_YmVT7T.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Bg13d10S.js → requirementDiagram-EFPCY7ZU-DTF9UgWw.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-WFOzZHrR.js → sankeyDiagram-P5KCCOFB-znmuOvtK.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-CCdRbA4E.js → sequenceDiagram-WJ2MYXX4-B8CE9gDr.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-BH5F3bGg.js → sizeCapture-X5ZJPWSS-BqE_jooQ.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-NwS2X3QB.js → stateDiagram-HBIQ2CUA-4AmlCOLW.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DwExf4Jm.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-Bm38pM28.js → swimlanes-XN3QIQJK-B40gtZOq.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-CXXUsHPj.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-Do-agLSo.js → timeline-definition-24CTP7MA-B23KIwTc.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-aggLfZzl.js → vennDiagram-4TSXK5OY-eyJpBjg6.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-D5JR3mXX.js → wardleyDiagram-VM6X3IG4-BBjaaHeP.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DhtLDuXs.js → xychartDiagram-S5SC5T6Z-Cq3Bnvj4.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/MaxSizedBox-FCF6M53W.js +0 -124
- package/chunks/acp-subagent-executor-TND6W2O5.js +0 -140
- package/chunks/agent-headless-EJ4QOUSM.js +0 -94
- package/chunks/bridge-MUX5YJZT.js +0 -132
- package/chunks/channel-settings-store-7CBIRZER.js +0 -134
- package/chunks/chunk-FIJODK52.js +0 -154
- package/chunks/chunk-OALXNGUA.js +0 -2137
- package/chunks/chunk-PF7GAP6K.js +0 -16861
- package/chunks/config-utils-KX2YS725.js +0 -127
- package/chunks/contextCommand-RV6Y5LNJ.js +0 -120
- package/chunks/daemon-status-provider-NULJNAEV.js +0 -131
- package/chunks/daemon-trust-policy-S4KWGPV3.js +0 -126
- package/chunks/deferred-core-runtime-T23ZT443.js +0 -128
- package/chunks/environment-TSQJUTPV.js +0 -143
- package/chunks/errors-RIVYJS6T.js +0 -127
- package/chunks/exitPlanMode-BYBBFN2T.js +0 -92
- package/chunks/handleAutoUpdate-FZP45KOR.js +0 -123
- package/chunks/i18n-OTB62AKW.js +0 -140
- package/chunks/initializer-4JXZEC4B.js +0 -127
- package/chunks/installationInfo-2IJV5QKC.js +0 -121
- package/chunks/list-KQSQ4A5G.js +0 -130
- package/chunks/loadedSettingsAdapter-TZTTNRHI.js +0 -124
- package/chunks/mcp-TFDTUPIA.js +0 -124
- package/chunks/model-configuration-ZCAKKIOF.js +0 -137
- package/chunks/modelConfigUtils-J3ZPW7ZK.js +0 -116
- package/chunks/nonInteractiveCli-GPT3TVOK.js +0 -211
- package/chunks/pidfile-GBTBIGHF.js +0 -127
- package/chunks/prompt-terminal-ledger-ILIXZI3E.js +0 -119
- package/chunks/read-file-G4XKW2CS.js +0 -31
- package/chunks/record-source-2GSY5JD5.js +0 -22
- package/chunks/resumeHistoryUtils-YPJU4XFE.js +0 -132
- package/chunks/ripGrep-AAKMALLM.js +0 -39
- package/chunks/runtime-SJCRYNPA.js +0 -164
- package/chunks/sandbox-UIXL423Z.js +0 -146
- package/chunks/sandboxConfig-CY343YNJ.js +0 -114
- package/chunks/scheduled-tasks-5UGBEVNZ.js +0 -143
- package/chunks/scheduler-GCZYLZ2P.js +0 -136
- package/chunks/serve-2XXQLVK2.js +0 -132
- package/chunks/session-attachments-root-DHQM5IEZ.js +0 -117
- package/chunks/skill-settings-IXG5CTQO.js +0 -140
- package/chunks/spawnChannel-Q3YALTCJ.js +0 -128
- package/chunks/standalone-update-H5OJ7MM7.js +0 -132
- package/chunks/task-create-75HVPEAH.js +0 -28
- package/chunks/terminal-image-renderer-UDPJPGPQ.js +0 -132
- package/chunks/theme-manager-SK57EKMO.js +0 -116
- package/chunks/total-session-admission-UUZBDQCG.js +0 -127
- package/chunks/trustedFolders-4LDBLNTS.js +0 -136
- package/chunks/updateCheck-PKSSORPO.js +0 -132
- package/chunks/useAutoAcceptIndicator-I32UEQPI.js +0 -134
- package/chunks/workspace-providers-status-WRX6CJM4.js +0 -130
- package/chunks/workspace-registry-SXIMGT4D.js +0 -136
- package/chunks/workspace-runtime-coordinator-7DOEHXYT.js +0 -139
- package/chunks/workspace-service-HDXOZMYC.js +0 -141
- package/chunks/workspace-skills-status-VN4L37CA.js +0 -127
- package/chunks/write-file-LKX4ETIO.js +0 -97
- package/web-shell/assets/channel-DFYs_LlK.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DnGrKXoM.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DnGrKXoM.js +0 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-1aU2JZXO.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Dp-u6kQG.js +0 -8
- package/chunks/{chunk-XAJZFGD2.js → chunk-PXXYQOZO.js} +8 -8
- package/chunks/{chunk-WVURIAEE.js → chunk-SVWWF5TZ.js} +3 -3
- package/chunks/{dist-G5UMXIGF.js → dist-I6D6XOWV.js} +1 -1
- package/chunks/{dist-UXVNLQHG.js → dist-VIKOMAGG.js} +3 -3
|
@@ -17,14 +17,14 @@ You are drafting the text for `/goal set`. You are NOT doing the work the goal d
|
|
|
17
17
|
|
|
18
18
|
## How Goals are judged (why the format below matters)
|
|
19
19
|
|
|
20
|
-
An active Goal is re-fed to the model every turn, and its completion is judged by an independent verifier that sees ONLY transcript evidence:
|
|
20
|
+
An active Goal is re-fed to the model every turn, and its completion is judged by an independent verifier that sees ONLY transcript evidence, read from the most recent record backwards until its request is full:
|
|
21
21
|
|
|
22
|
-
- Visible assistant output
|
|
22
|
+
- Visible assistant output, tool results, and the user's own messages recorded for the Goal count as evidence; a user message proves only what the user said, chose, or approved. The objective itself and hidden reasoning do not, and in a long Goal the oldest records no longer reach the verifier.
|
|
23
23
|
- `delivered_output` evidence proves only that text was printed. It cannot prove that tests passed, files changed, or remote state changed — those need a tool result in the transcript (an `external_fact`).
|
|
24
24
|
- A claim that the user confirmed, chose, or approved something needs a real user message as evidence; otherwise the completion proposal is rejected.
|
|
25
|
-
- Vague, subjective, or open-ended conditions never
|
|
25
|
+
- Vague, subjective, or open-ended conditions never produce decisive evidence; the loop then runs until a limit is hit.
|
|
26
26
|
|
|
27
|
-
So a good objective makes the agent PRODUCE evidence: run the named check and paste the decisive output line.
|
|
27
|
+
So a good objective makes the agent PRODUCE evidence at the end: run the named check immediately before proposing completion and paste the decisive output line. A check that ran long before may have to run again when completion is proposed.
|
|
28
28
|
|
|
29
29
|
## Step 0 — should this be a Goal at all?
|
|
30
30
|
|
|
@@ -112,7 +112,7 @@ Check every line before printing:
|
|
|
112
112
|
|
|
113
113
|
Then hand off, and nothing else:
|
|
114
114
|
|
|
115
|
-
**If the `propose_goal` tool is available and no Goal is active**, call it with the objective on one line. The user approves or declines it in a dialog; only their approval sets the Goal. If they decline you will not be told why: stop, do not ask about it, and do not propose the same or a reworded objective again. After approval, acknowledge it in one sentence and end the turn — the Goal runtime starts the first Goal turn on its own.
|
|
115
|
+
**If the `propose_goal` tool is available and no Goal is active**, call it with the objective on one line. `propose_goal` refuses an objective over 1,500 characters: tighten a longer draft before calling it, never cut it off mid-check. The user approves or declines it in a dialog; only their approval sets the Goal. If they decline you will not be told why: stop, do not ask about it, and do not propose the same or a reworded objective again. After approval, acknowledge it in one sentence and end the turn — the Goal runtime starts the first Goal turn on its own.
|
|
116
116
|
|
|
117
117
|
**Otherwise** (a client without Goal proposal support, headless, the tool is disabled, or a Goal is active), print:
|
|
118
118
|
|
|
@@ -283,6 +283,7 @@ Edit `~/.qwen/settings.json` (create it if it doesn't exist). You can mix multip
|
|
|
283
283
|
| Field | Required | Description |
|
|
284
284
|
| ------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
285
285
|
| `id` | Yes | Model ID sent to the API (e.g. `gpt-4o`, `claude-sonnet-4-20250514`) |
|
|
286
|
+
| `wireApi` | No | OpenAI-compatible request format: `chat-completions` or `responses`. Omit to inherit the provider protocol. |
|
|
286
287
|
| `name` | No | Display name in the `/model` picker (defaults to `id`) |
|
|
287
288
|
| `envKey` | No | Environment variable name for the API key (e.g. `OPENAI_API_KEY`); optional/recommended — defaults to the auth type's default env key when omitted |
|
|
288
289
|
| `baseUrl` | No | API endpoint override (useful for proxies or custom endpoints) |
|
|
@@ -4,7 +4,7 @@ Qwen Code allows you to configure multiple model providers through the `modelPro
|
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
Use `modelProviders` to declare models per provider id that the `/model` picker can switch between. Each key is a provider id and its value is **an array of model definitions** (`ModelConfig[]`). For built-in providers the key must be a valid auth type (`openai`, `
|
|
7
|
+
Use `modelProviders` to declare models per provider id that the `/model` picker can switch between. Each key is a provider id and its value is **an array of model definitions** (`ModelConfig[]`). For built-in providers the key must be a valid auth type (`openai`, `anthropic`, `gemini`, `vertex-ai`); a custom provider id (e.g. `idealab`) is allowed as long as you map it to a protocol via the top-level [`providerProtocol`](#custom-provider-ids-providerprotocol) setting. Each model entry requires an `id`; `envKey` is **optional and recommended** (when omitted, it falls back to the auth type's default env key, e.g. `OPENAI_API_KEY` for `openai`), with optional `name`, `description`, `baseUrl`, and `generationConfig`. Credentials are never persisted in settings; the runtime reads them from `process.env[envKey]`. Qwen OAuth models remain hard-coded and cannot be overridden.
|
|
8
8
|
|
|
9
9
|
> [!note]
|
|
10
10
|
>
|
|
@@ -16,11 +16,11 @@ Use `modelProviders` to declare models per provider id that the `/model` picker
|
|
|
16
16
|
|
|
17
17
|
> [!note]
|
|
18
18
|
>
|
|
19
|
-
> **Model uniqueness:** Models
|
|
19
|
+
> **Model uniqueness:** Models are identified by their effective API protocol, `id`, and configured `baseUrl`. You can define the same model and URL with both `wireApi: "chat-completions"` and `wireApi: "responses"`, or use different URLs for the same model and API. If entries share all three values, the first occurrence wins and subsequent duplicates are skipped with a warning.
|
|
20
20
|
|
|
21
21
|
> [!note]
|
|
22
22
|
>
|
|
23
|
-
> **Hot reload vs. restart:** `modelProviders` edits in `settings.json` are picked up by a running interactive session without a restart (the file watcher debounces ~300ms; reopen `/model` to see new entries, the current selection is kept). `providerProtocol` is read once at startup and **requires a restart**.
|
|
23
|
+
> **Hot reload vs. restart:** `modelProviders` edits in `settings.json` are picked up by a running interactive session without a restart (the file watcher debounces ~300ms; reopen `/model` to see new entries, the current selection is kept). Changing the active model's `wireApi` creates a different route; select that route explicitly or restart to use it. Invalid API edits leave the prior registry usable. `providerProtocol` is read once at startup and **requires a restart**.
|
|
24
24
|
|
|
25
25
|
### Image generation routes
|
|
26
26
|
|
|
@@ -118,12 +118,11 @@ Below are comprehensive configuration examples for different authentication type
|
|
|
118
118
|
|
|
119
119
|
### Supported Auth Types
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
Use one of the built-in provider ids below, or map a custom id with `providerProtocol`:
|
|
122
122
|
|
|
123
|
-
|
|
|
123
|
+
| Effective protocol | Description |
|
|
124
124
|
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
125
|
-
| `openai` | OpenAI-compatible APIs
|
|
126
|
-
| `openai-responses` | OpenAI's `/v1/responses` API (native reasoning replay via `reasoning.encrypted_content`, not the Chat Completions format used by `openai`) |
|
|
125
|
+
| `openai` | OpenAI-compatible APIs. Defaults to Chat Completions; set a model's `wireApi` to `responses` for the Responses API. |
|
|
127
126
|
| `anthropic` | Anthropic Claude API |
|
|
128
127
|
| `gemini` | Google Gemini API |
|
|
129
128
|
| `qwen-oauth` | Qwen OAuth (hard-coded, cannot be overridden in `modelProviders`) |
|
|
@@ -137,7 +136,7 @@ The `modelProviders` object keys must be valid `authType` values. Currently supp
|
|
|
137
136
|
|
|
138
137
|
### Custom provider ids (`providerProtocol`)
|
|
139
138
|
|
|
140
|
-
Built-in provider ids (`openai`, `
|
|
139
|
+
Built-in provider ids (`openai`, `gemini`, `anthropic`, `vertex-ai`, `qwen-oauth`) are routed to their SDK protocol automatically. To use a **custom** provider id — for example to group several OpenAI-compatible endpoints under a friendlier name — declare it under `modelProviders` and map it to a built-in protocol with the top-level `providerProtocol` setting:
|
|
141
140
|
|
|
142
141
|
```json
|
|
143
142
|
{
|
|
@@ -158,11 +157,40 @@ Built-in provider ids (`openai`, `openai-responses`, `gemini`, `anthropic`, `ver
|
|
|
158
157
|
|
|
159
158
|
Without a matching `providerProtocol` entry, a custom provider id is skipped (see the warning above).
|
|
160
159
|
|
|
160
|
+
### Selecting the OpenAI API
|
|
161
|
+
|
|
162
|
+
Set `wireApi` beside `id`, `envKey`, and `baseUrl` on an OpenAI-compatible model:
|
|
163
|
+
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"modelProviders": {
|
|
167
|
+
"openai": [
|
|
168
|
+
{
|
|
169
|
+
"id": "my-model",
|
|
170
|
+
"wireApi": "responses",
|
|
171
|
+
"envKey": "OPENAI_API_KEY",
|
|
172
|
+
"baseUrl": "https://api.openai.com/v1"
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
"security": { "auth": { "selectedType": "openai" } },
|
|
177
|
+
"model": { "name": "my-model" }
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
The supported values are `chat-completions` and `responses`. Omitting `wireApi` uses Chat Completions for `openai`, including custom providers mapped to `openai`. Other values, or `wireApi` on an Anthropic, Gemini, Vertex AI, or Qwen OAuth model, are configuration errors.
|
|
182
|
+
|
|
183
|
+
Use `openai` with per-model `wireApi` for new configurations. The `modelProviders.openai-responses` format and `providerProtocol` mappings to `openai-responses` released in v0.23.3 remain readable. Explicit provider mappings take precedence over bucket names; explicit `wireApi` takes precedence over either OpenAI protocol. Loading does not rewrite settings or change credential references. Reconfiguration writes the selected routes in the new format and removes only their matching old entries in the writable scope; entries under a provider id that contains a dot are left in place, and unrelated models, endpoints, APIs and scopes remain unchanged. `api` is not an alias for `wireApi`.
|
|
184
|
+
|
|
185
|
+
`wireApi` is local routing metadata; it does not belong in `generationConfig` or `extra_body` and is not sent in the request body. New custom setup shares one credential slot for the same OpenAI endpoint across both APIs, so rotating that key updates both routes. Manually configured models can use distinct explicit `envKey` references when independent credentials are needed. In `/auth` → Custom Provider, select OpenAI-compatible and then the API format.
|
|
186
|
+
|
|
187
|
+
At startup, `selectedType: "openai"` can resolve a model explicitly configured with `wireApi: "responses"` when there is no matching Chat route at the selected configured endpoint. The model picker and recorded sessions retain the effective protocol (`openai` or `openai-responses`) so both routes can be selected and resumed independently. No endpoint detection or automatic fallback occurs when an API request fails.
|
|
188
|
+
|
|
161
189
|
### Transports Used for API Requests
|
|
162
190
|
|
|
163
|
-
|
|
191
|
+
The effective model protocol determines the transport. Both OpenAI APIs use the `openai` provider group; `wireApi` selects Chat Completions or Responses:
|
|
164
192
|
|
|
165
|
-
|
|
|
193
|
+
| Effective protocol | Transport |
|
|
166
194
|
| ------------------ | ------------------------------------------------------------------------------------------------------------------ |
|
|
167
195
|
| `openai` | [`openai`](https://www.npmjs.com/package/openai) - Official OpenAI Node.js SDK |
|
|
168
196
|
| `openai-responses` | Direct HTTP/SSE calls to `/v1/responses` (no SDK); embeddings use [`openai`](https://www.npmjs.com/package/openai) |
|
|
@@ -170,7 +198,7 @@ Qwen Code sends requests to each provider through an official SDK, except for `o
|
|
|
170
198
|
| `gemini` | [`@google/genai`](https://www.npmjs.com/package/@google/genai) - Official Google GenAI SDK |
|
|
171
199
|
| `qwen-oauth` | [`openai`](https://www.npmjs.com/package/openai) with custom provider (DashScope-compatible) |
|
|
172
200
|
|
|
173
|
-
This means the `baseUrl` you configure should be compatible with the corresponding transport's expected API format. For example,
|
|
201
|
+
This means the `baseUrl` you configure should be compatible with the corresponding transport's expected API format. For example, `wireApi: "responses"` requires a Responses-compatible endpoint.
|
|
174
202
|
|
|
175
203
|
### OpenAI-compatible providers (`openai`)
|
|
176
204
|
|
|
@@ -262,7 +290,7 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
|
|
|
262
290
|
|
|
263
291
|
### OpenAI Responses API (`openai-responses`)
|
|
264
292
|
|
|
265
|
-
|
|
293
|
+
Use `openai` with `wireApi: "responses"` to target OpenAI's `/v1/responses` endpoint. When the endpoint returns encrypted reasoning with visible thought text, it replays prior-turn reasoning across turns and `--resume` via `reasoning.encrypted_content`. Compatible endpoints that stream `response.reasoning_text.delta` also display their reasoning, but endpoints without `encrypted_content` cannot replay the opaque reasoning state. Use `reasoning.effort` (not `extra_body.enable_thinking`, which the Chat Completions wires use) to control reasoning intensity.
|
|
266
294
|
|
|
267
295
|
```json
|
|
268
296
|
{
|
|
@@ -270,9 +298,10 @@ This auth type targets OpenAI's `/v1/responses` endpoint rather than Chat Comple
|
|
|
270
298
|
"OPENAI_API_KEY": "sk-your-actual-openai-key-here"
|
|
271
299
|
},
|
|
272
300
|
"modelProviders": {
|
|
273
|
-
"openai
|
|
301
|
+
"openai": [
|
|
274
302
|
{
|
|
275
303
|
"id": "gpt-5.1",
|
|
304
|
+
"wireApi": "responses",
|
|
276
305
|
"name": "GPT-5.1 (Responses API)",
|
|
277
306
|
"envKey": "OPENAI_API_KEY",
|
|
278
307
|
"baseUrl": "https://api.openai.com/v1",
|
|
@@ -465,7 +494,7 @@ export VLLM_API_KEY="not-needed"
|
|
|
465
494
|
|
|
466
495
|
> [!note]
|
|
467
496
|
>
|
|
468
|
-
> The `extra_body` parameter is **only supported for OpenAI-compatible providers** (`openai`, `
|
|
497
|
+
> The `extra_body` parameter is **only supported for OpenAI-compatible providers** (`openai`, `qwen-oauth`). It is ignored for Anthropic, and Gemini providers. On `openai-responses` the `enable_thinking` key is translated rather than forwarded — see the [OpenAI Responses API](#openai-responses-api-openai-responses) note.
|
|
469
498
|
|
|
470
499
|
> [!note]
|
|
471
500
|
>
|
|
@@ -184,7 +184,7 @@ These settings are read from operator scopes only (User, System, and SystemDefau
|
|
|
184
184
|
| `model.maxSessionTurns` | integer | Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. | `-1` |
|
|
185
185
|
| `model.maxWallTimeSeconds` | number | Wall-clock budget for headless / unattended runs, in seconds. `-1` means unlimited. Overridable per-invocation via `--max-wall-time`, which requires a positive duration (`90`, `30s`, `5m`, `1h`, `1.5h`); the minimum is 1 second — sub-second values (`500ms`, `0.5`) are rejected as typos. Omit the flag to fall back to this setting. Aborts with exit code 55 when exceeded. | `-1` |
|
|
186
186
|
| `model.goalTokenBudget` | integer | Autonomous spend window armed on each new Goal, in tokens as counted by the Goal meter (`totalTokenCount` summed over the model calls the Goal makes in its own turns). A Goal that spends its window gets one wind-down turn to hand off, then stops until you resume it, which arms another window. Unset uses the built-in default of 30,000,000; `-1` means unlimited. Zero, values above 300,000,000 (10x the default, a typo guard), other negative, fractional, or non-number values are rejected at startup. | `30000000` |
|
|
187
|
-
| `model.goalCheckpointTimeoutSeconds` | integer |
|
|
187
|
+
| `model.goalCheckpointTimeoutSeconds` | integer | Deprecated. Accepted but no longer used: Goals no longer run evidence-checkpoint model calls, because the verifier reads the transcript directly (see [Goals](../features/goals.md)). The value is still validated as an integer number of seconds. | `180` |
|
|
188
188
|
| `model.goalMaxTurns` | integer | Goal-turn window armed on each new Goal. Every finished Goal turn counts, including user-driven turns; user turns are still admitted at the ceiling, but they can make the next autonomous continuation a wind-down. A Goal that reaches the ceiling gets one wind-down turn to hand off, then stops as usage-limited until you resume it, which authorizes another window on top of the turns already finished. Unset runs Goals with no turn ceiling, and `-1` says so explicitly -- but the opt-out only takes a ceiling off a Goal that has already spent it, on the resume or edit that follows; a Goal still under its ceiling keeps it. A ceiling is armed only on a Goal created after the change, so bounding a Goal already on the record means replacing it with `/goal set`, which starts a new Goal at revision 1 with its meters reset and its earlier evidence no longer citable, or clearing it and starting again. Zero, values above 10,000, other negative, fractional, or non-number values are rejected at startup. Changes take effect after restart. | (none) |
|
|
189
189
|
| `model.goalMaxActiveMinutes` | integer | Active-time window armed on each new Goal, in minutes of wall time while the Goal remains active, including waits and idle time between turns. Paused, blocked or stopped time does not count, nor does downtime across a restart; a suspended process is still charged. A Goal that reaches the ceiling gets one wind-down turn to hand off, then stops as usage-limited until you resume it, which authorizes another window measured from where it stopped. The ceiling is read between turns, not by a timer, so a Goal can run well past it before it stops. Active time is measured between recorded transitions, so time in a turn that a restart interrupted is not charged. Unset runs Goals with no time ceiling, and `-1` says so explicitly -- but the opt-out only takes a ceiling off a Goal that has already spent it, on the resume or edit that follows. A ceiling is armed only on a Goal created after the change, so bounding a Goal already on the record means replacing it with `/goal set`, which starts a new Goal at revision 1 with its meters reset and its earlier evidence no longer citable, or clearing it and starting again. Zero, values above 10,080 (one week), other negative, fractional, or non-number values are rejected at startup. Changes take effect after restart. | (none) |
|
|
190
190
|
| `model.maxToolCalls` | number | Cumulative tool-call budget for a run (counts every executed tool, success or failure; `structured_output` under `--json-schema` is exempt). `-1` means unlimited; `0` means "no tool calls allowed". Capped at 1,000,000 to catch typos. Overridable via `--max-tool-calls`. Aborts with exit code 55 when exceeded. | `-1` |
|
|
@@ -390,6 +390,7 @@ If you are experiencing performance issues with file searching (e.g., with `@` c
|
|
|
390
390
|
| `tools.useBuiltinRipgrep` | boolean | Use the bundled ripgrep binary. When set to `false`, the system-level `rg` command will be used instead. This setting is only effective when `tools.useRipgrep` is `true`. | `true` | |
|
|
391
391
|
| `tools.workflowsEnabled` | boolean | Enable the Workflow tool, which lets the model author and run a script that orchestrates subagents in parallel. Off by default; a run can dispatch many subagents and spend tokens accordingly. | `false` | User, System, and SystemDefaults scopes only; workspace values are ignored. Requires restart: Yes. Env overrides: `QWEN_CODE_ENABLE_WORKFLOWS=1` forces on; `QWEN_CODE_DISABLE_WORKFLOWS=1` forces off (disable wins). |
|
|
392
392
|
| `tools.workflowSizeGuideline` | enum | Advisory size guideline for the dynamic workflows the model writes: `"small"` aims for fewer than 5 agents, `"medium"` fewer than 15, `"large"` fewer than 50, and `"unrestricted"` sends no guideline. It is not an enforced limit. It also sets the agent count at which a running workflow is flagged as a large workflow in the background-tasks view. | `"medium"` | Possible values: `"small"`, `"medium"`, `"large"`, `"unrestricted"`. Requires restart: No; a change is announced to the model with your next message. Env override for the warning threshold: `QWEN_CODE_WORKFLOW_SIZE_WARNING_AGENTS`. |
|
|
393
|
+
| `tools.workflowNameOnly` | boolean | Restrict the model to running named workflows — saved workflows and the workflows extensions ship, called as `Workflow({ name, args })`. The model cannot run an inline `script` or a `scriptPath`, and a running script cannot nest `workflow({ scriptPath })`, so every run the model starts can be matched by a `Workflow(name:...)` permission rule. It does not replace an approval policy: the model can still save a new workflow file and run it by name, which a rule scoped to specific names or script digests asks about. Runs a host starts over ACP (`run-saved`, `run-script`, retry, rerun) are not restricted. In such a session the `/review` workflow fan-out is unavailable. | `false` | Requires restart: Yes. Env: `QWEN_CODE_WORKFLOW_NAME_ONLY=1` turns it on too; a project `.env` cannot set it. A workspace may set this to `true` only; a workspace `false` is ignored. |
|
|
393
394
|
| `goals.modelProposed` | enum | Controls the `propose_goal` tool, which lets the model propose a session Goal for you to approve: `alwaysAsk` shows every proposal in an approval dialog and nothing is set until you accept it; `"disabled"` removes the tool. A typed `/goal` is unaffected. | `alwaysAsk` | User, System, and SystemDefaults scopes only; workspace values are ignored. Requires restart: Yes. |
|
|
394
395
|
| `tools.truncateToolOutputThreshold` | number | Truncate tool output if it is larger than this many characters. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `25000` | Requires restart: Yes |
|
|
395
396
|
| `tools.truncateToolOutputLines` | number | Maximum lines or entries kept when truncating tool output. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `1000` | Requires restart: Yes |
|
|
@@ -431,6 +431,8 @@ Only a workflow that declares `whenToUse` is listed for the model, together with
|
|
|
431
431
|
|
|
432
432
|
In the interactive UI, `/gcp:deep-research` starts the workflow directly. In headless mode and over ACP, the same command asks the model to run it by name, and the approval follows.
|
|
433
433
|
|
|
434
|
+
To let the model start your extension's workflows without letting it write and run scripts of its own, deploy with [`tools.workflowNameOnly`](../configuration/settings.md) (or `QWEN_CODE_WORKFLOW_NAME_ONLY=1`) and allow the workflows by name, for example `Workflow(name:gcp:deep-research)`. The lock makes every run the model starts addressable by such a rule; it does not approve anything by itself, so keep asking for names you have not allowed.
|
|
435
|
+
|
|
434
436
|
Discovery is deliberately narrow:
|
|
435
437
|
|
|
436
438
|
- Only `.js` files directly inside each directory are read; subdirectories are ignored.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Goals
|
|
2
2
|
|
|
3
|
-
A Goal keeps Qwen Code working across turns until a stated condition is met. Set one with `/goal <objective>`, and the session keeps going on its own.
|
|
3
|
+
A Goal keeps Qwen Code working across turns until a stated condition is met. Set one with `/goal <objective>`, and the session keeps going on its own. When the model proposes that the objective is complete or blocked, an independent verifier judges that proposal from the most recent part of the Goal's transcript. The session stops when the verifier accepts, or when the Goal is paused, cleared, or stopped by a limit.
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
@@ -16,15 +16,15 @@ A Goal keeps Qwen Code working across turns until a stated condition is met. Set
|
|
|
16
16
|
|
|
17
17
|
Creating, editing, or resuming a Goal requires a trusted workspace (`/trust`). Headless usage is covered in [Headless Mode](./headless.md#run-a-persistent-goal).
|
|
18
18
|
|
|
19
|
-
Once a Goal has billed a turn, the footer pill and every status card show what it has spent against the window it is allowed, as `1.2k/30.0m`. The figure counts the model calls the Goal
|
|
19
|
+
Once a Goal has billed a turn, the footer pill and every status card show what it has spent against the window it is allowed, as `1.2k/30.0m`. The figure counts the model calls in the Goal's own turns, its direct foreground subagents, and its verifier checks. Nested and background subagents, unrelated side queries, cron turns, and notification turns are excluded. A failed check that returns no usable result cannot be counted. Restoring already recorded usage does not count it again. The window is set by [`model.goalTokenBudget`](../configuration/settings.md); resuming a Goal that has spent its window grants another one on top of what it has already spent, so the figure reads `30.0m/60.0m` rather than starting over. A Goal with no budget shows only what it has spent. A Goal that has not billed a turn yet shows no figures at all.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
When turn or active-time budgets are configured, status cards also show the corresponding usage against its budget, for example `3/20 turns` and `12m 3s/30m`. Headless text spells these out as `3 of 20 turns` and `12m 3s of 30m active`. Zero usage remains hidden, and paused or stopped Goals retain these figures.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Two more windows are available and off by default: [`model.goalMaxTurns`](../configuration/settings.md) caps how many turns a Goal may finish, including user-driven Goal turns, and [`model.goalMaxActiveMinutes`](../configuration/settings.md) caps wall time while it remains active in a running process, including waits and idle time between turns. Time while the Goal is paused, blocked or stopped does not count against the second one, nor does downtime across a restart; a process that is merely suspended is still charged. Whichever window runs out first, the Goal gets the same single wind-down turn to hand off and then stops until you resume it, and resuming authorizes another window on top of what has already been used. Only the window that ran out moves; the others stay where they were, and the `-1` opt-out likewise only takes a ceiling off a Goal that has already spent it. The time window is read between turns rather than enforced by a timer, so a Goal can run well past it before it stops: a turn already running is never interrupted, and a window that runs out while no turn is running is not noticed until the next turn ends. Active time is counted between recorded transitions, so time in a turn a restart interrupted is not charged. Changes to either setting take effect after restart. Both windows arm only on a Goal created after the change, so bounding a Goal already on the record means replacing it with `/goal set` -- a new Goal at revision 1, with its turn, token and active-time meters reset and its evidence window starting at the replacement, so evidence the old Goal recorded is no longer citable -- or clearing it and starting again. A resume or an edit never adds a ceiling that was not armed at creation.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Each turn the session takes on its own reports what the Goal has spent so far, how many turns are behind it, and — unless the Goal runs unbounded — the window it is allowed. Every such turn except the final wind-down hand-off also carries standing instructions to re-check the workspace rather than trust earlier turns' reports, to work toward the end state the objective asks for, to do something different when the previous turn changed nothing (from the second turn on, once there is a previous turn to judge), and to prove every requirement with a recent tool result before proposing that the Goal is done.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Goals no longer compress recorded evidence into checkpoint claims between turns: the verifier reads the transcript directly, so there is nothing for a checkpoint to feed, and the side-model check that used to run at the end of long turns, together with its stall limit, does not run. The `model.goalCheckpointTimeoutSeconds` setting is deprecated: it is still accepted but has no effect. The footer pill, the status cards, headless `/goal` output, the Web Shell status strip and Goals dialog, and `get_goal` no longer show a checkpoint line or stall count, including for a session recorded by a build that still ran checkpoints; that Goal's stop reason still says why it stopped.
|
|
28
28
|
|
|
29
29
|
## Interrupting a Goal
|
|
30
30
|
|
|
@@ -32,18 +32,18 @@ Cancelling a Goal turn pauses the Goal. Press Esc while the model is answering o
|
|
|
32
32
|
|
|
33
33
|
Typing a message while a Goal is active does not pause it. Your message runs as the next Goal turn, so use it to steer the work; use `/goal pause` or `/goal clear` to stop it.
|
|
34
34
|
|
|
35
|
-
Every pause states its reason: that you interrupted it, that you ran `/goal pause`, that the session token limit blocked the next model request, that the turn failed, or that three turns in a row recorded nothing the verifier could judge and no proposal — Goal bookkeeping reads (`get_goal`, `update_goal`) do not count as progress. A Goal stopped by a limit keeps the reason for that limit instead.
|
|
35
|
+
Every pause states its reason: that you interrupted it, that you ran `/goal pause`, that the session token limit blocked the next model request, that the turn failed, that the verifier could not judge a proposal (it timed out, its model call failed, or the objective left it no room for evidence), or that three turns in a row recorded nothing the verifier could judge and no proposal — Goal bookkeeping reads (`get_goal`, `update_goal`) do not count as progress. A Goal stopped by a limit keeps the reason for that limit instead.
|
|
36
36
|
|
|
37
37
|
## How a Goal is judged
|
|
38
38
|
|
|
39
|
-
The verifier never runs commands or reads files on its own. It only sees what is already in the transcript:
|
|
39
|
+
The verifier never runs commands or reads files on its own. It only sees what is already in the transcript: the records of this Goal, read from the most recent one backwards until the request is full (256 000 bytes, with any single record cut in the middle past 8 000). A short closing turn leaves room for the turns before it; a long one fills the request by itself, and the verifier is told how many older records were left out and rejects a proposal whose proof may sit among them:
|
|
40
40
|
|
|
41
|
-
- Visible assistant output
|
|
41
|
+
- Visible assistant output, tool results, and your own messages count as evidence. The objective text and the model's hidden reasoning do not. A check that ran long before completion is proposed may have dropped out of view and has to run again.
|
|
42
42
|
- Printed text proves only that text was printed. A claim that tests pass, a file changed, or a remote is updated needs the corresponding tool result in the transcript.
|
|
43
43
|
- A claim that you confirmed, chose, or approved something needs a real message from you; the verifier rejects proposals that assume it.
|
|
44
44
|
- When evidence is missing the verdict is "not yet", not "done". A condition nobody can evidence keeps the loop running until a limit stops it.
|
|
45
45
|
|
|
46
|
-
So the objective has to make the agent produce evidence: run the named check and show the decisive output.
|
|
46
|
+
So the objective has to make the agent produce evidence when it proposes completion: run the named check and show the decisive output.
|
|
47
47
|
|
|
48
48
|
## Writing a good objective
|
|
49
49
|
|
|
@@ -93,6 +93,6 @@ The skill is instructed to be read-only, and only its non-mutating tools are aut
|
|
|
93
93
|
|
|
94
94
|
Goal transitions are reported through two independent settings: [telemetry](../../developers/development/telemetry.md) enables OpenTelemetry events and metrics, while `privacy.usageStatisticsEnabled` controls usage statistics and is on by default. The OpenTelemetry event is named `qwen-code.goal_state`; usage statistics report the same transition data without the Goal id.
|
|
95
95
|
|
|
96
|
-
Reported transitions are set, replace, edit, pause, resume, clear, verifier rejection, completion, blocking, and usage limits. Events carry turn count, token spend, active time, and any configured budgets. A `clear` event identifies only the removed Goal and its revision, with no usage figures. A `replace` event describes the new Goal, not the removed Goal's final spend. User pauses and automatic no-progress pauses share the same `pause` cause; events include the raw no-progress streak when available. Only completion, blocking, and usage limits contribute to the outcome histograms. A resumed session does not re-report the transition its Goal was recovered from. A new stop committed during recovery
|
|
96
|
+
Reported transitions are set, replace, edit, pause, resume, clear, verifier rejection, completion, blocking, and usage limits. Events carry turn count, token spend, active time, and any configured budgets. A `clear` event identifies only the removed Goal and its revision, with no usage figures. A `replace` event describes the new Goal, not the removed Goal's final spend. User pauses and automatic no-progress pauses share the same `pause` cause; events include the raw no-progress streak when available. Only completion, blocking, and usage limits contribute to the outcome histograms. A resumed session does not re-report the transition its Goal was recovered from. A new stop committed during recovery is reported normally.
|
|
97
97
|
|
|
98
98
|
The Goal event itself contains no objective text or stop reasons, only the objective's length in code points. Other telemetry can contain that text: tool-call telemetry records the arguments of `propose_goal` and `update_goal`, including the objective or model-authored reason, even when `telemetry.logPrompts` is off.
|
|
@@ -32,7 +32,11 @@ Hooks are user-defined scripts or programs that are automatically executed by Qw
|
|
|
32
32
|
|
|
33
33
|
Run `/hooks` to open a read-only browser of the hooks this session runs. It moves from events to matchers to the individual hooks under a matcher; events without matcher support go straight to their hooks. A hook's details show its type, where it comes from, whether it is enabled, its command, URL or prompt, and, when they are set, its timeout, status message, HTTP `if` condition and whether it runs once or in the background. Hooks registered for the current session by skills or the SDK are listed with the source Session.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
The browser never edits your configuration: to add, change or remove a hook, edit `settings.json`. It does re-read it. Opening the interactive menu reloads hook definitions from the user, workspace and system (System and SystemDefaults) settings files used by this session, including when the session runs in a worktree, so definitions you added, changed or removed since the session started take effect without a restart. If the user or workspace file cannot be read or parsed, both previous settings snapshots and the running hooks are retained, the files are left untouched, and an error is shown. If a system settings file cannot be read or parsed, the hooks from the system files stay as they were, your other edits still take effect, the file is left untouched, and an error names it.
|
|
36
|
+
|
|
37
|
+
Reloading requires this explicit menu-open action: saving a file, pulling changes or switching branches does not automatically arm new hook commands. The non-interactive `/hooks list` only displays the registry currently loaded by that process; it does not reload settings. In an interactive terminal, `/hooks list` opens the same menu as `/hooks`.
|
|
38
|
+
|
|
39
|
+
This reload covers hook definitions, not hook controls or HTTP security settings. Changes to `disableAllHooks`, `stopHookBlockingCap`, `security.allowedHttpHookUrls` and `security.allowPrivateNetworkHooks` still require a restart. Hooks registered at runtime by skills or the SDK are not affected. Project hooks load only in a trusted folder. When hooks are turned off by `disableAllHooks`, `--safe-mode` or `--bare`, none load and the browser says so at the top.
|
|
36
40
|
|
|
37
41
|
## Hook Types
|
|
38
42
|
|
|
@@ -941,6 +945,8 @@ The `context_usage`, `context_limit`, and `input_tokens` fields allow hook scrip
|
|
|
941
945
|
|
|
942
946
|
**Note**: Since StopOutput extends HookOutput, all standard fields are available but the stopReason field is particularly relevant for this event.
|
|
943
947
|
|
|
948
|
+
**Blocking cap**: consecutive blocking decisions are counted per prompt and keep counting across tool round trips, so a hook that blocks on every check ends the turn after `stopHookBlockingCap` blocks (default 8; `QWEN_CODE_STOP_HOOK_BLOCK_CAP` overrides it for one run). The count and `stop_hook_active` share the same record: both restart when the stop is allowed, when you steer or send new input, when a turn is retried, when a goal turn starts, and when the turn ends abnormally. In non-interactive text mode, Stop hook messages and cap warnings are written to stderr; JSON output is unchanged.
|
|
949
|
+
|
|
944
950
|
**Example Output**:
|
|
945
951
|
|
|
946
952
|
```json
|
|
@@ -1466,7 +1472,7 @@ It fires when the session starts, when context files are reloaded during the ses
|
|
|
1466
1472
|
|
|
1467
1473
|
## Hook Configuration
|
|
1468
1474
|
|
|
1469
|
-
Hooks are configured in Qwen Code settings, typically in `.qwen/settings.json` or user configuration files:
|
|
1475
|
+
Hooks are configured in Qwen Code settings, typically in `.qwen/settings.json` or user configuration files. Hooks in the system settings files (System and SystemDefaults) load with the source System and, like user hooks, regardless of folder trust. Within one event, sequential hooks from settings and extensions run in this order: Project, User, System, Extension.
|
|
1470
1476
|
|
|
1471
1477
|
```json
|
|
1472
1478
|
{
|
|
@@ -1501,14 +1507,6 @@ Hooks are configured in Qwen Code settings, typically in `.qwen/settings.json` o
|
|
|
1501
1507
|
}
|
|
1502
1508
|
```
|
|
1503
1509
|
|
|
1504
|
-
### Browsing your hooks
|
|
1505
|
-
|
|
1506
|
-
Run `/hooks` to browse the configured hooks. Opening the interactive menu reloads hook definitions from the user and workspace settings files used by this session, including when the session runs in a worktree. Added, changed or removed hook definitions then take effect without a restart. If either file cannot be read or parsed, both previous settings snapshots and the running hooks are retained, the files are left untouched, and an error is shown.
|
|
1507
|
-
|
|
1508
|
-
Reloading requires this explicit menu-open action: saving a file, pulling changes or switching branches does not automatically arm new hook commands. The non-interactive `/hooks list` only displays the registry currently loaded by that process; it does not reload settings. In an interactive terminal, `/hooks list` opens the same menu as `/hooks`.
|
|
1509
|
-
|
|
1510
|
-
This reload covers hook definitions, not hook controls or HTTP security settings. Changes to `hooks.disableAllHooks`, `hooks.stopHookBlockingCap`, `security.allowedHttpHookUrls` and `security.allowPrivateNetworkHooks` still require a restart. Project hooks load only in a trusted folder, and bare or safe mode loads no hooks. Hooks registered at runtime by skills or the SDK are not affected.
|
|
1511
|
-
|
|
1512
1510
|
## Hook Execution
|
|
1513
1511
|
|
|
1514
1512
|
### Parallel vs Sequential Execution
|