@qwen-code/qwen-code 0.19.5 → 0.19.6

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 (233) hide show
  1. package/bundled/dataviz/SKILL.md +50 -0
  2. package/bundled/dataviz/references/anti-patterns.md +12 -0
  3. package/bundled/dataviz/references/choosing-a-form.md +16 -0
  4. package/bundled/dataviz/references/palette.md +57 -0
  5. package/bundled/dataviz/scripts/validate_palette.js +328 -0
  6. package/bundled/loop/SKILL.md +1 -1
  7. package/bundled/qc-helper/docs/configuration/settings.md +9 -8
  8. package/bundled/qc-helper/docs/features/headless.md +2 -2
  9. package/bundled/qc-helper/docs/features/scheduled-tasks.md +4 -2
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  11. package/chunks/{MaxSizedBox-5JV77KRA.js → MaxSizedBox-SK7CUWZQ.js} +14 -14
  12. package/chunks/{StandaloneSessionPicker-MGUGB6PH.js → StandaloneSessionPicker-G44HGSAP.js} +25 -25
  13. package/chunks/{acpAgent-4F36XM3X.js → acpAgent-PKCTYWJV.js} +346 -131
  14. package/chunks/{agent-IWBUZI6A.js → agent-IYMHUXWB.js} +11 -11
  15. package/chunks/{agent-headless-JUTICAYO.js → agent-headless-L2DAW6I5.js} +11 -11
  16. package/chunks/{anthropicContentGenerator-WL3LJOUB.js → anthropicContentGenerator-H5ZOEENQ.js} +2 -2
  17. package/chunks/{artifact-tool-W76WC2JX.js → artifact-tool-SLYPWG3C.js} +15 -2
  18. package/chunks/{askUserQuestion-J3P6TH3V.js → askUserQuestion-OKPTECON.js} +1 -1
  19. package/chunks/{bridge-DHZHQ4UV.js → bridge-DF3IJQ5V.js} +17 -16
  20. package/chunks/{channel-worker-supervisor-EVPAYNZ5.js → channel-worker-supervisor-JUYQ5Z4R.js} +5 -5
  21. package/chunks/chunk-2INJBYLJ.js +949 -0
  22. package/chunks/chunk-3RW4AZJV.js +5063 -0
  23. package/chunks/{chunk-NSSVORTQ.js → chunk-3UC7ZC43.js} +16 -12
  24. package/chunks/chunk-3VJ7MT3N.js +111 -0
  25. package/chunks/{chunk-DRS2HTNT.js → chunk-3X76L4UF.js} +5 -5
  26. package/chunks/{chunk-PPFWEV7G.js → chunk-4RQIB5UZ.js} +62 -62
  27. package/chunks/{chunk-EROWZQN7.js → chunk-57NRQM3P.js} +6 -6
  28. package/chunks/{chunk-L7OJ3ZO3.js → chunk-5ES5YPED.js} +1 -1
  29. package/chunks/{chunk-RNGAT2Y2.js → chunk-5WQF27GW.js} +1 -1
  30. package/chunks/{chunk-7DMQRPC7.js → chunk-6BEOH4KK.js} +1 -1
  31. package/chunks/{chunk-CXBG27SF.js → chunk-6IAWPIQ6.js} +3 -2
  32. package/chunks/{chunk-DM4E337C.js → chunk-6QVRLKTZ.js} +4 -4
  33. package/chunks/{chunk-RM3PGSGL.js → chunk-6SHO7WFF.js} +15 -2
  34. package/chunks/{chunk-LHMZCIKL.js → chunk-7Z6UEJA4.js} +3 -1
  35. package/chunks/{chunk-SBMHB6N5.js → chunk-A34EPIUV.js} +12 -12
  36. package/chunks/{chunk-6QTCOQX7.js → chunk-AGZF43UV.js} +1967 -1399
  37. package/chunks/{chunk-QHYITL6P.js → chunk-BOAWGUY6.js} +5 -11
  38. package/chunks/{chunk-TN6RT6EJ.js → chunk-C2QKQZEQ.js} +16 -4
  39. package/chunks/{chunk-BC4R5C5R.js → chunk-CEYA7K7C.js} +32 -6
  40. package/chunks/{chunk-R6RI2HIC.js → chunk-CLQPBI4H.js} +40 -13
  41. package/chunks/{chunk-OQHLUA2Y.js → chunk-DBF3HTLT.js} +3 -3
  42. package/chunks/{chunk-SJBIFVD2.js → chunk-DMSNJDWG.js} +5 -1
  43. package/chunks/{chunk-KKQWC6WS.js → chunk-DNV4FSN5.js} +1 -1
  44. package/chunks/chunk-DXXNMPJH.js +5468 -0
  45. package/chunks/{chunk-CBJE2PLG.js → chunk-FDY3XOTM.js} +2 -2
  46. package/chunks/{chunk-NDY7OENU.js → chunk-FPHA7WIZ.js} +2 -2
  47. package/chunks/{chunk-MNOXKSM2.js → chunk-FZ5NVRVK.js} +1 -1
  48. package/chunks/{chunk-UJT42DB6.js → chunk-GQBRGBLS.js} +5 -5
  49. package/chunks/{chunk-Y4UQT3PM.js → chunk-HCFSKO6K.js} +1 -1
  50. package/chunks/{chunk-2Z43HUXT.js → chunk-HLKG6CZN.js} +3 -2
  51. package/chunks/{chunk-WALEWZ44.js → chunk-IUSKVKH5.js} +1 -1
  52. package/chunks/{chunk-XKSCTXPK.js → chunk-J6ABRKAB.js} +2 -1
  53. package/chunks/{chunk-DX3TKXNT.js → chunk-JA5KWZTJ.js} +1 -1
  54. package/chunks/{chunk-CHY5C5T4.js → chunk-JN2VJ33O.js} +171 -79
  55. package/chunks/{chunk-YTFBURQD.js → chunk-KYTQOCDE.js} +1 -1
  56. package/chunks/{chunk-BPFJQGY7.js → chunk-LM3YCCZJ.js} +164 -5
  57. package/chunks/{chunk-ZISMVA6U.js → chunk-LXFCHX4X.js} +1371 -24
  58. package/chunks/{chunk-6KPZJJ6U.js → chunk-MBWLP5OT.js} +9 -9
  59. package/chunks/{chunk-IMAMNLY6.js → chunk-MHQKYQDS.js} +3 -3
  60. package/chunks/{chunk-M5ITDKSM.js → chunk-MJKEQSZI.js} +1 -1
  61. package/chunks/{chunk-MTNTVOJR.js → chunk-MJKMIQMK.js} +5 -2
  62. package/chunks/{chunk-CSPSJU5R.js → chunk-MX7CTJHR.js} +16 -16
  63. package/chunks/{chunk-HISPEX42.js → chunk-N2IJLN2L.js} +7 -7
  64. package/chunks/{chunk-YCU7QV7Q.js → chunk-N4YJQTRL.js} +4 -0
  65. package/chunks/{chunk-R3UWLLRQ.js → chunk-NUK2PFSU.js} +1 -1
  66. package/chunks/{chunk-YXK4GPYO.js → chunk-NVFJSIAX.js} +29 -0
  67. package/chunks/{chunk-4MCC4XHH.js → chunk-O2RJARYU.js} +38 -37
  68. package/chunks/{chunk-JKGCBO3O.js → chunk-OAYOHSGP.js} +3 -3
  69. package/chunks/{chunk-G4M7FPNY.js → chunk-OBVBTAX5.js} +1 -1
  70. package/chunks/{chunk-JJ6B3ZD3.js → chunk-OIFSBXSP.js} +2 -2
  71. package/chunks/{chunk-NNEJEBCF.js → chunk-QOKV6AO4.js} +30 -21
  72. package/chunks/{chunk-DG573EOO.js → chunk-RZORUN6X.js} +1 -1
  73. package/chunks/{chunk-RSBQS6M4.js → chunk-SL2P3JUA.js} +1 -1
  74. package/chunks/{chunk-K4I4STSL.js → chunk-SOT7OMGL.js} +2 -2
  75. package/chunks/{chunk-MDBNFHIO.js → chunk-SRNPMG7J.js} +3 -3
  76. package/chunks/{chunk-SJVPSHXU.js → chunk-UNXGEDX2.js} +4 -4
  77. package/chunks/{chunk-WZ724G6K.js → chunk-UTL7KABL.js} +5 -5
  78. package/chunks/{chunk-UY2TCIZS.js → chunk-V5VTULL5.js} +2 -2
  79. package/chunks/{chunk-Z7XNVNPM.js → chunk-V6NH3CUC.js} +1 -1
  80. package/chunks/{chunk-J3ERRYYI.js → chunk-WXUDZHOJ.js} +2 -2
  81. package/chunks/{chunk-2CAII5HD.js → chunk-XH7H6YG4.js} +1 -1
  82. package/chunks/{chunk-XKZXGIRM.js → chunk-YSU33ACT.js} +2 -2
  83. package/chunks/{chunk-6QVQZAW6.js → chunk-YTWX5TT2.js} +1 -1
  84. package/chunks/{chunk-5B2WNM6V.js → chunk-ZI4MGBB5.js} +1 -1
  85. package/chunks/{chunk-2YH27UNF.js → chunk-ZO5EA3XJ.js} +1 -1
  86. package/chunks/{computer-use-ON3JQUHW.js → computer-use-5S3NVXRA.js} +11 -11
  87. package/chunks/{contextCommand-OGCG7W6N.js → contextCommand-DPBALZFK.js} +13 -13
  88. package/chunks/{cron-create-6YTCOX6P.js → cron-create-7JYUDTUY.js} +20 -5
  89. package/chunks/{cron-delete-E3NIFSUK.js → cron-delete-YPULQQAK.js} +2 -2
  90. package/chunks/{cron-list-Q64MNQNE.js → cron-list-HJIW5MHP.js} +2 -2
  91. package/chunks/{daemon-EEB2RYOL.js → daemon-7XYW4BC3.js} +102 -0
  92. package/chunks/{daemon-status-provider-P72STMLB.js → daemon-status-provider-2EWTHT7Y.js} +20 -19
  93. package/chunks/{dist-AP5V4WYU.js → dist-AAO65DPC.js} +2 -2
  94. package/chunks/{dist-X4ZDE726.js → dist-ABQ7VWRR.js} +3 -3
  95. package/chunks/{dist-SNXOUPYS.js → dist-AW5ZYMUI.js} +2 -2
  96. package/chunks/{dist-Z57Q4YF5.js → dist-BV56HW3W.js} +276 -95
  97. package/chunks/{dist-IZP2VV4C.js → dist-JPSVN367.js} +2 -2
  98. package/chunks/{earlyInputCapture-DAFHSGVW.js → earlyInputCapture-GGPV4IFT.js} +11 -11
  99. package/chunks/{edit-3QFNCSZH.js → edit-HJ7ISN4C.js} +12 -12
  100. package/chunks/{en-M4EBUBNU.js → en-XR3S5VWY.js} +1 -0
  101. package/chunks/{enter-worktree-62EQQMLD.js → enter-worktree-2BQT675D.js} +11 -11
  102. package/chunks/{enterPlanMode-VUQSE4EG.js → enterPlanMode-SJXHJ3WD.js} +11 -11
  103. package/chunks/{errors-PW75PZXE.js → errors-EVGER4AZ.js} +13 -13
  104. package/chunks/{exit-worktree-VVNH7OVY.js → exit-worktree-RPDDOSPM.js} +11 -11
  105. package/chunks/{exitPlanMode-RUYRCYZW.js → exitPlanMode-BQEROAJ7.js} +11 -11
  106. package/chunks/{fast-path-TFRJRTTR.js → fast-path-FX2ICJ2O.js} +3 -3
  107. package/chunks/{fast-path-settings-UQLRFDQP.js → fast-path-settings-RCRXH2JG.js} +2 -2
  108. package/chunks/{gemini-XW7ZDUVR.js → gemini-EHUXCOUI.js} +69 -64
  109. package/chunks/{geminiContentGenerator-MZDVHVZH.js → geminiContentGenerator-YDUUKAM2.js} +1 -1
  110. package/chunks/{glob-WAY2PUWA.js → glob-3VIGV2DL.js} +11 -11
  111. package/chunks/{grep-W6CBKSYC.js → grep-4D3S4NUC.js} +11 -11
  112. package/chunks/{initializer-HK2XE6P2.js → initializer-QZTZSSLW.js} +16 -16
  113. package/chunks/{list-RVLIIKKL.js → list-WQ24EAMK.js} +18 -18
  114. package/chunks/{loadedSettingsAdapter-C63OUYZC.js → loadedSettingsAdapter-XV74KOSR.js} +16 -16
  115. package/chunks/{loop-wakeup-G2EHBRGR.js → loop-wakeup-34YK7T7O.js} +3 -3
  116. package/chunks/{ls-IDHUVSAG.js → ls-MPD5OJUX.js} +1 -1
  117. package/chunks/{lsp-FSRYXGFT.js → lsp-72PWTDW7.js} +1 -1
  118. package/chunks/{workspace-skills-status-ONEPXJV6.js → mcp-CO3MKM7N.js} +20 -16
  119. package/chunks/{monitor-FOG36ABM.js → monitor-GB56T65A.js} +11 -11
  120. package/chunks/{nonInteractiveCli-6BYQSJTB.js → nonInteractiveCli-HNZRIM5I.js} +46 -44
  121. package/chunks/{notebook-edit-GC6NXRCX.js → notebook-edit-VMXAAE3R.js} +12 -12
  122. package/chunks/{openaiContentGenerator-EXR3ZL3Z.js → openaiContentGenerator-GM77FLII.js} +6 -6
  123. package/chunks/{pidfile-FNZM2DDH.js → pidfile-HFXSHR64.js} +11 -11
  124. package/chunks/{qwenContentGenerator-A7B6J4U7.js → qwenContentGenerator-QSCXQIKJ.js} +13 -13
  125. package/chunks/{read-file-6JL4ULMY.js → read-file-SVH6CGQY.js} +3 -3
  126. package/chunks/{read-mcp-resource-PIJF24RO.js → read-mcp-resource-OWOBJY72.js} +1 -1
  127. package/chunks/record-artifact-URK3YUDJ.js +343 -0
  128. package/chunks/{ripGrep-DIUGLJE5.js → ripGrep-JD5O2FLX.js} +11 -11
  129. package/chunks/{run-qwen-serve-CME3AKM4.js → run-qwen-serve-FADLRJUN.js} +67 -28
  130. package/chunks/{scheduler-L7F6GDDT.js → scheduler-Q65SB7DJ.js} +11 -11
  131. package/chunks/{send-message-33PYFMCT.js → send-message-L7OLQEKH.js} +2 -2
  132. package/chunks/{serve-SRCBOJGP.js → serve-6ZXAMQ4M.js} +18 -18
  133. package/chunks/{server-QSQ45QFR.js → server-WKDQA6XR.js} +1184 -490
  134. package/chunks/{session-5DG6NXHZ.js → session-STWOX7RA.js} +48 -46
  135. package/chunks/{settings-3EEQI4MN.js → settings-LC4CCWQQ.js} +15 -15
  136. package/chunks/{shell-B7FNYF5S.js → shell-FEG3RLPW.js} +11 -11
  137. package/chunks/{skill-AAOGHD5O.js → skill-XTXAMDAP.js} +4 -4
  138. package/chunks/{spawnChannel-3CBN3ZLK.js → spawnChannel-B6JJPBPV.js} +15 -15
  139. package/chunks/{src-T5A7P7FS.js → src-HITDGVRM.js} +47 -21
  140. package/chunks/{startInteractiveUI-2FGEQ6AS.js → startInteractiveUI-IT423PW4.js} +354 -152
  141. package/chunks/{syntheticOutput-YOSWIHDJ.js → syntheticOutput-J3MLCQAR.js} +2 -2
  142. package/chunks/{task-create-NHS2NGB3.js → task-create-ELEBZ7H2.js} +3 -3
  143. package/chunks/{task-list-5UIB564R.js → task-list-IEUZLF3Y.js} +1 -1
  144. package/chunks/{task-stop-HGXZ2VZ3.js → task-stop-QEZW3UDY.js} +1 -1
  145. package/chunks/{task-update-IYYWUILG.js → task-update-DW36J5P5.js} +3 -3
  146. package/chunks/{team-create-KDF6W6PV.js → team-create-DAG6SNHZ.js} +11 -11
  147. package/chunks/{team-delete-FEKJCU4P.js → team-delete-SVITIMBO.js} +1 -1
  148. package/chunks/{team-plan-approval-PSFKQX7M.js → team-plan-approval-DRDY5OPC.js} +11 -11
  149. package/chunks/{theme-manager-5XOA2AO7.js → theme-manager-N67EZC6B.js} +11 -11
  150. package/chunks/{todoWrite-TKMVZ2HT.js → todoWrite-SFFQHZYY.js} +2 -2
  151. package/chunks/{tool-search-LFRILZXC.js → tool-search-CMDJ5HGM.js} +4 -4
  152. package/chunks/{trustedFolders-7HQY6T6X.js → trustedFolders-JD4QX6UJ.js} +12 -12
  153. package/chunks/{validateNonInterActiveAuth-UC27B7BA.js → validateNonInterActiveAuth-ADDCGZ6A.js} +43 -41
  154. package/chunks/version-VAONYVE5.js +10 -0
  155. package/chunks/{web-fetch-J4PIW36Q.js → web-fetch-SXAXJHIO.js} +2 -2
  156. package/chunks/{workflow-KUTESS6L.js → workflow-DG2BR42M.js} +20 -13
  157. package/chunks/{workspace-providers-status-LJT5AQDS.js → workspace-providers-status-XGW5OZTD.js} +18 -18
  158. package/chunks/{workspace-service-YOBYVDXH.js → workspace-service-GX3GGZLU.js} +23 -23
  159. package/chunks/workspace-skills-status-LFK5WV2V.js +68 -0
  160. package/chunks/{write-file-FJYBZUHP.js → write-file-UR7FXWOU.js} +12 -12
  161. package/chunks/yargs-B64EYTCF.js +10 -0
  162. package/chunks/{zh-SLZNSSZB.js → zh-FSVJTXA4.js} +1 -0
  163. package/chunks/{zh-TW-P53C2SL5.js → zh-TW-66MG4LWL.js} +1 -0
  164. package/cli-entry.js +81 -8
  165. package/cli.js +348 -55
  166. package/locales/en.js +1 -0
  167. package/locales/zh-TW.js +1 -0
  168. package/locales/zh.js +1 -0
  169. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  170. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  171. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  172. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  173. package/package.json +3 -3
  174. package/web-shell/assets/{arc-D_rAuMDd.js → arc-CUpe0ibu.js} +1 -1
  175. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DUCzbHVo.js → architectureDiagram-3BPJPVTR-JvyrY_mK.js} +1 -1
  176. package/web-shell/assets/{blockDiagram-GPEHLZMM-BEEBt1LL.js → blockDiagram-GPEHLZMM-CK3Y_vom.js} +1 -1
  177. package/web-shell/assets/{c4Diagram-AAUBKEIU-5ZJ_DeFL.js → c4Diagram-AAUBKEIU-DprSnyrf.js} +1 -1
  178. package/web-shell/assets/channel-BAxQ2-aZ.js +1 -0
  179. package/web-shell/assets/{chunk-2J33WTMH-Cfw7EiLn.js → chunk-2J33WTMH-DJtRJPmu.js} +1 -1
  180. package/web-shell/assets/{chunk-4BX2VUAB-FGuZNCZY.js → chunk-4BX2VUAB-ON6Q2-BG.js} +1 -1
  181. package/web-shell/assets/{chunk-55IACEB6-CaBwYPBF.js → chunk-55IACEB6-c60ou5HZ.js} +1 -1
  182. package/web-shell/assets/{chunk-727SXJPM-BlR04OFz.js → chunk-727SXJPM-BamtPKxx.js} +1 -1
  183. package/web-shell/assets/{chunk-AQP2D5EJ-D3_mYJH5.js → chunk-AQP2D5EJ-CsVgpu-T.js} +1 -1
  184. package/web-shell/assets/{chunk-FMBD7UC4-7D4q4SbB.js → chunk-FMBD7UC4-vZrpjAx4.js} +1 -1
  185. package/web-shell/assets/{chunk-ND2GUHAM-BjX_Iwmr.js → chunk-ND2GUHAM-qxyNOd5t.js} +1 -1
  186. package/web-shell/assets/{chunk-QZHKN3VN-C3Hz_ZQh.js → chunk-QZHKN3VN-BvTJSM_S.js} +1 -1
  187. package/web-shell/assets/classDiagram-4FO5ZUOK-Cvd_xhZI.js +1 -0
  188. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cvd_xhZI.js +1 -0
  189. package/web-shell/assets/{cose-bilkent-S5V4N54A-Ax4UycaT.js → cose-bilkent-S5V4N54A-1tXB4pju.js} +1 -1
  190. package/web-shell/assets/{dagre-BM42HDAG-C6hmPtGt.js → dagre-BM42HDAG-DglBzme8.js} +1 -1
  191. package/web-shell/assets/{diagram-2AECGRRQ-tXZnxjmw.js → diagram-2AECGRRQ-DEJpqsWz.js} +1 -1
  192. package/web-shell/assets/{diagram-5GNKFQAL-99dwIzQG.js → diagram-5GNKFQAL-CsQ1NrMG.js} +1 -1
  193. package/web-shell/assets/{diagram-KO2AKTUF-Bqhn0-2s.js → diagram-KO2AKTUF-Z-3codAi.js} +1 -1
  194. package/web-shell/assets/{diagram-LMA3HP47-DzThVSvo.js → diagram-LMA3HP47-mBuPTA2i.js} +1 -1
  195. package/web-shell/assets/{diagram-OG6HWLK6-DPE8vjln.js → diagram-OG6HWLK6-tcA3K3s9.js} +1 -1
  196. package/web-shell/assets/{erDiagram-TEJ5UH35-KzUKgQCV.js → erDiagram-TEJ5UH35-D9bXFRyZ.js} +1 -1
  197. package/web-shell/assets/{flowDiagram-I6XJVG4X-DBN-DXw5.js → flowDiagram-I6XJVG4X-Ck0Py04s.js} +1 -1
  198. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DuBsP9u8.js → ganttDiagram-6RSMTGT7-rOevCekE.js} +1 -1
  199. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BjWHMyKR.js → gitGraphDiagram-PVQCEYII-CoPQaLj0.js} +1 -1
  200. package/web-shell/assets/index-Cr7MYW6T.css +5 -0
  201. package/web-shell/assets/index-DCHPAUp3.js +730 -0
  202. package/web-shell/assets/{infoDiagram-5YYISTIA-BVux0vP6.js → infoDiagram-5YYISTIA-a77CUKoI.js} +1 -1
  203. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-2qzw7f--.js → ishikawaDiagram-YF4QCWOH-DlLgUAO-.js} +1 -1
  204. package/web-shell/assets/{journeyDiagram-JHISSGLW-Dnl65sxL.js → journeyDiagram-JHISSGLW-BXR5kVAZ.js} +1 -1
  205. package/web-shell/assets/{kanban-definition-UN3LZRKU-BElSQYtY.js → kanban-definition-UN3LZRKU-h5CoHZg7.js} +1 -1
  206. package/web-shell/assets/{linear-BjoycSSY.js → linear-BkaREbyD.js} +1 -1
  207. package/web-shell/assets/{mermaid.core-xe6bvMRz.js → mermaid.core-Bkagz0ng.js} +5 -5
  208. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D8DQgI4U.js → mindmap-definition-RKZ34NQL-D7EMKR_5.js} +1 -1
  209. package/web-shell/assets/{pieDiagram-4H26LBE5-Dwh7Gp7c.js → pieDiagram-4H26LBE5-DAmPOjsL.js} +1 -1
  210. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BXKNBln2.js → quadrantDiagram-W4KKPZXB-e4WFQkQu.js} +1 -1
  211. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BzaC3cIA.js → requirementDiagram-4Y6WPE33-v1zo7OiV.js} +1 -1
  212. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DP2t7eZk.js → sankeyDiagram-5OEKKPKP-Bstm4aW_.js} +1 -1
  213. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-XlFiWEYv.js → sequenceDiagram-3UESZ5HK-DzcZy6xN.js} +1 -1
  214. package/web-shell/assets/{stateDiagram-AJRCARHV-CupgUMJO.js → stateDiagram-AJRCARHV-BEJH6YbH.js} +1 -1
  215. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BopifCBI.js +1 -0
  216. package/web-shell/assets/{timeline-definition-PNZ67QCA-DstuGywa.js → timeline-definition-PNZ67QCA-TI1wH-Pm.js} +1 -1
  217. package/web-shell/assets/{vennDiagram-CIIHVFJN-CnbNp6zu.js → vennDiagram-CIIHVFJN-YaH8VDMS.js} +1 -1
  218. package/web-shell/assets/{wardley-L42UT6IY-DnvoHq6R.js → wardley-L42UT6IY-B80co7OP.js} +1 -1
  219. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cz0xHEWB.js → wardleyDiagram-YWT4CUSO-4fHNDEMl.js} +1 -1
  220. package/web-shell/assets/{xychartDiagram-2RQKCTM6-p36gfo88.js → xychartDiagram-2RQKCTM6-DT3q4Z3J.js} +1 -1
  221. package/web-shell/index.html +2 -2
  222. package/bundled/loop/SKILL.test.ts +0 -119
  223. package/bundled/loop/autonomous-loop.test.ts +0 -59
  224. package/bundled/loop/loop-task-file.test.ts +0 -1064
  225. package/bundled/loop/loop-tick-resolver.test.ts +0 -906
  226. package/chunks/chunk-EJ7BN3EN.js +0 -11396
  227. package/web-shell/assets/channel-B5ynH0q8.js +0 -1
  228. package/web-shell/assets/classDiagram-4FO5ZUOK-CK3ibywp.js +0 -1
  229. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CK3ibywp.js +0 -1
  230. package/web-shell/assets/index-9qfvU0_r.css +0 -5
  231. package/web-shell/assets/index-CWzDaQT5.js +0 -717
  232. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-By3E4QwN.js +0 -1
  233. package/chunks/{chunk-UFC57OYT.js → chunk-VRDMOSQS.js} +54 -54
@@ -0,0 +1,343 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ BaseDeclarativeTool,
5
+ BaseToolInvocation,
6
+ ToolDisplayNames,
7
+ ToolNames
8
+ } from "./chunk-MJKMIQMK.js";
9
+ import "./chunk-AVQDCKNF.js";
10
+ import "./chunk-Z2Z3GUXZ.js";
11
+ import {
12
+ init_esbuild_shims
13
+ } from "./chunk-A4BMJM77.js";
14
+ import {
15
+ __name
16
+ } from "./chunk-J2S4EL5Y.js";
17
+
18
+ // packages/core/src/tools/record-artifact.ts
19
+ init_esbuild_shims();
20
+ import path from "node:path";
21
+ var DESCRIPTION = `Registers a session artifact so clients can show it in an artifacts panel. Use it after creating a useful file, URL, image, report, notebook, or other intermediate result that the user may want to open later.
22
+
23
+ This tool only records metadata. It does not publish, upload, read, write, or verify the referenced resource. Provide exactly one locator: workspacePath, managedId, or url. Use the Artifact tool, not record_artifact, for published interactive HTML artifacts.`;
24
+ var RecordArtifactInvocation = class extends BaseToolInvocation {
25
+ static {
26
+ __name(this, "RecordArtifactInvocation");
27
+ }
28
+ getDescription() {
29
+ return `Recording artifact ${this.params.title}`;
30
+ }
31
+ execute(_signal) {
32
+ const artifact = {
33
+ title: this.params.title.trim(),
34
+ kind: this.params.kind,
35
+ storage: this.params.storage ?? inferStorage(this.params),
36
+ description: trimOptional(this.params.description),
37
+ workspacePath: trimOptional(this.params.workspacePath),
38
+ managedId: trimOptional(this.params.managedId),
39
+ url: trimOptional(this.params.url),
40
+ mimeType: trimOptional(this.params.mimeType),
41
+ sizeBytes: this.params.sizeBytes,
42
+ metadata: this.params.metadata
43
+ };
44
+ return Promise.resolve({
45
+ llmContent: `Recorded artifact "${artifact.title}".`,
46
+ returnDisplay: `Recorded artifact **${artifact.title}**.`,
47
+ artifacts: [artifact]
48
+ });
49
+ }
50
+ };
51
+ var RecordArtifactTool = class _RecordArtifactTool extends BaseDeclarativeTool {
52
+ static {
53
+ __name(this, "RecordArtifactTool");
54
+ }
55
+ static Name = ToolNames.RECORD_ARTIFACT;
56
+ constructor() {
57
+ super(
58
+ _RecordArtifactTool.Name,
59
+ ToolDisplayNames.RECORD_ARTIFACT,
60
+ DESCRIPTION,
61
+ "other" /* Other */,
62
+ {
63
+ type: "object",
64
+ properties: {
65
+ title: {
66
+ type: "string",
67
+ description: "Concise title shown in the client artifact list."
68
+ },
69
+ kind: {
70
+ type: "string",
71
+ enum: [
72
+ "file",
73
+ "link",
74
+ "html",
75
+ "image",
76
+ "video",
77
+ "audio",
78
+ "pdf",
79
+ "notebook",
80
+ "other"
81
+ ],
82
+ description: "Best-effort artifact type for client rendering."
83
+ },
84
+ storage: {
85
+ type: "string",
86
+ enum: ["workspace", "external_url", "managed"],
87
+ description: "Storage class. Omit it to infer from the provided locator."
88
+ },
89
+ description: {
90
+ type: "string",
91
+ description: "Optional short description for the user."
92
+ },
93
+ workspacePath: {
94
+ type: "string",
95
+ description: "Workspace-relative path for a file produced in the current workspace."
96
+ },
97
+ managedId: {
98
+ type: "string",
99
+ description: "Opaque identifier for a resource managed by an extension or tool."
100
+ },
101
+ url: {
102
+ type: "string",
103
+ description: "HTTP or HTTPS URL that the user can open for details."
104
+ },
105
+ mimeType: {
106
+ type: "string",
107
+ description: "Optional MIME type."
108
+ },
109
+ sizeBytes: {
110
+ type: "integer",
111
+ minimum: 0,
112
+ description: "Optional size in bytes."
113
+ },
114
+ metadata: {
115
+ type: "object",
116
+ additionalProperties: {
117
+ anyOf: [
118
+ { type: "string" },
119
+ { type: "number" },
120
+ { type: "boolean" },
121
+ { type: "null" }
122
+ ]
123
+ },
124
+ description: "Small primitive metadata bag for client-specific display hints."
125
+ }
126
+ },
127
+ required: ["title"]
128
+ },
129
+ true,
130
+ false,
131
+ true,
132
+ false,
133
+ "artifact url link file image report notebook dashboard"
134
+ );
135
+ }
136
+ validateToolParamValues(params) {
137
+ params.title = (params.title ?? "").trim();
138
+ const titleError = validateString(params.title, "title", 200, true);
139
+ if (titleError) {
140
+ return titleError;
141
+ }
142
+ const descriptionError = validateString(
143
+ params.description,
144
+ "description",
145
+ 1e3,
146
+ false
147
+ );
148
+ if (descriptionError) {
149
+ return descriptionError;
150
+ }
151
+ const mimeTypeError = validateString(
152
+ params.mimeType,
153
+ "mimeType",
154
+ 120,
155
+ false
156
+ );
157
+ if (mimeTypeError) {
158
+ return mimeTypeError;
159
+ }
160
+ if (params.kind && !isArtifactKind(params.kind)) {
161
+ return '"kind" must be a supported artifact kind';
162
+ }
163
+ if (params.storage && params.storage !== "workspace" && params.storage !== "external_url" && params.storage !== "managed") {
164
+ return '"storage" must be workspace, external_url, or managed';
165
+ }
166
+ const locators = [
167
+ trimOptional(params.workspacePath),
168
+ trimOptional(params.managedId),
169
+ trimOptional(params.url)
170
+ ].filter(Boolean);
171
+ if (locators.length !== 1) {
172
+ return 'Provide exactly one of "workspacePath", "managedId", or "url"';
173
+ }
174
+ const inferredStorage = inferStorage(params);
175
+ if (params.storage && params.storage !== inferredStorage) {
176
+ return `"storage" must be "${inferredStorage}" for the provided locator`;
177
+ }
178
+ if (params.workspacePath) {
179
+ const workspacePathError = validateWorkspacePath(params.workspacePath);
180
+ if (workspacePathError) {
181
+ return workspacePathError;
182
+ }
183
+ }
184
+ if (params.managedId) {
185
+ const managedIdError = validateManagedId(params.managedId);
186
+ if (managedIdError) {
187
+ return managedIdError;
188
+ }
189
+ }
190
+ if (params.url) {
191
+ try {
192
+ const parsed = new URL(params.url);
193
+ if (parsed.username || parsed.password) {
194
+ return '"url" must not include credentials';
195
+ }
196
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
197
+ return '"url" must use http or https';
198
+ }
199
+ } catch {
200
+ return '"url" must be a valid URL';
201
+ }
202
+ }
203
+ if (params.sizeBytes !== void 0 && (!Number.isSafeInteger(params.sizeBytes) || params.sizeBytes < 0)) {
204
+ return '"sizeBytes" must be a non-negative safe integer';
205
+ }
206
+ const metadataError = validateMetadata(params.metadata);
207
+ if (metadataError) {
208
+ return metadataError;
209
+ }
210
+ return null;
211
+ }
212
+ createInvocation(params) {
213
+ return new RecordArtifactInvocation(params);
214
+ }
215
+ };
216
+ function inferStorage(params) {
217
+ if (trimOptional(params.workspacePath)) {
218
+ return "workspace";
219
+ }
220
+ if (trimOptional(params.managedId)) {
221
+ return "managed";
222
+ }
223
+ return "external_url";
224
+ }
225
+ __name(inferStorage, "inferStorage");
226
+ function trimOptional(value) {
227
+ const trimmed = value?.trim();
228
+ return trimmed ? trimmed : void 0;
229
+ }
230
+ __name(trimOptional, "trimOptional");
231
+ function validateString(value, field, maxLength, required) {
232
+ const trimmed = value?.trim();
233
+ if (!trimmed) {
234
+ return required ? `Missing or empty "${field}"` : null;
235
+ }
236
+ if (trimmed.length > maxLength) {
237
+ return `"${field}" exceeds ${maxLength} characters`;
238
+ }
239
+ if (hasControlCharacter(trimmed, field === "description")) {
240
+ return `"${field}" contains control characters`;
241
+ }
242
+ if (isDisplayField(field) && hasUnsafeDisplayPayload(trimmed)) {
243
+ return `"${field}" contains unsafe markup`;
244
+ }
245
+ return null;
246
+ }
247
+ __name(validateString, "validateString");
248
+ function validateManagedId(value) {
249
+ const trimmed = value.trim();
250
+ const stringError = validateString(trimmed, "managedId", 200, true);
251
+ if (stringError) {
252
+ return stringError;
253
+ }
254
+ if (trimmed.includes("/") || trimmed.includes("\\") || trimmed.includes("..") || path.isAbsolute(trimmed) || path.win32.isAbsolute(trimmed)) {
255
+ return '"managedId" must be an opaque managed resource id';
256
+ }
257
+ return null;
258
+ }
259
+ __name(validateManagedId, "validateManagedId");
260
+ function isDisplayField(field) {
261
+ return field === "title" || field === "description" || field === "mimeType" || field === "workspacePath" || field === "managedId";
262
+ }
263
+ __name(isDisplayField, "isDisplayField");
264
+ function hasControlCharacter(value, allowLineWhitespace = false) {
265
+ for (let i = 0; i < value.length; i++) {
266
+ const code = value.charCodeAt(i);
267
+ if (allowLineWhitespace && (code === 9 || code === 10 || code === 13)) {
268
+ continue;
269
+ }
270
+ if (code <= 31 || code === 127 || code >= 8203 && code <= 8207 || code === 8232 || code === 8233 || code >= 8234 && code <= 8238 || code >= 8294 && code <= 8297 || code === 65279) {
271
+ return true;
272
+ }
273
+ }
274
+ return false;
275
+ }
276
+ __name(hasControlCharacter, "hasControlCharacter");
277
+ function hasUnsafeDisplayPayload(value) {
278
+ return /<\s*\/?[a-z!]|&(?:#[0-9]+|#x[0-9a-f]+|[a-z][a-z0-9]+);|javascript\s*:|data\s*:\s*(?:text\/(?:html|javascript)|application\/javascript|image\/svg\+xml)/i.test(
279
+ value
280
+ ) || /(?:^|[\s"'`<])on[a-z][a-z0-9-]*\s*=/i.test(value);
281
+ }
282
+ __name(hasUnsafeDisplayPayload, "hasUnsafeDisplayPayload");
283
+ function validateWorkspacePath(value) {
284
+ const trimmed = value.trim();
285
+ const stringError = validateString(trimmed, "workspacePath", 500, true);
286
+ if (stringError) {
287
+ return stringError;
288
+ }
289
+ if (path.isAbsolute(trimmed)) {
290
+ return '"workspacePath" must be relative to the workspace';
291
+ }
292
+ const normalized = path.normalize(trimmed);
293
+ if (normalized === ".." || normalized.startsWith(`..${path.sep}`) || path.isAbsolute(normalized)) {
294
+ return '"workspacePath" must stay inside the workspace';
295
+ }
296
+ return null;
297
+ }
298
+ __name(validateWorkspacePath, "validateWorkspacePath");
299
+ function validateMetadata(metadata) {
300
+ if (metadata === void 0) {
301
+ return null;
302
+ }
303
+ if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {
304
+ return '"metadata" must be an object';
305
+ }
306
+ for (const [key, value] of Object.entries(metadata)) {
307
+ if (!key) {
308
+ return '"metadata" keys must not be empty';
309
+ }
310
+ if (key.length > 120) {
311
+ return '"metadata" keys must be 120 characters or fewer';
312
+ }
313
+ if (hasControlCharacter(key) || hasUnsafeDisplayPayload(key)) {
314
+ return '"metadata" keys contain unsafe content';
315
+ }
316
+ if (value !== null && typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean") {
317
+ return '"metadata" values must be primitive';
318
+ }
319
+ if (typeof value === "number" && !Number.isFinite(value)) {
320
+ return '"metadata" numbers must be finite';
321
+ }
322
+ if (typeof value === "string" && (hasControlCharacter(value) || hasUnsafeDisplayPayload(value))) {
323
+ return '"metadata" string values contain unsafe content';
324
+ }
325
+ }
326
+ if (Buffer.byteLength(JSON.stringify(metadata), "utf8") > 4096) {
327
+ return '"metadata" must be 4096 bytes or fewer';
328
+ }
329
+ return null;
330
+ }
331
+ __name(validateMetadata, "validateMetadata");
332
+ function isArtifactKind(kind) {
333
+ return kind === "file" || kind === "link" || kind === "html" || kind === "image" || kind === "video" || kind === "audio" || kind === "pdf" || kind === "notebook" || kind === "other";
334
+ }
335
+ __name(isArtifactKind, "isArtifactKind");
336
+ export {
337
+ RecordArtifactTool
338
+ };
339
+ /**
340
+ * @license
341
+ * Copyright 2025 Google LLC
342
+ * SPDX-License-Identifier: Apache-2.0
343
+ */
@@ -3,42 +3,42 @@
3
3
  import {
4
4
  RipGrepTool,
5
5
  _resetRipGrepCachesForTest
6
- } from "./chunk-6QTCOQX7.js";
6
+ } from "./chunk-AGZF43UV.js";
7
7
  import "./chunk-5P5XGNYH.js";
8
- import "./chunk-K5PGHDBN.js";
9
8
  import "./chunk-SKAZWEV5.js";
9
+ import "./chunk-K5PGHDBN.js";
10
+ import "./chunk-CLQPBI4H.js";
10
11
  import "./chunk-QOMAHFYI.js";
11
12
  import "./chunk-G7OQ3RFJ.js";
12
13
  import "./chunk-LKWAVAB5.js";
13
- import "./chunk-L7OJ3ZO3.js";
14
- import "./chunk-R6RI2HIC.js";
14
+ import "./chunk-5ES5YPED.js";
15
15
  import "./chunk-2MPVVENX.js";
16
16
  import "./chunk-ZTQ26VBE.js";
17
- import "./chunk-SJBIFVD2.js";
17
+ import "./chunk-DMSNJDWG.js";
18
18
  import "./chunk-MLZQVCF3.js";
19
19
  import "./chunk-LQ7TMOCE.js";
20
20
  import "./chunk-E5A7LHNN.js";
21
- import "./chunk-BPFJQGY7.js";
21
+ import "./chunk-LM3YCCZJ.js";
22
22
  import "./chunk-GO6LNQXT.js";
23
23
  import "./chunk-B236XPGF.js";
24
- import "./chunk-YXK4GPYO.js";
24
+ import "./chunk-NVFJSIAX.js";
25
25
  import "./chunk-TOAUDIS7.js";
26
26
  import "./chunk-NPQWQYU6.js";
27
- import "./chunk-CHY5C5T4.js";
27
+ import "./chunk-JN2VJ33O.js";
28
28
  import "./chunk-E6US47KI.js";
29
29
  import "./chunk-UWCTAVOD.js";
30
30
  import "./chunk-OFEVLU4C.js";
31
31
  import "./chunk-OMX7CUOE.js";
32
32
  import "./chunk-MOUXUCXQ.js";
33
33
  import "./chunk-BZHLWC6T.js";
34
- import "./chunk-DG573EOO.js";
35
- import "./chunk-MTNTVOJR.js";
34
+ import "./chunk-RZORUN6X.js";
35
+ import "./chunk-MJKMIQMK.js";
36
36
  import "./chunk-TENOUWY2.js";
37
37
  import "./chunk-GLPV75ES.js";
38
38
  import "./chunk-22IFUCVR.js";
39
39
  import "./chunk-T42ACHFI.js";
40
40
  import "./chunk-SIUQ3YYX.js";
41
- import "./chunk-YTFBURQD.js";
41
+ import "./chunk-KYTQOCDE.js";
42
42
  import "./chunk-YPCPZSZB.js";
43
43
  import "./chunk-IRJWHZWU.js";
44
44
  import "./chunk-SYCJMSIJ.js";
@@ -3,6 +3,9 @@
3
3
  import {
4
4
  findCliEntryPath
5
5
  } from "./chunk-AHNXYU4O.js";
6
+ import {
7
+ RUNTIME_STARTUP_CANCELLED_MESSAGE
8
+ } from "./chunk-GHOTR7HL.js";
6
9
  import {
7
10
  CAPABILITIES_SCHEMA_VERSION,
8
11
  ClientMcpSenderRegistry,
@@ -23,36 +26,33 @@ import {
23
26
  positiveFiniteOrNull,
24
27
  require_express,
25
28
  resolveWebShellDir
26
- } from "./chunk-YCU7QV7Q.js";
29
+ } from "./chunk-N4YJQTRL.js";
27
30
  import {
28
31
  isLoopbackBind
29
32
  } from "./chunk-RNBYOUGV.js";
30
33
  import "./chunk-3HX5LZ6R.js";
31
34
  import "./chunk-7RYW5LQV.js";
32
35
  import {
33
- RUNTIME_STARTUP_CANCELLED_MESSAGE
34
- } from "./chunk-GHOTR7HL.js";
35
- import {
36
- getCliVersion
37
- } from "./chunk-RSBQS6M4.js";
38
- import "./chunk-EWALXUAD.js";
39
- import {
40
- canonicalizeWorkspace
41
- } from "./chunk-SEZC2725.js";
36
+ loadServeFastPathSettings,
37
+ preResolveServeFastPathHomeEnvOverrides
38
+ } from "./chunk-DNV4FSN5.js";
42
39
  import {
43
40
  QWEN_SERVER_TOKEN_ENV
44
41
  } from "./chunk-S6RLAIUR.js";
45
42
  import {
46
43
  channelSelectionNames
47
44
  } from "./chunk-MX2YXRER.js";
48
- import {
49
- loadServeFastPathSettings,
50
- preResolveServeFastPathHomeEnvOverrides
51
- } from "./chunk-KKQWC6WS.js";
52
45
  import {
53
46
  getGlobalQwenDirLite,
54
47
  resolveConfigPathLite
55
- } from "./chunk-PPFWEV7G.js";
48
+ } from "./chunk-4RQIB5UZ.js";
49
+ import "./chunk-EWALXUAD.js";
50
+ import {
51
+ canonicalizeWorkspace
52
+ } from "./chunk-SEZC2725.js";
53
+ import {
54
+ getCliVersion
55
+ } from "./chunk-SL2P3JUA.js";
56
56
  import {
57
57
  writeStderrLine,
58
58
  writeStdoutLine
@@ -531,8 +531,8 @@ __name(withSettingsLock, "withSettingsLock");
531
531
  var channelWorkerRuntimePromise;
532
532
  async function loadChannelWorkerRuntime() {
533
533
  channelWorkerRuntimePromise ??= Promise.all([
534
- import("./channel-worker-supervisor-EVPAYNZ5.js"),
535
- import("./pidfile-FNZM2DDH.js")
534
+ import("./channel-worker-supervisor-JUYQ5Z4R.js"),
535
+ import("./pidfile-HFXSHR64.js")
536
536
  ]).then(([supervisor, pidfile]) => ({
537
537
  createChannelWorkerSupervisor: supervisor.createChannelWorkerSupervisor,
538
538
  channelServicePidfile: pidfile
@@ -603,7 +603,7 @@ function shouldPreheatBridge(deps) {
603
603
  __name(shouldPreheatBridge, "shouldPreheatBridge");
604
604
  var coreRuntimePromise;
605
605
  function loadCoreRuntime() {
606
- coreRuntimePromise ??= import("./src-T5A7P7FS.js");
606
+ coreRuntimePromise ??= import("./src-HITDGVRM.js");
607
607
  return coreRuntimePromise;
608
608
  }
609
609
  __name(loadCoreRuntime, "loadCoreRuntime");
@@ -633,9 +633,9 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
633
633
  var settingsRuntimePromise;
634
634
  function loadSettingsRuntimeModules() {
635
635
  settingsRuntimePromise ??= Promise.all([
636
- import("./settings-3EEQI4MN.js"),
637
- import("./loadedSettingsAdapter-C63OUYZC.js"),
638
- import("./trustedFolders-7HQY6T6X.js")
636
+ import("./settings-LC4CCWQQ.js"),
637
+ import("./loadedSettingsAdapter-XV74KOSR.js"),
638
+ import("./trustedFolders-JD4QX6UJ.js")
639
639
  ]).then(([settings, loadedSettingsAdapter, trustedFolders]) => ({
640
640
  settings,
641
641
  loadedSettingsAdapter,
@@ -655,14 +655,14 @@ async function loadServeRuntimeModules() {
655
655
  workspaceProvidersStatusModule,
656
656
  workspaceSkillsStatusModule
657
657
  ] = await Promise.all([
658
- import("./server-QSQ45QFR.js"),
659
- import("./bridge-DHZHQ4UV.js"),
660
- import("./spawnChannel-3CBN3ZLK.js"),
661
- import("./workspace-service-YOBYVDXH.js"),
658
+ import("./server-WKDQA6XR.js"),
659
+ import("./bridge-DF3IJQ5V.js"),
660
+ import("./spawnChannel-B6JJPBPV.js"),
661
+ import("./workspace-service-GX3GGZLU.js"),
662
662
  import("./types-QX5C3CHJ.js"),
663
- import("./daemon-status-provider-P72STMLB.js"),
664
- import("./workspace-providers-status-LJT5AQDS.js"),
665
- import("./workspace-skills-status-ONEPXJV6.js")
663
+ import("./daemon-status-provider-2EWTHT7Y.js"),
664
+ import("./workspace-providers-status-XGW5OZTD.js"),
665
+ import("./workspace-skills-status-LFK5WV2V.js")
666
666
  ]);
667
667
  return {
668
668
  createServeApp: serverModule.createServeApp,
@@ -1445,6 +1445,7 @@ async function runQwenServe(optsIn, deps = {}) {
1445
1445
  let runtimeApp;
1446
1446
  let runtimeAppForCleanup;
1447
1447
  let bridgeRef = deps.bridge;
1448
+ let daemonEventLoopMonitor;
1448
1449
  let runtimeStartupError;
1449
1450
  let runtimeStarting;
1450
1451
  let markRuntimeReady;
@@ -1459,6 +1460,10 @@ async function runQwenServe(optsIn, deps = {}) {
1459
1460
  });
1460
1461
  void runtimeReady.catch(() => {
1461
1462
  });
1463
+ const disposeDaemonEventLoopMonitor = /* @__PURE__ */ __name(() => {
1464
+ daemonEventLoopMonitor?.dispose();
1465
+ daemonEventLoopMonitor = void 0;
1466
+ }, "disposeDaemonEventLoopMonitor");
1462
1467
  let channelWorker = createDisabledChannelWorkerSupervisor();
1463
1468
  const getChannelWorkerSnapshot = /* @__PURE__ */ __name(() => channelWorker.snapshot(), "getChannelWorkerSnapshot");
1464
1469
  const writeChannelWorkerPidfile = /* @__PURE__ */ __name((snapshot = channelWorker.snapshot(), options = {}) => {
@@ -1532,6 +1537,27 @@ async function runQwenServe(optsIn, deps = {}) {
1532
1537
  )
1533
1538
  );
1534
1539
  core.initializeDaemonMetrics();
1540
+ daemonEventLoopMonitor?.dispose();
1541
+ daemonEventLoopMonitor = core.startEventLoopLagMonitor({
1542
+ onNewMaxStall: /* @__PURE__ */ __name((maxMs) => {
1543
+ daemonLog.warn("daemon event loop stall detected", { maxMs });
1544
+ }, "onNewMaxStall")
1545
+ });
1546
+ const currentDaemonEventLoopMonitor = daemonEventLoopMonitor;
1547
+ core.registerDaemonEventLoopLagGauge(
1548
+ () => currentDaemonEventLoopMonitor.snapshot()
1549
+ );
1550
+ const pipeStats = {
1551
+ inbound: { count: 0, totalBytes: 0, maxBytes: 0 },
1552
+ outbound: { count: 0, totalBytes: 0, maxBytes: 0 }
1553
+ };
1554
+ const recordPipeMessage = /* @__PURE__ */ __name((direction, bytes) => {
1555
+ const stats = pipeStats[direction];
1556
+ stats.count += 1;
1557
+ stats.totalBytes += bytes;
1558
+ stats.maxBytes = Math.max(stats.maxBytes, bytes);
1559
+ core.recordDaemonPipeMessage(direction, bytes);
1560
+ }, "recordPipeMessage");
1535
1561
  const daemonTelemetry = core.createDaemonBridgeTelemetry();
1536
1562
  daemonTelemetry.metrics = {
1537
1563
  sessionLifecycle(action) {
@@ -1577,6 +1603,10 @@ async function runQwenServe(optsIn, deps = {}) {
1577
1603
  });
1578
1604
  const channelFactory = runtime.createSpawnChannelFactory({
1579
1605
  onDiagnosticLine: diagnosticSink,
1606
+ pipeHooks: {
1607
+ onMessageSent: /* @__PURE__ */ __name((bytes) => recordPipeMessage("outbound", bytes), "onMessageSent"),
1608
+ onMessageReceived: /* @__PURE__ */ __name((bytes) => recordPipeMessage("inbound", bytes), "onMessageReceived")
1609
+ },
1580
1610
  ...opts.experimentalLsp === true ? { extraArgs: ["--experimental-lsp"] } : {}
1581
1611
  });
1582
1612
  const statusProvider = runtime.createDaemonStatusProvider();
@@ -1697,6 +1727,13 @@ async function runQwenServe(optsIn, deps = {}) {
1697
1727
  fsFactory,
1698
1728
  daemonLog,
1699
1729
  getChannelWorkerSnapshot,
1730
+ getPerfSnapshot: /* @__PURE__ */ __name(() => ({
1731
+ eventLoop: currentDaemonEventLoopMonitor.snapshot(),
1732
+ pipe: {
1733
+ inbound: { ...pipeStats.inbound },
1734
+ outbound: { ...pipeStats.outbound }
1735
+ }
1736
+ }), "getPerfSnapshot"),
1700
1737
  workspace: workspaceService,
1701
1738
  // Reverse tool channel (#5626): the SAME registry wired into `bridge` above,
1702
1739
  // so the WS provider and the child-answering bridge share one sender map.
@@ -1951,6 +1988,7 @@ async function runQwenServe(optsIn, deps = {}) {
1951
1988
  writeStderrLine(`qwen serve: runtime startup failed: ${message}`);
1952
1989
  daemonLog.error("runtime startup failed", error);
1953
1990
  await stopChannelWorkerAfterFailedStartup();
1991
+ disposeDaemonEventLoopMonitor();
1954
1992
  removeCurrentServePidfile();
1955
1993
  await shutdownBridgeAfterFailedStartup(bridgeForCleanup ?? bridgeRef);
1956
1994
  markRuntimeFailed(error);
@@ -2163,6 +2201,7 @@ async function runQwenServe(optsIn, deps = {}) {
2163
2201
  rl.setDraining(true);
2164
2202
  rl.dispose();
2165
2203
  }
2204
+ disposeDaemonEventLoopMonitor();
2166
2205
  await channelWorker.stop().catch((err) => {
2167
2206
  daemonLog.error(
2168
2207
  "channel worker stop error",
@@ -6,42 +6,42 @@ import {
6
6
  import {
7
7
  FILE_HISTORY_DIR,
8
8
  getSubagentsRootDir
9
- } from "./chunk-6QTCOQX7.js";
9
+ } from "./chunk-AGZF43UV.js";
10
10
  import "./chunk-5P5XGNYH.js";
11
- import "./chunk-K5PGHDBN.js";
12
11
  import "./chunk-SKAZWEV5.js";
12
+ import "./chunk-K5PGHDBN.js";
13
+ import "./chunk-CLQPBI4H.js";
13
14
  import "./chunk-QOMAHFYI.js";
14
15
  import "./chunk-G7OQ3RFJ.js";
15
16
  import "./chunk-LKWAVAB5.js";
16
- import "./chunk-L7OJ3ZO3.js";
17
- import "./chunk-R6RI2HIC.js";
17
+ import "./chunk-5ES5YPED.js";
18
18
  import "./chunk-2MPVVENX.js";
19
19
  import "./chunk-ZTQ26VBE.js";
20
- import "./chunk-SJBIFVD2.js";
20
+ import "./chunk-DMSNJDWG.js";
21
21
  import "./chunk-MLZQVCF3.js";
22
22
  import "./chunk-LQ7TMOCE.js";
23
23
  import "./chunk-E5A7LHNN.js";
24
- import "./chunk-BPFJQGY7.js";
24
+ import "./chunk-LM3YCCZJ.js";
25
25
  import "./chunk-GO6LNQXT.js";
26
26
  import "./chunk-B236XPGF.js";
27
- import "./chunk-YXK4GPYO.js";
27
+ import "./chunk-NVFJSIAX.js";
28
28
  import "./chunk-TOAUDIS7.js";
29
29
  import "./chunk-NPQWQYU6.js";
30
- import "./chunk-CHY5C5T4.js";
30
+ import "./chunk-JN2VJ33O.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
35
  import "./chunk-MOUXUCXQ.js";
36
36
  import "./chunk-BZHLWC6T.js";
37
- import "./chunk-DG573EOO.js";
38
- import "./chunk-MTNTVOJR.js";
37
+ import "./chunk-RZORUN6X.js";
38
+ import "./chunk-MJKMIQMK.js";
39
39
  import "./chunk-TENOUWY2.js";
40
40
  import "./chunk-GLPV75ES.js";
41
41
  import "./chunk-22IFUCVR.js";
42
42
  import "./chunk-T42ACHFI.js";
43
43
  import "./chunk-SIUQ3YYX.js";
44
- import "./chunk-YTFBURQD.js";
44
+ import "./chunk-KYTQOCDE.js";
45
45
  import "./chunk-YPCPZSZB.js";
46
46
  import "./chunk-IRJWHZWU.js";
47
47
  import "./chunk-SYCJMSIJ.js";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getPlanRequiredTeammatePreApprovalMessage,
8
8
  isPlanRequiredTeammateAwaitingApproval
9
- } from "./chunk-BPFJQGY7.js";
9
+ } from "./chunk-LM3YCCZJ.js";
10
10
  import {
11
11
  getAgentName,
12
12
  isTeammate
@@ -16,7 +16,7 @@ import {
16
16
  BaseToolInvocation,
17
17
  ToolDisplayNames,
18
18
  ToolNames
19
- } from "./chunk-MTNTVOJR.js";
19
+ } from "./chunk-MJKMIQMK.js";
20
20
  import "./chunk-AVQDCKNF.js";
21
21
  import "./chunk-Z2Z3GUXZ.js";
22
22
  import {