import type { HarnessSession } from "#harness/types.js"; import type { ContextContainer } from "#context/container.js"; import type { ContextKey } from "#context/key.js"; export type { ContextReader } from "#context/key.js"; /** * Value returned by a framework provider's `create` method. * * `value` is the live step-local instance stored on the context. `session` * carries an optional harness session patch produced while deriving that * value. */ export interface ProviderResult { readonly value: T; readonly session?: HarnessSession; } /** * Framework-only provider contract. * * Framework providers may derive virtual values from context, observe the * current harness session, and optionally commit mutable provider-owned state * back onto the harness session after the authored step completes. */ export interface FrameworkContextProvider { readonly key: ContextKey; create(ctx: ContextContainer, session: HarnessSession): ProviderResult | undefined | Promise | undefined>; commit?(value: T, session: HarnessSession): HarnessSession | Promise; }