Vapora/schemas/agents/task_assignment.ncl
2026-01-14 21:12:49 +00:00

72 lines
1.8 KiB
Plaintext

# Schema for agent task assignment
# Used by AgentCoordinator for internal task assignment validation
{
schema_name = "task_assignment",
description = "Validates agent task assignment requests from AgentCoordinator",
fields = {
# Agent role - must match registered roles
role
| String
| doc "Agent role for task execution"
| std.string.NonEmpty
| std.enum.TaggedUnion
| [| 'developer, 'reviewer, 'architect, 'tester, 'documenter, 'devops, 'monitor, 'security |],
# Task title
title
| String
| doc "Task title (3-500 chars)"
| std.string.NonEmpty
| std.string.length.min 3
| std.string.length.max 500,
# Task description
description
| String
| doc "Detailed task description"
| default = "",
# Task context (JSON string)
context
| String
| doc "JSON context for task execution"
| default = "{}",
# Priority score (0-100)
priority
| Number
| doc "Task priority score (0=lowest, 100=highest)"
| std.number.between 0 100
| default = 50,
# Optional deadline (ISO 8601 datetime string)
deadline
| String
| doc "Task deadline (ISO 8601 format, optional)"
| default = "",
},
# Custom validation contracts
contracts = {
# Title must not be only whitespace
title_not_whitespace = fun fields =>
std.string.trim fields.title != "",
# Context must be valid JSON
context_valid_json = fun fields =>
if fields.context == "{}" then
true
else
std.string.is_match "^[\\{\\[]" fields.context,
# If deadline is provided, must match ISO 8601 pattern
deadline_iso8601 = fun fields =>
if fields.deadline == "" then
true
else
std.string.is_match "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}" fields.deadline,
},
}