ryco-cli 0.1.14 → 0.1.16

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 (199) hide show
  1. package/dist/{AcpNativeLogging-vLtnq5f1.cjs → AcpNativeLogging-OhEq3XNp.cjs} +1 -1
  2. package/dist/{AcpNativeLogging-D3fe64a6.mjs → AcpNativeLogging-qZgtIa5K.mjs} +2 -2
  3. package/dist/{AzureDevOpsSourceControlProvider-WNUDtsur.mjs → AzureDevOpsSourceControlProvider-B0YsaJyI.mjs} +3 -3
  4. package/dist/{AzureDevOpsSourceControlProvider-BtezW57t.cjs → AzureDevOpsSourceControlProvider-Dyu8KQ_S.cjs} +2 -2
  5. package/dist/{BitbucketSourceControlProvider-BWzNM0jW.cjs → BitbucketSourceControlProvider-3VHGKSl1.cjs} +2 -2
  6. package/dist/{BitbucketSourceControlProvider-tbbUFKz3.mjs → BitbucketSourceControlProvider-B8IPx2Ad.mjs} +3 -3
  7. package/dist/{ClaudeDriver-BTvdJvam.cjs → ClaudeDriver-CBCy0_WX.cjs} +8 -6
  8. package/dist/{ClaudeDriver-CG5ngU5z.mjs → ClaudeDriver-DsW8yDj9.mjs} +9 -7
  9. package/dist/{CodexDriver-CFxwJNXx.cjs → CodexDriver-3TZPgrGk.cjs} +3 -3
  10. package/dist/{CodexDriver-49o7TA-C.mjs → CodexDriver-DLwPz5sk.mjs} +4 -4
  11. package/dist/{CodexTextGeneration-C0t4xcPO.mjs → CodexTextGeneration-D1vV8grr.mjs} +2 -2
  12. package/dist/{CodexTextGeneration-CedcXf9a.cjs → CodexTextGeneration-DLHSW4Mz.cjs} +1 -1
  13. package/dist/{CopilotDriver-B8J_ovCX.cjs → CopilotDriver-C7a8IhyK.cjs} +3 -3
  14. package/dist/{CopilotDriver-Cu1B1skB.mjs → CopilotDriver-DXvGBv-s.mjs} +4 -4
  15. package/dist/{CursorDriver-P_A8uQki.mjs → CursorDriver-CeB_vMKJ.mjs} +4 -4
  16. package/dist/{CursorDriver-zlKHPy1_.cjs → CursorDriver-uNsDetA3.cjs} +3 -3
  17. package/dist/{ForgejoSourceControlProvider-szJ-dvsD.cjs → ForgejoSourceControlProvider-CJLksvL_.cjs} +2 -2
  18. package/dist/{ForgejoSourceControlProvider-DLhJZtq9.mjs → ForgejoSourceControlProvider-Ds0rU_PN.mjs} +3 -3
  19. package/dist/{GitHubSourceControlProvider-D5MQQPCJ.mjs → GitHubSourceControlProvider-C7CJAslU.mjs} +3 -3
  20. package/dist/{GitHubSourceControlProvider-3ofb6HsF.cjs → GitHubSourceControlProvider-CrYNFu8S.cjs} +2 -2
  21. package/dist/{GitLabSourceControlProvider-DkupZH5G.cjs → GitLabSourceControlProvider-jbX5M34A.cjs} +2 -2
  22. package/dist/{GitLabSourceControlProvider-DLkxeob5.mjs → GitLabSourceControlProvider-u-Y-e8PV.mjs} +3 -3
  23. package/dist/{GrokDriver-CTUNclwp.cjs → GrokDriver-BJ00ZiYg.cjs} +3 -3
  24. package/dist/{GrokDriver-D8KoMY76.mjs → GrokDriver-CFgjwnvE.mjs} +4 -4
  25. package/dist/{OpenCodeDriver-pXM8bSct.cjs → OpenCodeDriver-BTxd2Q3Q.cjs} +424 -209
  26. package/dist/{OpenCodeDriver-B7htxutj.mjs → OpenCodeDriver-DNApoGdu.mjs} +424 -209
  27. package/dist/{SourceControlProviderDiscoveryCatalog-Bj_sZfmB.cjs → SourceControlProviderDiscoveryCatalog-CPO3a9_U.cjs} +1 -1
  28. package/dist/{SourceControlProviderDiscoveryCatalog-C6Fn7rZE.mjs → SourceControlProviderDiscoveryCatalog-hXWNwRMn.mjs} +1 -1
  29. package/dist/bin.cjs +227 -44
  30. package/dist/bin.mjs +226 -45
  31. package/dist/client/assets/{AccountSettings-CinnQaX-.js → AccountSettings-CkFq28pN.js} +1 -1
  32. package/dist/client/assets/AiFocusSettings-BI9AgQUi.js +1 -0
  33. package/dist/client/assets/{AnimatedHeight-DCad8EQ2.js → AnimatedHeight-BC-qaTJY.js} +1 -1
  34. package/dist/client/assets/{AppearanceSettings-CTh8Z8nz.js → AppearanceSettings-B6UaU-_a.js} +1 -1
  35. package/dist/client/assets/BranchToolbar.logic-6LRTxcuo.js +1 -0
  36. package/dist/client/assets/ChatRightPanel-BSNsAFtv.js +27 -0
  37. package/dist/client/assets/{ChatThreadRouteView-C43W0PEz.js → ChatThreadRouteView-Daox0F74.js} +1 -1
  38. package/dist/client/assets/CommandPaletteDialog-CIZnwgK9.js +1 -0
  39. package/dist/client/assets/{CompositeItem-ClLCuzeJ.js → CompositeItem-97y1QiiT.js} +1 -1
  40. package/dist/client/assets/{CompositeRoot-Bdsr9eHn.js → CompositeRoot-C7Mz4Y_2.js} +1 -1
  41. package/dist/client/assets/{ConnectionsSettings-tmBjGOPj.js → ConnectionsSettings-DFBNmvfL.js} +2 -2
  42. package/dist/client/assets/DiagnosticsSettings-DhuLK993.js +2 -0
  43. package/dist/client/assets/{DialogHandle-CitVLvYq.js → DialogHandle-Cl9dQBJp.js} +1 -1
  44. package/dist/client/assets/{DialogPopup-CfaEr9jv.js → DialogPopup-a1M74u16.js} +1 -1
  45. package/dist/client/assets/DialogRoot-C_DO1gtO.js +1 -0
  46. package/dist/client/assets/{DialogTitle-BUkU0qXf.js → DialogTitle-Bk-w3xLJ.js} +1 -1
  47. package/dist/client/assets/{DialogTrigger-CEjWue7M.js → DialogTrigger-D9nkMFu2.js} +1 -1
  48. package/dist/client/assets/{DialogViewport-Cyc_ye5w.js → DialogViewport-tgJz2Lwn.js} +1 -1
  49. package/dist/client/assets/{DraftChatThreadRouteView-BSA67nKa.js → DraftChatThreadRouteView-BmVyawpM.js} +1 -1
  50. package/dist/client/assets/{ExternalIdentityWeb.logic-BqdBjAua.js → ExternalIdentityWeb.logic-Bn1HigS9.js} +1 -1
  51. package/dist/client/assets/{GlassSurface-B3cq28tB.js → GlassSurface-CDok2tTN.js} +1 -1
  52. package/dist/client/assets/{HostedConnectionControls-S2Wr9fiZ.js → HostedConnectionControls-BvHq5iCa.js} +1 -1
  53. package/dist/client/assets/{HostedHubRoot-DK9zP4tJ.js → HostedHubRoot-CB5TRXg5.js} +1 -1
  54. package/dist/client/assets/{HostedNativeAuthorizationRoute-CKnLbCOH.js → HostedNativeAuthorizationRoute-Cb5WJuEG.js} +1 -1
  55. package/dist/client/assets/{HostedRelayTrustNotice-CbF_SOpf.js → HostedRelayTrustNotice-DFcgMZlL.js} +1 -1
  56. package/dist/client/assets/{Icons-DZpTOLIb.js → Icons-BEtED8P8.js} +1 -1
  57. package/dist/client/assets/{IntegrationsSettingsPanel-BdBEGIyL.js → IntegrationsSettingsPanel-BIy-rKDv.js} +1 -1
  58. package/dist/client/assets/{KeybindingsSettings-Bye1H9Sx.js → KeybindingsSettings-u3yB7Cob.js} +1 -1
  59. package/dist/client/assets/{McpServersSettings-D0U0g2q7.js → McpServersSettings-V32mLD4v.js} +2 -2
  60. package/dist/client/assets/{MobileSheet-BPvuTPR6.js → MobileSheet-BDvnUC5W.js} +1 -1
  61. package/dist/client/assets/{NewWorktreeDialog-C_xJCZWF.js → NewWorktreeDialog-B64WGjQj.js} +2 -2
  62. package/dist/client/assets/{NoActiveThreadState-Cfn_Wwnf.js → NoActiveThreadState-C0MwHtMx.js} +1 -1
  63. package/dist/client/assets/{NodeSecuritySettings-DUQNZJqJ.js → NodeSecuritySettings-CWlThhfV.js} +1 -1
  64. package/dist/client/assets/OpinionatedPluginsSettings-CVzfv5nP.js +1 -0
  65. package/dist/client/assets/{PhoneGetAppInterstitial-CzduFI4-.js → PhoneGetAppInterstitial-CylfsDBD.js} +1 -1
  66. package/dist/client/assets/{PhoneGetAppInterstitialBackdrop-CJ44QRCp.js → PhoneGetAppInterstitialBackdrop-BA4R225F.js} +1 -1
  67. package/dist/client/assets/{PhoneHome-BLEJm5TG.js → PhoneHome-DBwwEeaI.js} +1 -1
  68. package/dist/client/assets/{PhoneSettingsSurface-CqetLTIm.js → PhoneSettingsSurface-sDCNEVkR.js} +1 -1
  69. package/dist/client/assets/{ProjectFavicon-DrBXI2cH.js → ProjectFavicon-BjXJxNbQ.js} +1 -1
  70. package/dist/client/assets/{ProviderModelPicker-CyID3P1C.js → ProviderModelPicker-BTFj53Qv.js} +1 -1
  71. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-C6VoLD-w.js → ProviderUpdateLaunchNotification.logic-CywRitn3.js} +1 -1
  72. package/dist/client/assets/{ProvidersSettingsPanel-BHmpXUIM.js → ProvidersSettingsPanel-IhzMeM1F.js} +1 -1
  73. package/dist/client/assets/{RedactedSensitiveText-CZwFEoNn.js → RedactedSensitiveText-BuWSWty8.js} +1 -1
  74. package/dist/client/assets/RootAppShell-CG06ruyc.js +6 -0
  75. package/dist/client/assets/{RycoLetterMark-C-fvI9UB.js → RycoLetterMark-CZYntY8t.js} +1 -1
  76. package/dist/client/assets/{SettingsDialog-CnETTu23.js → SettingsDialog-ByR9PwEc.js} +1 -1
  77. package/dist/client/assets/{SettingsPanels-C3HDrmQq.js → SettingsPanels-CwsCgdds.js} +3 -3
  78. package/dist/client/assets/{SettingsPanels.editor-DI8Z5rsl.js → SettingsPanels.editor-lbLEbllb.js} +1 -1
  79. package/dist/client/assets/{SourceControlSettings-BG4tsvql.js → SourceControlSettings-5w4N9XII.js} +1 -1
  80. package/dist/client/assets/{StatisticsPage-dy_aYqvS.js → StatisticsPage-jRyjIh52.js} +1 -1
  81. package/dist/client/assets/{StatisticsPanel-CeRJBu65.js → StatisticsPanel-CV5eFeO_.js} +1 -1
  82. package/dist/client/assets/{StatisticsSettingsLink-ChlwCDG0.js → StatisticsSettingsLink-B7SZerf3.js} +1 -1
  83. package/dist/client/assets/{ThreadStatusIndicators-D-ioX09X.js → ThreadStatusIndicators-C40TYVEC.js} +0 -0
  84. package/dist/client/assets/{ThreadTerminalDrawer-BvGaRxBP.js → ThreadTerminalDrawer-flv5ZDel.js} +3 -3
  85. package/dist/client/assets/{ThreadWorkspacePanel-BAWm7mGl.js → ThreadWorkspacePanel-B-cBAWFz.js} +6 -6
  86. package/dist/client/assets/{ToolbarRootContext-k-_m5nCN.js → ToolbarRootContext-B1g8IP6k.js} +1 -1
  87. package/dist/client/assets/{WorkItemsTab-Q2V2EuvK.js → WorkItemsTab-0DE4S4n0.js} +5 -5
  88. package/dist/client/assets/{alert-BymbRVPf.js → alert-DomE7dAt.js} +1 -1
  89. package/dist/client/assets/{alert-dialog-Gym8_p4Q.js → alert-dialog-9Jyh0e8u.js} +1 -1
  90. package/dist/client/assets/{authorization-BwQZHweJ.js → authorization-D8lJzXTE.js} +1 -1
  91. package/dist/client/assets/{badge-BQI7J3Sg.js → badge-w43sx8eF.js} +1 -1
  92. package/dist/client/assets/{branding-DqHDcyzW.js → branding-Ck4g7yv3.js} +1 -1
  93. package/dist/client/assets/{button-Wf_1nfeu.js → button-DG8WqjNn.js} +1 -1
  94. package/dist/client/assets/{capabilities-BrllgEYz.js → capabilities-xa5Ll0KT.js} +1 -1
  95. package/dist/client/assets/{chatThreadActions-BGkJmj6T.js → chatThreadActions-BZvyhfKr.js} +1 -1
  96. package/dist/client/assets/{collapsible-GOpRckDq.js → collapsible-EhAEe5S9.js} +1 -1
  97. package/dist/client/assets/{command-Dx5YM54H.js → command-Cyn6yIEa.js} +1 -1
  98. package/dist/client/assets/{composerDraftStore-DC2r8dcu.js → composerDraftStore-TYv9j3vY.js} +2 -2
  99. package/dist/client/assets/{data-list-BSiCZBKn.js → data-list-DTdqWMGN.js} +1 -1
  100. package/dist/client/assets/{desktopUpdateAtoms-DkmoIGr0.js → desktopUpdateAtoms-hP0oc_If.js} +1 -1
  101. package/dist/client/assets/desktopWorkspace-hOxsGVFz.js +1 -0
  102. package/dist/client/assets/device-DIfzlguu.js +168 -0
  103. package/dist/client/assets/{dialog-CUxw5AxI.js → dialog-BNmFD6Nh.js} +1 -1
  104. package/dist/client/assets/{draft-input-CpfrGQ1h.js → draft-input-dP7F8odz.js} +1 -1
  105. package/dist/client/assets/{editorPreferences-SOMXdQpi.js → editorPreferences-B54y5_sx.js} +1 -1
  106. package/dist/client/assets/{empty-D420OZA9.js → empty-Ccxhyvdf.js} +1 -1
  107. package/dist/client/assets/{env-Bf33qXdb.js → env-Bcq9YR3B.js} +1 -1
  108. package/dist/client/assets/{getPseudoElementBounds-nDGTWECG.js → getPseudoElementBounds-CO5HJT7x.js} +1 -1
  109. package/dist/client/assets/{group-Cq4Llttm.js → group-CzdKmc45.js} +1 -1
  110. package/dist/client/assets/{index-BL8_ra0g.js → index-Dp3JRlOK.js} +2 -2
  111. package/dist/client/assets/{input-Dl4N9ZfE.js → input-BZz4eLRl.js} +1 -1
  112. package/dist/client/assets/{kbd-CqoZVQfv.js → kbd-DbvN3zTb.js} +1 -1
  113. package/dist/client/assets/{keybindings-DQzcPjMv.js → keybindings-BPE3eEAM.js} +1 -1
  114. package/dist/client/assets/{label-x5DgpBI_.js → label-DZf4lbNF.js} +1 -1
  115. package/dist/client/assets/{lib-BXIqHSZx.js → lib-DgOYoged.js} +1 -1
  116. package/dist/client/assets/{logging-CZlHfeu2.js → logging-81iP6Hps.js} +1 -1
  117. package/dist/client/assets/main-B6n7O_N3.js +9 -0
  118. package/dist/client/assets/main-DlGNPwsH.css +2 -0
  119. package/dist/client/assets/{menu-BuDpxm_Q.js → menu-B6UEFcn0.js} +1 -1
  120. package/dist/client/assets/{popover-DuprDUaB.js → popover-BuYzXGwl.js} +1 -1
  121. package/dist/client/assets/{primary-CJx2nSkc.js → primary-CiDY2oUi.js} +1 -1
  122. package/dist/client/assets/{projectPaths-DrelgodZ.js → projectPaths-D8b4yLOe.js} +1 -1
  123. package/dist/client/assets/{providerDriverMeta-D27Koh7Q.js → providerDriverMeta-sBwZhQoN.js} +1 -1
  124. package/dist/client/assets/{providerIconUtils-CtOHwjWL.js → providerIconUtils-Cq0fezxt.js} +1 -1
  125. package/dist/client/assets/providerInstances-vd2eZtHx.js +1 -0
  126. package/dist/client/assets/providerModels-vd2eZtHx.js +1 -0
  127. package/dist/client/assets/{qr-code-BVfzPOP3.js → qr-code-Ie92aZvE.js} +1 -1
  128. package/dist/client/assets/{radio-group-rgmJqPI7.js → radio-group-BuuTEtdC.js} +1 -1
  129. package/dist/client/assets/{resolveAriaLabelledBy-l4SuqStl.js → resolveAriaLabelledBy-0FA0k4xp.js} +1 -1
  130. package/dist/client/assets/{rightPanelRouteSearch-DmpObL1z.js → rightPanelRouteSearch-BS8CkNS6.js} +1 -1
  131. package/dist/client/assets/{runtime-DYzjhL5M.js → runtime-QZPKtH2P.js} +1 -1
  132. package/dist/client/assets/{scroll-area-DMs8l4bb.js → scroll-area-C0yF015F.js} +1 -1
  133. package/dist/client/assets/{scrollEdges-DWTOweRb.js → scrollEdges-DI5Y3mtR.js} +1 -1
  134. package/dist/client/assets/{select-Djwp8HDm.js → select-CZukJlTn.js} +1 -1
  135. package/dist/client/assets/{separator-rjtf5Q3V.js → separator-D4ckGtPe.js} +1 -1
  136. package/dist/client/assets/session-logic-BuGYhZKZ.js +4 -0
  137. package/dist/client/assets/{settingsDialogStore-Dbykwvfs.js → settingsDialogStore-LxRFC5hh.js} +1 -1
  138. package/dist/client/assets/{settingsLayout-C7bl9Xi4.js → settingsLayout-CHJT5wtl.js} +1 -1
  139. package/dist/client/assets/{sheet-CQIQYfOM.js → sheet-BNfImQ-7.js} +1 -1
  140. package/dist/client/assets/{sidebar-BdDOvXe8.js → sidebar-CFGg5Tkr.js} +1 -1
  141. package/dist/client/assets/{sidebarProjectFolders-D_Me0oJ8.js → sidebarProjectFolders-Dlo6McCj.js} +2 -2
  142. package/dist/client/assets/{sidebarStatusText-BF6odB03.js → sidebarStatusText-C8QBhZhZ.js} +1 -1
  143. package/dist/client/assets/{skeleton-Mgh4Gx9x.js → skeleton-DOgQaVXv.js} +1 -1
  144. package/dist/client/assets/{spinner-CzzUdFeE.js → spinner-ClQu8SdC.js} +1 -1
  145. package/dist/client/assets/{src-Ca7Gag3m.js → src-DmPIm3ie.js} +1 -1
  146. package/dist/client/assets/storeSelectors-_h41wnN2.js +1 -0
  147. package/dist/client/assets/{switch-CntUxI1A.js → switch-BZjA7VT9.js} +1 -1
  148. package/dist/client/assets/{terminal-links-CUFISn8U.js → terminal-links-CzJomeox.js} +1 -1
  149. package/dist/client/assets/{textarea-C8QxddDb.js → textarea-DHdmRD1r.js} +1 -1
  150. package/dist/client/assets/{threadPinning-BIV4KXZU.js → threadPinning-D2e9MEDr.js} +1 -1
  151. package/dist/client/assets/{threadPriorityRefreshRuntime-B-pVYK_y.js → threadPriorityRefreshRuntime-DbEFchoL.js} +1 -1
  152. package/dist/client/assets/{toast-Cw7bXJzg.js → toast-C-0Ft2jD.js} +1 -1
  153. package/dist/client/assets/{toggle-Bi9uP4Hb.js → toggle-DsnOFDbJ.js} +1 -1
  154. package/dist/client/assets/{toggle-group-LcgyMgj5.js → toggle-group-Chxh9G6t.js} +1 -1
  155. package/dist/client/assets/{tooltip-t3Nrleyq.js → tooltip-C_-9XEfA.js} +1 -1
  156. package/dist/client/assets/types-_h41wnN2.js +1 -0
  157. package/dist/client/assets/{uiStateStore-BW2WnK4k.js → uiStateStore-DzUrk2GS.js} +1 -1
  158. package/dist/client/assets/{useAtlassian-a-MaAd0k.js → useAtlassian-Zb2Kkt0_.js} +0 -0
  159. package/dist/client/assets/{useButton-DUuWgIMw.js → useButton-BmvYhoMC.js} +1 -1
  160. package/dist/client/assets/{useCompositeListItem-CL5mJqCb.js → useCompositeListItem-D0PvH4nv.js} +1 -1
  161. package/dist/client/assets/{useDebouncedValue-jDDWNjgt.js → useDebouncedValue-s0BC8Yyp.js} +1 -1
  162. package/dist/client/assets/{useFloatingRootContext-C4I8IxtL.js → useFloatingRootContext-CLCaQEJk.js} +1 -1
  163. package/dist/client/assets/useHandleNewThread-ByVfL71G.js +1 -0
  164. package/dist/client/assets/{useLabelableId-KX33mhBC.js → useLabelableId-CB_9OReR.js} +1 -1
  165. package/dist/client/assets/{useLocation-B4QlXdMt.js → useLocation-DGJMt6gP.js} +1 -1
  166. package/dist/client/assets/{useOpenInteractionType-DjM9MBY7.js → useOpenInteractionType-BSSI2GzS.js} +1 -1
  167. package/dist/client/assets/{usePhoneThreadActions-DxxWMYgC.js → usePhoneThreadActions-BhTVcLtf.js} +1 -1
  168. package/dist/client/assets/{usePopupViewport-CAMlnyaP.js → usePopupViewport-8F-J1h5f.js} +1 -1
  169. package/dist/client/assets/{useScrollLock-CAPfesBT.js → useScrollLock-CBz-5_MX.js} +1 -1
  170. package/dist/client/assets/{useStatistics-CWasDzsV.js → useStatistics-Dbp94K5j.js} +1 -1
  171. package/dist/client/assets/{useSwipeDismiss-BZsYSBgq.js → useSwipeDismiss-D22_vuiH.js} +1 -1
  172. package/dist/client/assets/{useThreadActions-MOjDrEnS.js → useThreadActions-CPL4dO-X.js} +1 -1
  173. package/dist/client/assets/{useTriggerFocusGuards-D5z439rn.js → useTriggerFocusGuards-f7afwACm.js} +1 -1
  174. package/dist/client/assets/{useValueChanged-D0CHQQwP.js → useValueChanged-EkWF0C3k.js} +1 -1
  175. package/dist/client/assets/{utils-B76_2Yk7.js → utils-CV2fJJxC.js} +1 -1
  176. package/dist/client/index.html +1 -1
  177. package/dist/{collectUint8StreamText-B9B7bGv9.cjs → collectUint8StreamText-Dsbmrw73.cjs} +2 -0
  178. package/dist/{collectUint8StreamText-RzKEq2NY.mjs → collectUint8StreamText-oFvWyN3_.mjs} +2 -0
  179. package/dist/{makeManagedServerProvider-BF1eBatf.cjs → makeManagedServerProvider-CANTNAsz.cjs} +9 -2
  180. package/dist/{makeManagedServerProvider-BuG2fLP8.mjs → makeManagedServerProvider-PLtJj7EV.mjs} +10 -3
  181. package/package.json +1 -1
  182. package/dist/client/assets/AiFocusSettings-UbXOywZg.js +0 -1
  183. package/dist/client/assets/BranchToolbar.logic-37EnknDD.js +0 -1
  184. package/dist/client/assets/ChatRightPanel-DUwLYKbp.js +0 -27
  185. package/dist/client/assets/CommandPaletteDialog-IHOe0hOG.js +0 -1
  186. package/dist/client/assets/DiagnosticsSettings-CbCEgaau.js +0 -2
  187. package/dist/client/assets/DialogRoot-CyEOjgGH.js +0 -1
  188. package/dist/client/assets/OpinionatedPluginsSettings-D44efcv7.js +0 -1
  189. package/dist/client/assets/RootAppShell-BVXRShhe.js +0 -6
  190. package/dist/client/assets/desktopWorkspace-Ddm531g5.js +0 -1
  191. package/dist/client/assets/device-B0aqBYM1.js +0 -168
  192. package/dist/client/assets/main-B7T7on1T.css +0 -2
  193. package/dist/client/assets/main-J4YlUJad.js +0 -9
  194. package/dist/client/assets/providerInstances-BPwEwwpF.js +0 -1
  195. package/dist/client/assets/providerModels-BPwEwwpF.js +0 -1
  196. package/dist/client/assets/session-logic-DLEAZb3K.js +0 -4
  197. package/dist/client/assets/storeSelectors-D7HbqO4E.js +0 -1
  198. package/dist/client/assets/types-D7HbqO4E.js +0 -1
  199. package/dist/client/assets/useHandleNewThread-820pBJCC.js +0 -1
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const require_collectUint8StreamText = require("./collectUint8StreamText-B9B7bGv9.cjs");
3
+ const require_collectUint8StreamText = require("./collectUint8StreamText-Dsbmrw73.cjs");
4
4
  let effect = require("effect");
5
5
  let effect_unstable_process = require("effect/unstable/process");
6
6
  //#region src/vcs/VcsProcess.ts
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Aa as VcsProcessTimeoutError, Da as VcsOutputDecodeError, Oa as VcsProcessExitError, ka as VcsProcessSpawnError, t as collectUint8StreamText } from "./collectUint8StreamText-RzKEq2NY.mjs";
3
+ import { Aa as VcsProcessTimeoutError, Da as VcsOutputDecodeError, Oa as VcsProcessExitError, ka as VcsProcessSpawnError, t as collectUint8StreamText } from "./collectUint8StreamText-oFvWyN3_.mjs";
4
4
  import { Context, Duration, Effect, Layer, Option, Schema, Sink, Stream } from "effect";
5
5
  import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
6
6
  //#region src/vcs/VcsProcess.ts
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-B9B7bGv9.cjs");
5
+ const require_collectUint8StreamText = require("./collectUint8StreamText-Dsbmrw73.cjs");
6
6
  const require_Metrics = require("./Metrics-DIjMQ5pa.cjs");
7
- const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-Bj_sZfmB.cjs");
7
+ const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-CPO3a9_U.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);
@@ -2054,7 +2054,7 @@ const authClientsRevokeOthersRouteLayer = effect_unstable_http.HttpRouter.add("P
2054
2054
  var ServerEnvironment = class extends effect.Context.Service()("ryco/environment/Services/ServerEnvironment") {};
2055
2055
  //#endregion
2056
2056
  //#region src/http.ts
2057
- const PROJECT_FAVICON_CACHE_CONTROL = "public, max-age=3600";
2057
+ const PROJECT_FAVICON_CACHE_CONTROL = "private, max-age=3600";
2058
2058
  const PROJECT_AVATAR_MAX_BYTES = 2097152;
2059
2059
  const PROJECT_AVATAR_CACHE_CONTROL = "private, max-age=0, must-revalidate";
2060
2060
  const STATIC_INDEX_CACHE_CONTROL = "no-cache";
@@ -2068,6 +2068,19 @@ const LOOPBACK_HOSTNAMES = /* @__PURE__ */ new Set([
2068
2068
  "::1",
2069
2069
  "localhost"
2070
2070
  ]);
2071
+ const SVG_CONTENT_SECURITY_POLICY = "default-src 'none'; style-src 'unsafe-inline'; sandbox";
2072
+ const DOWNLOAD_CONTENT_SECURITY_POLICY = "default-src 'none'; sandbox";
2073
+ const INLINE_ATTACHMENT_EXTENSIONS = /* @__PURE__ */ new Set([
2074
+ ".avif",
2075
+ ".bmp",
2076
+ ".gif",
2077
+ ".ico",
2078
+ ".jpeg",
2079
+ ".jpg",
2080
+ ".png",
2081
+ ".svg",
2082
+ ".webp"
2083
+ ]);
2071
2084
  const STATIC_CONTENT_TYPES = {
2072
2085
  ".css": "text/css; charset=utf-8",
2073
2086
  ".html": "text/html; charset=utf-8",
@@ -2112,6 +2125,33 @@ function resolveStaticCacheControl(staticRelativePath) {
2112
2125
  const basename = normalized.split("/").at(-1) ?? normalized;
2113
2126
  return /(?:^|[-.])[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9]+$/u.test(basename) ? STATIC_IMMUTABLE_CACHE_CONTROL : STATIC_INDEX_CACHE_CONTROL;
2114
2127
  }
2128
+ /** Build a download disposition with a safe ASCII fallback and UTF-8 filename. */
2129
+ function downloadContentDisposition(fileName) {
2130
+ if (fileName === void 0) return "attachment";
2131
+ const sanitized = fileName.toWellFormed().replace(/[\u0000-\u001f"\\]/g, "_");
2132
+ const asciiFallback = sanitized.replace(/[^\u0020-\u007e]/g, "_");
2133
+ const extendedName = encodeURIComponent(sanitized).replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
2134
+ return `attachment; filename="${asciiFallback}"${asciiFallback === sanitized ? "" : `; filename*=UTF-8''${extendedName}`}`;
2135
+ }
2136
+ function userAssetResponseHeaders(filePath, path) {
2137
+ const extension = path.extname(filePath).toLowerCase();
2138
+ return {
2139
+ "Cache-Control": "private, max-age=3600",
2140
+ "X-Content-Type-Options": "nosniff",
2141
+ ...!INLINE_ATTACHMENT_EXTENSIONS.has(extension) ? {
2142
+ "Content-Disposition": downloadContentDisposition(path.basename(filePath)),
2143
+ "Content-Security-Policy": DOWNLOAD_CONTENT_SECURITY_POLICY,
2144
+ "Content-Type": "application/octet-stream"
2145
+ } : extension === ".svg" ? { "Content-Security-Policy": SVG_CONTENT_SECURITY_POLICY } : {}
2146
+ };
2147
+ }
2148
+ function inlineImageResponseHeaders(filePath) {
2149
+ return {
2150
+ "Cache-Control": PROJECT_FAVICON_CACHE_CONTROL,
2151
+ "X-Content-Type-Options": "nosniff",
2152
+ ...filePath.toLowerCase().endsWith(".svg") ? { "Content-Security-Policy": SVG_CONTENT_SECURITY_POLICY } : {}
2153
+ };
2154
+ }
2115
2155
  function resolveStaticContentType(filePath, path) {
2116
2156
  return STATIC_CONTENT_TYPES[path.extname(filePath).toLowerCase()] ?? "application/octet-stream";
2117
2157
  }
@@ -2174,11 +2214,13 @@ const attachmentsRouteLayer = effect_unstable_http.HttpRouter.add("GET", `${ATTA
2174
2214
  relativePath: normalizedRelativePath
2175
2215
  });
2176
2216
  if (!filePath) return effect_unstable_http.HttpServerResponse.text(isIdLookup ? "Not Found" : "Invalid attachment path", { status: isIdLookup ? 404 : 400 });
2177
- const fileInfo = yield* (yield* effect.FileSystem.FileSystem).stat(filePath).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
2217
+ const fileSystem = yield* effect.FileSystem.FileSystem;
2218
+ const path = yield* effect.Path.Path;
2219
+ const fileInfo = yield* fileSystem.stat(filePath).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
2178
2220
  if (!fileInfo || fileInfo.type !== "File") return effect_unstable_http.HttpServerResponse.text("Not Found", { status: 404 });
2179
2221
  return yield* effect_unstable_http.HttpServerResponse.file(filePath, {
2180
2222
  status: 200,
2181
- headers: { "Cache-Control": "public, max-age=31536000, immutable" }
2223
+ headers: userAssetResponseHeaders(filePath, path)
2182
2224
  }).pipe(effect.Effect.catch(() => effect.Effect.succeed(effect_unstable_http.HttpServerResponse.text("Internal Server Error", { status: 500 }))));
2183
2225
  }).pipe(effect.Effect.catchTag("AuthError", respondToAuthError)));
2184
2226
  const projectFaviconRouteLayer = effect_unstable_http.HttpRouter.add("GET", "/api/project-favicon", effect.Effect.gen(function* () {
@@ -2192,11 +2234,11 @@ const projectFaviconRouteLayer = effect_unstable_http.HttpRouter.add("GET", "/ap
2192
2234
  if (!faviconFilePath) return effect_unstable_http.HttpServerResponse.text(FALLBACK_PROJECT_FAVICON_SVG, {
2193
2235
  status: 200,
2194
2236
  contentType: "image/svg+xml",
2195
- headers: { "Cache-Control": PROJECT_FAVICON_CACHE_CONTROL }
2237
+ headers: inlineImageResponseHeaders("fallback.svg")
2196
2238
  });
2197
2239
  return yield* effect_unstable_http.HttpServerResponse.file(faviconFilePath, {
2198
2240
  status: 200,
2199
- headers: { "Cache-Control": PROJECT_FAVICON_CACHE_CONTROL }
2241
+ headers: inlineImageResponseHeaders(faviconFilePath)
2200
2242
  }).pipe(effect.Effect.catch(() => effect.Effect.succeed(effect_unstable_http.HttpServerResponse.text("Internal Server Error", { status: 500 }))));
2201
2243
  }).pipe(effect.Effect.catchTag("AuthError", respondToAuthError)));
2202
2244
  const AvatarFormSchema = effect_Schema.Struct({ avatar: effect_unstable_http.Multipart.SingleFileSchema });
@@ -12810,26 +12852,26 @@ const make$12 = effect.Effect.fn("makeSourceControlProviderRegistry")(function*
12810
12852
  const azureDevOpsCli = yield* AzureDevOpsCli;
12811
12853
  const fileSystem = yield* effect.FileSystem.FileSystem;
12812
12854
  const github = yield* makeLazyProvider("github", effect.Effect.tryPromise({
12813
- try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-3ofb6HsF.cjs")),
12855
+ try: () => Promise.resolve().then(() => require("./GitHubSourceControlProvider-CrYNFu8S.cjs")),
12814
12856
  catch: (cause) => providerLoadError("github", cause)
12815
12857
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitHubCli, githubCli), effect.Effect.provideService(effect.FileSystem.FileSystem, fileSystem)));
12816
12858
  const gitlab = yield* makeLazyProvider("gitlab", effect.Effect.tryPromise({
12817
- try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-DkupZH5G.cjs")),
12859
+ try: () => Promise.resolve().then(() => require("./GitLabSourceControlProvider-jbX5M34A.cjs")),
12818
12860
  catch: (cause) => providerLoadError("gitlab", cause)
12819
12861
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(GitLabCli, gitlabCli)));
12820
12862
  const bitbucket = yield* makeLazyProvider("bitbucket", effect.Effect.tryPromise({
12821
- try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-BWzNM0jW.cjs")),
12863
+ try: () => Promise.resolve().then(() => require("./BitbucketSourceControlProvider-3VHGKSl1.cjs")),
12822
12864
  catch: (cause) => providerLoadError("bitbucket", cause)
12823
12865
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(BitbucketApi, bitbucketApi)), {
12824
12866
  searchRepositories: true,
12825
12867
  cloneAuthentication: true
12826
12868
  });
12827
12869
  const forgejo = yield* makeLazyProvider("forgejo", effect.Effect.tryPromise({
12828
- try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-szJ-dvsD.cjs")),
12870
+ try: () => Promise.resolve().then(() => require("./ForgejoSourceControlProvider-CJLksvL_.cjs")),
12829
12871
  catch: (cause) => providerLoadError("forgejo", cause)
12830
12872
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(ForgejoApi, forgejoApi)));
12831
12873
  const azureDevOps = yield* makeLazyProvider("azure-devops", effect.Effect.tryPromise({
12832
- try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-BtezW57t.cjs")),
12874
+ try: () => Promise.resolve().then(() => require("./AzureDevOpsSourceControlProvider-Dyu8KQ_S.cjs")),
12833
12875
  catch: (cause) => providerLoadError("azure-devops", cause)
12834
12876
  }).pipe(effect.Effect.flatMap((module) => module.make()), effect.Effect.provideService(AzureDevOpsCli, azureDevOpsCli)));
12835
12877
  const bitbucketDiscovery = require_SourceControlProviderDiscoveryCatalog.makeBitbucketDiscovery(bitbucketApi);
@@ -31484,7 +31526,10 @@ const makeCodexAppServerPatchedProtocol = effect_Effect.fn("makeCodexAppServerPa
31484
31526
  const incomingRequests = yield* options.onRequest ? effect_Queue.sliding(PROTOCOL_QUEUE_CAPACITY) : effect_Queue.bounded(PROTOCOL_QUEUE_CAPACITY);
31485
31527
  const pending = yield* effect_Ref.make(/* @__PURE__ */ new Map());
31486
31528
  const nextRequestId = yield* effect_Ref.make(1);
31487
- const remainder = yield* effect_Ref.make("");
31529
+ const remainder = {
31530
+ fragments: [],
31531
+ byteLength: 0
31532
+ };
31488
31533
  const terminationHandled = yield* effect_Ref.make(false);
31489
31534
  const logProtocol = (event) => {
31490
31535
  if (event.direction === "incoming" && !options.logIncoming) return effect_Effect.void;
@@ -31583,19 +31628,39 @@ const makeCodexAppServerPatchedProtocol = effect_Effect.fn("makeCodexAppServerPa
31583
31628
  }
31584
31629
  })), effect_Effect.flatMap(routeMessage));
31585
31630
  };
31586
- yield* options.stdio.stdin.pipe(effect_Stream.decodeText(), effect_Stream.runForEach((chunk) => effect_Ref.modify(remainder, (current) => {
31587
- const lines = (current + chunk).split("\n");
31588
- const nextRemainder = lines.pop() ?? "";
31589
- return [{
31590
- lines: lines.map((line) => line.replace(/\r$/, "")),
31591
- remainderBytes: new TextEncoder().encode(nextRemainder).byteLength
31592
- }, nextRemainder];
31593
- }).pipe(effect_Effect.flatMap(({ lines, remainderBytes }) => remainderBytes > PROTOCOL_MAX_FRAME_BYTES ? effect_Effect.fail(new CodexAppServerProtocolOverloadedError({
31594
- queue: "incoming-frame-bytes",
31595
- capacity: PROTOCOL_MAX_FRAME_BYTES
31596
- })) : effect_Effect.forEach(lines, handleLine, { discard: true })))), effect_Effect.matchEffect({
31631
+ yield* options.stdio.stdin.pipe(effect_Stream.decodeText(), effect_Stream.runForEach((chunk) => effect_Effect.gen(function* () {
31632
+ const lines = [];
31633
+ let start = 0;
31634
+ for (let newline = chunk.indexOf("\n"); newline !== -1; newline = chunk.indexOf("\n", start)) {
31635
+ const fragment = chunk.slice(start, newline);
31636
+ if (remainder.byteLength + new TextEncoder().encode(fragment).byteLength > PROTOCOL_MAX_FRAME_BYTES) return yield* effect_Effect.fail(new CodexAppServerProtocolOverloadedError({
31637
+ queue: "incoming-frame-bytes",
31638
+ capacity: PROTOCOL_MAX_FRAME_BYTES
31639
+ }));
31640
+ remainder.fragments.push(fragment);
31641
+ lines.push(remainder.fragments.join("").replace(/\r$/, ""));
31642
+ remainder.fragments.length = 0;
31643
+ remainder.byteLength = 0;
31644
+ start = newline + 1;
31645
+ }
31646
+ if (start < chunk.length) {
31647
+ const fragment = chunk.slice(start);
31648
+ remainder.byteLength += new TextEncoder().encode(fragment).byteLength;
31649
+ if (remainder.byteLength > PROTOCOL_MAX_FRAME_BYTES) return yield* effect_Effect.fail(new CodexAppServerProtocolOverloadedError({
31650
+ queue: "incoming-frame-bytes",
31651
+ capacity: PROTOCOL_MAX_FRAME_BYTES
31652
+ }));
31653
+ remainder.fragments.push(fragment);
31654
+ }
31655
+ yield* effect_Effect.forEach(lines, handleLine, { discard: true });
31656
+ })), effect_Effect.matchEffect({
31597
31657
  onFailure: (error) => handleTermination(() => effect_Effect.succeed(normalizeProtocolError(error, "Codex App Server input stream failed"))),
31598
- onSuccess: () => effect_Ref.get(remainder).pipe(effect_Effect.flatMap((line) => line.trim().length === 0 ? effect_Effect.void : handleLine(line)), effect_Effect.matchEffect({
31658
+ onSuccess: () => effect_Effect.sync(() => {
31659
+ const line = remainder.fragments.join("");
31660
+ remainder.fragments.length = 0;
31661
+ remainder.byteLength = 0;
31662
+ return line;
31663
+ }).pipe(effect_Effect.flatMap((line) => line.trim().length === 0 ? effect_Effect.void : handleLine(line)), effect_Effect.matchEffect({
31599
31664
  onFailure: (error) => handleTermination(() => effect_Effect.succeed(error)),
31600
31665
  onSuccess: () => handleTermination(() => options.terminationError ?? effect_Effect.succeed(new CodexAppServerTransportError({
31601
31666
  detail: "Codex App Server input stream ended",
@@ -33260,7 +33325,7 @@ const BUILT_IN_DRIVERS = [
33260
33325
  configSchema: require_collectUint8StreamText.CodexSettings,
33261
33326
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CodexSettings)({}),
33262
33327
  create: (input) => effect.Effect.tryPromise({
33263
- try: () => Promise.resolve().then(() => require("./CodexDriver-CFxwJNXx.cjs")),
33328
+ try: () => Promise.resolve().then(() => require("./CodexDriver-3TZPgrGk.cjs")),
33264
33329
  catch: (cause) => driverImportError(codexDriverKind, input, cause)
33265
33330
  }).pipe(effect.Effect.flatMap(({ CodexDriver }) => CodexDriver.create(input)))
33266
33331
  },
@@ -33274,7 +33339,7 @@ const BUILT_IN_DRIVERS = [
33274
33339
  configSchema: require_collectUint8StreamText.ClaudeSettings,
33275
33340
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.ClaudeSettings)({}),
33276
33341
  create: (input) => effect.Effect.tryPromise({
33277
- try: () => Promise.resolve().then(() => require("./ClaudeDriver-BTvdJvam.cjs")),
33342
+ try: () => Promise.resolve().then(() => require("./ClaudeDriver-CBCy0_WX.cjs")),
33278
33343
  catch: (cause) => driverImportError(claudeDriverKind, input, cause)
33279
33344
  }).pipe(effect.Effect.flatMap(({ ClaudeDriver }) => ClaudeDriver.create(input)))
33280
33345
  },
@@ -33288,7 +33353,7 @@ const BUILT_IN_DRIVERS = [
33288
33353
  configSchema: require_collectUint8StreamText.CopilotSettings,
33289
33354
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CopilotSettings)({}),
33290
33355
  create: (input) => effect.Effect.tryPromise({
33291
- try: () => Promise.resolve().then(() => require("./CopilotDriver-B8J_ovCX.cjs")),
33356
+ try: () => Promise.resolve().then(() => require("./CopilotDriver-C7a8IhyK.cjs")),
33292
33357
  catch: (cause) => driverImportError(copilotDriverKind, input, cause)
33293
33358
  }).pipe(effect.Effect.flatMap(({ CopilotDriver }) => CopilotDriver.create(input)))
33294
33359
  },
@@ -33302,7 +33367,7 @@ const BUILT_IN_DRIVERS = [
33302
33367
  configSchema: require_collectUint8StreamText.CursorSettings,
33303
33368
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.CursorSettings)({}),
33304
33369
  create: (input) => effect.Effect.tryPromise({
33305
- try: () => Promise.resolve().then(() => require("./CursorDriver-zlKHPy1_.cjs")),
33370
+ try: () => Promise.resolve().then(() => require("./CursorDriver-uNsDetA3.cjs")),
33306
33371
  catch: (cause) => driverImportError(cursorDriverKind, input, cause)
33307
33372
  }).pipe(effect.Effect.flatMap(({ CursorDriver }) => CursorDriver.create(input)))
33308
33373
  },
@@ -33316,7 +33381,7 @@ const BUILT_IN_DRIVERS = [
33316
33381
  configSchema: require_collectUint8StreamText.GrokSettings,
33317
33382
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.GrokSettings)({}),
33318
33383
  create: (input) => effect.Effect.tryPromise({
33319
- try: () => Promise.resolve().then(() => require("./GrokDriver-CTUNclwp.cjs")),
33384
+ try: () => Promise.resolve().then(() => require("./GrokDriver-BJ00ZiYg.cjs")),
33320
33385
  catch: (cause) => driverImportError(grokDriverKind, input, cause)
33321
33386
  }).pipe(effect.Effect.flatMap(({ GrokDriver }) => GrokDriver.create(input)))
33322
33387
  },
@@ -33330,7 +33395,7 @@ const BUILT_IN_DRIVERS = [
33330
33395
  configSchema: require_collectUint8StreamText.OpenCodeSettings,
33331
33396
  defaultConfig: () => effect.Schema.decodeSync(require_collectUint8StreamText.OpenCodeSettings)({}),
33332
33397
  create: (input) => effect.Effect.tryPromise({
33333
- try: () => Promise.resolve().then(() => require("./OpenCodeDriver-pXM8bSct.cjs")),
33398
+ try: () => Promise.resolve().then(() => require("./OpenCodeDriver-BTxd2Q3Q.cjs")),
33334
33399
  catch: (cause) => driverImportError(openCodeDriverKind, input, cause)
33335
33400
  }).pipe(effect.Effect.flatMap(({ OpenCodeDriver }) => OpenCodeDriver.create(input)))
33336
33401
  }
@@ -34045,7 +34110,7 @@ const scopedSafeTeardown = (label) => (effect$28) => effect.Effect.gen(function*
34045
34110
  });
34046
34111
  //#endregion
34047
34112
  //#region package.json
34048
- var version$1 = "0.1.14";
34113
+ var version$1 = "0.1.16";
34049
34114
  //#endregion
34050
34115
  //#region src/provider/Layers/CodexProvider.ts
34051
34116
  const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
@@ -41428,17 +41493,40 @@ const makeGitManager = effect.Effect.fn("makeGitManager")(function* () {
41428
41493
  timeToLive: (exit) => effect.Exit.isSuccess(exit) ? STATUS_RESULT_CACHE_TTL : effect.Duration.zero
41429
41494
  });
41430
41495
  const invalidateLocalStatusResultCache = (cwd) => normalizeStatusCacheKey(cwd).pipe(effect.Effect.flatMap((cacheKey) => effect.Cache.invalidate(localStatusResultCache, cacheKey)));
41496
+ const probeBranchPublished = effect.Effect.fn("probeBranchPublished")(function* (cwd, branch, upstreamRef) {
41497
+ if (upstreamRef !== null) return true;
41498
+ return yield* effect.Effect.gen(function* () {
41499
+ const remotes = (yield* gitCore.execute({
41500
+ operation: "GitManager.probeBranchPublished.remotes",
41501
+ cwd,
41502
+ args: ["remote"]
41503
+ })).stdout.split("\n").map((remote) => remote.trim()).filter((remote) => remote.length > 0);
41504
+ if (remotes.length === 0) return null;
41505
+ const refsResult = yield* gitCore.execute({
41506
+ operation: "GitManager.probeBranchPublished.remoteRefs",
41507
+ cwd,
41508
+ args: [
41509
+ "for-each-ref",
41510
+ "--format=%(refname:short)",
41511
+ "refs/remotes"
41512
+ ]
41513
+ });
41514
+ const remoteRefs = new Set(refsResult.stdout.split("\n").map((ref) => ref.trim()).filter((ref) => ref.length > 0));
41515
+ return remotes.some((remote) => remoteRefs.has(`${remote}/${branch}`));
41516
+ }).pipe(effect.Effect.catch(() => effect.Effect.succeed(null)));
41517
+ });
41431
41518
  const readRemoteStatus = effect.Effect.fn("readRemoteStatus")(function* (cwd) {
41432
41519
  const details = yield* gitCore.statusDetails(cwd).pipe(effect.Effect.catchIf(isNotGitRepositoryError, () => effect.Effect.succeed(null)));
41433
41520
  if (details === null || !details.isRepo) return null;
41434
- const pr = details.branch !== null ? yield* findLatestPr(cwd, {
41521
+ const shouldQueryPullRequests = details.branch === null ? false : (yield* probeBranchPublished(cwd, details.branch, details.upstreamRef)) ?? true;
41522
+ const pr = details.branch !== null && shouldQueryPullRequests ? yield* findLatestPr(cwd, {
41435
41523
  branch: details.branch,
41436
41524
  upstreamRef: details.upstreamRef
41437
41525
  }).pipe(effect.Effect.map((latest) => {
41438
41526
  if (!latest) return null;
41439
41527
  if (details.isDefaultBranch && latest.state !== "open") return null;
41440
41528
  return toStatusPr(latest);
41441
- }), effect.Effect.catch(() => effect.Effect.succeed(null))) : null;
41529
+ })) : null;
41442
41530
  return {
41443
41531
  hasUpstream: details.hasUpstream,
41444
41532
  aheadCount: details.aheadCount,
@@ -77113,6 +77201,7 @@ const ProviderSessionReaperLive = makeProviderSessionReaperLive();
77113
77201
  const OPENCODE_SERVER_READY_PREFIX = "opencode server listening";
77114
77202
  const DEFAULT_OPENCODE_SERVER_TIMEOUT_MS = 5e3;
77115
77203
  const DEFAULT_HOSTNAME = "127.0.0.1";
77204
+ const MINIMUM_OPENCODE_VERSION = "1.14.19";
77116
77205
  const OPENCODE_RUNTIME_ERROR_TAG = "OpenCodeRuntimeError";
77117
77206
  var OpenCodeRuntimeError = class extends effect.Data.TaggedError(OPENCODE_RUNTIME_ERROR_TAG) {
77118
77207
  static is = (u) => effect.Predicate.isTagged(u, OPENCODE_RUNTIME_ERROR_TAG);
@@ -77138,6 +77227,22 @@ const runOpenCodeSdk = (operation, fn) => effect.Effect.tryPromise({
77138
77227
  cause
77139
77228
  })
77140
77229
  }).pipe(effect.Effect.withSpan(`opencode.${operation}`));
77230
+ const verifyOpenCodeServerVersion = (client) => runOpenCodeSdk("global.health", (signal) => client.global.health({ signal })).pipe(effect.Effect.timeoutOption("5 seconds"), effect.Effect.flatMap((result) => {
77231
+ if (effect.Option.isNone(result)) return effect.Effect.fail(new OpenCodeRuntimeError({
77232
+ operation: "global.health",
77233
+ detail: "Timed out while checking the OpenCode server version."
77234
+ }));
77235
+ const health = result.value.data;
77236
+ if (!health?.healthy || typeof health.version !== "string" || health.version.length === 0) return effect.Effect.fail(new OpenCodeRuntimeError({
77237
+ operation: "global.health",
77238
+ detail: "OpenCode server health check returned an invalid response."
77239
+ }));
77240
+ if (compareCliVersions(health.version, "1.14.19") < 0) return effect.Effect.fail(new OpenCodeRuntimeError({
77241
+ operation: "global.health",
77242
+ detail: `OpenCode v${health.version} is too old. Upgrade to v${MINIMUM_OPENCODE_VERSION} or newer.`
77243
+ }));
77244
+ return effect.Effect.succeed(health.version);
77245
+ }));
77141
77246
  let openCodeSdkModulePromise;
77142
77247
  const loadOpenCodeSdkModule = () => effect.Effect.tryPromise({
77143
77248
  try: async () => {
@@ -77155,6 +77260,11 @@ const loadOpenCodeSdkModule = () => effect.Effect.tryPromise({
77155
77260
  cause
77156
77261
  })
77157
77262
  }).pipe(effect.Effect.withSpan("opencode.sdk.load"));
77263
+ function resolveOpenCodeServerPassword(input) {
77264
+ if (input.configuredPassword !== void 0) return input.configuredPassword;
77265
+ if (input.external) return;
77266
+ return input.environment === void 0 ? process.env.OPENCODE_SERVER_PASSWORD : input.environment.OPENCODE_SERVER_PASSWORD;
77267
+ }
77158
77268
  function parseServerUrlFromOutput(output) {
77159
77269
  for (const line of output.split("\n")) {
77160
77270
  if (!line.startsWith(OPENCODE_SERVER_READY_PREFIX)) continue;
@@ -77304,11 +77414,17 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
77304
77414
  `--hostname=${hostname}`,
77305
77415
  `--port=${port}`
77306
77416
  ];
77417
+ const serverPassword = resolveOpenCodeServerPassword({
77418
+ external: false,
77419
+ ...input.serverPassword !== void 0 ? { configuredPassword: input.serverPassword } : {},
77420
+ ...input.environment !== void 0 ? { environment: input.environment } : {}
77421
+ });
77307
77422
  const child = yield* spawner.spawn(effect_unstable_process.ChildProcess.make(input.binaryPath, args, {
77308
77423
  detached: process.platform !== "win32",
77309
77424
  shell: process.platform === "win32",
77310
77425
  env: {
77311
77426
  ...input.environment ?? process.env,
77427
+ ...serverPassword !== void 0 ? { OPENCODE_SERVER_PASSWORD: serverPassword } : {},
77312
77428
  OPENCODE_CONFIG_CONTENT: JSON.stringify({})
77313
77429
  }
77314
77430
  })).pipe(effect.Effect.provideService(effect.Scope.Scope, runtimeScope), effect.Effect.mapError((cause) => new OpenCodeRuntimeError({
@@ -77371,24 +77487,34 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
77371
77487
  }
77372
77488
  return {
77373
77489
  url: readyOption.value,
77490
+ ...serverPassword !== void 0 ? { serverPassword } : {},
77374
77491
  exitCode: child.exitCode.pipe(effect.Effect.map(Number), effect.Effect.orElseSucceed(() => 0))
77375
77492
  };
77376
77493
  });
77377
77494
  const connectToOpenCodeServer = (input) => {
77378
77495
  const serverUrl = input.serverUrl?.trim();
77379
- if (serverUrl) return effect.Effect.succeed({
77380
- url: serverUrl,
77381
- exitCode: null,
77382
- external: true
77383
- });
77496
+ if (serverUrl) {
77497
+ const serverPassword = resolveOpenCodeServerPassword({
77498
+ external: true,
77499
+ ...input.serverPassword !== void 0 ? { configuredPassword: input.serverPassword } : {}
77500
+ });
77501
+ return effect.Effect.succeed({
77502
+ url: serverUrl,
77503
+ ...serverPassword !== void 0 ? { serverPassword } : {},
77504
+ exitCode: null,
77505
+ external: true
77506
+ });
77507
+ }
77384
77508
  return startOpenCodeServerProcess({
77385
77509
  binaryPath: input.binaryPath,
77510
+ ...input.serverPassword !== void 0 ? { serverPassword: input.serverPassword } : {},
77386
77511
  ...input.environment !== void 0 ? { environment: input.environment } : {},
77387
77512
  ...input.port !== void 0 ? { port: input.port } : {},
77388
77513
  ...input.hostname !== void 0 ? { hostname: input.hostname } : {},
77389
77514
  ...input.timeoutMs !== void 0 ? { timeoutMs: input.timeoutMs } : {}
77390
77515
  }).pipe(effect.Effect.map((server) => ({
77391
77516
  url: server.url,
77517
+ ...server.serverPassword !== void 0 ? { serverPassword: server.serverPassword } : {},
77392
77518
  exitCode: server.exitCode,
77393
77519
  external: false
77394
77520
  })));
@@ -77399,11 +77525,11 @@ const makeOpenCodeRuntime = effect.Effect.gen(function* () {
77399
77525
  ...input.serverPassword ? { headers: { Authorization: `Basic ${Buffer.from(`opencode:${input.serverPassword}`, "utf8").toString("base64")}` } } : {},
77400
77526
  throwOnError: true
77401
77527
  })));
77402
- const loadProviders = (client) => runOpenCodeSdk("provider.list", () => client.provider.list()).pipe(effect.Effect.filterMapOrFail((list) => list.data ? effect.Result.succeed(list.data) : effect.Result.fail(new OpenCodeRuntimeError({
77528
+ const loadProviders = (client) => runOpenCodeSdk("provider.list", (signal) => client.provider.list({}, { signal })).pipe(effect.Effect.filterMapOrFail((list) => list.data ? effect.Result.succeed(list.data) : effect.Result.fail(new OpenCodeRuntimeError({
77403
77529
  operation: "provider.list",
77404
77530
  detail: "OpenCode provider list was empty."
77405
77531
  })), (result) => result));
77406
- const loadAgents = (client) => runOpenCodeSdk("app.agents", () => client.app.agents()).pipe(effect.Effect.map((result) => result.data ?? []));
77532
+ const loadAgents = (client) => runOpenCodeSdk("app.agents", (signal) => client.app.agents({}, { signal })).pipe(effect.Effect.map((result) => result.data ?? []));
77407
77533
  const loadOpenCodeInventory = (client) => effect.Effect.all([loadProviders(client), loadAgents(client)], { concurrency: "unbounded" }).pipe(effect.Effect.map(([providerList, agents]) => ({
77408
77534
  providerList,
77409
77535
  agents
@@ -82021,7 +82147,10 @@ const make$2 = effect.Effect.gen(function* () {
82021
82147
  message: input.messageText,
82022
82148
  ...attachments.length > 0 ? { attachments } : {},
82023
82149
  modelSelection
82024
- });
82150
+ }).pipe(effect.Effect.retry({
82151
+ times: 2,
82152
+ schedule: effect.Schedule.exponential("2 seconds")
82153
+ }));
82025
82154
  if (!generated) return;
82026
82155
  const thread = yield* resolveThread(input.threadId);
82027
82156
  if (!thread) return;
@@ -85955,7 +86084,7 @@ function normalizeSpanStatus(record) {
85955
86084
  function spanFailureMessage(record) {
85956
86085
  if (record.type === "effect-span") {
85957
86086
  const exit = record.exit;
85958
- if (exit && exit._tag !== "Success") return truncateMessage(exit.cause);
86087
+ if (exit?._tag === "Failure") return truncateMessage(exit.cause);
85959
86088
  return;
85960
86089
  }
85961
86090
  if (record.type === "otlp-span" && record.status?.message) return truncateMessage(record.status.message);
@@ -98314,6 +98443,11 @@ const ReadFromSequenceRequestSchema = effect.Schema.Struct({
98314
98443
  sequenceExclusive: require_collectUint8StreamText.NonNegativeInt,
98315
98444
  limit: effect.Schema.Number
98316
98445
  });
98446
+ const ReadThroughSequenceRequestSchema = effect.Schema.Struct({
98447
+ sequenceExclusive: require_collectUint8StreamText.NonNegativeInt,
98448
+ sequenceInclusive: require_collectUint8StreamText.NonNegativeInt,
98449
+ limit: effect.Schema.Number
98450
+ });
98317
98451
  const DEFAULT_READ_FROM_SEQUENCE_LIMIT = 1e3;
98318
98452
  const READ_PAGE_SIZE = 500;
98319
98453
  function inferActorKind(event) {
@@ -98406,6 +98540,34 @@ const makeEventStore = effect.Effect.gen(function* () {
98406
98540
  LIMIT ${request.limit}
98407
98541
  `
98408
98542
  });
98543
+ const readEventRowsThroughSequence = effect_unstable_sql_SqlSchema.findAll({
98544
+ Request: ReadThroughSequenceRequestSchema,
98545
+ Result: OrchestrationEventPersistedRowSchema,
98546
+ execute: (request) => sql`
98547
+ SELECT
98548
+ sequence,
98549
+ event_id AS "eventId",
98550
+ event_type AS "type",
98551
+ aggregate_kind AS "aggregateKind",
98552
+ stream_id AS "aggregateId",
98553
+ occurred_at AS "occurredAt",
98554
+ command_id AS "commandId",
98555
+ causation_event_id AS "causationEventId",
98556
+ correlation_id AS "correlationId",
98557
+ payload_json AS "payload",
98558
+ metadata_json AS "metadata"
98559
+ FROM orchestration_events
98560
+ WHERE sequence > ${request.sequenceExclusive}
98561
+ AND sequence <= ${request.sequenceInclusive}
98562
+ ORDER BY sequence ASC
98563
+ LIMIT ${request.limit}
98564
+ `
98565
+ });
98566
+ const readLatestSequence = effect_unstable_sql_SqlSchema.findOne({
98567
+ Request: effect.Schema.Void,
98568
+ Result: effect.Schema.Struct({ sequence: effect.Schema.NullOr(require_collectUint8StreamText.NonNegativeInt) }),
98569
+ execute: () => sql`SELECT MAX(sequence) AS "sequence" FROM orchestration_events`
98570
+ });
98409
98571
  const readRecentEventRows = effect_unstable_sql_SqlSchema.findAll({
98410
98572
  Request: effect.Schema.Struct({
98411
98573
  since: require_collectUint8StreamText.IsoDateTime,
@@ -98465,6 +98627,22 @@ const makeEventStore = effect.Effect.gen(function* () {
98465
98627
  }));
98466
98628
  return readPage(sequenceExclusive, normalizedLimit);
98467
98629
  };
98630
+ const readThroughSequence = (sequenceExclusive, sequenceInclusive) => {
98631
+ const normalizedStart = Math.max(0, Math.floor(sequenceExclusive));
98632
+ const normalizedEnd = Math.max(0, Math.floor(sequenceInclusive));
98633
+ if (normalizedEnd <= normalizedStart) return effect.Stream.empty;
98634
+ const readPage = (cursor) => effect.Stream.fromEffect(readEventRowsThroughSequence({
98635
+ sequenceExclusive: cursor,
98636
+ sequenceInclusive: normalizedEnd,
98637
+ limit: READ_PAGE_SIZE
98638
+ }).pipe(effect.Effect.mapError(toPersistenceSqlOrDecodeError$2("OrchestrationEventStore.readThroughSequence:query", "OrchestrationEventStore.readThroughSequence:decodeRows")), effect.Effect.flatMap((rows) => effect.Effect.forEach(rows, (row) => decodeEvent(row).pipe(effect.Effect.mapError(toPersistenceDecodeError("OrchestrationEventStore.readThroughSequence:rowToEvent"))))))).pipe(effect.Stream.flatMap((events) => {
98639
+ if (events.length === 0) return effect.Stream.empty;
98640
+ const nextCursor = events[events.length - 1].sequence;
98641
+ return effect.Stream.concat(effect.Stream.fromIterable(events), nextCursor < normalizedEnd ? readPage(nextCursor) : effect.Stream.empty);
98642
+ }));
98643
+ return readPage(normalizedStart);
98644
+ };
98645
+ const latestSequence = readLatestSequence(void 0).pipe(effect.Effect.map((row) => row.sequence ?? 0), effect.Effect.mapError(toPersistenceSqlOrDecodeError$2("OrchestrationEventStore.latestSequence:query", "OrchestrationEventStore.latestSequence:decodeRow")));
98468
98646
  const readPage = (sequenceExclusive, limit) => {
98469
98647
  const normalizedLimit = Math.max(0, Math.floor(limit));
98470
98648
  const normalizedSequenceExclusive = Math.max(0, Math.floor(sequenceExclusive));
@@ -98492,6 +98670,8 @@ const makeEventStore = effect.Effect.gen(function* () {
98492
98670
  readPage,
98493
98671
  readRecent,
98494
98672
  readFromSequence,
98673
+ readThroughSequence,
98674
+ latestSequence,
98495
98675
  readAll: () => readFromSequence(0, Number.MAX_SAFE_INTEGER),
98496
98676
  hasEventAfter
98497
98677
  };
@@ -103381,7 +103561,8 @@ const makeOrchestrationProjectionPipeline = effect.Effect.fn("makeOrchestrationP
103381
103561
  const lastAppliedByProjector = new Map(projectors.map((projector) => [projector.name, 0]));
103382
103562
  for (const row of stateRows) if (lastAppliedByProjector.has(row.projector)) lastAppliedByProjector.set(row.projector, row.lastAppliedSequence);
103383
103563
  const replayFromSequence = Math.min(...lastAppliedByProjector.values());
103384
- yield* effect.Stream.runForEach(eventStore.readFromSequence(replayFromSequence, Number.MAX_SAFE_INTEGER), (event) => effect.Effect.gen(function* () {
103564
+ const replayThroughSequence = yield* eventStore.latestSequence;
103565
+ yield* effect.Stream.runForEach(eventStore.readThroughSequence(replayFromSequence, replayThroughSequence), (event) => effect.Effect.gen(function* () {
103385
103566
  const projectorsToAdvance = projectors.filter((projector) => event.sequence > (lastAppliedByProjector.get(projector.name) ?? 0));
103386
103567
  if (projectorsToAdvance.length === 0) return;
103387
103568
  const postCommit = yield* sql.withTransaction(applyProjectorsForEvent(event, projectorsToAdvance));
@@ -107316,6 +107497,7 @@ exports.GITHUB_PULL_REQUEST_LIST_JSON_FIELDS = GITHUB_PULL_REQUEST_LIST_JSON_FIE
107316
107497
  exports.GitHubCli = GitHubCli;
107317
107498
  exports.GitHubCliError = GitHubCliError;
107318
107499
  exports.GitLabCli = GitLabCli;
107500
+ exports.MINIMUM_OPENCODE_VERSION = MINIMUM_OPENCODE_VERSION;
107319
107501
  exports.OpenCodeRuntime = OpenCodeRuntime;
107320
107502
  exports.OpenCodeRuntimeError = OpenCodeRuntimeError;
107321
107503
  exports.ProviderAdapterProcessError = ProviderAdapterProcessError;
@@ -107455,4 +107637,5 @@ exports.toOpenCodeFileParts = toOpenCodeFileParts;
107455
107637
  exports.toOpenCodePermissionReply = toOpenCodePermissionReply;
107456
107638
  exports.toOpenCodeQuestionAnswers = toOpenCodeQuestionAnswers;
107457
107639
  exports.validateRankInboxThreadsResult = validateRankInboxThreadsResult;
107640
+ exports.verifyOpenCodeServerVersion = verifyOpenCodeServerVersion;
107458
107641
  exports.withoutStatusCheckRollupJsonField = withoutStatusCheckRollupJsonField;