@qwen-code/qwen-code 0.19.7-nightly.20260708.394c1a289 → 0.19.8

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 (228) hide show
  1. package/bundled/qc-helper/docs/features/channels/overview.md +6 -3
  2. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -0
  3. package/bundled/qc-helper/docs/features/hooks.md +36 -34
  4. package/bundled/qc-helper/docs/features/memory.md +1 -1
  5. package/bundled/qc-helper/docs/qwen-serve.md +17 -10
  6. package/bundled/review/SKILL.md +6 -2
  7. package/chunks/{MaxSizedBox-XS37LWTD.js → MaxSizedBox-5DT2SD7B.js} +7 -7
  8. package/chunks/{StandaloneSessionPicker-LPALJTKN.js → StandaloneSessionPicker-EYRGH6PJ.js} +23 -21
  9. package/chunks/{acpAgent-4VE3FGJX.js → acpAgent-GRFTTRHW.js} +74 -69
  10. package/chunks/{agent-CCHERW6L.js → agent-H2DGKS77.js} +4 -4
  11. package/chunks/{agent-headless-55N6UBUU.js → agent-headless-KFMFIT6J.js} +4 -4
  12. package/chunks/{anthropicContentGenerator-AKYPSZIV.js → anthropicContentGenerator-CPF22MA7.js} +28 -1
  13. package/chunks/{bridge-U6HXOHE7.js → bridge-NA3ZQQKJ.js} +11 -10
  14. package/chunks/{ca-HCMB2I54.js → ca-MKD32FQL.js} +26 -1
  15. package/chunks/{channel-worker-supervisor-CRCVYQIE.js → channel-worker-supervisor-NZQUOEFJ.js} +3 -3
  16. package/chunks/{chunk-J43WPR6U.js → chunk-27BHARDE.js} +8 -8
  17. package/chunks/{chunk-KKWO4IX2.js → chunk-2EM7ECZD.js} +251 -71
  18. package/chunks/{chunk-E7HM76PR.js → chunk-3GNOQZDC.js} +1562 -1025
  19. package/chunks/{chunk-G7ZG7CA6.js → chunk-3UP777ZS.js} +8 -7
  20. package/chunks/{chunk-VEB3NYSO.js → chunk-5MBO76SL.js} +5 -0
  21. package/chunks/{chunk-N74BA4VP.js → chunk-6VK6FIMQ.js} +1 -1
  22. package/chunks/{chunk-2FHWCKWA.js → chunk-A5JOJ77H.js} +35 -14
  23. package/chunks/{chunk-PLGONYEL.js → chunk-AYNCLGTW.js} +5 -5
  24. package/chunks/{chunk-K34DD7FH.js → chunk-BOBOCR5H.js} +4 -3
  25. package/chunks/chunk-BOBRZZKD.js +468 -0
  26. package/chunks/{chunk-7I4MGFBN.js → chunk-BUZ6HGL4.js} +5 -5
  27. package/chunks/{chunk-FK77ILF5.js → chunk-BVYU3ZTI.js} +2 -2
  28. package/chunks/{chunk-TBAZMRW3.js → chunk-CD6USWHZ.js} +1 -1
  29. package/chunks/{chunk-PVXPDMGP.js → chunk-CHB5SLZZ.js} +2 -2
  30. package/chunks/{chunk-SJHAUELE.js → chunk-DCZWC4PF.js} +2 -2
  31. package/chunks/{chunk-YYU6H66M.js → chunk-DHOLNQLC.js} +11 -11
  32. package/chunks/{chunk-MOQOAH7N.js → chunk-DICGXFAI.js} +1 -1
  33. package/chunks/{chunk-KT3SI3CQ.js → chunk-DIWVZ3VM.js} +8 -8
  34. package/chunks/{chunk-2DYY5XUZ.js → chunk-E7EMCSUG.js} +1 -1
  35. package/chunks/{chunk-XQ2GVLNJ.js → chunk-EEN2TKST.js} +1 -1
  36. package/chunks/{chunk-DNV4FSN5.js → chunk-FBET5XZ2.js} +6 -4
  37. package/chunks/{chunk-GIY6JTTC.js → chunk-FQNC62B2.js} +4 -4
  38. package/chunks/{chunk-B34OV7K2.js → chunk-GGQQA4JW.js} +13 -0
  39. package/chunks/chunk-GLE2YUPU.js +34 -0
  40. package/chunks/{chunk-X265R5C6.js → chunk-GN3F6PIU.js} +1 -1
  41. package/chunks/{chunk-LC4SMGYY.js → chunk-GSHQYYIV.js} +45 -9
  42. package/chunks/{chunk-BGL43SJ3.js → chunk-HDOH3QYE.js} +1 -1
  43. package/chunks/{chunk-4AFOWB47.js → chunk-I6WGFJJ3.js} +63 -4
  44. package/chunks/{chunk-2NPS2UDH.js → chunk-IBY3Q3HG.js} +390 -9
  45. package/chunks/{chunk-AXTPFMRS.js → chunk-J7RCB6N5.js} +1 -1
  46. package/chunks/{chunk-QCSLZO6J.js → chunk-JCH35JB3.js} +1 -1
  47. package/chunks/{chunk-JYOWO2F7.js → chunk-JPALE3PA.js} +3 -3
  48. package/chunks/{chunk-5FL2K3ZB.js → chunk-JRQ7EVGE.js} +1 -1
  49. package/chunks/{chunk-BHRU4SDF.js → chunk-JZHIQJOE.js} +3 -3
  50. package/chunks/{chunk-FB2ULV4M.js → chunk-L46XKEGM.js} +14 -153
  51. package/chunks/{chunk-LKXDC3AW.js → chunk-L4AMBVQG.js} +9 -9
  52. package/chunks/{chunk-ME344634.js → chunk-LAXNEOBG.js} +1 -1
  53. package/chunks/{chunk-QHT5USLK.js → chunk-M7S4GK5Z.js} +66 -445
  54. package/chunks/{chunk-4RQIB5UZ.js → chunk-O2YT7VB4.js} +0 -34
  55. package/chunks/{chunk-TBLJNMI7.js → chunk-O33TBKDC.js} +10 -10
  56. package/chunks/chunk-O7FIRWJV.js +168 -0
  57. package/chunks/{chunk-4KJ2BPIT.js → chunk-OACJLMLD.js} +2 -38
  58. package/chunks/{chunk-CR5IU2RX.js → chunk-ON3JA3RU.js} +2 -2
  59. package/chunks/{chunk-VTCPREC7.js → chunk-OQXDAMKY.js} +3 -3
  60. package/chunks/{chunk-ELMPRVCB.js → chunk-P3XEEI3X.js} +1 -1
  61. package/chunks/{chunk-OU6FPTJZ.js → chunk-PMFULMLX.js} +296 -81
  62. package/chunks/{chunk-2YELHTUE.js → chunk-PUVCVELY.js} +1 -1
  63. package/chunks/{chunk-5OSSOBZC.js → chunk-RMLZAUWH.js} +4 -4
  64. package/chunks/{chunk-B6WUEODT.js → chunk-SQ2UATK7.js} +14 -8
  65. package/chunks/{chunk-TEYGKLIZ.js → chunk-TI3BWD4D.js} +1 -1
  66. package/chunks/{chunk-T2EJHSE3.js → chunk-TSPB77TG.js} +57 -35
  67. package/chunks/{chunk-L7IWK7JY.js → chunk-UX6OTBVD.js} +1 -1
  68. package/chunks/{chunk-XUSONNJ4.js → chunk-UXEW557D.js} +1 -1
  69. package/chunks/chunk-V35MD7KN.js +13 -0
  70. package/chunks/{chunk-B5FOCTEZ.js → chunk-VGGOPZUL.js} +6 -5
  71. package/chunks/{chunk-MYZWWRVW.js → chunk-WF4FAXDL.js} +2 -2
  72. package/chunks/{chunk-2SWMCXVR.js → chunk-WHJQ3JUS.js} +20 -8
  73. package/chunks/{chunk-VQJ64BIQ.js → chunk-WQTHLB5T.js} +3 -3
  74. package/chunks/chunk-XNXVCNAT.js +88 -0
  75. package/chunks/{chunk-TDGF35EN.js → chunk-XOHNA2S6.js} +1 -1
  76. package/chunks/{chunk-ZK5EI6NR.js → chunk-XYR5RUA5.js} +14 -5
  77. package/chunks/{chunk-YMWIKAEE.js → chunk-YDOXPLYL.js} +244 -47
  78. package/chunks/{chunk-UZCT5OLN.js → chunk-YHKAK72D.js} +11 -11
  79. package/chunks/{chunk-RFIL6REB.js → chunk-YKZIAK7C.js} +119 -29
  80. package/chunks/chunk-Z3I3QJK3.js +47 -0
  81. package/chunks/{chunk-3QDZDAJG.js → chunk-ZE6E424U.js} +1 -1
  82. package/chunks/chunk-ZL5HN75Q.js +61 -0
  83. package/chunks/{computer-use-4CTF6WS3.js → computer-use-WMY3UOBX.js} +4 -4
  84. package/chunks/{contextCommand-Z3XWQCY6.js → contextCommand-LXFZRP4L.js} +6 -6
  85. package/chunks/{daemon-F3I2RXP6.js → daemon-WPAENEBW.js} +48 -0
  86. package/chunks/{daemon-status-provider-6A4QCG6Q.js → daemon-status-provider-GJRXY5EN.js} +15 -13
  87. package/chunks/{de-PLLFDERI.js → de-ZFPPQVSF.js} +26 -1
  88. package/chunks/{dist-IMFFBMAT.js → dist-BEXOZXLQ.js} +1 -1
  89. package/chunks/{dist-OT7G2WNM.js → dist-E6UANPIM.js} +1 -1
  90. package/chunks/{dist-FQ5WRJPL.js → dist-H2AEJCZ5.js} +2 -2
  91. package/chunks/{dist-YTRKAVUB.js → dist-O2IRTRPP.js} +1 -1
  92. package/chunks/{dist-573HNSVO.js → dist-SCFLLYMK.js} +1 -1
  93. package/chunks/{dist-PKFTNUHO.js → dist-Z34QPAQW.js} +1 -1
  94. package/chunks/{earlyInputCapture-7O47HW62.js → earlyInputCapture-KNOYZ4MJ.js} +4 -4
  95. package/chunks/{edit-E32KWLF2.js → edit-OTYWAXGP.js} +5 -5
  96. package/chunks/{en-GA2RMXY5.js → en-N4EPZAQI.js} +26 -1
  97. package/chunks/{enter-worktree-ZKFFMHUD.js → enter-worktree-HNYBDVCX.js} +4 -4
  98. package/chunks/{enterPlanMode-HLDC6NGX.js → enterPlanMode-CJCNGT63.js} +4 -4
  99. package/chunks/environment-ATFTYMLZ.js +88 -0
  100. package/chunks/{errors-MTIDDXX7.js → errors-A54HAADA.js} +6 -6
  101. package/chunks/{exit-worktree-YHY72XA2.js → exit-worktree-DUUKOE3X.js} +4 -4
  102. package/chunks/{exitPlanMode-JNXKBZ2C.js → exitPlanMode-AMMSXOAJ.js} +4 -4
  103. package/chunks/{fast-path-DVAGBROV.js → fast-path-OV6NIP3K.js} +12 -3
  104. package/chunks/{fast-path-settings-RCRXH2JG.js → fast-path-settings-7RIFI3PK.js} +3 -2
  105. package/chunks/{fr-GWNQG4XH.js → fr-5WWMY53B.js} +26 -1
  106. package/chunks/{gemini-2TMHJVRC.js → gemini-NQ3WWBKB.js} +431 -135
  107. package/chunks/{geminiContentGenerator-WCH4GWD3.js → geminiContentGenerator-CDUNEJQE.js} +1 -1
  108. package/chunks/{glob-I6Y4AGKO.js → glob-ROV3YS4R.js} +4 -4
  109. package/chunks/{grep-3P2J3LU5.js → grep-NRITKDCD.js} +4 -4
  110. package/chunks/{handleAutoUpdate-4IVRMRG4.js → handleAutoUpdate-CEZJAARW.js} +6 -6
  111. package/chunks/{initializer-DVNCPVTC.js → initializer-BRFJKRRX.js} +11 -9
  112. package/chunks/{ja-2HOTA47X.js → ja-CUHZOLEJ.js} +26 -1
  113. package/chunks/{list-4D6QK2KZ.js → list-KVHF7O4X.js} +13 -11
  114. package/chunks/{loadedSettingsAdapter-GNGELH6Q.js → loadedSettingsAdapter-LL5PSFKX.js} +11 -9
  115. package/chunks/{ls-L654WOAT.js → ls-7MFU2QYW.js} +1 -1
  116. package/chunks/{lsp-M35KE54Y.js → lsp-XHDTPTGV.js} +2 -4
  117. package/chunks/{mcp-2IL72YJP.js → mcp-3GCXRTOQ.js} +11 -9
  118. package/chunks/{monitor-BLVCZAVX.js → monitor-FL2ZO33W.js} +4 -4
  119. package/chunks/{nonInteractiveCli-UD3V7UOO.js → nonInteractiveCli-PTQI3DV6.js} +44 -41
  120. package/chunks/{notebook-edit-5TVMWIWY.js → notebook-edit-6PULTHL5.js} +5 -5
  121. package/chunks/{openaiContentGenerator-5LJ5A7YY.js → openaiContentGenerator-YE42PKCY.js} +3 -3
  122. package/chunks/{pidfile-AN5JQJ2T.js → pidfile-NZYSCFRK.js} +4 -4
  123. package/chunks/{pt-2THT3YHA.js → pt-OLYN42DS.js} +26 -1
  124. package/chunks/{qwenContentGenerator-E2JSB4FJ.js → qwenContentGenerator-NX2E7PB7.js} +5 -5
  125. package/chunks/{read-file-N5DEFUDU.js → read-file-33XGP5HF.js} +2 -2
  126. package/chunks/{record-artifact-PP3LKHTS.js → record-artifact-SQ2OKRJW.js} +3 -3
  127. package/chunks/{ripGrep-BLJHTHKE.js → ripGrep-QWZLGTAN.js} +4 -4
  128. package/chunks/{ru-Z67YJHBG.js → ru-LDM3GWVQ.js} +26 -1
  129. package/chunks/{run-qwen-serve-4JDO64RN.js → run-qwen-serve-JK2DL7PI.js} +596 -143
  130. package/chunks/{scheduler-FQR4XA7J.js → scheduler-O4IGVZKK.js} +4 -4
  131. package/chunks/{send-message-OA6MV4EU.js → send-message-76GT3JMC.js} +1 -1
  132. package/chunks/{serve-ZOCFC7YM.js → serve-JTMIGANH.js} +13 -10
  133. package/chunks/{server-GEOYEPYT.js → server-SGNPKX2O.js} +667 -243
  134. package/chunks/{session-NJCONHGX.js → session-5BNM25EZ.js} +45 -42
  135. package/chunks/{settings-QBGGXANI.js → settings-3MI4XXP6.js} +20 -16
  136. package/chunks/{shell-2DVPSEKT.js → shell-YJKBE67T.js} +4 -4
  137. package/chunks/{skill-HIPXUHV7.js → skill-I22QK5XS.js} +2 -2
  138. package/chunks/{spawnChannel-3JYXY52G.js → spawnChannel-UNV6W4DU.js} +6 -6
  139. package/chunks/{src-NLEX4CUC.js → src-BBQSM46M.js} +8 -4
  140. package/chunks/{startInteractiveUI-TYGZIU27.js → startInteractiveUI-JII36UGN.js} +619 -288
  141. package/chunks/{task-create-RPFZNB4B.js → task-create-WCHTB435.js} +2 -2
  142. package/chunks/{task-update-5WUG5MVQ.js → task-update-XYWMHJGJ.js} +2 -2
  143. package/chunks/{team-create-MGX57SZJ.js → team-create-A7NUU5AQ.js} +4 -4
  144. package/chunks/{team-plan-approval-BO2N7J3E.js → team-plan-approval-TOQRJ2KI.js} +4 -4
  145. package/chunks/{theme-manager-WU7LOA64.js → theme-manager-WZ4RRMMB.js} +4 -4
  146. package/chunks/{tool-search-CLBKVEVK.js → tool-search-SZ4EFS2T.js} +3 -3
  147. package/chunks/total-session-admission-ULXJWXFV.js +72 -0
  148. package/chunks/{trustedFolders-GAQM2GHB.js → trustedFolders-LAZZPZ3D.js} +5 -5
  149. package/chunks/{updateCheck-RIK2YIQE.js → updateCheck-KONLM73X.js} +5 -5
  150. package/chunks/{validateNonInterActiveAuth-NS3GBIJZ.js → validateNonInterActiveAuth-MPKSRCXD.js} +41 -38
  151. package/chunks/{version-B3RSLP54.js → version-NO2XSNNP.js} +1 -1
  152. package/chunks/{workflow-7APPIGND.js → workflow-WO2H6NRI.js} +5 -5
  153. package/chunks/{workspace-providers-status-SC67GLMY.js → workspace-providers-status-3W7E7DFW.js} +14 -11
  154. package/chunks/workspace-registry-SXJZNN3O.js +74 -0
  155. package/chunks/{workspace-service-ZJHF22WA.js → workspace-service-CZRQZ4Q4.js} +17 -15
  156. package/chunks/{workspace-skills-status-NJEK6P6Y.js → workspace-skills-status-K7WFREPD.js} +12 -10
  157. package/chunks/{write-file-R6Z3VLRY.js → write-file-PX2Z7IBE.js} +5 -5
  158. package/chunks/{zh-7XVVRTDH.js → zh-J4F6QWQV.js} +26 -1
  159. package/chunks/{zh-TW-DPH554OG.js → zh-TW-XVDWOLSW.js} +26 -1
  160. package/cli.js +11 -11
  161. package/locales/ca.js +30 -0
  162. package/locales/de.js +30 -0
  163. package/locales/en.js +30 -0
  164. package/locales/fr.js +30 -0
  165. package/locales/ja.js +30 -0
  166. package/locales/pt.js +30 -0
  167. package/locales/ru.js +30 -0
  168. package/locales/zh-TW.js +30 -0
  169. package/locales/zh.js +30 -0
  170. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  171. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  172. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  173. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  174. package/package.json +3 -3
  175. package/web-shell/assets/{arc-C7hjaa7g.js → arc-BWyoJpY2.js} +1 -1
  176. package/web-shell/assets/{architectureDiagram-3BPJPVTR-pm9KtMZY.js → architectureDiagram-3BPJPVTR-BT0mGrz2.js} +1 -1
  177. package/web-shell/assets/{blockDiagram-GPEHLZMM-CApElKsU.js → blockDiagram-GPEHLZMM-BLgUWvyf.js} +1 -1
  178. package/web-shell/assets/{c4Diagram-AAUBKEIU-BeDe0-9N.js → c4Diagram-AAUBKEIU-DYx9M7oU.js} +1 -1
  179. package/web-shell/assets/channel-wmPUGHtg.js +1 -0
  180. package/web-shell/assets/{chunk-2J33WTMH-DJEkmLdl.js → chunk-2J33WTMH-CfMHWbuZ.js} +1 -1
  181. package/web-shell/assets/{chunk-4BX2VUAB-DXX8gdpe.js → chunk-4BX2VUAB-B1URoqEV.js} +1 -1
  182. package/web-shell/assets/{chunk-55IACEB6-DORmk1kQ.js → chunk-55IACEB6-DAIaM4QF.js} +1 -1
  183. package/web-shell/assets/{chunk-727SXJPM-DWmO4mCZ.js → chunk-727SXJPM-B2X34knw.js} +1 -1
  184. package/web-shell/assets/{chunk-AQP2D5EJ-C7LRaYw2.js → chunk-AQP2D5EJ-Cif-zLTQ.js} +1 -1
  185. package/web-shell/assets/{chunk-FMBD7UC4-CCdXgyC5.js → chunk-FMBD7UC4-H18WCXdY.js} +1 -1
  186. package/web-shell/assets/{chunk-ND2GUHAM-SyL_xvWc.js → chunk-ND2GUHAM-YFtetHi0.js} +1 -1
  187. package/web-shell/assets/{chunk-QZHKN3VN-BzOuCKxa.js → chunk-QZHKN3VN-By2hiH3r.js} +1 -1
  188. package/web-shell/assets/classDiagram-4FO5ZUOK-BA2ljEjW.js +1 -0
  189. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BA2ljEjW.js +1 -0
  190. package/web-shell/assets/{cose-bilkent-S5V4N54A-BMPWyDKc.js → cose-bilkent-S5V4N54A-VrcnnLZu.js} +1 -1
  191. package/web-shell/assets/{dagre-BM42HDAG-B_GnPWik.js → dagre-BM42HDAG-CGo-IaVV.js} +1 -1
  192. package/web-shell/assets/{diagram-2AECGRRQ-fJqMc3S_.js → diagram-2AECGRRQ-Dl4QjzIB.js} +1 -1
  193. package/web-shell/assets/{diagram-5GNKFQAL-ximV3O9D.js → diagram-5GNKFQAL-qMLmsO0u.js} +1 -1
  194. package/web-shell/assets/{diagram-KO2AKTUF-2vVyjzqw.js → diagram-KO2AKTUF-CHlmuxPI.js} +1 -1
  195. package/web-shell/assets/{diagram-LMA3HP47-Dckcx1sT.js → diagram-LMA3HP47-BUwU3GwT.js} +1 -1
  196. package/web-shell/assets/{diagram-OG6HWLK6-BAVv47ga.js → diagram-OG6HWLK6-HEhwPDUM.js} +1 -1
  197. package/web-shell/assets/{erDiagram-TEJ5UH35-Bn3nf5J0.js → erDiagram-TEJ5UH35-1n0llBmM.js} +1 -1
  198. package/web-shell/assets/{flowDiagram-I6XJVG4X-BIbGF9JT.js → flowDiagram-I6XJVG4X-BN74uMnt.js} +1 -1
  199. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CDbhb3AH.js → ganttDiagram-6RSMTGT7-BoOq78i3.js} +1 -1
  200. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CbKG1a_w.js → gitGraphDiagram-PVQCEYII-CN8b00c8.js} +1 -1
  201. package/web-shell/assets/index-CNwoO1Cn.js +783 -0
  202. package/web-shell/assets/index-CWQ0z6kZ.css +5 -0
  203. package/web-shell/assets/{infoDiagram-5YYISTIA-DUFxTy8m.js → infoDiagram-5YYISTIA-CCurnIna.js} +1 -1
  204. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D69hrBG8.js → ishikawaDiagram-YF4QCWOH-AwuRqdUP.js} +1 -1
  205. package/web-shell/assets/{journeyDiagram-JHISSGLW-DsvEw51Y.js → journeyDiagram-JHISSGLW-B7IICk-E.js} +1 -1
  206. package/web-shell/assets/{kanban-definition-UN3LZRKU-lFFjZEYd.js → kanban-definition-UN3LZRKU-BYF0OKhx.js} +1 -1
  207. package/web-shell/assets/{linear-Bo5bWzvo.js → linear-GWWguGfD.js} +1 -1
  208. package/web-shell/assets/{mermaid.core-C_HKMJx5.js → mermaid.core-JqtkxvCl.js} +5 -5
  209. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DlV-NUTs.js → mindmap-definition-RKZ34NQL-B0MmHsZ6.js} +1 -1
  210. package/web-shell/assets/{pieDiagram-4H26LBE5-B2e6FH2a.js → pieDiagram-4H26LBE5-DhImUZLQ.js} +1 -1
  211. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D75kSk-b.js → quadrantDiagram-W4KKPZXB-DGeSC3DT.js} +1 -1
  212. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CQ6xakhM.js → requirementDiagram-4Y6WPE33-DkspY6Re.js} +1 -1
  213. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-J_XTKrcY.js → sankeyDiagram-5OEKKPKP-CaOofS2x.js} +1 -1
  214. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-D7jTcBtf.js → sequenceDiagram-3UESZ5HK-DFQ_kFnN.js} +1 -1
  215. package/web-shell/assets/{stateDiagram-AJRCARHV-CrlM_OT3.js → stateDiagram-AJRCARHV-D3snw0Tz.js} +1 -1
  216. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BbSm_9d0.js +1 -0
  217. package/web-shell/assets/{timeline-definition-PNZ67QCA-5oZi76Ef.js → timeline-definition-PNZ67QCA-l4zH8nLM.js} +1 -1
  218. package/web-shell/assets/{vennDiagram-CIIHVFJN-DO5YptPK.js → vennDiagram-CIIHVFJN-BnRlA98M.js} +1 -1
  219. package/web-shell/assets/{wardley-L42UT6IY-4t1eJDvM.js → wardley-L42UT6IY-BS0xUdmd.js} +1 -1
  220. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DKZc661S.js → wardleyDiagram-YWT4CUSO-DKGBUWyQ.js} +1 -1
  221. package/web-shell/assets/{xychartDiagram-2RQKCTM6-su9hp08G.js → xychartDiagram-2RQKCTM6-DVb2HuOB.js} +1 -1
  222. package/web-shell/index.html +2 -2
  223. package/web-shell/assets/channel-BNf1dW-j.js +0 -1
  224. package/web-shell/assets/classDiagram-4FO5ZUOK-uOIGlzgi.js +0 -1
  225. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-uOIGlzgi.js +0 -1
  226. package/web-shell/assets/index-CnE2ur2L.js +0 -779
  227. package/web-shell/assets/index-hSKXrlSE.css +0 -5
  228. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Bs4TK_84.js +0 -1
@@ -16668,6 +16668,9 @@ var SERVE_CAPABILITY_REGISTRY = {
16668
16668
  session_branch: { since: "v1" },
16669
16669
  rate_limit: { since: "v1" },
16670
16670
  workspace_reload: { since: "v1" },
16671
+ // Multi-workspace sessions closed loop (issue #6378 Phase 2a). Advertised
16672
+ // only when one daemon hosts more than one registered workspace runtime.
16673
+ multi_workspace_sessions: { since: "v1" },
16671
16674
  // Phase 2 "reverse tool channel" (issue #5626). A connected WS client (e.g.
16672
16675
  // the Chrome extension) can host an MCP server that the daemon's agent
16673
16676
  // calls by carrying `mcp_message` JSON-RPC frames over the daemon WS,
@@ -16720,6 +16723,10 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
16720
16723
  ],
16721
16724
  ["rate_limit", (toggles) => toggles.rateLimit === true],
16722
16725
  ["workspace_reload", (toggles) => toggles.reloadAvailable === true],
16726
+ [
16727
+ "multi_workspace_sessions",
16728
+ (toggles) => toggles.multiWorkspaceSessionsEnabled === true
16729
+ ],
16723
16730
  ["client_mcp_over_ws", (toggles) => toggles.clientMcpOverWsEnabled === true],
16724
16731
  ["cdp_tunnel_over_ws", (toggles) => toggles.cdpTunnelOverWsEnabled === true],
16725
16732
  [
@@ -17231,35 +17238,78 @@ __name(parseDaemonStatusDetail, "parseDaemonStatusDetail");
17231
17238
  async function buildDaemonStatusResponse(detail, input) {
17232
17239
  const bridgeSnapshot = input.bridge.getDaemonStatusSnapshot();
17233
17240
  const lastActivity = input.bridge.lastActivityAt ?? null;
17241
+ const workspaceRuntimes = input.workspaceRegistry?.list();
17242
+ const workspaceSnapshots = workspaceRuntimes?.map((runtime) => ({
17243
+ workspaceCwd: runtime.workspaceCwd,
17244
+ snapshot: runtime.bridge === input.bridge ? bridgeSnapshot : runtime.bridge.getDaemonStatusSnapshot(),
17245
+ lastActivity: runtime.bridge === input.bridge ? lastActivity : runtime.bridge.lastActivityAt ?? null
17246
+ })) ?? [
17247
+ {
17248
+ workspaceCwd: input.boundWorkspace,
17249
+ snapshot: bridgeSnapshot,
17250
+ lastActivity
17251
+ }
17252
+ ];
17253
+ const aggregatedSessionCount = workspaceSnapshots.reduce(
17254
+ (sum, item) => sum + item.snapshot.sessionCount,
17255
+ 0
17256
+ );
17257
+ const aggregatedPendingPermissionCount = workspaceSnapshots.reduce(
17258
+ (sum, item) => sum + item.snapshot.pendingPermissionCount,
17259
+ 0
17260
+ );
17261
+ const aggregatedChannelLive = workspaceSnapshots.some(
17262
+ (item) => item.snapshot.channelLive
17263
+ );
17264
+ const aggregatedLastActivity = workspaceSnapshots.reduce(
17265
+ (latest, item) => item.lastActivity !== null && (latest === null || item.lastActivity > latest) ? item.lastActivity : latest,
17266
+ null
17267
+ );
17234
17268
  const acpSnapshot = input.acpHandle?.registry.getSnapshot();
17235
17269
  const rateLimitHits = input.rateLimiter?.getHitCounts() ?? zeroRateHits();
17236
17270
  let pendingPrompts = 0;
17237
17271
  let derivedQueuedPrompts = 0;
17238
- for (const session of bridgeSnapshot.sessions) {
17239
- pendingPrompts += session.pendingPromptCount;
17240
- derivedQueuedPrompts += Math.max(
17241
- 0,
17242
- session.pendingPromptCount - (session.hasActivePrompt ? 1 : 0)
17243
- );
17272
+ const derivedQueuedPromptsByWorkspace = [];
17273
+ for (const [index, { snapshot }] of workspaceSnapshots.entries()) {
17274
+ let derivedQueuedPromptsForWorkspace = 0;
17275
+ for (const session of snapshot.sessions) {
17276
+ pendingPrompts += session.pendingPromptCount;
17277
+ const sessionQueuedPrompts = Math.max(
17278
+ 0,
17279
+ session.pendingPromptCount - (session.hasActivePrompt ? 1 : 0)
17280
+ );
17281
+ derivedQueuedPrompts += sessionQueuedPrompts;
17282
+ derivedQueuedPromptsForWorkspace += sessionQueuedPrompts;
17283
+ }
17284
+ derivedQueuedPromptsByWorkspace[index] = derivedQueuedPromptsForWorkspace;
17244
17285
  }
17245
- const queuedPrompts = input.bridge.pendingPromptTotal ?? derivedQueuedPrompts;
17286
+ const queuedPrompts = workspaceRuntimes?.reduce(
17287
+ (sum, runtime, index) => sum + (runtime.bridge.pendingPromptTotal ?? derivedQueuedPromptsByWorkspace[index] ?? 0),
17288
+ 0
17289
+ ) ?? input.bridge.pendingPromptTotal ?? derivedQueuedPrompts;
17246
17290
  const channelWorker = input.getChannelWorkerSnapshot?.() ?? {
17247
17291
  enabled: false,
17248
17292
  state: "disabled",
17249
17293
  channels: []
17250
17294
  };
17295
+ const totalAdmissionSnapshot = input.getTotalSessionAdmissionSnapshot?.();
17251
17296
  const issues = [];
17252
17297
  let full;
17253
17298
  pushRuntimeIssues(
17254
17299
  issues,
17255
- bridgeSnapshot,
17256
17300
  acpSnapshot,
17257
17301
  rateLimitHits,
17258
17302
  input,
17259
- channelWorker
17303
+ channelWorker,
17304
+ totalAdmissionSnapshot,
17305
+ workspaceSnapshots
17260
17306
  );
17261
17307
  if (detail === "full") {
17262
- full = await buildFullStatus(input, bridgeSnapshot, acpSnapshot);
17308
+ full = await buildFullStatus(
17309
+ input,
17310
+ acpSnapshot,
17311
+ workspaceSnapshots.flatMap((item) => item.snapshot.sessions)
17312
+ );
17263
17313
  pushFullIssues(issues, full);
17264
17314
  }
17265
17315
  return {
@@ -17288,26 +17338,39 @@ async function buildDaemonStatusResponse(detail, input) {
17288
17338
  },
17289
17339
  limits: {
17290
17340
  maxSessions: bridgeSnapshot.limits.maxSessions,
17341
+ maxTotalSessions: positiveFiniteOrNull(input.opts.maxTotalSessions),
17291
17342
  maxPendingPromptsPerSession: bridgeSnapshot.limits.maxPendingPromptsPerSession,
17292
17343
  listenerMaxConnections: listenerMaxConnections(input.opts.maxConnections),
17293
17344
  eventRingSize: bridgeSnapshot.limits.eventRingSize,
17345
+ compactedReplayMaxBytes: bridgeSnapshot.limits.compactedReplayMaxBytes,
17294
17346
  promptDeadlineMs: positiveFiniteOrNull(input.opts.promptDeadlineMs),
17295
17347
  writerIdleTimeoutMs: positiveFiniteOrNull(input.opts.writerIdleTimeoutMs),
17296
17348
  channelIdleTimeoutMs: bridgeSnapshot.limits.channelIdleTimeoutMs,
17297
17349
  sessionIdleTimeoutMs: bridgeSnapshot.limits.sessionIdleTimeoutMs,
17298
17350
  acpConnectionCap: acpSnapshot?.connectionCap ?? null
17299
17351
  },
17352
+ ...workspaceRuntimes && workspaceRuntimes.length > 1 ? {
17353
+ workspaces: workspaceRuntimes.map((runtime) => ({
17354
+ id: runtime.workspaceId,
17355
+ cwd: runtime.workspaceCwd,
17356
+ primary: runtime.primary,
17357
+ trusted: runtime.trusted
17358
+ }))
17359
+ } : {},
17300
17360
  capabilities: {
17301
17361
  protocolVersions: input.protocolVersions,
17302
17362
  features: [...input.features]
17303
17363
  },
17304
17364
  runtime: {
17305
- sessions: { active: bridgeSnapshot.sessionCount },
17365
+ sessions: {
17366
+ active: aggregatedSessionCount,
17367
+ ...totalAdmissionSnapshot ? { admissionInFlight: totalAdmissionSnapshot.inFlight } : {}
17368
+ },
17306
17369
  permissions: {
17307
- pending: bridgeSnapshot.pendingPermissionCount,
17370
+ pending: aggregatedPendingPermissionCount,
17308
17371
  policy: bridgeSnapshot.permissionPolicy
17309
17372
  },
17310
- channel: { live: bridgeSnapshot.channelLive },
17373
+ channel: { live: aggregatedChannelLive },
17311
17374
  channelWorker,
17312
17375
  transport: {
17313
17376
  restSseActive: input.getRestSseActive(),
@@ -17328,11 +17391,14 @@ async function buildDaemonStatusResponse(detail, input) {
17328
17391
  ...input.getPerfSnapshot ? { perf: input.getPerfSnapshot() } : {},
17329
17392
  ...input.getMetricsSeries ? { metrics: { series: input.getMetricsSeries() } } : {},
17330
17393
  activity: {
17331
- activePrompts: input.bridge.activePromptCount ?? 0,
17394
+ activePrompts: workspaceRuntimes?.reduce(
17395
+ (sum, runtime) => sum + (runtime.bridge.activePromptCount ?? 0),
17396
+ 0
17397
+ ) ?? input.bridge.activePromptCount ?? 0,
17332
17398
  pendingPrompts,
17333
17399
  queuedPrompts,
17334
- lastActivityAt: lastActivity !== null ? new Date(lastActivity).toISOString() : null,
17335
- idleSinceMs: lastActivity !== null ? Date.now() - lastActivity : null
17400
+ lastActivityAt: aggregatedLastActivity !== null ? new Date(aggregatedLastActivity).toISOString() : null,
17401
+ idleSinceMs: aggregatedLastActivity !== null ? Date.now() - aggregatedLastActivity : null
17336
17402
  },
17337
17403
  process: process.memoryUsage()
17338
17404
  },
@@ -17354,7 +17420,7 @@ function cloneStartup(startup) {
17354
17420
  };
17355
17421
  }
17356
17422
  __name(cloneStartup, "cloneStartup");
17357
- async function buildFullStatus(input, bridgeSnapshot, acpSnapshot) {
17423
+ async function buildFullStatus(input, acpSnapshot, sessions) {
17358
17424
  const ctx = {
17359
17425
  route: "GET /daemon/status",
17360
17426
  workspaceCwd: input.boundWorkspace
@@ -17394,7 +17460,7 @@ async function buildFullStatus(input, bridgeSnapshot, acpSnapshot) {
17394
17460
  )
17395
17461
  ]);
17396
17462
  return {
17397
- sessions: bridgeSnapshot.sessions,
17463
+ sessions,
17398
17464
  acpConnections: acpSnapshot?.connections ?? [],
17399
17465
  workspace: {
17400
17466
  mcp,
@@ -17452,13 +17518,30 @@ async function withTimeout(promise, section, timeoutMs) {
17452
17518
  }
17453
17519
  }
17454
17520
  __name(withTimeout, "withTimeout");
17455
- function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, input, channelWorker) {
17456
- if (bridgeSnapshot.limits.maxSessions !== null && bridgeSnapshot.limits.maxSessions > 0 && bridgeSnapshot.sessionCount / bridgeSnapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
17457
- issues.push({
17458
- code: "session_capacity_high",
17459
- severity: "warning",
17460
- message: `Active sessions are at ${bridgeSnapshot.sessionCount}/${bridgeSnapshot.limits.maxSessions}.`
17461
- });
17521
+ function pushRuntimeIssues(issues, acpSnapshot, rateLimitHits, input, channelWorker, totalAdmissionSnapshot, workspaceSnapshots) {
17522
+ for (const { workspaceCwd, snapshot } of workspaceSnapshots) {
17523
+ if (snapshot.limits.maxSessions !== null && snapshot.limits.maxSessions > 0 && snapshot.sessionCount / snapshot.limits.maxSessions >= CAPACITY_WARNING_RATIO) {
17524
+ issues.push({
17525
+ code: "session_capacity_high",
17526
+ severity: "warning",
17527
+ message: workspaceSnapshots.length > 1 ? `Workspace ${workspaceCwd} active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.` : `Active sessions are at ${snapshot.sessionCount}/${snapshot.limits.maxSessions}.`
17528
+ });
17529
+ }
17530
+ }
17531
+ const maxTotalSessions = positiveFiniteOrNull(input.opts.maxTotalSessions);
17532
+ if (maxTotalSessions !== null) {
17533
+ const fallbackLiveCount = workspaceSnapshots.reduce(
17534
+ (sum, item) => sum + item.snapshot.sessionCount,
17535
+ 0
17536
+ );
17537
+ const totalActive = (totalAdmissionSnapshot?.liveCount ?? fallbackLiveCount) + (totalAdmissionSnapshot?.inFlight ?? 0);
17538
+ if (totalActive / maxTotalSessions >= CAPACITY_WARNING_RATIO) {
17539
+ issues.push({
17540
+ code: "total_session_capacity_high",
17541
+ severity: "warning",
17542
+ message: `Total active and in-flight sessions are at ${totalActive}/${maxTotalSessions}.`
17543
+ });
17544
+ }
17462
17545
  }
17463
17546
  if (acpSnapshot !== void 0 && acpSnapshot.connectionCap !== null && acpSnapshot.connectionCap > 0 && acpSnapshot.connectionCount / acpSnapshot.connectionCap >= CAPACITY_WARNING_RATIO) {
17464
17547
  issues.push({
@@ -17467,18 +17550,25 @@ function pushRuntimeIssues(issues, bridgeSnapshot, acpSnapshot, rateLimitHits, i
17467
17550
  message: `ACP connections are at ${acpSnapshot.connectionCount}/${acpSnapshot.connectionCap}.`
17468
17551
  });
17469
17552
  }
17470
- if (bridgeSnapshot.pendingPermissionCount > 0) {
17553
+ const pendingPermissionCount = workspaceSnapshots.reduce(
17554
+ (sum, item) => sum + item.snapshot.pendingPermissionCount,
17555
+ 0
17556
+ );
17557
+ if (pendingPermissionCount > 0) {
17471
17558
  issues.push({
17472
17559
  code: "pending_permissions",
17473
17560
  severity: "warning",
17474
- message: `${bridgeSnapshot.pendingPermissionCount} permission request(s) are pending.`
17561
+ message: `${pendingPermissionCount} permission request(s) are pending.`
17475
17562
  });
17476
17563
  }
17477
- if (bridgeSnapshot.sessionCount > 0 && !bridgeSnapshot.channelLive) {
17564
+ const downWorkspaces = workspaceSnapshots.filter(
17565
+ (item) => item.snapshot.sessionCount > 0 && !item.snapshot.channelLive
17566
+ );
17567
+ if (downWorkspaces.length > 0) {
17478
17568
  issues.push({
17479
17569
  code: "acp_channel_down",
17480
17570
  severity: "error",
17481
- message: "Active sessions exist but the ACP channel is not live."
17571
+ message: downWorkspaces.length === 1 ? `Active sessions exist but the ACP channel is not live for ${downWorkspaces[0].workspaceCwd}.` : `Active sessions exist but the ACP channel is not live for ${downWorkspaces.length} workspace(s).`
17482
17572
  });
17483
17573
  }
17484
17574
  if (input.opts.rateLimit === true && sumRateHits(rateLimitHits) > 0) {
@@ -0,0 +1,47 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-A4BMJM77.js";
6
+
7
+ // packages/cli/src/config/shared-env-keys.ts
8
+ init_esbuild_shims();
9
+ var DEFAULT_EXCLUDED_ENV_VARS = ["DEBUG", "DEBUG_MODE"];
10
+ var ENV_CORRUPTED_PATH = "QWEN_CODE_SETTINGS_CORRUPTED_PATH";
11
+ var ENV_WAS_RECOVERED = "QWEN_CODE_SETTINGS_WAS_RECOVERED";
12
+ var PROJECT_ENV_HARDCODED_EXCLUSIONS = [
13
+ "QWEN_HOME",
14
+ "QWEN_RUNTIME_DIR",
15
+ "QWEN_CODE_MCP_APPROVALS_PATH",
16
+ "QWEN_CODE_TRUSTED_FOLDERS_PATH",
17
+ ENV_CORRUPTED_PATH,
18
+ ENV_WAS_RECOVERED,
19
+ // QWEN_TLS_INSECURE (and NODE_TLS_REJECT_UNAUTHORIZED, which it mirrors)
20
+ // disable TLS certificate verification for all outbound API connections. A
21
+ // project `.env` must never enable either — that would let an untrusted repo
22
+ // silently turn off MITM protection. Opt-in stays with the user via the
23
+ // `--insecure` flag, the shell environment, or a home `.env`. The initial
24
+ // `.env` load only consults this list, so both keys must be here (not just
25
+ // RELOAD_EXCLUDED_KEYS, which only applies on reload).
26
+ "QWEN_TLS_INSECURE",
27
+ "NODE_TLS_REJECT_UNAUTHORIZED"
28
+ ];
29
+ var HOME_ENV_BOOTSTRAP_KEYS = [
30
+ "QWEN_HOME",
31
+ "QWEN_RUNTIME_DIR",
32
+ "QWEN_CODE_MCP_APPROVALS_PATH",
33
+ "QWEN_CODE_TRUSTED_FOLDERS_PATH"
34
+ ];
35
+
36
+ export {
37
+ DEFAULT_EXCLUDED_ENV_VARS,
38
+ ENV_CORRUPTED_PATH,
39
+ ENV_WAS_RECOVERED,
40
+ PROJECT_ENV_HARDCODED_EXCLUSIONS,
41
+ HOME_ENV_BOOTSTRAP_KEYS
42
+ };
43
+ /**
44
+ * @license
45
+ * Copyright 2025 Qwen Team
46
+ * SPDX-License-Identifier: Apache-2.0
47
+ */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-TBLJNMI7.js";
5
+ } from "./chunk-O33TBKDC.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -0,0 +1,61 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ TotalSessionLimitExceededError
5
+ } from "./chunk-GGQQA4JW.js";
6
+ import {
7
+ init_esbuild_shims
8
+ } from "./chunk-A4BMJM77.js";
9
+ import {
10
+ __name
11
+ } from "./chunk-J2S4EL5Y.js";
12
+
13
+ // packages/cli/src/serve/total-session-admission.ts
14
+ init_esbuild_shims();
15
+ function createTotalSessionAdmissionController({
16
+ maxTotalSessions,
17
+ getBridges
18
+ }) {
19
+ let inFlight = 0;
20
+ const limit = maxTotalSessions === void 0 || maxTotalSessions === 0 || maxTotalSessions === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : maxTotalSessions;
21
+ return {
22
+ admit(context) {
23
+ if (limit !== Number.POSITIVE_INFINITY) {
24
+ if (getLiveCount(getBridges()) + inFlight >= limit) {
25
+ throw Object.assign(new TotalSessionLimitExceededError(limit), {
26
+ operation: context.operation,
27
+ workspaceCwd: context.workspaceCwd,
28
+ ...context.sessionId ? { sessionId: context.sessionId } : {},
29
+ ...context.sourceSessionId ? { sourceSessionId: context.sourceSessionId } : {}
30
+ });
31
+ }
32
+ }
33
+ inFlight++;
34
+ let released = false;
35
+ return {
36
+ release() {
37
+ if (released) return;
38
+ released = true;
39
+ inFlight--;
40
+ }
41
+ };
42
+ },
43
+ snapshot() {
44
+ return { liveCount: getLiveCount(getBridges()), inFlight };
45
+ }
46
+ };
47
+ }
48
+ __name(createTotalSessionAdmissionController, "createTotalSessionAdmissionController");
49
+ function getLiveCount(bridges) {
50
+ return bridges.reduce((sum, bridge) => sum + bridge.sessionCount, 0);
51
+ }
52
+ __name(getLiveCount, "getLiveCount");
53
+
54
+ export {
55
+ createTotalSessionAdmissionController
56
+ };
57
+ /**
58
+ * @license
59
+ * Copyright 2026 Qwen Team
60
+ * SPDX-License-Identifier: Apache-2.0
61
+ */
@@ -4,7 +4,7 @@ import {
4
4
  Client,
5
5
  So,
6
6
  StdioClientTransport
7
- } from "./chunk-E7HM76PR.js";
7
+ } from "./chunk-3GNOQZDC.js";
8
8
  import "./chunk-5P5XGNYH.js";
9
9
  import "./chunk-SKAZWEV5.js";
10
10
  import "./chunk-K5PGHDBN.js";
@@ -19,7 +19,7 @@ import "./chunk-FV7425LN.js";
19
19
  import "./chunk-MLZQVCF3.js";
20
20
  import "./chunk-LQ7TMOCE.js";
21
21
  import "./chunk-E5A7LHNN.js";
22
- import "./chunk-VEB3NYSO.js";
22
+ import "./chunk-5MBO76SL.js";
23
23
  import "./chunk-GO6LNQXT.js";
24
24
  import "./chunk-NQKLOAVJ.js";
25
25
  import "./chunk-WMPVYQ4P.js";
@@ -27,12 +27,12 @@ import "./chunk-TLWA7TPR.js";
27
27
  import "./chunk-QYNNN7BK.js";
28
28
  import {
29
29
  safeJsonStringify
30
- } from "./chunk-7I4MGFBN.js";
30
+ } from "./chunk-BUZ6HGL4.js";
31
31
  import "./chunk-E6US47KI.js";
32
32
  import "./chunk-UWCTAVOD.js";
33
33
  import "./chunk-OFEVLU4C.js";
34
34
  import "./chunk-OMX7CUOE.js";
35
- import "./chunk-4KJ2BPIT.js";
35
+ import "./chunk-OACJLMLD.js";
36
36
  import "./chunk-SUAKHHK7.js";
37
37
  import "./chunk-FEJ2FZ3U.js";
38
38
  import {
@@ -4,13 +4,13 @@ import {
4
4
  collectContextData,
5
5
  contextCommand,
6
6
  formatContextUsageText
7
- } from "./chunk-VQJ64BIQ.js";
7
+ } from "./chunk-WQTHLB5T.js";
8
8
  import "./chunk-UIDXQNMV.js";
9
9
  import "./chunk-SAIILPQ3.js";
10
10
  import "./chunk-KYMBIKIW.js";
11
- import "./chunk-TBLJNMI7.js";
11
+ import "./chunk-O33TBKDC.js";
12
12
  import "./chunk-Y6Z2O3WR.js";
13
- import "./chunk-E7HM76PR.js";
13
+ import "./chunk-3GNOQZDC.js";
14
14
  import "./chunk-5P5XGNYH.js";
15
15
  import "./chunk-SKAZWEV5.js";
16
16
  import "./chunk-K5PGHDBN.js";
@@ -25,18 +25,18 @@ import "./chunk-FV7425LN.js";
25
25
  import "./chunk-MLZQVCF3.js";
26
26
  import "./chunk-LQ7TMOCE.js";
27
27
  import "./chunk-E5A7LHNN.js";
28
- import "./chunk-VEB3NYSO.js";
28
+ import "./chunk-5MBO76SL.js";
29
29
  import "./chunk-GO6LNQXT.js";
30
30
  import "./chunk-NQKLOAVJ.js";
31
31
  import "./chunk-WMPVYQ4P.js";
32
32
  import "./chunk-TLWA7TPR.js";
33
33
  import "./chunk-QYNNN7BK.js";
34
- import "./chunk-7I4MGFBN.js";
34
+ import "./chunk-BUZ6HGL4.js";
35
35
  import "./chunk-E6US47KI.js";
36
36
  import "./chunk-UWCTAVOD.js";
37
37
  import "./chunk-OFEVLU4C.js";
38
38
  import "./chunk-OMX7CUOE.js";
39
- import "./chunk-4KJ2BPIT.js";
39
+ import "./chunk-OACJLMLD.js";
40
40
  import "./chunk-SUAKHHK7.js";
41
41
  import "./chunk-FEJ2FZ3U.js";
42
42
  import "./chunk-X3YGAX7V.js";
@@ -3322,6 +3322,11 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
3322
3322
  // reseeds state. Synthetic (no `id`) so it doesn't burn a slot
3323
3323
  // in the per-session monotonic sequence.
3324
3324
  "state_resync_required",
3325
+ // Synthetic marker prepended to a bounded `/session/:id/load` replay
3326
+ // snapshot when older replay history was dropped from the daemon's
3327
+ // in-memory window. This is NOT a resync request: consumers should render
3328
+ // it as transcript status and continue applying the retained snapshot.
3329
+ "history_truncated",
3325
3330
  // MCP guardrail push events. See `mcp_guardrail_events` capability
3326
3331
  // tag. Both fire on the per-session SSE bus; consumers should
3327
3332
  // pre-flight `caps.features.includes('mcp_guardrail_events')`
@@ -3418,6 +3423,7 @@ var MAX_PENDING_PER_SESSION = 64;
3418
3423
  var MAX_FORBIDDEN_VOTES_PER_SESSION = 32;
3419
3424
  var RESYNC_PASSTHROUGH_TYPES = /* @__PURE__ */ new Set([
3420
3425
  "state_resync_required",
3426
+ "history_truncated",
3421
3427
  "session_died",
3422
3428
  "session_closed",
3423
3429
  "client_evicted",
@@ -3475,6 +3481,8 @@ function createDaemonSessionViewState(seed = {}) {
3475
3481
  awaitingResync: seed.awaitingResync ?? false,
3476
3482
  resyncRequiredCount: seed.resyncRequiredCount ?? 0,
3477
3483
  lastResyncRequired: seed.lastResyncRequired,
3484
+ historyTruncatedCount: seed.historyTruncatedCount ?? 0,
3485
+ lastHistoryTruncated: seed.lastHistoryTruncated,
3478
3486
  lastFollowupSuggestion: seed.lastFollowupSuggestion,
3479
3487
  rewindCount: seed.rewindCount ?? 0,
3480
3488
  lastRewind: seed.lastRewind,
@@ -3537,6 +3545,8 @@ function asKnownDaemonEvent(event) {
3537
3545
  return isStreamErrorData(event.data) ? event : void 0;
3538
3546
  case "state_resync_required":
3539
3547
  return isStateResyncRequiredData(event.data) ? event : void 0;
3548
+ case "history_truncated":
3549
+ return isHistoryTruncatedData(event.data) ? event : void 0;
3540
3550
  case "mcp_budget_warning":
3541
3551
  return isMcpBudgetWarningData(event.data) ? event : void 0;
3542
3552
  case "mcp_child_refused_batch":
@@ -3773,6 +3783,12 @@ function reduceDaemonSessionEvent(state, rawEvent) {
3773
3783
  resyncRequiredCount: base.resyncRequiredCount + 1,
3774
3784
  lastResyncRequired: event.data
3775
3785
  };
3786
+ case "history_truncated":
3787
+ return {
3788
+ ...base,
3789
+ historyTruncatedCount: base.historyTruncatedCount + 1,
3790
+ lastHistoryTruncated: event.data
3791
+ };
3776
3792
  case "mcp_budget_warning":
3777
3793
  return {
3778
3794
  ...base,
@@ -4136,6 +4152,14 @@ function isStateResyncRequiredData(value) {
4136
4152
  return isRecord(value) && isNonEmptyString(value["reason"]) && isFiniteNumber(value["lastDeliveredId"]) && isFiniteNumber(value["earliestAvailableId"]);
4137
4153
  }
4138
4154
  __name(isStateResyncRequiredData, "isStateResyncRequiredData");
4155
+ function isHistoryTruncatedData(value) {
4156
+ if (!isRecord(value) || value["reason"] !== "replay_window_exceeded" || !isFiniteNumber(value["truncatedEvents"]) || !isFiniteNumber(value["retainedEvents"]) || !isFiniteNumber(value["maxBytes"]) || value["fullTranscriptAvailable"] !== false) {
4157
+ return false;
4158
+ }
4159
+ const truncatedTurns = value["truncatedTurns"];
4160
+ return isNonNegativeInteger(value["truncatedEvents"]) && isNonNegativeInteger(value["retainedEvents"]) && isNonNegativeInteger(value["maxBytes"]) && (truncatedTurns === void 0 || isNonNegativeInteger(truncatedTurns));
4161
+ }
4162
+ __name(isHistoryTruncatedData, "isHistoryTruncatedData");
4139
4163
  function isSlowClientWarningData(value) {
4140
4164
  if (!isRecord(value)) return false;
4141
4165
  const threshold = value["threshold"];
@@ -4372,6 +4396,10 @@ function isOptionalNumberOrNull(value) {
4372
4396
  return value === void 0 || value === null || isFiniteNumber(value);
4373
4397
  }
4374
4398
  __name(isOptionalNumberOrNull, "isOptionalNumberOrNull");
4399
+ function isNonNegativeInteger(value) {
4400
+ return isFiniteNumber(value) && Number.isInteger(value) && value >= 0;
4401
+ }
4402
+ __name(isNonNegativeInteger, "isNonNegativeInteger");
4375
4403
  function isOptionalStringOrNull(value) {
4376
4404
  return value === void 0 || value === null || typeof value === "string";
4377
4405
  }
@@ -4780,6 +4808,8 @@ function normalizeDaemonEvent(event, opts = {}) {
4780
4808
  }
4781
4809
  case "state_resync_required":
4782
4810
  return normalizeStateResyncRequired(event, base);
4811
+ case "history_truncated":
4812
+ return normalizeHistoryTruncated(event, base);
4783
4813
  case "session_rewound":
4784
4814
  return normalizeSessionRewound(event, base);
4785
4815
  case "session_branched":
@@ -4905,6 +4935,24 @@ function normalizeStateResyncRequired(event, base) {
4905
4935
  ];
4906
4936
  }
4907
4937
  __name(normalizeStateResyncRequired, "normalizeStateResyncRequired");
4938
+ function normalizeHistoryTruncated(event, base) {
4939
+ const reason = getString2(event.data, "reason");
4940
+ const truncatedEvents = numberField(event.data, "truncatedEvents");
4941
+ const retainedEvents = numberField(event.data, "retainedEvents");
4942
+ const maxBytes = numberField(event.data, "maxBytes");
4943
+ if (reason !== "replay_window_exceeded" || truncatedEvents === void 0 || retainedEvents === void 0 || maxBytes === void 0 || isRecord2(event.data) && event.data["fullTranscriptAvailable"] !== false) {
4944
+ return fallbackDebug(event, base, "malformed history_truncated payload");
4945
+ }
4946
+ return [
4947
+ {
4948
+ ...base,
4949
+ type: "status",
4950
+ text: `History truncated: retained ${retainedEvents}, dropped ${truncatedEvents} (window ${maxBytes} bytes).`,
4951
+ source: "history_truncated"
4952
+ }
4953
+ ];
4954
+ }
4955
+ __name(normalizeHistoryTruncated, "normalizeHistoryTruncated");
4908
4956
  function normalizeSessionRewound(event, base) {
4909
4957
  const promptId = getString2(event.data, "promptId");
4910
4958
  const targetTurnIndex = numberField(event.data, "targetTurnIndex");
@@ -2,23 +2,25 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDaemonStatusProvider
5
- } from "./chunk-FB2ULV4M.js";
6
- import "./chunk-BHRU4SDF.js";
5
+ } from "./chunk-L46XKEGM.js";
6
+ import "./chunk-JZHIQJOE.js";
7
7
  import "./chunk-KHDZHZMH.js";
8
- import "./chunk-OU6FPTJZ.js";
9
- import "./chunk-P7M4GA57.js";
10
- import "./chunk-B34OV7K2.js";
8
+ import "./chunk-O7FIRWJV.js";
9
+ import "./chunk-PMFULMLX.js";
11
10
  import "./chunk-AGHU5VRK.js";
11
+ import "./chunk-3UP777ZS.js";
12
+ import "./chunk-GLE2YUPU.js";
13
+ import "./chunk-P7M4GA57.js";
14
+ import "./chunk-GGQQA4JW.js";
12
15
  import "./chunk-ER3BKOLB.js";
13
- import "./chunk-G7ZG7CA6.js";
14
16
  import "./chunk-VRDMOSQS.js";
15
- import "./chunk-K34DD7FH.js";
17
+ import "./chunk-BOBOCR5H.js";
16
18
  import "./chunk-EXPMGZZV.js";
17
- import "./chunk-ME344634.js";
19
+ import "./chunk-LAXNEOBG.js";
18
20
  import "./chunk-HLKG6CZN.js";
19
- import "./chunk-XUSONNJ4.js";
21
+ import "./chunk-UXEW557D.js";
20
22
  import "./chunk-43W4YSO6.js";
21
- import "./chunk-E7HM76PR.js";
23
+ import "./chunk-3GNOQZDC.js";
22
24
  import "./chunk-5P5XGNYH.js";
23
25
  import "./chunk-SKAZWEV5.js";
24
26
  import "./chunk-K5PGHDBN.js";
@@ -33,18 +35,18 @@ import "./chunk-FV7425LN.js";
33
35
  import "./chunk-MLZQVCF3.js";
34
36
  import "./chunk-LQ7TMOCE.js";
35
37
  import "./chunk-E5A7LHNN.js";
36
- import "./chunk-VEB3NYSO.js";
38
+ import "./chunk-5MBO76SL.js";
37
39
  import "./chunk-GO6LNQXT.js";
38
40
  import "./chunk-NQKLOAVJ.js";
39
41
  import "./chunk-WMPVYQ4P.js";
40
42
  import "./chunk-TLWA7TPR.js";
41
43
  import "./chunk-QYNNN7BK.js";
42
- import "./chunk-7I4MGFBN.js";
44
+ import "./chunk-BUZ6HGL4.js";
43
45
  import "./chunk-E6US47KI.js";
44
46
  import "./chunk-UWCTAVOD.js";
45
47
  import "./chunk-OFEVLU4C.js";
46
48
  import "./chunk-OMX7CUOE.js";
47
- import "./chunk-4KJ2BPIT.js";
49
+ import "./chunk-OACJLMLD.js";
48
50
  import "./chunk-SUAKHHK7.js";
49
51
  import "./chunk-FEJ2FZ3U.js";
50
52
  import "./chunk-X3YGAX7V.js";
@@ -1556,7 +1556,32 @@ var de_default = {
1556
1556
  reqs: "Anfr.",
1557
1557
  in: "ein",
1558
1558
  out: "aus",
1559
- "In/Out": "Ein/Aus"
1559
+ "In/Out": "Ein/Aus",
1560
+ // ============================================================================
1561
+ // reload-plugins command
1562
+ // ============================================================================
1563
+ "{{count}} extension": "{{count}} extension",
1564
+ "{{count}} extensions": "{{count}} extensions",
1565
+ "{{count}} command": "{{count}} command",
1566
+ "{{count}} commands": "{{count}} commands",
1567
+ "{{count}} skill": "{{count}} skill",
1568
+ "{{count}} skills": "{{count}} skills",
1569
+ "{{count}} agent": "{{count}} agent",
1570
+ "{{count}} agents": "{{count}} agents",
1571
+ "{{count}} hook": "{{count}} hook",
1572
+ "{{count}} hooks": "{{count}} hooks",
1573
+ "{{count}} extension MCP server": "{{count}} extension MCP server",
1574
+ "{{count}} extension MCP servers": "{{count}} extension MCP servers",
1575
+ "{{count}} extension LSP server": "{{count}} extension LSP server",
1576
+ "{{count}} extension LSP servers": "{{count}} extension LSP servers",
1577
+ "Reload extension changes from disk": "Reload extension changes from disk",
1578
+ "Reloaded extensions: {{summary}}": "Reloaded extensions: {{summary}}",
1579
+ "Reload failed: {{message}}": "Reload failed: {{message}}",
1580
+ "Reload failed.": "Reload failed.",
1581
+ "Extensions changed on disk. Run /reload-plugins to apply updates.": "Extensions changed on disk. Run /reload-plugins to apply updates.",
1582
+ "Failed to refresh extension content: {{message}}. Run /reload-plugins to apply updates.": "Failed to refresh extension content: {{message}}. Run /reload-plugins to apply updates.",
1583
+ "Failed to refresh extension content. Run /reload-plugins to apply updates.": "Failed to refresh extension content. Run /reload-plugins to apply updates.",
1584
+ "Extension reload did not complete. Run /reload-plugins to try again.": "Extension reload did not complete. Run /reload-plugins to try again."
1560
1585
  };
1561
1586
  export {
1562
1587
  de_default as default
@@ -12,7 +12,7 @@ import "./chunk-7RYW5LQV.js";
12
12
  import {
13
13
  ChannelBase,
14
14
  isTerminalTaskLifecycleType
15
- } from "./chunk-2NPS2UDH.js";
15
+ } from "./chunk-IBY3Q3HG.js";
16
16
  import "./chunk-VRDMOSQS.js";
17
17
  import "./chunk-K5PGHDBN.js";
18
18
  import {
@@ -7,7 +7,7 @@ import {
7
7
  sanitizeLogText,
8
8
  sanitizePromptText,
9
9
  sanitizeSenderName
10
- } from "./chunk-2NPS2UDH.js";
10
+ } from "./chunk-IBY3Q3HG.js";
11
11
  import "./chunk-VRDMOSQS.js";
12
12
  import "./chunk-K5PGHDBN.js";
13
13
  import {