@qwen-code/qwen-code 0.19.11 → 0.19.12-preview.0
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/batch/SKILL.md +6 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +11 -0
- package/bundled/qc-helper/docs/configuration/settings.md +11 -10
- package/bundled/qc-helper/docs/features/channels/overview.md +66 -11
- package/bundled/qc-helper/docs/features/sub-agents.md +8 -8
- package/bundled/qc-helper/docs/features/worktree.md +2 -2
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
- package/bundled/qc-helper/docs/qwen-serve.md +102 -40
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
- package/bundled/review/SKILL.md +60 -49
- package/bundled/simplify/SKILL.md +1 -1
- package/chunks/{MaxSizedBox-L6TGYDM3.js → MaxSizedBox-3KIWAU6Z.js} +31 -32
- package/chunks/{StandaloneSessionPicker-AKEQHU5P.js → StandaloneSessionPicker-TF626NO7.js} +45 -46
- package/chunks/acp-startup-profiler-N3RHHXJ3.js +25 -0
- package/chunks/{acpAgent-PTNBGJDN.js → acpAgent-JDVJXVBO.js} +1863 -507
- package/chunks/{agent-AJOMOZPJ.js → agent-BONWC4VY.js} +26 -27
- package/chunks/{agent-headless-CYKOMAXS.js → agent-headless-H7HKMGLZ.js} +26 -27
- package/chunks/{anthropicContentGenerator-HBRXJSP4.js → anthropicContentGenerator-ZZRGFEES.js} +35 -12
- package/chunks/{artifact-tool-MIZLXBLF.js → artifact-tool-PHO5XEGZ.js} +5 -5
- package/chunks/{askUserQuestion-XMJVPNWM.js → askUserQuestion-CEPBT47X.js} +2 -47
- package/chunks/{bridge-QKISWPCI.js → bridge-ATN2TLWJ.js} +31 -32
- package/chunks/{ca-CODEN7TD.js → ca-2SL2BXTK.js} +3 -2
- package/chunks/{channel-worker-group-SOUWTFHC.js → channel-worker-group-S3H5QHTI.js} +4 -4
- package/chunks/{channel-worker-manager-LOVSV3WW.js → channel-worker-manager-ZJ4HTMO2.js} +4 -4
- package/chunks/{channel-worker-supervisor-XW6MHJBQ.js → channel-worker-supervisor-JA6VZ5V5.js} +3 -3
- package/chunks/{chunk-ZIXOTAPZ.js → chunk-2DZ7E27L.js} +92 -3
- package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
- package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
- package/chunks/{chunk-4AGTGMCQ.js → chunk-3PE7OY2G.js} +12 -12
- package/chunks/{chunk-QOTQH4CB.js → chunk-4AGBO6RB.js} +27 -10
- package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
- package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
- package/chunks/{chunk-574PTLMU.js → chunk-4OVECYBM.js} +407 -92
- package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
- package/chunks/{chunk-TL4R5TRK.js → chunk-4W55BHOC.js} +2 -2
- package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
- package/chunks/{chunk-3DWIFU7L.js → chunk-53UMEONK.js} +1 -1
- package/chunks/{chunk-AU3MFJPL.js → chunk-54KPEDM2.js} +8 -8
- package/chunks/{chunk-T76DGHGG.js → chunk-66F4IJ4L.js} +5 -5
- package/chunks/{chunk-YLSSEUAM.js → chunk-675SVDMD.js} +354 -278
- package/chunks/{chunk-NVTQZXR7.js → chunk-6QGZVKOO.js} +91 -52
- package/chunks/{chunk-NJOFRXTM.js → chunk-6TDA4EVC.js} +4200 -3450
- package/chunks/{chunk-BYH2JRK3.js → chunk-6WZZHJSZ.js} +5 -5
- package/chunks/{chunk-7X7TEQNX.js → chunk-76BFY7AF.js} +13 -0
- package/chunks/chunk-7KS72E2N.js +883 -0
- package/chunks/{chunk-CF5VJRGC.js → chunk-7LMAKIWE.js} +1 -1
- package/chunks/{chunk-WMNXXRGL.js → chunk-7O7WZH7N.js} +31 -31
- package/chunks/{chunk-7ZYHLN67.js → chunk-7OZGMFHC.js} +26 -75
- package/chunks/{chunk-6WPJRYLZ.js → chunk-7SX6WZNO.js} +3 -3
- package/chunks/{chunk-JGUT3LWZ.js → chunk-ANRANWVE.js} +4 -1
- package/chunks/{chunk-JD44PNGJ.js → chunk-AWOU24F6.js} +10 -5
- package/chunks/{chunk-6WGZDD67.js → chunk-BEFQGC6H.js} +2 -2
- package/chunks/{chunk-KXYJPRT5.js → chunk-BEZPRKD3.js} +28 -6
- package/chunks/{chunk-FYQ22K62.js → chunk-CHVH4DVN.js} +6 -5
- package/chunks/{chunk-LS56TX3M.js → chunk-CMHJEUVB.js} +1 -1
- package/chunks/{chunk-FXKOAEXP.js → chunk-CXWUXRD5.js} +14 -14
- package/chunks/{chunk-CAHY5ABC.js → chunk-DULSE2SH.js} +1 -1
- package/chunks/{chunk-SQ5BK3GO.js → chunk-DYUPBU7H.js} +1 -1
- package/chunks/{chunk-FNX3LGAK.js → chunk-E655RDRL.js} +1 -1
- package/chunks/{chunk-N5VIZTND.js → chunk-EWPLL4OT.js} +1 -1
- package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
- package/chunks/{chunk-S63Z5V42.js → chunk-F2YCCUXI.js} +4 -4
- package/chunks/{chunk-3AYLDB6B.js → chunk-FEZXQXW2.js} +1 -1
- package/chunks/{chunk-OWT2CAEQ.js → chunk-GEHSF7MS.js} +105 -12
- package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
- package/chunks/{chunk-7NMU22Q3.js → chunk-HQ7MDVBO.js} +18 -7
- package/chunks/{chunk-KSZKSE23.js → chunk-HVWPSGDY.js} +1 -1
- package/chunks/{chunk-YFVO2HOR.js → chunk-HZXU6YZW.js} +5 -5
- package/chunks/{chunk-HASK4LMI.js → chunk-IKLWU6YS.js} +13 -6
- package/chunks/{chunk-GNBBAQ6J.js → chunk-ILQ42UG6.js} +111 -40
- package/chunks/{chunk-THXDQSTA.js → chunk-IQRQVPGN.js} +49 -154
- package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
- package/chunks/{chunk-SUARMD4Q.js → chunk-J6NT5YTN.js} +28 -2
- package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
- package/chunks/{chunk-BYB3GF2T.js → chunk-JCYMQU5F.js} +133 -6
- package/chunks/{chunk-6EDDYPI3.js → chunk-JUNVFQVY.js} +4 -4
- package/chunks/{chunk-CH2XVB47.js → chunk-K7P34F2J.js} +3 -3
- package/chunks/{chunk-5VWYKIMW.js → chunk-KANTXY7B.js} +2 -2
- package/chunks/{chunk-K7VD4XLT.js → chunk-LHEQDKAR.js} +1 -1
- package/chunks/{chunk-A2HWMJVO.js → chunk-LKR7QQ63.js} +3 -3
- package/chunks/{chunk-4HUDDSO5.js → chunk-LLIGYAQU.js} +4 -4
- package/chunks/{chunk-5Z452MMD.js → chunk-LODZMRXC.js} +154 -83
- package/chunks/{chunk-FBU7WRZI.js → chunk-LPHGXXZX.js} +6 -1
- package/chunks/{chunk-CPFIQVZJ.js → chunk-LYFDJTXE.js} +1 -1
- package/chunks/{chunk-TIOE2OPE.js → chunk-MCYZTKBV.js} +2 -2
- package/chunks/{chunk-ZQIYGQCG.js → chunk-MHEZV3OY.js} +506 -143
- package/chunks/{chunk-JWICTOXS.js → chunk-NGTQA57Y.js} +2 -2
- package/chunks/{chunk-5CNYZ7TN.js → chunk-NJQPQ4IO.js} +7 -7
- package/chunks/chunk-NSZJQACR.js +45 -0
- package/chunks/{chunk-DOPUYNXO.js → chunk-NUHSLBJZ.js} +7 -7
- package/chunks/{chunk-CITWNIXJ.js → chunk-NVUGS23Y.js} +5 -5
- package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
- package/chunks/{chunk-YUZI3WAC.js → chunk-OWAK7LMW.js} +7 -0
- package/chunks/{chunk-Y3KFTWVX.js → chunk-OZWJAFFE.js} +6 -6
- package/chunks/{chunk-YGYSMY2R.js → chunk-PSISZNIT.js} +1629 -1142
- package/chunks/{chunk-4ROQY23C.js → chunk-PTXVHS2O.js} +7 -7
- package/chunks/{chunk-OKAIGAYW.js → chunk-QGONRHUS.js} +3 -3
- package/chunks/{chunk-PZL23GTM.js → chunk-QR6U5QPP.js} +8 -0
- package/chunks/chunk-QSG4ZFG4.js +257 -0
- package/chunks/{chunk-BXBDC476.js → chunk-R32BTEZY.js} +5 -5
- package/chunks/{chunk-AVEOWVOM.js → chunk-R3VWUU2E.js} +1 -1
- package/chunks/{chunk-RP5R7MB6.js → chunk-R4RIMOJL.js} +12 -12
- package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
- package/chunks/{chunk-3M75MSVA.js → chunk-SMASS3CY.js} +1 -1
- package/chunks/{chunk-4IJMTYCB.js → chunk-SNONG66P.js} +818 -29
- package/chunks/chunk-TDKQP3M6.js +201 -0
- package/chunks/{chunk-VFX7EZIR.js → chunk-TFV3XVAZ.js} +8 -1
- package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
- package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
- package/chunks/{chunk-F333XEAU.js → chunk-UOA2IHRI.js} +4 -3
- package/chunks/{chunk-VRR65QYW.js → chunk-V4PCIS25.js} +5 -1
- package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
- package/chunks/{chunk-GLNHPRZT.js → chunk-W4DFAUAO.js} +1 -1
- package/chunks/{chunk-STZQCNN3.js → chunk-W7H223ZZ.js} +1 -1
- package/chunks/{chunk-6Y6ORE2G.js → chunk-WACI4VES.js} +288 -20
- package/chunks/{chunk-WTNZ6DXB.js → chunk-WEPXQKGP.js} +1 -1
- package/chunks/{chunk-4BJVSIS3.js → chunk-WHQNBBWW.js} +2 -2
- package/chunks/{chunk-QDJ2R4CM.js → chunk-WTHRMVKB.js} +3 -3
- package/chunks/{chunk-L4Y55KIS.js → chunk-X6YQWCIJ.js} +1 -1
- package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
- package/chunks/{chunk-BUAXJVNP.js → chunk-XACBIZJB.js} +3 -3
- package/chunks/{chunk-2OG646IN.js → chunk-XFJU7SVP.js} +4 -4
- package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
- package/chunks/{chunk-V2DXTLUE.js → chunk-Y5UDBQYF.js} +3 -3
- package/chunks/{chunk-MQOVXZAF.js → chunk-YN2I5I42.js} +529 -61
- package/chunks/{chunk-FMNYGWOD.js → chunk-Z4ZCVYJ5.js} +14 -8
- package/chunks/{chunk-SY7NEYX4.js → chunk-ZFHHBRRA.js} +2 -2
- package/chunks/{chunk-QYG4BY6Q.js → chunk-ZPVGEMVC.js} +1 -1
- package/chunks/{computer-use-VZZMJEQ7.js → computer-use-UY4A72X7.js} +26 -27
- package/chunks/{config-utils-IQQT3GCI.js → config-utils-KWTRFP7D.js} +3 -3
- package/chunks/{contextCommand-PORKIZSY.js → contextCommand-3DZ2SVH6.js} +30 -31
- package/chunks/{create-sub-session-EAB2U5XW.js → create-sub-session-DIJOV6HV.js} +2 -2
- package/chunks/{create-sub-session-XVFKHAFW.js → create-sub-session-OT7WXLDO.js} +27 -28
- package/chunks/{cron-create-GMVKSXZT.js → cron-create-X462ERYA.js} +4 -4
- package/chunks/{cron-delete-VDZKUAVK.js → cron-delete-SL5UJUM3.js} +4 -4
- package/chunks/{cron-list-UG7C7RAR.js → cron-list-3MD6SVXI.js} +4 -4
- package/chunks/{daemon-IHR6WSPB.js → daemon-ZW6LHOXT.js} +91 -14
- package/chunks/{daemon-status-provider-ABLBA3UJ.js → daemon-status-provider-GTZOYSBO.js} +35 -36
- package/chunks/{de-NOXPCSYN.js → de-I7ZIYXZC.js} +3 -2
- package/chunks/{dist-PX2ERZ6I.js → dist-HCUUS6IH.js} +2 -2
- package/chunks/{dist-VYWUKURL.js → dist-O2IP3G5D.js} +1 -1
- package/chunks/{dist-GXJVCOS7.js → dist-RZBJT5O2.js} +2 -1
- package/chunks/{dist-V2YVLYOW.js → dist-Y54RURGT.js} +3 -1
- package/chunks/{dist-DOPL5LSQ.js → dist-YTPTCUAD.js} +1 -1
- package/chunks/{dist-4WCQEZIN.js → dist-ZJHKKWUD.js} +1 -1
- package/chunks/{earlyInputCapture-DJCU5SPU.js → earlyInputCapture-GGWVGBZ7.js} +27 -28
- package/chunks/{edit-O4VV5AO6.js → edit-JN467GIR.js} +27 -28
- package/chunks/{en-JFVULHTB.js → en-XE34GKAA.js} +7 -3
- package/chunks/{enter-worktree-XQYDDI2I.js → enter-worktree-MMO4VBQE.js} +26 -27
- package/chunks/{enterPlanMode-CESVMQBV.js → enterPlanMode-BRZOG4DB.js} +27 -30
- package/chunks/{environment-5KXOLZNR.js → environment-LOCDCWMZ.js} +29 -30
- package/chunks/{errors-EBUTCBAQ.js → errors-XXSL5HGG.js} +29 -30
- package/chunks/{exit-worktree-MWGNSPNX.js → exit-worktree-UD7PI5H5.js} +26 -27
- package/chunks/exitPlanMode-EIUETQI6.js +389 -0
- package/chunks/{fast-path-6V73F2T2.js → fast-path-ULGAEUVK.js} +2 -2
- package/chunks/{fr-HVFNU42H.js → fr-X7KDVZIY.js} +3 -2
- package/chunks/{gemini-TEFJZCIZ.js → gemini-KW3APZ4P.js} +133 -80
- package/chunks/{geminiContentGenerator-M56BEXWI.js → geminiContentGenerator-4BQ5QHPR.js} +5 -5
- package/chunks/{glob-DMYFEEAZ.js → glob-FPKAMR6B.js} +32 -28
- package/chunks/{grep-GYE47MD4.js → grep-MOGRCYB4.js} +32 -28
- package/chunks/{handleAutoUpdate-OLUY4L7L.js → handleAutoUpdate-QUMRZZOS.js} +33 -34
- package/chunks/{i18n-462JC7IY.js → i18n-F3W6YUYP.js} +28 -29
- package/chunks/{initializer-Y7WD4D2I.js → initializer-KLU2KAIZ.js} +33 -34
- package/chunks/{installationInfo-I2Z3BKCE.js → installationInfo-P3ZP2SIZ.js} +27 -28
- package/chunks/{ja-PY5AF544.js → ja-2ICT3KXF.js} +3 -2
- package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
- package/chunks/{list-XQ5MSAXP.js → list-4X6D5JD2.js} +35 -36
- package/chunks/{loadedSettingsAdapter-TQOWYE7C.js → loadedSettingsAdapter-446B6WKA.js} +32 -33
- package/chunks/{loop-wakeup-QXWZSCYM.js → loop-wakeup-6H7OENTB.js} +5 -5
- package/chunks/{ls-2OUTG3IZ.js → ls-APTSOOS5.js} +4 -4
- package/chunks/{lsp-4VMNXZW6.js → lsp-HPACPJAN.js} +2 -2
- package/chunks/{mcp-22LLEEVM.js → mcp-JYVOJZOD.js} +32 -33
- package/chunks/{monitor-VKG324X3.js → monitor-KY7YH7TL.js} +26 -27
- package/chunks/nonInteractiveCli-EK35TLVJ.js +129 -0
- package/chunks/{notebook-edit-FJJRBQ3S.js → notebook-edit-IHGW42QK.js} +27 -28
- package/chunks/{openaiContentGenerator-4T2OGTR5.js → openaiContentGenerator-FURUCKQJ.js} +13 -14
- package/chunks/{pidfile-XL3MDCBM.js → pidfile-WKUVXDMR.js} +27 -28
- package/chunks/{processUtils-7UCFN34D.js → processUtils-LHSRN76X.js} +2 -2
- package/chunks/{pt-A3PRQXMU.js → pt-JJ4XPIBP.js} +3 -2
- package/chunks/{qwenContentGenerator-PQUXJDIZ.js → qwenContentGenerator-NRLM7R36.js} +30 -31
- package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-5FNX3AWH.js} +22 -5
- package/chunks/{read-file-3EYQML7E.js → read-file-VLEAEXFP.js} +9 -10
- package/chunks/{read-mcp-resource-JUFHCKSC.js → read-mcp-resource-C6NT52T6.js} +2 -2
- package/chunks/{record-artifact-DWSMBXYY.js → record-artifact-ENCU7QCL.js} +2 -2
- package/chunks/{ripGrep-S6WPGQNA.js → ripGrep-MT23EIDD.js} +26 -27
- package/chunks/{ru-IBCWUTOC.js → ru-STR4KTW7.js} +3 -2
- package/chunks/{run-qwen-serve-NSKBT3HU.js → run-qwen-serve-5HWOQFLI.js} +63 -47
- package/chunks/{runtime-LG5ZZ3VH.js → runtime-6IVKJSLW.js} +38 -37
- package/chunks/{scheduler-PLX3VVTB.js → scheduler-63GJG75U.js} +26 -27
- package/chunks/{send-message-JZ752NWD.js → send-message-5GZ4FX2V.js} +3 -3
- package/chunks/{serve-S2ZLRZZR.js → serve-3LL7RRDP.js} +32 -33
- package/chunks/{server-5ECMV4TM.js → server-AA24QLPA.js} +1672 -615
- package/chunks/{session-ILSONWG4.js → session-LRVCFQQQ.js} +102 -75
- package/chunks/{settings-BOE7WWSA.js → settings-ZX3OKUT4.js} +36 -37
- package/chunks/{shell-VW664JIZ.js → shell-KR3IMYH6.js} +26 -27
- package/chunks/{skill-COHV6625.js → skill-QLM2LSF7.js} +11 -12
- package/chunks/{spawnChannel-5UUR5XOZ.js → spawnChannel-6WFOK3SA.js} +28 -29
- package/chunks/{src-XPKFZ3RN.js → src-ADLNIPHD.js} +101 -72
- package/chunks/{standalone-update-IOOJ2NZQ.js → standalone-update-C54OTJWJ.js} +29 -30
- package/chunks/{startInteractiveUI-3NGJGXXS.js → startInteractiveUI-KFAOS6HC.js} +2342 -1796
- package/chunks/{stdioHelpers-UMY72QRP.js → stdioHelpers-HGIYTWAY.js} +3 -1
- package/chunks/{syntheticOutput-LELY6HAI.js → syntheticOutput-ULOVVLY4.js} +3 -3
- package/chunks/{task-create-QY3BIMNM.js → task-create-DUE2PMNI.js} +7 -7
- package/chunks/{task-list-D2U47WBJ.js → task-list-WVPNX7BZ.js} +5 -5
- package/chunks/{task-stop-N6E5IYLH.js → task-stop-CPEQWOT6.js} +2 -2
- package/chunks/{task-update-HJCQILLB.js → task-update-HY2LNFFB.js} +7 -7
- package/chunks/{team-create-UPLVZQFX.js → team-create-Q5B5M7UD.js} +26 -27
- package/chunks/{team-delete-RCWYDRF4.js → team-delete-JJV6IUOA.js} +5 -5
- package/chunks/{team-plan-approval-F5F432RO.js → team-plan-approval-J55PXNY2.js} +26 -27
- package/chunks/{theme-manager-JJE4BJ67.js → theme-manager-QWTDRPHV.js} +27 -28
- package/chunks/todoWrite-JHHIDOIV.js +358 -0
- package/chunks/{tool-search-LRXI4JLZ.js → tool-search-LSSKWZKH.js} +10 -11
- package/chunks/{total-session-admission-I4DHN6UP.js → total-session-admission-S6ATY5HY.js} +32 -33
- package/chunks/{trustedFolders-SEH7LNX2.js → trustedFolders-CY4TUPDJ.js} +28 -29
- package/chunks/turndown.cjs-FZHGMUTY.js +17670 -0
- package/chunks/{update-relaunch-T6ZKBUA6.js → update-relaunch-IOKOUV3K.js} +6 -6
- package/chunks/{updateCheck-FWLXZPRO.js → updateCheck-YNRFE4V7.js} +30 -31
- package/chunks/{validateNonInterActiveAuth-X6K2VWYT.js → validateNonInterActiveAuth-OXTECS4B.js} +68 -68
- package/chunks/{version-LIFSOGSE.js → version-2CZQQDL5.js} +1 -1
- package/chunks/web-fetch-7QTEGJI5.js +938 -0
- package/chunks/{workflow-NX2DFWGD.js → workflow-G3CZU256.js} +29 -30
- package/chunks/{workspace-providers-status-VYD6M2NE.js → workspace-providers-status-UHQOIPAZ.js} +35 -36
- package/chunks/{workspace-registration-store-2Y6PWOEL.js → workspace-registration-store-5WPCMX4F.js} +1 -1
- package/chunks/{workspace-registry-PKBDBWCA.js → workspace-registry-LAQCRQTH.js} +32 -33
- package/chunks/{workspace-service-HHORUHTS.js → workspace-service-6ZEUJY2Z.js} +38 -39
- package/chunks/{workspace-skills-status-O5Q26LIY.js → workspace-skills-status-YG6OITSM.js} +33 -34
- package/chunks/{write-file-NVAEZ3J2.js → write-file-E7T3PU3B.js} +60 -28
- package/chunks/{zh-PAUNIMHQ.js → zh-6ANG2HTL.js} +7 -3
- package/chunks/{zh-TW-GNEUIUFF.js → zh-TW-4RR3YHNN.js} +7 -3
- package/cli-entry.js +37 -2
- package/cli.js +17 -11
- package/locales/ca.js +3 -2
- package/locales/de.js +3 -2
- package/locales/en.js +10 -5
- package/locales/fr.js +3 -2
- package/locales/ja.js +3 -2
- package/locales/pt.js +3 -2
- package/locales/ru.js +3 -2
- package/locales/zh-TW.js +9 -3
- package/locales/zh.js +9 -3
- package/package.json +3 -3
- package/web-shell/assets/{arc-H74fE8UR.js → arc-_dVIKMdB.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DN3kEq-I.js → architectureDiagram-3BPJPVTR-MuN3nKpL.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BrqbsFUF.js → blockDiagram-GPEHLZMM-BtmvJjzx.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-ClFhU1P-.js → c4Diagram-AAUBKEIU-Dvi58_BU.js} +1 -1
- package/web-shell/assets/channel-Bi5TehaT.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-jCIcG0_M.js → chunk-2J33WTMH-YqxOVhS1.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DSkGe62-.js → chunk-4BX2VUAB-DoBgbC9z.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-BxBHOGTd.js → chunk-55IACEB6-3NEQrBAr.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-v_DS7dH7.js → chunk-727SXJPM-DrCZQxp0.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-1RzEKRPq.js → chunk-AQP2D5EJ-m_g3zjgv.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DyrSbLOX.js → chunk-FMBD7UC4-D1_crABJ.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BCmdsZiy.js → chunk-ND2GUHAM-BdhgVtBx.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CphHGW2D.js → chunk-QZHKN3VN-BlmThhm-.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-D5kRC7Fi.js → cose-bilkent-S5V4N54A-Cbjm_00Z.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DIiyJJ0U.js → dagre-BM42HDAG-C39QNVgC.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BOcuB8xU.js → diagram-2AECGRRQ-DNXSAixC.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CMgiZ4d3.js → diagram-5GNKFQAL-BCbGUPEA.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Ctx8pfN0.js → diagram-KO2AKTUF-1eujKSDC.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BT5REAWC.js → diagram-LMA3HP47-DUMKXgql.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CJkUqXcp.js → diagram-OG6HWLK6-BFktU3_u.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DyvNNX6v.js → erDiagram-TEJ5UH35-BvJC7DLk.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-VBf8_My8.js → flowDiagram-I6XJVG4X-Cgu3PlOt.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CviJnR7B.js → ganttDiagram-6RSMTGT7-DLNXN5Xh.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BY66_Oze.js → gitGraphDiagram-PVQCEYII-BQFRDv6R.js} +1 -1
- package/web-shell/assets/index-C_ouplMQ.js +1187 -0
- package/web-shell/assets/{index-DhYuvi3j.js → index-CdC3pjP3.js} +1 -1
- package/web-shell/assets/index-XGDFJE-X.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-D2jaewWZ.js → infoDiagram-5YYISTIA-DT2mOSvp.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BpnNTyi5.js → ishikawaDiagram-YF4QCWOH-9fy_K4bd.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CA55GNZF.js → journeyDiagram-JHISSGLW-CoGSEuhE.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DyiSl_Ts.js → kanban-definition-UN3LZRKU-BP9hHYIj.js} +1 -1
- package/web-shell/assets/{linear-B-sN3dkV.js → linear-uIroDsmp.js} +1 -1
- package/web-shell/assets/{mermaid.core-xf9SXDdb.js → mermaid.core-BUwoStsA.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DXhr2kRk.js → mindmap-definition-RKZ34NQL-DZB-FWim.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-DUXpbfGQ.js → pieDiagram-4H26LBE5-YPptloKl.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-NeDQYeWw.js → quadrantDiagram-W4KKPZXB-dgk3DSzm.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BSbFRL1A.js → requirementDiagram-4Y6WPE33-BH2En2i9.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-gg27cAaN.js → sankeyDiagram-5OEKKPKP-BB98feeI.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bi_1TSs4.js → sequenceDiagram-3UESZ5HK-CunAIGh8.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CboCCRaf.js → stateDiagram-AJRCARHV-DTJs_-I2.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DrGpF_jn.js → timeline-definition-PNZ67QCA-Cd4AN7O0.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DCaJU67x.js → vennDiagram-CIIHVFJN-xIG-rUU9.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-p0QcW1aP.js → wardley-L42UT6IY-D1UyjIcG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DiEVxj1W.js → wardleyDiagram-YWT4CUSO-BVM0Mb99.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-iQB8nSlA.js → xychartDiagram-2RQKCTM6-BX31JDSz.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-2HRYPZT5.js +0 -25
- package/chunks/chunk-QAW7PIHT.js +0 -168
- package/chunks/chunk-RTV5TUYB.js +0 -143
- package/chunks/chunk-ZPAHLFZU.js +0 -172
- package/chunks/exitPlanMode-HYQL4XMB.js +0 -909
- package/chunks/nonInteractiveCli-UMYUT643.js +0 -129
- package/chunks/todoWrite-FKCGATPJ.js +0 -531
- package/chunks/web-fetch-CFCWTCAP.js +0 -5673
- package/web-shell/assets/channel-NFC5ADAa.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DHgwjz3X.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DHgwjz3X.js +0 -1
- package/web-shell/assets/index-8xIBbHV3.js +0 -1143
- package/web-shell/assets/index-DLyhlZZO.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CXRqms6P.js +0 -1
|
@@ -3,30 +3,39 @@
|
|
|
3
3
|
import {
|
|
4
4
|
formatHistoryGapNotice,
|
|
5
5
|
indexGapsByChild
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7LMAKIWE.js";
|
|
7
7
|
import {
|
|
8
8
|
sanitizeTerminalText
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-J6NT5YTN.js";
|
|
10
|
+
import {
|
|
11
|
+
isGoalStatusKind,
|
|
12
|
+
isTerminalGoalStatusKind
|
|
13
|
+
} from "./chunk-76BFY7AF.js";
|
|
10
14
|
import {
|
|
11
15
|
require_undici
|
|
12
16
|
} from "./chunk-L573Z2QZ.js";
|
|
13
17
|
import {
|
|
14
|
-
writeStderrLine
|
|
15
|
-
|
|
18
|
+
writeStderrLine,
|
|
19
|
+
writeStderrLineSafe
|
|
20
|
+
} from "./chunk-OWAK7LMW.js";
|
|
16
21
|
import {
|
|
17
|
-
getActiveGoal
|
|
18
|
-
|
|
22
|
+
getActiveGoal,
|
|
23
|
+
registerGoalHook,
|
|
24
|
+
setGoalTerminalObserver,
|
|
25
|
+
setLastGoalTerminal,
|
|
26
|
+
unregisterGoalHook
|
|
27
|
+
} from "./chunk-6TDA4EVC.js";
|
|
19
28
|
import {
|
|
20
29
|
apiActivityTracker,
|
|
21
30
|
formatVisionBridgeNoticeDisplay,
|
|
22
31
|
isVisionBridgeNoticeDisplay
|
|
23
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-YN2I5I42.js";
|
|
24
33
|
import {
|
|
25
34
|
ToolNames
|
|
26
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-ANRANWVE.js";
|
|
27
36
|
import {
|
|
28
37
|
createDebugLogger
|
|
29
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-UE5TZ55T.js";
|
|
30
39
|
import {
|
|
31
40
|
init_esbuild_shims
|
|
32
41
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -35,6 +44,195 @@ import {
|
|
|
35
44
|
__toESM
|
|
36
45
|
} from "./chunk-J2S4EL5Y.js";
|
|
37
46
|
|
|
47
|
+
// packages/cli/src/ui/utils/restoreGoal.ts
|
|
48
|
+
init_esbuild_shims();
|
|
49
|
+
function findGoalToRestore(history) {
|
|
50
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
51
|
+
const item = history[i];
|
|
52
|
+
if (item?.type !== "goal_status" /* GOAL_STATUS */) continue;
|
|
53
|
+
const goal = item;
|
|
54
|
+
if (goal.kind !== "set" && goal.kind !== "checking") return null;
|
|
55
|
+
const setAt = goal.setAt ?? findSetAtOfRun(history, i);
|
|
56
|
+
return {
|
|
57
|
+
condition: goal.condition,
|
|
58
|
+
iterations: goal.iterations ?? 0,
|
|
59
|
+
...setAt !== void 0 ? { setAt } : {}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
__name(findGoalToRestore, "findGoalToRestore");
|
|
65
|
+
function findSetAtOfRun(history, startIndex) {
|
|
66
|
+
const start = history[startIndex];
|
|
67
|
+
const condition = start?.condition;
|
|
68
|
+
for (let i = startIndex - 1; i >= 0; i--) {
|
|
69
|
+
const item = history[i];
|
|
70
|
+
if (item?.type !== "goal_status" /* GOAL_STATUS */) continue;
|
|
71
|
+
const goal = item;
|
|
72
|
+
if (goal.kind !== "set" && goal.kind !== "checking") return void 0;
|
|
73
|
+
if (goal.condition !== condition) return void 0;
|
|
74
|
+
if (goal.setAt !== void 0) return goal.setAt;
|
|
75
|
+
}
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
__name(findSetAtOfRun, "findSetAtOfRun");
|
|
79
|
+
function findLastTerminalGoal(history) {
|
|
80
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
81
|
+
const item = history[i];
|
|
82
|
+
if (item?.type !== "goal_status" /* GOAL_STATUS */) continue;
|
|
83
|
+
const goal = item;
|
|
84
|
+
if (!isTerminalGoalStatusKind(goal.kind)) continue;
|
|
85
|
+
return {
|
|
86
|
+
kind: goal.kind,
|
|
87
|
+
condition: goal.condition,
|
|
88
|
+
iterations: goal.iterations ?? 0,
|
|
89
|
+
durationMs: goal.durationMs ?? 0,
|
|
90
|
+
lastReason: goal.lastReason
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
__name(findLastTerminalGoal, "findLastTerminalGoal");
|
|
96
|
+
function finiteNumber(value) {
|
|
97
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
98
|
+
}
|
|
99
|
+
__name(finiteNumber, "finiteNumber");
|
|
100
|
+
function isTranscriptItemRecord(item) {
|
|
101
|
+
return typeof item === "object" && item !== null && !Array.isArray(item);
|
|
102
|
+
}
|
|
103
|
+
__name(isTranscriptItemRecord, "isTranscriptItemRecord");
|
|
104
|
+
function parseGoalStatusItem(item) {
|
|
105
|
+
if (!isTranscriptItemRecord(item)) return null;
|
|
106
|
+
if (item["type"] !== "goal_status" /* GOAL_STATUS */) return null;
|
|
107
|
+
const kind = item["kind"];
|
|
108
|
+
const condition = item["condition"];
|
|
109
|
+
if (!isGoalStatusKind(kind) || typeof condition !== "string") return null;
|
|
110
|
+
const iterations = finiteNumber(item["iterations"]);
|
|
111
|
+
const setAt = finiteNumber(item["setAt"]);
|
|
112
|
+
const durationMs = finiteNumber(item["durationMs"]);
|
|
113
|
+
const lastReason = typeof item["lastReason"] === "string" ? item["lastReason"] : void 0;
|
|
114
|
+
return {
|
|
115
|
+
type: "goal_status" /* GOAL_STATUS */,
|
|
116
|
+
kind,
|
|
117
|
+
condition,
|
|
118
|
+
...iterations !== void 0 ? { iterations } : {},
|
|
119
|
+
...setAt !== void 0 ? { setAt } : {},
|
|
120
|
+
...durationMs !== void 0 ? { durationMs } : {},
|
|
121
|
+
...lastReason !== void 0 ? { lastReason } : {}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
__name(parseGoalStatusItem, "parseGoalStatusItem");
|
|
125
|
+
function collectGoalStatusItemsFromRecords(records) {
|
|
126
|
+
const items = [];
|
|
127
|
+
for (const record of records) {
|
|
128
|
+
if (record.type !== "system" || record.subtype !== "slash_command") {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const payload = record.systemPayload;
|
|
132
|
+
if (payload?.phase !== "result") continue;
|
|
133
|
+
const raws = payload.outputHistoryItems;
|
|
134
|
+
if (!Array.isArray(raws)) continue;
|
|
135
|
+
for (const raw of raws) {
|
|
136
|
+
const item = parseGoalStatusItem(raw);
|
|
137
|
+
if (item) items.push(item);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return items;
|
|
141
|
+
}
|
|
142
|
+
__name(collectGoalStatusItemsFromRecords, "collectGoalStatusItemsFromRecords");
|
|
143
|
+
function goalTerminalEventToHistoryItem(event) {
|
|
144
|
+
return {
|
|
145
|
+
type: "goal_status" /* GOAL_STATUS */,
|
|
146
|
+
kind: event.kind,
|
|
147
|
+
condition: event.condition,
|
|
148
|
+
iterations: event.iterations,
|
|
149
|
+
durationMs: event.durationMs,
|
|
150
|
+
lastReason: event.lastReason ?? event.systemMessage
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
__name(goalTerminalEventToHistoryItem, "goalTerminalEventToHistoryItem");
|
|
154
|
+
function recordGoalStatusItem(config, item, rawCommand = "/goal") {
|
|
155
|
+
try {
|
|
156
|
+
const recording = config.getChatRecordingService?.();
|
|
157
|
+
if (!recording) {
|
|
158
|
+
writeStderrLineSafe(
|
|
159
|
+
`qwen: no chat recording service; goal_status (kind=${item.kind}) will not survive a resume.`
|
|
160
|
+
);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
recording.recordSlashCommand({
|
|
164
|
+
phase: "result",
|
|
165
|
+
rawCommand,
|
|
166
|
+
outputHistoryItems: [{ ...item }]
|
|
167
|
+
});
|
|
168
|
+
} catch (error) {
|
|
169
|
+
writeStderrLineSafe(
|
|
170
|
+
`qwen: failed to record goal_status (kind=${item.kind}): ${error}`
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
__name(recordGoalStatusItem, "recordGoalStatusItem");
|
|
175
|
+
function installGoalTerminalObserver(args) {
|
|
176
|
+
const { sessionId, config, addItem } = args;
|
|
177
|
+
setGoalTerminalObserver(sessionId, (event) => {
|
|
178
|
+
const item = goalTerminalEventToHistoryItem(event);
|
|
179
|
+
addItem(item, Date.now());
|
|
180
|
+
recordGoalStatusItem(config, item);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
__name(installGoalTerminalObserver, "installGoalTerminalObserver");
|
|
184
|
+
function goalRestoreBlockedBy(config) {
|
|
185
|
+
if (!config.isTrustedFolder()) return "untrusted-folder";
|
|
186
|
+
if (config.getDisableAllHooks()) return "hooks-disabled";
|
|
187
|
+
if (!config.getHookSystem()) return "no-hook-system";
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
__name(goalRestoreBlockedBy, "goalRestoreBlockedBy");
|
|
191
|
+
function goalConditionBlockedBy(condition) {
|
|
192
|
+
if (condition.length === 0) return "condition-invalid";
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
__name(goalConditionBlockedBy, "goalConditionBlockedBy");
|
|
196
|
+
function restoreGoalFromHistory(history, config, addItem) {
|
|
197
|
+
const sessionId = config.getSessionId();
|
|
198
|
+
const lastTerminal = findLastTerminalGoal(history);
|
|
199
|
+
setLastGoalTerminal(sessionId, lastTerminal ?? void 0);
|
|
200
|
+
const restorable = findGoalToRestore(history);
|
|
201
|
+
if (restorable === null) {
|
|
202
|
+
unregisterGoalHook(config, sessionId);
|
|
203
|
+
return { restored: false };
|
|
204
|
+
}
|
|
205
|
+
const blockedBy = goalRestoreBlockedBy(config);
|
|
206
|
+
if (blockedBy) {
|
|
207
|
+
unregisterGoalHook(config, sessionId);
|
|
208
|
+
return { restored: false, blockedBy };
|
|
209
|
+
}
|
|
210
|
+
if (goalConditionBlockedBy(restorable.condition)) {
|
|
211
|
+
writeStderrLineSafe(
|
|
212
|
+
`qwen: refusing to restore a goal for session ${sessionId}: the condition is empty.`
|
|
213
|
+
);
|
|
214
|
+
unregisterGoalHook(config, sessionId);
|
|
215
|
+
return { restored: false, blockedBy: "condition-invalid" };
|
|
216
|
+
}
|
|
217
|
+
registerGoalHook({
|
|
218
|
+
config,
|
|
219
|
+
sessionId,
|
|
220
|
+
condition: restorable.condition,
|
|
221
|
+
tokensAtStart: 0,
|
|
222
|
+
// Resume the iteration count so MAX_GOAL_ITERATIONS is a cross-resume cap,
|
|
223
|
+
// not a per-resume one.
|
|
224
|
+
initialIterations: restorable.iterations,
|
|
225
|
+
// Likewise the start time: without it every reload restarts the clock, and
|
|
226
|
+
// `GET /goals` reports a long-running goal as freshly started.
|
|
227
|
+
...restorable.setAt !== void 0 ? { initialSetAt: restorable.setAt } : {}
|
|
228
|
+
});
|
|
229
|
+
if (addItem) {
|
|
230
|
+
installGoalTerminalObserver({ sessionId, config, addItem });
|
|
231
|
+
}
|
|
232
|
+
return { restored: true, condition: restorable.condition };
|
|
233
|
+
}
|
|
234
|
+
__name(restoreGoalFromHistory, "restoreGoalFromHistory");
|
|
235
|
+
|
|
38
236
|
// packages/cli/src/services/setup-github.ts
|
|
39
237
|
init_esbuild_shims();
|
|
40
238
|
var import_undici2 = __toESM(require_undici(), 1);
|
|
@@ -1212,6 +1410,11 @@ function extractFunctionResponseId(record) {
|
|
|
1212
1410
|
__name(extractFunctionResponseId, "extractFunctionResponseId");
|
|
1213
1411
|
|
|
1214
1412
|
// packages/cli/src/acp-integration/session/history-replayer.ts
|
|
1413
|
+
var GOAL_NOT_RESTORED_REASON = {
|
|
1414
|
+
"untrusted-folder": "Goal not restored: this folder is not trusted, so its Stop hook cannot run.",
|
|
1415
|
+
"hooks-disabled": "Goal not restored: hooks are disabled for this session.",
|
|
1416
|
+
"no-hook-system": "Goal not restored: the hook system is unavailable."
|
|
1417
|
+
};
|
|
1215
1418
|
var MISSING_TOOL_RESULT_MESSAGE = "Tool result missing from saved history; the previous run likely ended before this tool completed.";
|
|
1216
1419
|
var HistoryReplayer = class {
|
|
1217
1420
|
static {
|
|
@@ -1220,9 +1423,11 @@ var HistoryReplayer = class {
|
|
|
1220
1423
|
ctx;
|
|
1221
1424
|
messageEmitter;
|
|
1222
1425
|
toolCallEmitter;
|
|
1426
|
+
options;
|
|
1223
1427
|
pendingReplayToolCalls = /* @__PURE__ */ new Map();
|
|
1224
|
-
constructor(ctx) {
|
|
1428
|
+
constructor(ctx, options = {}) {
|
|
1225
1429
|
this.ctx = ctx;
|
|
1430
|
+
this.options = options;
|
|
1226
1431
|
this.messageEmitter = new MessageEmitter(ctx);
|
|
1227
1432
|
this.toolCallEmitter = new ToolCallEmitter(ctx);
|
|
1228
1433
|
}
|
|
@@ -1237,6 +1442,7 @@ var HistoryReplayer = class {
|
|
|
1237
1442
|
async replay(records, gaps) {
|
|
1238
1443
|
try {
|
|
1239
1444
|
await this.replayPage(records, { finalizeDangling: true, gaps });
|
|
1445
|
+
await this.supersedeUnrestorableGoal(records);
|
|
1240
1446
|
} finally {
|
|
1241
1447
|
this.pendingReplayToolCalls.clear();
|
|
1242
1448
|
this.setActiveRecordId(null);
|
|
@@ -1509,14 +1715,33 @@ var HistoryReplayer = class {
|
|
|
1509
1715
|
* Replays a slash_command system record by re-emitting its output as an
|
|
1510
1716
|
* agent message chunk. This allows Zed to reconstruct the correct turn
|
|
1511
1717
|
* structure (user → agent) on session resume without polluting model context.
|
|
1718
|
+
*
|
|
1719
|
+
* Goal cards are re-emitted as `_meta.goalStatus` rather than text: they carry
|
|
1720
|
+
* no `text` field, so the plain-text path below would silently drop them and
|
|
1721
|
+
* the client would lose the goal card (and its status pill) on every reload.
|
|
1722
|
+
* Per-iteration `checking` cards are skipped — a TUI transcript persists one
|
|
1723
|
+
* per stop-hook turn, and clients suppress them as noise. Skipping costs no
|
|
1724
|
+
* fidelity: goal restore reads the records directly, not this replay.
|
|
1512
1725
|
*/
|
|
1513
1726
|
async replaySlashCommandResult(record) {
|
|
1514
1727
|
const payload = record.systemPayload;
|
|
1515
|
-
if (payload?.phase !== "result"
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
for (const item of
|
|
1519
|
-
const
|
|
1728
|
+
if (payload?.phase !== "result") return;
|
|
1729
|
+
const items = payload.outputHistoryItems;
|
|
1730
|
+
if (!Array.isArray(items) || items.length === 0) return;
|
|
1731
|
+
for (const item of items) {
|
|
1732
|
+
const goalStatus = parseGoalStatusItem(item);
|
|
1733
|
+
if (goalStatus) {
|
|
1734
|
+
if (goalConditionBlockedBy(goalStatus.condition)) {
|
|
1735
|
+
writeStderrLineSafe(
|
|
1736
|
+
"qwen: skipping replay of a goal card whose condition is empty."
|
|
1737
|
+
);
|
|
1738
|
+
} else if (goalStatus.kind !== "checking") {
|
|
1739
|
+
const { type: _type, ...status } = goalStatus;
|
|
1740
|
+
await this.messageEmitter.emitGoalStatus(status);
|
|
1741
|
+
}
|
|
1742
|
+
continue;
|
|
1743
|
+
}
|
|
1744
|
+
const text = isTranscriptItemRecord(item) && typeof item["text"] === "string" ? item["text"] : "";
|
|
1520
1745
|
if (text) {
|
|
1521
1746
|
await this.messageEmitter.emitSlashCommandOutput(
|
|
1522
1747
|
text.replace(/\n/g, " \n"),
|
|
@@ -1525,6 +1750,42 @@ var HistoryReplayer = class {
|
|
|
1525
1750
|
}
|
|
1526
1751
|
}
|
|
1527
1752
|
}
|
|
1753
|
+
/**
|
|
1754
|
+
* Emits a trailing `cleared` card when the transcript ends on an active goal
|
|
1755
|
+
* that `restoreGoalFromHistory` is about to refuse.
|
|
1756
|
+
*
|
|
1757
|
+
* A client reads "there is an active goal" off the newest goal card it has
|
|
1758
|
+
* seen, so replaying a `set` card that no Stop hook will drive leaves the UI
|
|
1759
|
+
* claiming a goal is running when the loop is dead. The gates are pure
|
|
1760
|
+
* functions of `config`, so the answer is known here, before restore runs.
|
|
1761
|
+
*
|
|
1762
|
+
* This card is emitted, not recorded: the transcript keeps its `set` card, so
|
|
1763
|
+
* a later resume in a trusted folder (or with hooks re-enabled) restores the
|
|
1764
|
+
* goal instead of finding it destroyed. Emitting from inside replay is also
|
|
1765
|
+
* what puts the card *after* the `set` card — `loadSession` batches replay
|
|
1766
|
+
* updates into its response, and a notification sent afterwards would reach
|
|
1767
|
+
* the client first.
|
|
1768
|
+
*
|
|
1769
|
+
* Gated on `supersedeUnrestorableGoal`: only a resume registers a hook, and
|
|
1770
|
+
* only a resume has a `config` that answers trust and hook-policy questions.
|
|
1771
|
+
*/
|
|
1772
|
+
async supersedeUnrestorableGoal(records) {
|
|
1773
|
+
if (!this.options.supersedeUnrestorableGoal) return;
|
|
1774
|
+
const active = findGoalToRestore(
|
|
1775
|
+
collectGoalStatusItemsFromRecords(records)
|
|
1776
|
+
);
|
|
1777
|
+
if (!active || goalConditionBlockedBy(active.condition)) return;
|
|
1778
|
+
if (!hasFullSessionContext(this.ctx)) return;
|
|
1779
|
+
const blockedBy = goalRestoreBlockedBy(this.ctx.config);
|
|
1780
|
+
if (!blockedBy) return;
|
|
1781
|
+
await this.messageEmitter.emitGoalStatus({
|
|
1782
|
+
kind: "cleared",
|
|
1783
|
+
condition: active.condition,
|
|
1784
|
+
iterations: active.iterations,
|
|
1785
|
+
...active.setAt !== void 0 ? { setAt: active.setAt } : {},
|
|
1786
|
+
lastReason: GOAL_NOT_RESTORED_REASON[blockedBy]
|
|
1787
|
+
});
|
|
1788
|
+
}
|
|
1528
1789
|
/**
|
|
1529
1790
|
* Extracts tool name from a chat record's function response.
|
|
1530
1791
|
*/
|
|
@@ -1539,10 +1800,7 @@ var HistoryReplayer = class {
|
|
|
1539
1800
|
return "";
|
|
1540
1801
|
}
|
|
1541
1802
|
setActiveRecordId(recordId, timestamp) {
|
|
1542
|
-
|
|
1543
|
-
if (typeof context.setActiveRecordId === "function") {
|
|
1544
|
-
context.setActiveRecordId(recordId, timestamp);
|
|
1545
|
-
}
|
|
1803
|
+
this.ctx.setActiveRecordId?.(recordId, timestamp);
|
|
1546
1804
|
}
|
|
1547
1805
|
};
|
|
1548
1806
|
|
|
@@ -1735,7 +1993,7 @@ async function extractMetadata(conversation, config) {
|
|
|
1735
1993
|
const gitBranch = firstRecord?.gitBranch;
|
|
1736
1994
|
let gitRepo;
|
|
1737
1995
|
if (cwd) {
|
|
1738
|
-
const { getGitRepoName } = await import("./src-
|
|
1996
|
+
const { getGitRepoName } = await import("./src-ADLNIPHD.js");
|
|
1739
1997
|
gitRepo = getGitRepoName(cwd);
|
|
1740
1998
|
}
|
|
1741
1999
|
let model;
|
|
@@ -2579,6 +2837,11 @@ export {
|
|
|
2579
2837
|
MessageEmitter,
|
|
2580
2838
|
PlanEmitter,
|
|
2581
2839
|
ToolCallEmitter,
|
|
2840
|
+
collectGoalStatusItemsFromRecords,
|
|
2841
|
+
goalTerminalEventToHistoryItem,
|
|
2842
|
+
recordGoalStatusItem,
|
|
2843
|
+
installGoalTerminalObserver,
|
|
2844
|
+
restoreGoalFromHistory,
|
|
2582
2845
|
HistoryReplayer,
|
|
2583
2846
|
collectSessionData,
|
|
2584
2847
|
normalizeSessionData,
|
|
@@ -2590,6 +2853,11 @@ export {
|
|
|
2590
2853
|
toJsonl,
|
|
2591
2854
|
generateExportFilename
|
|
2592
2855
|
};
|
|
2856
|
+
/**
|
|
2857
|
+
* @license
|
|
2858
|
+
* Copyright 2026 Qwen Team
|
|
2859
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
2860
|
+
*/
|
|
2593
2861
|
/**
|
|
2594
2862
|
* @license
|
|
2595
2863
|
* Copyright 2025 Google LLC
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-FEOZBUMT.js";
|
|
6
6
|
import {
|
|
7
7
|
TextTokenizer
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-V4PCIS25.js";
|
|
9
9
|
import {
|
|
10
10
|
createDebugLogger
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UE5TZ55T.js";
|
|
12
12
|
import {
|
|
13
13
|
init_esbuild_shims
|
|
14
14
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IQRQVPGN.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6TDA4EVC.js";
|
|
9
9
|
import {
|
|
10
10
|
formatVisionBridgeNoticeDisplay,
|
|
11
11
|
isVisionBridgeNoticeDisplay
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YN2I5I42.js";
|
|
13
13
|
import {
|
|
14
14
|
init_esbuild_shims
|
|
15
15
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -169,7 +169,7 @@ var WorkspaceMismatchError = class extends Error {
|
|
|
169
169
|
constructor(bound, requested) {
|
|
170
170
|
const safeRequested = requested.length > MAX_WORKSPACE_PATH_LENGTH ? `${requested.slice(0, MAX_WORKSPACE_PATH_LENGTH)}\u2026[truncated]` : requested;
|
|
171
171
|
super(
|
|
172
|
-
`Workspace mismatch:
|
|
172
|
+
`Workspace mismatch: runtime is bound to "${bound}" but request asked for "${safeRequested}". Select a registered runtime for "${safeRequested}" or register it before retrying; this bridge will not fall back to the primary workspace.`
|
|
173
173
|
);
|
|
174
174
|
this.name = "WorkspaceMismatchError";
|
|
175
175
|
this.bound = bound;
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
isTranscribableVoiceModel,
|
|
6
6
|
readVoiceLanguage,
|
|
7
7
|
resolveVoiceTransport
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SMASS3CY.js";
|
|
9
9
|
import {
|
|
10
10
|
resolvePath
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-F2RR4HO2.js";
|
|
12
12
|
import {
|
|
13
13
|
createDebugLogger,
|
|
14
14
|
isSubpath
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UE5TZ55T.js";
|
|
16
16
|
import {
|
|
17
17
|
init_esbuild_shims
|
|
18
18
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -10,18 +10,18 @@ import {
|
|
|
10
10
|
} from "./chunk-MR3PXB6E.js";
|
|
11
11
|
import {
|
|
12
12
|
writeStderrLine
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OWAK7LMW.js";
|
|
14
14
|
import {
|
|
15
15
|
ideContextStore
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6TDA4EVC.js";
|
|
17
17
|
import {
|
|
18
18
|
atomicWriteFileSync
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-VAJS2E2D.js";
|
|
20
20
|
import {
|
|
21
21
|
FatalConfigError,
|
|
22
22
|
Storage,
|
|
23
23
|
getErrorMessage
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-UE5TZ55T.js";
|
|
25
25
|
import {
|
|
26
26
|
init_esbuild_shims
|
|
27
27
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getTasksDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4RPARQ5D.js";
|
|
6
6
|
import {
|
|
7
7
|
require_proper_lockfile
|
|
8
8
|
} from "./chunk-E2UVIFI2.js";
|
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
} from "./chunk-VGC4I5JJ.js";
|
|
12
12
|
import {
|
|
13
13
|
atomicWriteJSON
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VAJS2E2D.js";
|
|
15
15
|
import {
|
|
16
16
|
createDebugLogger,
|
|
17
17
|
isNodeError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-UE5TZ55T.js";
|
|
19
19
|
import {
|
|
20
20
|
init_esbuild_shims
|
|
21
21
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
} from "./chunk-L573Z2QZ.js";
|
|
9
9
|
import {
|
|
10
10
|
t
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3PE7OY2G.js";
|
|
12
12
|
import {
|
|
13
13
|
So
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6TDA4EVC.js";
|
|
15
15
|
import {
|
|
16
16
|
createDebugLogger
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-UE5TZ55T.js";
|
|
18
18
|
import {
|
|
19
19
|
init_esbuild_shims
|
|
20
20
|
} from "./chunk-5O2XNYP6.js";
|