@bryanhu/codexly 0.33.2 → 0.35.0

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 (469) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +10 -0
  3. package/README.zh-CN.md +10 -0
  4. package/dist/{chunk-6UFHSWVR.js → chunk-6TW6YUSL.js} +909 -588
  5. package/dist/{chunk-PO2R4H3G.js → chunk-BRKY2HKI.js} +57 -1
  6. package/dist/chunk-GBLVWFLZ.js +23 -0
  7. package/dist/{chunk-NZDI7HXO.js → chunk-OM52Z4J7.js} +1 -1
  8. package/dist/{chunk-FX2JDWP4.js → chunk-RGMQBXXC.js} +699 -300
  9. package/dist/cli.js +6 -5
  10. package/dist/client/index.js +88 -13
  11. package/dist/historical-attachment-worker.js +94 -0
  12. package/dist/protocol/index.js +1 -1
  13. package/dist/providers/codex/index.js +3 -2
  14. package/dist/server/index.js +5 -4
  15. package/dist/web/.vite/manifest.json +370 -218
  16. package/dist/web/.vite/manifest.json.br +0 -0
  17. package/dist/web/.vite/manifest.json.gz +0 -0
  18. package/dist/web/assets/{abnfDiagram-N423BO3Z-N5qHzn33.js → abnfDiagram-N423BO3Z-DjEUmHES.js} +1 -1
  19. package/dist/web/assets/abnfDiagram-N423BO3Z-DjEUmHES.js.br +0 -0
  20. package/dist/web/assets/abnfDiagram-N423BO3Z-DjEUmHES.js.gz +0 -0
  21. package/dist/web/assets/{agent-settings-panel-BEjmbkLC.js → agent-settings-panel-CuLgzC2n.js} +1 -1
  22. package/dist/web/assets/agent-settings-panel-CuLgzC2n.js.br +0 -0
  23. package/dist/web/assets/agent-settings-panel-CuLgzC2n.js.gz +0 -0
  24. package/dist/web/assets/{architectureDiagram-T3A2C74G-iq1e_PZv.js → architectureDiagram-T3A2C74G-DNtnW8Fq.js} +1 -1
  25. package/dist/web/assets/architectureDiagram-T3A2C74G-DNtnW8Fq.js.br +0 -0
  26. package/dist/web/assets/{architectureDiagram-T3A2C74G-iq1e_PZv.js.gz → architectureDiagram-T3A2C74G-DNtnW8Fq.js.gz} +0 -0
  27. package/dist/web/assets/{background-image-picker-DlIaB70A.js → background-image-picker-D4xlUwrb.js} +1 -1
  28. package/dist/web/assets/background-image-picker-D4xlUwrb.js.br +0 -0
  29. package/dist/web/assets/background-image-picker-D4xlUwrb.js.gz +0 -0
  30. package/dist/web/assets/{chunk-5RXB4S5H-6sn5NP9q.js → chunk-5RXB4S5H-BDaXxnei.js} +1 -1
  31. package/dist/web/assets/chunk-5RXB4S5H-BDaXxnei.js.br +0 -0
  32. package/dist/web/assets/chunk-5RXB4S5H-BDaXxnei.js.gz +0 -0
  33. package/dist/web/assets/{chunk-6Q2QTUOP-BtzeG1FZ.js → chunk-6Q2QTUOP-BcTojajm.js} +1 -1
  34. package/dist/web/assets/chunk-6Q2QTUOP-BcTojajm.js.br +0 -0
  35. package/dist/web/assets/chunk-6Q2QTUOP-BcTojajm.js.gz +0 -0
  36. package/dist/web/assets/{chunk-GF5L2VYU-DGhiJb6X.js → chunk-GF5L2VYU-XelwAXnk.js} +1 -1
  37. package/dist/web/assets/chunk-GF5L2VYU-XelwAXnk.js.br +0 -0
  38. package/dist/web/assets/chunk-GF5L2VYU-XelwAXnk.js.gz +0 -0
  39. package/dist/web/assets/{chunk-JQJVKLGR-B7ezqhFY.js → chunk-JQJVKLGR-Cyok4-2b.js} +1 -1
  40. package/dist/web/assets/chunk-JQJVKLGR-Cyok4-2b.js.br +0 -0
  41. package/dist/web/assets/chunk-JQJVKLGR-Cyok4-2b.js.gz +0 -0
  42. package/dist/web/assets/{classDiagram-JCYQIIEL-BB7G_j3w.js → classDiagram-JCYQIIEL-B9HBTIG7.js} +1 -1
  43. package/dist/web/assets/classDiagram-JCYQIIEL-B9HBTIG7.js.br +0 -0
  44. package/dist/web/assets/classDiagram-JCYQIIEL-B9HBTIG7.js.gz +0 -0
  45. package/dist/web/assets/{classDiagram-v2-OCEON4UE-BB7G_j3w.js → classDiagram-v2-OCEON4UE-B9HBTIG7.js} +1 -1
  46. package/dist/web/assets/classDiagram-v2-OCEON4UE-B9HBTIG7.js.br +0 -0
  47. package/dist/web/assets/classDiagram-v2-OCEON4UE-B9HBTIG7.js.gz +0 -0
  48. package/dist/web/assets/code-highlighter-BDJkbu1d.js +3 -0
  49. package/dist/web/assets/code-highlighter-BDJkbu1d.js.br +0 -0
  50. package/dist/web/assets/code-highlighter-BDJkbu1d.js.gz +0 -0
  51. package/dist/web/assets/{commit-settings-panel-espYgo6c.js → commit-settings-panel-j2yqctr_.js} +1 -1
  52. package/dist/web/assets/commit-settings-panel-j2yqctr_.js.br +0 -0
  53. package/dist/web/assets/commit-settings-panel-j2yqctr_.js.gz +0 -0
  54. package/dist/web/assets/{cynefinDiagram-MW4NZA55-CkDwFn1d.js → cynefinDiagram-MW4NZA55-D9tIBEvv.js} +1 -1
  55. package/dist/web/assets/cynefinDiagram-MW4NZA55-D9tIBEvv.js.br +0 -0
  56. package/dist/web/assets/cynefinDiagram-MW4NZA55-D9tIBEvv.js.gz +0 -0
  57. package/dist/web/assets/{diagram-7IWD3JNH-By70CZGW.js → diagram-7IWD3JNH-BfnXF08-.js} +1 -1
  58. package/dist/web/assets/diagram-7IWD3JNH-BfnXF08-.js.br +0 -0
  59. package/dist/web/assets/diagram-7IWD3JNH-BfnXF08-.js.gz +0 -0
  60. package/dist/web/assets/{diagram-LBJQPF4R-yLEEPweE.js → diagram-LBJQPF4R-BlYQtbyl.js} +1 -1
  61. package/dist/web/assets/diagram-LBJQPF4R-BlYQtbyl.js.br +0 -0
  62. package/dist/web/assets/diagram-LBJQPF4R-BlYQtbyl.js.gz +0 -0
  63. package/dist/web/assets/{diagram-Q27KOJAE-DvtR09mH.js → diagram-Q27KOJAE-CDWObxjb.js} +1 -1
  64. package/dist/web/assets/diagram-Q27KOJAE-CDWObxjb.js.br +0 -0
  65. package/dist/web/assets/diagram-Q27KOJAE-CDWObxjb.js.gz +0 -0
  66. package/dist/web/assets/{diagram-UB23O5K3-CHz0410-.js → diagram-UB23O5K3-DJnddvpy.js} +1 -1
  67. package/dist/web/assets/diagram-UB23O5K3-DJnddvpy.js.br +0 -0
  68. package/dist/web/assets/diagram-UB23O5K3-DJnddvpy.js.gz +0 -0
  69. package/dist/web/assets/dist-BRQ8hrs7.js +1 -0
  70. package/dist/web/assets/dist-BRQ8hrs7.js.br +0 -0
  71. package/dist/web/assets/dist-BRQ8hrs7.js.gz +0 -0
  72. package/dist/web/assets/dist-BS9Es7bq.js +9 -0
  73. package/dist/web/assets/dist-BS9Es7bq.js.br +0 -0
  74. package/dist/web/assets/dist-BS9Es7bq.js.gz +0 -0
  75. package/dist/web/assets/dist-BsHoamEK.js +1 -0
  76. package/dist/web/assets/dist-BsHoamEK.js.br +0 -0
  77. package/dist/web/assets/dist-BsHoamEK.js.gz +0 -0
  78. package/dist/web/assets/dist-C9Xo-R3R.js +23 -0
  79. package/dist/web/assets/dist-C9Xo-R3R.js.br +0 -0
  80. package/dist/web/assets/dist-C9Xo-R3R.js.gz +0 -0
  81. package/dist/web/assets/dist-CYMTYgBk.js +1 -0
  82. package/dist/web/assets/dist-CYMTYgBk.js.br +0 -0
  83. package/dist/web/assets/dist-CYMTYgBk.js.gz +0 -0
  84. package/dist/web/assets/dist-CZxkC4sf.js +1 -0
  85. package/dist/web/assets/dist-CZxkC4sf.js.br +0 -0
  86. package/dist/web/assets/dist-CZxkC4sf.js.gz +0 -0
  87. package/dist/web/assets/dist-Cdr0TsB-.js +1 -0
  88. package/dist/web/assets/dist-Cdr0TsB-.js.br +0 -0
  89. package/dist/web/assets/dist-Cdr0TsB-.js.gz +0 -0
  90. package/dist/web/assets/{dist-jnof4ZZu.js → dist-Ci1kbFbB.js} +1 -1
  91. package/dist/web/assets/dist-Ci1kbFbB.js.br +0 -0
  92. package/dist/web/assets/dist-Ci1kbFbB.js.gz +0 -0
  93. package/dist/web/assets/dist-D5aBWTdK.js +1 -0
  94. package/dist/web/assets/dist-D5aBWTdK.js.br +0 -0
  95. package/dist/web/assets/dist-D5aBWTdK.js.gz +0 -0
  96. package/dist/web/assets/dist-DQyQRzkb.js +1 -0
  97. package/dist/web/assets/dist-DQyQRzkb.js.br +0 -0
  98. package/dist/web/assets/dist-DQyQRzkb.js.gz +0 -0
  99. package/dist/web/assets/dist-Dda7I8j1.js +6 -0
  100. package/dist/web/assets/dist-Dda7I8j1.js.br +0 -0
  101. package/dist/web/assets/dist-Dda7I8j1.js.gz +0 -0
  102. package/dist/web/assets/dist-ZywOhMVT.js +1 -0
  103. package/dist/web/assets/dist-ZywOhMVT.js.br +0 -0
  104. package/dist/web/assets/dist-ZywOhMVT.js.gz +0 -0
  105. package/dist/web/assets/dist-dQCgoXMl.js +2 -0
  106. package/dist/web/assets/dist-dQCgoXMl.js.br +0 -0
  107. package/dist/web/assets/dist-dQCgoXMl.js.gz +0 -0
  108. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-CV8xXTHv.js → ebnfDiagram-BXEA7PRR-D_b18zMS.js} +1 -1
  109. package/dist/web/assets/ebnfDiagram-BXEA7PRR-D_b18zMS.js.br +0 -0
  110. package/dist/web/assets/ebnfDiagram-BXEA7PRR-D_b18zMS.js.gz +0 -0
  111. package/dist/web/assets/{erDiagram-JOGREHBK-BijmGpoF.js → erDiagram-JOGREHBK-BOKR1NS3.js} +1 -1
  112. package/dist/web/assets/erDiagram-JOGREHBK-BOKR1NS3.js.br +0 -0
  113. package/dist/web/assets/erDiagram-JOGREHBK-BOKR1NS3.js.gz +0 -0
  114. package/dist/web/assets/file-review-dialog-DvgO1Ae8.js +2 -0
  115. package/dist/web/assets/file-review-dialog-DvgO1Ae8.js.br +0 -0
  116. package/dist/web/assets/file-review-dialog-DvgO1Ae8.js.gz +0 -0
  117. package/dist/web/assets/{flowDiagram-UKHOOZJN-BmGD99Sz.js → flowDiagram-UKHOOZJN-CEamRwMR.js} +1 -1
  118. package/dist/web/assets/flowDiagram-UKHOOZJN-CEamRwMR.js.br +0 -0
  119. package/dist/web/assets/flowDiagram-UKHOOZJN-CEamRwMR.js.gz +0 -0
  120. package/dist/web/assets/git-commit-review-D5ge3jwI.js +2 -0
  121. package/dist/web/assets/git-commit-review-D5ge3jwI.js.br +0 -0
  122. package/dist/web/assets/git-commit-review-D5ge3jwI.js.gz +0 -0
  123. package/dist/web/assets/git-history-panel-DsGqR_Zc.js +1 -0
  124. package/dist/web/assets/git-history-panel-DsGqR_Zc.js.br +0 -0
  125. package/dist/web/assets/git-history-panel-DsGqR_Zc.js.gz +0 -0
  126. package/dist/web/assets/global-search-dialog-JzDBjqX4.js +2 -0
  127. package/dist/web/assets/global-search-dialog-JzDBjqX4.js.br +0 -0
  128. package/dist/web/assets/global-search-dialog-JzDBjqX4.js.gz +0 -0
  129. package/dist/web/assets/{global-settings-about-D9N_zbp_.js → global-settings-about-CULXi1Dn.js} +1 -1
  130. package/dist/web/assets/global-settings-about-CULXi1Dn.js.br +0 -0
  131. package/dist/web/assets/global-settings-about-CULXi1Dn.js.gz +0 -0
  132. package/dist/web/assets/global-settings-page-AK_j6aZC.js +2 -0
  133. package/dist/web/assets/global-settings-page-AK_j6aZC.js.br +0 -0
  134. package/dist/web/assets/global-settings-page-AK_j6aZC.js.gz +0 -0
  135. package/dist/web/assets/{global-settings-pets-DzP64-PW.js → global-settings-pets-hPG36aUL.js} +1 -1
  136. package/dist/web/assets/global-settings-pets-hPG36aUL.js.br +0 -0
  137. package/dist/web/assets/global-settings-pets-hPG36aUL.js.gz +0 -0
  138. package/dist/web/assets/{highlighted-body-OFNGDK62-Bt8Ro1l8.js → highlighted-body-OFNGDK62-CoO9fhim.js} +1 -1
  139. package/dist/web/assets/highlighted-body-OFNGDK62-CoO9fhim.js.br +0 -0
  140. package/dist/web/assets/highlighted-body-OFNGDK62-CoO9fhim.js.gz +0 -0
  141. package/dist/web/assets/{history-task-timeline-C-NMmZZ-.js → history-task-timeline-CQphWf0m.js} +1 -1
  142. package/dist/web/assets/history-task-timeline-CQphWf0m.js.br +0 -0
  143. package/dist/web/assets/history-task-timeline-CQphWf0m.js.gz +0 -0
  144. package/dist/web/assets/{image-preview-DiO8_dX0.js → image-preview-Dtx8uVmp.js} +2 -2
  145. package/dist/web/assets/image-preview-Dtx8uVmp.js.br +0 -0
  146. package/dist/web/assets/image-preview-Dtx8uVmp.js.gz +0 -0
  147. package/dist/web/assets/{image-preview-content-qI8-1LIR.js → image-preview-content-zLsEpLCA.js} +2 -2
  148. package/dist/web/assets/image-preview-content-zLsEpLCA.js.br +0 -0
  149. package/dist/web/assets/image-preview-content-zLsEpLCA.js.gz +0 -0
  150. package/dist/web/assets/index-BUv6KmcO.css +2 -0
  151. package/dist/web/assets/index-BUv6KmcO.css.br +0 -0
  152. package/dist/web/assets/index-BUv6KmcO.css.gz +0 -0
  153. package/dist/web/assets/index-DR8WqP5v.js +4 -0
  154. package/dist/web/assets/index-DR8WqP5v.js.br +0 -0
  155. package/dist/web/assets/index-DR8WqP5v.js.gz +0 -0
  156. package/dist/web/assets/{infoDiagram-6WML65LV-uUbDSCmK.js → infoDiagram-6WML65LV-DegAUKx4.js} +1 -1
  157. package/dist/web/assets/infoDiagram-6WML65LV-DegAUKx4.js.br +0 -0
  158. package/dist/web/assets/infoDiagram-6WML65LV-DegAUKx4.js.gz +0 -0
  159. package/dist/web/assets/{initial-deps-CjThEvcM.js → initial-deps-Be-R---T.js} +1 -1
  160. package/dist/web/assets/initial-deps-Be-R---T.js.br +0 -0
  161. package/dist/web/assets/initial-deps-Be-R---T.js.gz +0 -0
  162. package/dist/web/assets/initial-deps-DRuEePWq.js +2 -0
  163. package/dist/web/assets/initial-deps-DRuEePWq.js.br +0 -0
  164. package/dist/web/assets/initial-deps-DRuEePWq.js.gz +0 -0
  165. package/dist/web/assets/{initial-deps-Hmv0m4RH.js → initial-deps-Dk9v1WhK.js} +1 -1
  166. package/dist/web/assets/initial-deps-Dk9v1WhK.js.br +0 -0
  167. package/dist/web/assets/{initial-deps-Hmv0m4RH.js.gz → initial-deps-Dk9v1WhK.js.gz} +0 -0
  168. package/dist/web/assets/{installed-skills-pane-Duf2Drj5.js → installed-skills-pane-DBJ_KuXN.js} +1 -1
  169. package/dist/web/assets/installed-skills-pane-DBJ_KuXN.js.br +0 -0
  170. package/dist/web/assets/installed-skills-pane-DBJ_KuXN.js.gz +0 -0
  171. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-BiGqQPSQ.js → ishikawaDiagram-WSZJBQD7-CcWhd8w9.js} +1 -1
  172. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-CcWhd8w9.js.br +0 -0
  173. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-CcWhd8w9.js.gz +0 -0
  174. package/dist/web/assets/{kanban-definition-27J2QSJJ-Cn26tmRk.js → kanban-definition-27J2QSJJ-DEkge27F.js} +1 -1
  175. package/dist/web/assets/kanban-definition-27J2QSJJ-DEkge27F.js.br +0 -0
  176. package/dist/web/assets/kanban-definition-27J2QSJJ-DEkge27F.js.gz +0 -0
  177. package/dist/web/assets/lazy-message-response-3j-D3CVS.js +2 -0
  178. package/dist/web/assets/lazy-message-response-3j-D3CVS.js.br +0 -0
  179. package/dist/web/assets/lazy-message-response-3j-D3CVS.js.gz +0 -0
  180. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js +65 -0
  181. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.br +0 -0
  182. package/dist/web/assets/markdown-finalization.worker-DzLgTkf3.js.gz +0 -0
  183. package/dist/web/assets/{mcp-management-pane-CDJGAeMR.js → mcp-management-pane-16qr0aVZ.js} +1 -1
  184. package/dist/web/assets/mcp-management-pane-16qr0aVZ.js.br +0 -0
  185. package/dist/web/assets/mcp-management-pane-16qr0aVZ.js.gz +0 -0
  186. package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js +1 -0
  187. package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js.br +0 -0
  188. package/dist/web/assets/mermaid-GHXKKRXX-kGjGANId.js.gz +0 -0
  189. package/dist/web/assets/message-response-DWYIVlqg.js +188 -0
  190. package/dist/web/assets/message-response-DWYIVlqg.js.br +0 -0
  191. package/dist/web/assets/message-response-DWYIVlqg.js.gz +0 -0
  192. package/dist/web/assets/{mindmap-definition-FAOFIHXS-B4YXdlAS.js → mindmap-definition-FAOFIHXS-DubrGaue.js} +1 -1
  193. package/dist/web/assets/mindmap-definition-FAOFIHXS-DubrGaue.js.br +0 -0
  194. package/dist/web/assets/mindmap-definition-FAOFIHXS-DubrGaue.js.gz +0 -0
  195. package/dist/web/assets/{official-plugins-pane-DK8qT-_B.js → official-plugins-pane-vADxh_le.js} +1 -1
  196. package/dist/web/assets/official-plugins-pane-vADxh_le.js.br +0 -0
  197. package/dist/web/assets/official-plugins-pane-vADxh_le.js.gz +0 -0
  198. package/dist/web/assets/{patch-diff-viewer-BXC_BZDr.js → patch-diff-viewer-C5hjChAK.js} +3 -3
  199. package/dist/web/assets/patch-diff-viewer-C5hjChAK.js.br +0 -0
  200. package/dist/web/assets/patch-diff-viewer-C5hjChAK.js.gz +0 -0
  201. package/dist/web/assets/pdf-preview-BG-XpATo.js +3 -0
  202. package/dist/web/assets/pdf-preview-BG-XpATo.js.br +0 -0
  203. package/dist/web/assets/pdf-preview-BG-XpATo.js.gz +0 -0
  204. package/dist/web/assets/{pegDiagram-VL7TDLO6-NbYGYJTB.js → pegDiagram-VL7TDLO6-CJodWN8I.js} +1 -1
  205. package/dist/web/assets/pegDiagram-VL7TDLO6-CJodWN8I.js.br +0 -0
  206. package/dist/web/assets/pegDiagram-VL7TDLO6-CJodWN8I.js.gz +0 -0
  207. package/dist/web/assets/{personalization-settings-panel-kuddr4pp.js → personalization-settings-panel-Br7qXDQ7.js} +1 -1
  208. package/dist/web/assets/personalization-settings-panel-Br7qXDQ7.js.br +0 -0
  209. package/dist/web/assets/personalization-settings-panel-Br7qXDQ7.js.gz +0 -0
  210. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-yHKToX8b.js → pieDiagram-7S7Q4E2Y-CHATPeJh.js} +1 -1
  211. package/dist/web/assets/pieDiagram-7S7Q4E2Y-CHATPeJh.js.br +0 -0
  212. package/dist/web/assets/pieDiagram-7S7Q4E2Y-CHATPeJh.js.gz +0 -0
  213. package/dist/web/assets/{project-file-popup-page-6En9Rr6E.js → project-file-popup-page-CmNJLTSV.js} +1 -1
  214. package/dist/web/assets/project-file-popup-page-CmNJLTSV.js.br +0 -0
  215. package/dist/web/assets/project-file-popup-page-CmNJLTSV.js.gz +0 -0
  216. package/dist/web/assets/project-source-panel-ze7jsbMy.js +2 -0
  217. package/dist/web/assets/project-source-panel-ze7jsbMy.js.br +0 -0
  218. package/dist/web/assets/project-source-panel-ze7jsbMy.js.gz +0 -0
  219. package/dist/web/assets/{prompt-input-C1ywdkU4.js → prompt-input-Brfimssc.js} +1 -1
  220. package/dist/web/assets/prompt-input-Brfimssc.js.br +0 -0
  221. package/dist/web/assets/prompt-input-Brfimssc.js.gz +0 -0
  222. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js +3 -0
  223. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js.br +0 -0
  224. package/dist/web/assets/prompt-reference-token-BW8a7fO2.js.gz +0 -0
  225. package/dist/web/assets/{railroadDiagram-AXF67PYL-DWQcic4X.js → railroadDiagram-AXF67PYL-BOP9pMNb.js} +1 -1
  226. package/dist/web/assets/railroadDiagram-AXF67PYL-BOP9pMNb.js.br +0 -0
  227. package/dist/web/assets/railroadDiagram-AXF67PYL-BOP9pMNb.js.gz +0 -0
  228. package/dist/web/assets/{requirementDiagram-LRYGKXZP-CPzp08lo.js → requirementDiagram-LRYGKXZP-CG8KWt_j.js} +1 -1
  229. package/dist/web/assets/requirementDiagram-LRYGKXZP-CG8KWt_j.js.br +0 -0
  230. package/dist/web/assets/requirementDiagram-LRYGKXZP-CG8KWt_j.js.gz +0 -0
  231. package/dist/web/assets/{scheduled-task-date-time-picker-BS5y3xEd.js → scheduled-task-date-time-picker-DeOtns9O.js} +1 -1
  232. package/dist/web/assets/scheduled-task-date-time-picker-DeOtns9O.js.br +0 -0
  233. package/dist/web/assets/scheduled-task-date-time-picker-DeOtns9O.js.gz +0 -0
  234. package/dist/web/assets/{scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js → scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js} +1 -1
  235. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js.br +0 -0
  236. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-CbWhx_7u.js.gz +0 -0
  237. package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js +2 -0
  238. package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js.br +0 -0
  239. package/dist/web/assets/scheduled-tasks-container-a34CrlrM.js.gz +0 -0
  240. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-ZN8ZLfuR.js → sequenceDiagram-SI44F4Z6-DbZoTul2.js} +1 -1
  241. package/dist/web/assets/sequenceDiagram-SI44F4Z6-DbZoTul2.js.br +0 -0
  242. package/dist/web/assets/sequenceDiagram-SI44F4Z6-DbZoTul2.js.gz +0 -0
  243. package/dist/web/assets/{sheet-DQXlYPSf.js → sheet-B9MDuGoF.js} +1 -1
  244. package/dist/web/assets/sheet-B9MDuGoF.js.br +0 -0
  245. package/dist/web/assets/sheet-B9MDuGoF.js.gz +0 -0
  246. package/dist/web/assets/{shiki-bundle-BHjdRMkM.js → shiki-bundle-BlbGsyMZ.js} +1 -1
  247. package/dist/web/assets/shiki-bundle-BlbGsyMZ.js.br +0 -0
  248. package/dist/web/assets/shiki-bundle-BlbGsyMZ.js.gz +0 -0
  249. package/dist/web/assets/skills-market-container-CWO3CeMr.js +2 -0
  250. package/dist/web/assets/skills-market-container-CWO3CeMr.js.br +0 -0
  251. package/dist/web/assets/skills-market-container-CWO3CeMr.js.gz +0 -0
  252. package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js +1 -0
  253. package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js.br +0 -0
  254. package/dist/web/assets/split-workspace-menu-content-rImPq6wj.js.gz +0 -0
  255. package/dist/web/assets/{stateDiagram-OKZ733FA-BM7CXH39.js → stateDiagram-OKZ733FA-BBZnBYr0.js} +1 -1
  256. package/dist/web/assets/stateDiagram-OKZ733FA-BBZnBYr0.js.br +0 -0
  257. package/dist/web/assets/stateDiagram-OKZ733FA-BBZnBYr0.js.gz +0 -0
  258. package/dist/web/assets/{stateDiagram-v2-UEYNNEHI-CmijPEeQ.js → stateDiagram-v2-UEYNNEHI-DrsX6D2d.js} +1 -1
  259. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DrsX6D2d.js.br +1 -0
  260. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DrsX6D2d.js.gz +0 -0
  261. package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-CKfmTZ-C.js → swimlanesDiagram-ULZ7WXOC-RILHYzJF.js} +1 -1
  262. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-RILHYzJF.js.br +0 -0
  263. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-RILHYzJF.js.gz +0 -0
  264. package/dist/web/assets/text-file-editor-CEKsFPli.js +14 -0
  265. package/dist/web/assets/text-file-editor-CEKsFPli.js.br +0 -0
  266. package/dist/web/assets/text-file-editor-CEKsFPli.js.gz +0 -0
  267. package/dist/web/assets/{third-party-marketplace-pane-CLT2SrUQ.js → third-party-marketplace-pane-DKWMNoa3.js} +1 -1
  268. package/dist/web/assets/third-party-marketplace-pane-DKWMNoa3.js.br +0 -0
  269. package/dist/web/assets/third-party-marketplace-pane-DKWMNoa3.js.gz +0 -0
  270. package/dist/web/assets/{timeline-definition-Z64GVDOM-2ViTcv_D.js → timeline-definition-Z64GVDOM-BQMes8Ld.js} +1 -1
  271. package/dist/web/assets/timeline-definition-Z64GVDOM-BQMes8Ld.js.br +0 -0
  272. package/dist/web/assets/timeline-definition-Z64GVDOM-BQMes8Ld.js.gz +0 -0
  273. package/dist/web/assets/{vennDiagram-T6HMQDX7-DtvEprHV.js → vennDiagram-T6HMQDX7-qBMuOWPn.js} +1 -1
  274. package/dist/web/assets/vennDiagram-T6HMQDX7-qBMuOWPn.js.br +0 -0
  275. package/dist/web/assets/vennDiagram-T6HMQDX7-qBMuOWPn.js.gz +0 -0
  276. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-BIYFyd3H.js → wardleyDiagram-T6FBY63Y-BXVFrJeX.js} +1 -1
  277. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BXVFrJeX.js.br +0 -0
  278. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BXVFrJeX.js.gz +0 -0
  279. package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js +2 -0
  280. package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js.br +0 -0
  281. package/dist/web/assets/workbench-inspector-changes-D5k96_nR.js.gz +0 -0
  282. package/dist/web/assets/{workbench-pet-canvas-CK9lEOvO.js → workbench-pet-canvas-BM6S31jL.js} +1 -1
  283. package/dist/web/assets/workbench-pet-canvas-BM6S31jL.js.br +0 -0
  284. package/dist/web/assets/workbench-pet-canvas-BM6S31jL.js.gz +0 -0
  285. package/dist/web/assets/workbench-shell-DEH5FG9a.js +14 -0
  286. package/dist/web/assets/workbench-shell-DEH5FG9a.js.br +0 -0
  287. package/dist/web/assets/workbench-shell-DEH5FG9a.js.gz +0 -0
  288. package/dist/web/assets/{xychartDiagram-ELKLHX3M-CFaKO_zz.js → xychartDiagram-ELKLHX3M-DT2u1V83.js} +1 -1
  289. package/dist/web/assets/xychartDiagram-ELKLHX3M-DT2u1V83.js.br +0 -0
  290. package/dist/web/assets/xychartDiagram-ELKLHX3M-DT2u1V83.js.gz +0 -0
  291. package/dist/web/index.html +6 -7
  292. package/dist/web/index.html.br +0 -0
  293. package/dist/web/index.html.gz +0 -0
  294. package/package.json +1 -1
  295. package/dist/web/assets/abnfDiagram-N423BO3Z-N5qHzn33.js.br +0 -0
  296. package/dist/web/assets/abnfDiagram-N423BO3Z-N5qHzn33.js.gz +0 -0
  297. package/dist/web/assets/agent-settings-panel-BEjmbkLC.js.br +0 -0
  298. package/dist/web/assets/agent-settings-panel-BEjmbkLC.js.gz +0 -0
  299. package/dist/web/assets/architectureDiagram-T3A2C74G-iq1e_PZv.js.br +0 -0
  300. package/dist/web/assets/background-image-picker-DlIaB70A.js.br +0 -0
  301. package/dist/web/assets/background-image-picker-DlIaB70A.js.gz +0 -0
  302. package/dist/web/assets/chunk-5RXB4S5H-6sn5NP9q.js.br +0 -0
  303. package/dist/web/assets/chunk-5RXB4S5H-6sn5NP9q.js.gz +0 -0
  304. package/dist/web/assets/chunk-6Q2QTUOP-BtzeG1FZ.js.br +0 -0
  305. package/dist/web/assets/chunk-6Q2QTUOP-BtzeG1FZ.js.gz +0 -0
  306. package/dist/web/assets/chunk-GF5L2VYU-DGhiJb6X.js.br +0 -0
  307. package/dist/web/assets/chunk-GF5L2VYU-DGhiJb6X.js.gz +0 -0
  308. package/dist/web/assets/chunk-JQJVKLGR-B7ezqhFY.js.br +0 -0
  309. package/dist/web/assets/chunk-JQJVKLGR-B7ezqhFY.js.gz +0 -0
  310. package/dist/web/assets/classDiagram-JCYQIIEL-BB7G_j3w.js.br +0 -0
  311. package/dist/web/assets/classDiagram-JCYQIIEL-BB7G_j3w.js.gz +0 -0
  312. package/dist/web/assets/classDiagram-v2-OCEON4UE-BB7G_j3w.js.br +0 -0
  313. package/dist/web/assets/classDiagram-v2-OCEON4UE-BB7G_j3w.js.gz +0 -0
  314. package/dist/web/assets/code-highlighter-DPLcL7tE.js +0 -1
  315. package/dist/web/assets/code-highlighter-DPLcL7tE.js.br +0 -0
  316. package/dist/web/assets/code-highlighter-DPLcL7tE.js.gz +0 -0
  317. package/dist/web/assets/commit-settings-panel-espYgo6c.js.br +0 -0
  318. package/dist/web/assets/commit-settings-panel-espYgo6c.js.gz +0 -0
  319. package/dist/web/assets/cynefinDiagram-MW4NZA55-CkDwFn1d.js.br +0 -0
  320. package/dist/web/assets/cynefinDiagram-MW4NZA55-CkDwFn1d.js.gz +0 -0
  321. package/dist/web/assets/diagram-7IWD3JNH-By70CZGW.js.br +0 -0
  322. package/dist/web/assets/diagram-7IWD3JNH-By70CZGW.js.gz +0 -0
  323. package/dist/web/assets/diagram-LBJQPF4R-yLEEPweE.js.br +0 -0
  324. package/dist/web/assets/diagram-LBJQPF4R-yLEEPweE.js.gz +0 -0
  325. package/dist/web/assets/diagram-Q27KOJAE-DvtR09mH.js.br +0 -0
  326. package/dist/web/assets/diagram-Q27KOJAE-DvtR09mH.js.gz +0 -0
  327. package/dist/web/assets/diagram-UB23O5K3-CHz0410-.js.br +0 -0
  328. package/dist/web/assets/diagram-UB23O5K3-CHz0410-.js.gz +0 -0
  329. package/dist/web/assets/dist-jnof4ZZu.js.br +0 -0
  330. package/dist/web/assets/dist-jnof4ZZu.js.gz +0 -0
  331. package/dist/web/assets/ebnfDiagram-BXEA7PRR-CV8xXTHv.js.br +0 -0
  332. package/dist/web/assets/ebnfDiagram-BXEA7PRR-CV8xXTHv.js.gz +0 -0
  333. package/dist/web/assets/erDiagram-JOGREHBK-BijmGpoF.js.br +0 -0
  334. package/dist/web/assets/erDiagram-JOGREHBK-BijmGpoF.js.gz +0 -0
  335. package/dist/web/assets/file-review-dialog-B7ZZsWSg.js +0 -2
  336. package/dist/web/assets/file-review-dialog-B7ZZsWSg.js.br +0 -0
  337. package/dist/web/assets/file-review-dialog-B7ZZsWSg.js.gz +0 -0
  338. package/dist/web/assets/flowDiagram-UKHOOZJN-BmGD99Sz.js.br +0 -0
  339. package/dist/web/assets/flowDiagram-UKHOOZJN-BmGD99Sz.js.gz +0 -0
  340. package/dist/web/assets/git-commit-review-BkVSj-PK.js +0 -2
  341. package/dist/web/assets/git-commit-review-BkVSj-PK.js.br +0 -0
  342. package/dist/web/assets/git-commit-review-BkVSj-PK.js.gz +0 -0
  343. package/dist/web/assets/git-history-panel-BlX3-8Lo.js +0 -1
  344. package/dist/web/assets/git-history-panel-BlX3-8Lo.js.br +0 -0
  345. package/dist/web/assets/git-history-panel-BlX3-8Lo.js.gz +0 -0
  346. package/dist/web/assets/global-search-dialog-Dhkbc7CQ.js +0 -2
  347. package/dist/web/assets/global-search-dialog-Dhkbc7CQ.js.br +0 -0
  348. package/dist/web/assets/global-search-dialog-Dhkbc7CQ.js.gz +0 -0
  349. package/dist/web/assets/global-settings-about-D9N_zbp_.js.br +0 -0
  350. package/dist/web/assets/global-settings-about-D9N_zbp_.js.gz +0 -0
  351. package/dist/web/assets/global-settings-page-CFWea4X9.js +0 -2
  352. package/dist/web/assets/global-settings-page-CFWea4X9.js.br +0 -0
  353. package/dist/web/assets/global-settings-page-CFWea4X9.js.gz +0 -0
  354. package/dist/web/assets/global-settings-pets-DzP64-PW.js.br +0 -0
  355. package/dist/web/assets/global-settings-pets-DzP64-PW.js.gz +0 -0
  356. package/dist/web/assets/highlighted-body-OFNGDK62-Bt8Ro1l8.js.br +0 -0
  357. package/dist/web/assets/highlighted-body-OFNGDK62-Bt8Ro1l8.js.gz +0 -0
  358. package/dist/web/assets/history-task-timeline-C-NMmZZ-.js.br +0 -0
  359. package/dist/web/assets/history-task-timeline-C-NMmZZ-.js.gz +0 -0
  360. package/dist/web/assets/image-preview-DiO8_dX0.js.br +0 -0
  361. package/dist/web/assets/image-preview-DiO8_dX0.js.gz +0 -0
  362. package/dist/web/assets/image-preview-content-qI8-1LIR.js.br +0 -0
  363. package/dist/web/assets/image-preview-content-qI8-1LIR.js.gz +0 -0
  364. package/dist/web/assets/index-HGztPHO8.js +0 -4
  365. package/dist/web/assets/index-HGztPHO8.js.br +0 -0
  366. package/dist/web/assets/index-HGztPHO8.js.gz +0 -0
  367. package/dist/web/assets/index-tfIo-15z.css +0 -2
  368. package/dist/web/assets/index-tfIo-15z.css.br +0 -0
  369. package/dist/web/assets/index-tfIo-15z.css.gz +0 -0
  370. package/dist/web/assets/infoDiagram-6WML65LV-uUbDSCmK.js.br +0 -0
  371. package/dist/web/assets/infoDiagram-6WML65LV-uUbDSCmK.js.gz +0 -0
  372. package/dist/web/assets/initial-deps-3Wb3IGZt.js +0 -2
  373. package/dist/web/assets/initial-deps-3Wb3IGZt.js.br +0 -0
  374. package/dist/web/assets/initial-deps-3Wb3IGZt.js.gz +0 -0
  375. package/dist/web/assets/initial-deps-CjThEvcM.js.br +0 -0
  376. package/dist/web/assets/initial-deps-CjThEvcM.js.gz +0 -0
  377. package/dist/web/assets/initial-deps-Hmv0m4RH.js.br +0 -0
  378. package/dist/web/assets/installed-skills-pane-Duf2Drj5.js.br +0 -0
  379. package/dist/web/assets/installed-skills-pane-Duf2Drj5.js.gz +0 -0
  380. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BiGqQPSQ.js.br +0 -0
  381. package/dist/web/assets/ishikawaDiagram-WSZJBQD7-BiGqQPSQ.js.gz +0 -0
  382. package/dist/web/assets/kanban-definition-27J2QSJJ-Cn26tmRk.js.br +0 -0
  383. package/dist/web/assets/kanban-definition-27J2QSJJ-Cn26tmRk.js.gz +0 -0
  384. package/dist/web/assets/lazy-message-response-BwDvftCZ.js +0 -2
  385. package/dist/web/assets/lazy-message-response-BwDvftCZ.js.br +0 -0
  386. package/dist/web/assets/lazy-message-response-BwDvftCZ.js.gz +0 -0
  387. package/dist/web/assets/mcp-management-pane-CDJGAeMR.js.br +0 -0
  388. package/dist/web/assets/mcp-management-pane-CDJGAeMR.js.gz +0 -0
  389. package/dist/web/assets/mermaid-GHXKKRXX-DcFI66qc.js +0 -1
  390. package/dist/web/assets/mermaid-GHXKKRXX-DcFI66qc.js.br +0 -0
  391. package/dist/web/assets/mermaid-GHXKKRXX-DcFI66qc.js.gz +0 -0
  392. package/dist/web/assets/message-response-CTSaT37R.js +0 -190
  393. package/dist/web/assets/message-response-CTSaT37R.js.br +0 -0
  394. package/dist/web/assets/message-response-CTSaT37R.js.gz +0 -0
  395. package/dist/web/assets/mindmap-definition-FAOFIHXS-B4YXdlAS.js.br +0 -0
  396. package/dist/web/assets/mindmap-definition-FAOFIHXS-B4YXdlAS.js.gz +0 -0
  397. package/dist/web/assets/official-plugins-pane-DK8qT-_B.js.br +0 -0
  398. package/dist/web/assets/official-plugins-pane-DK8qT-_B.js.gz +0 -0
  399. package/dist/web/assets/patch-diff-viewer-BXC_BZDr.js.br +0 -0
  400. package/dist/web/assets/patch-diff-viewer-BXC_BZDr.js.gz +0 -0
  401. package/dist/web/assets/pegDiagram-VL7TDLO6-NbYGYJTB.js.br +0 -0
  402. package/dist/web/assets/pegDiagram-VL7TDLO6-NbYGYJTB.js.gz +0 -0
  403. package/dist/web/assets/personalization-settings-panel-kuddr4pp.js.br +0 -0
  404. package/dist/web/assets/personalization-settings-panel-kuddr4pp.js.gz +0 -0
  405. package/dist/web/assets/pieDiagram-7S7Q4E2Y-yHKToX8b.js.br +0 -0
  406. package/dist/web/assets/pieDiagram-7S7Q4E2Y-yHKToX8b.js.gz +0 -0
  407. package/dist/web/assets/project-file-popup-page-6En9Rr6E.js.br +0 -0
  408. package/dist/web/assets/project-file-popup-page-6En9Rr6E.js.gz +0 -0
  409. package/dist/web/assets/project-source-panel-CBX-E9jx.js +0 -3
  410. package/dist/web/assets/project-source-panel-CBX-E9jx.js.br +0 -0
  411. package/dist/web/assets/project-source-panel-CBX-E9jx.js.gz +0 -0
  412. package/dist/web/assets/prompt-input-C1ywdkU4.js.br +0 -0
  413. package/dist/web/assets/prompt-input-C1ywdkU4.js.gz +0 -0
  414. package/dist/web/assets/prompt-reference-token-cMxHiKmI.js +0 -1
  415. package/dist/web/assets/prompt-reference-token-cMxHiKmI.js.br +0 -0
  416. package/dist/web/assets/prompt-reference-token-cMxHiKmI.js.gz +0 -0
  417. package/dist/web/assets/railroadDiagram-AXF67PYL-DWQcic4X.js.br +0 -0
  418. package/dist/web/assets/railroadDiagram-AXF67PYL-DWQcic4X.js.gz +0 -0
  419. package/dist/web/assets/requirementDiagram-LRYGKXZP-CPzp08lo.js.br +0 -0
  420. package/dist/web/assets/requirementDiagram-LRYGKXZP-CPzp08lo.js.gz +0 -0
  421. package/dist/web/assets/scheduled-task-date-time-picker-BS5y3xEd.js.br +0 -0
  422. package/dist/web/assets/scheduled-task-date-time-picker-BS5y3xEd.js.gz +0 -0
  423. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.br +0 -0
  424. package/dist/web/assets/scheduled-task-floating-ui~scheduled-task-date-time-picker-C9XdROQX.js.gz +0 -0
  425. package/dist/web/assets/scheduled-tasks-container-PGgSoPpl.js +0 -2
  426. package/dist/web/assets/scheduled-tasks-container-PGgSoPpl.js.br +0 -0
  427. package/dist/web/assets/scheduled-tasks-container-PGgSoPpl.js.gz +0 -0
  428. package/dist/web/assets/sequenceDiagram-SI44F4Z6-ZN8ZLfuR.js.br +0 -0
  429. package/dist/web/assets/sequenceDiagram-SI44F4Z6-ZN8ZLfuR.js.gz +0 -0
  430. package/dist/web/assets/sheet-DQXlYPSf.js.br +0 -0
  431. package/dist/web/assets/sheet-DQXlYPSf.js.gz +0 -0
  432. package/dist/web/assets/shiki-bundle-BHjdRMkM.js.br +0 -0
  433. package/dist/web/assets/shiki-bundle-BHjdRMkM.js.gz +0 -0
  434. package/dist/web/assets/skills-market-container-CBcJhTq0.js +0 -2
  435. package/dist/web/assets/skills-market-container-CBcJhTq0.js.br +0 -0
  436. package/dist/web/assets/skills-market-container-CBcJhTq0.js.gz +0 -0
  437. package/dist/web/assets/snapshot-memory-BU8oqjvK.js +0 -1
  438. package/dist/web/assets/snapshot-memory-BU8oqjvK.js.br +0 -0
  439. package/dist/web/assets/snapshot-memory-BU8oqjvK.js.gz +0 -0
  440. package/dist/web/assets/split-workspace-menu-content-CsWwhnXx.js +0 -1
  441. package/dist/web/assets/split-workspace-menu-content-CsWwhnXx.js.br +0 -0
  442. package/dist/web/assets/split-workspace-menu-content-CsWwhnXx.js.gz +0 -0
  443. package/dist/web/assets/stateDiagram-OKZ733FA-BM7CXH39.js.br +0 -0
  444. package/dist/web/assets/stateDiagram-OKZ733FA-BM7CXH39.js.gz +0 -0
  445. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CmijPEeQ.js.br +0 -0
  446. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CmijPEeQ.js.gz +0 -0
  447. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CKfmTZ-C.js.br +0 -0
  448. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CKfmTZ-C.js.gz +0 -0
  449. package/dist/web/assets/third-party-marketplace-pane-CLT2SrUQ.js.br +0 -0
  450. package/dist/web/assets/third-party-marketplace-pane-CLT2SrUQ.js.gz +0 -0
  451. package/dist/web/assets/timeline-definition-Z64GVDOM-2ViTcv_D.js.br +0 -0
  452. package/dist/web/assets/timeline-definition-Z64GVDOM-2ViTcv_D.js.gz +0 -0
  453. package/dist/web/assets/vennDiagram-T6HMQDX7-DtvEprHV.js.br +0 -0
  454. package/dist/web/assets/vennDiagram-T6HMQDX7-DtvEprHV.js.gz +0 -0
  455. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BIYFyd3H.js.br +0 -0
  456. package/dist/web/assets/wardleyDiagram-T6FBY63Y-BIYFyd3H.js.gz +0 -0
  457. package/dist/web/assets/workbench-inspector-changes-Ba7oHLMx.js +0 -2
  458. package/dist/web/assets/workbench-inspector-changes-Ba7oHLMx.js.br +0 -0
  459. package/dist/web/assets/workbench-inspector-changes-Ba7oHLMx.js.gz +0 -0
  460. package/dist/web/assets/workbench-pet-canvas-CK9lEOvO.js.br +0 -0
  461. package/dist/web/assets/workbench-pet-canvas-CK9lEOvO.js.gz +0 -0
  462. package/dist/web/assets/workbench-shell-BwqyzEc4.js +0 -16
  463. package/dist/web/assets/workbench-shell-BwqyzEc4.js.br +0 -0
  464. package/dist/web/assets/workbench-shell-BwqyzEc4.js.gz +0 -0
  465. package/dist/web/assets/xychartDiagram-ELKLHX3M-CFaKO_zz.js.br +0 -0
  466. package/dist/web/assets/xychartDiagram-ELKLHX3M-CFaKO_zz.js.gz +0 -0
  467. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js} +0 -0
  468. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.br → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js.br} +0 -0
  469. /package/dist/web/assets/{scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~5gghezpc-ClgveiMa.js.gz → scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~git-history-pa~l4z6ozb1-ClgveiMa.js.gz} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module';
2
- import { value_exports } from './chunk-NZDI7HXO.js';
3
- import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-FX2JDWP4.js';
2
+ import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-RGMQBXXC.js';
3
+ import { value_exports } from './chunk-OM52Z4J7.js';
4
4
  import { normalizeCustomModelReasoning, WorkbenchPetProviderError, listTaskCatalog, PendingRequestResolutionError, restoreAsyncQuestionAnswers, deleteArchivedTasks, queryCompletedTasks, CompletedTasksQueryError, submitTask, TaskSubmissionError, collectQuestionGroups, formatQuestionAnswers, ProjectTodoError, saveProjectTodo } from './chunk-REIMOLGX.js';
5
- import { Type, SkillInstallScopeSchema, ScheduledTaskSchema, SubmitTaskResponseSchema, AgentTaskSchema, AsyncQuestionGroupSchema, AnswerAsyncQuestionResultSchema, AgentTurnSchema, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, BingWallpaperCatalogSchema, HealthResponseSchema, AppInfoResponseSchema, AppUpdateProgressResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, GlobalInstructionsSchema, MemorySettingsSchema, AgentPreferencesSchema, SaveGlobalInstructionsSchema, MemorySettingsUpdateSchema, PersonalizationResetSchema, HistoryCompressionResultSchema, AgentProviderConnectionStatusSchema, StartOfficialProviderLoginResponseSchema, StartOfficialProviderLoginRequestSchema, AgentProviderConnectionMutationResponseSchema, CancelProviderLoginRequestSchema, ConfigureCustomProviderResponseSchema, ConfigureCustomProviderRequestSchema, WorkbenchPetCatalogResponseSchema, WorkbenchPetDownloadResponseSchema, WorkbenchPetDownloadRequestSchema, ProjectPageSchema, HostFileListingSchema, HostFileQuerySchema, ProjectDirectoryListingSchema, ProjectDirectoryQuerySchema, ProjectOpenCapabilitiesResponseSchema, OpenProjectResponseSchema, ProjectRootQuerySchema, OpenProjectRequestSchema, ReorderProjectsResponseSchema, ReorderProjectsRequestSchema, AgentSkillPageSchema, AgentProjectDefaultsResponseSchema, AgentProjectDefaultsSchema, AddProjectResponseSchema, AddProjectRequestSchema, RenameProjectResponseSchema, RenameProjectRequestSchema, RemoveProjectResponseSchema, RemoveProjectRequestSchema, PluginReconcileResultSchema, InstalledSkillPageSchema, OfficialPluginPageSchema, OfficialPluginDetailSchema, OfficialPluginInstallResponseSchema, OfficialPluginUninstallResponseSchema, ClawhubSkillPageSchema, ClawhubSkillDetailSchema, ConfiguredMcpServerPageSchema, OpenSkillDirectoryResponseSchema, SetSkillEnabledResponseSchema, SetMcpServerEnabledResponseSchema, SkillInstallResponseSchema, ScheduledTaskPreviewSchema, ScheduledTaskPreviewRequestSchema, ScheduledTaskPageSchema, ScheduledTaskMutationResponseSchema, ScheduledTaskInputSchema, DeleteScheduledTaskResponseSchema, SetScheduledTaskEnabledRequestSchema, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, TaskSearchPageSchema, TaskSearchQuerySchema, SearchOccurrencesPageSchema, SearchOccurrencesQuerySchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, SubmitTaskRequestSchema, AsyncQuestionPageSchema, AnswerAsyncQuestionResponseSchema, AnswerAsyncQuestionRequestSchema, DismissAsyncQuestionsRequestSchema, ProjectTodoPageSchema, ProjectTodoResponseSchema, ProjectTodoDraftSchema, SaveProjectTodoRequestSchema, DeleteProjectTodoResponseSchema, DeleteProjectTodoRequestSchema, AgentQueuedSubmissionListSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, CODEXLY_USER_AGENT, CreateProjectDirectoryResponseSchema, CreateProjectDirectoryRequestSchema, isValidProjectDirectoryName, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectSourceFileQuerySchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, DeleteArchivedTasksResponseSchema, DeleteArchivedTasksRequestSchema, AgentTaskCatalogSchema, TaskCatalogQuerySchema, CompletedTasksPageSchema, CompletedTasksQuerySchema, UpdateTaskSettingsAndDefaultsResponseSchema, UpdateTaskSettingsAndDefaultsRequestSchema, NavigableAgentTaskResponseSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectTodoSchema, AgentMessageAttachmentSchema, ProjectGitWorktreePageSchema, CreateTaskWorktreeResponseSchema, CreateProjectWorktreeRequestSchema, CreateProjectWorktreeResponseSchema, ProjectWorktreeMutationResponseSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema, MAX_EVENT_BATCH_SIZE } from './chunk-PO2R4H3G.js';
5
+ import { Type, SkillInstallScopeSchema, ScheduledTaskSchema, SubmitTaskResponseSchema, AgentTaskSchema, AsyncQuestionGroupSchema, AnswerAsyncQuestionResultSchema, AgentTurnSchema, MAX_AGENT_EVENT_BYTES, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, BingWallpaperCatalogSchema, HealthResponseSchema, AppInfoResponseSchema, AppUpdateProgressResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, GlobalInstructionsSchema, MemorySettingsSchema, AgentPreferencesSchema, SaveGlobalInstructionsSchema, MemorySettingsUpdateSchema, PersonalizationResetSchema, HistoryCompressionResultSchema, AgentProviderConnectionStatusSchema, StartOfficialProviderLoginResponseSchema, StartOfficialProviderLoginRequestSchema, AgentProviderConnectionMutationResponseSchema, CancelProviderLoginRequestSchema, ConfigureCustomProviderResponseSchema, ConfigureCustomProviderRequestSchema, WorkbenchPetCatalogResponseSchema, WorkbenchPetDownloadResponseSchema, WorkbenchPetDownloadRequestSchema, ProjectPageSchema, HostFileListingSchema, HostFileQuerySchema, ProjectDirectoryListingSchema, ProjectDirectoryQuerySchema, ProjectOpenCapabilitiesResponseSchema, OpenProjectResponseSchema, ProjectRootQuerySchema, OpenProjectRequestSchema, ReorderProjectsResponseSchema, ReorderProjectsRequestSchema, AgentSkillPageSchema, AgentProjectDefaultsResponseSchema, AgentProjectDefaultsSchema, AddProjectResponseSchema, AddProjectRequestSchema, RenameProjectResponseSchema, RenameProjectRequestSchema, RemoveProjectResponseSchema, RemoveProjectRequestSchema, PluginReconcileResultSchema, InstalledSkillPageSchema, OfficialPluginPageSchema, OfficialPluginDetailSchema, OfficialPluginInstallResponseSchema, OfficialPluginUninstallResponseSchema, ClawhubSkillPageSchema, ClawhubSkillDetailSchema, ConfiguredMcpServerPageSchema, OpenSkillDirectoryResponseSchema, SetSkillEnabledResponseSchema, SetMcpServerEnabledResponseSchema, SkillInstallResponseSchema, ScheduledTaskPreviewSchema, ScheduledTaskPreviewRequestSchema, ScheduledTaskPageSchema, ScheduledTaskMutationResponseSchema, ScheduledTaskInputSchema, DeleteScheduledTaskResponseSchema, SetScheduledTaskEnabledRequestSchema, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, TaskSearchPageSchema, TaskSearchQuerySchema, SearchOccurrencesPageSchema, SearchOccurrencesQuerySchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, SubmitTaskRequestSchema, AsyncQuestionPageSchema, AnswerAsyncQuestionResponseSchema, AnswerAsyncQuestionRequestSchema, DismissAsyncQuestionsRequestSchema, ProjectTodoPageSchema, ProjectTodoResponseSchema, ProjectTodoDraftSchema, SaveProjectTodoRequestSchema, DeleteProjectTodoResponseSchema, DeleteProjectTodoRequestSchema, AgentQueuedSubmissionListSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, CODEXLY_USER_AGENT, CreateProjectDirectoryResponseSchema, CreateProjectDirectoryRequestSchema, isValidProjectDirectoryName, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectSourceFileQuerySchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, DeleteArchivedTasksResponseSchema, DeleteArchivedTasksRequestSchema, AgentTaskCatalogSchema, TaskCatalogQuerySchema, CompletedTasksPageSchema, CompletedTasksQuerySchema, UpdateTaskSettingsAndDefaultsResponseSchema, UpdateTaskSettingsAndDefaultsRequestSchema, NavigableAgentTaskResponseSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectTodoSchema, AgentMessageAttachmentSchema, ProjectGitWorktreePageSchema, CreateTaskWorktreeResponseSchema, CreateProjectWorktreeRequestSchema, CreateProjectWorktreeResponseSchema, ProjectWorktreeMutationResponseSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema, ProjectTextFileRevisionSchema, ProjectTextFileSchema, SaveProjectTextFileResponseSchema, SaveProjectTextFileRequestSchema, MAX_TEXT_FILE_BYTES, MAX_EVENT_BATCH_BYTES, MAX_EVENT_BATCH_SIZE } from './chunk-BRKY2HKI.js';
6
6
  import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
7
7
  import { Buffer as Buffer$1 } from 'buffer';
8
8
  import { randomBytes, createHash, timingSafeEqual, randomUUID } from 'crypto';
@@ -287,41 +287,41 @@ var require_queue = __commonJS({
287
287
  queue.drained = drained;
288
288
  return queue;
289
289
  function push(value) {
290
- var p2 = new Promise(function(resolve10, reject) {
290
+ var p2 = new Promise(function(resolve11, reject) {
291
291
  pushCb(value, function(err2, result) {
292
292
  if (err2) {
293
293
  reject(err2);
294
294
  return;
295
295
  }
296
- resolve10(result);
296
+ resolve11(result);
297
297
  });
298
298
  });
299
299
  p2.catch(noop);
300
300
  return p2;
301
301
  }
302
302
  function unshift(value) {
303
- var p2 = new Promise(function(resolve10, reject) {
303
+ var p2 = new Promise(function(resolve11, reject) {
304
304
  unshiftCb(value, function(err2, result) {
305
305
  if (err2) {
306
306
  reject(err2);
307
307
  return;
308
308
  }
309
- resolve10(result);
309
+ resolve11(result);
310
310
  });
311
311
  });
312
312
  p2.catch(noop);
313
313
  return p2;
314
314
  }
315
315
  function drained() {
316
- var p2 = new Promise(function(resolve10) {
316
+ var p2 = new Promise(function(resolve11) {
317
317
  process.nextTick(function() {
318
318
  if (queue.idle()) {
319
- resolve10();
319
+ resolve11();
320
320
  } else {
321
321
  var previousDrain = queue.drain;
322
322
  queue.drain = function() {
323
323
  if (typeof previousDrain === "function") previousDrain();
324
- resolve10();
324
+ resolve11();
325
325
  queue.drain = previousDrain;
326
326
  };
327
327
  }
@@ -658,8 +658,8 @@ var require_create_promise = __commonJS({
658
658
  reject: null,
659
659
  promise: null
660
660
  };
661
- obj.promise = new Promise((resolve10, reject) => {
662
- obj.resolve = resolve10;
661
+ obj.promise = new Promise((resolve11, reject) => {
662
+ obj.resolve = resolve11;
663
663
  obj.reject = reject;
664
664
  });
665
665
  return obj;
@@ -922,11 +922,11 @@ var require_thenify = __commonJS({
922
922
  return;
923
923
  }
924
924
  debug("thenify");
925
- return (resolve10, reject) => {
925
+ return (resolve11, reject) => {
926
926
  const p2 = this._loadRegistered();
927
927
  return p2.then(() => {
928
928
  this[kThenifyDoNotWrap] = true;
929
- return resolve10(this._server);
929
+ return resolve11(this._server);
930
930
  }, reject);
931
931
  };
932
932
  }
@@ -1061,12 +1061,12 @@ var require_avvio = __commonJS({
1061
1061
  inherits(Boot, EE);
1062
1062
  if ("asyncDispose" in Symbol) {
1063
1063
  Boot.prototype[Symbol.asyncDispose] = function() {
1064
- return new Promise((resolve10, reject) => {
1064
+ return new Promise((resolve11, reject) => {
1065
1065
  this.close((err2) => {
1066
1066
  if (err2) {
1067
1067
  return reject(err2);
1068
1068
  }
1069
- resolve10();
1069
+ resolve11();
1070
1070
  });
1071
1071
  });
1072
1072
  };
@@ -1213,12 +1213,12 @@ var require_avvio = __commonJS({
1213
1213
  throw new AVV_ERR_CALLBACK_NOT_FN("close", typeof func);
1214
1214
  }
1215
1215
  } else {
1216
- promise = new Promise(function(resolve10, reject) {
1216
+ promise = new Promise(function(resolve11, reject) {
1217
1217
  func = function(err2) {
1218
1218
  if (err2) {
1219
1219
  return reject(err2);
1220
1220
  }
1221
- resolve10();
1221
+ resolve11();
1222
1222
  };
1223
1223
  });
1224
1224
  }
@@ -1238,7 +1238,7 @@ var require_avvio = __commonJS({
1238
1238
  queueMicrotask(this.start.bind(this));
1239
1239
  return;
1240
1240
  }
1241
- return new Promise((resolve10, reject) => {
1241
+ return new Promise((resolve11, reject) => {
1242
1242
  this._readyQ.push(readyPromiseCB);
1243
1243
  this.start();
1244
1244
  const relativeContext = this._current[0].server;
@@ -1246,7 +1246,7 @@ var require_avvio = __commonJS({
1246
1246
  if (err2) {
1247
1247
  reject(err2);
1248
1248
  } else {
1249
- resolve10(relativeContext);
1249
+ resolve11(relativeContext);
1250
1250
  }
1251
1251
  process.nextTick(done);
1252
1252
  }
@@ -2625,8 +2625,8 @@ var require_promise = __commonJS({
2625
2625
  var { kTestInternals } = require_symbols2();
2626
2626
  function withResolvers() {
2627
2627
  let res, rej;
2628
- const promise = new Promise((resolve10, reject) => {
2629
- res = resolve10;
2628
+ const promise = new Promise((resolve11, reject) => {
2629
+ res = resolve11;
2630
2630
  rej = reject;
2631
2631
  });
2632
2632
  return { promise, resolve: res, reject: rej };
@@ -2724,15 +2724,15 @@ var require_server = __commonJS({
2724
2724
  if (cb === void 0) {
2725
2725
  const listening = listenPromise.call(this, server, listenOptions);
2726
2726
  return listening.then((address) => {
2727
- const { promise, resolve: resolve10 } = PonyPromise.withResolvers();
2727
+ const { promise, resolve: resolve11 } = PonyPromise.withResolvers();
2728
2728
  if (host === "localhost") {
2729
2729
  multipleBindings.call(this, server, httpHandler, options, listenOptions, () => {
2730
2730
  this[kState].listening = true;
2731
- resolve10(address);
2731
+ resolve11(address);
2732
2732
  onListenHookRunner(this);
2733
2733
  });
2734
2734
  } else {
2735
- resolve10(address);
2735
+ resolve11(address);
2736
2736
  onListenHookRunner(this);
2737
2737
  }
2738
2738
  return promise;
@@ -2859,7 +2859,7 @@ var require_server = __commonJS({
2859
2859
  }
2860
2860
  return this.ready().then(() => {
2861
2861
  if (this[kState].aborted) return;
2862
- const { promise, resolve: resolve10, reject } = PonyPromise.withResolvers();
2862
+ const { promise, resolve: resolve11, reject } = PonyPromise.withResolvers();
2863
2863
  const errEventHandler = (err2) => {
2864
2864
  cleanup();
2865
2865
  this[kState].listening = false;
@@ -2868,7 +2868,7 @@ var require_server = __commonJS({
2868
2868
  const listeningEventHandler = () => {
2869
2869
  cleanup();
2870
2870
  this[kState].listening = true;
2871
- resolve10(logServerAddress.call(
2871
+ resolve11(logServerAddress.call(
2872
2872
  this,
2873
2873
  server,
2874
2874
  listenOptions.listenTextResolver || defaultResolveServerListeningText
@@ -12434,7 +12434,7 @@ var require_compile = __commonJS({
12434
12434
  const schOrFunc = root.refs[ref];
12435
12435
  if (schOrFunc)
12436
12436
  return schOrFunc;
12437
- let _sch = resolve10.call(this, root, ref);
12437
+ let _sch = resolve11.call(this, root, ref);
12438
12438
  if (_sch === void 0) {
12439
12439
  const schema = (_a2 = root.localRefs) === null || _a2 === void 0 ? void 0 : _a2[ref];
12440
12440
  const { schemaId } = this.opts;
@@ -12461,7 +12461,7 @@ var require_compile = __commonJS({
12461
12461
  function sameSchemaEnv(s1, s2) {
12462
12462
  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
12463
12463
  }
12464
- function resolve10(root, ref) {
12464
+ function resolve11(root, ref) {
12465
12465
  let sch;
12466
12466
  while (typeof (sch = this.refs[ref]) == "string")
12467
12467
  ref = sch;
@@ -13288,7 +13288,7 @@ var require_fast_uri = __commonJS({
13288
13288
  }
13289
13289
  return uri;
13290
13290
  }
13291
- function resolve10(baseURI, relativeURI, options) {
13291
+ function resolve11(baseURI, relativeURI, options) {
13292
13292
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
13293
13293
  const {
13294
13294
  parsed: baseParsed,
@@ -13321,49 +13321,49 @@ var require_fast_uri = __commonJS({
13321
13321
  schemelessOptions.skipEscape = true;
13322
13322
  return serialize(resolved, schemelessOptions);
13323
13323
  }
13324
- function resolveComponent(base, relative9, options, skipNormalization) {
13324
+ function resolveComponent(base, relative10, options, skipNormalization) {
13325
13325
  const target = {};
13326
13326
  if (!skipNormalization) {
13327
13327
  base = parse2(serialize(base, options), options);
13328
- relative9 = parse2(serialize(relative9, options), options);
13328
+ relative10 = parse2(serialize(relative10, options), options);
13329
13329
  }
13330
13330
  options = options || {};
13331
- if (!options.tolerant && relative9.scheme) {
13332
- target.scheme = relative9.scheme;
13333
- target.userinfo = relative9.userinfo;
13334
- target.host = relative9.host;
13335
- target.port = relative9.port;
13336
- target.path = removeDotSegments(relative9.path || "");
13337
- target.query = relative9.query;
13331
+ if (!options.tolerant && relative10.scheme) {
13332
+ target.scheme = relative10.scheme;
13333
+ target.userinfo = relative10.userinfo;
13334
+ target.host = relative10.host;
13335
+ target.port = relative10.port;
13336
+ target.path = removeDotSegments(relative10.path || "");
13337
+ target.query = relative10.query;
13338
13338
  } else {
13339
- if (relative9.userinfo !== void 0 || relative9.host !== void 0 || relative9.port !== void 0) {
13340
- target.userinfo = relative9.userinfo;
13341
- target.host = relative9.host;
13342
- target.port = relative9.port;
13343
- target.path = removeDotSegments(relative9.path || "");
13344
- target.query = relative9.query;
13339
+ if (relative10.userinfo !== void 0 || relative10.host !== void 0 || relative10.port !== void 0) {
13340
+ target.userinfo = relative10.userinfo;
13341
+ target.host = relative10.host;
13342
+ target.port = relative10.port;
13343
+ target.path = removeDotSegments(relative10.path || "");
13344
+ target.query = relative10.query;
13345
13345
  } else {
13346
- if (!relative9.path) {
13346
+ if (!relative10.path) {
13347
13347
  target.path = base.path;
13348
- if (relative9.query !== void 0) {
13349
- target.query = relative9.query;
13348
+ if (relative10.query !== void 0) {
13349
+ target.query = relative10.query;
13350
13350
  } else {
13351
13351
  target.query = base.query;
13352
13352
  }
13353
13353
  } else {
13354
- if (relative9.path[0] === "/") {
13355
- target.path = removeDotSegments(relative9.path);
13354
+ if (relative10.path[0] === "/") {
13355
+ target.path = removeDotSegments(relative10.path);
13356
13356
  } else {
13357
13357
  if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
13358
- target.path = "/" + relative9.path;
13358
+ target.path = "/" + relative10.path;
13359
13359
  } else if (!base.path) {
13360
- target.path = relative9.path;
13360
+ target.path = relative10.path;
13361
13361
  } else {
13362
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative9.path;
13362
+ target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative10.path;
13363
13363
  }
13364
13364
  target.path = removeDotSegments(target.path);
13365
13365
  }
13366
- target.query = relative9.query;
13366
+ target.query = relative10.query;
13367
13367
  }
13368
13368
  target.userinfo = base.userinfo;
13369
13369
  target.host = base.host;
@@ -13371,7 +13371,7 @@ var require_fast_uri = __commonJS({
13371
13371
  }
13372
13372
  target.scheme = base.scheme;
13373
13373
  }
13374
- target.fragment = relative9.fragment;
13374
+ target.fragment = relative10.fragment;
13375
13375
  return target;
13376
13376
  }
13377
13377
  function equal(uriA, uriB, options) {
@@ -13657,7 +13657,7 @@ var require_fast_uri = __commonJS({
13657
13657
  var fastUri = {
13658
13658
  SCHEMES,
13659
13659
  normalize,
13660
- resolve: resolve10,
13660
+ resolve: resolve11,
13661
13661
  resolveComponent,
13662
13662
  equal,
13663
13663
  serialize,
@@ -19851,7 +19851,7 @@ var require_fast_uri2 = __commonJS({
19851
19851
  }
19852
19852
  return uri;
19853
19853
  }
19854
- function resolve10(baseURI, relativeURI, options) {
19854
+ function resolve11(baseURI, relativeURI, options) {
19855
19855
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
19856
19856
  const {
19857
19857
  parsed: baseParsed,
@@ -19884,49 +19884,49 @@ var require_fast_uri2 = __commonJS({
19884
19884
  schemelessOptions.skipEscape = true;
19885
19885
  return serialize(resolved, schemelessOptions);
19886
19886
  }
19887
- function resolveComponent(base, relative9, options, skipNormalization) {
19887
+ function resolveComponent(base, relative10, options, skipNormalization) {
19888
19888
  const target = {};
19889
19889
  if (!skipNormalization) {
19890
19890
  base = parse2(serialize(base, options), options);
19891
- relative9 = parse2(serialize(relative9, options), options);
19891
+ relative10 = parse2(serialize(relative10, options), options);
19892
19892
  }
19893
19893
  options = options || {};
19894
- if (!options.tolerant && relative9.scheme) {
19895
- target.scheme = relative9.scheme;
19896
- target.userinfo = relative9.userinfo;
19897
- target.host = relative9.host;
19898
- target.port = relative9.port;
19899
- target.path = removeDotSegments(relative9.path || "");
19900
- target.query = relative9.query;
19894
+ if (!options.tolerant && relative10.scheme) {
19895
+ target.scheme = relative10.scheme;
19896
+ target.userinfo = relative10.userinfo;
19897
+ target.host = relative10.host;
19898
+ target.port = relative10.port;
19899
+ target.path = removeDotSegments(relative10.path || "");
19900
+ target.query = relative10.query;
19901
19901
  } else {
19902
- if (relative9.userinfo !== void 0 || relative9.host !== void 0 || relative9.port !== void 0) {
19903
- target.userinfo = relative9.userinfo;
19904
- target.host = relative9.host;
19905
- target.port = relative9.port;
19906
- target.path = removeDotSegments(relative9.path || "");
19907
- target.query = relative9.query;
19902
+ if (relative10.userinfo !== void 0 || relative10.host !== void 0 || relative10.port !== void 0) {
19903
+ target.userinfo = relative10.userinfo;
19904
+ target.host = relative10.host;
19905
+ target.port = relative10.port;
19906
+ target.path = removeDotSegments(relative10.path || "");
19907
+ target.query = relative10.query;
19908
19908
  } else {
19909
- if (!relative9.path) {
19909
+ if (!relative10.path) {
19910
19910
  target.path = base.path;
19911
- if (relative9.query !== void 0) {
19912
- target.query = relative9.query;
19911
+ if (relative10.query !== void 0) {
19912
+ target.query = relative10.query;
19913
19913
  } else {
19914
19914
  target.query = base.query;
19915
19915
  }
19916
19916
  } else {
19917
- if (relative9.path[0] === "/") {
19918
- target.path = removeDotSegments(relative9.path);
19917
+ if (relative10.path[0] === "/") {
19918
+ target.path = removeDotSegments(relative10.path);
19919
19919
  } else {
19920
19920
  if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
19921
- target.path = "/" + relative9.path;
19921
+ target.path = "/" + relative10.path;
19922
19922
  } else if (!base.path) {
19923
- target.path = relative9.path;
19923
+ target.path = relative10.path;
19924
19924
  } else {
19925
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative9.path;
19925
+ target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative10.path;
19926
19926
  }
19927
19927
  target.path = removeDotSegments(target.path);
19928
19928
  }
19929
- target.query = relative9.query;
19929
+ target.query = relative10.query;
19930
19930
  }
19931
19931
  target.userinfo = base.userinfo;
19932
19932
  target.host = base.host;
@@ -19934,7 +19934,7 @@ var require_fast_uri2 = __commonJS({
19934
19934
  }
19935
19935
  target.scheme = base.scheme;
19936
19936
  }
19937
- target.fragment = relative9.fragment;
19937
+ target.fragment = relative10.fragment;
19938
19938
  return target;
19939
19939
  }
19940
19940
  function equal(uriA, uriB, options) {
@@ -20225,7 +20225,7 @@ var require_fast_uri2 = __commonJS({
20225
20225
  var fastUri = {
20226
20226
  SCHEMES,
20227
20227
  normalize,
20228
- resolve: resolve10,
20228
+ resolve: resolve11,
20229
20229
  resolveComponent,
20230
20230
  equal,
20231
20231
  serialize,
@@ -29553,7 +29553,7 @@ var require_parse_url = __commonJS({
29553
29553
  // node_modules/.pnpm/light-my-request@6.6.0/node_modules/light-my-request/lib/form-data.js
29554
29554
  var require_form_data = __commonJS({
29555
29555
  "node_modules/.pnpm/light-my-request@6.6.0/node_modules/light-my-request/lib/form-data.js"(exports, module) {
29556
- var { randomUUID: randomUUID9 } = __require("crypto");
29556
+ var { randomUUID: randomUUID10 } = __require("crypto");
29557
29557
  var { Readable: Readable4 } = __require("stream");
29558
29558
  var textEncoder;
29559
29559
  function isFormDataLike(payload) {
@@ -29561,7 +29561,7 @@ var require_form_data = __commonJS({
29561
29561
  }
29562
29562
  function formDataToStream(formdata) {
29563
29563
  textEncoder = textEncoder ?? new TextEncoder();
29564
- const boundary = `----formdata-${randomUUID9()}`;
29564
+ const boundary = `----formdata-${randomUUID10()}`;
29565
29565
  const prefix = `--${boundary}\r
29566
29566
  Content-Disposition: form-data`;
29567
29567
  const escape2 = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
@@ -31059,9 +31059,9 @@ var require_light_my_request = __commonJS({
31059
31059
  const res = new Response(req, callback);
31060
31060
  return makeRequest(dispatchFunc, server, req, res);
31061
31061
  } else {
31062
- return new Promise((resolve10, reject) => {
31062
+ return new Promise((resolve11, reject) => {
31063
31063
  const req = new RequestConstructor(options);
31064
- const res = new Response(req, resolve10, reject);
31064
+ const res = new Response(req, resolve11, reject);
31065
31065
  makeRequest(dispatchFunc, server, req, res);
31066
31066
  });
31067
31067
  }
@@ -36765,10 +36765,10 @@ var require_resolve_block_map = __commonJS({
36765
36765
  let offset = bm.offset;
36766
36766
  let commentEnd = null;
36767
36767
  for (const collItem of bm.items) {
36768
- const { start, key, sep: sep8, value } = collItem;
36768
+ const { start, key, sep: sep9, value } = collItem;
36769
36769
  const keyProps = resolveProps.resolveProps(start, {
36770
36770
  indicator: "explicit-key-ind",
36771
- next: key ?? sep8?.[0],
36771
+ next: key ?? sep9?.[0],
36772
36772
  offset,
36773
36773
  onError,
36774
36774
  parentIndent: bm.indent,
@@ -36782,7 +36782,7 @@ var require_resolve_block_map = __commonJS({
36782
36782
  else if ("indent" in key && key.indent !== bm.indent)
36783
36783
  onError(offset, "BAD_INDENT", startColMsg);
36784
36784
  }
36785
- if (!keyProps.anchor && !keyProps.tag && !sep8) {
36785
+ if (!keyProps.anchor && !keyProps.tag && !sep9) {
36786
36786
  commentEnd = keyProps.end;
36787
36787
  if (keyProps.comment) {
36788
36788
  if (map.comment)
@@ -36806,7 +36806,7 @@ var require_resolve_block_map = __commonJS({
36806
36806
  ctx.atKey = false;
36807
36807
  if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
36808
36808
  onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique");
36809
- const valueProps = resolveProps.resolveProps(sep8 ?? [], {
36809
+ const valueProps = resolveProps.resolveProps(sep9 ?? [], {
36810
36810
  indicator: "map-value-ind",
36811
36811
  next: value,
36812
36812
  offset: keyNode.range[2],
@@ -36822,7 +36822,7 @@ var require_resolve_block_map = __commonJS({
36822
36822
  if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024)
36823
36823
  onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key");
36824
36824
  }
36825
- const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep8, null, valueProps, onError);
36825
+ const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep9, null, valueProps, onError);
36826
36826
  if (ctx.schema.compat)
36827
36827
  utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);
36828
36828
  offset = valueNode.range[2];
@@ -36911,7 +36911,7 @@ var require_resolve_end = __commonJS({
36911
36911
  let comment = "";
36912
36912
  if (end) {
36913
36913
  let hasSpace = false;
36914
- let sep8 = "";
36914
+ let sep9 = "";
36915
36915
  for (const token of end) {
36916
36916
  const { source, type } = token;
36917
36917
  switch (type) {
@@ -36925,13 +36925,13 @@ var require_resolve_end = __commonJS({
36925
36925
  if (!comment)
36926
36926
  comment = cb;
36927
36927
  else
36928
- comment += sep8 + cb;
36929
- sep8 = "";
36928
+ comment += sep9 + cb;
36929
+ sep9 = "";
36930
36930
  break;
36931
36931
  }
36932
36932
  case "newline":
36933
36933
  if (comment)
36934
- sep8 += source;
36934
+ sep9 += source;
36935
36935
  hasSpace = true;
36936
36936
  break;
36937
36937
  default:
@@ -36973,18 +36973,18 @@ var require_resolve_flow_collection = __commonJS({
36973
36973
  let offset = fc.offset + fc.start.source.length;
36974
36974
  for (let i = 0; i < fc.items.length; ++i) {
36975
36975
  const collItem = fc.items[i];
36976
- const { start, key, sep: sep8, value } = collItem;
36976
+ const { start, key, sep: sep9, value } = collItem;
36977
36977
  const props = resolveProps.resolveProps(start, {
36978
36978
  flow: fcName,
36979
36979
  indicator: "explicit-key-ind",
36980
- next: key ?? sep8?.[0],
36980
+ next: key ?? sep9?.[0],
36981
36981
  offset,
36982
36982
  onError,
36983
36983
  parentIndent: fc.indent,
36984
36984
  startOnNewline: false
36985
36985
  });
36986
36986
  if (!props.found) {
36987
- if (!props.anchor && !props.tag && !sep8 && !value) {
36987
+ if (!props.anchor && !props.tag && !sep9 && !value) {
36988
36988
  if (i === 0 && props.comma)
36989
36989
  onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`);
36990
36990
  else if (i < fc.items.length - 1)
@@ -37038,8 +37038,8 @@ var require_resolve_flow_collection = __commonJS({
37038
37038
  }
37039
37039
  }
37040
37040
  }
37041
- if (!isMap && !sep8 && !props.found) {
37042
- const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep8, null, props, onError);
37041
+ if (!isMap && !sep9 && !props.found) {
37042
+ const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep9, null, props, onError);
37043
37043
  coll.items.push(valueNode);
37044
37044
  offset = valueNode.range[2];
37045
37045
  if (isBlock(value))
@@ -37051,7 +37051,7 @@ var require_resolve_flow_collection = __commonJS({
37051
37051
  if (isBlock(key))
37052
37052
  onError(keyNode.range, "BLOCK_IN_FLOW", blockMsg);
37053
37053
  ctx.atKey = false;
37054
- const valueProps = resolveProps.resolveProps(sep8 ?? [], {
37054
+ const valueProps = resolveProps.resolveProps(sep9 ?? [], {
37055
37055
  flow: fcName,
37056
37056
  indicator: "map-value-ind",
37057
37057
  next: value,
@@ -37062,8 +37062,8 @@ var require_resolve_flow_collection = __commonJS({
37062
37062
  });
37063
37063
  if (valueProps.found) {
37064
37064
  if (!isMap && !props.found && ctx.options.strict) {
37065
- if (sep8)
37066
- for (const st2 of sep8) {
37065
+ if (sep9)
37066
+ for (const st2 of sep9) {
37067
37067
  if (st2 === valueProps.found)
37068
37068
  break;
37069
37069
  if (st2.type === "newline") {
@@ -37080,7 +37080,7 @@ var require_resolve_flow_collection = __commonJS({
37080
37080
  else
37081
37081
  onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`);
37082
37082
  }
37083
- const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep8, null, valueProps, onError) : null;
37083
+ const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep9, null, valueProps, onError) : null;
37084
37084
  if (valueNode) {
37085
37085
  if (isBlock(value))
37086
37086
  onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg);
@@ -37258,7 +37258,7 @@ var require_resolve_block_scalar = __commonJS({
37258
37258
  chompStart = i + 1;
37259
37259
  }
37260
37260
  let value = "";
37261
- let sep8 = "";
37261
+ let sep9 = "";
37262
37262
  let prevMoreIndented = false;
37263
37263
  for (let i = 0; i < contentStart; ++i)
37264
37264
  value += lines[i][0].slice(trimIndent) + "\n";
@@ -37275,24 +37275,24 @@ var require_resolve_block_scalar = __commonJS({
37275
37275
  indent = "";
37276
37276
  }
37277
37277
  if (type === Scalar.Scalar.BLOCK_LITERAL) {
37278
- value += sep8 + indent.slice(trimIndent) + content;
37279
- sep8 = "\n";
37278
+ value += sep9 + indent.slice(trimIndent) + content;
37279
+ sep9 = "\n";
37280
37280
  } else if (indent.length > trimIndent || content[0] === " ") {
37281
- if (sep8 === " ")
37282
- sep8 = "\n";
37283
- else if (!prevMoreIndented && sep8 === "\n")
37284
- sep8 = "\n\n";
37285
- value += sep8 + indent.slice(trimIndent) + content;
37286
- sep8 = "\n";
37281
+ if (sep9 === " ")
37282
+ sep9 = "\n";
37283
+ else if (!prevMoreIndented && sep9 === "\n")
37284
+ sep9 = "\n\n";
37285
+ value += sep9 + indent.slice(trimIndent) + content;
37286
+ sep9 = "\n";
37287
37287
  prevMoreIndented = true;
37288
37288
  } else if (content === "") {
37289
- if (sep8 === "\n")
37289
+ if (sep9 === "\n")
37290
37290
  value += "\n";
37291
37291
  else
37292
- sep8 = "\n";
37292
+ sep9 = "\n";
37293
37293
  } else {
37294
- value += sep8 + content;
37295
- sep8 = " ";
37294
+ value += sep9 + content;
37295
+ sep9 = " ";
37296
37296
  prevMoreIndented = false;
37297
37297
  }
37298
37298
  }
@@ -37473,25 +37473,25 @@ var require_resolve_flow_scalar = __commonJS({
37473
37473
  if (!match)
37474
37474
  return source;
37475
37475
  let res = match[1];
37476
- let sep8 = " ";
37476
+ let sep9 = " ";
37477
37477
  let pos = first.lastIndex;
37478
37478
  line.lastIndex = pos;
37479
37479
  while (match = line.exec(source)) {
37480
37480
  if (match[1] === "") {
37481
- if (sep8 === "\n")
37482
- res += sep8;
37481
+ if (sep9 === "\n")
37482
+ res += sep9;
37483
37483
  else
37484
- sep8 = "\n";
37484
+ sep9 = "\n";
37485
37485
  } else {
37486
- res += sep8 + match[1];
37487
- sep8 = " ";
37486
+ res += sep9 + match[1];
37487
+ sep9 = " ";
37488
37488
  }
37489
37489
  pos = line.lastIndex;
37490
37490
  }
37491
37491
  const last = /[ \t]*(.*)/sy;
37492
37492
  last.lastIndex = pos;
37493
37493
  match = last.exec(source);
37494
- return res + sep8 + (match?.[1] ?? "");
37494
+ return res + sep9 + (match?.[1] ?? "");
37495
37495
  }
37496
37496
  function doubleQuotedValue(source, onError) {
37497
37497
  let res = "";
@@ -38294,14 +38294,14 @@ var require_cst_stringify = __commonJS({
38294
38294
  }
38295
38295
  }
38296
38296
  }
38297
- function stringifyItem({ start, key, sep: sep8, value }) {
38297
+ function stringifyItem({ start, key, sep: sep9, value }) {
38298
38298
  let res = "";
38299
38299
  for (const st2 of start)
38300
38300
  res += st2.source;
38301
38301
  if (key)
38302
38302
  res += stringifyToken(key);
38303
- if (sep8)
38304
- for (const st2 of sep8)
38303
+ if (sep9)
38304
+ for (const st2 of sep9)
38305
38305
  res += st2.source;
38306
38306
  if (value)
38307
38307
  res += stringifyToken(value);
@@ -39463,18 +39463,18 @@ var require_parser = __commonJS({
39463
39463
  if (this.type === "map-value-ind") {
39464
39464
  const prev = getPrevProps(this.peek(2));
39465
39465
  const start = getFirstKeyStartProps(prev);
39466
- let sep8;
39466
+ let sep9;
39467
39467
  if (scalar.end) {
39468
- sep8 = scalar.end;
39469
- sep8.push(this.sourceToken);
39468
+ sep9 = scalar.end;
39469
+ sep9.push(this.sourceToken);
39470
39470
  delete scalar.end;
39471
39471
  } else
39472
- sep8 = [this.sourceToken];
39472
+ sep9 = [this.sourceToken];
39473
39473
  const map = {
39474
39474
  type: "block-map",
39475
39475
  offset: scalar.offset,
39476
39476
  indent: scalar.indent,
39477
- items: [{ start, key: scalar, sep: sep8 }]
39477
+ items: [{ start, key: scalar, sep: sep9 }]
39478
39478
  };
39479
39479
  this.onKeyLine = true;
39480
39480
  this.stack[this.stack.length - 1] = map;
@@ -39627,15 +39627,15 @@ var require_parser = __commonJS({
39627
39627
  } else if (isFlowToken(it2.key) && !includesToken(it2.sep, "newline")) {
39628
39628
  const start2 = getFirstKeyStartProps(it2.start);
39629
39629
  const key = it2.key;
39630
- const sep8 = it2.sep;
39631
- sep8.push(this.sourceToken);
39630
+ const sep9 = it2.sep;
39631
+ sep9.push(this.sourceToken);
39632
39632
  delete it2.key;
39633
39633
  delete it2.sep;
39634
39634
  this.stack.push({
39635
39635
  type: "block-map",
39636
39636
  offset: this.offset,
39637
39637
  indent: this.indent,
39638
- items: [{ start: start2, key, sep: sep8 }]
39638
+ items: [{ start: start2, key, sep: sep9 }]
39639
39639
  });
39640
39640
  } else if (start.length > 0) {
39641
39641
  it2.sep = it2.sep.concat(start, this.sourceToken);
@@ -39829,13 +39829,13 @@ var require_parser = __commonJS({
39829
39829
  const prev = getPrevProps(parent);
39830
39830
  const start = getFirstKeyStartProps(prev);
39831
39831
  fixFlowSeqItems(fc);
39832
- const sep8 = fc.end.splice(1, fc.end.length);
39833
- sep8.push(this.sourceToken);
39832
+ const sep9 = fc.end.splice(1, fc.end.length);
39833
+ sep9.push(this.sourceToken);
39834
39834
  const map = {
39835
39835
  type: "block-map",
39836
39836
  offset: fc.offset,
39837
39837
  indent: fc.indent,
39838
- items: [{ start, key: fc, sep: sep8 }]
39838
+ items: [{ start, key: fc, sep: sep9 }]
39839
39839
  };
39840
39840
  this.onKeyLine = true;
39841
39841
  this.stack[this.stack.length - 1] = map;
@@ -41106,20 +41106,20 @@ var require_decodeText = __commonJS({
41106
41106
  return typeof data === "string" ? data : data.toString();
41107
41107
  }
41108
41108
  };
41109
- function decodeText(text, sourceEncoding, destEncoding) {
41109
+ function decodeText2(text, sourceEncoding, destEncoding) {
41110
41110
  if (text) {
41111
41111
  return getDecoder(destEncoding)(text, sourceEncoding);
41112
41112
  }
41113
41113
  return text;
41114
41114
  }
41115
- module.exports = decodeText;
41115
+ module.exports = decodeText2;
41116
41116
  }
41117
41117
  });
41118
41118
 
41119
41119
  // node_modules/.pnpm/@fastify+busboy@3.2.2/node_modules/@fastify/busboy/lib/utils/parseParams.js
41120
41120
  var require_parseParams = __commonJS({
41121
41121
  "node_modules/.pnpm/@fastify+busboy@3.2.2/node_modules/@fastify/busboy/lib/utils/parseParams.js"(exports, module) {
41122
- var decodeText = require_decodeText();
41122
+ var decodeText2 = require_decodeText();
41123
41123
  var RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g;
41124
41124
  var EncodedLookup = {
41125
41125
  "%00": "\0",
@@ -41613,7 +41613,7 @@ var require_parseParams = __commonJS({
41613
41613
  function decodeUtf8Text(text) {
41614
41614
  for (var i = 0, len = text.length; i < len; ++i) {
41615
41615
  if (text.charCodeAt(i) > 127) {
41616
- return decodeText(text, "binary", "utf8");
41616
+ return decodeText2(text, "binary", "utf8");
41617
41617
  }
41618
41618
  }
41619
41619
  return text;
@@ -41717,7 +41717,7 @@ var require_parseParams = __commonJS({
41717
41717
  state = STATE_KEY;
41718
41718
  if (charset) {
41719
41719
  if (tmp.length) {
41720
- tmp = decodeText(
41720
+ tmp = decodeText2(
41721
41721
  tmp.replace(RE_ENCODED, encodedReplacer),
41722
41722
  "binary",
41723
41723
  charset
@@ -41742,7 +41742,7 @@ var require_parseParams = __commonJS({
41742
41742
  tmp += char;
41743
41743
  }
41744
41744
  if (charset && tmp.length) {
41745
- tmp = decodeText(
41745
+ tmp = decodeText2(
41746
41746
  tmp.replace(RE_ENCODED, encodedReplacer),
41747
41747
  "binary",
41748
41748
  charset
@@ -41791,7 +41791,7 @@ var require_multipart = __commonJS({
41791
41791
  var { inherits } = __require("util");
41792
41792
  var Dicer = require_Dicer();
41793
41793
  var parseParams = require_parseParams();
41794
- var decodeText = require_decodeText();
41794
+ var decodeText2 = require_decodeText();
41795
41795
  var basename9 = require_basename();
41796
41796
  var getLimit = require_getLimit();
41797
41797
  var RE_BOUNDARY = /^boundary$/i;
@@ -42017,7 +42017,7 @@ var require_multipart = __commonJS({
42017
42017
  onEnd = function() {
42018
42018
  curField = void 0;
42019
42019
  if (buffer.length) {
42020
- buffer = decodeText(buffer, "binary", charset);
42020
+ buffer = decodeText2(buffer, "binary", charset);
42021
42021
  }
42022
42022
  boy.emit("field", fieldname, buffer, false, truncated, encoding, contype);
42023
42023
  --nends;
@@ -42259,7 +42259,7 @@ var require_Decoder = __commonJS({
42259
42259
  var require_urlencoded = __commonJS({
42260
42260
  "node_modules/.pnpm/@fastify+busboy@3.2.2/node_modules/@fastify/busboy/lib/types/urlencoded.js"(exports, module) {
42261
42261
  var Decoder = require_Decoder();
42262
- var decodeText = require_decodeText();
42262
+ var decodeText2 = require_decodeText();
42263
42263
  var getLimit = require_getLimit();
42264
42264
  var RE_CHARSET = /^charset$/i;
42265
42265
  UrlEncoded.detect = /^application\/x-www-form-urlencoded/i;
@@ -42357,7 +42357,7 @@ var require_urlencoded = __commonJS({
42357
42357
  if (key.length) {
42358
42358
  this.boy.emit(
42359
42359
  "field",
42360
- decodeText(key, "binary", this.charset),
42360
+ decodeText2(key, "binary", this.charset),
42361
42361
  "",
42362
42362
  keyTrunc,
42363
42363
  false
@@ -42406,8 +42406,8 @@ var require_urlencoded = __commonJS({
42406
42406
  }
42407
42407
  this.boy.emit(
42408
42408
  "field",
42409
- decodeText(this._key, "binary", this.charset),
42410
- decodeText(this._val, "binary", this.charset),
42409
+ decodeText2(this._key, "binary", this.charset),
42410
+ decodeText2(this._val, "binary", this.charset),
42411
42411
  this._keyTrunc,
42412
42412
  this._valTrunc
42413
42413
  );
@@ -42448,7 +42448,7 @@ var require_urlencoded = __commonJS({
42448
42448
  if (this._state === "key" && this._key.length > 0) {
42449
42449
  this.boy.emit(
42450
42450
  "field",
42451
- decodeText(this._key, "binary", this.charset),
42451
+ decodeText2(this._key, "binary", this.charset),
42452
42452
  "",
42453
42453
  this._keyTrunc,
42454
42454
  false
@@ -42456,8 +42456,8 @@ var require_urlencoded = __commonJS({
42456
42456
  } else if (this._state === "val") {
42457
42457
  this.boy.emit(
42458
42458
  "field",
42459
- decodeText(this._key, "binary", this.charset),
42460
- decodeText(this._val, "binary", this.charset),
42459
+ decodeText2(this._key, "binary", this.charset),
42460
+ decodeText2(this._val, "binary", this.charset),
42461
42461
  this._keyTrunc,
42462
42462
  this._valTrunc
42463
42463
  );
@@ -42826,14 +42826,14 @@ var require_generateId = __commonJS({
42826
42826
  var require_stream_consumer = __commonJS({
42827
42827
  "node_modules/.pnpm/@fastify+multipart@10.1.1/node_modules/@fastify/multipart/lib/stream-consumer.js"(exports, module) {
42828
42828
  module.exports = function streamToNull(stream) {
42829
- return new Promise((resolve10, reject) => {
42829
+ return new Promise((resolve11, reject) => {
42830
42830
  stream.on("data", () => {
42831
42831
  });
42832
42832
  stream.on("close", () => {
42833
- resolve10();
42833
+ resolve11();
42834
42834
  });
42835
42835
  stream.on("end", () => {
42836
- resolve10();
42836
+ resolve11();
42837
42837
  });
42838
42838
  stream.on("error", (error) => {
42839
42839
  reject(error);
@@ -42990,7 +42990,7 @@ var require_multipart2 = __commonJS({
42990
42990
  var os2 = __require("os");
42991
42991
  var fp = require_fastify_plugin();
42992
42992
  var { createWriteStream: createWriteStream2 } = __require("fs");
42993
- var { unlink: unlink3 } = __require("fs/promises");
42993
+ var { unlink: unlink4 } = __require("fs/promises");
42994
42994
  var path = __require("path");
42995
42995
  var { generateId } = require_generateId();
42996
42996
  var createError = require_error();
@@ -43176,10 +43176,10 @@ var require_multipart2 = __commonJS({
43176
43176
  }
43177
43177
  };
43178
43178
  const parts = () => {
43179
- return new Promise((resolve10, reject) => {
43179
+ return new Promise((resolve11, reject) => {
43180
43180
  handle((val) => {
43181
43181
  if (val instanceof Error) return reject(val);
43182
- resolve10(val);
43182
+ resolve11(val);
43183
43183
  });
43184
43184
  });
43185
43185
  };
@@ -43419,7 +43419,7 @@ var require_multipart2 = __commonJS({
43419
43419
  for (let i = 0; i < this.tmpUploads.length; ++i) {
43420
43420
  const filepath = this.tmpUploads[i];
43421
43421
  try {
43422
- await unlink3(filepath);
43422
+ await unlink4(filepath);
43423
43423
  } catch (error) {
43424
43424
  this.log.error(error, "Could not delete file");
43425
43425
  }
@@ -46846,7 +46846,7 @@ var require_parseTokenList = __commonJS({
46846
46846
  // node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js
46847
46847
  var require_depd = __commonJS({
46848
46848
  "node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js"(exports, module) {
46849
- var relative9 = __require("path").relative;
46849
+ var relative10 = __require("path").relative;
46850
46850
  module.exports = depd;
46851
46851
  var basePath = process.cwd();
46852
46852
  function containsNamespace(str, namespace) {
@@ -47038,7 +47038,7 @@ var require_depd = __commonJS({
47038
47038
  return formatted;
47039
47039
  }
47040
47040
  function formatLocation(callSite) {
47041
- return relative9(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
47041
+ return relative10(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
47042
47042
  }
47043
47043
  function getStack() {
47044
47044
  var limit = Error.stackTraceLimit;
@@ -47564,11 +47564,11 @@ var require_send = __commonJS({
47564
47564
  var { parseBytesRange } = require_parseBytesRange();
47565
47565
  var { parseTokenList } = require_parseTokenList();
47566
47566
  var { createHttpError } = require_createHttpError();
47567
- var extname3 = path.extname;
47568
- var join13 = path.join;
47567
+ var extname4 = path.extname;
47568
+ var join14 = path.join;
47569
47569
  var normalize = path.normalize;
47570
- var resolve10 = path.resolve;
47571
- var sep8 = path.sep;
47570
+ var resolve11 = path.resolve;
47571
+ var sep9 = path.sep;
47572
47572
  var Readable4 = stream.Readable;
47573
47573
  var BYTES_RANGE_REGEXP = /^ *bytes=/;
47574
47574
  var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3;
@@ -47614,7 +47614,7 @@ var require_send = __commonJS({
47614
47614
  const lastModified = options.lastModified !== void 0 ? Boolean(options.lastModified) : true;
47615
47615
  const maxage = normalizeMaxAge(options.maxAge ?? options.maxage);
47616
47616
  const maxContentRangeChunkSize = options.maxContentRangeChunkSize !== void 0 ? Number(options.maxContentRangeChunkSize) : null;
47617
- const root = options.root ? resolve10(options.root) : null;
47617
+ const root = options.root ? resolve11(options.root) : null;
47618
47618
  const highWaterMark = Number.isSafeInteger(options.highWaterMark) && options.highWaterMark > 0 ? options.highWaterMark : null;
47619
47619
  return {
47620
47620
  acceptRanges,
@@ -47645,21 +47645,21 @@ var require_send = __commonJS({
47645
47645
  let parts;
47646
47646
  if (root !== null) {
47647
47647
  if (path2) {
47648
- path2 = normalize("." + sep8 + path2);
47648
+ path2 = normalize("." + sep9 + path2);
47649
47649
  }
47650
47650
  if (UP_PATH_REGEXP.test(path2)) {
47651
47651
  debug('malicious path "%s"', path2);
47652
47652
  return { statusCode: 403 };
47653
47653
  }
47654
- parts = path2.split(sep8);
47655
- path2 = normalize(join13(root, path2));
47654
+ parts = path2.split(sep9);
47655
+ path2 = normalize(join14(root, path2));
47656
47656
  } else {
47657
47657
  if (UP_PATH_REGEXP.test(path2)) {
47658
47658
  debug('malicious path "%s"', path2);
47659
47659
  return { statusCode: 403 };
47660
47660
  }
47661
- parts = normalize(path2).split(sep8);
47662
- path2 = resolve10(path2);
47661
+ parts = normalize(path2).split(sep9);
47662
+ path2 = resolve11(path2);
47663
47663
  }
47664
47664
  return { path: path2, parts };
47665
47665
  }
@@ -47755,13 +47755,13 @@ var require_send = __commonJS({
47755
47755
  );
47756
47756
  }
47757
47757
  function tryStat(path2) {
47758
- return new Promise((resolve11) => {
47758
+ return new Promise((resolve12) => {
47759
47759
  fs2.stat(path2, function onstat(error, stat7) {
47760
- resolve11({ error, stat: stat7 });
47760
+ resolve12({ error, stat: stat7 });
47761
47761
  });
47762
47762
  });
47763
47763
  }
47764
- function sendError(statusCode, err2) {
47764
+ function sendError2(statusCode, err2) {
47765
47765
  const headers = {};
47766
47766
  if (err2 && err2.headers) {
47767
47767
  for (const headerName in err2.headers) {
@@ -47787,9 +47787,9 @@ var require_send = __commonJS({
47787
47787
  case "ENAMETOOLONG":
47788
47788
  case "ENOTDIR":
47789
47789
  case "ENOENT":
47790
- return sendError(404, err2);
47790
+ return sendError2(404, err2);
47791
47791
  default:
47792
- return sendError(500, err2);
47792
+ return sendError2(500, err2);
47793
47793
  }
47794
47794
  }
47795
47795
  function sendNotModified(headers, path2, stat7) {
@@ -47848,7 +47848,7 @@ var require_send = __commonJS({
47848
47848
  }
47849
47849
  if (isConditionalGET(request2)) {
47850
47850
  if (isPreconditionFailure(request2, headers)) {
47851
- return sendError(412);
47851
+ return sendError2(412);
47852
47852
  }
47853
47853
  if (isNotModifiedFailure(request2, headers)) {
47854
47854
  return sendNotModified(headers, path2, stat7);
@@ -47867,7 +47867,7 @@ var require_send = __commonJS({
47867
47867
  if (ranges.length === 0) {
47868
47868
  debug("range unsatisfiable");
47869
47869
  headers["Content-Range"] = contentRange("bytes", len);
47870
- return sendError(416, {
47870
+ return sendError2(416, {
47871
47871
  headers: { "Content-Range": headers["Content-Range"] }
47872
47872
  });
47873
47873
  } else if (ranges.length === 1) {
@@ -47912,7 +47912,7 @@ var require_send = __commonJS({
47912
47912
  }
47913
47913
  function sendRedirect(path2, options) {
47914
47914
  if (hasTrailingSlash(options.path)) {
47915
- return sendError(403);
47915
+ return sendError2(403);
47916
47916
  }
47917
47917
  const loc = encodeURI(collapseLeadingSlashes(options.path + "/"));
47918
47918
  const doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc));
@@ -47935,7 +47935,7 @@ var require_send = __commonJS({
47935
47935
  let err2;
47936
47936
  for (let i = 0; i < options.index.length; i++) {
47937
47937
  const index = options.index[i];
47938
- const p2 = join13(path2, index);
47938
+ const p2 = join14(path2, index);
47939
47939
  const { error, stat: stat7 } = await tryStat(p2);
47940
47940
  if (error) {
47941
47941
  err2 = error;
@@ -47947,11 +47947,11 @@ var require_send = __commonJS({
47947
47947
  if (err2) {
47948
47948
  return sendStatError(err2);
47949
47949
  }
47950
- return sendError(404);
47950
+ return sendError2(404);
47951
47951
  }
47952
47952
  async function sendFile(request2, path2, options) {
47953
47953
  const { error, stat: stat7 } = await tryStat(path2);
47954
- if (error && error.code === "ENOENT" && !extname3(path2) && path2[path2.length - 1] !== sep8) {
47954
+ if (error && error.code === "ENOENT" && !extname4(path2) && path2[path2.length - 1] !== sep9) {
47955
47955
  let err2 = error;
47956
47956
  for (let i = 0; i < options.extensions.length; i++) {
47957
47957
  const extension = options.extensions[i];
@@ -47970,7 +47970,7 @@ var require_send = __commonJS({
47970
47970
  if (err2) {
47971
47971
  return sendStatError(err2);
47972
47972
  }
47973
- return sendError(404);
47973
+ return sendError2(404);
47974
47974
  }
47975
47975
  if (error) return sendStatError(error);
47976
47976
  if (stat7.isDirectory()) return sendRedirect(path2, options);
@@ -47982,7 +47982,7 @@ var require_send = __commonJS({
47982
47982
  const parsed = normalizePath(_path, opts.root);
47983
47983
  const { path: path2, parts } = parsed;
47984
47984
  if (parsed.statusCode !== void 0) {
47985
- return sendError(parsed.statusCode);
47985
+ return sendError2(parsed.statusCode);
47986
47986
  }
47987
47987
  if ((debug.enabled || // if debugging is enabled, then check for all cases to log allow case
47988
47988
  opts.dotfiles !== 0) && containsDotFile(parts)) {
@@ -47995,12 +47995,12 @@ var require_send = __commonJS({
47995
47995
  /* c8 ignore stop */
47996
47996
  case 2:
47997
47997
  debug('deny dotfile "%s"', path2);
47998
- return sendError(403);
47998
+ return sendError2(403);
47999
47999
  case 1:
48000
48000
  // 'ignore'
48001
48001
  default:
48002
48002
  debug('ignore dotfile "%s"', path2);
48003
- return sendError(404);
48003
+ return sendError2(404);
48004
48004
  }
48005
48005
  }
48006
48006
  if (opts.index.length && hasTrailingSlash(_path)) {
@@ -48844,8 +48844,8 @@ var require_static = __commonJS({
48844
48844
  }
48845
48845
  }
48846
48846
  }
48847
- for (const [dirname8, rootPath] of indexDirs.entries()) {
48848
- const pathname = dirname8 + (dirname8.endsWith("/") ? "" : "/");
48847
+ for (const [dirname9, rootPath] of indexDirs.entries()) {
48848
+ const pathname = dirname9 + (dirname9.endsWith("/") ? "" : "/");
48849
48849
  const file = "/" + pathname.replace(prefix, "");
48850
48850
  setUpHeadAndGet(routeOpts, pathname, file, rootPath);
48851
48851
  if (opts.redirect === true) {
@@ -51491,7 +51491,7 @@ var require_websocket = __commonJS({
51491
51491
  var http = __require("http");
51492
51492
  var net = __require("net");
51493
51493
  var tls = __require("tls");
51494
- var { randomBytes, createHash: createHash7 } = __require("crypto");
51494
+ var { randomBytes, createHash: createHash8 } = __require("crypto");
51495
51495
  var { Duplex, Readable: Readable4 } = __require("stream");
51496
51496
  var { URL: URL2 } = __require("url");
51497
51497
  var PerMessageDeflate = require_permessage_deflate();
@@ -52159,7 +52159,7 @@ var require_websocket = __commonJS({
52159
52159
  abortHandshake(websocket, socket, "Invalid Upgrade header");
52160
52160
  return;
52161
52161
  }
52162
- const digest = createHash7("sha1").update(key + GUID).digest("base64");
52162
+ const digest = createHash8("sha1").update(key + GUID).digest("base64");
52163
52163
  if (res.headers["sec-websocket-accept"] !== digest) {
52164
52164
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
52165
52165
  return;
@@ -52439,7 +52439,7 @@ var require_stream = __commonJS({
52439
52439
  };
52440
52440
  duplex._final = function(callback) {
52441
52441
  if (ws2.readyState === ws2.CONNECTING) {
52442
- ws2.once("open", function open6() {
52442
+ ws2.once("open", function open7() {
52443
52443
  duplex._final(callback);
52444
52444
  });
52445
52445
  return;
@@ -52460,7 +52460,7 @@ var require_stream = __commonJS({
52460
52460
  };
52461
52461
  duplex._write = function(chunk, encoding, callback) {
52462
52462
  if (ws2.readyState === ws2.CONNECTING) {
52463
- ws2.once("open", function open6() {
52463
+ ws2.once("open", function open7() {
52464
52464
  duplex._write(chunk, encoding, callback);
52465
52465
  });
52466
52466
  return;
@@ -52525,7 +52525,7 @@ var require_websocket_server = __commonJS({
52525
52525
  var EventEmitter = __require("events");
52526
52526
  var http = __require("http");
52527
52527
  var { Duplex } = __require("stream");
52528
- var { createHash: createHash7 } = __require("crypto");
52528
+ var { createHash: createHash8 } = __require("crypto");
52529
52529
  var extension = require_extension();
52530
52530
  var PerMessageDeflate = require_permessage_deflate();
52531
52531
  var subprotocol = require_subprotocol();
@@ -52832,7 +52832,7 @@ var require_websocket_server = __commonJS({
52832
52832
  );
52833
52833
  }
52834
52834
  if (this._state > RUNNING) return abortHandshake(socket, 503);
52835
- const digest = createHash7("sha1").update(key + GUID).digest("base64");
52835
+ const digest = createHash8("sha1").update(key + GUID).digest("base64");
52836
52836
  const headers = [
52837
52837
  "HTTP/1.1 101 Switching Protocols",
52838
52838
  "Upgrade: websocket",
@@ -53072,7 +53072,7 @@ var require_buffer_list = __commonJS({
53072
53072
  }
53073
53073
  }, {
53074
53074
  key: "join",
53075
- value: function join13(s) {
53075
+ value: function join14(s) {
53076
53076
  if (this.length === 0) return "";
53077
53077
  var p2 = this.head;
53078
53078
  var ret = "" + p2.data;
@@ -54395,14 +54395,14 @@ var require_async_iterator = __commonJS({
54395
54395
  };
54396
54396
  }
54397
54397
  function readAndResolve(iter) {
54398
- var resolve10 = iter[kLastResolve];
54399
- if (resolve10 !== null) {
54398
+ var resolve11 = iter[kLastResolve];
54399
+ if (resolve11 !== null) {
54400
54400
  var data = iter[kStream].read();
54401
54401
  if (data !== null) {
54402
54402
  iter[kLastPromise] = null;
54403
54403
  iter[kLastResolve] = null;
54404
54404
  iter[kLastReject] = null;
54405
- resolve10(createIterResult(data, false));
54405
+ resolve11(createIterResult(data, false));
54406
54406
  }
54407
54407
  }
54408
54408
  }
@@ -54410,13 +54410,13 @@ var require_async_iterator = __commonJS({
54410
54410
  process.nextTick(readAndResolve, iter);
54411
54411
  }
54412
54412
  function wrapForNext(lastPromise, iter) {
54413
- return function(resolve10, reject) {
54413
+ return function(resolve11, reject) {
54414
54414
  lastPromise.then(function() {
54415
54415
  if (iter[kEnded]) {
54416
- resolve10(createIterResult(void 0, true));
54416
+ resolve11(createIterResult(void 0, true));
54417
54417
  return;
54418
54418
  }
54419
- iter[kHandlePromise](resolve10, reject);
54419
+ iter[kHandlePromise](resolve11, reject);
54420
54420
  }, reject);
54421
54421
  };
54422
54422
  }
@@ -54436,12 +54436,12 @@ var require_async_iterator = __commonJS({
54436
54436
  return Promise.resolve(createIterResult(void 0, true));
54437
54437
  }
54438
54438
  if (this[kStream].destroyed) {
54439
- return new Promise(function(resolve10, reject) {
54439
+ return new Promise(function(resolve11, reject) {
54440
54440
  process.nextTick(function() {
54441
54441
  if (_this[kError]) {
54442
54442
  reject(_this[kError]);
54443
54443
  } else {
54444
- resolve10(createIterResult(void 0, true));
54444
+ resolve11(createIterResult(void 0, true));
54445
54445
  }
54446
54446
  });
54447
54447
  });
@@ -54464,13 +54464,13 @@ var require_async_iterator = __commonJS({
54464
54464
  return this;
54465
54465
  }), _defineProperty(_Object$setPrototypeO, "return", function _return() {
54466
54466
  var _this2 = this;
54467
- return new Promise(function(resolve10, reject) {
54467
+ return new Promise(function(resolve11, reject) {
54468
54468
  _this2[kStream].destroy(null, function(err2) {
54469
54469
  if (err2) {
54470
54470
  reject(err2);
54471
54471
  return;
54472
54472
  }
54473
- resolve10(createIterResult(void 0, true));
54473
+ resolve11(createIterResult(void 0, true));
54474
54474
  });
54475
54475
  });
54476
54476
  }), _Object$setPrototypeO), AsyncIteratorPrototype);
@@ -54492,15 +54492,15 @@ var require_async_iterator = __commonJS({
54492
54492
  value: stream._readableState.endEmitted,
54493
54493
  writable: true
54494
54494
  }), _defineProperty(_Object$create, kHandlePromise, {
54495
- value: function value(resolve10, reject) {
54495
+ value: function value(resolve11, reject) {
54496
54496
  var data = iterator[kStream].read();
54497
54497
  if (data) {
54498
54498
  iterator[kLastPromise] = null;
54499
54499
  iterator[kLastResolve] = null;
54500
54500
  iterator[kLastReject] = null;
54501
- resolve10(createIterResult(data, false));
54501
+ resolve11(createIterResult(data, false));
54502
54502
  } else {
54503
- iterator[kLastResolve] = resolve10;
54503
+ iterator[kLastResolve] = resolve11;
54504
54504
  iterator[kLastReject] = reject;
54505
54505
  }
54506
54506
  },
@@ -54519,12 +54519,12 @@ var require_async_iterator = __commonJS({
54519
54519
  iterator[kError] = err2;
54520
54520
  return;
54521
54521
  }
54522
- var resolve10 = iterator[kLastResolve];
54523
- if (resolve10 !== null) {
54522
+ var resolve11 = iterator[kLastResolve];
54523
+ if (resolve11 !== null) {
54524
54524
  iterator[kLastPromise] = null;
54525
54525
  iterator[kLastResolve] = null;
54526
54526
  iterator[kLastReject] = null;
54527
- resolve10(createIterResult(void 0, true));
54527
+ resolve11(createIterResult(void 0, true));
54528
54528
  }
54529
54529
  iterator[kEnded] = true;
54530
54530
  });
@@ -54538,7 +54538,7 @@ var require_async_iterator = __commonJS({
54538
54538
  // node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/from.js
54539
54539
  var require_from = __commonJS({
54540
54540
  "node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/from.js"(exports, module) {
54541
- function asyncGeneratorStep(gen, resolve10, reject, _next, _throw, key, arg) {
54541
+ function asyncGeneratorStep(gen, resolve11, reject, _next, _throw, key, arg) {
54542
54542
  try {
54543
54543
  var info = gen[key](arg);
54544
54544
  var value = info.value;
@@ -54547,7 +54547,7 @@ var require_from = __commonJS({
54547
54547
  return;
54548
54548
  }
54549
54549
  if (info.done) {
54550
- resolve10(value);
54550
+ resolve11(value);
54551
54551
  } else {
54552
54552
  Promise.resolve(value).then(_next, _throw);
54553
54553
  }
@@ -54555,13 +54555,13 @@ var require_from = __commonJS({
54555
54555
  function _asyncToGenerator(fn2) {
54556
54556
  return function() {
54557
54557
  var self2 = this, args = arguments;
54558
- return new Promise(function(resolve10, reject) {
54558
+ return new Promise(function(resolve11, reject) {
54559
54559
  var gen = fn2.apply(self2, args);
54560
54560
  function _next(value) {
54561
- asyncGeneratorStep(gen, resolve10, reject, _next, _throw, "next", value);
54561
+ asyncGeneratorStep(gen, resolve11, reject, _next, _throw, "next", value);
54562
54562
  }
54563
54563
  function _throw(err2) {
54564
- asyncGeneratorStep(gen, resolve10, reject, _next, _throw, "throw", err2);
54564
+ asyncGeneratorStep(gen, resolve11, reject, _next, _throw, "throw", err2);
54565
54565
  }
54566
54566
  _next(void 0);
54567
54567
  });
@@ -56028,16 +56028,16 @@ var require_websocket2 = __commonJS({
56028
56028
  const clientStream = new Duplexify(client2Server, server2Client);
56029
56029
  const ws2 = new WebSocket(null, void 0, { isServer: false });
56030
56030
  const head = Buffer.from([]);
56031
- let resolve10, reject;
56031
+ let resolve11, reject;
56032
56032
  const promise = new Promise((_resolve, _reject) => {
56033
- resolve10 = _resolve;
56033
+ resolve11 = _resolve;
56034
56034
  reject = _reject;
56035
56035
  });
56036
56036
  typeof options.onInit === "function" && options.onInit(ws2);
56037
56037
  ws2.on("open", () => {
56038
56038
  typeof options.onOpen === "function" && options.onOpen(ws2);
56039
56039
  clientStream.removeListener("data", onData);
56040
- resolve10(ws2);
56040
+ resolve11(ws2);
56041
56041
  });
56042
56042
  const onData = (chunk) => {
56043
56043
  if (chunk.toString().includes("HTTP/1.1 101 Switching Protocols")) {
@@ -56184,6 +56184,9 @@ var require_websocket2 = __commonJS({
56184
56184
  });
56185
56185
  var EVENT_SOCKET_SOFT_BACKPRESSURE_BYTES = 256 * 1024;
56186
56186
  var EVENT_SOCKET_HARD_BACKPRESSURE_BYTES = 1024 * 1024;
56187
+ var EVENT_BATCH_PREFIX = '{"events":[';
56188
+ var EVENT_BATCH_SUFFIX = '],"type":"events.batch","version":3}';
56189
+ var EVENT_BATCH_ENVELOPE_BYTES = EVENT_BATCH_PREFIX.length + EVENT_BATCH_SUFFIX.length;
56187
56190
  var serializedMessages = /* @__PURE__ */ new WeakMap();
56188
56191
  var serializedEventBatches = /* @__PURE__ */ new WeakMap();
56189
56192
  function serializeEventStreamValue(value) {
@@ -56209,7 +56212,25 @@ function hasSameEvents(cachedEvents, events, offset, end) {
56209
56212
  return cachedEvents.every((event, index) => event === events[offset + index]);
56210
56213
  }
56211
56214
  function serializeEventBatch(events, offset) {
56212
- const end = Math.min(offset + MAX_EVENT_BATCH_SIZE, events.length);
56215
+ const maxEnd = Math.min(offset + MAX_EVENT_BATCH_SIZE, events.length);
56216
+ let end = offset;
56217
+ let byteLength = EVENT_BATCH_ENVELOPE_BYTES;
56218
+ const serializedEvents = [];
56219
+ for (; end < maxEnd; end += 1) {
56220
+ const agentEvent = events[end];
56221
+ if (agentEvent === void 0) {
56222
+ throw new RangeError("Event batch must contain defined events");
56223
+ }
56224
+ const event = serializeEventStreamValue(agentEvent);
56225
+ if (event.byteLength > MAX_AGENT_EVENT_BYTES) {
56226
+ if (end === offset) return void 0;
56227
+ break;
56228
+ }
56229
+ const nextByteLength = byteLength + event.byteLength + (end === offset ? 0 : 1);
56230
+ if (nextByteLength > MAX_EVENT_BATCH_BYTES) break;
56231
+ byteLength = nextByteLength;
56232
+ serializedEvents.push(event);
56233
+ }
56213
56234
  const firstEvent = events[offset];
56214
56235
  if (firstEvent === void 0) {
56215
56236
  throw new RangeError("Event batch must contain at least one event");
@@ -56218,24 +56239,18 @@ function serializeEventBatch(events, offset) {
56218
56239
  const cachedByCount = serializedEventBatches.get(firstEvent);
56219
56240
  const cached = cachedByCount?.get(eventCount);
56220
56241
  if (cached !== void 0 && hasSameEvents(cached.events, events, offset, end)) {
56221
- return cached.message;
56242
+ return cached;
56222
56243
  }
56223
56244
  const batchEvents = events.slice(offset, end);
56224
- const serializedEvents = batchEvents.map((event) => serializedMessages.get(event));
56225
- let message;
56226
- if (serializedEvents.every((event) => event !== void 0)) {
56227
- const data = `{"events":[${serializedEvents.map((event) => event.data).join(",")}],"type":"events.batch","version":3}`;
56228
- message = { byteLength: Buffer$1.byteLength(data), data };
56229
- } else {
56230
- const batch = { events: batchEvents, type: "events.batch", version: 3 };
56231
- message = serializeEventStreamValue(batch);
56232
- }
56245
+ const data = `${EVENT_BATCH_PREFIX}${serializedEvents.map((event) => event.data).join(",")}${EVENT_BATCH_SUFFIX}`;
56246
+ const message = { byteLength, data };
56247
+ const batch = { events: batchEvents, message };
56233
56248
  const batches = cachedByCount ?? /* @__PURE__ */ new Map();
56234
- batches.set(eventCount, { events: batchEvents, message });
56249
+ batches.set(eventCount, batch);
56235
56250
  if (cachedByCount === void 0) {
56236
56251
  serializedEventBatches.set(firstEvent, batches);
56237
56252
  }
56238
- return message;
56253
+ return batch;
56239
56254
  }
56240
56255
  function sendSerializedEventStreamMessage(socket, serialize, onSoftBackpressure, onSlowClientDisconnect) {
56241
56256
  if (socket.readyState !== 1) {
@@ -56246,37 +56261,61 @@ function sendSerializedEventStreamMessage(socket, serialize, onSoftBackpressure,
56246
56261
  socket.close(1013, "Client is too slow; refresh the snapshot");
56247
56262
  return false;
56248
56263
  }
56249
- if (socket.bufferedAmount > EVENT_SOCKET_SOFT_BACKPRESSURE_BYTES) {
56264
+ const message = serialize();
56265
+ if (message === void 0 || message.byteLength > MAX_EVENT_BATCH_BYTES) {
56266
+ socket.close(1009, "Event frame is too large; refresh the snapshot");
56267
+ return false;
56268
+ }
56269
+ const projectedBufferedAmount = socket.bufferedAmount + message.byteLength;
56270
+ if (projectedBufferedAmount > EVENT_SOCKET_HARD_BACKPRESSURE_BYTES) {
56271
+ onSlowClientDisconnect();
56272
+ socket.close(1013, "Client is too slow; refresh the snapshot");
56273
+ return false;
56274
+ }
56275
+ if (projectedBufferedAmount > EVENT_SOCKET_SOFT_BACKPRESSURE_BYTES) {
56250
56276
  onSoftBackpressure();
56251
56277
  }
56252
- socket.send(serialize().data);
56278
+ socket.send(message.data);
56253
56279
  return true;
56254
56280
  }
56255
56281
  function sendEventStreamMessage(socket, message, onSoftBackpressure, onSlowClientDisconnect) {
56256
56282
  return sendSerializedEventStreamMessage(
56257
56283
  socket,
56258
- () => serializeEventStreamMessage(message),
56284
+ () => {
56285
+ if (message.type === "events.batch" && message.events.some(
56286
+ (event) => getSerializedAgentEventByteLength(event) > MAX_AGENT_EVENT_BYTES
56287
+ ))
56288
+ return void 0;
56289
+ return serializeEventStreamMessage(message);
56290
+ },
56259
56291
  onSoftBackpressure,
56260
56292
  onSlowClientDisconnect
56261
56293
  );
56262
56294
  }
56263
56295
  function sendEventStreamEvents(socket, events, onSoftBackpressure, onSlowClientDisconnect) {
56264
- for (let offset = 0; offset < events.length; offset += MAX_EVENT_BATCH_SIZE) {
56296
+ for (let offset = 0; offset < events.length; ) {
56297
+ let nextOffset = offset;
56265
56298
  if (!sendSerializedEventStreamMessage(
56266
56299
  socket,
56267
- () => serializeEventBatch(events, offset),
56300
+ () => {
56301
+ const batch = serializeEventBatch(events, offset);
56302
+ if (batch === void 0) return void 0;
56303
+ nextOffset += batch.events.length;
56304
+ return batch.message;
56305
+ },
56268
56306
  onSoftBackpressure,
56269
56307
  onSlowClientDisconnect
56270
56308
  )) {
56271
56309
  return false;
56272
56310
  }
56311
+ offset = nextOffset;
56273
56312
  }
56274
56313
  return true;
56275
56314
  }
56276
56315
 
56277
56316
  // packages/server/src/agent-event-stream.ts
56278
56317
  var DEFAULT_COALESCING_WINDOW_MS = 16;
56279
- var DEFAULT_MAX_EVENT_BYTES = 1048576;
56318
+ var DEFAULT_MAX_EVENT_BYTES = MAX_AGENT_EVENT_BYTES;
56280
56319
  var DEFAULT_MAX_RETAINED_BYTES = 4 * 1048576;
56281
56320
  var DEFAULT_PRESSURE_COALESCING_WINDOW_MS = 32;
56282
56321
  function isCoalescedEvent(event) {
@@ -56709,6 +56748,322 @@ var registerHistoryStorageRoutes = (app, context, done) => {
56709
56748
  done();
56710
56749
  };
56711
56750
 
56751
+ // packages/server/src/workbench-changes.ts
56752
+ var WorkbenchChanges = class {
56753
+ #listeners = /* @__PURE__ */ new Set();
56754
+ subscribe(listener) {
56755
+ this.#listeners.add(listener);
56756
+ return () => {
56757
+ this.#listeners.delete(listener);
56758
+ };
56759
+ }
56760
+ publish(change) {
56761
+ for (const listener of this.#listeners) listener(change);
56762
+ }
56763
+ publishAgentEvent(projectId, event) {
56764
+ if (event.type === "turn.started" || event.type === "turn.completed" || event.type === "item.completed" && event.payload.item.type === "message" && (event.payload.item.questions?.length ?? 0) > 0) {
56765
+ this.publish({ type: "async-questions.changed", projectId, taskId: event.taskId });
56766
+ }
56767
+ }
56768
+ };
56769
+
56770
+ // packages/server/src/routes/access-routes.ts
56771
+ var ACCESS_SESSION_COOKIE = "codexly_session";
56772
+ function status(authenticated, mode) {
56773
+ return { authenticated, mode, version: 1 };
56774
+ }
56775
+ var registerAccessRoutes = (app, options, done) => {
56776
+ const { access: access3, service } = options;
56777
+ const mode = access3 === void 0 ? "local" : "lan";
56778
+ app.get(
56779
+ "/v1/access",
56780
+ { schema: { response: { 200: AccessStatusResponseSchema } } },
56781
+ (request2) => status(
56782
+ mode === "local" || service?.validate(request2.cookies[ACCESS_SESSION_COOKIE]) === true,
56783
+ mode
56784
+ )
56785
+ );
56786
+ app.post(
56787
+ "/v1/access/pair",
56788
+ {
56789
+ schema: {
56790
+ body: PairAccessRequestSchema,
56791
+ response: { 200: AccessStatusResponseSchema }
56792
+ }
56793
+ },
56794
+ (request2, reply) => {
56795
+ if (access3 === void 0 || service === void 0) {
56796
+ return status(true, "local");
56797
+ }
56798
+ const result = service.pair(request2.body.code, request2.ip);
56799
+ if (result.status !== "paired") {
56800
+ return reply.code(result.status === "rate_limited" ? 429 : 403).send({
56801
+ code: result.status === "rate_limited" ? "PAIRING_RATE_LIMITED" : "PAIRING_FAILED",
56802
+ message: "Pairing request failed",
56803
+ retryable: result.status === "rate_limited"
56804
+ });
56805
+ }
56806
+ reply.setCookie(ACCESS_SESSION_COOKIE, result.sessionId, {
56807
+ ...result.expiresAt === null || access3.sessionTtlMs === void 0 ? {} : {
56808
+ expires: new Date(result.expiresAt),
56809
+ maxAge: Math.ceil(access3.sessionTtlMs / 1e3)
56810
+ },
56811
+ httpOnly: true,
56812
+ path: "/",
56813
+ sameSite: "strict",
56814
+ secure: false
56815
+ });
56816
+ return status(true, "lan");
56817
+ }
56818
+ );
56819
+ app.post(
56820
+ "/v1/access/logout",
56821
+ { schema: { response: { 200: AccessStatusResponseSchema } } },
56822
+ (request2, reply) => {
56823
+ service?.logout(request2.cookies[ACCESS_SESSION_COOKIE]);
56824
+ reply.clearCookie(ACCESS_SESSION_COOKIE, { path: "/", sameSite: "strict" });
56825
+ return status(mode === "local", mode);
56826
+ }
56827
+ );
56828
+ done();
56829
+ };
56830
+
56831
+ // packages/server/src/routes/event-routes.ts
56832
+ var MAX_TIMER_DELAY_MS = 2147483647;
56833
+ function scheduleSessionExpiry(socket, expiresAt) {
56834
+ let timer;
56835
+ const expire = () => {
56836
+ const remainingMs = expiresAt - Date.now();
56837
+ if (remainingMs <= 0) {
56838
+ socket.close(1008, "Access session expired");
56839
+ return;
56840
+ }
56841
+ timer = setTimeout(expire, Math.min(remainingMs, MAX_TIMER_DELAY_MS));
56842
+ timer.unref();
56843
+ };
56844
+ expire();
56845
+ return () => {
56846
+ if (timer !== void 0) {
56847
+ clearTimeout(timer);
56848
+ }
56849
+ };
56850
+ }
56851
+ var registerEventRoutes = (app, context, done) => {
56852
+ const { accessService, getProjectContext, projectContexts } = context;
56853
+ app.get(
56854
+ "/v1/projects/:projectId/events",
56855
+ {
56856
+ async preValidation(request2, reply) {
56857
+ if (await getProjectContext(request2.params.projectId) === void 0) {
56858
+ return await reply.code(404).send({ code: "PROJECT_NOT_FOUND", message: "Project not found" });
56859
+ }
56860
+ },
56861
+ schema: { params: ProjectParamsSchema, querystring: EventQuerySchema },
56862
+ websocket: true
56863
+ },
56864
+ (socket, request2) => {
56865
+ const sessionExpiresAt = accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
56866
+ if (accessService !== void 0 && sessionExpiresAt === void 0) {
56867
+ socket.close(1008, "Access session expired");
56868
+ return;
56869
+ }
56870
+ const context2 = projectContexts.get(request2.params.projectId);
56871
+ if (context2 === void 0) {
56872
+ socket.close(1008, "Project not found");
56873
+ return;
56874
+ }
56875
+ const eventStream = context2.eventStream;
56876
+ context2.transportMetrics.activeClients += 1;
56877
+ let cleanedUp = false;
56878
+ let liveFlushScheduled = false;
56879
+ const liveEvents = [];
56880
+ let unsubscribe = () => void 0;
56881
+ let cancelInvalidation = () => void 0;
56882
+ const cancelSessionExpiry = sessionExpiresAt === void 0 || sessionExpiresAt === null ? () => void 0 : scheduleSessionExpiry(socket, sessionExpiresAt);
56883
+ const cleanup = () => {
56884
+ if (cleanedUp) {
56885
+ return;
56886
+ }
56887
+ cleanedUp = true;
56888
+ liveEvents.length = 0;
56889
+ cancelSessionExpiry();
56890
+ cancelInvalidation();
56891
+ unsubscribe();
56892
+ context2.transportMetrics.activeClients -= 1;
56893
+ };
56894
+ socket.once("close", cleanup);
56895
+ socket.once("error", cleanup);
56896
+ cancelInvalidation = accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
56897
+ cleanup();
56898
+ socket.close(1008, "Access session expired");
56899
+ }) ?? (() => void 0);
56900
+ if (socket.readyState !== socket.OPEN) return;
56901
+ const send = (message) => sendEventStreamMessage(
56902
+ socket,
56903
+ message,
56904
+ () => {
56905
+ eventStream.noteBackpressure();
56906
+ },
56907
+ () => {
56908
+ context2.transportMetrics.slowClientDisconnects += 1;
56909
+ }
56910
+ );
56911
+ const sendEvents = (events) => sendEventStreamEvents(
56912
+ socket,
56913
+ events,
56914
+ () => {
56915
+ eventStream.noteBackpressure();
56916
+ },
56917
+ () => {
56918
+ context2.transportMetrics.slowClientDisconnects += 1;
56919
+ }
56920
+ );
56921
+ const flushLiveEvents = () => {
56922
+ liveFlushScheduled = false;
56923
+ if (cleanedUp || liveEvents.length === 0) {
56924
+ return;
56925
+ }
56926
+ const events = liveEvents.splice(0);
56927
+ sendEvents(events);
56928
+ };
56929
+ const enqueueLiveEvent = (event) => {
56930
+ liveEvents.push(event);
56931
+ if (liveEvents.length >= MAX_EVENT_BATCH_SIZE) {
56932
+ flushLiveEvents();
56933
+ return;
56934
+ }
56935
+ if (liveFlushScheduled) {
56936
+ return;
56937
+ }
56938
+ liveFlushScheduled = true;
56939
+ queueMicrotask(() => {
56940
+ if (liveFlushScheduled) {
56941
+ flushLiveEvents();
56942
+ }
56943
+ });
56944
+ };
56945
+ const replay = eventStream.replayAfter(request2.query.afterSequence);
56946
+ if (replay.type === "resync") {
56947
+ const sent = send({
56948
+ latestSequence: replay.latestSequence,
56949
+ reason: replay.reason,
56950
+ sessionId: eventStream.checkpoint.sessionId,
56951
+ type: "resync.required",
56952
+ version: 3
56953
+ });
56954
+ if (sent) {
56955
+ socket.close(1e3, "Snapshot resync required");
56956
+ }
56957
+ return;
56958
+ }
56959
+ const checkpoint = eventStream.checkpoint;
56960
+ const initializationEvents = [];
56961
+ let isInitializing = true;
56962
+ unsubscribe = eventStream.subscribe((event) => {
56963
+ if (isInitializing) {
56964
+ initializationEvents.push(event);
56965
+ return;
56966
+ }
56967
+ enqueueLiveEvent(event);
56968
+ });
56969
+ const readySent = send({
56970
+ latestSequence: checkpoint.sequence,
56971
+ sessionId: checkpoint.sessionId,
56972
+ type: "connection.ready",
56973
+ version: 3
56974
+ });
56975
+ if (!readySent) {
56976
+ return;
56977
+ }
56978
+ if (!sendEvents(replay.events)) {
56979
+ return;
56980
+ }
56981
+ isInitializing = false;
56982
+ if (!sendEvents(initializationEvents)) {
56983
+ return;
56984
+ }
56985
+ }
56986
+ );
56987
+ done();
56988
+ };
56989
+
56990
+ // packages/server/src/routes/resource-change-events.ts
56991
+ function registerWorkbenchEvents(app, context) {
56992
+ registerResourceChangeEvents(
56993
+ app,
56994
+ context,
56995
+ "/v1/workbench/events",
56996
+ { type: "workbench.ready" },
56997
+ (listener) => context.workbenchChanges.subscribe(listener)
56998
+ );
56999
+ }
57000
+ function registerResourceChangeEvents(app, context, path, initial, subscribe) {
57001
+ app.get(path, { websocket: true }, (socket, request2) => {
57002
+ const expiresAt = context.accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
57003
+ if (context.accessService !== void 0 && expiresAt === void 0) {
57004
+ socket.close(1008, "Access session expired");
57005
+ return;
57006
+ }
57007
+ const cancelExpiry = expiresAt == null ? () => void 0 : scheduleSessionExpiry(socket, expiresAt);
57008
+ const pending = /* @__PURE__ */ new Set();
57009
+ let closed = false;
57010
+ const send = (frame) => {
57011
+ if (closed || socket.readyState !== 1) return;
57012
+ if (socket.bufferedAmount > 65536) {
57013
+ socket.close(1013, "Slow client");
57014
+ return;
57015
+ }
57016
+ socket.send(frame, (error) => {
57017
+ if (error) socket.terminate();
57018
+ });
57019
+ };
57020
+ const unsubscribe = subscribe((change) => {
57021
+ if (closed) return;
57022
+ const queued = pending.size > 0;
57023
+ pending.add(JSON.stringify(change));
57024
+ if (pending.size > 256) {
57025
+ socket.close(1013, "Too many changes");
57026
+ return;
57027
+ }
57028
+ if (queued) return;
57029
+ queueMicrotask(() => {
57030
+ for (const frame of pending) send(frame);
57031
+ pending.clear();
57032
+ });
57033
+ });
57034
+ let alive = true;
57035
+ socket.on("pong", () => {
57036
+ alive = true;
57037
+ });
57038
+ const heartbeat = setInterval(() => {
57039
+ if (!alive) {
57040
+ socket.terminate();
57041
+ return;
57042
+ }
57043
+ alive = false;
57044
+ socket.ping();
57045
+ }, 3e4);
57046
+ heartbeat.unref();
57047
+ let cancelInvalidation = () => void 0;
57048
+ const cleanup = () => {
57049
+ if (closed) return;
57050
+ closed = true;
57051
+ unsubscribe();
57052
+ pending.clear();
57053
+ cancelExpiry();
57054
+ cancelInvalidation();
57055
+ clearInterval(heartbeat);
57056
+ };
57057
+ socket.once("close", cleanup);
57058
+ socket.once("error", cleanup);
57059
+ cancelInvalidation = context.accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
57060
+ cleanup();
57061
+ socket.close(1008, "Access session expired");
57062
+ }) ?? (() => void 0);
57063
+ send(JSON.stringify(initial));
57064
+ });
57065
+ }
57066
+
56712
57067
  // packages/server/src/app.ts
56713
57068
  var import_fastify2 = __toESM(require_fastify(), 1);
56714
57069
 
@@ -60664,27 +61019,27 @@ function pLimit(concurrency) {
60664
61019
  activeCount--;
60665
61020
  resumeNext();
60666
61021
  };
60667
- const run = async (function_, resolve10, arguments_) => {
61022
+ const run = async (function_, resolve11, arguments_) => {
60668
61023
  const result = (async () => function_(...arguments_))();
60669
- resolve10(result);
61024
+ resolve11(result);
60670
61025
  try {
60671
61026
  await result;
60672
61027
  } catch {
60673
61028
  }
60674
61029
  next();
60675
61030
  };
60676
- const enqueue = (function_, resolve10, reject, arguments_) => {
61031
+ const enqueue = (function_, resolve11, reject, arguments_) => {
60677
61032
  const queueItem = { reject };
60678
61033
  new Promise((internalResolve) => {
60679
61034
  queueItem.run = internalResolve;
60680
61035
  queue.enqueue(queueItem);
60681
- }).then(run.bind(void 0, function_, resolve10, arguments_));
61036
+ }).then(run.bind(void 0, function_, resolve11, arguments_));
60682
61037
  if (activeCount < concurrency) {
60683
61038
  resumeNext();
60684
61039
  }
60685
61040
  };
60686
- const generator = (function_, ...arguments_) => new Promise((resolve10, reject) => {
60687
- enqueue(function_, resolve10, reject, arguments_);
61041
+ const generator = (function_, ...arguments_) => new Promise((resolve11, reject) => {
61042
+ enqueue(function_, resolve11, reject, arguments_);
60688
61043
  });
60689
61044
  Object.defineProperties(generator, {
60690
61045
  activeCount: {
@@ -61008,7 +61363,7 @@ function createUntrackedTextDiff(path, content) {
61008
61363
  );
61009
61364
  }
61010
61365
  function applyDiffBudget(changes, budget) {
61011
- return changes.map((change2) => ({ ...change2, diff: budget.takeDiff(change2.diff) }));
61366
+ return changes.map((change) => ({ ...change, diff: budget.takeDiff(change.diff) }));
61012
61367
  }
61013
61368
  function parseTrackedDiffs(output) {
61014
61369
  if (output === "") {
@@ -61312,17 +61667,17 @@ async function readResolvedGitWorkingTreeStatus(resolvedProjectRoot, gitCommandE
61312
61667
  snapshotHash.update(root).update("\0").update(fingerprint).update("\0");
61313
61668
  }
61314
61669
  snapshotHash.update(repositoryBranches.branch ?? "").update("\0").update(repositoryMode);
61315
- const fingerprintChanges = async (location, changes) => mapWithConcurrency(changes, MAX_FILE_IO_CONCURRENCY, async (change2) => {
61670
+ const fingerprintChanges = async (location, changes) => mapWithConcurrency(changes, MAX_FILE_IO_CONCURRENCY, async (change) => {
61316
61671
  let metadata = "missing";
61317
61672
  try {
61318
61673
  const stats = await limitGitFileIO(
61319
- () => lstat(join(resolvedProjectRoot, change2.path), { bigint: true })
61674
+ () => lstat(join(resolvedProjectRoot, change.path), { bigint: true })
61320
61675
  );
61321
61676
  metadata = [stats.mode, stats.size, stats.mtimeNs, stats.ctimeNs].join(":");
61322
61677
  } catch (error) {
61323
61678
  if (error.code !== "ENOENT") throw error;
61324
61679
  }
61325
- return `${location}\0${change2.kind}\0${change2.path}\0${metadata}\0`;
61680
+ return `${location}\0${change.kind}\0${change.path}\0${metadata}\0`;
61326
61681
  });
61327
61682
  for (const fingerprint of await fingerprintChanges("staged", staged)) {
61328
61683
  snapshotHash.update(fingerprint);
@@ -61330,11 +61685,11 @@ async function readResolvedGitWorkingTreeStatus(resolvedProjectRoot, gitCommandE
61330
61685
  for (const fingerprint of await fingerprintChanges("unstaged", unstaged)) {
61331
61686
  snapshotHash.update(fingerprint);
61332
61687
  }
61333
- const snapshot = snapshotHash.digest("hex");
61688
+ const snapshot2 = snapshotHash.digest("hex");
61334
61689
  return {
61335
61690
  ...repositoryBranches,
61336
61691
  repositoryMode,
61337
- snapshot,
61692
+ snapshot: snapshot2,
61338
61693
  staged,
61339
61694
  unstaged
61340
61695
  };
@@ -61374,7 +61729,7 @@ async function executeGit2(repositoryRoot, arguments_, input = "", environment =
61374
61729
  return limitGitProcess(() => runGitCommand(repositoryRoot, arguments_, input, environment));
61375
61730
  }
61376
61731
  async function runGitCommand(repositoryRoot, arguments_, input, environment) {
61377
- return new Promise((resolve10, reject) => {
61732
+ return new Promise((resolve11, reject) => {
61378
61733
  const consumesInput = input !== "";
61379
61734
  const child = spawn("git", ["-C", repositoryRoot, ...arguments_], {
61380
61735
  env: { ...createGitEnvironment(), ...environment, GIT_TERMINAL_PROMPT: "0" },
@@ -61397,7 +61752,7 @@ async function runGitCommand(repositoryRoot, arguments_, input, environment) {
61397
61752
  if (error !== void 0) {
61398
61753
  reject(error);
61399
61754
  } else if (result !== void 0) {
61400
- resolve10(result);
61755
+ resolve11(result);
61401
61756
  }
61402
61757
  };
61403
61758
  const collect = (target, chunk) => {
@@ -61472,7 +61827,7 @@ async function commitSelectedProjectChanges(projectRoot, request2) {
61472
61827
  if (status2.snapshot !== request2.expectedSnapshot) {
61473
61828
  throw new GitCommitError("GIT_STATUS_CHANGED", "Git changes changed before the commit");
61474
61829
  }
61475
- const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change2) => change2.path));
61830
+ const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change) => change.path));
61476
61831
  if (request2.paths.some((path) => !changedPaths.has(path))) {
61477
61832
  throw new GitCommitError(
61478
61833
  "GIT_PATH_UNAVAILABLE",
@@ -61480,7 +61835,7 @@ async function commitSelectedProjectChanges(projectRoot, request2) {
61480
61835
  );
61481
61836
  }
61482
61837
  const selectedPaths = request2.paths.map(literalPath);
61483
- const stagedPaths = new Set(status2.staged.map((change2) => change2.path));
61838
+ const stagedPaths = new Set(status2.staged.map((change) => change.path));
61484
61839
  const selectedStagedPaths = request2.paths.filter((path) => stagedPaths.has(path));
61485
61840
  const selectedUnstagedPaths = request2.paths.filter((path) => !stagedPaths.has(path));
61486
61841
  const temporaryIndexRoot = await mkdtemp(join(tmpdir(), "codexly-git-index-"));
@@ -61678,8 +62033,8 @@ var MAX_COMMIT_CHANGE_SUMMARY_BYTES = 20 * 1024;
61678
62033
  var MAX_COMMIT_DIFF_EXCERPT_BYTES = 36 * 1024;
61679
62034
  var MAX_EXCERPTED_COMMIT_CHANGES = 16;
61680
62035
  function selectedCommitChanges(status2, paths) {
61681
- const stagedByPath = new Map(status2.staged.map((change2) => [change2.path, change2]));
61682
- const unstagedByPath = new Map(status2.unstaged.map((change2) => [change2.path, change2]));
62036
+ const stagedByPath = new Map(status2.staged.map((change) => [change.path, change]));
62037
+ const unstagedByPath = new Map(status2.unstaged.map((change) => [change.path, change]));
61683
62038
  return paths.flatMap((path) => {
61684
62039
  const staged = stagedByPath.get(path);
61685
62040
  const unstaged = unstagedByPath.get(path);
@@ -61729,10 +62084,10 @@ function readDiffLineStats(diff) {
61729
62084
  return { additions, deletions };
61730
62085
  }
61731
62086
  function buildSelectedChangeSummary(changes) {
61732
- const lines = changes.map(({ change: change2, location }) => {
61733
- const { additions, deletions } = readDiffLineStats(change2.diff);
61734
- const binary = change2.diff.includes("Binary files ") ? ", binary" : "";
61735
- return `[${location}] ${change2.kind} ${change2.path} (+${String(additions)} -${String(deletions)}, ${String(Buffer$1.byteLength(change2.diff, "utf8"))} diff bytes${binary})`;
62087
+ const lines = changes.map(({ change, location }) => {
62088
+ const { additions, deletions } = readDiffLineStats(change.diff);
62089
+ const binary = change.diff.includes("Binary files ") ? ", binary" : "";
62090
+ return `[${location}] ${change.kind} ${change.path} (+${String(additions)} -${String(deletions)}, ${String(Buffer$1.byteLength(change.diff, "utf8"))} diff bytes${binary})`;
61736
62091
  });
61737
62092
  const completeSummary = lines.join("\n");
61738
62093
  if (Buffer$1.byteLength(completeSummary, "utf8") <= MAX_COMMIT_CHANGE_SUMMARY_BYTES) {
@@ -61763,7 +62118,7 @@ function representativeCommitChanges(changes) {
61763
62118
  { length: count },
61764
62119
  (_3, index) => Math.round(index * (changes.length - 1) / (count - 1))
61765
62120
  );
61766
- return indexes.map((index) => changes[index]).filter((change2) => change2 !== void 0);
62121
+ return indexes.map((index) => changes[index]).filter((change) => change !== void 0);
61767
62122
  }
61768
62123
  function compactDiff(diff, maximumBytes) {
61769
62124
  const diffBytes = Buffer$1.byteLength(diff, "utf8");
@@ -61788,28 +62143,28 @@ function buildSelectedDiffExcerpts(changes) {
61788
62143
  const perChangeBudget = Math.floor(
61789
62144
  (MAX_COMMIT_DIFF_EXCERPT_BYTES - separatorBytes) / representatives.length
61790
62145
  );
61791
- return representatives.map(({ change: change2, location }) => {
61792
- const header = `[${location}] ${change2.kind} ${change2.path}
62146
+ return representatives.map(({ change, location }) => {
62147
+ const header = `[${location}] ${change.kind} ${change.path}
61793
62148
  `;
61794
62149
  const headerBytes = Buffer$1.byteLength(header, "utf8");
61795
62150
  if (headerBytes >= perChangeBudget) {
61796
62151
  return takeUtf8Prefix(header, perChangeBudget);
61797
62152
  }
61798
- return `${header}${compactDiff(change2.diff, perChangeBudget - headerBytes)}`;
62153
+ return `${header}${compactDiff(change.diff, perChangeBudget - headerBytes)}`;
61799
62154
  }).join("\n\n");
61800
62155
  }
61801
62156
  function buildInlineSelectedDiff(changes) {
61802
62157
  const blocks = [];
61803
62158
  let bytes = 0;
61804
- for (const { change: change2, location } of changes) {
61805
- const header = `[${location}] ${change2.path}
62159
+ for (const { change, location } of changes) {
62160
+ const header = `[${location}] ${change.path}
61806
62161
  `;
61807
62162
  const separatorBytes = blocks.length === 0 ? 0 : 2;
61808
- bytes += separatorBytes + Buffer$1.byteLength(header, "utf8") + Buffer$1.byteLength(change2.diff, "utf8");
62163
+ bytes += separatorBytes + Buffer$1.byteLength(header, "utf8") + Buffer$1.byteLength(change.diff, "utf8");
61809
62164
  if (bytes > MAX_INLINE_COMMIT_DIFF_BYTES) {
61810
62165
  return void 0;
61811
62166
  }
61812
- blocks.push(`${header}${change2.diff}`);
62167
+ blocks.push(`${header}${change.diff}`);
61813
62168
  }
61814
62169
  return blocks.join("\n\n");
61815
62170
  }
@@ -62436,15 +62791,15 @@ function assertValidProjectDefaults(models, settings) {
62436
62791
  );
62437
62792
  }
62438
62793
  }
62439
- function taskFromSnapshot(snapshot, overrides = {}) {
62794
+ function taskFromSnapshot(snapshot2, overrides = {}) {
62440
62795
  return {
62441
- id: snapshot.id,
62442
- pinned: snapshot.pinned,
62443
- projectId: snapshot.projectId,
62444
- ...snapshot.threadConfiguration === void 0 ? {} : { threadConfiguration: snapshot.threadConfiguration },
62445
- title: overrides.title ?? snapshot.title,
62446
- updatedAt: snapshot.updatedAt,
62447
- ...snapshot.workspacePath === void 0 ? {} : { workspacePath: snapshot.workspacePath }
62796
+ id: snapshot2.id,
62797
+ pinned: snapshot2.pinned,
62798
+ projectId: snapshot2.projectId,
62799
+ ...snapshot2.threadConfiguration === void 0 ? {} : { threadConfiguration: snapshot2.threadConfiguration },
62800
+ title: overrides.title ?? snapshot2.title,
62801
+ updatedAt: snapshot2.updatedAt,
62802
+ ...snapshot2.workspacePath === void 0 ? {} : { workspacePath: snapshot2.workspacePath }
62448
62803
  };
62449
62804
  }
62450
62805
  function createModelCatalogLoader(provider, repository) {
@@ -62571,7 +62926,7 @@ function assertCommitSelection(status2, request2) {
62571
62926
  409
62572
62927
  );
62573
62928
  }
62574
- const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change2) => change2.path));
62929
+ const changedPaths = new Set([...status2.staged, ...status2.unstaged].map((change) => change.path));
62575
62930
  if (request2.paths.some((path) => !changedPaths.has(path))) {
62576
62931
  throw new MutationHttpError(
62577
62932
  "GIT_PATH_UNAVAILABLE",
@@ -62627,7 +62982,7 @@ async function generateCommitMessageWithCodex(provider, prompt, settings) {
62627
62982
  let timeout;
62628
62983
  let unsubscribeEvents;
62629
62984
  try {
62630
- const completedTurn = new Promise((resolve10, reject) => {
62985
+ const completedTurn = new Promise((resolve11, reject) => {
62631
62986
  unsubscribeEvents = provider.subscribeEvents(
62632
62987
  (event) => {
62633
62988
  if (event.taskId !== task.id) {
@@ -62637,7 +62992,7 @@ async function generateCommitMessageWithCodex(provider, prompt, settings) {
62637
62992
  completedAssistantMessages.set(event.turnId, event.payload.item.text);
62638
62993
  } else if (event.type === "turn.completed") {
62639
62994
  turnFinished = true;
62640
- resolve10(event.payload.turn);
62995
+ resolve11(event.payload.turn);
62641
62996
  } else if (event.type === "provider.error" && !event.payload.willRetry) {
62642
62997
  reject(new Error(event.payload.message));
62643
62998
  }
@@ -63264,15 +63619,15 @@ function macAppCandidates(home, appName) {
63264
63619
  }
63265
63620
  async function resolveMacCommands(environment, pathExists2) {
63266
63621
  const commands = /* @__PURE__ */ new Map();
63267
- const open6 = await firstExisting(["/usr/bin/open"], pathExists2);
63268
- if (open6 === void 0) {
63622
+ const open7 = await firstExisting(["/usr/bin/open"], pathExists2);
63623
+ if (open7 === void 0) {
63269
63624
  return commands;
63270
63625
  }
63271
63626
  const home = readEnvironmentValue(environment, ["HOME"]);
63272
63627
  const resolveApp = (name) => firstExisting(macAppCandidates(home, name), pathExists2);
63273
63628
  const addMacApp = async (id, name, kind) => {
63274
63629
  const appPath = await resolveApp(name);
63275
- addCommand(commands, { id, kind, name }, appPath === void 0 ? void 0 : open6, (target) => [
63630
+ addCommand(commands, { id, kind, name }, appPath === void 0 ? void 0 : open7, (target) => [
63276
63631
  "-a",
63277
63632
  name,
63278
63633
  kind === "terminal" ? target.directoryPath : target.absolutePath
@@ -63284,14 +63639,14 @@ async function resolveMacCommands(environment, pathExists2) {
63284
63639
  addCommand(
63285
63640
  commands,
63286
63641
  { id: "system-default", kind: "system-default", name: "\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528" },
63287
- open6,
63642
+ open7,
63288
63643
  (target) => [target.absolutePath],
63289
63644
  { targetTypes: ["file"] }
63290
63645
  );
63291
63646
  addCommand(
63292
63647
  commands,
63293
63648
  { id: "finder", kind: "file-manager", name: "Finder" },
63294
- open6,
63649
+ open7,
63295
63650
  (target) => target.type === "file" ? ["-R", target.absolutePath] : [target.absolutePath]
63296
63651
  );
63297
63652
  const terminalPath = await firstExisting(
@@ -63301,7 +63656,7 @@ async function resolveMacCommands(environment, pathExists2) {
63301
63656
  addCommand(
63302
63657
  commands,
63303
63658
  { id: "terminal", kind: "terminal", name: "Terminal" },
63304
- terminalPath === void 0 ? void 0 : open6,
63659
+ terminalPath === void 0 ? void 0 : open7,
63305
63660
  (target) => ["-a", "Terminal", target.directoryPath]
63306
63661
  );
63307
63662
  await addMacApp("ghostty", "Ghostty", "terminal");
@@ -63581,7 +63936,7 @@ async function defaultPathExists(path) {
63581
63936
  }
63582
63937
  }
63583
63938
  function defaultSpawnDetached(file, args, options, launchConfirmationMs) {
63584
- return new Promise((resolve10, reject) => {
63939
+ return new Promise((resolve11, reject) => {
63585
63940
  const { observeEarlyExit, ...spawnOptions } = options;
63586
63941
  const child = spawn(file, [...args], {
63587
63942
  ...spawnOptions,
@@ -63609,20 +63964,20 @@ function defaultSpawnDetached(file, args, options, launchConfirmationMs) {
63609
63964
  if (!observeEarlyExit) {
63610
63965
  settle(() => {
63611
63966
  child.unref();
63612
- resolve10();
63967
+ resolve11();
63613
63968
  });
63614
63969
  return;
63615
63970
  }
63616
63971
  confirmationTimer = setTimeout(() => {
63617
63972
  settle(() => {
63618
63973
  child.unref();
63619
- resolve10();
63974
+ resolve11();
63620
63975
  });
63621
63976
  }, launchConfirmationMs);
63622
63977
  });
63623
63978
  child.once("exit", (exitCode, signal) => {
63624
63979
  if (exitCode === 0) {
63625
- settle(resolve10);
63980
+ settle(resolve11);
63626
63981
  return;
63627
63982
  }
63628
63983
  const reason = signal ? `signal ${signal}` : `code ${String(exitCode)}`;
@@ -64698,7 +65053,7 @@ function extractRelativePath(path, sourcePath) {
64698
65053
  return selected.length === 0 ? "" : selected.join("/");
64699
65054
  }
64700
65055
  function decompressArchive(bytes, sourcePath) {
64701
- return new Promise((resolve10, reject) => {
65056
+ return new Promise((resolve11, reject) => {
64702
65057
  let declaredBytes = 0;
64703
65058
  let fileCount = 0;
64704
65059
  let validationError;
@@ -64745,7 +65100,7 @@ function decompressArchive(bytes, sourcePath) {
64745
65100
  reject(invalidArchive("Skill archive is empty"));
64746
65101
  return;
64747
65102
  }
64748
- resolve10(files);
65103
+ resolve11(files);
64749
65104
  }
64750
65105
  );
64751
65106
  });
@@ -65020,6 +65375,7 @@ function createProjectRuntimeContext(options) {
65020
65375
  invalidateProjectGitBranchCache(event.payload.rootPath);
65021
65376
  }
65022
65377
  eventStream.publish(event);
65378
+ options.workbenchChanges?.publishAgentEvent(scope.id, event);
65023
65379
  })
65024
65380
  };
65025
65381
  }
@@ -65110,8 +65466,8 @@ var ProjectRuntimeLifecycleLock = class {
65110
65466
  async run(projectId, operation) {
65111
65467
  const predecessor = this.#tails.get(projectId) ?? Promise.resolve();
65112
65468
  let release;
65113
- const tail = new Promise((resolve10) => {
65114
- release = resolve10;
65469
+ const tail = new Promise((resolve11) => {
65470
+ release = resolve11;
65115
65471
  });
65116
65472
  this.#tails.set(projectId, tail);
65117
65473
  await predecessor.catch(() => void 0);
@@ -65315,8 +65671,8 @@ var PersistentTaskQueue = class {
65315
65671
  const key = `${runtime.projectId}\0${runtime.taskId}`;
65316
65672
  const previous = this.#locks.get(key) ?? Promise.resolve();
65317
65673
  let release;
65318
- const current = new Promise((resolve10) => {
65319
- release = resolve10;
65674
+ const current = new Promise((resolve11) => {
65675
+ release = resolve11;
65320
65676
  });
65321
65677
  const tail = previous.then(() => current);
65322
65678
  this.#locks.set(key, tail);
@@ -65491,226 +65847,6 @@ async function readProjectDirectory(requestedPath, options = {}) {
65491
65847
  roots
65492
65848
  };
65493
65849
  }
65494
-
65495
- // packages/server/src/routes/access-routes.ts
65496
- var ACCESS_SESSION_COOKIE = "codexly_session";
65497
- function status(authenticated, mode) {
65498
- return { authenticated, mode, version: 1 };
65499
- }
65500
- var registerAccessRoutes = (app, options, done) => {
65501
- const { access: access3, service } = options;
65502
- const mode = access3 === void 0 ? "local" : "lan";
65503
- app.get(
65504
- "/v1/access",
65505
- { schema: { response: { 200: AccessStatusResponseSchema } } },
65506
- (request2) => status(
65507
- mode === "local" || service?.validate(request2.cookies[ACCESS_SESSION_COOKIE]) === true,
65508
- mode
65509
- )
65510
- );
65511
- app.post(
65512
- "/v1/access/pair",
65513
- {
65514
- schema: {
65515
- body: PairAccessRequestSchema,
65516
- response: { 200: AccessStatusResponseSchema }
65517
- }
65518
- },
65519
- (request2, reply) => {
65520
- if (access3 === void 0 || service === void 0) {
65521
- return status(true, "local");
65522
- }
65523
- const result = service.pair(request2.body.code, request2.ip);
65524
- if (result.status !== "paired") {
65525
- return reply.code(result.status === "rate_limited" ? 429 : 403).send({
65526
- code: result.status === "rate_limited" ? "PAIRING_RATE_LIMITED" : "PAIRING_FAILED",
65527
- message: "Pairing request failed",
65528
- retryable: result.status === "rate_limited"
65529
- });
65530
- }
65531
- reply.setCookie(ACCESS_SESSION_COOKIE, result.sessionId, {
65532
- ...result.expiresAt === null || access3.sessionTtlMs === void 0 ? {} : {
65533
- expires: new Date(result.expiresAt),
65534
- maxAge: Math.ceil(access3.sessionTtlMs / 1e3)
65535
- },
65536
- httpOnly: true,
65537
- path: "/",
65538
- sameSite: "strict",
65539
- secure: false
65540
- });
65541
- return status(true, "lan");
65542
- }
65543
- );
65544
- app.post(
65545
- "/v1/access/logout",
65546
- { schema: { response: { 200: AccessStatusResponseSchema } } },
65547
- (request2, reply) => {
65548
- service?.logout(request2.cookies[ACCESS_SESSION_COOKIE]);
65549
- reply.clearCookie(ACCESS_SESSION_COOKIE, { path: "/", sameSite: "strict" });
65550
- return status(mode === "local", mode);
65551
- }
65552
- );
65553
- done();
65554
- };
65555
-
65556
- // packages/server/src/routes/event-routes.ts
65557
- var MAX_TIMER_DELAY_MS = 2147483647;
65558
- function scheduleSessionExpiry(socket, expiresAt) {
65559
- let timer;
65560
- const expire = () => {
65561
- const remainingMs = expiresAt - Date.now();
65562
- if (remainingMs <= 0) {
65563
- socket.close(1008, "Access session expired");
65564
- return;
65565
- }
65566
- timer = setTimeout(expire, Math.min(remainingMs, MAX_TIMER_DELAY_MS));
65567
- timer.unref();
65568
- };
65569
- expire();
65570
- return () => {
65571
- if (timer !== void 0) {
65572
- clearTimeout(timer);
65573
- }
65574
- };
65575
- }
65576
- var registerEventRoutes = (app, context, done) => {
65577
- const { accessService, getProjectContext, projectContexts } = context;
65578
- app.get(
65579
- "/v1/projects/:projectId/events",
65580
- {
65581
- async preValidation(request2, reply) {
65582
- if (await getProjectContext(request2.params.projectId) === void 0) {
65583
- return await reply.code(404).send({ code: "PROJECT_NOT_FOUND", message: "Project not found" });
65584
- }
65585
- },
65586
- schema: { params: ProjectParamsSchema, querystring: EventQuerySchema },
65587
- websocket: true
65588
- },
65589
- (socket, request2) => {
65590
- const sessionExpiresAt = accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
65591
- if (accessService !== void 0 && sessionExpiresAt === void 0) {
65592
- socket.close(1008, "Access session expired");
65593
- return;
65594
- }
65595
- const context2 = projectContexts.get(request2.params.projectId);
65596
- if (context2 === void 0) {
65597
- socket.close(1008, "Project not found");
65598
- return;
65599
- }
65600
- const eventStream = context2.eventStream;
65601
- context2.transportMetrics.activeClients += 1;
65602
- let cleanedUp = false;
65603
- let liveFlushScheduled = false;
65604
- const liveEvents = [];
65605
- let unsubscribe = () => void 0;
65606
- let cancelInvalidation = () => void 0;
65607
- const cancelSessionExpiry = sessionExpiresAt === void 0 || sessionExpiresAt === null ? () => void 0 : scheduleSessionExpiry(socket, sessionExpiresAt);
65608
- const cleanup = () => {
65609
- if (cleanedUp) {
65610
- return;
65611
- }
65612
- cleanedUp = true;
65613
- liveEvents.length = 0;
65614
- cancelSessionExpiry();
65615
- cancelInvalidation();
65616
- unsubscribe();
65617
- context2.transportMetrics.activeClients -= 1;
65618
- };
65619
- socket.once("close", cleanup);
65620
- socket.once("error", cleanup);
65621
- cancelInvalidation = accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
65622
- cleanup();
65623
- socket.close(1008, "Access session expired");
65624
- }) ?? (() => void 0);
65625
- if (socket.readyState !== socket.OPEN) return;
65626
- const send = (message) => sendEventStreamMessage(
65627
- socket,
65628
- message,
65629
- () => {
65630
- eventStream.noteBackpressure();
65631
- },
65632
- () => {
65633
- context2.transportMetrics.slowClientDisconnects += 1;
65634
- }
65635
- );
65636
- const sendEvents = (events) => sendEventStreamEvents(
65637
- socket,
65638
- events,
65639
- () => {
65640
- eventStream.noteBackpressure();
65641
- },
65642
- () => {
65643
- context2.transportMetrics.slowClientDisconnects += 1;
65644
- }
65645
- );
65646
- const flushLiveEvents = () => {
65647
- liveFlushScheduled = false;
65648
- if (cleanedUp || liveEvents.length === 0) {
65649
- return;
65650
- }
65651
- const events = liveEvents.splice(0);
65652
- sendEvents(events);
65653
- };
65654
- const enqueueLiveEvent = (event) => {
65655
- liveEvents.push(event);
65656
- if (liveEvents.length >= MAX_EVENT_BATCH_SIZE) {
65657
- flushLiveEvents();
65658
- return;
65659
- }
65660
- if (liveFlushScheduled) {
65661
- return;
65662
- }
65663
- liveFlushScheduled = true;
65664
- queueMicrotask(() => {
65665
- if (liveFlushScheduled) {
65666
- flushLiveEvents();
65667
- }
65668
- });
65669
- };
65670
- const replay = eventStream.replayAfter(request2.query.afterSequence);
65671
- if (replay.type === "resync") {
65672
- const sent = send({
65673
- latestSequence: replay.latestSequence,
65674
- reason: replay.reason,
65675
- sessionId: eventStream.checkpoint.sessionId,
65676
- type: "resync.required",
65677
- version: 3
65678
- });
65679
- if (sent) {
65680
- socket.close(1e3, "Snapshot resync required");
65681
- }
65682
- return;
65683
- }
65684
- const checkpoint = eventStream.checkpoint;
65685
- const initializationEvents = [];
65686
- let isInitializing = true;
65687
- unsubscribe = eventStream.subscribe((event) => {
65688
- if (isInitializing) {
65689
- initializationEvents.push(event);
65690
- return;
65691
- }
65692
- enqueueLiveEvent(event);
65693
- });
65694
- const readySent = send({
65695
- latestSequence: checkpoint.sequence,
65696
- sessionId: checkpoint.sessionId,
65697
- type: "connection.ready",
65698
- version: 3
65699
- });
65700
- if (!readySent) {
65701
- return;
65702
- }
65703
- if (!sendEvents(replay.events)) {
65704
- return;
65705
- }
65706
- isInitializing = false;
65707
- if (!sendEvents(initializationEvents)) {
65708
- return;
65709
- }
65710
- }
65711
- );
65712
- done();
65713
- };
65714
65850
  var ProjectRootScopeError = class extends Error {
65715
65851
  constructor(code, message) {
65716
65852
  super(message);
@@ -65903,6 +66039,230 @@ async function filterProjectFileSearchMatches(projectRoot, page) {
65903
66039
  }
65904
66040
  return { data };
65905
66041
  }
66042
+ var TextFileError = class extends Error {
66043
+ constructor(code, message) {
66044
+ super(message);
66045
+ this.code = code;
66046
+ }
66047
+ code;
66048
+ };
66049
+ var unsupported = () => new TextFileError(
66050
+ "TEXT_FILE_UNSUPPORTED",
66051
+ "Only project UTF-8 text files up to 2 MiB with consistent line endings can be edited"
66052
+ );
66053
+ var conflict = () => new TextFileError("TEXT_FILE_CONFLICT", "File changed on disk; reload before saving");
66054
+ var blockedExtensions = /* @__PURE__ */ new Set([
66055
+ ".doc",
66056
+ ".docx",
66057
+ ".odt",
66058
+ ".rtf",
66059
+ ".xls",
66060
+ ".xlsx",
66061
+ ".ppt",
66062
+ ".pptx",
66063
+ ".pdf",
66064
+ ".zip",
66065
+ ".png",
66066
+ ".jpg",
66067
+ ".jpeg",
66068
+ ".gif",
66069
+ ".webp",
66070
+ ".woff",
66071
+ ".woff2"
66072
+ ]);
66073
+ var saves = /* @__PURE__ */ new Map();
66074
+ var versionOf = (bytes) => createHash("sha256").update(bytes).digest("hex");
66075
+ var revisionOf = (stat7) => createHash("sha256").update([stat7.dev, stat7.ino, stat7.size, stat7.mtimeNs, stat7.ctimeNs, stat7.birthtimeNs].join(":")).digest("hex");
66076
+ async function readProjectTextFileRevision(root, path) {
66077
+ const { target } = await resolveTarget(root, path);
66078
+ const stat7 = await lstat(target, { bigint: true });
66079
+ if (!stat7.isFile() || stat7.size > BigInt(MAX_TEXT_FILE_BYTES)) throw unsupported();
66080
+ return { revision: revisionOf(stat7) };
66081
+ }
66082
+ async function resolveTarget(root, requestedPath) {
66083
+ const canonicalRoot = await realpath(root);
66084
+ const path = isAbsolute(requestedPath) ? relative(
66085
+ requestedPath.startsWith(`${resolve(root)}${sep}`) ? resolve(root) : canonicalRoot,
66086
+ requestedPath
66087
+ ) : requestedPath;
66088
+ const segments = path.split(/[\\/]/u);
66089
+ if (!path || isAbsolute(path) || segments.some(
66090
+ (s) => !s || s === "." || s === ".." || s.toLowerCase() === ".git" || s.includes(":")
66091
+ ))
66092
+ throw unsupported();
66093
+ let target = canonicalRoot;
66094
+ for (const segment of segments) {
66095
+ target = resolve(target, segment);
66096
+ if ((await lstat(target)).isSymbolicLink()) throw unsupported();
66097
+ }
66098
+ if (blockedExtensions.has(extname(target).toLowerCase())) throw unsupported();
66099
+ return { target, path: relative(canonicalRoot, target).split(sep).join("/") };
66100
+ }
66101
+ function decodeText(bytes) {
66102
+ if (bytes.length > MAX_TEXT_FILE_BYTES) throw unsupported();
66103
+ let content;
66104
+ try {
66105
+ content = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes);
66106
+ } catch {
66107
+ throw unsupported();
66108
+ }
66109
+ if (bytes.some((byte) => byte <= 8 || byte === 11 || byte === 12 || byte >= 14 && byte <= 31) || /\r(?!\n)/u.test(content) || content.includes("\r\n") && /(?<!\r)\n/u.test(content))
66110
+ throw unsupported();
66111
+ return content;
66112
+ }
66113
+ async function snapshot(target) {
66114
+ const handle = await open(target, "r");
66115
+ try {
66116
+ const before = await handle.stat({ bigint: true });
66117
+ if (!before.isFile() || before.size > BigInt(MAX_TEXT_FILE_BYTES)) throw unsupported();
66118
+ const buffer = Buffer.alloc(Number(before.size) + 1);
66119
+ let length = 0;
66120
+ while (length < buffer.length) {
66121
+ const { bytesRead } = await handle.read(buffer, length, buffer.length - length, length);
66122
+ if (!bytesRead) break;
66123
+ length += bytesRead;
66124
+ }
66125
+ const after = await handle.stat({ bigint: true });
66126
+ if (BigInt(length) !== before.size || revisionOf(after) !== revisionOf(before) || revisionOf(await lstat(target, { bigint: true })) !== revisionOf(before))
66127
+ throw conflict();
66128
+ const bytes = buffer.subarray(0, length);
66129
+ return {
66130
+ content: decodeText(bytes),
66131
+ version: versionOf(bytes),
66132
+ revision: revisionOf(before),
66133
+ mode: Number(before.mode),
66134
+ ino: before.ino,
66135
+ dev: before.dev
66136
+ };
66137
+ } finally {
66138
+ await handle.close();
66139
+ }
66140
+ }
66141
+ async function readProjectTextFile(root, path) {
66142
+ const resolved = await resolveTarget(root, path);
66143
+ const data = await snapshot(resolved.target);
66144
+ return {
66145
+ path: resolved.path,
66146
+ content: data.content,
66147
+ version: data.version,
66148
+ revision: data.revision
66149
+ };
66150
+ }
66151
+ async function saveProjectTextFile(root, input) {
66152
+ const { target } = await resolveTarget(root, input.path);
66153
+ const bytes = Buffer.from(input.content, "utf8");
66154
+ if (decodeText(bytes) !== input.content) throw unsupported();
66155
+ const previous = saves.get(target) ?? Promise.resolve();
66156
+ const operation = previous.catch(() => void 0).then(async () => {
66157
+ const original = await snapshot(target);
66158
+ if (original.version !== input.expectedVersion) throw conflict();
66159
+ const temporary = join(dirname(target), `.codexly-edit-${randomUUID()}.tmp`);
66160
+ const handle = await open(temporary, "wx", 384);
66161
+ try {
66162
+ await handle.writeFile(bytes);
66163
+ await handle.chmod(original.mode & 511);
66164
+ await handle.sync();
66165
+ const submitted = await handle.stat({ bigint: true });
66166
+ await resolveTarget(root, input.path);
66167
+ const latest = await snapshot(target);
66168
+ if (latest.version !== original.version || latest.ino !== original.ino || latest.dev !== original.dev)
66169
+ throw conflict();
66170
+ await rename(temporary, target);
66171
+ const written = await handle.stat({ bigint: true }).catch(() => null);
66172
+ const current = await lstat(target, { bigint: true }).catch(() => null);
66173
+ return {
66174
+ version: versionOf(bytes),
66175
+ ...written !== null && current !== null && written.size === submitted.size && written.mtimeNs === submitted.mtimeNs && revisionOf(written) === revisionOf(current) ? { revision: revisionOf(written) } : {}
66176
+ };
66177
+ } finally {
66178
+ await handle.close();
66179
+ await unlink(temporary).catch((error) => {
66180
+ if (error.code !== "ENOENT") throw error;
66181
+ });
66182
+ }
66183
+ });
66184
+ saves.set(target, operation);
66185
+ try {
66186
+ return await operation;
66187
+ } finally {
66188
+ if (saves.get(target) === operation) saves.delete(target);
66189
+ }
66190
+ }
66191
+
66192
+ // packages/server/src/routes/project-text-file-routes.ts
66193
+ function sendError(reply, error) {
66194
+ if (error instanceof TextFileError)
66195
+ return reply.code(error.code === "TEXT_FILE_CONFLICT" ? 409 : 400).send({ code: error.code, message: error.message, retryable: false });
66196
+ if (error instanceof ProjectRootScopeError)
66197
+ return reply.code(error.code === "PROJECT_NOT_FOUND" ? 404 : 400).send({ code: error.code, message: error.message, retryable: false });
66198
+ return reply.code(404).send({ code: "TEXT_FILE_UNAVAILABLE", message: "Text file is unavailable", retryable: false });
66199
+ }
66200
+ function registerProjectTextFileRoutes(app, resolveRoot) {
66201
+ const errors3 = {
66202
+ 400: AgentMutationErrorSchema,
66203
+ 404: AgentMutationErrorSchema,
66204
+ 409: AgentMutationErrorSchema
66205
+ };
66206
+ app.get(
66207
+ "/v1/projects/:projectId/files/text/revision",
66208
+ {
66209
+ schema: {
66210
+ params: ProjectParamsSchema,
66211
+ querystring: ProjectSourceFileQuerySchema,
66212
+ response: { 200: ProjectTextFileRevisionSchema, ...errors3 }
66213
+ }
66214
+ },
66215
+ async (request2, reply) => {
66216
+ try {
66217
+ const root = await resolveRoot(request2.params.projectId, request2.query.rootPath);
66218
+ reply.header("cache-control", "no-store");
66219
+ return await readProjectTextFileRevision(root.path, request2.query.path);
66220
+ } catch (error) {
66221
+ return sendError(reply, error);
66222
+ }
66223
+ }
66224
+ );
66225
+ app.get(
66226
+ "/v1/projects/:projectId/files/text",
66227
+ {
66228
+ schema: {
66229
+ params: ProjectParamsSchema,
66230
+ querystring: ProjectSourceFileQuerySchema,
66231
+ response: { 200: ProjectTextFileSchema, ...errors3 }
66232
+ }
66233
+ },
66234
+ async (request2, reply) => {
66235
+ try {
66236
+ const root = await resolveRoot(request2.params.projectId, request2.query.rootPath);
66237
+ reply.header("cache-control", "no-store");
66238
+ return await readProjectTextFile(root.path, request2.query.path);
66239
+ } catch (error) {
66240
+ return sendError(reply, error);
66241
+ }
66242
+ }
66243
+ );
66244
+ app.post(
66245
+ "/v1/projects/:projectId/files/text",
66246
+ {
66247
+ // JSON 控制字符转义可膨胀到六倍;解码后仍严格检查 UTF-8 字节上限。
66248
+ bodyLimit: MAX_TEXT_FILE_BYTES * 6 + 8192,
66249
+ schema: {
66250
+ params: ProjectParamsSchema,
66251
+ querystring: ProjectRootQuerySchema,
66252
+ body: SaveProjectTextFileRequestSchema,
66253
+ response: { 200: SaveProjectTextFileResponseSchema, ...errors3 }
66254
+ }
66255
+ },
66256
+ async (request2, reply) => {
66257
+ try {
66258
+ const root = await resolveRoot(request2.params.projectId, request2.query.rootPath);
66259
+ return await saveProjectTextFile(root.path, request2.body);
66260
+ } catch (error) {
66261
+ return sendError(reply, error);
66262
+ }
66263
+ }
66264
+ );
66265
+ }
65906
66266
  function mapProjectFileMutationError(error) {
65907
66267
  if (error instanceof ProjectRootScopeError) {
65908
66268
  throw new MutationHttpError(
@@ -65916,11 +66276,11 @@ function mapProjectFileMutationError(error) {
65916
66276
  throw new MutationHttpError("PROJECT_FILE_NOT_FOUND", "Project file was not found", 404);
65917
66277
  }
65918
66278
  if (error instanceof TypeError) {
65919
- const conflict = error.message.includes("already exists");
66279
+ const conflict2 = error.message.includes("already exists");
65920
66280
  throw new MutationHttpError(
65921
- conflict ? "PROJECT_FILE_CONFLICT" : "INVALID_REQUEST",
65922
- conflict ? "A file or directory with that name already exists" : "Project file request is invalid",
65923
- conflict ? 409 : 400
66281
+ conflict2 ? "PROJECT_FILE_CONFLICT" : "INVALID_REQUEST",
66282
+ conflict2 ? "A file or directory with that name already exists" : "Project file request is invalid",
66283
+ conflict2 ? 409 : 400
65924
66284
  );
65925
66285
  }
65926
66286
  throw new MutationHttpError("PROJECT_FILE_MUTATION_FAILED", "Project file mutation failed", 500);
@@ -65938,6 +66298,7 @@ function getParentDirectory(path) {
65938
66298
  }
65939
66299
  function registerProjectFileMutationRoutes(app, context, resolveProjectFileRoot2) {
65940
66300
  const { deleteProjectFile: deleteProjectFile2, readFileTree, renameProjectFile: renameProjectFile2, runIdempotent } = context;
66301
+ registerProjectTextFileRoutes(app, resolveProjectFileRoot2);
65941
66302
  app.post(
65942
66303
  "/v1/projects/:projectId/files/rename",
65943
66304
  {
@@ -68150,11 +68511,11 @@ var registerRuntimeRoutes = (app, context, done) => {
68150
68511
  };
68151
68512
 
68152
68513
  // packages/server/src/async-question-snapshot.ts
68153
- async function restorePersistedAsyncQuestionAnswers(context, projectId, taskId, snapshot) {
68514
+ async function restorePersistedAsyncQuestionAnswers(context, projectId, taskId, snapshot2) {
68154
68515
  const repository = context.asyncQuestionRepository;
68155
- if (repository === void 0) return snapshot;
68516
+ if (repository === void 0) return snapshot2;
68156
68517
  const records = await repository.listAsyncQuestions(projectId, taskId);
68157
- return restoreAsyncQuestionAnswers(snapshot, records);
68518
+ return restoreAsyncQuestionAnswers(snapshot2, records);
68158
68519
  }
68159
68520
 
68160
68521
  // packages/server/src/routes/task-action-routes.ts
@@ -69252,7 +69613,7 @@ var registerSearchRoutes = (app, context, done) => {
69252
69613
  { id: TEMPORARY_TASK_SCOPE_ID, kind: "temporary" },
69253
69614
  ...projects.map((project) => ({ id: project.id, kind: "project" }))
69254
69615
  ];
69255
- return provider.search.searchTasks(request2.query, scopes);
69616
+ return provider.search.searchTasks(request2.query, scopes, request2.signal);
69256
69617
  }
69257
69618
  );
69258
69619
  app.get(
@@ -69282,7 +69643,8 @@ var registerSearchRoutes = (app, context, done) => {
69282
69643
  return provider.search.searchTaskOccurrences(
69283
69644
  request2.params.taskId,
69284
69645
  request2.query,
69285
- project.scope
69646
+ project.scope,
69647
+ request2.signal
69286
69648
  );
69287
69649
  }
69288
69650
  );
@@ -69861,6 +70223,7 @@ var AsyncQuestionService = class {
69861
70223
  async dismiss(projectId, taskId, ids) {
69862
70224
  const { task } = await this.task(projectId, taskId);
69863
70225
  await this.repository().dismissAsyncQuestions(projectId, taskId, ids);
70226
+ this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
69864
70227
  return this.pending(projectId, taskId, new Set(collectRunningTurnIds(task)));
69865
70228
  }
69866
70229
  async answer(projectId, taskId, id, answers) {
@@ -69905,6 +70268,7 @@ var AsyncQuestionService = class {
69905
70268
  409
69906
70269
  );
69907
70270
  const checkpoint = runtime.eventStream.checkpoint;
70271
+ this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
69908
70272
  const providerInput = { text, skills: [], files: [], images: [], textAttachments: [] };
69909
70273
  try {
69910
70274
  const turn = running === void 0 ? await runtime.provider.startTurn(taskId, providerInput, settings) : null;
@@ -69921,6 +70285,7 @@ var AsyncQuestionService = class {
69921
70285
  "answering"
69922
70286
  ))
69923
70287
  throw new Error("Answer state changed unexpectedly");
70288
+ this.context.workbenchChanges.publish({ type: "async-questions.changed", projectId, taskId });
69924
70289
  return result;
69925
70290
  } catch {
69926
70291
  throw this.unknownOutcome();
@@ -70094,7 +70459,9 @@ var registerProjectTodoRoutes = (app, context, done) => {
70094
70459
  await assertProject(projectId);
70095
70460
  return context.runIdempotent(scope, key, payload, async () => {
70096
70461
  try {
70097
- return await action();
70462
+ const result = await action();
70463
+ context.workbenchChanges.publish({ type: "project-todos.changed", projectId });
70464
+ return result;
70098
70465
  } catch (error) {
70099
70466
  return toProjectTodoHttpError(error);
70100
70467
  }
@@ -70746,13 +71113,13 @@ async function previewScheduledTask(schedule, afterUnixMs, limit = 5) {
70746
71113
  resourceLimits: { maxOldGenerationSizeMb: 32 }
70747
71114
  });
70748
71115
  const runningWorker = worker;
70749
- return await new Promise((resolve10, reject) => {
71116
+ return await new Promise((resolve11, reject) => {
70750
71117
  timer = setTimeout(() => {
70751
71118
  reject(new Error("Scheduled task RRULE computation timed out"));
70752
71119
  }, COMPUTATION_TIMEOUT_MS);
70753
71120
  runningWorker.once("message", (message) => {
70754
71121
  if (message.error !== void 0) reject(new Error(message.error));
70755
- else resolve10(message.dates);
71122
+ else resolve11(message.dates);
70756
71123
  });
70757
71124
  runningWorker.once("error", reject);
70758
71125
  runningWorker.once("exit", () => {
@@ -71156,66 +71523,16 @@ var ScheduledTaskService = class {
71156
71523
  };
71157
71524
 
71158
71525
  // packages/server/src/routes/scheduled-task-events.ts
71159
- var change = { type: "scheduled-tasks.changed" };
71160
- var frame = JSON.stringify(change);
71161
71526
  function registerScheduledTaskEvents(app, context) {
71162
- app.get("/v1/scheduled-tasks/events", { websocket: true }, (socket, request2) => {
71163
- const expiresAt = context.accessService?.expiresAt(request2.cookies[ACCESS_SESSION_COOKIE]);
71164
- if (context.accessService !== void 0 && expiresAt === void 0) {
71165
- socket.close(1008, "Access session expired");
71166
- return;
71167
- }
71168
- const cancelExpiry = expiresAt == null ? () => void 0 : scheduleSessionExpiry(socket, expiresAt);
71169
- let queued = false;
71170
- let closed = false;
71171
- const send = () => {
71172
- if (closed || socket.readyState !== 1) return;
71173
- if (socket.bufferedAmount > 65536) {
71174
- socket.close(1013, "Slow client");
71175
- return;
71176
- }
71177
- socket.send(frame, (error) => {
71178
- if (error) socket.terminate();
71179
- });
71180
- };
71181
- const unsubscribe = context.scheduledTaskService.subscribe(() => {
71182
- if (queued || closed) return;
71183
- queued = true;
71184
- queueMicrotask(() => {
71185
- queued = false;
71186
- send();
71187
- });
71188
- });
71189
- let alive = true;
71190
- socket.on("pong", () => {
71191
- alive = true;
71192
- });
71193
- const heartbeat = setInterval(() => {
71194
- if (!alive) {
71195
- socket.terminate();
71196
- return;
71197
- }
71198
- alive = false;
71199
- socket.ping();
71200
- }, 3e4);
71201
- heartbeat.unref();
71202
- let cancelInvalidation = () => void 0;
71203
- const cleanup = () => {
71204
- if (closed) return;
71205
- closed = true;
71206
- unsubscribe();
71207
- cancelExpiry();
71208
- cancelInvalidation();
71209
- clearInterval(heartbeat);
71210
- };
71211
- socket.once("close", cleanup);
71212
- socket.once("error", cleanup);
71213
- cancelInvalidation = context.accessService?.onInvalidated(request2.cookies[ACCESS_SESSION_COOKIE], () => {
71214
- cleanup();
71215
- socket.close(1008, "Access session expired");
71216
- }) ?? (() => void 0);
71217
- send();
71218
- });
71527
+ registerResourceChangeEvents(
71528
+ app,
71529
+ context,
71530
+ "/v1/scheduled-tasks/events",
71531
+ { type: "scheduled-tasks.changed" },
71532
+ (listener) => context.scheduledTaskService.subscribe(() => {
71533
+ listener({ type: "scheduled-tasks.changed" });
71534
+ })
71535
+ );
71219
71536
  }
71220
71537
 
71221
71538
  // packages/server/src/routes/scheduled-task-routes.ts
@@ -72139,6 +72456,7 @@ async function createCodexlyServer(options) {
72139
72456
  provider: options.provider
72140
72457
  });
72141
72458
  const attachmentStore = new AttachmentStore();
72459
+ const workbenchChanges = new WorkbenchChanges();
72142
72460
  const resolveProviderTurnInput = createProviderTurnInputResolver(
72143
72461
  attachmentStore,
72144
72462
  (projectId, id) => options.projectTodoRepository?.readProjectTodoAttachment(projectId, id) ?? Promise.resolve(void 0)
@@ -72196,6 +72514,7 @@ async function createCodexlyServer(options) {
72196
72514
  );
72197
72515
  },
72198
72516
  onTurnCompleted: (runtime) => taskQueue.startNext(runtime),
72517
+ workbenchChanges,
72199
72518
  provider: resolved.provider,
72200
72519
  scope: resolved.scope
72201
72520
  });
@@ -72338,6 +72657,7 @@ async function createCodexlyServer(options) {
72338
72657
  ...options.staticRoot === void 0 ? {} : { staticRoot: options.staticRoot }
72339
72658
  });
72340
72659
  const routeContext = {
72660
+ workbenchChanges,
72341
72661
  ...options.asyncQuestionRepository === void 0 ? {} : { asyncQuestionRepository: options.asyncQuestionRepository },
72342
72662
  ...options.projectTodoRepository === void 0 ? {} : { projectTodoRepository: options.projectTodoRepository },
72343
72663
  submissionRepository: options.submissionRepository ?? createMemorySubmissionRepository(idempotencyCacheSize),
@@ -72422,6 +72742,7 @@ async function createCodexlyServer(options) {
72422
72742
  await app.register(registerSubmissionRoutes, routeContext);
72423
72743
  await app.register(registerAsyncQuestionRoutes, routeContext);
72424
72744
  await app.register(registerProjectTodoRoutes, routeContext);
72745
+ registerWorkbenchEvents(app, routeContext);
72425
72746
  await app.register(registerQueueRoutes, routeContext);
72426
72747
  await app.register(registerEventRoutes, routeContext);
72427
72748
  await app.ready();