@qwen-code/qwen-code 0.23.2 → 0.23.3-nightly.20260911.aaa6a32aae
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/README.md +35 -15
- package/bundled/computer-use/SKILL.md +1 -1
- package/bundled/goal-draft/SKILL.md +10 -10
- package/bundled/qc-helper/docs/configuration/model-providers.md +66 -28
- package/bundled/qc-helper/docs/configuration/settings.md +8 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +0 -20
- package/bundled/qc-helper/docs/features/channels/dws.md +7 -1
- package/bundled/qc-helper/docs/features/channels/overview.md +5 -6
- package/bundled/qc-helper/docs/features/commands.md +62 -9
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/features/cross-session-protocol.md +338 -0
- package/bundled/qc-helper/docs/features/goals.md +22 -18
- package/bundled/qc-helper/docs/features/hooks.md +28 -22
- package/bundled/qc-helper/docs/features/sub-agents.md +27 -0
- package/bundled/qc-helper/docs/qwen-serve.md +23 -6
- package/bundled/review/SKILL.md +93 -80
- package/bundled/review/references/persistence.md +2 -0
- package/bundled/review/references/posting.md +31 -14
- package/bundled/workflow-authoring/SKILL.md +410 -0
- package/bundled/workflow-creator/SKILL.md +1 -1
- package/chunks/{MaxSizedBox-4C3BKKKY.js → MaxSizedBox-7C5XTBZI.js} +64 -53
- package/chunks/{StandaloneSessionPicker-TXVF65YW.js → StandaloneSessionPicker-IGTT3ZRX.js} +88 -76
- package/chunks/{acp-startup-profiler-KEU6VAYR.js → acp-startup-profiler-RUQNTNU5.js} +2 -2
- package/chunks/acp-subagent-executor-IUHVNVVO.js +140 -0
- package/chunks/{acpAgent-H5XBKGB4.js → acpAgent-W43WM2K4.js} +957 -243
- package/chunks/{agent-T5LEFJIU.js → agent-2XMXC5JW.js} +48 -38
- package/chunks/{agent-headless-VZKSRH36.js → agent-headless-2HHBVCP6.js} +48 -38
- package/chunks/{anthropicContentGenerator-PRJWWVYJ.js → anthropicContentGenerator-7RI3MPIW.js} +69 -36
- package/chunks/{artifact-tool-G5LHNECG.js → artifact-tool-HHVHCPNG.js} +59 -109
- package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-RFMXTD3B.js} +2 -2
- package/chunks/{bridge-AOX5IY44.js → bridge-ID6N4IH5.js} +69 -58
- package/chunks/{ca-KC2AISNS.js → ca-MX3WCEEG.js} +1 -1
- package/chunks/{channel-management-service-MWQGHPAS.js → channel-management-service-ASCXI7FR.js} +6 -6
- package/chunks/{channel-settings-store-XZCGDGHW.js → channel-settings-store-TPJFQAZY.js} +76 -65
- package/chunks/{channel-worker-group-SQ5FRWOH.js → channel-worker-group-JR6JOELM.js} +9 -9
- package/chunks/{channel-worker-manager-TU4ZNWOE.js → channel-worker-manager-AVKJEZFL.js} +19 -10
- package/chunks/{channel-worker-supervisor-EMITFMCP.js → channel-worker-supervisor-OOYY7BAQ.js} +7 -7
- package/chunks/{chunk-4WMGYG3F.js → chunk-22FWWGSM.js} +2 -2
- package/chunks/{chunk-LWX4WDFF.js → chunk-2S5RIGZJ.js} +43 -15
- package/chunks/{chunk-CLKE4IY3.js → chunk-2SZH22YO.js} +1 -1
- package/chunks/{chunk-HJ5UJQQL.js → chunk-2UKKQGRA.js} +3639 -1804
- package/chunks/{chunk-MWIO7MF6.js → chunk-2WSLXP3W.js} +4 -0
- package/chunks/{chunk-HNLMYDQE.js → chunk-33LYAC4R.js} +10 -6
- package/chunks/{chunk-VBLAI2HA.js → chunk-3FPYT6QC.js} +0 -31
- package/chunks/{chunk-F53KKZUD.js → chunk-3LMDSCLU.js} +158 -10
- package/chunks/{chunk-WXFCI3O5.js → chunk-3MAUPOZ4.js} +2 -2
- package/chunks/{chunk-CRZBDVP2.js → chunk-432JQKIO.js} +10 -10
- package/chunks/{chunk-IRGDIDGJ.js → chunk-43RQ552L.js} +364 -84
- package/chunks/{chunk-PFKGV6PO.js → chunk-465USTVK.js} +9 -15
- package/chunks/{chunk-WG7BL3FY.js → chunk-473RJLIH.js} +1 -1
- package/chunks/{chunk-J3VZF2AL.js → chunk-4O2AXZXU.js} +2 -2
- package/chunks/{chunk-N6S3NUYJ.js → chunk-55VOWZ4C.js} +1 -1
- package/chunks/{chunk-OWCFKIFQ.js → chunk-5CZMWDJI.js} +2 -2
- package/chunks/{chunk-7NDZKE2M.js → chunk-5MUIHID6.js} +5 -5
- package/chunks/{chunk-RM244SCQ.js → chunk-5Z74GE4N.js} +1 -1
- package/chunks/{chunk-G5VOXCRX.js → chunk-6375QMAO.js} +2 -2
- package/chunks/{chunk-3LPJ776W.js → chunk-63GQZKXL.js} +164 -31
- package/chunks/{chunk-O2FEO2CB.js → chunk-6GDELAVL.js} +18 -2
- package/chunks/{chunk-7PD7ZMX5.js → chunk-6HI2I3OM.js} +168 -6
- package/chunks/{chunk-CALNF3Z3.js → chunk-7C57HCOR.js} +1 -1
- package/chunks/{chunk-UYDQYDW2.js → chunk-7IBS746B.js} +1 -1
- package/chunks/{chunk-AUTUFD5X.js → chunk-ABNX6E6K.js} +1 -1
- package/chunks/chunk-ACHCT36C.js +28 -0
- package/chunks/{chunk-2WC3Y7YY.js → chunk-AEY27Z35.js} +401 -23
- package/chunks/{chunk-AO2VMS72.js → chunk-AQFRRH73.js} +3 -3
- package/chunks/{chunk-PDN7FJZV.js → chunk-ASWEMQIZ.js} +4 -4
- package/chunks/chunk-AYEJOTIU.js +43 -0
- package/chunks/{chunk-QFJZAY7W.js → chunk-BKFRA4F5.js} +5 -5
- package/chunks/{chunk-KCF2436G.js → chunk-BNLW5N6U.js} +4 -4
- package/chunks/{chunk-GOKAOSCN.js → chunk-BRFOZEPA.js} +2 -2
- package/chunks/{process-registry-OAEG6WGC.js → chunk-BYUAT5OC.js} +1 -0
- package/chunks/chunk-C5CECJ46.js +340 -0
- package/chunks/{chunk-NOO4QFXM.js → chunk-C75BXMPM.js} +1 -3
- package/chunks/chunk-CAAMI77K.js +937 -0
- package/chunks/{chunk-QTB4VP4K.js → chunk-CBGHRAWM.js} +304 -23
- package/chunks/chunk-CF5KXZZX.js +150 -0
- package/chunks/chunk-CFMZLE3L.js +75 -0
- package/chunks/{chunk-TGNNLRC3.js → chunk-CJ3DHN5I.js} +1 -0
- package/chunks/{chunk-ERXNTINK.js → chunk-CQZJYGRX.js} +1 -1
- package/chunks/{chunk-WBU2PIZ5.js → chunk-CSDKDHWV.js} +23 -16
- package/chunks/{chunk-2EKVPSIJ.js → chunk-D754KKNZ.js} +9 -2
- package/chunks/{chunk-E6TI726I.js → chunk-DGC7BKEZ.js} +1 -1
- package/chunks/{chunk-7SVM3RP2.js → chunk-DMMOQWRF.js} +4 -6
- package/chunks/{chunk-J3TJH52D.js → chunk-DOTF2PF2.js} +1 -1
- package/chunks/{chunk-2BMXHB6N.js → chunk-DWBNQR53.js} +7 -7
- package/chunks/{chunk-ZN5TKAVR.js → chunk-E5LTUWKZ.js} +3 -3
- package/chunks/chunk-EGW3ZP6Y.js +32 -0
- package/chunks/chunk-ELRMZTPF.js +374 -0
- package/chunks/{chunk-RNAJVXUG.js → chunk-ENAUXRPG.js} +6 -6
- package/chunks/{chunk-WXD7INFV.js → chunk-EO4U2X47.js} +10 -8
- package/chunks/{chunk-WDVV3LRM.js → chunk-EPVEPTI3.js} +45 -152
- package/chunks/chunk-ERU3SDXT.js +27 -0
- package/chunks/{chunk-4HOEU2OR.js → chunk-EWJTAP3Y.js} +1 -19
- package/chunks/{chunk-GSFV5RQW.js → chunk-EYN3G5XD.js} +328 -4
- package/chunks/{chunk-QB3KS3N3.js → chunk-FGROOEKM.js} +5 -40
- package/chunks/{chunk-TOOOLHVS.js → chunk-FH5AVEWJ.js} +3 -3
- package/chunks/{chunk-DAI65CMX.js → chunk-FJZWRNEW.js} +1 -1
- package/chunks/{chunk-GNY7B3CA.js → chunk-FUQK5ZNL.js} +1 -1
- package/chunks/{chunk-GOEVQADN.js → chunk-GDIPPCW6.js} +330 -175
- package/chunks/{chunk-ALMR3E6Q.js → chunk-GDWE23OR.js} +3 -3
- package/chunks/{chunk-LNYV4GXX.js → chunk-GSKX53AN.js} +0 -139
- package/chunks/{chunk-ELD3OBPU.js → chunk-GWOVD63C.js} +3 -3
- package/chunks/{chunk-IWABUX6T.js → chunk-GX5FF2IE.js} +6 -6
- package/chunks/{chunk-22GORRNY.js → chunk-GZMNHAYC.js} +1 -1
- package/chunks/{chunk-YZTGGCEE.js → chunk-H3TFIFX3.js} +1 -1
- package/chunks/{chunk-6G4V7SE4.js → chunk-HG46TTAG.js} +1 -1
- package/chunks/{chunk-FETY36NQ.js → chunk-HGEUHUEV.js} +1 -1
- package/chunks/{chunk-KEPC5BOL.js → chunk-IBRQG2MP.js} +12 -15
- package/chunks/{chunk-OXR34GCD.js → chunk-IILWL3KY.js} +2054 -146
- package/chunks/{chunk-IW6RQPQB.js → chunk-IJOS26LH.js} +1 -3
- package/chunks/{chunk-ORFIYTI2.js → chunk-IK2MWJP5.js} +1 -1
- package/chunks/{chunk-CMWU6P4D.js → chunk-IRJRB3OD.js} +1 -1
- package/chunks/{chunk-QHLHE2OT.js → chunk-IUN5ZMFY.js} +1 -1
- package/chunks/{chunk-LYT2OU7D.js → chunk-IXXV6BVB.js} +172 -6
- package/chunks/{chunk-R3JIDRUL.js → chunk-J6H4JP25.js} +4 -4
- package/chunks/{chunk-NB3NDQQK.js → chunk-J6SBP5G2.js} +1 -1
- package/chunks/{chunk-TRQNRP2H.js → chunk-J7LBAKDH.js} +46 -3
- package/chunks/{chunk-67XTVRVB.js → chunk-JJFHISXU.js} +30 -25
- package/chunks/chunk-JL6APGBX.js +43 -0
- package/chunks/{chunk-NX7ZTXFF.js → chunk-JSKEW4E7.js} +2 -1
- package/chunks/{chunk-BK7D2JR6.js → chunk-JVTXAA35.js} +3 -3
- package/chunks/chunk-K2OJUPOE.js +78 -0
- package/chunks/{chunk-G3ZUMSFS.js → chunk-K3U6VB3O.js} +6 -6
- package/chunks/{chunk-4I3WFI3U.js → chunk-K4KWLF7Q.js} +12 -12
- package/chunks/{chunk-WXPPUPHM.js → chunk-KWFFJ6AK.js} +1 -1
- package/chunks/{chunk-46MMBZHI.js → chunk-KZYOFJ6V.js} +4 -4
- package/chunks/{chunk-ULZECEIP.js → chunk-LDQHA6L4.js} +2 -20
- package/chunks/{chunk-7LTCFO6T.js → chunk-LQBAFO5D.js} +6 -5
- package/chunks/{chunk-SOA4HKRJ.js → chunk-LT2XFADM.js} +2 -2
- package/chunks/{chunk-JYGIJA4W.js → chunk-LWWRJRCD.js} +1 -1
- package/chunks/{chunk-YQGW3M6Z.js → chunk-MFQWRBFB.js} +5 -5
- package/chunks/{chunk-TODNHE76.js → chunk-MUFGTWQH.js} +5 -5
- package/chunks/{chunk-5DQ4YTIZ.js → chunk-MV5XRRML.js} +3 -3
- package/chunks/{chunk-IR6JKBAP.js → chunk-NOUK63IR.js} +2 -2
- package/chunks/{chunk-XQ4RDO5B.js → chunk-NV77SEX3.js} +1 -1
- package/chunks/{chunk-OFVAS4AR.js → chunk-NWDPOFJI.js} +2 -2
- package/chunks/chunk-NY6OPAPS.js +820 -0
- package/chunks/{chunk-WDN64MVT.js → chunk-O5VX66FB.js} +127 -18
- package/chunks/{chunk-MV5DTLJV.js → chunk-OHCR4O3U.js} +1 -1
- package/chunks/{chunk-LEAOJ43M.js → chunk-OKOPKQ2X.js} +1310 -2107
- package/chunks/{chunk-B25JYXZE.js → chunk-ONLJBOI2.js} +971 -17
- package/chunks/{chunk-QQK4L3UU.js → chunk-OWUAZXXN.js} +132 -26
- package/chunks/{chunk-R457KFV7.js → chunk-P42IUOAO.js} +3 -3
- package/chunks/{chunk-LUNC5KCL.js → chunk-PRELUGCQ.js} +214 -39
- package/chunks/{chunk-5OZUKLL7.js → chunk-QSMQKTXV.js} +4 -4
- package/chunks/{chunk-FAJPLSYF.js → chunk-QTQYLQ5A.js} +85 -81
- package/chunks/{chunk-CALTQWTZ.js → chunk-QVZDV4ZS.js} +2 -2
- package/chunks/{chunk-J6MB5ZHZ.js → chunk-QZW6WRB7.js} +2 -1
- package/chunks/{chunk-KFECPHLV.js → chunk-RBWAGV73.js} +3 -3
- package/chunks/{chunk-4VY3ITHR.js → chunk-RF5RQRTD.js} +3 -3
- package/chunks/{chunk-HIXUUCGY.js → chunk-RPMXMR6U.js} +2 -2
- package/chunks/{chunk-3OAXF3UK.js → chunk-RRQEZBL2.js} +3756 -1343
- package/chunks/{chunk-4ALNJDHL.js → chunk-RSGEAWFJ.js} +19 -1
- package/chunks/{chunk-5BH2AIEY.js → chunk-RUE62UH6.js} +2 -2
- package/chunks/{chunk-PQEISIKS.js → chunk-SAH4BD2J.js} +0 -67
- package/chunks/{chunk-A7EFXK7P.js → chunk-SAOJHRWY.js} +2 -2
- package/chunks/{chunk-JO77FGNZ.js → chunk-SDUIETBG.js} +19 -7
- package/chunks/{chunk-6RZX2HIH.js → chunk-TBEXLLAO.js} +2 -2
- package/chunks/{chunk-PSPAM24S.js → chunk-TBSCTWKF.js} +6 -0
- package/chunks/{chunk-HRPFBHW7.js → chunk-TPKQIA7G.js} +1 -0
- package/chunks/{chunk-XDNFODER.js → chunk-TUIW5LLK.js} +1 -1
- package/chunks/{chunk-APXIW2TF.js → chunk-TVV5FA3G.js} +4 -4
- package/chunks/chunk-U6H3XTFA.js +95 -0
- package/chunks/{chunk-S5QR6CB5.js → chunk-UKMWZ5NS.js} +108 -887
- package/chunks/{chunk-U6REWGVR.js → chunk-VG2BRSEK.js} +2 -2
- package/chunks/chunk-VGBOJH2D.js +127 -0
- package/chunks/chunk-VGY2RGXL.js +100 -0
- package/chunks/{chunk-ZP5XDLSA.js → chunk-VLWG3EHY.js} +12 -12
- package/chunks/{chunk-4JNHNVAZ.js → chunk-W547PYQ7.js} +9 -4
- package/chunks/{chunk-7VEYUF3N.js → chunk-W5ZQMAEM.js} +1 -1
- package/chunks/{chunk-QAZ2MGYT.js → chunk-W7JJLUSB.js} +2 -2
- package/chunks/{chunk-CCBTNJB4.js → chunk-W7Q7XDQI.js} +39 -27
- package/chunks/{chunk-DARWOZY6.js → chunk-WD6YQI5M.js} +1 -1
- package/chunks/{chunk-F2NYVASI.js → chunk-WXAWG3JS.js} +30 -13
- package/chunks/{chunk-NPKCVSXX.js → chunk-XB5JRCAM.js} +11 -9
- package/chunks/{chunk-XSOXPG2L.js → chunk-XE46RQFI.js} +136 -8
- package/chunks/{chunk-QTNCGZHQ.js → chunk-XX5HQLCZ.js} +16 -0
- package/chunks/{chunk-2Z3T52OC.js → chunk-Y5TM7SBV.js} +7 -2
- package/chunks/chunk-YC6XOB5N.js +691 -0
- package/chunks/{chunk-CWVZBIZJ.js → chunk-YDW4ERSS.js} +1 -1
- package/chunks/{chunk-TRWQQBVH.js → chunk-YGCTOXUT.js} +10 -24
- package/chunks/{chunk-WK7P62DV.js → chunk-YKC67ZEF.js} +6 -6
- package/chunks/{chunk-KA5HR3G2.js → chunk-YKM6MITI.js} +5 -5
- package/chunks/{chunk-X7LFJF5D.js → chunk-YM6KUQ2S.js} +36 -84
- package/chunks/{chunk-HZ2HUXX7.js → chunk-YS2ZJSOA.js} +29 -12
- package/chunks/{chunk-G37O7YO6.js → chunk-ZAWM6KRF.js} +3 -3
- package/chunks/{chunk-H3Q3RSKZ.js → chunk-ZFIWHBJ3.js} +1 -1
- package/chunks/{chunk-XBVNNDPK.js → chunk-ZHKTKHMO.js} +8 -1
- package/chunks/{chunk-YLOHCA6I.js → chunk-ZKWO4CF4.js} +2 -2
- package/chunks/{chunk-VJJXG73H.js → chunk-ZMQL5BL5.js} +21 -6
- package/chunks/{chunk-FGHPZGOP.js → chunk-ZMUYBOYB.js} +39 -55
- package/chunks/{chunk-FV4DM2M4.js → chunk-ZNI3YJHS.js} +26 -6
- package/chunks/{chunk-565U2ANU.js → chunk-ZTTC7T4X.js} +1 -1
- package/chunks/{chunk-7OCIQNKX.js → chunk-ZW2EUO2A.js} +1 -1
- package/chunks/codex-subagent-executor-26XOHVKH.js +585 -0
- package/chunks/{config-utils-GPLIABL2.js → config-utils-JUG3MOYN.js} +68 -57
- package/chunks/{contextCommand-NCUQUDBY.js → contextCommand-6K3POZFA.js} +65 -54
- package/chunks/{core-runtime-WKYKWVYU.js → core-runtime-XQFZLA2V.js} +66 -55
- package/chunks/{create-sub-session-TGIX63YU.js → create-sub-session-4UJ6RM6W.js} +5 -2
- package/chunks/{create-sub-session-PPLXB3JJ.js → create-sub-session-T4IYIOC7.js} +178 -91
- package/chunks/{cron-create-GTPVMJCF.js → cron-create-6466RWSO.js} +2 -2
- package/chunks/{cron-delete-ZBK27Z4K.js → cron-delete-W4QUWHOA.js} +2 -2
- package/chunks/{cron-list-KTFKFDKC.js → cron-list-Q5LJ5PZE.js} +2 -2
- package/chunks/{daemon-2CKIAO3I.js → daemon-PHPJUXDZ.js} +4 -2
- package/chunks/{daemon-git-worktree-guard-73ZWOLKL.js → daemon-git-worktree-guard-5WEMZ64U.js} +65 -54
- package/chunks/{daemon-status-provider-OK7VONJG.js → daemon-status-provider-GMD7QD4T.js} +74 -63
- package/chunks/{daemon-trust-policy-CAUCREG2.js → daemon-trust-policy-IPBZES2Z.js} +71 -60
- package/chunks/{daemon-trust-policy-monitor-3Y36OOEQ.js → daemon-trust-policy-monitor-MHYEN7X7.js} +71 -60
- package/chunks/{de-UU2YTO37.js → de-OOLZAU2U.js} +1 -1
- package/chunks/{deferred-core-runtime-Q7WFWYD3.js → deferred-core-runtime-CY43FZNZ.js} +63 -52
- package/chunks/{discovery-XP4RMDUM.js → discovery-5KUEPR65.js} +2 -2
- package/chunks/{display-image-CTNHJRZC.js → display-image-6AZIHP3J.js} +3 -3
- package/chunks/{dist-F34J4FZX.js → dist-2QYIVNS6.js} +2 -5
- package/chunks/{dist-6YDUH3BB.js → dist-GIMQXYLI.js} +10 -631
- package/chunks/{dist-NP7QKLVG.js → dist-GUB7QRYA.js} +3 -6
- package/chunks/{dist-Y5KC3IHW.js → dist-L45UB6DG.js} +233 -35
- package/chunks/{dist-XLV33CLY.js → dist-MPUZZOG5.js} +5 -18
- package/chunks/{dist-ZDNJK74R.js → dist-PA7WPFVE.js} +6 -37
- package/chunks/{dist-F6JLAJLE.js → dist-T6DDPDLQ.js} +16 -36
- package/chunks/{dist-BNQVF565.js → dist-TFGETXFN.js} +14 -37
- package/chunks/{dist-UFTFGI6I.js → dist-VDLSBCLM.js} +2 -6
- package/chunks/{edit-YJD6IETK.js → edit-6NUP5IPX.js} +48 -38
- package/chunks/{en-YJNRUQG4.js → en-ZSZW3PZX.js} +4 -1
- package/chunks/{enter-worktree-YFTKHXHZ.js → enter-worktree-EETDMJRF.js} +5 -5
- package/chunks/{enterPlanMode-EFPVTWIH.js → enterPlanMode-AZHYHEII.js} +48 -38
- package/chunks/{environment-HP3AXFTB.js → environment-ON6GIQ4F.js} +66 -55
- package/chunks/{errors-22ON46G7.js → errors-DQE63SCC.js} +65 -54
- package/chunks/exec-66WQIVYU.js +505 -0
- package/chunks/{exit-worktree-NF2XEMES.js → exit-worktree-DIPJ6S55.js} +5 -5
- package/chunks/{exitPlanMode-MOQUNCBH.js → exitPlanMode-NHBV6LAI.js} +48 -38
- package/chunks/{fast-path-2X7BPMXX.js → fast-path-EPJSUZZC.js} +7 -7
- package/chunks/{fast-path-settings-SATXY3PD.js → fast-path-settings-XDYX7X5Z.js} +2 -2
- package/chunks/{fr-HKNWVXRJ.js → fr-JJWM2HUS.js} +1 -1
- package/chunks/{glob-Y7ACIB3P.js → glob-MNEXQ2NV.js} +51 -41
- package/chunks/{goal-tools-DABMICUC.js → goal-tools-D2A4QBCJ.js} +54 -40
- package/chunks/{grep-BLHF2S5D.js → grep-EFWPV3MM.js} +2 -2
- package/chunks/{handleAutoUpdate-MCAMHYDI.js → handleAutoUpdate-2RY3OQA6.js} +67 -56
- package/chunks/{i18n-C3GDCALP.js → i18n-HTHDB3I7.js} +64 -53
- package/chunks/{image-gen-XP4NNIYG.js → image-gen-2PHED3P4.js} +8 -6
- package/chunks/{initializer-4URDQL2G.js → initializer-JEVLJCQA.js} +71 -60
- package/chunks/{installationInfo-LBOL6SBV.js → installationInfo-ITRB6J4L.js} +63 -52
- package/chunks/{ja-GJS5RZGU.js → ja-L67TXFDJ.js} +1 -1
- package/chunks/list-KOUIMHT5.js +133 -0
- package/chunks/{list-agents-2CXPGJUE.js → list-agents-IY4NEWLP.js} +17 -7
- package/chunks/{llm-2KPNSAVY.js → llm-F7WHGESY.js} +132 -120
- package/chunks/{llm-content-generator-GR3FOHLB.js → llm-content-generator-NYQ2NAVA.js} +6 -5
- package/chunks/{loadedSettingsAdapter-DVKROEJD.js → loadedSettingsAdapter-HZUAX5CX.js} +71 -60
- package/chunks/{loggingContentGenerator-P4K6K5W4.js → loggingContentGenerator-WMNU7C5J.js} +70 -59
- package/chunks/{loop-wakeup-HL6XOWI4.js → loop-wakeup-ANX25YW2.js} +3 -3
- package/chunks/{ls-YV7RKLKY.js → ls-4XCMJNZF.js} +4 -4
- package/chunks/{lsp-NO3AMRZT.js → lsp-K5E2Y64R.js} +1 -1
- package/chunks/{managed-npm-update-VWBKHNIN.js → managed-npm-update-EJJB65QI.js} +63 -52
- package/chunks/mcp-I73R6HS3.js +127 -0
- package/chunks/{monitor-A255TNZR.js → monitor-T56GJNA4.js} +50 -40
- package/chunks/{nonInteractiveCli-LXGIKQAT.js → nonInteractiveCli-CKHHJ423.js} +120 -109
- package/chunks/{notebook-edit-5UYHS2DM.js → notebook-edit-W5TU3EZ3.js} +48 -38
- package/chunks/openai-WX26N5OJ.js +47 -0
- package/chunks/{openaiContentGenerator-A6MAMEO5.js → openaiContentGenerator-TH6YAWAH.js} +33 -25
- package/chunks/openaiResponsesContentGenerator-EWLWQPKS.js +1738 -0
- package/chunks/{pidfile-B7DZC4TP.js → pidfile-RCC6TCEM.js} +63 -52
- package/chunks/process-registry-X6ZCASEN.js +10 -0
- package/chunks/{processUtils-BPZ2MCZS.js → processUtils-DQDQBRMC.js} +2 -2
- package/chunks/{prompt-terminal-ledger-FYYTAOXS.js → prompt-terminal-ledger-2LXWAGWU.js} +64 -53
- package/chunks/{pt-FXMYXEUV.js → pt-77SBDL4B.js} +1 -1
- package/chunks/{qwenContentGenerator-4IOJFD4S.js → qwenContentGenerator-LG65Z2YV.js} +61 -49
- package/chunks/{qwenOAuth2-KX6LVYQ3.js → qwenOAuth2-PJ63CCFD.js} +7 -5
- package/chunks/{read-file-A4H4O3VQ.js → read-file-72HMRUT4.js} +12 -9
- package/chunks/{read-mcp-resource-D3N75DGF.js → read-mcp-resource-NPF44YSC.js} +1 -1
- package/chunks/{record-artifact-Q5CRGJTP.js → record-artifact-MDXCCW2J.js} +3 -3
- package/chunks/record-source-VJLKDGGR.js +22 -0
- package/chunks/{report-findings-TJ34R7QK.js → report-findings-CZTYMZTC.js} +4 -4
- package/chunks/{request-shutdown-LRKMTBAD.js → request-shutdown-KOZHPVZU.js} +5 -5
- package/chunks/{resumeHistoryUtils-YQQ43E4N.js → resumeHistoryUtils-S2Q3M3EH.js} +69 -58
- package/chunks/{ripGrep-W32NWFTA.js → ripGrep-B2I3L5CO.js} +17 -13
- package/chunks/{ru-RMHURE5U.js → ru-UYWHKWF2.js} +1 -1
- package/chunks/{run-qwen-serve-WBSWWIRV.js → run-qwen-serve-AOPYFCVP.js} +305 -132
- package/chunks/{runtime-VRVBX2E5.js → runtime-TZMHKZAP.js} +77 -66
- package/chunks/{scheduled-tasks-D65KJDA3.js → scheduled-tasks-7RL6ZOYT.js} +72 -60
- package/chunks/{scheduler-M2YPN7Z7.js → scheduler-D6RLOFNU.js} +65 -54
- package/chunks/{sdk-exporters-grpc-MXTVSE3C.js → sdk-exporters-grpc-Y2ZUQDUQ.js} +2 -2
- package/chunks/{sdk-exporters-http-7R2ARBPV.js → sdk-exporters-http-VWTF4W6K.js} +3 -3
- package/chunks/{sdk-impl-YOLO7LV4.js → sdk-impl-G6FVTBQZ.js} +9 -9
- package/chunks/{send-message-76BKWKFZ.js → send-message-MMZVSS7P.js} +12 -9
- package/chunks/{serve-BE3H2P6P.js → serve-HWWDYI37.js} +72 -61
- package/chunks/{server-FLY5JERG.js → server-MD2X5U5L.js} +3156 -564
- package/chunks/{session-JVN62R5K.js → session-AFUMFNN7.js} +124 -113
- package/chunks/{session-attachments-root-7ACGLHXA.js → session-attachments-root-QPN3YWTY.js} +63 -52
- package/chunks/{session-pr-refresh-TQS57SDK.js → session-pr-refresh-4Y2ANMJX.js} +72 -60
- package/chunks/{settings-D44YMZFT.js → settings-QQRQ2LR7.js} +74 -63
- package/chunks/{shell-3VE6I4V5.js → shell-NUYUYMVI.js} +48 -38
- package/chunks/{skill-FHEGRRZU.js → skill-KHLDVOXW.js} +68 -30
- package/chunks/{skill-settings-VHEJMBFL.js → skill-settings-INLEGDEZ.js} +70 -59
- package/chunks/{spawnChannel-T6MX2ZDN.js → spawnChannel-KBGZHW2G.js} +67 -56
- package/chunks/{standalone-update-QUGHFMCS.js → standalone-update-3QP5NDVJ.js} +65 -54
- package/chunks/{start-opentui-ui-IHIIZ2LE.js → start-opentui-ui-VBT3XDWN.js} +2682 -2153
- package/chunks/{startInteractiveUI-LR7K2ARZ.js → startInteractiveUI-AZHKCHMR.js} +1562 -2317
- package/chunks/{syntheticOutput-D2P5V6RG.js → syntheticOutput-KRASPDE3.js} +2 -2
- package/chunks/{task-create-MWXJFRRM.js → task-create-TNXNT7ZD.js} +8 -8
- package/chunks/{task-list-EYO3FE57.js → task-list-FHNIJDKT.js} +1 -1
- package/chunks/{task-stop-BFSKRTGV.js → task-stop-MG4ZMTEI.js} +1 -1
- package/chunks/{task-update-2JJJRHMT.js → task-update-4HU62CJT.js} +8 -8
- package/chunks/{team-create-GY3VFY47.js → team-create-K5DNSJXR.js} +50 -40
- package/chunks/{team-delete-IQZ6XGFI.js → team-delete-2T44GUNN.js} +1 -1
- package/chunks/{team-plan-approval-BQPGZOT5.js → team-plan-approval-2ZNAQT2A.js} +48 -38
- package/chunks/{terminal-image-renderer-YNYW5CQG.js → terminal-image-renderer-23CW4A6Q.js} +65 -54
- package/chunks/{theme-manager-U6CIK3GM.js → theme-manager-G2333AMH.js} +63 -52
- package/chunks/{todoWrite-5ERKFWAK.js → todoWrite-BO2GR5MN.js} +4 -4
- package/chunks/{tool-search-XI3QWD5I.js → tool-search-MKQCKXN5.js} +22 -15
- package/chunks/{total-session-admission-3SNSJJ32.js → total-session-admission-ENKTM2KX.js} +69 -58
- package/chunks/{trustedFolders-OVAQKNV5.js → trustedFolders-2ETDL7OD.js} +64 -53
- package/chunks/{update-relaunch-XV5O74E3.js → update-relaunch-FMVNN5KA.js} +5 -5
- package/chunks/{updateCheck-CHUYWD6L.js → updateCheck-KWRV5KLJ.js} +66 -55
- package/chunks/{useAutoAcceptIndicator-VKSVIXZC.js → useAutoAcceptIndicator-7AUXAIQF.js} +73 -62
- package/chunks/{validateNonInterActiveAuth-ZNUTD3E5.js → validateNonInterActiveAuth-NETKLLDV.js} +117 -106
- package/chunks/{version-EK7VAGSI.js → version-DACNN2ZM.js} +1 -1
- package/chunks/{web-fetch-24KZO763.js → web-fetch-CIVCRET4.js} +16 -12
- package/chunks/{web-search-CRNXKZ2X.js → web-search-GOHZRGMM.js} +389 -327
- package/chunks/{web-shell-static-BFDESDD4.js → web-shell-static-T7UGLVE4.js} +2 -7
- package/chunks/workflow-IL2FOALZ.js +1324 -0
- package/chunks/workspace-providers-status-YGXL6N5U.js +131 -0
- package/chunks/{workspace-registration-store-HKLJEDQX.js → workspace-registration-store-E4IAOFFZ.js} +3 -1
- package/chunks/{workspace-registry-7RDDOBLN.js → workspace-registry-KX6BIBYK.js} +69 -58
- package/chunks/{workspace-runtime-coordinator-LEPDPXJO.js → workspace-runtime-coordinator-2KYYGDDR.js} +72 -59
- package/chunks/{workspace-service-5IFDCNN3.js → workspace-service-5Q6LWBYR.js} +76 -65
- package/chunks/{workspace-skills-status-FJ3HNH4H.js → workspace-skills-status-PJZTFPVV.js} +72 -61
- package/chunks/{workspace-trust-reconciler-PQFHIWLR.js → workspace-trust-reconciler-HS6PWNEA.js} +77 -66
- package/chunks/{write-file-ERG67ZFX.js → write-file-JB3DRM7O.js} +50 -40
- package/chunks/{zh-VBFCRQBL.js → zh-7UJA4ICT.js} +4 -1
- package/chunks/{zh-TW-N2TBF2F2.js → zh-TW-RV24PWUI.js} +4 -1
- package/chunks/{zoom-image-WQYEC3SR.js → zoom-image-AVHQFOOQ.js} +12 -9
- package/cli.js +16 -16
- package/codeModeHost.js +4425 -0
- package/export-transcript-document.css +1 -0
- package/export-transcript-document.js +164 -165
- package/locales/ca.js +2 -2
- package/locales/de.js +2 -2
- package/locales/en.js +5 -2
- package/locales/fr.js +2 -2
- package/locales/ja.js +2 -2
- package/locales/pt.js +2 -2
- package/locales/ru.js +2 -2
- package/locales/zh-TW.js +5 -2
- package/locales/zh.js +5 -2
- package/package.json +6 -4
- package/web-shell/assets/{abnfDiagram-VCTEODGH-BRLgQbnT.js → abnfDiagram-VCTEODGH-BH2nK5Z_.js} +1 -1
- package/web-shell/assets/{arc-qAF9_XsR.js → arc-CUUQ6krv.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-BorUttEz.js → architectureDiagram-5GKGNRK7-CJjiRuGx.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-Bj0qZVxu.js → blockDiagram-NRAW4CY4-GCDyU9ZX.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BTqJis32.js → c4Diagram-UCG6FXSJ-C68MiN6h.js} +1 -1
- package/web-shell/assets/channel-DauVlmdF.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-RrQ5X8m-.js → chunk-2Q5K7J3B-_8B6frXZ.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-uUjDl8wO.js → chunk-5VM5RSS4-CroSinX7.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-C3JhpyzI.js → chunk-F27PBJKO-CGn4Z0Fx.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-C8ZNFs7F.js → chunk-G27WJ6UU-BI5nLQcf.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-DNpXtEOs.js → chunk-JWPE2WC7-CYJH0FuH.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-DagA2ZLw.js → chunk-LCL6LL3I-DjWZUqA1.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-R23uH7Xm.js → chunk-POPQ4Y6H-DcTkIHm8.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-Qz9RN_BR.js → chunk-SVP7TREG-E8sZT5uK.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-jYb1_hni.js → chunk-XXDRQBXY-CurjPKw_.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-BuIh7bj1.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-BuIh7bj1.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-Cv2OunpE.js → cose-bilkent-JH36ORCC-CJEnNhth.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-LH42KFJx.js → cynefin-OW5HDTMX-jwEkm0yw.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Dha4_OoR.js → cynefinDiagram-5FMLGOSQ-B-OVQ6AO.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-Br5lnUKD.js → dagre-3AP2YEHR-CKKK9WNR.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-dpKq2bBX.js → diagram-S7CK7UJ4-D486veFQ.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-BAgHWpXr.js → diagram-UQ7AKVKN-C3GujqHv.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-GRRzpyE2.js → diagram-VSXAHHWV-BrOTDwuU.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-BNFiaYpG.js → diagram-VX7I27RA-C4D9kWE3.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-BisZzB_h.js → diagram-Z3DM3KII-7rAManT0.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-B1xbwycf.js → ebnfDiagram-PWID7BFC-CqVzKOdr.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CQMzbGE5.js → erDiagram-SSCWMZ5O-D2s08fc_.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-CZ_Zondl.js → flowDiagram-A5DVABFB-CrKtBxB2.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BTh2ShxS.js → ganttDiagram-EL5Y4UJY-CD1CKdlt.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-oHOB-Uxt.js → gitGraphDiagram-WWUBYQGX-CHDXdVNn.js} +1 -1
- package/web-shell/assets/index-D8tzgUOC.css +36 -0
- package/web-shell/assets/{index-DWoFMu5x.js → index-DWz95m74.js} +1 -1
- package/web-shell/assets/index-cDFf68Wd.js +2204 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-C0QpudbG.js → infoDiagram-RXCK75RN-Cr1oLCwe.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-a6B741uT.js → ishikawaDiagram-5VMMS53U--RghV1mm.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-Dbht9ICp.js → journeyDiagram-EYS64GPL-MN1ZkGW8.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-D4OFR8-h.js → kanban-definition-3QL26DDD-DL05VTn0.js} +1 -1
- package/web-shell/assets/{layout-Dvdh5jRH.js → layout-D_TvQzvn.js} +1 -1
- package/web-shell/assets/{linear-Dvc6KIW2.js → linear-B_0OH6XF.js} +1 -1
- package/web-shell/assets/{mermaid.core-CB36RfIb.js → mermaid.core-B9Nklh9I.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-Fmqo1CjP.js → mindmap-definition-FBJOCRG2-CevIQ0LR.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-CCxYBoA4.js → pegDiagram-XKGWAZYB-DQ8PIv0d.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BVHKQFzt.js → pieDiagram-E7YTZNPT-BVTV1pPe.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-l95IznwR.js → quadrantDiagram-AXDQQJYC-DHN6nhpe.js} +1 -1
- package/web-shell/assets/qwen-code-notification-BRVagufF.png +0 -0
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-BlLdRdXp.js → railroadDiagram-O6MQD6OU-8HOyX0u-.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BkDLBR5w.js → requirementDiagram-EFPCY7ZU-9W4_14i8.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-jAIqRp65.js → sankeyDiagram-P5KCCOFB-DSUBB2XP.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-f-soZYPr.js → sequenceDiagram-WJ2MYXX4-DD3jH6Jn.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-BzOuAfB2.js → sizeCapture-X5ZJPWSS-RAFTU3Cz.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BPLSs12r.js → stateDiagram-HBIQ2CUA-Drk-oZ2x.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-QzYteVIm.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-D-9E_RIR.js → swimlanes-XN3QIQJK-Cy2nlOGx.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-xTr-HG26.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-CT56K-gV.js → timeline-definition-24CTP7MA-B7outYof.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-B-vi4IyO.js → vennDiagram-4TSXK5OY-Di_u1Ic6.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9O7Ju98.js → wardleyDiagram-VM6X3IG4-DYocuCAM.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-6d8w3jg2.js → xychartDiagram-S5SC5T6Z-AADDse54.js} +1 -1
- package/web-shell/index.html +29 -5
- package/chunks/chunk-V7RNNPGC.js +0 -44
- package/chunks/list-JOGBAC2R.js +0 -122
- package/chunks/mcp-6YYNSYLK.js +0 -116
- package/chunks/workflow-HD5NYMW5.js +0 -2907
- package/chunks/workspace-providers-status-MAM42IZS.js +0 -120
- package/web-shell/assets/channel-COIuCrVH.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DoX6OYqu.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DoX6OYqu.js +0 -1
- package/web-shell/assets/index-CI1ysIEv.js +0 -2154
- package/web-shell/assets/index-CpxXGH-8.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-IRul-LaT.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-D6lgKepA.js +0 -8
- package/chunks/{chunk-JA5CBKRP.js → chunk-7NXSVSFB.js} +0 -0
- package/chunks/{open-with-auth-6MVIHMXB.js → open-with-auth-XFCCJOO6.js} +3 -3
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
channelFactoryForwardsChildEnv,
|
|
22
22
|
defaultSpawnChannelFactory
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YKM6MITI.js";
|
|
24
24
|
import {
|
|
25
25
|
BridgeChannelClosedError,
|
|
26
26
|
BridgeTimeoutError,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
SessionRestoreTimeoutError,
|
|
31
31
|
createIdleWorkspaceExtensionsStatus,
|
|
32
32
|
createIdleWorkspaceHooksStatus
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-HGEUHUEV.js";
|
|
34
34
|
import {
|
|
35
35
|
ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
|
|
36
36
|
ACTIVE_WORK_CLOSE_TIMEOUT_MS,
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
DAEMON_PERMISSION_CANCEL_REASON_META_KEY,
|
|
54
54
|
DAEMON_PROMPT_DISPLAY_TEXT_META_KEY,
|
|
55
55
|
DAEMON_RESTORE_ASK_USER_QUESTION_META_KEY,
|
|
56
|
+
DAEMON_SUBMITTED_PROMPT_META_KEY,
|
|
56
57
|
DAEMON_SUPPRESS_RESTORE_ASK_USER_QUESTION_META_KEY,
|
|
57
58
|
DAEMON_SUPPRESS_WORKTREE_CONTEXT_RESTORE_META_KEY,
|
|
58
59
|
LOAD_REPLAY_BULK_MODE,
|
|
@@ -68,6 +69,8 @@ import {
|
|
|
68
69
|
REQUESTED_SESSION_ID_META_KEY,
|
|
69
70
|
SESSION_INITIALIZATION_DEADLINE_META_KEY,
|
|
70
71
|
SESSION_INITIALIZATION_TIMEOUT_ERROR_KIND,
|
|
72
|
+
SESSION_MODEL_PERSIST_DEFAULT_META_KEY,
|
|
73
|
+
SUBMITTED_PROMPT_META_KEY,
|
|
71
74
|
TODO_STOP_GUARD_CONTINUATION_CLAIM_METHOD,
|
|
72
75
|
TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
|
|
73
76
|
WORKTREE_MCP_DEFER_META_KEY,
|
|
@@ -75,7 +78,7 @@ import {
|
|
|
75
78
|
clampActiveWorkIntervalMs,
|
|
76
79
|
isValidTrustedModelPrompt,
|
|
77
80
|
sessionCloseDrainBudgetMs
|
|
78
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-TBSCTWKF.js";
|
|
79
82
|
import {
|
|
80
83
|
BranchWhilePromptActiveError,
|
|
81
84
|
BridgeChannelQuarantinedError,
|
|
@@ -121,7 +124,7 @@ import {
|
|
|
121
124
|
ClientSideConnection,
|
|
122
125
|
PROTOCOL_VERSION,
|
|
123
126
|
RequestError
|
|
124
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-IJOS26LH.js";
|
|
125
128
|
import {
|
|
126
129
|
PRIVATE_CONVERSATIONS_RUNTIME_ENABLE,
|
|
127
130
|
PRIVATE_CONVERSATIONS_RUNTIME_ENV
|
|
@@ -136,7 +139,7 @@ import {
|
|
|
136
139
|
isOfficeDocumentExtension,
|
|
137
140
|
isRecordableDerivedChild,
|
|
138
141
|
pathHasSkippedDirectoryComponent
|
|
139
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-5CZMWDJI.js";
|
|
140
143
|
import {
|
|
141
144
|
SESSION_PR_LIST_LIMIT,
|
|
142
145
|
SESSION_PR_URL_MAX_LENGTH,
|
|
@@ -148,7 +151,7 @@ import {
|
|
|
148
151
|
canonicalSessionPrUrl,
|
|
149
152
|
normalizeTurnResultError,
|
|
150
153
|
toSessionPrInfo
|
|
151
|
-
} from "./chunk-
|
|
154
|
+
} from "./chunk-2UKKQGRA.js";
|
|
152
155
|
import {
|
|
153
156
|
isUnverifiableIdentityError,
|
|
154
157
|
openNoFollow
|
|
@@ -159,20 +162,31 @@ import {
|
|
|
159
162
|
WORKSPACE_CONTENT_MTIME_MS_METADATA_KEY,
|
|
160
163
|
WORKSPACE_CONTENT_SHA256_METADATA_KEY,
|
|
161
164
|
WORKSPACE_CONTENT_SIZE_BYTES_METADATA_KEY,
|
|
165
|
+
deleteArtifactSnapshot,
|
|
166
|
+
getWebPreviewSnapshotId,
|
|
162
167
|
isAdoptableContentFingerprintKey,
|
|
163
168
|
isPrototypeMetadataKey,
|
|
164
169
|
isReservedWorkspaceMetadataKey,
|
|
165
170
|
metadataBudgetBytes,
|
|
166
171
|
normalizeSnapshotPayload,
|
|
172
|
+
retainArtifactSnapshot,
|
|
167
173
|
stableSessionArtifactId
|
|
168
|
-
} from "./chunk-
|
|
174
|
+
} from "./chunk-EYN3G5XD.js";
|
|
175
|
+
import {
|
|
176
|
+
MAX_CRON_TASK_ROUTING_ID_LENGTH,
|
|
177
|
+
isValidCronTaskRoutingId
|
|
178
|
+
} from "./chunk-3LMDSCLU.js";
|
|
179
|
+
import {
|
|
180
|
+
SessionSourceError,
|
|
181
|
+
validateSessionSourceInput
|
|
182
|
+
} from "./chunk-ELRMZTPF.js";
|
|
169
183
|
import {
|
|
170
184
|
APPROVAL_MODES
|
|
171
185
|
} from "./chunk-JX6XHPTX.js";
|
|
172
186
|
import {
|
|
173
187
|
DAEMON_TRACEPARENT_META_KEY,
|
|
174
188
|
DAEMON_TRACESTATE_META_KEY
|
|
175
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-ZW2EUO2A.js";
|
|
176
190
|
import {
|
|
177
191
|
INVOCATION_CONTEXT_META_KEY,
|
|
178
192
|
PRIVATE_ACP_CAPABILITY_ENV,
|
|
@@ -180,7 +194,10 @@ import {
|
|
|
180
194
|
} from "./chunk-5ETULJLP.js";
|
|
181
195
|
import {
|
|
182
196
|
getSpecificMimeType
|
|
183
|
-
} from "./chunk-
|
|
197
|
+
} from "./chunk-QZW6WRB7.js";
|
|
198
|
+
import {
|
|
199
|
+
Storage
|
|
200
|
+
} from "./chunk-ZAFYHRVY.js";
|
|
184
201
|
import {
|
|
185
202
|
init_esbuild_shims
|
|
186
203
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -4058,10 +4075,24 @@ var BridgeClient = class {
|
|
|
4058
4075
|
);
|
|
4059
4076
|
}
|
|
4060
4077
|
const model = params["model"];
|
|
4078
|
+
const groupId = params["groupId"];
|
|
4079
|
+
if (model !== void 0 && !isValidCronTaskRoutingId(model)) {
|
|
4080
|
+
throw RequestError.invalidParams(
|
|
4081
|
+
void 0,
|
|
4082
|
+
`\`model\` must be a non-empty string of at most ${MAX_CRON_TASK_ROUTING_ID_LENGTH} characters without control characters`
|
|
4083
|
+
);
|
|
4084
|
+
}
|
|
4085
|
+
if (groupId !== void 0 && (!isScheduledTaskRunSource(source) || !isValidCronTaskRoutingId(groupId))) {
|
|
4086
|
+
throw RequestError.invalidParams(
|
|
4087
|
+
void 0,
|
|
4088
|
+
`\`groupId\` must be a non-empty string of at most ${MAX_CRON_TASK_ROUTING_ID_LENGTH} characters without control characters and is only supported for scheduled-task runs`
|
|
4089
|
+
);
|
|
4090
|
+
}
|
|
4061
4091
|
const result = await this.onCreateSubSession({
|
|
4062
4092
|
prompt,
|
|
4063
4093
|
completion,
|
|
4064
|
-
...typeof model === "string"
|
|
4094
|
+
...typeof model === "string" ? { model } : {},
|
|
4095
|
+
...typeof groupId === "string" ? { groupId } : {},
|
|
4065
4096
|
...typeof name === "string" && name.length > 0 ? { name } : {},
|
|
4066
4097
|
...source,
|
|
4067
4098
|
callerSessionId
|
|
@@ -4239,6 +4270,19 @@ var BridgeClient = class {
|
|
|
4239
4270
|
if (typeof notificationSessionId === "string" && this.abandonedRestoreIds.has(notificationSessionId)) {
|
|
4240
4271
|
return;
|
|
4241
4272
|
}
|
|
4273
|
+
if (method === "qwen/notify/session/sources-changed") {
|
|
4274
|
+
const sessionId2 = params["sessionId"];
|
|
4275
|
+
const revision = params["revision"];
|
|
4276
|
+
if (typeof sessionId2 !== "string" || typeof revision !== "number" || !Number.isSafeInteger(revision) || revision < 0 || !this.ownsSession(sessionId2))
|
|
4277
|
+
return;
|
|
4278
|
+
const entry = this.resolveEntry(sessionId2);
|
|
4279
|
+
if (!entry) return;
|
|
4280
|
+
entry.events.publish({
|
|
4281
|
+
type: "source_changed",
|
|
4282
|
+
data: { sessionId: sessionId2, revision }
|
|
4283
|
+
});
|
|
4284
|
+
return;
|
|
4285
|
+
}
|
|
4242
4286
|
if (method === ACTIVE_WORK_NOTIFICATION_METHOD) {
|
|
4243
4287
|
const snapshot = parseActiveWorkSnapshot(params);
|
|
4244
4288
|
if (snapshot) {
|
|
@@ -5246,6 +5290,7 @@ var SessionArtifactStore = class {
|
|
|
5246
5290
|
}
|
|
5247
5291
|
sessionId;
|
|
5248
5292
|
workspaceCwd;
|
|
5293
|
+
runtimeBaseDir;
|
|
5249
5294
|
maxArtifacts;
|
|
5250
5295
|
persistence;
|
|
5251
5296
|
artifacts = /* @__PURE__ */ new Map();
|
|
@@ -5260,11 +5305,14 @@ var SessionArtifactStore = class {
|
|
|
5260
5305
|
tombstonedClientIds = /* @__PURE__ */ new Map();
|
|
5261
5306
|
stickyEphemeralIds = /* @__PURE__ */ new Set();
|
|
5262
5307
|
markerArtifacts = /* @__PURE__ */ new Map();
|
|
5308
|
+
// Failed removals or partial restores can leave ownership without a live record.
|
|
5309
|
+
pendingSnapshotRemovals = /* @__PURE__ */ new Set();
|
|
5263
5310
|
lastRestoreWarnings = [];
|
|
5264
5311
|
lastRestoreWarningDetails = [];
|
|
5265
5312
|
constructor(options) {
|
|
5266
5313
|
this.sessionId = options.sessionId;
|
|
5267
5314
|
this.workspaceCwd = options.workspaceCwd;
|
|
5315
|
+
this.runtimeBaseDir = options.runtimeBaseDir ?? Storage.getRuntimeBaseDir();
|
|
5268
5316
|
this.maxArtifacts = options.maxArtifacts ?? 200;
|
|
5269
5317
|
this.persistence = options.persistence;
|
|
5270
5318
|
}
|
|
@@ -5352,6 +5400,11 @@ var SessionArtifactStore = class {
|
|
|
5352
5400
|
}
|
|
5353
5401
|
}
|
|
5354
5402
|
const changes = [];
|
|
5403
|
+
let rollbackArtifacts = [];
|
|
5404
|
+
const rollback = /* @__PURE__ */ __name(async () => {
|
|
5405
|
+
this.restoreState(before);
|
|
5406
|
+
await this.reclaimSnapshotFiles(rollbackArtifacts);
|
|
5407
|
+
}, "rollback");
|
|
5355
5408
|
try {
|
|
5356
5409
|
for (const normalized of coalesceByIdentity(normalizedResults)) {
|
|
5357
5410
|
const artifact = this.applyStickyEphemeralOverride(normalized);
|
|
@@ -5422,6 +5475,23 @@ var SessionArtifactStore = class {
|
|
|
5422
5475
|
const createdIds = new Set(
|
|
5423
5476
|
changes.filter((change) => change.action === "created").map((change) => change.artifactId)
|
|
5424
5477
|
);
|
|
5478
|
+
rollbackArtifacts = changes.flatMap(
|
|
5479
|
+
(change) => change.action !== "removed" && change.artifact ? [change.artifact] : []
|
|
5480
|
+
);
|
|
5481
|
+
for (const artifact of rollbackArtifacts) {
|
|
5482
|
+
try {
|
|
5483
|
+
await retainArtifactSnapshot(
|
|
5484
|
+
artifact,
|
|
5485
|
+
this.runtimeBaseDir,
|
|
5486
|
+
this.sessionId
|
|
5487
|
+
);
|
|
5488
|
+
} catch (error) {
|
|
5489
|
+
if (validationStrict || persistenceStrict) throw error;
|
|
5490
|
+
warnings.push(
|
|
5491
|
+
`artifact ${artifact.id} kept without retaining its snapshot: ${error instanceof Error ? error.message : String(error)}`
|
|
5492
|
+
);
|
|
5493
|
+
}
|
|
5494
|
+
}
|
|
5425
5495
|
const overflowRemoved = await this.evictOverflow(
|
|
5426
5496
|
createdIds,
|
|
5427
5497
|
changes,
|
|
@@ -5441,7 +5511,7 @@ var SessionArtifactStore = class {
|
|
|
5441
5511
|
try {
|
|
5442
5512
|
persistenceWarnings = await this.persistChanges(changes, true);
|
|
5443
5513
|
} catch (error) {
|
|
5444
|
-
|
|
5514
|
+
await rollback();
|
|
5445
5515
|
const artifactIds = changes.filter(shouldCommitBeforeDurablePersistence).map((change) => change.artifactId);
|
|
5446
5516
|
const warning = "artifact durable removal not persisted; live changes rolled back";
|
|
5447
5517
|
writeStderrLine(
|
|
@@ -5481,9 +5551,15 @@ var SessionArtifactStore = class {
|
|
|
5481
5551
|
)
|
|
5482
5552
|
);
|
|
5483
5553
|
stripDurableTombstoneMarkers(changes);
|
|
5554
|
+
await this.reclaimSnapshotFiles([
|
|
5555
|
+
...changes.filter(
|
|
5556
|
+
(change) => change.action === "removed" && change.reason === "eviction"
|
|
5557
|
+
).map((change) => change.artifact),
|
|
5558
|
+
...overflowRemoved.droppedArtifacts
|
|
5559
|
+
]);
|
|
5484
5560
|
} catch (error) {
|
|
5485
5561
|
if (validationStrict || persistenceStrict || error instanceof SessionArtifactAuthorizationError) {
|
|
5486
|
-
|
|
5562
|
+
await rollback();
|
|
5487
5563
|
}
|
|
5488
5564
|
throw error;
|
|
5489
5565
|
}
|
|
@@ -5578,6 +5654,7 @@ var SessionArtifactStore = class {
|
|
|
5578
5654
|
}
|
|
5579
5655
|
const warnings = needsDurableTombstone ? [] : await this.persistChanges(changes, false);
|
|
5580
5656
|
stripDurableTombstoneMarkers(changes);
|
|
5657
|
+
await this.reclaimSnapshotFiles([removeChange.artifact]);
|
|
5581
5658
|
const warningDetails = detailsForPersistenceWarnings(
|
|
5582
5659
|
warnings,
|
|
5583
5660
|
changes,
|
|
@@ -5645,7 +5722,7 @@ var SessionArtifactStore = class {
|
|
|
5645
5722
|
let normalized = await this.normalizeInput(
|
|
5646
5723
|
input,
|
|
5647
5724
|
++this.receivedSeq,
|
|
5648
|
-
artifact.storage === "published" && !isFileArtifactUrl(artifact.url),
|
|
5725
|
+
artifact.storage === "published" && (!isFileArtifactUrl(artifact.url) || Boolean(getWebPreviewSnapshotId(artifact))),
|
|
5649
5726
|
{
|
|
5650
5727
|
metadataBudget: "persisted",
|
|
5651
5728
|
workspaceExpected: workspaceExpectedFromArtifact(artifact),
|
|
@@ -5688,6 +5765,17 @@ var SessionArtifactStore = class {
|
|
|
5688
5765
|
durableTombstoneRequired: retention !== "ephemeral" ? true : void 0,
|
|
5689
5766
|
insertSeq: ++this.insertSeq
|
|
5690
5767
|
};
|
|
5768
|
+
try {
|
|
5769
|
+
await retainArtifactSnapshot(
|
|
5770
|
+
stored,
|
|
5771
|
+
this.runtimeBaseDir,
|
|
5772
|
+
this.sessionId
|
|
5773
|
+
);
|
|
5774
|
+
} catch (error) {
|
|
5775
|
+
warnings.push(
|
|
5776
|
+
`restored artifact ${stored.id} without retaining its snapshot: ${error instanceof Error ? error.message : String(error)}`
|
|
5777
|
+
);
|
|
5778
|
+
}
|
|
5691
5779
|
this.artifacts.set(stored.id, stored);
|
|
5692
5780
|
restoredCount++;
|
|
5693
5781
|
} catch (error) {
|
|
@@ -5723,10 +5811,37 @@ var SessionArtifactStore = class {
|
|
|
5723
5811
|
insertSeq: ++this.insertSeq
|
|
5724
5812
|
});
|
|
5725
5813
|
}
|
|
5814
|
+
if (!warnings.some(isArtifactSnapshotCompletenessWarning)) {
|
|
5815
|
+
this.pendingSnapshotRemovals.clear();
|
|
5816
|
+
}
|
|
5726
5817
|
const evicted = await this.evictOverflow(/* @__PURE__ */ new Set(), []);
|
|
5727
5818
|
if (evicted.removed.length > 0) {
|
|
5728
5819
|
warnings.push("restored artifact list pruned to live limit");
|
|
5729
|
-
|
|
5820
|
+
const persistenceWarnings = await this.persistChanges(
|
|
5821
|
+
evicted.removed,
|
|
5822
|
+
false
|
|
5823
|
+
);
|
|
5824
|
+
warnings.push(...persistenceWarnings);
|
|
5825
|
+
if (persistenceWarnings.length === 0) {
|
|
5826
|
+
await this.reclaimSnapshotFiles(
|
|
5827
|
+
evicted.removed.map((change) => change.artifact)
|
|
5828
|
+
);
|
|
5829
|
+
}
|
|
5830
|
+
}
|
|
5831
|
+
const restoredIds = /* @__PURE__ */ new Set([
|
|
5832
|
+
...snapshot.artifacts.map((artifact) => artifact.id),
|
|
5833
|
+
...preservedLiveEphemeralArtifacts.map((artifact) => artifact.id)
|
|
5834
|
+
]);
|
|
5835
|
+
const discarded = [...previousState.artifacts.values()].filter(
|
|
5836
|
+
(artifact) => !restoredIds.has(artifact.id)
|
|
5837
|
+
);
|
|
5838
|
+
if (warnings.some(isArtifactSnapshotCompletenessWarning)) {
|
|
5839
|
+
for (const artifact of previousState.artifacts.values()) {
|
|
5840
|
+
const id = getWebPreviewSnapshotId(artifact);
|
|
5841
|
+
if (id) this.pendingSnapshotRemovals.add(id);
|
|
5842
|
+
}
|
|
5843
|
+
} else {
|
|
5844
|
+
await this.reclaimSnapshotFiles(discarded);
|
|
5730
5845
|
}
|
|
5731
5846
|
this.setLastRestoreWarnings(warnings);
|
|
5732
5847
|
return warnings;
|
|
@@ -5749,6 +5864,7 @@ var SessionArtifactStore = class {
|
|
|
5749
5864
|
this.persistenceSeq = sequence;
|
|
5750
5865
|
this.durableEventsSinceSnapshot = 0;
|
|
5751
5866
|
this.consecutiveSnapshotFailures = 0;
|
|
5867
|
+
this.pendingSnapshotRemovals.clear();
|
|
5752
5868
|
return [];
|
|
5753
5869
|
} catch (error) {
|
|
5754
5870
|
writeStderrLine(
|
|
@@ -5772,7 +5888,7 @@ var SessionArtifactStore = class {
|
|
|
5772
5888
|
const normalized = await this.normalizeInput(
|
|
5773
5889
|
input,
|
|
5774
5890
|
++this.receivedSeq,
|
|
5775
|
-
artifact.storage === "published" && !isFileArtifactUrl(artifact.url),
|
|
5891
|
+
artifact.storage === "published" && (!isFileArtifactUrl(artifact.url) || Boolean(getWebPreviewSnapshotId(artifact))),
|
|
5776
5892
|
{
|
|
5777
5893
|
metadataBudget: "persisted",
|
|
5778
5894
|
workspaceExpected: workspaceExpectedFromArtifact(artifact),
|
|
@@ -5823,6 +5939,7 @@ var SessionArtifactStore = class {
|
|
|
5823
5939
|
tombstonedClientIds: new Map(this.tombstonedClientIds),
|
|
5824
5940
|
stickyEphemeralIds: new Set(this.stickyEphemeralIds),
|
|
5825
5941
|
markerArtifacts: new Map(this.markerArtifacts),
|
|
5942
|
+
pendingSnapshotRemovals: new Set(this.pendingSnapshotRemovals),
|
|
5826
5943
|
lastRestoreWarnings: [...this.lastRestoreWarnings],
|
|
5827
5944
|
lastRestoreWarningDetails: [...this.lastRestoreWarningDetails]
|
|
5828
5945
|
};
|
|
@@ -5853,6 +5970,10 @@ var SessionArtifactStore = class {
|
|
|
5853
5970
|
for (const [id, artifact] of state.markerArtifacts) {
|
|
5854
5971
|
this.markerArtifacts.set(id, artifact);
|
|
5855
5972
|
}
|
|
5973
|
+
this.pendingSnapshotRemovals.clear();
|
|
5974
|
+
for (const id of state.pendingSnapshotRemovals) {
|
|
5975
|
+
this.pendingSnapshotRemovals.add(id);
|
|
5976
|
+
}
|
|
5856
5977
|
this.setLastRestoreWarnings(state.lastRestoreWarnings);
|
|
5857
5978
|
this.lastRestoreWarningDetails = [...state.lastRestoreWarningDetails];
|
|
5858
5979
|
}
|
|
@@ -5897,6 +6018,8 @@ var SessionArtifactStore = class {
|
|
|
5897
6018
|
await this.persistence.recordEvent(payload);
|
|
5898
6019
|
this.persistenceSeq = sequence;
|
|
5899
6020
|
for (const change of durableChanges) {
|
|
6021
|
+
const snapshotId = change.artifact && getWebPreviewSnapshotId(change.artifact);
|
|
6022
|
+
if (snapshotId) this.pendingSnapshotRemovals.delete(snapshotId);
|
|
5900
6023
|
if (change.action === "removed") continue;
|
|
5901
6024
|
const stored = this.artifacts.get(change.artifactId);
|
|
5902
6025
|
if (!stored) continue;
|
|
@@ -5941,6 +6064,7 @@ var SessionArtifactStore = class {
|
|
|
5941
6064
|
this.persistenceSeq = sequence;
|
|
5942
6065
|
this.durableEventsSinceSnapshot = 0;
|
|
5943
6066
|
this.consecutiveSnapshotFailures = 0;
|
|
6067
|
+
this.pendingSnapshotRemovals.clear();
|
|
5944
6068
|
} catch (error) {
|
|
5945
6069
|
this.consecutiveSnapshotFailures = Math.min(
|
|
5946
6070
|
this.consecutiveSnapshotFailures + 1,
|
|
@@ -5998,6 +6122,8 @@ var SessionArtifactStore = class {
|
|
|
5998
6122
|
for (const change of changes) {
|
|
5999
6123
|
if (change.action === "removed") {
|
|
6000
6124
|
removalNotPersisted = true;
|
|
6125
|
+
const snapshotId = change.artifact && getWebPreviewSnapshotId(change.artifact);
|
|
6126
|
+
if (snapshotId) this.pendingSnapshotRemovals.add(snapshotId);
|
|
6001
6127
|
if (change.reason === "explicit") {
|
|
6002
6128
|
this.rememberTombstone(change);
|
|
6003
6129
|
this.stickyEphemeralIds.delete(change.artifactId);
|
|
@@ -6571,10 +6697,29 @@ var SessionArtifactStore = class {
|
|
|
6571
6697
|
);
|
|
6572
6698
|
}
|
|
6573
6699
|
}
|
|
6700
|
+
async reclaimSnapshotFiles(artifacts) {
|
|
6701
|
+
for (const artifact of artifacts) {
|
|
6702
|
+
if (!artifact) continue;
|
|
6703
|
+
const id = getWebPreviewSnapshotId(artifact);
|
|
6704
|
+
if (!id || this.pendingSnapshotRemovals.has(id) || [...this.artifacts.values()].some(
|
|
6705
|
+
(kept) => getWebPreviewSnapshotId(kept) === id
|
|
6706
|
+
))
|
|
6707
|
+
continue;
|
|
6708
|
+
try {
|
|
6709
|
+
await deleteArtifactSnapshot(
|
|
6710
|
+
artifact,
|
|
6711
|
+
this.runtimeBaseDir,
|
|
6712
|
+
this.sessionId
|
|
6713
|
+
);
|
|
6714
|
+
} catch {
|
|
6715
|
+
}
|
|
6716
|
+
}
|
|
6717
|
+
}
|
|
6574
6718
|
async evictOverflow(createdIds, changes, strict = false) {
|
|
6575
6719
|
const removed = [];
|
|
6720
|
+
const droppedArtifacts = [];
|
|
6576
6721
|
if (this.artifacts.size <= this.maxArtifacts) {
|
|
6577
|
-
return { removed, droppedCreated: 0 };
|
|
6722
|
+
return { removed, droppedCreated: 0, droppedArtifacts };
|
|
6578
6723
|
}
|
|
6579
6724
|
const createdInThisBatch = new Set(createdIds);
|
|
6580
6725
|
const candidates = Array.from(this.artifacts.values()).filter(
|
|
@@ -6617,12 +6762,13 @@ var SessionArtifactStore = class {
|
|
|
6617
6762
|
}
|
|
6618
6763
|
this.artifacts.delete(artifact.id);
|
|
6619
6764
|
droppedCreated++;
|
|
6765
|
+
droppedArtifacts.push(toPublicArtifact(artifact));
|
|
6620
6766
|
writeStderrLine(
|
|
6621
6767
|
`[artifacts] session=${this.sessionId} action=dropped reason="max artifacts exceeded" artifactId=${artifact.id}`
|
|
6622
6768
|
);
|
|
6623
6769
|
removePriorChange(changes, artifact.id);
|
|
6624
6770
|
}
|
|
6625
|
-
return { removed, droppedCreated };
|
|
6771
|
+
return { removed, droppedCreated, droppedArtifacts };
|
|
6626
6772
|
}
|
|
6627
6773
|
};
|
|
6628
6774
|
function coalesceByIdentity(artifacts) {
|
|
@@ -8445,6 +8591,11 @@ function broadcastTurnComplete(entry, sessionId, promptResult, promptId, origina
|
|
|
8445
8591
|
assistantRecordUuid: rawBranchPoint["assistantRecordUuid"],
|
|
8446
8592
|
checkpointUuid: rawBranchPoint["checkpointUuid"]
|
|
8447
8593
|
} : void 0;
|
|
8594
|
+
const rawPromptCancelled = meta?.["qwen.promptCancelled"] && typeof meta["qwen.promptCancelled"] === "object" ? meta["qwen.promptCancelled"] : void 0;
|
|
8595
|
+
const promptCancelled = promptResult.stopReason === "cancelled" && typeof rawPromptCancelled?.["cancelledAt"] === "number" && Number.isFinite(rawPromptCancelled["cancelledAt"]) && typeof rawPromptCancelled["elapsedMs"] === "number" && Number.isFinite(rawPromptCancelled["elapsedMs"]) && rawPromptCancelled["elapsedMs"] >= 0 ? {
|
|
8596
|
+
cancelledAt: rawPromptCancelled["cancelledAt"],
|
|
8597
|
+
elapsedMs: rawPromptCancelled["elapsedMs"]
|
|
8598
|
+
} : void 0;
|
|
8448
8599
|
const published = entry.events.publish({
|
|
8449
8600
|
type: "turn_complete",
|
|
8450
8601
|
...promptId ? { promptId } : {},
|
|
@@ -8452,7 +8603,8 @@ function broadcastTurnComplete(entry, sessionId, promptResult, promptId, origina
|
|
|
8452
8603
|
sessionId,
|
|
8453
8604
|
stopReason: promptResult.stopReason ?? "end_turn",
|
|
8454
8605
|
...promptId ? { promptId } : {},
|
|
8455
|
-
...branchPoint ? { branchPoint } : {}
|
|
8606
|
+
...branchPoint ? { branchPoint } : {},
|
|
8607
|
+
...promptCancelled ? { promptCancelled } : {}
|
|
8456
8608
|
},
|
|
8457
8609
|
...originatorClientId ? { originatorClientId } : {}
|
|
8458
8610
|
});
|
|
@@ -8527,6 +8679,7 @@ var REFRESH_APPEND_BOOKKEEPING_EVENT_TYPES = /* @__PURE__ */ new Set([
|
|
|
8527
8679
|
"session_metadata_updated",
|
|
8528
8680
|
"session_cwd_changed",
|
|
8529
8681
|
"artifact_changed",
|
|
8682
|
+
"source_changed",
|
|
8530
8683
|
"settings_changed",
|
|
8531
8684
|
"extensions_changed",
|
|
8532
8685
|
"mcp_server_changed",
|
|
@@ -10297,6 +10450,7 @@ function createAcpSessionBridge(opts) {
|
|
|
10297
10450
|
[PRIVATE_PARENT_CAPABILITY_META_KEY]: privateParentCapability
|
|
10298
10451
|
},
|
|
10299
10452
|
clientCapabilities: {
|
|
10453
|
+
_meta: { "qwen.goalProposals": true },
|
|
10300
10454
|
fs: {
|
|
10301
10455
|
readTextFile: delegateReadTextFileToClient,
|
|
10302
10456
|
writeTextFile: true
|
|
@@ -10882,11 +11036,20 @@ function createAcpSessionBridge(opts) {
|
|
|
10882
11036
|
entry.modelRoundtripInFlight = true;
|
|
10883
11037
|
let succeeded = false;
|
|
10884
11038
|
try {
|
|
11039
|
+
const persistDefault = !isScheduledTaskRunSource({
|
|
11040
|
+
sourceType: entry.sourceType,
|
|
11041
|
+
sourceId: entry.sourceId
|
|
11042
|
+
});
|
|
10885
11043
|
const result = await Promise.race([
|
|
10886
11044
|
withTimeout(
|
|
10887
11045
|
conn.unstable_setSessionModel({
|
|
10888
11046
|
sessionId: entry.sessionId,
|
|
10889
|
-
modelId
|
|
11047
|
+
modelId,
|
|
11048
|
+
...!persistDefault ? {
|
|
11049
|
+
_meta: {
|
|
11050
|
+
[SESSION_MODEL_PERSIST_DEFAULT_META_KEY]: false
|
|
11051
|
+
}
|
|
11052
|
+
} : {}
|
|
10890
11053
|
}),
|
|
10891
11054
|
timeoutMs,
|
|
10892
11055
|
"setSessionModel"
|
|
@@ -10894,7 +11057,7 @@ function createAcpSessionBridge(opts) {
|
|
|
10894
11057
|
transportClosed
|
|
10895
11058
|
]);
|
|
10896
11059
|
publishModelSwitched(entry, modelId, originatorClientId);
|
|
10897
|
-
if (!isReservedStandaloneSessionSourceType(entry.sourceType)) {
|
|
11060
|
+
if (persistDefault && !isReservedStandaloneSessionSourceType(entry.sourceType)) {
|
|
10898
11061
|
broadcastWorkspaceEvent({
|
|
10899
11062
|
type: "settings_changed",
|
|
10900
11063
|
data: {
|
|
@@ -11428,6 +11591,16 @@ function createAcpSessionBridge(opts) {
|
|
|
11428
11591
|
]);
|
|
11429
11592
|
return response;
|
|
11430
11593
|
}, "requestSessionStatus");
|
|
11594
|
+
const requestSessionSources = /* @__PURE__ */ __name(async (sessionId, method, params = {}) => {
|
|
11595
|
+
const result = await requestSessionStatus(sessionId, method, params);
|
|
11596
|
+
if (result.sourceError) {
|
|
11597
|
+
throw new SessionSourceError(
|
|
11598
|
+
result.sourceError.code,
|
|
11599
|
+
result.sourceError.message
|
|
11600
|
+
);
|
|
11601
|
+
}
|
|
11602
|
+
return result;
|
|
11603
|
+
}, "requestSessionSources");
|
|
11431
11604
|
const notifyAgentSessionClose = /* @__PURE__ */ __name(async (entry, ci, label, opts2) => {
|
|
11432
11605
|
if (!ci || ci.channel !== entry.channel) {
|
|
11433
11606
|
if (opts2?.throwOnFailure === true) {
|
|
@@ -11463,8 +11636,8 @@ function createAcpSessionBridge(opts) {
|
|
|
11463
11636
|
return response["closed"] === true;
|
|
11464
11637
|
} catch (err) {
|
|
11465
11638
|
writeStderrLine(
|
|
11466
|
-
`qwen serve: ${label} ACP session close notification failed for session ${JSON.stringify(entry.sessionId)}: ${
|
|
11467
|
-
err
|
|
11639
|
+
`qwen serve: ${label} ACP session close notification failed for session ${JSON.stringify(entry.sessionId)}: ${extractErrorMessage(
|
|
11640
|
+
err
|
|
11468
11641
|
)}`
|
|
11469
11642
|
);
|
|
11470
11643
|
if (opts2?.throwOnFailure === true) {
|
|
@@ -11668,6 +11841,7 @@ function createAcpSessionBridge(opts) {
|
|
|
11668
11841
|
artifacts: new SessionArtifactStore({
|
|
11669
11842
|
sessionId,
|
|
11670
11843
|
workspaceCwd,
|
|
11844
|
+
runtimeBaseDir: opts.artifactSnapshotRuntimeBaseDir,
|
|
11671
11845
|
persistence: createSessionArtifactPersistence(ci.connection, sessionId)
|
|
11672
11846
|
}),
|
|
11673
11847
|
artifactWorkspaceCwd: workspaceCwd,
|
|
@@ -12046,6 +12220,9 @@ function createAcpSessionBridge(opts) {
|
|
|
12046
12220
|
}
|
|
12047
12221
|
__name(requestSessionTurnIndexPage, "requestSessionTurnIndexPage");
|
|
12048
12222
|
async function refreshedReplayFieldsFor(entry, historyPageSize, liveReplayMode) {
|
|
12223
|
+
if (entry.pendingInteractions.size > 0) {
|
|
12224
|
+
return replayFieldsFor(entry, "load", liveReplayMode);
|
|
12225
|
+
}
|
|
12049
12226
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
12050
12227
|
try {
|
|
12051
12228
|
const lastEventId = entry.events.lastEventId;
|
|
@@ -12092,6 +12269,7 @@ function createAcpSessionBridge(opts) {
|
|
|
12092
12269
|
...page.hasMore ? { historyHasMore: true } : {}
|
|
12093
12270
|
};
|
|
12094
12271
|
}
|
|
12272
|
+
if (entry.pendingInteractions.size > 0) break;
|
|
12095
12273
|
} catch {
|
|
12096
12274
|
break;
|
|
12097
12275
|
}
|
|
@@ -14013,9 +14191,18 @@ function createAcpSessionBridge(opts) {
|
|
|
14013
14191
|
delete meta[DAEMON_RESTORE_ASK_USER_QUESTION_META_KEY];
|
|
14014
14192
|
delete meta[DAEMON_CHANNEL_DELIVERY_META_KEY];
|
|
14015
14193
|
delete meta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
|
|
14194
|
+
delete meta[SUBMITTED_PROMPT_META_KEY];
|
|
14195
|
+
delete meta[DAEMON_SUBMITTED_PROMPT_META_KEY];
|
|
14196
|
+
if (typeof context?.submittedPrompt === "string" && !isPromotedMidTurn && context?.channelPrompt !== true) {
|
|
14197
|
+
meta[DAEMON_SUBMITTED_PROMPT_META_KEY] = context.submittedPrompt;
|
|
14198
|
+
}
|
|
14016
14199
|
delete meta[DAEMON_MODEL_PROMPT_META_KEY];
|
|
14017
14200
|
delete meta[DAEMON_ATTACHMENT_REFERENCES_META_KEY];
|
|
14018
14201
|
delete meta[CHANNEL_PROMPT_META_KEY];
|
|
14202
|
+
delete meta["qwen.goalProposalApproval"];
|
|
14203
|
+
if (originatorClientId !== void 0 && entry.clientIds.has(originatorClientId) && !context?.channelPrompt && !isContinue && !isRestoreAskUserQuestion) {
|
|
14204
|
+
meta["qwen.goalProposalApproval"] = true;
|
|
14205
|
+
}
|
|
14019
14206
|
if (isRetry) {
|
|
14020
14207
|
meta[DAEMON_RETRY_META_KEY] = true;
|
|
14021
14208
|
}
|
|
@@ -14487,6 +14674,28 @@ function createAcpSessionBridge(opts) {
|
|
|
14487
14674
|
);
|
|
14488
14675
|
}
|
|
14489
14676
|
markSessionCatalogChanged();
|
|
14677
|
+
const sourceWarnings = [];
|
|
14678
|
+
const copySources = /* @__PURE__ */ __name(async (attachments) => {
|
|
14679
|
+
try {
|
|
14680
|
+
const attachmentIds = attachments ? (await attachments.list()).map((item) => item.attachmentId) : [];
|
|
14681
|
+
const copied = await Promise.race([
|
|
14682
|
+
entry.connection.extMethod("qwen/session/sources/copy", {
|
|
14683
|
+
sessionId,
|
|
14684
|
+
targetSessionId: result.newSessionId,
|
|
14685
|
+
targetCwd: boundWorkspace,
|
|
14686
|
+
attachmentIds
|
|
14687
|
+
}),
|
|
14688
|
+
getTransportClosedReject(entry)
|
|
14689
|
+
]);
|
|
14690
|
+
if (copied.sourceError) {
|
|
14691
|
+
sourceWarnings.push("Session sources could not be copied.");
|
|
14692
|
+
} else {
|
|
14693
|
+
sourceWarnings.push(...copied.warnings ?? []);
|
|
14694
|
+
}
|
|
14695
|
+
} catch {
|
|
14696
|
+
sourceWarnings.push("Session sources could not be copied.");
|
|
14697
|
+
}
|
|
14698
|
+
}, "copySources");
|
|
14490
14699
|
if (opts.sessionAttachmentsRoot) {
|
|
14491
14700
|
const branchAttachments = new SessionAttachmentStore(
|
|
14492
14701
|
opts.sessionAttachmentsRoot,
|
|
@@ -14500,13 +14709,17 @@ function createAcpSessionBridge(opts) {
|
|
|
14500
14709
|
`qwen serve: failed to copy attachments for branched session ${result.newSessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
14501
14710
|
);
|
|
14502
14711
|
} finally {
|
|
14712
|
+
await copySources(branchAttachments);
|
|
14503
14713
|
await branchAttachments.close();
|
|
14504
14714
|
}
|
|
14715
|
+
} else if (!restoreBranch) {
|
|
14716
|
+
await copySources();
|
|
14505
14717
|
}
|
|
14506
14718
|
const rawBranchName = result.displayName ?? result.title;
|
|
14507
14719
|
const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
|
|
14508
14720
|
if (!restoreBranch) {
|
|
14509
14721
|
return {
|
|
14722
|
+
...sourceWarnings.length > 0 ? { sourceWarnings } : {},
|
|
14510
14723
|
sessionId: result.newSessionId,
|
|
14511
14724
|
displayName: branchDisplayName,
|
|
14512
14725
|
forkedFrom: {
|
|
@@ -14570,7 +14783,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14570
14783
|
}
|
|
14571
14784
|
} catch (cleanupErr) {
|
|
14572
14785
|
writeStderrLine(
|
|
14573
|
-
`qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${cleanupErr
|
|
14786
|
+
`qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${extractErrorMessage(cleanupErr)}`
|
|
14574
14787
|
);
|
|
14575
14788
|
}
|
|
14576
14789
|
throw restoreErr;
|
|
@@ -14585,6 +14798,9 @@ function createAcpSessionBridge(opts) {
|
|
|
14585
14798
|
);
|
|
14586
14799
|
}
|
|
14587
14800
|
}
|
|
14801
|
+
if (!opts.sessionAttachmentsRoot) {
|
|
14802
|
+
await copySources(newEntry?.attachments);
|
|
14803
|
+
}
|
|
14588
14804
|
if (newEntry) newEntry.displayName = branchDisplayName;
|
|
14589
14805
|
let sourcePersisted;
|
|
14590
14806
|
if (newEntry?.sourceType) {
|
|
@@ -14611,6 +14827,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14611
14827
|
}
|
|
14612
14828
|
return {
|
|
14613
14829
|
...restored,
|
|
14830
|
+
...sourceWarnings.length > 0 ? { sourceWarnings } : {},
|
|
14614
14831
|
displayName: branchDisplayName,
|
|
14615
14832
|
forkedFrom: {
|
|
14616
14833
|
sessionId,
|
|
@@ -14772,6 +14989,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14772
14989
|
const artifacts = new SessionArtifactStore({
|
|
14773
14990
|
sessionId,
|
|
14774
14991
|
workspaceCwd: expectation.child.canonicalPath,
|
|
14992
|
+
runtimeBaseDir: opts.artifactSnapshotRuntimeBaseDir,
|
|
14775
14993
|
persistence: createSessionArtifactPersistence(
|
|
14776
14994
|
entry.connection,
|
|
14777
14995
|
sessionId
|
|
@@ -15076,6 +15294,69 @@ function createAcpSessionBridge(opts) {
|
|
|
15076
15294
|
} catch {
|
|
15077
15295
|
}
|
|
15078
15296
|
},
|
|
15297
|
+
async getSessionSources(sessionId, context) {
|
|
15298
|
+
const entry = byId.get(sessionId);
|
|
15299
|
+
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
15300
|
+
if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
|
|
15301
|
+
throw standaloneWorkingDirectoryMissingError();
|
|
15302
|
+
}
|
|
15303
|
+
resolveTrustedClientId(entry, context?.clientId);
|
|
15304
|
+
return requestSessionSources(sessionId, "qwen/session/sources/list");
|
|
15305
|
+
},
|
|
15306
|
+
async upsertSessionSource(sessionId, input, context) {
|
|
15307
|
+
const entry = byId.get(sessionId);
|
|
15308
|
+
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
15309
|
+
if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
|
|
15310
|
+
throw standaloneWorkingDirectoryMissingError();
|
|
15311
|
+
}
|
|
15312
|
+
const clientId = resolveTrustedClientId(entry, context.clientId);
|
|
15313
|
+
if (!clientId) {
|
|
15314
|
+
throw new RequestError(
|
|
15315
|
+
-32602,
|
|
15316
|
+
"A session-bound client id is required",
|
|
15317
|
+
{
|
|
15318
|
+
errorKind: "client_id_required"
|
|
15319
|
+
}
|
|
15320
|
+
);
|
|
15321
|
+
}
|
|
15322
|
+
const validated = validateSessionSourceInput(input);
|
|
15323
|
+
if (validated.locator.type === "attachment") {
|
|
15324
|
+
const attachmentId = validated.locator.attachmentId;
|
|
15325
|
+
const attachments = await entry.attachments.list();
|
|
15326
|
+
if (byId.get(sessionId) !== entry) {
|
|
15327
|
+
throw new SessionNotFoundError(sessionId);
|
|
15328
|
+
}
|
|
15329
|
+
resolveTrustedClientId(entry, context.clientId);
|
|
15330
|
+
if (!attachments.some((item) => item.attachmentId === attachmentId)) {
|
|
15331
|
+
throw new RequestError(-32602, "Session attachment not found", {
|
|
15332
|
+
errorKind: "source_attachment_not_found"
|
|
15333
|
+
});
|
|
15334
|
+
}
|
|
15335
|
+
}
|
|
15336
|
+
return requestSessionSources(sessionId, "qwen/session/sources/upsert", {
|
|
15337
|
+
input: validated
|
|
15338
|
+
});
|
|
15339
|
+
},
|
|
15340
|
+
async removeSessionSource(sessionId, sourceId, context) {
|
|
15341
|
+
const entry = byId.get(sessionId);
|
|
15342
|
+
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
15343
|
+
if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
|
|
15344
|
+
throw standaloneWorkingDirectoryMissingError();
|
|
15345
|
+
}
|
|
15346
|
+
const clientId = resolveTrustedClientId(entry, context.clientId);
|
|
15347
|
+
if (!clientId) {
|
|
15348
|
+
throw new RequestError(
|
|
15349
|
+
-32602,
|
|
15350
|
+
"A session-bound client id is required",
|
|
15351
|
+
{
|
|
15352
|
+
errorKind: "client_id_required"
|
|
15353
|
+
}
|
|
15354
|
+
);
|
|
15355
|
+
}
|
|
15356
|
+
return requestSessionSources(sessionId, "qwen/session/sources/remove", {
|
|
15357
|
+
sourceId
|
|
15358
|
+
});
|
|
15359
|
+
},
|
|
15079
15360
|
async getSessionArtifacts(sessionId, context) {
|
|
15080
15361
|
const entry = byId.get(sessionId);
|
|
15081
15362
|
if (!entry) throw new SessionNotFoundError(sessionId);
|