changedInput schema / properties / config / anyOf
Previous value: -[
- {
- "properties": {
- "data": {
- "description": "Agent configuration payload",
- "properties": {
- "files": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": [],
- "description": "Team files that should be available to the agent, each given as the relative file path returned in the `path` field of `GET /v2/teams/{teamId}/files` (for example `report.md` or `folder/doc.md`) — not the `id` field, which is a GCS object identifier."
- },
- "input": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "items": {
- "properties": {
- "content": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "items": {
- "anyOf": [
- {
- "properties": {
- "text": {
- "type": "string"
- },
- "type": {
- "const": "input_text",
- "type": "string"
- }
- },
- "required": [
- "type",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "detail": {
- "anyOf": [
- {
- "enum": [
- "low",
- "high",
- "auto"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "file_id": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "type": {
- "const": "input_image",
- "type": "string"
- },
- "url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "type"
- ],
- "type": "object"
- },
- {
- "properties": {
- "file_id": {
- "type": "string"
- },
- "type": {
- "const": "input_file",
- "type": "string"
- }
- },
- "required": [
- "type",
- "file_id"
- ],
- "type": "object"
- }
- ]
- },
- "type": "array"
- }
- ]
- },
- "role": {
- "enum": [
- "system",
- "user",
- "assistant"
- ],
- "type": "string"
- },
- "type": {
- "anyOf": [
- {
- "const": "message",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "role",
- "content"
- ],
- "type": "object"
- },
- "type": "array"
- }
- ],
- "description": "Initial agent instructions — either a single system prompt string or a list of structured messages"
- },
- "models": {
- "description": "Model configuration for each capability the agent uses",
- "properties": {
- "agent": {
- "description": "Primary agent model configuration",
- "properties": {
- "model": {
- "description": "Model identifier used for the primary agent loop (Claude, or an OSS model when the team's oss_models flag — or oss_models_public for the public subset — is enabled)",
- "enum": [
- "claude-haiku-4-5-20251001",
- "claude-sonnet-5",
- "claude-sonnet-5[1m]",
- "claude-sonnet-5-5",
- "claude-sonnet-5-5[1m]",
- "claude-opus-5",
- "claude-opus-5[1m]",
- "claude-opus-5-5",
- "claude-opus-5-5[1m]",
- "kimi-k3",
- "kimi-k3-duvo",
- "glm-5.3-flash",
- "deepseek-v4-flash",
- "minimax-m3",
- "d1-max",
- "duvo-1-max",
- "duvo-1-max-sonnet-1m",
- "duvo-1-max-sonnet-4.5",
- "duvo-1-max-sonnet-4.5-1m",
- "duvo-1-max-opus",
- "duvo-1-max-opus-4.5",
- "gpt-4.1",
- "gpt-4o",
- "gpt-4o-mini",
- "gpt-5",
- "gpt-5.1",
- "claude-sonnet-4-20250514",
- "claude-sonnet-4-20250514[1m]",
- "claude-sonnet-4-5-20250929",
- "claude-sonnet-4-5-20250929[1m]",
- "claude-sonnet-4-6",
- "claude-sonnet-4-6[1m]",
- "claude-opus-4-1-20250805",
- "claude-opus-4-5-20251101",
- "claude-opus-4-6",
- "claude-opus-4-6[1m]",
- "claude-opus-4-7",
- "claude-opus-4-7[1m]",
- "claude-opus-4-8",
- "claude-opus-4-8[1m]",
- "glm-5.2",
- "qwen3.6-27b",
- "qwen3.8-max"
- ],
- "type": "string",
- "x-extensible-enum": [
- "claude-haiku-4-5-20251001",
- "claude-sonnet-5",
- "claude-sonnet-5[1m]",
- "claude-sonnet-5-5",
- "claude-sonnet-5-5[1m]",
- "claude-opus-5",
- "claude-opus-5[1m]",
- "claude-opus-5-5",
- "claude-opus-5-5[1m]",
- "kimi-k3",
- "kimi-k3-duvo",
- "glm-5.3-flash",
- "deepseek-v4-flash",
- "minimax-m3",
- "d1-max",
- "duvo-1-max",
- "duvo-1-max-sonnet-1m",
- "duvo-1-max-sonnet-4.5",
- "duvo-1-max-sonnet-4.5-1m",
- "duvo-1-max-opus",
- "duvo-1-max-opus-4.5",
- "gpt-4.1",
- "gpt-4o",
- "gpt-4o-mini",
- "gpt-5",
- "gpt-5.1",
- "claude-sonnet-4-20250514",
- "claude-sonnet-4-20250514[1m]",
- "claude-sonnet-4-5-20250929",
- "claude-sonnet-4-5-20250929[1m]",
- "claude-sonnet-4-6",
- "claude-sonnet-4-6[1m]",
- "claude-opus-4-1-20250805",
- "claude-opus-4-5-20251101",
- "claude-opus-4-6",
- "claude-opus-4-6[1m]",
- "claude-opus-4-7",
- "claude-opus-4-7[1m]",
- "claude-opus-4-8",
- "claude-opus-4-8[1m]",
- "glm-5.2",
- "qwen3.6-27b",
- "qwen3.8-max"
- ]
- }
- },
- "required": [
- "model"
- ],
- "type": "object"
- },
- "browsing": {
- "description": "Browsing/computer-use model configuration",
- "properties": {
- "model": {
- "description": "Model identifier for the browsing provider",
- "enum": [
- "gemini-2.5-pro",
- "gemini-2.5-flash",
- "gemini-3-pro-preview",
- "claude-haiku-4-5",
- "claude-sonnet-4-5",
- "claude-opus-4-1"
- ],
- "type": "string"
- },
- "provider": {
- "description": "Provider backing the browsing/computer-use model",
- "enum": [
- "google",
- "anthropic"
- ],
- "type": "string"
- }
- },
- "required": [
- "provider",
- "model"
- ],
- "type": "object"
- }
- },
- "required": [
- "agent",
- "browsing"
- ],
- "type": "object"
- },
- "options": {
- "additionalProperties": {},
- "description": "Optional runtime options controlling how the agent executes",
- "properties": {
- "benchmarkExpectedOutcomes": {
- "description": "Expected outcomes used when running benchmark scenarios",
- "items": {
- "properties": {
- "criteria": {
- "description": "Pass/fail criteria used to evaluate the outcome",
- "type": "string"
- },
- "description": {
- "description": "Human-readable description of the expected outcome",
- "type": "string"
- }
- },
- "required": [
- "description",
- "criteria"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "browserProvider": {
- "description": "Browser infrastructure provider",
- "enum": [
- "browserbase",
- "browser-use"
- ],
- "type": "string"
- },
- "evaluationSchemaId": {
- "description": "ID of the evaluation schema to apply to runs of this agent",
- "type": "string"
- },
- "supervisedMode": {
- "description": "Run the agent under Duvo's permission classifier: every tool call is classified as allow/deny/ask, with 'ask' routed to human-in-the-loop approval. Mutually exclusive with browsing and computer-use connections.",
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "plugins": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": [],
- "description": "Plugins to load — either a built-in plugin name (e.g. \"code-review\") or a GitHub URL (e.g. \"https://github.com/owner/repo\")"
- },
- "skills": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": [],
- "description": "IDs of skills (team or system) that should be available to the agent"
- },
- "subAgents": {
- "anyOf": [
- {
- "items": {
- "format": "uuid",
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": [],
- "description": "Retired — Sub-Assignments was removed. Accepted for backwards compatibility and ignored."
- }
- },
- "required": [
- "models",
- "input"
- ],
- "type": "object"
- },
- "version": {
- "const": "v2",
- "description": "Schema version discriminator — must be \"v2\" for the current schema",
- "type": "string"
- }
- },
- "required": [
- "version",
- "data"
- ],
- "type": "object"
- },
- {
- "properties": {
- "data": {
- "description": "Code step configuration payload",
- "properties": {
- "files": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": [],
- "description": "Team file paths this step can read at run time"
- },
- "handoverRequired": {
- "default": false,
- "description": "When the step declares handover options, whether a run that exits cleanly without requesting one fails. Ignored when the step declares no options.",
- "type": "boolean"
- },
- "language": {
- "description": "Language the step's program is written in",
- "enum": [
- "python"
- ],
- "type": "string"
- },
- "source": {
- "description": "Where the step's program comes from",
- "oneOf": [
- {
- "properties": {
- "code": {
- "description": "Program held in the build config. Written to `main.py` and run with `python main.py`.",
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "inline",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "code"
- ],
- "type": "object"
- },
- {
- "properties": {
- "bundle": {
- "description": "The program's files, as a content-addressed manifest",
- "properties": {
- "bucket": {
- "description": "GCS bucket the bundle's blobs are stored in",
- "minLength": 1,
- "type": "string"
- },
- "files": {
- "description": "The program's files, one manifest entry each",
- "items": {
- "properties": {
- "path": {
- "description": "Path the file is materialised at, relative to the work dir",
- "minLength": 1,
- "type": "string"
- },
- "sha256": {
- "description": "Digest of the file's bytes, and the key its blob is stored at",
- "maxLength": 64,
- "minLength": 64,
- "pattern": "^[0-9a-f]{64}$",
- "type": "string"
- },
- "sizeBytes": {
- "description": "UTF-8 byte length of the file's contents",
- "maximum": 131072,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "path",
- "sha256",
- "sizeBytes"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- }
- },
- "required": [
- "bucket",
- "files"
- ],
- "type": "object"
- },
- "kind": {
- "const": "files",
- "type": "string"
- },
- "startCommand": {
- "description": "Command run from the root of the step's file system, e.g. \"python main.py\".",
- "maxLength": 2000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "startCommand"
- ],
- "type": "object"
- }
- ]
- },
- "timeoutMs": {
- "default": 600000,
- "description": "Wall-clock budget for one execution of the step",
- "exclusiveMinimum": 0,
- "maximum": 3600000,
- "type": "integer"
- }
- },
- "required": [
- "language",
- "source"
- ],
- "type": "object"
- },
- "version": {
- "const": "v1",
- "description": "Schema version discriminator — must be \"v1\" for the current code-step schema",
- "type": "string"
- }
- },
- "required": [
- "version",
- "data"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "data": {
+ "description": "Agent configuration payload",
+ "properties": {
+ "files": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": [],
+ "description": "Team files that should be available to the agent, each given as the relative file path returned in the `path` field of `GET /v2/teams/{teamId}/files` (for example `report.md` or `folder/doc.md`) — not the `id` field, which is a GCS object identifier."
+ },
+ "input": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "properties": {
+ "content": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "anyOf": [
+ {
+ "properties": {
+ "text": {
+ "type": "string"
+ },
+ "type": {
+ "const": "input_text",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "detail": {
+ "anyOf": [
+ {
+ "enum": [
+ "low",
+ "high",
+ "auto"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "file_id": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "type": {
+ "const": "input_image",
+ "type": "string"
+ },
+ "url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "file_id": {
+ "type": "string"
+ },
+ "type": {
+ "const": "input_file",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "file_id"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "type": "array"
+ }
+ ]
+ },
+ "role": {
+ "enum": [
+ "system",
+ "user",
+ "assistant"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "anyOf": [
+ {
+ "const": "message",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "role",
+ "content"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ ],
+ "description": "Initial agent instructions — either a single system prompt string or a list of structured messages"
+ },
+ "models": {
+ "description": "Model configuration for each capability the agent uses",
+ "properties": {
+ "agent": {
+ "description": "Primary agent model configuration",
+ "properties": {
+ "model": {
+ "description": "Model identifier used for the primary agent loop (Claude, or an OSS model when the team's oss_models flag — or oss_models_public for the public subset — is enabled)",
+ "enum": [
+ "claude-haiku-4-5-20251001",
+ "claude-haiku-5-5",
+ "claude-haiku-5-5[1m]",
+ "claude-sonnet-5",
+ "claude-sonnet-5[1m]",
+ "claude-sonnet-5-5",
+ "claude-sonnet-5-5[1m]",
+ "claude-opus-5",
+ "claude-opus-5[1m]",
+ "claude-opus-5-5",
+ "claude-opus-5-5[1m]",
+ "kimi-k3",
+ "kimi-k3-duvo",
+ "glm-5.3-flash",
+ "deepseek-v4-flash",
+ "minimax-m3",
+ "d1-max",
+ "duvo-1-max",
+ "duvo-1-max-sonnet-1m",
+ "duvo-1-max-sonnet-4.5",
+ "duvo-1-max-sonnet-4.5-1m",
+ "duvo-1-max-opus",
+ "duvo-1-max-opus-4.5",
+ "gpt-4.1",
+ "gpt-4o",
+ "gpt-4o-mini",
+ "gpt-5",
+ "gpt-5.1",
+ "claude-sonnet-4-20250514",
+ "claude-sonnet-4-20250514[1m]",
+ "claude-sonnet-4-5-20250929",
+ "claude-sonnet-4-5-20250929[1m]",
+ "claude-sonnet-4-6",
+ "claude-sonnet-4-6[1m]",
+ "claude-opus-4-1-20250805",
+ "claude-opus-4-5-20251101",
+ "claude-opus-4-6",
+ "claude-opus-4-6[1m]",
+ "claude-opus-4-7",
+ "claude-opus-4-7[1m]",
+ "claude-opus-4-8",
+ "claude-opus-4-8[1m]",
+ "glm-5.2",
+ "qwen3.6-27b",
+ "qwen3.8-max"
+ ],
+ "type": "string",
+ "x-extensible-enum": [
+ "claude-haiku-4-5-20251001",
+ "claude-haiku-5-5",
+ "claude-haiku-5-5[1m]",
+ "claude-sonnet-5",
+ "claude-sonnet-5[1m]",
+ "claude-sonnet-5-5",
+ "claude-sonnet-5-5[1m]",
+ "claude-opus-5",
+ "claude-opus-5[1m]",
+ "claude-opus-5-5",
+ "claude-opus-5-5[1m]",
+ "kimi-k3",
+ "kimi-k3-duvo",
+ "glm-5.3-flash",
+ "deepseek-v4-flash",
+ "minimax-m3",
+ "d1-max",
+ "duvo-1-max",
+ "duvo-1-max-sonnet-1m",
+ "duvo-1-max-sonnet-4.5",
+ "duvo-1-max-sonnet-4.5-1m",
+ "duvo-1-max-opus",
+ "duvo-1-max-opus-4.5",
+ "gpt-4.1",
+ "gpt-4o",
+ "gpt-4o-mini",
+ "gpt-5",
+ "gpt-5.1",
+ "claude-sonnet-4-20250514",
+ "claude-sonnet-4-20250514[1m]",
+ "claude-sonnet-4-5-20250929",
+ "claude-sonnet-4-5-20250929[1m]",
+ "claude-sonnet-4-6",
+ "claude-sonnet-4-6[1m]",
+ "claude-opus-4-1-20250805",
+ "claude-opus-4-5-20251101",
+ "claude-opus-4-6",
+ "claude-opus-4-6[1m]",
+ "claude-opus-4-7",
+ "claude-opus-4-7[1m]",
+ "claude-opus-4-8",
+ "claude-opus-4-8[1m]",
+ "glm-5.2",
+ "qwen3.6-27b",
+ "qwen3.8-max"
+ ]
+ }
+ },
+ "required": [
+ "model"
+ ],
+ "type": "object"
+ },
+ "browsing": {
+ "description": "Browsing/computer-use model configuration",
+ "properties": {
+ "model": {
+ "description": "Model identifier for the browsing provider",
+ "enum": [
+ "gemini-2.5-pro",
+ "gemini-2.5-flash",
+ "gemini-3-pro-preview",
+ "claude-haiku-4-5",
+ "claude-sonnet-4-5",
+ "claude-opus-4-1"
+ ],
+ "type": "string"
+ },
+ "provider": {
+ "description": "Provider backing the browsing/computer-use model",
+ "enum": [
+ "google",
+ "anthropic"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "provider",
+ "model"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "agent",
+ "browsing"
+ ],
+ "type": "object"
+ },
+ "options": {
+ "additionalProperties": {},
+ "description": "Optional runtime options controlling how the agent executes",
+ "properties": {
+ "benchmarkExpectedOutcomes": {
+ "description": "Expected outcomes used when running benchmark scenarios",
+ "items": {
+ "properties": {
+ "criteria": {
+ "description": "Pass/fail criteria used to evaluate the outcome",
+ "type": "string"
+ },
+ "description": {
+ "description": "Human-readable description of the expected outcome",
+ "type": "string"
+ }
+ },
+ "required": [
+ "description",
+ "criteria"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "browserProvider": {
+ "description": "Browser infrastructure provider",
+ "enum": [
+ "browserbase",
+ "browser-use"
+ ],
+ "type": "string"
+ },
+ "evaluationSchemaId": {
+ "description": "ID of the evaluation schema to apply to runs of this agent",
+ "type": "string"
+ },
+ "supervisedMode": {
+ "description": "Run the agent under Duvo's permission classifier: every tool call is classified as allow/deny/ask, with 'ask' routed to human-in-the-loop approval. Mutually exclusive with browsing and computer-use connections.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "plugins": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": [],
+ "description": "Plugins to load — either a built-in plugin name (e.g. \"code-review\") or a GitHub URL (e.g. \"https://github.com/owner/repo\")"
+ },
+ "skills": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": [],
+ "description": "IDs of skills (team or system) that should be available to the agent"
+ },
+ "subAgents": {
+ "anyOf": [
+ {
+ "items": {
+ "format": "uuid",
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": [],
+ "description": "Retired — Sub-Assignments was removed. Accepted for backwards compatibility and ignored."
+ }
+ },
+ "required": [
+ "models",
+ "input"
+ ],
+ "type": "object"
+ },
+ "version": {
+ "const": "v2",
+ "description": "Schema version discriminator — must be \"v2\" for the current schema",
+ "type": "string"
+ }
+ },
+ "required": [
+ "version",
+ "data"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "data": {
+ "description": "Code step configuration payload",
+ "properties": {
+ "files": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": [],
+ "description": "Team file paths this step can read at run time"
+ },
+ "handoverRequired": {
+ "default": false,
+ "description": "When the step declares handover options, whether a run that exits cleanly without requesting one fails. Ignored when the step declares no options.",
+ "type": "boolean"
+ },
+ "language": {
+ "description": "Language the step's program is written in",
+ "enum": [
+ "python"
+ ],
+ "type": "string"
+ },
+ "maxConcurrency": {
+ "description": "Most runs of this step that may be in flight at once on one queue, on top of the queue's own concurrency. Absent means only the queue's limit applies. Every claim enforces it; only cases handed to the step (handover, postpone, reprocess) are also kept out of the queue's free slots while the step is full. Cases a trigger or a revision route sends straight to a capped step can still take queue slots and wait there, delaying other steps on the same queue.",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "source": {
+ "description": "Where the step's program comes from",
+ "oneOf": [
+ {
+ "properties": {
+ "code": {
+ "description": "Program held in the build config. Written to `main.py` and run with `python main.py`.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "inline",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "code"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "bundle": {
+ "description": "The program's files, as a content-addressed manifest",
+ "properties": {
+ "bucket": {
+ "description": "GCS bucket the bundle's blobs are stored in",
+ "minLength": 1,
+ "type": "string"
+ },
+ "files": {
+ "description": "The program's files, one manifest entry each",
+ "items": {
+ "properties": {
+ "path": {
+ "description": "Path the file is materialised at, relative to the work dir",
+ "minLength": 1,
+ "type": "string"
+ },
+ "sha256": {
+ "description": "Digest of the file's bytes, and the key its blob is stored at",
+ "maxLength": 64,
+ "minLength": 64,
+ "pattern": "^[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "sizeBytes": {
+ "description": "UTF-8 byte length of the file's contents",
+ "maximum": 131072,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "path",
+ "sha256",
+ "sizeBytes"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ }
+ },
+ "required": [
+ "bucket",
+ "files"
+ ],
+ "type": "object"
+ },
+ "kind": {
+ "const": "files",
+ "type": "string"
+ },
+ "startCommand": {
+ "description": "Command run from the root of the step's file system, e.g. \"python main.py\".",
+ "maxLength": 2000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "startCommand"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "timeoutMs": {
+ "default": 600000,
+ "description": "Wall-clock budget for one execution of the step",
+ "exclusiveMinimum": 0,
+ "maximum": 3600000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "language",
+ "source"
+ ],
+ "type": "object"
+ },
+ "version": {
+ "const": "v1",
+ "description": "Schema version discriminator — must be \"v1\" for the current code-step schema",
+ "type": "string"
+ }
+ },
+ "required": [
+ "version",
+ "data"
+ ],
+ "type": "object"
+ }
+]