ryco-cli 0.1.20 → 0.1.21

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 (201) hide show
  1. package/dist/{AcpNativeLogging-CLM3p9JD.mjs → AcpNativeLogging-Ch-s9nA8.mjs} +182 -2
  2. package/dist/{AcpNativeLogging-Bh7MX3rC.cjs → AcpNativeLogging-D54V5cIY.cjs} +187 -1
  3. package/dist/{AzureDevOpsSourceControlProvider-D9QXGi1h.cjs → AzureDevOpsSourceControlProvider-BzB5-N9m.cjs} +2 -2
  4. package/dist/{AzureDevOpsSourceControlProvider-jQm1WPMS.mjs → AzureDevOpsSourceControlProvider-DTOlXGyd.mjs} +2 -2
  5. package/dist/{BitbucketSourceControlProvider-C3VDp9qR.cjs → BitbucketSourceControlProvider-D-8PWXO3.cjs} +2 -2
  6. package/dist/{BitbucketSourceControlProvider-j95Cro_2.mjs → BitbucketSourceControlProvider-DGd4IPx5.mjs} +2 -2
  7. package/dist/{ClaudeDriver-CT89QDP8.mjs → ClaudeDriver-DxowtK6I.mjs} +2 -2
  8. package/dist/{ClaudeDriver-DiRhQM2K.cjs → ClaudeDriver-HEbUzW34.cjs} +2 -2
  9. package/dist/{CodexDriver-CBYfPl_X.mjs → CodexDriver-CccSWoP3.mjs} +3 -3
  10. package/dist/{CodexDriver-BmKoU7w_.cjs → CodexDriver-YG4IwzLm.cjs} +3 -3
  11. package/dist/{CodexTextGeneration-B7GPyLo2.mjs → CodexTextGeneration-BfGt7ZUe.mjs} +1 -1
  12. package/dist/{CodexTextGeneration-CuXvtfAi.cjs → CodexTextGeneration-CBJHkgOz.cjs} +1 -1
  13. package/dist/{CopilotDriver-XX5zmGVK.cjs → CopilotDriver-Bm4OZMkm.cjs} +3 -3
  14. package/dist/{CopilotDriver-BJ1P_bHz.mjs → CopilotDriver-DZAW-7yV.mjs} +3 -3
  15. package/dist/{CursorDriver-BH6yAijk.mjs → CursorDriver-B4jb4rWd.mjs} +14 -3
  16. package/dist/{CursorDriver-CYMXQKec.cjs → CursorDriver-CYcKAkUY.cjs} +14 -3
  17. package/dist/{ForgejoSourceControlProvider-Dzg-BJY_.cjs → ForgejoSourceControlProvider-CXUevO6C.cjs} +2 -2
  18. package/dist/{ForgejoSourceControlProvider-ZfU3SBzW.mjs → ForgejoSourceControlProvider-Dfi8KH7I.mjs} +2 -2
  19. package/dist/{GitHubSourceControlProvider-Bx5_H3zb.mjs → GitHubSourceControlProvider-BH97aNa0.mjs} +2 -2
  20. package/dist/{GitHubSourceControlProvider-BpyIi23Q.cjs → GitHubSourceControlProvider-DOs1ouvp.cjs} +2 -2
  21. package/dist/{GitLabSourceControlProvider-QccSsOnx.cjs → GitLabSourceControlProvider-CfbE6GYD.cjs} +2 -2
  22. package/dist/{GitLabSourceControlProvider-DjvGD1WZ.mjs → GitLabSourceControlProvider-nIzcy9AJ.mjs} +2 -2
  23. package/dist/{GrokDriver-jE4az7JZ.cjs → GrokDriver-C35gWEiw.cjs} +14 -3
  24. package/dist/{GrokDriver-BPIUrqkN.mjs → GrokDriver-CENrrqQc.mjs} +14 -3
  25. package/dist/{OpenCodeDriver-_hUfFwH4.mjs → OpenCodeDriver-BIxSPI9J.mjs} +105 -23
  26. package/dist/{OpenCodeDriver-IbZqAzYW.cjs → OpenCodeDriver-CHuQ6Xhc.cjs} +105 -23
  27. package/dist/{SourceControlProviderDiscoveryCatalog-CnkV-oKD.cjs → SourceControlProviderDiscoveryCatalog-DCmYsPEa.cjs} +1 -1
  28. package/dist/{SourceControlProviderDiscoveryCatalog-CHxCP6Ng.mjs → SourceControlProviderDiscoveryCatalog-DaRgCE5d.mjs} +1 -1
  29. package/dist/bin.cjs +6158 -5042
  30. package/dist/bin.mjs +6148 -5032
  31. package/dist/client/assets/AccountSettings--RGb4Xyh.js +1 -0
  32. package/dist/client/assets/{AiFocusSettings-CYIp0JOV.js → AiFocusSettings-BnGcbAMj.js} +1 -1
  33. package/dist/client/assets/{AnimatedHeight-CM_Eh6tz.js → AnimatedHeight-xBldRJT_.js} +1 -1
  34. package/dist/client/assets/{AppearanceSettings-BwUAv5oz.js → AppearanceSettings-BZRfC5N0.js} +1 -1
  35. package/dist/client/assets/{BranchToolbar.logic-CKKpnCfs.js → BranchToolbar.logic-CGpYXkLE.js} +1 -1
  36. package/dist/client/assets/{ChatRightPanel-DYXZNh1m.js → ChatRightPanel-BlooofmF.js} +9 -9
  37. package/dist/client/assets/{ChatThreadRouteView-B0kj0wFr.js → ChatThreadRouteView-B28bv4Zt.js} +1 -1
  38. package/dist/client/assets/CommandPaletteDialog-hNEraTe2.js +1 -0
  39. package/dist/client/assets/{CompositeItem-B4ITmHni.js → CompositeItem-CKY4wPzb.js} +1 -1
  40. package/dist/client/assets/{CompositeRoot-C5I2Yh5e.js → CompositeRoot-Ds7U4w5S.js} +1 -1
  41. package/dist/client/assets/ConnectionsSettings-C4VqR67L.js +7 -0
  42. package/dist/client/assets/{DiagnosticsSettings-B6IUUiYM.js → DiagnosticsSettings-ByZ42-mW.js} +1 -1
  43. package/dist/client/assets/{DialogHandle-Bs7TUuxl.js → DialogHandle-BdmgCiER.js} +1 -1
  44. package/dist/client/assets/{DialogPopup-BAK5J3da.js → DialogPopup-D6m8w7-0.js} +1 -1
  45. package/dist/client/assets/DialogRoot-BnE2_J9j.js +1 -0
  46. package/dist/client/assets/{DialogTitle-B1m3rLO-.js → DialogTitle-DFkPQ5wa.js} +1 -1
  47. package/dist/client/assets/{DialogTrigger-VXV8wYO4.js → DialogTrigger-CTCt2xVs.js} +1 -1
  48. package/dist/client/assets/{DialogViewport-yUeHNu43.js → DialogViewport-OqbNjTEg.js} +1 -1
  49. package/dist/client/assets/{DraftChatThreadRouteView-C39ZNgWr.js → DraftChatThreadRouteView-B_4VVh8J.js} +1 -1
  50. package/dist/client/assets/{ExternalIdentityWeb.logic-TlJdh82R.js → ExternalIdentityWeb.logic-TXvkTDG8.js} +1 -1
  51. package/dist/client/assets/{GlassSurface-BWk2twKc.js → GlassSurface-k7VAG7Dp.js} +1 -1
  52. package/dist/client/assets/HostedConnectionControls-D0YyFVVm.js +1 -0
  53. package/dist/client/assets/HostedHubRoot-gr9o6h-w.js +1 -0
  54. package/dist/client/assets/{HostedNativeAuthorizationRoute-C1VRYU0-.js → HostedNativeAuthorizationRoute-DQy7gPHg.js} +1 -1
  55. package/dist/client/assets/HostedRelayTrustNotice-DtiCe1oF.js +1 -0
  56. package/dist/client/assets/{Icons-uMh1k5C0.js → Icons-BHigZ6eO.js} +1 -1
  57. package/dist/client/assets/{IntegrationsSettingsPanel-Mx-1xSUL.js → IntegrationsSettingsPanel-RgmTIo_4.js} +1 -1
  58. package/dist/client/assets/{KeybindingsSettings-Bv3H18VO.js → KeybindingsSettings-2J94301x.js} +1 -1
  59. package/dist/client/assets/{McpServersSettings-Cbq-uHU3.js → McpServersSettings-Cpzyop0g.js} +1 -1
  60. package/dist/client/assets/{MobileSheet-DS7_soKu.js → MobileSheet-5RNq1fWV.js} +1 -1
  61. package/dist/client/assets/{NewWorktreeDialog-CLm1JR27.js → NewWorktreeDialog-BE_53fbt.js} +1 -1
  62. package/dist/client/assets/{NoActiveThreadState-CFxNrhs_.js → NoActiveThreadState-Cpar0wiW.js} +1 -1
  63. package/dist/client/assets/NodeSecuritySettings-BpZYwf5z.js +1 -0
  64. package/dist/client/assets/{OpinionatedPluginsSettings-B7gZOBCs.js → OpinionatedPluginsSettings-CLbbw_K_.js} +1 -1
  65. package/dist/client/assets/{PhoneGetAppInterstitial-DQdUrqs1.js → PhoneGetAppInterstitial-G1mx30Rm.js} +1 -1
  66. package/dist/client/assets/{PhoneGetAppInterstitialBackdrop-DbRPU11Z.js → PhoneGetAppInterstitialBackdrop-nfP93au3.js} +1 -1
  67. package/dist/client/assets/PhoneHome-D24dskaK.js +1 -0
  68. package/dist/client/assets/{PhoneSettingsSurface-BJ8jDucY.js → PhoneSettingsSurface-DU6QcRMa.js} +1 -1
  69. package/dist/client/assets/{ProjectFavicon-DHnstN4J.js → ProjectFavicon-DiAvCEOv.js} +1 -1
  70. package/dist/client/assets/{ProviderModelPicker-Ch69G0-0.js → ProviderModelPicker-KKoDIb0I.js} +1 -1
  71. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-D3qYdp40.js → ProviderUpdateLaunchNotification.logic-BWOy8LJG.js} +1 -1
  72. package/dist/client/assets/{ProvidersSettingsPanel-Dz-1od7X.js → ProvidersSettingsPanel-Cotp9jkx.js} +1 -1
  73. package/dist/client/assets/{RedactedSensitiveText-BORE69Ig.js → RedactedSensitiveText-Bijn-7t0.js} +1 -1
  74. package/dist/client/assets/{RootAppShell-DnesFYfo.js → RootAppShell-BPFAVRor.js} +3 -3
  75. package/dist/client/assets/{RycoLetterMark-DDx_gBX-.js → RycoLetterMark-DDqdXSCR.js} +1 -1
  76. package/dist/client/assets/{SettingsDialog-CWK_H1sI.js → SettingsDialog-C1pQqIpt.js} +1 -1
  77. package/dist/client/assets/{SettingsPanels-DxMEuovz.js → SettingsPanels-_z4Xw8vV.js} +1 -1
  78. package/dist/client/assets/{SettingsPanels.editor-D2gxvDPy.js → SettingsPanels.editor-CFrJ6eJl.js} +1 -1
  79. package/dist/client/assets/{SourceControlSettings-CB2SdaRk.js → SourceControlSettings-aZXtdyQJ.js} +1 -1
  80. package/dist/client/assets/{StatisticsPage-MhMDuSSQ.js → StatisticsPage-DLxnsLkl.js} +1 -1
  81. package/dist/client/assets/{StatisticsPanel-D3d0bJgk.js → StatisticsPanel-CZng52aF.js} +1 -1
  82. package/dist/client/assets/{StatisticsSettingsLink-DlnQpfyr.js → StatisticsSettingsLink-BswiD6v1.js} +1 -1
  83. package/dist/client/assets/{ThreadStatusIndicators-CPpIFcAC.js → ThreadStatusIndicators-Dg7ByO0t.js} +0 -0
  84. package/dist/client/assets/{ThreadTerminalDrawer-DvadlVXV.js → ThreadTerminalDrawer-ro03rSMk.js} +1 -1
  85. package/dist/client/assets/{ThreadWorkspacePanel-Ct9EINsa.js → ThreadWorkspacePanel-j_muuK0U.js} +1 -1
  86. package/dist/client/assets/{ToolbarRootContext-DtUqN8i6.js → ToolbarRootContext-gBA5VTsh.js} +1 -1
  87. package/dist/client/assets/{WorkItemsTab-CI6hTQ_k.js → WorkItemsTab-CBbr_lPX.js} +4 -4
  88. package/dist/client/assets/{alert-DQjuri3D.js → alert-DM55UBFJ.js} +1 -1
  89. package/dist/client/assets/{alert-dialog-Cb2TnXzy.js → alert-dialog-t0tth9lg.js} +1 -1
  90. package/dist/client/assets/authorization-jiPI8hG1.js +1 -0
  91. package/dist/client/assets/{badge-Cil0isYQ.js → badge-DUe5V2Mj.js} +1 -1
  92. package/dist/client/assets/{branding-BEx1jrAA.js → branding-31Bj-8ZC.js} +1 -1
  93. package/dist/client/assets/{button-CBqaO2Ub.js → button-BdUaa4U1.js} +1 -1
  94. package/dist/client/assets/{capabilities-Cj8jXZOW.js → capabilities-DQDkV1US.js} +1 -1
  95. package/dist/client/assets/{chatThreadActions-kwD_yAEt.js → chatThreadActions-3VwZmcuQ.js} +1 -1
  96. package/dist/client/assets/{collapsible-DBPd--L7.js → collapsible-BmAgbTeN.js} +1 -1
  97. package/dist/client/assets/{command-DuPvkUAz.js → command-8YtR6jmS.js} +1 -1
  98. package/dist/client/assets/composerDraftStore-Bz5WIZBE.js +11 -0
  99. package/dist/client/assets/{data-list-BNy2Nwkd.js → data-list-D7UF_rKC.js} +1 -1
  100. package/dist/client/assets/{desktopUpdateAtoms-Dz4zQu-C.js → desktopUpdateAtoms-D_GMRE2r.js} +1 -1
  101. package/dist/client/assets/{desktopWorkspace-wrPRMcOi.js → desktopWorkspace-Dg6EeBlb.js} +1 -1
  102. package/dist/client/assets/{device-DbMaLmeM.js → device-DlExHdp_.js} +1 -1
  103. package/dist/client/assets/{dialog-Csp7hsmq.js → dialog-B0sUgnpe.js} +1 -1
  104. package/dist/client/assets/{draft-input-COB-ymgx.js → draft-input-CljKajxE.js} +1 -1
  105. package/dist/client/assets/{editorPreferences-lQ3Fm4yA.js → editorPreferences-B3qgjPa6.js} +1 -1
  106. package/dist/client/assets/{empty-BcTA7vWq.js → empty-D5W-VFFg.js} +1 -1
  107. package/dist/client/assets/{env-BZZxbmon.js → env-3rzMJf1D.js} +1 -1
  108. package/dist/client/assets/{getPseudoElementBounds-BaLrkv_J.js → getPseudoElementBounds-BAmGtfzA.js} +1 -1
  109. package/dist/client/assets/{group-CCjhaP2K.js → group-BQB2fHcw.js} +1 -1
  110. package/dist/client/assets/{index-QY6vcnCY.js → index-CQJvt69U.js} +2 -2
  111. package/dist/client/assets/{input-pu0UXdN_.js → input-5Gxk32uP.js} +1 -1
  112. package/dist/client/assets/{kbd-xUvRCeUS.js → kbd-B4HCyWpi.js} +1 -1
  113. package/dist/client/assets/{keybindings-Bj6xWIbQ.js → keybindings-DCgzArdM.js} +1 -1
  114. package/dist/client/assets/{label-BzDE8wjR.js → label-CaZNWVUA.js} +1 -1
  115. package/dist/client/assets/{lib-B6XyeqaU.js → lib-B7pkMeOn.js} +1 -1
  116. package/dist/client/assets/{logging-1BfRrhxL.js → logging-B1VrUJXw.js} +1 -1
  117. package/dist/client/assets/{main-stppnsiU.js → main-BPfnkW0F.js} +2 -2
  118. package/dist/client/assets/main-DspUYA0Y.css +2 -0
  119. package/dist/client/assets/{menu-g3Hcm2JF.js → menu-C9Z3D_7l.js} +1 -1
  120. package/dist/client/assets/{popover-z5hURYff.js → popover-CCz2VJor.js} +1 -1
  121. package/dist/client/assets/primary-BMsRfh2b.js +2 -0
  122. package/dist/client/assets/{projectPaths-BFTUsvWs.js → projectPaths-C7IGaRXO.js} +1 -1
  123. package/dist/client/assets/{providerDriverMeta-C9M8tUrj.js → providerDriverMeta-CgWTJ9AV.js} +1 -1
  124. package/dist/client/assets/{providerIconUtils-BXecnJ0v.js → providerIconUtils-DKIWQBl_.js} +1 -1
  125. package/dist/client/assets/providerInstances-DTwJD7w4.js +1 -0
  126. package/dist/client/assets/providerModels-DTwJD7w4.js +1 -0
  127. package/dist/client/assets/{qr-code-B6lBPRxy.js → qr-code-BPTdK_Fr.js} +1 -1
  128. package/dist/client/assets/{radio-group-DQahlnSi.js → radio-group-2REtGBUc.js} +1 -1
  129. package/dist/client/assets/{resolveAriaLabelledBy-CUqcBhyS.js → resolveAriaLabelledBy-CPzaFh9Q.js} +1 -1
  130. package/dist/client/assets/{rightPanelRouteSearch-uEySicf2.js → rightPanelRouteSearch-Cv7sQjf8.js} +1 -1
  131. package/dist/client/assets/runtime-DAfYpzw4.js +1 -0
  132. package/dist/client/assets/{scroll-area-CzUrMo2h.js → scroll-area-BsYcpnWD.js} +1 -1
  133. package/dist/client/assets/{scrollEdges-C5VxoJIp.js → scrollEdges-CUJFIJBP.js} +1 -1
  134. package/dist/client/assets/{select-_C7bRT7k.js → select-zInJ5G5C.js} +1 -1
  135. package/dist/client/assets/{separator-CFUmZFfK.js → separator-CsdeZPxC.js} +1 -1
  136. package/dist/client/assets/{session-logic-C5moG_sv.js → session-logic-CjEpVbpM.js} +4 -2
  137. package/dist/client/assets/{settingsDialogStore-DnU14tMG.js → settingsDialogStore-B7yUTgbo.js} +1 -1
  138. package/dist/client/assets/{settingsLayout-zwP6p5aD.js → settingsLayout-7JR7nC6x.js} +1 -1
  139. package/dist/client/assets/{sheet-BoROLwxR.js → sheet-CLd8wqAA.js} +1 -1
  140. package/dist/client/assets/{sidebar-5T3qKIfp.js → sidebar-BliCAaUG.js} +1 -1
  141. package/dist/client/assets/{sidebarProjectFolders-Bzdw3xc6.js → sidebarProjectFolders-ScxWbdTn.js} +1 -1
  142. package/dist/client/assets/{sidebarStatusText-q88Acn3r.js → sidebarStatusText-WiaEF1ae.js} +1 -1
  143. package/dist/client/assets/{skeleton-C2GDOvXd.js → skeleton-B_qDqbso.js} +1 -1
  144. package/dist/client/assets/{spinner-Dlyh0j_K.js → spinner-BlCG_0jN.js} +1 -1
  145. package/dist/client/assets/src-Chx4ffXH.js +14 -0
  146. package/dist/client/assets/storeSelectors-Of4FM0vM.js +1 -0
  147. package/dist/client/assets/{switch-CIMwetO3.js → switch-DUT5lUyk.js} +1 -1
  148. package/dist/client/assets/{terminal-links-BJzH2Ipe.js → terminal-links-Bxew8m4Q.js} +1 -1
  149. package/dist/client/assets/{textarea-C0_BLJbT.js → textarea-C5eyaBI3.js} +1 -1
  150. package/dist/client/assets/{threadPinning-DQrBoIxu.js → threadPinning-B8un4fjx.js} +1 -1
  151. package/dist/client/assets/{threadPriorityRefreshRuntime-D-OkS27H.js → threadPriorityRefreshRuntime-Cgjn5Y-7.js} +1 -1
  152. package/dist/client/assets/{toast-D7IDKuLa.js → toast-X_O6OBAx.js} +1 -1
  153. package/dist/client/assets/{toggle-DjmkdNns.js → toggle-P-wZyQFO.js} +1 -1
  154. package/dist/client/assets/{toggle-group-q7LGJy7u.js → toggle-group-Du7zfd4_.js} +1 -1
  155. package/dist/client/assets/{tooltip-c9oahm_e.js → tooltip-D_i-87PL.js} +1 -1
  156. package/dist/client/assets/types-Of4FM0vM.js +1 -0
  157. package/dist/client/assets/{uiStateStore-C48VlkZ2.js → uiStateStore-UUXKrPLz.js} +1 -1
  158. package/dist/client/assets/{useAtlassian-Bpvpm41l.js → useAtlassian-BPNtoDXL.js} +0 -0
  159. package/dist/client/assets/{useButton-CbjUY1n3.js → useButton-D8BjCVb-.js} +1 -1
  160. package/dist/client/assets/{useCompositeListItem-Mh9CnfjW.js → useCompositeListItem-BHuxHR8U.js} +1 -1
  161. package/dist/client/assets/{useDebouncedValue-fMFxXx4-.js → useDebouncedValue-D2-9M4Tq.js} +1 -1
  162. package/dist/client/assets/{useFloatingRootContext-P6J9bP_1.js → useFloatingRootContext-CTdmlYcf.js} +1 -1
  163. package/dist/client/assets/useHandleNewThread-YGjWitl4.js +1 -0
  164. package/dist/client/assets/{useLabelableId-ve_G1Djw.js → useLabelableId-LInf_Egz.js} +1 -1
  165. package/dist/client/assets/{useLocation-LUorHj6V.js → useLocation-3zGT25DO.js} +1 -1
  166. package/dist/client/assets/{useOpenInteractionType-BcwkVFGu.js → useOpenInteractionType-BPthQeg6.js} +1 -1
  167. package/dist/client/assets/{usePhoneThreadActions--SRv1Gdm.js → usePhoneThreadActions-D_Z29f6p.js} +1 -1
  168. package/dist/client/assets/{usePopupViewport-DyXMbxzY.js → usePopupViewport-BErrsN0k.js} +1 -1
  169. package/dist/client/assets/{useScrollLock-DvPB4gyu.js → useScrollLock-CLyJPg7p.js} +1 -1
  170. package/dist/client/assets/{useStatistics-B4vW9Enx.js → useStatistics-BQkcb-1_.js} +1 -1
  171. package/dist/client/assets/{useSwipeDismiss-8zZC4ynu.js → useSwipeDismiss-DjMT1XiU.js} +1 -1
  172. package/dist/client/assets/{useThreadActions-wbcN8Mp3.js → useThreadActions-ISbVGkmx.js} +1 -1
  173. package/dist/client/assets/{useTriggerFocusGuards-DI2oAYh0.js → useTriggerFocusGuards-DwOHWbrB.js} +1 -1
  174. package/dist/client/assets/{useValueChanged-DeYQvzxH.js → useValueChanged-Bq39JB8D.js} +1 -1
  175. package/dist/client/assets/{utils-Dz7wQZDk.js → utils-BFbDkTQq.js} +1 -1
  176. package/dist/client/index.html +1 -1
  177. package/dist/{collectUint8StreamText-CDu-bszH.cjs → collectUint8StreamText-C5fop6Zf.cjs} +443 -142
  178. package/dist/{collectUint8StreamText-B3klZuIF.mjs → collectUint8StreamText-D8TBiBWk.mjs} +414 -143
  179. package/dist/{makeManagedServerProvider-DeEmDbiq.cjs → makeManagedServerProvider-BytnBN6b.cjs} +1 -1
  180. package/dist/{makeManagedServerProvider-CsaYHU8T.mjs → makeManagedServerProvider-DRlNwlhe.mjs} +1 -1
  181. package/package.json +1 -1
  182. package/dist/client/assets/AccountSettings-CvD49Uja.js +0 -1
  183. package/dist/client/assets/CommandPaletteDialog-CJKvYVxh.js +0 -1
  184. package/dist/client/assets/ConnectionsSettings-4l-DXYo6.js +0 -7
  185. package/dist/client/assets/DialogRoot-DMnQO_iQ.js +0 -1
  186. package/dist/client/assets/HostedConnectionControls-DO5uPfav.js +0 -1
  187. package/dist/client/assets/HostedHubRoot-DkHX6TkK.js +0 -1
  188. package/dist/client/assets/HostedRelayTrustNotice-Cl7lRwRJ.js +0 -1
  189. package/dist/client/assets/NodeSecuritySettings-B3uURyma.js +0 -1
  190. package/dist/client/assets/PhoneHome-BbZKBYb8.js +0 -1
  191. package/dist/client/assets/authorization-BrGZruGo.js +0 -1
  192. package/dist/client/assets/composerDraftStore-czbuHgbM.js +0 -11
  193. package/dist/client/assets/main-CZzCxtM-.css +0 -2
  194. package/dist/client/assets/primary-AnB-Zuft.js +0 -2
  195. package/dist/client/assets/providerInstances-CMy-5cGE.js +0 -1
  196. package/dist/client/assets/providerModels-CMy-5cGE.js +0 -1
  197. package/dist/client/assets/runtime-DRPzstwF.js +0 -1
  198. package/dist/client/assets/src-Blzsn4sO.js +0 -14
  199. package/dist/client/assets/storeSelectors-BJw1h5Ih.js +0 -1
  200. package/dist/client/assets/types-BJw1h5Ih.js +0 -1
  201. package/dist/client/assets/useHandleNewThread-C1VSk4Ji.js +0 -1
@@ -365,6 +365,7 @@ const AdvertisedEndpoint = effect.Schema.Struct({
365
365
  isDefault: effect.Schema.optional(effect.Schema.Boolean),
366
366
  description: effect.Schema.optional(TrimmedNonEmptyString)
367
367
  });
368
+ const RELAY_E2EE_CAPABILITY_STATEMENT_MAX_BYTES = 5190;
368
369
  const RELAY_MAX_CONTROL_FRAME_BYTES = 262144;
369
370
  const RELAY_MAX_DATA_CHUNK_BYTES = 262144;
370
371
  const RELAY_MAX_DATA_FRAME_OVERHEAD_BYTES = 1024;
@@ -427,7 +428,11 @@ const RELAY_FRAME_TYPES = [
427
428
  "channel.close",
428
429
  "ping",
429
430
  "pong",
430
- "error"
431
+ "error",
432
+ "node.e2ee.statement",
433
+ "node.e2ee.statement.ack",
434
+ "e2ee.verifier-keys",
435
+ "e2ee.enrollment-revoked"
431
436
  ];
432
437
  const RELAY_PROTOCOL_ERROR_CODES = [
433
438
  "invalid_encoding",
@@ -438,7 +443,7 @@ const RELAY_PROTOCOL_ERROR_CODES = [
438
443
  ...RELAY_CLOSE_REASONS
439
444
  ];
440
445
  const UInt16 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(65535));
441
- const UInt32 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(4294967295));
446
+ const UInt32$1 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(4294967295));
442
447
  const RetryAfterMs = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(RELAY_MAX_RETRY_AFTER_MS));
443
448
  const ProtocolFields = {
444
449
  protocolMajor: UInt16,
@@ -457,11 +462,25 @@ const RelayEffectiveRole = effect.Schema.Literals([
457
462
  const RelayProtocolErrorCode = effect.Schema.Literals(RELAY_PROTOCOL_ERROR_CODES);
458
463
  const RelayNodeId = effect.Schema.String.check(effect.Schema.isPattern(/^node_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48)).pipe(effect.Schema.brand("RelayNodeId"));
459
464
  const RelayChannelId = effect.Schema.String.check(effect.Schema.isPattern(/^ch_[A-Za-z0-9_-]{22}$/), effect.Schema.isMaxLength(25)).pipe(effect.Schema.brand("RelayChannelId"));
460
- const RelaySequence = UInt32.pipe(effect.Schema.brand("RelaySequence"));
465
+ const NativeE2eeEnrollmentId = effect.Schema.String.check(effect.Schema.isPattern(/^enr_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(47)).pipe(effect.Schema.brand("NativeE2eeEnrollmentId"));
466
+ const HubGrantVerificationKeyId = effect.Schema.String.check(effect.Schema.isPattern(/^hgk_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(47)).pipe(effect.Schema.brand("HubGrantVerificationKeyId"));
467
+ const RelayTicketId = effect.Schema.String.check(effect.Schema.isPattern(/^rtk_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(47)).pipe(effect.Schema.brand("RelayTicketId"));
468
+ const NativeE2eeEnrollmentRevision = UInt32$1.check(effect.Schema.isGreaterThanOrEqualTo(1)).pipe(effect.Schema.brand("NativeE2eeEnrollmentRevision"));
469
+ const E2eeAuthorizationEpoch = UInt32$1.pipe(effect.Schema.brand("E2eeAuthorizationEpoch"));
470
+ const E2eeKeysetGeneration = UInt32$1.pipe(effect.Schema.brand("E2eeKeysetGeneration"));
471
+ const RelayConnectorGeneration = UInt32$1.pipe(effect.Schema.brand("RelayConnectorGeneration"));
472
+ const RelaySequence = UInt32$1.pipe(effect.Schema.brand("RelaySequence"));
461
473
  const RelayHeartbeatNonce = boundedBytes(8, 8);
462
474
  const RelayAuthenticationNonce = boundedBytes(32, 32);
463
475
  const RelaySignatureMaterial = boundedBytes(64, 512);
464
476
  const RelayTicketMaterial = boundedBytes(32, 64);
477
+ const RelayE2eeDigest = boundedBytes(32, 32).pipe(effect.Schema.brand("RelayE2eeDigest"));
478
+ const RelayAccountGrantContext = effect.Schema.Tuple([
479
+ effect.Schema.Literal(2),
480
+ RelayTicketId,
481
+ RelayE2eeDigest,
482
+ RelayE2eeDigest
483
+ ]);
465
484
  const RelayLimits = effect.Schema.Struct({
466
485
  maxControlFrameBytes: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(RELAY_MIN_CONTROL_FRAME_BYTES), effect.Schema.isLessThanOrEqualTo(RELAY_MAX_CONTROL_FRAME_BYTES)),
467
486
  maxDataChunkBytes: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(RELAY_MIN_DATA_CHUNK_BYTES), effect.Schema.isLessThanOrEqualTo(RELAY_MAX_DATA_CHUNK_BYTES)),
@@ -490,7 +509,11 @@ const minorVersionSupportsCloseReason = (protocolMinor, reason) => reason === vo
490
509
  const minorVersionSupportsAuthorizedChannel = (input) => {
491
510
  const hasCapability = input.capability !== void 0;
492
511
  const hasEffectiveRole = input.effectiveRole !== void 0;
493
- if (input.protocolMinor >= 2) return hasCapability && hasEffectiveRole ? void 0 : "protocol minor version 2 or newer requires channel authorization metadata";
512
+ if (input.accountGrantContext !== void 0 && input.protocolMinor < 3) return "account grant context requires protocol minor version 3 or newer";
513
+ if (input.protocolMinor >= 2) {
514
+ if (!hasCapability || !hasEffectiveRole) return "protocol minor version 2 or newer requires channel authorization metadata";
515
+ return;
516
+ }
494
517
  return !hasCapability && !hasEffectiveRole ? void 0 : "channel authorization metadata requires protocol minor version 2 or newer";
495
518
  };
496
519
  const RelayNodeAuthHandshake = effect.Schema.Struct({
@@ -518,8 +541,43 @@ const RelayChannelOpenFrame = effect.Schema.Struct({
518
541
  ...ProtocolFields,
519
542
  channelId: RelayChannelId,
520
543
  capability: effect.Schema.optionalKey(RelayCapability),
521
- effectiveRole: effect.Schema.optionalKey(RelayEffectiveRole)
544
+ effectiveRole: effect.Schema.optionalKey(RelayEffectiveRole),
545
+ accountGrantContext: effect.Schema.optionalKey(RelayAccountGrantContext)
522
546
  }).check(effect.Schema.makeFilter(minorVersionSupportsAuthorizedChannel));
547
+ const minor3Frame = (fields) => effect.Schema.Struct({
548
+ ...fields,
549
+ ...ProtocolFields
550
+ }).check(effect.Schema.makeFilter((frame) => frame.protocolMinor >= 3 ? void 0 : "frame requires protocol minor version 3 or newer"));
551
+ const RelayNodeE2eeStatementFrame = minor3Frame({
552
+ type: effect.Schema.Literal("node.e2ee.statement"),
553
+ connectorGeneration: RelayConnectorGeneration,
554
+ statement: boundedBytes(1, RELAY_E2EE_CAPABILITY_STATEMENT_MAX_BYTES),
555
+ statementDigest: RelayE2eeDigest,
556
+ expiresAt: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER))
557
+ });
558
+ const RelayNodeE2eeStatementAckFrame = minor3Frame({
559
+ type: effect.Schema.Literal("node.e2ee.statement.ack"),
560
+ connectorGeneration: RelayConnectorGeneration,
561
+ statementDigest: RelayE2eeDigest
562
+ });
563
+ const RelayHubGrantVerificationKey = effect.Schema.Struct({
564
+ keyId: HubGrantVerificationKeyId,
565
+ publicKey: boundedBytes(32, 32),
566
+ notBefore: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)),
567
+ notAfter: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER))
568
+ }).check(effect.Schema.makeFilter((key) => key.notAfter > key.notBefore ? void 0 : "notAfter must be after notBefore"));
569
+ const RelayE2eeVerifierKeysFrame = minor3Frame({
570
+ type: effect.Schema.Literal("e2ee.verifier-keys"),
571
+ generation: E2eeKeysetGeneration,
572
+ keys: effect.Schema.Array(RelayHubGrantVerificationKey).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(4), effect.Schema.makeFilter((keys) => new Set(keys.map((key) => key.keyId)).size === keys.length ? void 0 : "grant verification key ids must be distinct"))
573
+ });
574
+ const RelayE2eeEnrollmentRevokedFrame = minor3Frame({
575
+ type: effect.Schema.Literal("e2ee.enrollment-revoked"),
576
+ enrollmentId: NativeE2eeEnrollmentId,
577
+ enrollmentRevision: NativeE2eeEnrollmentRevision,
578
+ accountAuthEpoch: E2eeAuthorizationEpoch,
579
+ deviceAuthEpoch: E2eeAuthorizationEpoch
580
+ });
523
581
  const RelayChannelAcceptFrame = effect.Schema.Struct({
524
582
  type: effect.Schema.Literal("channel.accept"),
525
583
  ...ProtocolFields,
@@ -573,7 +631,7 @@ const RelaySupportedVersionRange = effect.Schema.Struct({
573
631
  const RELAY_SUPPORTED_VERSION_RANGE = RelaySupportedVersionRange.make({
574
632
  protocolMajor: 1,
575
633
  minimumMinor: 0,
576
- maximumMinor: 2
634
+ maximumMinor: 3
577
635
  });
578
636
  const RelayErrorFrame = effect.Schema.Struct({
579
637
  type: effect.Schema.Literal("error"),
@@ -604,7 +662,11 @@ const RelayControlFrame = effect.Schema.Union([
604
662
  RelayChannelCloseFrame,
605
663
  RelayPingFrame,
606
664
  RelayPongFrame,
607
- RelayErrorFrame
665
+ RelayErrorFrame,
666
+ RelayNodeE2eeStatementFrame,
667
+ RelayNodeE2eeStatementAckFrame,
668
+ RelayE2eeVerifierKeysFrame,
669
+ RelayE2eeEnrollmentRevokedFrame
608
670
  ]);
609
671
  const RelayFrame = effect.Schema.Union([RelayControlFrame, RelayDataFrame]);
610
672
  //#endregion
@@ -660,7 +722,7 @@ const HubConnectorStatus = effect.Schema.Struct({
660
722
  if (status.state === "degraded" && status.degradedMode === void 0) return "degraded status requires degradedMode";
661
723
  if (status.state !== "degraded" && status.degradedMode !== void 0) return "degradedMode is allowed only for degraded status";
662
724
  if (status.state === "online") {
663
- if (status.protocolMajor !== 1 || status.protocolMinor !== 2) return "online status requires the supported relay protocol";
725
+ if (status.protocolMajor !== 1 || status.protocolMinor === void 0 || status.protocolMinor < 2 || status.protocolMinor > 3) return "online status requires the supported relay protocol";
664
726
  } else if (status.protocolMajor !== void 0 || status.protocolMinor !== void 0) return "protocol is exposed only while online";
665
727
  if (status.nextRetryAt !== void 0 && status.degradedMode !== "backing_off") return "nextRetryAt requires backing_off";
666
728
  if (status.state !== "online" && status.activeChannels !== 0) return "active channels require online status";
@@ -731,16 +793,16 @@ const HubEnrollmentStartResult = effect.Schema.Struct({
731
793
  ...HubEnrollmentCeremonyDetail.fields
732
794
  });
733
795
  const HOSTED_IDENTITY_MAX_ANTI_BOT_ASSERTION_CHARS = 8192;
734
- const strict$3 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
735
- const EpochMs$1 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0));
796
+ const strict$4 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
797
+ const EpochMs$2 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0));
736
798
  const Opaque256 = effect.Schema.String.check(effect.Schema.isMinLength(43), effect.Schema.isMaxLength(43), effect.Schema.isPattern(/^[A-Za-z0-9_-]{43}$/));
737
- const AccountId$1 = effect.Schema.String.check(effect.Schema.isPattern(/^acct_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48));
799
+ const HubAccountId = effect.Schema.String.check(effect.Schema.isPattern(/^acct_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48));
738
800
  const SessionId$1 = effect.Schema.String.check(effect.Schema.isPattern(/^sess_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48));
739
801
  const BoundedDisplayName = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(200));
740
802
  const BoundedSpaceDisplayName = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(100));
741
803
  const BoundedPassword = effect.Schema.String.check(effect.Schema.isMinLength(12), effect.Schema.isMaxLength(256));
742
804
  const AntiBotAssertion = effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(HOSTED_IDENTITY_MAX_ANTI_BOT_ASSERTION_CHARS));
743
- const IdempotencyKey = Opaque256.pipe(effect.Schema.brand("HostedIdentityIdempotencyKey"));
805
+ const IdempotencyKey$1 = Opaque256.pipe(effect.Schema.brand("HostedIdentityIdempotencyKey"));
744
806
  const SignupAttemptSecret = Opaque256.pipe(effect.Schema.brand("PublicSignupAttemptSecret"));
745
807
  const SignupActivationSecret = Opaque256.pipe(effect.Schema.brand("PublicSignupActivationSecret"));
746
808
  const PasswordLoginAttemptSecret = Opaque256.pipe(effect.Schema.brand("PasswordLoginAttemptSecret"));
@@ -753,10 +815,10 @@ const MailToken = Opaque256.pipe(effect.Schema.brand("HostedIdentityMailToken"))
753
815
  const EmailCode = effect.Schema.String.check(effect.Schema.isPattern(/^[0-9]{6}$/));
754
816
  const TotpCode = effect.Schema.String.check(effect.Schema.isPattern(/^[0-9]{6}$/));
755
817
  const JsonObject = effect.Schema.Unknown.check(effect.Schema.makeFilter((value) => typeof value === "object" && value !== null && !Array.isArray(value) ? void 0 : "value must be an object"));
756
- const strictTimed = (fields) => strict$3(effect.Schema.Struct({
818
+ const strictTimed = (fields) => strict$4(effect.Schema.Struct({
757
819
  ...fields,
758
- issuedAt: EpochMs$1,
759
- expiresAt: EpochMs$1
820
+ issuedAt: EpochMs$2,
821
+ expiresAt: EpochMs$2
760
822
  }).check(effect.Schema.makeFilter((value) => {
761
823
  const timed = value;
762
824
  return timed.expiresAt > timed.issuedAt ? void 0 : "expiresAt must be after issuedAt";
@@ -774,14 +836,14 @@ const HubNormalizedEmail = effect.Schema.String.check(effect.Schema.isMinLength(
774
836
  const HubLoginIdentifier = effect.Schema.Union([HubUsername, HubNormalizedEmail]).pipe(effect.Schema.brand("HubLoginIdentifier"));
775
837
  const PublicSignupTurnstileSiteKey = effect.Schema.String.check(effect.Schema.isMinLength(10), effect.Schema.isMaxLength(128), effect.Schema.isPattern(/^[A-Za-z0-9_-]+$/));
776
838
  effect.Schema.Union([
777
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("disabled") })),
778
- strict$3(effect.Schema.Struct({
839
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("disabled") })),
840
+ strict$4(effect.Schema.Struct({
779
841
  status: effect.Schema.Literal("enabled"),
780
- antiBot: strict$3(effect.Schema.Struct({ provider: effect.Schema.Literal("bypass") }))
842
+ antiBot: strict$4(effect.Schema.Struct({ provider: effect.Schema.Literal("bypass") }))
781
843
  })),
782
- strict$3(effect.Schema.Struct({
844
+ strict$4(effect.Schema.Struct({
783
845
  status: effect.Schema.Literal("enabled"),
784
- antiBot: strict$3(effect.Schema.Struct({
846
+ antiBot: strict$4(effect.Schema.Struct({
785
847
  provider: effect.Schema.Literal("turnstile"),
786
848
  siteKey: PublicSignupTurnstileSiteKey
787
849
  }))
@@ -789,21 +851,21 @@ effect.Schema.Union([
789
851
  ]);
790
852
  const ExternalIdentityProvider = effect.Schema.Literal("github");
791
853
  const ExternalIdentityLogin = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(100), effect.Schema.isPattern(/^[A-Za-z0-9-]+$/));
792
- const ExternalIdentitySummary = strict$3(effect.Schema.Struct({
854
+ const ExternalIdentitySummary = strict$4(effect.Schema.Struct({
793
855
  provider: ExternalIdentityProvider,
794
856
  login: ExternalIdentityLogin,
795
857
  displayName: effect.Schema.NullOr(BoundedDisplayName),
796
- connectedAt: EpochMs$1,
797
- lastUsedAt: effect.Schema.NullOr(EpochMs$1)
858
+ connectedAt: EpochMs$2,
859
+ lastUsedAt: effect.Schema.NullOr(EpochMs$2)
798
860
  }).check(effect.Schema.makeFilter((value) => value.lastUsedAt === null || value.lastUsedAt >= value.connectedAt ? void 0 : "lastUsedAt must not precede connectedAt")));
799
- const ExternalIdentityProviderPolicy = strict$3(effect.Schema.Struct({
861
+ const ExternalIdentityProviderPolicy = strict$4(effect.Schema.Struct({
800
862
  provider: ExternalIdentityProvider,
801
863
  login: effect.Schema.Literal(true),
802
864
  signup: effect.Schema.Boolean,
803
865
  link: effect.Schema.Literal(true)
804
866
  }));
805
867
  const ExternalIdentityProviders = effect.Schema.Array(ExternalIdentityProviderPolicy).check(effect.Schema.isMaxLength(1), effect.Schema.makeFilter((providers) => new Set(providers.map((provider) => provider.provider)).size === providers.length ? void 0 : "external identity providers must be unique"));
806
- strict$3(effect.Schema.Struct({
868
+ strict$4(effect.Schema.Struct({
807
869
  version: effect.Schema.Literal(1),
808
870
  providers: ExternalIdentityProviders
809
871
  }));
@@ -823,14 +885,14 @@ const GitHubAuthorizationUrl = effect.Schema.String.check(effect.Schema.isNonEmp
823
885
  return "authorization URL must be absolute";
824
886
  }
825
887
  }));
826
- strict$3(effect.Schema.Struct({
888
+ strict$4(effect.Schema.Struct({
827
889
  provider: ExternalIdentityProvider,
828
890
  intent: effect.Schema.Literals(["authenticate", "link"]),
829
891
  returnTo: effect.Schema.optionalKey(ExternalIdentityReturnPath)
830
892
  }));
831
- strict$3(effect.Schema.Struct({
893
+ strict$4(effect.Schema.Struct({
832
894
  authorizationUrl: GitHubAuthorizationUrl,
833
- expiresAt: EpochMs$1
895
+ expiresAt: EpochMs$2
834
896
  }));
835
897
  const ExternalIdentityPendingErrorCode = effect.Schema.Literals([
836
898
  "external_provider_unavailable",
@@ -843,72 +905,72 @@ const ExternalIdentityPendingErrorCode = effect.Schema.Literals([
843
905
  "username_unavailable"
844
906
  ]);
845
907
  effect.Schema.Union([
846
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("none") })),
847
- strict$3(effect.Schema.Struct({
908
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("none") })),
909
+ strict$4(effect.Schema.Struct({
848
910
  status: effect.Schema.Literal("signup"),
849
911
  provider: ExternalIdentityProvider,
850
912
  suggestedUsername: effect.Schema.NullOr(HubUsername),
851
913
  displayName: effect.Schema.NullOr(BoundedDisplayName),
852
- expiresAt: EpochMs$1
914
+ expiresAt: EpochMs$2
853
915
  })),
854
- strict$3(effect.Schema.Struct({
916
+ strict$4(effect.Schema.Struct({
855
917
  status: effect.Schema.Literal("link"),
856
918
  externalIdentity: ExternalIdentitySummary,
857
- expiresAt: EpochMs$1
919
+ expiresAt: EpochMs$2
858
920
  })),
859
- strict$3(effect.Schema.Struct({
921
+ strict$4(effect.Schema.Struct({
860
922
  status: effect.Schema.Literal("error"),
861
923
  provider: ExternalIdentityProvider,
862
924
  code: ExternalIdentityPendingErrorCode
863
925
  }))
864
926
  ]);
865
- strict$3(effect.Schema.Struct({
927
+ strict$4(effect.Schema.Struct({
866
928
  provider: ExternalIdentityProvider,
867
929
  username: HubUsername,
868
930
  antiBotAssertion: AntiBotAssertion,
869
- idempotencyKey: IdempotencyKey
931
+ idempotencyKey: IdempotencyKey$1
870
932
  }));
871
- strict$3(effect.Schema.Struct({ totpCode: effect.Schema.optionalKey(TotpCode) }));
872
- strict$3(effect.Schema.Struct({
933
+ strict$4(effect.Schema.Struct({ totpCode: effect.Schema.optionalKey(TotpCode) }));
934
+ strict$4(effect.Schema.Struct({
873
935
  status: effect.Schema.Literal("connected"),
874
936
  externalIdentity: ExternalIdentitySummary
875
937
  }));
876
- strict$3(effect.Schema.Struct({ totpCode: effect.Schema.optionalKey(TotpCode) }));
877
- strict$3(effect.Schema.Struct({
938
+ strict$4(effect.Schema.Struct({ totpCode: effect.Schema.optionalKey(TotpCode) }));
939
+ strict$4(effect.Schema.Struct({
878
940
  status: effect.Schema.Literal("disconnected"),
879
941
  signedOut: effect.Schema.Boolean
880
942
  }));
881
943
  const ExternalIdentitySummaries = effect.Schema.Array(ExternalIdentitySummary).check(effect.Schema.isMaxLength(1), effect.Schema.makeFilter((identities) => new Set(identities.map((identity) => identity.provider)).size === identities.length ? void 0 : "external identity providers must be unique"));
882
- strict$3(effect.Schema.Struct({
944
+ strict$4(effect.Schema.Struct({
883
945
  passwordConfigured: effect.Schema.Boolean,
884
946
  totpEnrolled: effect.Schema.Boolean,
885
947
  emailDeliveryConfigured: effect.Schema.Boolean,
886
- email: effect.Schema.NullOr(strict$3(effect.Schema.Struct({
948
+ email: effect.Schema.NullOr(strict$4(effect.Schema.Struct({
887
949
  address: HubNormalizedEmail,
888
950
  verified: effect.Schema.Boolean
889
951
  }))),
890
952
  externalIdentities: ExternalIdentitySummaries
891
953
  }));
892
- const HubActiveSpaceSummary = strict$3(effect.Schema.Struct({
954
+ const HubActiveSpaceSummary = strict$4(effect.Schema.Struct({
893
955
  id: HubSpaceId,
894
956
  kind: HubSpaceKind,
895
957
  displayName: BoundedSpaceDisplayName,
896
958
  role: HubSpaceRole
897
959
  }));
898
- const HubPublicAccount = strict$3(effect.Schema.Struct({
899
- id: AccountId$1,
960
+ const HubPublicAccount = strict$4(effect.Schema.Struct({
961
+ id: HubAccountId,
900
962
  username: HubUsername,
901
963
  displayName: BoundedDisplayName,
902
- createdAt: EpochMs$1,
964
+ createdAt: EpochMs$2,
903
965
  disabledAt: effect.Schema.Null
904
966
  }));
905
- const HubPublicBrowserSession = strict$3(effect.Schema.Struct({
967
+ const HubPublicBrowserSession = strict$4(effect.Schema.Struct({
906
968
  id: SessionId$1,
907
- accountId: AccountId$1,
969
+ accountId: HubAccountId,
908
970
  activeSpaceId: HubSpaceId,
909
- createdAt: EpochMs$1,
910
- expiresAt: EpochMs$1,
911
- lastSeenAt: EpochMs$1,
971
+ createdAt: EpochMs$2,
972
+ expiresAt: EpochMs$2,
973
+ lastSeenAt: EpochMs$2,
912
974
  revokedAt: effect.Schema.Null,
913
975
  revocationReasonCode: effect.Schema.Null
914
976
  }).check(effect.Schema.makeFilter((session) => session.expiresAt > session.createdAt && session.lastSeenAt >= session.createdAt && session.lastSeenAt <= session.expiresAt ? void 0 : "browser session timestamps are inconsistent")));
@@ -926,11 +988,11 @@ function hubSessionIdentityConsistency(value) {
926
988
  const matches = value.spaces.filter((space) => space.id === value.activeSpace.id);
927
989
  return matches.length === 1 && matches[0]?.role === value.activeSpace.role ? void 0 : "active space must appear exactly once in spaces";
928
990
  }
929
- const HubBrowserSessionResponse = strict$3(effect.Schema.Struct({
991
+ const HubBrowserSessionResponse = strict$4(effect.Schema.Struct({
930
992
  ...HubSessionIdentityFields,
931
993
  csrfToken: effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(4096))
932
994
  }).check(effect.Schema.makeFilter(hubSessionIdentityConsistency)));
933
- const HubSessionIdentity = strict$3(effect.Schema.Struct(HubSessionIdentityFields).check(effect.Schema.makeFilter(hubSessionIdentityConsistency)));
995
+ const HubSessionIdentity = strict$4(effect.Schema.Struct(HubSessionIdentityFields).check(effect.Schema.makeFilter(hubSessionIdentityConsistency)));
934
996
  const NativeIdentityAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^nident_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(50)).pipe(effect.Schema.brand("NativeIdentityAttemptId"));
935
997
  const NativeIdentityLoginAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^nlogin_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(50)).pipe(effect.Schema.brand("NativeIdentityLoginAttemptId"));
936
998
  const NativeIdentityResetAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^nreset_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(50)).pipe(effect.Schema.brand("NativeIdentityResetAttemptId"));
@@ -939,7 +1001,7 @@ const NativeIdentityTimedAttempt = {
939
1001
  attemptSecret: NativeIdentityAttemptSecret,
940
1002
  resendAfterMs: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(9e5))
941
1003
  };
942
- strict$3(effect.Schema.Struct({
1004
+ strict$4(effect.Schema.Struct({
943
1005
  email: HubNormalizedEmail,
944
1006
  antiBotAssertion: AntiBotAssertion
945
1007
  }));
@@ -947,14 +1009,14 @@ strictTimed({
947
1009
  status: effect.Schema.Literal("accepted"),
948
1010
  ...NativeIdentityTimedAttempt
949
1011
  });
950
- const NativeIdentityMailboxProof = effect.Schema.Union([strict$3(effect.Schema.Struct({
1012
+ const NativeIdentityMailboxProof = effect.Schema.Union([strict$4(effect.Schema.Struct({
951
1013
  kind: effect.Schema.Literal("link_token"),
952
1014
  token: MailToken
953
- })), strict$3(effect.Schema.Struct({
1015
+ })), strict$4(effect.Schema.Struct({
954
1016
  kind: effect.Schema.Literal("email_code"),
955
1017
  code: EmailCode
956
1018
  }))]);
957
- strict$3(effect.Schema.Struct({
1019
+ strict$4(effect.Schema.Struct({
958
1020
  attemptId: NativeIdentityAttemptId,
959
1021
  attemptSecret: NativeIdentityAttemptSecret,
960
1022
  proof: NativeIdentityMailboxProof
@@ -972,41 +1034,41 @@ const NativeIdentityActivation = {
972
1034
  attemptId: NativeIdentityAttemptId,
973
1035
  activationSecret: NativeIdentityActivationSecret
974
1036
  };
975
- strict$3(effect.Schema.Struct({
1037
+ strict$4(effect.Schema.Struct({
976
1038
  ...NativeIdentityActivation,
977
1039
  username: HubUsername
978
1040
  }));
979
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("claimed") }));
980
- strict$3(effect.Schema.Struct(NativeIdentityActivation));
981
- strict$3(effect.Schema.Struct({ options: JsonObject }));
982
- strict$3(effect.Schema.Struct({
1041
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("claimed") }));
1042
+ strict$4(effect.Schema.Struct(NativeIdentityActivation));
1043
+ strict$4(effect.Schema.Struct({ options: JsonObject }));
1044
+ strict$4(effect.Schema.Struct({
983
1045
  ...NativeIdentityActivation,
984
1046
  response: JsonObject,
985
- idempotencyKey: IdempotencyKey
1047
+ idempotencyKey: IdempotencyKey$1
986
1048
  }));
987
- strict$3(effect.Schema.Struct({
1049
+ strict$4(effect.Schema.Struct({
988
1050
  ...NativeIdentityActivation,
989
1051
  password: BoundedPassword,
990
- idempotencyKey: IdempotencyKey
1052
+ idempotencyKey: IdempotencyKey$1
991
1053
  }));
992
- strict$3(effect.Schema.Struct({
1054
+ strict$4(effect.Schema.Struct({
993
1055
  status: effect.Schema.Literal("complete"),
994
1056
  identity: HubSessionIdentity,
995
1057
  token: NativeIdentitySessionToken
996
1058
  }));
997
1059
  const NativeIdentityRecoveryCodes = effect.Schema.Array(effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(512))).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(256));
998
- strict$3(effect.Schema.Struct({
1060
+ strict$4(effect.Schema.Struct({
999
1061
  status: effect.Schema.Literal("complete"),
1000
1062
  identity: HubSessionIdentity,
1001
1063
  token: NativeIdentitySessionToken,
1002
1064
  recoveryCodes: NativeIdentityRecoveryCodes
1003
1065
  }));
1004
- effect.Schema.Union([strict$3(effect.Schema.Struct({
1066
+ effect.Schema.Union([strict$4(effect.Schema.Struct({
1005
1067
  kind: effect.Schema.Literal("username"),
1006
1068
  username: HubUsername,
1007
1069
  password: BoundedPassword,
1008
1070
  antiBotAssertion: effect.Schema.optionalKey(AntiBotAssertion)
1009
- })), strict$3(effect.Schema.Struct({
1071
+ })), strict$4(effect.Schema.Struct({
1010
1072
  kind: effect.Schema.Literal("verified_email"),
1011
1073
  ...NativeIdentityActivation,
1012
1074
  password: BoundedPassword
@@ -1017,22 +1079,22 @@ strictTimed({
1017
1079
  attemptSecret: NativeIdentityAttemptSecret,
1018
1080
  factor: effect.Schema.Literals(["totp", "email_code"])
1019
1081
  });
1020
- effect.Schema.Union([strict$3(effect.Schema.Struct({
1082
+ effect.Schema.Union([strict$4(effect.Schema.Struct({
1021
1083
  attemptId: NativeIdentityLoginAttemptId,
1022
1084
  attemptSecret: NativeIdentityAttemptSecret,
1023
1085
  factor: effect.Schema.Literal("totp"),
1024
1086
  code: TotpCode
1025
- })), strict$3(effect.Schema.Struct({
1087
+ })), strict$4(effect.Schema.Struct({
1026
1088
  attemptId: NativeIdentityLoginAttemptId,
1027
1089
  attemptSecret: NativeIdentityAttemptSecret,
1028
1090
  factor: effect.Schema.Literal("email_code"),
1029
1091
  code: EmailCode
1030
1092
  }))]);
1031
- strict$3(effect.Schema.Struct({
1093
+ strict$4(effect.Schema.Struct({
1032
1094
  code: effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(512)),
1033
- idempotencyKey: IdempotencyKey
1095
+ idempotencyKey: IdempotencyKey$1
1034
1096
  }));
1035
- strict$3(effect.Schema.Struct({
1097
+ strict$4(effect.Schema.Struct({
1036
1098
  identifier: HubLoginIdentifier,
1037
1099
  antiBotAssertion: effect.Schema.optionalKey(AntiBotAssertion)
1038
1100
  }));
@@ -1042,7 +1104,7 @@ strictTimed({
1042
1104
  attemptSecret: NativeIdentityAttemptSecret,
1043
1105
  resendAfterMs: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(9e5))
1044
1106
  });
1045
- strict$3(effect.Schema.Struct({
1107
+ strict$4(effect.Schema.Struct({
1046
1108
  attemptId: NativeIdentityResetAttemptId,
1047
1109
  attemptSecret: NativeIdentityAttemptSecret,
1048
1110
  proof: NativeIdentityMailboxProof
@@ -1053,17 +1115,17 @@ strictTimed({
1053
1115
  resetSecret: NativeIdentityResetSecret,
1054
1116
  requiresTotp: effect.Schema.Boolean
1055
1117
  });
1056
- strict$3(effect.Schema.Struct({
1118
+ strict$4(effect.Schema.Struct({
1057
1119
  attemptId: NativeIdentityResetAttemptId,
1058
1120
  resetSecret: NativeIdentityResetSecret,
1059
1121
  password: BoundedPassword,
1060
- factor: effect.Schema.Union([strict$3(effect.Schema.Struct({ kind: effect.Schema.Literal("none") })), strict$3(effect.Schema.Struct({
1122
+ factor: effect.Schema.Union([strict$4(effect.Schema.Struct({ kind: effect.Schema.Literal("none") })), strict$4(effect.Schema.Struct({
1061
1123
  kind: effect.Schema.Literal("totp"),
1062
1124
  code: TotpCode
1063
1125
  }))])
1064
1126
  }));
1065
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("complete") }));
1066
- strict$3(effect.Schema.Struct({
1127
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("complete") }));
1128
+ strict$4(effect.Schema.Struct({
1067
1129
  attemptId: effect.Schema.Union([
1068
1130
  NativeIdentityAttemptId,
1069
1131
  NativeIdentityLoginAttemptId,
@@ -1071,9 +1133,9 @@ strict$3(effect.Schema.Struct({
1071
1133
  ]),
1072
1134
  attemptSecret: effect.Schema.Union([NativeIdentityAttemptSecret, NativeIdentityActivationSecret])
1073
1135
  }));
1074
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("cancelled") }));
1136
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("cancelled") }));
1075
1137
  const PublicSignupAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^signup_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(50)).pipe(effect.Schema.brand("PublicSignupAttemptId"));
1076
- strict$3(effect.Schema.Struct({
1138
+ strict$4(effect.Schema.Struct({
1077
1139
  username: HubUsername,
1078
1140
  email: HubNormalizedEmail,
1079
1141
  antiBotAssertion: AntiBotAssertion,
@@ -1085,14 +1147,14 @@ strictTimed({
1085
1147
  attemptSecret: SignupAttemptSecret,
1086
1148
  resendAfterMs: effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(9e5))
1087
1149
  });
1088
- const PublicSignupMailboxProof = effect.Schema.Union([strict$3(effect.Schema.Struct({
1150
+ const PublicSignupMailboxProof = effect.Schema.Union([strict$4(effect.Schema.Struct({
1089
1151
  kind: effect.Schema.Literal("link_token"),
1090
1152
  token: MailToken
1091
- })), strict$3(effect.Schema.Struct({
1153
+ })), strict$4(effect.Schema.Struct({
1092
1154
  kind: effect.Schema.Literal("email_code"),
1093
1155
  code: EmailCode
1094
1156
  }))]);
1095
- strict$3(effect.Schema.Struct({
1157
+ strict$4(effect.Schema.Struct({
1096
1158
  attemptId: PublicSignupAttemptId,
1097
1159
  attemptSecret: SignupAttemptSecret,
1098
1160
  proof: PublicSignupMailboxProof
@@ -1106,26 +1168,26 @@ const PublicSignupActivation = {
1106
1168
  attemptId: PublicSignupAttemptId,
1107
1169
  activationSecret: SignupActivationSecret
1108
1170
  };
1109
- strict$3(effect.Schema.Struct(PublicSignupActivation));
1110
- strict$3(effect.Schema.Struct({ options: JsonObject }));
1111
- strict$3(effect.Schema.Struct({
1171
+ strict$4(effect.Schema.Struct(PublicSignupActivation));
1172
+ strict$4(effect.Schema.Struct({ options: JsonObject }));
1173
+ strict$4(effect.Schema.Struct({
1112
1174
  ...PublicSignupActivation,
1113
1175
  response: JsonObject,
1114
- idempotencyKey: IdempotencyKey
1176
+ idempotencyKey: IdempotencyKey$1
1115
1177
  }));
1116
- strict$3(effect.Schema.Struct({
1178
+ strict$4(effect.Schema.Struct({
1117
1179
  ...PublicSignupActivation,
1118
1180
  password: BoundedPassword,
1119
- idempotencyKey: IdempotencyKey
1181
+ idempotencyKey: IdempotencyKey$1
1120
1182
  }));
1121
- strict$3(effect.Schema.Struct({
1183
+ strict$4(effect.Schema.Struct({
1122
1184
  status: effect.Schema.Literal("complete"),
1123
1185
  identity: HubBrowserSessionResponse,
1124
1186
  recoveryCodes: effect.Schema.Array(effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(512))).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(256))
1125
1187
  }));
1126
1188
  const PasswordLoginAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^login_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(49)).pipe(effect.Schema.brand("PasswordLoginAttemptId"));
1127
1189
  const PasswordLoginFactor = effect.Schema.Literals(["totp", "email_code"]);
1128
- strict$3(effect.Schema.Struct({
1190
+ strict$4(effect.Schema.Struct({
1129
1191
  identifier: HubLoginIdentifier,
1130
1192
  password: BoundedPassword,
1131
1193
  antiBotAssertion: effect.Schema.optional(AntiBotAssertion)
@@ -1136,43 +1198,43 @@ strictTimed({
1136
1198
  attemptSecret: PasswordLoginAttemptSecret,
1137
1199
  factor: PasswordLoginFactor
1138
1200
  });
1139
- effect.Schema.Union([strict$3(effect.Schema.Struct({
1201
+ effect.Schema.Union([strict$4(effect.Schema.Struct({
1140
1202
  attemptId: PasswordLoginAttemptId,
1141
1203
  attemptSecret: PasswordLoginAttemptSecret,
1142
1204
  factor: effect.Schema.Literal("totp"),
1143
1205
  code: TotpCode
1144
- })), strict$3(effect.Schema.Struct({
1206
+ })), strict$4(effect.Schema.Struct({
1145
1207
  attemptId: PasswordLoginAttemptId,
1146
1208
  attemptSecret: PasswordLoginAttemptSecret,
1147
1209
  factor: effect.Schema.Literal("email_code"),
1148
1210
  code: EmailCode
1149
1211
  }))]);
1150
- strict$3(effect.Schema.Struct({
1212
+ strict$4(effect.Schema.Struct({
1151
1213
  identifier: HubLoginIdentifier,
1152
1214
  antiBotAssertion: effect.Schema.optional(AntiBotAssertion)
1153
1215
  }));
1154
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("accepted") }));
1216
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("accepted") }));
1155
1217
  const PasswordResetAttemptId = effect.Schema.String.check(effect.Schema.isPattern(/^reset_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(49)).pipe(effect.Schema.brand("PasswordResetAttemptId"));
1156
- strict$3(effect.Schema.Struct({ token: MailToken }));
1218
+ strict$4(effect.Schema.Struct({ token: MailToken }));
1157
1219
  strictTimed({
1158
1220
  status: effect.Schema.Literal("verified"),
1159
1221
  attemptId: PasswordResetAttemptId,
1160
1222
  attemptSecret: PasswordResetAttemptSecret,
1161
1223
  requiresTotp: effect.Schema.Boolean
1162
1224
  });
1163
- const PasswordResetFactor = effect.Schema.Union([strict$3(effect.Schema.Struct({ kind: effect.Schema.Literal("none") })), strict$3(effect.Schema.Struct({
1225
+ const PasswordResetFactor = effect.Schema.Union([strict$4(effect.Schema.Struct({ kind: effect.Schema.Literal("none") })), strict$4(effect.Schema.Struct({
1164
1226
  kind: effect.Schema.Literal("totp"),
1165
1227
  code: TotpCode
1166
1228
  }))]);
1167
- strict$3(effect.Schema.Struct({
1229
+ strict$4(effect.Schema.Struct({
1168
1230
  attemptId: PasswordResetAttemptId,
1169
1231
  attemptSecret: PasswordResetAttemptSecret,
1170
1232
  password: BoundedPassword,
1171
1233
  factor: PasswordResetFactor
1172
1234
  }));
1173
- strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("complete") }));
1174
- strict$3(effect.Schema.Struct({ spaceId: HubSpaceId }));
1175
- strict$3(effect.Schema.Struct({
1235
+ strict$4(effect.Schema.Struct({ status: effect.Schema.Literal("complete") }));
1236
+ strict$4(effect.Schema.Struct({ spaceId: HubSpaceId }));
1237
+ strict$4(effect.Schema.Struct({
1176
1238
  activeSpace: HubActiveSpaceSummary,
1177
1239
  spaces: HubSpaces
1178
1240
  }).check(effect.Schema.makeFilter((value) => {
@@ -1184,7 +1246,7 @@ const DesktopInstallationId = effect.Schema.String.check(effect.Schema.isPattern
1184
1246
  const NativeNodeClaimId = effect.Schema.String.check(effect.Schema.isPattern(/^nclaim_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(50)).pipe(effect.Schema.brand("NativeNodeClaimId"));
1185
1247
  const NativeNodeClaimEnvironmentId = effect.Schema.String.check(effect.Schema.isPattern(/^env_[A-Za-z0-9_-]{22}$/), effect.Schema.isMaxLength(26)).pipe(effect.Schema.brand("NativeNodeClaimEnvironmentId"));
1186
1248
  const NativeNodeClaimPublicKey = effect.Schema.String.check(effect.Schema.isMinLength(43), effect.Schema.isMaxLength(43), effect.Schema.isPattern(/^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/)).pipe(effect.Schema.brand("NativeNodeClaimPublicKey"));
1187
- const NativeNodeClaimMetadata = strict$3(effect.Schema.Struct({
1249
+ const NativeNodeClaimMetadata = strict$4(effect.Schema.Struct({
1188
1250
  environmentId: NativeNodeClaimEnvironmentId,
1189
1251
  label: effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(100)),
1190
1252
  platformOs: effect.Schema.Literals([
@@ -1203,7 +1265,7 @@ const NativeNodeClaimMetadata = strict$3(effect.Schema.Struct({
1203
1265
  publicKey: NativeNodeClaimPublicKey,
1204
1266
  fingerprint: HubNodePublicKeyFingerprint
1205
1267
  }));
1206
- strict$3(effect.Schema.Struct({
1268
+ strict$4(effect.Schema.Struct({
1207
1269
  installationId: DesktopInstallationId,
1208
1270
  node: NativeNodeClaimMetadata
1209
1271
  }));
@@ -1212,7 +1274,7 @@ const NativeNodeClaimStartResponse = strictTimed({
1212
1274
  transcriptVersion: effect.Schema.Literal(1),
1213
1275
  claimId: NativeNodeClaimId,
1214
1276
  challenge: Opaque256,
1215
- accountId: AccountId$1,
1277
+ accountId: HubAccountId,
1216
1278
  spaceId: HubSpaceId,
1217
1279
  sessionId: SessionId$1,
1218
1280
  dpopKeyThumbprint: Opaque256,
@@ -1220,16 +1282,16 @@ const NativeNodeClaimStartResponse = strictTimed({
1220
1282
  environmentId: NativeNodeClaimEnvironmentId,
1221
1283
  nodeFingerprint: HubNodePublicKeyFingerprint
1222
1284
  });
1223
- strict$3(effect.Schema.Struct({
1285
+ strict$4(effect.Schema.Struct({
1224
1286
  claimId: NativeNodeClaimId,
1225
1287
  challenge: Opaque256,
1226
1288
  signature: effect.Schema.String.check(effect.Schema.isMinLength(86), effect.Schema.isMaxLength(86), effect.Schema.isPattern(/^[A-Za-z0-9_-]{85}[AQgw]$/)),
1227
- idempotencyKey: IdempotencyKey
1289
+ idempotencyKey: IdempotencyKey$1
1228
1290
  }));
1229
- const NativeNodeClaimFinishResponse = strict$3(effect.Schema.Struct({
1291
+ const NativeNodeClaimFinishResponse = strict$4(effect.Schema.Struct({
1230
1292
  status: effect.Schema.Literal("claimed"),
1231
1293
  disposition: effect.Schema.Literals(["created", "reconnected"]),
1232
- node: strict$3(effect.Schema.Struct({
1294
+ node: strict$4(effect.Schema.Struct({
1233
1295
  id: RelayNodeId,
1234
1296
  activeKeyId: effect.Schema.String.check(effect.Schema.isPattern(/^nkey_[A-Za-z0-9_-]{22}$/), effect.Schema.isMaxLength(27)),
1235
1297
  environmentId: NativeNodeClaimEnvironmentId,
@@ -1238,10 +1300,10 @@ const NativeNodeClaimFinishResponse = strict$3(effect.Schema.Struct({
1238
1300
  effectiveRole: effect.Schema.Literal("owner")
1239
1301
  }))
1240
1302
  }));
1241
- effect.Schema.Union([strict$3(effect.Schema.Struct({
1303
+ effect.Schema.Union([strict$4(effect.Schema.Struct({
1242
1304
  error: effect.Schema.Literal("node_claim_rejected"),
1243
1305
  retryable: effect.Schema.Literal(false)
1244
- })), strict$3(effect.Schema.Struct({
1306
+ })), strict$4(effect.Schema.Struct({
1245
1307
  error: effect.Schema.Literal("node_claim_unavailable"),
1246
1308
  retryable: effect.Schema.Literal(true),
1247
1309
  retryAfterMs: effect.Schema.optional(effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(3e5)))
@@ -1253,7 +1315,7 @@ const NATIVE_HANDOFF_CALLBACK_URIS = [
1253
1315
  "ryco://hosted/complete"
1254
1316
  ];
1255
1317
  const NATIVE_HANDOFF_MAX_URL_CHARS = 2048;
1256
- const strict$2 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
1318
+ const strict$3 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
1257
1319
  const Base64Url256$1 = effect.Schema.String.check(effect.Schema.isMinLength(43), effect.Schema.isMaxLength(43), effect.Schema.isPattern(/^[A-Za-z0-9_-]{43}$/));
1258
1320
  const isBase64Url256 = effect.Schema.is(Base64Url256$1);
1259
1321
  const NativeHandoffId = Base64Url256$1.pipe(effect.Schema.brand("NativeHandoffId"));
@@ -1262,7 +1324,7 @@ const NativeHandoffCode = Base64Url256$1.pipe(effect.Schema.brand("NativeHandoff
1262
1324
  const NativeHandoffCodeVerifier = Base64Url256$1.pipe(effect.Schema.brand("NativeHandoffCodeVerifier"));
1263
1325
  const NativeHandoffCodeChallenge = Base64Url256$1.pipe(effect.Schema.brand("NativeHandoffCodeChallenge"));
1264
1326
  const NativeHandoffCallbackUri = effect.Schema.Literals(NATIVE_HANDOFF_CALLBACK_URIS);
1265
- const EpochMs = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0));
1327
+ const EpochMs$1 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0));
1266
1328
  const BoundedDeviceLabel = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(64));
1267
1329
  const RelyingPartyId = effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(253), effect.Schema.isPattern(/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/i));
1268
1330
  const DisplayName = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(64));
@@ -1274,28 +1336,28 @@ const NativeIdentityLoginMethod = effect.Schema.Literals([
1274
1336
  "recovery_code"
1275
1337
  ]);
1276
1338
  const uniqueNonEmpty = (item, maximum) => effect.Schema.Array(item).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(maximum), effect.Schema.makeFilter((values) => new Set(values).size === values.length ? void 0 : "values must be unique"));
1277
- const NativeIdentityAntiBot = effect.Schema.Union([strict$2(effect.Schema.Struct({ provider: effect.Schema.Literal("bypass") })), strict$2(effect.Schema.Struct({
1339
+ const NativeIdentityAntiBot = effect.Schema.Union([strict$3(effect.Schema.Struct({ provider: effect.Schema.Literal("bypass") })), strict$3(effect.Schema.Struct({
1278
1340
  provider: effect.Schema.Literal("turnstile"),
1279
1341
  siteKey: NativeIdentityTurnstileSiteKey
1280
1342
  }))]);
1281
- const NativeIdentityCapability = strict$2(effect.Schema.Struct({
1343
+ const NativeIdentityCapability = strict$3(effect.Schema.Struct({
1282
1344
  version: effect.Schema.Literal(2),
1283
- email: strict$2(effect.Schema.Struct({
1345
+ email: strict$3(effect.Schema.Struct({
1284
1346
  verification: effect.Schema.Literal("required"),
1285
1347
  antiBot: NativeIdentityAntiBot
1286
1348
  })),
1287
- signup: effect.Schema.Union([strict$2(effect.Schema.Struct({ status: effect.Schema.Literal("disabled") })), strict$2(effect.Schema.Struct({
1349
+ signup: effect.Schema.Union([strict$3(effect.Schema.Struct({ status: effect.Schema.Literal("disabled") })), strict$3(effect.Schema.Struct({
1288
1350
  status: effect.Schema.Literal("enabled"),
1289
1351
  primaryCredentials: uniqueNonEmpty(NativeIdentityPrimaryCredential, 2)
1290
1352
  }))]),
1291
- login: strict$2(effect.Schema.Struct({
1353
+ login: strict$3(effect.Schema.Struct({
1292
1354
  methods: uniqueNonEmpty(NativeIdentityLoginMethod, 3),
1293
- passwordSecondFactor: strict$2(effect.Schema.Struct({
1355
+ passwordSecondFactor: strict$3(effect.Schema.Struct({
1294
1356
  totp: effect.Schema.Literal("when_enrolled"),
1295
1357
  fallback: effect.Schema.Literal("verified_email_code")
1296
1358
  }))
1297
1359
  })),
1298
- recovery: strict$2(effect.Schema.Struct({
1360
+ recovery: strict$3(effect.Schema.Struct({
1299
1361
  recoveryCode: effect.Schema.Boolean,
1300
1362
  passwordReset: effect.Schema.Boolean
1301
1363
  }))
@@ -1344,29 +1406,29 @@ function validCallbackResponse(value, outcome) {
1344
1406
  }
1345
1407
  const ApprovedCallbackUrl = effect.Schema.String.check(effect.Schema.makeFilter((value) => validCallbackResponse(value, "approved") ? void 0 : "invalid approved callback URL"));
1346
1408
  const CancelledCallbackUrl = effect.Schema.String.check(effect.Schema.makeFilter((value) => validCallbackResponse(value, "cancelled") ? void 0 : "invalid cancelled callback URL"));
1347
- strict$2(effect.Schema.Struct({
1409
+ strict$3(effect.Schema.Struct({
1348
1410
  service: effect.Schema.Literal("ryco-hub"),
1349
1411
  protocolVersion: effect.Schema.Literal(1),
1350
- nativeHandoff: strict$2(effect.Schema.Struct({
1412
+ nativeHandoff: strict$3(effect.Schema.Struct({
1351
1413
  mode: effect.Schema.Literal(NATIVE_HANDOFF_MODE),
1352
1414
  version: effect.Schema.Literal(1)
1353
1415
  })),
1354
- relyingParty: strict$2(effect.Schema.Struct({
1416
+ relyingParty: strict$3(effect.Schema.Struct({
1355
1417
  id: RelyingPartyId,
1356
1418
  displayName: DisplayName
1357
1419
  })),
1358
1420
  nativeIdentity: effect.Schema.optionalKey(NativeIdentityCapability)
1359
1421
  }));
1360
- const NativeHandoffSignInPurpose = strict$2(effect.Schema.Struct({
1422
+ const NativeHandoffSignInPurpose = strict$3(effect.Schema.Struct({
1361
1423
  kind: effect.Schema.Literal("sign_in"),
1362
1424
  providerHint: effect.Schema.optionalKey(ExternalIdentityProvider)
1363
1425
  }));
1364
- const NativeHandoffConnectExternalIdentityPurpose = strict$2(effect.Schema.Struct({
1426
+ const NativeHandoffConnectExternalIdentityPurpose = strict$3(effect.Schema.Struct({
1365
1427
  kind: effect.Schema.Literal("connect_external_identity"),
1366
1428
  provider: ExternalIdentityProvider
1367
1429
  }));
1368
1430
  const NativeHandoffPurpose = effect.Schema.Union([NativeHandoffSignInPurpose, NativeHandoffConnectExternalIdentityPurpose]);
1369
- strict$2(effect.Schema.Struct({
1431
+ strict$3(effect.Schema.Struct({
1370
1432
  redirectUri: NativeHandoffCallbackUri,
1371
1433
  codeChallenge: NativeHandoffCodeChallenge,
1372
1434
  codeChallengeMethod: effect.Schema.Literal("S256"),
@@ -1374,25 +1436,25 @@ strict$2(effect.Schema.Struct({
1374
1436
  deviceLabel: BoundedDeviceLabel,
1375
1437
  purpose: effect.Schema.optionalKey(NativeHandoffPurpose)
1376
1438
  }));
1377
- strict$2(effect.Schema.Struct({
1439
+ strict$3(effect.Schema.Struct({
1378
1440
  handoffId: NativeHandoffId,
1379
1441
  authorizationUrl: AuthorizationUrl,
1380
- expiresAt: EpochMs
1442
+ expiresAt: EpochMs$1
1381
1443
  }));
1382
- strict$2(effect.Schema.Struct({
1444
+ strict$3(effect.Schema.Struct({
1383
1445
  status: effect.Schema.Literal("pending"),
1384
1446
  deviceLabel: BoundedDeviceLabel,
1385
- expiresAt: EpochMs,
1447
+ expiresAt: EpochMs$1,
1386
1448
  providerHint: effect.Schema.optionalKey(ExternalIdentityProvider)
1387
1449
  }));
1388
- strict$2(effect.Schema.Struct({ redirectUri: ApprovedCallbackUrl }));
1389
- strict$2(effect.Schema.Struct({ redirectUri: CancelledCallbackUrl }));
1390
- strict$2(effect.Schema.Struct({
1450
+ strict$3(effect.Schema.Struct({ redirectUri: ApprovedCallbackUrl }));
1451
+ strict$3(effect.Schema.Struct({ redirectUri: CancelledCallbackUrl }));
1452
+ strict$3(effect.Schema.Struct({
1391
1453
  handoffId: NativeHandoffId,
1392
1454
  code: NativeHandoffCode,
1393
1455
  codeVerifier: NativeHandoffCodeVerifier
1394
1456
  }));
1395
- strict$2(effect.Schema.Struct({
1457
+ strict$3(effect.Schema.Struct({
1396
1458
  handoffId: NativeHandoffId,
1397
1459
  code: NativeHandoffCode,
1398
1460
  codeVerifier: NativeHandoffCodeVerifier,
@@ -1403,7 +1465,7 @@ const AccountId = effect.Schema.String.check(effect.Schema.isPattern(/^acct_[A-Z
1403
1465
  const SessionId = effect.Schema.String.check(effect.Schema.isPattern(/^sess_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48));
1404
1466
  const SessionFamilyId = effect.Schema.String.check(effect.Schema.isPattern(/^sfam_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(48));
1405
1467
  const NullableSessionLabel = effect.Schema.NullOr(effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(64)));
1406
- const NativeHandoffAccount = strict$2(effect.Schema.Struct({
1468
+ const NativeHandoffAccount = strict$3(effect.Schema.Struct({
1407
1469
  id: AccountId,
1408
1470
  displayName: effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(200)),
1409
1471
  role: effect.Schema.Literals([
@@ -1411,32 +1473,241 @@ const NativeHandoffAccount = strict$2(effect.Schema.Struct({
1411
1473
  "operator",
1412
1474
  "owner"
1413
1475
  ]),
1414
- createdAt: EpochMs,
1476
+ createdAt: EpochMs$1,
1415
1477
  disabledAt: effect.Schema.Null
1416
1478
  }));
1417
- const NativeHandoffSession = strict$2(effect.Schema.Struct({
1479
+ const NativeHandoffSession = strict$3(effect.Schema.Struct({
1418
1480
  id: SessionId,
1419
1481
  accountId: AccountId,
1420
1482
  familyId: SessionFamilyId,
1421
1483
  clientLabel: NullableSessionLabel,
1422
1484
  kind: effect.Schema.Literal("native"),
1423
- createdAt: EpochMs,
1424
- expiresAt: EpochMs,
1425
- lastSeenAt: EpochMs,
1485
+ createdAt: EpochMs$1,
1486
+ expiresAt: EpochMs$1,
1487
+ lastSeenAt: EpochMs$1,
1426
1488
  replacedBySessionId: effect.Schema.Null,
1427
1489
  revokedAt: effect.Schema.Null,
1428
1490
  revocationReasonCode: effect.Schema.Null
1429
1491
  }).check(effect.Schema.makeFilter((session) => session.expiresAt > session.createdAt && session.lastSeenAt >= session.createdAt && session.lastSeenAt <= session.expiresAt ? void 0 : "native session timestamps are inconsistent")));
1430
- strict$2(effect.Schema.Struct({
1492
+ strict$3(effect.Schema.Struct({
1431
1493
  account: NativeHandoffAccount,
1432
1494
  session: NativeHandoffSession,
1433
1495
  token: Base64Url256$1
1434
1496
  }).check(effect.Schema.makeFilter((value) => value.session.accountId === value.account.id ? void 0 : "native session account does not match")));
1435
- strict$2(effect.Schema.Struct({
1497
+ strict$3(effect.Schema.Struct({
1436
1498
  status: effect.Schema.Literal("connected"),
1437
1499
  purpose: NativeHandoffConnectExternalIdentityPurpose,
1438
1500
  externalIdentity: ExternalIdentitySummary
1439
1501
  }));
1502
+ const NATIVE_E2EE_MAX_GRANT_KEYS = 4;
1503
+ const HUB_DEVICE_GRANT_MAX_BYTES = 2048;
1504
+ const HUB_DEVICE_GRANT_BASE64URL_MAX_CHARS = 2731;
1505
+ const CLIENT_PREKEY_CERTIFICATE_BASE64URL_MAX_CHARS = 1459;
1506
+ const NODE_E2EE_CAPABILITY_STATEMENT_BASE64URL_MAX_CHARS = 6920;
1507
+ const strict$2 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
1508
+ const UInt32 = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(4294967295));
1509
+ const EpochMs = effect.Schema.Int.check(effect.Schema.isGreaterThanOrEqualTo(0), effect.Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));
1510
+ const ExactBytes = (length) => effect.Schema.Uint8Array.check(effect.Schema.isMinLength(length), effect.Schema.isMaxLength(length));
1511
+ const Base64Url = (minimum, maximum) => effect.Schema.String.check(effect.Schema.isMinLength(minimum), effect.Schema.isMaxLength(maximum), effect.Schema.isPattern(/^[A-Za-z0-9_-]+$/), effect.Schema.makeFilter((value) => value.length % 4 === 1 ? "invalid unpadded base64url length" : void 0));
1512
+ const Base64Url32 = Base64Url(43, 43);
1513
+ const Base64UrlP256 = Base64Url(87, 87);
1514
+ const HubDeviceGrantId = effect.Schema.String.check(effect.Schema.isPattern(/^hgr_[A-Za-z0-9_-]{22,43}$/), effect.Schema.isMaxLength(47)).pipe(effect.Schema.brand("HubDeviceGrantId"));
1515
+ const NodeE2eeContinuityId = effect.Schema.String.check(effect.Schema.isPattern(/^nct_[A-Za-z0-9_-]{22}$/), effect.Schema.isMaxLength(26)).pipe(effect.Schema.brand("NodeE2eeContinuityId"));
1516
+ const NativeE2eePlatform = effect.Schema.Literals([
1517
+ "darwin",
1518
+ "linux",
1519
+ "windows",
1520
+ "ios",
1521
+ "android"
1522
+ ]);
1523
+ const NativeE2eeReportedKeyBacking = effect.Schema.Literals([
1524
+ "secure-enclave",
1525
+ "strongbox",
1526
+ "tee",
1527
+ "tpm",
1528
+ "hardware-backed",
1529
+ "unavailable"
1530
+ ]);
1531
+ const NativeE2eeUsableKeyBacking = effect.Schema.Literals([
1532
+ "secure-enclave",
1533
+ "strongbox",
1534
+ "tee",
1535
+ "tpm",
1536
+ "hardware-backed"
1537
+ ]);
1538
+ const NativeE2eeEnrollmentStatus = effect.Schema.Literals([
1539
+ "active",
1540
+ "revoked",
1541
+ "superseded"
1542
+ ]);
1543
+ effect.Schema.Literals([
1544
+ "locally-verified",
1545
+ "account-enrolled",
1546
+ "web-unsigned"
1547
+ ]);
1548
+ const NodeE2eeAdmissionPolicy = effect.Schema.Literals([
1549
+ "compatibility",
1550
+ "require-e2ee",
1551
+ "require-native-e2ee",
1552
+ "require-locally-approved-native-e2ee"
1553
+ ]);
1554
+ const HubDeviceGrantEnvelope = Base64Url(1, HUB_DEVICE_GRANT_BASE64URL_MAX_CHARS).pipe(effect.Schema.brand("HubDeviceGrantEnvelope"));
1555
+ const E2eeDigestBase64Url = Base64Url32.pipe(effect.Schema.brand("E2eeDigestBase64Url"));
1556
+ const BoundedCapabilities = effect.Schema.Array(RelayCapability).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(32), effect.Schema.makeFilter((values) => new Set(values).size === values.length ? void 0 : "capabilities must be distinct"));
1557
+ const HubOrigin = effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(128), effect.Schema.isPattern(/^https?:\/\/[^\s/]+$/));
1558
+ const DeviceLabel = effect.Schema.Trim.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(100));
1559
+ const AppVersion = effect.Schema.String.check(effect.Schema.isNonEmpty(), effect.Schema.isMaxLength(64));
1560
+ const IdempotencyKey = Base64Url32.pipe(effect.Schema.brand("NativeE2eeIdempotencyKey"));
1561
+ const ReasonCode = effect.Schema.String.check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(64), effect.Schema.isPattern(/^[a-z][a-z0-9_]*$/));
1562
+ const HubDeviceGrantClaims = strict$2(effect.Schema.Struct({
1563
+ version: effect.Schema.Literal(1),
1564
+ suiteId: effect.Schema.Literal(2),
1565
+ issuerHubOrigin: HubOrigin,
1566
+ keyId: HubGrantVerificationKeyId,
1567
+ grantId: HubDeviceGrantId,
1568
+ accountId: HubAccountId,
1569
+ accountAuthEpoch: E2eeAuthorizationEpoch,
1570
+ enrollmentId: NativeE2eeEnrollmentId,
1571
+ enrollmentRevision: NativeE2eeEnrollmentRevision,
1572
+ deviceAuthEpoch: E2eeAuthorizationEpoch,
1573
+ deviceIdentityAlgorithm: effect.Schema.Literal("p256"),
1574
+ deviceIdentityPublicKey: ExactBytes(65),
1575
+ deviceIdentityFingerprint: ExactBytes(32),
1576
+ deviceAgreementAlgorithm: effect.Schema.Literal("x25519"),
1577
+ deviceAgreementPublicKey: ExactBytes(32),
1578
+ deviceAgreementFingerprint: ExactBytes(32),
1579
+ clientPrekeyCertificateDigest: ExactBytes(32),
1580
+ nodeId: RelayNodeId,
1581
+ nodeIdentityAlgorithm: effect.Schema.Literal("ed25519"),
1582
+ nodeIdentityPublicKey: ExactBytes(32),
1583
+ nodeIdentityFingerprint: ExactBytes(32),
1584
+ nodeAgreementAlgorithm: effect.Schema.Literal("x25519"),
1585
+ nodeAgreementPublicKey: ExactBytes(32),
1586
+ nodeAgreementFingerprint: ExactBytes(32),
1587
+ nodeContinuityId: NodeE2eeContinuityId,
1588
+ nodePolicyGeneration: UInt32,
1589
+ nodeCapabilityStatementDigest: ExactBytes(32),
1590
+ relayTicketId: RelayTicketId,
1591
+ maximumRole: RelayEffectiveRole,
1592
+ capabilities: BoundedCapabilities,
1593
+ issuedAt: EpochMs,
1594
+ notBefore: EpochMs,
1595
+ expiresAt: EpochMs,
1596
+ nonce: ExactBytes(32)
1597
+ }).check(effect.Schema.makeFilter((claims) => claims.notBefore <= claims.issuedAt && claims.issuedAt < claims.expiresAt && claims.expiresAt - claims.issuedAt <= 12e4 ? void 0 : "invalid grant validity interval")));
1598
+ strict$2(effect.Schema.Struct({
1599
+ protocolVersion: effect.Schema.Literal(1),
1600
+ hubOrigin: HubOrigin,
1601
+ accountId: HubAccountId,
1602
+ enrollmentId: NativeE2eeEnrollmentId,
1603
+ expectedEnrollmentRevision: effect.Schema.optionalKey(UInt32),
1604
+ identityPublicKey: Base64UrlP256,
1605
+ identityFingerprint: Base64Url32,
1606
+ agreementPublicKey: Base64Url32,
1607
+ agreementFingerprint: Base64Url32,
1608
+ clientPrekeyCertificate: Base64Url(1, CLIENT_PREKEY_CERTIFICATE_BASE64URL_MAX_CHARS),
1609
+ clientPrekeyCertificateDigest: Base64Url32,
1610
+ certificateExpiresAt: EpochMs,
1611
+ platform: NativeE2eePlatform,
1612
+ appVersion: AppVersion,
1613
+ reportedKeyBacking: NativeE2eeUsableKeyBacking,
1614
+ deviceLabel: DeviceLabel,
1615
+ requestedMaximumRole: RelayEffectiveRole,
1616
+ requestedCapabilities: BoundedCapabilities,
1617
+ enrollmentNonce: Base64Url32,
1618
+ idempotencyKey: IdempotencyKey
1619
+ }));
1620
+ const AccountE2eeDeviceSummary = strict$2(effect.Schema.Struct({
1621
+ enrollmentId: NativeE2eeEnrollmentId,
1622
+ enrollmentRevision: NativeE2eeEnrollmentRevision,
1623
+ accountAuthEpoch: E2eeAuthorizationEpoch,
1624
+ deviceAuthEpoch: E2eeAuthorizationEpoch,
1625
+ platform: NativeE2eePlatform,
1626
+ appVersion: AppVersion,
1627
+ reportedKeyBacking: NativeE2eeReportedKeyBacking,
1628
+ deviceLabel: DeviceLabel,
1629
+ identityFingerprint: Base64Url32,
1630
+ agreementFingerprint: Base64Url32,
1631
+ clientPrekeyCertificateDigest: Base64Url32,
1632
+ certificateExpiresAt: EpochMs,
1633
+ status: NativeE2eeEnrollmentStatus,
1634
+ createdAt: EpochMs,
1635
+ updatedAt: EpochMs,
1636
+ lastUsedAt: effect.Schema.NullOr(EpochMs),
1637
+ revokedAt: effect.Schema.NullOr(EpochMs)
1638
+ }).check(effect.Schema.makeFilter((device) => {
1639
+ if (device.updatedAt < device.createdAt) return "updatedAt must not precede createdAt";
1640
+ if (device.lastUsedAt !== null && device.lastUsedAt < device.createdAt) return "lastUsedAt must not precede createdAt";
1641
+ if (device.revokedAt !== null && device.revokedAt < device.createdAt) return "revokedAt must not precede createdAt";
1642
+ if (device.status === "active" && device.revokedAt !== null) return "active enrollment cannot have revokedAt";
1643
+ if (device.status !== "active" && device.revokedAt === null) return "inactive enrollment requires revokedAt";
1644
+ })));
1645
+ strict$2(effect.Schema.Struct({
1646
+ protocolVersion: effect.Schema.Literal(1),
1647
+ enrollment: AccountE2eeDeviceSummary
1648
+ }));
1649
+ strict$2(effect.Schema.Struct({
1650
+ protocolVersion: effect.Schema.Literal(1),
1651
+ devices: effect.Schema.Array(AccountE2eeDeviceSummary).check(effect.Schema.isMaxLength(128), effect.Schema.makeFilter((devices) => new Set(devices.map((device) => `${device.enrollmentId}:${device.enrollmentRevision}`)).size === devices.length ? void 0 : "device enrollment revisions must be distinct"))
1652
+ }));
1653
+ strict$2(effect.Schema.Struct({
1654
+ expectedEnrollmentRevision: NativeE2eeEnrollmentRevision,
1655
+ deviceLabel: DeviceLabel
1656
+ }));
1657
+ strict$2(effect.Schema.Struct({
1658
+ expectedEnrollmentRevision: NativeE2eeEnrollmentRevision,
1659
+ reasonCode: ReasonCode
1660
+ }));
1661
+ strict$2(effect.Schema.Struct({
1662
+ protocolVersion: effect.Schema.Literal(1),
1663
+ enrollment: AccountE2eeDeviceSummary
1664
+ }));
1665
+ const HubGrantVerificationKey = strict$2(effect.Schema.Struct({
1666
+ keyId: HubGrantVerificationKeyId,
1667
+ publicKey: Base64Url32,
1668
+ notBefore: EpochMs,
1669
+ notAfter: EpochMs
1670
+ }).check(effect.Schema.makeFilter((key) => key.notAfter > key.notBefore ? void 0 : "notAfter must be after notBefore")));
1671
+ const HubGrantVerificationKeys = effect.Schema.Array(HubGrantVerificationKey).check(effect.Schema.isMinLength(1), effect.Schema.isMaxLength(NATIVE_E2EE_MAX_GRANT_KEYS), effect.Schema.makeFilter((keys) => new Set(keys.map((key) => key.keyId)).size === keys.length ? void 0 : "grant verification key ids must be distinct"));
1672
+ strict$2(effect.Schema.Struct({
1673
+ protocolVersion: effect.Schema.Literal(1),
1674
+ generation: E2eeKeysetGeneration,
1675
+ keys: HubGrantVerificationKeys
1676
+ }));
1677
+ strict$2(effect.Schema.Struct({
1678
+ protocolVersion: effect.Schema.Literal(1),
1679
+ nodeId: RelayNodeId,
1680
+ capability: RelayCapability,
1681
+ protocolMajor: effect.Schema.Literal(1),
1682
+ protocolMinor: effect.Schema.Literal(3),
1683
+ suiteId: effect.Schema.Literal(2),
1684
+ enrollmentId: NativeE2eeEnrollmentId,
1685
+ enrollmentRevision: NativeE2eeEnrollmentRevision,
1686
+ clientPrekeyCertificateDigest: Base64Url32
1687
+ }));
1688
+ strict$2(effect.Schema.Struct({
1689
+ protocolVersion: effect.Schema.Literal(1),
1690
+ ticket: Base64Url(43, 86),
1691
+ ticketId: RelayTicketId,
1692
+ expiresAt: EpochMs,
1693
+ protocolMajor: effect.Schema.Literal(1),
1694
+ protocolMinor: effect.Schema.Literal(3),
1695
+ suiteId: effect.Schema.Literal(2),
1696
+ deviceGrant: HubDeviceGrantEnvelope,
1697
+ deviceGrantDigest: E2eeDigestBase64Url,
1698
+ nodeCapabilityStatement: Base64Url(1, NODE_E2EE_CAPABILITY_STATEMENT_BASE64URL_MAX_CHARS),
1699
+ nodeCapabilityStatementDigest: E2eeDigestBase64Url,
1700
+ keysetGeneration: E2eeKeysetGeneration,
1701
+ capability: RelayCapability,
1702
+ effectiveRole: RelayEffectiveRole
1703
+ }));
1704
+ strict$2(effect.Schema.Struct({
1705
+ protocolVersion: effect.Schema.Literal(1),
1706
+ enrollmentId: NativeE2eeEnrollmentId,
1707
+ enrollmentRevision: NativeE2eeEnrollmentRevision,
1708
+ accountAuthEpoch: E2eeAuthorizationEpoch,
1709
+ deviceAuthEpoch: E2eeAuthorizationEpoch
1710
+ }));
1440
1711
  const LOCAL_INTRODUCTION_DESCRIPTOR_PATH = "/api/desktop/e2ee/local-introduction/descriptor";
1441
1712
  const LOCAL_INTRODUCTION_COMPLETE_PATH = "/api/desktop/e2ee/local-introduction/complete";
1442
1713
  const LOCAL_INTRODUCTION_CONTROL_HEADER = "x-ryco-desktop-control";
@@ -12836,12 +13107,24 @@ Object.defineProperty(exports, "GrokSettings", {
12836
13107
  return GrokSettings;
12837
13108
  }
12838
13109
  });
13110
+ Object.defineProperty(exports, "HUB_DEVICE_GRANT_MAX_BYTES", {
13111
+ enumerable: true,
13112
+ get: function() {
13113
+ return HUB_DEVICE_GRANT_MAX_BYTES;
13114
+ }
13115
+ });
12839
13116
  Object.defineProperty(exports, "HubConnectorStatus", {
12840
13117
  enumerable: true,
12841
13118
  get: function() {
12842
13119
  return HubConnectorStatus;
12843
13120
  }
12844
13121
  });
13122
+ Object.defineProperty(exports, "HubDeviceGrantClaims", {
13123
+ enumerable: true,
13124
+ get: function() {
13125
+ return HubDeviceGrantClaims;
13126
+ }
13127
+ });
12845
13128
  Object.defineProperty(exports, "HubEnrollmentCeremonyDetail", {
12846
13129
  enumerable: true,
12847
13130
  get: function() {
@@ -12854,6 +13137,12 @@ Object.defineProperty(exports, "HubEnrollmentStartResult", {
12854
13137
  return HubEnrollmentStartResult;
12855
13138
  }
12856
13139
  });
13140
+ Object.defineProperty(exports, "HubGrantVerificationKeyId", {
13141
+ enumerable: true,
13142
+ get: function() {
13143
+ return HubGrantVerificationKeyId;
13144
+ }
13145
+ });
12857
13146
  Object.defineProperty(exports, "HubIdentitySummary", {
12858
13147
  enumerable: true,
12859
13148
  get: function() {
@@ -13028,6 +13317,18 @@ Object.defineProperty(exports, "ModelSelection", {
13028
13317
  return ModelSelection;
13029
13318
  }
13030
13319
  });
13320
+ Object.defineProperty(exports, "NATIVE_E2EE_MAX_GRANT_KEYS", {
13321
+ enumerable: true,
13322
+ get: function() {
13323
+ return NATIVE_E2EE_MAX_GRANT_KEYS;
13324
+ }
13325
+ });
13326
+ Object.defineProperty(exports, "NodeE2eeAdmissionPolicy", {
13327
+ enumerable: true,
13328
+ get: function() {
13329
+ return NodeE2eeAdmissionPolicy;
13330
+ }
13331
+ });
13031
13332
  Object.defineProperty(exports, "NonNegativeInt", {
13032
13333
  enumerable: true,
13033
13334
  get: function() {