ryco-cli 0.1.24 → 0.1.25

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 (200) hide show
  1. package/dist/{AcpNativeLogging-COepku4a.cjs → AcpNativeLogging-CA6XYzIS.cjs} +1 -1
  2. package/dist/{AcpNativeLogging-D7e1dn7s.mjs → AcpNativeLogging-D4-VoHrq.mjs} +1 -1
  3. package/dist/{AzureDevOpsSourceControlProvider-BNGEg1R8.mjs → AzureDevOpsSourceControlProvider-B_E0XXfD.mjs} +2 -2
  4. package/dist/{AzureDevOpsSourceControlProvider-CrvgKNf2.cjs → AzureDevOpsSourceControlProvider-COmd21c-.cjs} +2 -2
  5. package/dist/{BitbucketSourceControlProvider-BzhsQwH-.cjs → BitbucketSourceControlProvider-CD8IvXQK.cjs} +2 -2
  6. package/dist/{BitbucketSourceControlProvider-Bt21jw68.mjs → BitbucketSourceControlProvider-pUKsNXcg.mjs} +2 -2
  7. package/dist/{ClaudeDriver-C4yu7Jit.mjs → ClaudeDriver-CGifBixr.mjs} +2 -2
  8. package/dist/{ClaudeDriver-B7mbf51W.cjs → ClaudeDriver-Dry5uJfX.cjs} +2 -2
  9. package/dist/{CodexDriver-CR0S17Lb.cjs → CodexDriver-BzR8gA8w.cjs} +3 -3
  10. package/dist/{CodexDriver-DnnqkGoY.mjs → CodexDriver-V4CL9APE.mjs} +3 -3
  11. package/dist/{CodexTextGeneration-tlfe1S5W.cjs → CodexTextGeneration-DTrSzY-I.cjs} +1 -1
  12. package/dist/{CodexTextGeneration-Cw-FZbSS.mjs → CodexTextGeneration-DoCidwvI.mjs} +1 -1
  13. package/dist/{CopilotDriver-GxKLX5pL.mjs → CopilotDriver-Dt13X60f.mjs} +3 -3
  14. package/dist/{CopilotDriver-IBd27Ji2.cjs → CopilotDriver-rLcA8PSN.cjs} +3 -3
  15. package/dist/{CursorDriver-C4Enoe9N.cjs → CursorDriver-C3s-8s9F.cjs} +3 -3
  16. package/dist/{CursorDriver-CNo9Uzo8.mjs → CursorDriver-HIPUs7cz.mjs} +3 -3
  17. package/dist/{ForgejoSourceControlProvider-BGXysSX6.mjs → ForgejoSourceControlProvider-CmvOAzEG.mjs} +2 -2
  18. package/dist/{ForgejoSourceControlProvider-Dh6DOoc8.cjs → ForgejoSourceControlProvider-JgiyrMqp.cjs} +2 -2
  19. package/dist/{GitHubSourceControlProvider-CPCYV8Xo.mjs → GitHubSourceControlProvider-BYuvbcBf.mjs} +2 -2
  20. package/dist/{GitHubSourceControlProvider-8hsv_kCE.cjs → GitHubSourceControlProvider-CItCpOcC.cjs} +2 -2
  21. package/dist/{GitLabSourceControlProvider-B0ZbF9Zx.cjs → GitLabSourceControlProvider-CMce22nU.cjs} +2 -2
  22. package/dist/{GitLabSourceControlProvider-Bvknpaon.mjs → GitLabSourceControlProvider-DZzEaVSi.mjs} +2 -2
  23. package/dist/{GrokDriver-DSPEmiwq.mjs → GrokDriver-CduUwiOH.mjs} +3 -3
  24. package/dist/{GrokDriver-RyyFeh_q.cjs → GrokDriver-D0jraOC_.cjs} +3 -3
  25. package/dist/{OpenCodeDriver-0q44rSQX.mjs → OpenCodeDriver-Bz_uJdMA.mjs} +2 -2
  26. package/dist/{OpenCodeDriver-CDcvPT9v.cjs → OpenCodeDriver-DxGpgtDS.cjs} +2 -2
  27. package/dist/{SourceControlProviderDiscoveryCatalog-DreaAH1H.cjs → SourceControlProviderDiscoveryCatalog-Dm_lhrhv.cjs} +1 -1
  28. package/dist/{SourceControlProviderDiscoveryCatalog-B37RHe2u.mjs → SourceControlProviderDiscoveryCatalog-ZtwPWoxE.mjs} +1 -1
  29. package/dist/bin.cjs +291 -176
  30. package/dist/bin.mjs +291 -176
  31. package/dist/client/assets/AccountSettings-Bv57-JYy.js +1 -0
  32. package/dist/client/assets/{AiFocusSettings-CNmGHEcA.js → AiFocusSettings-DCPHmJpA.js} +1 -1
  33. package/dist/client/assets/{AnimatedHeight-i0YhvlGD.js → AnimatedHeight-DPqb09B0.js} +1 -1
  34. package/dist/client/assets/{AppearanceSettings-BG8W4DP0.js → AppearanceSettings-EmTrtb_U.js} +1 -1
  35. package/dist/client/assets/{BranchToolbar.logic-AgPy06Mx.js → BranchToolbar.logic-CHRK3hDt.js} +1 -1
  36. package/dist/client/assets/{BrowserPanel-BWztlNuL.js → BrowserPanel-2Xu08il5.js} +1 -1
  37. package/dist/client/assets/ChatRightPanel-C1VD6GCV.js +194 -0
  38. package/dist/client/assets/{ChatThreadRouteView-CWoBLzR_.js → ChatThreadRouteView-CNww3i2J.js} +1 -1
  39. package/dist/client/assets/CommandPaletteDialog-B_f3fKp7.js +1 -0
  40. package/dist/client/assets/{CompositeRoot-C1G-Ejus.js → CompositeRoot-B40iitmH.js} +1 -1
  41. package/dist/client/assets/ComputerUseSettings-BJs7jqR0.js +1 -0
  42. package/dist/client/assets/ConnectionsSettings-B9nfvgLG.js +7 -0
  43. package/dist/client/assets/ContextHandoffEndpointLabel-BSQOArMR.js +4 -0
  44. package/dist/client/assets/{DiagnosticsSettings-DvnNz2AZ.js → DiagnosticsSettings-BmrqOKMe.js} +1 -1
  45. package/dist/client/assets/{DialogHandle-8o3kfoiI.js → DialogHandle-pelzaaiH.js} +1 -1
  46. package/dist/client/assets/{DialogPopup-CLw6NCkW.js → DialogPopup-BLM0vN4N.js} +1 -1
  47. package/dist/client/assets/DialogRoot-CY6ZzEUS.js +1 -0
  48. package/dist/client/assets/{DialogTitle-DCHX74Tz.js → DialogTitle-BvIjMtMm.js} +1 -1
  49. package/dist/client/assets/{DialogTrigger-Bl_fcIV2.js → DialogTrigger-CIeVAA-a.js} +1 -1
  50. package/dist/client/assets/{DialogViewport-DVDl03yd.js → DialogViewport-Cz0OadGI.js} +1 -1
  51. package/dist/client/assets/{DraftChatThreadRouteView-CEDYjbKq.js → DraftChatThreadRouteView-DMIGMESb.js} +1 -1
  52. package/dist/client/assets/{ExternalIdentityWeb.logic-arHvT6AX.js → ExternalIdentityWeb.logic-3rlDV7lT.js} +1 -1
  53. package/dist/client/assets/{GlassSurface-GY6owikG.js → GlassSurface-CEVIdyfP.js} +1 -1
  54. package/dist/client/assets/{HostedConnectionControls-COUhSe9x.js → HostedConnectionControls-r9cyZPyF.js} +1 -1
  55. package/dist/client/assets/HostedHubRoot-BkfafJ5x.js +2 -0
  56. package/dist/client/assets/{HostedNativeAuthorizationRoute-DZhYxv--.js → HostedNativeAuthorizationRoute-CqHuW853.js} +2 -2
  57. package/dist/client/assets/HostedNodeRenameDialog-C7m-nvTj.js +1 -0
  58. package/dist/client/assets/{HostedRelayTrustNotice-Bl6On0Yi.js → HostedRelayTrustNotice-DNZQyAX0.js} +1 -1
  59. package/dist/client/assets/IntegrationsSettingsPanel-hul3ysgL.js +2 -0
  60. package/dist/client/assets/{KeybindingsSettings-CPtXx-W2.js → KeybindingsSettings-Cme6omBM.js} +1 -1
  61. package/dist/client/assets/{LazyBrowserPanel-SUIBB7B4.js → LazyBrowserPanel-COJFwNK7.js} +2 -2
  62. package/dist/client/assets/{McpServersSettings-BWIUud0Z.js → McpServersSettings-CPeNF8_u.js} +4 -4
  63. package/dist/client/assets/{MobileSheet-NTayGHF6.js → MobileSheet-BZo-RAfm.js} +1 -1
  64. package/dist/client/assets/{NodeSecuritySettings-BFifrshE.js → NodeSecuritySettings-CwT5nEW9.js} +1 -1
  65. package/dist/client/assets/{OpinionatedPluginsSettings-D7WuuNWZ.js → OpinionatedPluginsSettings-D8A1CbMG.js} +1 -1
  66. package/dist/client/assets/{PhoneGetAppInterstitial-R0cqI17q.js → PhoneGetAppInterstitial-BBnGXVkR.js} +1 -1
  67. package/dist/client/assets/PhoneHome-BTKOPVjw.js +1 -0
  68. package/dist/client/assets/PhoneSettingsSurface-DdVCndyt.js +2 -0
  69. package/dist/client/assets/{ProviderModelPicker-dwWhl7Uf.js → ProviderModelPicker-DoYEUZrn.js} +1 -1
  70. package/dist/client/assets/ProvidersSettingsPanel-ldDCPVIY.js +1 -0
  71. package/dist/client/assets/{QuitShortcutFeedback-CklL3jMd.js → QuitShortcutFeedback-mF7X0WMD.js} +1 -1
  72. package/dist/client/assets/{RedactedSensitiveText-CLPBtvH1.js → RedactedSensitiveText-DovqFcmM.js} +1 -1
  73. package/dist/client/assets/RootAppShell-CzmEWO9w.js +7 -0
  74. package/dist/client/assets/{Separator-CpYBhf-I.js → Separator-BhAVTIOc.js} +1 -1
  75. package/dist/client/assets/SettingsDialog-ByXgBN0U.js +2 -0
  76. package/dist/client/assets/SettingsPanels-Bgf4vkrJ.js +3 -0
  77. package/dist/client/assets/{SettingsPanels.editor-9pSZP875.js → SettingsPanels.editor-d-rVlbeN.js} +1 -1
  78. package/dist/client/assets/SourceControlSettings-dKw0FaN1.js +1 -0
  79. package/dist/client/assets/{StatisticsPage-C7v-6CTr.js → StatisticsPage-C2RuqDIK.js} +1 -1
  80. package/dist/client/assets/{StatisticsPanel-CeIjiBm8.js → StatisticsPanel-DqoXnrhQ.js} +1 -1
  81. package/dist/client/assets/{StatisticsSettingsLink-5s_violW.js → StatisticsSettingsLink-C_f31sb4.js} +1 -1
  82. package/dist/client/assets/{ThreadTerminalDrawer-CHZ60lPI.js → ThreadTerminalDrawer-DaLrSTn9.js} +11 -11
  83. package/dist/client/assets/{ThreadWorkspacePanel-Ct5kMcuY.js → ThreadWorkspacePanel-BvRZIxZQ.js} +17 -17
  84. package/dist/client/assets/{activity-BMBx2Fu0.js → activity-bn_fBQGf.js} +1 -1
  85. package/dist/client/assets/{alert-CXnC_RJc.js → alert-BmLJh6DH.js} +1 -1
  86. package/dist/client/assets/{appChrome-BzM66lXM.js → appChrome-Dy57Ve9N.js} +1 -1
  87. package/dist/client/assets/{arrow-left-CymyVbCi.js → arrow-left-pzj1cbX3.js} +1 -1
  88. package/dist/client/assets/{arrow-right-9wyq4YVq.js → arrow-right-BW5jU-vo.js} +1 -1
  89. package/dist/client/assets/{arrow-up-right-mfU38K6p.js → arrow-up-right-AfC5AaSO.js} +1 -1
  90. package/dist/client/assets/authorization-7xVVtCBu.js +1 -0
  91. package/dist/client/assets/{badge-Dg7mXiOh.js → badge-DnBuGHGL.js} +1 -1
  92. package/dist/client/assets/{bot-BR3RyOWP.js → bot-CsKkSRlb.js} +1 -1
  93. package/dist/client/assets/{capabilities-C8sxDbKT.js → capabilities-DskyVNd2.js} +1 -1
  94. package/dist/client/assets/{chart-column-CcRi3pAd.js → chart-column-DhvWXIiH.js} +1 -1
  95. package/dist/client/assets/chevron-right-CITtTwME.js +1 -0
  96. package/dist/client/assets/{clipboard-copy-ezz8rnaT.js → clipboard-copy-fJnfdl4H.js} +1 -1
  97. package/dist/client/assets/{data-list-ZLhzdlED.js → data-list-_E-Al1sf.js} +1 -1
  98. package/dist/client/assets/{desktopWorkspace-P28r2lN2.js → desktopWorkspace-DycXKuMm.js} +1 -1
  99. package/dist/client/assets/{download-BA9L9tK9.js → download-CLQzE1di.js} +1 -1
  100. package/dist/client/assets/{editorPreferences-DeKdSV3s.js → editorPreferences-Bg624RVT.js} +1 -1
  101. package/dist/client/assets/{empty-3NpXLnAM.js → empty-YXFtCUDN.js} +1 -1
  102. package/dist/client/assets/{group-D5qBdsaB.js → group-DOCkUmuY.js} +1 -1
  103. package/dist/client/assets/{hostedConnectionCoordinator-CLV-JD1S.js → hostedConnectionCoordinator-JZ1dLx4v.js} +1 -1
  104. package/dist/client/assets/{hubRoutes-EWJ3Gdod.js → hubRoutes-C2S5of9_.js} +1 -1
  105. package/dist/client/assets/{index-DxCd1PgA.js → index-CvRFRkBK.js} +2 -2
  106. package/dist/client/assets/{input-DrOL1KPS.js → input-C2xv8mMt.js} +1 -1
  107. package/dist/client/assets/{kbd-rWDjJnWX.js → kbd-4-4mGdIa.js} +1 -1
  108. package/dist/client/assets/{key-round-D2DtQ7aS.js → key-round-CYcb9lAa.js} +1 -1
  109. package/dist/client/assets/{layers-DtSJWmwy.js → layers-CGlOWYxu.js} +1 -1
  110. package/dist/client/assets/{log-out-YAp9fsOg.js → log-out-CZW2EpNJ.js} +1 -1
  111. package/dist/client/assets/{logging-BuUPX1SP.js → logging-BpmZOfmu.js} +1 -1
  112. package/dist/client/assets/main-CC-U8LrA.css +2 -0
  113. package/dist/client/assets/main-CzDOnLFw.js +9 -0
  114. package/dist/client/assets/{palette-D18VboLH.js → palette-CQOuNfSO.js} +1 -1
  115. package/dist/client/assets/{play-d3KUi4G6.js → play-CPVy9wwV.js} +1 -1
  116. package/dist/client/assets/primary-CjhRI8fe.js +2 -0
  117. package/dist/client/assets/providerDriverMeta-BVHpFupf.js +1 -0
  118. package/dist/client/assets/providerModels-BsybzP4P.js +1 -0
  119. package/dist/client/assets/{qr-code-Bk1kdf_k.js → qr-code-BPqDlVMn.js} +1 -1
  120. package/dist/client/assets/{qr-code-MAZkoKtL.js → qr-code-C6BVTc4V.js} +1 -1
  121. package/dist/client/assets/{radio-group-D-VCGinX.js → radio-group-C8qudOQH.js} +2 -2
  122. package/dist/client/assets/{refresh-cw-DY3_Ph-S.js → refresh-cw-B5Cz1z3e.js} +1 -1
  123. package/dist/client/assets/runtime-Bxg7k81u.js +17 -0
  124. package/dist/client/assets/{save-ugJXuJRM.js → save-C7zM6ey6.js} +1 -1
  125. package/dist/client/assets/{scroll-area-BMnGzd2a.js → scroll-area-5OU_pvTW.js} +1 -1
  126. package/dist/client/assets/{scrollEdges-QLSFwGSQ.js → scrollEdges-qnEXfIOg.js} +1 -1
  127. package/dist/client/assets/{separator-BwUYkCkX.js → separator-B5HfRiaO.js} +1 -1
  128. package/dist/client/assets/{settingsLayout-C6SUmJVB.js → settingsLayout-CfKq88KD.js} +1 -1
  129. package/dist/client/assets/{sheet-DLy4aeVa.js → sheet-B9gQDy_I.js} +1 -1
  130. package/dist/client/assets/{shield-alert-DfUhTI4-.js → shield-alert-7yBlEyOs.js} +1 -1
  131. package/dist/client/assets/{shield-check-CO4SMhAs.js → shield-check-CnKgVJ0F.js} +1 -1
  132. package/dist/client/assets/{shield-Zq_ygsnJ.js → shield-rdjnBE2Q.js} +1 -1
  133. package/dist/client/assets/{sidebar-DNnW-a2V.js → sidebar-BdvL1Pbj.js} +1 -1
  134. package/dist/client/assets/sidebarProjectFolders-BH8XBqNe.js +4 -0
  135. package/dist/client/assets/{sidebarStatusText-CawrXnx0.js → sidebarStatusText-CZKsUFBD.js} +1 -1
  136. package/dist/client/assets/{skeleton-DRm4_OvB.js → skeleton-CoyLqyaB.js} +1 -1
  137. package/dist/client/assets/{smartphone-O2VACDhU.js → smartphone-CBgpMHXR.js} +1 -1
  138. package/dist/client/assets/{sparkles-isHutYWU.js → sparkles-w-UZXQx1.js} +1 -1
  139. package/dist/client/assets/src-Bi-5Nw9C.js +14 -0
  140. package/dist/client/assets/{star-7UHEnC3x.js → star-BZ-RtSFD.js} +1 -1
  141. package/dist/client/assets/switch-CEJEmLe7.js +48 -0
  142. package/dist/client/assets/{toggle-CaKBNe6W.js → toggle-DVGrNHjq.js} +1 -1
  143. package/dist/client/assets/{toggle-group-UeFeTI3u.js → toggle-group-CNDOfNhH.js} +1 -1
  144. package/dist/client/assets/{tokenModePresentation-DV56ekA4.js → tokenModePresentation-CQNdC9CW.js} +1 -1
  145. package/dist/client/assets/{tooltip-DXvXxL37.js → tooltip-B7Z4qomY.js} +1 -1
  146. package/dist/client/assets/{unplug-DisTpujT.js → unplug-CRUwFNFw.js} +1 -1
  147. package/dist/client/assets/useAppSidebarCollapsed-wq6czkNJ.js +1 -0
  148. package/dist/client/assets/useBaseUiId-OYaGjnkh.js +1 -0
  149. package/dist/client/assets/{useLabelableId-BsDFG9Oj.js → useLabelableId-VMc-yITe.js} +1 -1
  150. package/dist/client/assets/{useNavigate-cLfxn_9L.js → useNavigate-DVi0rBlf.js} +1 -1
  151. package/dist/client/assets/{usePhoneThreadActions-rekHL1Mi.js → usePhoneThreadActions-CwwHikjB.js} +1 -1
  152. package/dist/client/assets/{usePopupViewport-kXU31P6l.js → usePopupViewport-BcSIK_ph.js} +1 -1
  153. package/dist/client/assets/{useScrollLock-DjMxrUJe.js → useScrollLock-BQf9VYJT.js} +1 -1
  154. package/dist/client/assets/{useStatistics-BYP-9CmW.js → useStatistics-DczKdEfy.js} +1 -1
  155. package/dist/client/assets/{useTriggerFocusGuards-DuAm2B8C.js → useTriggerFocusGuards-DjP-D0_a.js} +1 -1
  156. package/dist/client/assets/{useValueChanged-DreFjrMK.js → useValueChanged-CRwCkFdy.js} +1 -1
  157. package/dist/client/assets/{user-round-DctamWV6.js → user-round-DStbWN3z.js} +1 -1
  158. package/dist/client/assets/{vscode-icons-Dw-LGJAv.js → vscode-icons-BihBo3tb.js} +1 -1
  159. package/dist/client/assets/{workspaceMetadataProjection-BL4sEIL2.js → workspaceMetadataProjection-j3BGlVOB.js} +1 -1
  160. package/dist/client/assets/{wrench-Ds8eZerZ.js → wrench-BBIgGxy9.js} +1 -1
  161. package/dist/client/index.html +1 -1
  162. package/dist/{collectUint8StreamText-C_VNyArd.mjs → collectUint8StreamText-CE1Re5Ij.mjs} +41 -3
  163. package/dist/{collectUint8StreamText-DStwNTTK.cjs → collectUint8StreamText-whblCEfg.cjs} +52 -2
  164. package/dist/{makeManagedServerProvider-GZcpSLrW.mjs → makeManagedServerProvider-CwYhl_P-.mjs} +1 -1
  165. package/dist/{makeManagedServerProvider-VzxWN-04.cjs → makeManagedServerProvider-Dy2Ny9tk.cjs} +1 -1
  166. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  167. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  168. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  169. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  170. package/package.json +1 -1
  171. package/dist/client/assets/AccountSettings-ApnDA1f-.js +0 -1
  172. package/dist/client/assets/ChatRightPanel-a6UOHNMm.js +0 -194
  173. package/dist/client/assets/CommandPaletteDialog-B2iKWCUi.js +0 -1
  174. package/dist/client/assets/ComputerUseSettings-CPwWoHWj.js +0 -1
  175. package/dist/client/assets/ConnectionsSettings-CPMkuxza.js +0 -7
  176. package/dist/client/assets/ContextHandoffEndpointLabel-BildLLDY.js +0 -4
  177. package/dist/client/assets/DialogRoot-SKkIuQHA.js +0 -1
  178. package/dist/client/assets/HostedHubRoot-BTWc0XoQ.js +0 -2
  179. package/dist/client/assets/IntegrationsSettingsPanel-n9owMZf-.js +0 -2
  180. package/dist/client/assets/PhoneHome-FqWvnJP_.js +0 -1
  181. package/dist/client/assets/PhoneSettingsSurface-w5PJnoBc.js +0 -2
  182. package/dist/client/assets/ProvidersSettingsPanel-Ww1ch3xA.js +0 -1
  183. package/dist/client/assets/RootAppShell-BdQCs2XJ.js +0 -7
  184. package/dist/client/assets/SettingsDialog-DeMzEeCP.js +0 -2
  185. package/dist/client/assets/SettingsPanels-ZxNz9ZfL.js +0 -3
  186. package/dist/client/assets/SourceControlSettings-C1F3Brcn.js +0 -1
  187. package/dist/client/assets/authorization-CjOFkg7b.js +0 -1
  188. package/dist/client/assets/chevron-right-CuUjBsQV.js +0 -1
  189. package/dist/client/assets/main-BbtLAX7M.js +0 -9
  190. package/dist/client/assets/main-D4CtFNPY.css +0 -2
  191. package/dist/client/assets/monitor-OyD484tI.js +0 -1
  192. package/dist/client/assets/primary-D_D7eLwT.js +0 -2
  193. package/dist/client/assets/providerDriverMeta-DNTocCcU.js +0 -1
  194. package/dist/client/assets/providerModels-bFbEIfL9.js +0 -1
  195. package/dist/client/assets/runtime-Djy96GJd.js +0 -17
  196. package/dist/client/assets/sidebarProjectFolders-ygpaKZM6.js +0 -4
  197. package/dist/client/assets/src-BSuAGqhK.js +0 -14
  198. package/dist/client/assets/switch-DD1qVLgN.js +0 -48
  199. package/dist/client/assets/useAppSidebarCollapsed-CaAsLi1q.js +0 -1
  200. package/dist/client/assets/useBaseUiId-CJN4MvrU.js +0 -1
package/dist/bin.cjs CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
5
- const require_collectUint8StreamText = require("./collectUint8StreamText-DStwNTTK.cjs");
5
+ const require_collectUint8StreamText = require("./collectUint8StreamText-whblCEfg.cjs");
6
6
  const require_Metrics = require("./Metrics-Bcb9vCAe.cjs");
7
- const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-DreaAH1H.cjs");
7
+ const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-Dm_lhrhv.cjs");
8
8
  const require_sourceControl = require("./sourceControl-B0D1Op29.cjs");
9
9
  let _effect_platform_node_NodeRuntime = require("@effect/platform-node/NodeRuntime");
10
10
  _effect_platform_node_NodeRuntime = require_rolldown_runtime.__toESM(_effect_platform_node_NodeRuntime, 1);
@@ -1408,6 +1408,7 @@ function logPathHydrationWarning(message, error) {
1408
1408
  console.warn(`[server] ${message}`, error instanceof Error ? error.message : error ?? "");
1409
1409
  }
1410
1410
  function fixPath(options = {}) {
1411
+ if (options.inheritedFromDesktop) return;
1411
1412
  const platform = options.platform ?? process.platform;
1412
1413
  const env = options.env ?? process.env;
1413
1414
  const logWarning = options.logWarning ?? logPathHydrationWarning;
@@ -6576,8 +6577,35 @@ const repairProjectionThreadSubagentNestingColumns = effect_Effect.fn("repairPro
6576
6577
  const repairContextHandoffRuntimeSessions = effect_Effect.fn("repairContextHandoffRuntimeSessions")(function* () {
6577
6578
  yield* _042_ContextHandoffRuntimeSessions_default;
6578
6579
  });
6580
+ const repairProjectionThreadSummaryState = effect_Effect.gen(function* () {
6581
+ const sql = yield* effect_unstable_sql_SqlClient.SqlClient;
6582
+ yield* sql`
6583
+ CREATE TABLE IF NOT EXISTS ryco_compatibility_repairs (
6584
+ repair_key TEXT PRIMARY KEY
6585
+ )
6586
+ `;
6587
+ yield* sql.withTransaction(effect_Effect.gen(function* () {
6588
+ const completed = yield* sql`
6589
+ SELECT repair_key FROM ryco_compatibility_repairs
6590
+ WHERE repair_key = 'projection-thread-summary-v1'
6591
+ `;
6592
+ const objects = yield* sql`
6593
+ SELECT name FROM sqlite_master WHERE name IN (
6594
+ 'projection_thread_user_input_requests',
6595
+ 'idx_projection_thread_user_input_requests_thread_pending',
6596
+ 'idx_projection_thread_proposed_plans_thread_turn_updated'
6597
+ )
6598
+ `;
6599
+ if (completed.length > 0 && objects.length === 3) return;
6600
+ yield* _044_ProjectionThreadSummaryState_default;
6601
+ yield* sql`
6602
+ INSERT OR IGNORE INTO ryco_compatibility_repairs (repair_key)
6603
+ VALUES ('projection-thread-summary-v1')
6604
+ `;
6605
+ }));
6606
+ });
6579
6607
  const repairProjectionThreadReadModelMigrations = effect_Effect.fn("repairProjectionThreadReadModelMigrations")(function* (toMigrationInclusive) {
6580
- if (toMigrationInclusive >= 44) yield* _044_ProjectionThreadSummaryState_default;
6608
+ if (toMigrationInclusive >= 44) yield* repairProjectionThreadSummaryState;
6581
6609
  if (toMigrationInclusive >= 45) yield* _045_ProjectionThreadHistoryPaginationIndexes_default;
6582
6610
  if (toMigrationInclusive >= 46) yield* _046_ProjectionThreadMessageDispatchMode_default;
6583
6611
  if (toMigrationInclusive >= 47) yield* _047_ProjectionThreadsGoal_default;
@@ -13507,26 +13535,26 @@ const make$13 = effect.Effect.fn("makeSourceControlProviderRegistry")(function*
13507
13535
  const azureDevOpsCli = yield* AzureDevOpsCli;
13508
13536
  const fileSystem = yield* effect.FileSystem.FileSystem;
13509
13537
  const github = yield* makeLazyProvider("github", effect.Effect.tryPromise({
13510
- try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-8hsv_kCE.cjs")),
13538
+ try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-CItCpOcC.cjs")),
13511
13539
  catch: (cause) => providerLoadError("github", cause)
13512
13540
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitHubCli, githubCli), effect.Effect.provideService(effect.FileSystem.FileSystem, fileSystem)));
13513
13541
  const gitlab = yield* makeLazyProvider("gitlab", effect.Effect.tryPromise({
13514
- try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-B0ZbF9Zx.cjs")),
13542
+ try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-CMce22nU.cjs")),
13515
13543
  catch: (cause) => providerLoadError("gitlab", cause)
13516
13544
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitLabCli, gitlabCli)));
13517
13545
  const bitbucket = yield* makeLazyProvider("bitbucket", effect.Effect.tryPromise({
13518
- try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-BzhsQwH-.cjs")),
13546
+ try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-CD8IvXQK.cjs")),
13519
13547
  catch: (cause) => providerLoadError("bitbucket", cause)
13520
13548
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(BitbucketApi, bitbucketApi)), {
13521
13549
  searchRepositories: true,
13522
13550
  cloneAuthentication: true
13523
13551
  });
13524
13552
  const forgejo = yield* makeLazyProvider("forgejo", effect.Effect.tryPromise({
13525
- try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-Dh6DOoc8.cjs")),
13553
+ try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-JgiyrMqp.cjs")),
13526
13554
  catch: (cause) => providerLoadError("forgejo", cause)
13527
13555
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(ForgejoApi, forgejoApi)));
13528
13556
  const azureDevOps = yield* makeLazyProvider("azure-devops", effect.Effect.tryPromise({
13529
- try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-CrvgKNf2.cjs")),
13557
+ try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-COmd21c-.cjs")),
13530
13558
  catch: (cause) => providerLoadError("azure-devops", cause)
13531
13559
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(AzureDevOpsCli, azureDevOpsCli)));
13532
13560
  const bitbucketDiscovery = require_SourceControlProviderDiscoveryCatalog.makeBitbucketDiscovery(bitbucketApi);
@@ -34015,7 +34043,7 @@ const BUILT_IN_DRIVERS = [
34015
34043
  configSchema: require_collectUint8StreamText.CodexSettings,
34016
34044
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CodexSettings)({}),
34017
34045
  create: (input) => effect.Effect.tryPromise({
34018
- try: () => Promise.resolve().then(() => require("./CodexDriver-CR0S17Lb.cjs")),
34046
+ try: () => Promise.resolve().then(() => require("./CodexDriver-BzR8gA8w.cjs")),
34019
34047
  catch: (cause) => driverImportError(codexDriverKind, input, cause)
34020
34048
  }).pipe(effect.Effect.flatMap(({ CodexDriver }) => CodexDriver.create(input)))
34021
34049
  },
@@ -34029,7 +34057,7 @@ const BUILT_IN_DRIVERS = [
34029
34057
  configSchema: require_collectUint8StreamText.ClaudeSettings,
34030
34058
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.ClaudeSettings)({}),
34031
34059
  create: (input) => effect.Effect.tryPromise({
34032
- try: () => Promise.resolve().then(() => require("./ClaudeDriver-B7mbf51W.cjs")),
34060
+ try: () => Promise.resolve().then(() => require("./ClaudeDriver-Dry5uJfX.cjs")),
34033
34061
  catch: (cause) => driverImportError(claudeDriverKind, input, cause)
34034
34062
  }).pipe(effect.Effect.flatMap(({ ClaudeDriver }) => ClaudeDriver.create(input)))
34035
34063
  },
@@ -34043,7 +34071,7 @@ const BUILT_IN_DRIVERS = [
34043
34071
  configSchema: require_collectUint8StreamText.CopilotSettings,
34044
34072
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CopilotSettings)({}),
34045
34073
  create: (input) => effect.Effect.tryPromise({
34046
- try: () => Promise.resolve().then(() => require("./CopilotDriver-IBd27Ji2.cjs")),
34074
+ try: () => Promise.resolve().then(() => require("./CopilotDriver-rLcA8PSN.cjs")),
34047
34075
  catch: (cause) => driverImportError(copilotDriverKind, input, cause)
34048
34076
  }).pipe(effect.Effect.flatMap(({ CopilotDriver }) => CopilotDriver.create(input)))
34049
34077
  },
@@ -34057,7 +34085,7 @@ const BUILT_IN_DRIVERS = [
34057
34085
  configSchema: require_collectUint8StreamText.CursorSettings,
34058
34086
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CursorSettings)({}),
34059
34087
  create: (input) => effect.Effect.tryPromise({
34060
- try: () => Promise.resolve().then(() => require("./CursorDriver-C4Enoe9N.cjs")),
34088
+ try: () => Promise.resolve().then(() => require("./CursorDriver-C3s-8s9F.cjs")),
34061
34089
  catch: (cause) => driverImportError(cursorDriverKind, input, cause)
34062
34090
  }).pipe(effect.Effect.flatMap(({ CursorDriver }) => CursorDriver.create(input)))
34063
34091
  },
@@ -34071,7 +34099,7 @@ const BUILT_IN_DRIVERS = [
34071
34099
  configSchema: require_collectUint8StreamText.GrokSettings,
34072
34100
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.GrokSettings)({}),
34073
34101
  create: (input) => effect.Effect.tryPromise({
34074
- try: () => Promise.resolve().then(() => require("./GrokDriver-RyyFeh_q.cjs")),
34102
+ try: () => Promise.resolve().then(() => require("./GrokDriver-D0jraOC_.cjs")),
34075
34103
  catch: (cause) => driverImportError(grokDriverKind, input, cause)
34076
34104
  }).pipe(effect.Effect.flatMap(({ GrokDriver }) => GrokDriver.create(input)))
34077
34105
  },
@@ -34085,7 +34113,7 @@ const BUILT_IN_DRIVERS = [
34085
34113
  configSchema: require_collectUint8StreamText.OpenCodeSettings,
34086
34114
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.OpenCodeSettings)({}),
34087
34115
  create: (input) => effect.Effect.tryPromise({
34088
- try: () => Promise.resolve().then(() => require("./OpenCodeDriver-CDcvPT9v.cjs")),
34116
+ try: () => Promise.resolve().then(() => require("./OpenCodeDriver-DxGpgtDS.cjs")),
34089
34117
  catch: (cause) => driverImportError(openCodeDriverKind, input, cause)
34090
34118
  }).pipe(effect.Effect.flatMap(({ OpenCodeDriver }) => OpenCodeDriver.create(input)))
34091
34119
  }
@@ -34800,7 +34828,7 @@ const scopedSafeTeardown = (label) => (effect$28) => effect.Effect.gen(function*
34800
34828
  });
34801
34829
  //#endregion
34802
34830
  //#region package.json
34803
- var version$1 = "0.1.24";
34831
+ var version$1 = "0.1.25";
34804
34832
  //#endregion
34805
34833
  //#region src/provider/Layers/CodexProvider.ts
34806
34834
  const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
@@ -43385,6 +43413,36 @@ function resolveWorktreeCheckoutPath(input) {
43385
43413
  return resolveAppManagedWorktreeCheckoutPath(input.appWorktreesRoot, input.projectId, input.branchName);
43386
43414
  }
43387
43415
  //#endregion
43416
+ //#region src/persistence/Services/ProjectionProjects.ts
43417
+ /**
43418
+ * ProjectionProjectRepository - Projection repository interface for projects.
43419
+ *
43420
+ * Owns persistence operations for project rows in the orchestration projection
43421
+ * read model.
43422
+ *
43423
+ * @module ProjectionProjectRepository
43424
+ */
43425
+ const ProjectionProject = effect.Schema.Struct({
43426
+ projectId: require_collectUint8StreamText.ProjectId,
43427
+ title: effect.Schema.String,
43428
+ workspaceRoot: effect.Schema.String,
43429
+ projectMetadataDir: require_collectUint8StreamText.ProjectMetadataDir,
43430
+ defaultModelSelection: effect.Schema.NullOr(require_collectUint8StreamText.ModelSelection),
43431
+ customSystemPrompt: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.String)),
43432
+ customAvatarContentHash: effect.Schema.NullOr(effect.Schema.String),
43433
+ preferredRemoteName: effect.Schema.NullOr(effect.Schema.String),
43434
+ scripts: effect.Schema.Array(require_collectUint8StreamText.ProjectScript),
43435
+ createdAt: require_collectUint8StreamText.IsoDateTime,
43436
+ updatedAt: require_collectUint8StreamText.IsoDateTime,
43437
+ deletedAt: effect.Schema.NullOr(require_collectUint8StreamText.IsoDateTime)
43438
+ });
43439
+ const GetProjectionProjectInput = effect.Schema.Struct({ projectId: require_collectUint8StreamText.ProjectId });
43440
+ const DeleteProjectionProjectInput = effect.Schema.Struct({ projectId: require_collectUint8StreamText.ProjectId });
43441
+ /**
43442
+ * ProjectionProjectRepository - Service tag for project projection persistence.
43443
+ */
43444
+ var ProjectionProjectRepository = class extends effect.Context.Service()("ryco/persistence/Services/ProjectionProjects/ProjectionProjectRepository") {};
43445
+ //#endregion
43388
43446
  //#region src/persistence/Services/ProjectionWorktrees.ts
43389
43447
  /**
43390
43448
  * ProjectionWorktreeRepository - Projection repository interface for worktrees.
@@ -44681,6 +44739,7 @@ const RPC_ACCESS_POLICY = {
44681
44739
  [require_collectUint8StreamText.WS_METHODS.projectsList]: "viewer",
44682
44740
  [require_collectUint8StreamText.WS_METHODS.projectsListEntries]: "operator",
44683
44741
  [require_collectUint8StreamText.WS_METHODS.projectsReadFile]: "operator",
44742
+ [require_collectUint8StreamText.WS_METHODS.projectsReadIcon]: "viewer",
44684
44743
  [require_collectUint8StreamText.WS_METHODS.projectsReadFileBinary]: "operator",
44685
44744
  [require_collectUint8StreamText.WS_METHODS.projectsRemove]: "operator",
44686
44745
  [require_collectUint8StreamText.WS_METHODS.projectsSearchEntries]: "operator",
@@ -46596,6 +46655,9 @@ const makeWsRpcContext = (principal) => effect.Effect.gen(function* () {
46596
46655
  openCodeMcp
46597
46656
  ]);
46598
46657
  const startup = yield* ServerRuntimeStartup;
46658
+ const projectionProjects = yield* effect.Effect.serviceOption(ProjectionProjectRepository);
46659
+ const projectFaviconResolver = yield* effect.Effect.serviceOption(ProjectFaviconResolver);
46660
+ const projectAvatarStore = yield* effect.Effect.serviceOption(ProjectAvatarStore);
46599
46661
  const workspaceEntries = yield* WorkspaceEntries;
46600
46662
  const workspaceFileSystem = yield* WorkspaceFileSystem;
46601
46663
  const workspaceAccessPolicy = yield* WorkspaceAccessPolicy;
@@ -46971,6 +47033,9 @@ const makeWsRpcContext = (principal) => effect.Effect.gen(function* () {
46971
47033
  lifecycleEvents,
46972
47034
  serverSettings,
46973
47035
  mcpRegistry,
47036
+ projectionProjects,
47037
+ projectFaviconResolver,
47038
+ projectAvatarStore,
46974
47039
  workspaceEntries,
46975
47040
  workspaceFileSystem,
46976
47041
  sourceControlDiscovery,
@@ -48118,10 +48183,51 @@ const makeTerminalHandlers = (ctx) => {
48118
48183
  });
48119
48184
  };
48120
48185
  //#endregion
48186
+ //#region src/project/readProjectIcon.ts
48187
+ const iconTypes = {
48188
+ ".png": "image/png",
48189
+ ".jpg": "image/jpeg",
48190
+ ".jpeg": "image/jpeg",
48191
+ ".webp": "image/webp",
48192
+ ".svg": "image/svg+xml",
48193
+ ".ico": "image/x-icon"
48194
+ };
48195
+ /** Resolve only the registered project's artwork; callers cannot supply filesystem paths. */
48196
+ function readProjectIcon(project, services) {
48197
+ return effect.Effect.gen(function* () {
48198
+ if (project.customAvatarContentHash && services.avatar) {
48199
+ const avatar = yield* services.avatar.read(project.id);
48200
+ if (avatar && avatar.bytes.length <= 524288) return {
48201
+ mimeType: "image/png",
48202
+ dataBase64: avatar.bytes.toString("base64")
48203
+ };
48204
+ }
48205
+ const icon = services.favicon ? yield* services.favicon.readIcon(project.workspaceRoot) : null;
48206
+ if (!icon || icon.bytes.length > 524288) return null;
48207
+ const mimeType = iconTypes[(0, node_path.extname)(icon.path).toLowerCase()];
48208
+ return mimeType ? {
48209
+ mimeType,
48210
+ dataBase64: Buffer.from(icon.bytes).toString("base64")
48211
+ } : null;
48212
+ });
48213
+ }
48214
+ //#endregion
48121
48215
  //#region src/ws/projectRpc.ts
48122
48216
  const makeProjectHandlers = (ctx) => {
48123
48217
  const { ownerEffect, workspaceEntries, workspaceFileSystem, open } = ctx;
48124
48218
  return defineWsHandlers({
48219
+ [require_collectUint8StreamText.WS_METHODS.projectsReadIcon]: (input) => ctx.withAccess("viewer", require_collectUint8StreamText.WS_METHODS.projectsReadIcon, effect.Effect.gen(function* () {
48220
+ if (effect.Option.isNone(ctx.projectionProjects)) return null;
48221
+ const project = yield* ctx.projectionProjects.value.getById(input).pipe(effect.Effect.mapError(() => new require_collectUint8StreamText.ProjectReadIconError({ message: "Could not load project artwork." })));
48222
+ if (effect.Option.isNone(project) || project.value.deletedAt !== null) return null;
48223
+ return yield* readProjectIcon({
48224
+ ...project.value,
48225
+ id: project.value.projectId
48226
+ }, {
48227
+ favicon: effect.Option.getOrNull(ctx.projectFaviconResolver),
48228
+ avatar: effect.Option.getOrNull(ctx.projectAvatarStore)
48229
+ });
48230
+ })),
48125
48231
  [require_collectUint8StreamText.WS_METHODS.projectsSearchEntries]: (input) => observeRpcEffect(require_collectUint8StreamText.WS_METHODS.projectsSearchEntries, ownerEffect(require_collectUint8StreamText.WS_METHODS.projectsSearchEntries, workspaceEntries.search(input).pipe(effect.Effect.mapError((cause) => new require_collectUint8StreamText.ProjectSearchEntriesError({
48126
48232
  message: `Failed to search workspace entries: ${cause.detail}`,
48127
48233
  cause
@@ -69830,7 +69936,7 @@ function makeNodeNativeClaimService(options) {
69830
69936
  claim: input.claim,
69831
69937
  requireCurrent: true
69832
69938
  });
69833
- if (input.result.status !== "claimed" || input.result.node.environmentId !== input.claim.environmentId || input.result.node.fingerprint !== input.claim.nodeFingerprint || input.result.node.label !== expectedLabel || input.result.node.effectiveRole !== "owner") return claimError("native_node_claim_conflict");
69939
+ if (input.result.status !== "claimed" || input.result.node.environmentId !== input.claim.environmentId || input.result.node.fingerprint !== input.claim.nodeFingerprint || input.result.node.label !== expectedLabel && !(validated.descriptor.state === "active" && input.result.disposition === "reconnected") || input.result.node.effectiveRole !== "owner") return claimError("native_node_claim_conflict");
69834
69940
  const active = {
69835
69941
  hubOrigin: validated.descriptor.hubOrigin,
69836
69942
  nodeId: input.result.node.id,
@@ -89993,22 +90099,25 @@ function buildRepositoryIdentity(input) {
89993
90099
  const DEFAULT_REPOSITORY_IDENTITY_CACHE_CAPACITY = 512;
89994
90100
  const DEFAULT_POSITIVE_CACHE_TTL = effect.Duration.minutes(1);
89995
90101
  const DEFAULT_NEGATIVE_CACHE_TTL = effect.Duration.minutes(1);
90102
+ const GIT_IDENTITY_PROBE_TIMEOUT_MS = 1e3;
89996
90103
  async function resolveRepositoryIdentityCacheKey(cwd) {
89997
- let cacheKey = cwd;
89998
90104
  try {
89999
90105
  const topLevelResult = await runProcess("git", [
90000
90106
  "-C",
90001
90107
  cwd,
90002
90108
  "rev-parse",
90003
90109
  "--show-toplevel"
90004
- ], { allowNonZeroExit: true });
90005
- if (topLevelResult.code !== 0) return cacheKey;
90110
+ ], {
90111
+ allowNonZeroExit: true,
90112
+ timeoutMs: GIT_IDENTITY_PROBE_TIMEOUT_MS
90113
+ });
90114
+ if (topLevelResult.timedOut || topLevelResult.code !== 0) return null;
90006
90115
  const candidate = topLevelResult.stdout.trim();
90007
- if (candidate.length > 0) cacheKey = candidate;
90116
+ if (candidate.length > 0) return candidate;
90008
90117
  } catch {
90009
- return cacheKey;
90118
+ return null;
90010
90119
  }
90011
- return cacheKey;
90120
+ return null;
90012
90121
  }
90013
90122
  async function resolveRepositoryIdentityFromCacheKey(cacheKey) {
90014
90123
  try {
@@ -90017,8 +90126,11 @@ async function resolveRepositoryIdentityFromCacheKey(cacheKey) {
90017
90126
  cacheKey,
90018
90127
  "remote",
90019
90128
  "-v"
90020
- ], { allowNonZeroExit: true });
90021
- if (remoteResult.code !== 0) return null;
90129
+ ], {
90130
+ allowNonZeroExit: true,
90131
+ timeoutMs: GIT_IDENTITY_PROBE_TIMEOUT_MS
90132
+ });
90133
+ if (remoteResult.timedOut || remoteResult.code !== 0) return null;
90022
90134
  const allRemotes = parseRemoteFetchUrls(remoteResult.stdout);
90023
90135
  const remote = pickPrimaryRemote(allRemotes);
90024
90136
  return remote ? buildRepositoryIdentity({
@@ -90031,6 +90143,13 @@ async function resolveRepositoryIdentityFromCacheKey(cacheKey) {
90031
90143
  }
90032
90144
  }
90033
90145
  const makeRepositoryIdentityResolver = effect.Effect.fn("makeRepositoryIdentityResolver")(function* (options = {}) {
90146
+ const workspaceRootCache = yield* effect.Cache.makeWith((cwd) => effect.Effect.promise(() => resolveRepositoryIdentityCacheKey(cwd)), {
90147
+ capacity: options.cacheCapacity ?? DEFAULT_REPOSITORY_IDENTITY_CACHE_CAPACITY,
90148
+ timeToLive: effect.Exit.match({
90149
+ onSuccess: (value) => value === null ? options.negativeCacheTtl ?? DEFAULT_NEGATIVE_CACHE_TTL : options.positiveCacheTtl ?? DEFAULT_POSITIVE_CACHE_TTL,
90150
+ onFailure: () => effect.Duration.zero
90151
+ })
90152
+ });
90034
90153
  const repositoryIdentityCache = yield* effect.Cache.makeWith((cacheKey) => effect.Effect.promise(() => resolveRepositoryIdentityFromCacheKey(cacheKey)), {
90035
90154
  capacity: options.cacheCapacity ?? DEFAULT_REPOSITORY_IDENTITY_CACHE_CAPACITY,
90036
90155
  timeToLive: effect.Exit.match({
@@ -90039,7 +90158,8 @@ const makeRepositoryIdentityResolver = effect.Effect.fn("makeRepositoryIdentityR
90039
90158
  })
90040
90159
  });
90041
90160
  return { resolve: effect.Effect.fn("RepositoryIdentityResolver.resolve")(function* (cwd) {
90042
- const cacheKey = yield* effect.Effect.promise(() => resolveRepositoryIdentityCacheKey(cwd));
90161
+ const cacheKey = yield* effect.Cache.get(workspaceRootCache, cwd);
90162
+ if (cacheKey === null) return null;
90043
90163
  return yield* effect.Cache.get(repositoryIdentityCache, cacheKey);
90044
90164
  }) };
90045
90165
  });
@@ -92380,6 +92500,20 @@ const resolveServerEnvironmentLabel = effect.Effect.fn("resolveServerEnvironment
92380
92500
  return normalizeLabel(input.cwdBaseName) ?? "Ryco environment";
92381
92501
  });
92382
92502
  //#endregion
92503
+ //#region ../../packages/shared/src/environmentIcon.ts
92504
+ /** Reuse existing platform/name metadata; icon selection must never probe permissions or delay startup. */
92505
+ function inferEnvironmentMachineKind(platform, label = "") {
92506
+ const name = label.toLowerCase().replaceAll(/[\s_-]+/g, "");
92507
+ if (/macmini|minipc/.test(name)) return "mini-pc";
92508
+ if (/macstudio|workstation/.test(name)) return "workstation";
92509
+ if (/macbook|notebook|laptop/.test(name)) return "laptop";
92510
+ if (/imac|macpro|desktop/.test(name)) return "desktop";
92511
+ if (platform === "windows" || platform === "win32") return "windows";
92512
+ if (platform === "linux") return "linux";
92513
+ if (platform === "darwin") return "desktop";
92514
+ return "server";
92515
+ }
92516
+ //#endregion
92383
92517
  //#region src/environment/Layers/ServerEnvironment.ts
92384
92518
  function platformOs() {
92385
92519
  switch (process.platform) {
@@ -92415,18 +92549,22 @@ const makeServerEnvironment = effect.Effect.fn("makeServerEnvironment")(function
92415
92549
  });
92416
92550
  const environmentId = require_collectUint8StreamText.EnvironmentId.make(environmentIdRaw);
92417
92551
  const cwdBaseName = path.basename(serverConfig.cwd).trim();
92552
+ const label = yield* resolveServerEnvironmentLabel({ cwdBaseName });
92418
92553
  const descriptor = {
92419
92554
  environmentId,
92420
- label: yield* resolveServerEnvironmentLabel({ cwdBaseName }),
92555
+ label,
92421
92556
  platform: {
92422
92557
  os: platformOs(),
92423
- arch: platformArch()
92558
+ arch: platformArch(),
92559
+ machine: inferEnvironmentMachineKind(platformOs(), label)
92424
92560
  },
92425
92561
  serverVersion: version$1,
92426
92562
  capabilities: {
92427
92563
  repositoryIdentity: true,
92428
92564
  threadSettlement: true,
92429
92565
  threadSnooze: true,
92566
+ projectIcons: true,
92567
+ environmentIcon: true,
92430
92568
  threadPriorityRanking: true,
92431
92569
  fileAttachments: { maxUploadBytes: require_collectUint8StreamText.PROVIDER_SEND_TURN_MAX_FILE_BYTES }
92432
92570
  }
@@ -94168,6 +94306,121 @@ const makeProjectAtlassianLinkRepository = effect.Effect.gen(function* () {
94168
94306
  });
94169
94307
  const ProjectAtlassianLinkRepositoryLive = effect.Layer.effect(ProjectAtlassianLinkRepository, makeProjectAtlassianLinkRepository);
94170
94308
  //#endregion
94309
+ //#region src/persistence/Layers/ProjectionProjects.ts
94310
+ const ProjectionProjectDbRow = ProjectionProject.mapFields(effect.Struct.assign({
94311
+ defaultModelSelection: effect.Schema.NullOr(effect.Schema.fromJsonString(require_collectUint8StreamText.ModelSelection)),
94312
+ scripts: effect.Schema.fromJsonString(effect.Schema.Array(require_collectUint8StreamText.ProjectScript))
94313
+ }));
94314
+ const makeProjectionProjectRepository = effect.Effect.gen(function* () {
94315
+ const sql = yield* effect_unstable_sql_SqlClient.SqlClient;
94316
+ const upsertProjectionProjectRow = effect_unstable_sql_SqlSchema.void({
94317
+ Request: ProjectionProject,
94318
+ execute: (row) => sql`
94319
+ INSERT INTO projection_projects (
94320
+ project_id,
94321
+ title,
94322
+ workspace_root,
94323
+ project_metadata_dir,
94324
+ default_model_selection_json,
94325
+ custom_system_prompt,
94326
+ custom_avatar_content_hash,
94327
+ preferred_remote_name,
94328
+ scripts_json,
94329
+ created_at,
94330
+ updated_at,
94331
+ deleted_at
94332
+ )
94333
+ VALUES (
94334
+ ${row.projectId},
94335
+ ${row.title},
94336
+ ${row.workspaceRoot},
94337
+ ${row.projectMetadataDir},
94338
+ ${row.defaultModelSelection !== null ? JSON.stringify(row.defaultModelSelection) : null},
94339
+ ${row.customSystemPrompt ?? null},
94340
+ ${row.customAvatarContentHash ?? null},
94341
+ ${row.preferredRemoteName ?? null},
94342
+ ${JSON.stringify(row.scripts)},
94343
+ ${row.createdAt},
94344
+ ${row.updatedAt},
94345
+ ${row.deletedAt}
94346
+ )
94347
+ ON CONFLICT (project_id)
94348
+ DO UPDATE SET
94349
+ title = excluded.title,
94350
+ workspace_root = excluded.workspace_root,
94351
+ project_metadata_dir = excluded.project_metadata_dir,
94352
+ default_model_selection_json = excluded.default_model_selection_json,
94353
+ custom_system_prompt = excluded.custom_system_prompt,
94354
+ custom_avatar_content_hash = excluded.custom_avatar_content_hash,
94355
+ preferred_remote_name = excluded.preferred_remote_name,
94356
+ scripts_json = excluded.scripts_json,
94357
+ created_at = excluded.created_at,
94358
+ updated_at = excluded.updated_at,
94359
+ deleted_at = excluded.deleted_at
94360
+ `
94361
+ });
94362
+ const getProjectionProjectRow = effect_unstable_sql_SqlSchema.findOneOption({
94363
+ Request: GetProjectionProjectInput,
94364
+ Result: ProjectionProjectDbRow,
94365
+ execute: ({ projectId }) => sql`
94366
+ SELECT
94367
+ project_id AS "projectId",
94368
+ title,
94369
+ workspace_root AS "workspaceRoot",
94370
+ project_metadata_dir AS "projectMetadataDir",
94371
+ default_model_selection_json AS "defaultModelSelection",
94372
+ custom_system_prompt AS "customSystemPrompt",
94373
+ custom_avatar_content_hash AS "customAvatarContentHash",
94374
+ preferred_remote_name AS "preferredRemoteName",
94375
+ scripts_json AS "scripts",
94376
+ created_at AS "createdAt",
94377
+ updated_at AS "updatedAt",
94378
+ deleted_at AS "deletedAt"
94379
+ FROM projection_projects
94380
+ WHERE project_id = ${projectId}
94381
+ `
94382
+ });
94383
+ const listProjectionProjectRows = effect_unstable_sql_SqlSchema.findAll({
94384
+ Request: effect.Schema.Void,
94385
+ Result: ProjectionProjectDbRow,
94386
+ execute: () => sql`
94387
+ SELECT
94388
+ project_id AS "projectId",
94389
+ title,
94390
+ workspace_root AS "workspaceRoot",
94391
+ project_metadata_dir AS "projectMetadataDir",
94392
+ default_model_selection_json AS "defaultModelSelection",
94393
+ custom_system_prompt AS "customSystemPrompt",
94394
+ custom_avatar_content_hash AS "customAvatarContentHash",
94395
+ preferred_remote_name AS "preferredRemoteName",
94396
+ scripts_json AS "scripts",
94397
+ created_at AS "createdAt",
94398
+ updated_at AS "updatedAt",
94399
+ deleted_at AS "deletedAt"
94400
+ FROM projection_projects
94401
+ ORDER BY created_at ASC, project_id ASC
94402
+ `
94403
+ });
94404
+ const deleteProjectionProjectRow = effect_unstable_sql_SqlSchema.void({
94405
+ Request: DeleteProjectionProjectInput,
94406
+ execute: ({ projectId }) => sql`
94407
+ DELETE FROM projection_projects
94408
+ WHERE project_id = ${projectId}
94409
+ `
94410
+ });
94411
+ const upsert = (row) => upsertProjectionProjectRow(row).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.upsert:query")));
94412
+ const getById = (input) => getProjectionProjectRow(input).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.getById:query")));
94413
+ const listAll = () => listProjectionProjectRows().pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.listAll:query")));
94414
+ const deleteById = (input) => deleteProjectionProjectRow(input).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.deleteById:query")));
94415
+ return {
94416
+ upsert,
94417
+ getById,
94418
+ listAll,
94419
+ deleteById
94420
+ };
94421
+ });
94422
+ const ProjectionProjectRepositoryLive = effect.Layer.effect(ProjectionProjectRepository, makeProjectionProjectRepository);
94423
+ //#endregion
94171
94424
  //#region src/persistence/Layers/ProjectionWorktrees.ts
94172
94425
  const ProjectionWorktreeDbRowSchema$1 = ProjectionWorktree.mapFields(effect.Struct.assign({ prIsDraft: effect.Schema.NullOr(effect.Schema.Number) }));
94173
94426
  function toProjectionWorktree(row) {
@@ -107091,36 +107344,6 @@ const DeleteProjectionPendingApprovalInput = effect.Schema.Struct({ requestId: r
107091
107344
  */
107092
107345
  var ProjectionPendingApprovalRepository = class extends effect.Context.Service()("ryco/persistence/Services/ProjectionPendingApprovals/ProjectionPendingApprovalRepository") {};
107093
107346
  //#endregion
107094
- //#region src/persistence/Services/ProjectionProjects.ts
107095
- /**
107096
- * ProjectionProjectRepository - Projection repository interface for projects.
107097
- *
107098
- * Owns persistence operations for project rows in the orchestration projection
107099
- * read model.
107100
- *
107101
- * @module ProjectionProjectRepository
107102
- */
107103
- const ProjectionProject = effect.Schema.Struct({
107104
- projectId: require_collectUint8StreamText.ProjectId,
107105
- title: effect.Schema.String,
107106
- workspaceRoot: effect.Schema.String,
107107
- projectMetadataDir: require_collectUint8StreamText.ProjectMetadataDir,
107108
- defaultModelSelection: effect.Schema.NullOr(require_collectUint8StreamText.ModelSelection),
107109
- customSystemPrompt: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.String)),
107110
- customAvatarContentHash: effect.Schema.NullOr(effect.Schema.String),
107111
- preferredRemoteName: effect.Schema.NullOr(effect.Schema.String),
107112
- scripts: effect.Schema.Array(require_collectUint8StreamText.ProjectScript),
107113
- createdAt: require_collectUint8StreamText.IsoDateTime,
107114
- updatedAt: require_collectUint8StreamText.IsoDateTime,
107115
- deletedAt: effect.Schema.NullOr(require_collectUint8StreamText.IsoDateTime)
107116
- });
107117
- const GetProjectionProjectInput = effect.Schema.Struct({ projectId: require_collectUint8StreamText.ProjectId });
107118
- const DeleteProjectionProjectInput = effect.Schema.Struct({ projectId: require_collectUint8StreamText.ProjectId });
107119
- /**
107120
- * ProjectionProjectRepository - Service tag for project projection persistence.
107121
- */
107122
- var ProjectionProjectRepository = class extends effect.Context.Service()("ryco/persistence/Services/ProjectionProjects/ProjectionProjectRepository") {};
107123
- //#endregion
107124
107347
  //#region src/persistence/Services/ProjectionState.ts
107125
107348
  /**
107126
107349
  * ProjectionStateRepository - Projection repository interface for projector cursors.
@@ -107407,121 +107630,6 @@ const makeProjectionPendingApprovalRepository = effect.Effect.gen(function* () {
107407
107630
  });
107408
107631
  const ProjectionPendingApprovalRepositoryLive = effect.Layer.effect(ProjectionPendingApprovalRepository, makeProjectionPendingApprovalRepository);
107409
107632
  //#endregion
107410
- //#region src/persistence/Layers/ProjectionProjects.ts
107411
- const ProjectionProjectDbRow = ProjectionProject.mapFields(effect.Struct.assign({
107412
- defaultModelSelection: effect.Schema.NullOr(effect.Schema.fromJsonString(require_collectUint8StreamText.ModelSelection)),
107413
- scripts: effect.Schema.fromJsonString(effect.Schema.Array(require_collectUint8StreamText.ProjectScript))
107414
- }));
107415
- const makeProjectionProjectRepository = effect.Effect.gen(function* () {
107416
- const sql = yield* effect_unstable_sql_SqlClient.SqlClient;
107417
- const upsertProjectionProjectRow = effect_unstable_sql_SqlSchema.void({
107418
- Request: ProjectionProject,
107419
- execute: (row) => sql`
107420
- INSERT INTO projection_projects (
107421
- project_id,
107422
- title,
107423
- workspace_root,
107424
- project_metadata_dir,
107425
- default_model_selection_json,
107426
- custom_system_prompt,
107427
- custom_avatar_content_hash,
107428
- preferred_remote_name,
107429
- scripts_json,
107430
- created_at,
107431
- updated_at,
107432
- deleted_at
107433
- )
107434
- VALUES (
107435
- ${row.projectId},
107436
- ${row.title},
107437
- ${row.workspaceRoot},
107438
- ${row.projectMetadataDir},
107439
- ${row.defaultModelSelection !== null ? JSON.stringify(row.defaultModelSelection) : null},
107440
- ${row.customSystemPrompt ?? null},
107441
- ${row.customAvatarContentHash ?? null},
107442
- ${row.preferredRemoteName ?? null},
107443
- ${JSON.stringify(row.scripts)},
107444
- ${row.createdAt},
107445
- ${row.updatedAt},
107446
- ${row.deletedAt}
107447
- )
107448
- ON CONFLICT (project_id)
107449
- DO UPDATE SET
107450
- title = excluded.title,
107451
- workspace_root = excluded.workspace_root,
107452
- project_metadata_dir = excluded.project_metadata_dir,
107453
- default_model_selection_json = excluded.default_model_selection_json,
107454
- custom_system_prompt = excluded.custom_system_prompt,
107455
- custom_avatar_content_hash = excluded.custom_avatar_content_hash,
107456
- preferred_remote_name = excluded.preferred_remote_name,
107457
- scripts_json = excluded.scripts_json,
107458
- created_at = excluded.created_at,
107459
- updated_at = excluded.updated_at,
107460
- deleted_at = excluded.deleted_at
107461
- `
107462
- });
107463
- const getProjectionProjectRow = effect_unstable_sql_SqlSchema.findOneOption({
107464
- Request: GetProjectionProjectInput,
107465
- Result: ProjectionProjectDbRow,
107466
- execute: ({ projectId }) => sql`
107467
- SELECT
107468
- project_id AS "projectId",
107469
- title,
107470
- workspace_root AS "workspaceRoot",
107471
- project_metadata_dir AS "projectMetadataDir",
107472
- default_model_selection_json AS "defaultModelSelection",
107473
- custom_system_prompt AS "customSystemPrompt",
107474
- custom_avatar_content_hash AS "customAvatarContentHash",
107475
- preferred_remote_name AS "preferredRemoteName",
107476
- scripts_json AS "scripts",
107477
- created_at AS "createdAt",
107478
- updated_at AS "updatedAt",
107479
- deleted_at AS "deletedAt"
107480
- FROM projection_projects
107481
- WHERE project_id = ${projectId}
107482
- `
107483
- });
107484
- const listProjectionProjectRows = effect_unstable_sql_SqlSchema.findAll({
107485
- Request: effect.Schema.Void,
107486
- Result: ProjectionProjectDbRow,
107487
- execute: () => sql`
107488
- SELECT
107489
- project_id AS "projectId",
107490
- title,
107491
- workspace_root AS "workspaceRoot",
107492
- project_metadata_dir AS "projectMetadataDir",
107493
- default_model_selection_json AS "defaultModelSelection",
107494
- custom_system_prompt AS "customSystemPrompt",
107495
- custom_avatar_content_hash AS "customAvatarContentHash",
107496
- preferred_remote_name AS "preferredRemoteName",
107497
- scripts_json AS "scripts",
107498
- created_at AS "createdAt",
107499
- updated_at AS "updatedAt",
107500
- deleted_at AS "deletedAt"
107501
- FROM projection_projects
107502
- ORDER BY created_at ASC, project_id ASC
107503
- `
107504
- });
107505
- const deleteProjectionProjectRow = effect_unstable_sql_SqlSchema.void({
107506
- Request: DeleteProjectionProjectInput,
107507
- execute: ({ projectId }) => sql`
107508
- DELETE FROM projection_projects
107509
- WHERE project_id = ${projectId}
107510
- `
107511
- });
107512
- const upsert = (row) => upsertProjectionProjectRow(row).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.upsert:query")));
107513
- const getById = (input) => getProjectionProjectRow(input).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.getById:query")));
107514
- const listAll = () => listProjectionProjectRows().pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.listAll:query")));
107515
- const deleteById = (input) => deleteProjectionProjectRow(input).pipe(effect.Effect.mapError(toPersistenceSqlError("ProjectionProjectRepository.deleteById:query")));
107516
- return {
107517
- upsert,
107518
- getById,
107519
- listAll,
107520
- deleteById
107521
- };
107522
- });
107523
- const ProjectionProjectRepositoryLive = effect.Layer.effect(ProjectionProjectRepository, makeProjectionProjectRepository);
107524
- //#endregion
107525
107633
  //#region src/persistence/Layers/ProjectionState.ts
107526
107634
  const MinLastAppliedSequenceRowSchema = effect.Schema.Struct({ minLastAppliedSequence: effect.Schema.NullOr(require_collectUint8StreamText.NonNegativeInt) });
107527
107635
  const makeProjectionStateRepository = effect.Effect.gen(function* () {
@@ -109994,7 +110102,14 @@ const makeProjectionSnapshotQuery = effect.Effect.gen(function* () {
109994
110102
  const resolveRepositoryIdentitiesForProjects = effect.Effect.fn("ProjectionSnapshotQuery.resolveRepositoryIdentitiesForProjects")(function* (projectRows, options) {
109995
110103
  const filteredProjectRows = options?.includeDeleted === true ? projectRows : projectRows.filter((row) => row.deletedAt === null);
109996
110104
  const uniqueWorkspaceRoots = [...new Set(filteredProjectRows.map((row) => row.workspaceRoot))];
109997
- const repositoryIdentityByWorkspaceRoot = new Map(yield* effect.Effect.forEach(uniqueWorkspaceRoots, (workspaceRoot) => repositoryIdentityResolver.resolve(workspaceRoot).pipe(effect.Effect.map((identity) => [workspaceRoot, identity])), { concurrency: repositoryIdentityResolutionConcurrency }));
110105
+ const repositoryIdentityByWorkspaceRoot = /* @__PURE__ */ new Map();
110106
+ const resolveIdentities = effect.Effect.forEach(uniqueWorkspaceRoots, (workspaceRoot) => repositoryIdentityResolver.resolve(workspaceRoot).pipe(effect.Effect.tap((identity) => effect.Effect.sync(() => {
110107
+ repositoryIdentityByWorkspaceRoot.set(workspaceRoot, identity);
110108
+ }))), {
110109
+ concurrency: repositoryIdentityResolutionConcurrency,
110110
+ discard: true
110111
+ });
110112
+ yield* options?.timeoutMs === void 0 ? resolveIdentities : resolveIdentities.pipe(effect.Effect.timeoutOption(options.timeoutMs));
109998
110113
  return new Map(filteredProjectRows.map((row) => [row.projectId, repositoryIdentityByWorkspaceRoot.get(row.workspaceRoot) ?? null]));
109999
110114
  });
110000
110115
  const listProjectRows = effect_unstable_sql_SqlSchema.findAll({
@@ -111384,7 +111499,7 @@ const makeProjectionSnapshotQuery = effect.Effect.gen(function* () {
111384
111499
  if (row.completedAt !== null) updatedAt = maxIso(updatedAt, row.completedAt);
111385
111500
  }
111386
111501
  for (const row of stateRows) updatedAt = maxIso(updatedAt, row.updatedAt);
111387
- const repositoryIdentities = yield* resolveRepositoryIdentitiesForProjects(projectRows);
111502
+ const repositoryIdentities = yield* resolveRepositoryIdentitiesForProjects(projectRows, { timeoutMs: 1e3 });
111388
111503
  const latestTurnByThread = new Map(latestTurnRows.map((row) => [row.threadId, mapLatestTurn(row)]));
111389
111504
  const sessionByThread = new Map(sessionRows.map((row) => [row.threadId, mapSessionRow(row)]));
111390
111505
  const activeProjectIds = new Set(projectRows.filter((row) => row.deletedAt === null).map((row) => row.projectId));
@@ -112072,7 +112187,7 @@ const WorkspaceLayerLive = effect.Layer.mergeAll(WorkspaceAccessPolicyLive, Work
112072
112187
  const AuthLayerLive = ServerAuthLive.pipe(effect.Layer.provideMerge(PersistenceLayerLive), effect.Layer.provide(ServerSecretStoreLive));
112073
112188
  const AtlassianLayerLive = effect.Layer.mergeAll(layer$18, layer$2).pipe(effect.Layer.provideMerge(AtlassianConnectionRepositoryLive), effect.Layer.provideMerge(AtlassianResourceRepositoryLive), effect.Layer.provideMerge(ProjectAtlassianLinkRepositoryLive), effect.Layer.provideMerge(PersistenceLayerLive), effect.Layer.provide(ServerSecretStoreLive));
112074
112189
  const ProviderRuntimeLayerLive = ProviderSessionReaperLive.pipe(effect.Layer.provideMerge(ProviderLayerLive), effect.Layer.provideMerge(OrchestrationLayerLive));
112075
- const RuntimeCoreBaseDependenciesLive = RuntimeFeatureLayerLive.pipe(effect.Layer.provideMerge(CheckpointingLayerLive), effect.Layer.provideMerge(SourceControlProviderRegistryLayerLive), effect.Layer.provideMerge(GitLayerLive), effect.Layer.provideMerge(VcsLayerLive), effect.Layer.provideMerge(ProviderRuntimeLayerLive), effect.Layer.provideMerge(TerminalLayerLive), effect.Layer.provideMerge(AgentControlLayerLive), effect.Layer.provideMerge(PersistenceLayerLive), effect.Layer.provideMerge(ProjectionWorktreeRepositoryLive), effect.Layer.provideMerge(KeybindingsLive), effect.Layer.provideMerge(ProviderRegistryLive), effect.Layer.provideMerge(ProviderInstanceRegistryHydrationLive), effect.Layer.provideMerge(AgentControlSessionRegistryLayerLive), effect.Layer.provideMerge(ProviderEventLoggersLive), effect.Layer.provideMerge(layer$1), effect.Layer.provideMerge(OpenCodeRuntimeLive), effect.Layer.provideMerge(WorkspaceLayerLive), effect.Layer.provideMerge(ProjectFaviconResolverLive), effect.Layer.provideMerge(ProjectAvatarStoreLayerLive));
112190
+ const RuntimeCoreBaseDependenciesLive = RuntimeFeatureLayerLive.pipe(effect.Layer.provideMerge(CheckpointingLayerLive), effect.Layer.provideMerge(SourceControlProviderRegistryLayerLive), effect.Layer.provideMerge(GitLayerLive), effect.Layer.provideMerge(VcsLayerLive), effect.Layer.provideMerge(ProviderRuntimeLayerLive), effect.Layer.provideMerge(TerminalLayerLive), effect.Layer.provideMerge(AgentControlLayerLive), effect.Layer.provideMerge(PersistenceLayerLive), effect.Layer.provideMerge(ProjectionWorktreeRepositoryLive), effect.Layer.provideMerge(ProjectionProjectRepositoryLive), effect.Layer.provideMerge(KeybindingsLive), effect.Layer.provideMerge(ProviderRegistryLive), effect.Layer.provideMerge(ProviderInstanceRegistryHydrationLive), effect.Layer.provideMerge(AgentControlSessionRegistryLayerLive), effect.Layer.provideMerge(ProviderEventLoggersLive), effect.Layer.provideMerge(layer$1), effect.Layer.provideMerge(OpenCodeRuntimeLive), effect.Layer.provideMerge(WorkspaceLayerLive), effect.Layer.provideMerge(ProjectFaviconResolverLive), effect.Layer.provideMerge(ProjectAvatarStoreLayerLive));
112076
112191
  const RuntimeDependenciesLive = effect.Layer.mergeAll(RuntimeCoreBaseDependenciesLive, UsageServiceLive).pipe(effect.Layer.provideMerge(ServerSettingsLive)).pipe(effect.Layer.provideMerge(RepositoryIdentityResolverLive), effect.Layer.provideMerge(ServerEnvironmentLive), effect.Layer.provideMerge(AdvertisedEndpointRegistryLive), effect.Layer.provideMerge(AuthLayerLive), effect.Layer.provideMerge(AtlassianLayerLive)).pipe(effect.Layer.provideMerge(AnalyticsServiceLayerLive), effect.Layer.provideMerge(OpenLive), effect.Layer.provideMerge(ServerLifecycleEventsLive), effect.Layer.provideMerge(ChatAttachmentUploadsLive), effect.Layer.provide(NetService.layer));
112077
112192
  const RuntimeServicesLive = effect.Layer.mergeAll(ServerRuntimeStartupLive, AgentControlMcpServerLive.pipe(effect.Layer.provideMerge(AgentControlDiagnosticsServiceLive), effect.Layer.provideMerge(AgentControlActionValidatorLive), effect.Layer.provideMerge(AgentControlProjectPlansLive)), AgentControlExternalMcpServerLive.pipe(effect.Layer.provideMerge(AgentControlDiagnosticsServiceLive), effect.Layer.provideMerge(AgentControlActionValidatorLive), effect.Layer.provideMerge(AgentControlProjectPlansLive), effect.Layer.provideMerge(AgentControlExternalTaskServiceLive.pipe(effect.Layer.provideMerge(AgentControlActionValidatorLive), effect.Layer.provideMerge(AgentControlProjectPlansLive)))), AgentControlExecutionLive.pipe(effect.Layer.provideMerge(ServerRuntimeStartupLive), effect.Layer.provideMerge(AgentControlActionValidatorLive), effect.Layer.provideMerge(AgentControlProjectPlansLive), effect.Layer.provideMerge(OrchestrationCommandApplicationLive))).pipe(effect.Layer.provideMerge(RuntimeDependenciesLive), effect.Layer.provideMerge(DeviceServiceLive));
112078
112193
  const authRoutesLayer = effect.Layer.mergeAll(authBearerBootstrapRouteLayer, authBootstrapRouteLayer, authClientsRevokeOthersRouteLayer, authClientsRevokeRouteLayer, authClientsRouteLayer, authPairingLinksRevokeRouteLayer, authPairingLinksRouteLayer, authPairingCredentialRouteLayer, authSessionRouteLayer, authWebSocketTokenRouteLayer);
@@ -112080,7 +112195,7 @@ const projectAssetRoutesLayer = effect.Layer.mergeAll(projectFaviconRouteLayer,
112080
112195
  const makeRoutesLayer = effect.Layer.mergeAll(authRoutesLayer, attachmentsRouteLayer, attachmentUploadRouteLayer, orchestrationDispatchRouteLayer, orchestrationSnapshotRouteLayer, otlpTracesProxyRouteLayer, projectAssetRoutesLayer, serverEnvironmentRouteLayer, legacyServerEnvironmentRouteLayer, staticAndDevRouteLayer, websocketRpcRouteLayer, deviceWebsocketRpcRouteLayer, deviceFrameRouteLayer, hubConnectorRoutesLayer, desktopLocalIntroductionRoutesLayer, desktopNativeNodeClaimRoutesLayer).pipe(effect.Layer.provide(browserApiCorsLayer));
112081
112196
  const makeServerLayer = effect.Layer.unwrap(effect.Effect.gen(function* () {
112082
112197
  const config = yield* require_Metrics.ServerConfig;
112083
- fixPath();
112198
+ fixPath({ inheritedFromDesktop: config.mode === "desktop" });
112084
112199
  const httpListeningLayer = effect.Layer.effectDiscard(effect.Effect.gen(function* () {
112085
112200
  yield* effect_unstable_http.HttpServer.HttpServer;
112086
112201
  yield* (yield* ServerRuntimeStartup).markHttpListening;