UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

905 lines (904 loc) • 36.4 kB
import type { AssertAllKeysHandled } from "./ask-origin.js"; import { type StoreFidelity, type Checkpoint, type CheckpointFeature, type CheckpointGate, type PendingAction } from "./checkpoint-store.js"; /** * The closed set of reader-requirement words this engine knows. The first seven are the feature table's keys * (the features that raised the row format before it froze); then the row digest's scheme; then the members a feature * had carried beside the one its word now names, and the members added after the table, each a capability a reader * must have. Downstream reads them for display only (`CheckpointError.detail.requires`). */ export declare const REQUIREMENT_WORDS: readonly ["resource", "binding", "token", "orgAdmission", "f012", "realApproval", "face", "requirements_digest", "org_admission_inherited", "org_write_grant", "org_governed", "delegation_provenance", "skill_grants", "skill_card_binding", "hands_coordinates", "hands_home", "path_rule_anchors", "path_rule_installations", "permission_mode", "plan_mode_restore", "persisted_rule_mandate", "deployment_authored", "call_names", "write_face", "denial_limit_fallback", "leg_scope", "tool_ceiling", "tool_lists_judged", "own_tool_lists"]; export type RequirementWord = (typeof REQUIREMENT_WORDS)[number]; /** Runtime twin of {@link RequirementWord}. */ export declare function isRequirementWord(word: unknown): word is RequirementWord; /** Every feature that raised the format is a word (the baseline is the floor, `requirements` the frame). */ export type FeatureWordsAreRequirementWords = AssertAllKeysHandled<Exclude<Exclude<CheckpointFeature, "baseline" | "requirements">, RequirementWord>>; /** What one persisted member owes the reader. The row digest covers every member a decision reads — a word member * (a capability the reader must have) or a `digest` member (one every admitted reader already reads); a `mutable` * member is rewritten after the mint by the store's own transitions, so the static digest cannot hold it; an * `ignorable` member is shown and never decided. */ export type RequirementClass = { readonly word: RequirementWord; } | { readonly digest: "decision-read"; } | { readonly mutable: string; } | { readonly ignorable: string; } | { readonly members: RequirementTable; } | { readonly variants: { readonly [kind: string]: RequirementTable; }; }; export type RequirementTable = { readonly [key: string]: RequirementClass; }; /** A table over EVERY key of record `T` — a member left out is a compile error at the table. */ export type RequirementTableFor<T> = { readonly [K in keyof T]-?: RequirementClass; }; /** One table per variant of the discriminated union `U` — a new kind, or a new member of any variant, is a compile * error. Each variant's `kind` entry classifies the kind itself. */ export type RequirementVariantsFor<U extends { kind: string; }> = { readonly [K in U["kind"]]: RequirementTableFor<Extract<U, { kind: K; }>>; }; /** The words a table's entries carry, read off its literal type (nested records and variants walked). */ type WordsIn<C> = C extends { readonly word: infer W; } ? W : C extends { readonly members: infer M; } ? WordsOfTable<M> : C extends { readonly variants: infer V; } ? WordsOfTable<V[keyof V]> : never; type WordsOfTable<T> = T extends unknown ? { [K in keyof T]: WordsIn<T[K]>; }[keyof T] : never; export declare const INHERITED_GATE_REQUIREMENTS: { readonly ancestorRules: { readonly digest: "decision-read"; }; readonly shellGate: { readonly digest: "decision-read"; }; readonly permissionMode: { readonly word: "permission_mode"; }; readonly prePlanMode: { readonly word: "plan_mode_restore"; }; readonly admittedOrgScopes: { readonly word: "org_admission_inherited"; }; readonly ownAdmittedOrgScopes: { readonly word: "orgAdmission"; }; readonly ownAdmittedOrgWriteScope: { readonly word: "org_write_grant"; }; readonly orgAdmissionGoverned: { readonly word: "org_governed"; }; readonly pathRuleAnchors: { readonly word: "path_rule_anchors"; }; readonly pathRuleInstallations: { readonly word: "path_rule_installations"; }; readonly requiresParentConstraint: { readonly digest: "decision-read"; }; readonly parentConstraintCount: { readonly digest: "decision-read"; }; readonly constraintChain: { readonly word: "f012"; }; readonly constraintDigest: { readonly word: "f012"; }; }; export declare const CHECKPOINT_STATE_REQUIREMENTS: { readonly activeTools: { readonly digest: "decision-read"; }; readonly outputRef: { readonly digest: "decision-read"; }; readonly nestedStats: { readonly digest: "decision-read"; }; readonly readFileState: { readonly digest: "decision-read"; }; readonly readFace: { readonly word: "face"; }; readonly writeFace: { readonly word: "write_face"; }; readonly skillGrants: { readonly word: "skill_grants"; }; readonly reminderMark: { readonly digest: "decision-read"; }; readonly repairBundle: { readonly digest: "decision-read"; }; readonly workspaceHandle: { readonly digest: "decision-read"; }; readonly pendingSteerQueue: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly runningBackgroundTasks: { readonly digest: "decision-read"; }; readonly handsCwd: { readonly digest: "decision-read"; }; readonly handsRoot: { readonly word: "hands_coordinates"; }; readonly handsHome: { readonly word: "hands_home"; }; readonly activeWorktree: { readonly digest: "decision-read"; }; readonly inheritedGate: { readonly members: { readonly ancestorRules: { readonly digest: "decision-read"; }; readonly shellGate: { readonly digest: "decision-read"; }; readonly permissionMode: { readonly word: "permission_mode"; }; readonly prePlanMode: { readonly word: "plan_mode_restore"; }; readonly admittedOrgScopes: { readonly word: "org_admission_inherited"; }; readonly ownAdmittedOrgScopes: { readonly word: "orgAdmission"; }; readonly ownAdmittedOrgWriteScope: { readonly word: "org_write_grant"; }; readonly orgAdmissionGoverned: { readonly word: "org_governed"; }; readonly pathRuleAnchors: { readonly word: "path_rule_anchors"; }; readonly pathRuleInstallations: { readonly word: "path_rule_installations"; }; readonly requiresParentConstraint: { readonly digest: "decision-read"; }; readonly parentConstraintCount: { readonly digest: "decision-read"; }; readonly constraintChain: { readonly word: "f012"; }; readonly constraintDigest: { readonly word: "f012"; }; }; }; readonly announcedListings: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly gitAnnouncement: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly delegationProvenance: { readonly word: "delegation_provenance"; }; readonly isDelegatedChild: { readonly digest: "decision-read"; }; readonly placementRootSessionId: { readonly digest: "decision-read"; }; readonly externalContentTarget: { readonly digest: "decision-read"; }; readonly legScope: { readonly word: "leg_scope"; }; readonly toolCeiling: { readonly word: "tool_ceiling"; }; readonly toolListsJudged: { readonly word: "tool_lists_judged"; }; readonly ownToolLists: { readonly word: "own_tool_lists"; }; }; export declare const PENDING_ACTION_REQUIREMENTS: { readonly tool_approval: { readonly kind: { readonly word: "binding"; }; readonly toolCallId: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly args: { readonly digest: "decision-read"; }; readonly preview: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly previewWithheld: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly ruleOffers: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly ruleOffersAbsence: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly execCwd: { readonly digest: "decision-read"; }; readonly requiresRealApproval: { readonly digest: "decision-read"; }; readonly mandated: { readonly word: "persisted_rule_mandate"; }; readonly authoredBy: { readonly word: "deployment_authored"; }; readonly mandate: { readonly digest: "decision-read"; }; readonly denialLimitFallback: { readonly word: "denial_limit_fallback"; }; readonly classifierNoRuling: { readonly digest: "decision-read"; }; readonly origin: { readonly digest: "decision-read"; }; readonly askClass: { readonly digest: "decision-read"; }; readonly classes: { readonly digest: "decision-read"; }; readonly boundInputHash: { readonly digest: "decision-read"; }; readonly boundGrantDigest: { readonly word: "skill_card_binding"; }; readonly boundGrants: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly boundGrantAbsence: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly capabilityId: { readonly digest: "decision-read"; }; readonly contractId: { readonly digest: "decision-read"; }; readonly shapeDigest: { readonly digest: "decision-read"; }; readonly implementationRevision: { readonly digest: "decision-read"; }; readonly rosterDigest: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly family: { readonly digest: "decision-read"; }; readonly pathTarget: { readonly digest: "decision-read"; }; readonly names: { readonly word: "call_names"; }; readonly hasBidiControls: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly batchToolCallIds: { readonly digest: "decision-read"; }; readonly completedCallIds: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly resource_limit: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly review: { readonly kind: { readonly digest: "decision-read"; }; }; readonly plan_review: { readonly kind: { readonly word: "binding"; }; }; readonly task_done: { readonly kind: { readonly digest: "decision-read"; }; }; }; export type PendingRequirementsCoverEveryKind = AssertAllKeysHandled<Exclude<PendingAction["kind"], keyof typeof PENDING_ACTION_REQUIREMENTS>>; export declare const CHECKPOINT_GATE_REQUIREMENTS: { readonly human: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly approvalCard: { readonly digest: "decision-read"; }; readonly riskDescriptor: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly irreversible_ask: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly approvalCard: { readonly digest: "decision-read"; }; readonly safetyAxis: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly realApproval: { readonly word: "realApproval"; }; readonly riskDescriptor: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly resource_limit: { readonly kind: { readonly word: "resource"; }; readonly reason: { readonly digest: "decision-read"; }; readonly resumeAfterMs: { readonly digest: "decision-read"; }; }; readonly needs_review: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly plan_review: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly task_done: { readonly kind: { readonly digest: "decision-read"; }; }; }; export type GateRequirementsCoverEveryKind = AssertAllKeysHandled<Exclude<CheckpointGate["kind"], keyof typeof CHECKPOINT_GATE_REQUIREMENTS>>; /** The row itself: its frame, its two records and its pause pair. */ export declare const CHECKPOINT_REQUIREMENTS: { readonly token: { readonly digest: "decision-read"; }; readonly checkpointId: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly version: { readonly ignorable: "the format stamp itself"; }; readonly requires: { readonly ignorable: "the format stamp itself"; }; readonly requirementsDigest: { readonly word: "requirements_digest"; }; readonly scope: { readonly digest: "decision-read"; }; readonly sessionId: { readonly digest: "decision-read"; }; readonly leafId: { readonly digest: "decision-read"; }; readonly state: { readonly members: { readonly activeTools: { readonly digest: "decision-read"; }; readonly outputRef: { readonly digest: "decision-read"; }; readonly nestedStats: { readonly digest: "decision-read"; }; readonly readFileState: { readonly digest: "decision-read"; }; readonly readFace: { readonly word: "face"; }; readonly writeFace: { readonly word: "write_face"; }; readonly skillGrants: { readonly word: "skill_grants"; }; readonly reminderMark: { readonly digest: "decision-read"; }; readonly repairBundle: { readonly digest: "decision-read"; }; readonly workspaceHandle: { readonly digest: "decision-read"; }; readonly pendingSteerQueue: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly runningBackgroundTasks: { readonly digest: "decision-read"; }; readonly handsCwd: { readonly digest: "decision-read"; }; readonly handsRoot: { readonly word: "hands_coordinates"; }; readonly handsHome: { readonly word: "hands_home"; }; readonly activeWorktree: { readonly digest: "decision-read"; }; readonly inheritedGate: { readonly members: { readonly ancestorRules: { readonly digest: "decision-read"; }; readonly shellGate: { readonly digest: "decision-read"; }; readonly permissionMode: { readonly word: "permission_mode"; }; readonly prePlanMode: { readonly word: "plan_mode_restore"; }; readonly admittedOrgScopes: { readonly word: "org_admission_inherited"; }; readonly ownAdmittedOrgScopes: { readonly word: "orgAdmission"; }; readonly ownAdmittedOrgWriteScope: { readonly word: "org_write_grant"; }; readonly orgAdmissionGoverned: { readonly word: "org_governed"; }; readonly pathRuleAnchors: { readonly word: "path_rule_anchors"; }; readonly pathRuleInstallations: { readonly word: "path_rule_installations"; }; readonly requiresParentConstraint: { readonly digest: "decision-read"; }; readonly parentConstraintCount: { readonly digest: "decision-read"; }; readonly constraintChain: { readonly word: "f012"; }; readonly constraintDigest: { readonly word: "f012"; }; }; }; readonly announcedListings: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly gitAnnouncement: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly delegationProvenance: { readonly word: "delegation_provenance"; }; readonly isDelegatedChild: { readonly digest: "decision-read"; }; readonly placementRootSessionId: { readonly digest: "decision-read"; }; readonly externalContentTarget: { readonly digest: "decision-read"; }; readonly legScope: { readonly word: "leg_scope"; }; readonly toolCeiling: { readonly word: "tool_ceiling"; }; readonly toolListsJudged: { readonly word: "tool_lists_judged"; }; readonly ownToolLists: { readonly word: "own_tool_lists"; }; }; }; readonly resourceLedger: { readonly members: { readonly totalBudgetMicroUsd: { readonly digest: "decision-read"; }; readonly totalTokens: { readonly word: "token"; }; readonly spentMicroUsd: { readonly digest: "decision-read"; }; readonly spentTokens: { readonly digest: "decision-read"; }; readonly spentTurns: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly spentWalltimeMs: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly sliceCount: { readonly digest: "decision-read"; }; }; }; readonly deadline: { readonly digest: "decision-read"; }; readonly status: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly createdAt: { readonly digest: "decision-read"; }; readonly suspendCount: { readonly digest: "decision-read"; }; readonly suspendedAt: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly humanReview: { readonly digest: "decision-read"; }; readonly resolvedOutcome: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly reopenReason: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly rev: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly sourceTaskId: { readonly digest: "decision-read"; }; readonly principal: { readonly digest: "decision-read"; }; readonly durableApproval: { readonly digest: "decision-read"; }; readonly executionOutcome: { readonly mutable: "store state-machine member; integrity = CAS contract + kit, see #1580"; }; readonly executionAtMs: { readonly mutable: "the store's time stamp on the execution record: it changes after the mint and decides nothing"; }; readonly gate: { readonly variants: { readonly human: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly approvalCard: { readonly digest: "decision-read"; }; readonly riskDescriptor: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly irreversible_ask: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly approvalCard: { readonly digest: "decision-read"; }; readonly safetyAxis: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly realApproval: { readonly word: "realApproval"; }; readonly riskDescriptor: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly resource_limit: { readonly kind: { readonly word: "resource"; }; readonly reason: { readonly digest: "decision-read"; }; readonly resumeAfterMs: { readonly digest: "decision-read"; }; }; readonly needs_review: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly plan_review: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly task_done: { readonly kind: { readonly digest: "decision-read"; }; }; }; }; readonly pendingAction: { readonly variants: { readonly tool_approval: { readonly kind: { readonly word: "binding"; }; readonly toolCallId: { readonly digest: "decision-read"; }; readonly toolName: { readonly digest: "decision-read"; }; readonly args: { readonly digest: "decision-read"; }; readonly preview: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly previewWithheld: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly ruleOffers: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly ruleOffersAbsence: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly execCwd: { readonly digest: "decision-read"; }; readonly requiresRealApproval: { readonly digest: "decision-read"; }; readonly mandated: { readonly word: "persisted_rule_mandate"; }; readonly authoredBy: { readonly word: "deployment_authored"; }; readonly mandate: { readonly digest: "decision-read"; }; readonly denialLimitFallback: { readonly word: "denial_limit_fallback"; }; readonly classifierNoRuling: { readonly digest: "decision-read"; }; readonly origin: { readonly digest: "decision-read"; }; readonly askClass: { readonly digest: "decision-read"; }; readonly classes: { readonly digest: "decision-read"; }; readonly boundInputHash: { readonly digest: "decision-read"; }; readonly boundGrantDigest: { readonly word: "skill_card_binding"; }; readonly boundGrants: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly boundGrantAbsence: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly capabilityId: { readonly digest: "decision-read"; }; readonly contractId: { readonly digest: "decision-read"; }; readonly shapeDigest: { readonly digest: "decision-read"; }; readonly implementationRevision: { readonly digest: "decision-read"; }; readonly rosterDigest: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly family: { readonly digest: "decision-read"; }; readonly pathTarget: { readonly digest: "decision-read"; }; readonly names: { readonly word: "call_names"; }; readonly hasBidiControls: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; readonly batchToolCallIds: { readonly digest: "decision-read"; }; readonly completedCallIds: { readonly ignorable: "shown, never decided (card, listing, transcript or reported count): every read of the name renders, carries transcript or counts"; }; }; readonly resource_limit: { readonly kind: { readonly digest: "decision-read"; }; readonly reason: { readonly digest: "decision-read"; }; }; readonly review: { readonly kind: { readonly digest: "decision-read"; }; }; readonly plan_review: { readonly kind: { readonly word: "binding"; }; }; readonly task_done: { readonly kind: { readonly digest: "decision-read"; }; }; }; }; }; /** ONE word list: the closed set is exactly the words the tables carry — every table word is a member (each entry is * typed against the set) and every member is carried by some entry (this fence), both at compile time. */ export type RequirementWordsAreTheTablesWords = AssertAllKeysHandled<Exclude<RequirementWord, WordsOfTable<typeof CHECKPOINT_REQUIREMENTS>>>; /** The words a row's content carries — a word for every word member present on it — sorted, without repeats. * The ONE derivation: the mint writes it, the resume screen recomputes it. Total (a non-record reads as none). */ export declare function checkpointRequirementsFor(cp: Checkpoint): RequirementWord[]; /** A member a decision reads whose value the digest cannot encode: where it sits, and what it holds. */ export interface UnencodableMember { readonly path: string; readonly kind: "cycle" | "depth" | "function" | "symbol" | "unreadable" | "codec"; } /** Where a value holds something the row digest cannot encode, or `undefined` — the park mint asks this of the * arguments before any side effect, so such a call is refused before anything is paused. */ export declare function unencodableIn(value: unknown, path: string): UnencodableMember | undefined; /** The row digest: sha256 (hex) over the binding serializer's canonical form ({@link canonicalize}: type-tagged, * sorted keys) of every member a decision reads but the digest itself, keyed by path, each read through * {@link digestProjection}. Never a constant: a value it cannot encode throws {@link RowNotEncodable}. */ export declare function requirementsDigestOf(cp: Checkpoint): string; /** The one stamp: the row AS THE STORE AT `fidelity` HANDS IT BACK (the commit stamps with its store's declared * fidelity, and writes exactly the row returned here), with the frozen version, the row digest of that reading and * the words derived from it (the digest's word among them) — so a reader digests exactly what it read. A row that * store's codec or the digest cannot encode is returned WITHOUT a digest, so it fails its own judge — which the * commit asks before the write. */ export declare function stampCheckpointRequirements(row: Checkpoint, fidelity: StoreFidelity): Checkpoint; /** The row as the store at `fidelity` hands it back, judged — the commit's question before the write. */ export declare function judgeAsStored(cp: Checkpoint, fidelity: StoreFidelity): CheckpointRequirementsVerdict; /** The resume screen's reading of a row's requirement list. */ export type CheckpointRequirementsVerdict = { readonly kind: "ok"; } | { readonly kind: "lacking"; readonly words: readonly string[]; } | { readonly kind: "damaged"; readonly why: string; }; /** * Judge a row's requirement list and digest against this engine and against the row's content, before the claim. * - below v10: neither the list nor the digest may be present (no release of those versions wrote one); * - v10: the list must be an array of strings; a word this engine lacks ⇒ `lacking` (a newer row); the digest's word * must be declared (every v10 mint writes it); the words this engine knows must EQUAL the recomputed words; the * digest must EQUAL the recomputed digest — a lost member, a lost element, a changed value is damage. * Rows above v10 never reach it (the version ceiling refuses them first). Reads `requires` and the digest once each. */ export declare function judgeCheckpointRequirements(cp: Checkpoint): CheckpointRequirementsVerdict; export {};