@zubriq/code 0.19.8-1 → 0.19.9-1
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/dist/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
- package/dist/bundled/qc-helper/docs/features/channels/overview.md +23 -12
- package/dist/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
- package/dist/bundled/qc-helper/docs/features/channels/wecom.md +111 -0
- package/dist/bundled/qc-helper/docs/features/hooks.md +36 -34
- package/dist/bundled/qc-helper/docs/features/memory.md +1 -1
- package/dist/bundled/qc-helper/docs/qwen-serve.md +17 -10
- package/dist/bundled/review/SKILL.md +6 -2
- package/dist/chunks/{MaxSizedBox-OWTCJQNO.js → MaxSizedBox-W6SAJMJC.js} +13 -11
- package/dist/chunks/{StandaloneSessionPicker-6NGEQFBH.js → StandaloneSessionPicker-YBKZZKIA.js} +28 -23
- package/dist/chunks/{acpAgent-XPRWSNOW.js → acpAgent-SQJQBOTS.js} +110 -80
- package/dist/chunks/{agent-TB6S4VXU.js → agent-QU7Q2RZN.js} +8 -8
- package/dist/chunks/{agent-headless-R3XYK5TT.js → agent-headless-PBHLWHND.js} +8 -8
- package/dist/chunks/{anthropicContentGenerator-FZQAEMYK.js → anthropicContentGenerator-52G6ZA3D.js} +31 -4
- package/dist/chunks/{artifact-tool-H2TNPNP5.js → artifact-tool-D233YJFH.js} +25 -6
- package/dist/chunks/{bridge-HVRG6SMU.js → bridge-LJLLDUMW.js} +17 -14
- package/dist/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
- package/dist/chunks/{channel-worker-supervisor-B7MSMB5K.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
- package/dist/chunks/{chunk-YRM6BC6H.js → chunk-27AYMAL6.js} +506 -63
- package/dist/chunks/{chunk-536GZ6UF.js → chunk-2MDC5WDB.js} +17 -111
- package/dist/chunks/{chunk-H3D6XAOL.js → chunk-2PRSBVPI.js} +3 -3
- package/dist/chunks/chunk-332PWN27.js +19 -0
- package/dist/chunks/{chunk-FVMWEHWU.js → chunk-3B26UVCX.js} +114 -12
- package/dist/chunks/{chunk-ZM5BPDXV.js → chunk-3F22JT4E.js} +1 -1
- package/dist/chunks/{chunk-W6RH6KHR.js → chunk-3GPVYALM.js} +4 -2
- package/dist/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
- package/dist/chunks/{chunk-PA7QS4X5.js → chunk-43W4YSO6.js} +1 -12
- package/dist/chunks/{chunk-5EB2HK3X.js → chunk-4IK56VLC.js} +1 -1
- package/dist/chunks/{chunk-UE5TCZE6.js → chunk-5FAUIGXH.js} +5 -13
- package/dist/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
- package/dist/chunks/{chunk-PDITONOB.js → chunk-5MRUKUOG.js} +5347 -4132
- package/dist/chunks/{chunk-4UC3U66K.js → chunk-6EUMFVPJ.js} +5 -5
- package/dist/chunks/{chunk-YOGGIAGF.js → chunk-6JL5OVLX.js} +1 -1
- package/dist/chunks/{chunk-QG4ZO2EB.js → chunk-74E6VVF6.js} +11 -11
- package/dist/chunks/chunk-A2X3KLC3.js +3807 -0
- package/dist/chunks/{chunk-BA4HLTG2.js → chunk-B6B2MUUF.js} +5 -5
- package/dist/chunks/{chunk-XKYOIERV.js → chunk-BN5VYAOZ.js} +681 -1239
- package/dist/chunks/{chunk-IO76BGJ3.js → chunk-BYUA6YYS.js} +15 -9
- package/dist/chunks/{chunk-NCFY7PWS.js → chunk-CCGOFQV3.js} +51 -2
- package/dist/chunks/{chunk-66KNL43D.js → chunk-CD6USWHZ.js} +1 -1
- package/dist/chunks/{chunk-ZWSTIPSW.js → chunk-CEITMQ62.js} +2 -2
- package/dist/chunks/{chunk-7AQTBTVY.js → chunk-EJP6Z7NU.js} +4 -3
- package/dist/chunks/{chunk-RTW5ZXHO.js → chunk-EZTNYRHH.js} +6 -5
- package/dist/chunks/{chunk-MJQFA66Z.js → chunk-FAATDXYS.js} +308 -81
- package/dist/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
- package/dist/chunks/{chunk-HTC4R67V.js → chunk-FES4YXJ3.js} +9 -9
- package/dist/chunks/{chunk-NBKE6QRZ.js → chunk-FHTUTVIQ.js} +10 -5
- package/dist/chunks/chunk-FII3C4E7.js +168 -0
- package/dist/chunks/{chunk-2NL7ED5Q.js → chunk-FV7425LN.js} +22 -1
- package/dist/chunks/{chunk-J6OET6C3.js → chunk-GAI76CFX.js} +4 -4
- package/dist/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
- package/dist/chunks/chunk-GLE2YUPU.js +34 -0
- package/dist/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
- package/dist/chunks/{chunk-SM624MOZ.js → chunk-GWUN54UD.js} +1 -1
- package/dist/chunks/chunk-H3TELH3H.js +942 -0
- package/dist/chunks/{chunk-XZULYFIX.js → chunk-HD4DZI2L.js} +2 -2
- package/dist/chunks/{chunk-KLLLWQM2.js → chunk-HPQIVXSP.js} +1 -1
- package/dist/chunks/{chunk-WSVZFWN4.js → chunk-IBY3Q3HG.js} +693 -104
- package/dist/chunks/{chunk-JSEOX4CM.js → chunk-JGR6W4IX.js} +14 -8
- package/dist/chunks/chunk-K652V4NH.js +283 -0
- package/dist/chunks/{chunk-OCBJKHF2.js → chunk-KH2CZZDD.js} +2 -2
- package/dist/chunks/chunk-LGFAYIKX.js +115 -0
- package/dist/chunks/{chunk-QG5KDB6X.js → chunk-LZDW5TDV.js} +5 -5
- package/dist/chunks/{chunk-ENKWIF75.js → chunk-MA4AZNP7.js} +10 -10
- package/dist/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
- package/dist/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
- package/dist/chunks/{chunk-ML2ZWH2K.js → chunk-PCWYMX57.js} +14 -153
- package/dist/chunks/{chunk-NHFBLJOI.js → chunk-Q3PQ5VGJ.js} +1 -1
- package/dist/chunks/{chunk-LGXBB2R2.js → chunk-QK3I36QG.js} +1 -1
- package/dist/chunks/chunk-RA7TR75G.js +8223 -0
- package/dist/chunks/{chunk-KSPVDFE4.js → chunk-SAIILPQ3.js} +0 -3
- package/dist/chunks/{chunk-DHKDK57Q.js → chunk-SNZPA74J.js} +146 -54
- package/dist/chunks/{chunk-PWR5MVM3.js → chunk-SSP3UT5C.js} +4 -4
- package/dist/chunks/{chunk-4LETJLG2.js → chunk-SUCRVT5L.js} +1 -1
- package/dist/chunks/{chunk-5YLZHETW.js → chunk-TRR5KGDN.js} +1 -1
- package/dist/chunks/chunk-UIDXQNMV.js +13 -0
- package/dist/chunks/{chunk-PIORL4OD.js → chunk-UKV3D7WB.js} +0 -44
- package/dist/chunks/chunk-UYNUIGUR.js +167 -0
- package/dist/chunks/chunk-V2TYBEWU.js +28 -0
- package/dist/chunks/chunk-V35MD7KN.js +13 -0
- package/dist/chunks/{chunk-N4HTVZDZ.js → chunk-VR3KCBHH.js} +1 -1
- package/dist/chunks/{chunk-APYUOROB.js → chunk-W4CTWW7M.js} +423 -61
- package/dist/chunks/{chunk-ABANKQYY.js → chunk-WJAW2O5H.js} +92 -465
- package/dist/chunks/{chunk-6RSBRKF5.js → chunk-WN4YJJGH.js} +2 -2
- package/dist/chunks/chunk-XNXVCNAT.js +88 -0
- package/dist/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
- package/dist/chunks/chunk-XQPMKWSV.js +487 -0
- package/dist/chunks/{chunk-4FQL7KUS.js → chunk-XWDHZP7P.js} +8 -8
- package/dist/chunks/{chunk-REPRY4F7.js → chunk-YCKKP4QA.js} +10 -10
- package/dist/chunks/{chunk-YNWQ3PUQ.js → chunk-YJWMOGGZ.js} +3 -3
- package/dist/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
- package/dist/chunks/{chunk-45YCXM2H.js → chunk-YZDBUH6S.js} +45 -9
- package/dist/chunks/chunk-Z3I3QJK3.js +47 -0
- package/dist/chunks/{chunk-G23FFNLT.js → chunk-ZDGPPCTW.js} +20 -8
- package/dist/chunks/chunk-ZL5HN75Q.js +61 -0
- package/dist/chunks/{chunk-IQX5S2RS.js → chunk-ZL7JCYWM.js} +66 -7
- package/dist/chunks/{computer-use-A72BECH4.js → computer-use-4B45EG2F.js} +8 -8
- package/dist/chunks/{contextCommand-RREXA4B7.js → contextCommand-GIVRWNTS.js} +12 -11
- package/dist/chunks/{cron-create-DDYU4DIR.js → cron-create-JSXEIPVS.js} +1 -1
- package/dist/chunks/{cron-delete-DFKOUZWN.js → cron-delete-OIFVEPGU.js} +1 -1
- package/dist/chunks/{cron-list-ME5QGAR5.js → cron-list-D4ZX4IOE.js} +1 -1
- package/dist/chunks/{daemon-XWG2EGFX.js → daemon-WPAENEBW.js} +71 -3
- package/dist/chunks/{daemon-status-provider-Y6AFXTET.js → daemon-status-provider-WBOAMCHE.js} +20 -17
- package/dist/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
- package/dist/chunks/{dist-LPVU3L2M.js → dist-BEXOZXLQ.js} +6 -3792
- package/dist/chunks/{dist-7GU63KI5.js → dist-E6UANPIM.js} +1 -1
- package/dist/chunks/{dist-VHBP2PIG.js → dist-H2AEJCZ5.js} +2 -2
- package/dist/chunks/{dist-3UDX5T4T.js → dist-O2IRTRPP.js} +1 -1
- package/dist/chunks/dist-SCFLLYMK.js +3217 -0
- package/dist/chunks/{dist-H4HHZYCI.js → dist-Z34QPAQW.js} +2 -2
- package/dist/chunks/{earlyInputCapture-OAHBOGOO.js → earlyInputCapture-JWMCAJZR.js} +8 -8
- package/dist/chunks/{edit-SFYW3FOV.js → edit-O5FUVHBE.js} +9 -9
- package/dist/chunks/{en-AXARKOWO.js → en-N4EPZAQI.js} +31 -2
- package/dist/chunks/{enter-worktree-LUPPQ2NH.js → enter-worktree-LOJFRC3D.js} +8 -8
- package/dist/chunks/{enterPlanMode-44GEN5U6.js → enterPlanMode-VS3FAUPX.js} +8 -8
- package/dist/chunks/environment-WKW5TLSH.js +90 -0
- package/dist/chunks/{errors-H3Q3W3DL.js → errors-LEZXHJMR.js} +10 -10
- package/dist/chunks/{exit-worktree-34CVVWT4.js → exit-worktree-RN2NXRMP.js} +8 -8
- package/dist/chunks/{exitPlanMode-5G5BHNUP.js → exitPlanMode-EPC424I4.js} +8 -8
- package/dist/chunks/{fast-path-7PKGFBRM.js → fast-path-UUPAFOSQ.js} +12 -3
- package/dist/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
- package/dist/chunks/{fr-MBMNQSQ6.js → fr-5WWMY53B.js} +30 -1
- package/dist/chunks/{gemini-2II6JH4H.js → gemini-QCKK4XNU.js} +438 -265
- package/dist/chunks/{geminiContentGenerator-SWEJVOC4.js → geminiContentGenerator-DX4SRXJA.js} +1 -1
- package/dist/chunks/{glob-5DFC7DXW.js → glob-4URMJWRX.js} +8 -8
- package/dist/chunks/{grep-QYVXGRRJ.js → grep-AEQB5KED.js} +8 -8
- package/dist/chunks/handleAutoUpdate-Y4YNG34Y.js +65 -0
- package/dist/chunks/{initializer-XX3UGUHE.js → initializer-NDEBMSOG.js} +17 -13
- package/dist/chunks/{ja-HFV5QCHR.js → ja-CUHZOLEJ.js} +30 -1
- package/dist/chunks/{list-AX5FWBVC.js → list-VSCBNOWT.js} +17 -15
- package/dist/chunks/{loadedSettingsAdapter-ISOM6GJ7.js → loadedSettingsAdapter-FDO752BA.js} +15 -13
- package/dist/chunks/{loop-wakeup-ZW5P6VPY.js → loop-wakeup-OHWEMFP5.js} +2 -2
- package/dist/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
- package/dist/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
- package/dist/chunks/{mcp-74F6725E.js → mcp-MLPWTHUV.js} +15 -13
- package/dist/chunks/{monitor-W4WRSC2C.js → monitor-WCVHIJUJ.js} +16 -11
- package/dist/chunks/{nonInteractiveCli-4QMV6C4J.js → nonInteractiveCli-32HZK274.js} +52 -44
- package/dist/chunks/{notebook-edit-XBZEIP42.js → notebook-edit-NPOMPKS4.js} +9 -9
- package/dist/chunks/{openaiContentGenerator-RTUJDESE.js → openaiContentGenerator-6AIBSRQK.js} +6 -6
- package/dist/chunks/{pidfile-YWSGNTPK.js → pidfile-7Y3QEDSZ.js} +8 -8
- package/dist/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
- package/dist/chunks/{qwenContentGenerator-4ZFYAZLY.js → qwenContentGenerator-OUYOAYT4.js} +10 -10
- package/dist/chunks/{read-file-D7DKDIAC.js → read-file-EESFA24L.js} +3 -3
- package/dist/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
- package/dist/chunks/{ripGrep-KG7JYNER.js → ripGrep-DLYV7ZZG.js} +8 -8
- package/dist/chunks/{ru-PER5I4OI.js → ru-MKM2HFDS.js} +26 -1
- package/dist/chunks/{run-qwen-serve-XGJSNF6S.js → run-qwen-serve-WUEHQROF.js} +602 -143
- package/dist/chunks/{scheduler-MOLWOE4G.js → scheduler-SK4Y66V4.js} +8 -8
- package/dist/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
- package/dist/chunks/{serve-4ZNVPYND.js → serve-UCDGVZFI.js} +17 -14
- package/dist/chunks/{server-ACWDFHIF.js → server-FVGFFVZ4.js} +1394 -328
- package/dist/chunks/{session-VYO2GRO2.js → session-RIGKDMGR.js} +53 -45
- package/dist/chunks/{settings-4J2O3K22.js → settings-LVFFGXGE.js} +24 -20
- package/dist/chunks/{shell-RKERJYXR.js → shell-PAWNAFYN.js} +8 -8
- package/dist/chunks/{skill-JYACZJ5V.js → skill-5YIN3Z6Y.js} +15 -5
- package/dist/chunks/{spawnChannel-BA3U3RGX.js → spawnChannel-KIMZHWNR.js} +10 -10
- package/dist/chunks/{src-3P337V4P.js → src-BIWCD3VX.js} +21 -9
- package/dist/chunks/{startInteractiveUI-SUSZ6FWB.js → startInteractiveUI-AFXLGUFI.js} +33759 -41620
- package/dist/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
- package/dist/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
- package/dist/chunks/{team-create-YVWGRZEA.js → team-create-26WOMISV.js} +8 -8
- package/dist/chunks/{team-plan-approval-VRF54TTI.js → team-plan-approval-B5XB6UQC.js} +8 -8
- package/dist/chunks/{theme-manager-JW2KOACL.js → theme-manager-4TJ5TEFD.js} +8 -8
- package/dist/chunks/{tool-search-KUSMAZBN.js → tool-search-FFU63E6M.js} +6 -23
- package/dist/chunks/total-session-admission-JOD7SMPJ.js +72 -0
- package/dist/chunks/{trustedFolders-ERGSUCDK.js → trustedFolders-IJ2QHXSC.js} +9 -9
- package/dist/chunks/updateCheck-5Z25DCBP.js +65 -0
- package/dist/chunks/{validateNonInterActiveAuth-DDI62H5X.js → validateNonInterActiveAuth-G5EY47DE.js} +49 -41
- package/dist/chunks/{version-VB3AHVUF.js → version-LGO3GOKQ.js} +2 -1
- package/dist/chunks/{workflow-WINKRCI4.js → workflow-ZTK3WT3D.js} +9 -9
- package/dist/chunks/{workspace-providers-status-ZVZPXKSO.js → workspace-providers-status-YMPTRKW2.js} +18 -15
- package/dist/chunks/workspace-registry-NBUL6LBH.js +74 -0
- package/dist/chunks/{workspace-service-GAS2LV2P.js → workspace-service-V6G2RCD4.js} +21 -19
- package/dist/chunks/{workspace-skills-status-4WGKYJVA.js → workspace-skills-status-ZCW44BCH.js} +16 -14
- package/dist/chunks/{write-file-UTLKVZNN.js → write-file-4FUTAEW6.js} +9 -9
- package/dist/chunks/{zh-RS3HZHFH.js → zh-J4F6QWQV.js} +31 -2
- package/dist/chunks/{zh-TW-L5GRQ4S4.js → zh-TW-XVDWOLSW.js} +31 -2
- package/dist/cli.js +11 -11
- package/dist/locales/ca.js +30 -0
- package/dist/locales/de.js +30 -0
- package/dist/locales/en.js +38 -2
- package/dist/locales/fr.js +36 -0
- package/dist/locales/ja.js +36 -0
- package/dist/locales/pt.js +30 -0
- package/dist/locales/ru.js +30 -0
- package/dist/locales/zh-TW.js +38 -2
- package/dist/locales/zh.js +38 -2
- package/dist/package.json +3 -3
- package/dist/web-shell/assets/{arc-C6tzvtOa.js → arc-BWyoJpY2.js} +1 -1
- package/dist/web-shell/assets/{architectureDiagram-3BPJPVTR-DSYQFGn9.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
- package/dist/web-shell/assets/{blockDiagram-GPEHLZMM-CHjBdXAD.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
- package/dist/web-shell/assets/{c4Diagram-AAUBKEIU-BQzK6Yyb.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
- package/dist/web-shell/assets/channel-wmPUGHtg.js +1 -0
- package/dist/web-shell/assets/{chunk-2J33WTMH-hpP2p3Ij.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
- package/dist/web-shell/assets/{chunk-4BX2VUAB-B5KtK1JJ.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
- package/dist/web-shell/assets/{chunk-55IACEB6-BDv6Mfr2.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
- package/dist/web-shell/assets/{chunk-727SXJPM-BevPWfrX.js → chunk-727SXJPM-B2X34knw.js} +1 -1
- package/dist/web-shell/assets/{chunk-AQP2D5EJ-ChDrz2ad.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
- package/dist/web-shell/assets/{chunk-FMBD7UC4-ClMdVSDs.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
- package/dist/web-shell/assets/{chunk-ND2GUHAM-BceV8kZS.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
- package/dist/web-shell/assets/{chunk-QZHKN3VN-DtyK2wwc.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
- package/dist/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
- package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
- package/dist/web-shell/assets/{cose-bilkent-S5V4N54A-BGMsqwmE.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
- package/dist/web-shell/assets/{dagre-BM42HDAG-C-71clpF.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
- package/dist/web-shell/assets/{diagram-2AECGRRQ-WIzzlkec.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
- package/dist/web-shell/assets/{diagram-5GNKFQAL-CtnhZUP1.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
- package/dist/web-shell/assets/{diagram-KO2AKTUF-CS_IUezp.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
- package/dist/web-shell/assets/{diagram-LMA3HP47-BQnGRwN9.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
- package/dist/web-shell/assets/{diagram-OG6HWLK6-By2VIocq.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
- package/dist/web-shell/assets/{erDiagram-TEJ5UH35-Dy8WeNkr.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
- package/dist/web-shell/assets/{flowDiagram-I6XJVG4X-Diu_4y0w.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
- package/dist/web-shell/assets/{ganttDiagram-6RSMTGT7-CH8euujP.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
- package/dist/web-shell/assets/{gitGraphDiagram-PVQCEYII-DHiObZq1.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
- package/dist/web-shell/assets/index-CNwoO1Cn.js +783 -0
- package/dist/web-shell/assets/index-CWQ0z6kZ.css +5 -0
- package/dist/web-shell/assets/{infoDiagram-5YYISTIA-CvC9A6fh.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
- package/dist/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK46kC4E.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
- package/dist/web-shell/assets/{journeyDiagram-JHISSGLW-B2TIiKq4.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
- package/dist/web-shell/assets/{kanban-definition-UN3LZRKU-Bh0WAulO.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
- package/dist/web-shell/assets/{linear-Bxe9SHMk.js → linear-GWWguGfD.js} +1 -1
- package/dist/web-shell/assets/{mermaid.core-B1Pv6D5B.js → mermaid.core-JqtkxvCl.js} +5 -5
- package/dist/web-shell/assets/{mindmap-definition-RKZ34NQL-Bz0joLH8.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
- package/dist/web-shell/assets/{pieDiagram-4H26LBE5-CnN4x-VS.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
- package/dist/web-shell/assets/{quadrantDiagram-W4KKPZXB-BYWD4xO4.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
- package/dist/web-shell/assets/{requirementDiagram-4Y6WPE33-B4MEhI9h.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
- package/dist/web-shell/assets/{sankeyDiagram-5OEKKPKP-Dk_FgKLp.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
- package/dist/web-shell/assets/{sequenceDiagram-3UESZ5HK-B4ksiBZQ.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
- package/dist/web-shell/assets/{stateDiagram-AJRCARHV-CYf0xSPl.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
- package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
- package/dist/web-shell/assets/{timeline-definition-PNZ67QCA-0CXeWHNY.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
- package/dist/web-shell/assets/{vennDiagram-CIIHVFJN-DHoYY9v2.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
- package/dist/web-shell/assets/{wardley-L42UT6IY-D_65qshr.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
- package/dist/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cv90x1sd.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
- package/dist/web-shell/assets/{xychartDiagram-2RQKCTM6-5FQCYJyh.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
- package/dist/web-shell/index.html +2 -2
- package/package.json +3 -2
- package/dist/web-shell/assets/channel-V-ZaJrA6.js +0 -1
- package/dist/web-shell/assets/classDiagram-4FO5ZUOK-s-H0snGT.js +0 -1
- package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-s-H0snGT.js +0 -1
- package/dist/web-shell/assets/index-DW75jq0K.css +0 -5
- package/dist/web-shell/assets/index-tiCo0xbZ.js +0 -779
- package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-CMtrFRUb.js +0 -1
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
LOAD_REPLAY_BULK_MODE,
|
|
5
|
+
LOAD_REPLAY_META_KEY,
|
|
6
|
+
LOAD_REPLAY_MODE_META_KEY,
|
|
7
|
+
LOAD_REPLAY_VERSION,
|
|
8
|
+
MID_TURN_QUEUE_DRAIN_METHOD
|
|
9
|
+
} from "./chunk-AGHU5VRK.js";
|
|
10
|
+
import {
|
|
11
|
+
DEFAULT_RING_SIZE,
|
|
12
|
+
EVENT_SCHEMA_VERSION,
|
|
13
|
+
EventBus,
|
|
14
|
+
serializedBridgeEventByteLength
|
|
15
|
+
} from "./chunk-3UP777ZS.js";
|
|
16
|
+
import {
|
|
17
|
+
normalizeCompactedReplayMaxBytes
|
|
18
|
+
} from "./chunk-GLE2YUPU.js";
|
|
3
19
|
import {
|
|
4
20
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
5
21
|
} from "./chunk-P7M4GA57.js";
|
|
@@ -22,22 +38,10 @@ import {
|
|
|
22
38
|
SessionShellDisabledError,
|
|
23
39
|
WorkspaceMismatchError,
|
|
24
40
|
isNotCurrentlyGeneratingCancelError
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import {
|
|
27
|
-
LOAD_REPLAY_BULK_MODE,
|
|
28
|
-
LOAD_REPLAY_META_KEY,
|
|
29
|
-
LOAD_REPLAY_MODE_META_KEY,
|
|
30
|
-
LOAD_REPLAY_VERSION,
|
|
31
|
-
MID_TURN_QUEUE_DRAIN_METHOD
|
|
32
|
-
} from "./chunk-AGHU5VRK.js";
|
|
41
|
+
} from "./chunk-GGQQA4JW.js";
|
|
33
42
|
import {
|
|
34
43
|
canonicalizeWorkspace
|
|
35
44
|
} from "./chunk-ER3BKOLB.js";
|
|
36
|
-
import {
|
|
37
|
-
DEFAULT_RING_SIZE,
|
|
38
|
-
EVENT_SCHEMA_VERSION,
|
|
39
|
-
EventBus
|
|
40
|
-
} from "./chunk-G7ZG7CA6.js";
|
|
41
45
|
import {
|
|
42
46
|
ClientSideConnection,
|
|
43
47
|
PROTOCOL_VERSION,
|
|
@@ -45,7 +49,7 @@ import {
|
|
|
45
49
|
} from "./chunk-VRDMOSQS.js";
|
|
46
50
|
import {
|
|
47
51
|
defaultSpawnChannelFactory
|
|
48
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-EJP6Z7NU.js";
|
|
49
53
|
import {
|
|
50
54
|
BridgeChannelClosedError,
|
|
51
55
|
BridgeTimeoutError,
|
|
@@ -54,15 +58,15 @@ import {
|
|
|
54
58
|
STATUS_SCHEMA_VERSION,
|
|
55
59
|
createIdleWorkspaceExtensionsStatus,
|
|
56
60
|
createIdleWorkspaceHooksStatus
|
|
57
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-Q3PQ5VGJ.js";
|
|
58
62
|
import {
|
|
59
63
|
ShellExecutionService,
|
|
60
64
|
TrustGateError
|
|
61
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-5MRUKUOG.js";
|
|
62
66
|
import {
|
|
63
67
|
DAEMON_TRACEPARENT_META_KEY,
|
|
64
68
|
DAEMON_TRACESTATE_META_KEY
|
|
65
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-27AYMAL6.js";
|
|
66
70
|
import {
|
|
67
71
|
init_esbuild_shims
|
|
68
72
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -79,6 +83,7 @@ import * as path3 from "node:path";
|
|
|
79
83
|
init_esbuild_shims();
|
|
80
84
|
var TURN_BOUNDARY_TYPES = /* @__PURE__ */ new Set(["turn_complete", "turn_error"]);
|
|
81
85
|
var TRANSIENT_TYPES = /* @__PURE__ */ new Set([
|
|
86
|
+
"history_truncated",
|
|
82
87
|
"slow_client_warning",
|
|
83
88
|
"client_evicted",
|
|
84
89
|
"replay_complete",
|
|
@@ -88,17 +93,28 @@ var LATEST_WINS_UPDATES = /* @__PURE__ */ new Set([
|
|
|
88
93
|
"available_commands_update",
|
|
89
94
|
"current_mode_update"
|
|
90
95
|
]);
|
|
96
|
+
var REPLAY_SEGMENT_COMPACT_THRESHOLD = 64;
|
|
91
97
|
var TurnBoundaryCompactionEngine = class {
|
|
92
98
|
static {
|
|
93
99
|
__name(this, "TurnBoundaryCompactionEngine");
|
|
94
100
|
}
|
|
95
|
-
|
|
101
|
+
maxReplayBytes;
|
|
102
|
+
onReplayWindowEviction;
|
|
103
|
+
replaySegments = [];
|
|
104
|
+
replaySegmentStart = 0;
|
|
105
|
+
replayBytes = 0;
|
|
96
106
|
liveJournal = [];
|
|
97
107
|
lastEventId = 0;
|
|
98
108
|
closed = false;
|
|
109
|
+
truncatedEvents = 0;
|
|
110
|
+
truncatedTurns = 0;
|
|
99
111
|
slots = [];
|
|
100
112
|
toolSlotIndex = /* @__PURE__ */ new Map();
|
|
101
113
|
textSlotIndex = /* @__PURE__ */ new Map();
|
|
114
|
+
constructor(opts = {}) {
|
|
115
|
+
this.maxReplayBytes = normalizeCompactedReplayMaxBytes(opts.maxReplayBytes);
|
|
116
|
+
this.onReplayWindowEviction = opts.onReplayWindowEviction;
|
|
117
|
+
}
|
|
102
118
|
ingest(event) {
|
|
103
119
|
if (this.closed) return;
|
|
104
120
|
if (event.id !== void 0) {
|
|
@@ -117,16 +133,39 @@ var TurnBoundaryCompactionEngine = class {
|
|
|
117
133
|
this.slots.push({ kind: "misc", event });
|
|
118
134
|
}
|
|
119
135
|
snapshot() {
|
|
136
|
+
const compactedTurns = this.flattenReplaySegments();
|
|
137
|
+
if (this.truncatedEvents > 0) {
|
|
138
|
+
compactedTurns.unshift(
|
|
139
|
+
this.makeHistoryTruncatedEvent(compactedTurns.length)
|
|
140
|
+
);
|
|
141
|
+
}
|
|
120
142
|
return {
|
|
121
|
-
compactedTurns
|
|
143
|
+
compactedTurns,
|
|
122
144
|
liveJournal: this.liveJournal.slice(),
|
|
123
145
|
lastEventId: this.lastEventId
|
|
124
146
|
};
|
|
125
147
|
}
|
|
126
148
|
seed(snapshot) {
|
|
127
149
|
if (this.closed) return;
|
|
128
|
-
this.
|
|
150
|
+
this.resetReplayWindow();
|
|
129
151
|
this.lastEventId = snapshot.lastEventId;
|
|
152
|
+
for (const event of snapshot.compactedTurns) {
|
|
153
|
+
if (TRANSIENT_TYPES.has(event.type)) continue;
|
|
154
|
+
this.addReplaySegment([event], 0);
|
|
155
|
+
}
|
|
156
|
+
this.liveJournal = [];
|
|
157
|
+
this.slots = [];
|
|
158
|
+
this.toolSlotIndex.clear();
|
|
159
|
+
this.textSlotIndex.clear();
|
|
160
|
+
}
|
|
161
|
+
seedReplayEvents(events) {
|
|
162
|
+
if (this.closed) return;
|
|
163
|
+
this.resetReplayWindow();
|
|
164
|
+
for (const event of events) {
|
|
165
|
+
this.recordLastEventId(event);
|
|
166
|
+
if (TRANSIENT_TYPES.has(event.type)) continue;
|
|
167
|
+
this.addReplaySegment([event], 0);
|
|
168
|
+
}
|
|
130
169
|
this.liveJournal = [];
|
|
131
170
|
this.slots = [];
|
|
132
171
|
this.toolSlotIndex.clear();
|
|
@@ -135,7 +174,7 @@ var TurnBoundaryCompactionEngine = class {
|
|
|
135
174
|
close() {
|
|
136
175
|
if (this.closed) return;
|
|
137
176
|
this.closed = true;
|
|
138
|
-
this.
|
|
177
|
+
this.resetReplayWindow();
|
|
139
178
|
this.liveJournal = [];
|
|
140
179
|
this.slots = [];
|
|
141
180
|
this.toolSlotIndex.clear();
|
|
@@ -272,12 +311,94 @@ var TurnBoundaryCompactionEngine = class {
|
|
|
272
311
|
}
|
|
273
312
|
}
|
|
274
313
|
compacted.push(boundaryEvent);
|
|
275
|
-
this.
|
|
314
|
+
this.addReplaySegment(compacted, 1);
|
|
276
315
|
this.liveJournal = [];
|
|
277
316
|
this.slots = [];
|
|
278
317
|
this.toolSlotIndex.clear();
|
|
279
318
|
this.textSlotIndex.clear();
|
|
280
319
|
}
|
|
320
|
+
recordLastEventId(event) {
|
|
321
|
+
if (event.id !== void 0) {
|
|
322
|
+
this.lastEventId = event.id;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
addReplaySegment(events, turnCount) {
|
|
326
|
+
if (events.length === 0) return;
|
|
327
|
+
const bytes = events.reduce(
|
|
328
|
+
(sum, event) => sum + serializedBridgeEventByteLength(event),
|
|
329
|
+
0
|
|
330
|
+
);
|
|
331
|
+
this.replaySegments.push({ events: events.slice(), bytes, turnCount });
|
|
332
|
+
this.replayBytes += bytes;
|
|
333
|
+
this.enforceReplayWindow();
|
|
334
|
+
}
|
|
335
|
+
enforceReplayWindow() {
|
|
336
|
+
let droppedSegmentCount = 0;
|
|
337
|
+
let droppedBytes = 0;
|
|
338
|
+
let droppedEvents = 0;
|
|
339
|
+
let droppedTurns = 0;
|
|
340
|
+
while (this.replayBytes > this.maxReplayBytes && this.activeReplaySegmentCount() > 1) {
|
|
341
|
+
const dropped = this.replaySegments[this.replaySegmentStart];
|
|
342
|
+
this.replaySegmentStart += 1;
|
|
343
|
+
droppedSegmentCount += 1;
|
|
344
|
+
droppedBytes += dropped.bytes;
|
|
345
|
+
droppedEvents += dropped.events.length;
|
|
346
|
+
droppedTurns += dropped.turnCount;
|
|
347
|
+
this.replayBytes -= dropped.bytes;
|
|
348
|
+
this.truncatedEvents += dropped.events.length;
|
|
349
|
+
this.truncatedTurns += dropped.turnCount;
|
|
350
|
+
}
|
|
351
|
+
if (droppedSegmentCount > 0) {
|
|
352
|
+
this.compactReplaySegmentQueueIfNeeded();
|
|
353
|
+
this.notifyReplayWindowEviction({
|
|
354
|
+
droppedBytes,
|
|
355
|
+
droppedEvents,
|
|
356
|
+
droppedSegments: droppedSegmentCount,
|
|
357
|
+
droppedTurns,
|
|
358
|
+
maxBytes: this.maxReplayBytes,
|
|
359
|
+
retainedBytes: this.replayBytes,
|
|
360
|
+
retainedEvents: this.flattenReplaySegments().length
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
flattenReplaySegments() {
|
|
365
|
+
return this.replaySegments.slice(this.replaySegmentStart).flatMap((segment) => segment.events);
|
|
366
|
+
}
|
|
367
|
+
activeReplaySegmentCount() {
|
|
368
|
+
return this.replaySegments.length - this.replaySegmentStart;
|
|
369
|
+
}
|
|
370
|
+
compactReplaySegmentQueueIfNeeded() {
|
|
371
|
+
if (this.replaySegmentStart < REPLAY_SEGMENT_COMPACT_THRESHOLD) return;
|
|
372
|
+
this.replaySegments.splice(0, this.replaySegmentStart);
|
|
373
|
+
this.replaySegmentStart = 0;
|
|
374
|
+
}
|
|
375
|
+
notifyReplayWindowEviction(eviction) {
|
|
376
|
+
try {
|
|
377
|
+
this.onReplayWindowEviction?.(eviction);
|
|
378
|
+
} catch {
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
makeHistoryTruncatedEvent(retainedEvents) {
|
|
382
|
+
return {
|
|
383
|
+
v: EVENT_SCHEMA_VERSION,
|
|
384
|
+
type: "history_truncated",
|
|
385
|
+
data: {
|
|
386
|
+
reason: "replay_window_exceeded",
|
|
387
|
+
truncatedEvents: this.truncatedEvents,
|
|
388
|
+
retainedEvents,
|
|
389
|
+
maxBytes: this.maxReplayBytes,
|
|
390
|
+
...this.truncatedTurns > 0 ? { truncatedTurns: this.truncatedTurns } : {},
|
|
391
|
+
fullTranscriptAvailable: false
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
resetReplayWindow() {
|
|
396
|
+
this.replaySegments = [];
|
|
397
|
+
this.replaySegmentStart = 0;
|
|
398
|
+
this.replayBytes = 0;
|
|
399
|
+
this.truncatedEvents = 0;
|
|
400
|
+
this.truncatedTurns = 0;
|
|
401
|
+
}
|
|
281
402
|
};
|
|
282
403
|
function makeMergedSessionUpdateEvent(sessionUpdate, text, eventId, meta, envelopeMeta) {
|
|
283
404
|
return {
|
|
@@ -3276,6 +3397,18 @@ function isBridgeAutoMemoryTopic(value) {
|
|
|
3276
3397
|
return value === "user" || value === "feedback" || value === "project" || value === "reference";
|
|
3277
3398
|
}
|
|
3278
3399
|
__name(isBridgeAutoMemoryTopic, "isBridgeAutoMemoryTopic");
|
|
3400
|
+
function touchedScopesFromTopics(topics) {
|
|
3401
|
+
const scopes = /* @__PURE__ */ new Set();
|
|
3402
|
+
for (const topic of topics) {
|
|
3403
|
+
scopes.add(topic === "user" || topic === "feedback" ? "user" : "project");
|
|
3404
|
+
}
|
|
3405
|
+
return ["user", "project"].filter((scope) => scopes.has(scope));
|
|
3406
|
+
}
|
|
3407
|
+
__name(touchedScopesFromTopics, "touchedScopesFromTopics");
|
|
3408
|
+
function isBridgeMemoryScope(value) {
|
|
3409
|
+
return value === "user" || value === "project";
|
|
3410
|
+
}
|
|
3411
|
+
__name(isBridgeMemoryScope, "isBridgeMemoryScope");
|
|
3279
3412
|
function parseWorkspaceMemoryForgetMatch(value) {
|
|
3280
3413
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
3281
3414
|
return null;
|
|
@@ -3299,14 +3432,17 @@ function parseWorkspaceMemoryForgetResult(response) {
|
|
|
3299
3432
|
const summary = record["summary"];
|
|
3300
3433
|
const removedEntries = record["removedEntries"];
|
|
3301
3434
|
const touchedTopics = record["touchedTopics"];
|
|
3435
|
+
const touchedScopes = record["touchedScopes"];
|
|
3302
3436
|
const parsedRemovedEntries = Array.isArray(removedEntries) ? removedEntries.map(parseWorkspaceMemoryForgetMatch) : [];
|
|
3303
|
-
if (summary !== void 0 && typeof summary !== "string" || !Array.isArray(removedEntries) || parsedRemovedEntries.some((entry) => entry === null) || !Array.isArray(touchedTopics) || !touchedTopics.every(isBridgeAutoMemoryTopic)) {
|
|
3437
|
+
if (summary !== void 0 && typeof summary !== "string" || !Array.isArray(removedEntries) || parsedRemovedEntries.some((entry) => entry === null) || !Array.isArray(touchedTopics) || !touchedTopics.every(isBridgeAutoMemoryTopic) || touchedScopes !== void 0 && (!Array.isArray(touchedScopes) || !touchedScopes.every(isBridgeMemoryScope))) {
|
|
3304
3438
|
throw new Error("Malformed workspace memory forget response");
|
|
3305
3439
|
}
|
|
3440
|
+
const parsedTouchedTopics = touchedTopics;
|
|
3306
3441
|
return {
|
|
3307
3442
|
...summary === void 0 ? {} : { summary },
|
|
3308
3443
|
removedEntries: parsedRemovedEntries,
|
|
3309
|
-
touchedTopics
|
|
3444
|
+
touchedTopics: parsedTouchedTopics,
|
|
3445
|
+
touchedScopes: touchedScopes === void 0 ? touchedScopesFromTopics(parsedTouchedTopics) : touchedScopes
|
|
3310
3446
|
};
|
|
3311
3447
|
}
|
|
3312
3448
|
__name(parseWorkspaceMemoryForgetResult, "parseWorkspaceMemoryForgetResult");
|
|
@@ -3432,9 +3568,19 @@ function extractErrorCode(err) {
|
|
|
3432
3568
|
return void 0;
|
|
3433
3569
|
}
|
|
3434
3570
|
__name(extractErrorCode, "extractErrorCode");
|
|
3571
|
+
function classifyTurnErrorKind(message) {
|
|
3572
|
+
return message.trim().toLowerCase() === "terminated" ? "model_stream_interrupted" : void 0;
|
|
3573
|
+
}
|
|
3574
|
+
__name(classifyTurnErrorKind, "classifyTurnErrorKind");
|
|
3435
3575
|
function broadcastTurnError(entry, sessionId, err, promptId, originatorClientId) {
|
|
3436
3576
|
const message = extractErrorMessage(err);
|
|
3437
3577
|
const code = extractErrorCode(err);
|
|
3578
|
+
const errorKind = classifyTurnErrorKind(message);
|
|
3579
|
+
if (errorKind) {
|
|
3580
|
+
writeServeDebugLine(
|
|
3581
|
+
`turn_error classified session=${JSON.stringify(sessionId)} message=${JSON.stringify(message)} errorKind=${JSON.stringify(errorKind)}` + (code ? ` code=${JSON.stringify(code)}` : "") + (promptId ? ` promptId=${JSON.stringify(promptId)}` : "")
|
|
3582
|
+
);
|
|
3583
|
+
}
|
|
3438
3584
|
entry.retryAllowed = true;
|
|
3439
3585
|
try {
|
|
3440
3586
|
entry.events.publish({
|
|
@@ -3443,6 +3589,7 @@ function broadcastTurnError(entry, sessionId, err, promptId, originatorClientId)
|
|
|
3443
3589
|
sessionId,
|
|
3444
3590
|
message,
|
|
3445
3591
|
...code ? { code } : {},
|
|
3592
|
+
...errorKind ? { errorKind } : {},
|
|
3446
3593
|
...promptId ? { promptId } : {}
|
|
3447
3594
|
},
|
|
3448
3595
|
...originatorClientId ? { originatorClientId } : {}
|
|
@@ -3512,6 +3659,18 @@ function createAcpSessionBridge(opts) {
|
|
|
3512
3659
|
} else {
|
|
3513
3660
|
maxSessions = opts.maxSessions;
|
|
3514
3661
|
}
|
|
3662
|
+
const reserveFreshSession = /* @__PURE__ */ __name((context) => opts.freshSessionAdmission?.(context), "reserveFreshSession");
|
|
3663
|
+
const releaseFreshSessionReservation = /* @__PURE__ */ __name((reservation) => {
|
|
3664
|
+
if (!reservation) return;
|
|
3665
|
+
try {
|
|
3666
|
+
reservation.release();
|
|
3667
|
+
} catch (err) {
|
|
3668
|
+
opts.onDiagnosticLine?.(
|
|
3669
|
+
`qwen serve: fresh session admission release failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
3670
|
+
"warn"
|
|
3671
|
+
);
|
|
3672
|
+
}
|
|
3673
|
+
}, "releaseFreshSessionReservation");
|
|
3515
3674
|
if (defaultSessionScope !== "single" && defaultSessionScope !== "thread") {
|
|
3516
3675
|
throw new TypeError(
|
|
3517
3676
|
`Invalid sessionScope: ${JSON.stringify(defaultSessionScope)}. Expected 'single' or 'thread'.`
|
|
@@ -3523,6 +3682,9 @@ function createAcpSessionBridge(opts) {
|
|
|
3523
3682
|
`Invalid eventRingSize: ${opts.eventRingSize}. Must be a positive integer in [1, ${MAX_EVENT_RING_SIZE}].`
|
|
3524
3683
|
);
|
|
3525
3684
|
}
|
|
3685
|
+
const compactedReplayMaxBytes = normalizeCompactedReplayMaxBytes(
|
|
3686
|
+
opts.compactedReplayMaxBytes
|
|
3687
|
+
);
|
|
3526
3688
|
const channelFactory = opts.channelFactory ?? defaultSpawnChannelFactory;
|
|
3527
3689
|
const childEnvOverrides = opts.childEnvOverrides ? Object.freeze({ ...opts.childEnvOverrides }) : Object.freeze({});
|
|
3528
3690
|
const initTimeoutMs = opts.initializeTimeoutMs ?? DEFAULT_INIT_TIMEOUT_MS;
|
|
@@ -3952,7 +4114,7 @@ function createAcpSessionBridge(opts) {
|
|
|
3952
4114
|
}
|
|
3953
4115
|
}
|
|
3954
4116
|
__name(ensureChannel, "ensureChannel");
|
|
3955
|
-
async function doSpawn(modelServiceId, effectiveScope, requestedClientId) {
|
|
4117
|
+
async function doSpawn(modelServiceId, effectiveScope, requestedClientId, onSessionRegistered) {
|
|
3956
4118
|
const ci = await ensureChannel();
|
|
3957
4119
|
ci.sessionSpawnsInFlight++;
|
|
3958
4120
|
let sessionRegistered = false;
|
|
@@ -3993,6 +4155,7 @@ function createAcpSessionBridge(opts) {
|
|
|
3993
4155
|
boundWorkspace
|
|
3994
4156
|
);
|
|
3995
4157
|
sessionRegistered = true;
|
|
4158
|
+
onSessionRegistered?.();
|
|
3996
4159
|
seedSnapshotCaches(entry, newSessionResp);
|
|
3997
4160
|
const clientId = registerClient(entry, requestedClientId);
|
|
3998
4161
|
if (effectiveScope === "single" && !defaultEntry) defaultEntry = entry;
|
|
@@ -4269,7 +4432,18 @@ function createAcpSessionBridge(opts) {
|
|
|
4269
4432
|
);
|
|
4270
4433
|
}
|
|
4271
4434
|
}, "broadcastWorkspaceEvent");
|
|
4272
|
-
const createSessionEventBus = /* @__PURE__ */ __name(() => new EventBus(
|
|
4435
|
+
const createSessionEventBus = /* @__PURE__ */ __name(() => new EventBus(
|
|
4436
|
+
eventRingSize,
|
|
4437
|
+
void 0,
|
|
4438
|
+
new TurnBoundaryCompactionEngine({
|
|
4439
|
+
maxReplayBytes: compactedReplayMaxBytes,
|
|
4440
|
+
onReplayWindowEviction: /* @__PURE__ */ __name((eviction) => {
|
|
4441
|
+
teeServeDebugLine(
|
|
4442
|
+
`replay window evicted ${JSON.stringify(eviction)}`
|
|
4443
|
+
);
|
|
4444
|
+
}, "onReplayWindowEviction")
|
|
4445
|
+
})
|
|
4446
|
+
), "createSessionEventBus");
|
|
4273
4447
|
const publishModelSwitched = /* @__PURE__ */ __name((entry, modelId, originatorClientId) => {
|
|
4274
4448
|
entry.currentModelId = modelId;
|
|
4275
4449
|
entry.modelPublishGeneration++;
|
|
@@ -4459,7 +4633,7 @@ function createAcpSessionBridge(opts) {
|
|
|
4459
4633
|
}
|
|
4460
4634
|
return { lastEventId: snapshot.lastEventId, ...replayStatus };
|
|
4461
4635
|
}, "replayFieldsFor");
|
|
4462
|
-
async function restoreSession(action, req) {
|
|
4636
|
+
async function restoreSession(action, req, options = {}) {
|
|
4463
4637
|
if (shuttingDown) {
|
|
4464
4638
|
throw new Error("AcpSessionBridge is shutting down");
|
|
4465
4639
|
}
|
|
@@ -4522,6 +4696,17 @@ function createAcpSessionBridge(opts) {
|
|
|
4522
4696
|
let registeredEntry;
|
|
4523
4697
|
let ci;
|
|
4524
4698
|
const coalesceState = { count: 0 };
|
|
4699
|
+
const admission = options.skipFreshSessionAdmission === true ? void 0 : reserveFreshSession({
|
|
4700
|
+
operation: action,
|
|
4701
|
+
workspaceCwd: workspaceKey,
|
|
4702
|
+
sessionId: req.sessionId
|
|
4703
|
+
});
|
|
4704
|
+
let admissionReleased = false;
|
|
4705
|
+
const releaseAdmissionOnce = /* @__PURE__ */ __name(() => {
|
|
4706
|
+
if (admissionReleased) return;
|
|
4707
|
+
admissionReleased = true;
|
|
4708
|
+
releaseFreshSessionReservation(admission);
|
|
4709
|
+
}, "releaseAdmissionOnce");
|
|
4525
4710
|
const promise = (async () => {
|
|
4526
4711
|
pendingRestoreEvents.set(req.sessionId, restoreEvents);
|
|
4527
4712
|
ci = await ensureChannel();
|
|
@@ -4627,6 +4812,7 @@ function createAcpSessionBridge(opts) {
|
|
|
4627
4812
|
restoreEvents,
|
|
4628
4813
|
{ drainEarlyEvents: replayUpdates.length === 0 }
|
|
4629
4814
|
);
|
|
4815
|
+
releaseAdmissionOnce();
|
|
4630
4816
|
entry.restoreState = state;
|
|
4631
4817
|
if (replayPartial === true) {
|
|
4632
4818
|
entry.restoreReplayPartial = true;
|
|
@@ -4653,6 +4839,7 @@ function createAcpSessionBridge(opts) {
|
|
|
4653
4839
|
...replayFieldsFor(entry, action)
|
|
4654
4840
|
};
|
|
4655
4841
|
})().finally(async () => {
|
|
4842
|
+
releaseAdmissionOnce();
|
|
4656
4843
|
ci?.pendingRestoreIds.delete(req.sessionId);
|
|
4657
4844
|
ci?.client.clearRestoreInFlight(req.sessionId);
|
|
4658
4845
|
pendingRestoreEvents.delete(req.sessionId);
|
|
@@ -4777,6 +4964,7 @@ function createAcpSessionBridge(opts) {
|
|
|
4777
4964
|
maxSessions: maxSessions === Infinity ? null : maxSessions,
|
|
4778
4965
|
maxPendingPromptsPerSession: maxPendingPromptsPerSession === Infinity ? null : maxPendingPromptsPerSession,
|
|
4779
4966
|
eventRingSize,
|
|
4967
|
+
compactedReplayMaxBytes,
|
|
4780
4968
|
channelIdleTimeoutMs: resolvedChannelIdleTimeoutMs(),
|
|
4781
4969
|
sessionIdleTimeoutMs
|
|
4782
4970
|
},
|
|
@@ -4906,12 +5094,28 @@ function createAcpSessionBridge(opts) {
|
|
|
4906
5094
|
if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
|
|
4907
5095
|
throw new SessionLimitExceededError(maxSessions);
|
|
4908
5096
|
}
|
|
4909
|
-
const
|
|
5097
|
+
const admission = reserveFreshSession({
|
|
5098
|
+
operation: "spawn",
|
|
5099
|
+
workspaceCwd: workspaceKey
|
|
5100
|
+
});
|
|
5101
|
+
let admissionReleased = false;
|
|
5102
|
+
const releaseAdmissionOnce = /* @__PURE__ */ __name(() => {
|
|
5103
|
+
if (admissionReleased) return;
|
|
5104
|
+
admissionReleased = true;
|
|
5105
|
+
releaseFreshSessionReservation(admission);
|
|
5106
|
+
}, "releaseAdmissionOnce");
|
|
5107
|
+
const promise = doSpawn(
|
|
5108
|
+
req.modelServiceId,
|
|
5109
|
+
effectiveScope,
|
|
5110
|
+
req.clientId,
|
|
5111
|
+
releaseAdmissionOnce
|
|
5112
|
+
);
|
|
4910
5113
|
const tracker = effectiveScope === "single" ? workspaceKey : `${workspaceKey}#${randomUUID2()}`;
|
|
4911
5114
|
inFlightSpawns.set(tracker, promise);
|
|
4912
5115
|
try {
|
|
4913
5116
|
return await promise;
|
|
4914
5117
|
} finally {
|
|
5118
|
+
releaseAdmissionOnce();
|
|
4915
5119
|
inFlightSpawns.delete(tracker);
|
|
4916
5120
|
}
|
|
4917
5121
|
},
|
|
@@ -5368,67 +5572,89 @@ function createAcpSessionBridge(opts) {
|
|
|
5368
5572
|
if (byId.size + inFlightSpawns.size + inFlightRestores.size >= maxSessions) {
|
|
5369
5573
|
throw new SessionLimitExceededError(maxSessions);
|
|
5370
5574
|
}
|
|
5371
|
-
const
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5376
|
-
|
|
5377
|
-
|
|
5378
|
-
|
|
5379
|
-
|
|
5380
|
-
|
|
5381
|
-
|
|
5382
|
-
throw new Error(
|
|
5383
|
-
`branchSession: agent returned invalid response: ${JSON.stringify(result)}`
|
|
5384
|
-
);
|
|
5385
|
-
}
|
|
5386
|
-
const rawBranchName = result.displayName ?? result.title;
|
|
5387
|
-
const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
|
|
5388
|
-
let restored;
|
|
5575
|
+
const admission = reserveFreshSession({
|
|
5576
|
+
operation: "branch",
|
|
5577
|
+
workspaceCwd: boundWorkspace,
|
|
5578
|
+
sourceSessionId: sessionId
|
|
5579
|
+
});
|
|
5580
|
+
let admissionReleased = false;
|
|
5581
|
+
const releaseAdmissionOnce = /* @__PURE__ */ __name(() => {
|
|
5582
|
+
if (admissionReleased) return;
|
|
5583
|
+
admissionReleased = true;
|
|
5584
|
+
releaseFreshSessionReservation(admission);
|
|
5585
|
+
}, "releaseAdmissionOnce");
|
|
5389
5586
|
try {
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5397
|
-
|
|
5587
|
+
const ci = await ensureChannel();
|
|
5588
|
+
const result = await withTimeout(
|
|
5589
|
+
ci.connection.extMethod(SERVE_CONTROL_EXT_METHODS.sessionBranch, {
|
|
5590
|
+
sessionId,
|
|
5591
|
+
cwd: boundWorkspace,
|
|
5592
|
+
name: req.name
|
|
5593
|
+
}),
|
|
5594
|
+
initTimeoutMs,
|
|
5595
|
+
"branchSession"
|
|
5398
5596
|
);
|
|
5597
|
+
if (!result || typeof result.newSessionId !== "string") {
|
|
5598
|
+
throw new Error(
|
|
5599
|
+
`branchSession: agent returned invalid response: ${JSON.stringify(result)}`
|
|
5600
|
+
);
|
|
5601
|
+
}
|
|
5602
|
+
const rawBranchName = result.displayName ?? result.title;
|
|
5603
|
+
const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
|
|
5604
|
+
let restored;
|
|
5399
5605
|
try {
|
|
5400
|
-
await
|
|
5401
|
-
|
|
5402
|
-
{
|
|
5606
|
+
restored = await restoreSession(
|
|
5607
|
+
"load",
|
|
5608
|
+
{
|
|
5609
|
+
sessionId: result.newSessionId,
|
|
5610
|
+
workspaceCwd: boundWorkspace,
|
|
5611
|
+
clientId: context?.clientId
|
|
5612
|
+
},
|
|
5613
|
+
{
|
|
5614
|
+
skipFreshSessionAdmission: true
|
|
5615
|
+
}
|
|
5403
5616
|
);
|
|
5404
|
-
|
|
5617
|
+
releaseAdmissionOnce();
|
|
5618
|
+
} catch (restoreErr) {
|
|
5405
5619
|
writeStderrLine(
|
|
5406
|
-
`qwen serve: branchSession
|
|
5620
|
+
`qwen serve: branchSession load failed for ${result.newSessionId}, attempting cleanup...`
|
|
5407
5621
|
);
|
|
5622
|
+
try {
|
|
5623
|
+
await ci.connection.extMethod(
|
|
5624
|
+
SERVE_CONTROL_EXT_METHODS.sessionClose,
|
|
5625
|
+
{ sessionId: result.newSessionId, cwd: boundWorkspace }
|
|
5626
|
+
);
|
|
5627
|
+
} catch (cleanupErr) {
|
|
5628
|
+
writeStderrLine(
|
|
5629
|
+
`qwen serve: branchSession cleanup of ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
|
|
5630
|
+
);
|
|
5631
|
+
}
|
|
5632
|
+
throw restoreErr;
|
|
5408
5633
|
}
|
|
5409
|
-
|
|
5634
|
+
const newEntry = byId.get(result.newSessionId);
|
|
5635
|
+
if (newEntry) newEntry.displayName = branchDisplayName;
|
|
5636
|
+
const eventData = {
|
|
5637
|
+
sourceSessionId: sessionId,
|
|
5638
|
+
newSessionId: result.newSessionId,
|
|
5639
|
+
displayName: branchDisplayName
|
|
5640
|
+
};
|
|
5641
|
+
const branchEnvelope = {
|
|
5642
|
+
type: "session_branched",
|
|
5643
|
+
data: eventData,
|
|
5644
|
+
...originatorClientId ? { originatorClientId } : {}
|
|
5645
|
+
};
|
|
5646
|
+
newEntry?.events.publish(branchEnvelope);
|
|
5647
|
+
return {
|
|
5648
|
+
...restored,
|
|
5649
|
+
displayName: branchDisplayName,
|
|
5650
|
+
forkedFrom: {
|
|
5651
|
+
sessionId,
|
|
5652
|
+
displayName: entry.displayName ?? sessionId.slice(0, 8)
|
|
5653
|
+
}
|
|
5654
|
+
};
|
|
5655
|
+
} finally {
|
|
5656
|
+
releaseAdmissionOnce();
|
|
5410
5657
|
}
|
|
5411
|
-
const newEntry = byId.get(result.newSessionId);
|
|
5412
|
-
if (newEntry) newEntry.displayName = branchDisplayName;
|
|
5413
|
-
const eventData = {
|
|
5414
|
-
sourceSessionId: sessionId,
|
|
5415
|
-
newSessionId: result.newSessionId,
|
|
5416
|
-
displayName: branchDisplayName
|
|
5417
|
-
};
|
|
5418
|
-
const branchEnvelope = {
|
|
5419
|
-
type: "session_branched",
|
|
5420
|
-
data: eventData,
|
|
5421
|
-
...originatorClientId ? { originatorClientId } : {}
|
|
5422
|
-
};
|
|
5423
|
-
newEntry?.events.publish(branchEnvelope);
|
|
5424
|
-
return {
|
|
5425
|
-
...restored,
|
|
5426
|
-
displayName: branchDisplayName,
|
|
5427
|
-
forkedFrom: {
|
|
5428
|
-
sessionId,
|
|
5429
|
-
displayName: entry.displayName ?? sessionId.slice(0, 8)
|
|
5430
|
-
}
|
|
5431
|
-
};
|
|
5432
5658
|
});
|
|
5433
5659
|
entry.promptQueue = branchResult.then(
|
|
5434
5660
|
() => void 0,
|
|
@@ -6833,6 +7059,7 @@ export {
|
|
|
6833
7059
|
SessionArtifactValidationError,
|
|
6834
7060
|
extractErrorMessage,
|
|
6835
7061
|
extractErrorCode,
|
|
7062
|
+
classifyTurnErrorKind,
|
|
6836
7063
|
createAcpSessionBridge,
|
|
6837
7064
|
createHttpAcpBridge
|
|
6838
7065
|
};
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
|
-
DEFAULT_EXCLUDED_ENV_VARS,
|
|
5
|
-
HOME_ENV_BOOTSTRAP_KEYS,
|
|
6
|
-
PROJECT_ENV_HARDCODED_EXCLUSIONS,
|
|
7
4
|
SETTINGS_DIRECTORY_NAME,
|
|
8
5
|
V1_INDICATOR_KEYS,
|
|
9
6
|
getGlobalQwenDirLite,
|
|
10
7
|
getSystemDefaultsPath,
|
|
11
8
|
getSystemSettingsPath,
|
|
12
9
|
resolveEnvVarsInObject
|
|
13
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-O2YT7VB4.js";
|
|
11
|
+
import {
|
|
12
|
+
DEFAULT_EXCLUDED_ENV_VARS,
|
|
13
|
+
HOME_ENV_BOOTSTRAP_KEYS,
|
|
14
|
+
PROJECT_ENV_HARDCODED_EXCLUSIONS
|
|
15
|
+
} from "./chunk-Z3I3QJK3.js";
|
|
14
16
|
import {
|
|
15
17
|
getPathComparisonVariants,
|
|
16
18
|
isWithinRoot,
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
handleAtCommand
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SSP3UT5C.js";
|
|
6
6
|
import {
|
|
7
7
|
JsonOutputAdapter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GWUN54UD.js";
|
|
9
9
|
import {
|
|
10
10
|
StreamJsonOutputAdapter
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KH2CZZDD.js";
|
|
12
12
|
import {
|
|
13
13
|
buildInitialSystemReminders,
|
|
14
14
|
buildSystemMessage,
|
|
@@ -20,10 +20,10 @@ import {
|
|
|
20
20
|
insertAfterFunctionResponses,
|
|
21
21
|
isSlashCommand,
|
|
22
22
|
normalizePartList
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-BN5VYAOZ.js";
|
|
24
24
|
import {
|
|
25
25
|
RunBudgetEnforcer
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-W4CTWW7M.js";
|
|
27
27
|
import {
|
|
28
28
|
AlreadyReportedError,
|
|
29
29
|
handleBudgetExceededError,
|
|
@@ -31,10 +31,10 @@ import {
|
|
|
31
31
|
handleError,
|
|
32
32
|
handleMaxTurnsExceededError,
|
|
33
33
|
handleToolError
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-WN4YJJGH.js";
|
|
35
35
|
import {
|
|
36
36
|
isInlineModelOverrideAllowed
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-XWDHZP7P.js";
|
|
38
38
|
import {
|
|
39
39
|
ORPHAN_TOOL_USE_REPAIR_REASON,
|
|
40
40
|
buildSyntheticToolResponseParts,
|
|
@@ -49,12 +49,12 @@ import {
|
|
|
49
49
|
parseAndFormatApiError,
|
|
50
50
|
promptIdContext,
|
|
51
51
|
restoreWorktreeContext
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-5MRUKUOG.js";
|
|
53
53
|
import {
|
|
54
54
|
isTelemetrySdkInitialized,
|
|
55
55
|
shutdownTelemetry,
|
|
56
56
|
uiTelemetryService
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-27AYMAL6.js";
|
|
58
58
|
import {
|
|
59
59
|
ToolNames
|
|
60
60
|
} from "./chunk-X3YGAX7V.js";
|