markform 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
- import { t as runCli } from "./cli-D9w0Bp4J.mjs";
2
+ import { t as runCli } from "./cli-tpvFNqFY.mjs";
3
3
 
4
4
  export { runCli };
@@ -691,4 +691,4 @@ const MarkformFrontmatterSchema = z.object({
691
691
 
692
692
  //#endregion
693
693
  export { SetUrlListPatchSchema as $, MultiCheckboxStateSchema as A, WireToolResultSchema as At, ProgressSummarySchema as B, HarnessConfigSchema as C, ValidationIssueSchema as Ct, IssueReasonSchema as D, WireResponseFormatSchema as Dt, InspectResultSchema as E, WireRequestFormatSchema as Et, OptionIdSchema as F, SetCheckboxesPatchSchema as G, SessionFinalSchema as H, OptionSchema as I, SetNumberPatchSchema as J, SetDatePatchSchema as K, PatchSchema as L, MultiSelectValueSchema as M, YearValueSchema as Mt, NumberFieldSchema as N, IssueScopeSchema as O, WireResponseStepSchema as Ot, NumberValueSchema as P, SetTablePatchSchema as Q, ProgressCountsSchema as R, FormSchemaSchema as S, UrlValueSchema as St, InspectIssueSchema as T, WireFormatSchema as Tt, SessionTranscriptSchema as U, RunModeSchema as V, SessionTurnSchema as W, SetStringListPatchSchema as X, SetSingleSelectPatchSchema as Y, SetStringPatchSchema as Z, FieldKindSchema as _, TableRowResponseSchema as _t, CheckboxProgressCountsSchema as a, SingleSelectValueSchema as at, FieldSchema as b, UrlListFieldSchema as bt, CheckboxesValueSchema as c, StepResultSchema as ct, DateFieldSchema as d, StringListValueSchema as dt, SetUrlPatchSchema as et, DateValueSchema as f, StringValueSchema as ft, FieldGroupSchema as g, TableRowPatchSchema as gt, ExplicitCheckboxValueSchema as h, TableFieldSchema as ht, CheckboxModeSchema as i, SingleSelectFieldSchema as it, MultiSelectFieldSchema as j, YearFieldSchema as jt, MarkformFrontmatterSchema as k, WireToolCallSchema as kt, ClearFieldPatchSchema as l, StringFieldSchema as lt, DocumentationTagSchema as m, TableColumnSchema as mt, ApplyResultSchema as n, SeveritySchema as nt, CheckboxValueSchema as o, SourcePositionSchema as ot, DocumentationBlockSchema as p, StructureSummarySchema as pt, SetMultiSelectPatchSchema as q, CellResponseSchema as r, SimpleCheckboxStateSchema as rt, CheckboxesFieldSchema as s, SourceRangeSchema as st, AnswerStateSchema as t, SetYearPatchSchema as tt, ColumnTypeNameSchema as u, StringListFieldSchema as ut, FieldProgressSchema as v, TableValueSchema as vt, IdSchema as w, ValidatorRefSchema as wt, FieldValueSchema as x, UrlListValueSchema as xt, FieldResponseSchema as y, UrlFieldSchema as yt, ProgressStateSchema as z };
694
- //# sourceMappingURL=coreTypes-SDB3KRRJ.mjs.map
694
+ //# sourceMappingURL=coreTypes-CPKXf2dc.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"coreTypes-SDB3KRRJ.mjs","names":[],"sources":["../src/engine/coreTypes.ts"],"sourcesContent":["/**\n * Core types and Zod schemas for Markform.\n *\n * This module defines all TypeScript types and their corresponding Zod schemas\n * for forms, fields, values, validation, patches, and session transcripts.\n */\n\nimport { z } from 'zod';\n\n// =============================================================================\n// Basic Types\n// =============================================================================\n\n/** Form/group/field ID - globally unique within a document */\nexport type Id = string;\n\n/** Option ID - unique within its containing field */\nexport type OptionId = string;\n\n/** Qualified option reference - used in doc blocks and external references */\nexport type QualifiedOptionRef = `${Id}.${OptionId}`;\n\n/** Qualified column reference - used in table field references (e.g., \"team.name\") */\nexport type QualifiedColumnRef = `${Id}.${Id}`;\n\n/** Validator reference - simple ID or parameterized object */\nexport type ValidatorRef = string | { id: string; [key: string]: unknown };\n\n// =============================================================================\n// Answer State Types (markform-255)\n// =============================================================================\n\n/**\n * Answer state for a field.\n * What action was taken: no answer yet, answered, skipped, or aborted.\n */\nexport type AnswerState = 'unanswered' | 'answered' | 'skipped' | 'aborted';\n\n/**\n * Field response: combines answer state with optional value.\n * Used in responsesByFieldId for all fields.\n */\nexport interface FieldResponse {\n state: AnswerState;\n value?: FieldValue; // present only when state === 'answered'\n reason?: string; // present when state === 'skipped' or 'aborted'\n}\n\n// =============================================================================\n// Note Types (markform-205)\n// =============================================================================\n\n/** Unique note ID (implementation uses n1, n2, n3...) */\nexport type NoteId = string;\n\n/** Note attached to a field, group, or form */\nexport interface Note {\n id: NoteId;\n ref: Id; // target ID (field, group, or form)\n role: string; // who created (agent, user, ...)\n text: string; // markdown content\n}\n\n// =============================================================================\n// Checkbox Types\n// =============================================================================\n\n/** Multi-checkbox states (checkboxMode=\"multi\", default) - 5 states */\nexport type MultiCheckboxState = 'todo' | 'done' | 'incomplete' | 'active' | 'na';\n\n/** Simple checkbox states (checkboxMode=\"simple\") - 2 states, GFM-compatible */\nexport type SimpleCheckboxState = 'todo' | 'done';\n\n/** Explicit checkbox values (checkboxMode=\"explicit\") - requires yes/no answer */\nexport type ExplicitCheckboxValue = 'unfilled' | 'yes' | 'no';\n\n/** Union type for all checkbox values */\nexport type CheckboxValue = MultiCheckboxState | ExplicitCheckboxValue;\n\n/** Checkbox mode determines which states are valid */\nexport type CheckboxMode = 'multi' | 'simple' | 'explicit';\n\n/**\n * Controls how fill handles existing values for target role fields.\n * - 'continue': Skip fields that already have values (default)\n * - 'overwrite': Clear and re-fill all fields for the target role\n */\nexport type FillMode = 'continue' | 'overwrite';\n\n/**\n * Agent mode for fill operations.\n * - 'mock': Use mock agent (for testing, requires mock source file)\n * - 'live': Use live LLM agent (default, requires model)\n */\nexport type MockMode = 'mock' | 'live';\n\n/**\n * Controls whether a checkbox field acts as a blocking checkpoint.\n * - 'none': No blocking behavior (default)\n * - 'blocking': Fields after this cannot be filled until checkbox is complete\n */\nexport type ApprovalMode = 'none' | 'blocking';\n\n// =============================================================================\n// Field Kinds\n// =============================================================================\n\n/** Field kind discriminant */\nexport type FieldKind =\n | 'string'\n | 'number'\n | 'string_list'\n | 'checkboxes'\n | 'single_select'\n | 'multi_select'\n | 'url'\n | 'url_list'\n | 'date'\n | 'year'\n | 'table';\n\n// =============================================================================\n// Table Field Definitions\n// =============================================================================\n\n/** Base column type for table cells - simple types only */\nexport type ColumnTypeName = 'string' | 'number' | 'url' | 'date' | 'year';\n\n/**\n * Column type specification in attributes.\n * Can be a simple string or an object with required flag.\n */\nexport type ColumnTypeSpec = ColumnTypeName | { type: ColumnTypeName; required: boolean };\n\n/**\n * Column definition - derived from columnIds, columnLabels, columnTypes attributes.\n * After parsing, columns always have explicit required flag (default: false).\n */\nexport interface TableColumn {\n id: Id; // from columnIds array\n label: string; // from columnLabels array (defaults to id)\n type: ColumnTypeName; // from columnTypes array (defaults to 'string')\n required: boolean; // from columnTypes object or default false\n}\n\n/** Field priority level for issue scoring */\nexport type FieldPriorityLevel = 'high' | 'medium' | 'low';\n\n/** Base interface for all field kinds */\nexport interface FieldBase {\n id: Id;\n label: string;\n required: boolean; // explicit: parser defaults to false if not specified\n priority: FieldPriorityLevel; // explicit: parser defaults to 'medium' if not specified\n role: string; // explicit: parser defaults to AGENT_ROLE if not specified\n validate?: ValidatorRef[];\n /** Whether to include this field in report output. Default: true */\n report?: boolean;\n /** Hint text for empty field (text-entry fields only) */\n placeholder?: string;\n /** Example values (text-entry fields only) */\n examples?: string[];\n /** True for auto-generated implicit fields (e.g., 'checkboxes' for plan documents) */\n implicit?: boolean;\n /** Parallel batch identifier. Top-level fields only. */\n parallel?: string;\n /** Fill order. Lower values filled first. Default: 0. */\n order?: number;\n}\n\n// =============================================================================\n// Field Kind Categories\n// =============================================================================\n\n/** Field kinds that accept text entry (support placeholder/examples) */\nexport const TEXT_ENTRY_FIELD_KINDS = [\n 'string',\n 'number',\n 'string_list',\n 'url',\n 'url_list',\n] as const;\n\n/** Field kinds that are choosers (do NOT support placeholder/examples) */\nexport const CHOOSER_FIELD_KINDS = ['single_select', 'multi_select', 'checkboxes'] as const;\n\n/**\n * Check if a field kind accepts text entry (supports placeholder/examples).\n */\nexport function isTextEntryFieldKind(kind: FieldKind): boolean {\n return (TEXT_ENTRY_FIELD_KINDS as readonly string[]).includes(kind);\n}\n\n/** String field - single or multiline text */\nexport interface StringField extends FieldBase {\n kind: 'string';\n multiline?: boolean;\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n}\n\n/** Number field - numeric value with optional constraints */\nexport interface NumberField extends FieldBase {\n kind: 'number';\n min?: number;\n max?: number;\n integer?: boolean;\n}\n\n/** String list field - array of user-provided strings */\nexport interface StringListField extends FieldBase {\n kind: 'string_list';\n minItems?: number;\n maxItems?: number;\n itemMinLength?: number;\n itemMaxLength?: number;\n uniqueItems?: boolean;\n}\n\n/** Option in select/checkbox fields */\nexport interface Option {\n id: Id;\n label: string;\n}\n\n/** Checkboxes field - stateful checklist with configurable modes */\nexport interface CheckboxesField extends FieldBase {\n kind: 'checkboxes';\n checkboxMode: CheckboxMode; // explicit: parser defaults to 'multi' if not specified\n minDone?: number;\n options: Option[];\n approvalMode: ApprovalMode; // explicit: parser defaults to 'none' if not specified\n}\n\n/** Single-select field - exactly one option can be selected */\nexport interface SingleSelectField extends FieldBase {\n kind: 'single_select';\n options: Option[];\n}\n\n/** Multi-select field - multiple options can be selected */\nexport interface MultiSelectField extends FieldBase {\n kind: 'multi_select';\n options: Option[];\n minSelections?: number;\n maxSelections?: number;\n}\n\n/** URL field - single URL value with built-in format validation */\nexport interface UrlField extends FieldBase {\n kind: 'url';\n // No additional constraints - URL format validation is built-in\n}\n\n/** URL list field - multiple URLs (for citations, sources, references) */\nexport interface UrlListField extends FieldBase {\n kind: 'url_list';\n minItems?: number;\n maxItems?: number;\n uniqueItems?: boolean;\n}\n\n/** Date field - ISO 8601 date (YYYY-MM-DD) with optional min/max constraints */\nexport interface DateField extends FieldBase {\n kind: 'date';\n min?: string; // ISO 8601 date string (YYYY-MM-DD)\n max?: string; // ISO 8601 date string (YYYY-MM-DD)\n}\n\n/** Year field - integer year with optional min/max constraints */\nexport interface YearField extends FieldBase {\n kind: 'year';\n min?: number; // minimum year (inclusive)\n max?: number; // maximum year (inclusive)\n}\n\n/**\n * Table field - structured tabular data with typed columns.\n * Inherits all FieldBase properties including `report?: boolean`.\n */\nexport interface TableField extends FieldBase {\n kind: 'table';\n columns: TableColumn[]; // column definitions in order\n minRows?: number;\n maxRows?: number;\n}\n\n/** Union of all field kinds */\nexport type Field =\n | StringField\n | NumberField\n | StringListField\n | CheckboxesField\n | SingleSelectField\n | MultiSelectField\n | UrlField\n | UrlListField\n | DateField\n | YearField\n | TableField;\n\n// =============================================================================\n// Form Structure Types\n// =============================================================================\n\n/**\n * Field group: container for fields (nested groups deferred to future).\n */\nexport interface FieldGroup {\n id: Id;\n title?: string;\n validate?: ValidatorRef[];\n children: Field[];\n /** Whether to include this group in report output. Default: true */\n report?: boolean;\n /**\n * True if this group was implicitly created for fields placed directly\n * under the form (not wrapped in an explicit group).\n * Implicit groups are serialized without group wrapper tags.\n */\n implicit?: boolean;\n /** Parallel batch identifier. */\n parallel?: string;\n /** Fill order. Lower values filled first. Default: 0. */\n order?: number;\n}\n\n// =============================================================================\n// Execution Plan Types\n// =============================================================================\n\n/** An item in an execution plan (a top-level field or group). */\nexport interface ExecutionPlanItem {\n itemId: Id;\n itemType: 'field' | 'group';\n order: number;\n}\n\n/** A parallel batch: items that can execute concurrently. */\nexport interface ParallelBatch {\n batchId: string;\n items: ExecutionPlanItem[];\n}\n\n/** Execution plan: partitions form into loose-serial pool + parallel batches. */\nexport interface ExecutionPlan {\n looseSerial: ExecutionPlanItem[];\n parallelBatches: ParallelBatch[];\n /** Distinct order levels found in the form, sorted ascending. */\n orderLevels: number[];\n}\n\n/** Form schema - root container with groups */\nexport interface FormSchema {\n id: Id;\n title?: string;\n description?: string;\n groups: FieldGroup[];\n}\n\n// =============================================================================\n// Field Value Types\n// =============================================================================\n\n/** String field value */\nexport interface StringValue {\n kind: 'string';\n value: string | null;\n}\n\n/** Number field value */\nexport interface NumberValue {\n kind: 'number';\n value: number | null;\n}\n\n/** String list field value */\nexport interface StringListValue {\n kind: 'string_list';\n items: string[];\n}\n\n/** Checkboxes field value */\nexport interface CheckboxesValue {\n kind: 'checkboxes';\n values: Record<OptionId, CheckboxValue>;\n}\n\n/** Single-select field value */\nexport interface SingleSelectValue {\n kind: 'single_select';\n selected: OptionId | null;\n}\n\n/** Multi-select field value */\nexport interface MultiSelectValue {\n kind: 'multi_select';\n selected: OptionId[];\n}\n\n/** URL field value */\nexport interface UrlValue {\n kind: 'url';\n value: string | null; // null if empty, validated URL string otherwise\n}\n\n/** URL list field value */\nexport interface UrlListValue {\n kind: 'url_list';\n items: string[]; // Array of URL strings\n}\n\n/** Date field value */\nexport interface DateValue {\n kind: 'date';\n value: string | null; // ISO 8601 date string (YYYY-MM-DD) or null\n}\n\n/** Year field value */\nexport interface YearValue {\n kind: 'year';\n value: number | null; // integer year or null\n}\n\n/**\n * Cell value - scalar value only (never null).\n * Empty/skipped cells use %SKIP% sentinel, not null.\n */\nexport type CellValue = string | number;\n\n/**\n * Cell response - matches FieldResponse pattern.\n * Used in internal representation (ParsedForm).\n */\nexport interface CellResponse {\n state: 'answered' | 'skipped' | 'aborted'; // cells cannot be 'unanswered'\n value?: CellValue; // present when state === 'answered'\n reason?: string; // present when state === 'skipped' or 'aborted'\n}\n\n/** Table row response - each cell has a response (internal representation) */\nexport type TableRowResponse = Record<Id, CellResponse>;\n\n/** Table field value (internal representation) */\nexport interface TableValue {\n kind: 'table';\n rows: TableRowResponse[];\n}\n\n/** Union of all field value types */\nexport type FieldValue =\n | StringValue\n | NumberValue\n | StringListValue\n | CheckboxesValue\n | SingleSelectValue\n | MultiSelectValue\n | UrlValue\n | UrlListValue\n | DateValue\n | YearValue\n | TableValue;\n\n// =============================================================================\n// Documentation Block\n// =============================================================================\n\n/** Documentation tag type - determines the semantic purpose of the block */\nexport type DocumentationTag = 'description' | 'instructions' | 'documentation';\n\n/** Documentation block attached to form elements */\nexport interface DocumentationBlock {\n /** The semantic tag type: description, instructions, or documentation */\n tag: DocumentationTag;\n /** Reference to form/group/field ID or qualified option ref (fieldId.optionId) */\n ref: string;\n bodyMarkdown: string;\n /**\n * Whether to include this block in report output.\n * Default: false for 'instructions' tag, true for others.\n */\n report?: boolean;\n}\n\n// =============================================================================\n// Form Metadata (from frontmatter)\n// =============================================================================\n\n/**\n * Optional harness configuration from frontmatter.\n * Forms can specify default harness settings for fill operations.\n */\nexport interface FrontmatterHarnessConfig {\n maxTurns?: number;\n maxPatchesPerTurn?: number;\n maxIssuesPerTurn?: number;\n maxParallelAgents?: number;\n}\n\n/**\n * Run mode for the form - determines how 'markform run' executes.\n * - interactive: Launch interactive fill for user-role fields\n * - fill: Prompt for model, run agent fill\n * - research: Prompt for web-search model, run research fill\n */\nexport type RunMode = 'interactive' | 'fill' | 'research';\n\n/** Form-level metadata from YAML frontmatter, including role configuration */\nexport interface FormMetadata {\n markformVersion: string;\n roles: string[];\n roleInstructions: Record<string, string>;\n /** Optional harness configuration from frontmatter */\n harnessConfig?: FrontmatterHarnessConfig;\n /** How this form should be executed by 'markform run' */\n runMode?: RunMode;\n}\n\n// =============================================================================\n// Parsed Form\n// =============================================================================\n\n/** Node type for ID index entries - identifies what structural element an ID refers to */\nexport type NodeType = 'form' | 'group' | 'field' | 'option';\n\n/** ID index entry for fast lookup and validation */\nexport interface IdIndexEntry {\n nodeType: NodeType; // what this ID refers to\n parentId?: Id;\n fieldId?: Id;\n}\n\n/**\n * The syntax style used in a Markform document.\n * - 'comments': HTML comment syntax with f: namespace (`<!-- f:tag -->`) - primary/default\n * - 'tags': Traditional Markdoc Jinja-style syntax (`{% tag %}`)\n */\nexport type SyntaxStyle = 'comments' | 'tags';\n\n/**\n * Tag types that can appear in Markform documents for position tracking.\n * - 'form': The root form tag\n * - 'group': Field group tags\n * - 'field': Individual field tags (may include value fence)\n * - 'note': Inline note tags (`{% note %}`)\n * - 'documentation': Documentation block tags (instructions, description, etc.)\n */\nexport type TagType = 'form' | 'group' | 'field' | 'note' | 'documentation';\n\n/**\n * Position of a Markform tag region in the source document.\n * Used for splice-based serialization to preserve content outside tags.\n */\nexport interface TagRegion {\n /** ID of the element (form, group, field ID, or note ID) */\n tagId: Id;\n /** Type of Markform tag */\n tagType: TagType;\n /** Start position in rawSource (inclusive, byte offset) */\n startOffset: number;\n /** End position in rawSource (exclusive, byte offset) */\n endOffset: number;\n /**\n * For field tags: whether region includes value fence.\n * True if field has a value block between open/close tags.\n */\n includesValue?: boolean;\n}\n\n/** Canonical internal representation returned by parseForm() */\nexport interface ParsedForm {\n schema: FormSchema;\n responsesByFieldId: Record<Id, FieldResponse>; // replaces valuesByFieldId + skipsByFieldId\n notes: Note[]; // agent/user notes\n docs: DocumentationBlock[];\n orderIndex: Id[];\n idIndex: Map<Id, IdIndexEntry>;\n metadata?: FormMetadata; // optional for backward compat with forms without frontmatter\n /** The syntax style detected in the original document (for round-trip serialization) */\n syntaxStyle?: SyntaxStyle;\n\n // Raw source preservation for content-preserving serialization\n /**\n * Original markdown source (post-frontmatter, post-preprocessing for comment syntax).\n * Used for splice-based serialization to preserve content outside Markform tags.\n */\n rawSource?: string;\n /**\n * Positions of all Markform tags in rawSource.\n * Sorted by startOffset in document order.\n */\n tagRegions?: TagRegion[];\n}\n\n// =============================================================================\n// Validation Types\n// =============================================================================\n\n/** Validation issue severity */\nexport type Severity = 'error' | 'warning' | 'info';\n\n/** Source position for error locations */\nexport interface SourcePosition {\n line: number;\n col: number;\n}\n\n/** Source range for error locations */\nexport interface SourceRange {\n start: SourcePosition;\n end: SourcePosition;\n}\n\n/** Validation issue from the validation pipeline */\nexport interface ValidationIssue {\n severity: Severity;\n message: string;\n code?: string;\n ref?: Id;\n path?: string;\n range?: SourceRange;\n validatorId?: string;\n source: 'builtin' | 'code' | 'llm';\n}\n\n// =============================================================================\n// Error Types (markform-210)\n// =============================================================================\n\n/** Location information for error reporting */\nexport interface ErrorLocation {\n line?: number;\n column?: number;\n fieldId?: Id;\n noteId?: NoteId;\n}\n\n/** Markdown/Markdoc syntax error */\nexport interface ParseError {\n type: 'parse';\n message: string;\n location?: ErrorLocation;\n}\n\n/** Markform model consistency error */\nexport interface MarkformValidationError {\n type: 'validation';\n message: string;\n location?: ErrorLocation;\n}\n\n/** Union of all Markform error types */\nexport type MarkformError = ParseError | MarkformValidationError;\n\n// =============================================================================\n// Inspect Types\n// =============================================================================\n\n/** Standard reason codes for inspect issues */\nexport type IssueReason =\n | 'validation_error'\n | 'required_missing'\n | 'checkbox_incomplete'\n | 'min_items_not_met'\n | 'optional_unanswered';\n\n/** Issue scope - the level at which the issue applies */\nexport type IssueScope = 'form' | 'group' | 'field' | 'option' | 'column' | 'cell';\n\n/** Inspect issue - unified type for agent/UI consumption */\nexport interface InspectIssue {\n ref: string;\n scope: IssueScope;\n reason: IssueReason;\n message: string;\n severity: 'required' | 'recommended';\n priority: number;\n blockedBy?: Id; // if field is blocked by an incomplete blocking checkpoint\n}\n\n// =============================================================================\n// Summary Types\n// =============================================================================\n\n/** Structure summary - describes static form schema */\nexport interface StructureSummary {\n groupCount: number;\n fieldCount: number;\n optionCount: number;\n /** Count of table columns across all table fields */\n columnCount: number;\n fieldCountByKind: Record<FieldKind, number>;\n groupsById: Record<Id, 'field_group'>;\n fieldsById: Record<Id, FieldKind>;\n optionsById: Record<QualifiedOptionRef, { parentFieldId: Id; parentFieldKind: FieldKind }>;\n /** Map of qualified column refs to column metadata */\n columnsById: Record<QualifiedColumnRef, { parentFieldId: Id; columnType: ColumnTypeName }>;\n}\n\n/** Progress state for a field or form */\nexport type ProgressState = 'empty' | 'incomplete' | 'invalid' | 'complete';\n\n/** Checkbox progress counts */\nexport interface CheckboxProgressCounts {\n total: number;\n // Multi mode\n todo: number;\n done: number;\n incomplete: number;\n active: number;\n na: number;\n // Explicit mode\n unfilled: number;\n yes: number;\n no: number;\n}\n\n/**\n * Field progress tracking.\n * Uses orthogonal booleans instead of ProgressState enum.\n */\nexport interface FieldProgress {\n kind: FieldKind;\n required: boolean;\n answerState: AnswerState;\n hasNotes: boolean;\n noteCount: number;\n /** Whether the field has a value (answered, or has checkbox selections) */\n empty: boolean;\n /** Whether the field passes validation (no issues) */\n valid: boolean;\n issueCount: number;\n checkboxProgress?: CheckboxProgressCounts;\n}\n\n/**\n * Progress counts rollup with three orthogonal dimensions.\n */\nexport interface ProgressCounts {\n totalFields: number;\n requiredFields: number;\n\n // Dimension 1: AnswerState (mutually exclusive, sum to totalFields)\n unansweredFields: number;\n answeredFields: number;\n skippedFields: number;\n abortedFields: number;\n\n // Dimension 2: Validity (mutually exclusive, sum to totalFields)\n validFields: number;\n invalidFields: number;\n\n // Dimension 3: Value presence (mutually exclusive, sum to totalFields)\n emptyFields: number;\n filledFields: number;\n\n // Derived counts\n emptyRequiredFields: number;\n totalNotes: number;\n}\n\n/** Progress summary - tracks filling progress */\nexport interface ProgressSummary {\n counts: ProgressCounts;\n fields: Record<Id, FieldProgress>;\n}\n\n// =============================================================================\n// Inspect/Apply Result Types\n// =============================================================================\n\n/** Result from inspect operation */\nexport interface InspectResult {\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n isComplete: boolean;\n formState: ProgressState;\n}\n\n/** Details about a rejected patch */\nexport interface PatchRejection {\n patchIndex: number;\n message: string;\n /** Field ID if available (for type mismatch errors) */\n fieldId?: string;\n /** Field kind if available (for type mismatch errors) */\n fieldKind?: string;\n /** Column IDs if available (for table fields) */\n columnIds?: string[];\n}\n\n/** Coercion type for patch warnings */\nexport type PatchCoercionType =\n | 'string_to_list'\n | 'url_to_list'\n | 'option_to_array'\n | 'boolean_to_checkbox'\n | 'array_to_checkboxes';\n\n/** Warning for coerced patches */\nexport interface PatchWarning {\n patchIndex: number;\n fieldId: string;\n message: string;\n coercion: PatchCoercionType;\n}\n\n/** Status of patch application */\nexport type ApplyStatus = 'applied' | 'partial' | 'rejected';\n\n/** Result from apply operation */\nexport interface ApplyResult {\n applyStatus: ApplyStatus;\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n isComplete: boolean;\n formState: ProgressState;\n /** Patches that were successfully applied (normalized/coerced) */\n appliedPatches: Patch[];\n /** Empty on success, contains rejection details on failure */\n rejectedPatches: PatchRejection[];\n /** Warnings for patches that were coerced */\n warnings: PatchWarning[];\n}\n\n// =============================================================================\n// Patch Types\n// =============================================================================\n\n/** Set string field value */\nexport interface SetStringPatch {\n op: 'set_string';\n fieldId: Id;\n value: string | null;\n}\n\n/** Set number field value */\nexport interface SetNumberPatch {\n op: 'set_number';\n fieldId: Id;\n value: number | null;\n}\n\n/** Set string list field value */\nexport interface SetStringListPatch {\n op: 'set_string_list';\n fieldId: Id;\n value: string[];\n}\n\n/** Set checkboxes field value (merges with existing) */\nexport interface SetCheckboxesPatch {\n op: 'set_checkboxes';\n fieldId: Id;\n value: Record<OptionId, CheckboxValue>;\n}\n\n/** Set single-select field value */\nexport interface SetSingleSelectPatch {\n op: 'set_single_select';\n fieldId: Id;\n value: OptionId | null;\n}\n\n/** Set multi-select field value */\nexport interface SetMultiSelectPatch {\n op: 'set_multi_select';\n fieldId: Id;\n value: OptionId[];\n}\n\n/** Set URL field value */\nexport interface SetUrlPatch {\n op: 'set_url';\n fieldId: Id;\n value: string | null;\n}\n\n/** Set URL list field value */\nexport interface SetUrlListPatch {\n op: 'set_url_list';\n fieldId: Id;\n value: string[];\n}\n\n/** Set date field value */\nexport interface SetDatePatch {\n op: 'set_date';\n fieldId: Id;\n value: string | null; // ISO 8601 date string (YYYY-MM-DD) or null\n}\n\n/** Set year field value */\nexport interface SetYearPatch {\n op: 'set_year';\n fieldId: Id;\n value: number | null; // integer year or null\n}\n\n/**\n * Table row for patches - simplified format.\n * Values can be:\n * - Actual value (string/number)\n * - null to indicate %SKIP% (serialized as %SKIP% in markdown)\n * - \"%SKIP%\" or \"%ABORT%\" sentinel strings with optional reason\n */\nexport type TableRowPatch = Record<Id, CellValue | null | string>;\n\n/**\n * Set table field patch.\n * Uses simplified format where null values become %SKIP% on serialize.\n */\nexport interface SetTablePatch {\n op: 'set_table';\n fieldId: Id;\n value: TableRowPatch[];\n}\n\n/** Clear field value */\nexport interface ClearFieldPatch {\n op: 'clear_field';\n fieldId: Id;\n}\n\n/** Skip field - explicitly skip an optional field without providing a value */\nexport interface SkipFieldPatch {\n op: 'skip_field';\n fieldId: Id;\n role: string; // required: who is skipping\n reason?: string; // optional reason for skipping\n}\n\n/** Abort field - mark a field as unable to be completed */\nexport interface AbortFieldPatch {\n op: 'abort_field';\n fieldId: Id;\n role: string;\n reason?: string;\n}\n\n/** Add note - attach a note to a form element */\nexport interface AddNotePatch {\n op: 'add_note';\n ref: Id;\n role: string;\n text: string;\n}\n\n/** Remove note - remove a specific note by ID */\nexport interface RemoveNotePatch {\n op: 'remove_note';\n noteId: NoteId;\n}\n\n/** Union of all patch types */\nexport type Patch =\n | SetStringPatch\n | SetNumberPatch\n | SetStringListPatch\n | SetCheckboxesPatch\n | SetSingleSelectPatch\n | SetMultiSelectPatch\n | SetUrlPatch\n | SetUrlListPatch\n | SetDatePatch\n | SetYearPatch\n | SetTablePatch\n | ClearFieldPatch\n | SkipFieldPatch\n | AbortFieldPatch\n | AddNotePatch\n | RemoveNotePatch;\n\n// =============================================================================\n// Harness Types\n// =============================================================================\n\n/** Result from harness step */\nexport interface StepResult {\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n stepBudget: number;\n isComplete: boolean;\n turnNumber: number;\n /** Number of patches actually applied (set by harness.apply, undefined for step-only results) */\n patchesApplied?: number;\n /** Rejection details if patches failed (set by harness.apply, undefined for step-only results) */\n rejectedPatches?: PatchRejection[];\n}\n\n// =============================================================================\n// Session Transcript Types\n// =============================================================================\n\n/** Harness configuration */\nexport interface HarnessConfig {\n maxIssuesPerTurn: number;\n maxPatchesPerTurn: number;\n maxTurns: number;\n /** Maximum unique fields to include issues for per turn (undefined = unlimited) */\n maxFieldsPerTurn?: number;\n /** Maximum unique groups to include issues for per turn (undefined = unlimited) */\n maxGroupsPerTurn?: number;\n /** Target roles to fill (default: [AGENT_ROLE], '*' for all) */\n targetRoles?: string[];\n /** Fill mode: 'continue' (skip filled) or 'overwrite' (re-fill) */\n fillMode?: FillMode;\n /** Max concurrent agents for parallel batches (default: 4) */\n maxParallelAgents?: number;\n}\n\n/** LLM stats for a turn (from live agent) */\nexport interface SessionTurnStats {\n /** Input tokens for this turn */\n inputTokens?: number;\n /** Output tokens for this turn */\n outputTokens?: number;\n /** Tool calls made during this turn */\n toolCalls?: { name: string; count: number }[];\n}\n\n/** Context prompts sent to LLM (for session logging and debugging) */\nexport interface SessionTurnContext {\n /** System prompt with instructions */\n systemPrompt: string;\n /** Context prompt with issues and field schema */\n contextPrompt: string;\n}\n\n// =============================================================================\n// Wire Format Types (for comprehensive session logging)\n// =============================================================================\n\n/**\n * Tool call captured from LLM response step.\n * Omits toolCallId for stability (changes each run).\n */\nexport interface WireToolCall {\n /** Name of the tool that was called */\n toolName: string;\n /** Input passed to the tool */\n input: unknown;\n}\n\n/**\n * Tool result captured from LLM response step.\n * Omits toolCallId for stability (changes each run).\n */\nexport interface WireToolResult {\n /** Name of the tool that returned this result */\n toolName: string;\n /** Result returned by tool.execute() */\n result: unknown;\n}\n\n/**\n * A single step in the LLM response.\n * Corresponds to one iteration of the tool-calling loop.\n */\nexport interface WireResponseStep {\n /** Tool calls made in this step */\n toolCalls: WireToolCall[];\n /** Results returned by tools in this step */\n toolResults: WireToolResult[];\n /** Text output from the model in this step (null if none) */\n text: string | null;\n}\n\n/**\n * The request sent to the LLM via Vercel AI SDK generateText().\n */\nexport interface WireRequestFormat {\n /** System prompt with agent instructions */\n system: string;\n /** Context prompt with form state and issues */\n prompt: string;\n /** Tool definitions with descriptions and schemas */\n tools: Record<\n string,\n {\n /** Tool description shown to LLM */\n description: string;\n /** JSON Schema for tool input */\n inputSchema: unknown;\n }\n >;\n}\n\n/**\n * The response received from the LLM via Vercel AI SDK generateText().\n */\nexport interface WireResponseFormat {\n /** Steps in the tool-calling loop */\n steps: WireResponseStep[];\n /** Token usage for this call */\n usage: {\n inputTokens: number;\n outputTokens: number;\n };\n}\n\n/**\n * Complete wire format capturing the LLM request and response.\n *\n * This captures the exact data sent to and received from the LLM,\n * enabling comprehensive regression testing and prompt engineering visibility.\n *\n * Used in session logging to provide a \"transparent view\" of LLM interactions\n * that can be diffed to catch changes in prompts, schemas, or error messages.\n */\nexport interface WireFormat {\n /** The request sent to the LLM */\n request: WireRequestFormat;\n /** The response received from the LLM */\n response: WireResponseFormat;\n}\n\n/** Session turn - one iteration of the harness loop */\nexport interface SessionTurn {\n turn: number;\n inspect: {\n issues: InspectIssue[];\n };\n /** Context sent to LLM (prompts with field schema info) */\n context?: SessionTurnContext;\n apply: {\n patches: Patch[];\n /** Patches that were rejected (type mismatch, invalid field, etc.) */\n rejectedPatches?: PatchRejection[];\n /** Warnings for patches that were coerced (e.g., string → array) */\n warnings?: PatchWarning[];\n };\n after: {\n requiredIssueCount: number;\n markdownSha256: string;\n answeredFieldCount: number;\n skippedFieldCount: number;\n };\n /** LLM stats (only present for live agent sessions) */\n llm?: SessionTurnStats;\n /**\n * Complete wire format for comprehensive session logging.\n * Captures exact LLM request/response for regression testing.\n * Optional - only populated when wire format capture is enabled.\n */\n wire?: WireFormat;\n}\n\n/** Final session expectations */\nexport interface SessionFinal {\n expectComplete: boolean;\n expectedCompletedForm: string;\n}\n\n/** Session transcript for golden testing */\nexport interface SessionTranscript {\n sessionVersion: string;\n mode: MockMode;\n form: {\n path: string;\n };\n validators?: {\n code?: string;\n };\n mock?: {\n completedMock: string;\n };\n live?: {\n modelId: string;\n };\n harness: HarnessConfig;\n turns: SessionTurn[];\n final: SessionFinal;\n}\n\n// =============================================================================\n// Frontmatter Types\n// =============================================================================\n\n/** Markform frontmatter structure */\nexport interface MarkformFrontmatter {\n markformVersion: string;\n formSummary: StructureSummary;\n formProgress: ProgressSummary;\n formState: ProgressState;\n}\n\n// =============================================================================\n// Validator Types\n// =============================================================================\n\n/** Context passed to validator functions */\nexport interface ValidatorContext {\n schema: FormSchema;\n values: Record<Id, FieldValue>;\n targetId: Id;\n targetSchema: Field | FieldGroup | FormSchema;\n params: Record<string, unknown>;\n}\n\n/** Validator function signature */\nexport type ValidatorFn = (ctx: ValidatorContext) => ValidationIssue[];\n\n/** Validator registry from sidecar files */\nexport type ValidatorRegistry = Record<string, ValidatorFn>;\n\n// =============================================================================\n// Zod Schemas\n// =============================================================================\n\n// Basic schemas\nexport const IdSchema = z.string().min(1);\nexport const OptionIdSchema = z.string().min(1);\nexport const NoteIdSchema = z.string().min(1);\n\nexport const ValidatorRefSchema = z.union([z.string(), z.looseObject({ id: z.string() })]);\n\n// Answer state schema (markform-255)\nexport const AnswerStateSchema = z.enum(['unanswered', 'answered', 'skipped', 'aborted']);\n\n// Checkbox state schemas\nexport const MultiCheckboxStateSchema = z.enum(['todo', 'done', 'incomplete', 'active', 'na']);\n\nexport const SimpleCheckboxStateSchema = z.enum(['todo', 'done']);\n\nexport const ExplicitCheckboxValueSchema = z.enum(['unfilled', 'yes', 'no']);\n\nexport const CheckboxValueSchema = z.union([MultiCheckboxStateSchema, ExplicitCheckboxValueSchema]);\n\nexport const CheckboxModeSchema = z.enum(['multi', 'simple', 'explicit']);\n\nexport const FillModeSchema = z.enum(['continue', 'overwrite']);\n\nexport const MockModeSchema = z.enum(['mock', 'live']);\n\nexport const ApprovalModeSchema = z.enum(['none', 'blocking']);\n\n// Field kind schema\nexport const FieldKindSchema = z.enum([\n 'string',\n 'number',\n 'string_list',\n 'checkboxes',\n 'single_select',\n 'multi_select',\n 'url',\n 'url_list',\n 'date',\n 'year',\n 'table',\n]);\n\n// =============================================================================\n// Table Type Zod Schemas\n// =============================================================================\n\n/** Base column type name schema */\nexport const ColumnTypeNameSchema = z.enum(['string', 'number', 'url', 'date', 'year']);\n\n/**\n * Column type specification schema (for parsing attributes).\n * Either a simple type name or an object with type and required.\n */\nexport const ColumnTypeSpecSchema = z.union([\n ColumnTypeNameSchema,\n z.object({\n type: ColumnTypeNameSchema,\n required: z.boolean(),\n }),\n]);\n\n/**\n * Table column schema (normalized form after parsing).\n * Always has explicit required flag.\n */\nexport const TableColumnSchema = z.object({\n id: IdSchema,\n label: z.string(),\n type: ColumnTypeNameSchema,\n required: z.boolean(),\n});\n\n/** Cell value schema (never null - use sentinels for skipped) */\nexport const CellValueSchema = z.union([z.string(), z.number()]);\n\n/** Cell response schema */\nexport const CellResponseSchema = z.object({\n state: z.enum(['answered', 'skipped', 'aborted']),\n value: CellValueSchema.optional(),\n reason: z.string().optional(),\n});\n\n/** Table row response schema */\nexport const TableRowResponseSchema = z.record(IdSchema, CellResponseSchema);\n\n/** Table value schema */\nexport const TableValueSchema = z.object({\n kind: z.literal('table'),\n rows: z.array(TableRowResponseSchema),\n});\n\n/** Table row patch schema (simplified for patches) */\nexport const TableRowPatchSchema = z.record(\n IdSchema,\n z.union([CellValueSchema, z.null(), z.string()]), // null or sentinel string\n);\n\nexport const FieldPriorityLevelSchema = z.enum(['high', 'medium', 'low']);\n\n// Option schema\nexport const OptionSchema = z.object({\n id: IdSchema,\n label: z.string(),\n});\n\n// Field base schema (partial, used for extension)\n// NOTE: required, priority, and role are explicit (not optional) - parser assigns defaults\nconst FieldBaseSchemaPartial = {\n id: IdSchema,\n label: z.string(),\n required: z.boolean(),\n priority: FieldPriorityLevelSchema,\n role: z.string(),\n validate: z.array(ValidatorRefSchema).optional(),\n report: z.boolean().optional(),\n placeholder: z.string().optional(),\n examples: z.array(z.string()).optional(),\n parallel: z.string().optional(),\n order: z.number().optional(),\n};\n\n// Field schemas\nexport const StringFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('string'),\n multiline: z.boolean().optional(),\n pattern: z.string().optional(),\n minLength: z.number().int().nonnegative().optional(),\n maxLength: z.number().int().nonnegative().optional(),\n});\n\nexport const NumberFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('number'),\n min: z.number().optional(),\n max: z.number().optional(),\n integer: z.boolean().optional(),\n});\n\nexport const StringListFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('string_list'),\n minItems: z.number().int().nonnegative().optional(),\n maxItems: z.number().int().nonnegative().optional(),\n itemMinLength: z.number().int().nonnegative().optional(),\n itemMaxLength: z.number().int().nonnegative().optional(),\n uniqueItems: z.boolean().optional(),\n});\n\nexport const CheckboxesFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('checkboxes'),\n checkboxMode: CheckboxModeSchema, // explicit: parser defaults to 'multi'\n minDone: z.number().int().optional(),\n options: z.array(OptionSchema),\n approvalMode: ApprovalModeSchema, // explicit: parser defaults to 'none'\n});\n\nexport const SingleSelectFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('single_select'),\n options: z.array(OptionSchema),\n});\n\nexport const MultiSelectFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('multi_select'),\n options: z.array(OptionSchema),\n minSelections: z.number().int().nonnegative().optional(),\n maxSelections: z.number().int().nonnegative().optional(),\n});\n\nexport const UrlFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('url'),\n});\n\nexport const UrlListFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('url_list'),\n minItems: z.number().int().nonnegative().optional(),\n maxItems: z.number().int().nonnegative().optional(),\n uniqueItems: z.boolean().optional(),\n});\n\nexport const DateFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('date'),\n min: z.string().optional(), // ISO 8601 date string (YYYY-MM-DD)\n max: z.string().optional(), // ISO 8601 date string (YYYY-MM-DD)\n});\n\nexport const YearFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('year'),\n min: z.number().int().optional(), // minimum year\n max: z.number().int().optional(), // maximum year\n});\n\n/** Table field schema (extends FieldBase pattern) */\nexport const TableFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('table'),\n columns: z.array(TableColumnSchema),\n minRows: z.number().int().nonnegative().optional(),\n maxRows: z.number().int().positive().optional(),\n});\n\nexport const FieldSchema = z.discriminatedUnion('kind', [\n StringFieldSchema,\n NumberFieldSchema,\n StringListFieldSchema,\n CheckboxesFieldSchema,\n SingleSelectFieldSchema,\n MultiSelectFieldSchema,\n UrlFieldSchema,\n UrlListFieldSchema,\n DateFieldSchema,\n YearFieldSchema,\n TableFieldSchema,\n]);\n\n// Field group schema (no 'kind' property - reserved for Field/FieldValue types)\nexport const FieldGroupSchema = z.object({\n id: IdSchema,\n title: z.string().optional(),\n validate: z.array(ValidatorRefSchema).optional(),\n children: z.array(FieldSchema),\n parallel: z.string().optional(),\n order: z.number().optional(),\n});\n\n// Form schema\nexport const FormSchemaSchema = z.object({\n id: IdSchema,\n title: z.string().optional(),\n groups: z.array(FieldGroupSchema),\n});\n\n// Field value schemas\nexport const StringValueSchema = z.object({\n kind: z.literal('string'),\n value: z.string().nullable(),\n});\n\nexport const NumberValueSchema = z.object({\n kind: z.literal('number'),\n value: z.number().nullable(),\n});\n\nexport const StringListValueSchema = z.object({\n kind: z.literal('string_list'),\n items: z.array(z.string()),\n});\n\nexport const CheckboxesValueSchema = z.object({\n kind: z.literal('checkboxes'),\n values: z.record(OptionIdSchema, CheckboxValueSchema),\n});\n\nexport const SingleSelectValueSchema = z.object({\n kind: z.literal('single_select'),\n selected: OptionIdSchema.nullable(),\n});\n\nexport const MultiSelectValueSchema = z.object({\n kind: z.literal('multi_select'),\n selected: z.array(OptionIdSchema),\n});\n\nexport const UrlValueSchema = z.object({\n kind: z.literal('url'),\n value: z.string().nullable(),\n});\n\nexport const UrlListValueSchema = z.object({\n kind: z.literal('url_list'),\n items: z.array(z.string()),\n});\n\nexport const DateValueSchema = z.object({\n kind: z.literal('date'),\n value: z.string().nullable(), // ISO 8601 date string (YYYY-MM-DD) or null\n});\n\nexport const YearValueSchema = z.object({\n kind: z.literal('year'),\n value: z.number().int().nullable(), // integer year or null\n});\n\nexport const FieldValueSchema = z.discriminatedUnion('kind', [\n StringValueSchema,\n NumberValueSchema,\n StringListValueSchema,\n CheckboxesValueSchema,\n SingleSelectValueSchema,\n MultiSelectValueSchema,\n UrlValueSchema,\n UrlListValueSchema,\n DateValueSchema,\n YearValueSchema,\n TableValueSchema,\n]);\n\n// FieldResponse schema (markform-255)\nexport const FieldResponseSchema = z.object({\n state: AnswerStateSchema,\n value: FieldValueSchema.optional(),\n reason: z.string().optional(),\n});\n\n// Note schema (markform-205)\nexport const NoteSchema = z.object({\n id: NoteIdSchema,\n ref: IdSchema,\n role: z.string(),\n text: z.string(),\n});\n\n// Documentation block schema\nexport const DocumentationTagSchema = z.enum(['description', 'instructions', 'documentation']);\n\nexport const DocumentationBlockSchema = z.object({\n tag: DocumentationTagSchema,\n ref: z.string(),\n bodyMarkdown: z.string(),\n});\n\n// Frontmatter harness config schema\nexport const FrontmatterHarnessConfigSchema = z.object({\n maxTurns: z.number().int().positive().optional(),\n maxPatchesPerTurn: z.number().int().positive().optional(),\n maxIssuesPerTurn: z.number().int().positive().optional(),\n});\n\n// Run mode schema\nexport const RunModeSchema = z.enum(['interactive', 'fill', 'research']);\n\n// Form metadata schema\nexport const FormMetadataSchema = z.object({\n markformVersion: z.string(),\n roles: z.array(z.string()).min(1),\n roleInstructions: z.record(z.string(), z.string()),\n harnessConfig: FrontmatterHarnessConfigSchema.optional(),\n runMode: RunModeSchema.optional(),\n});\n\n// Validation schemas\nexport const SeveritySchema = z.enum(['error', 'warning', 'info']);\n\nexport const SourcePositionSchema = z.object({\n line: z.number().int().positive(),\n col: z.number().int().positive(),\n});\n\nexport const SourceRangeSchema = z.object({\n start: SourcePositionSchema,\n end: SourcePositionSchema,\n});\n\nexport const ValidationIssueSchema = z.object({\n severity: SeveritySchema,\n message: z.string(),\n code: z.string().optional(),\n ref: IdSchema.optional(),\n path: z.string().optional(),\n range: SourceRangeSchema.optional(),\n validatorId: z.string().optional(),\n source: z.enum(['builtin', 'code', 'llm']),\n});\n\n// Error location schema (markform-210)\nexport const ErrorLocationSchema = z.object({\n line: z.number().int().positive().optional(),\n column: z.number().int().positive().optional(),\n fieldId: IdSchema.optional(),\n noteId: NoteIdSchema.optional(),\n});\n\n// Error type schemas (markform-210)\nexport const ParseErrorSchema = z.object({\n type: z.literal('parse'),\n message: z.string(),\n location: ErrorLocationSchema.optional(),\n});\n\nexport const MarkformValidationErrorSchema = z.object({\n type: z.literal('validation'),\n message: z.string(),\n location: ErrorLocationSchema.optional(),\n});\n\nexport const MarkformErrorSchema = z.discriminatedUnion('type', [\n ParseErrorSchema,\n MarkformValidationErrorSchema,\n]);\n\n// Inspect issue schema\nexport const IssueReasonSchema = z.enum([\n 'validation_error',\n 'required_missing',\n 'checkbox_incomplete',\n 'min_items_not_met',\n 'optional_unanswered',\n]);\n\nexport const IssueScopeSchema = z.enum(['form', 'group', 'field', 'option', 'column', 'cell']);\n\nexport const InspectIssueSchema = z.object({\n ref: z.union([IdSchema, z.string()]), // Id or QualifiedOptionRef\n scope: IssueScopeSchema,\n reason: IssueReasonSchema,\n message: z.string(),\n severity: z.enum(['required', 'recommended']),\n priority: z.number().int().positive(),\n blockedBy: IdSchema.optional(),\n});\n\n// Summary schemas\nexport const ProgressStateSchema = z.enum(['empty', 'incomplete', 'invalid', 'complete']);\n\nexport const CheckboxProgressCountsSchema = z.object({\n total: z.number().int().nonnegative(),\n // Multi mode\n todo: z.number().int().nonnegative(),\n done: z.number().int().nonnegative(),\n incomplete: z.number().int().nonnegative(),\n active: z.number().int().nonnegative(),\n na: z.number().int().nonnegative(),\n // Explicit mode\n unfilled: z.number().int().nonnegative(),\n yes: z.number().int().nonnegative(),\n no: z.number().int().nonnegative(),\n});\n\nexport const FieldProgressSchema = z.object({\n kind: FieldKindSchema,\n required: z.boolean(),\n answerState: AnswerStateSchema,\n hasNotes: z.boolean(),\n noteCount: z.number().int().nonnegative(),\n empty: z.boolean(),\n valid: z.boolean(),\n issueCount: z.number().int().nonnegative(),\n checkboxProgress: CheckboxProgressCountsSchema.optional(),\n});\n\nexport const ProgressCountsSchema = z.object({\n totalFields: z.number().int().nonnegative(),\n requiredFields: z.number().int().nonnegative(),\n // Dimension 1: AnswerState (mutually exclusive, sum to totalFields)\n unansweredFields: z.number().int().nonnegative(),\n answeredFields: z.number().int().nonnegative(),\n skippedFields: z.number().int().nonnegative(),\n abortedFields: z.number().int().nonnegative(),\n // Dimension 2: Validity (mutually exclusive, sum to totalFields)\n validFields: z.number().int().nonnegative(),\n invalidFields: z.number().int().nonnegative(),\n // Dimension 3: Value presence (mutually exclusive, sum to totalFields)\n emptyFields: z.number().int().nonnegative(),\n filledFields: z.number().int().nonnegative(),\n // Derived counts\n emptyRequiredFields: z.number().int().nonnegative(),\n totalNotes: z.number().int().nonnegative(),\n});\n\nexport const ProgressSummarySchema = z.object({\n counts: ProgressCountsSchema,\n fields: z.record(IdSchema, FieldProgressSchema),\n});\n\nexport const StructureSummarySchema = z.object({\n groupCount: z.number().int().nonnegative(),\n fieldCount: z.number().int().nonnegative(),\n optionCount: z.number().int().nonnegative(),\n fieldCountByKind: z.record(FieldKindSchema, z.number().int().nonnegative()),\n groupsById: z.record(IdSchema, z.literal('field_group')),\n fieldsById: z.record(IdSchema, FieldKindSchema),\n optionsById: z.record(\n z.string(),\n z.object({\n parentFieldId: IdSchema,\n parentFieldKind: FieldKindSchema,\n }),\n ),\n});\n\n// Result schemas\nexport const InspectResultSchema = z.object({\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n isComplete: z.boolean(),\n formState: ProgressStateSchema,\n});\n\n// Patch rejection schema\nexport const PatchRejectionSchema = z.object({\n patchIndex: z.number().int().nonnegative(),\n message: z.string(),\n fieldId: z.string().optional(),\n fieldKind: z.string().optional(),\n columnIds: z.array(z.string()).optional(),\n});\n\n// Patch warning schemas\nexport const PatchCoercionTypeSchema = z.enum([\n 'string_to_list',\n 'url_to_list',\n 'option_to_array',\n 'boolean_to_checkbox',\n 'array_to_checkboxes',\n]);\n\nexport const PatchWarningSchema = z.object({\n patchIndex: z.number().int().nonnegative(),\n fieldId: z.string(),\n message: z.string(),\n coercion: PatchCoercionTypeSchema,\n});\n\nexport const ApplyStatusSchema = z.enum(['applied', 'partial', 'rejected']);\n\nexport const ApplyResultSchema = z.object({\n applyStatus: ApplyStatusSchema,\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n isComplete: z.boolean(),\n formState: ProgressStateSchema,\n appliedPatches: z.array(z.lazy(() => PatchSchema)),\n rejectedPatches: z.array(PatchRejectionSchema),\n warnings: z.array(PatchWarningSchema),\n});\n\n// Patch schemas\nexport const SetStringPatchSchema = z.object({\n op: z.literal('set_string'),\n fieldId: IdSchema,\n value: z.string().nullable(),\n});\n\nexport const SetNumberPatchSchema = z.object({\n op: z.literal('set_number'),\n fieldId: IdSchema,\n value: z.number().nullable(),\n});\n\nexport const SetStringListPatchSchema = z.object({\n op: z.literal('set_string_list'),\n fieldId: IdSchema,\n value: z.array(z.string()),\n});\n\nexport const SetCheckboxesPatchSchema = z.object({\n op: z.literal('set_checkboxes'),\n fieldId: IdSchema,\n value: z.record(OptionIdSchema, CheckboxValueSchema),\n});\n\nexport const SetSingleSelectPatchSchema = z.object({\n op: z.literal('set_single_select'),\n fieldId: IdSchema,\n value: OptionIdSchema.nullable(),\n});\n\nexport const SetMultiSelectPatchSchema = z.object({\n op: z.literal('set_multi_select'),\n fieldId: IdSchema,\n value: z.array(OptionIdSchema),\n});\n\nexport const SetUrlPatchSchema = z.object({\n op: z.literal('set_url'),\n fieldId: IdSchema,\n value: z.string().nullable(),\n});\n\nexport const SetUrlListPatchSchema = z.object({\n op: z.literal('set_url_list'),\n fieldId: IdSchema,\n value: z.array(z.string()),\n});\n\nexport const SetDatePatchSchema = z.object({\n op: z.literal('set_date'),\n fieldId: IdSchema,\n value: z.string().nullable(), // ISO 8601 date string (YYYY-MM-DD) or null\n});\n\nexport const SetYearPatchSchema = z.object({\n op: z.literal('set_year'),\n fieldId: IdSchema,\n value: z.number().int().nullable(), // integer year or null\n});\n\n/** Set table patch schema */\nexport const SetTablePatchSchema = z.object({\n op: z.literal('set_table'),\n fieldId: IdSchema,\n value: z.array(TableRowPatchSchema),\n});\n\nexport const ClearFieldPatchSchema = z.object({\n op: z.literal('clear_field'),\n fieldId: IdSchema,\n});\n\nexport const SkipFieldPatchSchema = z.object({\n op: z.literal('skip_field'),\n fieldId: IdSchema,\n role: z.string(),\n reason: z.string().optional(),\n});\n\nexport const AbortFieldPatchSchema = z.object({\n op: z.literal('abort_field'),\n fieldId: IdSchema,\n role: z.string(),\n reason: z.string().optional(),\n});\n\nexport const AddNotePatchSchema = z.object({\n op: z.literal('add_note'),\n ref: IdSchema,\n role: z.string(),\n text: z.string(),\n});\n\nexport const RemoveNotePatchSchema = z.object({\n op: z.literal('remove_note'),\n noteId: NoteIdSchema,\n});\n\nexport const PatchSchema = z.discriminatedUnion('op', [\n SetStringPatchSchema,\n SetNumberPatchSchema,\n SetStringListPatchSchema,\n SetCheckboxesPatchSchema,\n SetSingleSelectPatchSchema,\n SetMultiSelectPatchSchema,\n SetUrlPatchSchema,\n SetUrlListPatchSchema,\n SetDatePatchSchema,\n SetYearPatchSchema,\n SetTablePatchSchema,\n ClearFieldPatchSchema,\n SkipFieldPatchSchema,\n AbortFieldPatchSchema,\n AddNotePatchSchema,\n RemoveNotePatchSchema,\n]);\n\n// Harness schemas\nexport const StepResultSchema = z.object({\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n stepBudget: z.number().int().nonnegative(),\n isComplete: z.boolean(),\n turnNumber: z.number().int().positive(),\n});\n\n// Session transcript schemas\nexport const HarnessConfigSchema = z.object({\n maxIssuesPerTurn: z.number().int().positive(),\n maxPatchesPerTurn: z.number().int().positive(),\n maxTurns: z.number().int().positive(),\n maxFieldsPerTurn: z.number().int().positive().optional(),\n maxGroupsPerTurn: z.number().int().positive().optional(),\n targetRoles: z.array(z.string()).optional(),\n fillMode: FillModeSchema.optional(),\n maxParallelAgents: z.number().int().positive().optional(),\n});\n\nexport const SessionTurnStatsSchema = z.object({\n inputTokens: z.number().int().nonnegative().optional(),\n outputTokens: z.number().int().nonnegative().optional(),\n toolCalls: z\n .array(\n z.object({\n name: z.string(),\n count: z.number().int().positive(),\n }),\n )\n .optional(),\n});\n\nexport const SessionTurnContextSchema = z.object({\n systemPrompt: z.string(),\n contextPrompt: z.string(),\n});\n\n// Wire format Zod schemas for session logging\nexport const WireToolCallSchema = z.object({\n toolName: z.string(),\n input: z.unknown(),\n});\n\nexport const WireToolResultSchema = z.object({\n toolName: z.string(),\n result: z.unknown(),\n});\n\nexport const WireResponseStepSchema = z.object({\n toolCalls: z.array(WireToolCallSchema),\n toolResults: z.array(WireToolResultSchema),\n text: z.string().nullable(),\n});\n\nexport const WireRequestFormatSchema = z.object({\n system: z.string(),\n prompt: z.string(),\n tools: z.record(\n z.string(),\n z.object({\n description: z.string(),\n inputSchema: z.unknown(),\n }),\n ),\n});\n\nexport const WireResponseFormatSchema = z.object({\n steps: z.array(WireResponseStepSchema),\n usage: z.object({\n inputTokens: z.number().int().nonnegative(),\n outputTokens: z.number().int().nonnegative(),\n }),\n});\n\nexport const WireFormatSchema = z.object({\n request: WireRequestFormatSchema,\n response: WireResponseFormatSchema,\n});\n\nexport const SessionTurnSchema = z.object({\n turn: z.number().int().positive(),\n inspect: z.object({\n issues: z.array(InspectIssueSchema),\n }),\n context: SessionTurnContextSchema.optional(),\n apply: z.object({\n patches: z.array(PatchSchema),\n rejectedPatches: z.array(PatchRejectionSchema).optional(),\n warnings: z.array(PatchWarningSchema).optional(),\n }),\n after: z.object({\n requiredIssueCount: z.number().int().nonnegative(),\n markdownSha256: z.string(),\n answeredFieldCount: z.number().int().nonnegative(),\n skippedFieldCount: z.number().int().nonnegative(),\n }),\n llm: SessionTurnStatsSchema.optional(),\n wire: WireFormatSchema.optional(),\n});\n\nexport const SessionFinalSchema = z.object({\n expectComplete: z.boolean(),\n expectedCompletedForm: z.string(),\n});\n\nexport const SessionTranscriptSchema = z.object({\n sessionVersion: z.string(),\n mode: MockModeSchema,\n form: z.object({\n path: z.string(),\n }),\n validators: z\n .object({\n code: z.string().optional(),\n })\n .optional(),\n mock: z\n .object({\n completedMock: z.string(),\n })\n .optional(),\n live: z\n .object({\n modelId: z.string(),\n })\n .optional(),\n harness: HarnessConfigSchema,\n turns: z.array(SessionTurnSchema),\n final: SessionFinalSchema,\n});\n\n// Frontmatter schema\nexport const MarkformFrontmatterSchema = z.object({\n markformVersion: z.string(),\n formSummary: StructureSummarySchema,\n formProgress: ProgressSummarySchema,\n formState: ProgressStateSchema,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"coreTypes-CPKXf2dc.mjs","names":[],"sources":["../src/engine/coreTypes.ts"],"sourcesContent":["/**\n * Core types and Zod schemas for Markform.\n *\n * This module defines all TypeScript types and their corresponding Zod schemas\n * for forms, fields, values, validation, patches, and session transcripts.\n */\n\nimport { z } from 'zod';\n\n// =============================================================================\n// Basic Types\n// =============================================================================\n\n/** Form/group/field ID - globally unique within a document */\nexport type Id = string;\n\n/** Option ID - unique within its containing field */\nexport type OptionId = string;\n\n/** Qualified option reference - used in doc blocks and external references */\nexport type QualifiedOptionRef = `${Id}.${OptionId}`;\n\n/** Qualified column reference - used in table field references (e.g., \"team.name\") */\nexport type QualifiedColumnRef = `${Id}.${Id}`;\n\n/** Validator reference - simple ID or parameterized object */\nexport type ValidatorRef = string | { id: string; [key: string]: unknown };\n\n// =============================================================================\n// Answer State Types (markform-255)\n// =============================================================================\n\n/**\n * Answer state for a field.\n * What action was taken: no answer yet, answered, skipped, or aborted.\n */\nexport type AnswerState = 'unanswered' | 'answered' | 'skipped' | 'aborted';\n\n/**\n * Field response: combines answer state with optional value.\n * Used in responsesByFieldId for all fields.\n */\nexport interface FieldResponse {\n state: AnswerState;\n value?: FieldValue; // present only when state === 'answered'\n reason?: string; // present when state === 'skipped' or 'aborted'\n}\n\n// =============================================================================\n// Note Types (markform-205)\n// =============================================================================\n\n/** Unique note ID (implementation uses n1, n2, n3...) */\nexport type NoteId = string;\n\n/** Note attached to a field, group, or form */\nexport interface Note {\n id: NoteId;\n ref: Id; // target ID (field, group, or form)\n role: string; // who created (agent, user, ...)\n text: string; // markdown content\n}\n\n// =============================================================================\n// Checkbox Types\n// =============================================================================\n\n/** Multi-checkbox states (checkboxMode=\"multi\", default) - 5 states */\nexport type MultiCheckboxState = 'todo' | 'done' | 'incomplete' | 'active' | 'na';\n\n/** Simple checkbox states (checkboxMode=\"simple\") - 2 states, GFM-compatible */\nexport type SimpleCheckboxState = 'todo' | 'done';\n\n/** Explicit checkbox values (checkboxMode=\"explicit\") - requires yes/no answer */\nexport type ExplicitCheckboxValue = 'unfilled' | 'yes' | 'no';\n\n/** Union type for all checkbox values */\nexport type CheckboxValue = MultiCheckboxState | ExplicitCheckboxValue;\n\n/** Checkbox mode determines which states are valid */\nexport type CheckboxMode = 'multi' | 'simple' | 'explicit';\n\n/**\n * Controls how fill handles existing values for target role fields.\n * - 'continue': Skip fields that already have values (default)\n * - 'overwrite': Clear and re-fill all fields for the target role\n */\nexport type FillMode = 'continue' | 'overwrite';\n\n/**\n * Agent mode for fill operations.\n * - 'mock': Use mock agent (for testing, requires mock source file)\n * - 'live': Use live LLM agent (default, requires model)\n */\nexport type MockMode = 'mock' | 'live';\n\n/**\n * Controls whether a checkbox field acts as a blocking checkpoint.\n * - 'none': No blocking behavior (default)\n * - 'blocking': Fields after this cannot be filled until checkbox is complete\n */\nexport type ApprovalMode = 'none' | 'blocking';\n\n// =============================================================================\n// Field Kinds\n// =============================================================================\n\n/** Field kind discriminant */\nexport type FieldKind =\n | 'string'\n | 'number'\n | 'string_list'\n | 'checkboxes'\n | 'single_select'\n | 'multi_select'\n | 'url'\n | 'url_list'\n | 'date'\n | 'year'\n | 'table';\n\n// =============================================================================\n// Table Field Definitions\n// =============================================================================\n\n/** Base column type for table cells - simple types only */\nexport type ColumnTypeName = 'string' | 'number' | 'url' | 'date' | 'year';\n\n/**\n * Column type specification in attributes.\n * Can be a simple string or an object with required flag.\n */\nexport type ColumnTypeSpec = ColumnTypeName | { type: ColumnTypeName; required: boolean };\n\n/**\n * Column definition - derived from columnIds, columnLabels, columnTypes attributes.\n * After parsing, columns always have explicit required flag (default: false).\n */\nexport interface TableColumn {\n id: Id; // from columnIds array\n label: string; // from columnLabels array (defaults to id)\n type: ColumnTypeName; // from columnTypes array (defaults to 'string')\n required: boolean; // from columnTypes object or default false\n}\n\n/** Field priority level for issue scoring */\nexport type FieldPriorityLevel = 'high' | 'medium' | 'low';\n\n/** Base interface for all field kinds */\nexport interface FieldBase {\n id: Id;\n label: string;\n required: boolean; // explicit: parser defaults to false if not specified\n priority: FieldPriorityLevel; // explicit: parser defaults to 'medium' if not specified\n role: string; // explicit: parser defaults to AGENT_ROLE if not specified\n validate?: ValidatorRef[];\n /** Whether to include this field in report output. Default: true */\n report?: boolean;\n /** Hint text for empty field (text-entry fields only) */\n placeholder?: string;\n /** Example values (text-entry fields only) */\n examples?: string[];\n /** True for auto-generated implicit fields (e.g., 'checkboxes' for plan documents) */\n implicit?: boolean;\n /** Parallel batch identifier. Top-level fields only. */\n parallel?: string;\n /** Fill order. Lower values filled first. Default: 0. */\n order?: number;\n}\n\n// =============================================================================\n// Field Kind Categories\n// =============================================================================\n\n/** Field kinds that accept text entry (support placeholder/examples) */\nexport const TEXT_ENTRY_FIELD_KINDS = [\n 'string',\n 'number',\n 'string_list',\n 'url',\n 'url_list',\n] as const;\n\n/** Field kinds that are choosers (do NOT support placeholder/examples) */\nexport const CHOOSER_FIELD_KINDS = ['single_select', 'multi_select', 'checkboxes'] as const;\n\n/**\n * Check if a field kind accepts text entry (supports placeholder/examples).\n */\nexport function isTextEntryFieldKind(kind: FieldKind): boolean {\n return (TEXT_ENTRY_FIELD_KINDS as readonly string[]).includes(kind);\n}\n\n/** String field - single or multiline text */\nexport interface StringField extends FieldBase {\n kind: 'string';\n multiline?: boolean;\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n}\n\n/** Number field - numeric value with optional constraints */\nexport interface NumberField extends FieldBase {\n kind: 'number';\n min?: number;\n max?: number;\n integer?: boolean;\n}\n\n/** String list field - array of user-provided strings */\nexport interface StringListField extends FieldBase {\n kind: 'string_list';\n minItems?: number;\n maxItems?: number;\n itemMinLength?: number;\n itemMaxLength?: number;\n uniqueItems?: boolean;\n}\n\n/** Option in select/checkbox fields */\nexport interface Option {\n id: Id;\n label: string;\n}\n\n/** Checkboxes field - stateful checklist with configurable modes */\nexport interface CheckboxesField extends FieldBase {\n kind: 'checkboxes';\n checkboxMode: CheckboxMode; // explicit: parser defaults to 'multi' if not specified\n minDone?: number;\n options: Option[];\n approvalMode: ApprovalMode; // explicit: parser defaults to 'none' if not specified\n}\n\n/** Single-select field - exactly one option can be selected */\nexport interface SingleSelectField extends FieldBase {\n kind: 'single_select';\n options: Option[];\n}\n\n/** Multi-select field - multiple options can be selected */\nexport interface MultiSelectField extends FieldBase {\n kind: 'multi_select';\n options: Option[];\n minSelections?: number;\n maxSelections?: number;\n}\n\n/** URL field - single URL value with built-in format validation */\nexport interface UrlField extends FieldBase {\n kind: 'url';\n // No additional constraints - URL format validation is built-in\n}\n\n/** URL list field - multiple URLs (for citations, sources, references) */\nexport interface UrlListField extends FieldBase {\n kind: 'url_list';\n minItems?: number;\n maxItems?: number;\n uniqueItems?: boolean;\n}\n\n/** Date field - ISO 8601 date (YYYY-MM-DD) with optional min/max constraints */\nexport interface DateField extends FieldBase {\n kind: 'date';\n min?: string; // ISO 8601 date string (YYYY-MM-DD)\n max?: string; // ISO 8601 date string (YYYY-MM-DD)\n}\n\n/** Year field - integer year with optional min/max constraints */\nexport interface YearField extends FieldBase {\n kind: 'year';\n min?: number; // minimum year (inclusive)\n max?: number; // maximum year (inclusive)\n}\n\n/**\n * Table field - structured tabular data with typed columns.\n * Inherits all FieldBase properties including `report?: boolean`.\n */\nexport interface TableField extends FieldBase {\n kind: 'table';\n columns: TableColumn[]; // column definitions in order\n minRows?: number;\n maxRows?: number;\n}\n\n/** Union of all field kinds */\nexport type Field =\n | StringField\n | NumberField\n | StringListField\n | CheckboxesField\n | SingleSelectField\n | MultiSelectField\n | UrlField\n | UrlListField\n | DateField\n | YearField\n | TableField;\n\n// =============================================================================\n// Form Structure Types\n// =============================================================================\n\n/**\n * Field group: container for fields (nested groups deferred to future).\n */\nexport interface FieldGroup {\n id: Id;\n title?: string;\n validate?: ValidatorRef[];\n children: Field[];\n /** Whether to include this group in report output. Default: true */\n report?: boolean;\n /**\n * True if this group was implicitly created for fields placed directly\n * under the form (not wrapped in an explicit group).\n * Implicit groups are serialized without group wrapper tags.\n */\n implicit?: boolean;\n /** Parallel batch identifier. */\n parallel?: string;\n /** Fill order. Lower values filled first. Default: 0. */\n order?: number;\n}\n\n// =============================================================================\n// Execution Plan Types\n// =============================================================================\n\n/** An item in an execution plan (a top-level field or group). */\nexport interface ExecutionPlanItem {\n itemId: Id;\n itemType: 'field' | 'group';\n order: number;\n}\n\n/** A parallel batch: items that can execute concurrently. */\nexport interface ParallelBatch {\n batchId: string;\n items: ExecutionPlanItem[];\n}\n\n/** Execution plan: partitions form into loose-serial pool + parallel batches. */\nexport interface ExecutionPlan {\n looseSerial: ExecutionPlanItem[];\n parallelBatches: ParallelBatch[];\n /** Distinct order levels found in the form, sorted ascending. */\n orderLevels: number[];\n}\n\n/** Form schema - root container with groups */\nexport interface FormSchema {\n id: Id;\n title?: string;\n description?: string;\n groups: FieldGroup[];\n}\n\n// =============================================================================\n// Field Value Types\n// =============================================================================\n\n/** String field value */\nexport interface StringValue {\n kind: 'string';\n value: string | null;\n}\n\n/** Number field value */\nexport interface NumberValue {\n kind: 'number';\n value: number | null;\n}\n\n/** String list field value */\nexport interface StringListValue {\n kind: 'string_list';\n items: string[];\n}\n\n/** Checkboxes field value */\nexport interface CheckboxesValue {\n kind: 'checkboxes';\n values: Record<OptionId, CheckboxValue>;\n}\n\n/** Single-select field value */\nexport interface SingleSelectValue {\n kind: 'single_select';\n selected: OptionId | null;\n}\n\n/** Multi-select field value */\nexport interface MultiSelectValue {\n kind: 'multi_select';\n selected: OptionId[];\n}\n\n/** URL field value */\nexport interface UrlValue {\n kind: 'url';\n value: string | null; // null if empty, validated URL string otherwise\n}\n\n/** URL list field value */\nexport interface UrlListValue {\n kind: 'url_list';\n items: string[]; // Array of URL strings\n}\n\n/** Date field value */\nexport interface DateValue {\n kind: 'date';\n value: string | null; // ISO 8601 date string (YYYY-MM-DD) or null\n}\n\n/** Year field value */\nexport interface YearValue {\n kind: 'year';\n value: number | null; // integer year or null\n}\n\n/**\n * Cell value - scalar value only (never null).\n * Empty/skipped cells use %SKIP% sentinel, not null.\n */\nexport type CellValue = string | number;\n\n/**\n * Cell response - matches FieldResponse pattern.\n * Used in internal representation (ParsedForm).\n */\nexport interface CellResponse {\n state: 'answered' | 'skipped' | 'aborted'; // cells cannot be 'unanswered'\n value?: CellValue; // present when state === 'answered'\n reason?: string; // present when state === 'skipped' or 'aborted'\n}\n\n/** Table row response - each cell has a response (internal representation) */\nexport type TableRowResponse = Record<Id, CellResponse>;\n\n/** Table field value (internal representation) */\nexport interface TableValue {\n kind: 'table';\n rows: TableRowResponse[];\n}\n\n/** Union of all field value types */\nexport type FieldValue =\n | StringValue\n | NumberValue\n | StringListValue\n | CheckboxesValue\n | SingleSelectValue\n | MultiSelectValue\n | UrlValue\n | UrlListValue\n | DateValue\n | YearValue\n | TableValue;\n\n// =============================================================================\n// Documentation Block\n// =============================================================================\n\n/** Documentation tag type - determines the semantic purpose of the block */\nexport type DocumentationTag = 'description' | 'instructions' | 'documentation';\n\n/** Documentation block attached to form elements */\nexport interface DocumentationBlock {\n /** The semantic tag type: description, instructions, or documentation */\n tag: DocumentationTag;\n /** Reference to form/group/field ID or qualified option ref (fieldId.optionId) */\n ref: string;\n bodyMarkdown: string;\n /**\n * Whether to include this block in report output.\n * Default: false for 'instructions' tag, true for others.\n */\n report?: boolean;\n}\n\n// =============================================================================\n// Form Metadata (from frontmatter)\n// =============================================================================\n\n/**\n * Optional harness configuration from frontmatter.\n * Forms can specify default harness settings for fill operations.\n */\nexport interface FrontmatterHarnessConfig {\n maxTurns?: number;\n maxPatchesPerTurn?: number;\n maxIssuesPerTurn?: number;\n maxParallelAgents?: number;\n}\n\n/**\n * Run mode for the form - determines how 'markform run' executes.\n * - interactive: Launch interactive fill for user-role fields\n * - fill: Prompt for model, run agent fill\n * - research: Prompt for web-search model, run research fill\n */\nexport type RunMode = 'interactive' | 'fill' | 'research';\n\n/** Form-level metadata from YAML frontmatter, including role configuration */\nexport interface FormMetadata {\n markformVersion: string;\n roles: string[];\n roleInstructions: Record<string, string>;\n /** Optional harness configuration from frontmatter */\n harnessConfig?: FrontmatterHarnessConfig;\n /** How this form should be executed by 'markform run' */\n runMode?: RunMode;\n}\n\n// =============================================================================\n// Parsed Form\n// =============================================================================\n\n/** Node type for ID index entries - identifies what structural element an ID refers to */\nexport type NodeType = 'form' | 'group' | 'field' | 'option';\n\n/** ID index entry for fast lookup and validation */\nexport interface IdIndexEntry {\n nodeType: NodeType; // what this ID refers to\n parentId?: Id;\n fieldId?: Id;\n}\n\n/**\n * The syntax style used in a Markform document.\n * - 'comments': HTML comment syntax with f: namespace (`<!-- f:tag -->`) - primary/default\n * - 'tags': Traditional Markdoc Jinja-style syntax (`{% tag %}`)\n */\nexport type SyntaxStyle = 'comments' | 'tags';\n\n/**\n * Tag types that can appear in Markform documents for position tracking.\n * - 'form': The root form tag\n * - 'group': Field group tags\n * - 'field': Individual field tags (may include value fence)\n * - 'note': Inline note tags (`{% note %}`)\n * - 'documentation': Documentation block tags (instructions, description, etc.)\n */\nexport type TagType = 'form' | 'group' | 'field' | 'note' | 'documentation';\n\n/**\n * Position of a Markform tag region in the source document.\n * Used for splice-based serialization to preserve content outside tags.\n */\nexport interface TagRegion {\n /** ID of the element (form, group, field ID, or note ID) */\n tagId: Id;\n /** Type of Markform tag */\n tagType: TagType;\n /** Start position in rawSource (inclusive, byte offset) */\n startOffset: number;\n /** End position in rawSource (exclusive, byte offset) */\n endOffset: number;\n /**\n * For field tags: whether region includes value fence.\n * True if field has a value block between open/close tags.\n */\n includesValue?: boolean;\n}\n\n/** Canonical internal representation returned by parseForm() */\nexport interface ParsedForm {\n schema: FormSchema;\n responsesByFieldId: Record<Id, FieldResponse>; // replaces valuesByFieldId + skipsByFieldId\n notes: Note[]; // agent/user notes\n docs: DocumentationBlock[];\n orderIndex: Id[];\n idIndex: Map<Id, IdIndexEntry>;\n metadata?: FormMetadata; // optional for backward compat with forms without frontmatter\n /** The syntax style detected in the original document (for round-trip serialization) */\n syntaxStyle?: SyntaxStyle;\n\n // Raw source preservation for content-preserving serialization\n /**\n * Original markdown source (post-frontmatter, post-preprocessing for comment syntax).\n * Used for splice-based serialization to preserve content outside Markform tags.\n */\n rawSource?: string;\n /**\n * Positions of all Markform tags in rawSource.\n * Sorted by startOffset in document order.\n */\n tagRegions?: TagRegion[];\n}\n\n// =============================================================================\n// Validation Types\n// =============================================================================\n\n/** Validation issue severity */\nexport type Severity = 'error' | 'warning' | 'info';\n\n/** Source position for error locations */\nexport interface SourcePosition {\n line: number;\n col: number;\n}\n\n/** Source range for error locations */\nexport interface SourceRange {\n start: SourcePosition;\n end: SourcePosition;\n}\n\n/** Validation issue from the validation pipeline */\nexport interface ValidationIssue {\n severity: Severity;\n message: string;\n code?: string;\n ref?: Id;\n path?: string;\n range?: SourceRange;\n validatorId?: string;\n source: 'builtin' | 'code' | 'llm';\n}\n\n// =============================================================================\n// Error Types (markform-210)\n// =============================================================================\n\n/** Location information for error reporting */\nexport interface ErrorLocation {\n line?: number;\n column?: number;\n fieldId?: Id;\n noteId?: NoteId;\n}\n\n/** Markdown/Markdoc syntax error */\nexport interface ParseError {\n type: 'parse';\n message: string;\n location?: ErrorLocation;\n}\n\n/** Markform model consistency error */\nexport interface MarkformValidationError {\n type: 'validation';\n message: string;\n location?: ErrorLocation;\n}\n\n/** Union of all Markform error types */\nexport type MarkformError = ParseError | MarkformValidationError;\n\n// =============================================================================\n// Inspect Types\n// =============================================================================\n\n/** Standard reason codes for inspect issues */\nexport type IssueReason =\n | 'validation_error'\n | 'required_missing'\n | 'checkbox_incomplete'\n | 'min_items_not_met'\n | 'optional_unanswered';\n\n/** Issue scope - the level at which the issue applies */\nexport type IssueScope = 'form' | 'group' | 'field' | 'option' | 'column' | 'cell';\n\n/** Inspect issue - unified type for agent/UI consumption */\nexport interface InspectIssue {\n ref: string;\n scope: IssueScope;\n reason: IssueReason;\n message: string;\n severity: 'required' | 'recommended';\n priority: number;\n blockedBy?: Id; // if field is blocked by an incomplete blocking checkpoint\n}\n\n// =============================================================================\n// Summary Types\n// =============================================================================\n\n/** Structure summary - describes static form schema */\nexport interface StructureSummary {\n groupCount: number;\n fieldCount: number;\n optionCount: number;\n /** Count of table columns across all table fields */\n columnCount: number;\n fieldCountByKind: Record<FieldKind, number>;\n groupsById: Record<Id, 'field_group'>;\n fieldsById: Record<Id, FieldKind>;\n optionsById: Record<QualifiedOptionRef, { parentFieldId: Id; parentFieldKind: FieldKind }>;\n /** Map of qualified column refs to column metadata */\n columnsById: Record<QualifiedColumnRef, { parentFieldId: Id; columnType: ColumnTypeName }>;\n}\n\n/** Progress state for a field or form */\nexport type ProgressState = 'empty' | 'incomplete' | 'invalid' | 'complete';\n\n/** Checkbox progress counts */\nexport interface CheckboxProgressCounts {\n total: number;\n // Multi mode\n todo: number;\n done: number;\n incomplete: number;\n active: number;\n na: number;\n // Explicit mode\n unfilled: number;\n yes: number;\n no: number;\n}\n\n/**\n * Field progress tracking.\n * Uses orthogonal booleans instead of ProgressState enum.\n */\nexport interface FieldProgress {\n kind: FieldKind;\n required: boolean;\n answerState: AnswerState;\n hasNotes: boolean;\n noteCount: number;\n /** Whether the field has a value (answered, or has checkbox selections) */\n empty: boolean;\n /** Whether the field passes validation (no issues) */\n valid: boolean;\n issueCount: number;\n checkboxProgress?: CheckboxProgressCounts;\n}\n\n/**\n * Progress counts rollup with three orthogonal dimensions.\n */\nexport interface ProgressCounts {\n totalFields: number;\n requiredFields: number;\n\n // Dimension 1: AnswerState (mutually exclusive, sum to totalFields)\n unansweredFields: number;\n answeredFields: number;\n skippedFields: number;\n abortedFields: number;\n\n // Dimension 2: Validity (mutually exclusive, sum to totalFields)\n validFields: number;\n invalidFields: number;\n\n // Dimension 3: Value presence (mutually exclusive, sum to totalFields)\n emptyFields: number;\n filledFields: number;\n\n // Derived counts\n emptyRequiredFields: number;\n totalNotes: number;\n}\n\n/** Progress summary - tracks filling progress */\nexport interface ProgressSummary {\n counts: ProgressCounts;\n fields: Record<Id, FieldProgress>;\n}\n\n// =============================================================================\n// Inspect/Apply Result Types\n// =============================================================================\n\n/** Result from inspect operation */\nexport interface InspectResult {\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n isComplete: boolean;\n formState: ProgressState;\n}\n\n/** Details about a rejected patch */\nexport interface PatchRejection {\n patchIndex: number;\n message: string;\n /** Field ID if available (for type mismatch errors) */\n fieldId?: string;\n /** Field kind if available (for type mismatch errors) */\n fieldKind?: string;\n /** Column IDs if available (for table fields) */\n columnIds?: string[];\n}\n\n/** Coercion type for patch warnings */\nexport type PatchCoercionType =\n | 'string_to_list'\n | 'url_to_list'\n | 'option_to_array'\n | 'boolean_to_checkbox'\n | 'array_to_checkboxes';\n\n/** Warning for coerced patches */\nexport interface PatchWarning {\n patchIndex: number;\n fieldId: string;\n message: string;\n coercion: PatchCoercionType;\n}\n\n/** Status of patch application */\nexport type ApplyStatus = 'applied' | 'partial' | 'rejected';\n\n/** Result from apply operation */\nexport interface ApplyResult {\n applyStatus: ApplyStatus;\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n isComplete: boolean;\n formState: ProgressState;\n /** Patches that were successfully applied (normalized/coerced) */\n appliedPatches: Patch[];\n /** Empty on success, contains rejection details on failure */\n rejectedPatches: PatchRejection[];\n /** Warnings for patches that were coerced */\n warnings: PatchWarning[];\n}\n\n// =============================================================================\n// Patch Types\n// =============================================================================\n\n/** Set string field value */\nexport interface SetStringPatch {\n op: 'set_string';\n fieldId: Id;\n value: string | null;\n}\n\n/** Set number field value */\nexport interface SetNumberPatch {\n op: 'set_number';\n fieldId: Id;\n value: number | null;\n}\n\n/** Set string list field value */\nexport interface SetStringListPatch {\n op: 'set_string_list';\n fieldId: Id;\n value: string[];\n}\n\n/** Set checkboxes field value (merges with existing) */\nexport interface SetCheckboxesPatch {\n op: 'set_checkboxes';\n fieldId: Id;\n value: Record<OptionId, CheckboxValue>;\n}\n\n/** Set single-select field value */\nexport interface SetSingleSelectPatch {\n op: 'set_single_select';\n fieldId: Id;\n value: OptionId | null;\n}\n\n/** Set multi-select field value */\nexport interface SetMultiSelectPatch {\n op: 'set_multi_select';\n fieldId: Id;\n value: OptionId[];\n}\n\n/** Set URL field value */\nexport interface SetUrlPatch {\n op: 'set_url';\n fieldId: Id;\n value: string | null;\n}\n\n/** Set URL list field value */\nexport interface SetUrlListPatch {\n op: 'set_url_list';\n fieldId: Id;\n value: string[];\n}\n\n/** Set date field value */\nexport interface SetDatePatch {\n op: 'set_date';\n fieldId: Id;\n value: string | null; // ISO 8601 date string (YYYY-MM-DD) or null\n}\n\n/** Set year field value */\nexport interface SetYearPatch {\n op: 'set_year';\n fieldId: Id;\n value: number | null; // integer year or null\n}\n\n/**\n * Table row for patches - simplified format.\n * Values can be:\n * - Actual value (string/number)\n * - null to indicate %SKIP% (serialized as %SKIP% in markdown)\n * - \"%SKIP%\" or \"%ABORT%\" sentinel strings with optional reason\n */\nexport type TableRowPatch = Record<Id, CellValue | null | string>;\n\n/**\n * Set table field patch.\n * Uses simplified format where null values become %SKIP% on serialize.\n */\nexport interface SetTablePatch {\n op: 'set_table';\n fieldId: Id;\n value: TableRowPatch[];\n}\n\n/** Clear field value */\nexport interface ClearFieldPatch {\n op: 'clear_field';\n fieldId: Id;\n}\n\n/** Skip field - explicitly skip an optional field without providing a value */\nexport interface SkipFieldPatch {\n op: 'skip_field';\n fieldId: Id;\n role: string; // required: who is skipping\n reason?: string; // optional reason for skipping\n}\n\n/** Abort field - mark a field as unable to be completed */\nexport interface AbortFieldPatch {\n op: 'abort_field';\n fieldId: Id;\n role: string;\n reason?: string;\n}\n\n/** Add note - attach a note to a form element */\nexport interface AddNotePatch {\n op: 'add_note';\n ref: Id;\n role: string;\n text: string;\n}\n\n/** Remove note - remove a specific note by ID */\nexport interface RemoveNotePatch {\n op: 'remove_note';\n noteId: NoteId;\n}\n\n/** Union of all patch types */\nexport type Patch =\n | SetStringPatch\n | SetNumberPatch\n | SetStringListPatch\n | SetCheckboxesPatch\n | SetSingleSelectPatch\n | SetMultiSelectPatch\n | SetUrlPatch\n | SetUrlListPatch\n | SetDatePatch\n | SetYearPatch\n | SetTablePatch\n | ClearFieldPatch\n | SkipFieldPatch\n | AbortFieldPatch\n | AddNotePatch\n | RemoveNotePatch;\n\n// =============================================================================\n// Harness Types\n// =============================================================================\n\n/** Result from harness step */\nexport interface StepResult {\n structureSummary: StructureSummary;\n progressSummary: ProgressSummary;\n issues: InspectIssue[];\n stepBudget: number;\n isComplete: boolean;\n turnNumber: number;\n /** Number of patches actually applied (set by harness.apply, undefined for step-only results) */\n patchesApplied?: number;\n /** Rejection details if patches failed (set by harness.apply, undefined for step-only results) */\n rejectedPatches?: PatchRejection[];\n}\n\n// =============================================================================\n// Session Transcript Types\n// =============================================================================\n\n/** Harness configuration */\nexport interface HarnessConfig {\n maxIssuesPerTurn: number;\n maxPatchesPerTurn: number;\n maxTurns: number;\n /** Maximum unique fields to include issues for per turn (undefined = unlimited) */\n maxFieldsPerTurn?: number;\n /** Maximum unique groups to include issues for per turn (undefined = unlimited) */\n maxGroupsPerTurn?: number;\n /** Target roles to fill (default: [AGENT_ROLE], '*' for all) */\n targetRoles?: string[];\n /** Fill mode: 'continue' (skip filled) or 'overwrite' (re-fill) */\n fillMode?: FillMode;\n /** Max concurrent agents for parallel batches (default: 4) */\n maxParallelAgents?: number;\n}\n\n/** LLM stats for a turn (from live agent) */\nexport interface SessionTurnStats {\n /** Input tokens for this turn */\n inputTokens?: number;\n /** Output tokens for this turn */\n outputTokens?: number;\n /** Tool calls made during this turn */\n toolCalls?: { name: string; count: number }[];\n}\n\n/** Context prompts sent to LLM (for session logging and debugging) */\nexport interface SessionTurnContext {\n /** System prompt with instructions */\n systemPrompt: string;\n /** Context prompt with issues and field schema */\n contextPrompt: string;\n}\n\n// =============================================================================\n// Wire Format Types (for comprehensive session logging)\n// =============================================================================\n\n/**\n * Tool call captured from LLM response step.\n * Omits toolCallId for stability (changes each run).\n */\nexport interface WireToolCall {\n /** Name of the tool that was called */\n toolName: string;\n /** Input passed to the tool */\n input: unknown;\n}\n\n/**\n * Tool result captured from LLM response step.\n * Omits toolCallId for stability (changes each run).\n */\nexport interface WireToolResult {\n /** Name of the tool that returned this result */\n toolName: string;\n /** Result returned by tool.execute() */\n result: unknown;\n}\n\n/**\n * A single step in the LLM response.\n * Corresponds to one iteration of the tool-calling loop.\n */\nexport interface WireResponseStep {\n /** Tool calls made in this step */\n toolCalls: WireToolCall[];\n /** Results returned by tools in this step */\n toolResults: WireToolResult[];\n /** Text output from the model in this step (null if none) */\n text: string | null;\n}\n\n/**\n * The request sent to the LLM via Vercel AI SDK generateText().\n */\nexport interface WireRequestFormat {\n /** System prompt with agent instructions */\n system: string;\n /** Context prompt with form state and issues */\n prompt: string;\n /** Tool definitions with descriptions and schemas */\n tools: Record<\n string,\n {\n /** Tool description shown to LLM */\n description: string;\n /** JSON Schema for tool input */\n inputSchema: unknown;\n }\n >;\n}\n\n/**\n * The response received from the LLM via Vercel AI SDK generateText().\n */\nexport interface WireResponseFormat {\n /** Steps in the tool-calling loop */\n steps: WireResponseStep[];\n /** Token usage for this call */\n usage: {\n inputTokens: number;\n outputTokens: number;\n };\n}\n\n/**\n * Complete wire format capturing the LLM request and response.\n *\n * This captures the exact data sent to and received from the LLM,\n * enabling comprehensive regression testing and prompt engineering visibility.\n *\n * Used in session logging to provide a \"transparent view\" of LLM interactions\n * that can be diffed to catch changes in prompts, schemas, or error messages.\n */\nexport interface WireFormat {\n /** The request sent to the LLM */\n request: WireRequestFormat;\n /** The response received from the LLM */\n response: WireResponseFormat;\n}\n\n/** Session turn - one iteration of the harness loop */\nexport interface SessionTurn {\n turn: number;\n inspect: {\n issues: InspectIssue[];\n };\n /** Context sent to LLM (prompts with field schema info) */\n context?: SessionTurnContext;\n apply: {\n patches: Patch[];\n /** Patches that were rejected (type mismatch, invalid field, etc.) */\n rejectedPatches?: PatchRejection[];\n /** Warnings for patches that were coerced (e.g., string → array) */\n warnings?: PatchWarning[];\n };\n after: {\n requiredIssueCount: number;\n markdownSha256: string;\n answeredFieldCount: number;\n skippedFieldCount: number;\n };\n /** LLM stats (only present for live agent sessions) */\n llm?: SessionTurnStats;\n /**\n * Complete wire format for comprehensive session logging.\n * Captures exact LLM request/response for regression testing.\n * Optional - only populated when wire format capture is enabled.\n */\n wire?: WireFormat;\n}\n\n/** Final session expectations */\nexport interface SessionFinal {\n expectComplete: boolean;\n expectedCompletedForm: string;\n}\n\n/** Session transcript for golden testing */\nexport interface SessionTranscript {\n sessionVersion: string;\n mode: MockMode;\n form: {\n path: string;\n };\n validators?: {\n code?: string;\n };\n mock?: {\n completedMock: string;\n };\n live?: {\n modelId: string;\n };\n harness: HarnessConfig;\n turns: SessionTurn[];\n final: SessionFinal;\n}\n\n// =============================================================================\n// Frontmatter Types\n// =============================================================================\n\n/** Markform frontmatter structure */\nexport interface MarkformFrontmatter {\n markformVersion: string;\n formSummary: StructureSummary;\n formProgress: ProgressSummary;\n formState: ProgressState;\n}\n\n// =============================================================================\n// Validator Types\n// =============================================================================\n\n/** Context passed to validator functions */\nexport interface ValidatorContext {\n schema: FormSchema;\n values: Record<Id, FieldValue>;\n targetId: Id;\n targetSchema: Field | FieldGroup | FormSchema;\n params: Record<string, unknown>;\n}\n\n/** Validator function signature */\nexport type ValidatorFn = (ctx: ValidatorContext) => ValidationIssue[];\n\n/** Validator registry from sidecar files */\nexport type ValidatorRegistry = Record<string, ValidatorFn>;\n\n// =============================================================================\n// Zod Schemas\n// =============================================================================\n\n// Basic schemas\nexport const IdSchema = z.string().min(1);\nexport const OptionIdSchema = z.string().min(1);\nexport const NoteIdSchema = z.string().min(1);\n\nexport const ValidatorRefSchema = z.union([z.string(), z.looseObject({ id: z.string() })]);\n\n// Answer state schema (markform-255)\nexport const AnswerStateSchema = z.enum(['unanswered', 'answered', 'skipped', 'aborted']);\n\n// Checkbox state schemas\nexport const MultiCheckboxStateSchema = z.enum(['todo', 'done', 'incomplete', 'active', 'na']);\n\nexport const SimpleCheckboxStateSchema = z.enum(['todo', 'done']);\n\nexport const ExplicitCheckboxValueSchema = z.enum(['unfilled', 'yes', 'no']);\n\nexport const CheckboxValueSchema = z.union([MultiCheckboxStateSchema, ExplicitCheckboxValueSchema]);\n\nexport const CheckboxModeSchema = z.enum(['multi', 'simple', 'explicit']);\n\nexport const FillModeSchema = z.enum(['continue', 'overwrite']);\n\nexport const MockModeSchema = z.enum(['mock', 'live']);\n\nexport const ApprovalModeSchema = z.enum(['none', 'blocking']);\n\n// Field kind schema\nexport const FieldKindSchema = z.enum([\n 'string',\n 'number',\n 'string_list',\n 'checkboxes',\n 'single_select',\n 'multi_select',\n 'url',\n 'url_list',\n 'date',\n 'year',\n 'table',\n]);\n\n// =============================================================================\n// Table Type Zod Schemas\n// =============================================================================\n\n/** Base column type name schema */\nexport const ColumnTypeNameSchema = z.enum(['string', 'number', 'url', 'date', 'year']);\n\n/**\n * Column type specification schema (for parsing attributes).\n * Either a simple type name or an object with type and required.\n */\nexport const ColumnTypeSpecSchema = z.union([\n ColumnTypeNameSchema,\n z.object({\n type: ColumnTypeNameSchema,\n required: z.boolean(),\n }),\n]);\n\n/**\n * Table column schema (normalized form after parsing).\n * Always has explicit required flag.\n */\nexport const TableColumnSchema = z.object({\n id: IdSchema,\n label: z.string(),\n type: ColumnTypeNameSchema,\n required: z.boolean(),\n});\n\n/** Cell value schema (never null - use sentinels for skipped) */\nexport const CellValueSchema = z.union([z.string(), z.number()]);\n\n/** Cell response schema */\nexport const CellResponseSchema = z.object({\n state: z.enum(['answered', 'skipped', 'aborted']),\n value: CellValueSchema.optional(),\n reason: z.string().optional(),\n});\n\n/** Table row response schema */\nexport const TableRowResponseSchema = z.record(IdSchema, CellResponseSchema);\n\n/** Table value schema */\nexport const TableValueSchema = z.object({\n kind: z.literal('table'),\n rows: z.array(TableRowResponseSchema),\n});\n\n/** Table row patch schema (simplified for patches) */\nexport const TableRowPatchSchema = z.record(\n IdSchema,\n z.union([CellValueSchema, z.null(), z.string()]), // null or sentinel string\n);\n\nexport const FieldPriorityLevelSchema = z.enum(['high', 'medium', 'low']);\n\n// Option schema\nexport const OptionSchema = z.object({\n id: IdSchema,\n label: z.string(),\n});\n\n// Field base schema (partial, used for extension)\n// NOTE: required, priority, and role are explicit (not optional) - parser assigns defaults\nconst FieldBaseSchemaPartial = {\n id: IdSchema,\n label: z.string(),\n required: z.boolean(),\n priority: FieldPriorityLevelSchema,\n role: z.string(),\n validate: z.array(ValidatorRefSchema).optional(),\n report: z.boolean().optional(),\n placeholder: z.string().optional(),\n examples: z.array(z.string()).optional(),\n parallel: z.string().optional(),\n order: z.number().optional(),\n};\n\n// Field schemas\nexport const StringFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('string'),\n multiline: z.boolean().optional(),\n pattern: z.string().optional(),\n minLength: z.number().int().nonnegative().optional(),\n maxLength: z.number().int().nonnegative().optional(),\n});\n\nexport const NumberFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('number'),\n min: z.number().optional(),\n max: z.number().optional(),\n integer: z.boolean().optional(),\n});\n\nexport const StringListFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('string_list'),\n minItems: z.number().int().nonnegative().optional(),\n maxItems: z.number().int().nonnegative().optional(),\n itemMinLength: z.number().int().nonnegative().optional(),\n itemMaxLength: z.number().int().nonnegative().optional(),\n uniqueItems: z.boolean().optional(),\n});\n\nexport const CheckboxesFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('checkboxes'),\n checkboxMode: CheckboxModeSchema, // explicit: parser defaults to 'multi'\n minDone: z.number().int().optional(),\n options: z.array(OptionSchema),\n approvalMode: ApprovalModeSchema, // explicit: parser defaults to 'none'\n});\n\nexport const SingleSelectFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('single_select'),\n options: z.array(OptionSchema),\n});\n\nexport const MultiSelectFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('multi_select'),\n options: z.array(OptionSchema),\n minSelections: z.number().int().nonnegative().optional(),\n maxSelections: z.number().int().nonnegative().optional(),\n});\n\nexport const UrlFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('url'),\n});\n\nexport const UrlListFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('url_list'),\n minItems: z.number().int().nonnegative().optional(),\n maxItems: z.number().int().nonnegative().optional(),\n uniqueItems: z.boolean().optional(),\n});\n\nexport const DateFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('date'),\n min: z.string().optional(), // ISO 8601 date string (YYYY-MM-DD)\n max: z.string().optional(), // ISO 8601 date string (YYYY-MM-DD)\n});\n\nexport const YearFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('year'),\n min: z.number().int().optional(), // minimum year\n max: z.number().int().optional(), // maximum year\n});\n\n/** Table field schema (extends FieldBase pattern) */\nexport const TableFieldSchema = z.object({\n ...FieldBaseSchemaPartial,\n kind: z.literal('table'),\n columns: z.array(TableColumnSchema),\n minRows: z.number().int().nonnegative().optional(),\n maxRows: z.number().int().positive().optional(),\n});\n\nexport const FieldSchema = z.discriminatedUnion('kind', [\n StringFieldSchema,\n NumberFieldSchema,\n StringListFieldSchema,\n CheckboxesFieldSchema,\n SingleSelectFieldSchema,\n MultiSelectFieldSchema,\n UrlFieldSchema,\n UrlListFieldSchema,\n DateFieldSchema,\n YearFieldSchema,\n TableFieldSchema,\n]);\n\n// Field group schema (no 'kind' property - reserved for Field/FieldValue types)\nexport const FieldGroupSchema = z.object({\n id: IdSchema,\n title: z.string().optional(),\n validate: z.array(ValidatorRefSchema).optional(),\n children: z.array(FieldSchema),\n parallel: z.string().optional(),\n order: z.number().optional(),\n});\n\n// Form schema\nexport const FormSchemaSchema = z.object({\n id: IdSchema,\n title: z.string().optional(),\n groups: z.array(FieldGroupSchema),\n});\n\n// Field value schemas\nexport const StringValueSchema = z.object({\n kind: z.literal('string'),\n value: z.string().nullable(),\n});\n\nexport const NumberValueSchema = z.object({\n kind: z.literal('number'),\n value: z.number().nullable(),\n});\n\nexport const StringListValueSchema = z.object({\n kind: z.literal('string_list'),\n items: z.array(z.string()),\n});\n\nexport const CheckboxesValueSchema = z.object({\n kind: z.literal('checkboxes'),\n values: z.record(OptionIdSchema, CheckboxValueSchema),\n});\n\nexport const SingleSelectValueSchema = z.object({\n kind: z.literal('single_select'),\n selected: OptionIdSchema.nullable(),\n});\n\nexport const MultiSelectValueSchema = z.object({\n kind: z.literal('multi_select'),\n selected: z.array(OptionIdSchema),\n});\n\nexport const UrlValueSchema = z.object({\n kind: z.literal('url'),\n value: z.string().nullable(),\n});\n\nexport const UrlListValueSchema = z.object({\n kind: z.literal('url_list'),\n items: z.array(z.string()),\n});\n\nexport const DateValueSchema = z.object({\n kind: z.literal('date'),\n value: z.string().nullable(), // ISO 8601 date string (YYYY-MM-DD) or null\n});\n\nexport const YearValueSchema = z.object({\n kind: z.literal('year'),\n value: z.number().int().nullable(), // integer year or null\n});\n\nexport const FieldValueSchema = z.discriminatedUnion('kind', [\n StringValueSchema,\n NumberValueSchema,\n StringListValueSchema,\n CheckboxesValueSchema,\n SingleSelectValueSchema,\n MultiSelectValueSchema,\n UrlValueSchema,\n UrlListValueSchema,\n DateValueSchema,\n YearValueSchema,\n TableValueSchema,\n]);\n\n// FieldResponse schema (markform-255)\nexport const FieldResponseSchema = z.object({\n state: AnswerStateSchema,\n value: FieldValueSchema.optional(),\n reason: z.string().optional(),\n});\n\n// Note schema (markform-205)\nexport const NoteSchema = z.object({\n id: NoteIdSchema,\n ref: IdSchema,\n role: z.string(),\n text: z.string(),\n});\n\n// Documentation block schema\nexport const DocumentationTagSchema = z.enum(['description', 'instructions', 'documentation']);\n\nexport const DocumentationBlockSchema = z.object({\n tag: DocumentationTagSchema,\n ref: z.string(),\n bodyMarkdown: z.string(),\n});\n\n// Frontmatter harness config schema\nexport const FrontmatterHarnessConfigSchema = z.object({\n maxTurns: z.number().int().positive().optional(),\n maxPatchesPerTurn: z.number().int().positive().optional(),\n maxIssuesPerTurn: z.number().int().positive().optional(),\n});\n\n// Run mode schema\nexport const RunModeSchema = z.enum(['interactive', 'fill', 'research']);\n\n// Form metadata schema\nexport const FormMetadataSchema = z.object({\n markformVersion: z.string(),\n roles: z.array(z.string()).min(1),\n roleInstructions: z.record(z.string(), z.string()),\n harnessConfig: FrontmatterHarnessConfigSchema.optional(),\n runMode: RunModeSchema.optional(),\n});\n\n// Validation schemas\nexport const SeveritySchema = z.enum(['error', 'warning', 'info']);\n\nexport const SourcePositionSchema = z.object({\n line: z.number().int().positive(),\n col: z.number().int().positive(),\n});\n\nexport const SourceRangeSchema = z.object({\n start: SourcePositionSchema,\n end: SourcePositionSchema,\n});\n\nexport const ValidationIssueSchema = z.object({\n severity: SeveritySchema,\n message: z.string(),\n code: z.string().optional(),\n ref: IdSchema.optional(),\n path: z.string().optional(),\n range: SourceRangeSchema.optional(),\n validatorId: z.string().optional(),\n source: z.enum(['builtin', 'code', 'llm']),\n});\n\n// Error location schema (markform-210)\nexport const ErrorLocationSchema = z.object({\n line: z.number().int().positive().optional(),\n column: z.number().int().positive().optional(),\n fieldId: IdSchema.optional(),\n noteId: NoteIdSchema.optional(),\n});\n\n// Error type schemas (markform-210)\nexport const ParseErrorSchema = z.object({\n type: z.literal('parse'),\n message: z.string(),\n location: ErrorLocationSchema.optional(),\n});\n\nexport const MarkformValidationErrorSchema = z.object({\n type: z.literal('validation'),\n message: z.string(),\n location: ErrorLocationSchema.optional(),\n});\n\nexport const MarkformErrorSchema = z.discriminatedUnion('type', [\n ParseErrorSchema,\n MarkformValidationErrorSchema,\n]);\n\n// Inspect issue schema\nexport const IssueReasonSchema = z.enum([\n 'validation_error',\n 'required_missing',\n 'checkbox_incomplete',\n 'min_items_not_met',\n 'optional_unanswered',\n]);\n\nexport const IssueScopeSchema = z.enum(['form', 'group', 'field', 'option', 'column', 'cell']);\n\nexport const InspectIssueSchema = z.object({\n ref: z.union([IdSchema, z.string()]), // Id or QualifiedOptionRef\n scope: IssueScopeSchema,\n reason: IssueReasonSchema,\n message: z.string(),\n severity: z.enum(['required', 'recommended']),\n priority: z.number().int().positive(),\n blockedBy: IdSchema.optional(),\n});\n\n// Summary schemas\nexport const ProgressStateSchema = z.enum(['empty', 'incomplete', 'invalid', 'complete']);\n\nexport const CheckboxProgressCountsSchema = z.object({\n total: z.number().int().nonnegative(),\n // Multi mode\n todo: z.number().int().nonnegative(),\n done: z.number().int().nonnegative(),\n incomplete: z.number().int().nonnegative(),\n active: z.number().int().nonnegative(),\n na: z.number().int().nonnegative(),\n // Explicit mode\n unfilled: z.number().int().nonnegative(),\n yes: z.number().int().nonnegative(),\n no: z.number().int().nonnegative(),\n});\n\nexport const FieldProgressSchema = z.object({\n kind: FieldKindSchema,\n required: z.boolean(),\n answerState: AnswerStateSchema,\n hasNotes: z.boolean(),\n noteCount: z.number().int().nonnegative(),\n empty: z.boolean(),\n valid: z.boolean(),\n issueCount: z.number().int().nonnegative(),\n checkboxProgress: CheckboxProgressCountsSchema.optional(),\n});\n\nexport const ProgressCountsSchema = z.object({\n totalFields: z.number().int().nonnegative(),\n requiredFields: z.number().int().nonnegative(),\n // Dimension 1: AnswerState (mutually exclusive, sum to totalFields)\n unansweredFields: z.number().int().nonnegative(),\n answeredFields: z.number().int().nonnegative(),\n skippedFields: z.number().int().nonnegative(),\n abortedFields: z.number().int().nonnegative(),\n // Dimension 2: Validity (mutually exclusive, sum to totalFields)\n validFields: z.number().int().nonnegative(),\n invalidFields: z.number().int().nonnegative(),\n // Dimension 3: Value presence (mutually exclusive, sum to totalFields)\n emptyFields: z.number().int().nonnegative(),\n filledFields: z.number().int().nonnegative(),\n // Derived counts\n emptyRequiredFields: z.number().int().nonnegative(),\n totalNotes: z.number().int().nonnegative(),\n});\n\nexport const ProgressSummarySchema = z.object({\n counts: ProgressCountsSchema,\n fields: z.record(IdSchema, FieldProgressSchema),\n});\n\nexport const StructureSummarySchema = z.object({\n groupCount: z.number().int().nonnegative(),\n fieldCount: z.number().int().nonnegative(),\n optionCount: z.number().int().nonnegative(),\n fieldCountByKind: z.record(FieldKindSchema, z.number().int().nonnegative()),\n groupsById: z.record(IdSchema, z.literal('field_group')),\n fieldsById: z.record(IdSchema, FieldKindSchema),\n optionsById: z.record(\n z.string(),\n z.object({\n parentFieldId: IdSchema,\n parentFieldKind: FieldKindSchema,\n }),\n ),\n});\n\n// Result schemas\nexport const InspectResultSchema = z.object({\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n isComplete: z.boolean(),\n formState: ProgressStateSchema,\n});\n\n// Patch rejection schema\nexport const PatchRejectionSchema = z.object({\n patchIndex: z.number().int().nonnegative(),\n message: z.string(),\n fieldId: z.string().optional(),\n fieldKind: z.string().optional(),\n columnIds: z.array(z.string()).optional(),\n});\n\n// Patch warning schemas\nexport const PatchCoercionTypeSchema = z.enum([\n 'string_to_list',\n 'url_to_list',\n 'option_to_array',\n 'boolean_to_checkbox',\n 'array_to_checkboxes',\n]);\n\nexport const PatchWarningSchema = z.object({\n patchIndex: z.number().int().nonnegative(),\n fieldId: z.string(),\n message: z.string(),\n coercion: PatchCoercionTypeSchema,\n});\n\nexport const ApplyStatusSchema = z.enum(['applied', 'partial', 'rejected']);\n\nexport const ApplyResultSchema = z.object({\n applyStatus: ApplyStatusSchema,\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n isComplete: z.boolean(),\n formState: ProgressStateSchema,\n appliedPatches: z.array(z.lazy(() => PatchSchema)),\n rejectedPatches: z.array(PatchRejectionSchema),\n warnings: z.array(PatchWarningSchema),\n});\n\n// Patch schemas\nexport const SetStringPatchSchema = z.object({\n op: z.literal('set_string'),\n fieldId: IdSchema,\n value: z.string().nullable(),\n});\n\nexport const SetNumberPatchSchema = z.object({\n op: z.literal('set_number'),\n fieldId: IdSchema,\n value: z.number().nullable(),\n});\n\nexport const SetStringListPatchSchema = z.object({\n op: z.literal('set_string_list'),\n fieldId: IdSchema,\n value: z.array(z.string()),\n});\n\nexport const SetCheckboxesPatchSchema = z.object({\n op: z.literal('set_checkboxes'),\n fieldId: IdSchema,\n value: z.record(OptionIdSchema, CheckboxValueSchema),\n});\n\nexport const SetSingleSelectPatchSchema = z.object({\n op: z.literal('set_single_select'),\n fieldId: IdSchema,\n value: OptionIdSchema.nullable(),\n});\n\nexport const SetMultiSelectPatchSchema = z.object({\n op: z.literal('set_multi_select'),\n fieldId: IdSchema,\n value: z.array(OptionIdSchema),\n});\n\nexport const SetUrlPatchSchema = z.object({\n op: z.literal('set_url'),\n fieldId: IdSchema,\n value: z.string().nullable(),\n});\n\nexport const SetUrlListPatchSchema = z.object({\n op: z.literal('set_url_list'),\n fieldId: IdSchema,\n value: z.array(z.string()),\n});\n\nexport const SetDatePatchSchema = z.object({\n op: z.literal('set_date'),\n fieldId: IdSchema,\n value: z.string().nullable(), // ISO 8601 date string (YYYY-MM-DD) or null\n});\n\nexport const SetYearPatchSchema = z.object({\n op: z.literal('set_year'),\n fieldId: IdSchema,\n value: z.number().int().nullable(), // integer year or null\n});\n\n/** Set table patch schema */\nexport const SetTablePatchSchema = z.object({\n op: z.literal('set_table'),\n fieldId: IdSchema,\n value: z.array(TableRowPatchSchema),\n});\n\nexport const ClearFieldPatchSchema = z.object({\n op: z.literal('clear_field'),\n fieldId: IdSchema,\n});\n\nexport const SkipFieldPatchSchema = z.object({\n op: z.literal('skip_field'),\n fieldId: IdSchema,\n role: z.string(),\n reason: z.string().optional(),\n});\n\nexport const AbortFieldPatchSchema = z.object({\n op: z.literal('abort_field'),\n fieldId: IdSchema,\n role: z.string(),\n reason: z.string().optional(),\n});\n\nexport const AddNotePatchSchema = z.object({\n op: z.literal('add_note'),\n ref: IdSchema,\n role: z.string(),\n text: z.string(),\n});\n\nexport const RemoveNotePatchSchema = z.object({\n op: z.literal('remove_note'),\n noteId: NoteIdSchema,\n});\n\nexport const PatchSchema = z.discriminatedUnion('op', [\n SetStringPatchSchema,\n SetNumberPatchSchema,\n SetStringListPatchSchema,\n SetCheckboxesPatchSchema,\n SetSingleSelectPatchSchema,\n SetMultiSelectPatchSchema,\n SetUrlPatchSchema,\n SetUrlListPatchSchema,\n SetDatePatchSchema,\n SetYearPatchSchema,\n SetTablePatchSchema,\n ClearFieldPatchSchema,\n SkipFieldPatchSchema,\n AbortFieldPatchSchema,\n AddNotePatchSchema,\n RemoveNotePatchSchema,\n]);\n\n// Harness schemas\nexport const StepResultSchema = z.object({\n structureSummary: StructureSummarySchema,\n progressSummary: ProgressSummarySchema,\n issues: z.array(InspectIssueSchema),\n stepBudget: z.number().int().nonnegative(),\n isComplete: z.boolean(),\n turnNumber: z.number().int().positive(),\n});\n\n// Session transcript schemas\nexport const HarnessConfigSchema = z.object({\n maxIssuesPerTurn: z.number().int().positive(),\n maxPatchesPerTurn: z.number().int().positive(),\n maxTurns: z.number().int().positive(),\n maxFieldsPerTurn: z.number().int().positive().optional(),\n maxGroupsPerTurn: z.number().int().positive().optional(),\n targetRoles: z.array(z.string()).optional(),\n fillMode: FillModeSchema.optional(),\n maxParallelAgents: z.number().int().positive().optional(),\n});\n\nexport const SessionTurnStatsSchema = z.object({\n inputTokens: z.number().int().nonnegative().optional(),\n outputTokens: z.number().int().nonnegative().optional(),\n toolCalls: z\n .array(\n z.object({\n name: z.string(),\n count: z.number().int().positive(),\n }),\n )\n .optional(),\n});\n\nexport const SessionTurnContextSchema = z.object({\n systemPrompt: z.string(),\n contextPrompt: z.string(),\n});\n\n// Wire format Zod schemas for session logging\nexport const WireToolCallSchema = z.object({\n toolName: z.string(),\n input: z.unknown(),\n});\n\nexport const WireToolResultSchema = z.object({\n toolName: z.string(),\n result: z.unknown(),\n});\n\nexport const WireResponseStepSchema = z.object({\n toolCalls: z.array(WireToolCallSchema),\n toolResults: z.array(WireToolResultSchema),\n text: z.string().nullable(),\n});\n\nexport const WireRequestFormatSchema = z.object({\n system: z.string(),\n prompt: z.string(),\n tools: z.record(\n z.string(),\n z.object({\n description: z.string(),\n inputSchema: z.unknown(),\n }),\n ),\n});\n\nexport const WireResponseFormatSchema = z.object({\n steps: z.array(WireResponseStepSchema),\n usage: z.object({\n inputTokens: z.number().int().nonnegative(),\n outputTokens: z.number().int().nonnegative(),\n }),\n});\n\nexport const WireFormatSchema = z.object({\n request: WireRequestFormatSchema,\n response: WireResponseFormatSchema,\n});\n\nexport const SessionTurnSchema = z.object({\n turn: z.number().int().positive(),\n inspect: z.object({\n issues: z.array(InspectIssueSchema),\n }),\n context: SessionTurnContextSchema.optional(),\n apply: z.object({\n patches: z.array(PatchSchema),\n rejectedPatches: z.array(PatchRejectionSchema).optional(),\n warnings: z.array(PatchWarningSchema).optional(),\n }),\n after: z.object({\n requiredIssueCount: z.number().int().nonnegative(),\n markdownSha256: z.string(),\n answeredFieldCount: z.number().int().nonnegative(),\n skippedFieldCount: z.number().int().nonnegative(),\n }),\n llm: SessionTurnStatsSchema.optional(),\n wire: WireFormatSchema.optional(),\n});\n\nexport const SessionFinalSchema = z.object({\n expectComplete: z.boolean(),\n expectedCompletedForm: z.string(),\n});\n\nexport const SessionTranscriptSchema = z.object({\n sessionVersion: z.string(),\n mode: MockModeSchema,\n form: z.object({\n path: z.string(),\n }),\n validators: z\n .object({\n code: z.string().optional(),\n })\n .optional(),\n mock: z\n .object({\n completedMock: z.string(),\n })\n .optional(),\n live: z\n .object({\n modelId: z.string(),\n })\n .optional(),\n harness: HarnessConfigSchema,\n turns: z.array(SessionTurnSchema),\n final: SessionFinalSchema,\n});\n\n// Frontmatter schema\nexport const MarkformFrontmatterSchema = z.object({\n markformVersion: z.string(),\n formSummary: StructureSummarySchema,\n formProgress: ProgressSummarySchema,\n formState: ProgressStateSchema,\n});\n"],"mappings":"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"}
@@ -2,7 +2,6 @@
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/engine/coreTypes.d.ts
5
-
6
5
  /** Form/group/field ID - globally unique within a document */
7
6
  type Id = string;
8
7
  /** Option ID - unique within its containing field */
@@ -768,9 +767,7 @@ interface WireRequestFormat {
768
767
  prompt: string;
769
768
  /** Tool definitions with descriptions and schemas */
770
769
  tools: Record<string, {
771
- /** Tool description shown to LLM */
772
- description: string;
773
- /** JSON Schema for tool input */
770
+ /** Tool description shown to LLM */description: string; /** JSON Schema for tool input */
774
771
  inputSchema: unknown;
775
772
  }>;
776
773
  }
@@ -810,10 +807,8 @@ interface SessionTurn {
810
807
  /** Context sent to LLM (prompts with field schema info) */
811
808
  context?: SessionTurnContext;
812
809
  apply: {
813
- patches: Patch[];
814
- /** Patches that were rejected (type mismatch, invalid field, etc.) */
815
- rejectedPatches?: PatchRejection[];
816
- /** Warnings for patches that were coerced (e.g., string → array) */
810
+ patches: Patch[]; /** Patches that were rejected (type mismatch, invalid field, etc.) */
811
+ rejectedPatches?: PatchRejection[]; /** Warnings for patches that were coerced (e.g., string array) */
817
812
  warnings?: PatchWarning[];
818
813
  };
819
814
  after: {
@@ -3765,4 +3760,4 @@ declare const MarkformFrontmatterSchema: z.ZodObject<{
3765
3760
  }, z.core.$strip>;
3766
3761
  //#endregion
3767
3762
  export { HarnessConfigSchema as $, TableValueSchema as $n, SetDatePatch as $t, ExecutionPlan as A, SourceRangeSchema as An, YearValueSchema as Ar, Patch as At, FieldPriorityLevel as B, StringValueSchema as Bn, QualifiedOptionRef as Bt, DateFieldSchema as C, SingleSelectField as Cn, WireToolCall as Cr, NumberValue as Ct, DocumentationBlockSchema as D, SourcePosition as Dn, YearField as Dr, OptionIdSchema as Dt, DocumentationBlock as E, SingleSelectValueSchema as En, WireToolResultSchema as Er, OptionId as Et, FieldBase as F, StringListField as Fn, ProgressState as Ft, FieldSchema as G, TableColumnSchema as Gn, SessionTranscript as Gt, FieldProgressSchema as H, StructureSummarySchema as Hn, RunModeSchema as Ht, FieldGroup as I, StringListFieldSchema as In, ProgressStateSchema as It, FillMode as J, TableRowPatch as Jn, SessionTurnContext as Jt, FieldValue as K, TableField as Kn, SessionTranscriptSchema as Kt, FieldGroupSchema as L, StringListValue as Ln, ProgressSummary as Lt, ExplicitCheckboxValue as M, StepResultSchema as Mn, PatchSchema as Mt, ExplicitCheckboxValueSchema as N, StringField as Nn, ProgressCounts as Nt, DocumentationTag as O, SourcePositionSchema as On, YearFieldSchema as Or, OptionSchema as Ot, Field as P, StringFieldSchema as Pn, ProgressCountsSchema as Pt, HarnessConfig as Q, TableValue as Qn, SetCheckboxesPatchSchema as Qt, FieldKind as R, StringListValueSchema as Rn, ProgressSummarySchema as Rt, DateField as S, SimpleCheckboxStateSchema as Sn, WireResponseStepSchema as Sr, NumberFieldSchema as St, DateValueSchema as T, SingleSelectValue as Tn, WireToolResult as Tr, Option as Tt, FieldResponse as U, SyntaxStyle as Un, SessionFinal as Ut, FieldProgress as V, StructureSummary as Vn, RunMode as Vt, FieldResponseSchema as W, TableColumn as Wn, SessionFinalSchema as Wt, FormSchemaSchema as X, TableRowResponse as Xn, SessionTurnStats as Xt, FormSchema as Y, TableRowPatchSchema as Yn, SessionTurnSchema as Yt, FrontmatterHarnessConfig as Z, TableRowResponseSchema as Zn, SetCheckboxesPatch as Zt, CheckboxesValueSchema as _, SetYearPatch as _n, WireRequestFormat as _r, MultiSelectValue as _t, ApprovalMode as a, SetSingleSelectPatch as an, UrlListValueSchema as ar, InspectResult as at, ColumnTypeName as b, SeveritySchema as bn, WireResponseFormatSchema as br, Note as bt, CheckboxMode as c, SetStringListPatchSchema as cn, ValidationIssue as cr, IssueReasonSchema as ct, CheckboxProgressCountsSchema as d, SetTablePatch as dn, ValidatorFn as dr, MarkformFrontmatter as dt, SetDatePatchSchema as en, UrlField as er, Id as et, CheckboxValue as f, SetTablePatchSchema as fn, ValidatorRef as fr, MarkformFrontmatterSchema as ft, CheckboxesValue as g, SetUrlPatchSchema as gn, WireFormatSchema as gr, MultiSelectFieldSchema as gt, CheckboxesFieldSchema as h, SetUrlPatch as hn, WireFormat as hr, MultiSelectField as ht, ApplyResultSchema as i, SetNumberPatchSchema as in, UrlListValue as ir, InspectIssueSchema as it, ExecutionPlanItem as j, StepResult as jn, PatchRejection as jt, DocumentationTagSchema as k, SourceRange as kn, YearValue as kr, ParsedForm as kt, CheckboxModeSchema as l, SetStringPatch as ln, ValidationIssueSchema as lr, IssueScope as lt, CheckboxesField as m, SetUrlListPatchSchema as mn, ValidatorRegistry as mr, MultiCheckboxStateSchema as mt, AnswerStateSchema as n, SetMultiSelectPatchSchema as nn, UrlListField as nr, IdSchema as nt, CellResponse as o, SetSingleSelectPatchSchema as on, UrlValue as or, InspectResultSchema as ot, CheckboxValueSchema as p, SetUrlListPatch as pn, ValidatorRefSchema as pr, MultiCheckboxState as pt, FieldValueSchema as q, TableFieldSchema as qn, SessionTurn as qt, ApplyResult as r, SetNumberPatch as rn, UrlListFieldSchema as rr, InspectIssue as rt, CellResponseSchema as s, SetStringListPatch as sn, UrlValueSchema as sr, IssueReason as st, AnswerState as t, SetMultiSelectPatch as tn, UrlFieldSchema as tr, IdIndexEntry as tt, CheckboxProgressCounts as u, SetStringPatchSchema as un, ValidatorContext as ur, IssueScopeSchema as ut, ClearFieldPatch as v, SetYearPatchSchema as vn, WireRequestFormatSchema as vr, MultiSelectValueSchema as vt, DateValue as w, SingleSelectFieldSchema as wn, WireToolCallSchema as wr, NumberValueSchema as wt, ColumnTypeNameSchema as x, SimpleCheckboxState as xn, WireResponseStep as xr, NumberField as xt, ClearFieldPatchSchema as y, Severity as yn, WireResponseFormat as yr, NodeType as yt, FieldKindSchema as z, StringValue as zn, QualifiedColumnRef as zt };
3768
- //# sourceMappingURL=coreTypes-BMEs8h_2.d.mts.map
3763
+ //# sourceMappingURL=coreTypes-CkxML8g2.d.mts.map