Schemas

Shared Zod schemas and TypeScript types for the consensus-tools monorepo.

Overview

@consensus-tools/schemas is the contract layer for the entire monorepo. It exports Zod schemas for runtime validation and TypeScript types for compile-time safety. Every other package depends on it, and it has zero internal dependencies.

Installation

pnpm add @consensus-tools/schemas

Quick start

Validate untrusted data at runtime using any exported Zod schema:

import { jobSchema, type Job } from "@consensus-tools/schemas";

const job: Job = jobSchema.parse(untrustedPayload); // throws ZodError on invalid data

Use TypeScript types alone (zero runtime cost) for typed function signatures:

import type { GuardDecision, JobStatus, HitlMode } from "@consensus-tools/schemas";

function handleDecision(d: GuardDecision): void {
  if (d === "BLOCK") { /* ... */ }
}

API reference

jobSchema

Validates a full job object including mode, status, constraints, and escrow policy.

import { jobSchema, type Job } from "@consensus-tools/schemas";

const job: Job = jobSchema.parse(untrustedPayload);

jobPostInputSchema / voteInputSchema

Validate API endpoint inputs. Each endpoint has a matching input schema.

import { jobPostInputSchema, voteInputSchema } from "@consensus-tools/schemas";

const body = jobPostInputSchema.parse(req.body);
const vote = voteInputSchema.parse(req.body);

consensusPolicyConfigSchema

Validates consensus policy configuration objects.

import { consensusPolicyConfigSchema, type ConsensusPolicyConfig } from "@consensus-tools/schemas";

const policy: ConsensusPolicyConfig = consensusPolicyConfigSchema.parse({
  type: "APPROVAL_VOTE",
  quorum: 3,
  minMargin: 0.6,
  approvalVote: { weightMode: "reputation", settlement: "staked" },
});

Available policy types: FIRST_SUBMISSION_WINS, HIGHEST_CONFIDENCE_SINGLE, APPROVAL_VOTE, OWNER_PICK, TOP_K_SPLIT, MAJORITY_VOTE, WEIGHTED_VOTE_SIMPLE, WEIGHTED_REPUTATION, TRUSTED_ARBITER.

guardEvaluateInputSchema / guardResultSchema

Validate guard evaluation inputs and results.

import { guardEvaluateInputSchema, guardResultSchema, type GuardResult } from "@consensus-tools/schemas";
import { parseHumanApprovalYesNo } from "@consensus-tools/schemas";

const input = guardEvaluateInputSchema.parse(raw);
const approved = parseHumanApprovalYesNo("yes"); // true

Examples

Exports reference

DomainSchemasTypes
PolicyconsensusPolicyTypeSchema, approvalVoteConfigSchema, consensusPolicyConfigSchema, slashingPolicySchemaConsensusPolicyType, ApprovalVoteConfig, ConsensusPolicyConfig, SlashingPolicy
JobjobModeSchema, jobStatusSchema, jobConstraintsSchema, escrowPolicySchema, jobSchemaJobMode, JobStatus, JobConstraints, EscrowPolicy, Job
SubmissionsubmissionStatusSchema, submissionSchemaSubmissionStatus, Submission
VotevoteTargetTypeSchema, voteSchemaVoteTargetType, Vote
ResolutionresolutionSchemaResolution
LedgerledgerEntryTypeSchema, ledgerEntrySchemaLedgerEntryType, LedgerEntry
GuardguardTypeSchema, guardDecisionSchema, guardVoteSchema, weightedGuardVoteSchema, guardPolicySchema, guardEvaluateInputSchema, guardResultSchemaMatching types + VoteTally
AgentagentKindSchema, agentStatusSchema, agentSchema, agentConfigSchemaAgentKind, AgentStatus, Agent, AgentConfig
ParticipantparticipantSubjectTypeSchema, participantStatusSchema, participantSchemaParticipantSubjectType, ParticipantStatus, Participant
WorkflowworkflowStatusSchema, workflowSchema, workflowRunSchema, cronScheduleSchemaWorkflowStatus, Workflow, WorkflowRun, CronSchedule
HITLhitlModeSchema, hitlStatusSchema, hitlApprovalSchema, humanDecisionSchemaHitlMode, HitlStatus, HitlApproval, HumanDecision
TelemetrytelemetryEventTypeSchema, telemetryEventSchema, traceSpanSchemaTelemetryEventType, TelemetryEvent, TraceSpan
ConfigconsensusToolsConfigSchemaConsensusToolsConfig
StoragestorageStateSchemaStorageState
CommonclaimStatusSchema, bidSchema, assignmentSchema, auditEventSchema, diagnosticEntrySchemaClaimStatus, Bid, Assignment, AuditEvent, DiagnosticEntry
InputsjobPostInputSchema, claimInputSchema, submitInputSchema, voteInputSchema, resolveInputSchemaMatching types
Policy AssignmentpolicyAssignmentSchema, consensusVoteSchemaPolicyAssignment, ConsensusVote
Resolver--ConsensusInput, ConsensusResult, PolicyResolver

Zero-cost types

All Zod schemas export a matching TypeScript type via z.infer. Import with type to avoid any runtime cost when you only need compile-time checking.