/** * SessionSummaryRef — the structured pointer a parent session sees when a * sub-session completes. Kernel-owned terminalization primitive: the only * producer is `SessionSummaryMaterializer.materialize` (see * `session/summary/materialize.ts`). See session-hierarchy.md §4.7 (shape) * and §8.1 (emission invariant). * * The `materializedBy: 'kernel'` literal field is load-bearing — combined * with the opaque {@link SummaryId} brand (mintable only by * `generateSummaryId`), it enforces at the type level that no agent or tool * can construct a valid `SessionSummaryRef`. `SessionStore.recordSummary` * only accepts `SessionSummaryRef & { materializedBy: 'kernel' }`, so even a * payload shaped correctly would fail the structural check. * * This is Convention #0 load-bearing: there is no "tool" path to emit a * summary; the parent agent sees only what the kernel seals. * * Runtime errors related to summary emission (`AgentSummaryTooLongError`, * `SessionAlreadySummarizedError`) are runtime and therefore live at * `session/summary/errors.ts` — they are NOT pure shapes. */ import type { SessionId, TenantId } from '../ids/index.js'; import type { SummaryId } from '../session/ids.js'; import type { DeliverableRef } from './deliverable.js'; /** * Max characters allowed for {@link SessionSummaryRef.agentSummary}. See * session-hierarchy.md §4.7 — the agent's narration is bounded to keep * parent prompts token-finite regardless of the child's transcript length. */ export declare const AGENT_SUMMARY_MAX_CHARS = 4000; export type SessionSummaryOutcomeStatus = 'succeeded' | 'partial' | 'failed'; export interface SessionSummaryOutcome { readonly status: SessionSummaryOutcomeStatus; /** Short human-readable one-liner. Optional per pattern doc §4.7. */ readonly verdict?: string; } export interface SessionSummaryKeyDecision { readonly at: Date; readonly summary: string; } /** * Structured completion pointer emitted by the kernel when a sub-session * terminalizes. See session-hierarchy.md §4.7 and §8.1. * * Readonly across the board — the record is immutable once sealed. */ export interface SessionSummaryRef { readonly id: SummaryId; readonly sessionRef: SessionId; readonly tenantId: TenantId; readonly outcome: SessionSummaryOutcome; readonly deliverables: readonly DeliverableRef[]; /** Agent's own narration; bounded to {@link AGENT_SUMMARY_MAX_CHARS}. */ readonly agentSummary: string; readonly keyDecisions: readonly SessionSummaryKeyDecision[]; /** When the summary was materialized. */ readonly at: Date; /** * Literal `'kernel'` — enforces kernel-only emission at the type level. * See the module header for the invariant rationale. */ readonly materializedBy: 'kernel'; } //# sourceMappingURL=ref.d.ts.map