export declare const receiptsPackage = "@runx/receipts"; export * from "./local-signing.js"; export * from "./outcome-resolution.js"; export declare const CONTROL_SCHEMA_REFS: { readonly scope_admission: "https://runx.ai/spec/scope-admission.schema.json"; }; import { type KeyObject } from "node:crypto"; import { type LocalKeyPair } from "./local-signing.js"; import type { OutcomeState, ReceiptOutcome } from "./outcome-resolution.js"; export interface ReceiptExecution { readonly status: "success" | "failure"; readonly exitCode: number | null; readonly signal: NodeJS.Signals | null; readonly durationMs: number; readonly errorMessage?: string; readonly metadata?: Readonly>; } export interface AuthReceiptMetadata { readonly auth: { readonly grant_id: string; readonly provider: string; readonly connection_id: string; readonly scopes: readonly string[]; }; } export interface AgentHookReceiptMetadata { readonly agent_hook: { readonly source_type: "agent-step" | "harness-hook"; readonly agent?: string; readonly hook?: string; readonly task?: string; readonly route?: string; readonly status: "success" | "failure"; }; } export interface ApprovalReceiptMetadata { readonly approval: { readonly gate_id: string; readonly gate_type: string; readonly decision: "approved" | "denied"; readonly reason: string; readonly summary?: Readonly>; }; } export interface RunnerReceiptMetadata { readonly runner: { readonly type?: string; readonly enforcement?: string; readonly attestation?: string; readonly provider?: string; readonly model?: string; readonly prompt_version?: string; readonly base_url?: string; }; } export type GovernedDisposition = "completed" | "needs_resolution" | "policy_denied" | "approval_required" | "observing"; export interface ReceiptSurfaceRef { readonly type: string; readonly uri: string; readonly label?: string; } export interface ReceiptInputContext { readonly source?: string; readonly snapshot?: unknown; readonly preview?: string; readonly bytes: number; readonly max_bytes: number; readonly truncated: boolean; readonly value_hash: string; } export interface InputContextCapture { readonly capture?: boolean; readonly source?: string; readonly max_bytes?: number; readonly snapshot?: unknown; } export interface ExecutionSemantics { readonly disposition?: GovernedDisposition; readonly outcome_state?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly input_context?: InputContextCapture; readonly surface_refs?: readonly ReceiptSurfaceRef[]; readonly evidence_refs?: readonly ReceiptSurfaceRef[]; } export interface BuildLocalReceiptOptions { readonly receiptId?: string; readonly skillName: string; readonly sourceType: string; readonly inputs: Readonly>; readonly stdout: string; readonly stderr: string; readonly execution: ReceiptExecution; readonly startedAt?: string; readonly completedAt?: string; readonly parentReceipt?: string; readonly contextFrom?: readonly string[]; readonly artifactIds?: readonly string[]; readonly disposition?: GovernedDisposition; readonly inputContext?: ReceiptInputContext; readonly outcomeState?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly surfaceRefs?: readonly ReceiptSurfaceRef[]; readonly evidenceRefs?: readonly ReceiptSurfaceRef[]; } export interface WriteLocalReceiptOptions extends BuildLocalReceiptOptions { readonly receiptDir: string; readonly runxHome?: string; } export interface ChainReceiptStep { readonly step_id: string; readonly attempt: number; readonly skill: string; readonly runner?: string; readonly status: "success" | "failure"; readonly receipt_id?: string; readonly parent_receipt?: string; readonly fanout_group?: string; readonly retry?: { readonly attempt: number; readonly max_attempts: number; readonly rule_fired: string; readonly idempotency_key_hash?: string; }; readonly context_from: readonly { readonly input: string; readonly from_step: string; readonly output: string; readonly receipt_id?: string; }[]; readonly governance?: ChainReceiptGovernance; readonly artifact_ids?: readonly string[]; readonly disposition?: GovernedDisposition; readonly input_context?: ReceiptInputContext; readonly outcome_state?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly surface_refs?: readonly ReceiptSurfaceRef[]; readonly evidence_refs?: readonly ReceiptSurfaceRef[]; } export interface ChainReceiptGovernance { readonly scope_admission?: { readonly status: "allow" | "deny"; readonly requested_scopes: readonly string[]; readonly granted_scopes: readonly string[]; readonly grant_id?: string; readonly reasons?: readonly string[]; readonly decision_summary?: string; }; } export interface ChainReceiptSyncPoint { readonly group_id: string; readonly strategy: "all" | "any" | "quorum"; readonly decision: "proceed" | "halt" | "pause" | "escalate"; readonly rule_fired: string; readonly reason: string; readonly branch_count: number; readonly success_count: number; readonly failure_count: number; readonly required_successes: number; readonly branch_receipts: readonly string[]; readonly gate?: Readonly>; } export interface BuildLocalChainReceiptOptions { readonly chainId: string; readonly chainName: string; readonly owner?: string; readonly status: "success" | "failure"; readonly inputs: Readonly>; readonly output: string; readonly steps: readonly ChainReceiptStep[]; readonly syncPoints?: readonly ChainReceiptSyncPoint[]; readonly startedAt?: string; readonly completedAt?: string; readonly durationMs: number; readonly errorMessage?: string; readonly disposition?: GovernedDisposition; readonly inputContext?: ReceiptInputContext; readonly outcomeState?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly surfaceRefs?: readonly ReceiptSurfaceRef[]; readonly evidenceRefs?: readonly ReceiptSurfaceRef[]; } export interface WriteLocalChainReceiptOptions extends BuildLocalChainReceiptOptions { readonly receiptDir: string; readonly runxHome?: string; } export type LocalReceipt = LocalSkillReceipt | LocalChainReceipt; export type ReceiptVerificationStatus = "verified" | "unverified" | "invalid"; export interface ReceiptVerification { readonly status: ReceiptVerificationStatus; readonly reason?: string; } export interface VerifiedLocalReceipt { readonly receipt: LocalReceipt; readonly verification: ReceiptVerification; } export interface LocalSkillReceipt { readonly schema_version: "runx.receipt.v1"; readonly id: string; readonly kind: "skill_execution"; readonly issuer: { readonly type: "local"; readonly kid: string; readonly public_key_sha256: string; }; readonly subject: { readonly skill_name: string; readonly source_type: string; }; readonly status: "success" | "failure"; readonly started_at?: string; readonly completed_at?: string; readonly duration_ms: number; readonly input_hash: string; readonly output_hash: string; readonly stderr_hash?: string; readonly context_from: readonly string[]; readonly parent_receipt?: string; readonly artifact_ids?: readonly string[]; readonly disposition?: GovernedDisposition; readonly input_context?: ReceiptInputContext; readonly outcome_state?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly surface_refs?: readonly ReceiptSurfaceRef[]; readonly evidence_refs?: readonly ReceiptSurfaceRef[]; readonly execution: { readonly exit_code: number | null; readonly signal: NodeJS.Signals | null; readonly error_hash?: string; }; readonly metadata?: Readonly>; readonly signature: { readonly alg: "Ed25519"; readonly value: string; }; } export interface LocalChainReceipt { readonly schema_version: "runx.receipt.v1"; readonly id: string; readonly kind: "chain_execution"; readonly issuer: { readonly type: "local"; readonly kid: string; readonly public_key_sha256: string; }; readonly subject: { readonly chain_name: string; readonly owner?: string; }; readonly status: "success" | "failure"; readonly started_at?: string; readonly completed_at?: string; readonly duration_ms: number; readonly input_hash: string; readonly output_hash: string; readonly error_hash?: string; readonly disposition?: GovernedDisposition; readonly input_context?: ReceiptInputContext; readonly outcome_state?: OutcomeState; readonly outcome?: ReceiptOutcome; readonly surface_refs?: readonly ReceiptSurfaceRef[]; readonly evidence_refs?: readonly ReceiptSurfaceRef[]; readonly steps: readonly ChainReceiptStep[]; readonly sync_points?: readonly ChainReceiptSyncPoint[]; readonly signature: { readonly alg: "Ed25519"; readonly value: string; }; } export declare function writeLocalReceipt(options: WriteLocalReceiptOptions): Promise; export declare function writeLocalChainReceipt(options: WriteLocalChainReceiptOptions): Promise; export declare function readLocalReceipt(receiptDir: string, id: string): Promise; export declare function readVerifiedLocalReceipt(receiptDir: string, id: string, runxHome?: string): Promise; export declare function listLocalReceipts(receiptDir: string): Promise; export declare function listVerifiedLocalReceipts(receiptDir: string, runxHome?: string): Promise; export declare function buildLocalReceipt(options: BuildLocalReceiptOptions, keyPair: LocalKeyPair): LocalSkillReceipt; export declare function buildLocalChainReceipt(options: BuildLocalChainReceiptOptions, keyPair: LocalKeyPair): LocalChainReceipt; export declare function verifyLocalReceipt(receipt: LocalReceipt, publicKey: KeyObject): boolean; export declare function hashStable(value: unknown): string; export declare function hashString(value: string): string; export declare function uniqueReceiptId(prefix: "rx" | "cx"): string; export declare function redactReceiptMetadata(value: Readonly>): Readonly>; export declare function redactReceiptValue(value: T): T; export declare function validateChainReceiptGovernance(value: ChainReceiptGovernance | undefined, label?: string): ChainReceiptGovernance | undefined; export declare function validateScopeAdmission(value: ChainReceiptGovernance["scope_admission"] | undefined, label?: string): ChainReceiptGovernance["scope_admission"] | undefined;