@qwen-code/qwen-code 0.19.9 → 0.19.10-nightly.20260715.c538bd70d

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 (310) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +8 -0
  2. package/bundled/qc-helper/docs/features/channels/dingtalk.md +3 -0
  3. package/bundled/qc-helper/docs/features/channels/overview.md +11 -3
  4. package/bundled/qc-helper/docs/features/code-review.md +88 -44
  5. package/bundled/qc-helper/docs/features/commands.md +6 -6
  6. package/bundled/qc-helper/docs/features/hooks.md +29 -0
  7. package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
  8. package/bundled/qc-helper/docs/qwen-serve.md +46 -20
  9. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  10. package/bundled/review/DESIGN.md +219 -33
  11. package/bundled/review/SKILL.md +449 -153
  12. package/chunks/{MaxSizedBox-6HYJ3ZPJ.js → MaxSizedBox-LOOBDOTZ.js} +31 -31
  13. package/chunks/{StandaloneSessionPicker-WS4GXYOG.js → StandaloneSessionPicker-76CLZSH2.js} +51 -49
  14. package/chunks/{acpAgent-5FWSOZL5.js → acpAgent-DFJOK7EB.js} +567 -482
  15. package/chunks/{agent-HOLHB3RT.js → agent-OJQWXNHP.js} +26 -26
  16. package/chunks/{agent-headless-SXL6H56A.js → agent-headless-ND7GOORY.js} +26 -26
  17. package/chunks/{anthropicContentGenerator-L73TO3DB.js → anthropicContentGenerator-56U3YCP2.js} +5 -5
  18. package/chunks/{artifact-tool-U7IRTLIV.js → artifact-tool-MIZLXBLF.js} +2 -2
  19. package/chunks/{askUserQuestion-2DLUUZZG.js → askUserQuestion-XMJVPNWM.js} +2 -2
  20. package/chunks/{bridge-BCJQ7BBB.js → bridge-SNJK2JLK.js} +32 -32
  21. package/chunks/{ca-UJ6HC4H2.js → ca-C2JTT2N5.js} +4 -1
  22. package/chunks/channel-worker-group-K7QKH6IG.js +13 -0
  23. package/chunks/channel-worker-manager-YSFB4HUU.js +418 -0
  24. package/chunks/channel-worker-supervisor-QCKIOYZD.js +20 -0
  25. package/chunks/{chunk-CCDMCZPP.js → chunk-26UABK2C.js} +1 -1
  26. package/chunks/{chunk-LXNEJD34.js → chunk-2FO5GFKZ.js} +1 -1
  27. package/chunks/{chunk-L36P3NBD.js → chunk-2W3OOD4W.js} +2 -0
  28. package/chunks/{chunk-7R3CZA3Q.js → chunk-2Z5UX4KI.js} +1 -1
  29. package/chunks/chunk-3MX7D6QN.js +516 -0
  30. package/chunks/{chunk-CLFKOZEK.js → chunk-3XULHBC7.js} +1 -1
  31. package/chunks/chunk-4QZADKJS.js +34 -0
  32. package/chunks/{chunk-E2IY465S.js → chunk-4UDHAJFV.js} +10 -10
  33. package/chunks/{chunk-5U27BZ72.js → chunk-55SAYASQ.js} +190 -77
  34. package/chunks/chunk-5HBA2Z7V.js +28 -0
  35. package/chunks/{chunk-ZJE7NSL3.js → chunk-5M6IDOMF.js} +34 -97
  36. package/chunks/{chunk-HVY356M2.js → chunk-5SQ55XJZ.js} +3 -3
  37. package/chunks/{chunk-EAXLGSFP.js → chunk-6GRAQNTY.js} +8 -8
  38. package/chunks/{chunk-K434OPES.js → chunk-6WPJRYLZ.js} +3 -3
  39. package/chunks/{chunk-VWPVHAMO.js → chunk-7DXHIMXL.js} +5 -1
  40. package/chunks/{chunk-J4TSQ5EQ.js → chunk-7NFB7LBQ.js} +8 -1
  41. package/chunks/{chunk-5SFOMFG4.js → chunk-7R4DPSRA.js} +36 -2
  42. package/chunks/{chunk-W2UIXQDL.js → chunk-7STBROEV.js} +1 -1
  43. package/chunks/{chunk-BMGVRZN4.js → chunk-AETEZU4U.js} +1 -1
  44. package/chunks/{chunk-HPDUL5MF.js → chunk-AGZWN4WV.js} +1 -1
  45. package/chunks/{chunk-RDJSGHZE.js → chunk-ALGGS7UH.js} +1 -38
  46. package/chunks/{chunk-GWHYEOV2.js → chunk-ARKANCNX.js} +2 -1
  47. package/chunks/{chunk-34Z3U5RQ.js → chunk-AU4R7ACM.js} +518 -114
  48. package/chunks/{channel-worker-supervisor-WSOAAYUO.js → chunk-B7MFJBKE.js} +67 -35
  49. package/chunks/{chunk-524RQP4Q.js → chunk-B7NUUEXC.js} +10 -4
  50. package/chunks/{chunk-MC23XKFE.js → chunk-BLPMRN4B.js} +3 -3
  51. package/chunks/{chunk-A3XKDTSH.js → chunk-BRRKAUGR.js} +4 -4
  52. package/chunks/{chunk-W3JHSWRP.js → chunk-BUPLOPUA.js} +4 -4
  53. package/chunks/{chunk-3VAGG5T5.js → chunk-BYOOK22F.js} +121 -16
  54. package/chunks/{chunk-EMDMPBJ4.js → chunk-C47ENMZJ.js} +3 -3
  55. package/chunks/{chunk-3AHXV67U.js → chunk-C5TVXLJZ.js} +1 -1
  56. package/chunks/{chunk-X6TJ3YZV.js → chunk-CGT5TQIZ.js} +159 -57
  57. package/chunks/{chunk-4C5BQ2D2.js → chunk-CQQD7MDG.js} +82 -12
  58. package/chunks/{chunk-KKNMOEZH.js → chunk-E2UVIFI2.js} +185 -398
  59. package/chunks/{chunk-P67PFTUT.js → chunk-EPY4ZEU6.js} +4 -4
  60. package/chunks/{chunk-6PESIEKJ.js → chunk-EZSRHWGS.js} +68 -6
  61. package/chunks/{chunk-4GORAUCN.js → chunk-F333XEAU.js} +1 -1
  62. package/chunks/{chunk-YLV3XXFB.js → chunk-FBU7WRZI.js} +17 -1
  63. package/chunks/{chunk-Q6I5QHMH.js → chunk-FGTCZJOD.js} +1 -1
  64. package/chunks/{chunk-LK7KUE55.js → chunk-FSA7ERJ2.js} +1 -1
  65. package/chunks/{chunk-B4G2WOFA.js → chunk-FTU55ZZ7.js} +3 -3
  66. package/chunks/{chunk-EGYZ275M.js → chunk-GCD7PEDZ.js} +4 -4
  67. package/chunks/{chunk-SJHDYNHF.js → chunk-GDQQRV43.js} +3 -3
  68. package/chunks/{chunk-3BTRNWWD.js → chunk-GOXKNSDZ.js} +1 -64
  69. package/chunks/{chunk-GZRTYZ2R.js → chunk-GQKWT45X.js} +154 -1
  70. package/chunks/chunk-GYTKQYDB.js +23 -0
  71. package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
  72. package/chunks/{chunk-N3EMS75V.js → chunk-HKM2TEF7.js} +1268 -1233
  73. package/chunks/chunk-IDS7MSUP.js +74 -0
  74. package/chunks/{chunk-PVZM22CK.js → chunk-INKAZNYC.js} +5 -5
  75. package/chunks/{chunk-3G7CIHVV.js → chunk-IOQ75R4R.js} +4 -4
  76. package/chunks/{chunk-AURZZYMD.js → chunk-IQOOJSPR.js} +4 -4
  77. package/chunks/{chunk-AKIVHSJR.js → chunk-J4UQXGVL.js} +111 -93
  78. package/chunks/{chunk-VTU57BWZ.js → chunk-JEKOCLRN.js} +1 -1
  79. package/chunks/{chunk-B5ORX3FG.js → chunk-JGUT3LWZ.js} +6 -1
  80. package/chunks/{chunk-PDZ7MBDG.js → chunk-JIQHT2O6.js} +27 -6
  81. package/chunks/{chunk-XUOOWUZS.js → chunk-JPAH76WA.js} +1 -1
  82. package/chunks/{chunk-BAPGSC7U.js → chunk-K4LG6TVJ.js} +23 -9
  83. package/chunks/chunk-KET3M4K4.js +493 -0
  84. package/chunks/{chunk-ORBGV7NJ.js → chunk-KKRTYONM.js} +6 -4
  85. package/chunks/{chunk-SCGXUJBT.js → chunk-KPA5QGN2.js} +3 -3
  86. package/chunks/{chunk-IAVB3HM3.js → chunk-KSO42X3Z.js} +13 -0
  87. package/chunks/{chunk-4QLQE5WJ.js → chunk-L5U3ELZX.js} +1 -1
  88. package/chunks/{chunk-77XJ3SWN.js → chunk-LIUEXYPL.js} +5 -5
  89. package/chunks/{chunk-4ZVWQHEQ.js → chunk-LQIDP6K5.js} +1 -1
  90. package/chunks/{chunk-34MW4KTI.js → chunk-LT5CRUA5.js} +2 -2
  91. package/chunks/{chunk-DC5Z3DU6.js → chunk-LXLTBIDP.js} +43 -6
  92. package/chunks/{chunk-VA4KQY6V.js → chunk-MEK7CQJR.js} +3 -3
  93. package/chunks/{chunk-KHUQZZJ6.js → chunk-MO7O5722.js} +370 -36
  94. package/chunks/chunk-MR3PXB6E.js +48 -0
  95. package/chunks/{chunk-PODM4SZ4.js → chunk-MV52C5MA.js} +5 -5
  96. package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
  97. package/chunks/{chunk-X4NKFGFJ.js → chunk-OJAMDVF5.js} +0 -15
  98. package/chunks/{chunk-BZIFY5TF.js → chunk-OKAIGAYW.js} +3 -3
  99. package/chunks/{chunk-ECNYL4AA.js → chunk-OPNPGO6D.js} +1 -1
  100. package/chunks/{chunk-3SJSQXNS.js → chunk-PEJWA3QQ.js} +12 -8
  101. package/chunks/{chunk-MXL5UP4X.js → chunk-Q6TUALBE.js} +1 -1
  102. package/chunks/{chunk-QYMQSECS.js → chunk-QAW7PIHT.js} +2 -2
  103. package/chunks/{chunk-5HOMWMCL.js → chunk-QEDYXCLG.js} +4167 -1338
  104. package/chunks/chunk-QNNTA7IX.js +91 -0
  105. package/chunks/{chunk-D2GFWEXB.js → chunk-QNT5T4Q2.js} +6 -6
  106. package/chunks/{chunk-CUMMSHH6.js → chunk-R5XLNDE2.js} +1 -1
  107. package/chunks/{chunk-LUODI7WD.js → chunk-RCEEXIOO.js} +6 -4
  108. package/chunks/{chunk-WQUQVGTF.js → chunk-RQWDLG6Z.js} +183 -96
  109. package/chunks/{chunk-XYQSMABS.js → chunk-SLCVZX6F.js} +4 -4
  110. package/chunks/{chunk-CEA3E3JB.js → chunk-SPJQO2CE.js} +2 -2
  111. package/chunks/{chunk-JSG7ZSBC.js → chunk-TQBODCFD.js} +1 -1
  112. package/chunks/chunk-TV6K2FB4.js +224 -0
  113. package/chunks/{chunk-5XUCZNSY.js → chunk-TYLOFD2U.js} +1 -1
  114. package/chunks/{chunk-CNEIYWSA.js → chunk-UKWAQ7AV.js} +5 -5
  115. package/chunks/{chunk-7PU4FYLG.js → chunk-US4YQT62.js} +4 -4
  116. package/chunks/{chunk-Q4YQW46J.js → chunk-UYPPCIJQ.js} +36 -18
  117. package/chunks/{chunk-YAUFFXDS.js → chunk-UZKG7HFG.js} +12 -11
  118. package/chunks/{chunk-GWLSNBG4.js → chunk-VQLRHJKL.js} +30 -26
  119. package/chunks/{chunk-L6P4KPHR.js → chunk-VRUHAVZS.js} +59 -39
  120. package/chunks/{chunk-HKMAENAO.js → chunk-W2U4RJJU.js} +8 -6
  121. package/chunks/{chunk-ATAKVRIF.js → chunk-WDSCTLAB.js} +7 -7
  122. package/chunks/{chunk-ZLXQN2QS.js → chunk-WIEO4CWB.js} +1 -1
  123. package/chunks/{chunk-OQ4DRIOA.js → chunk-WJOC24IW.js} +2 -2
  124. package/chunks/{chunk-J3JA76CF.js → chunk-WTNZ6DXB.js} +1 -1
  125. package/chunks/{chunk-NVYTCB5Z.js → chunk-XCR44EEA.js} +14589 -13980
  126. package/chunks/{chunk-TDEXZKMT.js → chunk-Y66VOBRP.js} +2 -2
  127. package/chunks/{chunk-CC2ITGCF.js → chunk-YHN5SUIJ.js} +49 -6
  128. package/chunks/{chunk-D5SKC4YG.js → chunk-ZBAROUR6.js} +41 -13
  129. package/chunks/{chunk-U2NNEY4R.js → chunk-ZEEVKDO7.js} +1 -1
  130. package/chunks/{chunk-5VXNZWGF.js → chunk-ZLOHB76C.js} +1 -1
  131. package/chunks/{chunk-JZETEN3Z.js → chunk-ZNCLTRNU.js} +3 -3
  132. package/chunks/{chunk-TO6QE22P.js → chunk-ZP4ZZJJG.js} +26 -22
  133. package/chunks/{chunk-UOZWKTQG.js → chunk-ZPAHLFZU.js} +2 -2
  134. package/chunks/{chunk-XLA62MYB.js → chunk-ZTXZ7FM4.js} +2 -2
  135. package/chunks/{computer-use-HM37RX6A.js → computer-use-DRETHEQF.js} +26 -26
  136. package/chunks/{config-utils-NV2SVGPB.js → config-utils-XSHOMMK4.js} +3 -2
  137. package/chunks/{contextCommand-OF5SFGH2.js → contextCommand-7YJUW23J.js} +28 -28
  138. package/chunks/{create-sub-session-INX7TXJI.js → create-sub-session-EAB2U5XW.js} +2 -2
  139. package/chunks/{create-sub-session-KPRT7ECJ.js → create-sub-session-L5HOZAEL.js} +26 -26
  140. package/chunks/{cron-create-AMBKGZX6.js → cron-create-GMVKSXZT.js} +4 -4
  141. package/chunks/{cron-delete-LRU4OJYG.js → cron-delete-VDZKUAVK.js} +4 -4
  142. package/chunks/{cron-list-WVP2JXER.js → cron-list-UG7C7RAR.js} +4 -4
  143. package/chunks/{daemon-ARHTSTXP.js → daemon-MI5HF26N.js} +603 -62
  144. package/chunks/{daemon-status-provider-B2UTZUJ2.js → daemon-status-provider-2D47GOJT.js} +36 -36
  145. package/chunks/{de-EBJN3OVN.js → de-2VCDRDGU.js} +4 -1
  146. package/chunks/{dist-WKPOYU7O.js → dist-IEXZC5ZR.js} +1 -1
  147. package/chunks/{dist-XKU3ABM5.js → dist-PQK4GCKA.js} +1 -1
  148. package/chunks/{dist-VHV4EVHG.js → dist-U75JK3PF.js} +1 -1
  149. package/chunks/{dist-R7LN5AZE.js → dist-VXO7QBON.js} +2 -2
  150. package/chunks/{dist-PNVLTKTL.js → dist-WH4TZSH3.js} +158 -4
  151. package/chunks/{dist-QYCAEZIT.js → dist-X2ABIW5R.js} +5 -1
  152. package/chunks/{earlyInputCapture-3VTHRC4C.js → earlyInputCapture-OJQPGCSX.js} +27 -27
  153. package/chunks/{edit-VNI4NJ73.js → edit-LZOAFLT2.js} +27 -27
  154. package/chunks/{en-5A6LA7RK.js → en-NJCA3TAA.js} +5 -1
  155. package/chunks/{enter-worktree-IYYBKPZT.js → enter-worktree-VL2TCGI5.js} +26 -26
  156. package/chunks/{enterPlanMode-GMC5FD5A.js → enterPlanMode-QGHBHZWI.js} +42 -27
  157. package/chunks/{environment-5HSSRMJ7.js → environment-2G5IC2EU.js} +30 -29
  158. package/chunks/{errors-HMFCJJ7P.js → errors-7QNQDNI2.js} +28 -28
  159. package/chunks/{exit-worktree-6BHCMP5G.js → exit-worktree-5V3X2MRH.js} +26 -26
  160. package/chunks/{exitPlanMode-CJW7G74W.js → exitPlanMode-XDPNQB4H.js} +26 -26
  161. package/chunks/{fast-path-FRDMDVHG.js → fast-path-NNSD4BVZ.js} +3 -3
  162. package/chunks/{fast-path-settings-5QZE64HR.js → fast-path-settings-DAOVFADC.js} +6 -4
  163. package/chunks/{fr-YXRABLYZ.js → fr-5F3E7WKD.js} +4 -1
  164. package/chunks/{gemini-QYSEGHAX.js → gemini-RKDUWGXJ.js} +139 -76
  165. package/chunks/{geminiContentGenerator-J7YNZDYP.js → geminiContentGenerator-V7QGHXVF.js} +4 -4
  166. package/chunks/{glob-BRCSGFOT.js → glob-ZNQUUOTS.js} +28 -27
  167. package/chunks/{grep-EE2DUOSY.js → grep-NYIGLM7R.js} +26 -26
  168. package/chunks/{handleAutoUpdate-5NWTLR67.js → handleAutoUpdate-UBQ4IQXY.js} +30 -30
  169. package/chunks/{i18n-BASPENNQ.js → i18n-5T3S6SGP.js} +27 -27
  170. package/chunks/initializer-TJED246Q.js +73 -0
  171. package/chunks/{installationInfo-W6V4DT7W.js → installationInfo-OTEU7FKR.js} +27 -27
  172. package/chunks/{ja-7VQOANVG.js → ja-66J6B53L.js} +5 -2
  173. package/chunks/{keychain-token-storage-VKUBNCP4.js → keychain-token-storage-AU22CQI6.js} +2 -2
  174. package/chunks/list-6OHS7MFJ.js +76 -0
  175. package/chunks/loadedSettingsAdapter-5456XIYG.js +70 -0
  176. package/chunks/{loop-wakeup-WX7BLWWP.js → loop-wakeup-C4EXLYVA.js} +5 -5
  177. package/chunks/{ls-ZB2BDP6T.js → ls-2OUTG3IZ.js} +4 -4
  178. package/chunks/{lsp-V5DN4YUJ.js → lsp-4VMNXZW6.js} +2 -2
  179. package/chunks/mcp-NOWRPFKY.js +70 -0
  180. package/chunks/{monitor-X5Z3H4FY.js → monitor-CVDZO3IZ.js} +26 -26
  181. package/chunks/nonInteractiveCli-UGI7Y43E.js +129 -0
  182. package/chunks/{notebook-edit-TRM2QIJK.js → notebook-edit-NWIA5TEJ.js} +27 -27
  183. package/chunks/{openaiContentGenerator-AAYONPMF.js → openaiContentGenerator-KJONBBJO.js} +12 -12
  184. package/chunks/{pidfile-D4I4FTVA.js → pidfile-L3TGXMTF.js} +27 -27
  185. package/chunks/{pt-2C6YCSHL.js → pt-TFZO5Y6T.js} +4 -1
  186. package/chunks/{qwenContentGenerator-K3HZ2H76.js → qwenContentGenerator-GXUZB5SJ.js} +28 -28
  187. package/chunks/{qwenOAuth2-PJQ27GSO.js → qwenOAuth2-LEYOU7RU.js} +5 -5
  188. package/chunks/{read-file-7SZSIZOL.js → read-file-I4OUZXTA.js} +8 -8
  189. package/chunks/{read-mcp-resource-SM5DA4RG.js → read-mcp-resource-JUFHCKSC.js} +2 -2
  190. package/chunks/{record-artifact-4XKZX3UW.js → record-artifact-DWSMBXYY.js} +2 -2
  191. package/chunks/{ripGrep-YNPFVCZP.js → ripGrep-XLCXANIO.js} +26 -26
  192. package/chunks/{ru-6BBHVZZV.js → ru-4L4LFHIT.js} +4 -1
  193. package/chunks/{run-qwen-serve-DMWV5N6L.js → run-qwen-serve-R6SBP6YS.js} +1232 -371
  194. package/chunks/{runtime-57WWRVHN.js → runtime-U3S33YUQ.js} +42 -37
  195. package/chunks/{scheduler-YBLGWSIL.js → scheduler-65QCIELP.js} +26 -26
  196. package/chunks/{send-message-F36YD6KQ.js → send-message-JZ752NWD.js} +3 -3
  197. package/chunks/{serve-R63NK3CV.js → serve-PSPOFCOD.js} +36 -34
  198. package/chunks/{server-Z22GCAXP.js → server-6P5ZB56O.js} +5561 -1377
  199. package/chunks/{session-HKAAI7BN.js → session-ILLOYW75.js} +298 -98
  200. package/chunks/{settings-3EYN66GK.js → settings-RMUJGYIK.js} +34 -32
  201. package/chunks/{shell-6YXINTWJ.js → shell-65GTAN5Q.js} +28 -26
  202. package/chunks/{skill-OO57P4X6.js → skill-L76U3YCX.js} +10 -10
  203. package/chunks/{spawnChannel-JD7G4VU6.js → spawnChannel-LXIGZ4EM.js} +28 -28
  204. package/chunks/{src-G5UPLZSZ.js → src-DWZT2X3Z.js} +87 -27
  205. package/chunks/{standalone-update-OB7F4JPZ.js → standalone-update-F6SRKPSD.js} +28 -28
  206. package/chunks/{startInteractiveUI-73EGLIIH.js → startInteractiveUI-UEJQP7S3.js} +730 -397
  207. package/chunks/{syntheticOutput-34H7LGA7.js → syntheticOutput-LELY6HAI.js} +3 -3
  208. package/chunks/{task-create-FRGOEIKY.js → task-create-QY3BIMNM.js} +8 -7
  209. package/chunks/{task-list-OW766BXZ.js → task-list-D2U47WBJ.js} +6 -5
  210. package/chunks/{task-stop-SIR5SNBN.js → task-stop-N6E5IYLH.js} +2 -2
  211. package/chunks/{task-update-YRA532MT.js → task-update-HJCQILLB.js} +8 -7
  212. package/chunks/{team-create-PECAAPXK.js → team-create-4QBZVOGN.js} +26 -26
  213. package/chunks/{team-delete-6OSECUZC.js → team-delete-RCWYDRF4.js} +6 -5
  214. package/chunks/{team-plan-approval-L6F434RY.js → team-plan-approval-BK4CIOFV.js} +26 -26
  215. package/chunks/{theme-manager-ZG4RY6GU.js → theme-manager-5F2IGW6E.js} +27 -27
  216. package/chunks/{todoWrite-YDMFEV4G.js → todoWrite-FKCGATPJ.js} +4 -4
  217. package/chunks/{tool-search-THVIWAPB.js → tool-search-J2ESO33H.js} +9 -9
  218. package/chunks/{total-session-admission-JOKNRIIA.js → total-session-admission-U4LZ5QTQ.js} +33 -33
  219. package/chunks/tree-sitter-YJVE2ZUK.js +2980 -0
  220. package/chunks/{trustedFolders-EOGT3UVS.js → trustedFolders-TIDOXCJA.js} +29 -28
  221. package/chunks/types-ML3TRJQ5.js +16 -0
  222. package/chunks/{updateCheck-2KYEYVSB.js → updateCheck-VRVR26FI.js} +29 -29
  223. package/chunks/{validateNonInterActiveAuth-EN6ZQSR2.js → validateNonInterActiveAuth-UGKYAVLG.js} +75 -71
  224. package/chunks/{version-3UEA6ZIR.js → version-7HR6VZAT.js} +1 -1
  225. package/chunks/{web-fetch-PAAEQKBW.js → web-fetch-QGODBB6S.js} +5 -5
  226. package/chunks/{workflow-QCCCMYP3.js → workflow-EDQAITEW.js} +27 -27
  227. package/chunks/workspace-providers-status-27UGAK77.js +73 -0
  228. package/chunks/workspace-registration-store-5H7577YQ.js +27 -0
  229. package/chunks/{workspace-registry-24QFLQYH.js → workspace-registry-F3THGAXC.js} +33 -33
  230. package/chunks/workspace-service-4JSAQAHP.js +86 -0
  231. package/chunks/workspace-skills-status-5JTWZHZU.js +72 -0
  232. package/chunks/{write-file-I3MUDRIE.js → write-file-UY6XCZZM.js} +27 -27
  233. package/chunks/{zh-RQE7I22T.js → zh-FSAH32JB.js} +6 -2
  234. package/chunks/{zh-TW-TBPQGHKH.js → zh-TW-D2YIE2LO.js} +6 -2
  235. package/cli.js +11 -11
  236. package/locales/ca.js +6 -0
  237. package/locales/de.js +6 -0
  238. package/locales/en.js +8 -0
  239. package/locales/fr.js +6 -0
  240. package/locales/ja.js +7 -1
  241. package/locales/pt.js +6 -0
  242. package/locales/ru.js +6 -0
  243. package/locales/zh-TW.js +9 -1
  244. package/locales/zh.js +9 -1
  245. package/package.json +3 -3
  246. package/web-shell/assets/{arc-C15hqnJe.js → arc-CObt_TK9.js} +1 -1
  247. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B-At37J_.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
  248. package/web-shell/assets/{blockDiagram-GPEHLZMM-B51wjcU7.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
  249. package/web-shell/assets/{c4Diagram-AAUBKEIU-xBK7BAwN.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
  250. package/web-shell/assets/channel-BBaLq8MV.js +1 -0
  251. package/web-shell/assets/{chunk-2J33WTMH-xKmLg7Yr.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
  252. package/web-shell/assets/{chunk-4BX2VUAB-BfkdKZCM.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
  253. package/web-shell/assets/{chunk-55IACEB6-DT713sZf.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
  254. package/web-shell/assets/{chunk-727SXJPM-CYEeAamv.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
  255. package/web-shell/assets/{chunk-AQP2D5EJ-DBN-5CFd.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
  256. package/web-shell/assets/{chunk-FMBD7UC4-CGZKk4PH.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
  257. package/web-shell/assets/{chunk-ND2GUHAM-qQbC2O-y.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
  258. package/web-shell/assets/{chunk-QZHKN3VN-B3zeXwsX.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
  259. package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
  260. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
  261. package/web-shell/assets/{cose-bilkent-S5V4N54A-BKsl1Wvy.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
  262. package/web-shell/assets/{dagre-BM42HDAG-CuuuLiBK.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
  263. package/web-shell/assets/{diagram-2AECGRRQ-CG4_eKiV.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
  264. package/web-shell/assets/{diagram-5GNKFQAL-DSFTmZB1.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
  265. package/web-shell/assets/{diagram-KO2AKTUF-BxwlEHn8.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
  266. package/web-shell/assets/{diagram-LMA3HP47-BUAg-jMG.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
  267. package/web-shell/assets/{diagram-OG6HWLK6-BFM2jlO5.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
  268. package/web-shell/assets/{erDiagram-TEJ5UH35-CerbFPa2.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
  269. package/web-shell/assets/{flowDiagram-I6XJVG4X-BNeZz5Zz.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
  270. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CTOogLaM.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +3 -3
  271. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-yxSFkXPj.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
  272. package/web-shell/assets/index-3uAT3ehO.css +5 -0
  273. package/web-shell/assets/index-CVHa2QH7.js +3 -0
  274. package/web-shell/assets/index-D1KigWat.js +1128 -0
  275. package/web-shell/assets/{infoDiagram-5YYISTIA-DYdAUevm.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
  276. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CNuijZ90.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
  277. package/web-shell/assets/{journeyDiagram-JHISSGLW-BTyiuonf.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
  278. package/web-shell/assets/{kanban-definition-UN3LZRKU-DPJo0Uow.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
  279. package/web-shell/assets/{linear-C8wKCbIC.js → linear-vpW4FrZs.js} +1 -1
  280. package/web-shell/assets/{mermaid.core-BV5o7nW5.js → mermaid.core-DsHRUnDd.js} +5 -5
  281. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtLcBmSt.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
  282. package/web-shell/assets/{pieDiagram-4H26LBE5-C22J7A9Q.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
  283. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DSL10wiL.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
  284. package/web-shell/assets/{requirementDiagram-4Y6WPE33-feqh0UpX.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
  285. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-Z4OVaWaZ.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
  286. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DIluIcb1.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
  287. package/web-shell/assets/{stateDiagram-AJRCARHV-hlhnuoYH.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
  288. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
  289. package/web-shell/assets/{timeline-definition-PNZ67QCA-Dqf_CqgL.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
  290. package/web-shell/assets/{vennDiagram-CIIHVFJN-DD2QhaTX.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
  291. package/web-shell/assets/{wardley-L42UT6IY-B2uI85U_.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
  292. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-U1aJX71g.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
  293. package/web-shell/assets/{xychartDiagram-2RQKCTM6-C0ODHUee.js → xychartDiagram-2RQKCTM6-CO5Hh28b.js} +1 -1
  294. package/web-shell/index.html +2 -2
  295. package/chunks/chunk-CU3L64TP.js +0 -93
  296. package/chunks/initializer-UTQ7FB7G.js +0 -71
  297. package/chunks/list-DEICDL65.js +0 -74
  298. package/chunks/loadedSettingsAdapter-NOWEGDYJ.js +0 -68
  299. package/chunks/mcp-L5JXEEIA.js +0 -68
  300. package/chunks/nonInteractiveCli-LS2K4X6A.js +0 -124
  301. package/chunks/types-JNKGKUJT.js +0 -12
  302. package/chunks/workspace-providers-status-4KMGETOJ.js +0 -71
  303. package/chunks/workspace-service-RVLBMSMZ.js +0 -80
  304. package/chunks/workspace-skills-status-DS4ZVFTO.js +0 -70
  305. package/web-shell/assets/channel-CLiQD50f.js +0 -1
  306. package/web-shell/assets/classDiagram-4FO5ZUOK-D3sYqow5.js +0 -1
  307. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-D3sYqow5.js +0 -1
  308. package/web-shell/assets/index-D5IWFVk1.css +0 -5
  309. package/web-shell/assets/index-KFJRDhX7.js +0 -783
  310. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BhQMwgpl.js +0 -1
@@ -5,14 +5,14 @@ import {
5
5
  } from "./chunk-57OAHC2Y.js";
6
6
  import {
7
7
  loadSettings
8
- } from "./chunk-4C5BQ2D2.js";
8
+ } from "./chunk-CQQD7MDG.js";
9
9
  import {
10
10
  getCurrentLanguage,
11
11
  t
12
- } from "./chunk-YAUFFXDS.js";
12
+ } from "./chunk-UZKG7HFG.js";
13
13
  import {
14
14
  isWorkspaceTrusted
15
- } from "./chunk-HKMAENAO.js";
15
+ } from "./chunk-W2U4RJJU.js";
16
16
  import {
17
17
  writeStdoutLine
18
18
  } from "./chunk-YUZI3WAC.js";
@@ -23,7 +23,7 @@ import {
23
23
  redactUrlCredentials,
24
24
  require_prompts,
25
25
  stripAnsi
26
- } from "./chunk-NVYTCB5Z.js";
26
+ } from "./chunk-XCR44EEA.js";
27
27
  import {
28
28
  init_esbuild_shims
29
29
  } from "./chunk-5O2XNYP6.js";
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  escapeAnsiCtrlCodes
5
- } from "./chunk-Q6I5QHMH.js";
5
+ } from "./chunk-FGTCZJOD.js";
6
6
  import {
7
7
  wrapper_default
8
8
  } from "./chunk-TYAMGABM.js";
9
9
  import {
10
10
  createDebugLogger
11
- } from "./chunk-J4TSQ5EQ.js";
11
+ } from "./chunk-7NFB7LBQ.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -50,6 +50,10 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
50
50
  headers: options.headers
51
51
  }));
52
52
  return new Promise((resolve, reject) => {
53
+ if (deps.abortSignal?.aborted) {
54
+ reject(new Error("Voice stream opening was aborted."));
55
+ return;
56
+ }
53
57
  const streamUrl = deriveStreamUrl(config.baseUrl);
54
58
  const ws = createWebSocket(streamUrl, {
55
59
  headers: config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}
@@ -66,6 +70,12 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
66
70
  let terminalError = null;
67
71
  let finishedTranscript = null;
68
72
  let backpressureWarned = false;
73
+ let onAbort;
74
+ const removeAbortListener = /* @__PURE__ */ __name(() => {
75
+ if (!onAbort) return;
76
+ deps.abortSignal?.removeEventListener("abort", onAbort);
77
+ onAbort = void 0;
78
+ }, "removeAbortListener");
69
79
  const clearFinishTimer = /* @__PURE__ */ __name(() => {
70
80
  if (finishTimer) {
71
81
  clearTimeout(finishTimer);
@@ -81,6 +91,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
81
91
  const fail = /* @__PURE__ */ __name((error) => {
82
92
  if (settled) return;
83
93
  settled = true;
94
+ removeAbortListener();
84
95
  const normalized = error instanceof Error ? error : new Error(String(error));
85
96
  clearConnectTimer();
86
97
  clearFinishTimer();
@@ -101,6 +112,14 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
101
112
  }
102
113
  }
103
114
  }, "fail");
115
+ if (deps.abortSignal) {
116
+ onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
117
+ if (deps.abortSignal.aborted) {
118
+ onAbort();
119
+ return;
120
+ }
121
+ deps.abortSignal.addEventListener("abort", onAbort, { once: true });
122
+ }
104
123
  connectTimer = setTimeout(() => {
105
124
  if (!started) fail(new Error("Voice stream connection timed out."));
106
125
  }, CONNECT_TIMEOUT_MS);
@@ -208,6 +227,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
208
227
  }
209
228
  finishedTranscript = committed.trim();
210
229
  settled = true;
230
+ removeAbortListener();
211
231
  clearConnectTimer();
212
232
  clearFinishTimer();
213
233
  try {
@@ -234,6 +254,7 @@ function openVoiceStream(config, callbacks = {}, deps = {}) {
234
254
  fail(error instanceof Error ? error : new Error(String(error)));
235
255
  });
236
256
  ws.on("close", () => {
257
+ removeAbortListener();
237
258
  clearConnectTimer();
238
259
  clearFinishTimer();
239
260
  if (settled) return;
@@ -292,6 +313,10 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
292
313
  headers: options.headers
293
314
  }));
294
315
  return new Promise((resolve, reject) => {
316
+ if (deps.abortSignal?.aborted) {
317
+ reject(new Error("Voice stream opening was aborted."));
318
+ return;
319
+ }
295
320
  const ws = createWebSocket(
296
321
  deriveQwenRealtimeUrl(config.baseUrl, config.model),
297
322
  {
@@ -310,6 +335,12 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
310
335
  let terminalError = null;
311
336
  let failed = false;
312
337
  let backpressureWarned = false;
338
+ let onAbort;
339
+ const removeAbortListener = /* @__PURE__ */ __name(() => {
340
+ if (!onAbort) return;
341
+ deps.abortSignal?.removeEventListener("abort", onAbort);
342
+ onAbort = void 0;
343
+ }, "removeAbortListener");
313
344
  const sendJson = /* @__PURE__ */ __name((body) => {
314
345
  ws.send(JSON.stringify({ event_id: randomUUID2(), ...body }));
315
346
  }, "sendJson");
@@ -334,6 +365,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
334
365
  const fail = /* @__PURE__ */ __name((error) => {
335
366
  if (failed) return;
336
367
  failed = true;
368
+ removeAbortListener();
337
369
  const normalized = toError(error);
338
370
  clearConnectTimer();
339
371
  clearFinishTimer();
@@ -352,6 +384,14 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
352
384
  terminalError = normalized;
353
385
  callbacks.onError?.(normalized);
354
386
  }, "fail");
387
+ if (deps.abortSignal) {
388
+ onAbort = /* @__PURE__ */ __name(() => fail(new Error("Voice stream opening was aborted.")), "onAbort");
389
+ if (deps.abortSignal.aborted) {
390
+ onAbort();
391
+ return;
392
+ }
393
+ deps.abortSignal.addEventListener("abort", onAbort, { once: true });
394
+ }
355
395
  connectTimer = setTimeout(() => {
356
396
  if (!opened) fail(new Error("Qwen ASR realtime connection timed out."));
357
397
  }, CONNECT_TIMEOUT_MS2);
@@ -469,6 +509,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
469
509
  break;
470
510
  }
471
511
  failed = true;
512
+ removeAbortListener();
472
513
  clearFinishTimer();
473
514
  finishedTranscript = committed.trim();
474
515
  finishResolve?.(finishedTranscript);
@@ -491,6 +532,7 @@ function openQwenAsrRealtimeStream(config, callbacks = {}, deps = {}) {
491
532
  });
492
533
  ws.on("error", fail);
493
534
  ws.on("close", () => {
535
+ removeAbortListener();
494
536
  clearConnectTimer();
495
537
  clearFinishTimer();
496
538
  if (failed) return;
@@ -523,8 +565,22 @@ __name(openQwenAsrRealtimeStream, "openQwenAsrRealtimeStream");
523
565
  init_esbuild_shims();
524
566
  var RETRY_DELAY_MS = 200;
525
567
  var debugLogger3 = createDebugLogger("VOICE_STREAM");
526
- function delay(ms) {
527
- return new Promise((resolve) => setTimeout(resolve, ms));
568
+ function delay(ms, abortSignal) {
569
+ return new Promise((resolve, reject) => {
570
+ if (abortSignal?.aborted) {
571
+ reject(new Error("Voice stream opening was aborted."));
572
+ return;
573
+ }
574
+ const timer = setTimeout(() => {
575
+ abortSignal?.removeEventListener("abort", onAbort);
576
+ resolve();
577
+ }, ms);
578
+ const onAbort = /* @__PURE__ */ __name(() => {
579
+ clearTimeout(timer);
580
+ reject(new Error("Voice stream opening was aborted."));
581
+ }, "onAbort");
582
+ abortSignal?.addEventListener("abort", onAbort, { once: true });
583
+ });
528
584
  }
529
585
  __name(delay, "delay");
530
586
  function isRetryable(error) {
@@ -537,7 +593,10 @@ function isRetryable(error) {
537
593
  return true;
538
594
  }
539
595
  __name(isRetryable, "isRetryable");
540
- async function openVoiceStreamWithRetry(open) {
596
+ async function openVoiceStreamWithRetry(open, opts = {}) {
597
+ if (opts.abortSignal?.aborted) {
598
+ throw new Error("Voice stream opening was aborted.");
599
+ }
541
600
  try {
542
601
  return await open();
543
602
  } catch (error) {
@@ -545,7 +604,10 @@ async function openVoiceStreamWithRetry(open) {
545
604
  throw error;
546
605
  }
547
606
  debugLogger3.debug("[voice] stream open failed, retrying:", error);
548
- await delay(RETRY_DELAY_MS);
607
+ await delay(RETRY_DELAY_MS, opts.abortSignal);
608
+ if (opts.abortSignal?.aborted) {
609
+ throw new Error("Voice stream opening was aborted.");
610
+ }
549
611
  return open();
550
612
  }
551
613
  }
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6AM5D4ME.js";
7
7
  import {
8
8
  ToolNames
9
- } from "./chunk-B5ORX3FG.js";
9
+ } from "./chunk-JGUT3LWZ.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -5,7 +5,7 @@ import {
5
5
  Storage,
6
6
  resolvePath,
7
7
  sanitizeCwd
8
- } from "./chunk-J4TSQ5EQ.js";
8
+ } from "./chunk-7NFB7LBQ.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -170,6 +170,21 @@ function isTeamAutoMemPath(absolutePath, projectRoot) {
170
170
  return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
171
171
  }
172
172
  __name(isTeamAutoMemPath, "isTeamAutoMemPath");
173
+ function isManagedMemoryPath(filePath, projectRoot, baseDir = projectRoot) {
174
+ const absolutePath = path.resolve(baseDir, filePath);
175
+ const resolvedPath = path.normalize(realpathNearestExisting(absolutePath));
176
+ const roots = [
177
+ getAutoMemoryRoot(projectRoot),
178
+ getUserAutoMemoryRoot(),
179
+ getTeamAutoMemoryRoot(projectRoot)
180
+ ];
181
+ return roots.some((root) => {
182
+ const resolvedRoot = path.normalize(realpathNearestExisting(root));
183
+ const rel = path.relative(resolvedRoot, resolvedPath);
184
+ return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
185
+ });
186
+ }
187
+ __name(isManagedMemoryPath, "isManagedMemoryPath");
173
188
  function resolveLeafSymlink(inputPath) {
174
189
  const maxHops = 40;
175
190
  let current = path.resolve(inputPath);
@@ -250,6 +265,7 @@ export {
250
265
  getTeamAutoMemoryRoot,
251
266
  getTeamAutoMemoryIndexPath,
252
267
  isTeamAutoMemPath,
268
+ isManagedMemoryPath,
253
269
  isAnyAutoMemPath
254
270
  };
255
271
  /**
@@ -7,7 +7,7 @@ import {
7
7
  ansiRegex,
8
8
  init_ansi_regex,
9
9
  stripAnsi
10
- } from "./chunk-NVYTCB5Z.js";
10
+ } from "./chunk-XCR44EEA.js";
11
11
  import {
12
12
  init_esbuild_shims
13
13
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  expandHomeDir
5
- } from "./chunk-J4TSQ5EQ.js";
5
+ } from "./chunk-7NFB7LBQ.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-5U27BZ72.js";
5
+ } from "./chunk-55SAYASQ.js";
6
6
  import {
7
7
  parseAndFormatApiError
8
- } from "./chunk-NVYTCB5Z.js";
8
+ } from "./chunk-XCR44EEA.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -792,7 +792,7 @@ ${event.value}`, null);
792
792
  * to emit stream events when includePartialMessages is enabled.
793
793
  *
794
794
  * @param _request - Tool call request info
795
- * @param _progress - Structured MCP progress data
795
+ * @param _progress - Structured MCP progress data or shell liveness heartbeat
796
796
  */
797
797
  emitToolProgress(_request, _progress) {
798
798
  }
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-QHTIBUWB.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-YAUFFXDS.js";
11
+ } from "./chunk-UZKG7HFG.js";
12
12
  import {
13
13
  require_clean,
14
14
  require_constants,
@@ -27,13 +27,13 @@ import {
27
27
  ansi_regex_exports,
28
28
  init_ansi_regex,
29
29
  stripAnsi
30
- } from "./chunk-NVYTCB5Z.js";
30
+ } from "./chunk-XCR44EEA.js";
31
31
  import {
32
32
  require_graceful_fs
33
- } from "./chunk-KKNMOEZH.js";
33
+ } from "./chunk-E2UVIFI2.js";
34
34
  import {
35
35
  createDebugLogger
36
- } from "./chunk-J4TSQ5EQ.js";
36
+ } from "./chunk-7NFB7LBQ.js";
37
37
  import {
38
38
  __qwen_dirname,
39
39
  init_esbuild_shims
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  isSupportedImageMimeType
5
- } from "./chunk-524RQP4Q.js";
5
+ } from "./chunk-B7NUUEXC.js";
6
6
  import {
7
7
  TextTokenizer
8
- } from "./chunk-JSG7ZSBC.js";
8
+ } from "./chunk-TQBODCFD.js";
9
9
  import {
10
10
  createDebugLogger
11
- } from "./chunk-J4TSQ5EQ.js";
11
+ } from "./chunk-7NFB7LBQ.js";
12
12
  import {
13
13
  init_esbuild_shims
14
14
  } from "./chunk-5O2XNYP6.js";
@@ -221,79 +221,16 @@ var V1_INDICATOR_KEYS = [
221
221
  "disableCacheControl"
222
222
  ];
223
223
 
224
- // packages/cli/src/config/storage-paths-lite.ts
225
- init_esbuild_shims();
226
- import * as os from "node:os";
227
- import * as path from "node:path";
228
- var SETTINGS_DIRECTORY_NAME = ".qwen";
229
- function resolveConfigPathLite(dir, cwd) {
230
- let resolved = dir;
231
- if (resolved === "~" || resolved.startsWith("~/") || resolved.startsWith("~\\")) {
232
- const relativeSegments = resolved === "~" ? [] : resolved.slice(2).split(/[/\\]+/).filter(Boolean);
233
- resolved = path.join(os.homedir(), ...relativeSegments);
234
- }
235
- if (!path.isAbsolute(resolved)) {
236
- resolved = path.resolve(cwd || process.cwd(), resolved);
237
- }
238
- return resolved;
239
- }
240
- __name(resolveConfigPathLite, "resolveConfigPathLite");
241
- function getGlobalQwenDirLite() {
242
- const envDir = process.env["QWEN_HOME"];
243
- if (envDir) {
244
- return resolveConfigPathLite(envDir);
245
- }
246
- const homeDir = os.homedir();
247
- if (!homeDir) {
248
- return path.join(os.tmpdir(), SETTINGS_DIRECTORY_NAME);
249
- }
250
- return path.join(homeDir, SETTINGS_DIRECTORY_NAME);
251
- }
252
- __name(getGlobalQwenDirLite, "getGlobalQwenDirLite");
253
- function getSystemSettingsPath() {
254
- if (process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"]) {
255
- return process.env["QWEN_CODE_SYSTEM_SETTINGS_PATH"];
256
- }
257
- if (os.platform() === "darwin") {
258
- return "/Library/Application Support/QwenCode/settings.json";
259
- }
260
- if (os.platform() === "win32") {
261
- return "C:\\ProgramData\\qwen-code\\settings.json";
262
- }
263
- return "/etc/qwen-code/settings.json";
264
- }
265
- __name(getSystemSettingsPath, "getSystemSettingsPath");
266
- function getSystemDefaultsPath() {
267
- if (process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"]) {
268
- return process.env["QWEN_CODE_SYSTEM_DEFAULTS_PATH"];
269
- }
270
- return path.join(
271
- path.dirname(getSystemSettingsPath()),
272
- "system-defaults.json"
273
- );
274
- }
275
- __name(getSystemDefaultsPath, "getSystemDefaultsPath");
276
-
277
224
  export {
278
225
  resolveEnvVarsInObject,
279
226
  V1_TO_V2_MIGRATION_MAP,
280
227
  V2_CONTAINER_KEYS,
281
228
  V1_TO_V2_PRESERVE_DISABLE_MAP,
282
229
  CONSOLIDATED_DISABLE_KEYS,
283
- V1_INDICATOR_KEYS,
284
- SETTINGS_DIRECTORY_NAME,
285
- resolveConfigPathLite,
286
- getGlobalQwenDirLite,
287
- getSystemSettingsPath,
288
- getSystemDefaultsPath
230
+ V1_INDICATOR_KEYS
289
231
  };
290
232
  /**
291
233
  * @license
292
234
  * Copyright 2025 Google LLC
293
235
  * SPDX-License-Identifier: Apache-2.0
294
236
  */
295
- /**
296
- * @license
297
- * Copyright 2025 Qwen Team
298
- * SPDX-License-Identifier: Apache-2.0
299
- */
@@ -1,5 +1,8 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ HistoryReplayer
5
+ } from "./chunk-HKM2TEF7.js";
3
6
  import {
4
7
  redactLogCredentials
5
8
  } from "./chunk-M5GB774H.js";
@@ -274,6 +277,152 @@ function isValidServerName(name) {
274
277
  }
275
278
  __name(isValidServerName, "isValidServerName");
276
279
 
280
+ // packages/cli/src/acp-integration/session/history-replay-page.ts
281
+ init_esbuild_shims();
282
+ function createReplayCumulativeUsage() {
283
+ return {
284
+ promptTokens: 0,
285
+ cachedTokens: 0,
286
+ candidateTokens: 0,
287
+ apiTimeMs: 0
288
+ };
289
+ }
290
+ __name(createReplayCumulativeUsage, "createReplayCumulativeUsage");
291
+ function copyCumulativeUsage(target, source) {
292
+ target.promptTokens = source.promptTokens;
293
+ target.cachedTokens = source.cachedTokens;
294
+ target.candidateTokens = source.candidateTokens;
295
+ target.apiTimeMs = source.apiTimeMs;
296
+ }
297
+ __name(copyCumulativeUsage, "copyCumulativeUsage");
298
+ function isObjectRecord(value) {
299
+ return typeof value === "object" && value !== null && !Array.isArray(value);
300
+ }
301
+ __name(isObjectRecord, "isObjectRecord");
302
+ function isCumulativeUsage(value) {
303
+ if (!isObjectRecord(value)) return false;
304
+ return typeof value["promptTokens"] === "number" && Number.isFinite(value["promptTokens"]) && typeof value["cachedTokens"] === "number" && Number.isFinite(value["cachedTokens"]) && typeof value["candidateTokens"] === "number" && Number.isFinite(value["candidateTokens"]) && typeof value["apiTimeMs"] === "number" && Number.isFinite(value["apiTimeMs"]);
305
+ }
306
+ __name(isCumulativeUsage, "isCumulativeUsage");
307
+ function isPendingReplayToolCall(value) {
308
+ if (!isObjectRecord(value)) return false;
309
+ return typeof value["callId"] === "string" && typeof value["toolName"] === "string" && (value["timestamp"] === void 0 || typeof value["timestamp"] === "string") && typeof value["recordId"] === "string";
310
+ }
311
+ __name(isPendingReplayToolCall, "isPendingReplayToolCall");
312
+ function parseTranscriptReplayState(replay, logger) {
313
+ if (!isObjectRecord(replay)) {
314
+ return {
315
+ pendingToolCalls: [],
316
+ cumulativeUsage: createReplayCumulativeUsage()
317
+ };
318
+ }
319
+ const rawPending = replay["pendingToolCalls"];
320
+ const pendingToolCalls = Array.isArray(rawPending) ? rawPending.filter(isPendingReplayToolCall) : [];
321
+ if (logger && Array.isArray(rawPending) && pendingToolCalls.length !== rawPending.length) {
322
+ const dropped = rawPending.length - pendingToolCalls.length;
323
+ logger.warn(
324
+ `[transcript] replay state dropped ${dropped} of ${rawPending.length} malformed pending tool calls`
325
+ );
326
+ }
327
+ const cumulativeUsage = isCumulativeUsage(replay["cumulativeUsage"]) ? { ...replay["cumulativeUsage"] } : createReplayCumulativeUsage();
328
+ return { pendingToolCalls, cumulativeUsage };
329
+ }
330
+ __name(parseTranscriptReplayState, "parseTranscriptReplayState");
331
+ function replayContext(sessionId, updates, cumulativeUsage, config) {
332
+ return {
333
+ sessionId,
334
+ sendUpdate: /* @__PURE__ */ __name(async (update) => {
335
+ updates.push(update);
336
+ }, "sendUpdate"),
337
+ cumulativeUsage,
338
+ ...config ? { config } : {}
339
+ };
340
+ }
341
+ __name(replayContext, "replayContext");
342
+ async function collectHistoryReplayUpdates({
343
+ sessionId,
344
+ config,
345
+ records,
346
+ gaps,
347
+ cumulativeUsage,
348
+ logger
349
+ }) {
350
+ const updates = [];
351
+ try {
352
+ await new HistoryReplayer(
353
+ replayContext(sessionId, updates, cumulativeUsage, config)
354
+ ).replay(records, gaps);
355
+ } catch (error) {
356
+ const replayError = error instanceof Error ? error.message : String(error);
357
+ logger?.warn(
358
+ "[historyReplay] History replay failed for session %s (partial updates: %d):",
359
+ sessionId,
360
+ updates.length,
361
+ error
362
+ );
363
+ return { updates: liftSessionUpdateTimestamps(updates), replayError };
364
+ }
365
+ return { updates: liftSessionUpdateTimestamps(updates) };
366
+ }
367
+ __name(collectHistoryReplayUpdates, "collectHistoryReplayUpdates");
368
+ function liftSessionUpdateTimestamps(updates) {
369
+ return updates.map((update) => {
370
+ const record = update;
371
+ const meta = record["_meta"];
372
+ const timestamp = isObjectRecord(meta) ? meta["timestamp"] : void 0;
373
+ return typeof timestamp === "number" || typeof timestamp === "string" ? { ...record, timestamp } : update;
374
+ });
375
+ }
376
+ __name(liftSessionUpdateTimestamps, "liftSessionUpdateTimestamps");
377
+ async function replayTranscriptRecordPage({
378
+ sessionId,
379
+ page,
380
+ config,
381
+ encodeCursor,
382
+ logger
383
+ }) {
384
+ const state = parseTranscriptReplayState(page.replay, logger);
385
+ const updates = [];
386
+ const replayer = new HistoryReplayer(
387
+ replayContext(sessionId, updates, state.cumulativeUsage, config)
388
+ );
389
+ let pendingToolCalls;
390
+ let replayError;
391
+ try {
392
+ const replayState = await replayer.replayPage(page.records, {
393
+ pendingToolCalls: state.pendingToolCalls,
394
+ finalizeDangling: !page.hasMore,
395
+ gaps: page.gaps
396
+ });
397
+ pendingToolCalls = replayState.pendingToolCalls;
398
+ } catch (error) {
399
+ logger?.warn(
400
+ "[historyReplay] Paged history replay failed for session %s (partial updates: %d):",
401
+ sessionId,
402
+ updates.length,
403
+ error
404
+ );
405
+ pendingToolCalls = replayer.getPendingToolCalls();
406
+ replayError = "Replay conversion failed for this page";
407
+ }
408
+ const nextCursor = page.nextCursorState && replayError === void 0 ? encodeCursor({
409
+ ...page.nextCursorState,
410
+ replay: {
411
+ pendingToolCalls,
412
+ cumulativeUsage: state.cumulativeUsage
413
+ }
414
+ }) : void 0;
415
+ return {
416
+ updates: liftSessionUpdateTimestamps(updates),
417
+ ...nextCursor ? { nextCursor } : {},
418
+ hasMore: replayError === void 0 && page.hasMore,
419
+ startTime: page.startTime,
420
+ lastUpdated: page.lastUpdated,
421
+ ...replayError ? { partial: true, replayError } : {}
422
+ };
423
+ }
424
+ __name(replayTranscriptRecordPage, "replayTranscriptRecordPage");
425
+
277
426
  export {
278
427
  createWorkspaceMemoryExtractionErrorLogger,
279
428
  extractRememberErrorCode,
@@ -283,7 +432,11 @@ export {
283
432
  MAX_REMEMBER_CONTENT_BYTES,
284
433
  formatWorkspaceMemoryForgetSummary,
285
434
  formatWorkspaceMemoryDreamSummary,
286
- isValidServerName
435
+ isValidServerName,
436
+ createReplayCumulativeUsage,
437
+ copyCumulativeUsage,
438
+ collectHistoryReplayUpdates,
439
+ replayTranscriptRecordPage
287
440
  };
288
441
  /**
289
442
  * @license
@@ -0,0 +1,23 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+
7
+ // packages/cli/src/serve/channel-worker-env.ts
8
+ init_esbuild_shims();
9
+ var CHANNEL_DAEMON_WORKER_SENTINEL = "QWEN_CHANNEL_DAEMON_WORKER";
10
+ var CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS = 15e3;
11
+ var QWEN_DAEMON_TOKEN_ENV = "QWEN_DAEMON_TOKEN";
12
+ var QWEN_DAEMON_URL_ENV = "QWEN_DAEMON_URL";
13
+ var QWEN_DAEMON_WORKSPACE_ENV = "QWEN_DAEMON_WORKSPACE";
14
+ var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
15
+
16
+ export {
17
+ CHANNEL_DAEMON_WORKER_SENTINEL,
18
+ CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
19
+ QWEN_DAEMON_TOKEN_ENV,
20
+ QWEN_DAEMON_URL_ENV,
21
+ QWEN_DAEMON_WORKSPACE_ENV,
22
+ QWEN_SERVER_TOKEN_ENV
23
+ };
@@ -23,6 +23,8 @@ var DaemonMetricsRing = class {
23
23
  curQueueWaits = [];
24
24
  curPromptDurations = [];
25
25
  curLlmDurations = [];
26
+ curLlmApiErrors = 0;
27
+ curLlmApiRetries = 0;
26
28
  curPipeInBytes = 0;
27
29
  curPipeOutBytes = 0;
28
30
  curTokensIn = 0;
@@ -49,6 +51,19 @@ var DaemonMetricsRing = class {
49
51
  recordLlmDuration(durationMs) {
50
52
  pushCapped(this.curLlmDurations, durationMs);
51
53
  }
54
+ /**
55
+ * Fold one model round's per-round model-API-error and automatic-retry
56
+ * increments (from the same token frame) into the open window. Both are
57
+ * plain counters — a burst in one window accrues exactly, past the sample
58
+ * cap that only bounds the percentile arrays. Non-finite / negative inputs
59
+ * are ignored so a malformed frame cannot poison the totals.
60
+ */
61
+ recordApiActivity(errors, retries) {
62
+ if (Number.isFinite(errors) && errors > 0) this.curLlmApiErrors += errors;
63
+ if (Number.isFinite(retries) && retries > 0) {
64
+ this.curLlmApiRetries += retries;
65
+ }
66
+ }
52
67
  /** Fold one ACP-child pipe message's payload size into the open window. */
53
68
  recordPipe(direction, bytes) {
54
69
  if (!Number.isFinite(bytes) || bytes < 0) return;
@@ -84,6 +99,8 @@ var DaemonMetricsRing = class {
84
99
  promptDurationP95Ms: percentile(this.curPromptDurations, 0.95),
85
100
  llmApiP50Ms: percentile(this.curLlmDurations, 0.5),
86
101
  llmApiP95Ms: percentile(this.curLlmDurations, 0.95),
102
+ llmApiErrors: this.curLlmApiErrors,
103
+ llmApiRetries: this.curLlmApiRetries,
87
104
  cpuPercent: finiteGauge(gauges.cpuPercent),
88
105
  rssBytes: finiteGauge(gauges.rssBytes),
89
106
  heapUsedBytes: finiteGauge(gauges.heapUsedBytes),
@@ -109,6 +126,8 @@ var DaemonMetricsRing = class {
109
126
  this.curQueueWaits.length = 0;
110
127
  this.curPromptDurations.length = 0;
111
128
  this.curLlmDurations.length = 0;
129
+ this.curLlmApiErrors = 0;
130
+ this.curLlmApiRetries = 0;
112
131
  this.curPipeInBytes = 0;
113
132
  this.curPipeOutBytes = 0;
114
133
  this.curTokensIn = 0;