72 lines
1.8 KiB
Plaintext
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,
|
||
|
|
},
|
||
|
|
}
|