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.
- package/dist/{AcpNativeLogging-CLM3p9JD.mjs → AcpNativeLogging-Ch-s9nA8.mjs} +182 -2
- package/dist/{AcpNativeLogging-Bh7MX3rC.cjs → AcpNativeLogging-D54V5cIY.cjs} +187 -1
- package/dist/{AzureDevOpsSourceControlProvider-D9QXGi1h.cjs → AzureDevOpsSourceControlProvider-BzB5-N9m.cjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-jQm1WPMS.mjs → AzureDevOpsSourceControlProvider-DTOlXGyd.mjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-C3VDp9qR.cjs → BitbucketSourceControlProvider-D-8PWXO3.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-j95Cro_2.mjs → BitbucketSourceControlProvider-DGd4IPx5.mjs} +2 -2
- package/dist/{ClaudeDriver-CT89QDP8.mjs → ClaudeDriver-DxowtK6I.mjs} +2 -2
- package/dist/{ClaudeDriver-DiRhQM2K.cjs → ClaudeDriver-HEbUzW34.cjs} +2 -2
- package/dist/{CodexDriver-CBYfPl_X.mjs → CodexDriver-CccSWoP3.mjs} +3 -3
- package/dist/{CodexDriver-BmKoU7w_.cjs → CodexDriver-YG4IwzLm.cjs} +3 -3
- package/dist/{CodexTextGeneration-B7GPyLo2.mjs → CodexTextGeneration-BfGt7ZUe.mjs} +1 -1
- package/dist/{CodexTextGeneration-CuXvtfAi.cjs → CodexTextGeneration-CBJHkgOz.cjs} +1 -1
- package/dist/{CopilotDriver-XX5zmGVK.cjs → CopilotDriver-Bm4OZMkm.cjs} +3 -3
- package/dist/{CopilotDriver-BJ1P_bHz.mjs → CopilotDriver-DZAW-7yV.mjs} +3 -3
- package/dist/{CursorDriver-BH6yAijk.mjs → CursorDriver-B4jb4rWd.mjs} +14 -3
- package/dist/{CursorDriver-CYMXQKec.cjs → CursorDriver-CYcKAkUY.cjs} +14 -3
- package/dist/{ForgejoSourceControlProvider-Dzg-BJY_.cjs → ForgejoSourceControlProvider-CXUevO6C.cjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-ZfU3SBzW.mjs → ForgejoSourceControlProvider-Dfi8KH7I.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-Bx5_H3zb.mjs → GitHubSourceControlProvider-BH97aNa0.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-BpyIi23Q.cjs → GitHubSourceControlProvider-DOs1ouvp.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-QccSsOnx.cjs → GitLabSourceControlProvider-CfbE6GYD.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-DjvGD1WZ.mjs → GitLabSourceControlProvider-nIzcy9AJ.mjs} +2 -2
- package/dist/{GrokDriver-jE4az7JZ.cjs → GrokDriver-C35gWEiw.cjs} +14 -3
- package/dist/{GrokDriver-BPIUrqkN.mjs → GrokDriver-CENrrqQc.mjs} +14 -3
- package/dist/{OpenCodeDriver-_hUfFwH4.mjs → OpenCodeDriver-BIxSPI9J.mjs} +105 -23
- package/dist/{OpenCodeDriver-IbZqAzYW.cjs → OpenCodeDriver-CHuQ6Xhc.cjs} +105 -23
- package/dist/{SourceControlProviderDiscoveryCatalog-CnkV-oKD.cjs → SourceControlProviderDiscoveryCatalog-DCmYsPEa.cjs} +1 -1
- package/dist/{SourceControlProviderDiscoveryCatalog-CHxCP6Ng.mjs → SourceControlProviderDiscoveryCatalog-DaRgCE5d.mjs} +1 -1
- package/dist/bin.cjs +6158 -5042
- package/dist/bin.mjs +6148 -5032
- package/dist/client/assets/AccountSettings--RGb4Xyh.js +1 -0
- package/dist/client/assets/{AiFocusSettings-CYIp0JOV.js → AiFocusSettings-BnGcbAMj.js} +1 -1
- package/dist/client/assets/{AnimatedHeight-CM_Eh6tz.js → AnimatedHeight-xBldRJT_.js} +1 -1
- package/dist/client/assets/{AppearanceSettings-BwUAv5oz.js → AppearanceSettings-BZRfC5N0.js} +1 -1
- package/dist/client/assets/{BranchToolbar.logic-CKKpnCfs.js → BranchToolbar.logic-CGpYXkLE.js} +1 -1
- package/dist/client/assets/{ChatRightPanel-DYXZNh1m.js → ChatRightPanel-BlooofmF.js} +9 -9
- package/dist/client/assets/{ChatThreadRouteView-B0kj0wFr.js → ChatThreadRouteView-B28bv4Zt.js} +1 -1
- package/dist/client/assets/CommandPaletteDialog-hNEraTe2.js +1 -0
- package/dist/client/assets/{CompositeItem-B4ITmHni.js → CompositeItem-CKY4wPzb.js} +1 -1
- package/dist/client/assets/{CompositeRoot-C5I2Yh5e.js → CompositeRoot-Ds7U4w5S.js} +1 -1
- package/dist/client/assets/ConnectionsSettings-C4VqR67L.js +7 -0
- package/dist/client/assets/{DiagnosticsSettings-B6IUUiYM.js → DiagnosticsSettings-ByZ42-mW.js} +1 -1
- package/dist/client/assets/{DialogHandle-Bs7TUuxl.js → DialogHandle-BdmgCiER.js} +1 -1
- package/dist/client/assets/{DialogPopup-BAK5J3da.js → DialogPopup-D6m8w7-0.js} +1 -1
- package/dist/client/assets/DialogRoot-BnE2_J9j.js +1 -0
- package/dist/client/assets/{DialogTitle-B1m3rLO-.js → DialogTitle-DFkPQ5wa.js} +1 -1
- package/dist/client/assets/{DialogTrigger-VXV8wYO4.js → DialogTrigger-CTCt2xVs.js} +1 -1
- package/dist/client/assets/{DialogViewport-yUeHNu43.js → DialogViewport-OqbNjTEg.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-C39ZNgWr.js → DraftChatThreadRouteView-B_4VVh8J.js} +1 -1
- package/dist/client/assets/{ExternalIdentityWeb.logic-TlJdh82R.js → ExternalIdentityWeb.logic-TXvkTDG8.js} +1 -1
- package/dist/client/assets/{GlassSurface-BWk2twKc.js → GlassSurface-k7VAG7Dp.js} +1 -1
- package/dist/client/assets/HostedConnectionControls-D0YyFVVm.js +1 -0
- package/dist/client/assets/HostedHubRoot-gr9o6h-w.js +1 -0
- package/dist/client/assets/{HostedNativeAuthorizationRoute-C1VRYU0-.js → HostedNativeAuthorizationRoute-DQy7gPHg.js} +1 -1
- package/dist/client/assets/HostedRelayTrustNotice-DtiCe1oF.js +1 -0
- package/dist/client/assets/{Icons-uMh1k5C0.js → Icons-BHigZ6eO.js} +1 -1
- package/dist/client/assets/{IntegrationsSettingsPanel-Mx-1xSUL.js → IntegrationsSettingsPanel-RgmTIo_4.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-Bv3H18VO.js → KeybindingsSettings-2J94301x.js} +1 -1
- package/dist/client/assets/{McpServersSettings-Cbq-uHU3.js → McpServersSettings-Cpzyop0g.js} +1 -1
- package/dist/client/assets/{MobileSheet-DS7_soKu.js → MobileSheet-5RNq1fWV.js} +1 -1
- package/dist/client/assets/{NewWorktreeDialog-CLm1JR27.js → NewWorktreeDialog-BE_53fbt.js} +1 -1
- package/dist/client/assets/{NoActiveThreadState-CFxNrhs_.js → NoActiveThreadState-Cpar0wiW.js} +1 -1
- package/dist/client/assets/NodeSecuritySettings-BpZYwf5z.js +1 -0
- package/dist/client/assets/{OpinionatedPluginsSettings-B7gZOBCs.js → OpinionatedPluginsSettings-CLbbw_K_.js} +1 -1
- package/dist/client/assets/{PhoneGetAppInterstitial-DQdUrqs1.js → PhoneGetAppInterstitial-G1mx30Rm.js} +1 -1
- package/dist/client/assets/{PhoneGetAppInterstitialBackdrop-DbRPU11Z.js → PhoneGetAppInterstitialBackdrop-nfP93au3.js} +1 -1
- package/dist/client/assets/PhoneHome-D24dskaK.js +1 -0
- package/dist/client/assets/{PhoneSettingsSurface-BJ8jDucY.js → PhoneSettingsSurface-DU6QcRMa.js} +1 -1
- package/dist/client/assets/{ProjectFavicon-DHnstN4J.js → ProjectFavicon-DiAvCEOv.js} +1 -1
- package/dist/client/assets/{ProviderModelPicker-Ch69G0-0.js → ProviderModelPicker-KKoDIb0I.js} +1 -1
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-D3qYdp40.js → ProviderUpdateLaunchNotification.logic-BWOy8LJG.js} +1 -1
- package/dist/client/assets/{ProvidersSettingsPanel-Dz-1od7X.js → ProvidersSettingsPanel-Cotp9jkx.js} +1 -1
- package/dist/client/assets/{RedactedSensitiveText-BORE69Ig.js → RedactedSensitiveText-Bijn-7t0.js} +1 -1
- package/dist/client/assets/{RootAppShell-DnesFYfo.js → RootAppShell-BPFAVRor.js} +3 -3
- package/dist/client/assets/{RycoLetterMark-DDx_gBX-.js → RycoLetterMark-DDqdXSCR.js} +1 -1
- package/dist/client/assets/{SettingsDialog-CWK_H1sI.js → SettingsDialog-C1pQqIpt.js} +1 -1
- package/dist/client/assets/{SettingsPanels-DxMEuovz.js → SettingsPanels-_z4Xw8vV.js} +1 -1
- package/dist/client/assets/{SettingsPanels.editor-D2gxvDPy.js → SettingsPanels.editor-CFrJ6eJl.js} +1 -1
- package/dist/client/assets/{SourceControlSettings-CB2SdaRk.js → SourceControlSettings-aZXtdyQJ.js} +1 -1
- package/dist/client/assets/{StatisticsPage-MhMDuSSQ.js → StatisticsPage-DLxnsLkl.js} +1 -1
- package/dist/client/assets/{StatisticsPanel-D3d0bJgk.js → StatisticsPanel-CZng52aF.js} +1 -1
- package/dist/client/assets/{StatisticsSettingsLink-DlnQpfyr.js → StatisticsSettingsLink-BswiD6v1.js} +1 -1
- package/dist/client/assets/{ThreadStatusIndicators-CPpIFcAC.js → ThreadStatusIndicators-Dg7ByO0t.js} +0 -0
- package/dist/client/assets/{ThreadTerminalDrawer-DvadlVXV.js → ThreadTerminalDrawer-ro03rSMk.js} +1 -1
- package/dist/client/assets/{ThreadWorkspacePanel-Ct9EINsa.js → ThreadWorkspacePanel-j_muuK0U.js} +1 -1
- package/dist/client/assets/{ToolbarRootContext-DtUqN8i6.js → ToolbarRootContext-gBA5VTsh.js} +1 -1
- package/dist/client/assets/{WorkItemsTab-CI6hTQ_k.js → WorkItemsTab-CBbr_lPX.js} +4 -4
- package/dist/client/assets/{alert-DQjuri3D.js → alert-DM55UBFJ.js} +1 -1
- package/dist/client/assets/{alert-dialog-Cb2TnXzy.js → alert-dialog-t0tth9lg.js} +1 -1
- package/dist/client/assets/authorization-jiPI8hG1.js +1 -0
- package/dist/client/assets/{badge-Cil0isYQ.js → badge-DUe5V2Mj.js} +1 -1
- package/dist/client/assets/{branding-BEx1jrAA.js → branding-31Bj-8ZC.js} +1 -1
- package/dist/client/assets/{button-CBqaO2Ub.js → button-BdUaa4U1.js} +1 -1
- package/dist/client/assets/{capabilities-Cj8jXZOW.js → capabilities-DQDkV1US.js} +1 -1
- package/dist/client/assets/{chatThreadActions-kwD_yAEt.js → chatThreadActions-3VwZmcuQ.js} +1 -1
- package/dist/client/assets/{collapsible-DBPd--L7.js → collapsible-BmAgbTeN.js} +1 -1
- package/dist/client/assets/{command-DuPvkUAz.js → command-8YtR6jmS.js} +1 -1
- package/dist/client/assets/composerDraftStore-Bz5WIZBE.js +11 -0
- package/dist/client/assets/{data-list-BNy2Nwkd.js → data-list-D7UF_rKC.js} +1 -1
- package/dist/client/assets/{desktopUpdateAtoms-Dz4zQu-C.js → desktopUpdateAtoms-D_GMRE2r.js} +1 -1
- package/dist/client/assets/{desktopWorkspace-wrPRMcOi.js → desktopWorkspace-Dg6EeBlb.js} +1 -1
- package/dist/client/assets/{device-DbMaLmeM.js → device-DlExHdp_.js} +1 -1
- package/dist/client/assets/{dialog-Csp7hsmq.js → dialog-B0sUgnpe.js} +1 -1
- package/dist/client/assets/{draft-input-COB-ymgx.js → draft-input-CljKajxE.js} +1 -1
- package/dist/client/assets/{editorPreferences-lQ3Fm4yA.js → editorPreferences-B3qgjPa6.js} +1 -1
- package/dist/client/assets/{empty-BcTA7vWq.js → empty-D5W-VFFg.js} +1 -1
- package/dist/client/assets/{env-BZZxbmon.js → env-3rzMJf1D.js} +1 -1
- package/dist/client/assets/{getPseudoElementBounds-BaLrkv_J.js → getPseudoElementBounds-BAmGtfzA.js} +1 -1
- package/dist/client/assets/{group-CCjhaP2K.js → group-BQB2fHcw.js} +1 -1
- package/dist/client/assets/{index-QY6vcnCY.js → index-CQJvt69U.js} +2 -2
- package/dist/client/assets/{input-pu0UXdN_.js → input-5Gxk32uP.js} +1 -1
- package/dist/client/assets/{kbd-xUvRCeUS.js → kbd-B4HCyWpi.js} +1 -1
- package/dist/client/assets/{keybindings-Bj6xWIbQ.js → keybindings-DCgzArdM.js} +1 -1
- package/dist/client/assets/{label-BzDE8wjR.js → label-CaZNWVUA.js} +1 -1
- package/dist/client/assets/{lib-B6XyeqaU.js → lib-B7pkMeOn.js} +1 -1
- package/dist/client/assets/{logging-1BfRrhxL.js → logging-B1VrUJXw.js} +1 -1
- package/dist/client/assets/{main-stppnsiU.js → main-BPfnkW0F.js} +2 -2
- package/dist/client/assets/main-DspUYA0Y.css +2 -0
- package/dist/client/assets/{menu-g3Hcm2JF.js → menu-C9Z3D_7l.js} +1 -1
- package/dist/client/assets/{popover-z5hURYff.js → popover-CCz2VJor.js} +1 -1
- package/dist/client/assets/primary-BMsRfh2b.js +2 -0
- package/dist/client/assets/{projectPaths-BFTUsvWs.js → projectPaths-C7IGaRXO.js} +1 -1
- package/dist/client/assets/{providerDriverMeta-C9M8tUrj.js → providerDriverMeta-CgWTJ9AV.js} +1 -1
- package/dist/client/assets/{providerIconUtils-BXecnJ0v.js → providerIconUtils-DKIWQBl_.js} +1 -1
- package/dist/client/assets/providerInstances-DTwJD7w4.js +1 -0
- package/dist/client/assets/providerModels-DTwJD7w4.js +1 -0
- package/dist/client/assets/{qr-code-B6lBPRxy.js → qr-code-BPTdK_Fr.js} +1 -1
- package/dist/client/assets/{radio-group-DQahlnSi.js → radio-group-2REtGBUc.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-CUqcBhyS.js → resolveAriaLabelledBy-CPzaFh9Q.js} +1 -1
- package/dist/client/assets/{rightPanelRouteSearch-uEySicf2.js → rightPanelRouteSearch-Cv7sQjf8.js} +1 -1
- package/dist/client/assets/runtime-DAfYpzw4.js +1 -0
- package/dist/client/assets/{scroll-area-CzUrMo2h.js → scroll-area-BsYcpnWD.js} +1 -1
- package/dist/client/assets/{scrollEdges-C5VxoJIp.js → scrollEdges-CUJFIJBP.js} +1 -1
- package/dist/client/assets/{select-_C7bRT7k.js → select-zInJ5G5C.js} +1 -1
- package/dist/client/assets/{separator-CFUmZFfK.js → separator-CsdeZPxC.js} +1 -1
- package/dist/client/assets/{session-logic-C5moG_sv.js → session-logic-CjEpVbpM.js} +4 -2
- package/dist/client/assets/{settingsDialogStore-DnU14tMG.js → settingsDialogStore-B7yUTgbo.js} +1 -1
- package/dist/client/assets/{settingsLayout-zwP6p5aD.js → settingsLayout-7JR7nC6x.js} +1 -1
- package/dist/client/assets/{sheet-BoROLwxR.js → sheet-CLd8wqAA.js} +1 -1
- package/dist/client/assets/{sidebar-5T3qKIfp.js → sidebar-BliCAaUG.js} +1 -1
- package/dist/client/assets/{sidebarProjectFolders-Bzdw3xc6.js → sidebarProjectFolders-ScxWbdTn.js} +1 -1
- package/dist/client/assets/{sidebarStatusText-q88Acn3r.js → sidebarStatusText-WiaEF1ae.js} +1 -1
- package/dist/client/assets/{skeleton-C2GDOvXd.js → skeleton-B_qDqbso.js} +1 -1
- package/dist/client/assets/{spinner-Dlyh0j_K.js → spinner-BlCG_0jN.js} +1 -1
- package/dist/client/assets/src-Chx4ffXH.js +14 -0
- package/dist/client/assets/storeSelectors-Of4FM0vM.js +1 -0
- package/dist/client/assets/{switch-CIMwetO3.js → switch-DUT5lUyk.js} +1 -1
- package/dist/client/assets/{terminal-links-BJzH2Ipe.js → terminal-links-Bxew8m4Q.js} +1 -1
- package/dist/client/assets/{textarea-C0_BLJbT.js → textarea-C5eyaBI3.js} +1 -1
- package/dist/client/assets/{threadPinning-DQrBoIxu.js → threadPinning-B8un4fjx.js} +1 -1
- package/dist/client/assets/{threadPriorityRefreshRuntime-D-OkS27H.js → threadPriorityRefreshRuntime-Cgjn5Y-7.js} +1 -1
- package/dist/client/assets/{toast-D7IDKuLa.js → toast-X_O6OBAx.js} +1 -1
- package/dist/client/assets/{toggle-DjmkdNns.js → toggle-P-wZyQFO.js} +1 -1
- package/dist/client/assets/{toggle-group-q7LGJy7u.js → toggle-group-Du7zfd4_.js} +1 -1
- package/dist/client/assets/{tooltip-c9oahm_e.js → tooltip-D_i-87PL.js} +1 -1
- package/dist/client/assets/types-Of4FM0vM.js +1 -0
- package/dist/client/assets/{uiStateStore-C48VlkZ2.js → uiStateStore-UUXKrPLz.js} +1 -1
- package/dist/client/assets/{useAtlassian-Bpvpm41l.js → useAtlassian-BPNtoDXL.js} +0 -0
- package/dist/client/assets/{useButton-CbjUY1n3.js → useButton-D8BjCVb-.js} +1 -1
- package/dist/client/assets/{useCompositeListItem-Mh9CnfjW.js → useCompositeListItem-BHuxHR8U.js} +1 -1
- package/dist/client/assets/{useDebouncedValue-fMFxXx4-.js → useDebouncedValue-D2-9M4Tq.js} +1 -1
- package/dist/client/assets/{useFloatingRootContext-P6J9bP_1.js → useFloatingRootContext-CTdmlYcf.js} +1 -1
- package/dist/client/assets/useHandleNewThread-YGjWitl4.js +1 -0
- package/dist/client/assets/{useLabelableId-ve_G1Djw.js → useLabelableId-LInf_Egz.js} +1 -1
- package/dist/client/assets/{useLocation-LUorHj6V.js → useLocation-3zGT25DO.js} +1 -1
- package/dist/client/assets/{useOpenInteractionType-BcwkVFGu.js → useOpenInteractionType-BPthQeg6.js} +1 -1
- package/dist/client/assets/{usePhoneThreadActions--SRv1Gdm.js → usePhoneThreadActions-D_Z29f6p.js} +1 -1
- package/dist/client/assets/{usePopupViewport-DyXMbxzY.js → usePopupViewport-BErrsN0k.js} +1 -1
- package/dist/client/assets/{useScrollLock-DvPB4gyu.js → useScrollLock-CLyJPg7p.js} +1 -1
- package/dist/client/assets/{useStatistics-B4vW9Enx.js → useStatistics-BQkcb-1_.js} +1 -1
- package/dist/client/assets/{useSwipeDismiss-8zZC4ynu.js → useSwipeDismiss-DjMT1XiU.js} +1 -1
- package/dist/client/assets/{useThreadActions-wbcN8Mp3.js → useThreadActions-ISbVGkmx.js} +1 -1
- package/dist/client/assets/{useTriggerFocusGuards-DI2oAYh0.js → useTriggerFocusGuards-DwOHWbrB.js} +1 -1
- package/dist/client/assets/{useValueChanged-DeYQvzxH.js → useValueChanged-Bq39JB8D.js} +1 -1
- package/dist/client/assets/{utils-Dz7wQZDk.js → utils-BFbDkTQq.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/{collectUint8StreamText-CDu-bszH.cjs → collectUint8StreamText-C5fop6Zf.cjs} +443 -142
- package/dist/{collectUint8StreamText-B3klZuIF.mjs → collectUint8StreamText-D8TBiBWk.mjs} +414 -143
- package/dist/{makeManagedServerProvider-DeEmDbiq.cjs → makeManagedServerProvider-BytnBN6b.cjs} +1 -1
- package/dist/{makeManagedServerProvider-CsaYHU8T.mjs → makeManagedServerProvider-DRlNwlhe.mjs} +1 -1
- package/package.json +1 -1
- package/dist/client/assets/AccountSettings-CvD49Uja.js +0 -1
- package/dist/client/assets/CommandPaletteDialog-CJKvYVxh.js +0 -1
- package/dist/client/assets/ConnectionsSettings-4l-DXYo6.js +0 -7
- package/dist/client/assets/DialogRoot-DMnQO_iQ.js +0 -1
- package/dist/client/assets/HostedConnectionControls-DO5uPfav.js +0 -1
- package/dist/client/assets/HostedHubRoot-DkHX6TkK.js +0 -1
- package/dist/client/assets/HostedRelayTrustNotice-Cl7lRwRJ.js +0 -1
- package/dist/client/assets/NodeSecuritySettings-B3uURyma.js +0 -1
- package/dist/client/assets/PhoneHome-BbZKBYb8.js +0 -1
- package/dist/client/assets/authorization-BrGZruGo.js +0 -1
- package/dist/client/assets/composerDraftStore-czbuHgbM.js +0 -11
- package/dist/client/assets/main-CZzCxtM-.css +0 -2
- package/dist/client/assets/primary-AnB-Zuft.js +0 -2
- package/dist/client/assets/providerInstances-CMy-5cGE.js +0 -1
- package/dist/client/assets/providerModels-CMy-5cGE.js +0 -1
- package/dist/client/assets/runtime-DRPzstwF.js +0 -1
- package/dist/client/assets/src-Blzsn4sO.js +0 -14
- package/dist/client/assets/storeSelectors-BJw1h5Ih.js +0 -1
- package/dist/client/assets/types-BJw1h5Ih.js +0 -1
- 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
|
|
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
|
|
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:
|
|
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
|
|
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$
|
|
735
|
-
const EpochMs$
|
|
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
|
|
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$
|
|
818
|
+
const strictTimed = (fields) => strict$4(effect.Schema.Struct({
|
|
757
819
|
...fields,
|
|
758
|
-
issuedAt: EpochMs$
|
|
759
|
-
expiresAt: EpochMs$
|
|
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$
|
|
778
|
-
strict$
|
|
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$
|
|
842
|
+
antiBot: strict$4(effect.Schema.Struct({ provider: effect.Schema.Literal("bypass") }))
|
|
781
843
|
})),
|
|
782
|
-
strict$
|
|
844
|
+
strict$4(effect.Schema.Struct({
|
|
783
845
|
status: effect.Schema.Literal("enabled"),
|
|
784
|
-
antiBot: strict$
|
|
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$
|
|
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$
|
|
797
|
-
lastUsedAt: effect.Schema.NullOr(EpochMs$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
893
|
+
strict$4(effect.Schema.Struct({
|
|
832
894
|
authorizationUrl: GitHubAuthorizationUrl,
|
|
833
|
-
expiresAt: EpochMs$
|
|
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$
|
|
847
|
-
strict$
|
|
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$
|
|
914
|
+
expiresAt: EpochMs$2
|
|
853
915
|
})),
|
|
854
|
-
strict$
|
|
916
|
+
strict$4(effect.Schema.Struct({
|
|
855
917
|
status: effect.Schema.Literal("link"),
|
|
856
918
|
externalIdentity: ExternalIdentitySummary,
|
|
857
|
-
expiresAt: EpochMs$
|
|
919
|
+
expiresAt: EpochMs$2
|
|
858
920
|
})),
|
|
859
|
-
strict$
|
|
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$
|
|
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$
|
|
872
|
-
strict$
|
|
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$
|
|
877
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
899
|
-
id:
|
|
960
|
+
const HubPublicAccount = strict$4(effect.Schema.Struct({
|
|
961
|
+
id: HubAccountId,
|
|
900
962
|
username: HubUsername,
|
|
901
963
|
displayName: BoundedDisplayName,
|
|
902
|
-
createdAt: EpochMs$
|
|
964
|
+
createdAt: EpochMs$2,
|
|
903
965
|
disabledAt: effect.Schema.Null
|
|
904
966
|
}));
|
|
905
|
-
const HubPublicBrowserSession = strict$
|
|
967
|
+
const HubPublicBrowserSession = strict$4(effect.Schema.Struct({
|
|
906
968
|
id: SessionId$1,
|
|
907
|
-
accountId:
|
|
969
|
+
accountId: HubAccountId,
|
|
908
970
|
activeSpaceId: HubSpaceId,
|
|
909
|
-
createdAt: EpochMs$
|
|
910
|
-
expiresAt: EpochMs$
|
|
911
|
-
lastSeenAt: EpochMs$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1015
|
+
})), strict$4(effect.Schema.Struct({
|
|
954
1016
|
kind: effect.Schema.Literal("email_code"),
|
|
955
1017
|
code: EmailCode
|
|
956
1018
|
}))]);
|
|
957
|
-
strict$
|
|
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$
|
|
1037
|
+
strict$4(effect.Schema.Struct({
|
|
976
1038
|
...NativeIdentityActivation,
|
|
977
1039
|
username: HubUsername
|
|
978
1040
|
}));
|
|
979
|
-
strict$
|
|
980
|
-
strict$
|
|
981
|
-
strict$
|
|
982
|
-
strict$
|
|
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$
|
|
1049
|
+
strict$4(effect.Schema.Struct({
|
|
988
1050
|
...NativeIdentityActivation,
|
|
989
1051
|
password: BoundedPassword,
|
|
990
|
-
idempotencyKey: IdempotencyKey
|
|
1052
|
+
idempotencyKey: IdempotencyKey$1
|
|
991
1053
|
}));
|
|
992
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1118
|
+
strict$4(effect.Schema.Struct({
|
|
1057
1119
|
attemptId: NativeIdentityResetAttemptId,
|
|
1058
1120
|
resetSecret: NativeIdentityResetSecret,
|
|
1059
1121
|
password: BoundedPassword,
|
|
1060
|
-
factor: effect.Schema.Union([strict$
|
|
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$
|
|
1066
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1153
|
+
})), strict$4(effect.Schema.Struct({
|
|
1092
1154
|
kind: effect.Schema.Literal("email_code"),
|
|
1093
1155
|
code: EmailCode
|
|
1094
1156
|
}))]);
|
|
1095
|
-
strict$
|
|
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$
|
|
1110
|
-
strict$
|
|
1111
|
-
strict$
|
|
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$
|
|
1178
|
+
strict$4(effect.Schema.Struct({
|
|
1117
1179
|
...PublicSignupActivation,
|
|
1118
1180
|
password: BoundedPassword,
|
|
1119
|
-
idempotencyKey: IdempotencyKey
|
|
1181
|
+
idempotencyKey: IdempotencyKey$1
|
|
1120
1182
|
}));
|
|
1121
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1212
|
+
strict$4(effect.Schema.Struct({
|
|
1151
1213
|
identifier: HubLoginIdentifier,
|
|
1152
1214
|
antiBotAssertion: effect.Schema.optional(AntiBotAssertion)
|
|
1153
1215
|
}));
|
|
1154
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1174
|
-
strict$
|
|
1175
|
-
strict$
|
|
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$
|
|
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$
|
|
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:
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1343
|
+
const NativeIdentityCapability = strict$3(effect.Schema.Struct({
|
|
1282
1344
|
version: effect.Schema.Literal(2),
|
|
1283
|
-
email: strict$
|
|
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$
|
|
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$
|
|
1353
|
+
login: strict$3(effect.Schema.Struct({
|
|
1292
1354
|
methods: uniqueNonEmpty(NativeIdentityLoginMethod, 3),
|
|
1293
|
-
passwordSecondFactor: strict$
|
|
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$
|
|
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$
|
|
1409
|
+
strict$3(effect.Schema.Struct({
|
|
1348
1410
|
service: effect.Schema.Literal("ryco-hub"),
|
|
1349
1411
|
protocolVersion: effect.Schema.Literal(1),
|
|
1350
|
-
nativeHandoff: strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1389
|
-
strict$
|
|
1390
|
-
strict$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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() {
|