ryco-cli 0.1.22 → 0.1.24

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 (541) hide show
  1. package/dist/{ClaudeDriver-D7NatUx6.cjs → ClaudeDriver-B7mbf51W.cjs} +1 -1
  2. package/dist/{ClaudeDriver-D65SPdHR.mjs → ClaudeDriver-C4yu7Jit.mjs} +1 -1
  3. package/dist/{CodexDriver-DWGtHt9r.cjs → CodexDriver-CR0S17Lb.cjs} +2 -2
  4. package/dist/{CodexDriver-D4z5-wUD.mjs → CodexDriver-DnnqkGoY.mjs} +2 -2
  5. package/dist/{CodexTextGeneration-BikHow8k.mjs → CodexTextGeneration-Cw-FZbSS.mjs} +1 -1
  6. package/dist/{CodexTextGeneration-B4tJTUDo.cjs → CodexTextGeneration-tlfe1S5W.cjs} +1 -1
  7. package/dist/{CopilotDriver-ZvvsAIkd.mjs → CopilotDriver-GxKLX5pL.mjs} +2 -2
  8. package/dist/{CopilotDriver-DJvYncGI.cjs → CopilotDriver-IBd27Ji2.cjs} +2 -2
  9. package/dist/{CursorDriver-D3I4KULs.cjs → CursorDriver-C4Enoe9N.cjs} +1 -1
  10. package/dist/{CursorDriver-B1QSBzuH.mjs → CursorDriver-CNo9Uzo8.mjs} +1 -1
  11. package/dist/{GrokDriver-DgQe3pKz.mjs → GrokDriver-DSPEmiwq.mjs} +1 -1
  12. package/dist/{GrokDriver-_puXDTU3.cjs → GrokDriver-RyyFeh_q.cjs} +1 -1
  13. package/dist/{Metrics-DIjMQ5pa.cjs → Metrics-Bcb9vCAe.cjs} +21 -15
  14. package/dist/{Metrics-BP9YjxZB.mjs → Metrics-a1h4iBQi.mjs} +21 -15
  15. package/dist/{OpenCodeDriver-DNUlF8M-.mjs → OpenCodeDriver-0q44rSQX.mjs} +1 -1
  16. package/dist/{OpenCodeDriver-401RexI0.cjs → OpenCodeDriver-CDcvPT9v.cjs} +1 -1
  17. package/dist/bin.cjs +337 -123
  18. package/dist/bin.mjs +339 -125
  19. package/dist/client/assets/AccountSettings-ApnDA1f-.js +1 -0
  20. package/dist/client/assets/AiFocusSettings-CNmGHEcA.js +1 -0
  21. package/dist/client/assets/{AnimatedHeight-DKCe4x_Q.js → AnimatedHeight-i0YhvlGD.js} +1 -1
  22. package/dist/client/assets/AppearanceSettings-BG8W4DP0.js +1 -0
  23. package/dist/client/assets/BranchToolbar.logic-AgPy06Mx.js +1 -0
  24. package/dist/client/assets/BrowserPanel-BWztlNuL.js +1 -0
  25. package/dist/client/assets/ChatRightPanel-a6UOHNMm.js +194 -0
  26. package/dist/client/assets/ChatThreadRouteView-CWoBLzR_.js +1 -0
  27. package/dist/client/assets/CommandPaletteDialog-B2iKWCUi.js +1 -0
  28. package/dist/client/assets/CompositeRoot-C1G-Ejus.js +1 -0
  29. package/dist/client/assets/ComputerUseSettings-CPwWoHWj.js +1 -0
  30. package/dist/client/assets/ConnectionsSettings-CPMkuxza.js +7 -0
  31. package/dist/client/assets/ContextHandoffEndpointLabel-BildLLDY.js +4 -0
  32. package/dist/client/assets/DiagnosticsSettings-DvnNz2AZ.js +2 -0
  33. package/dist/client/assets/DialogHandle-8o3kfoiI.js +1 -0
  34. package/dist/client/assets/DialogPopup-CLw6NCkW.js +1 -0
  35. package/dist/client/assets/DialogRoot-SKkIuQHA.js +1 -0
  36. package/dist/client/assets/DialogTitle-DCHX74Tz.js +1 -0
  37. package/dist/client/assets/DialogTrigger-Bl_fcIV2.js +1 -0
  38. package/dist/client/assets/DialogViewport-DVDl03yd.js +1 -0
  39. package/dist/client/assets/DraftChatThreadRouteView-CEDYjbKq.js +1 -0
  40. package/dist/client/assets/{ExternalIdentityWeb.logic-CGJKCFPo.js → ExternalIdentityWeb.logic-arHvT6AX.js} +1 -1
  41. package/dist/client/assets/GlassSurface-GY6owikG.js +1 -0
  42. package/dist/client/assets/HostedConnectionControls-COUhSe9x.js +1 -0
  43. package/dist/client/assets/HostedHubRoot-BTWc0XoQ.js +2 -0
  44. package/dist/client/assets/HostedNativeAuthorizationRoute-DZhYxv--.js +2 -0
  45. package/dist/client/assets/HostedRelayTrustNotice-Bl6On0Yi.js +1 -0
  46. package/dist/client/assets/IntegrationsSettingsPanel-n9owMZf-.js +2 -0
  47. package/dist/client/assets/KeybindingsSettings-CPtXx-W2.js +7 -0
  48. package/dist/client/assets/LazyBrowserPanel-SUIBB7B4.js +2 -0
  49. package/dist/client/assets/McpServersSettings-BWIUud0Z.js +6 -0
  50. package/dist/client/assets/MobileSheet-NTayGHF6.js +1 -0
  51. package/dist/client/assets/NodeSecuritySettings-BFifrshE.js +1 -0
  52. package/dist/client/assets/OpinionatedPluginsSettings-D7WuuNWZ.js +1 -0
  53. package/dist/client/assets/PhoneGetAppInterstitial-R0cqI17q.js +1 -0
  54. package/dist/client/assets/PhoneHome-FqWvnJP_.js +1 -0
  55. package/dist/client/assets/PhoneSettingsSurface-w5PJnoBc.js +2 -0
  56. package/dist/client/assets/ProviderModelPicker-dwWhl7Uf.js +1 -0
  57. package/dist/client/assets/ProvidersSettingsPanel-Ww1ch3xA.js +1 -0
  58. package/dist/client/assets/QuitShortcutFeedback-CklL3jMd.js +1 -0
  59. package/dist/client/assets/RedactedSensitiveText-CLPBtvH1.js +1 -0
  60. package/dist/client/assets/RootAppShell-BdQCs2XJ.js +7 -0
  61. package/dist/client/assets/Separator-CpYBhf-I.js +1 -0
  62. package/dist/client/assets/SettingsDialog-DeMzEeCP.js +2 -0
  63. package/dist/client/assets/SettingsPanels-ZxNz9ZfL.js +3 -0
  64. package/dist/client/assets/SettingsPanels.editor-9pSZP875.js +1 -0
  65. package/dist/client/assets/SourceControlSettings-C1F3Brcn.js +1 -0
  66. package/dist/client/assets/StatisticsPage-C7v-6CTr.js +1 -0
  67. package/dist/client/assets/StatisticsPanel-CeIjiBm8.js +1 -0
  68. package/dist/client/assets/StatisticsSettingsLink-5s_violW.js +1 -0
  69. package/dist/client/assets/ThreadTerminalDrawer-CHZ60lPI.js +18 -0
  70. package/dist/client/assets/ThreadWorkspacePanel-Ct5kMcuY.js +2073 -0
  71. package/dist/client/assets/actionscript-3-Cs6JJXT5.js +1 -0
  72. package/dist/client/assets/activity-BMBx2Fu0.js +1 -0
  73. package/dist/client/assets/ahk-CA9gdOdF.js +1 -0
  74. package/dist/client/assets/ahk2-_6rzW9BS.js +1 -0
  75. package/dist/client/assets/alert-CXnC_RJc.js +1 -0
  76. package/dist/client/assets/apex-KFGFyKwG.js +1 -0
  77. package/dist/client/assets/{appChrome-CJauXpqv.js → appChrome-BzM66lXM.js} +1 -1
  78. package/dist/client/assets/appearancePreferences-nFx4MHoI.js +1 -0
  79. package/dist/client/assets/arrow-left-CymyVbCi.js +1 -0
  80. package/dist/client/assets/arrow-right-9wyq4YVq.js +1 -0
  81. package/dist/client/assets/arrow-up-right-mfU38K6p.js +1 -0
  82. package/dist/client/assets/asciidoc-SCjQUq34.js +1 -0
  83. package/dist/client/assets/authorization-CjOFkg7b.js +1 -0
  84. package/dist/client/assets/badge-Dg7mXiOh.js +1 -0
  85. package/dist/client/assets/{bat-Bo4NYOV-.js → bat-qdxAdBWQ.js} +1 -1
  86. package/dist/client/assets/bird2-CYIUgYqB.js +1 -0
  87. package/dist/client/assets/bot-BR3RyOWP.js +1 -0
  88. package/dist/client/assets/bsl-_VjlB9mv.js +1 -0
  89. package/dist/client/assets/c3-D0apG41V.js +1 -0
  90. package/dist/client/assets/{capabilities-D6bsjqkj.js → capabilities-C8sxDbKT.js} +1 -1
  91. package/dist/client/assets/chapel-B4wvmE90.js +1 -0
  92. package/dist/client/assets/chart-column-CcRi3pAd.js +1 -0
  93. package/dist/client/assets/chevron-right-CuUjBsQV.js +1 -0
  94. package/dist/client/assets/clarity-CtfBBspg.js +1 -0
  95. package/dist/client/assets/clipboard-copy-ezz8rnaT.js +1 -0
  96. package/dist/client/assets/coq-DuBRPxYg.js +1 -0
  97. package/dist/client/assets/cpp-C3nXdf7H.js +1 -0
  98. package/dist/client/assets/data-list-ZLhzdlED.js +1 -0
  99. package/dist/client/assets/{desktopWorkspace-8s8rm3zL.js → desktopWorkspace-P28r2lN2.js} +1 -1
  100. package/dist/client/assets/download-BA9L9tK9.js +1 -0
  101. package/dist/client/assets/editorPreferences-DeKdSV3s.js +1 -0
  102. package/dist/client/assets/emacs-lisp-c_oH4hRZ.js +1 -0
  103. package/dist/client/assets/empty-3NpXLnAM.js +1 -0
  104. package/dist/client/assets/{erb-UQla4w8B.js → erb-CXyXxaAM.js} +1 -1
  105. package/dist/client/assets/{gdresource-C0sCabJj.js → gdresource-xMC7jr7x.js} +1 -1
  106. package/dist/client/assets/gdscript-DYvRD3hg.js +1 -0
  107. package/dist/client/assets/group-D5qBdsaB.js +1 -0
  108. package/dist/client/assets/hack-Bw3mo9za.js +1 -0
  109. package/dist/client/assets/haxe-C8oCnwJJ.js +1 -0
  110. package/dist/client/assets/hostedConnectionCoordinator-CLV-JD1S.js +1 -0
  111. package/dist/client/assets/{hostedPairing-PogXRAb7.js → hostedPairing-B_ylEEDa.js} +1 -1
  112. package/dist/client/assets/hubRoutes-EWJ3Gdod.js +1 -0
  113. package/dist/client/assets/hxml-Dcm88srW.js +1 -0
  114. package/dist/client/assets/{index-DRY8Hgrj.js → index-DxCd1PgA.js} +2 -2
  115. package/dist/client/assets/input-DrOL1KPS.js +1 -0
  116. package/dist/client/assets/{julia-DTmLe4fA.js → julia-C-lBeOK5.js} +1 -1
  117. package/dist/client/assets/{just-CPUGe9J1.js → just-DfEtguTY.js} +1 -1
  118. package/dist/client/assets/kbd-rWDjJnWX.js +1 -0
  119. package/dist/client/assets/key-round-D2DtQ7aS.js +1 -0
  120. package/dist/client/assets/latex-6oxeCMbP.js +1 -0
  121. package/dist/client/assets/layers-DtSJWmwy.js +1 -0
  122. package/dist/client/assets/{liquidGlass-yFkZrRk5.js → liquidGlass-Dbl4k51l.js} +1 -1
  123. package/dist/client/assets/{llvm-Cm23YOpf.js → llvm-DqHOMS-s.js} +1 -1
  124. package/dist/client/assets/log-out-YAp9fsOg.js +1 -0
  125. package/dist/client/assets/{logging-Y73f240E.js → logging-BuUPX1SP.js} +1 -1
  126. package/dist/client/assets/luau-C2pBCSgt.js +1 -0
  127. package/dist/client/assets/main-BbtLAX7M.js +9 -0
  128. package/dist/client/assets/main-D4CtFNPY.css +2 -0
  129. package/dist/client/assets/mdc-uTSeACfH.js +1 -0
  130. package/dist/client/assets/mermaid-BxpfTIzt.js +1 -0
  131. package/dist/client/assets/mojo-fg40_ntQ.js +1 -0
  132. package/dist/client/assets/monitor-OyD484tI.js +1 -0
  133. package/dist/client/assets/moonbit-DgjMoLWr.js +1 -0
  134. package/dist/client/assets/move-BYnGhZoM.js +1 -0
  135. package/dist/client/assets/nsis-CjNLYCLg.js +1 -0
  136. package/dist/client/assets/nushell-DHYfO66s.js +1 -0
  137. package/dist/client/assets/org-DRYqs_wo.js +1 -0
  138. package/dist/client/assets/palette-D18VboLH.js +1 -0
  139. package/dist/client/assets/play-d3KUi4G6.js +1 -0
  140. package/dist/client/assets/{powershell-DshXNtvi.js → powershell-CCSX75yM.js} +1 -1
  141. package/dist/client/assets/primary-D_D7eLwT.js +2 -0
  142. package/dist/client/assets/prisma-DMgNhnYS.js +1 -0
  143. package/dist/client/assets/providerDriverMeta-DNTocCcU.js +1 -0
  144. package/dist/client/assets/providerModels-bFbEIfL9.js +1 -0
  145. package/dist/client/assets/{qr-code-BKrwYZ2s.js → qr-code-Bk1kdf_k.js} +1 -1
  146. package/dist/client/assets/qr-code-MAZkoKtL.js +1 -0
  147. package/dist/client/assets/r-B-BYV2IP.js +1 -0
  148. package/dist/client/assets/radio-group-D-VCGinX.js +2 -0
  149. package/dist/client/assets/rbs-C0MpOrj4.js +1 -0
  150. package/dist/client/assets/refresh-cw-DY3_Ph-S.js +1 -0
  151. package/dist/client/assets/{rst-C90_EUa_.js → rst-DKqX_39h.js} +1 -1
  152. package/dist/client/assets/{ruby-BlGyFGAQ.js → ruby-CaU3RLfE.js} +1 -1
  153. package/dist/client/assets/runtime-Djy96GJd.js +17 -0
  154. package/dist/client/assets/save-ugJXuJRM.js +1 -0
  155. package/dist/client/assets/{scala-DKOlJaKm.js → scala-BiFt_7mu.js} +1 -1
  156. package/dist/client/assets/scroll-area-BMnGzd2a.js +1 -0
  157. package/dist/client/assets/scrollEdges-QLSFwGSQ.js +1 -0
  158. package/dist/client/assets/separator-BwUYkCkX.js +1 -0
  159. package/dist/client/assets/settingsLayout-C6SUmJVB.js +1 -0
  160. package/dist/client/assets/sheet-DLy4aeVa.js +1 -0
  161. package/dist/client/assets/shield-Zq_ygsnJ.js +1 -0
  162. package/dist/client/assets/shield-alert-DfUhTI4-.js +1 -0
  163. package/dist/client/assets/shield-check-CO4SMhAs.js +1 -0
  164. package/dist/client/assets/sidebar-DNnW-a2V.js +1 -0
  165. package/dist/client/assets/sidebarProjectFolders-ygpaKZM6.js +4 -0
  166. package/dist/client/assets/sidebarStatusText-CawrXnx0.js +1 -0
  167. package/dist/client/assets/skeleton-DRm4_OvB.js +1 -0
  168. package/dist/client/assets/smalltalk-BHpQb5nM.js +1 -0
  169. package/dist/client/assets/smartphone-O2VACDhU.js +1 -0
  170. package/dist/client/assets/smithy-Dgaz7aur.js +1 -0
  171. package/dist/client/assets/solidity-Bj7E1mRn.js +1 -0
  172. package/dist/client/assets/sparkles-isHutYWU.js +1 -0
  173. package/dist/client/assets/src-BSuAGqhK.js +14 -0
  174. package/dist/client/assets/star-7UHEnC3x.js +1 -0
  175. package/dist/client/assets/surrealql-CVtmRpY6.js +1 -0
  176. package/dist/client/assets/swift-CyEgAFGc.js +1 -0
  177. package/dist/client/assets/switch-DD1qVLgN.js +48 -0
  178. package/dist/client/assets/system-verilog-Dh5ihWbf.js +1 -0
  179. package/dist/client/assets/tex-DOBpnpUK.js +1 -0
  180. package/dist/client/assets/toggle-CaKBNe6W.js +1 -0
  181. package/dist/client/assets/toggle-group-UeFeTI3u.js +1 -0
  182. package/dist/client/assets/tokenModePresentation-DV56ekA4.js +1 -0
  183. package/dist/client/assets/tooltip-DXvXxL37.js +1 -0
  184. package/dist/client/assets/twig-DsmcR2eZ.js +1 -0
  185. package/dist/client/assets/typst-Drab9wKO.js +1 -0
  186. package/dist/client/assets/unplug-DisTpujT.js +1 -0
  187. package/dist/client/assets/useAppSidebarCollapsed-CaAsLi1q.js +1 -0
  188. package/dist/client/assets/useAppearancePreference-BteoFdGa.js +1 -0
  189. package/dist/client/assets/useBaseUiId-CJN4MvrU.js +1 -0
  190. package/dist/client/assets/{useControlled-HocCF1v9.js → useControlled-DQwgzrEC.js} +1 -1
  191. package/dist/client/assets/useLabelableId-BsDFG9Oj.js +1 -0
  192. package/dist/client/assets/{useLongPress-OGlhYKlH.js → useLongPress-DG1W7YqV.js} +1 -1
  193. package/dist/client/assets/useNavigate-cLfxn_9L.js +1 -0
  194. package/dist/client/assets/usePhoneThreadActions-rekHL1Mi.js +1 -0
  195. package/dist/client/assets/usePopupViewport-kXU31P6l.js +1 -0
  196. package/dist/client/assets/useScrollLock-DjMxrUJe.js +1 -0
  197. package/dist/client/assets/useStatistics-BYP-9CmW.js +55 -0
  198. package/dist/client/assets/{useTheme-By1kfyiU.js → useTheme-CVNauCtz.js} +1 -1
  199. package/dist/client/assets/useTriggerFocusGuards-DuAm2B8C.js +1 -0
  200. package/dist/client/assets/useValueChanged-DreFjrMK.js +1 -0
  201. package/dist/client/assets/user-round-DctamWV6.js +1 -0
  202. package/dist/client/assets/{v-DETTlOr0.js → v-DBj4K9d_.js} +1 -1
  203. package/dist/client/assets/{vb-Djn5o6TS.js → vb-DOwzaHZ0.js} +1 -1
  204. package/dist/client/assets/verilog-B2gwz-sJ.js +1 -0
  205. package/dist/client/assets/vscode-icons-Dw-LGJAv.js +1 -0
  206. package/dist/client/assets/{vue-DStD_OmO.js → vue-Dt-rrFdH.js} +1 -1
  207. package/dist/client/assets/worker-Bs0l0ezO.js +162 -0
  208. package/dist/client/assets/{workspaceMetadataProjection-D3vqw40g.js → workspaceMetadataProjection-BL4sEIL2.js} +1 -1
  209. package/dist/client/assets/wrench-Ds8eZerZ.js +1 -0
  210. package/dist/client/index.html +1 -1
  211. package/dist/client/mockServiceWorker.js +124 -99
  212. package/dist/resource-monitor/darwin-arm64/ryco-resource-monitor +0 -0
  213. package/dist/resource-monitor/darwin-x64/ryco-resource-monitor +0 -0
  214. package/dist/resource-monitor/linux-arm64/ryco-resource-monitor +0 -0
  215. package/dist/resource-monitor/linux-x64/ryco-resource-monitor +0 -0
  216. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  217. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  218. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  219. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  220. package/package.json +20 -12
  221. package/dist/client/assets/AccountSettings-CypheYqM.js +0 -1
  222. package/dist/client/assets/AiFocusSettings-BlX0ED1t.js +0 -1
  223. package/dist/client/assets/AppearanceSettings-BSyn6NXf.js +0 -1
  224. package/dist/client/assets/BranchToolbar.logic-fpBz8Ajj.js +0 -1
  225. package/dist/client/assets/BrowserPanel-BWch19QH.js +0 -1
  226. package/dist/client/assets/ChatRightPanel-B7yrq-hS.js +0 -27
  227. package/dist/client/assets/ChatThreadRouteView-Cg0d_EHs.js +0 -1
  228. package/dist/client/assets/CommandPaletteDialog-DImCuPaX.js +0 -1
  229. package/dist/client/assets/CompositeItem-BYnHWRNf.js +0 -1
  230. package/dist/client/assets/CompositeRoot-B28uivk7.js +0 -1
  231. package/dist/client/assets/ComputerUseSettings-CosW7jaG.js +0 -1
  232. package/dist/client/assets/ConnectionsSettings-Bk6vI3G-.js +0 -7
  233. package/dist/client/assets/ContextHandoffEndpointLabel-BR6ygaub.js +0 -4
  234. package/dist/client/assets/DiagnosticsSettings-Dp_tCNLw.js +0 -2
  235. package/dist/client/assets/DialogHandle-BN-QB-sO.js +0 -1
  236. package/dist/client/assets/DialogPopup-BuJs5WUt.js +0 -1
  237. package/dist/client/assets/DialogRoot-PxEcoecQ.js +0 -1
  238. package/dist/client/assets/DialogTitle-4nxQsra4.js +0 -1
  239. package/dist/client/assets/DialogTrigger-D_0canul.js +0 -1
  240. package/dist/client/assets/DialogViewport-DSo-2hyf.js +0 -1
  241. package/dist/client/assets/DraftChatThreadRouteView-C94kpMx4.js +0 -1
  242. package/dist/client/assets/GlassSurface-CyOTUS7E.js +0 -1
  243. package/dist/client/assets/HostedConnectionControls-CL0Ws4ca.js +0 -1
  244. package/dist/client/assets/HostedHubRoot-LUINZl4r.js +0 -1
  245. package/dist/client/assets/HostedNativeAuthorizationRoute-CgYVBE6N.js +0 -1
  246. package/dist/client/assets/HostedRelayTrustNotice-DgdeZh52.js +0 -1
  247. package/dist/client/assets/Icons-BIUbIFr7.js +0 -1
  248. package/dist/client/assets/IntegrationsSettingsPanel-B7tXTaa3.js +0 -1
  249. package/dist/client/assets/KeybindingsSettings-HMlRcGQ4.js +0 -7
  250. package/dist/client/assets/LazyBrowserPanel-CKfmuM9U.js +0 -1
  251. package/dist/client/assets/McpServersSettings-Bq-HyhvC.js +0 -6
  252. package/dist/client/assets/MobileSheet-acDRH9aa.js +0 -1
  253. package/dist/client/assets/NoActiveThreadState-7rym7bV7.js +0 -1
  254. package/dist/client/assets/NodeSecuritySettings-D8qjh4Dc.js +0 -1
  255. package/dist/client/assets/OpinionatedPluginsSettings-D7Uks5yR.js +0 -1
  256. package/dist/client/assets/PhoneGetAppInterstitial-BQXUSufH.js +0 -1
  257. package/dist/client/assets/PhoneGetAppInterstitialBackdrop-BbUvwGmI.js +0 -1
  258. package/dist/client/assets/PhoneHome-DvgdMTkh.js +0 -1
  259. package/dist/client/assets/PhoneSettingsSurface-DncJ540i.js +0 -1
  260. package/dist/client/assets/ProjectFavicon-BY5Vyyk6.js +0 -1
  261. package/dist/client/assets/ProviderInstanceIcon-CZe1TbeC.js +0 -1
  262. package/dist/client/assets/ProviderModelPicker-DHAY1n_1.js +0 -1
  263. package/dist/client/assets/ProviderUpdateLaunchNotification.logic-DQJVrUIo.js +0 -1
  264. package/dist/client/assets/ProvidersSettingsPanel-BylxZs4S.js +0 -1
  265. package/dist/client/assets/RedactedSensitiveText-D-enj1h5.js +0 -1
  266. package/dist/client/assets/RootAppShell-DBK0WW2b.js +0 -6
  267. package/dist/client/assets/RycoLetterMark-PnGm6TQY.js +0 -1
  268. package/dist/client/assets/Separator-BWKYMFqt.js +0 -1
  269. package/dist/client/assets/SettingsDialog-N25hIv-a.js +0 -1
  270. package/dist/client/assets/SettingsPanels-D9YXmUPP.js +0 -3
  271. package/dist/client/assets/SettingsPanels.editor-Cn18k74l.js +0 -1
  272. package/dist/client/assets/SourceControlSettings-BAzSpMfR.js +0 -1
  273. package/dist/client/assets/StatisticsPage-CLKpfsQ8.js +0 -1
  274. package/dist/client/assets/StatisticsPanel-DxHUFn64.js +0 -1
  275. package/dist/client/assets/StatisticsSettingsLink-B3HIQYFh.js +0 -1
  276. package/dist/client/assets/ThreadStatusIndicators-CQZ_OgY8.js +0 -0
  277. package/dist/client/assets/ThreadTerminalDrawer-D1SPewXR.js +0 -20
  278. package/dist/client/assets/ThreadWorkspacePanel-DVF6oZsV.js +0 -2009
  279. package/dist/client/assets/ToolbarRootContext-Dt8G5aCw.js +0 -1
  280. package/dist/client/assets/WorkItemsTab-BoE-TcXJ.js +0 -19
  281. package/dist/client/assets/actionscript-3--17pq3dv.js +0 -1
  282. package/dist/client/assets/activity-DfFM6I8A.js +0 -1
  283. package/dist/client/assets/alert-DE5SkZhr.js +0 -1
  284. package/dist/client/assets/alert-dialog-BqPnPhb6.js +0 -1
  285. package/dist/client/assets/andromeeda-WkhI09AS.js +0 -1
  286. package/dist/client/assets/apex-VAyPSnFM.js +0 -1
  287. package/dist/client/assets/appearancePreferences-BhNRCg6W.js +0 -1
  288. package/dist/client/assets/archive-BFV4YQ7D.js +0 -1
  289. package/dist/client/assets/arrow-left-CCmICk1t.js +0 -1
  290. package/dist/client/assets/arrow-right-Z3Eay6Fd.js +0 -1
  291. package/dist/client/assets/arrow-up-caak6P06.js +0 -1
  292. package/dist/client/assets/arrow-up-right-BwC-fCE4.js +0 -1
  293. package/dist/client/assets/asciidoc-DE70LPWp.js +0 -1
  294. package/dist/client/assets/aurora-x-C7CFqhAd.js +0 -1
  295. package/dist/client/assets/authorization-bHsGYIT0.js +0 -1
  296. package/dist/client/assets/ayu-dark-CRu61w6_.js +0 -1
  297. package/dist/client/assets/ayu-light-Dn6O_aYR.js +0 -1
  298. package/dist/client/assets/ayu-mirage-CTjYAbs-.js +0 -1
  299. package/dist/client/assets/badge-m9kM3P07.js +0 -1
  300. package/dist/client/assets/bird2-C6vDhewU.js +0 -1
  301. package/dist/client/assets/bot-Cv7a7Ksf.js +0 -1
  302. package/dist/client/assets/bsl-BkkzgIyY.js +0 -1
  303. package/dist/client/assets/button-B6xQZNKz.js +0 -1
  304. package/dist/client/assets/c3-BFHwR3_K.js +0 -1
  305. package/dist/client/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
  306. package/dist/client/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
  307. package/dist/client/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
  308. package/dist/client/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
  309. package/dist/client/assets/chart-column-DgGlY4sD.js +0 -1
  310. package/dist/client/assets/chatThreadActions-BXaNbPbp.js +0 -1
  311. package/dist/client/assets/check-BfnWUGBT.js +0 -1
  312. package/dist/client/assets/chevron-down-B_FKCRVh.js +0 -1
  313. package/dist/client/assets/chevron-right-B6CKNGh4.js +0 -1
  314. package/dist/client/assets/circle-alert-BV3vJE-c.js +0 -1
  315. package/dist/client/assets/circle-check-D2Vx39x-.js +0 -1
  316. package/dist/client/assets/circle-dashed-khcA8K3Y.js +0 -1
  317. package/dist/client/assets/circle-question-mark-DEuLdOiy.js +0 -1
  318. package/dist/client/assets/circle-x-DqfM_2wS.js +0 -1
  319. package/dist/client/assets/clamp-D0kAXd-u.js +0 -1
  320. package/dist/client/assets/clarity-SemFz856.js +0 -1
  321. package/dist/client/assets/clipboard-copy-CiD4tBsh.js +0 -1
  322. package/dist/client/assets/clock--4M7moiV.js +0 -1
  323. package/dist/client/assets/clock-3-NbnQqtcd.js +0 -1
  324. package/dist/client/assets/collapsible-BECg-ssO.js +0 -1
  325. package/dist/client/assets/command-DvbA3O0J.js +0 -1
  326. package/dist/client/assets/composerHandleContext-BrQ6d8r9.js +0 -1
  327. package/dist/client/assets/copy-CkPe1c-r.js +0 -1
  328. package/dist/client/assets/coq-BrsZFFmf.js +0 -1
  329. package/dist/client/assets/cpp-nUc1dxUX.js +0 -1
  330. package/dist/client/assets/dark-plus-GAt2ZgX8.js +0 -1
  331. package/dist/client/assets/data-list-7TiaqfZU.js +0 -1
  332. package/dist/client/assets/desktopUpdateAtoms-6j0d8vfy.js +0 -1
  333. package/dist/client/assets/device-CGaJ6fwD.js +0 -168
  334. package/dist/client/assets/dialog-C9v8Zl6e.js +0 -1
  335. package/dist/client/assets/download-DPjzVxTa.js +0 -1
  336. package/dist/client/assets/dracula-C2uKkzgK.js +0 -1
  337. package/dist/client/assets/dracula-soft-D1bVjxWZ.js +0 -1
  338. package/dist/client/assets/draft-input-BRSLIjV6.js +0 -1
  339. package/dist/client/assets/editorPreferences-D-9SDgRM.js +0 -1
  340. package/dist/client/assets/emacs-lisp-B4R74twV.js +0 -1
  341. package/dist/client/assets/empty-CuQ57p2u.js +0 -1
  342. package/dist/client/assets/everforest-dark-D-DlICQR.js +0 -1
  343. package/dist/client/assets/everforest-light-CeVdGHYG.js +0 -1
  344. package/dist/client/assets/external-link-CF9EzT-A.js +0 -1
  345. package/dist/client/assets/eye-C2Puut9B.js +0 -1
  346. package/dist/client/assets/folder-BKTxLq18.js +0 -1
  347. package/dist/client/assets/folder-closed-D2cwiusg.js +0 -1
  348. package/dist/client/assets/gdscript-Cp2uCuqX.js +0 -1
  349. package/dist/client/assets/getPseudoElementBounds-DdH76YK5.js +0 -1
  350. package/dist/client/assets/git-branch-Dauy2SWC.js +0 -1
  351. package/dist/client/assets/git-pull-request-DsK1gBtK.js +0 -1
  352. package/dist/client/assets/github-dark-DwbbXv51.js +0 -1
  353. package/dist/client/assets/github-dark-default-CxjRwzl6.js +0 -1
  354. package/dist/client/assets/github-dark-dimmed-Cr1oaoul.js +0 -1
  355. package/dist/client/assets/github-dark-high-contrast-B4qJZLZa.js +0 -1
  356. package/dist/client/assets/github-light-CsVXhIlR.js +0 -1
  357. package/dist/client/assets/github-light-default-DB_IwZa6.js +0 -1
  358. package/dist/client/assets/github-light-high-contrast-DLgVeSB-.js +0 -1
  359. package/dist/client/assets/globe-dS40wBdE.js +0 -1
  360. package/dist/client/assets/group-DBXm8riE.js +0 -1
  361. package/dist/client/assets/gruvbox-dark-hard-DXm60lX3.js +0 -1
  362. package/dist/client/assets/gruvbox-dark-medium-GE2thSmD.js +0 -1
  363. package/dist/client/assets/gruvbox-dark-soft-04Cj-4VZ.js +0 -1
  364. package/dist/client/assets/gruvbox-light-hard-K6wSn29D.js +0 -1
  365. package/dist/client/assets/gruvbox-light-medium-CVy3aSlc.js +0 -1
  366. package/dist/client/assets/gruvbox-light-soft-DNgJjaY0.js +0 -1
  367. package/dist/client/assets/hack-Vy6VBrBk.js +0 -1
  368. package/dist/client/assets/haxe-OTjmBuCE.js +0 -1
  369. package/dist/client/assets/horizon-0-RkHfro.js +0 -1
  370. package/dist/client/assets/horizon-bright-BgL2X9oq.js +0 -1
  371. package/dist/client/assets/hostedConnectionCoordinator-DSMW2Ldh.js +0 -1
  372. package/dist/client/assets/houston-KyjWKfuY.js +0 -1
  373. package/dist/client/assets/hxml-B0Qn7Nwc.js +0 -1
  374. package/dist/client/assets/input-Dn_zesdZ.js +0 -1
  375. package/dist/client/assets/isElementDisabled-KSuuBj8D.js +0 -1
  376. package/dist/client/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
  377. package/dist/client/assets/kanagawa-lotus-BN08jTvb.js +0 -1
  378. package/dist/client/assets/kanagawa-wave-CTweb8Dz.js +0 -1
  379. package/dist/client/assets/kbd-BF2-WlxQ.js +0 -1
  380. package/dist/client/assets/key-round-BjaaL9Df.js +0 -1
  381. package/dist/client/assets/keybindings-FSJY3Tht.js +0 -1
  382. package/dist/client/assets/keyboard-AkUFPD_e.js +0 -1
  383. package/dist/client/assets/label-BKjVY2A9.js +0 -1
  384. package/dist/client/assets/laserwave-CQkdhozh.js +0 -1
  385. package/dist/client/assets/latex-UxGGx4RW.js +0 -1
  386. package/dist/client/assets/layers-tzRiuxSx.js +0 -1
  387. package/dist/client/assets/lib-D5cyGc84.js +0 -29
  388. package/dist/client/assets/light-plus-CNQ8_7Y0.js +0 -1
  389. package/dist/client/assets/loader-BrbWRz3I.js +0 -1
  390. package/dist/client/assets/loader-circle-DRKbHQst.js +0 -1
  391. package/dist/client/assets/log-out-BEihaal1.js +0 -1
  392. package/dist/client/assets/luau-FMPmPwt6.js +0 -1
  393. package/dist/client/assets/main-BiIQEybS.js +0 -9
  394. package/dist/client/assets/main-tZWU6iqX.css +0 -2
  395. package/dist/client/assets/material-theme-CAtLaHa3.js +0 -1
  396. package/dist/client/assets/material-theme-darker-k-s5Bc6K.js +0 -1
  397. package/dist/client/assets/material-theme-lighter-CD6a-c4d.js +0 -1
  398. package/dist/client/assets/material-theme-ocean-B3mraInd.js +0 -1
  399. package/dist/client/assets/material-theme-palenight-DEhAARHw.js +0 -1
  400. package/dist/client/assets/mdc-OfbQwt23.js +0 -1
  401. package/dist/client/assets/menu-BxtB33Up.js +0 -1
  402. package/dist/client/assets/mermaid-Bk4SNUv9.js +0 -1
  403. package/dist/client/assets/messages-square-e0Zg750i.js +0 -1
  404. package/dist/client/assets/min-dark-BFqTAwCr.js +0 -1
  405. package/dist/client/assets/min-light-O7UdaaxX.js +0 -1
  406. package/dist/client/assets/minimize-2-DC9gMgGl.js +0 -1
  407. package/dist/client/assets/mojo-BgCJLMeH.js +0 -1
  408. package/dist/client/assets/monitor-Dj0JFj4_.js +0 -1
  409. package/dist/client/assets/monokai-CdkpiU2Y.js +0 -1
  410. package/dist/client/assets/moonbit-CaWjb8XO.js +0 -1
  411. package/dist/client/assets/motion-thOBhZyM.js +0 -1
  412. package/dist/client/assets/move-B1IS1UjX.js +0 -1
  413. package/dist/client/assets/night-owl-BsnCLAKc.js +0 -1
  414. package/dist/client/assets/night-owl-light-BODRhcTU.js +0 -1
  415. package/dist/client/assets/nord-Cd-F4txO.js +0 -1
  416. package/dist/client/assets/nushell-DcLAeLz5.js +0 -1
  417. package/dist/client/assets/one-dark-pro-DUS_IGRK.js +0 -1
  418. package/dist/client/assets/one-light-CVUd7yD5.js +0 -1
  419. package/dist/client/assets/palette-0qvNt1CR.js +0 -1
  420. package/dist/client/assets/pathEntry-BR9vr7Ug.js +0 -1
  421. package/dist/client/assets/pencil-CA0DGufX.js +0 -1
  422. package/dist/client/assets/phoneAnchoredActions-CtpkI3yG.js +0 -1
  423. package/dist/client/assets/plastic-CF8VZTnn.js +0 -1
  424. package/dist/client/assets/play-wIyvqd_g.js +0 -1
  425. package/dist/client/assets/plus-5kH13lqq.js +0 -1
  426. package/dist/client/assets/poimandres-BX2TyY6j.js +0 -1
  427. package/dist/client/assets/popover-CwhgX3HA.js +0 -1
  428. package/dist/client/assets/primary-BqnEJHWx.js +0 -2
  429. package/dist/client/assets/prisma-BsRQq5mF.js +0 -1
  430. package/dist/client/assets/projectPaths-45WPhgoj.js +0 -1
  431. package/dist/client/assets/providerDriverMeta-Cc60r9Rb.js +0 -1
  432. package/dist/client/assets/providerInstances-Cr8JmFCe.js +0 -1
  433. package/dist/client/assets/providerModels-Cr8JmFCe.js +0 -1
  434. package/dist/client/assets/qr-code-DDmpRnPp.js +0 -1
  435. package/dist/client/assets/r-DbaFp5Gj.js +0 -1
  436. package/dist/client/assets/radio-group-DZCo21CF.js +0 -2
  437. package/dist/client/assets/react-dom-x9LNwWQc.js +0 -1
  438. package/dist/client/assets/red-CJ3rzSJv.js +0 -1
  439. package/dist/client/assets/refresh-cw-DiuiLTny.js +0 -1
  440. package/dist/client/assets/resolveAriaLabelledBy-927ShlEO.js +0 -1
  441. package/dist/client/assets/rightPanelRouteSearch-CExl-IaQ.js +0 -1
  442. package/dist/client/assets/rose-pine-BthvhNj6.js +0 -1
  443. package/dist/client/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
  444. package/dist/client/assets/rose-pine-moon-hon4tzzS.js +0 -1
  445. package/dist/client/assets/rotate-ccw-XOYBPtyK.js +0 -1
  446. package/dist/client/assets/rotate-cw-D32Z4Sdd.js +0 -1
  447. package/dist/client/assets/runtime-CA2W9mZ-.js +0 -17
  448. package/dist/client/assets/save-DjlqeVG_.js +0 -1
  449. package/dist/client/assets/scroll-area-CylKYQms.js +0 -1
  450. package/dist/client/assets/scrollEdges-D7RQhYjX.js +0 -1
  451. package/dist/client/assets/search-B2nLj573.js +0 -1
  452. package/dist/client/assets/select-qTezUK8F.js +0 -1
  453. package/dist/client/assets/separator-D77goPy-.js +0 -1
  454. package/dist/client/assets/server-y8Wq0Qwv.js +0 -1
  455. package/dist/client/assets/session-logic-xfW418Rx.js +0 -1
  456. package/dist/client/assets/settings-2-DpwBKj3m.js +0 -1
  457. package/dist/client/assets/settingsLayout-BuaXzjIe.js +0 -1
  458. package/dist/client/assets/settingsSections.logic-CR4aytUI.js +0 -1
  459. package/dist/client/assets/shallow-DWZCFNun.js +0 -1
  460. package/dist/client/assets/sheet-z3AEiSN4.js +0 -1
  461. package/dist/client/assets/shield-BuXuMVtb.js +0 -1
  462. package/dist/client/assets/shield-alert-Dfk--o-I.js +0 -1
  463. package/dist/client/assets/shield-check-BHi57iF1.js +0 -1
  464. package/dist/client/assets/sidebar-Dst9O2OR.js +0 -1
  465. package/dist/client/assets/sidebarProjectFolders-DR1NBLLz.js +0 -4
  466. package/dist/client/assets/sidebarStatusText-7jo1n9E1.js +0 -1
  467. package/dist/client/assets/skeleton-D_kbMg21.js +0 -1
  468. package/dist/client/assets/slack-dark-DYvUXyrP.js +0 -1
  469. package/dist/client/assets/slack-ochin-bqtMVDfH.js +0 -1
  470. package/dist/client/assets/smalltalk-B16xEiuN.js +0 -1
  471. package/dist/client/assets/smartphone-DcUQ17YT.js +0 -1
  472. package/dist/client/assets/snazzy-light-D8dzFmq5.js +0 -1
  473. package/dist/client/assets/solarized-dark-DV17i1UV.js +0 -1
  474. package/dist/client/assets/solarized-light-DSh2HLQt.js +0 -1
  475. package/dist/client/assets/solidity-CKzVLygQ.js +0 -1
  476. package/dist/client/assets/sparkles-nVLLtdqb.js +0 -1
  477. package/dist/client/assets/spinner-CkXSwhuf.js +0 -1
  478. package/dist/client/assets/square-pen-dcArpda7.js +0 -1
  479. package/dist/client/assets/src-I4s4HU8f.js +0 -14
  480. package/dist/client/assets/star-CdUOqzzZ.js +0 -1
  481. package/dist/client/assets/storeSelectors-Cr8JmFCe.js +0 -1
  482. package/dist/client/assets/surrealql-CaZedS14.js +0 -1
  483. package/dist/client/assets/swift-DonLKvLd.js +0 -1
  484. package/dist/client/assets/switch-BMeRsIbg.js +0 -1
  485. package/dist/client/assets/synthwave-84-CIknw8y7.js +0 -1
  486. package/dist/client/assets/system-verilog-DJ5XKQeo.js +0 -1
  487. package/dist/client/assets/tabSwitchInstrumentation-BuxWNdCV.js +0 -1
  488. package/dist/client/assets/terminal-DupJfYRW.js +0 -1
  489. package/dist/client/assets/terminal-links-Bf4neyyn.js +0 -1
  490. package/dist/client/assets/tex-CLeF3jRN.js +0 -1
  491. package/dist/client/assets/textarea-Bu_OTJYe.js +0 -1
  492. package/dist/client/assets/threadPinning-DhnkssEa.js +0 -1
  493. package/dist/client/assets/threadPriorityRefreshRuntime-DJjlyX7f.js +0 -1
  494. package/dist/client/assets/timestampFormat-8uPXS812.js +0 -1
  495. package/dist/client/assets/toast-CIjfIWUw.js +0 -1
  496. package/dist/client/assets/toggle-BA4mJ5v9.js +0 -1
  497. package/dist/client/assets/toggle-group-ChGfILTR.js +0 -1
  498. package/dist/client/assets/tokenModePresentation-B64s_OK3.js +0 -1
  499. package/dist/client/assets/tokyo-night-iIspnLcq.js +0 -1
  500. package/dist/client/assets/tooltip-C2VVqN6U.js +0 -1
  501. package/dist/client/assets/trash-2-Dqgxd0nF.js +0 -1
  502. package/dist/client/assets/triangle-alert-D4cCh6sB.js +0 -1
  503. package/dist/client/assets/twig-BmgBVapk.js +0 -1
  504. package/dist/client/assets/types-Cr8JmFCe.js +0 -1
  505. package/dist/client/assets/typst-DI99ib-x.js +0 -1
  506. package/dist/client/assets/undo-2-C8EQVSSD.js +0 -1
  507. package/dist/client/assets/unplug-Dt3Sy2op.js +0 -1
  508. package/dist/client/assets/useAppSidebarCollapsed-w0th-164.js +0 -1
  509. package/dist/client/assets/useAtlassian-j7ex3bVN.js +0 -0
  510. package/dist/client/assets/useButton-Dx5k1uZG.js +0 -1
  511. package/dist/client/assets/useCompositeListItem-BqkyY0oT.js +0 -1
  512. package/dist/client/assets/useCopyToClipboard-BTpWxumf.js +0 -1
  513. package/dist/client/assets/useDebouncedValue-BevbEbPO.js +0 -1
  514. package/dist/client/assets/useFloatingRootContext-j6TgzEFa.js +0 -1
  515. package/dist/client/assets/useHandleNewThread-gVYty_Bg.js +0 -1
  516. package/dist/client/assets/useLabelableId-CcYPzJvj.js +0 -1
  517. package/dist/client/assets/useLocation-CZ3osOgz.js +0 -1
  518. package/dist/client/assets/useNavigate-2tVq4iZ2.js +0 -1
  519. package/dist/client/assets/useOpenInteractionType-apbY9ZEK.js +0 -1
  520. package/dist/client/assets/usePhoneThreadActions-CnDlicSp.js +0 -1
  521. package/dist/client/assets/usePopupViewport-0k75uXo1.js +0 -1
  522. package/dist/client/assets/useRenderElement-5DRNLBaU.js +0 -1
  523. package/dist/client/assets/useRouter-CcIDS3PN.js +0 -1
  524. package/dist/client/assets/useScrollLock-C5WLWXcc.js +0 -1
  525. package/dist/client/assets/useStatistics-GOFXPHO0.js +0 -55
  526. package/dist/client/assets/useSwipeDismiss-BNHPBucH.js +0 -1
  527. package/dist/client/assets/useThreadActions-B4Xy2soQ.js +0 -2
  528. package/dist/client/assets/useTriggerFocusGuards-C3geWFzt.js +0 -1
  529. package/dist/client/assets/useValueChanged-FVqPwcY_.js +0 -1
  530. package/dist/client/assets/user-round-KsVtJgon.js +0 -1
  531. package/dist/client/assets/utils-B5qahmRn.js +0 -1
  532. package/dist/client/assets/verilog-CiiDBU1e.js +0 -1
  533. package/dist/client/assets/vesper-BIFK_oDq.js +0 -1
  534. package/dist/client/assets/visuallyHidden-j2WbVEv-.js +0 -1
  535. package/dist/client/assets/vitesse-black-D082JcaE.js +0 -1
  536. package/dist/client/assets/vitesse-dark-z-nr_5O8.js +0 -1
  537. package/dist/client/assets/vitesse-light-ojz42ZLy.js +0 -1
  538. package/dist/client/assets/vscode-icons-D3XEYHTI.js +0 -1
  539. package/dist/client/assets/worker-B0IAubm_.js +0 -161
  540. package/dist/client/assets/wrench-BnpoYEZm.js +0 -1
  541. package/dist/client/assets/x-BXHT1Zj1.js +0 -1
package/dist/bin.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
5
5
  const require_collectUint8StreamText = require("./collectUint8StreamText-DStwNTTK.cjs");
6
- const require_Metrics = require("./Metrics-DIjMQ5pa.cjs");
6
+ const require_Metrics = require("./Metrics-Bcb9vCAe.cjs");
7
7
  const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-DreaAH1H.cjs");
8
8
  const require_sourceControl = require("./sourceControl-B0D1Op29.cjs");
9
9
  let _effect_platform_node_NodeRuntime = require("@effect/platform-node/NodeRuntime");
@@ -2494,9 +2494,14 @@ const INLINE_ATTACHMENT_EXTENSIONS = /* @__PURE__ */ new Set([
2494
2494
  ".webp"
2495
2495
  ]);
2496
2496
  const STATIC_CONTENT_TYPES = {
2497
+ ".avif": "image/avif",
2498
+ ".bmp": "image/bmp",
2497
2499
  ".css": "text/css; charset=utf-8",
2498
2500
  ".html": "text/html; charset=utf-8",
2501
+ ".gif": "image/gif",
2499
2502
  ".ico": "image/x-icon",
2503
+ ".jpeg": "image/jpeg",
2504
+ ".jpg": "image/jpeg",
2500
2505
  ".js": "text/javascript; charset=utf-8",
2501
2506
  ".json": "application/json; charset=utf-8",
2502
2507
  ".map": "application/json; charset=utf-8",
@@ -2504,7 +2509,8 @@ const STATIC_CONTENT_TYPES = {
2504
2509
  ".svg": "image/svg+xml; charset=utf-8",
2505
2510
  ".txt": "text/plain; charset=utf-8",
2506
2511
  ".wasm": "application/wasm",
2507
- ".webmanifest": "application/manifest+json; charset=utf-8"
2512
+ ".webmanifest": "application/manifest+json; charset=utf-8",
2513
+ ".webp": "image/webp"
2508
2514
  };
2509
2515
  const browserApiCorsLayer = effect_unstable_http.HttpRouter.cors({
2510
2516
  allowedMethods: [
@@ -2823,16 +2829,17 @@ const projectFaviconRouteLayer = effect_unstable_http.HttpRouter.add("GET", "/ap
2823
2829
  if (effect.Option.isNone(url)) return effect_unstable_http.HttpServerResponse.text("Bad Request", { status: 400 });
2824
2830
  const projectCwd = url.value.searchParams.get("cwd");
2825
2831
  if (!projectCwd) return effect_unstable_http.HttpServerResponse.text("Missing cwd parameter", { status: 400 });
2826
- const faviconFilePath = yield* (yield* ProjectFaviconResolver).resolvePath(projectCwd);
2827
- if (!faviconFilePath) return effect_unstable_http.HttpServerResponse.text(FALLBACK_PROJECT_FAVICON_SVG, {
2832
+ const favicon = yield* (yield* ProjectFaviconResolver).readIcon(projectCwd);
2833
+ if (!favicon) return effect_unstable_http.HttpServerResponse.text(FALLBACK_PROJECT_FAVICON_SVG, {
2828
2834
  status: 200,
2829
2835
  contentType: "image/svg+xml",
2830
2836
  headers: inlineImageResponseHeaders("fallback.svg")
2831
2837
  });
2832
- return yield* effect_unstable_http.HttpServerResponse.file(faviconFilePath, {
2838
+ return effect_unstable_http.HttpServerResponse.uint8Array(favicon.bytes, {
2833
2839
  status: 200,
2834
- headers: inlineImageResponseHeaders(faviconFilePath)
2835
- }).pipe(effect.Effect.catch(() => effect.Effect.succeed(effect_unstable_http.HttpServerResponse.text("Internal Server Error", { status: 500 }))));
2840
+ contentType: resolveStaticContentType(favicon.path, yield* effect.Path.Path),
2841
+ headers: inlineImageResponseHeaders(favicon.path)
2842
+ });
2836
2843
  }).pipe(effect.Effect.catchTag("AuthError", respondToAuthError)));
2837
2844
  const AvatarFormSchema = effect_Schema.Struct({ avatar: effect_unstable_http.Multipart.SingleFileSchema });
2838
2845
  const PROJECT_ID_PATTERN = /^[A-Za-z0-9_-]+$/;
@@ -34008,7 +34015,7 @@ const BUILT_IN_DRIVERS = [
34008
34015
  configSchema: require_collectUint8StreamText.CodexSettings,
34009
34016
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CodexSettings)({}),
34010
34017
  create: (input) => effect.Effect.tryPromise({
34011
- try: () => Promise.resolve().then(() => require("./CodexDriver-DWGtHt9r.cjs")),
34018
+ try: () => Promise.resolve().then(() => require("./CodexDriver-CR0S17Lb.cjs")),
34012
34019
  catch: (cause) => driverImportError(codexDriverKind, input, cause)
34013
34020
  }).pipe(effect.Effect.flatMap(({ CodexDriver }) => CodexDriver.create(input)))
34014
34021
  },
@@ -34022,7 +34029,7 @@ const BUILT_IN_DRIVERS = [
34022
34029
  configSchema: require_collectUint8StreamText.ClaudeSettings,
34023
34030
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.ClaudeSettings)({}),
34024
34031
  create: (input) => effect.Effect.tryPromise({
34025
- try: () => Promise.resolve().then(() => require("./ClaudeDriver-D7NatUx6.cjs")),
34032
+ try: () => Promise.resolve().then(() => require("./ClaudeDriver-B7mbf51W.cjs")),
34026
34033
  catch: (cause) => driverImportError(claudeDriverKind, input, cause)
34027
34034
  }).pipe(effect.Effect.flatMap(({ ClaudeDriver }) => ClaudeDriver.create(input)))
34028
34035
  },
@@ -34036,7 +34043,7 @@ const BUILT_IN_DRIVERS = [
34036
34043
  configSchema: require_collectUint8StreamText.CopilotSettings,
34037
34044
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CopilotSettings)({}),
34038
34045
  create: (input) => effect.Effect.tryPromise({
34039
- try: () => Promise.resolve().then(() => require("./CopilotDriver-DJvYncGI.cjs")),
34046
+ try: () => Promise.resolve().then(() => require("./CopilotDriver-IBd27Ji2.cjs")),
34040
34047
  catch: (cause) => driverImportError(copilotDriverKind, input, cause)
34041
34048
  }).pipe(effect.Effect.flatMap(({ CopilotDriver }) => CopilotDriver.create(input)))
34042
34049
  },
@@ -34050,7 +34057,7 @@ const BUILT_IN_DRIVERS = [
34050
34057
  configSchema: require_collectUint8StreamText.CursorSettings,
34051
34058
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CursorSettings)({}),
34052
34059
  create: (input) => effect.Effect.tryPromise({
34053
- try: () => Promise.resolve().then(() => require("./CursorDriver-D3I4KULs.cjs")),
34060
+ try: () => Promise.resolve().then(() => require("./CursorDriver-C4Enoe9N.cjs")),
34054
34061
  catch: (cause) => driverImportError(cursorDriverKind, input, cause)
34055
34062
  }).pipe(effect.Effect.flatMap(({ CursorDriver }) => CursorDriver.create(input)))
34056
34063
  },
@@ -34064,7 +34071,7 @@ const BUILT_IN_DRIVERS = [
34064
34071
  configSchema: require_collectUint8StreamText.GrokSettings,
34065
34072
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.GrokSettings)({}),
34066
34073
  create: (input) => effect.Effect.tryPromise({
34067
- try: () => Promise.resolve().then(() => require("./GrokDriver-_puXDTU3.cjs")),
34074
+ try: () => Promise.resolve().then(() => require("./GrokDriver-RyyFeh_q.cjs")),
34068
34075
  catch: (cause) => driverImportError(grokDriverKind, input, cause)
34069
34076
  }).pipe(effect.Effect.flatMap(({ GrokDriver }) => GrokDriver.create(input)))
34070
34077
  },
@@ -34078,7 +34085,7 @@ const BUILT_IN_DRIVERS = [
34078
34085
  configSchema: require_collectUint8StreamText.OpenCodeSettings,
34079
34086
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.OpenCodeSettings)({}),
34080
34087
  create: (input) => effect.Effect.tryPromise({
34081
- try: () => Promise.resolve().then(() => require("./OpenCodeDriver-401RexI0.cjs")),
34088
+ try: () => Promise.resolve().then(() => require("./OpenCodeDriver-CDcvPT9v.cjs")),
34082
34089
  catch: (cause) => driverImportError(openCodeDriverKind, input, cause)
34083
34090
  }).pipe(effect.Effect.flatMap(({ OpenCodeDriver }) => OpenCodeDriver.create(input)))
34084
34091
  }
@@ -34793,7 +34800,7 @@ const scopedSafeTeardown = (label) => (effect$28) => effect.Effect.gen(function*
34793
34800
  });
34794
34801
  //#endregion
34795
34802
  //#region package.json
34796
- var version$1 = "0.1.22";
34803
+ var version$1 = "0.1.24";
34797
34804
  //#endregion
34798
34805
  //#region src/provider/Layers/CodexProvider.ts
34799
34806
  const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
@@ -40611,8 +40618,8 @@ var QrSegment = class QrSegment {
40611
40618
  static makeAlphanumeric(text) {
40612
40619
  if (!QrSegment.isAlphanumeric(text)) throw new RangeError("String contains unencodable characters in alphanumeric mode");
40613
40620
  let bb = [];
40614
- let i;
40615
- for (i = 0; i + 2 <= text.length; i += 2) {
40621
+ let i = 0;
40622
+ for (; i + 2 <= text.length; i += 2) {
40616
40623
  let temp = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;
40617
40624
  temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));
40618
40625
  appendBits(temp, 11, bb);
@@ -41923,7 +41930,8 @@ const COMMIT_TIMEOUT_MS = 6e5;
41923
41930
  const MAX_PROGRESS_TEXT_LENGTH = 500;
41924
41931
  const SHORT_SHA_LENGTH = 7;
41925
41932
  const TOAST_DESCRIPTION_MAX = 72;
41926
- const STATUS_RESULT_CACHE_TTL = effect.Duration.seconds(1);
41933
+ const LOCAL_STATUS_RESULT_CACHE_TTL = effect.Duration.seconds(5);
41934
+ const REMOTE_STATUS_RESULT_CACHE_TTL = effect.Duration.seconds(30);
41927
41935
  const STATUS_RESULT_CACHE_CAPACITY = 2048;
41928
41936
  function isNotGitRepositoryError(error) {
41929
41937
  return error.message.toLowerCase().includes("not a git repository");
@@ -42298,7 +42306,7 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
42298
42306
  });
42299
42307
  const localStatusResultCache = yield* effect.Cache.makeWith(readLocalStatus, {
42300
42308
  capacity: STATUS_RESULT_CACHE_CAPACITY,
42301
- timeToLive: (exit) => effect.Exit.isSuccess(exit) ? STATUS_RESULT_CACHE_TTL : effect.Duration.zero
42309
+ timeToLive: (exit) => effect.Exit.isSuccess(exit) ? LOCAL_STATUS_RESULT_CACHE_TTL : effect.Duration.zero
42302
42310
  });
42303
42311
  const invalidateLocalStatusResultCache = (cwd) => normalizeStatusCacheKey(cwd).pipe(effect.Effect.flatMap((cacheKey) => effect.Cache.invalidate(localStatusResultCache, cacheKey)));
42304
42312
  const probeBranchPublished = effect.Effect.fn("probeBranchPublished")(function* (cwd, branch, upstreamRef) {
@@ -42345,7 +42353,7 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
42345
42353
  });
42346
42354
  const remoteStatusResultCache = yield* effect.Cache.makeWith(readRemoteStatus, {
42347
42355
  capacity: STATUS_RESULT_CACHE_CAPACITY,
42348
- timeToLive: (exit) => effect.Exit.isSuccess(exit) ? STATUS_RESULT_CACHE_TTL : effect.Duration.zero
42356
+ timeToLive: (exit) => effect.Exit.isSuccess(exit) ? REMOTE_STATUS_RESULT_CACHE_TTL : effect.Duration.zero
42349
42357
  });
42350
42358
  const invalidateRemoteStatusResultCache = (cwd) => normalizeStatusCacheKey(cwd).pipe(effect.Effect.flatMap((cacheKey) => effect.Cache.invalidate(remoteStatusResultCache, cacheKey)));
42351
42359
  const readConfigValueNullable = (cwd, key) => gitCore.readConfigValue(cwd, key).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
@@ -42669,7 +42677,8 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
42669
42677
  return yield* effect.Cache.get(remoteStatusResultCache, cacheKey);
42670
42678
  });
42671
42679
  const status = effect.Effect.fn("status")(function* (input) {
42672
- const [local, remote] = yield* effect.Effect.all([localStatus(input), remoteStatus(input)]);
42680
+ const cacheKey = yield* normalizeStatusCacheKey(input.cwd);
42681
+ const [local, remote] = yield* effect.Effect.all([effect.Cache.get(localStatusResultCache, cacheKey), effect.Cache.get(remoteStatusResultCache, cacheKey)]);
42673
42682
  return require_Metrics.mergeGitStatusParts(local, remote);
42674
42683
  });
42675
42684
  const invalidateLocalStatus = effect.Effect.fn("invalidateLocalStatus")(function* (cwd) {
@@ -42679,8 +42688,8 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
42679
42688
  yield* invalidateRemoteStatusResultCache(cwd);
42680
42689
  });
42681
42690
  const invalidateStatus = effect.Effect.fn("invalidateStatus")(function* (cwd) {
42682
- yield* invalidateLocalStatusResultCache(cwd);
42683
- yield* invalidateRemoteStatusResultCache(cwd);
42691
+ const cacheKey = yield* normalizeStatusCacheKey(cwd);
42692
+ yield* effect.Effect.all([effect.Cache.invalidate(localStatusResultCache, cacheKey), effect.Cache.invalidate(remoteStatusResultCache, cacheKey)]);
42684
42693
  });
42685
42694
  const resolvePullRequest = effect.Effect.fn("resolvePullRequest")(function* (input) {
42686
42695
  return { pullRequest: yield* (yield* sourceControlProvider(input.cwd)).getChangeRequest({
@@ -43018,10 +43027,15 @@ const DEFAULT_VCS_STATUS_REFRESH_INTERVAL = effect.Duration.seconds(30);
43018
43027
  const VCS_STATUS_REFRESH_FAILURE_BASE_DELAY = effect.Duration.seconds(30);
43019
43028
  const VCS_STATUS_REFRESH_FAILURE_MAX_DELAY = effect.Duration.minutes(15);
43020
43029
  const MAX_REMOTE_REFRESH_CONSECUTIVE_FAILURES = 64;
43030
+ const LOCAL_STATUS_CACHE_TTL_MS = effect.Duration.toMillis(effect.Duration.seconds(5));
43031
+ const REMOTE_STATUS_CACHE_TTL_MS = effect.Duration.toMillis(effect.Duration.seconds(30));
43021
43032
  var VcsStatusBroadcaster = class extends effect.Context.Service()("ryco/vcs/VcsStatusBroadcaster") {};
43022
43033
  function fingerprintStatusPart(status) {
43023
43034
  return JSON.stringify(status);
43024
43035
  }
43036
+ function isCachedValueFresh(cached, nowMs, ttlMs) {
43037
+ return nowMs - cached.cachedAtMs < ttlMs;
43038
+ }
43025
43039
  function normalizeCwd(cwd) {
43026
43040
  try {
43027
43041
  return node_fs.realpathSync.native(cwd);
@@ -43041,11 +43055,57 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43041
43055
  const broadcasterScope = yield* effect.Effect.acquireRelease(effect.Scope.make(), (scope) => effect.Scope.close(scope, effect.Exit.void));
43042
43056
  const cacheRef = yield* effect.Ref.make(/* @__PURE__ */ new Map());
43043
43057
  const pollersRef = yield* effect.SynchronizedRef.make(/* @__PURE__ */ new Map());
43058
+ const makeStatusSingleFlight = () => effect.Effect.gen(function* () {
43059
+ const flightsRef = yield* effect.SynchronizedRef.make(/* @__PURE__ */ new Map());
43060
+ let requestedVersion = 0;
43061
+ const run = (cwd, kind, operation, retryVersion) => effect.Effect.uninterruptibleMask((restore) => effect.Effect.gen(function* () {
43062
+ const version = retryVersion ?? ++requestedVersion;
43063
+ const candidate = yield* effect.Deferred.make();
43064
+ const selection = yield* effect.SynchronizedRef.modify(flightsRef, (flights) => {
43065
+ const current = flights.get(cwd);
43066
+ if (current) {
43067
+ if (kind === "refresh" && (current.kind === "load" || current.version < version)) return [{
43068
+ _tag: "retryAfter",
43069
+ deferred: current.deferred
43070
+ }, flights];
43071
+ return [{
43072
+ _tag: "await",
43073
+ deferred: current.deferred
43074
+ }, flights];
43075
+ }
43076
+ const nextFlights = new Map(flights);
43077
+ nextFlights.set(cwd, {
43078
+ deferred: candidate,
43079
+ kind,
43080
+ version: requestedVersion
43081
+ });
43082
+ return [{
43083
+ _tag: "owner",
43084
+ deferred: candidate
43085
+ }, nextFlights];
43086
+ });
43087
+ if (selection._tag === "retryAfter") {
43088
+ yield* restore(effect.Deferred.await(selection.deferred)).pipe(effect.Effect.exit);
43089
+ return yield* restore(run(cwd, kind, operation, version));
43090
+ }
43091
+ if (selection._tag === "owner") yield* operation.pipe(effect.Effect.onExit((exit) => effect.SynchronizedRef.update(flightsRef, (flights) => {
43092
+ if (flights.get(cwd)?.deferred !== candidate) return flights;
43093
+ const nextFlights = new Map(flights);
43094
+ nextFlights.delete(cwd);
43095
+ return nextFlights;
43096
+ }).pipe(effect.Effect.andThen(effect.Deferred.done(candidate, exit)))), effect.Effect.ignore, effect.Effect.forkIn(broadcasterScope));
43097
+ return yield* restore(effect.Deferred.await(selection.deferred));
43098
+ }));
43099
+ return run;
43100
+ });
43101
+ const coalesceLocalStatus = yield* makeStatusSingleFlight();
43102
+ const coalesceRemoteStatus = yield* makeStatusSingleFlight();
43044
43103
  const getCachedStatus = effect.Effect.fn("VcsStatusBroadcaster.getCachedStatus")(function* (cwd) {
43045
43104
  return yield* effect.Ref.get(cacheRef).pipe(effect.Effect.map((cache) => cache.get(cwd) ?? null));
43046
43105
  });
43047
43106
  const updateCachedLocalStatus = effect.Effect.fn("VcsStatusBroadcaster.updateCachedLocalStatus")(function* (cwd, local, options) {
43048
43107
  const nextLocal = {
43108
+ cachedAtMs: yield* effect.Clock.currentTimeMillis,
43049
43109
  fingerprint: fingerprintStatusPart(local),
43050
43110
  value: local
43051
43111
  };
@@ -43076,7 +43136,9 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43076
43136
  return local;
43077
43137
  });
43078
43138
  const updateCachedRemoteStatus = effect.Effect.fn("VcsStatusBroadcaster.updateCachedRemoteStatus")(function* (cwd, remote, options) {
43139
+ const cachedAtMs = yield* effect.Clock.currentTimeMillis;
43079
43140
  const nextRemote = {
43141
+ cachedAtMs,
43080
43142
  fingerprint: fingerprintStatusPart(remote),
43081
43143
  value: remote
43082
43144
  };
@@ -43089,13 +43151,14 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43089
43151
  ...previous,
43090
43152
  remote: nextRemote
43091
43153
  };
43154
+ const currentLocal = next.local && isCachedValueFresh(next.local, cachedAtMs, LOCAL_STATUS_CACHE_TTL_MS) ? next.local.value : null;
43092
43155
  const nextCache = new Map(cache);
43093
43156
  nextCache.set(cwd, next);
43094
43157
  return [{
43095
- changed: previous.remote?.fingerprint !== nextRemote.fingerprint,
43096
- event: next.local ? {
43158
+ changed: previous.remote?.fingerprint !== nextRemote.fingerprint || !previous.remote || !isCachedValueFresh(previous.remote, cachedAtMs, REMOTE_STATUS_CACHE_TTL_MS),
43159
+ event: currentLocal ? {
43097
43160
  _tag: "snapshot",
43098
- local: next.local.value,
43161
+ local: currentLocal,
43099
43162
  remote
43100
43163
  } : {
43101
43164
  _tag: "remoteUpdated",
@@ -43110,21 +43173,27 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43110
43173
  return remote;
43111
43174
  });
43112
43175
  const loadLocalStatus = effect.Effect.fn("VcsStatusBroadcaster.loadLocalStatus")(function* (cwd) {
43113
- const local = yield* workflow.localStatus({ cwd });
43114
- return yield* updateCachedLocalStatus(cwd, local);
43176
+ return yield* coalesceLocalStatus(cwd, "load", effect.Effect.gen(function* () {
43177
+ const local = yield* workflow.localStatus({ cwd });
43178
+ return yield* updateCachedLocalStatus(cwd, local);
43179
+ }));
43115
43180
  });
43116
43181
  const loadRemoteStatus = effect.Effect.fn("VcsStatusBroadcaster.loadRemoteStatus")(function* (cwd) {
43117
- const remote = yield* workflow.remoteStatus({ cwd });
43118
- return yield* updateCachedRemoteStatus(cwd, remote);
43182
+ return yield* coalesceRemoteStatus(cwd, "load", effect.Effect.gen(function* () {
43183
+ const remote = yield* workflow.remoteStatus({ cwd });
43184
+ return yield* updateCachedRemoteStatus(cwd, remote);
43185
+ }));
43119
43186
  });
43120
43187
  const getOrLoadLocalStatus = effect.Effect.fn("VcsStatusBroadcaster.getOrLoadLocalStatus")(function* (cwd) {
43121
43188
  const cached = yield* getCachedStatus(cwd);
43122
- if (cached?.local) return cached.local.value;
43189
+ const nowMs = yield* effect.Clock.currentTimeMillis;
43190
+ if (cached?.local && isCachedValueFresh(cached.local, nowMs, LOCAL_STATUS_CACHE_TTL_MS)) return cached.local.value;
43123
43191
  return yield* loadLocalStatus(cwd);
43124
43192
  });
43125
43193
  const getOrLoadRemoteStatus = effect.Effect.fn("VcsStatusBroadcaster.getOrLoadRemoteStatus")(function* (cwd) {
43126
43194
  const cached = yield* getCachedStatus(cwd);
43127
- if (cached?.remote) return cached.remote.value;
43195
+ const nowMs = yield* effect.Clock.currentTimeMillis;
43196
+ if (cached?.remote && isCachedValueFresh(cached.remote, nowMs, REMOTE_STATUS_CACHE_TTL_MS)) return cached.remote.value;
43128
43197
  return yield* loadRemoteStatus(cwd);
43129
43198
  });
43130
43199
  const getStatus = effect.Effect.fn("VcsStatusBroadcaster.getStatus")(function* (input) {
@@ -43134,14 +43203,19 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43134
43203
  });
43135
43204
  const refreshLocalStatus = effect.Effect.fn("VcsStatusBroadcaster.refreshLocalStatus")(function* (rawCwd) {
43136
43205
  const cwd = normalizeCwd(rawCwd);
43137
- yield* workflow.invalidateLocalStatus(cwd);
43138
- const local = yield* workflow.localStatus({ cwd });
43139
- return yield* updateCachedLocalStatus(cwd, local, { publish: true });
43206
+ return yield* coalesceLocalStatus(cwd, "refresh", effect.Effect.gen(function* () {
43207
+ yield* workflow.invalidateLocalStatus(cwd);
43208
+ const local = yield* workflow.localStatus({ cwd });
43209
+ return yield* updateCachedLocalStatus(cwd, local, { publish: true });
43210
+ }));
43140
43211
  });
43141
- const refreshRemoteStatus = effect.Effect.fn("VcsStatusBroadcaster.refreshRemoteStatus")(function* (cwd) {
43142
- yield* workflow.invalidateRemoteStatus(cwd);
43143
- const remote = yield* workflow.remoteStatus({ cwd });
43144
- return yield* updateCachedRemoteStatus(cwd, remote, { publish: true });
43212
+ const refreshRemoteStatus = effect.Effect.fn("VcsStatusBroadcaster.refreshRemoteStatus")(function* (rawCwd) {
43213
+ const cwd = normalizeCwd(rawCwd);
43214
+ return yield* coalesceRemoteStatus(cwd, "refresh", effect.Effect.gen(function* () {
43215
+ yield* workflow.invalidateRemoteStatus(cwd);
43216
+ const remote = yield* workflow.remoteStatus({ cwd });
43217
+ return yield* updateCachedRemoteStatus(cwd, remote, { publish: true });
43218
+ }));
43145
43219
  });
43146
43220
  const refreshStatus = effect.Effect.fn("VcsStatusBroadcaster.refreshStatus")(function* (rawCwd) {
43147
43221
  const cwd = normalizeCwd(rawCwd);
@@ -43214,17 +43288,24 @@ const layer$5 = effect.Layer.effect(VcsStatusBroadcaster, effect.Effect.gen(func
43214
43288
  const cwd = normalizeCwd(input.cwd);
43215
43289
  const subscription = yield* effect.PubSub.subscribe(changesPubSub);
43216
43290
  const initialLocal = yield* getOrLoadLocalStatus(cwd);
43217
- const initialRemote = (yield* getCachedStatus(cwd))?.remote?.value ?? null;
43291
+ const cachedRemote = (yield* getCachedStatus(cwd))?.remote ?? null;
43292
+ const nowMs = yield* effect.Clock.currentTimeMillis;
43293
+ const initialRemote = cachedRemote && isCachedValueFresh(cachedRemote, nowMs, REMOTE_STATUS_CACHE_TTL_MS) ? cachedRemote.value : null;
43218
43294
  const automaticRemoteRefreshInterval = options?.automaticRemoteRefreshInterval ?? effect.Effect.succeed(effect.Duration.zero);
43219
43295
  const initialRemoteRefreshInterval = yield* automaticRemoteRefreshInterval;
43220
43296
  const retainedRemotePoller = !effect.Duration.isZero(initialRemoteRefreshInterval);
43221
- if (retainedRemotePoller) yield* retainRemotePoller(cwd, automaticRemoteRefreshInterval);
43222
- const release = retainedRemotePoller ? releaseRemotePoller(cwd).pipe(effect.Effect.ignore, effect.Effect.asVoid) : effect.Effect.void;
43297
+ if (retainedRemotePoller) {
43298
+ yield* effect.Effect.acquireRelease(retainRemotePoller(cwd, automaticRemoteRefreshInterval), () => releaseRemotePoller(cwd).pipe(effect.Effect.ignore, effect.Effect.asVoid));
43299
+ yield* options?.afterRemotePollerRetained ?? effect.Effect.void;
43300
+ }
43223
43301
  return effect.Stream.concat(effect.Stream.make({
43224
43302
  _tag: "snapshot",
43225
43303
  local: initialLocal,
43226
43304
  remote: initialRemote
43227
- }), effect.Stream.fromSubscription(subscription).pipe(effect.Stream.filter((event) => event.cwd === cwd), effect.Stream.map((event) => event.event))).pipe(effect.Stream.ensuring(release));
43305
+ }), effect.Stream.merge(retainedRemotePoller || initialRemote !== null ? effect.Stream.empty : effect.Stream.fromEffect(getOrLoadRemoteStatus(cwd)).pipe(effect.Stream.map((remote) => ({
43306
+ _tag: "remoteUpdated",
43307
+ remote
43308
+ })), effect.Stream.catchCause(() => effect.Stream.empty)), effect.Stream.fromSubscription(subscription).pipe(effect.Stream.filter((event) => event.cwd === cwd), effect.Stream.map((event) => event.event))));
43228
43309
  }));
43229
43310
  return VcsStatusBroadcaster.of({
43230
43311
  getStatus,
@@ -49190,7 +49271,7 @@ async function readResourceTelemetryHistory(input) {
49190
49271
  //#endregion
49191
49272
  //#region src/diagnostics/ProcessDiagnostics.ts
49192
49273
  const QUERY_TIMEOUT_MS = 3e3;
49193
- const MAX_OUTPUT_BYTES = 4194304;
49274
+ const MAX_OUTPUT_BYTES$1 = 4194304;
49194
49275
  const MAX_PROCESSES = 2e4;
49195
49276
  /** Parse fixed numeric columns; never capture command-line arguments. */
49196
49277
  function parseProcessTable(output) {
@@ -49271,7 +49352,7 @@ async function queryProcessTable(fresh = false) {
49271
49352
  (0, node_child_process.execFile)("/bin/ps", ["-axo", "pid=,ppid=,lstart=,pcpu=,rss=,stat=,etime=,comm="], {
49272
49353
  encoding: "utf8",
49273
49354
  timeout: QUERY_TIMEOUT_MS,
49274
- maxBuffer: MAX_OUTPUT_BYTES,
49355
+ maxBuffer: MAX_OUTPUT_BYTES$1,
49275
49356
  env: {
49276
49357
  ...process.env,
49277
49358
  LC_ALL: "C"
@@ -73529,6 +73610,8 @@ var RelayConnectionSession = class {
73529
73610
  #frameDeliveryActive = false;
73530
73611
  #settled = false;
73531
73612
  #closed = false;
73613
+ #authenticationStarted = false;
73614
+ #rejectAuthentication;
73532
73615
  #listeners;
73533
73616
  constructor(options) {
73534
73617
  this.#identity = options.identity;
@@ -73544,8 +73627,21 @@ var RelayConnectionSession = class {
73544
73627
  get ready() {
73545
73628
  return this.#ready;
73546
73629
  }
73547
- async authenticate() {
73548
- if (this.#socket !== void 0) throw new RelayConnectionError("internal_error");
73630
+ authenticate() {
73631
+ if (this.#authenticationStarted || this.#closed) return Promise.reject(new RelayConnectionError("internal_error"));
73632
+ this.#authenticationStarted = true;
73633
+ return new Promise((resolve, reject) => {
73634
+ this.#rejectAuthentication = reject;
73635
+ this.#authenticate().then((ready) => {
73636
+ this.#rejectAuthentication = void 0;
73637
+ resolve(ready);
73638
+ }, (error) => {
73639
+ this.#rejectAuthentication = void 0;
73640
+ reject(error);
73641
+ });
73642
+ });
73643
+ }
73644
+ async #authenticate() {
73549
73645
  let auth;
73550
73646
  try {
73551
73647
  auth = await this.#identity.createRelayAuthenticationFrame(this.#hubOrigin, {
@@ -73594,6 +73690,7 @@ var RelayConnectionSession = class {
73594
73690
  };
73595
73691
  const onOpen = () => {
73596
73692
  if (this.#closed) return;
73693
+ if (this.#timer !== void 0) this.#scheduler.clearTimeout(this.#timer);
73597
73694
  try {
73598
73695
  socket.send(authBytes);
73599
73696
  } catch {
@@ -73667,6 +73764,7 @@ var RelayConnectionSession = class {
73667
73764
  socket.addEventListener("message", onMessage);
73668
73765
  socket.addEventListener("error", onError);
73669
73766
  socket.addEventListener("close", onClose);
73767
+ this.#timer = this.#scheduler.setTimeout(() => fail(new RelayConnectionError("network")), require_collectUint8StreamText.RELAY_AUTHENTICATION_DEADLINE_MS);
73670
73768
  });
73671
73769
  }
73672
73770
  /**
@@ -73698,6 +73796,11 @@ var RelayConnectionSession = class {
73698
73796
  close() {
73699
73797
  if (this.#closed) return;
73700
73798
  this.#closed = true;
73799
+ if (!this.#settled) {
73800
+ this.#settled = true;
73801
+ this.#rejectAuthentication?.(new RelayConnectionError("network"));
73802
+ }
73803
+ this.#rejectAuthentication = void 0;
73701
73804
  for (const frame of this.#pendingPostReadyFrames) clearRelayFrameBytes(frame);
73702
73805
  this.#pendingPostReadyFrames = [];
73703
73806
  this.#clearPendingAuthentication();
@@ -89656,83 +89759,173 @@ const ProviderRegistryLive = effect.Layer.effect(ProviderRegistry, effect.Effect
89656
89759
  };
89657
89760
  }));
89658
89761
  //#endregion
89659
- //#region src/project/Layers/ProjectFaviconResolver.ts
89660
- const FAVICON_CANDIDATES = [
89661
- "favicon.svg",
89662
- "favicon.ico",
89663
- "favicon.png",
89664
- "public/favicon.svg",
89665
- "public/favicon.ico",
89666
- "public/favicon.png",
89667
- "app/favicon.ico",
89668
- "app/favicon.png",
89669
- "app/icon.svg",
89670
- "app/icon.png",
89671
- "app/icon.ico",
89672
- "src/favicon.ico",
89673
- "src/favicon.svg",
89674
- "src/app/favicon.ico",
89675
- "src/app/icon.svg",
89676
- "src/app/icon.png",
89677
- "assets/icon.svg",
89678
- "assets/icon.png",
89679
- "assets/logo.svg",
89680
- "assets/logo.png",
89681
- ".idea/icon.svg"
89682
- ];
89683
- const ICON_SOURCE_FILES = [
89684
- "index.html",
89685
- "public/index.html",
89686
- "app/routes/__root.tsx",
89687
- "src/routes/__root.tsx",
89688
- "app/root.tsx",
89689
- "src/root.tsx",
89690
- "src/index.html"
89691
- ];
89692
- const LINK_ICON_HTML_RE = /<link\b(?=[^>]*\brel=["'](?:icon|shortcut icon)["'])(?=[^>]*\bhref=["']([^"'?]+))[^>]*>/i;
89693
- const LINK_ICON_OBJ_RE = /(?=[^}]*\brel\s*:\s*["'](?:icon|shortcut icon)["'])(?=[^}]*\bhref\s*:\s*["']([^"'?]+))[^}]*/i;
89694
- function extractIconHref(source) {
89695
- const htmlMatch = source.match(LINK_ICON_HTML_RE);
89696
- if (htmlMatch?.[1]) return htmlMatch[1];
89697
- const objMatch = source.match(LINK_ICON_OBJ_RE);
89698
- if (objMatch?.[1]) return objMatch[1];
89699
- return null;
89700
- }
89701
- const makeProjectFaviconResolver = effect.Effect.gen(function* () {
89702
- const fileSystem = yield* effect.FileSystem.FileSystem;
89703
- const path = yield* effect.Path.Path;
89704
- const resolveIconHref = (projectCwd, href) => {
89705
- const clean = href.replace(/^\//, "");
89706
- return [path.join(projectCwd, "public", clean), path.join(projectCwd, clean)];
89707
- };
89708
- const isPathWithinProject = (projectCwd, candidatePath) => {
89709
- const relative = path.relative(path.resolve(projectCwd), path.resolve(candidatePath));
89710
- return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
89711
- };
89712
- const findExistingFile = effect.Effect.fn("ProjectFaviconResolver.findExistingFile")(function* (projectCwd, candidates) {
89762
+ //#region src/project/projectFaviconWorker.ts
89763
+ /**
89764
+ * Serialized into a short-lived Node/Bun child. Keep this function self-contained:
89765
+ * opening a cloud-backed file can block in the kernel even after an async read
89766
+ * is cancelled. A separate process keeps optional icons out of the node's shared
89767
+ * filesystem/DNS worker pool, and lets the parent terminate a stalled read.
89768
+ */
89769
+ function projectFaviconWorkerMain() {
89770
+ const fs = process.getBuiltinModule("node:fs");
89771
+ const path = process.getBuiltinModule("node:path");
89772
+ const iconLimit = 524288;
89773
+ const sourceLimit = 262144;
89774
+ const candidates = [
89775
+ "favicon.svg",
89776
+ "favicon.ico",
89777
+ "favicon.png",
89778
+ "public/favicon.svg",
89779
+ "public/favicon.ico",
89780
+ "public/favicon.png",
89781
+ "app/favicon.ico",
89782
+ "app/favicon.png",
89783
+ "app/icon.svg",
89784
+ "app/icon.png",
89785
+ "app/icon.ico",
89786
+ "src/favicon.ico",
89787
+ "src/favicon.svg",
89788
+ "src/app/favicon.ico",
89789
+ "src/app/icon.svg",
89790
+ "src/app/icon.png",
89791
+ "assets/icon.svg",
89792
+ "assets/icon.png",
89793
+ "assets/logo.svg",
89794
+ "assets/logo.png",
89795
+ ".idea/icon.svg"
89796
+ ];
89797
+ const sources = [
89798
+ "index.html",
89799
+ "public/index.html",
89800
+ "app/routes/__root.tsx",
89801
+ "src/routes/__root.tsx",
89802
+ "app/root.tsx",
89803
+ "src/root.tsx",
89804
+ "src/index.html"
89805
+ ];
89806
+ try {
89807
+ const root = fs.realpathSync(process.argv[1]);
89808
+ const read = (relative, limit) => {
89809
+ let fd;
89810
+ try {
89811
+ const filename = fs.realpathSync(path.resolve(root, relative));
89812
+ const within = path.relative(root, filename);
89813
+ if (within === ".." || within.startsWith(`..${path.sep}`) || path.isAbsolute(within)) return null;
89814
+ fd = fs.openSync(filename, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
89815
+ const stats = fs.fstatSync(fd);
89816
+ if (!stats.isFile() || stats.size > limit) return null;
89817
+ const bytes = Buffer.alloc(limit + 1);
89818
+ let length = 0;
89819
+ while (length < bytes.length) {
89820
+ const count = fs.readSync(fd, bytes, length, bytes.length - length, null);
89821
+ if (count === 0) break;
89822
+ length += count;
89823
+ }
89824
+ return length > limit ? null : {
89825
+ path: filename,
89826
+ bytes: bytes.subarray(0, length)
89827
+ };
89828
+ } catch {
89829
+ return null;
89830
+ } finally {
89831
+ if (fd !== void 0) fs.closeSync(fd);
89832
+ }
89833
+ };
89834
+ const send = (icon) => {
89835
+ process.stdout.write(JSON.stringify({
89836
+ path: icon.path,
89837
+ base64: icon.bytes.toString("base64")
89838
+ }));
89839
+ };
89713
89840
  for (const candidate of candidates) {
89714
- if (!isPathWithinProject(projectCwd, candidate)) continue;
89715
- if ((yield* fileSystem.stat(candidate).pipe(effect.Effect.catch(() => effect.Effect.succeed(null))))?.type === "File") return candidate;
89841
+ const icon = read(candidate, iconLimit);
89842
+ if (icon) {
89843
+ send(icon);
89844
+ return;
89845
+ }
89716
89846
  }
89717
- return null;
89718
- });
89719
- return { resolvePath: effect.Effect.fn("ProjectFaviconResolver.resolvePath")(function* (cwd) {
89720
- for (const candidate of FAVICON_CANDIDATES) {
89721
- const resolved = path.join(cwd, candidate);
89722
- const existing = yield* findExistingFile(cwd, [resolved]);
89723
- if (existing) return existing;
89724
- }
89725
- for (const sourceFile of ICON_SOURCE_FILES) {
89726
- const sourcePath = path.join(cwd, sourceFile);
89727
- const source = yield* fileSystem.readFileString(sourcePath).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
89728
- if (!source) continue;
89729
- const href = extractIconHref(source);
89847
+ for (const source of sources) {
89848
+ const text = read(source, sourceLimit)?.bytes.toString("utf8");
89849
+ if (!text) continue;
89850
+ const href = text.match(/<link\b(?=[^>]*\brel=["'](?:icon|shortcut icon)["'])(?=[^>]*\bhref=["']([^"'?]+))[^>]*>/i)?.[1] ?? text.match(/(?=[^}]*\brel\s*:\s*["'](?:icon|shortcut icon)["'])(?=[^}]*\bhref\s*:\s*["']([^"'?]+))[^}]*/i)?.[1];
89730
89851
  if (!href) continue;
89731
- const existing = yield* findExistingFile(cwd, resolveIconHref(cwd, href));
89732
- if (existing) return existing;
89852
+ const clean = href.replace(/^\//, "");
89853
+ for (const candidate of [path.join("public", clean), clean]) {
89854
+ const icon = read(candidate, iconLimit);
89855
+ if (icon) {
89856
+ send(icon);
89857
+ return;
89858
+ }
89859
+ }
89733
89860
  }
89734
- return null;
89735
- }) };
89861
+ } catch {}
89862
+ process.stdout.write("null");
89863
+ }
89864
+ const MAX_OUTPUT_BYTES = 786432;
89865
+ const WORKER_SCRIPT = `(${projectFaviconWorkerMain.toString()})()`;
89866
+ function readProjectFavicon(cwd, options = {}) {
89867
+ return new Promise((resolve) => {
89868
+ if (options.signal?.aborted) {
89869
+ resolve(null);
89870
+ return;
89871
+ }
89872
+ let child;
89873
+ const abort = () => {
89874
+ child?.kill("SIGKILL");
89875
+ };
89876
+ const cleanup = () => options.signal?.removeEventListener("abort", abort);
89877
+ options.signal?.addEventListener("abort", abort, { once: true });
89878
+ try {
89879
+ child = (options.execFile ?? node_child_process.execFile)(process.execPath, [
89880
+ "--eval",
89881
+ WORKER_SCRIPT,
89882
+ "--",
89883
+ cwd
89884
+ ], {
89885
+ env: {
89886
+ ...process.env,
89887
+ ELECTRON_RUN_AS_NODE: "1",
89888
+ NODE_OPTIONS: void 0,
89889
+ NODE_PATH: void 0
89890
+ },
89891
+ encoding: "utf8",
89892
+ timeout: options.timeoutMs ?? 1500,
89893
+ killSignal: "SIGKILL",
89894
+ maxBuffer: MAX_OUTPUT_BYTES,
89895
+ windowsHide: true
89896
+ }, (error, stdout) => {
89897
+ cleanup();
89898
+ if (error) {
89899
+ resolve(null);
89900
+ return;
89901
+ }
89902
+ try {
89903
+ const result = JSON.parse(stdout);
89904
+ if (typeof result !== "object" || result === null || !("path" in result) || !("base64" in result) || typeof result.path !== "string" || typeof result.base64 !== "string") {
89905
+ resolve(null);
89906
+ return;
89907
+ }
89908
+ const bytes = Buffer.from(result.base64, "base64");
89909
+ resolve(bytes.length <= 524288 ? {
89910
+ path: result.path,
89911
+ bytes
89912
+ } : null);
89913
+ } catch {
89914
+ resolve(null);
89915
+ }
89916
+ });
89917
+ if (options.signal?.aborted) abort();
89918
+ } catch {
89919
+ cleanup();
89920
+ resolve(null);
89921
+ }
89922
+ });
89923
+ }
89924
+ //#endregion
89925
+ //#region src/project/Layers/ProjectFaviconResolver.ts
89926
+ const makeProjectFaviconResolver = effect.Effect.gen(function* () {
89927
+ const workers = yield* effect_Semaphore.make(2);
89928
+ return { readIcon: (cwd) => workers.withPermit(effect.Effect.promise((signal) => readProjectFavicon(cwd, { signal }))).pipe(effect.Effect.timeout("5 seconds"), effect.Effect.catch(() => effect.Effect.succeed(null))) };
89736
89929
  });
89737
89930
  const ProjectFaviconResolverLive = effect.Layer.effect(ProjectFaviconResolver, makeProjectFaviconResolver);
89738
89931
  //#endregion
@@ -91978,6 +92171,23 @@ const makeTraceSink = effect.Effect.fn("makeTraceSink")(function* (options) {
91978
92171
  };
91979
92172
  });
91980
92173
  //#endregion
92174
+ //#region src/observability/HttpHeaderRedaction.ts
92175
+ /** Capture policy before HTTP tracing defers span completion outside its request context. */
92176
+ function makeHttpHeaderRedactor(names) {
92177
+ const redactedNames = [
92178
+ ...names,
92179
+ require_collectUint8StreamText.LOCAL_INTRODUCTION_CONTROL_HEADER,
92180
+ "dpop",
92181
+ "dpop-nonce"
92182
+ ];
92183
+ return (key, value) => {
92184
+ const match = /^http\.(?:request|response)\.header\.(.+)$/iu.exec(key);
92185
+ if (!match) return value;
92186
+ const name = match[1].toLowerCase();
92187
+ return String(effect_unstable_http.Headers.redact(effect_unstable_http.Headers.fromInput({ [name]: String(value) }), redactedNames)[name]);
92188
+ };
92189
+ }
92190
+ //#endregion
91981
92191
  //#region src/observability/LocalFileTracer.ts
91982
92192
  var LocalFileSpan = class {
91983
92193
  _tag = "Span";
@@ -91994,9 +92204,11 @@ var LocalFileSpan = class {
91994
92204
  events;
91995
92205
  delegate;
91996
92206
  push;
91997
- constructor(options, delegate, push) {
92207
+ redactAttribute;
92208
+ constructor(options, delegate, push, redactAttribute) {
91998
92209
  this.delegate = delegate;
91999
92210
  this.push = push;
92211
+ this.redactAttribute = redactAttribute;
92000
92212
  this.name = delegate.name;
92001
92213
  this.spanId = delegate.spanId;
92002
92214
  this.traceId = delegate.traceId;
@@ -92023,8 +92235,9 @@ var LocalFileSpan = class {
92023
92235
  if (this.sampled) this.push(spanToTraceRecord(this));
92024
92236
  }
92025
92237
  attribute(key, value) {
92026
- this.attributes.set(key, value);
92027
- this.delegate.attribute(key, value);
92238
+ const redacted = this.redactAttribute(key, value);
92239
+ this.attributes.set(key, redacted);
92240
+ this.delegate.attribute(key, redacted);
92028
92241
  }
92029
92242
  event(name, startTime, attributes) {
92030
92243
  const nextAttributes = attributes ?? {};
@@ -92041,6 +92254,7 @@ var LocalFileSpan = class {
92041
92254
  }
92042
92255
  };
92043
92256
  const makeLocalFileTracer = effect.Effect.fn("makeLocalFileTracer")(function* (options) {
92257
+ const redactAttribute = makeHttpHeaderRedactor(yield* effect.Effect.service(effect_unstable_http.Headers.CurrentRedactedNames));
92044
92258
  const sink = options.sink ?? (yield* makeTraceSink({
92045
92259
  filePath: options.filePath,
92046
92260
  maxBytes: options.maxBytes,
@@ -92050,7 +92264,7 @@ const makeLocalFileTracer = effect.Effect.fn("makeLocalFileTracer")(function* (o
92050
92264
  const delegate = options.delegate ?? effect.Tracer.make({ span: (spanOptions) => new effect.Tracer.NativeSpan(spanOptions) });
92051
92265
  return effect.Tracer.make({
92052
92266
  span(spanOptions) {
92053
- return new LocalFileSpan(spanOptions, delegate.span(spanOptions), sink.push);
92267
+ return new LocalFileSpan(spanOptions, delegate.span(spanOptions), sink.push, redactAttribute);
92054
92268
  },
92055
92269
  ...delegate.context ? { context: delegate.context } : {}
92056
92270
  });