{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://agent-governance/schemas/pipeline.schema.json", "title": "Agent Pipeline Definition", "description": "Schema for defining composable agent pipelines", "type": "object", "required": ["name", "version", "stages"], "properties": { "name": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$", "description": "Pipeline name (lowercase, alphanumeric with dashes)" }, "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$", "description": "Pipeline version (semver)" }, "description": { "type": "string", "description": "Human-readable description of the pipeline" }, "metadata": { "type": "object", "properties": { "author": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "tags": { "type": "array", "items": { "type": "string" } } } }, "inputs": { "type": "object", "description": "Pipeline input parameters", "additionalProperties": { "type": "object", "properties": { "type": { "enum": ["string", "number", "boolean", "array", "object"] }, "required": { "type": "boolean", "default": false }, "default": {}, "description": { "type": "string" } }, "required": ["type"] } }, "stages": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/stage" } }, "on_failure": { "type": "object", "properties": { "action": { "enum": ["rollback", "notify", "pause", "continue"] }, "notify": { "type": "array", "items": { "type": "string" } }, "rollback_to": { "type": "string" } } }, "timeout": { "type": "string", "pattern": "^\\d+[smh]$", "description": "Pipeline timeout (e.g., 30m, 2h)" } }, "$defs": { "stage": { "type": "object", "required": ["name", "type"], "properties": { "name": { "type": "string", "description": "Stage name" }, "type": { "enum": ["agent", "gate", "parallel", "condition"], "description": "Stage type" }, "agent": { "type": "object", "description": "Agent configuration (for type: agent)", "properties": { "template": { "type": "string" }, "tier": { "type": "integer", "minimum": 0, "maximum": 4 }, "config": { "type": "object" } } }, "gate": { "type": "object", "description": "Gate configuration (for type: gate)", "properties": { "approval": { "enum": ["human", "auto", "consensus"] }, "timeout": { "type": "string" }, "approvers": { "type": "array", "items": { "type": "string" } } } }, "parallel": { "type": "object", "description": "Parallel execution (for type: parallel)", "properties": { "branches": { "type": "array", "items": { "$ref": "#/$defs/stage" } }, "wait": { "enum": ["all", "any", "none"] } } }, "condition": { "type": "object", "description": "Conditional execution (for type: condition)", "properties": { "if": { "type": "string" }, "then": { "$ref": "#/$defs/stage" }, "else": { "$ref": "#/$defs/stage" } } }, "requires": { "type": "array", "items": { "type": "string" }, "description": "Stage dependencies (stage names)" }, "artifacts": { "type": "object", "properties": { "inputs": { "type": "array", "items": { "type": "string" } }, "outputs": { "type": "array", "items": { "type": "string" } } } }, "on_failure": { "type": "object", "properties": { "action": { "enum": ["fail", "skip", "retry", "rollback"] }, "retries": { "type": "integer", "minimum": 0, "maximum": 5 }, "retry_delay": { "type": "string" } } }, "timeout": { "type": "string", "pattern": "^\\d+[smh]$" } } } } }