export declare const PRACTICE_EXERCISE_TEMPLATE_SCHEMA_VERSION: "practice-exercise-template.v1"; export type PracticeExerciseTemplateSchemaVersion = typeof PRACTICE_EXERCISE_TEMPLATE_SCHEMA_VERSION; export type PracticeConstraintSeverity = "hard" | "soft"; export type PracticeTaskType = "analysis" | "implementation" | "review" | "debugging" | "planning"; export type PracticeOutputFormat = "json_object" | "markdown" | "text"; export interface PracticeConstraint { id: string; title: string; description: string; severity: PracticeConstraintSeverity; rationale?: string; } export interface PracticeScenario { id: string; title: string; input: Record; context?: string; success_criteria: string[]; } export interface PracticeExpectedOutputField { path: string; type: string; required: boolean; description: string; } export interface PracticeExpectedOutputShape { format: PracticeOutputFormat; fields: PracticeExpectedOutputField[]; example?: Record | string; } export interface PracticeExerciseTemplate { schema_version: PracticeExerciseTemplateSchemaVersion; id: string; title: string; summary: string; task_type: PracticeTaskType; scenarios: PracticeScenario[]; constraints: PracticeConstraint[]; expected_output_shape: PracticeExpectedOutputShape; tags?: string[]; } export declare function validatePracticeExerciseTemplate(input: unknown): { ok: boolean; errors: string[]; template: PracticeExerciseTemplate | null; }; export declare const PRACTICE_EXERCISE_TEMPLATE_JSON_SCHEMA: { readonly $schema: "https://json-schema.org/draft/2020-12/schema"; readonly $id: "https://schemas.useorgx.com/practice-exercise-template/v1.json"; readonly title: "OrgX Practice Exercise Template v1"; readonly description: "Structured exercise template for practice loops with scenarios, constraints, and expected output shape."; readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["schema_version", "id", "title", "summary", "task_type", "scenarios", "constraints", "expected_output_shape"]; readonly properties: { readonly schema_version: { readonly type: "string"; readonly const: "practice-exercise-template.v1"; }; readonly id: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 120; }; readonly title: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 300; }; readonly summary: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 3000; }; readonly task_type: { readonly type: "string"; readonly enum: readonly ["analysis", "implementation", "review", "debugging", "planning"]; }; readonly scenarios: { readonly type: "array"; readonly minItems: 1; readonly maxItems: 25; readonly items: { readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["id", "title", "input", "success_criteria"]; readonly properties: { readonly id: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 120; }; readonly title: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 300; }; readonly input: { readonly type: "object"; readonly additionalProperties: true; }; readonly context: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 4000; }; readonly success_criteria: { readonly type: "array"; readonly minItems: 1; readonly maxItems: 20; readonly items: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 1000; }; }; }; }; }; readonly constraints: { readonly type: "array"; readonly maxItems: 25; readonly items: { readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["id", "title", "description", "severity"]; readonly properties: { readonly id: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 120; }; readonly title: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 300; }; readonly description: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 2000; }; readonly severity: { readonly type: "string"; readonly enum: readonly ["hard", "soft"]; }; readonly rationale: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 2000; }; }; }; }; readonly expected_output_shape: { readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["format", "fields"]; readonly properties: { readonly format: { readonly type: "string"; readonly enum: readonly ["json_object", "markdown", "text"]; }; readonly fields: { readonly type: "array"; readonly minItems: 1; readonly maxItems: 50; readonly items: { readonly type: "object"; readonly additionalProperties: false; readonly required: readonly ["path", "type", "required", "description"]; readonly properties: { readonly path: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 400; }; readonly type: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 120; }; readonly required: { readonly type: "boolean"; }; readonly description: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 2000; }; }; }; }; readonly example: { readonly oneOf: readonly [{ readonly type: "string"; readonly minLength: 1; readonly maxLength: 20000; }, { readonly type: "object"; readonly additionalProperties: true; }]; }; }; }; readonly tags: { readonly type: "array"; readonly maxItems: 30; readonly items: { readonly type: "string"; readonly minLength: 1; readonly maxLength: 80; }; }; }; };