@qwen-code/qwen-code 0.19.4 → 0.19.5

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 (224) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +22 -6
  2. package/bundled/qc-helper/docs/features/commands.md +41 -34
  3. package/bundled/qc-helper/docs/features/headless.md +19 -18
  4. package/bundled/qc-helper/docs/qwen-serve.md +34 -0
  5. package/bundled/qc-helper/docs/support/troubleshooting.md +5 -0
  6. package/chunks/{MaxSizedBox-ERTNFI22.js → MaxSizedBox-5JV77KRA.js} +11 -10
  7. package/chunks/{StandaloneSessionPicker-Y5NGRLRY.js → StandaloneSessionPicker-MGUGB6PH.js} +21 -20
  8. package/chunks/{acpAgent-UMN6OYTR.js → acpAgent-4F36XM3X.js} +75 -73
  9. package/chunks/{agent-56DZU4ZU.js → agent-IWBUZI6A.js} +8 -7
  10. package/chunks/{agent-headless-SR7N2IJG.js → agent-headless-JUTICAYO.js} +8 -7
  11. package/chunks/{anthropicContentGenerator-5OZFO6WQ.js → anthropicContentGenerator-WL3LJOUB.js} +99 -23
  12. package/chunks/{artifact-tool-JVZMHA4B.js → artifact-tool-W76WC2JX.js} +1 -1
  13. package/chunks/{askUserQuestion-CMJZ2F3D.js → askUserQuestion-J3P6TH3V.js} +1 -1
  14. package/chunks/{bridge-AUHNFOUS.js → bridge-DHZHQ4UV.js} +14 -12
  15. package/chunks/{ca-RYOETBUW.js → ca-HCMB2I54.js} +1 -0
  16. package/chunks/channel-worker-supervisor-EVPAYNZ5.js +665 -0
  17. package/chunks/{chunk-HRZB5CSC.js → chunk-2CAII5HD.js} +1 -1
  18. package/chunks/{chunk-FYKX6XOT.js → chunk-2YH27UNF.js} +1 -1
  19. package/chunks/chunk-2Z43HUXT.js +99 -0
  20. package/chunks/{chunk-ZXCVPMIK.js → chunk-4MCC4XHH.js} +167 -54
  21. package/chunks/{chunk-J3F7X3LW.js → chunk-5B2WNM6V.js} +1 -1
  22. package/chunks/{chunk-VKGG724L.js → chunk-6KPZJJ6U.js} +9 -8
  23. package/chunks/{chunk-BFG6OZN7.js → chunk-6QTCOQX7.js} +3470 -2654
  24. package/chunks/{chunk-QAFQLTXG.js → chunk-6QVQZAW6.js} +1 -1
  25. package/chunks/{chunk-HI55Z6PR.js → chunk-7DMQRPC7.js} +401 -58
  26. package/chunks/{chunk-MKHC4BYZ.js → chunk-BC4R5C5R.js} +20 -4
  27. package/chunks/chunk-BPFJQGY7.js +193 -0
  28. package/chunks/{chunk-FNLXLI4I.js → chunk-CBJE2PLG.js} +2 -2
  29. package/chunks/{chunk-HJDF3ZVU.js → chunk-CHY5C5T4.js} +6 -6
  30. package/chunks/{chunk-UT5JU5DJ.js → chunk-CSPSJU5R.js} +40 -13
  31. package/chunks/chunk-CXBG27SF.js +35 -0
  32. package/chunks/{chunk-UQFP2FEF.js → chunk-DG573EOO.js} +1 -1
  33. package/chunks/{chunk-UQYOMM6J.js → chunk-DM4E337C.js} +10 -10
  34. package/chunks/{chunk-CS5XYDBO.js → chunk-DRS2HTNT.js} +5 -5
  35. package/chunks/{chunk-MVZXZWGT.js → chunk-EJ7BN3EN.js} +125 -52
  36. package/chunks/{chunk-YBDZ63KI.js → chunk-EROWZQN7.js} +8 -4
  37. package/chunks/{chunk-CUGEBAKG.js → chunk-G4M7FPNY.js} +1 -1
  38. package/chunks/{chunk-ND25GXEU.js → chunk-HISPEX42.js} +11 -3
  39. package/chunks/{chunk-TTFNVEO5.js → chunk-IMAMNLY6.js} +3 -3
  40. package/chunks/{chunk-7VPC7D7O.js → chunk-J3ERRYYI.js} +2 -2
  41. package/chunks/{chunk-OAFUMTWW.js → chunk-JJ6B3ZD3.js} +2 -2
  42. package/chunks/{chunk-W2ZOAX7F.js → chunk-JKGCBO3O.js} +3 -3
  43. package/chunks/{chunk-BQNJBEUA.js → chunk-K4I4STSL.js} +16 -2
  44. package/chunks/{chunk-MEQWZGK5.js → chunk-L7OJ3ZO3.js} +1 -1
  45. package/chunks/{chunk-GICCHL2Q.js → chunk-LHMZCIKL.js} +1 -1
  46. package/chunks/{chunk-XCUFHOAD.js → chunk-M5ITDKSM.js} +1 -1
  47. package/chunks/{chunk-7KPI4LAI.js → chunk-MDBNFHIO.js} +3 -3
  48. package/chunks/{chunk-BNJLLAQ7.js → chunk-MNOXKSM2.js} +1 -1
  49. package/chunks/{chunk-4VZH35PN.js → chunk-MTNTVOJR.js} +2 -0
  50. package/chunks/{chunk-CG7SVARK.js → chunk-NDY7OENU.js} +2 -2
  51. package/chunks/{chunk-DQ74W65K.js → chunk-NNEJEBCF.js} +49 -22
  52. package/chunks/{chunk-L7VH7HQA.js → chunk-NSSVORTQ.js} +29 -4
  53. package/chunks/{chunk-6CIIP6OE.js → chunk-OQHLUA2Y.js} +3 -3
  54. package/chunks/{chunk-6TLY5W3B.js → chunk-QHYITL6P.js} +127 -23
  55. package/chunks/{chunk-73H73ASU.js → chunk-R3UWLLRQ.js} +1 -1
  56. package/chunks/{chunk-UANCYOOQ.js → chunk-R6RI2HIC.js} +1 -1
  57. package/chunks/{chunk-PIYV6COW.js → chunk-RNGAT2Y2.js} +1 -1
  58. package/chunks/{chunk-W6X4FGWX.js → chunk-RSBQS6M4.js} +1 -1
  59. package/chunks/{chunk-EDAGQADF.js → chunk-S6RLAIUR.js} +2 -0
  60. package/chunks/{chunk-C2IHHGBZ.js → chunk-SBMHB6N5.js} +12 -12
  61. package/chunks/chunk-SIUQ3YYX.js +78 -0
  62. package/chunks/{chunk-MNDTD5E5.js → chunk-SJVPSHXU.js} +4 -4
  63. package/chunks/chunk-TN6RT6EJ.js +86 -0
  64. package/chunks/{chunk-75X2VLSH.js → chunk-UJT42DB6.js} +26 -5
  65. package/chunks/{chunk-QMIND2AS.js → chunk-UY2TCIZS.js} +15 -1
  66. package/chunks/{chunk-6AQR7732.js → chunk-WALEWZ44.js} +1 -1
  67. package/chunks/{chunk-SFN4TEHY.js → chunk-WZ724G6K.js} +4 -4
  68. package/chunks/{chunk-2X2JUE47.js → chunk-XKZXGIRM.js} +2 -2
  69. package/chunks/{chunk-Q7VHIRDD.js → chunk-Y4UQT3PM.js} +1 -1
  70. package/chunks/{chunk-B7KGXIPZ.js → chunk-YCU7QV7Q.js} +11 -4
  71. package/chunks/{chunk-OJCECIJA.js → chunk-YHTNWGRR.js} +5 -4
  72. package/chunks/{chunk-ZJP5T7IA.js → chunk-Z7XNVNPM.js} +1 -1
  73. package/chunks/{chunk-KVPFPC4J.js → chunk-ZISMVA6U.js} +14 -14
  74. package/chunks/{computer-use-VWN5HH6A.js → computer-use-ON3JQUHW.js} +8 -7
  75. package/chunks/{contextCommand-DFFG5KDJ.js → contextCommand-OGCG7W6N.js} +10 -9
  76. package/chunks/{cron-create-CSSWJ67I.js → cron-create-6YTCOX6P.js} +1 -1
  77. package/chunks/{cron-delete-E56CFQ7A.js → cron-delete-E3NIFSUK.js} +1 -1
  78. package/chunks/{cron-list-BKSINY6Y.js → cron-list-Q64MNQNE.js} +1 -1
  79. package/chunks/{daemon-5T6IHWJV.js → daemon-EEB2RYOL.js} +23 -0
  80. package/chunks/{daemon-status-provider-V5UY7O7J.js → daemon-status-provider-P72STMLB.js} +17 -15
  81. package/chunks/{de-HB5NJXGB.js → de-PLLFDERI.js} +1 -0
  82. package/chunks/{dist-TAVAGZU6.js → dist-AP5V4WYU.js} +54 -14
  83. package/chunks/{dist-XBOVZ3R5.js → dist-IZP2VV4C.js} +156 -57
  84. package/chunks/{dist-B7SSDVWT.js → dist-SNXOUPYS.js} +201 -7
  85. package/chunks/{dist-2HDL5SHQ.js → dist-X4ZDE726.js} +43 -8
  86. package/chunks/{dist-BL3SL665.js → dist-Z57Q4YF5.js} +1 -1
  87. package/chunks/{earlyInputCapture-VVYU4FDO.js → earlyInputCapture-DAFHSGVW.js} +8 -7
  88. package/chunks/{edit-F35PTMBA.js → edit-3QFNCSZH.js} +13 -16
  89. package/chunks/{en-FZREZFPO.js → en-M4EBUBNU.js} +2 -0
  90. package/chunks/{enter-worktree-3DIW7EGJ.js → enter-worktree-62EQQMLD.js} +8 -7
  91. package/chunks/{enterPlanMode-QNXT77KP.js → enterPlanMode-VUQSE4EG.js} +10 -9
  92. package/chunks/{errors-M53YG76R.js → errors-PW75PZXE.js} +10 -9
  93. package/chunks/{exit-worktree-BSDWNWHZ.js → exit-worktree-VVNH7OVY.js} +8 -7
  94. package/chunks/{exitPlanMode-EL7AY327.js → exitPlanMode-RUYRCYZW.js} +106 -11
  95. package/chunks/{fast-path-DUCSMUFW.js → fast-path-TFRJRTTR.js} +5 -3
  96. package/chunks/{fr-XY3NQFCM.js → fr-MBMNQSQ6.js} +1 -0
  97. package/chunks/{gemini-F3IERB37.js → gemini-XW7ZDUVR.js} +50 -47
  98. package/chunks/{geminiContentGenerator-6OULAKFQ.js → geminiContentGenerator-MZDVHVZH.js} +39 -3
  99. package/chunks/{glob-ZMLFTD4T.js → glob-WAY2PUWA.js} +8 -7
  100. package/chunks/{grep-H5X66EI7.js → grep-W6CBKSYC.js} +8 -7
  101. package/chunks/{initializer-LEOT2OLH.js → initializer-HK2XE6P2.js} +12 -11
  102. package/chunks/{ja-J7YAG7SA.js → ja-HFV5QCHR.js} +1 -0
  103. package/chunks/{list-M3DKXML6.js → list-RVLIIKKL.js} +14 -13
  104. package/chunks/{loadedSettingsAdapter-OKMQFGGG.js → loadedSettingsAdapter-C63OUYZC.js} +12 -11
  105. package/chunks/{loop-wakeup-FPBAVVPR.js → loop-wakeup-G2EHBRGR.js} +2 -2
  106. package/chunks/{ls-UGWQXPTY.js → ls-IDHUVSAG.js} +1 -1
  107. package/chunks/{lsp-24WV7NXB.js → lsp-FSRYXGFT.js} +1 -1
  108. package/chunks/{monitor-ARL5P45R.js → monitor-FOG36ABM.js} +10 -9
  109. package/chunks/{nonInteractiveCli-NUVLF3YR.js → nonInteractiveCli-6BYQSJTB.js} +40 -39
  110. package/chunks/{notebook-edit-ANTZ2DDY.js → notebook-edit-GC6NXRCX.js} +13 -15
  111. package/chunks/{openaiContentGenerator-TFGMKGHN.js → openaiContentGenerator-EXR3ZL3Z.js} +4 -4
  112. package/chunks/{pidfile-AWTL4C63.js → pidfile-FNZM2DDH.js} +9 -8
  113. package/chunks/{pt-6RTAA6SS.js → pt-2THT3YHA.js} +1 -0
  114. package/chunks/{qwenContentGenerator-6QWAYTWS.js → qwenContentGenerator-A7B6J4U7.js} +9 -8
  115. package/chunks/{read-file-EJY73XQ3.js → read-file-6JL4ULMY.js} +3 -3
  116. package/chunks/{read-mcp-resource-NCBTPP7X.js → read-mcp-resource-PIJF24RO.js} +1 -1
  117. package/chunks/{ripGrep-HC4SA6CQ.js → ripGrep-DIUGLJE5.js} +8 -7
  118. package/chunks/{ru-AUBGJ2C4.js → ru-Z67YJHBG.js} +1 -0
  119. package/chunks/{run-qwen-serve-AGLZ642J.js → run-qwen-serve-CME3AKM4.js} +123 -30
  120. package/chunks/{scheduler-TURO7NGY.js → scheduler-L7F6GDDT.js} +8 -7
  121. package/chunks/{send-message-3S2NYS3O.js → send-message-33PYFMCT.js} +15 -1
  122. package/chunks/{serve-5DAMOIDW.js → serve-SRCBOJGP.js} +12 -11
  123. package/chunks/{server-4AGEK2HC.js → server-QSQ45QFR.js} +184 -170
  124. package/chunks/{session-7ZOQUC4Y.js → session-5DG6NXHZ.js} +41 -40
  125. package/chunks/{settings-DR4V6L5Y.js → settings-3EEQI4MN.js} +11 -10
  126. package/chunks/{shell-H5WFKUXH.js → shell-B7FNYF5S.js} +8 -7
  127. package/chunks/{skill-ANHU5ZCR.js → skill-AAOGHD5O.js} +3 -3
  128. package/chunks/{spawnChannel-VN5LJV7Z.js → spawnChannel-3CBN3ZLK.js} +11 -9
  129. package/chunks/{src-OVZLTVVM.js → src-T5A7P7FS.js} +20 -9
  130. package/chunks/{startInteractiveUI-OA22V32P.js → startInteractiveUI-2FGEQ6AS.js} +2648 -2500
  131. package/chunks/{syntheticOutput-SV7GBHZ5.js → syntheticOutput-YOSWIHDJ.js} +2 -2
  132. package/chunks/{task-create-W2H2UJCH.js → task-create-NHS2NGB3.js} +3 -2
  133. package/chunks/{task-list-THBOPV4G.js → task-list-5UIB564R.js} +1 -1
  134. package/chunks/{task-stop-33FVCNCJ.js → task-stop-HGXZ2VZ3.js} +1 -1
  135. package/chunks/{task-update-LVFQLXEI.js → task-update-IYYWUILG.js} +34 -2
  136. package/chunks/{team-create-OYL5CAQO.js → team-create-KDF6W6PV.js} +8 -7
  137. package/chunks/{team-delete-NTUQ25UY.js → team-delete-FEKJCU4P.js} +1 -1
  138. package/chunks/team-plan-approval-PSFKQX7M.js +202 -0
  139. package/chunks/{theme-manager-XCMPF2SI.js → theme-manager-5XOA2AO7.js} +8 -7
  140. package/chunks/{todoWrite-SEPO2RI3.js → todoWrite-TKMVZ2HT.js} +1 -1
  141. package/chunks/{tool-search-YXW55X6Z.js → tool-search-LFRILZXC.js} +8 -6
  142. package/chunks/{trustedFolders-TEPGM5YL.js → trustedFolders-7HQY6T6X.js} +9 -8
  143. package/chunks/{validateNonInterActiveAuth-OQIS7WUE.js → validateNonInterActiveAuth-UC27B7BA.js} +37 -36
  144. package/chunks/{web-fetch-OE7LHURA.js → web-fetch-J4PIW36Q.js} +2 -2
  145. package/chunks/{workflow-RTUWORAP.js → workflow-KUTESS6L.js} +11 -10
  146. package/chunks/{workspace-providers-status-DM2XANVB.js → workspace-providers-status-LJT5AQDS.js} +14 -13
  147. package/chunks/{workspace-service-VKBI2KZD.js → workspace-service-YOBYVDXH.js} +16 -15
  148. package/chunks/workspace-skills-status-ONEPXJV6.js +62 -0
  149. package/chunks/{write-file-WGALQ53L.js → write-file-FJYBZUHP.js} +13 -17
  150. package/chunks/{zh-V3B4TFWL.js → zh-SLZNSSZB.js} +2 -0
  151. package/chunks/{zh-TW-6GIKXEAN.js → zh-TW-P53C2SL5.js} +2 -0
  152. package/cli.js +6 -6
  153. package/locales/ca.js +2 -0
  154. package/locales/de.js +2 -0
  155. package/locales/en.js +3 -0
  156. package/locales/fr.js +2 -0
  157. package/locales/ja.js +2 -0
  158. package/locales/pt.js +2 -0
  159. package/locales/ru.js +2 -0
  160. package/locales/zh-TW.js +3 -0
  161. package/locales/zh.js +3 -0
  162. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  163. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  164. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  165. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  166. package/package.json +6 -15
  167. package/web-shell/assets/{arc-Det5Ccum.js → arc-D_rAuMDd.js} +1 -1
  168. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DqNWVFpl.js → architectureDiagram-3BPJPVTR-DUCzbHVo.js} +1 -1
  169. package/web-shell/assets/{blockDiagram-GPEHLZMM-CYl7tYBi.js → blockDiagram-GPEHLZMM-BEEBt1LL.js} +1 -1
  170. package/web-shell/assets/{c4Diagram-AAUBKEIU-DaAEi0NQ.js → c4Diagram-AAUBKEIU-5ZJ_DeFL.js} +1 -1
  171. package/web-shell/assets/channel-B5ynH0q8.js +1 -0
  172. package/web-shell/assets/{chunk-2J33WTMH-Df2CDEE2.js → chunk-2J33WTMH-Cfw7EiLn.js} +1 -1
  173. package/web-shell/assets/{chunk-4BX2VUAB-DNBFcyL2.js → chunk-4BX2VUAB-FGuZNCZY.js} +1 -1
  174. package/web-shell/assets/{chunk-55IACEB6-BKjF-0HI.js → chunk-55IACEB6-CaBwYPBF.js} +1 -1
  175. package/web-shell/assets/{chunk-727SXJPM-DYwAwfIM.js → chunk-727SXJPM-BlR04OFz.js} +1 -1
  176. package/web-shell/assets/{chunk-AQP2D5EJ-C6FswLqy.js → chunk-AQP2D5EJ-D3_mYJH5.js} +1 -1
  177. package/web-shell/assets/{chunk-FMBD7UC4-DRWAcZSY.js → chunk-FMBD7UC4-7D4q4SbB.js} +1 -1
  178. package/web-shell/assets/{chunk-ND2GUHAM-AoL16mNR.js → chunk-ND2GUHAM-BjX_Iwmr.js} +1 -1
  179. package/web-shell/assets/{chunk-QZHKN3VN-a8PtLMck.js → chunk-QZHKN3VN-C3Hz_ZQh.js} +1 -1
  180. package/web-shell/assets/classDiagram-4FO5ZUOK-CK3ibywp.js +1 -0
  181. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CK3ibywp.js +1 -0
  182. package/web-shell/assets/{cose-bilkent-S5V4N54A-C4Aeu5qf.js → cose-bilkent-S5V4N54A-Ax4UycaT.js} +1 -1
  183. package/web-shell/assets/{dagre-BM42HDAG-BOulamjo.js → dagre-BM42HDAG-C6hmPtGt.js} +1 -1
  184. package/web-shell/assets/{diagram-2AECGRRQ-D1wt2ykO.js → diagram-2AECGRRQ-tXZnxjmw.js} +1 -1
  185. package/web-shell/assets/{diagram-5GNKFQAL-BRseus-O.js → diagram-5GNKFQAL-99dwIzQG.js} +1 -1
  186. package/web-shell/assets/{diagram-KO2AKTUF-XSMkNzpZ.js → diagram-KO2AKTUF-Bqhn0-2s.js} +1 -1
  187. package/web-shell/assets/{diagram-LMA3HP47-21KNLqoi.js → diagram-LMA3HP47-DzThVSvo.js} +1 -1
  188. package/web-shell/assets/{diagram-OG6HWLK6-DnUI8F5G.js → diagram-OG6HWLK6-DPE8vjln.js} +1 -1
  189. package/web-shell/assets/{erDiagram-TEJ5UH35-BVSOMuM2.js → erDiagram-TEJ5UH35-KzUKgQCV.js} +1 -1
  190. package/web-shell/assets/{flowDiagram-I6XJVG4X-fYtDPJsW.js → flowDiagram-I6XJVG4X-DBN-DXw5.js} +1 -1
  191. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CmRXosW_.js → ganttDiagram-6RSMTGT7-DuBsP9u8.js} +1 -1
  192. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DPrmySxO.js → gitGraphDiagram-PVQCEYII-BjWHMyKR.js} +1 -1
  193. package/web-shell/assets/index-9qfvU0_r.css +5 -0
  194. package/web-shell/assets/index-CWzDaQT5.js +717 -0
  195. package/web-shell/assets/{infoDiagram-5YYISTIA-x3VbEuCV.js → infoDiagram-5YYISTIA-BVux0vP6.js} +1 -1
  196. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-SmitHRMC.js → ishikawaDiagram-YF4QCWOH-2qzw7f--.js} +1 -1
  197. package/web-shell/assets/{journeyDiagram-JHISSGLW-BxvA551S.js → journeyDiagram-JHISSGLW-Dnl65sxL.js} +1 -1
  198. package/web-shell/assets/{kanban-definition-UN3LZRKU-DNHC16jY.js → kanban-definition-UN3LZRKU-BElSQYtY.js} +1 -1
  199. package/web-shell/assets/{linear-CQ6irBL9.js → linear-BjoycSSY.js} +1 -1
  200. package/web-shell/assets/{mermaid.core-DtB6NO1e.js → mermaid.core-xe6bvMRz.js} +5 -5
  201. package/web-shell/assets/{mindmap-definition-RKZ34NQL-QKMAgV2v.js → mindmap-definition-RKZ34NQL-D8DQgI4U.js} +1 -1
  202. package/web-shell/assets/{pieDiagram-4H26LBE5-bvb6dGn6.js → pieDiagram-4H26LBE5-Dwh7Gp7c.js} +1 -1
  203. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DLgdlG4D.js → quadrantDiagram-W4KKPZXB-BXKNBln2.js} +1 -1
  204. package/web-shell/assets/{requirementDiagram-4Y6WPE33-2M9YH4GF.js → requirementDiagram-4Y6WPE33-BzaC3cIA.js} +1 -1
  205. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DzwfclTH.js → sankeyDiagram-5OEKKPKP-DP2t7eZk.js} +1 -1
  206. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BvPmTuy2.js → sequenceDiagram-3UESZ5HK-XlFiWEYv.js} +1 -1
  207. package/web-shell/assets/{stateDiagram-AJRCARHV-BjwUmrJF.js → stateDiagram-AJRCARHV-CupgUMJO.js} +1 -1
  208. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-By3E4QwN.js +1 -0
  209. package/web-shell/assets/{timeline-definition-PNZ67QCA-CXzS6qqz.js → timeline-definition-PNZ67QCA-DstuGywa.js} +1 -1
  210. package/web-shell/assets/{vennDiagram-CIIHVFJN-yRSolF5B.js → vennDiagram-CIIHVFJN-CnbNp6zu.js} +1 -1
  211. package/web-shell/assets/{wardley-L42UT6IY-ClLJjHPG.js → wardley-L42UT6IY-DnvoHq6R.js} +1 -1
  212. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-VIa6t2p2.js → wardleyDiagram-YWT4CUSO-Cz0xHEWB.js} +1 -1
  213. package/web-shell/assets/{xychartDiagram-2RQKCTM6-CtmrkezW.js → xychartDiagram-2RQKCTM6-p36gfo88.js} +1 -1
  214. package/web-shell/index.html +28 -3
  215. package/chunks/channel-worker-supervisor-A74FV522.js +0 -308
  216. package/chunks/chunk-S5EQPDTM.js +0 -91
  217. package/patches/chrome-devtools-mcp+1.4.0.patch +0 -31
  218. package/postinstall.js +0 -50
  219. package/web-shell/assets/channel-Bm0bFauD.js +0 -1
  220. package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +0 -1
  221. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +0 -1
  222. package/web-shell/assets/index-BpKnmyFV.js +0 -717
  223. package/web-shell/assets/index-fLrtxpOG.css +0 -5
  224. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +0 -1
@@ -1441,6 +1441,7 @@ var ca_default = {
1441
1441
  "Hide tool output and thinking for a cleaner view (toggle with Ctrl+O).": "Amagueu la sortida de les eines i el pensament per a una vista m\xE9s neta (canvieu amb Ctrl+O).",
1442
1442
  "Press Ctrl+O to show full tool output": "Premeu Ctrl+O per mostrar la sortida completa de les eines",
1443
1443
  "Switch to plan mode or exit plan mode": "Canviar al mode de planificaci\xF3 o sortir del mode de planificaci\xF3",
1444
+ "Set how hard reasoning-capable models think ({{tiers}}); mapped and clamped per provider.": "Defineix la intensitat de raonament dels models compatibles ({{tiers}}); mapejada i limitada segons el prove\xEFdor.",
1444
1445
  "Exited plan mode. Previous approval mode restored.": "S'ha sortit del mode de planificaci\xF3. S'ha restaurat el mode d'aprovaci\xF3 anterior.",
1445
1446
  "Enabled plan mode. The agent will analyze and plan without executing tools.": "S'ha activat el mode de planificaci\xF3. L'agent analitzar\xE0 i planificar\xE0 sense executar eines.",
1446
1447
  'Already in plan mode. Use "/plan exit" to exit plan mode.': 'Ja esteu en mode de planificaci\xF3. Useu "/plan exit" per sortir del mode de planificaci\xF3.',
@@ -0,0 +1,665 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ CHANNEL_DAEMON_WORKER_SENTINEL,
5
+ CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
6
+ QWEN_DAEMON_TOKEN_ENV,
7
+ QWEN_DAEMON_URL_ENV,
8
+ QWEN_DAEMON_WORKSPACE_ENV,
9
+ QWEN_SERVER_TOKEN_ENV
10
+ } from "./chunk-S6RLAIUR.js";
11
+ import {
12
+ channelSelectionNames
13
+ } from "./chunk-MX2YXRER.js";
14
+ import {
15
+ sanitizeLogText
16
+ } from "./chunk-7DMQRPC7.js";
17
+ import {
18
+ redactLogCredentials
19
+ } from "./chunk-2Z43HUXT.js";
20
+ import "./chunk-UFC57OYT.js";
21
+ import "./chunk-K5PGHDBN.js";
22
+ import {
23
+ init_esbuild_shims
24
+ } from "./chunk-A4BMJM77.js";
25
+ import {
26
+ __name
27
+ } from "./chunk-J2S4EL5Y.js";
28
+
29
+ // packages/cli/src/serve/channel-worker-supervisor.ts
30
+ init_esbuild_shims();
31
+ import { fork } from "node:child_process";
32
+ import { randomUUID } from "node:crypto";
33
+ var DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS = 3e4;
34
+ var DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS = 45e3;
35
+ var MAX_WORKER_LOG_LINE_LENGTH = 4096;
36
+ var MAX_WORKER_LOG_BUFFER_LENGTH = 64 * 1024;
37
+ var MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH = MAX_WORKER_LOG_BUFFER_LENGTH;
38
+ var ANSI_CSI_SEQUENCE_RE = new RegExp(
39
+ `${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`,
40
+ "g"
41
+ );
42
+ var WORKER_LOG_INVISIBLE_RE = new RegExp("[\\p{Cf}\\u2028\\u2029]|\\p{Variation_Selector}", "gu");
43
+ var WORKER_LOG_CONTROL_RE = /[\x00-\x08\x0a-\x1f\x7f]/g;
44
+ var DEFAULT_RESTART_POLICY = {
45
+ maxRestarts: 3,
46
+ windowMs: 5 * 6e4,
47
+ delaysMs: [1e3, 5e3, 15e3]
48
+ };
49
+ function selectionChannelArgs(selection) {
50
+ return channelSelectionNames(selection).flatMap((name) => [
51
+ "--channel",
52
+ name
53
+ ]);
54
+ }
55
+ __name(selectionChannelArgs, "selectionChannelArgs");
56
+ function defaultSpawnWorker(execPath, argv, options) {
57
+ const child = fork(argv[0], argv.slice(1), {
58
+ execPath,
59
+ cwd: options.cwd,
60
+ env: options.env,
61
+ stdio: options.stdio
62
+ });
63
+ return child;
64
+ }
65
+ __name(defaultSpawnWorker, "defaultSpawnWorker");
66
+ function isReadyMessage(message) {
67
+ return typeof message === "object" && message !== null && message.type === "ready";
68
+ }
69
+ __name(isReadyMessage, "isReadyMessage");
70
+ function isHeartbeatMessage(message) {
71
+ return typeof message === "object" && message !== null && message.type === "heartbeat";
72
+ }
73
+ __name(isHeartbeatMessage, "isHeartbeatMessage");
74
+ function requestedChannelNames(selection) {
75
+ return selection.mode === "names" ? [...selection.names] : void 0;
76
+ }
77
+ __name(requestedChannelNames, "requestedChannelNames");
78
+ function workerLogRedactionOptions(daemonToken, workerEnv) {
79
+ return {
80
+ ...daemonToken ? { daemonToken } : {},
81
+ workerEnv
82
+ };
83
+ }
84
+ __name(workerLogRedactionOptions, "workerLogRedactionOptions");
85
+ function sanitizeWorkerError(error, redaction) {
86
+ const normalized = normalizeWorkerLogLineForRedaction(error);
87
+ const redacted = redaction ? redactWorkerLogLine(normalized, redaction) : normalized;
88
+ return Array.from(sanitizeLogText(redacted, 512)).slice(0, 512).join("");
89
+ }
90
+ __name(sanitizeWorkerError, "sanitizeWorkerError");
91
+ function notifyExit(onExit, snapshot) {
92
+ try {
93
+ onExit?.(snapshot);
94
+ } catch {
95
+ }
96
+ }
97
+ __name(notifyExit, "notifyExit");
98
+ function notifyReady(onReady, snapshot) {
99
+ try {
100
+ onReady?.(snapshot);
101
+ } catch {
102
+ }
103
+ }
104
+ __name(notifyReady, "notifyReady");
105
+ function notifyLog(onLog, entry) {
106
+ try {
107
+ onLog?.(entry);
108
+ } catch {
109
+ }
110
+ }
111
+ __name(notifyLog, "notifyLog");
112
+ function waitForExit(child, timeoutMs) {
113
+ return new Promise((resolve) => {
114
+ let settled = false;
115
+ const done = /* @__PURE__ */ __name((exited) => {
116
+ if (settled) return;
117
+ settled = true;
118
+ if (timer) clearTimeout(timer);
119
+ resolve(exited);
120
+ }, "done");
121
+ const timer = setTimeout(() => done(false), timeoutMs);
122
+ timer.unref();
123
+ child.once("exit", () => done(true));
124
+ });
125
+ }
126
+ __name(waitForExit, "waitForExit");
127
+ function hasObservedExit(snapshot) {
128
+ return snapshot.exitCode !== void 0 || snapshot.signal !== void 0;
129
+ }
130
+ __name(hasObservedExit, "hasObservedExit");
131
+ function createWorkerEnv(opts) {
132
+ const env = { ...process.env };
133
+ env["QWEN_CODE_NO_RELAUNCH"] = "true";
134
+ env[CHANNEL_DAEMON_WORKER_SENTINEL] = randomUUID();
135
+ env[QWEN_DAEMON_URL_ENV] = opts.daemonUrl;
136
+ env[QWEN_DAEMON_WORKSPACE_ENV] = opts.workspace;
137
+ delete env[QWEN_SERVER_TOKEN_ENV];
138
+ delete env[QWEN_DAEMON_TOKEN_ENV];
139
+ if (opts.daemonToken) {
140
+ env[QWEN_DAEMON_TOKEN_ENV] = opts.daemonToken;
141
+ }
142
+ return env;
143
+ }
144
+ __name(createWorkerEnv, "createWorkerEnv");
145
+ function escapeRegExp(value) {
146
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
147
+ }
148
+ __name(escapeRegExp, "escapeRegExp");
149
+ function sensitiveEnvValues(env) {
150
+ const sensitiveKey = /(^|_)(TOKEN|SECRET|API_KEY|ACCESS_KEY|PRIVATE_KEY|CREDENTIAL|PASSWORD|PASSWD|PASSPHRASE|BASIC_AUTH|AUTH_TOKEN|AUTHORIZATION|SESSION_SECRET|SESSION_TOKEN|SESSION_KEY|SESSION_COOKIE|DSN|CONNECTION_STRING)($|_)/i;
151
+ return Object.entries(env).filter(([key, value]) => sensitiveKey.test(key) && value !== void 0).flatMap(([, value]) => {
152
+ const lines = value.split("\n").filter((l) => l.length >= 4);
153
+ return lines.length > 0 ? [value, ...lines] : [value];
154
+ }).filter((value) => value.length >= 4);
155
+ }
156
+ __name(sensitiveEnvValues, "sensitiveEnvValues");
157
+ function redactWorkerLogLine(line, opts) {
158
+ return createWorkerLogRedactor(opts)(line);
159
+ }
160
+ __name(redactWorkerLogLine, "redactWorkerLogLine");
161
+ function createWorkerLogRedactor(opts) {
162
+ const secretPatterns = [
163
+ .../* @__PURE__ */ new Set([
164
+ ...opts.daemonToken && opts.daemonToken.length >= 4 ? [opts.daemonToken] : [],
165
+ ...sensitiveEnvValues(opts.workerEnv)
166
+ ])
167
+ ].sort((a, b) => b.length - a.length).map((secret) => new RegExp(escapeRegExp(secret), "g"));
168
+ return (line) => {
169
+ let redacted = line.replace(
170
+ /\b([a-z][a-z0-9+.-]{0,31}:\/\/)([^\s/]*@)([^\s/]+)([^\s]*)/gi,
171
+ "$1<redacted>@$3$4"
172
+ );
173
+ for (const secretPattern of secretPatterns) {
174
+ redacted = redacted.replace(secretPattern, "<redacted>");
175
+ }
176
+ return redactLogCredentials(redacted);
177
+ };
178
+ }
179
+ __name(createWorkerLogRedactor, "createWorkerLogRedactor");
180
+ function normalizeWorkerLogLineForRedaction(line) {
181
+ return line.replace(ANSI_CSI_SEQUENCE_RE, "").replace(WORKER_LOG_INVISIBLE_RE, "").replace(WORKER_LOG_CONTROL_RE, "");
182
+ }
183
+ __name(normalizeWorkerLogLineForRedaction, "normalizeWorkerLogLineForRedaction");
184
+ function attachWorkerLogStream(stream, streamName, opts) {
185
+ if (!stream) return () => {
186
+ };
187
+ let buffer = "";
188
+ let discardingOversizedLineRemainder = false;
189
+ let discardedOversizedLineRemainderLength = 0;
190
+ const redactWorkerLogLineForStream = createWorkerLogRedactor({
191
+ ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {},
192
+ workerEnv: opts.workerEnv
193
+ });
194
+ const flushLine = /* @__PURE__ */ __name((line) => {
195
+ const redacted = redactWorkerLogLineForStream(
196
+ normalizeWorkerLogLineForRedaction(line)
197
+ );
198
+ notifyLog(opts.onLog, {
199
+ stream: streamName,
200
+ line: sanitizeLogText(redacted, MAX_WORKER_LOG_LINE_LENGTH)
201
+ });
202
+ }, "flushLine");
203
+ const flushPartial = /* @__PURE__ */ __name(() => {
204
+ if (buffer.length === 0) return;
205
+ flushLine(buffer);
206
+ buffer = "";
207
+ }, "flushPartial");
208
+ const flushOversizedBuffer = /* @__PURE__ */ __name(() => {
209
+ if (buffer.length <= MAX_WORKER_LOG_BUFFER_LENGTH) return;
210
+ flushLine(buffer);
211
+ buffer = "";
212
+ discardingOversizedLineRemainder = true;
213
+ discardedOversizedLineRemainderLength = 0;
214
+ }, "flushOversizedBuffer");
215
+ stream.on("data", (chunk) => {
216
+ buffer += typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf8");
217
+ for (; ; ) {
218
+ const newlineIndex = buffer.search(/\r?\n/);
219
+ if (newlineIndex < 0) break;
220
+ const line = buffer.slice(0, newlineIndex);
221
+ const newlineLength = buffer[newlineIndex] === "\r" && buffer[newlineIndex + 1] === "\n" ? 2 : 1;
222
+ buffer = buffer.slice(newlineIndex + newlineLength);
223
+ if (!discardingOversizedLineRemainder) {
224
+ flushLine(line);
225
+ }
226
+ discardingOversizedLineRemainder = false;
227
+ discardedOversizedLineRemainderLength = 0;
228
+ }
229
+ if (discardingOversizedLineRemainder) {
230
+ discardedOversizedLineRemainderLength += buffer.length;
231
+ buffer = "";
232
+ if (discardedOversizedLineRemainderLength >= MAX_WORKER_LOG_DISCARDED_REMAINDER_LENGTH) {
233
+ discardingOversizedLineRemainder = false;
234
+ discardedOversizedLineRemainderLength = 0;
235
+ }
236
+ return;
237
+ }
238
+ flushOversizedBuffer();
239
+ });
240
+ stream.on("end", flushPartial);
241
+ stream.on("close", flushPartial);
242
+ stream.on("error", () => {
243
+ flushPartial();
244
+ });
245
+ return flushPartial;
246
+ }
247
+ __name(attachWorkerLogStream, "attachWorkerLogStream");
248
+ function createChannelWorkerSupervisor(opts) {
249
+ const spawnWorker = opts.spawnWorker ?? defaultSpawnWorker;
250
+ const restartPolicy = opts.restartPolicy ?? DEFAULT_RESTART_POLICY;
251
+ if (restartPolicy.delaysMs.length === 0) {
252
+ throw new Error("restartPolicy.delaysMs must be non-empty.");
253
+ }
254
+ const heartbeatTimeoutMs = opts.heartbeatTimeoutMs ?? DEFAULT_CHANNEL_WORKER_HEARTBEAT_TIMEOUT_MS;
255
+ if (heartbeatTimeoutMs > 0 && heartbeatTimeoutMs <= CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS) {
256
+ throw new Error(
257
+ `heartbeatTimeoutMs (${heartbeatTimeoutMs}) must exceed the worker heartbeat interval (${CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS}ms) or be 0 to disable.`
258
+ );
259
+ }
260
+ let child;
261
+ let snapshot = {
262
+ enabled: true,
263
+ state: "disabled",
264
+ channels: channelSelectionNames(opts.selection),
265
+ restartCount: 0
266
+ };
267
+ let stopping = false;
268
+ let restartTimer;
269
+ let staleHeartbeatTimer;
270
+ let restartAttemptTimes = [];
271
+ const snapshotCopy = /* @__PURE__ */ __name(() => ({
272
+ ...snapshot,
273
+ channels: [...snapshot.channels],
274
+ ...snapshot.requestedChannels ? { requestedChannels: [...snapshot.requestedChannels] } : {}
275
+ }), "snapshotCopy");
276
+ const clearRestartTimer = /* @__PURE__ */ __name(() => {
277
+ if (restartTimer) {
278
+ clearTimeout(restartTimer);
279
+ restartTimer = void 0;
280
+ }
281
+ if (snapshot.nextRestartAt) {
282
+ const next = { ...snapshot };
283
+ delete next.nextRestartAt;
284
+ snapshot = next;
285
+ }
286
+ }, "clearRestartTimer");
287
+ const clearStaleHeartbeatTimer = /* @__PURE__ */ __name(() => {
288
+ if (!staleHeartbeatTimer) return;
289
+ clearTimeout(staleHeartbeatTimer);
290
+ staleHeartbeatTimer = void 0;
291
+ }, "clearStaleHeartbeatTimer");
292
+ const pruneRestartAttempts = /* @__PURE__ */ __name((nowMs) => {
293
+ restartAttemptTimes = restartAttemptTimes.filter(
294
+ (attemptMs) => nowMs - attemptMs < restartPolicy.windowMs
295
+ );
296
+ }, "pruneRestartAttempts");
297
+ const canScheduleRestart = /* @__PURE__ */ __name((nowMs) => {
298
+ pruneRestartAttempts(nowMs);
299
+ return restartAttemptTimes.length < restartPolicy.maxRestarts;
300
+ }, "canScheduleRestart");
301
+ const nextRestartDelayMs = /* @__PURE__ */ __name(() => {
302
+ const index = Math.min(
303
+ restartAttemptTimes.length,
304
+ restartPolicy.delaysMs.length - 1
305
+ );
306
+ return restartPolicy.delaysMs[index] ?? 0;
307
+ }, "nextRestartDelayMs");
308
+ const setExited = /* @__PURE__ */ __name((state, code, signal, error) => {
309
+ const next = {
310
+ ...snapshot,
311
+ state,
312
+ exitCode: code,
313
+ signal,
314
+ lastExitAt: (/* @__PURE__ */ new Date()).toISOString()
315
+ };
316
+ if (error) {
317
+ next.error = error;
318
+ } else {
319
+ delete next.error;
320
+ }
321
+ snapshot = {
322
+ ...next
323
+ };
324
+ }, "setExited");
325
+ const scheduleRestart = /* @__PURE__ */ __name(() => {
326
+ if (stopping) return false;
327
+ const nowMs = Date.now();
328
+ if (!canScheduleRestart(nowMs)) {
329
+ const lastError = snapshot.error;
330
+ snapshot = {
331
+ ...snapshot,
332
+ state: "failed",
333
+ error: lastError ? `Channel worker restart budget exhausted. Last error: ${lastError}` : "Channel worker restart budget exhausted.",
334
+ nextRestartAt: void 0
335
+ };
336
+ return false;
337
+ }
338
+ clearRestartTimer();
339
+ const delayMs = nextRestartDelayMs();
340
+ const nextRestartAt = new Date(nowMs + delayMs).toISOString();
341
+ snapshot = {
342
+ ...snapshot,
343
+ nextRestartAt
344
+ };
345
+ restartTimer = setTimeout(() => {
346
+ restartTimer = void 0;
347
+ void launch("restart").catch((err) => {
348
+ handleRestartFailure(err instanceof Error ? err.message : String(err));
349
+ });
350
+ }, delayMs);
351
+ restartTimer.unref();
352
+ return true;
353
+ }, "scheduleRestart");
354
+ const handleRestartFailure = /* @__PURE__ */ __name((error, redaction) => {
355
+ snapshot = {
356
+ ...snapshot,
357
+ state: "failed",
358
+ error: sanitizeWorkerError(error, redaction)
359
+ };
360
+ scheduleRestart();
361
+ notifyExit(opts.onExit, snapshotCopy());
362
+ }, "handleRestartFailure");
363
+ const armStaleHeartbeatTimer = /* @__PURE__ */ __name((startedChild) => {
364
+ clearStaleHeartbeatTimer();
365
+ if (heartbeatTimeoutMs <= 0) return;
366
+ staleHeartbeatTimer = setTimeout(() => {
367
+ if (child !== startedChild || stopping) return;
368
+ snapshot = {
369
+ ...snapshot,
370
+ error: "Channel worker heartbeat timed out.",
371
+ staleHeartbeatAt: (/* @__PURE__ */ new Date()).toISOString()
372
+ };
373
+ startedChild.kill("SIGKILL");
374
+ }, heartbeatTimeoutMs);
375
+ staleHeartbeatTimer.unref();
376
+ }, "armStaleHeartbeatTimer");
377
+ const launch = /* @__PURE__ */ __name(async (kind) => {
378
+ clearStaleHeartbeatTimer();
379
+ const argv = [
380
+ opts.cliEntryPath,
381
+ "channel",
382
+ "daemon-worker",
383
+ ...selectionChannelArgs(opts.selection)
384
+ ];
385
+ const env = createWorkerEnv({
386
+ daemonUrl: opts.daemonUrl,
387
+ workspace: opts.workspace,
388
+ ...opts.daemonToken ? { daemonToken: opts.daemonToken } : {}
389
+ });
390
+ const redaction = workerLogRedactionOptions(opts.daemonToken, env);
391
+ const requestedChannels = requestedChannelNames(opts.selection);
392
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
393
+ snapshot = {
394
+ enabled: true,
395
+ state: "starting",
396
+ channels: channelSelectionNames(opts.selection),
397
+ ...requestedChannels ? { requestedChannels } : {},
398
+ startedAt,
399
+ restartCount: snapshot.restartCount ?? 0,
400
+ ...snapshot.lastExitAt ? { lastExitAt: snapshot.lastExitAt } : {},
401
+ ...snapshot.lastHeartbeatAt ? { lastHeartbeatAt: snapshot.lastHeartbeatAt } : {},
402
+ ...snapshot.staleHeartbeatAt ? { staleHeartbeatAt: snapshot.staleHeartbeatAt } : {}
403
+ };
404
+ if (kind === "restart") {
405
+ const nowMs = Date.now();
406
+ restartAttemptTimes.push(nowMs);
407
+ snapshot = {
408
+ ...snapshot,
409
+ restartCount: (snapshot.restartCount ?? 0) + 1,
410
+ lastRestartAt: new Date(nowMs).toISOString(),
411
+ nextRestartAt: void 0
412
+ };
413
+ }
414
+ let startedChild;
415
+ try {
416
+ startedChild = spawnWorker(process.execPath, argv, {
417
+ cwd: opts.workspace,
418
+ env,
419
+ stdio: ["ignore", "pipe", "pipe", "ipc"]
420
+ });
421
+ } catch (err) {
422
+ const message = err instanceof Error ? err.message : String(err);
423
+ const error = sanitizeWorkerError(message, redaction);
424
+ if (kind === "initial") {
425
+ snapshot = {
426
+ ...snapshot,
427
+ state: "failed",
428
+ error
429
+ };
430
+ throw new Error(error);
431
+ }
432
+ handleRestartFailure(message, redaction);
433
+ return;
434
+ }
435
+ child = startedChild;
436
+ attachWorkerLogStream(startedChild.stdout, "stdout", {
437
+ ...redaction,
438
+ onLog: opts.onLog
439
+ });
440
+ attachWorkerLogStream(startedChild.stderr, "stderr", {
441
+ ...redaction,
442
+ onLog: opts.onLog
443
+ });
444
+ if (startedChild.pid !== void 0) {
445
+ snapshot = { ...snapshot, pid: startedChild.pid };
446
+ }
447
+ await new Promise((resolve, reject) => {
448
+ let settled = false;
449
+ let ready = false;
450
+ let exitObserved = false;
451
+ let terminatingBeforeReady = false;
452
+ let startupTimer;
453
+ const cleanupStartupTimer = /* @__PURE__ */ __name(() => {
454
+ if (!startupTimer) return;
455
+ clearTimeout(startupTimer);
456
+ startupTimer = void 0;
457
+ }, "cleanupStartupTimer");
458
+ const cleanupLaunch = /* @__PURE__ */ __name(() => {
459
+ cleanupStartupTimer();
460
+ startedChild.removeListener("message", handleMessage);
461
+ clearStaleHeartbeatTimer();
462
+ }, "cleanupLaunch");
463
+ const terminateBeforeReady = /* @__PURE__ */ __name(() => {
464
+ cleanupLaunch();
465
+ if (terminatingBeforeReady) return;
466
+ terminatingBeforeReady = true;
467
+ const exited = waitForExit(startedChild, 2e3);
468
+ startedChild.kill("SIGTERM");
469
+ void exited.then(async (didExit) => {
470
+ if (!didExit && child === startedChild && !exitObserved) {
471
+ const killed = waitForExit(startedChild, 2e3);
472
+ startedChild.kill("SIGKILL");
473
+ if (!await killed && child === startedChild && !exitObserved) {
474
+ child = void 0;
475
+ if (kind === "restart" && !stopping) {
476
+ scheduleRestart();
477
+ notifyExit(opts.onExit, snapshotCopy());
478
+ }
479
+ }
480
+ }
481
+ });
482
+ }, "terminateBeforeReady");
483
+ const failBeforeReady = /* @__PURE__ */ __name((err) => {
484
+ if (settled) return;
485
+ settled = true;
486
+ cleanupStartupTimer();
487
+ if (kind === "initial") {
488
+ reject(err);
489
+ } else {
490
+ resolve();
491
+ }
492
+ }, "failBeforeReady");
493
+ const completeReady = /* @__PURE__ */ __name((message) => {
494
+ if (settled || child !== startedChild) return;
495
+ settled = true;
496
+ ready = true;
497
+ cleanupStartupTimer();
498
+ const next = {
499
+ ...snapshot,
500
+ state: "running",
501
+ pid: message.pid ?? startedChild.pid,
502
+ channels: message.channels && message.channels.length > 0 ? [...message.channels] : [...snapshot.channels]
503
+ };
504
+ delete next.error;
505
+ delete next.lastHeartbeatAt;
506
+ delete next.nextRestartAt;
507
+ delete next.staleHeartbeatAt;
508
+ if (message.requestedChannels?.length) {
509
+ next.requestedChannels = [...message.requestedChannels];
510
+ }
511
+ snapshot = next;
512
+ armStaleHeartbeatTimer(startedChild);
513
+ notifyReady(opts.onReady, snapshotCopy());
514
+ resolve();
515
+ }, "completeReady");
516
+ const handleHeartbeat = /* @__PURE__ */ __name((message) => {
517
+ if (!ready || child !== startedChild) return;
518
+ const currentPid = snapshot.pid ?? startedChild.pid;
519
+ if (message.pid !== void 0 && currentPid !== void 0) {
520
+ if (message.pid !== currentPid) return;
521
+ }
522
+ snapshot = {
523
+ ...snapshot,
524
+ lastHeartbeatAt: (/* @__PURE__ */ new Date()).toISOString()
525
+ };
526
+ armStaleHeartbeatTimer(startedChild);
527
+ }, "handleHeartbeat");
528
+ function handleMessage(message) {
529
+ if (child !== startedChild) return;
530
+ if (!ready && isReadyMessage(message)) {
531
+ completeReady(message);
532
+ } else if (isHeartbeatMessage(message)) {
533
+ handleHeartbeat(message);
534
+ }
535
+ }
536
+ __name(handleMessage, "handleMessage");
537
+ function settleExit(code, signal) {
538
+ if (child !== startedChild) return;
539
+ exitObserved = true;
540
+ cleanupLaunch();
541
+ const state = ready ? "exited" : "failed";
542
+ const message = `Channel worker exited before ready (code=${code ?? "null"}, signal=${signal ?? "null"}).`;
543
+ setExited(
544
+ state,
545
+ code,
546
+ signal,
547
+ snapshot.error ?? (ready ? void 0 : sanitizeWorkerError(message, redaction))
548
+ );
549
+ child = void 0;
550
+ if ((ready || kind === "restart") && !stopping) {
551
+ scheduleRestart();
552
+ notifyExit(opts.onExit, snapshotCopy());
553
+ }
554
+ if (!settled) {
555
+ failBeforeReady(new Error(snapshot.error ?? message));
556
+ }
557
+ }
558
+ __name(settleExit, "settleExit");
559
+ function settleError(err) {
560
+ if (child !== startedChild || exitObserved) return;
561
+ if (settled && ready) {
562
+ snapshot = {
563
+ ...snapshot,
564
+ error: sanitizeWorkerError(err.message, redaction)
565
+ };
566
+ startedChild.kill("SIGTERM");
567
+ return;
568
+ }
569
+ snapshot = {
570
+ ...snapshot,
571
+ state: "failed",
572
+ error: sanitizeWorkerError(err.message, redaction)
573
+ };
574
+ terminateBeforeReady();
575
+ if (!settled) {
576
+ failBeforeReady(new Error(snapshot.error));
577
+ }
578
+ }
579
+ __name(settleError, "settleError");
580
+ startupTimer = setTimeout(() => {
581
+ const timeoutMs = opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS;
582
+ const error = `Channel worker did not become ready within ${timeoutMs}ms.`;
583
+ snapshot = {
584
+ ...snapshot,
585
+ state: "failed",
586
+ error: sanitizeWorkerError(error, redaction)
587
+ };
588
+ failBeforeReady(new Error(error));
589
+ if (child === startedChild) {
590
+ terminateBeforeReady();
591
+ }
592
+ }, opts.startupTimeoutMs ?? DEFAULT_CHANNEL_WORKER_STARTUP_TIMEOUT_MS);
593
+ startupTimer.unref();
594
+ startedChild.on("message", handleMessage);
595
+ startedChild.once("exit", settleExit);
596
+ startedChild.once("error", settleError);
597
+ });
598
+ }, "launch");
599
+ return {
600
+ async start() {
601
+ if (child) return;
602
+ stopping = false;
603
+ clearRestartTimer();
604
+ restartAttemptTimes = [];
605
+ await launch("initial");
606
+ },
607
+ async stop() {
608
+ clearRestartTimer();
609
+ clearStaleHeartbeatTimer();
610
+ if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
611
+ child = void 0;
612
+ snapshot = { ...snapshot, state: "stopped" };
613
+ return;
614
+ }
615
+ const exited = waitForExit(child, 5e3);
616
+ stopping = true;
617
+ child.kill("SIGTERM");
618
+ if (!await exited) {
619
+ const killed = waitForExit(child, 2e3);
620
+ child.kill("SIGKILL");
621
+ if (!await killed) {
622
+ child = void 0;
623
+ stopping = false;
624
+ snapshot = {
625
+ ...snapshot,
626
+ state: "failed",
627
+ signal: "SIGKILL",
628
+ error: "Channel worker did not exit after SIGKILL."
629
+ };
630
+ return;
631
+ }
632
+ }
633
+ child = void 0;
634
+ stopping = false;
635
+ snapshot = { ...snapshot, state: "stopped" };
636
+ },
637
+ killAllSync() {
638
+ if (!child || snapshot.state === "exited" || snapshot.state === "failed" && hasObservedExit(snapshot) || snapshot.state === "stopped") {
639
+ clearRestartTimer();
640
+ clearStaleHeartbeatTimer();
641
+ return;
642
+ }
643
+ const preserveFailure = snapshot.state === "failed" && !hasObservedExit(snapshot);
644
+ clearRestartTimer();
645
+ clearStaleHeartbeatTimer();
646
+ stopping = true;
647
+ child.kill("SIGKILL");
648
+ child = void 0;
649
+ if (!preserveFailure) {
650
+ snapshot = {
651
+ ...snapshot,
652
+ state: "stopped",
653
+ signal: "SIGKILL"
654
+ };
655
+ }
656
+ },
657
+ snapshot() {
658
+ return snapshotCopy();
659
+ }
660
+ };
661
+ }
662
+ __name(createChannelWorkerSupervisor, "createChannelWorkerSupervisor");
663
+ export {
664
+ createChannelWorkerSupervisor
665
+ };
@@ -4,7 +4,7 @@ import {
4
4
  ansiRegex,
5
5
  init_ansi_regex,
6
6
  stripAnsi
7
- } from "./chunk-BFG6OZN7.js";
7
+ } from "./chunk-6QTCOQX7.js";
8
8
  import {
9
9
  init_esbuild_shims
10
10
  } from "./chunk-A4BMJM77.js";
@@ -60,7 +60,7 @@ async function runExitCleanup(options = {}) {
60
60
  }
61
61
  __name(runExitCleanup, "runExitCleanup");
62
62
  async function cleanupCheckpoints() {
63
- const { Storage } = await import("./src-OVZLTVVM.js");
63
+ const { Storage } = await import("./src-T5A7P7FS.js");
64
64
  const storage = new Storage(process.cwd());
65
65
  const tempDir = storage.getProjectTempDir();
66
66
  const checkpointsDir = join(tempDir, "checkpoints");