ryco-cli 0.1.25 → 0.1.26

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 (299) hide show
  1. package/dist/{GrokDriver-CduUwiOH.mjs → AcpAdapter-BemMQNbj.mjs} +102 -604
  2. package/dist/{GrokDriver-D0jraOC_.cjs → AcpAdapter-CadxcdZV.cjs} +129 -612
  3. package/dist/AcpNativeLogging-BsbZRRD7.mjs +312 -0
  4. package/dist/AcpNativeLogging-DZPZNoju.cjs +383 -0
  5. package/dist/AcpRegistryDriver-BfCPf8FX.cjs +222 -0
  6. package/dist/AcpRegistryDriver-BpXCjh9I.mjs +221 -0
  7. package/dist/{AzureDevOpsSourceControlProvider-COmd21c-.cjs → AzureDevOpsSourceControlProvider-B9N_8NJg.cjs} +14 -14
  8. package/dist/{AzureDevOpsSourceControlProvider-B_E0XXfD.mjs → AzureDevOpsSourceControlProvider-BcQO_CyW.mjs} +3 -3
  9. package/dist/{BitbucketSourceControlProvider-pUKsNXcg.mjs → BitbucketSourceControlProvider-BTUY2ZT8.mjs} +3 -3
  10. package/dist/{BitbucketSourceControlProvider-CD8IvXQK.cjs → BitbucketSourceControlProvider-C9WuwvY2.cjs} +14 -14
  11. package/dist/{BunPTY-TbHbSc8S.mjs → BunPTY-DdnqQAdw.mjs} +1 -1
  12. package/dist/{ClaudeDriver-Dry5uJfX.cjs → ClaudeDriver-BSTxNNGO.cjs} +162 -126
  13. package/dist/{ClaudeDriver-CGifBixr.mjs → ClaudeDriver-Csnp78qR.mjs} +129 -93
  14. package/dist/{CodexDriver-BzR8gA8w.cjs → CodexDriver-BK4HVNV4.cjs} +145 -60
  15. package/dist/{CodexDriver-V4CL9APE.mjs → CodexDriver-fwcV84hX.mjs} +99 -14
  16. package/dist/{CodexTextGeneration-DTrSzY-I.cjs → CodexTextGeneration-Y2GSS7f1.cjs} +145 -99
  17. package/dist/{CodexTextGeneration-DoCidwvI.mjs → CodexTextGeneration-_4aT5BHa.mjs} +141 -95
  18. package/dist/{CopilotDriver-Dt13X60f.mjs → CopilotDriver-B12ZJ-L_.mjs} +69 -7
  19. package/dist/{CopilotDriver-rLcA8PSN.cjs → CopilotDriver-C7IyIwVW.cjs} +98 -36
  20. package/dist/{CursorDriver-C3s-8s9F.cjs → CursorDriver-BWmCfJ-w.cjs} +38 -32
  21. package/dist/{CursorDriver-HIPUs7cz.mjs → CursorDriver-C_p0v-ul.mjs} +12 -6
  22. package/dist/{ForgejoSourceControlProvider-JgiyrMqp.cjs → ForgejoSourceControlProvider-DTRrllIH.cjs} +14 -14
  23. package/dist/{ForgejoSourceControlProvider-CmvOAzEG.mjs → ForgejoSourceControlProvider-DmOGJEaJ.mjs} +3 -3
  24. package/dist/{GitHubSourceControlProvider-CItCpOcC.cjs → GitHubSourceControlProvider-D-YV8WP6.cjs} +16 -17
  25. package/dist/{GitHubSourceControlProvider-BYuvbcBf.mjs → GitHubSourceControlProvider-sQGcwnr3.mjs} +6 -7
  26. package/dist/{GitLabSourceControlProvider-CMce22nU.cjs → GitLabSourceControlProvider-kKYYnpER.cjs} +14 -14
  27. package/dist/{GitLabSourceControlProvider-DZzEaVSi.mjs → GitLabSourceControlProvider-mIl-K-4F.mjs} +3 -3
  28. package/dist/GrokDriver-BFOniP_K.cjs +567 -0
  29. package/dist/GrokDriver-CDcWkiAi.mjs +552 -0
  30. package/dist/{Metrics-a1h4iBQi.mjs → Metrics-C-3MahDy.mjs} +1 -107
  31. package/dist/{Metrics-Bcb9vCAe.cjs → Metrics-DCKbdeoH.cjs} +0 -168
  32. package/dist/{NodePTY-B_p5tLYO.mjs → NodePTY-DArvQ9bX.mjs} +1 -1
  33. package/dist/{OpenCodeDriver-DxGpgtDS.cjs → OpenCodeDriver-CckbFEQJ.cjs} +459 -141
  34. package/dist/{OpenCodeDriver-Bz_uJdMA.mjs → OpenCodeDriver-CnWJHyDJ.mjs} +430 -112
  35. package/dist/SideQuestionIsolation-5eGFRW0t.mjs +26 -0
  36. package/dist/SideQuestionIsolation-DvVKZWxi.cjs +37 -0
  37. package/dist/{SourceControlProviderDiscoveryCatalog-ZtwPWoxE.mjs → SourceControlProviderDiscoveryCatalog-BVvq7liJ.mjs} +2 -1
  38. package/dist/{SourceControlProviderDiscoveryCatalog-Dm_lhrhv.cjs → SourceControlProviderDiscoveryCatalog-CyUhKJLD.cjs} +6 -5
  39. package/dist/bin.cjs +12537 -3029
  40. package/dist/bin.mjs +10444 -965
  41. package/dist/client/assets/AccountSettings-DLbcE2w-.js +1 -0
  42. package/dist/client/assets/Adobe-CNS1-UCS2-fO900upv.bcmap +0 -0
  43. package/dist/client/assets/Adobe-GB1-UCS2-BA083yIo.bcmap +0 -0
  44. package/dist/client/assets/Adobe-Japan1-UCS2-BL-4M2vS.bcmap +0 -0
  45. package/dist/client/assets/Adobe-Korea1-UCS2-BEQZuOdo.bcmap +0 -0
  46. package/dist/client/assets/AiFocusSettings-FKvdkl4P.js +1 -0
  47. package/dist/client/assets/{AnimatedHeight-DPqb09B0.js → AnimatedHeight-CbIEyMLg.js} +1 -1
  48. package/dist/client/assets/AppearanceSettings-B2LsGKmL.js +1 -0
  49. package/dist/client/assets/{BranchToolbar.logic-CHRK3hDt.js → BranchToolbar.logic-BqkvYNPk.js} +1 -1
  50. package/dist/client/assets/{BrowserPanel-2Xu08il5.js → BrowserPanel-C_C4zjrh.js} +1 -1
  51. package/dist/client/assets/ChatRightPanel-ibiQ79jI.js +195 -0
  52. package/dist/client/assets/{ChatThreadRouteView-CNww3i2J.js → ChatThreadRouteView-c7AXmbSk.js} +1 -1
  53. package/dist/client/assets/CommandPaletteDialog-DdPKN6rv.js +1 -0
  54. package/dist/client/assets/CompositeRoot-DKwS-ADi.js +1 -0
  55. package/dist/client/assets/{ComputerUseSettings-BJs7jqR0.js → ComputerUseSettings-DM17BYP5.js} +1 -1
  56. package/dist/client/assets/ConnectionsSettings-D6wysIC8.js +7 -0
  57. package/dist/client/assets/ContextHandoffEndpointLabel-CsF_maM_.js +4 -0
  58. package/dist/client/assets/{DiagnosticsSettings-BmrqOKMe.js → DiagnosticsSettings-Bq2l-C4J.js} +2 -2
  59. package/dist/client/assets/{DialogHandle-pelzaaiH.js → DialogHandle-DuKTleCw.js} +1 -1
  60. package/dist/client/assets/{DialogPopup-BLM0vN4N.js → DialogPopup-Dt7DzTWv.js} +1 -1
  61. package/dist/client/assets/DialogRoot-DRyawL6l.js +1 -0
  62. package/dist/client/assets/{DialogTitle-BvIjMtMm.js → DialogTitle-BaxfPC6e.js} +1 -1
  63. package/dist/client/assets/DialogTrigger-D0PJ8bRT.js +1 -0
  64. package/dist/client/assets/{DialogViewport-Cz0OadGI.js → DialogViewport-C3B2JZWQ.js} +1 -1
  65. package/dist/client/assets/DraftChatThreadRouteView-B8YiD5NP.js +1 -0
  66. package/dist/client/assets/ETHK-B5-H-1MLb5v9x.bcmap +0 -0
  67. package/dist/client/assets/{ExternalIdentityWeb.logic-3rlDV7lT.js → ExternalIdentityWeb.logic-CrcNfdHK.js} +1 -1
  68. package/dist/client/assets/FoxitDingbats-BaQLufoW.pfb +0 -0
  69. package/dist/client/assets/FoxitFixed-Dyd5Nipw.pfb +0 -0
  70. package/dist/client/assets/FoxitFixedBold-D5TuYRwj.pfb +0 -0
  71. package/dist/client/assets/FoxitFixedBoldItalic-BqlXQ_Yv.pfb +0 -0
  72. package/dist/client/assets/FoxitFixedItalic-DqjQkmbS.pfb +0 -0
  73. package/dist/client/assets/FoxitSerif-qbgiDIe-.pfb +0 -0
  74. package/dist/client/assets/FoxitSerifBold-DZZ4CclT.pfb +0 -0
  75. package/dist/client/assets/FoxitSerifBoldItalic-DSQtwd_X.pfb +0 -0
  76. package/dist/client/assets/FoxitSerifItalic-CQs5lx9Y.pfb +0 -0
  77. package/dist/client/assets/FoxitSymbol-BVtbc20u.pfb +0 -0
  78. package/dist/client/assets/GBK-EUC-H-CAORqCkf.bcmap +0 -0
  79. package/dist/client/assets/GBK2K-H-Cv55KPk8.bcmap +0 -0
  80. package/dist/client/assets/GBKp-EUC-H-CElrnV5g.bcmap +0 -0
  81. package/dist/client/assets/GBT-EUC-H-BTsQIL1M.bcmap +0 -0
  82. package/dist/client/assets/GBT-H-DL9h-WkS.bcmap +0 -0
  83. package/dist/client/assets/GBTpc-EUC-H-DnIh5WJ3.bcmap +0 -0
  84. package/dist/client/assets/{GlassSurface-CEVIdyfP.js → GlassSurface-CBIEgwt1.js} +1 -1
  85. package/dist/client/assets/HKscs-B5-H-CXbBbq6g.bcmap +0 -0
  86. package/dist/client/assets/{HostedConnectionControls-r9cyZPyF.js → HostedConnectionControls-DOpTlXzE.js} +1 -1
  87. package/dist/client/assets/{HostedHubRoot-BkfafJ5x.js → HostedHubRoot-C1jq8cM6.js} +2 -2
  88. package/dist/client/assets/{HostedNativeAuthorizationRoute-CqHuW853.js → HostedNativeAuthorizationRoute-Clw1DHQW.js} +2 -2
  89. package/dist/client/assets/{HostedNodeRenameDialog-C7m-nvTj.js → HostedNodeRenameDialog-Bd_Qu_ek.js} +1 -1
  90. package/dist/client/assets/{HostedRelayTrustNotice-DNZQyAX0.js → HostedRelayTrustNotice-CGcBpT9m.js} +1 -1
  91. package/dist/client/assets/{IntegrationsSettingsPanel-hul3ysgL.js → IntegrationsSettingsPanel-J0qODRW-.js} +2 -2
  92. package/dist/client/assets/KSC-Johab-H-CGtV3MPT.bcmap +0 -0
  93. package/dist/client/assets/{KeybindingsSettings-Cme6omBM.js → KeybindingsSettings-CwxIHsFy.js} +1 -1
  94. package/dist/client/assets/{LazyBrowserPanel-COJFwNK7.js → LazyBrowserPanel-VNAn6AUL.js} +2 -2
  95. package/dist/client/assets/LiberationSans-Bold-BPt4bU5Z.ttf +0 -0
  96. package/dist/client/assets/LiberationSans-BoldItalic-Bj53-jFw.ttf +0 -0
  97. package/dist/client/assets/LiberationSans-Italic-5QhGB3P9.ttf +0 -0
  98. package/dist/client/assets/LiberationSans-Regular-cbskN6YR.ttf +0 -0
  99. package/dist/client/assets/McpServersSettings-1pkIeutq.js +6 -0
  100. package/dist/client/assets/MobileSheet-DddfN8c2.js +1 -0
  101. package/dist/client/assets/{NodeSecuritySettings-CwT5nEW9.js → NodeSecuritySettings-BOIZeFZo.js} +1 -1
  102. package/dist/client/assets/OpinionatedPluginsSettings-oTIrPtIb.js +1 -0
  103. package/dist/client/assets/PdfAttachmentPreview-BCMO9OHD.js +54 -0
  104. package/dist/client/assets/{PhoneGetAppInterstitial-BBnGXVkR.js → PhoneGetAppInterstitial-0EOj-PbW.js} +1 -1
  105. package/dist/client/assets/PhoneHome-Cg7l3b1T.js +1 -0
  106. package/dist/client/assets/{PhoneSettingsSurface-DdVCndyt.js → PhoneSettingsSurface-BXAUtZ9M.js} +2 -2
  107. package/dist/client/assets/ProvidersSettingsPanel-BaJgypXu.js +1 -0
  108. package/dist/client/assets/{QuitShortcutFeedback-mF7X0WMD.js → QuitShortcutFeedback-DgJFEd6b.js} +1 -1
  109. package/dist/client/assets/{RedactedSensitiveText-DovqFcmM.js → RedactedSensitiveText-D1VC2xa7.js} +1 -1
  110. package/dist/client/assets/RootAppShell-D2RjZ9jQ.js +7 -0
  111. package/dist/client/assets/Separator-CeMncdkm.js +1 -0
  112. package/dist/client/assets/SettingsDialog-B2hEb6u8.js +2 -0
  113. package/dist/client/assets/SettingsPanels-DtWLQDne.js +3 -0
  114. package/dist/client/assets/{SettingsPanels.editor-d-rVlbeN.js → SettingsPanels.editor-DJRckD71.js} +1 -1
  115. package/dist/client/assets/SourceControlSettings-IpoZrjt5.js +1 -0
  116. package/dist/client/assets/StatisticsPage-CUpE_5Gr.js +1 -0
  117. package/dist/client/assets/StatisticsPanel-CHrAY5AP.js +1 -0
  118. package/dist/client/assets/StatisticsSettingsLink-bGWuxNG3.js +1 -0
  119. package/dist/client/assets/{ThreadTerminalDrawer-DaLrSTn9.js → ThreadTerminalDrawer-BEv83xrk.js} +3 -3
  120. package/dist/client/assets/ThreadWorkspacePanel-BdMdJVHJ.js +2073 -0
  121. package/dist/client/assets/UniCNS-UCS2-H-DWzv8UhH.bcmap +0 -0
  122. package/dist/client/assets/UniCNS-UTF16-H-Bw0JKgCq.bcmap +0 -0
  123. package/dist/client/assets/UniCNS-UTF32-H-IE_GrH2i.bcmap +0 -0
  124. package/dist/client/assets/UniCNS-UTF8-H-BbLcFh6Q.bcmap +0 -0
  125. package/dist/client/assets/UniGB-UCS2-H-D7xzRvZN.bcmap +0 -0
  126. package/dist/client/assets/UniGB-UTF16-H-DKjbEwc0.bcmap +0 -0
  127. package/dist/client/assets/UniGB-UTF32-H-Behfouj5.bcmap +0 -0
  128. package/dist/client/assets/UniGB-UTF8-H-EROft1ro.bcmap +0 -0
  129. package/dist/client/assets/UniJIS-UCS2-H-2DbZ0MaQ.bcmap +0 -0
  130. package/dist/client/assets/UniJIS-UTF16-H-BlDDPdCK.bcmap +0 -0
  131. package/dist/client/assets/UniJIS-UTF32-H-BIQPWkjv.bcmap +0 -0
  132. package/dist/client/assets/UniJIS-UTF8-H-CGusholx.bcmap +0 -0
  133. package/dist/client/assets/UniJIS2004-UTF16-H-KXixH-HI.bcmap +0 -0
  134. package/dist/client/assets/UniJIS2004-UTF32-H-CXrD-9YE.bcmap +0 -0
  135. package/dist/client/assets/UniJIS2004-UTF8-H-BkOctZjn.bcmap +0 -0
  136. package/dist/client/assets/UniJISX0213-UTF32-H-BavAhZjb.bcmap +0 -0
  137. package/dist/client/assets/UniJISX02132004-UTF32-H-DAH-AgUq.bcmap +0 -0
  138. package/dist/client/assets/UniKS-UCS2-H-YeUc7k1L.bcmap +0 -0
  139. package/dist/client/assets/UniKS-UTF16-H-B0dvB-Td.bcmap +0 -0
  140. package/dist/client/assets/UniKS-UTF32-H-olR_LtmR.bcmap +0 -0
  141. package/dist/client/assets/UniKS-UTF8-H-CbpebD-y.bcmap +0 -0
  142. package/dist/client/assets/{activity-bn_fBQGf.js → activity-BmRcsTyL.js} +1 -1
  143. package/dist/client/assets/{alert-BmLJh6DH.js → alert-C5UiA2xk.js} +1 -1
  144. package/dist/client/assets/{appChrome-Dy57Ve9N.js → appChrome-CsZ2ylc1.js} +1 -1
  145. package/dist/client/assets/{arrow-left-pzj1cbX3.js → arrow-left-CSz-z20j.js} +1 -1
  146. package/dist/client/assets/{arrow-right-BW5jU-vo.js → arrow-right-DEi91hao.js} +1 -1
  147. package/dist/client/assets/{arrow-up-right-AfC5AaSO.js → arrow-up-right-D7SpcTV9.js} +1 -1
  148. package/dist/client/assets/authorization-B1YXfej3.js +1 -0
  149. package/dist/client/assets/badge-BjvTY7-E.js +1 -0
  150. package/dist/client/assets/{bot-CsKkSRlb.js → bot-SC4UGZyw.js} +1 -1
  151. package/dist/client/assets/{capabilities-DskyVNd2.js → capabilities-BCkDNe83.js} +1 -1
  152. package/dist/client/assets/{chart-column-DhvWXIiH.js → chart-column-C08MuLgY.js} +1 -1
  153. package/dist/client/assets/chevron-right-DgB53U1_.js +1 -0
  154. package/dist/client/assets/{clipboard-copy-fJnfdl4H.js → clipboard-copy-D74Wvnon.js} +1 -1
  155. package/dist/client/assets/{data-list-_E-Al1sf.js → data-list-CZ4Utnfl.js} +1 -1
  156. package/dist/client/assets/{desktopWorkspace-DycXKuMm.js → desktopWorkspace-DVfn9ZT_.js} +1 -1
  157. package/dist/client/assets/{download-CLQzE1di.js → download-Dio40wIJ.js} +1 -1
  158. package/dist/client/assets/editorPreferences-2dG4uloq.js +1 -0
  159. package/dist/client/assets/{empty-YXFtCUDN.js → empty-6LExKYgQ.js} +1 -1
  160. package/dist/client/assets/{group-DOCkUmuY.js → group-D_mu0Kiq.js} +1 -1
  161. package/dist/client/assets/{hostedConnectionCoordinator-JZ1dLx4v.js → hostedConnectionCoordinator-YkDLnATK.js} +1 -1
  162. package/dist/client/assets/{hubRoutes-C2S5of9_.js → hubRoutes-D3quWvU7.js} +1 -1
  163. package/dist/client/assets/{index-CvRFRkBK.js → index-7MTgf8YI.js} +2 -2
  164. package/dist/client/assets/{input-C2xv8mMt.js → input-CfVJycb1.js} +1 -1
  165. package/dist/client/assets/jbig2-CNFLgX9F.wasm +0 -0
  166. package/dist/client/assets/kbd-uFa_tY-L.js +1 -0
  167. package/dist/client/assets/{key-round-CYcb9lAa.js → key-round-C-oUSjpF.js} +1 -1
  168. package/dist/client/assets/{layers-CGlOWYxu.js → layers-Co2a5C1k.js} +1 -1
  169. package/dist/client/assets/{log-out-CZW2EpNJ.js → log-out-pWFhbvwr.js} +1 -1
  170. package/dist/client/assets/{logging-BpmZOfmu.js → logging-JMrwaeZh.js} +1 -1
  171. package/dist/client/assets/main-BNPtp9Z0.css +2 -0
  172. package/dist/client/assets/main-CGeD6yVE.js +9 -0
  173. package/dist/client/assets/openjpeg-MeY6OQBn.wasm +0 -0
  174. package/dist/client/assets/{palette-CQOuNfSO.js → palette-B_6C4fD6.js} +1 -1
  175. package/dist/client/assets/pdf.worker.min-Dswkl-cV.mjs +29 -0
  176. package/dist/client/assets/{play-CPVy9wwV.js → play-DFtc9zBy.js} +1 -1
  177. package/dist/client/assets/primary-CNUdEGcv.js +2 -0
  178. package/dist/client/assets/providerDriverMeta-Cg_XLUfo.js +1 -0
  179. package/dist/client/assets/{ProviderModelPicker-DoYEUZrn.js → providerInstances-JaDrOWPZ.js} +1 -1
  180. package/dist/client/assets/providerModels-5uOq3qPC.js +1 -0
  181. package/dist/client/assets/qcms_bg-3PJi_GXR.wasm +0 -0
  182. package/dist/client/assets/{qr-code-BPqDlVMn.js → qr-code-BU354aLS.js} +1 -1
  183. package/dist/client/assets/{qr-code-C6BVTc4V.js → qr-code-DaHWf7Oq.js} +1 -1
  184. package/dist/client/assets/quickjs-eval-zJSp5SB4.wasm +0 -0
  185. package/dist/client/assets/radio-group-DKaA1eey.js +2 -0
  186. package/dist/client/assets/{refresh-cw-B5Cz1z3e.js → refresh-cw-CY5BeUEr.js} +1 -1
  187. package/dist/client/assets/runtime-BKneT96Q.js +17 -0
  188. package/dist/client/assets/{save-C7zM6ey6.js → save-DIHMjHXd.js} +1 -1
  189. package/dist/client/assets/{scroll-area-5OU_pvTW.js → scroll-area-Cq4SX9P8.js} +1 -1
  190. package/dist/client/assets/{scrollEdges-qnEXfIOg.js → scrollEdges-BaWRjrac.js} +1 -1
  191. package/dist/client/assets/{separator-B5HfRiaO.js → separator-BN705fC0.js} +1 -1
  192. package/dist/client/assets/{settingsLayout-CfKq88KD.js → settingsLayout-DQERzSce.js} +1 -1
  193. package/dist/client/assets/{sheet-B9gQDy_I.js → sheet-CFvRY7T6.js} +1 -1
  194. package/dist/client/assets/{shield-rdjnBE2Q.js → shield-Zn2kFj5M.js} +1 -1
  195. package/dist/client/assets/{shield-alert-7yBlEyOs.js → shield-alert-DMB5gKiC.js} +1 -1
  196. package/dist/client/assets/{shield-check-CnKgVJ0F.js → shield-check-DyNf6Bky.js} +1 -1
  197. package/dist/client/assets/{sidebar-BdvL1Pbj.js → sidebar-Bsh64sLK.js} +1 -1
  198. package/dist/client/assets/sidebarProjectFolders-CQbpO9ZI.js +4 -0
  199. package/dist/client/assets/{sidebarStatusText-CZKsUFBD.js → sidebarStatusText-DCo-whyK.js} +1 -1
  200. package/dist/client/assets/{skeleton-CoyLqyaB.js → skeleton-DEuowfjY.js} +1 -1
  201. package/dist/client/assets/{smartphone-CBgpMHXR.js → smartphone-BLWJ7C9-.js} +1 -1
  202. package/dist/client/assets/{sparkles-w-UZXQx1.js → sparkles-DAXDXp_s.js} +1 -1
  203. package/dist/client/assets/src-DPpEXU6w.js +14 -0
  204. package/dist/client/assets/{star-BZ-RtSFD.js → star-CjQxHYbD.js} +1 -1
  205. package/dist/client/assets/switch-LahPAvrd.js +48 -0
  206. package/dist/client/assets/{toggle-DVGrNHjq.js → toggle-45lsrmyi.js} +1 -1
  207. package/dist/client/assets/{toggle-group-CNDOfNhH.js → toggle-group-D5pl24ED.js} +1 -1
  208. package/dist/client/assets/{tokenModePresentation-CQNdC9CW.js → tokenModePresentation-CPUsUGY4.js} +1 -1
  209. package/dist/client/assets/tooltip-B8-izeMo.js +1 -0
  210. package/dist/client/assets/{unplug-CRUwFNFw.js → unplug-Bjpxv8i0.js} +1 -1
  211. package/dist/client/assets/usage-8vQUo0mr.js +1 -0
  212. package/dist/client/assets/useAppSidebarCollapsed-uwz9Hlgc.js +1 -0
  213. package/dist/client/assets/useBaseUiId-BtuL7q77.js +1 -0
  214. package/dist/client/assets/useLabelableId-N_LsKNbf.js +1 -0
  215. package/dist/client/assets/useNavigate-DADLi29i.js +1 -0
  216. package/dist/client/assets/usePhoneThreadActions-B9_HK7tn.js +1 -0
  217. package/dist/client/assets/usePopupViewport-w8BEny9j.js +1 -0
  218. package/dist/client/assets/useScrollLock-bCmUzTgK.js +1 -0
  219. package/dist/client/assets/useStatistics-DJtONxT0.js +55 -0
  220. package/dist/client/assets/useTriggerFocusGuards-C7JWO2LT.js +1 -0
  221. package/dist/client/assets/useValueChanged-DkoUO9bY.js +1 -0
  222. package/dist/client/assets/{user-round-DStbWN3z.js → user-round-DEWIPpNs.js} +1 -1
  223. package/dist/client/assets/{vscode-icons-BihBo3tb.js → vscode-icons-DTH-Vj-_.js} +1 -1
  224. package/dist/client/assets/workspaceMetadataProjection-BnpxBe8S.js +1 -0
  225. package/dist/client/assets/{wrench-BBIgGxy9.js → wrench-36WYdK_a.js} +1 -1
  226. package/dist/client/index.html +1 -1
  227. package/dist/collectUint8StreamText-BAUF-vzz.mjs +37 -0
  228. package/dist/collectUint8StreamText-vagpNUMJ.cjs +42 -0
  229. package/dist/deviceHostWorker-C-BSnmkn.mjs +167 -0
  230. package/dist/deviceHostWorker-CYnrwfrv.cjs +169 -0
  231. package/dist/git-C4iJMbBu.mjs +132 -0
  232. package/dist/git-irmB8_k7.cjs +218 -0
  233. package/dist/{makeManagedServerProvider-CwYhl_P-.mjs → makeManagedServerProvider-BINne1KE.mjs} +3 -38
  234. package/dist/{makeManagedServerProvider-Dy2Ny9tk.cjs → makeManagedServerProvider-DGbd8BhM.cjs} +1 -60
  235. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  236. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  237. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  238. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  239. package/dist/runtimeSession-Bj0OUcNJ.cjs +63 -0
  240. package/dist/runtimeSession-CA6cLWg0.mjs +40 -0
  241. package/dist/schemaJson-CaG1bOvo.mjs +49 -0
  242. package/dist/schemaJson-CuhFxa8p.cjs +66 -0
  243. package/dist/{collectUint8StreamText-whblCEfg.cjs → src-BlzIcnVG.cjs} +522 -116
  244. package/dist/{collectUint8StreamText-CE1Re5Ij.mjs → src-DtEOcXdl.mjs} +350 -94
  245. package/package.json +1 -1
  246. package/dist/AcpNativeLogging-CA6XYzIS.cjs +0 -5130
  247. package/dist/AcpNativeLogging-D4-VoHrq.mjs +0 -5015
  248. package/dist/client/assets/AccountSettings-Bv57-JYy.js +0 -1
  249. package/dist/client/assets/AiFocusSettings-DCPHmJpA.js +0 -1
  250. package/dist/client/assets/AppearanceSettings-EmTrtb_U.js +0 -1
  251. package/dist/client/assets/ChatRightPanel-C1VD6GCV.js +0 -194
  252. package/dist/client/assets/CommandPaletteDialog-B_f3fKp7.js +0 -1
  253. package/dist/client/assets/CompositeRoot-B40iitmH.js +0 -1
  254. package/dist/client/assets/ConnectionsSettings-B9nfvgLG.js +0 -7
  255. package/dist/client/assets/ContextHandoffEndpointLabel-BSQOArMR.js +0 -4
  256. package/dist/client/assets/DialogRoot-CY6ZzEUS.js +0 -1
  257. package/dist/client/assets/DialogTrigger-CIeVAA-a.js +0 -1
  258. package/dist/client/assets/DraftChatThreadRouteView-DMIGMESb.js +0 -1
  259. package/dist/client/assets/McpServersSettings-CPeNF8_u.js +0 -6
  260. package/dist/client/assets/MobileSheet-BZo-RAfm.js +0 -1
  261. package/dist/client/assets/OpinionatedPluginsSettings-D8A1CbMG.js +0 -1
  262. package/dist/client/assets/PhoneHome-BTKOPVjw.js +0 -1
  263. package/dist/client/assets/ProvidersSettingsPanel-ldDCPVIY.js +0 -1
  264. package/dist/client/assets/RootAppShell-CzmEWO9w.js +0 -7
  265. package/dist/client/assets/Separator-BhAVTIOc.js +0 -1
  266. package/dist/client/assets/SettingsDialog-ByXgBN0U.js +0 -2
  267. package/dist/client/assets/SettingsPanels-Bgf4vkrJ.js +0 -3
  268. package/dist/client/assets/SourceControlSettings-dKw0FaN1.js +0 -1
  269. package/dist/client/assets/StatisticsPage-C2RuqDIK.js +0 -1
  270. package/dist/client/assets/StatisticsPanel-DqoXnrhQ.js +0 -1
  271. package/dist/client/assets/StatisticsSettingsLink-C_f31sb4.js +0 -1
  272. package/dist/client/assets/ThreadWorkspacePanel-BvRZIxZQ.js +0 -2073
  273. package/dist/client/assets/authorization-7xVVtCBu.js +0 -1
  274. package/dist/client/assets/badge-DnBuGHGL.js +0 -1
  275. package/dist/client/assets/chevron-right-CITtTwME.js +0 -1
  276. package/dist/client/assets/editorPreferences-Bg624RVT.js +0 -1
  277. package/dist/client/assets/kbd-4-4mGdIa.js +0 -1
  278. package/dist/client/assets/main-CC-U8LrA.css +0 -2
  279. package/dist/client/assets/main-CzDOnLFw.js +0 -9
  280. package/dist/client/assets/primary-CjhRI8fe.js +0 -2
  281. package/dist/client/assets/providerDriverMeta-BVHpFupf.js +0 -1
  282. package/dist/client/assets/providerModels-BsybzP4P.js +0 -1
  283. package/dist/client/assets/radio-group-C8qudOQH.js +0 -2
  284. package/dist/client/assets/runtime-Bxg7k81u.js +0 -17
  285. package/dist/client/assets/sidebarProjectFolders-BH8XBqNe.js +0 -4
  286. package/dist/client/assets/src-Bi-5Nw9C.js +0 -14
  287. package/dist/client/assets/switch-CEJEmLe7.js +0 -48
  288. package/dist/client/assets/tooltip-B7Z4qomY.js +0 -1
  289. package/dist/client/assets/useAppSidebarCollapsed-wq6czkNJ.js +0 -1
  290. package/dist/client/assets/useBaseUiId-OYaGjnkh.js +0 -1
  291. package/dist/client/assets/useLabelableId-VMc-yITe.js +0 -1
  292. package/dist/client/assets/useNavigate-DVi0rBlf.js +0 -1
  293. package/dist/client/assets/usePhoneThreadActions-CwwHikjB.js +0 -1
  294. package/dist/client/assets/usePopupViewport-BcSIK_ph.js +0 -1
  295. package/dist/client/assets/useScrollLock-BQf9VYJT.js +0 -1
  296. package/dist/client/assets/useStatistics-DczKdEfy.js +0 -55
  297. package/dist/client/assets/useTriggerFocusGuards-DjP-D0_a.js +0 -1
  298. package/dist/client/assets/useValueChanged-CRwCkFdy.js +0 -1
  299. package/dist/client/assets/workspaceMetadataProjection-j3BGlVOB.js +0 -1
@@ -0,0 +1 @@
1
+ import{et as e,ft as t,st as n,ut as r}from"./src-DPpEXU6w.js";import{Nn as i}from"./runtime-BKneT96Q.js";function a(e){return typeof e==`object`&&!!e}function o(e){return typeof e==`string`&&e.length>0}function s(e,t){return a(e)&&e.environmentId===t}function c(e,t){if(!a(e)||e.schemaVersion!==1||!o(e.environmentId))return!1;let n=e.environmentId;if(t!==void 0&&n!==t||typeof e.capturedAt!=`number`||!Number.isFinite(e.capturedAt)||!Array.isArray(e.projects)||!Array.isArray(e.worktrees)||!Array.isArray(e.threads))return!1;let r=new Set;for(let t of e.projects){if(!s(t,n)||!o(t.id)||!o(t.name)||typeof t.cwd!=`string`||r.has(t.id))return!1;r.add(t.id)}let i=new Set;for(let t of e.worktrees){if(!s(t,n)||!o(t.id)||!o(t.projectId)||!r.has(t.projectId)||i.has(t.id))return!1;i.add(t.id)}let c=new Set;for(let t of e.threads){if(!s(t,n)||!o(t.id)||!o(t.projectId)||!r.has(t.projectId)||c.has(t.id)||t.worktreeId!=null&&!i.has(t.worktreeId))return!1;c.add(t.id)}return!0}function l(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function u(e){return JSON.stringify([e.hubOrigin.replace(/\/+$/g,``).toLowerCase(),e.accountId,e.environmentId])}function d(e){let t=e.maxEntries??32,n=e.maxBytes??16777216;if(e.incoming.payloadBytes>n||t<1)return{accepted:!1,evict:[]};let r=u(e.incoming.namespace),i=e.existing.filter(e=>u(e.namespace)!==r).toSorted((e,t)=>e.updatedAt-t.updatedAt||u(e.namespace).localeCompare(u(t.namespace))),a=i.length+1,o=i.reduce((e,t)=>e+t.payloadBytes,0)+e.incoming.payloadBytes,s=[];for(let e of i){if(a<=t&&o<=n)break;s.push(e.namespace),--a,o-=e.payloadBytes}return{accepted:a<=t&&o<=n,evict:s}}function f(t,n=Date.now(),r=!1){let a=i.getState().environmentStateById[t];if(!a?.bootstrapComplete)return null;let o={schemaVersion:1,environmentId:t,capturedAt:n,projects:a.projectIds.flatMap(e=>{let n=a.projectById[e];return n?[{environmentId:t,id:n.id,name:n.name,cwd:n.cwd,repositoryIdentity:n.repositoryIdentity??null,createdAt:n.createdAt??null,updatedAt:n.updatedAt??null}]:[]}),worktrees:(a.worktreeIds??[]).flatMap(e=>{let n=a.worktreeById?.[e];return n?[{environmentId:t,id:n.id,projectId:n.projectId,title:n.title??null,branch:n.branch,worktreePath:n.worktreePath,workItemLabel:n.workItemKey??n.prTitle??n.issueTitle??null,pullRequestNumber:n.prNumber,archivedAt:n.archivedAt,updatedAt:n.updatedAt}]:[]}),threads:a.threadIds.flatMap(n=>{let i=a.sidebarThreadSummaryById[n];return i?[{environmentId:t,id:i.id,projectId:i.projectId,worktreeId:i.worktreeId?e.make(i.worktreeId):null,title:i.title,createdAt:i.createdAt,updatedAt:i.updatedAt??null,archivedAt:i.archivedAt,settledOverride:i.settledOverride??null,settledAt:i.settledAt??null,snoozedUntil:i.snoozedUntil??null,snoozedAt:i.snoozedAt??null,modelSelection:i.modelSelection??null,providerDriver:i.providerDriver??null,branch:i.branch,hasPendingApprovals:i.hasPendingApprovals,hasPendingUserInput:i.hasPendingUserInput,hasActionableProposedPlan:i.hasActionableProposedPlan,deliveryUnknown:r}]:[]})};return c(o,t)?o:null}function p(e,t){return e.environmentId===t?e:{...e,environmentId:t,projects:e.projects.map(e=>({...e,environmentId:t})),worktrees:e.worktrees.map(e=>({...e,environmentId:t})),threads:e.threads.map(e=>({...e,environmentId:t}))}}function m(e){return{capturedAt:e.capturedAt,projects:e.projects.map(e=>({id:e.id,environmentId:e.environmentId,name:e.name,cwd:e.cwd,repositoryIdentity:e.repositoryIdentity,defaultModelSelection:null,createdAt:e.createdAt??void 0,updatedAt:e.updatedAt??void 0,scripts:[]})),worktrees:e.worktrees.map(e=>({id:e.id,environmentId:e.environmentId,projectId:e.projectId,title:e.title,branch:e.branch,worktreePath:e.worktreePath,origin:`manual`,prNumber:e.pullRequestNumber,issueNumber:null,prTitle:e.workItemLabel,issueTitle:null,prState:null,prIsDraft:null,issueState:null,workItemProvider:null,workItemKey:null,workItemTitle:e.workItemLabel,workItemState:null,workItemStateName:null,workItemUrl:null,createdAt:e.updatedAt,updatedAt:e.updatedAt,archivedAt:e.archivedAt,manualPosition:0})),threads:e.threads.map(e=>{let i=e.providerDriver??r.make(`codex`),a=e.modelSelection??{instanceId:t(i),model:n[i]??`gpt-5.6-terra`};return{shell:{id:e.id,environmentId:e.environmentId,codexThreadId:null,projectId:e.projectId,title:e.title,modelSelection:a,runtimeMode:`full-access`,interactionMode:`default`,error:null,createdAt:e.createdAt,archivedAt:e.archivedAt,settledOverride:e.settledOverride??null,settledAt:e.settledAt??null,snoozedUntil:e.snoozedUntil??null,snoozedAt:e.snoozedAt??null,updatedAt:e.updatedAt??void 0,branch:e.branch,worktreePath:null,worktreeId:e.worktreeId},summary:{id:e.id,environmentId:e.environmentId,projectId:e.projectId,title:e.title,interactionMode:`default`,modelSelection:a,providerDriver:e.providerDriver,session:null,createdAt:e.createdAt,archivedAt:e.archivedAt,settledOverride:e.settledOverride??null,settledAt:e.settledAt??null,snoozedUntil:e.snoozedUntil??null,snoozedAt:e.snoozedAt??null,updatedAt:e.updatedAt??void 0,latestTurn:null,branch:e.branch,worktreePath:null,worktreeId:e.worktreeId,latestUserMessageAt:null,hasPendingApprovals:e.hasPendingApprovals,hasPendingUserInput:e.hasPendingUserInput,hasActionableProposedPlan:e.hasActionableProposedPlan}}})}}export{d as a,c as i,p as n,u as o,m as r,l as s,f as t};
@@ -1 +1 @@
1
- import{Na as e}from"./runtime-Bxg7k81u.js";var t={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};t.node;var n=e(t);export{n as t};
1
+ import{Pa as e}from"./runtime-BKneT96Q.js";var t={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};t.node;var n=e(t);export{n as t};
@@ -92,7 +92,7 @@
92
92
  }
93
93
  </style>
94
94
  <title>Ryco (Alpha)</title>
95
- <script type="module" crossorigin src="/assets/index-CvRFRkBK.js"></script>
95
+ <script type="module" crossorigin src="/assets/index-7MTgf8YI.js"></script>
96
96
  </head>
97
97
  <body>
98
98
  <div id="root">
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Effect, Stream } from "effect";
4
+ //#region src/stream/collectUint8StreamText.ts
5
+ const collectUint8StreamText = (input) => {
6
+ const decoder = new TextDecoder();
7
+ const maxBytes = input.maxBytes ?? Number.POSITIVE_INFINITY;
8
+ const truncatedMarker = input.truncatedMarker ?? "";
9
+ return input.stream.pipe(Stream.runFold(() => ({
10
+ text: "",
11
+ bytes: 0,
12
+ truncated: false
13
+ }), (state, chunk) => {
14
+ if (state.truncated) return state;
15
+ const remainingBytes = maxBytes - state.bytes;
16
+ if (remainingBytes <= 0) return {
17
+ ...state,
18
+ text: `${state.text}${truncatedMarker}`,
19
+ truncated: true
20
+ };
21
+ const nextChunk = chunk.byteLength > remainingBytes ? chunk.slice(0, remainingBytes) : chunk;
22
+ const text = `${state.text}${decoder.decode(nextChunk, { stream: true })}`;
23
+ const bytes = state.bytes + nextChunk.byteLength;
24
+ const truncated = chunk.byteLength > remainingBytes;
25
+ return {
26
+ text: truncated ? `${text}${truncatedMarker}` : text,
27
+ bytes,
28
+ truncated
29
+ };
30
+ }), Effect.map((state) => ({
31
+ text: state.truncated ? state.text : `${state.text}${decoder.decode()}`,
32
+ bytes: state.bytes,
33
+ truncated: state.truncated
34
+ })));
35
+ };
36
+ //#endregion
37
+ export { collectUint8StreamText as t };
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+
3
+ let effect = require("effect");
4
+ //#region src/stream/collectUint8StreamText.ts
5
+ const collectUint8StreamText = (input) => {
6
+ const decoder = new TextDecoder();
7
+ const maxBytes = input.maxBytes ?? Number.POSITIVE_INFINITY;
8
+ const truncatedMarker = input.truncatedMarker ?? "";
9
+ return input.stream.pipe(effect.Stream.runFold(() => ({
10
+ text: "",
11
+ bytes: 0,
12
+ truncated: false
13
+ }), (state, chunk) => {
14
+ if (state.truncated) return state;
15
+ const remainingBytes = maxBytes - state.bytes;
16
+ if (remainingBytes <= 0) return {
17
+ ...state,
18
+ text: `${state.text}${truncatedMarker}`,
19
+ truncated: true
20
+ };
21
+ const nextChunk = chunk.byteLength > remainingBytes ? chunk.slice(0, remainingBytes) : chunk;
22
+ const text = `${state.text}${decoder.decode(nextChunk, { stream: true })}`;
23
+ const bytes = state.bytes + nextChunk.byteLength;
24
+ const truncated = chunk.byteLength > remainingBytes;
25
+ return {
26
+ text: truncated ? `${text}${truncatedMarker}` : text,
27
+ bytes,
28
+ truncated
29
+ };
30
+ }), effect.Effect.map((state) => ({
31
+ text: state.truncated ? state.text : `${state.text}${decoder.decode()}`,
32
+ bytes: state.bytes,
33
+ truncated: state.truncated
34
+ })));
35
+ };
36
+ //#endregion
37
+ Object.defineProperty(exports, "collectUint8StreamText", {
38
+ enumerable: true,
39
+ get: function() {
40
+ return collectUint8StreamText;
41
+ }
42
+ });
@@ -0,0 +1,167 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { F as deviceHostOperations, I as isDeviceHostOperation, L as HostDeviceBackend, M as DeviceManager, N as DeviceHostRequest, P as decodeDeviceHostValue, R as makeBootOwnershipStore, bt as version, j as localDeviceHost, z as DeviceBackendError } from "./bin.mjs";
4
+ import { createServer } from "node:net";
5
+ import { Schema } from "effect";
6
+ import * as path$1 from "node:path";
7
+ import { homedir } from "node:os";
8
+ //#region src/device/deviceHostWorker.ts
9
+ /**
10
+ * SSH is the authentication boundary. No HTTP/RPC listener, provider sessions or
11
+ * browser credentials are started here. One coding node owns a Mac host at a time.
12
+ * A loopback port is only an OS-owned lock (connections receive no data).
13
+ */
14
+ async function runDeviceHostWorker() {
15
+ if (process.platform !== "darwin") throw new Error("Device host requires macOS");
16
+ const lock = createServer((socket) => socket.destroy());
17
+ await new Promise((resolve, reject) => {
18
+ lock.once("error", reject);
19
+ lock.listen({
20
+ host: "127.0.0.1",
21
+ port: 49177,
22
+ exclusive: true
23
+ }, resolve);
24
+ });
25
+ const backend = new HostDeviceBackend([localDeviceHost()]);
26
+ const manager = new DeviceManager({
27
+ backend,
28
+ bootOwnership: makeBootOwnershipStore(path$1.join(process.env.RYCO_HOME?.trim() || path$1.join(homedir(), ".ryco"), "device-host", "boot-ownership.json"))
29
+ });
30
+ const session = await startDeviceHostSession(backend, process.stdin, process.stdout, manager).catch(async (error) => {
31
+ await manager.dispose();
32
+ lock.close();
33
+ throw error;
34
+ });
35
+ const stop = () => {
36
+ session.close().finally(() => lock.close());
37
+ };
38
+ process.once("SIGTERM", stop);
39
+ process.once("SIGINT", stop);
40
+ session.done.finally(() => lock.close());
41
+ }
42
+ /** Testable stdio lifecycle; EOF, timeout and protocol failure share one cleanup path. */
43
+ async function startDeviceHostSession(backend, input, output, manager = new DeviceManager({ backend })) {
44
+ let closed = false;
45
+ let queue = Promise.resolve();
46
+ let queued = 0;
47
+ let lastInput = Date.now();
48
+ let buffer = "";
49
+ const send = (value) => {
50
+ if (!closed) output.write(JSON.stringify(value) + "\n");
51
+ };
52
+ let finish;
53
+ const done = new Promise((resolve) => {
54
+ finish = resolve;
55
+ });
56
+ const close = () => {
57
+ if (closed) return done;
58
+ closed = true;
59
+ clearInterval(heartbeat);
60
+ input.pause();
61
+ queue.finally(async () => {
62
+ await manager.dispose();
63
+ input.destroy();
64
+ finish();
65
+ });
66
+ return done;
67
+ };
68
+ const heartbeat = setInterval(() => {
69
+ if (Date.now() - lastInput > 6e4) close();
70
+ }, 1e4);
71
+ input.setEncoding("utf8");
72
+ input.on("end", close);
73
+ input.on("error", close);
74
+ output.on("error", close);
75
+ try {
76
+ await manager.reclaimOrphanedBoots();
77
+ send({
78
+ type: "ready",
79
+ protocol: 1,
80
+ version
81
+ });
82
+ } catch (error) {
83
+ close();
84
+ throw error;
85
+ }
86
+ input.on("data", (chunk) => {
87
+ if (closed) return;
88
+ lastInput = Date.now();
89
+ buffer += chunk;
90
+ if (Buffer.byteLength(buffer) > 65536) {
91
+ close();
92
+ return;
93
+ }
94
+ let newline;
95
+ while ((newline = buffer.indexOf("\n")) >= 0) {
96
+ const line = buffer.slice(0, newline);
97
+ buffer = buffer.slice(newline + 1);
98
+ try {
99
+ const raw = JSON.parse(line);
100
+ if (raw && typeof raw === "object" && "type" in raw && raw.type === "ping") {
101
+ send({ type: "pong" });
102
+ continue;
103
+ }
104
+ const request = Schema.decodeUnknownSync(DeviceHostRequest)(raw);
105
+ if (!isDeviceHostOperation(request.method)) throw new Error("method");
106
+ const method = request.method;
107
+ const args = decodeDeviceHostValue(deviceHostOperations[method].input, request.args.map((v) => v === null ? void 0 : v));
108
+ if (++queued > 32) {
109
+ close();
110
+ return;
111
+ }
112
+ queue = queue.then(async () => {
113
+ if (closed) return;
114
+ try {
115
+ let result;
116
+ const udid = args[0];
117
+ if (method === "boot") {
118
+ const boot = await manager.boot(udid);
119
+ if (boot.kind !== "booted") throw new DeviceBackendError("Remote host boot limit reached");
120
+ result = boot.device;
121
+ } else if (method === "shutdown") await manager.shutdown(udid);
122
+ else if (method === "attachStream") {
123
+ let awaitingKeyframe = false;
124
+ await backend.attachStream(udid, (frame) => {
125
+ if (!frame.codecConfig && output.writableLength > 4194304) {
126
+ awaitingKeyframe = true;
127
+ return;
128
+ }
129
+ if (awaitingKeyframe && !frame.codecConfig && !frame.keyframe) return;
130
+ if (frame.keyframe) awaitingKeyframe = false;
131
+ send({
132
+ type: "frame",
133
+ udid,
134
+ streamId: request.id,
135
+ ...frame,
136
+ data: Buffer.from(frame.data).toString("base64")
137
+ });
138
+ });
139
+ result = backend.geometry(udid);
140
+ } else result = await backend[method].apply(backend, args);
141
+ send({
142
+ id: request.id,
143
+ result: result ?? null
144
+ });
145
+ } catch (error) {
146
+ send({
147
+ id: request.id,
148
+ error: error instanceof Error ? error.message.slice(0, 2048) : "Device operation failed",
149
+ retryable: error instanceof DeviceBackendError && error.retryable
150
+ });
151
+ } finally {
152
+ queued -= 1;
153
+ }
154
+ });
155
+ } catch {
156
+ close();
157
+ return;
158
+ }
159
+ }
160
+ });
161
+ return {
162
+ close,
163
+ done
164
+ };
165
+ }
166
+ //#endregion
167
+ export { runDeviceHostWorker };
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+
3
+ const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
4
+ const require_bin = require("./bin.cjs");
5
+ let node_net = require("node:net");
6
+ let effect = require("effect");
7
+ let node_path = require("node:path");
8
+ node_path = require_rolldown_runtime.__toESM(node_path, 1);
9
+ let node_os = require("node:os");
10
+ //#region src/device/deviceHostWorker.ts
11
+ /**
12
+ * SSH is the authentication boundary. No HTTP/RPC listener, provider sessions or
13
+ * browser credentials are started here. One coding node owns a Mac host at a time.
14
+ * A loopback port is only an OS-owned lock (connections receive no data).
15
+ */
16
+ async function runDeviceHostWorker() {
17
+ if (process.platform !== "darwin") throw new Error("Device host requires macOS");
18
+ const lock = (0, node_net.createServer)((socket) => socket.destroy());
19
+ await new Promise((resolve, reject) => {
20
+ lock.once("error", reject);
21
+ lock.listen({
22
+ host: "127.0.0.1",
23
+ port: 49177,
24
+ exclusive: true
25
+ }, resolve);
26
+ });
27
+ const backend = new require_bin.HostDeviceBackend([require_bin.localDeviceHost()]);
28
+ const manager = new require_bin.DeviceManager({
29
+ backend,
30
+ bootOwnership: require_bin.makeBootOwnershipStore(node_path.join(process.env.RYCO_HOME?.trim() || node_path.join((0, node_os.homedir)(), ".ryco"), "device-host", "boot-ownership.json"))
31
+ });
32
+ const session = await startDeviceHostSession(backend, process.stdin, process.stdout, manager).catch(async (error) => {
33
+ await manager.dispose();
34
+ lock.close();
35
+ throw error;
36
+ });
37
+ const stop = () => {
38
+ session.close().finally(() => lock.close());
39
+ };
40
+ process.once("SIGTERM", stop);
41
+ process.once("SIGINT", stop);
42
+ session.done.finally(() => lock.close());
43
+ }
44
+ /** Testable stdio lifecycle; EOF, timeout and protocol failure share one cleanup path. */
45
+ async function startDeviceHostSession(backend, input, output, manager = new require_bin.DeviceManager({ backend })) {
46
+ let closed = false;
47
+ let queue = Promise.resolve();
48
+ let queued = 0;
49
+ let lastInput = Date.now();
50
+ let buffer = "";
51
+ const send = (value) => {
52
+ if (!closed) output.write(JSON.stringify(value) + "\n");
53
+ };
54
+ let finish;
55
+ const done = new Promise((resolve) => {
56
+ finish = resolve;
57
+ });
58
+ const close = () => {
59
+ if (closed) return done;
60
+ closed = true;
61
+ clearInterval(heartbeat);
62
+ input.pause();
63
+ queue.finally(async () => {
64
+ await manager.dispose();
65
+ input.destroy();
66
+ finish();
67
+ });
68
+ return done;
69
+ };
70
+ const heartbeat = setInterval(() => {
71
+ if (Date.now() - lastInput > 6e4) close();
72
+ }, 1e4);
73
+ input.setEncoding("utf8");
74
+ input.on("end", close);
75
+ input.on("error", close);
76
+ output.on("error", close);
77
+ try {
78
+ await manager.reclaimOrphanedBoots();
79
+ send({
80
+ type: "ready",
81
+ protocol: 1,
82
+ version: require_bin.version
83
+ });
84
+ } catch (error) {
85
+ close();
86
+ throw error;
87
+ }
88
+ input.on("data", (chunk) => {
89
+ if (closed) return;
90
+ lastInput = Date.now();
91
+ buffer += chunk;
92
+ if (Buffer.byteLength(buffer) > 65536) {
93
+ close();
94
+ return;
95
+ }
96
+ let newline;
97
+ while ((newline = buffer.indexOf("\n")) >= 0) {
98
+ const line = buffer.slice(0, newline);
99
+ buffer = buffer.slice(newline + 1);
100
+ try {
101
+ const raw = JSON.parse(line);
102
+ if (raw && typeof raw === "object" && "type" in raw && raw.type === "ping") {
103
+ send({ type: "pong" });
104
+ continue;
105
+ }
106
+ const request = effect.Schema.decodeUnknownSync(require_bin.DeviceHostRequest)(raw);
107
+ if (!require_bin.isDeviceHostOperation(request.method)) throw new Error("method");
108
+ const method = request.method;
109
+ const args = require_bin.decodeDeviceHostValue(require_bin.deviceHostOperations[method].input, request.args.map((v) => v === null ? void 0 : v));
110
+ if (++queued > 32) {
111
+ close();
112
+ return;
113
+ }
114
+ queue = queue.then(async () => {
115
+ if (closed) return;
116
+ try {
117
+ let result;
118
+ const udid = args[0];
119
+ if (method === "boot") {
120
+ const boot = await manager.boot(udid);
121
+ if (boot.kind !== "booted") throw new require_bin.DeviceBackendError("Remote host boot limit reached");
122
+ result = boot.device;
123
+ } else if (method === "shutdown") await manager.shutdown(udid);
124
+ else if (method === "attachStream") {
125
+ let awaitingKeyframe = false;
126
+ await backend.attachStream(udid, (frame) => {
127
+ if (!frame.codecConfig && output.writableLength > 4194304) {
128
+ awaitingKeyframe = true;
129
+ return;
130
+ }
131
+ if (awaitingKeyframe && !frame.codecConfig && !frame.keyframe) return;
132
+ if (frame.keyframe) awaitingKeyframe = false;
133
+ send({
134
+ type: "frame",
135
+ udid,
136
+ streamId: request.id,
137
+ ...frame,
138
+ data: Buffer.from(frame.data).toString("base64")
139
+ });
140
+ });
141
+ result = backend.geometry(udid);
142
+ } else result = await backend[method].apply(backend, args);
143
+ send({
144
+ id: request.id,
145
+ result: result ?? null
146
+ });
147
+ } catch (error) {
148
+ send({
149
+ id: request.id,
150
+ error: error instanceof Error ? error.message.slice(0, 2048) : "Device operation failed",
151
+ retryable: error instanceof require_bin.DeviceBackendError && error.retryable
152
+ });
153
+ } finally {
154
+ queued -= 1;
155
+ }
156
+ });
157
+ } catch {
158
+ close();
159
+ return;
160
+ }
161
+ }
162
+ });
163
+ return {
164
+ close,
165
+ done
166
+ };
167
+ }
168
+ //#endregion
169
+ exports.runDeviceHostWorker = runDeviceHostWorker;
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Mr as DEFAULT_WORKTREE_BRANCH_PREFIX } from "./src-DtEOcXdl.mjs";
4
+ import { n as detectSourceControlProviderFromRemoteUrl } from "./sourceControl-BiEBxN01.mjs";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Random from "effect/Random";
7
+ //#region ../../packages/shared/src/git.ts
8
+ const WORKTREE_BRANCH_PREFIX = DEFAULT_WORKTREE_BRANCH_PREFIX;
9
+ const LEGACY_WORKTREE_BRANCH_PREFIX = "ryco";
10
+ /**
11
+ * Sanitize an arbitrary string into a valid, lowercase git refName fragment.
12
+ * Strips quotes, collapses separators, limits to 64 chars.
13
+ */
14
+ function sanitizeBranchFragment(raw) {
15
+ const branchFragment = raw.trim().toLowerCase().replace(/['"`]/g, "").replace(/^[./\s_-]+|[./\s_-]+$/g, "").replace(/[^a-z0-9/_-]+/g, "-").replace(/\/+/g, "/").replace(/-+/g, "-").replace(/^[./_-]+|[./_-]+$/g, "").slice(0, 64).replace(/[./_-]+$/g, "");
16
+ return branchFragment.length > 0 ? branchFragment : "update";
17
+ }
18
+ /**
19
+ * Sanitize a string into a `feature/…` refName name.
20
+ * Preserves an existing `feature/` prefix or slash-separated namespace.
21
+ */
22
+ function sanitizeFeatureBranchName(raw) {
23
+ const sanitized = sanitizeBranchFragment(raw);
24
+ if (sanitized.includes("/")) return sanitized.startsWith("feature/") ? sanitized : `feature/${sanitized}`;
25
+ return `feature/${sanitized}`;
26
+ }
27
+ const AUTO_FEATURE_BRANCH_FALLBACK = "feature/update";
28
+ /**
29
+ * Resolve a unique `feature/…` refName name that doesn't collide with
30
+ * any existing refName. Appends a numeric suffix when needed.
31
+ */
32
+ function resolveAutoFeatureBranchName(existingBranchNames, preferredBranch) {
33
+ const preferred = preferredBranch?.trim();
34
+ const resolvedBase = sanitizeFeatureBranchName(preferred && preferred.length > 0 ? preferred : AUTO_FEATURE_BRANCH_FALLBACK);
35
+ const existingNames = new Set(existingBranchNames.map((refName) => refName.toLowerCase()));
36
+ if (!existingNames.has(resolvedBase)) return resolvedBase;
37
+ let suffix = 2;
38
+ while (existingNames.has(`${resolvedBase}-${suffix}`)) suffix += 1;
39
+ return `${resolvedBase}-${suffix}`;
40
+ }
41
+ /**
42
+ * Strip the remote prefix from a remote ref such as `origin/feature/demo`.
43
+ */
44
+ function deriveLocalBranchNameFromRemoteRef(branchName) {
45
+ const firstSeparatorIndex = branchName.indexOf("/");
46
+ if (firstSeparatorIndex <= 0 || firstSeparatorIndex === branchName.length - 1) return branchName;
47
+ return branchName.slice(firstSeparatorIndex + 1);
48
+ }
49
+ /** Prefixes are validated by WorktreeBranchPrefix at the server settings boundary. */
50
+ function prefixWorktreeBranch(fragment, prefix) {
51
+ return prefix.length > 0 ? `${prefix}/${fragment}` : fragment;
52
+ }
53
+ function buildTemporaryWorktreeBranchName(prefix = WORKTREE_BRANCH_PREFIX) {
54
+ return prefixWorktreeBranch(Effect.runSync(Random.nextIntBetween(0, 4294967295)).toString(16).padStart(8, "0"), prefix);
55
+ }
56
+ /** Returns the original namespace, retaining legacy drafts after a settings change. */
57
+ function extractTemporaryWorktreeBranchPrefix(refName, prefix = WORKTREE_BRANCH_PREFIX) {
58
+ const ref = refName.trim();
59
+ for (const candidate of [prefix, LEGACY_WORKTREE_BRANCH_PREFIX]) {
60
+ const namespace = candidate.length > 0 ? `${candidate}/` : "";
61
+ if (ref.toLowerCase().startsWith(namespace.toLowerCase()) && /^[0-9a-f]{8}$/i.test(ref.slice(namespace.length))) return ref.slice(0, candidate.length);
62
+ }
63
+ return null;
64
+ }
65
+ function isTemporaryWorktreeBranch(refName, prefix = WORKTREE_BRANCH_PREFIX) {
66
+ return extractTemporaryWorktreeBranchPrefix(refName, prefix) !== null;
67
+ }
68
+ /** An empty namespace cannot establish ownership of arbitrary named branches. */
69
+ function isManagedWorktreeBranch(refName, prefix = WORKTREE_BRANCH_PREFIX) {
70
+ const ref = refName.trim();
71
+ return [prefix, LEGACY_WORKTREE_BRANCH_PREFIX].some((candidate) => candidate.length > 0 && ref.startsWith(`${candidate}/`) && ref.length > candidate.length + 1) || isTemporaryWorktreeBranch(ref, prefix);
72
+ }
73
+ function buildGeneratedWorktreeBranchName(raw, prefix = WORKTREE_BRANCH_PREFIX) {
74
+ const normalized = raw.trim().replace(/^refs\/heads\//i, "").replace(/['"`]/g, "");
75
+ const existingPrefix = [prefix, LEGACY_WORKTREE_BRANCH_PREFIX].find((candidate) => candidate.length > 0 && normalized.toLowerCase().startsWith(`${candidate.toLowerCase()}/`));
76
+ return prefixWorktreeBranch(sanitizeBranchFragment(existingPrefix === void 0 ? normalized : normalized.slice(existingPrefix.length + 1)), prefix);
77
+ }
78
+ /**
79
+ * Normalize a git remote URL into a stable comparison key.
80
+ */
81
+ function normalizeGitRemoteUrl(value) {
82
+ const normalized = value.trim().replace(/\/+$/g, "").replace(/\.git$/i, "").toLowerCase();
83
+ if (/^(?:ssh|https?|git):\/\//i.test(normalized)) try {
84
+ const url = new URL(normalized);
85
+ const repositoryPath = url.pathname.split("/").filter((segment) => segment.length > 0).join("/");
86
+ if (url.hostname && repositoryPath.includes("/")) return `${url.hostname}/${repositoryPath}`;
87
+ } catch {
88
+ return normalized;
89
+ }
90
+ const scpStyleHostAndPath = /^git@([^:/\s]+)[:/]([^/\s]+(?:\/[^/\s]+)+)$/i.exec(normalized);
91
+ if (scpStyleHostAndPath?.[1] && scpStyleHostAndPath[2]) return `${scpStyleHostAndPath[1]}/${scpStyleHostAndPath[2]}`;
92
+ return normalized;
93
+ }
94
+ function deriveLocalBranchNameCandidatesFromRemoteRef(branchName, remoteName) {
95
+ const candidates = /* @__PURE__ */ new Set();
96
+ const firstSlashCandidate = deriveLocalBranchNameFromRemoteRef(branchName);
97
+ if (firstSlashCandidate.length > 0) candidates.add(firstSlashCandidate);
98
+ if (remoteName) {
99
+ const remotePrefix = `${remoteName}/`;
100
+ if (branchName.startsWith(remotePrefix) && branchName.length > remotePrefix.length) candidates.add(branchName.slice(remotePrefix.length));
101
+ }
102
+ return [...candidates];
103
+ }
104
+ /**
105
+ * Hide `origin/*` remote refs when a matching local refName already exists.
106
+ */
107
+ function dedupeRemoteBranchesWithLocalMatches(refs) {
108
+ const localBranchNames = new Set(refs.filter((refName) => !refName.isRemote).map((refName) => refName.name));
109
+ return refs.filter((refName) => {
110
+ if (!refName.isRemote) return true;
111
+ if (refName.remoteName !== "origin") return true;
112
+ return !deriveLocalBranchNameCandidatesFromRemoteRef(refName.name, refName.remoteName).some((candidate) => localBranchNames.has(candidate));
113
+ });
114
+ }
115
+ function detectSourceControlProviderFromGitRemoteUrl(remoteUrl) {
116
+ return detectSourceControlProviderFromRemoteUrl(remoteUrl);
117
+ }
118
+ const EMPTY_GIT_STATUS_REMOTE = {
119
+ hasUpstream: false,
120
+ aheadCount: 0,
121
+ behindCount: 0,
122
+ aheadOfDefaultCount: 0,
123
+ pr: null
124
+ };
125
+ function mergeGitStatusParts(local, remote) {
126
+ return {
127
+ ...local,
128
+ ...remote ?? EMPTY_GIT_STATUS_REMOTE
129
+ };
130
+ }
131
+ //#endregion
132
+ export { detectSourceControlProviderFromGitRemoteUrl as a, isTemporaryWorktreeBranch as c, prefixWorktreeBranch as d, resolveAutoFeatureBranchName as f, dedupeRemoteBranchesWithLocalMatches as i, mergeGitStatusParts as l, sanitizeFeatureBranchName as m, buildGeneratedWorktreeBranchName as n, extractTemporaryWorktreeBranchPrefix as o, sanitizeBranchFragment as p, buildTemporaryWorktreeBranchName as r, isManagedWorktreeBranch as s, WORKTREE_BRANCH_PREFIX as t, normalizeGitRemoteUrl as u };