@qwen-code/qwen-code 0.21.12 → 0.21.13
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/qc-helper/docs/configuration/settings.md +7 -5
- package/bundled/qc-helper/docs/features/code-review.md +13 -12
- package/bundled/review/SKILL.md +96 -68
- package/chunks/{MaxSizedBox-ZSJJ2D5S.js → MaxSizedBox-UQALOVVT.js} +41 -41
- package/chunks/{StandaloneSessionPicker-WHUHQXSA.js → StandaloneSessionPicker-KEGXNUG6.js} +62 -62
- package/chunks/{acp-startup-profiler-SVPUHLXV.js → acp-startup-profiler-NMDXYGDN.js} +2 -2
- package/chunks/{acpAgent-7JOAESF5.js → acpAgent-XPES32S7.js} +533 -286
- package/chunks/{agent-E6V3VXQR.js → agent-DPTOZFEM.js} +38 -38
- package/chunks/{agent-headless-OEQNFOMH.js → agent-headless-GJCQMURW.js} +38 -38
- package/chunks/{anthropicContentGenerator-YDT4EOKO.js → anthropicContentGenerator-G7BVXTKN.js} +6 -6
- package/chunks/{artifact-tool-4GCQQDZI.js → artifact-tool-GEXTOPVO.js} +2 -2
- package/chunks/{askUserQuestion-HZJJLR3Z.js → askUserQuestion-B33XRSB7.js} +2 -2
- package/chunks/{bridge-NPBV53UA.js → bridge-YNQBAA4Z.js} +42 -42
- package/chunks/{channel-management-service-OADNGQM3.js → channel-management-service-GWY2GAIC.js} +1 -1
- package/chunks/{channel-settings-store-4ODLJ4X2.js → channel-settings-store-WNWYFHG7.js} +45 -45
- package/chunks/{channel-worker-group-IHBIHQ45.js → channel-worker-group-7LXCMZ77.js} +4 -4
- package/chunks/{channel-worker-manager-GEHYJ5AE.js → channel-worker-manager-RYEME4ZZ.js} +4 -4
- package/chunks/{channel-worker-supervisor-ZJIIWM4I.js → channel-worker-supervisor-OEVWBHGT.js} +2 -2
- package/chunks/{chunk-5RUCD4ED.js → chunk-25EYDK42.js} +3 -3
- package/chunks/{chunk-2ZWH53I4.js → chunk-2B2BF7P7.js} +3 -3
- package/chunks/{chunk-OYWVIXHT.js → chunk-2M55OBEB.js} +1 -1
- package/chunks/{chunk-GZDWTBT3.js → chunk-3EZLLVDF.js} +2 -2
- package/chunks/{chunk-V6OBVAST.js → chunk-3U3VAL47.js} +1 -1
- package/chunks/{chunk-KWX56CHZ.js → chunk-4PKCUT7F.js} +7 -7
- package/chunks/{chunk-EBPLKY6U.js → chunk-4S5337WV.js} +1229 -522
- package/chunks/{chunk-QLTATTPS.js → chunk-5CVO7YES.js} +1 -1
- package/chunks/{chunk-I7BT2MME.js → chunk-5EYKMUUY.js} +1 -1
- package/chunks/{chunk-YIGGWOJE.js → chunk-6HY6IF3Z.js} +1 -1
- package/chunks/{chunk-LCX5B364.js → chunk-6ORZ2EDC.js} +3 -3
- package/chunks/{chunk-OWGRUU7F.js → chunk-6QFDQMQX.js} +1 -1
- package/chunks/{chunk-5AFGJNY6.js → chunk-6YKYPVDV.js} +4 -4
- package/chunks/{chunk-X5SLJOMF.js → chunk-76J3IJ3M.js} +4 -4
- package/chunks/{chunk-YX2RDGAL.js → chunk-7UXUJ5T3.js} +1 -1
- package/chunks/{chunk-3GDBZJD6.js → chunk-A267JX7H.js} +6 -6
- package/chunks/{chunk-DD6O3ZRD.js → chunk-A4MFR4C5.js} +1 -1
- package/chunks/{chunk-LUISTZXI.js → chunk-AA2BEKV3.js} +2 -2
- package/chunks/{chunk-4XA4QIUA.js → chunk-AFSG32D5.js} +1 -1
- package/chunks/{chunk-B4VN3VDH.js → chunk-AS5IN4GK.js} +5 -5
- package/chunks/{chunk-MELQSJOU.js → chunk-AW4TRXOC.js} +1 -1
- package/chunks/{chunk-EJOGLSNJ.js → chunk-AXN7UPYQ.js} +1 -1
- package/chunks/{chunk-CGM3E75C.js → chunk-BHILXOC3.js} +2 -2
- package/chunks/{chunk-7KJPO7YH.js → chunk-BKPPWD33.js} +2 -2
- package/chunks/{chunk-HOSVOUDK.js → chunk-BUQDLC2G.js} +3 -0
- package/chunks/{chunk-2IVYL3IF.js → chunk-BVJS5BSP.js} +1 -1
- package/chunks/{chunk-TMFWI4RC.js → chunk-BZ263IKX.js} +1 -1
- package/chunks/{chunk-G6MUFRNI.js → chunk-CHHABXPE.js} +1 -1
- package/chunks/{chunk-YILJKX2T.js → chunk-CKSJECTU.js} +4 -4
- package/chunks/{chunk-4AOVQPJU.js → chunk-CPHEPGAO.js} +1 -1
- package/chunks/{chunk-OWXFBIB6.js → chunk-CU6GJD55.js} +1 -1
- package/chunks/{chunk-FMIH5KMQ.js → chunk-CZBYX5MY.js} +1 -1
- package/chunks/{chunk-S6TCTH4Z.js → chunk-DGK6P3BQ.js} +12 -12
- package/chunks/{chunk-QPBFRWCP.js → chunk-DGZEMW5R.js} +3 -3
- package/chunks/{chunk-NW2GIPG3.js → chunk-DXIBNLBZ.js} +2 -2
- package/chunks/{chunk-FA5K6YI2.js → chunk-E23IPNGS.js} +25 -2
- package/chunks/{chunk-ULNWG62W.js → chunk-E3DYKPYZ.js} +3 -3
- package/chunks/{chunk-N4SVADAV.js → chunk-EL5SXY3T.js} +4 -3
- package/chunks/{chunk-YCHNAKC5.js → chunk-EZ5RP345.js} +11 -11
- package/chunks/{chunk-D7QGE3RT.js → chunk-FAAUPSY2.js} +1 -1
- package/chunks/{chunk-YBHUXEC6.js → chunk-FDGGZIYW.js} +1 -1
- package/chunks/{chunk-CIDQISGM.js → chunk-GGDBMYGZ.js} +5 -5
- package/chunks/{chunk-DG4IQ6JG.js → chunk-GMIEIY3Y.js} +3 -3
- package/chunks/{chunk-ZQUY3ZJU.js → chunk-GO7STP6N.js} +4 -4
- package/chunks/{chunk-3AEKDXKT.js → chunk-H4A72DE5.js} +1 -1
- package/chunks/{chunk-IRSLAS4M.js → chunk-HUTNYWBG.js} +2 -2
- package/chunks/{chunk-ZBB5EZZV.js → chunk-IA2K2HJE.js} +2 -2
- package/chunks/{chunk-IX4PWUDU.js → chunk-IGGGG5CX.js} +4329 -1586
- package/chunks/{chunk-ZMY2P4L3.js → chunk-IWPYVAO2.js} +4 -4
- package/chunks/{chunk-WCEI6J56.js → chunk-JNDY2MDR.js} +2 -2
- package/chunks/{chunk-3LDGOQXZ.js → chunk-JOOFMXGF.js} +6 -6
- package/chunks/{chunk-RDVNSJQU.js → chunk-JUEPY766.js} +3 -3
- package/chunks/{chunk-QBJYSIQ4.js → chunk-K3LPAED5.js} +53 -12
- package/chunks/{chunk-FRHQQC2Z.js → chunk-KBXKR5R2.js} +1 -1
- package/chunks/{chunk-PTSEETCO.js → chunk-KD5BOPLP.js} +12 -12
- package/chunks/{chunk-CPFFU46D.js → chunk-KV27IEHM.js} +1 -1
- package/chunks/{chunk-6P5EXEBL.js → chunk-LJQAUZMR.js} +207 -146
- package/chunks/{chunk-56HVDG3M.js → chunk-M732YJPW.js} +6 -6
- package/chunks/{chunk-LSRI3ND3.js → chunk-MA2HEDVP.js} +1 -1
- package/chunks/{chunk-XH3KAV2G.js → chunk-MC4TLKEI.js} +2 -2
- package/chunks/{chunk-YBVVOSOH.js → chunk-MIPFDQAF.js} +1 -1
- package/chunks/{chunk-47BGDLJG.js → chunk-MLPXSYXR.js} +31 -18
- package/chunks/{chunk-KRXPRVGL.js → chunk-MLXTMF7H.js} +0 -1
- package/chunks/{chunk-CQ6IPDQW.js → chunk-MRMJCLIY.js} +3 -3
- package/chunks/{chunk-62X3CM7Q.js → chunk-N5YPT6PH.js} +4 -4
- package/chunks/{chunk-OPVF453Q.js → chunk-NEFOOD54.js} +3 -3
- package/chunks/{chunk-DAV4QFD5.js → chunk-NHDR76JX.js} +44 -3
- package/chunks/{chunk-36XKGB7E.js → chunk-NM5V5OVW.js} +3 -3
- package/chunks/{chunk-QSD4UH74.js → chunk-NNHNLJ2X.js} +42 -42
- package/chunks/chunk-NYWWQ437.js +24 -0
- package/chunks/{chunk-MDNUCDKZ.js → chunk-O4D7SPJN.js} +2 -2
- package/chunks/{chunk-HG3UBTJ4.js → chunk-O565M6A4.js} +411 -10
- package/chunks/{chunk-BSR5AXZR.js → chunk-OD2WU5QY.js} +1 -1
- package/chunks/{chunk-DPTMKFIH.js → chunk-OMLJNPBE.js} +42 -12
- package/chunks/{chunk-Q4ZPYNIZ.js → chunk-OOQUVWIG.js} +4 -4
- package/chunks/{chunk-D2RNVVH6.js → chunk-OVZPVYZB.js} +2 -2
- package/chunks/{chunk-3GM5DLBI.js → chunk-OXCMMLED.js} +3 -3
- package/chunks/{chunk-BSSLSQEW.js → chunk-OY5RNSV4.js} +3 -3
- package/chunks/{chunk-PZW46OTB.js → chunk-P7MPQI75.js} +2 -2
- package/chunks/{chunk-6JEIRPLN.js → chunk-PP4FUZNV.js} +2 -2
- package/chunks/{chunk-DFVXU5YM.js → chunk-PQ36L4F5.js} +1 -1
- package/chunks/{chunk-VPV7WBVT.js → chunk-PT4I7NBA.js} +1 -1
- package/chunks/{chunk-VLHR7F4E.js → chunk-QF2NHSPB.js} +28 -28
- package/chunks/{chunk-NLFLYSS4.js → chunk-QFJ5JHQR.js} +1 -1
- package/chunks/{chunk-VIFA5VJD.js → chunk-QIH2HAEN.js} +1 -1
- package/chunks/{chunk-HTYND72J.js → chunk-QNQAPSN2.js} +1 -1
- package/chunks/{chunk-TDESMS7M.js → chunk-QRCNA3SR.js} +4 -4
- package/chunks/{chunk-IH4Z54RJ.js → chunk-QV5YN5YD.js} +5 -5
- package/chunks/{chunk-WI6GIM2M.js → chunk-RIAABG2K.js} +2 -2
- package/chunks/{chunk-UI5UGEF4.js → chunk-RLKC46YT.js} +16 -10
- package/chunks/{chunk-KEC5FHLM.js → chunk-ROIYNTHJ.js} +3 -3
- package/chunks/{chunk-4KM2SYK5.js → chunk-RVOJ2FBP.js} +8 -8
- package/chunks/{chunk-63FNZTWG.js → chunk-RWDNJBWN.js} +2 -2
- package/chunks/{chunk-FQDCO3CJ.js → chunk-S5DWMTHO.js} +5 -0
- package/chunks/{chunk-TTRH3RTQ.js → chunk-SG7ZP5PG.js} +4 -4
- package/chunks/{chunk-TXP5NGG3.js → chunk-SXCOEJO4.js} +1 -1
- package/chunks/{chunk-K34GJQOZ.js → chunk-TIGA2IVL.js} +3 -3
- package/chunks/chunk-TS6625XH.js +488 -0
- package/chunks/{chunk-WM3LUQLO.js → chunk-TUGSVUJB.js} +6 -6
- package/chunks/{chunk-XAFIL4BD.js → chunk-U3VNBPUO.js} +5 -5
- package/chunks/{chunk-WDVDVWJ3.js → chunk-UKMR3CKV.js} +6 -6
- package/chunks/{chunk-DEDESZDL.js → chunk-UPDOZBWO.js} +1 -1
- package/chunks/{chunk-MUNA4QDC.js → chunk-UZPM4XHR.js} +4 -4
- package/chunks/{chunk-6SPD4Z7F.js → chunk-V26NVGAU.js} +1 -1
- package/chunks/{chunk-XDRXOSAD.js → chunk-V57QC6WW.js} +2 -2
- package/chunks/{chunk-NX4A23LY.js → chunk-WFSTRPRO.js} +3 -3
- package/chunks/{chunk-H7TMVHKE.js → chunk-WGHHA7ZH.js} +1 -1
- package/chunks/{chunk-JRIVMPD2.js → chunk-WSH6GRKG.js} +4 -4
- package/chunks/{chunk-OR64CU46.js → chunk-X26JYGTD.js} +1 -1
- package/chunks/{chunk-RQJA2YYO.js → chunk-XHRY7BXD.js} +4 -4
- package/chunks/{chunk-MAKIANMX.js → chunk-XIT3GURH.js} +3 -3
- package/chunks/{chunk-KLOMACIR.js → chunk-XLLKYULU.js} +2 -2
- package/chunks/{chunk-PVXEJB66.js → chunk-XUJNK7Y6.js} +1 -1
- package/chunks/{chunk-AKBFSOC5.js → chunk-Y3YCSWG5.js} +2 -2
- package/chunks/{chunk-6ZKSO6K7.js → chunk-YEYY7TEP.js} +7 -7
- package/chunks/{chunk-TB4YFWXG.js → chunk-YZHRN3CF.js} +2 -2
- package/chunks/{chunk-TQDFSQQF.js → chunk-YZOSNW4R.js} +1 -1
- package/chunks/{chunk-GXTMEATA.js → chunk-ZYBBISBY.js} +7 -7
- package/chunks/{chunk-ROIJYS5K.js → chunk-ZYYTZUI2.js} +3 -3
- package/chunks/{chunk-CZ4OWGQQ.js → chunk-ZZO74WKW.js} +43 -5
- package/chunks/{computer-use-F4URV4TU.js → computer-use-77C5FHMW.js} +38 -38
- package/chunks/{config-utils-Z3OW3IQG.js → config-utils-IVHRSXWI.js} +2 -2
- package/chunks/{contextCommand-IGSS2U5J.js → contextCommand-PJ77GBWL.js} +40 -40
- package/chunks/{core-runtime-H5CZDN3A.js → core-runtime-7VMIKUTG.js} +38 -38
- package/chunks/{create-sub-session-PA7MFTHK.js → create-sub-session-2L5MQRN4.js} +38 -38
- package/chunks/{create-sub-session-XT6DLYOE.js → create-sub-session-KRQULJE6.js} +2 -2
- package/chunks/{cron-create-2JZ2TWTF.js → cron-create-H7UEPDSN.js} +4 -4
- package/chunks/{cron-delete-CTPD2P26.js → cron-delete-6SZK7YFM.js} +4 -4
- package/chunks/{cron-list-V44KHAF6.js → cron-list-H25JIHEZ.js} +4 -4
- package/chunks/{daemon-GED37WOX.js → daemon-2KTG7ZBN.js} +80 -8
- package/chunks/{daemon-git-worktree-guard-LZDCNJGV.js → daemon-git-worktree-guard-DXYIMWFT.js} +38 -38
- package/chunks/{daemon-status-provider-QYM57Z44.js → daemon-status-provider-ZDOYJCU6.js} +46 -46
- package/chunks/{daemon-trust-policy-TSRVEYZR.js → daemon-trust-policy-E67OYUK2.js} +44 -44
- package/chunks/{daemon-trust-policy-monitor-2K2YETMT.js → daemon-trust-policy-monitor-RYYGCQ3J.js} +44 -44
- package/chunks/{deferred-core-runtime-FKJ3OYE7.js → deferred-core-runtime-3SGXFXEQ.js} +38 -38
- package/chunks/discovery-ORA5J7YP.js +27 -0
- package/chunks/{display-image-M2ELAVN4.js → display-image-ON3EYFRD.js} +4 -4
- package/chunks/{earlyInputCapture-WJBSJQUF.js → earlyInputCapture-KJMLFVQV.js} +39 -39
- package/chunks/{edit-X73LA4YO.js → edit-I4LQFAEC.js} +38 -38
- package/chunks/{enter-worktree-CLRQTIVN.js → enter-worktree-YNPOJSRH.js} +38 -38
- package/chunks/{enterPlanMode-6BDYUQ5T.js → enterPlanMode-XCPK62ER.js} +38 -38
- package/chunks/{environment-WOAJXJDJ.js → environment-S7CTIHMX.js} +40 -40
- package/chunks/{errors-7OY5MXYY.js → errors-7HB2AIDS.js} +40 -40
- package/chunks/{exit-worktree-TFFJXCRT.js → exit-worktree-AIIY7SR6.js} +38 -38
- package/chunks/{exitPlanMode-WDURQMIU.js → exitPlanMode-R4JY7V2O.js} +38 -38
- package/chunks/{fast-path-QQLGC37M.js → fast-path-NDJV3ZFJ.js} +2 -2
- package/chunks/{gemini-VHE62IJL.js → gemini-RSUFP5OE.js} +86 -86
- package/chunks/{geminiContentGenerator-VSHIEGAQ.js → geminiContentGenerator-SQ5XBPZ7.js} +6 -6
- package/chunks/{glob-VMEEDDLO.js → glob-J4RUJAHX.js} +38 -38
- package/chunks/{goal-tools-M4UDAZXP.js → goal-tools-VHTNVOKK.js} +56 -12
- package/chunks/{grep-F4UAR7KX.js → grep-VJWPLFOT.js} +38 -38
- package/chunks/{handleAutoUpdate-GN7Z6QAC.js → handleAutoUpdate-POCX2MNB.js} +42 -42
- package/chunks/{i18n-ETW24DHW.js → i18n-RM5YOICI.js} +39 -39
- package/chunks/{image-gen-YPK2AZT4.js → image-gen-EXECB5XM.js} +10 -10
- package/chunks/{initializer-UA6KQ7MS.js → initializer-Z2AFGBNR.js} +45 -45
- package/chunks/{installationInfo-P7OTIR4P.js → installationInfo-4I5FXNMH.js} +39 -39
- package/chunks/{keychain-token-storage-NKKCUHI2.js → keychain-token-storage-3XFJ5ZB2.js} +2 -2
- package/chunks/{list-GRAMIQOT.js → list-ZMBFIGZA.js} +47 -47
- package/chunks/{list-agents-O6WSY4CT.js → list-agents-OSVDFI6S.js} +2 -2
- package/chunks/{loadedSettingsAdapter-5O2TDS3I.js → loadedSettingsAdapter-T6TV4YJ7.js} +44 -44
- package/chunks/{loggingContentGenerator-J2J2AANS.js → loggingContentGenerator-WF4ZOJEZ.js} +63 -39
- package/chunks/{loop-wakeup-GVQRMUKS.js → loop-wakeup-WQS6JYAG.js} +5 -5
- package/chunks/{ls-6W2D7TKU.js → ls-D3HUFHDP.js} +4 -4
- package/chunks/{lsp-NJ4KFBI2.js → lsp-3QDDJTCS.js} +2 -2
- package/chunks/{managed-npm-update-WMV5ITKU.js → managed-npm-update-E7IW6N7V.js} +39 -39
- package/chunks/{mcp-XLP33CAI.js → mcp-6UNYX4HG.js} +44 -44
- package/chunks/{monitor-2MM23VDV.js → monitor-EE2UYMGE.js} +38 -38
- package/chunks/{nonInteractiveCli-KTA5K6FS.js → nonInteractiveCli-WAY237O4.js} +79 -79
- package/chunks/{notebook-edit-QD4TRKLY.js → notebook-edit-NTDY4QDU.js} +38 -38
- package/chunks/{openaiContentGenerator-KLHSPVN2.js → openaiContentGenerator-YNFVJMRJ.js} +23 -23
- package/chunks/{pidfile-RQGZBNXT.js → pidfile-4XSFLYBZ.js} +39 -39
- package/chunks/{processUtils-HZZDA2VV.js → processUtils-WDA2MJFD.js} +2 -2
- package/chunks/proper-lockfile-3LHWIM44.js +8 -0
- package/chunks/{qwenContentGenerator-T75M2Z3B.js → qwenContentGenerator-434M7QKY.js} +43 -43
- package/chunks/{qwenOAuth2-5QZU444W.js → qwenOAuth2-GMYZOO6A.js} +9 -9
- package/chunks/{read-file-LOVUSBJC.js → read-file-TAFBKMNI.js} +11 -11
- package/chunks/{read-mcp-resource-GWCP23WG.js → read-mcp-resource-XD54ZQMC.js} +2 -2
- package/chunks/{record-artifact-IYQDEYMV.js → record-artifact-SEYFJEJF.js} +3 -3
- package/chunks/{resumeHistoryUtils-LVKSSQII.js → resumeHistoryUtils-EVG3WYK2.js} +45 -45
- package/chunks/{ripGrep-ZJSHKB6H.js → ripGrep-WOEK2PXS.js} +38 -38
- package/chunks/{run-qwen-serve-GZW7B4WK.js → run-qwen-serve-3QSGRXAN.js} +411 -209
- package/chunks/{runtime-MYRXEO2E.js → runtime-5MLLZ7DC.js} +47 -47
- package/chunks/{scheduler-DPTPI6FW.js → scheduler-RPBJ63CH.js} +40 -40
- package/chunks/{sdk-exporters-http-NHBYB5FZ.js → sdk-exporters-http-XUVP63H6.js} +2 -2
- package/chunks/{sdk-impl-SK4P5WON.js → sdk-impl-YXUEN2Z2.js} +2 -2
- package/chunks/{send-message-O7FO63UK.js → send-message-VZENRWRH.js} +6 -6
- package/chunks/{serve-XCG4XCDA.js → serve-HS3XLPXU.js} +44 -44
- package/chunks/{server-AWQHKXLG.js → server-TC4A7AAZ.js} +3833 -1618
- package/chunks/{session-P5FKNCNR.js → session-UBOFXVMN.js} +80 -80
- package/chunks/{settings-CSYVIP2R.js → settings-D5644OM5.js} +43 -43
- package/chunks/{shell-EGTSUO2P.js → shell-3PZULQQV.js} +38 -38
- package/chunks/{skill-IFUD72GF.js → skill-PEVVXQ3L.js} +16 -16
- package/chunks/{skill-settings-YOE7LBHE.js → skill-settings-J65JKKES.js} +43 -43
- package/chunks/{spawnChannel-PQSZIOLY.js → spawnChannel-IYGXRHSQ.js} +40 -40
- package/chunks/{standalone-update-RB2EGUSF.js → standalone-update-IFM53PE7.js} +40 -40
- package/chunks/{startInteractiveUI-KMYUJ2MU.js → startInteractiveUI-3AVH7L6H.js} +417 -168
- package/chunks/{syntheticOutput-DVHJMUGV.js → syntheticOutput-7GWFIDXT.js} +3 -3
- package/chunks/{task-create-4NC7PDI4.js → task-create-FCBDX7UH.js} +11 -11
- package/chunks/{task-list-LBSRMOC7.js → task-list-YIYIUFUA.js} +6 -6
- package/chunks/{task-stop-YFNATTIM.js → task-stop-X37KYTKB.js} +2 -2
- package/chunks/{task-update-BPLM52GD.js → task-update-MYPFVOVM.js} +11 -11
- package/chunks/{team-create-B6A6MJBT.js → team-create-ZAIA7KAV.js} +38 -38
- package/chunks/{team-delete-MKYMYBFM.js → team-delete-6UMU4XLS.js} +6 -6
- package/chunks/{team-plan-approval-5WO3CXXU.js → team-plan-approval-UNIUS7OD.js} +38 -38
- package/chunks/{terminal-image-renderer-BTRE2GEU.js → terminal-image-renderer-G343P2RV.js} +40 -40
- package/chunks/{theme-manager-XL2N5SBY.js → theme-manager-Z3RIT7DB.js} +39 -39
- package/chunks/{todoWrite-K5K7NRE5.js → todoWrite-U2R4NVF4.js} +4 -4
- package/chunks/{tool-search-QNBLXUGR.js → tool-search-5R2OE4C7.js} +15 -15
- package/chunks/{total-session-admission-N4E5SFBO.js → total-session-admission-4KBHMQQ2.js} +42 -42
- package/chunks/{trustedFolders-MQS46LIU.js → trustedFolders-LK6T4XC7.js} +39 -39
- package/chunks/{update-relaunch-536KRL33.js → update-relaunch-UBKROIC6.js} +5 -5
- package/chunks/{updateCheck-QJI2SYWF.js → updateCheck-W4Y2GFSD.js} +42 -42
- package/chunks/{useAutoAcceptIndicator-7QASHD46.js → useAutoAcceptIndicator-C7BEICBF.js} +47 -47
- package/chunks/{validateNonInterActiveAuth-ZNRGWBLV.js → validateNonInterActiveAuth-LTEI2TB6.js} +76 -76
- package/chunks/{version-DBEQAFRW.js → version-G5A5DGVS.js} +1 -1
- package/chunks/{web-fetch-MBIVXKPE.js → web-fetch-RTEQTR5Z.js} +15 -15
- package/chunks/{web-search-4LBIN6VF.js → web-search-5OXHEZPV.js} +9 -9
- package/chunks/{workflow-LNMA55HY.js → workflow-ISQJHPG2.js} +39 -39
- package/chunks/{workspace-providers-status-PDDMI6ST.js → workspace-providers-status-2ZPZPUPZ.js} +47 -47
- package/chunks/{workspace-registration-store-BGRKKIYR.js → workspace-registration-store-CYNY6IP6.js} +2 -2
- package/chunks/{workspace-registry-L4NCJ34K.js → workspace-registry-34GTUUHB.js} +44 -43
- package/chunks/{workspace-service-LOXYKYTR.js → workspace-service-XCDQLE2Y.js} +50 -50
- package/chunks/{workspace-skills-status-IJ5FOQI6.js → workspace-skills-status-RS4O7AIJ.js} +45 -45
- package/chunks/{workspace-trust-reconciler-H36TCR2S.js → workspace-trust-reconciler-AYGXC7A3.js} +53 -52
- package/chunks/{write-file-JJAY7JSP.js → write-file-EWXKVVXF.js} +38 -38
- package/chunks/{zoom-image-4MVVVM7E.js → zoom-image-4BFYJ3HG.js} +11 -11
- package/cli.js +13 -13
- package/package.json +3 -3
- package/web-shell/assets/{arc-B-89zHN4.js → arc-CgOpDKvm.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BkcOncHk.js → architectureDiagram-3BPJPVTR-0Ag_m34F.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-DQ4yboaF.js → blockDiagram-GPEHLZMM-IwTwFau0.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-C_8ZjPDI.js → c4Diagram-AAUBKEIU-DLa5GUv8.js} +1 -1
- package/web-shell/assets/channel-BrGVBa2L.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-naKVe1Bm.js → chunk-2J33WTMH-DcYP-WFG.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DdoViKT2.js → chunk-4BX2VUAB-C8MVPMiQ.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DUDQZEwU.js → chunk-55IACEB6-BUi4Yfv3.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BqpDTR5s.js → chunk-727SXJPM-Cy3Su2YY.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-CdmEknkT.js → chunk-AQP2D5EJ-Dp8Teqv6.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CH7fFTLB.js → chunk-FMBD7UC4-BDTDM-4j.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-ObgSuFKF.js → chunk-ND2GUHAM-7HfDt0r2.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-D9fKdv_s.js → chunk-QZHKN3VN-BIBU0uCF.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CvzATMx9.js → cose-bilkent-S5V4N54A-DRLdcg9p.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-M_xU21QW.js → dagre-BM42HDAG-DCCgDwqW.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CNrl9sW1.js → diagram-2AECGRRQ-CsBTBmk3.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CUweVT6T.js → diagram-5GNKFQAL-C9qjH8Lt.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-D3n6Lxjo.js → diagram-KO2AKTUF-Brjs_lj2.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-0SeFPK4t.js → diagram-LMA3HP47-DtiWCl_F.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DAgyEwge.js → diagram-OG6HWLK6-DmfKLkBT.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CzxBBDIK.js → erDiagram-TEJ5UH35-Bve_4deH.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-B0uj0jyo.js → flowDiagram-I6XJVG4X-C2_kXCcV.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DFzcj5km.js → ganttDiagram-6RSMTGT7-BSBIjiTF.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DylJ_Fc9.js → gitGraphDiagram-PVQCEYII-CyebwI55.js} +1 -1
- package/web-shell/assets/index-CIDsgxTe.js +1792 -0
- package/web-shell/assets/{index-BIGQygTL.css → index-DiQnWi_E.css} +1 -1
- package/web-shell/assets/{index-BKSAnXU9.js → index-d0yfnV1M.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-BYMcJVMI.js → infoDiagram-5YYISTIA-CSDGnWxU.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-t1quI1S3.js → ishikawaDiagram-YF4QCWOH-BK4jU13p.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-YM_QVUJm.js → journeyDiagram-JHISSGLW-D_W6j-oF.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-jw8OddK1.js → kanban-definition-UN3LZRKU-C7xf-SdC.js} +1 -1
- package/web-shell/assets/{linear-Dlr3RVuP.js → linear-DQmzxpxd.js} +1 -1
- package/web-shell/assets/{mermaid.core-CqGKzNzd.js → mermaid.core-9P7AGOLG.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BqureoOS.js → mindmap-definition-RKZ34NQL-DgcgMyPk.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Da20HkK1.js → pieDiagram-4H26LBE5-3wWGb9eG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BsNlMvJy.js → quadrantDiagram-W4KKPZXB-BeCXnQw9.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DzVCQCse.js → requirementDiagram-4Y6WPE33-Bi1UOHDz.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BMo16voT.js → sankeyDiagram-5OEKKPKP-lrLUjjbb.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Bgi-pdHk.js → sequenceDiagram-3UESZ5HK-BFuqKz6Q.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-xaPQXwGk.js → stateDiagram-AJRCARHV-8DemQLhu.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-C_9RuvKG.js → timeline-definition-PNZ67QCA-uzEuVQXg.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-Bgu6vdla.js → vennDiagram-CIIHVFJN-BQTeZ_-o.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CFTZ8IrX.js → wardley-L42UT6IY-B6yM5Im7.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BASW9Vmt.js → wardleyDiagram-YWT4CUSO-ChM8bmgn.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6--Nh-CD3F.js → xychartDiagram-2RQKCTM6-oNG6HyB1.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/discovery-XLHITE74.js +0 -220
- package/web-shell/assets/channel-Du2WFns8.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Zw0HafH6.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Zw0HafH6.js +0 -1
- package/web-shell/assets/index-J7OMTqAN.js +0 -1789
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-D5RqimXD.js +0 -1
- package/chunks/{chunk-SYHXR6WM.js → chunk-4W5U2TUT.js} +3 -3
- /package/chunks/{chunk-OK47XBYH.js → chunk-A4QRWUDE.js} +0 -0
|
@@ -13,17 +13,21 @@ import {
|
|
|
13
13
|
matchMcpServerByRef,
|
|
14
14
|
parseExtensionRef,
|
|
15
15
|
parseMcpServerRef
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-76J3IJ3M.js";
|
|
17
17
|
import {
|
|
18
18
|
getAvailableCommands,
|
|
19
19
|
handleSlashCommand,
|
|
20
20
|
insertAfterFunctionResponses,
|
|
21
21
|
isSlashCommand,
|
|
22
22
|
normalizePartList
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-NNHNLJ2X.js";
|
|
24
|
+
import {
|
|
25
|
+
collectContextData,
|
|
26
|
+
formatContextUsageText
|
|
27
|
+
} from "./chunk-N5YPT6PH.js";
|
|
24
28
|
import {
|
|
25
29
|
recomputeMcpGating
|
|
26
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-GGDBMYGZ.js";
|
|
27
31
|
import {
|
|
28
32
|
SessionIdConflictError,
|
|
29
33
|
appEvents,
|
|
@@ -31,44 +35,40 @@ import {
|
|
|
31
35
|
cleanupReviewWorktreeLeases,
|
|
32
36
|
loadCliConfig,
|
|
33
37
|
normalizeDisabledToolList
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-IGGGG5CX.js";
|
|
35
39
|
import {
|
|
36
40
|
getCommandSubcommandNames
|
|
37
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-AFSG32D5.js";
|
|
38
42
|
import {
|
|
39
43
|
getEffectiveSupportedModes
|
|
40
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-O4D7SPJN.js";
|
|
45
|
+
import "./chunk-4WGODMVR.js";
|
|
41
46
|
import "./chunk-3SH53ANB.js";
|
|
42
47
|
import "./chunk-NYX53SV4.js";
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import {
|
|
45
|
-
collectContextData,
|
|
46
|
-
formatContextUsageText
|
|
47
|
-
} from "./chunk-62X3CM7Q.js";
|
|
48
|
-
import "./chunk-4WGODMVR.js";
|
|
48
|
+
import "./chunk-DXIBNLBZ.js";
|
|
49
49
|
import {
|
|
50
50
|
isGoalStatusKind
|
|
51
51
|
} from "./chunk-EKTCKZV5.js";
|
|
52
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-2M55OBEB.js";
|
|
53
53
|
import {
|
|
54
54
|
startNonInteractiveOpenAILogHousekeeping
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-6YKYPVDV.js";
|
|
56
56
|
import "./chunk-KW7NOTN6.js";
|
|
57
|
-
import "./chunk-ZQUY3ZJU.js";
|
|
58
|
-
import "./chunk-RDVNSJQU.js";
|
|
59
|
-
import "./chunk-OPVF453Q.js";
|
|
60
|
-
import "./chunk-YAF2MQZ6.js";
|
|
61
|
-
import {
|
|
62
|
-
computeCpuPercent
|
|
63
|
-
} from "./chunk-LBOVL47Y.js";
|
|
64
|
-
import "./chunk-TDESMS7M.js";
|
|
65
|
-
import "./chunk-6H67XLET.js";
|
|
66
57
|
import {
|
|
67
58
|
beginAcpBootstrapConfigProfiling,
|
|
68
59
|
buildAndFreezeAcpStartupProfile,
|
|
69
60
|
endAcpBootstrapConfigProfiling,
|
|
70
61
|
markAcpStartup
|
|
71
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-CZBYX5MY.js";
|
|
63
|
+
import "./chunk-GO7STP6N.js";
|
|
64
|
+
import "./chunk-JUEPY766.js";
|
|
65
|
+
import "./chunk-NEFOOD54.js";
|
|
66
|
+
import "./chunk-YAF2MQZ6.js";
|
|
67
|
+
import {
|
|
68
|
+
computeCpuPercent
|
|
69
|
+
} from "./chunk-LBOVL47Y.js";
|
|
70
|
+
import "./chunk-QRCNA3SR.js";
|
|
71
|
+
import "./chunk-6H67XLET.js";
|
|
72
72
|
import {
|
|
73
73
|
GENERATION_MAX_PROMPT_BYTES,
|
|
74
74
|
GENERATION_TIMEOUT_MS,
|
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
shouldSuppressRememberErrorDetails,
|
|
92
92
|
workspaceMemoryFailureCode,
|
|
93
93
|
workspaceMemoryFailureDiagnostics
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-ZZO74WKW.js";
|
|
95
95
|
import {
|
|
96
96
|
BaseEmitter,
|
|
97
97
|
HistoryReplayer,
|
|
@@ -100,10 +100,10 @@ import {
|
|
|
100
100
|
createTranscriptMessageUpdate,
|
|
101
101
|
createTranscriptUsageUpdate,
|
|
102
102
|
hasFullSessionContext
|
|
103
|
-
} from "./chunk-
|
|
104
|
-
import "./chunk-
|
|
103
|
+
} from "./chunk-RLKC46YT.js";
|
|
104
|
+
import "./chunk-BZ263IKX.js";
|
|
105
105
|
import "./chunk-4NFY2S7N.js";
|
|
106
|
-
import "./chunk-
|
|
106
|
+
import "./chunk-3U3VAL47.js";
|
|
107
107
|
import "./chunk-2MIN6GRR.js";
|
|
108
108
|
import "./chunk-QHTIBUWB.js";
|
|
109
109
|
import "./chunk-3Z43GZUQ.js";
|
|
@@ -121,18 +121,25 @@ import {
|
|
|
121
121
|
buildPermissionSettings,
|
|
122
122
|
normalizePermissionRules,
|
|
123
123
|
readPermissionRuleSet
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-7UXUJ5T3.js";
|
|
125
125
|
import {
|
|
126
126
|
MAX_AUDIO_BYTES,
|
|
127
127
|
sanitizeVoiceErrorMessage,
|
|
128
128
|
transcribeVoiceAudio
|
|
129
|
-
} from "./chunk-
|
|
129
|
+
} from "./chunk-6ORZ2EDC.js";
|
|
130
130
|
import {
|
|
131
131
|
readVoiceModel
|
|
132
|
-
} from "./chunk-
|
|
133
|
-
import "./chunk-
|
|
132
|
+
} from "./chunk-QIH2HAEN.js";
|
|
133
|
+
import "./chunk-WGHHA7ZH.js";
|
|
134
134
|
import "./chunk-NTTBXH7U.js";
|
|
135
|
-
import "./chunk-
|
|
135
|
+
import "./chunk-XHRY7BXD.js";
|
|
136
|
+
import {
|
|
137
|
+
SESSION_SOURCE_META_KEY,
|
|
138
|
+
parseSessionSource
|
|
139
|
+
} from "./chunk-LJQAUZMR.js";
|
|
140
|
+
import "./chunk-7U5G6JXI.js";
|
|
141
|
+
import "./chunk-WCCLLK7X.js";
|
|
142
|
+
import "./chunk-OCPBI7J5.js";
|
|
136
143
|
import {
|
|
137
144
|
ACP_ROUTE_ID_PREFIX,
|
|
138
145
|
buildAcpModelOptions,
|
|
@@ -141,32 +148,26 @@ import {
|
|
|
141
148
|
parseAcpModelOption,
|
|
142
149
|
resolveAcpModelOption,
|
|
143
150
|
sanitizeProviderBaseUrl
|
|
144
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-ZYYTZUI2.js";
|
|
145
152
|
import {
|
|
146
153
|
mapSkillConfigToStatus
|
|
147
154
|
} from "./chunk-BGXZBI5B.js";
|
|
148
155
|
import {
|
|
149
156
|
resolveSkillSettings
|
|
150
157
|
} from "./chunk-Z4X5MTRT.js";
|
|
151
|
-
import "./chunk-
|
|
152
|
-
import "./chunk-
|
|
158
|
+
import "./chunk-TUGSVUJB.js";
|
|
159
|
+
import "./chunk-QV5YN5YD.js";
|
|
153
160
|
import "./chunk-57OAHC2Y.js";
|
|
154
|
-
import "./chunk-
|
|
161
|
+
import "./chunk-OD2WU5QY.js";
|
|
155
162
|
import "./chunk-45NQKMYB.js";
|
|
156
|
-
import "./chunk-
|
|
163
|
+
import "./chunk-A4QRWUDE.js";
|
|
164
|
+
import "./chunk-V6WHFGST.js";
|
|
157
165
|
import {
|
|
158
166
|
createLoadedSettingsAdapter
|
|
159
|
-
} from "./chunk-
|
|
160
|
-
import {
|
|
161
|
-
SESSION_SOURCE_META_KEY,
|
|
162
|
-
parseSessionSource
|
|
163
|
-
} from "./chunk-6P5EXEBL.js";
|
|
164
|
-
import "./chunk-7U5G6JXI.js";
|
|
165
|
-
import "./chunk-WCCLLK7X.js";
|
|
166
|
-
import "./chunk-OCPBI7J5.js";
|
|
167
|
+
} from "./chunk-BVJS5BSP.js";
|
|
167
168
|
import {
|
|
168
169
|
ndJsonStream
|
|
169
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-NHDR76JX.js";
|
|
170
171
|
import {
|
|
171
172
|
ACP_PREFLIGHT_KINDS,
|
|
172
173
|
IDLE_HOOK_EVENTS,
|
|
@@ -174,9 +175,9 @@ import {
|
|
|
174
175
|
SERVE_STATUS_EXT_METHODS,
|
|
175
176
|
STATUS_SCHEMA_VERSION,
|
|
176
177
|
mapDomainErrorToErrorKind
|
|
177
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-QNQAPSN2.js";
|
|
178
179
|
import "./chunk-ZLCT4C5A.js";
|
|
179
|
-
import "./chunk-
|
|
180
|
+
import "./chunk-BKPPWD33.js";
|
|
180
181
|
import {
|
|
181
182
|
ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
|
|
182
183
|
ACTIVE_WORK_HEARTBEAT_META_KEY,
|
|
@@ -206,7 +207,7 @@ import {
|
|
|
206
207
|
WORKTREE_MCP_DEFER_META_KEY,
|
|
207
208
|
clampActiveWorkIntervalMs,
|
|
208
209
|
isValidTrustedModelPrompt
|
|
209
|
-
} from "./chunk-
|
|
210
|
+
} from "./chunk-S5DWMTHO.js";
|
|
210
211
|
import {
|
|
211
212
|
NOT_CURRENTLY_GENERATING_CANCEL_MESSAGE,
|
|
212
213
|
isNotCurrentlyGeneratingCancelError
|
|
@@ -227,7 +228,6 @@ import {
|
|
|
227
228
|
SHELL_EXECUTING_TOOL_NAMES,
|
|
228
229
|
isValidExternalToolGuardDenialReason
|
|
229
230
|
} from "./chunk-3VUENPWF.js";
|
|
230
|
-
import "./chunk-3AEKDXKT.js";
|
|
231
231
|
import {
|
|
232
232
|
ACP_EVENT_LOOP_STALL_RESTART_MS,
|
|
233
233
|
CHANNEL_PROMPT_META_KEY
|
|
@@ -237,10 +237,11 @@ import {
|
|
|
237
237
|
PROTOCOL_VERSION,
|
|
238
238
|
RequestError
|
|
239
239
|
} from "./chunk-IW6RQPQB.js";
|
|
240
|
+
import "./chunk-H4A72DE5.js";
|
|
240
241
|
import {
|
|
241
242
|
assembleMcpServers,
|
|
242
243
|
loadMcpApprovals
|
|
243
|
-
} from "./chunk-
|
|
244
|
+
} from "./chunk-JOOFMXGF.js";
|
|
244
245
|
import {
|
|
245
246
|
getOutputLanguageFilePath,
|
|
246
247
|
getPersistScopeForModelSelection,
|
|
@@ -249,9 +250,9 @@ import {
|
|
|
249
250
|
resolveOutputLanguageOrPreserveAuto,
|
|
250
251
|
updateOutputLanguageFile,
|
|
251
252
|
writeOutputLanguageAndRegisterPath
|
|
252
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-A267JX7H.js";
|
|
253
254
|
import "./chunk-RKUWKYED.js";
|
|
254
|
-
import "./chunk-
|
|
255
|
+
import "./chunk-E23IPNGS.js";
|
|
255
256
|
import "./chunk-GOXKNSDZ.js";
|
|
256
257
|
import {
|
|
257
258
|
getSystemDefaultsPath,
|
|
@@ -260,7 +261,7 @@ import {
|
|
|
260
261
|
import {
|
|
261
262
|
getCurrentLanguage,
|
|
262
263
|
setLanguageAsync
|
|
263
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-HUTNYWBG.js";
|
|
264
265
|
import {
|
|
265
266
|
SUPPORTED_LANGUAGES
|
|
266
267
|
} from "./chunk-5EJZE3FP.js";
|
|
@@ -268,18 +269,17 @@ import {
|
|
|
268
269
|
findEnvFiles,
|
|
269
270
|
preResolveHomeEnvOverrides,
|
|
270
271
|
reloadEnvironment
|
|
271
|
-
} from "./chunk-
|
|
272
|
+
} from "./chunk-MC4TLKEI.js";
|
|
272
273
|
import {
|
|
273
274
|
ENV_ACP_REPEATED_TOOL_FAILURE_GUARD
|
|
274
275
|
} from "./chunk-MS7GNABG.js";
|
|
275
|
-
import "./chunk-
|
|
276
|
-
import "./chunk-OWXFBIB6.js";
|
|
276
|
+
import "./chunk-CU6GJD55.js";
|
|
277
277
|
import "./chunk-WZMH7II3.js";
|
|
278
278
|
import {
|
|
279
279
|
isFolderTrustEnabled,
|
|
280
280
|
isWorkspaceTrusted,
|
|
281
281
|
loadTrustedFolders
|
|
282
|
-
} from "./chunk-
|
|
282
|
+
} from "./chunk-IWPYVAO2.js";
|
|
283
283
|
import "./chunk-NPQ5ZKRP.js";
|
|
284
284
|
import "./chunk-MR3PXB6E.js";
|
|
285
285
|
import "./chunk-XFSFZCM5.js";
|
|
@@ -287,6 +287,7 @@ import {
|
|
|
287
287
|
ALL_PROVIDERS,
|
|
288
288
|
APPROVAL_MODE_INFO,
|
|
289
289
|
BTW_MAX_INPUT_LENGTH,
|
|
290
|
+
BranchPointInvalidError,
|
|
290
291
|
ExtensionManager,
|
|
291
292
|
GLOBAL_DUPLICATE_THRESHOLD,
|
|
292
293
|
IMAGE_CAPABILITY,
|
|
@@ -410,25 +411,25 @@ import {
|
|
|
410
411
|
updateSetting,
|
|
411
412
|
validatePlanModeShellApproval,
|
|
412
413
|
validatePlanModeShellContext
|
|
413
|
-
} from "./chunk-
|
|
414
|
+
} from "./chunk-4S5337WV.js";
|
|
414
415
|
import "./chunk-GOFAQQZA.js";
|
|
415
416
|
import "./chunk-5M6IDOMF.js";
|
|
416
417
|
import "./chunk-TWPJO254.js";
|
|
417
418
|
import {
|
|
418
419
|
external_exports
|
|
419
420
|
} from "./chunk-CQ35AJ4Z.js";
|
|
420
|
-
import "./chunk-
|
|
421
|
-
import "./chunk-
|
|
422
|
-
import "./chunk-
|
|
423
|
-
import "./chunk-
|
|
421
|
+
import "./chunk-DGZEMW5R.js";
|
|
422
|
+
import "./chunk-WSH6GRKG.js";
|
|
423
|
+
import "./chunk-CKSJECTU.js";
|
|
424
|
+
import "./chunk-OVZPVYZB.js";
|
|
424
425
|
import {
|
|
425
426
|
parsePositiveIntegerEnv
|
|
426
427
|
} from "./chunk-6PVPNMXU.js";
|
|
427
|
-
import "./chunk-
|
|
428
|
+
import "./chunk-5EYKMUUY.js";
|
|
428
429
|
import "./chunk-IRH27ZC2.js";
|
|
429
430
|
import "./chunk-QHWCP53L.js";
|
|
430
|
-
import "./chunk-
|
|
431
|
-
import "./chunk-
|
|
431
|
+
import "./chunk-Y3YCSWG5.js";
|
|
432
|
+
import "./chunk-UPDOZBWO.js";
|
|
432
433
|
import {
|
|
433
434
|
promptIdContext,
|
|
434
435
|
todoWorkChainContext
|
|
@@ -436,14 +437,17 @@ import {
|
|
|
436
437
|
import "./chunk-T26EAKDL.js";
|
|
437
438
|
import "./chunk-ZPJWUGCS.js";
|
|
438
439
|
import "./chunk-CPBF7KYF.js";
|
|
439
|
-
import
|
|
440
|
-
|
|
440
|
+
import {
|
|
441
|
+
APPROVAL_MODES
|
|
442
|
+
} from "./chunk-RWDNJBWN.js";
|
|
443
|
+
import "./chunk-25EYDK42.js";
|
|
441
444
|
import {
|
|
442
445
|
HookEventName,
|
|
443
446
|
createHookOutput
|
|
444
|
-
} from "./chunk-
|
|
445
|
-
import "./chunk-
|
|
446
|
-
import "./chunk-
|
|
447
|
+
} from "./chunk-MIPFDQAF.js";
|
|
448
|
+
import "./chunk-MLXTMF7H.js";
|
|
449
|
+
import "./chunk-KV27IEHM.js";
|
|
450
|
+
import "./chunk-E3DYKPYZ.js";
|
|
447
451
|
import {
|
|
448
452
|
GoalPersistenceUnavailableError,
|
|
449
453
|
emptyGoalSnapshot,
|
|
@@ -451,11 +455,8 @@ import {
|
|
|
451
455
|
parseGoalSnapshotV2,
|
|
452
456
|
parseGoalStateCause,
|
|
453
457
|
wrapUserPromptSubmitContext
|
|
454
|
-
} from "./chunk-
|
|
455
|
-
import
|
|
456
|
-
APPROVAL_MODES
|
|
457
|
-
} from "./chunk-63FNZTWG.js";
|
|
458
|
-
import "./chunk-3GM5DLBI.js";
|
|
458
|
+
} from "./chunk-OMLJNPBE.js";
|
|
459
|
+
import "./chunk-OXCMMLED.js";
|
|
459
460
|
import {
|
|
460
461
|
AgentOutputMessageCapture,
|
|
461
462
|
addAgentInputMessageAttributes,
|
|
@@ -466,32 +467,32 @@ import {
|
|
|
466
467
|
registerAcpEventLoopLagGauge,
|
|
467
468
|
startEventLoopLagMonitor,
|
|
468
469
|
withDaemonSpan
|
|
469
|
-
} from "./chunk-
|
|
470
|
+
} from "./chunk-TIGA2IVL.js";
|
|
470
471
|
import "./chunk-SAH4BD2J.js";
|
|
471
|
-
import "./chunk-
|
|
472
|
+
import "./chunk-XLLKYULU.js";
|
|
472
473
|
import {
|
|
473
474
|
runWithRuntimeContentGenerator
|
|
474
|
-
} from "./chunk-
|
|
475
|
+
} from "./chunk-PT4I7NBA.js";
|
|
475
476
|
import "./chunk-S6LOFUVP.js";
|
|
476
477
|
import "./chunk-2J3OJGTL.js";
|
|
477
478
|
import {
|
|
478
479
|
FORK_SUBAGENT_TYPE,
|
|
479
480
|
getStartupContextLength,
|
|
480
481
|
isSystemReminderContent
|
|
481
|
-
} from "./chunk-
|
|
482
|
+
} from "./chunk-SG7ZP5PG.js";
|
|
482
483
|
import "./chunk-K623ENWT.js";
|
|
483
484
|
import "./chunk-AQ37AY7B.js";
|
|
484
|
-
import "./chunk-
|
|
485
|
+
import "./chunk-KBXKR5R2.js";
|
|
485
486
|
import {
|
|
486
487
|
clearCachedCredentialFile,
|
|
487
488
|
qwenOAuth2Events
|
|
488
|
-
} from "./chunk-
|
|
489
|
+
} from "./chunk-GMIEIY3Y.js";
|
|
489
490
|
import "./chunk-NAVJD2PQ.js";
|
|
490
|
-
import "./chunk-
|
|
491
|
-
import "./chunk-
|
|
491
|
+
import "./chunk-ROIYNTHJ.js";
|
|
492
|
+
import "./chunk-2B2BF7P7.js";
|
|
492
493
|
import "./chunk-P3QQPMQA.js";
|
|
493
|
-
import "./chunk-
|
|
494
|
-
import "./chunk-
|
|
494
|
+
import "./chunk-YZHRN3CF.js";
|
|
495
|
+
import "./chunk-FAAUPSY2.js";
|
|
495
496
|
import {
|
|
496
497
|
REASONING_EFFORT_TIERS,
|
|
497
498
|
applyReasoningEffort
|
|
@@ -502,7 +503,7 @@ import {
|
|
|
502
503
|
getToolCallPreparations
|
|
503
504
|
} from "./chunk-GLCZKT5V.js";
|
|
504
505
|
import "./chunk-DJ2GSRLV.js";
|
|
505
|
-
import "./chunk-
|
|
506
|
+
import "./chunk-QFJ5JHQR.js";
|
|
506
507
|
import {
|
|
507
508
|
ConversationFinishedEvent,
|
|
508
509
|
DiscoveredMCPTool,
|
|
@@ -535,17 +536,17 @@ import {
|
|
|
535
536
|
shouldRunVisionBridge,
|
|
536
537
|
splitImageParts,
|
|
537
538
|
uiTelemetryService
|
|
538
|
-
} from "./chunk-
|
|
539
|
+
} from "./chunk-RVOJ2FBP.js";
|
|
539
540
|
import "./chunk-YRLW2MSX.js";
|
|
540
541
|
import "./chunk-VGC4I5JJ.js";
|
|
541
542
|
import {
|
|
542
543
|
getAutoMemoryRoot,
|
|
543
544
|
getUserAutoMemoryRoot
|
|
544
|
-
} from "./chunk-
|
|
545
|
+
} from "./chunk-CHHABXPE.js";
|
|
545
546
|
import {
|
|
546
547
|
runSideQuery
|
|
547
|
-
} from "./chunk-
|
|
548
|
-
import "./chunk-
|
|
548
|
+
} from "./chunk-MA2HEDVP.js";
|
|
549
|
+
import "./chunk-XUJNK7Y6.js";
|
|
549
550
|
import {
|
|
550
551
|
BaseDeclarativeTool,
|
|
551
552
|
BaseToolInvocation,
|
|
@@ -553,20 +554,20 @@ import {
|
|
|
553
554
|
ToolNames,
|
|
554
555
|
canonicalToolName,
|
|
555
556
|
isShellProgressData
|
|
556
|
-
} from "./chunk-
|
|
557
|
+
} from "./chunk-6HY6IF3Z.js";
|
|
557
558
|
import {
|
|
558
559
|
AuthType,
|
|
559
560
|
preloadContentGenerator
|
|
560
|
-
} from "./chunk-
|
|
561
|
+
} from "./chunk-4PKCUT7F.js";
|
|
561
562
|
import "./chunk-F6WFNA7U.js";
|
|
562
563
|
import "./chunk-46UV252V.js";
|
|
563
564
|
import {
|
|
564
565
|
DEFAULT_TOKEN_LIMIT,
|
|
565
566
|
tokenLimit
|
|
566
567
|
} from "./chunk-FPGTNKCP.js";
|
|
567
|
-
import "./chunk-
|
|
568
|
-
import "./chunk-
|
|
569
|
-
import "./chunk-
|
|
568
|
+
import "./chunk-CPHEPGAO.js";
|
|
569
|
+
import "./chunk-P7MPQI75.js";
|
|
570
|
+
import "./chunk-FDGGZIYW.js";
|
|
570
571
|
import {
|
|
571
572
|
endToolExecutionSpan,
|
|
572
573
|
endToolSpan,
|
|
@@ -577,7 +578,7 @@ import {
|
|
|
577
578
|
startToolExecutionSpan,
|
|
578
579
|
startToolSpan,
|
|
579
580
|
withInteractionSpan
|
|
580
|
-
} from "./chunk-
|
|
581
|
+
} from "./chunk-EL5SXY3T.js";
|
|
581
582
|
import "./chunk-HHJLM3WQ.js";
|
|
582
583
|
import {
|
|
583
584
|
sessionIdContext
|
|
@@ -588,12 +589,12 @@ import {
|
|
|
588
589
|
getErrorMessage,
|
|
589
590
|
getErrorStatus,
|
|
590
591
|
isSubpath
|
|
591
|
-
} from "./chunk-
|
|
592
|
+
} from "./chunk-BUQDLC2G.js";
|
|
592
593
|
import "./chunk-VOQXFAY5.js";
|
|
593
|
-
import "./chunk-
|
|
594
|
+
import "./chunk-AW4TRXOC.js";
|
|
594
595
|
import {
|
|
595
596
|
runExitCleanup
|
|
596
|
-
} from "./chunk-
|
|
597
|
+
} from "./chunk-X26JYGTD.js";
|
|
597
598
|
import {
|
|
598
599
|
writeStderrLine,
|
|
599
600
|
writeStderrLineSafe
|
|
@@ -3700,10 +3701,11 @@ async function buildAvailableCommandsSnapshot(config, abortSignal = AbortSignal.
|
|
|
3700
3701
|
}
|
|
3701
3702
|
__name(buildAvailableCommandsSnapshot, "buildAvailableCommandsSnapshot");
|
|
3702
3703
|
var Session = class {
|
|
3703
|
-
constructor(id, config, client, settings, onActiveWorkChanged) {
|
|
3704
|
+
constructor(id, config, client, settings, runExclusiveAutomaticHistoryMutation = (operation) => operation(), onActiveWorkChanged) {
|
|
3704
3705
|
this.config = config;
|
|
3705
3706
|
this.client = client;
|
|
3706
3707
|
this.settings = settings;
|
|
3708
|
+
this.runExclusiveAutomaticHistoryMutation = runExclusiveAutomaticHistoryMutation;
|
|
3707
3709
|
this.onActiveWorkChanged = onActiveWorkChanged;
|
|
3708
3710
|
this.sessionId = id;
|
|
3709
3711
|
this.runtimeBaseDir = config.storage.getRuntimeBaseDir();
|
|
@@ -3829,6 +3831,7 @@ var Session = class {
|
|
|
3829
3831
|
// on a session whose registries are already unregistered.
|
|
3830
3832
|
disposed = false;
|
|
3831
3833
|
closing = false;
|
|
3834
|
+
historyMutationActive = false;
|
|
3832
3835
|
closeGateCompletion = null;
|
|
3833
3836
|
resolveCloseGate = null;
|
|
3834
3837
|
unsubscribeChatRecordingFailure;
|
|
@@ -4050,6 +4053,12 @@ var Session = class {
|
|
|
4050
4053
|
return publication;
|
|
4051
4054
|
}
|
|
4052
4055
|
async #drainGoalQueue() {
|
|
4056
|
+
if (this.goalQueue.length === 0) return;
|
|
4057
|
+
await this.runExclusiveAutomaticHistoryMutation(
|
|
4058
|
+
() => this.#drainGoalQueueExclusive()
|
|
4059
|
+
);
|
|
4060
|
+
}
|
|
4061
|
+
async #drainGoalQueueExclusive() {
|
|
4053
4062
|
if (this.disposed || this.closing || this.goalProcessing || this.pendingPrompt || this.pendingPromptCompletion || this.cronProcessing || this.cronAbortController || this.notificationProcessing || this.notificationAbortController) {
|
|
4054
4063
|
return;
|
|
4055
4064
|
}
|
|
@@ -4748,6 +4757,12 @@ var Session = class {
|
|
|
4748
4757
|
if (this.closing) {
|
|
4749
4758
|
throw RequestError.invalidParams(void 0, "Session is closing");
|
|
4750
4759
|
}
|
|
4760
|
+
if (this.historyMutationActive) {
|
|
4761
|
+
throw RequestError.invalidParams(
|
|
4762
|
+
void 0,
|
|
4763
|
+
"Session history mutation is in progress"
|
|
4764
|
+
);
|
|
4765
|
+
}
|
|
4751
4766
|
try {
|
|
4752
4767
|
await this.config.assertCanStartTurn();
|
|
4753
4768
|
} catch (error) {
|
|
@@ -4761,9 +4776,18 @@ var Session = class {
|
|
|
4761
4776
|
if (this.closing) {
|
|
4762
4777
|
throw RequestError.invalidParams(void 0, "Session is closing");
|
|
4763
4778
|
}
|
|
4779
|
+
if (this.historyMutationActive) {
|
|
4780
|
+
throw RequestError.invalidParams(
|
|
4781
|
+
void 0,
|
|
4782
|
+
"Session history mutation is in progress"
|
|
4783
|
+
);
|
|
4784
|
+
}
|
|
4785
|
+
}
|
|
4786
|
+
isTurnIdle() {
|
|
4787
|
+
return !this.closing && !this.#hasActiveTurn();
|
|
4764
4788
|
}
|
|
4765
4789
|
isIdle() {
|
|
4766
|
-
return
|
|
4790
|
+
return this.isTurnIdle() && this.collectActiveWorkHolds().length === 0;
|
|
4767
4791
|
}
|
|
4768
4792
|
/**
|
|
4769
4793
|
* The Session's current active-work holds, derived on every call.
|
|
@@ -4815,9 +4839,29 @@ var Session = class {
|
|
|
4815
4839
|
}
|
|
4816
4840
|
#hasActiveTurn() {
|
|
4817
4841
|
return Boolean(
|
|
4818
|
-
this.pendingPrompt || this.pendingPromptCompletion || this.goalProcessing || this.cronProcessing || this.cronAbortController || this.cronCompletion || this.notificationProcessing || this.notificationAbortController || this.notificationCompletion
|
|
4842
|
+
this.pendingPrompt || this.historyMutationActive || this.pendingPromptCompletion || this.goalProcessing || this.cronProcessing || this.cronAbortController || this.cronCompletion || this.notificationProcessing || this.notificationAbortController || this.notificationCompletion
|
|
4819
4843
|
);
|
|
4820
4844
|
}
|
|
4845
|
+
beginHistoryMutation() {
|
|
4846
|
+
if (this.closing) {
|
|
4847
|
+
throw RequestError.invalidParams(void 0, "Session is closing");
|
|
4848
|
+
}
|
|
4849
|
+
if (this.#hasActiveTurn()) {
|
|
4850
|
+
throw new RequestError(-32602, "Session is busy processing a turn", {
|
|
4851
|
+
errorKind: "session_busy"
|
|
4852
|
+
});
|
|
4853
|
+
}
|
|
4854
|
+
this.historyMutationActive = true;
|
|
4855
|
+
let released = false;
|
|
4856
|
+
return () => {
|
|
4857
|
+
if (released) return;
|
|
4858
|
+
released = true;
|
|
4859
|
+
this.historyMutationActive = false;
|
|
4860
|
+
if (this.disposed) return;
|
|
4861
|
+
void this.#drainCronQueue();
|
|
4862
|
+
void this.#drainNotificationQueue();
|
|
4863
|
+
};
|
|
4864
|
+
}
|
|
4821
4865
|
beginClose() {
|
|
4822
4866
|
if (this.closing) {
|
|
4823
4867
|
throw RequestError.invalidParams(
|
|
@@ -5167,6 +5211,12 @@ var Session = class {
|
|
|
5167
5211
|
if (this.closing) {
|
|
5168
5212
|
throw RequestError.invalidParams(void 0, "Session is closing");
|
|
5169
5213
|
}
|
|
5214
|
+
if (this.historyMutationActive) {
|
|
5215
|
+
throw RequestError.invalidParams(
|
|
5216
|
+
void 0,
|
|
5217
|
+
"Session history mutation is in progress"
|
|
5218
|
+
);
|
|
5219
|
+
}
|
|
5170
5220
|
if (modelPrompt !== void 0 && invocationContext === void 0) {
|
|
5171
5221
|
throw RequestError.invalidParams(
|
|
5172
5222
|
void 0,
|
|
@@ -5186,6 +5236,12 @@ var Session = class {
|
|
|
5186
5236
|
if (this.closing) {
|
|
5187
5237
|
throw RequestError.invalidParams(void 0, "Session is closing");
|
|
5188
5238
|
}
|
|
5239
|
+
if (this.historyMutationActive) {
|
|
5240
|
+
throw RequestError.invalidParams(
|
|
5241
|
+
void 0,
|
|
5242
|
+
"Session history mutation is in progress"
|
|
5243
|
+
);
|
|
5244
|
+
}
|
|
5189
5245
|
if (admissionCancellation?.aborted) {
|
|
5190
5246
|
return { stopReason: "cancelled" };
|
|
5191
5247
|
}
|
|
@@ -5304,6 +5360,9 @@ var Session = class {
|
|
|
5304
5360
|
this.todoStopGuard.suspend();
|
|
5305
5361
|
return { stopReason: "cancelled" };
|
|
5306
5362
|
}
|
|
5363
|
+
const channelPromptTurn = params._meta?.[CHANNEL_PROMPT_META_KEY] === true;
|
|
5364
|
+
const recording = this.config.getChatRecordingService();
|
|
5365
|
+
const branchCheckpointCursor = scheduledGoalTurn === void 0 && !channelPromptTurn ? recording?.getBranchCheckpointCursor() : void 0;
|
|
5307
5366
|
if (todoStopGuardPreparation.startsWorkChain) {
|
|
5308
5367
|
this.#clearTodoStopGuardQueuedPromptWait();
|
|
5309
5368
|
this.todoStopGuard.startOrdinaryPrompt();
|
|
@@ -5315,7 +5374,6 @@ var Session = class {
|
|
|
5315
5374
|
...channelDelivery ? { channelDelivery: { finalText: "" } } : {},
|
|
5316
5375
|
agentOutput: new AgentOutputMessageCapture(this.config)
|
|
5317
5376
|
};
|
|
5318
|
-
const channelPromptTurn = params._meta?.[CHANNEL_PROMPT_META_KEY] === true;
|
|
5319
5377
|
let resolveCompletion;
|
|
5320
5378
|
this.pendingPromptCompletion = new Promise((resolve6) => {
|
|
5321
5379
|
resolveCompletion = resolve6;
|
|
@@ -5343,12 +5401,36 @@ var Session = class {
|
|
|
5343
5401
|
goalTurn,
|
|
5344
5402
|
channelPromptTurn
|
|
5345
5403
|
);
|
|
5346
|
-
|
|
5404
|
+
let branchPoint;
|
|
5405
|
+
if (recording && branchCheckpointCursor) {
|
|
5406
|
+
try {
|
|
5407
|
+
branchPoint = await recording.recordBranchCheckpointTransaction({
|
|
5408
|
+
cursor: branchCheckpointCursor,
|
|
5409
|
+
stopReason: result.stopReason
|
|
5410
|
+
});
|
|
5411
|
+
} catch (error) {
|
|
5412
|
+
debugLogger6.warn(
|
|
5413
|
+
"Failed to record branch checkpoint; completing the turn without a branch point",
|
|
5414
|
+
error
|
|
5415
|
+
);
|
|
5416
|
+
}
|
|
5417
|
+
}
|
|
5418
|
+
const completedResult = branchPoint ? {
|
|
5419
|
+
...result,
|
|
5420
|
+
_meta: {
|
|
5421
|
+
...result._meta,
|
|
5422
|
+
"qwen.branchPoint": {
|
|
5423
|
+
assistantRecordUuid: branchPoint.assistantRecordUuid,
|
|
5424
|
+
checkpointUuid: branchPoint.checkpointUuid
|
|
5425
|
+
}
|
|
5426
|
+
}
|
|
5427
|
+
} : result;
|
|
5428
|
+
promptResult = completedResult;
|
|
5347
5429
|
releasePendingSend();
|
|
5348
5430
|
void this.#drainCronQueue();
|
|
5349
5431
|
void this.#drainNotificationQueue();
|
|
5350
|
-
this.#maybeEmitFollowupSuggestion(
|
|
5351
|
-
if (channelDelivery &&
|
|
5432
|
+
this.#maybeEmitFollowupSuggestion(completedResult);
|
|
5433
|
+
if (channelDelivery && completedResult.stopReason === "end_turn") {
|
|
5352
5434
|
this.#scheduleChannelDelivery({
|
|
5353
5435
|
sessionId: this.sessionId,
|
|
5354
5436
|
deliveryId: channelDelivery.deliveryId,
|
|
@@ -5360,7 +5442,7 @@ var Session = class {
|
|
|
5360
5442
|
promptId: channelDelivery.deliveryId
|
|
5361
5443
|
});
|
|
5362
5444
|
}
|
|
5363
|
-
return
|
|
5445
|
+
return completedResult;
|
|
5364
5446
|
} catch (error) {
|
|
5365
5447
|
promptFailed = true;
|
|
5366
5448
|
if (error instanceof SessionWriterError) {
|
|
@@ -7501,6 +7583,15 @@ ${this.pendingRecoveredAgentsNotice}
|
|
|
7501
7583
|
if (this.notificationProcessing) return;
|
|
7502
7584
|
if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
|
|
7503
7585
|
if (this.#nextCronQueueIndex() < 0) return;
|
|
7586
|
+
await this.runExclusiveAutomaticHistoryMutation(
|
|
7587
|
+
() => this.#drainCronQueueExclusive()
|
|
7588
|
+
);
|
|
7589
|
+
}
|
|
7590
|
+
async #drainCronQueueExclusive() {
|
|
7591
|
+
if (this.disposed || this.closing || this.cronProcessing) return;
|
|
7592
|
+
if (this.pendingPrompt || this.notificationProcessing) return;
|
|
7593
|
+
if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
|
|
7594
|
+
if (this.#nextCronQueueIndex() < 0) return;
|
|
7504
7595
|
try {
|
|
7505
7596
|
await this.assertCanStartTurn();
|
|
7506
7597
|
} catch (error) {
|
|
@@ -8094,6 +8185,18 @@ ${this.pendingRecoveredAgentsNotice}
|
|
|
8094
8185
|
if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
|
|
8095
8186
|
if (this.notificationQueue.length === 0) return;
|
|
8096
8187
|
if (this.#nextNotificationQueueIndex() < 0) return;
|
|
8188
|
+
await this.runExclusiveAutomaticHistoryMutation(
|
|
8189
|
+
() => this.#drainNotificationQueueExclusive()
|
|
8190
|
+
);
|
|
8191
|
+
}
|
|
8192
|
+
async #drainNotificationQueueExclusive() {
|
|
8193
|
+
if (this.disposed || this.closing || this.notificationProcessing) return;
|
|
8194
|
+
if (this.pendingPrompt || this.cronProcessing || this.cronAbortController) {
|
|
8195
|
+
return;
|
|
8196
|
+
}
|
|
8197
|
+
if (this.#deferAutomaticQueueDrainUntilTurnsSettle()) return;
|
|
8198
|
+
if (this.notificationQueue.length === 0) return;
|
|
8199
|
+
if (this.#nextNotificationQueueIndex() < 0) return;
|
|
8097
8200
|
try {
|
|
8098
8201
|
await this.assertCanStartTurn();
|
|
8099
8202
|
} catch (error) {
|
|
@@ -11523,11 +11626,15 @@ async function shutdownSessionConfig(config) {
|
|
|
11523
11626
|
}
|
|
11524
11627
|
}
|
|
11525
11628
|
__name(shutdownSessionConfig, "shutdownSessionConfig");
|
|
11526
|
-
async function waitForSessionDrain(operation, timeoutMs, kind) {
|
|
11629
|
+
async function waitForSessionDrain(operation, timeoutMs, kind, displayTimeoutMs) {
|
|
11527
11630
|
let timer;
|
|
11528
11631
|
const timeout = new Promise((_, reject) => {
|
|
11529
11632
|
timer = setTimeout(
|
|
11530
|
-
() => reject(
|
|
11633
|
+
() => reject(
|
|
11634
|
+
new Error(
|
|
11635
|
+
`Session ${kind} timed out after ${displayTimeoutMs ?? timeoutMs}ms`
|
|
11636
|
+
)
|
|
11637
|
+
),
|
|
11531
11638
|
timeoutMs
|
|
11532
11639
|
);
|
|
11533
11640
|
timer.unref();
|
|
@@ -11833,6 +11940,15 @@ function getLoadReplayPageSize(params) {
|
|
|
11833
11940
|
return value;
|
|
11834
11941
|
}
|
|
11835
11942
|
__name(getLoadReplayPageSize, "getLoadReplayPageSize");
|
|
11943
|
+
function deriveForkBaseName(name, recording, sessionId) {
|
|
11944
|
+
if (typeof name === "string" && name.trim().length > 0) {
|
|
11945
|
+
return name.trim();
|
|
11946
|
+
}
|
|
11947
|
+
const existingTitle = recording?.getCurrentCustomTitle();
|
|
11948
|
+
const stripped = existingTitle?.replace(/\s*\(Branch(?:\s+\d+)?\)\s*$/, "").trim();
|
|
11949
|
+
return stripped && stripped.length > 0 ? stripped : sessionId.slice(0, 8);
|
|
11950
|
+
}
|
|
11951
|
+
__name(deriveForkBaseName, "deriveForkBaseName");
|
|
11836
11952
|
function createHiddenWorkspaceMemoryConfig(config) {
|
|
11837
11953
|
return new Proxy(config, {
|
|
11838
11954
|
get(target, prop) {
|
|
@@ -13839,6 +13955,7 @@ var QwenAgent = class {
|
|
|
13839
13955
|
__name(this, "QwenAgent");
|
|
13840
13956
|
}
|
|
13841
13957
|
sessions = /* @__PURE__ */ new Map();
|
|
13958
|
+
historyMutationTails = /* @__PURE__ */ new Map();
|
|
13842
13959
|
startingSessionIds = /* @__PURE__ */ new Set();
|
|
13843
13960
|
activePromptCalls = /* @__PURE__ */ new Map();
|
|
13844
13961
|
workspaceMcpDiscoveryConfig;
|
|
@@ -13902,6 +14019,43 @@ var QwenAgent = class {
|
|
|
13902
14019
|
throw new SessionWriterUnavailableError();
|
|
13903
14020
|
}
|
|
13904
14021
|
}
|
|
14022
|
+
async runExclusiveHistoryMutation(sessionId, operation, waitTimeoutMs, waitDisplayTimeoutMs) {
|
|
14023
|
+
const previous = this.historyMutationTails.get(sessionId) ?? Promise.resolve();
|
|
14024
|
+
let release;
|
|
14025
|
+
const gate = new Promise((resolve6) => {
|
|
14026
|
+
release = resolve6;
|
|
14027
|
+
});
|
|
14028
|
+
const current = previous.then(() => gate);
|
|
14029
|
+
this.historyMutationTails.set(sessionId, current);
|
|
14030
|
+
try {
|
|
14031
|
+
if (waitTimeoutMs === void 0) {
|
|
14032
|
+
await previous;
|
|
14033
|
+
} else {
|
|
14034
|
+
await waitForSessionDrain(
|
|
14035
|
+
previous,
|
|
14036
|
+
waitTimeoutMs,
|
|
14037
|
+
"close",
|
|
14038
|
+
waitDisplayTimeoutMs
|
|
14039
|
+
);
|
|
14040
|
+
}
|
|
14041
|
+
} catch (error) {
|
|
14042
|
+
release();
|
|
14043
|
+
void current.then(() => {
|
|
14044
|
+
if (this.historyMutationTails.get(sessionId) === current) {
|
|
14045
|
+
this.historyMutationTails.delete(sessionId);
|
|
14046
|
+
}
|
|
14047
|
+
});
|
|
14048
|
+
throw error;
|
|
14049
|
+
}
|
|
14050
|
+
try {
|
|
14051
|
+
return await operation();
|
|
14052
|
+
} finally {
|
|
14053
|
+
release();
|
|
14054
|
+
if (this.historyMutationTails.get(sessionId) === current) {
|
|
14055
|
+
this.historyMutationTails.delete(sessionId);
|
|
14056
|
+
}
|
|
14057
|
+
}
|
|
14058
|
+
}
|
|
13905
14059
|
rejectUnsupportedGuardedHiddenAgent(operation) {
|
|
13906
14060
|
if (this.managedToolInvocationGuard && this.externalToolGuardProviderAttached) {
|
|
13907
14061
|
throw RequestError.invalidParams(
|
|
@@ -14401,11 +14555,10 @@ var QwenAgent = class {
|
|
|
14401
14555
|
}
|
|
14402
14556
|
const recorder = session.getConfig().getChatRecordingService();
|
|
14403
14557
|
const requireFlush = opts?.requireFlush === true;
|
|
14404
|
-
if (requireFlush)
|
|
14405
|
-
await recorder?.flush();
|
|
14406
|
-
}
|
|
14558
|
+
if (requireFlush) await recorder?.flush();
|
|
14407
14559
|
const drainTimeoutMs = opts?.drainTimeoutMs ?? SESSION_DRAIN_TIMEOUT_MS;
|
|
14408
14560
|
const cancelClose = opts?.waitForCloseGate ? await beginSessionCloseAfterCurrentGate(session, drainTimeoutMs) : session.beginClose();
|
|
14561
|
+
const conditionalDrainDeadline = opts?.onlyIfUnheld ? Date.now() + drainTimeoutMs : void 0;
|
|
14409
14562
|
if (opts?.onlyIfUnheld) {
|
|
14410
14563
|
const holds = session.collectActiveWorkHolds();
|
|
14411
14564
|
if (holds.length > 0) {
|
|
@@ -14413,13 +14566,24 @@ var QwenAgent = class {
|
|
|
14413
14566
|
return { closed: false, holds };
|
|
14414
14567
|
}
|
|
14415
14568
|
}
|
|
14416
|
-
for (const [requestId, generation] of this.generationControllers) {
|
|
14417
|
-
if (generation.sessionId !== sessionId) continue;
|
|
14418
|
-
generation.controller.abort();
|
|
14419
|
-
this.generationControllers.delete(requestId);
|
|
14420
|
-
}
|
|
14421
14569
|
let removedFromStore = false;
|
|
14422
14570
|
try {
|
|
14571
|
+
if (opts?.onlyIfUnheld) {
|
|
14572
|
+
await waitForSessionDrain(
|
|
14573
|
+
session.waitForActiveTurnsToSettle(),
|
|
14574
|
+
drainTimeoutMs,
|
|
14575
|
+
"close"
|
|
14576
|
+
);
|
|
14577
|
+
const holds = session.collectActiveWorkHolds();
|
|
14578
|
+
if (holds.length > 0) {
|
|
14579
|
+
return { closed: false, holds };
|
|
14580
|
+
}
|
|
14581
|
+
}
|
|
14582
|
+
for (const [requestId, generation] of this.generationControllers) {
|
|
14583
|
+
if (generation.sessionId !== sessionId) continue;
|
|
14584
|
+
generation.controller.abort();
|
|
14585
|
+
this.generationControllers.delete(requestId);
|
|
14586
|
+
}
|
|
14423
14587
|
await waitForSessionDrain(
|
|
14424
14588
|
(async () => {
|
|
14425
14589
|
try {
|
|
@@ -14431,41 +14595,68 @@ var QwenAgent = class {
|
|
|
14431
14595
|
}
|
|
14432
14596
|
await session.waitForActiveTurnsToSettle();
|
|
14433
14597
|
})(),
|
|
14434
|
-
drainTimeoutMs,
|
|
14435
|
-
"close"
|
|
14598
|
+
conditionalDrainDeadline === void 0 ? drainTimeoutMs : Math.max(1, conditionalDrainDeadline - Date.now()),
|
|
14599
|
+
"close",
|
|
14600
|
+
// Report the shared budget, not the phase-2 residue — a residue like
|
|
14601
|
+
// "1ms" hides that the settle phase consumed the budget and sends
|
|
14602
|
+
// oncall grepping for a timeout setting that does not exist.
|
|
14603
|
+
drainTimeoutMs
|
|
14436
14604
|
);
|
|
14437
|
-
|
|
14438
|
-
|
|
14439
|
-
|
|
14440
|
-
|
|
14441
|
-
|
|
14442
|
-
|
|
14443
|
-
|
|
14444
|
-
|
|
14445
|
-
|
|
14446
|
-
|
|
14447
|
-
|
|
14448
|
-
|
|
14449
|
-
|
|
14450
|
-
|
|
14451
|
-
|
|
14452
|
-
|
|
14453
|
-
|
|
14454
|
-
|
|
14455
|
-
|
|
14456
|
-
|
|
14457
|
-
|
|
14458
|
-
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
|
|
14463
|
-
|
|
14464
|
-
|
|
14465
|
-
|
|
14466
|
-
|
|
14467
|
-
|
|
14468
|
-
|
|
14605
|
+
const blockedByHolds = await this.runExclusiveHistoryMutation(
|
|
14606
|
+
sessionId,
|
|
14607
|
+
async () => {
|
|
14608
|
+
if (this.sessions.get(sessionId) !== session) {
|
|
14609
|
+
removedFromStore = true;
|
|
14610
|
+
return void 0;
|
|
14611
|
+
}
|
|
14612
|
+
if (opts?.onlyIfUnheld) {
|
|
14613
|
+
const holds = session.collectActiveWorkHolds();
|
|
14614
|
+
if (holds.length > 0) {
|
|
14615
|
+
return { closed: false, holds };
|
|
14616
|
+
}
|
|
14617
|
+
}
|
|
14618
|
+
recorder?.finalize();
|
|
14619
|
+
let flushError;
|
|
14620
|
+
try {
|
|
14621
|
+
await recorder?.flush();
|
|
14622
|
+
} catch (error) {
|
|
14623
|
+
flushError = error;
|
|
14624
|
+
}
|
|
14625
|
+
if (flushError !== void 0 && requireFlush) {
|
|
14626
|
+
throw flushError;
|
|
14627
|
+
}
|
|
14628
|
+
let closeError;
|
|
14629
|
+
try {
|
|
14630
|
+
await recorder?.close();
|
|
14631
|
+
} catch (error) {
|
|
14632
|
+
closeError = error;
|
|
14633
|
+
}
|
|
14634
|
+
if (recorder?.hasWriteOwnership()) {
|
|
14635
|
+
throw closeError ?? new SessionWriterUnavailableError();
|
|
14636
|
+
}
|
|
14637
|
+
const cleanupErrors = [];
|
|
14638
|
+
if (flushError !== void 0) cleanupErrors.push(flushError);
|
|
14639
|
+
if (closeError !== void 0) cleanupErrors.push(closeError);
|
|
14640
|
+
await this.removeStoredSessionEntry(
|
|
14641
|
+
sessionId,
|
|
14642
|
+
session,
|
|
14643
|
+
cleanupErrors,
|
|
14644
|
+
{
|
|
14645
|
+
shutdownConfig: opts?.shutdownConfig
|
|
14646
|
+
}
|
|
14647
|
+
);
|
|
14648
|
+
removedFromStore = true;
|
|
14649
|
+
return void 0;
|
|
14650
|
+
},
|
|
14651
|
+
// The mutation wait shares the conditional close's budget too, or
|
|
14652
|
+
// the whole round trip can outlast the daemon's outer wait — the
|
|
14653
|
+
// coupling the drain budget exists to keep. The mutation body
|
|
14654
|
+
// itself stays untimed, so the guarantee remains approximate. The
|
|
14655
|
+
// message reports the shared budget, not the residue.
|
|
14656
|
+
conditionalDrainDeadline === void 0 ? drainTimeoutMs : Math.max(1, conditionalDrainDeadline - Date.now()),
|
|
14657
|
+
drainTimeoutMs
|
|
14658
|
+
);
|
|
14659
|
+
if (blockedByHolds) return blockedByHolds;
|
|
14469
14660
|
} finally {
|
|
14470
14661
|
if (!removedFromStore) cancelClose();
|
|
14471
14662
|
}
|
|
@@ -14573,7 +14764,7 @@ var QwenAgent = class {
|
|
|
14573
14764
|
}
|
|
14574
14765
|
this.clientCapabilities = args.clientCapabilities;
|
|
14575
14766
|
const authMethods = buildAuthMethods();
|
|
14576
|
-
const version = "0.21.
|
|
14767
|
+
const version = "0.21.13";
|
|
14577
14768
|
const response = {
|
|
14578
14769
|
protocolVersion: PROTOCOL_VERSION,
|
|
14579
14770
|
agentInfo: {
|
|
@@ -15480,6 +15671,9 @@ var QwenAgent = class {
|
|
|
15480
15671
|
throw error;
|
|
15481
15672
|
}
|
|
15482
15673
|
}
|
|
15674
|
+
for (const call of this.activePromptCalls.get(sessionId) ?? []) {
|
|
15675
|
+
call.controller.abort();
|
|
15676
|
+
}
|
|
15483
15677
|
}
|
|
15484
15678
|
loadPermissionSettings(cwd) {
|
|
15485
15679
|
this.settings = loadSettings(cwd);
|
|
@@ -19814,9 +20008,25 @@ ${outputText}
|
|
|
19814
20008
|
`Session not found for id: ${sessionId}`
|
|
19815
20009
|
);
|
|
19816
20010
|
}
|
|
20011
|
+
if (!session.isTurnIdle()) {
|
|
20012
|
+
throw new RequestError(
|
|
20013
|
+
-32602,
|
|
20014
|
+
"Cannot rewind while a prompt is running",
|
|
20015
|
+
{
|
|
20016
|
+
errorKind: "session_busy"
|
|
20017
|
+
}
|
|
20018
|
+
);
|
|
20019
|
+
}
|
|
20020
|
+
const rawPromptId = params["promptId"];
|
|
20021
|
+
if (rawPromptId !== void 0 && typeof rawPromptId !== "string") {
|
|
20022
|
+
throw new RequestError(-32602, "Invalid promptId format", {
|
|
20023
|
+
errorKind: "invalid_rewind_target"
|
|
20024
|
+
});
|
|
20025
|
+
}
|
|
20026
|
+
const promptId = typeof rawPromptId === "string" ? rawPromptId : void 0;
|
|
19817
20027
|
let turnIndex = params["targetTurnIndex"];
|
|
19818
|
-
const
|
|
19819
|
-
if (
|
|
20028
|
+
const resolveFromPromptId = promptId !== void 0 && (turnIndex === void 0 || turnIndex === null);
|
|
20029
|
+
if (resolveFromPromptId) {
|
|
19820
20030
|
const prefix = sessionId + "########";
|
|
19821
20031
|
if (!promptId.startsWith(prefix)) {
|
|
19822
20032
|
throw new RequestError(-32602, "Invalid promptId format", {
|
|
@@ -19831,104 +20041,113 @@ ${outputText}
|
|
|
19831
20041
|
{ errorKind: "invalid_rewind_target" }
|
|
19832
20042
|
);
|
|
19833
20043
|
}
|
|
19834
|
-
|
|
19835
|
-
const snapshots = fhs.getSnapshots();
|
|
19836
|
-
const snapshotIdx = snapshots.findIndex(
|
|
19837
|
-
(s) => s.promptId === promptId
|
|
19838
|
-
);
|
|
19839
|
-
if (snapshotIdx < 0) {
|
|
19840
|
-
throw new RequestError(
|
|
19841
|
-
-32602,
|
|
19842
|
-
"Snapshot not found for the given promptId",
|
|
19843
|
-
{ errorKind: "invalid_rewind_target" }
|
|
19844
|
-
);
|
|
19845
|
-
}
|
|
19846
|
-
turnIndex = snapshotIdx;
|
|
19847
|
-
}
|
|
19848
|
-
if (!Number.isInteger(turnIndex) || turnIndex < 0) {
|
|
20044
|
+
} else if (!Number.isInteger(turnIndex) || turnIndex < 0) {
|
|
19849
20045
|
throw RequestError.invalidParams(
|
|
19850
20046
|
void 0,
|
|
19851
20047
|
"Invalid or missing targetTurnIndex"
|
|
19852
20048
|
);
|
|
19853
20049
|
}
|
|
19854
|
-
|
|
19855
|
-
|
|
19856
|
-
|
|
19857
|
-
|
|
19858
|
-
|
|
19859
|
-
|
|
19860
|
-
|
|
19861
|
-
|
|
19862
|
-
|
|
19863
|
-
|
|
19864
|
-
|
|
19865
|
-
|
|
19866
|
-
|
|
19867
|
-
});
|
|
19868
|
-
}
|
|
19869
|
-
if (msg.includes("compressed or does not exist")) {
|
|
19870
|
-
throw new RequestError(err.code, msg, {
|
|
19871
|
-
errorKind: "invalid_rewind_target"
|
|
19872
|
-
});
|
|
20050
|
+
return await this.runExclusiveHistoryMutation(sessionId, async () => {
|
|
20051
|
+
if (resolveFromPromptId) {
|
|
20052
|
+
const fhs = session.getConfig().getFileHistoryService();
|
|
20053
|
+
const snapshots = fhs.getSnapshots();
|
|
20054
|
+
const snapshotIdx = snapshots.findIndex(
|
|
20055
|
+
(s) => s.promptId === promptId
|
|
20056
|
+
);
|
|
20057
|
+
if (snapshotIdx < 0) {
|
|
20058
|
+
throw new RequestError(
|
|
20059
|
+
-32602,
|
|
20060
|
+
"Snapshot not found for the given promptId",
|
|
20061
|
+
{ errorKind: "invalid_rewind_target" }
|
|
20062
|
+
);
|
|
19873
20063
|
}
|
|
20064
|
+
turnIndex = snapshotIdx;
|
|
19874
20065
|
}
|
|
19875
|
-
|
|
19876
|
-
|
|
19877
|
-
|
|
19878
|
-
|
|
19879
|
-
if (rewindFiles && promptId) {
|
|
19880
|
-
const fhs = session.getConfig().getFileHistoryService();
|
|
20066
|
+
const rewindFiles = params["rewindFiles"] !== false;
|
|
20067
|
+
const historyBeforeRewind = session.captureHistorySnapshot();
|
|
20068
|
+
let rewindResult;
|
|
20069
|
+
let releaseHistoryMutation;
|
|
19881
20070
|
try {
|
|
19882
|
-
|
|
19883
|
-
|
|
19884
|
-
|
|
20071
|
+
rewindResult = session.rewindToTurn(turnIndex, {
|
|
20072
|
+
rewindFiles
|
|
20073
|
+
});
|
|
20074
|
+
releaseHistoryMutation = session.beginHistoryMutation();
|
|
19885
20075
|
} catch (err) {
|
|
19886
|
-
|
|
19887
|
-
|
|
19888
|
-
|
|
19889
|
-
|
|
19890
|
-
|
|
20076
|
+
if (err instanceof RequestError) {
|
|
20077
|
+
const msg = err.message;
|
|
20078
|
+
if (msg.includes("Cannot rewind while a prompt is running") || msg.includes("Session is busy processing a turn")) {
|
|
20079
|
+
throw new RequestError(err.code, msg, {
|
|
20080
|
+
errorKind: "session_busy"
|
|
20081
|
+
});
|
|
20082
|
+
}
|
|
20083
|
+
if (msg.includes("compressed or does not exist")) {
|
|
20084
|
+
throw new RequestError(err.code, msg, {
|
|
20085
|
+
errorKind: "invalid_rewind_target"
|
|
20086
|
+
});
|
|
20087
|
+
}
|
|
20088
|
+
}
|
|
20089
|
+
throw err;
|
|
19891
20090
|
}
|
|
19892
|
-
|
|
19893
|
-
|
|
19894
|
-
|
|
19895
|
-
|
|
19896
|
-
|
|
19897
|
-
|
|
19898
|
-
|
|
19899
|
-
|
|
19900
|
-
|
|
19901
|
-
|
|
19902
|
-
|
|
19903
|
-
|
|
19904
|
-
|
|
19905
|
-
|
|
19906
|
-
|
|
19907
|
-
|
|
19908
|
-
|
|
19909
|
-
|
|
19910
|
-
|
|
19911
|
-
|
|
19912
|
-
|
|
19913
|
-
|
|
20091
|
+
try {
|
|
20092
|
+
let filesChanged = [];
|
|
20093
|
+
let filesFailed = [];
|
|
20094
|
+
if (rewindFiles && promptId) {
|
|
20095
|
+
const fhs = session.getConfig().getFileHistoryService();
|
|
20096
|
+
try {
|
|
20097
|
+
const fileResult = await fhs.rewind(promptId, true);
|
|
20098
|
+
filesChanged = fileResult.filesChanged;
|
|
20099
|
+
filesFailed = fileResult.filesFailed;
|
|
20100
|
+
} catch (err) {
|
|
20101
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
20102
|
+
debugLogger8.error(
|
|
20103
|
+
`[ACP] File-history rewind failed for session=${sessionId} promptId=${promptId}: ${reason}`
|
|
20104
|
+
);
|
|
20105
|
+
filesFailed = [`file-history-rewind: ${reason}`];
|
|
20106
|
+
}
|
|
20107
|
+
}
|
|
20108
|
+
let artifactSnapshot;
|
|
20109
|
+
let artifactSnapshotUnavailable;
|
|
20110
|
+
try {
|
|
20111
|
+
const config = session.getConfig();
|
|
20112
|
+
const recording = config.getChatRecordingService();
|
|
20113
|
+
await recording?.flush();
|
|
20114
|
+
const loadAuthoritative = /* @__PURE__ */ __name(() => config.getSessionService().loadSession(sessionId), "loadAuthoritative");
|
|
20115
|
+
const sessionData = recording ? await recording.runWithWriteBarrier(loadAuthoritative) : await loadAuthoritative();
|
|
20116
|
+
if (sessionData === void 0) {
|
|
20117
|
+
artifactSnapshotUnavailable = "session data unavailable after rewind";
|
|
20118
|
+
} else if (sessionData.artifactSnapshot) {
|
|
20119
|
+
artifactSnapshot = sessionData.artifactSnapshot;
|
|
20120
|
+
} else {
|
|
20121
|
+
artifactSnapshot = {
|
|
20122
|
+
v: SESSION_ARTIFACT_PERSISTENCE_VERSION,
|
|
20123
|
+
sessionId,
|
|
20124
|
+
sequence: 0,
|
|
20125
|
+
artifacts: [],
|
|
20126
|
+
tombstonedIds: [],
|
|
20127
|
+
stickyEphemeralIds: [],
|
|
20128
|
+
warnings: []
|
|
20129
|
+
};
|
|
20130
|
+
}
|
|
20131
|
+
} catch (err) {
|
|
20132
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
20133
|
+
artifactSnapshotUnavailable = "artifact snapshot unavailable after rewind";
|
|
20134
|
+
debugLogger8.warn(
|
|
20135
|
+
`[ACP] Failed to rebuild artifact snapshot after rewind for session=${sessionId}: ${reason}`
|
|
20136
|
+
);
|
|
20137
|
+
}
|
|
20138
|
+
return {
|
|
20139
|
+
success: true,
|
|
20140
|
+
historyBeforeRewind,
|
|
20141
|
+
...rewindResult,
|
|
20142
|
+
filesChanged,
|
|
20143
|
+
filesFailed,
|
|
20144
|
+
...artifactSnapshot ? { artifactSnapshot } : {},
|
|
20145
|
+
...artifactSnapshotUnavailable ? { artifactSnapshotUnavailable } : {}
|
|
19914
20146
|
};
|
|
20147
|
+
} finally {
|
|
20148
|
+
releaseHistoryMutation();
|
|
19915
20149
|
}
|
|
19916
|
-
}
|
|
19917
|
-
const reason = err instanceof Error ? err.message : String(err);
|
|
19918
|
-
artifactSnapshotUnavailable = "artifact snapshot unavailable after rewind";
|
|
19919
|
-
debugLogger8.warn(
|
|
19920
|
-
`[ACP] Failed to rebuild artifact snapshot after rewind for session=${sessionId}: ${reason}`
|
|
19921
|
-
);
|
|
19922
|
-
}
|
|
19923
|
-
return {
|
|
19924
|
-
success: true,
|
|
19925
|
-
historyBeforeRewind,
|
|
19926
|
-
...rewindResult,
|
|
19927
|
-
filesChanged,
|
|
19928
|
-
filesFailed,
|
|
19929
|
-
...artifactSnapshot ? { artifactSnapshot } : {},
|
|
19930
|
-
...artifactSnapshotUnavailable ? { artifactSnapshotUnavailable } : {}
|
|
19931
|
-
};
|
|
20150
|
+
});
|
|
19932
20151
|
}
|
|
19933
20152
|
case "qwen/session/loadUpdates": {
|
|
19934
20153
|
const sessionId = params["sessionId"];
|
|
@@ -20031,6 +20250,16 @@ ${outputText}
|
|
|
20031
20250
|
);
|
|
20032
20251
|
}
|
|
20033
20252
|
const name = params["name"];
|
|
20253
|
+
const atRecordId = params["atRecordId"];
|
|
20254
|
+
if (atRecordId !== void 0 && typeof atRecordId !== "string") {
|
|
20255
|
+
throw RequestError.invalidParams(void 0, "Invalid atRecordId");
|
|
20256
|
+
}
|
|
20257
|
+
if (isSideTask && atRecordId !== void 0) {
|
|
20258
|
+
throw RequestError.invalidParams(
|
|
20259
|
+
void 0,
|
|
20260
|
+
"atRecordId is not supported for side tasks"
|
|
20261
|
+
);
|
|
20262
|
+
}
|
|
20034
20263
|
const sourceSession = this.sessions.get(sessionId);
|
|
20035
20264
|
if (!sourceSession) {
|
|
20036
20265
|
throw new RequestError(-32004, `Session not found: ${sessionId}`, {
|
|
@@ -20038,60 +20267,77 @@ ${outputText}
|
|
|
20038
20267
|
sessionId
|
|
20039
20268
|
});
|
|
20040
20269
|
}
|
|
20270
|
+
if (!isSideTask) {
|
|
20271
|
+
if (!sourceSession.isTurnIdle()) {
|
|
20272
|
+
throw new RequestError(
|
|
20273
|
+
-32602,
|
|
20274
|
+
"Cannot branch while a prompt is running",
|
|
20275
|
+
{ errorKind: "session_busy" }
|
|
20276
|
+
);
|
|
20277
|
+
}
|
|
20278
|
+
try {
|
|
20279
|
+
return await this.runExclusiveHistoryMutation(
|
|
20280
|
+
sessionId,
|
|
20281
|
+
async () => {
|
|
20282
|
+
await sourceSession.assertCanStartTurn();
|
|
20283
|
+
const releaseHistoryMutation = sourceSession.beginHistoryMutation();
|
|
20284
|
+
try {
|
|
20285
|
+
const sourceConfig2 = sourceSession.getConfig();
|
|
20286
|
+
const recording2 = sourceConfig2.getChatRecordingService();
|
|
20287
|
+
const sessionService2 = sourceConfig2.getSessionService();
|
|
20288
|
+
const baseName = deriveForkBaseName(
|
|
20289
|
+
name,
|
|
20290
|
+
recording2,
|
|
20291
|
+
sessionId
|
|
20292
|
+
);
|
|
20293
|
+
const title2 = await computeUniqueBranchTitle(
|
|
20294
|
+
baseName,
|
|
20295
|
+
sessionService2
|
|
20296
|
+
);
|
|
20297
|
+
const newSessionId2 = randomUUID2();
|
|
20298
|
+
const fork2 = /* @__PURE__ */ __name(() => sessionService2.forkSession(sessionId, newSessionId2, {
|
|
20299
|
+
title: title2,
|
|
20300
|
+
...atRecordId !== void 0 ? { atRecordId } : {}
|
|
20301
|
+
}), "fork");
|
|
20302
|
+
if (recording2) {
|
|
20303
|
+
await recording2.runWithWriteBarrier(fork2);
|
|
20304
|
+
} else {
|
|
20305
|
+
await fork2();
|
|
20306
|
+
}
|
|
20307
|
+
return { newSessionId: newSessionId2, title: title2, displayName: title2 };
|
|
20308
|
+
} finally {
|
|
20309
|
+
releaseHistoryMutation();
|
|
20310
|
+
}
|
|
20311
|
+
}
|
|
20312
|
+
);
|
|
20313
|
+
} catch (error) {
|
|
20314
|
+
if (error instanceof BranchPointInvalidError) {
|
|
20315
|
+
throw new RequestError(-32009, error.message, {
|
|
20316
|
+
errorKind: "branch_point_invalid",
|
|
20317
|
+
recordId: error.recordId
|
|
20318
|
+
});
|
|
20319
|
+
}
|
|
20320
|
+
throw error;
|
|
20321
|
+
}
|
|
20322
|
+
}
|
|
20041
20323
|
const sourceConfig = sourceSession.getConfig();
|
|
20042
20324
|
const recording = sourceConfig.getChatRecordingService();
|
|
20043
|
-
if (recording)
|
|
20044
|
-
await recording.flush();
|
|
20045
|
-
}
|
|
20046
|
-
const newSessionId = randomUUID2();
|
|
20325
|
+
if (recording) await recording.flush();
|
|
20047
20326
|
const sessionService = sourceConfig.getSessionService();
|
|
20048
|
-
const
|
|
20327
|
+
const title = deriveForkBaseName(name, recording, sessionId);
|
|
20328
|
+
const newSessionId = randomUUID2();
|
|
20329
|
+
const fork = /* @__PURE__ */ __name(() => sessionService.forkSession(sessionId, newSessionId, {
|
|
20049
20330
|
source: {
|
|
20050
20331
|
sourceType: "side_task",
|
|
20051
20332
|
sourceId: sessionId
|
|
20052
|
-
}
|
|
20053
|
-
|
|
20054
|
-
|
|
20333
|
+
},
|
|
20334
|
+
title
|
|
20335
|
+
}), "fork");
|
|
20336
|
+
if (recording) {
|
|
20055
20337
|
await recording.runWithWriteBarrier(fork);
|
|
20056
20338
|
} else {
|
|
20057
20339
|
await fork();
|
|
20058
20340
|
}
|
|
20059
|
-
let title;
|
|
20060
|
-
try {
|
|
20061
|
-
let baseName;
|
|
20062
|
-
if (typeof name === "string" && name.trim().length > 0) {
|
|
20063
|
-
baseName = name.trim();
|
|
20064
|
-
} else {
|
|
20065
|
-
const existingTitle = recording?.getCurrentCustomTitle();
|
|
20066
|
-
const stripped = existingTitle?.replace(/\s*\(Branch(?:\s+\d+)?\)\s*$/, "").trim();
|
|
20067
|
-
if (stripped && stripped.length > 0) {
|
|
20068
|
-
baseName = stripped;
|
|
20069
|
-
} else {
|
|
20070
|
-
baseName = sessionId.slice(0, 8);
|
|
20071
|
-
}
|
|
20072
|
-
}
|
|
20073
|
-
title = isSideTask ? baseName : await computeUniqueBranchTitle(baseName, sessionService);
|
|
20074
|
-
const renamed = await sessionService.renameSession(
|
|
20075
|
-
newSessionId,
|
|
20076
|
-
title,
|
|
20077
|
-
"manual"
|
|
20078
|
-
);
|
|
20079
|
-
if (!renamed) {
|
|
20080
|
-
throw new RequestError(
|
|
20081
|
-
-32603,
|
|
20082
|
-
`Failed to set title on forked session ${newSessionId}`,
|
|
20083
|
-
{ errorKind: "internal", sessionId: newSessionId }
|
|
20084
|
-
);
|
|
20085
|
-
}
|
|
20086
|
-
} catch (err) {
|
|
20087
|
-
sessionService.removeSession(newSessionId).catch((rmErr) => {
|
|
20088
|
-
process.stderr.write(
|
|
20089
|
-
`qwen serve: failed to clean up orphan session ${newSessionId}: ${rmErr instanceof Error ? rmErr.message : rmErr}
|
|
20090
|
-
`
|
|
20091
|
-
);
|
|
20092
|
-
});
|
|
20093
|
-
throw err;
|
|
20094
|
-
}
|
|
20095
20341
|
return { newSessionId, title, displayName: title };
|
|
20096
20342
|
}
|
|
20097
20343
|
case "qwen/settings/getCore": {
|
|
@@ -20876,6 +21122,7 @@ ${outputText}
|
|
|
20876
21122
|
config,
|
|
20877
21123
|
this.connection,
|
|
20878
21124
|
settings,
|
|
21125
|
+
(operation) => this.runExclusiveHistoryMutation(sessionId, operation),
|
|
20879
21126
|
() => this.activeWorkReporter?.notifyChanged()
|
|
20880
21127
|
);
|
|
20881
21128
|
let published = false;
|