@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.
Files changed (243) hide show
  1. package/dist/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
  2. package/dist/bundled/qc-helper/docs/features/channels/overview.md +23 -12
  3. package/dist/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
  4. package/dist/bundled/qc-helper/docs/features/channels/wecom.md +111 -0
  5. package/dist/bundled/qc-helper/docs/features/hooks.md +36 -34
  6. package/dist/bundled/qc-helper/docs/features/memory.md +1 -1
  7. package/dist/bundled/qc-helper/docs/qwen-serve.md +17 -10
  8. package/dist/bundled/review/SKILL.md +6 -2
  9. package/dist/chunks/{MaxSizedBox-OWTCJQNO.js → MaxSizedBox-W6SAJMJC.js} +13 -11
  10. package/dist/chunks/{StandaloneSessionPicker-6NGEQFBH.js → StandaloneSessionPicker-YBKZZKIA.js} +28 -23
  11. package/dist/chunks/{acpAgent-XPRWSNOW.js → acpAgent-SQJQBOTS.js} +110 -80
  12. package/dist/chunks/{agent-TB6S4VXU.js → agent-QU7Q2RZN.js} +8 -8
  13. package/dist/chunks/{agent-headless-R3XYK5TT.js → agent-headless-PBHLWHND.js} +8 -8
  14. package/dist/chunks/{anthropicContentGenerator-FZQAEMYK.js → anthropicContentGenerator-52G6ZA3D.js} +31 -4
  15. package/dist/chunks/{artifact-tool-H2TNPNP5.js → artifact-tool-D233YJFH.js} +25 -6
  16. package/dist/chunks/{bridge-HVRG6SMU.js → bridge-LJLLDUMW.js} +17 -14
  17. package/dist/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
  18. package/dist/chunks/{channel-worker-supervisor-B7MSMB5K.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
  19. package/dist/chunks/{chunk-YRM6BC6H.js → chunk-27AYMAL6.js} +506 -63
  20. package/dist/chunks/{chunk-536GZ6UF.js → chunk-2MDC5WDB.js} +17 -111
  21. package/dist/chunks/{chunk-H3D6XAOL.js → chunk-2PRSBVPI.js} +3 -3
  22. package/dist/chunks/chunk-332PWN27.js +19 -0
  23. package/dist/chunks/{chunk-FVMWEHWU.js → chunk-3B26UVCX.js} +114 -12
  24. package/dist/chunks/{chunk-ZM5BPDXV.js → chunk-3F22JT4E.js} +1 -1
  25. package/dist/chunks/{chunk-W6RH6KHR.js → chunk-3GPVYALM.js} +4 -2
  26. package/dist/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
  27. package/dist/chunks/{chunk-PA7QS4X5.js → chunk-43W4YSO6.js} +1 -12
  28. package/dist/chunks/{chunk-5EB2HK3X.js → chunk-4IK56VLC.js} +1 -1
  29. package/dist/chunks/{chunk-UE5TCZE6.js → chunk-5FAUIGXH.js} +5 -13
  30. package/dist/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
  31. package/dist/chunks/{chunk-PDITONOB.js → chunk-5MRUKUOG.js} +5347 -4132
  32. package/dist/chunks/{chunk-4UC3U66K.js → chunk-6EUMFVPJ.js} +5 -5
  33. package/dist/chunks/{chunk-YOGGIAGF.js → chunk-6JL5OVLX.js} +1 -1
  34. package/dist/chunks/{chunk-QG4ZO2EB.js → chunk-74E6VVF6.js} +11 -11
  35. package/dist/chunks/chunk-A2X3KLC3.js +3807 -0
  36. package/dist/chunks/{chunk-BA4HLTG2.js → chunk-B6B2MUUF.js} +5 -5
  37. package/dist/chunks/{chunk-XKYOIERV.js → chunk-BN5VYAOZ.js} +681 -1239
  38. package/dist/chunks/{chunk-IO76BGJ3.js → chunk-BYUA6YYS.js} +15 -9
  39. package/dist/chunks/{chunk-NCFY7PWS.js → chunk-CCGOFQV3.js} +51 -2
  40. package/dist/chunks/{chunk-66KNL43D.js → chunk-CD6USWHZ.js} +1 -1
  41. package/dist/chunks/{chunk-ZWSTIPSW.js → chunk-CEITMQ62.js} +2 -2
  42. package/dist/chunks/{chunk-7AQTBTVY.js → chunk-EJP6Z7NU.js} +4 -3
  43. package/dist/chunks/{chunk-RTW5ZXHO.js → chunk-EZTNYRHH.js} +6 -5
  44. package/dist/chunks/{chunk-MJQFA66Z.js → chunk-FAATDXYS.js} +308 -81
  45. package/dist/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
  46. package/dist/chunks/{chunk-HTC4R67V.js → chunk-FES4YXJ3.js} +9 -9
  47. package/dist/chunks/{chunk-NBKE6QRZ.js → chunk-FHTUTVIQ.js} +10 -5
  48. package/dist/chunks/chunk-FII3C4E7.js +168 -0
  49. package/dist/chunks/{chunk-2NL7ED5Q.js → chunk-FV7425LN.js} +22 -1
  50. package/dist/chunks/{chunk-J6OET6C3.js → chunk-GAI76CFX.js} +4 -4
  51. package/dist/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
  52. package/dist/chunks/chunk-GLE2YUPU.js +34 -0
  53. package/dist/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
  54. package/dist/chunks/{chunk-SM624MOZ.js → chunk-GWUN54UD.js} +1 -1
  55. package/dist/chunks/chunk-H3TELH3H.js +942 -0
  56. package/dist/chunks/{chunk-XZULYFIX.js → chunk-HD4DZI2L.js} +2 -2
  57. package/dist/chunks/{chunk-KLLLWQM2.js → chunk-HPQIVXSP.js} +1 -1
  58. package/dist/chunks/{chunk-WSVZFWN4.js → chunk-IBY3Q3HG.js} +693 -104
  59. package/dist/chunks/{chunk-JSEOX4CM.js → chunk-JGR6W4IX.js} +14 -8
  60. package/dist/chunks/chunk-K652V4NH.js +283 -0
  61. package/dist/chunks/{chunk-OCBJKHF2.js → chunk-KH2CZZDD.js} +2 -2
  62. package/dist/chunks/chunk-LGFAYIKX.js +115 -0
  63. package/dist/chunks/{chunk-QG5KDB6X.js → chunk-LZDW5TDV.js} +5 -5
  64. package/dist/chunks/{chunk-ENKWIF75.js → chunk-MA4AZNP7.js} +10 -10
  65. package/dist/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
  66. package/dist/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
  67. package/dist/chunks/{chunk-ML2ZWH2K.js → chunk-PCWYMX57.js} +14 -153
  68. package/dist/chunks/{chunk-NHFBLJOI.js → chunk-Q3PQ5VGJ.js} +1 -1
  69. package/dist/chunks/{chunk-LGXBB2R2.js → chunk-QK3I36QG.js} +1 -1
  70. package/dist/chunks/chunk-RA7TR75G.js +8223 -0
  71. package/dist/chunks/{chunk-KSPVDFE4.js → chunk-SAIILPQ3.js} +0 -3
  72. package/dist/chunks/{chunk-DHKDK57Q.js → chunk-SNZPA74J.js} +146 -54
  73. package/dist/chunks/{chunk-PWR5MVM3.js → chunk-SSP3UT5C.js} +4 -4
  74. package/dist/chunks/{chunk-4LETJLG2.js → chunk-SUCRVT5L.js} +1 -1
  75. package/dist/chunks/{chunk-5YLZHETW.js → chunk-TRR5KGDN.js} +1 -1
  76. package/dist/chunks/chunk-UIDXQNMV.js +13 -0
  77. package/dist/chunks/{chunk-PIORL4OD.js → chunk-UKV3D7WB.js} +0 -44
  78. package/dist/chunks/chunk-UYNUIGUR.js +167 -0
  79. package/dist/chunks/chunk-V2TYBEWU.js +28 -0
  80. package/dist/chunks/chunk-V35MD7KN.js +13 -0
  81. package/dist/chunks/{chunk-N4HTVZDZ.js → chunk-VR3KCBHH.js} +1 -1
  82. package/dist/chunks/{chunk-APYUOROB.js → chunk-W4CTWW7M.js} +423 -61
  83. package/dist/chunks/{chunk-ABANKQYY.js → chunk-WJAW2O5H.js} +92 -465
  84. package/dist/chunks/{chunk-6RSBRKF5.js → chunk-WN4YJJGH.js} +2 -2
  85. package/dist/chunks/chunk-XNXVCNAT.js +88 -0
  86. package/dist/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
  87. package/dist/chunks/chunk-XQPMKWSV.js +487 -0
  88. package/dist/chunks/{chunk-4FQL7KUS.js → chunk-XWDHZP7P.js} +8 -8
  89. package/dist/chunks/{chunk-REPRY4F7.js → chunk-YCKKP4QA.js} +10 -10
  90. package/dist/chunks/{chunk-YNWQ3PUQ.js → chunk-YJWMOGGZ.js} +3 -3
  91. package/dist/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
  92. package/dist/chunks/{chunk-45YCXM2H.js → chunk-YZDBUH6S.js} +45 -9
  93. package/dist/chunks/chunk-Z3I3QJK3.js +47 -0
  94. package/dist/chunks/{chunk-G23FFNLT.js → chunk-ZDGPPCTW.js} +20 -8
  95. package/dist/chunks/chunk-ZL5HN75Q.js +61 -0
  96. package/dist/chunks/{chunk-IQX5S2RS.js → chunk-ZL7JCYWM.js} +66 -7
  97. package/dist/chunks/{computer-use-A72BECH4.js → computer-use-4B45EG2F.js} +8 -8
  98. package/dist/chunks/{contextCommand-RREXA4B7.js → contextCommand-GIVRWNTS.js} +12 -11
  99. package/dist/chunks/{cron-create-DDYU4DIR.js → cron-create-JSXEIPVS.js} +1 -1
  100. package/dist/chunks/{cron-delete-DFKOUZWN.js → cron-delete-OIFVEPGU.js} +1 -1
  101. package/dist/chunks/{cron-list-ME5QGAR5.js → cron-list-D4ZX4IOE.js} +1 -1
  102. package/dist/chunks/{daemon-XWG2EGFX.js → daemon-WPAENEBW.js} +71 -3
  103. package/dist/chunks/{daemon-status-provider-Y6AFXTET.js → daemon-status-provider-WBOAMCHE.js} +20 -17
  104. package/dist/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
  105. package/dist/chunks/{dist-LPVU3L2M.js → dist-BEXOZXLQ.js} +6 -3792
  106. package/dist/chunks/{dist-7GU63KI5.js → dist-E6UANPIM.js} +1 -1
  107. package/dist/chunks/{dist-VHBP2PIG.js → dist-H2AEJCZ5.js} +2 -2
  108. package/dist/chunks/{dist-3UDX5T4T.js → dist-O2IRTRPP.js} +1 -1
  109. package/dist/chunks/dist-SCFLLYMK.js +3217 -0
  110. package/dist/chunks/{dist-H4HHZYCI.js → dist-Z34QPAQW.js} +2 -2
  111. package/dist/chunks/{earlyInputCapture-OAHBOGOO.js → earlyInputCapture-JWMCAJZR.js} +8 -8
  112. package/dist/chunks/{edit-SFYW3FOV.js → edit-O5FUVHBE.js} +9 -9
  113. package/dist/chunks/{en-AXARKOWO.js → en-N4EPZAQI.js} +31 -2
  114. package/dist/chunks/{enter-worktree-LUPPQ2NH.js → enter-worktree-LOJFRC3D.js} +8 -8
  115. package/dist/chunks/{enterPlanMode-44GEN5U6.js → enterPlanMode-VS3FAUPX.js} +8 -8
  116. package/dist/chunks/environment-WKW5TLSH.js +90 -0
  117. package/dist/chunks/{errors-H3Q3W3DL.js → errors-LEZXHJMR.js} +10 -10
  118. package/dist/chunks/{exit-worktree-34CVVWT4.js → exit-worktree-RN2NXRMP.js} +8 -8
  119. package/dist/chunks/{exitPlanMode-5G5BHNUP.js → exitPlanMode-EPC424I4.js} +8 -8
  120. package/dist/chunks/{fast-path-7PKGFBRM.js → fast-path-UUPAFOSQ.js} +12 -3
  121. package/dist/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
  122. package/dist/chunks/{fr-MBMNQSQ6.js → fr-5WWMY53B.js} +30 -1
  123. package/dist/chunks/{gemini-2II6JH4H.js → gemini-QCKK4XNU.js} +438 -265
  124. package/dist/chunks/{geminiContentGenerator-SWEJVOC4.js → geminiContentGenerator-DX4SRXJA.js} +1 -1
  125. package/dist/chunks/{glob-5DFC7DXW.js → glob-4URMJWRX.js} +8 -8
  126. package/dist/chunks/{grep-QYVXGRRJ.js → grep-AEQB5KED.js} +8 -8
  127. package/dist/chunks/handleAutoUpdate-Y4YNG34Y.js +65 -0
  128. package/dist/chunks/{initializer-XX3UGUHE.js → initializer-NDEBMSOG.js} +17 -13
  129. package/dist/chunks/{ja-HFV5QCHR.js → ja-CUHZOLEJ.js} +30 -1
  130. package/dist/chunks/{list-AX5FWBVC.js → list-VSCBNOWT.js} +17 -15
  131. package/dist/chunks/{loadedSettingsAdapter-ISOM6GJ7.js → loadedSettingsAdapter-FDO752BA.js} +15 -13
  132. package/dist/chunks/{loop-wakeup-ZW5P6VPY.js → loop-wakeup-OHWEMFP5.js} +2 -2
  133. package/dist/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
  134. package/dist/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
  135. package/dist/chunks/{mcp-74F6725E.js → mcp-MLPWTHUV.js} +15 -13
  136. package/dist/chunks/{monitor-W4WRSC2C.js → monitor-WCVHIJUJ.js} +16 -11
  137. package/dist/chunks/{nonInteractiveCli-4QMV6C4J.js → nonInteractiveCli-32HZK274.js} +52 -44
  138. package/dist/chunks/{notebook-edit-XBZEIP42.js → notebook-edit-NPOMPKS4.js} +9 -9
  139. package/dist/chunks/{openaiContentGenerator-RTUJDESE.js → openaiContentGenerator-6AIBSRQK.js} +6 -6
  140. package/dist/chunks/{pidfile-YWSGNTPK.js → pidfile-7Y3QEDSZ.js} +8 -8
  141. package/dist/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
  142. package/dist/chunks/{qwenContentGenerator-4ZFYAZLY.js → qwenContentGenerator-OUYOAYT4.js} +10 -10
  143. package/dist/chunks/{read-file-D7DKDIAC.js → read-file-EESFA24L.js} +3 -3
  144. package/dist/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
  145. package/dist/chunks/{ripGrep-KG7JYNER.js → ripGrep-DLYV7ZZG.js} +8 -8
  146. package/dist/chunks/{ru-PER5I4OI.js → ru-MKM2HFDS.js} +26 -1
  147. package/dist/chunks/{run-qwen-serve-XGJSNF6S.js → run-qwen-serve-WUEHQROF.js} +602 -143
  148. package/dist/chunks/{scheduler-MOLWOE4G.js → scheduler-SK4Y66V4.js} +8 -8
  149. package/dist/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
  150. package/dist/chunks/{serve-4ZNVPYND.js → serve-UCDGVZFI.js} +17 -14
  151. package/dist/chunks/{server-ACWDFHIF.js → server-FVGFFVZ4.js} +1394 -328
  152. package/dist/chunks/{session-VYO2GRO2.js → session-RIGKDMGR.js} +53 -45
  153. package/dist/chunks/{settings-4J2O3K22.js → settings-LVFFGXGE.js} +24 -20
  154. package/dist/chunks/{shell-RKERJYXR.js → shell-PAWNAFYN.js} +8 -8
  155. package/dist/chunks/{skill-JYACZJ5V.js → skill-5YIN3Z6Y.js} +15 -5
  156. package/dist/chunks/{spawnChannel-BA3U3RGX.js → spawnChannel-KIMZHWNR.js} +10 -10
  157. package/dist/chunks/{src-3P337V4P.js → src-BIWCD3VX.js} +21 -9
  158. package/dist/chunks/{startInteractiveUI-SUSZ6FWB.js → startInteractiveUI-AFXLGUFI.js} +33759 -41620
  159. package/dist/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
  160. package/dist/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
  161. package/dist/chunks/{team-create-YVWGRZEA.js → team-create-26WOMISV.js} +8 -8
  162. package/dist/chunks/{team-plan-approval-VRF54TTI.js → team-plan-approval-B5XB6UQC.js} +8 -8
  163. package/dist/chunks/{theme-manager-JW2KOACL.js → theme-manager-4TJ5TEFD.js} +8 -8
  164. package/dist/chunks/{tool-search-KUSMAZBN.js → tool-search-FFU63E6M.js} +6 -23
  165. package/dist/chunks/total-session-admission-JOD7SMPJ.js +72 -0
  166. package/dist/chunks/{trustedFolders-ERGSUCDK.js → trustedFolders-IJ2QHXSC.js} +9 -9
  167. package/dist/chunks/updateCheck-5Z25DCBP.js +65 -0
  168. package/dist/chunks/{validateNonInterActiveAuth-DDI62H5X.js → validateNonInterActiveAuth-G5EY47DE.js} +49 -41
  169. package/dist/chunks/{version-VB3AHVUF.js → version-LGO3GOKQ.js} +2 -1
  170. package/dist/chunks/{workflow-WINKRCI4.js → workflow-ZTK3WT3D.js} +9 -9
  171. package/dist/chunks/{workspace-providers-status-ZVZPXKSO.js → workspace-providers-status-YMPTRKW2.js} +18 -15
  172. package/dist/chunks/workspace-registry-NBUL6LBH.js +74 -0
  173. package/dist/chunks/{workspace-service-GAS2LV2P.js → workspace-service-V6G2RCD4.js} +21 -19
  174. package/dist/chunks/{workspace-skills-status-4WGKYJVA.js → workspace-skills-status-ZCW44BCH.js} +16 -14
  175. package/dist/chunks/{write-file-UTLKVZNN.js → write-file-4FUTAEW6.js} +9 -9
  176. package/dist/chunks/{zh-RS3HZHFH.js → zh-J4F6QWQV.js} +31 -2
  177. package/dist/chunks/{zh-TW-L5GRQ4S4.js → zh-TW-XVDWOLSW.js} +31 -2
  178. package/dist/cli.js +11 -11
  179. package/dist/locales/ca.js +30 -0
  180. package/dist/locales/de.js +30 -0
  181. package/dist/locales/en.js +38 -2
  182. package/dist/locales/fr.js +36 -0
  183. package/dist/locales/ja.js +36 -0
  184. package/dist/locales/pt.js +30 -0
  185. package/dist/locales/ru.js +30 -0
  186. package/dist/locales/zh-TW.js +38 -2
  187. package/dist/locales/zh.js +38 -2
  188. package/dist/package.json +3 -3
  189. package/dist/web-shell/assets/{arc-C6tzvtOa.js → arc-BWyoJpY2.js} +1 -1
  190. package/dist/web-shell/assets/{architectureDiagram-3BPJPVTR-DSYQFGn9.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
  191. package/dist/web-shell/assets/{blockDiagram-GPEHLZMM-CHjBdXAD.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
  192. package/dist/web-shell/assets/{c4Diagram-AAUBKEIU-BQzK6Yyb.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
  193. package/dist/web-shell/assets/channel-wmPUGHtg.js +1 -0
  194. package/dist/web-shell/assets/{chunk-2J33WTMH-hpP2p3Ij.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
  195. package/dist/web-shell/assets/{chunk-4BX2VUAB-B5KtK1JJ.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
  196. package/dist/web-shell/assets/{chunk-55IACEB6-BDv6Mfr2.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
  197. package/dist/web-shell/assets/{chunk-727SXJPM-BevPWfrX.js → chunk-727SXJPM-B2X34knw.js} +1 -1
  198. package/dist/web-shell/assets/{chunk-AQP2D5EJ-ChDrz2ad.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
  199. package/dist/web-shell/assets/{chunk-FMBD7UC4-ClMdVSDs.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
  200. package/dist/web-shell/assets/{chunk-ND2GUHAM-BceV8kZS.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
  201. package/dist/web-shell/assets/{chunk-QZHKN3VN-DtyK2wwc.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
  202. package/dist/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
  203. package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
  204. package/dist/web-shell/assets/{cose-bilkent-S5V4N54A-BGMsqwmE.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
  205. package/dist/web-shell/assets/{dagre-BM42HDAG-C-71clpF.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
  206. package/dist/web-shell/assets/{diagram-2AECGRRQ-WIzzlkec.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
  207. package/dist/web-shell/assets/{diagram-5GNKFQAL-CtnhZUP1.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
  208. package/dist/web-shell/assets/{diagram-KO2AKTUF-CS_IUezp.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
  209. package/dist/web-shell/assets/{diagram-LMA3HP47-BQnGRwN9.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
  210. package/dist/web-shell/assets/{diagram-OG6HWLK6-By2VIocq.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
  211. package/dist/web-shell/assets/{erDiagram-TEJ5UH35-Dy8WeNkr.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
  212. package/dist/web-shell/assets/{flowDiagram-I6XJVG4X-Diu_4y0w.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
  213. package/dist/web-shell/assets/{ganttDiagram-6RSMTGT7-CH8euujP.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
  214. package/dist/web-shell/assets/{gitGraphDiagram-PVQCEYII-DHiObZq1.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
  215. package/dist/web-shell/assets/index-CNwoO1Cn.js +783 -0
  216. package/dist/web-shell/assets/index-CWQ0z6kZ.css +5 -0
  217. package/dist/web-shell/assets/{infoDiagram-5YYISTIA-CvC9A6fh.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
  218. package/dist/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK46kC4E.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
  219. package/dist/web-shell/assets/{journeyDiagram-JHISSGLW-B2TIiKq4.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
  220. package/dist/web-shell/assets/{kanban-definition-UN3LZRKU-Bh0WAulO.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
  221. package/dist/web-shell/assets/{linear-Bxe9SHMk.js → linear-GWWguGfD.js} +1 -1
  222. package/dist/web-shell/assets/{mermaid.core-B1Pv6D5B.js → mermaid.core-JqtkxvCl.js} +5 -5
  223. package/dist/web-shell/assets/{mindmap-definition-RKZ34NQL-Bz0joLH8.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
  224. package/dist/web-shell/assets/{pieDiagram-4H26LBE5-CnN4x-VS.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
  225. package/dist/web-shell/assets/{quadrantDiagram-W4KKPZXB-BYWD4xO4.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
  226. package/dist/web-shell/assets/{requirementDiagram-4Y6WPE33-B4MEhI9h.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
  227. package/dist/web-shell/assets/{sankeyDiagram-5OEKKPKP-Dk_FgKLp.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
  228. package/dist/web-shell/assets/{sequenceDiagram-3UESZ5HK-B4ksiBZQ.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
  229. package/dist/web-shell/assets/{stateDiagram-AJRCARHV-CYf0xSPl.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
  230. package/dist/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
  231. package/dist/web-shell/assets/{timeline-definition-PNZ67QCA-0CXeWHNY.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
  232. package/dist/web-shell/assets/{vennDiagram-CIIHVFJN-DHoYY9v2.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
  233. package/dist/web-shell/assets/{wardley-L42UT6IY-D_65qshr.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
  234. package/dist/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cv90x1sd.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
  235. package/dist/web-shell/assets/{xychartDiagram-2RQKCTM6-5FQCYJyh.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
  236. package/dist/web-shell/index.html +2 -2
  237. package/package.json +3 -2
  238. package/dist/web-shell/assets/channel-V-ZaJrA6.js +0 -1
  239. package/dist/web-shell/assets/classDiagram-4FO5ZUOK-s-H0snGT.js +0 -1
  240. package/dist/web-shell/assets/classDiagram-v2-Q7XG4LA2-s-H0snGT.js +0 -1
  241. package/dist/web-shell/assets/index-DW75jq0K.css +0 -5
  242. package/dist/web-shell/assets/index-tiCo0xbZ.js +0 -779
  243. 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-B34OV7K2.js";
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-7AQTBTVY.js";
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-NHFBLJOI.js";
61
+ } from "./chunk-Q3PQ5VGJ.js";
58
62
  import {
59
63
  ShellExecutionService,
60
64
  TrustGateError
61
- } from "./chunk-PDITONOB.js";
65
+ } from "./chunk-5MRUKUOG.js";
62
66
  import {
63
67
  DAEMON_TRACEPARENT_META_KEY,
64
68
  DAEMON_TRACESTATE_META_KEY
65
- } from "./chunk-YRM6BC6H.js";
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
- compactedTurns = [];
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: this.compactedTurns.slice(),
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.compactedTurns = snapshot.compactedTurns.slice();
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.compactedTurns = [];
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.compactedTurns.push(...compacted);
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(eventRingSize, void 0, new TurnBoundaryCompactionEngine()), "createSessionEventBus");
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 promise = doSpawn(req.modelServiceId, effectiveScope, req.clientId);
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 ci = await ensureChannel();
5372
- const result = await withTimeout(
5373
- ci.connection.extMethod(SERVE_CONTROL_EXT_METHODS.sessionBranch, {
5374
- sessionId,
5375
- cwd: boundWorkspace,
5376
- name: req.name
5377
- }),
5378
- initTimeoutMs,
5379
- "branchSession"
5380
- );
5381
- if (!result || typeof result.newSessionId !== "string") {
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
- restored = await restoreSession("load", {
5391
- sessionId: result.newSessionId,
5392
- workspaceCwd: boundWorkspace,
5393
- clientId: context?.clientId
5394
- });
5395
- } catch (restoreErr) {
5396
- writeStderrLine(
5397
- `qwen serve: branchSession load failed for ${result.newSessionId}, attempting cleanup...`
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 ci.connection.extMethod(
5401
- SERVE_CONTROL_EXT_METHODS.sessionClose,
5402
- { sessionId: result.newSessionId, cwd: boundWorkspace }
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
- } catch (cleanupErr) {
5617
+ releaseAdmissionOnce();
5618
+ } catch (restoreErr) {
5405
5619
  writeStderrLine(
5406
- `qwen serve: branchSession cleanup of ${result.newSessionId} failed: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`
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
- throw restoreErr;
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-4RQIB5UZ.js";
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-PWR5MVM3.js";
5
+ } from "./chunk-SSP3UT5C.js";
6
6
  import {
7
7
  JsonOutputAdapter
8
- } from "./chunk-SM624MOZ.js";
8
+ } from "./chunk-GWUN54UD.js";
9
9
  import {
10
10
  StreamJsonOutputAdapter
11
- } from "./chunk-OCBJKHF2.js";
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-XKYOIERV.js";
23
+ } from "./chunk-BN5VYAOZ.js";
24
24
  import {
25
25
  RunBudgetEnforcer
26
- } from "./chunk-APYUOROB.js";
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-6RSBRKF5.js";
34
+ } from "./chunk-WN4YJJGH.js";
35
35
  import {
36
36
  isInlineModelOverrideAllowed
37
- } from "./chunk-4FQL7KUS.js";
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-PDITONOB.js";
52
+ } from "./chunk-5MRUKUOG.js";
53
53
  import {
54
54
  isTelemetrySdkInitialized,
55
55
  shutdownTelemetry,
56
56
  uiTelemetryService
57
- } from "./chunk-YRM6BC6H.js";
57
+ } from "./chunk-27AYMAL6.js";
58
58
  import {
59
59
  ToolNames
60
60
  } from "./chunk-X3YGAX7V.js";