import type { BrandProfile } from "@yanlinglabs/winter-agent-sdk"; import type { RuntimeSdkPeers } from "../sdk.js"; import type { RuntimeDirectory } from "./directory.js"; import type { RuntimeDirectoryStore } from "./directory-store.js"; import type { KeychainSeam } from "./keychain.js"; /** Everything the directory itself needs. */ export interface SeamContext { peers: RuntimeSdkPeers; /** WS-14 §12: the host's credential reads, when it passed any. Nothing in this package reads it (WS-23). */ keychain?: KeychainSeam; /** * The RESOLVED profile (I2) — never `Partial`, never a literal, resolved exactly once at * construction through the INJECTED peer's own `resolveBrand`. Every Winter-owned name any seam * spells derives from this. */ brand: BrandProfile; directoryStore: RuntimeDirectoryStore; /** An explicit home for the shared store's lazy resolver (defaults to the peer's own resolution under `brand`). */ winterHome?: string; /** * WS-21: the shared runtime home (`sdkHomeOf(winterHome)`) the canonical store is rooted at. Set only * for a router created with `requireRunHome`; absent, the store is rooted at `winterHome` as before. */ storeHome?: string; } /** What every OTHER seam needs: the same, plus the directory, which is built first. */ export interface SeamContextWithDirectory extends SeamContext { directory: RuntimeDirectory; }