Files
openclaw/scripts/release-plan-contract.d.mts
2026-08-21 04:02:19 -07:00

62 lines
2.0 KiB
TypeScript

import type {
ReleaseValidationIntent,
ReleaseValidationProfile,
ReleaseValidationPurpose,
} from "./release-validation-intent.mjs";
export type ReleasePlanPurpose = ReleaseValidationPurpose;
export type ReleasePlan = {
schema: "openclaw.release-plan.v1";
release_id: string;
version: string;
tag: string | null;
candidate_sha: string;
target_context_ref: string;
purpose: ReleasePlanPurpose;
tooling: {
repository: "openclaw/openclaw";
workflow_path: ".github/workflows/full-release-validation.yml";
ref: string;
sha: string;
};
validation: {
intent: ReleaseValidationIntent;
profile: ReleaseValidationProfile;
soak: boolean;
allowed_groups: string[];
};
inventory: {
packages: Array<{ name: string; version: string; targets: Array<"clawhub" | "npm"> }>;
platforms: Array<{ id: string; source: string }>;
};
};
export type ReleasePlanLock = {
schema: "openclaw.release-plan-lock.v1";
digest: `sha256:${string}`;
plan: ReleasePlan;
};
export const RELEASE_PLAN_SCHEMA: "openclaw.release-plan.v1";
export const RELEASE_PLAN_LOCK_SCHEMA: "openclaw.release-plan-lock.v1";
export const RELEASE_PLAN_CANONICALIZATION: "ascii-sorted-compact-json-trailing-newline-v1";
export const RELEASE_PLAN_MAX_BYTES: number;
export function canonicalReleaseJson(value: unknown): string;
export function releaseCanonicalDigest(value: unknown): `sha256:${string}`;
export function parseCanonicalReleaseJson<T = unknown>(
text: string,
options?: {
label?: string;
maxBytes?: number;
validate?: (value: unknown) => T;
},
): T;
export function validateReleasePlan(value: unknown): ReleasePlan;
export function canonicalReleasePlanJson(value: unknown): string;
export function releasePlanDigest(value: unknown): `sha256:${string}`;
export function createReleasePlanLock(value: unknown): ReleasePlanLock;
export function validateReleasePlanLock(value: unknown): ReleasePlanLock;
export function canonicalReleasePlanLockJson(value: unknown): string;
export function parseReleasePlanLockJson(text: string): ReleasePlanLock;