import type { ProfileLoadState, ProfileSection } from './types.js'; /** The reads the block needs. Satisfied by `OwnerProfileStore`. */ export interface OpenTierProfileSource { status(): ProfileLoadState; get(fieldId: string): { readonly value: string; readonly valid: boolean; } | undefined; section(name: string): ProfileSection | undefined; } /** * The open tier as a short system-context block, or `''` when there is nothing * to say. * * Invalid values are skipped, exactly as an unset one would be: ยง4.3's rule is * that a value the parser could not make sense of is preserved in the file, * reported by `profile.status`, and treated by its consumer as absent. Putting * `timezone: Mars/Olympus` into context would be the one behaviour worse than * dropping it, because the model would then act on it. */ export declare function renderOpenTierBlock(source: OpenTierProfileSource): string; /** Renders the block for the process's one owner profile. `''` when there is none. */ export type OpenTierBlockSource = () => string; /** * Register (or clear, with `null`) the process's open-tier block source. * * A process-level registration rather than a dependency threaded through every * prompt assembler, for two reasons. There is exactly ONE owner profile per * machine, it is the daemon's file, not a per-session or per-agent object, so * there is nothing for a parameter to disambiguate. And the alternative, adding * a field to the orchestrator context types, would mean a wide diff across * files three other rounds are editing right now, to carry a value that is the * same everywhere it would arrive. * * The gate on `profile.injectOpenTier` lives in whatever registers the source * (see `owner-profile/consumers.ts`), so switching it off leaves this returning * `''` and the prompt assemblers appending nothing. */ export declare function registerOpenTierContextBlock(source: OpenTierBlockSource | null): void; /** * The current block, or `''`. * * Called once per model invocation. With nothing registered, a surface with no * daemon, a test, a build where the profile is off, it is a null check and a * constant, which is what keeps this safe to call unconditionally from the hot * path of every turn. */ export declare function openTierContextBlock(): string; //# sourceMappingURL=context-block.d.ts.map