@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
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-OCPBI7J5.js";
|
|
20
20
|
import {
|
|
21
21
|
defaultSpawnChannelFactory
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NHDR76JX.js";
|
|
23
23
|
import {
|
|
24
24
|
BridgeChannelClosedError,
|
|
25
25
|
BridgeTimeoutError,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
SessionRestoreTimeoutError,
|
|
30
30
|
createIdleWorkspaceExtensionsStatus,
|
|
31
31
|
createIdleWorkspaceHooksStatus
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-QNQAPSN2.js";
|
|
33
33
|
import {
|
|
34
34
|
ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
|
|
35
35
|
ACTIVE_WORK_CLOSE_TIMEOUT_MS,
|
|
@@ -62,8 +62,9 @@ import {
|
|
|
62
62
|
TODO_STOP_GUARD_QUEUE_RELEASE_METHOD,
|
|
63
63
|
WORKTREE_MCP_DEFER_META_KEY,
|
|
64
64
|
clampActiveWorkIntervalMs,
|
|
65
|
-
isValidTrustedModelPrompt
|
|
66
|
-
|
|
65
|
+
isValidTrustedModelPrompt,
|
|
66
|
+
sessionCloseDrainBudgetMs
|
|
67
|
+
} from "./chunk-S5DWMTHO.js";
|
|
67
68
|
import {
|
|
68
69
|
BranchWhilePromptActiveError,
|
|
69
70
|
BridgeChannelQuarantinedError,
|
|
@@ -120,16 +121,16 @@ import {
|
|
|
120
121
|
metadataBudgetBytes,
|
|
121
122
|
normalizeSnapshotPayload,
|
|
122
123
|
stableSessionArtifactId
|
|
123
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-4S5337WV.js";
|
|
124
125
|
import {
|
|
125
126
|
DAEMON_TRACEPARENT_META_KEY,
|
|
126
127
|
DAEMON_TRACESTATE_META_KEY
|
|
127
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-TIGA2IVL.js";
|
|
128
129
|
import {
|
|
129
130
|
INVOCATION_CONTEXT_META_KEY,
|
|
130
131
|
PRIVATE_ACP_CAPABILITY_ENV,
|
|
131
132
|
PRIVATE_PARENT_CAPABILITY_META_KEY
|
|
132
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-RVOJ2FBP.js";
|
|
133
134
|
import {
|
|
134
135
|
init_esbuild_shims
|
|
135
136
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -604,7 +605,7 @@ var TurnBoundaryCompactionEngine = class {
|
|
|
604
605
|
const slot = this.slots[existingIdx];
|
|
605
606
|
slot.chunks.push(text);
|
|
606
607
|
if (event.id !== void 0) slot.lastEventId = event.id;
|
|
607
|
-
slot.lastMeta =
|
|
608
|
+
slot.lastMeta = mergeTranscriptUpdateMeta(slot.lastMeta, meta);
|
|
608
609
|
slot.lastEnvelopeMeta = event._meta ?? slot.lastEnvelopeMeta;
|
|
609
610
|
slot.lastTurn = captureTurnFields(event, slot.lastTurn);
|
|
610
611
|
slot.lastSessionId = captureSessionId(event) ?? slot.lastSessionId;
|
|
@@ -628,7 +629,7 @@ var TurnBoundaryCompactionEngine = class {
|
|
|
628
629
|
if (lastSlot && lastSlot.kind === kind && lastSlot.parentToolCallId == null && stringArraysEqual(lastSlot.sourceRecordIds, sourceRecordIds)) {
|
|
629
630
|
lastSlot.chunks.push(text);
|
|
630
631
|
if (event.id !== void 0) lastSlot.lastEventId = event.id;
|
|
631
|
-
lastSlot.lastMeta =
|
|
632
|
+
lastSlot.lastMeta = mergeTranscriptUpdateMeta(lastSlot.lastMeta, meta);
|
|
632
633
|
lastSlot.lastEnvelopeMeta = event._meta ?? lastSlot.lastEnvelopeMeta;
|
|
633
634
|
lastSlot.lastTurn = captureTurnFields(event, lastSlot.lastTurn);
|
|
634
635
|
lastSlot.lastSessionId = captureSessionId(event) ?? lastSlot.lastSessionId;
|
|
@@ -1053,13 +1054,26 @@ function mergeTranscriptUpdateMeta(existing, incoming) {
|
|
|
1053
1054
|
...extractSourceRecordIdsFromMeta(incomingRecord) ?? []
|
|
1054
1055
|
])
|
|
1055
1056
|
];
|
|
1057
|
+
const existingTranscript = extractTranscriptMeta(existingRecord);
|
|
1058
|
+
const incomingTranscript = extractTranscriptMeta(incomingRecord);
|
|
1056
1059
|
return {
|
|
1057
1060
|
...existingRecord ?? {},
|
|
1058
1061
|
...incomingRecord ?? {},
|
|
1059
|
-
...sourceRecordIds.length > 0 ? {
|
|
1062
|
+
...existingTranscript || incomingTranscript || sourceRecordIds.length > 0 ? {
|
|
1063
|
+
qwenTranscript: {
|
|
1064
|
+
...existingTranscript ?? {},
|
|
1065
|
+
...incomingTranscript ?? {},
|
|
1066
|
+
...sourceRecordIds.length > 0 ? { sourceRecordIds } : {}
|
|
1067
|
+
}
|
|
1068
|
+
} : {}
|
|
1060
1069
|
};
|
|
1061
1070
|
}
|
|
1062
1071
|
__name(mergeTranscriptUpdateMeta, "mergeTranscriptUpdateMeta");
|
|
1072
|
+
function extractTranscriptMeta(meta) {
|
|
1073
|
+
const transcript = meta?.["qwenTranscript"];
|
|
1074
|
+
return typeof transcript === "object" && transcript !== null ? transcript : void 0;
|
|
1075
|
+
}
|
|
1076
|
+
__name(extractTranscriptMeta, "extractTranscriptMeta");
|
|
1063
1077
|
|
|
1064
1078
|
// packages/acp-bridge/src/journalGrowthPolicy.ts
|
|
1065
1079
|
init_esbuild_shims();
|
|
@@ -6678,13 +6692,20 @@ function broadcastPromptCancelledOnce(entry, sessionId, promptId, originatorClie
|
|
|
6678
6692
|
__name(broadcastPromptCancelledOnce, "broadcastPromptCancelledOnce");
|
|
6679
6693
|
function broadcastTurnComplete(entry, sessionId, promptResult, promptId, originatorClientId, mutateTurnState) {
|
|
6680
6694
|
try {
|
|
6695
|
+
const meta = promptResult["_meta"] && typeof promptResult["_meta"] === "object" ? promptResult["_meta"] : void 0;
|
|
6696
|
+
const rawBranchPoint = meta?.["qwen.branchPoint"] && typeof meta["qwen.branchPoint"] === "object" ? meta["qwen.branchPoint"] : void 0;
|
|
6697
|
+
const branchPoint = promptResult.stopReason === "end_turn" && typeof rawBranchPoint?.["assistantRecordUuid"] === "string" && CHAT_RECORD_UUID_RE.test(rawBranchPoint["assistantRecordUuid"]) && typeof rawBranchPoint["checkpointUuid"] === "string" && CHAT_RECORD_UUID_RE.test(rawBranchPoint["checkpointUuid"]) ? {
|
|
6698
|
+
assistantRecordUuid: rawBranchPoint["assistantRecordUuid"],
|
|
6699
|
+
checkpointUuid: rawBranchPoint["checkpointUuid"]
|
|
6700
|
+
} : void 0;
|
|
6681
6701
|
const published = entry.events.publish({
|
|
6682
6702
|
type: "turn_complete",
|
|
6683
6703
|
...promptId ? { promptId } : {},
|
|
6684
6704
|
data: {
|
|
6685
6705
|
sessionId,
|
|
6686
6706
|
stopReason: promptResult.stopReason ?? "end_turn",
|
|
6687
|
-
...promptId ? { promptId } : {}
|
|
6707
|
+
...promptId ? { promptId } : {},
|
|
6708
|
+
...branchPoint ? { branchPoint } : {}
|
|
6688
6709
|
},
|
|
6689
6710
|
...originatorClientId ? { originatorClientId } : {}
|
|
6690
6711
|
});
|
|
@@ -6949,6 +6970,7 @@ var MAX_SHELL_OUTPUT_FOR_HISTORY = 1e4;
|
|
|
6949
6970
|
var MAX_MID_TURN_QUEUE_DEPTH = 20;
|
|
6950
6971
|
var DEFAULT_MAX_SESSIONS = 32;
|
|
6951
6972
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
6973
|
+
var CHAT_RECORD_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
6952
6974
|
var MAX_EVENT_RING_SIZE = 1e6;
|
|
6953
6975
|
var DEFAULT_PERMISSION_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
6954
6976
|
var DEFAULT_MAX_PENDING_PER_SESSION = 64;
|
|
@@ -7158,12 +7180,15 @@ function createAcpSessionBridge(opts) {
|
|
|
7158
7180
|
}
|
|
7159
7181
|
__name(isClosingOrAuthorizingClose, "isClosingOrAuthorizingClose");
|
|
7160
7182
|
async function maybeCloseIdleSession(entry, reason) {
|
|
7161
|
-
if (!
|
|
7162
|
-
|
|
7183
|
+
if (byId.get(entry.sessionId) === entry && !isClosingOrAuthorizingClose(entry) && entry.spawnOwnerWantedKill && entry.attachCount === 0) {
|
|
7184
|
+
writeStderrLine(
|
|
7185
|
+
`qwen serve: completing deferred kill of session ${JSON.stringify(entry.sessionId)} (${reason})`
|
|
7186
|
+
);
|
|
7163
7187
|
await bridgeApi.killSession(entry.sessionId).catch(() => {
|
|
7164
7188
|
});
|
|
7165
7189
|
return;
|
|
7166
7190
|
}
|
|
7191
|
+
if (!entryIsAutoCloseCandidate(entry)) return;
|
|
7167
7192
|
if (entry.clientIds.size > 0) return;
|
|
7168
7193
|
await closeIfChildUnheld(entry, {
|
|
7169
7194
|
trigger: reason,
|
|
@@ -7200,7 +7225,10 @@ function createAcpSessionBridge(opts) {
|
|
|
7200
7225
|
const response = await withTimeout(
|
|
7201
7226
|
entry.connection.extMethod(SERVE_CONTROL_EXT_METHODS.sessionClose, {
|
|
7202
7227
|
sessionId: entry.sessionId,
|
|
7203
|
-
[ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM]: true
|
|
7228
|
+
[ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM]: true,
|
|
7229
|
+
drainTimeoutMs: sessionCloseDrainBudgetMs(
|
|
7230
|
+
ACTIVE_WORK_CLOSE_TIMEOUT_MS
|
|
7231
|
+
)
|
|
7204
7232
|
}),
|
|
7205
7233
|
ACTIVE_WORK_CLOSE_TIMEOUT_MS,
|
|
7206
7234
|
SERVE_CONTROL_EXT_METHODS.sessionClose
|
|
@@ -8730,7 +8758,9 @@ function createAcpSessionBridge(opts) {
|
|
|
8730
8758
|
SERVE_CONTROL_EXT_METHODS.sessionClose,
|
|
8731
8759
|
{
|
|
8732
8760
|
sessionId: entry.sessionId,
|
|
8733
|
-
drainTimeoutMs:
|
|
8761
|
+
drainTimeoutMs: sessionCloseDrainBudgetMs(
|
|
8762
|
+
opts2?.timeoutMs ?? initTimeoutMs
|
|
8763
|
+
),
|
|
8734
8764
|
...opts2?.requireFlush === true ? { requireFlush: true } : {}
|
|
8735
8765
|
}
|
|
8736
8766
|
);
|
|
@@ -9531,7 +9561,7 @@ function createAcpSessionBridge(opts) {
|
|
|
9531
9561
|
SERVE_CONTROL_EXT_METHODS.sessionClose,
|
|
9532
9562
|
{
|
|
9533
9563
|
sessionId: req.sessionId,
|
|
9534
|
-
drainTimeoutMs:
|
|
9564
|
+
drainTimeoutMs: sessionCloseDrainBudgetMs(initTimeoutMs)
|
|
9535
9565
|
}
|
|
9536
9566
|
),
|
|
9537
9567
|
initTimeoutMs,
|
|
@@ -11044,53 +11074,68 @@ function createAcpSessionBridge(opts) {
|
|
|
11044
11074
|
if (shuttingDown) throw new Error("AcpSessionBridge is shutting down");
|
|
11045
11075
|
const entry = byId.get(sessionId);
|
|
11046
11076
|
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
11077
|
+
if (isClosingOrAuthorizingClose(entry)) {
|
|
11078
|
+
throw new SessionNotFoundError(sessionId, "The session is closing");
|
|
11079
|
+
}
|
|
11047
11080
|
const source = parseSessionSource(req.sourceType, req.sourceId);
|
|
11048
11081
|
if ("error" in source) {
|
|
11049
11082
|
throw new InvalidSessionMetadataError("sourceType", source.error);
|
|
11050
11083
|
}
|
|
11051
11084
|
const isSideTask = source.sourceType === "side_task";
|
|
11052
|
-
|
|
11085
|
+
const restoreBranch = isSideTask || req.atRecordId === void 0;
|
|
11053
11086
|
if (context?.clientId !== void 0) {
|
|
11054
|
-
|
|
11087
|
+
resolveTrustedClientId(entry, context.clientId);
|
|
11055
11088
|
}
|
|
11056
11089
|
const concurrentSideTask = isSideTask && entry.promptActive;
|
|
11090
|
+
if (!isSideTask && (entry.pendingPromptCount > 0 || entry.promptActive)) {
|
|
11091
|
+
throw new BranchWhilePromptActiveError(sessionId);
|
|
11092
|
+
}
|
|
11057
11093
|
const branchResult = (concurrentSideTask ? Promise.resolve() : entry.promptQueue).then(async () => {
|
|
11058
|
-
if (entry.
|
|
11059
|
-
throw new
|
|
11094
|
+
if (isClosingOrAuthorizingClose(entry) || byId.get(sessionId) !== entry) {
|
|
11095
|
+
throw new SessionNotFoundError(sessionId, "The session is closing");
|
|
11060
11096
|
}
|
|
11061
11097
|
assertFreshSessionsAvailable();
|
|
11062
|
-
|
|
11063
|
-
|
|
11098
|
+
let admission;
|
|
11099
|
+
if (restoreBranch) {
|
|
11100
|
+
if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
|
|
11101
|
+
throw new SessionLimitExceededError(maxSessions);
|
|
11102
|
+
}
|
|
11103
|
+
admission = reserveFreshSession({
|
|
11104
|
+
operation: "branch",
|
|
11105
|
+
workspaceCwd: boundWorkspace,
|
|
11106
|
+
sourceSessionId: sessionId
|
|
11107
|
+
});
|
|
11064
11108
|
}
|
|
11065
|
-
const admission = reserveFreshSession({
|
|
11066
|
-
operation: "branch",
|
|
11067
|
-
workspaceCwd: boundWorkspace,
|
|
11068
|
-
sourceSessionId: sessionId
|
|
11069
|
-
});
|
|
11070
11109
|
let admissionReleased = false;
|
|
11071
11110
|
const releaseAdmissionOnce = /* @__PURE__ */ __name(() => {
|
|
11072
|
-
if (admissionReleased) return;
|
|
11111
|
+
if (admissionReleased || !admission) return;
|
|
11073
11112
|
admissionReleased = true;
|
|
11074
11113
|
releaseFreshSessionReservation(admission);
|
|
11075
11114
|
}, "releaseAdmissionOnce");
|
|
11076
11115
|
try {
|
|
11077
|
-
|
|
11078
|
-
|
|
11079
|
-
|
|
11080
|
-
|
|
11081
|
-
|
|
11082
|
-
|
|
11083
|
-
|
|
11084
|
-
|
|
11085
|
-
cwd: boundWorkspace,
|
|
11086
|
-
name: req.name
|
|
11087
|
-
}
|
|
11088
|
-
),
|
|
11089
|
-
getTransportClosedReject(entry)
|
|
11090
|
-
]),
|
|
11091
|
-
initTimeoutMs,
|
|
11092
|
-
isSideTask ? "createSideTaskSession" : "branchSession"
|
|
11116
|
+
const mutation = entry.connection.extMethod(
|
|
11117
|
+
isSideTask ? SERVE_CONTROL_EXT_METHODS.sessionSideTask : SERVE_CONTROL_EXT_METHODS.sessionBranch,
|
|
11118
|
+
{
|
|
11119
|
+
sessionId,
|
|
11120
|
+
cwd: boundWorkspace,
|
|
11121
|
+
name: req.name,
|
|
11122
|
+
...req.atRecordId !== void 0 ? { atRecordId: req.atRecordId } : {}
|
|
11123
|
+
}
|
|
11093
11124
|
);
|
|
11125
|
+
let result;
|
|
11126
|
+
try {
|
|
11127
|
+
result = await Promise.race([
|
|
11128
|
+
mutation,
|
|
11129
|
+
getTransportClosedReject(entry)
|
|
11130
|
+
]);
|
|
11131
|
+
} catch (err) {
|
|
11132
|
+
const data = err?.data;
|
|
11133
|
+
if (!isSideTask && data && typeof data === "object" && data.errorKind === "session_busy") {
|
|
11134
|
+
const msg = err?.message ?? "Branch failed";
|
|
11135
|
+
throw new SessionBusyError(sessionId, msg);
|
|
11136
|
+
}
|
|
11137
|
+
throw err;
|
|
11138
|
+
}
|
|
11094
11139
|
if (!result || typeof result.newSessionId !== "string") {
|
|
11095
11140
|
throw new Error(
|
|
11096
11141
|
`branchSession: agent returned invalid response: ${JSON.stringify(result)}`
|
|
@@ -11098,6 +11143,17 @@ function createAcpSessionBridge(opts) {
|
|
|
11098
11143
|
}
|
|
11099
11144
|
const rawBranchName = result.displayName ?? result.title;
|
|
11100
11145
|
const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
|
|
11146
|
+
if (!restoreBranch) {
|
|
11147
|
+
return {
|
|
11148
|
+
sessionId: result.newSessionId,
|
|
11149
|
+
displayName: branchDisplayName,
|
|
11150
|
+
forkedFrom: {
|
|
11151
|
+
sessionId,
|
|
11152
|
+
displayName: entry.displayName ?? sessionId.slice(0, 8)
|
|
11153
|
+
}
|
|
11154
|
+
};
|
|
11155
|
+
}
|
|
11156
|
+
const ci = await ensureChannel();
|
|
11101
11157
|
let restored;
|
|
11102
11158
|
try {
|
|
11103
11159
|
const hideInheritedHistory = req.replayInheritedHistory === false;
|
|
@@ -11120,7 +11176,7 @@ function createAcpSessionBridge(opts) {
|
|
|
11120
11176
|
releaseAdmissionOnce();
|
|
11121
11177
|
} catch (restoreErr) {
|
|
11122
11178
|
writeStderrLine(
|
|
11123
|
-
`qwen serve: branchSession load failed for ${result.newSessionId}
|
|
11179
|
+
`qwen serve: branchSession load failed for ${result.newSessionId}; closing partial live state while preserving the committed session...`
|
|
11124
11180
|
);
|
|
11125
11181
|
try {
|
|
11126
11182
|
if (!ci.isDying) {
|
|
@@ -11130,7 +11186,8 @@ function createAcpSessionBridge(opts) {
|
|
|
11130
11186
|
SERVE_CONTROL_EXT_METHODS.sessionClose,
|
|
11131
11187
|
{
|
|
11132
11188
|
sessionId: result.newSessionId,
|
|
11133
|
-
cwd: boundWorkspace
|
|
11189
|
+
cwd: boundWorkspace,
|
|
11190
|
+
drainTimeoutMs: sessionCloseDrainBudgetMs(initTimeoutMs)
|
|
11134
11191
|
}
|
|
11135
11192
|
),
|
|
11136
11193
|
channelUnavailableReject(
|
|
@@ -11144,7 +11201,7 @@ function createAcpSessionBridge(opts) {
|
|
|
11144
11201
|
}
|
|
11145
11202
|
} catch (cleanupErr) {
|
|
11146
11203
|
writeStderrLine(
|
|
11147
|
-
`qwen serve: branchSession
|
|
11204
|
+
`qwen serve: branchSession live-state close for ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
|
|
11148
11205
|
);
|
|
11149
11206
|
}
|
|
11150
11207
|
throw restoreErr;
|
|
@@ -11174,19 +11231,6 @@ function createAcpSessionBridge(opts) {
|
|
|
11174
11231
|
);
|
|
11175
11232
|
}
|
|
11176
11233
|
}
|
|
11177
|
-
if (!isSideTask) {
|
|
11178
|
-
const eventData = {
|
|
11179
|
-
sourceSessionId: sessionId,
|
|
11180
|
-
newSessionId: result.newSessionId,
|
|
11181
|
-
displayName: branchDisplayName
|
|
11182
|
-
};
|
|
11183
|
-
const branchEnvelope = {
|
|
11184
|
-
type: "session_branched",
|
|
11185
|
-
data: eventData,
|
|
11186
|
-
...originatorClientId ? { originatorClientId } : {}
|
|
11187
|
-
};
|
|
11188
|
-
newEntry?.events.publish(branchEnvelope);
|
|
11189
|
-
}
|
|
11190
11234
|
return {
|
|
11191
11235
|
...restored,
|
|
11192
11236
|
displayName: branchDisplayName,
|
|
@@ -11219,7 +11263,8 @@ function createAcpSessionBridge(opts) {
|
|
|
11219
11263
|
},
|
|
11220
11264
|
context
|
|
11221
11265
|
);
|
|
11222
|
-
const
|
|
11266
|
+
const restoredResult = result;
|
|
11267
|
+
const { forkedFrom: _forkedFrom, ...sideTask } = restoredResult;
|
|
11223
11268
|
return {
|
|
11224
11269
|
...sideTask,
|
|
11225
11270
|
parentSessionId: sessionId
|
|
@@ -12634,10 +12679,19 @@ function createAcpSessionBridge(opts) {
|
|
|
12634
12679
|
entry,
|
|
12635
12680
|
context?.clientId
|
|
12636
12681
|
);
|
|
12637
|
-
|
|
12638
|
-
|
|
12639
|
-
|
|
12640
|
-
|
|
12682
|
+
if (entry.pendingPromptCount > 0 || entry.promptActive) {
|
|
12683
|
+
throw new SessionBusyError(
|
|
12684
|
+
sessionId,
|
|
12685
|
+
"Cannot rewind while a prompt is running"
|
|
12686
|
+
);
|
|
12687
|
+
}
|
|
12688
|
+
const rewindResult = entry.promptQueue.then(async () => {
|
|
12689
|
+
if (entry.closing) {
|
|
12690
|
+
throw new SessionNotFoundError(sessionId, "The session is closing");
|
|
12691
|
+
}
|
|
12692
|
+
let response;
|
|
12693
|
+
try {
|
|
12694
|
+
response = await Promise.race([
|
|
12641
12695
|
entry.connection.extMethod(
|
|
12642
12696
|
SERVE_CONTROL_EXT_METHODS.sessionRewind,
|
|
12643
12697
|
{
|
|
@@ -12646,92 +12700,95 @@ function createAcpSessionBridge(opts) {
|
|
|
12646
12700
|
rewindFiles: req.rewindFiles !== false
|
|
12647
12701
|
}
|
|
12648
12702
|
),
|
|
12649
|
-
|
|
12650
|
-
|
|
12651
|
-
|
|
12652
|
-
|
|
12653
|
-
|
|
12654
|
-
|
|
12655
|
-
|
|
12656
|
-
|
|
12657
|
-
|
|
12658
|
-
|
|
12659
|
-
|
|
12660
|
-
|
|
12661
|
-
|
|
12662
|
-
if (kind === "invalid_rewind_target") {
|
|
12663
|
-
throw new InvalidRewindTargetError(sessionId, msg);
|
|
12703
|
+
getTransportClosedReject(entry)
|
|
12704
|
+
]);
|
|
12705
|
+
} catch (err) {
|
|
12706
|
+
const data = err?.data;
|
|
12707
|
+
if (data && typeof data === "object" && "errorKind" in data) {
|
|
12708
|
+
const kind = data.errorKind;
|
|
12709
|
+
const msg = err?.message ?? "Rewind failed";
|
|
12710
|
+
if (kind === "session_busy") {
|
|
12711
|
+
throw new SessionBusyError(sessionId, msg);
|
|
12712
|
+
}
|
|
12713
|
+
if (kind === "invalid_rewind_target") {
|
|
12714
|
+
throw new InvalidRewindTargetError(sessionId, msg);
|
|
12715
|
+
}
|
|
12664
12716
|
}
|
|
12717
|
+
throw err;
|
|
12665
12718
|
}
|
|
12666
|
-
|
|
12667
|
-
|
|
12668
|
-
|
|
12669
|
-
|
|
12670
|
-
|
|
12671
|
-
const artifactSnapshot = restoredArtifactSnapshotFromState(
|
|
12672
|
-
response
|
|
12673
|
-
);
|
|
12674
|
-
const artifactSnapshotUnavailable = artifactSnapshotUnavailableReason(
|
|
12675
|
-
response
|
|
12676
|
-
);
|
|
12677
|
-
const beforeArtifacts = (await entry.artifacts.list()).artifacts;
|
|
12678
|
-
const shouldRestoreArtifactSnapshot = artifactSnapshot !== void 0 && artifactSnapshotUnavailable === void 0;
|
|
12679
|
-
const artifactRestoreWarnings = artifactSnapshotUnavailable !== void 0 ? [
|
|
12680
|
-
`artifact snapshot rebuild unavailable during rewind: ${artifactSnapshotUnavailable}`
|
|
12681
|
-
] : shouldRestoreArtifactSnapshot ? await entry.artifacts.restore(artifactSnapshot, {
|
|
12682
|
-
preserveLiveEphemeral: true
|
|
12683
|
-
}) : [];
|
|
12684
|
-
const artifactRestoreFailed = artifactRestoreWarnings.some(
|
|
12685
|
-
isArtifactRestoreFailureWarning
|
|
12686
|
-
);
|
|
12687
|
-
const shouldRecordArtifactSnapshot = shouldRestoreArtifactSnapshot && !artifactRestoreFailed;
|
|
12688
|
-
const artifactSnapshotWarnings = shouldRecordArtifactSnapshot ? await entry.artifacts.recordSnapshot() : [];
|
|
12689
|
-
const artifactWarnings = [
|
|
12690
|
-
...artifactRestoreWarnings,
|
|
12691
|
-
...artifactSnapshotWarnings
|
|
12692
|
-
];
|
|
12693
|
-
for (const warning of artifactRestoreWarnings) {
|
|
12694
|
-
writeStderrLine(
|
|
12695
|
-
`[artifacts] session=${entry.sessionId} action=rewind_restore_warning warning=${JSON.stringify(
|
|
12696
|
-
warning
|
|
12697
|
-
)}`
|
|
12719
|
+
const targetTurnIndex = response["targetTurnIndex"] ?? 0;
|
|
12720
|
+
const filesChanged = response["filesChanged"] ?? [];
|
|
12721
|
+
const filesFailed = response["filesFailed"] ?? [];
|
|
12722
|
+
const artifactSnapshot = restoredArtifactSnapshotFromState(
|
|
12723
|
+
response
|
|
12698
12724
|
);
|
|
12699
|
-
|
|
12700
|
-
|
|
12701
|
-
writeStderrLine(
|
|
12702
|
-
`[artifacts] session=${entry.sessionId} action=rewind_snapshot_warning warning=${JSON.stringify(
|
|
12703
|
-
warning
|
|
12704
|
-
)}`
|
|
12725
|
+
const artifactSnapshotUnavailable = artifactSnapshotUnavailableReason(
|
|
12726
|
+
response
|
|
12705
12727
|
);
|
|
12706
|
-
|
|
12707
|
-
|
|
12708
|
-
|
|
12709
|
-
|
|
12710
|
-
|
|
12711
|
-
|
|
12728
|
+
const beforeArtifacts = (await entry.artifacts.list()).artifacts;
|
|
12729
|
+
const shouldRestoreArtifactSnapshot = artifactSnapshot !== void 0 && artifactSnapshotUnavailable === void 0;
|
|
12730
|
+
const artifactRestoreWarnings = artifactSnapshotUnavailable !== void 0 ? [
|
|
12731
|
+
`artifact snapshot rebuild unavailable during rewind: ${artifactSnapshotUnavailable}`
|
|
12732
|
+
] : shouldRestoreArtifactSnapshot ? await entry.artifacts.restore(artifactSnapshot, {
|
|
12733
|
+
preserveLiveEphemeral: true
|
|
12734
|
+
}) : [];
|
|
12735
|
+
const artifactRestoreFailed = artifactRestoreWarnings.some(
|
|
12736
|
+
isArtifactRestoreFailureWarning
|
|
12737
|
+
);
|
|
12738
|
+
const shouldRecordArtifactSnapshot = shouldRestoreArtifactSnapshot && !artifactRestoreFailed;
|
|
12739
|
+
const artifactSnapshotWarnings = shouldRecordArtifactSnapshot ? await entry.artifacts.recordSnapshot() : [];
|
|
12740
|
+
const artifactWarnings = [
|
|
12741
|
+
...artifactRestoreWarnings,
|
|
12742
|
+
...artifactSnapshotWarnings
|
|
12743
|
+
];
|
|
12744
|
+
for (const warning of artifactRestoreWarnings) {
|
|
12745
|
+
writeStderrLine(
|
|
12746
|
+
`[artifacts] session=${entry.sessionId} action=rewind_restore_warning warning=${JSON.stringify(
|
|
12747
|
+
warning
|
|
12748
|
+
)}`
|
|
12749
|
+
);
|
|
12750
|
+
}
|
|
12751
|
+
for (const warning of artifactSnapshotWarnings) {
|
|
12752
|
+
writeStderrLine(
|
|
12753
|
+
`[artifacts] session=${entry.sessionId} action=rewind_snapshot_warning warning=${JSON.stringify(
|
|
12754
|
+
warning
|
|
12755
|
+
)}`
|
|
12756
|
+
);
|
|
12757
|
+
}
|
|
12758
|
+
const afterArtifacts = (await entry.artifacts.list()).artifacts;
|
|
12759
|
+
publishArtifactChanges(
|
|
12760
|
+
entry,
|
|
12761
|
+
artifactReseedChanges(beforeArtifacts, afterArtifacts),
|
|
12762
|
+
originatorClientId
|
|
12763
|
+
);
|
|
12764
|
+
try {
|
|
12765
|
+
entry.events.publish({
|
|
12766
|
+
type: "session_rewound",
|
|
12767
|
+
data: {
|
|
12768
|
+
sessionId,
|
|
12769
|
+
promptId: req.promptId,
|
|
12770
|
+
targetTurnIndex,
|
|
12771
|
+
filesChanged,
|
|
12772
|
+
filesFailed,
|
|
12773
|
+
...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
|
|
12774
|
+
},
|
|
12775
|
+
...originatorClientId ? { originatorClientId } : {}
|
|
12776
|
+
});
|
|
12777
|
+
} catch {
|
|
12778
|
+
}
|
|
12779
|
+
return {
|
|
12780
|
+
rewound: filesFailed.length === 0,
|
|
12781
|
+
targetTurnIndex,
|
|
12782
|
+
filesChanged,
|
|
12783
|
+
filesFailed,
|
|
12784
|
+
...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
|
|
12785
|
+
};
|
|
12786
|
+
});
|
|
12787
|
+
entry.promptQueue = rewindResult.then(
|
|
12788
|
+
() => void 0,
|
|
12789
|
+
() => void 0
|
|
12712
12790
|
);
|
|
12713
|
-
|
|
12714
|
-
entry.events.publish({
|
|
12715
|
-
type: "session_rewound",
|
|
12716
|
-
data: {
|
|
12717
|
-
sessionId,
|
|
12718
|
-
promptId: req.promptId,
|
|
12719
|
-
targetTurnIndex,
|
|
12720
|
-
filesChanged,
|
|
12721
|
-
filesFailed,
|
|
12722
|
-
...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
|
|
12723
|
-
},
|
|
12724
|
-
...originatorClientId ? { originatorClientId } : {}
|
|
12725
|
-
});
|
|
12726
|
-
} catch {
|
|
12727
|
-
}
|
|
12728
|
-
return {
|
|
12729
|
-
rewound: filesFailed.length === 0,
|
|
12730
|
-
targetTurnIndex,
|
|
12731
|
-
filesChanged,
|
|
12732
|
-
filesFailed,
|
|
12733
|
-
...artifactWarnings.length > 0 ? { warnings: artifactWarnings } : {}
|
|
12734
|
-
};
|
|
12791
|
+
return rewindResult;
|
|
12735
12792
|
},
|
|
12736
12793
|
async manageMcpServer(serverName, action, originatorClientId) {
|
|
12737
12794
|
const info = await ensureChannel();
|
|
@@ -13059,6 +13116,10 @@ function createAcpSessionBridge(opts) {
|
|
|
13059
13116
|
timeoutMs: initTimeoutMs
|
|
13060
13117
|
});
|
|
13061
13118
|
} catch (error) {
|
|
13119
|
+
if (isDefinitiveAcpRequestError(error)) {
|
|
13120
|
+
entry.closing = false;
|
|
13121
|
+
return false;
|
|
13122
|
+
}
|
|
13062
13123
|
if (ci) {
|
|
13063
13124
|
await killChannelWithLog(
|
|
13064
13125
|
ci,
|
|
@@ -16,27 +16,27 @@ import {
|
|
|
16
16
|
MODIFIER_SHIFT_BIT,
|
|
17
17
|
MODIFIER_SUPER_BIT,
|
|
18
18
|
clipboardHasImage
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-DXIBNLBZ.js";
|
|
20
20
|
import {
|
|
21
21
|
require_jsx_runtime
|
|
22
22
|
} from "./chunk-SV5PQVQE.js";
|
|
23
|
-
import {
|
|
24
|
-
noteInteraction
|
|
25
|
-
} from "./chunk-KW7NOTN6.js";
|
|
26
23
|
import {
|
|
27
24
|
use_stdin_default,
|
|
28
25
|
use_stdout_default
|
|
29
26
|
} from "./chunk-2IIJTXYF.js";
|
|
27
|
+
import {
|
|
28
|
+
noteInteraction
|
|
29
|
+
} from "./chunk-KW7NOTN6.js";
|
|
30
30
|
import {
|
|
31
31
|
require_react
|
|
32
32
|
} from "./chunk-5QWWOFGG.js";
|
|
33
33
|
import {
|
|
34
34
|
KittySequenceOverflowEvent,
|
|
35
35
|
logKittySequenceOverflow
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-RVOJ2FBP.js";
|
|
37
37
|
import {
|
|
38
38
|
createDebugLogger
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-BUQDLC2G.js";
|
|
40
40
|
import {
|
|
41
41
|
init_esbuild_shims
|
|
42
42
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-MS7GNABG.js";
|
|
13
13
|
import {
|
|
14
14
|
isWorkspaceTrusted
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-IWPYVAO2.js";
|
|
16
16
|
import {
|
|
17
17
|
require_main
|
|
18
18
|
} from "./chunk-5M6IDOMF.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
QWEN_DIR,
|
|
21
21
|
Storage,
|
|
22
22
|
getErrorMessage
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-BUQDLC2G.js";
|
|
24
24
|
import {
|
|
25
25
|
init_esbuild_shims
|
|
26
26
|
} from "./chunk-5O2XNYP6.js";
|