auth.provider API
    Preparing search index...

    Variable sessionModuleConst

    sessionModule: Module = ...

    Const Module for the session and federation route surface.

    Per A2-γ §3.4 + Amendment 5 (§1.1.5) + Amendment 6 (§1.1.6).

    Replaces the v0.4.x sessionModule(opts: SessionModuleOptions): Module factory. Caller surface:

    import { sessionModule } from "@o3co/auth-provider-session"; // pass directly to the manifest list — sessionModule is a // pre-built Module value, not a factory; dependencies // (userRepository, userSessionStore, etc.) flow in through // sibling defineModule(...) modules that produce them.

    Two route contributions, both mounted at /session (intentional named-route bundle per Codex Session 06 Q6):

    • "session-routes" — POST /session/login, POST /session/logout
    • "federation-routes" — GET /session/oauth/federation/:name (+ callback)

    requires (Amendment 5):

    • "config", "userRepository" — bootstrap / DI
    • "userSessionStore", "federationTokenStore", "sessionFederationIndex" — three sibling stores actually consumed by these routes (NOT the four-store superset; sessionRPRegistry and sessionFamilyIndex are oauth-package concerns per module.mts:84 / :248 audit pre-conversion).
    • "federationProviders" — synthetic (planner-derived from per-federation federations.<name> contributions).
    • "federationRedirectPolicyResolver" — synthetic per A5 §7 (planner-derived from federationRedirectPolicies.<name> contributions).

    providerCallbackUrls is derived from config.federations inside the federation-routes lambda — a route-local config projection, not a synthetic key. Per A2-γ §11.5 synthetic keys are reserved for planner projections of contribution kinds; callback URLs are config-driven and have no contribution surface, so route-local derivation is the correct level (verified Codex 2026-05-01).

    Theme B (one responsibility), Theme D (immutable const shape, no ctx mutation), Theme E (typed deps replace lazy ctx closures + factory option indirection).