f808abff86
Fix JSON syntax errors in .devcontainer/devcontainer.json (removed
invalid JS-style // comments) and .devcontainer/opencode.json (removed
90+ trailing commas). Apply auto-fixes for end-of-file and trailing
whitespace issues across 100+ files. Fix SIM105 ruff violations in
benchmarks/core_circuit_breaker_bench.py (use contextlib.suppress).
Note: The security fix from issue #7478 (validate_path startswith bypass)
was already delivered to master in commit e18ac5f2. This PR as currently
structured is non-atomic (35 commits across 10+ issues) and needs
significant restructure before merge. This commit only addresses the
CI/pre-commit failures.
ISSUES CLOSED: #7478
227 lines
7.8 KiB
YAML
227 lines
7.8 KiB
YAML
# ============================================================================
|
|
# CleverAgents Action Configuration Schema
|
|
# ============================================================================
|
|
#
|
|
# Formal YAML schema definition for action configuration files.
|
|
# Actions are reusable plan templates created via:
|
|
# agents action create --config <file>
|
|
#
|
|
# This schema is based on the formal JSON Schema defined in
|
|
# docs/specification.md (Section "Action Configuration Files → JSON Schema",
|
|
# lines 15651-15788).
|
|
#
|
|
# Schema Version: 1
|
|
# ============================================================================
|
|
|
|
schema_version: "1"
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Top-Level Fields
|
|
# ----------------------------------------------------------------------------
|
|
|
|
fields:
|
|
# ─── Identity ─────────────────────────────────────────────────
|
|
name:
|
|
type: string
|
|
required: true
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Fully qualified action name in <namespace>/<name> format.
|
|
Examples: local/code-coverage, myorg/security-audit
|
|
|
|
description:
|
|
type: string
|
|
required: true
|
|
description: >
|
|
Short (one-line) description of the action.
|
|
|
|
long_description:
|
|
type: string
|
|
required: false
|
|
description: >
|
|
Detailed multi-line description explaining purpose, usage,
|
|
and expected outcomes.
|
|
|
|
# ─── Lifecycle Actors ─────────────────────────────────────────
|
|
strategy_actor:
|
|
type: string
|
|
required: true
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor to use during the Strategize phase.
|
|
Must reference a registered actor by namespaced name.
|
|
|
|
execution_actor:
|
|
type: string
|
|
required: true
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor to use during the Execute phase.
|
|
Must reference a registered actor by namespaced name.
|
|
|
|
estimation_actor:
|
|
type: string
|
|
required: false
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor for effort and cost estimation before execution.
|
|
|
|
review_actor:
|
|
type: string
|
|
required: false
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor for reviewing execution results.
|
|
|
|
apply_actor:
|
|
type: string
|
|
required: false
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor to use during the Apply phase.
|
|
|
|
invariant_actor:
|
|
type: string
|
|
required: false
|
|
pattern: "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$"
|
|
description: >
|
|
Actor for reconciling conflicting invariants across scopes.
|
|
|
|
# ─── Completion Criteria ──────────────────────────────────────
|
|
definition_of_done:
|
|
type: string
|
|
required: true
|
|
description: >
|
|
Clear, measurable criteria that define when the action's
|
|
work is complete.
|
|
|
|
# ─── Action Properties ────────────────────────────────────────
|
|
reusable:
|
|
type: boolean
|
|
required: false
|
|
default: true
|
|
description: >
|
|
Whether the action persists after being used.
|
|
If false, the action is archived after first use.
|
|
|
|
read_only:
|
|
type: boolean
|
|
required: false
|
|
default: false
|
|
description: >
|
|
Whether the action is restricted to read-only operations.
|
|
Read-only actions must only use tools with read_only: true.
|
|
|
|
state:
|
|
type: string
|
|
required: false
|
|
enum: [available, archived]
|
|
default: available
|
|
description: >
|
|
State of the action. Only 'available' and 'archived' are valid.
|
|
|
|
# ─── Arguments ────────────────────────────────────────────────
|
|
arguments:
|
|
type: array
|
|
required: false
|
|
description: >
|
|
Typed parameters that users supply when using the action
|
|
via 'agents plan use --arg name=value'.
|
|
items:
|
|
type: object
|
|
required_fields: [name, type]
|
|
additional_properties: false
|
|
fields:
|
|
name:
|
|
type: string
|
|
required: true
|
|
description: "Argument name. Used as key in --arg name=value."
|
|
type:
|
|
type: string
|
|
required: true
|
|
enum: [string, integer, float, boolean, list]
|
|
description: "Data type of the argument."
|
|
required:
|
|
type: boolean
|
|
required: false
|
|
default: false
|
|
description: "Whether the argument must be provided."
|
|
description:
|
|
type: string
|
|
required: false
|
|
description: "Human-readable description shown in help text."
|
|
default:
|
|
type: any
|
|
required: false
|
|
description: >
|
|
Default value when the argument is not provided.
|
|
Type must match the 'type' field.
|
|
validation_pattern:
|
|
type: string
|
|
required: false
|
|
description: "Regex pattern for validating string arguments."
|
|
min_value:
|
|
type: number
|
|
required: false
|
|
description: "Minimum acceptable value for integer/float arguments."
|
|
max_value:
|
|
type: number
|
|
required: false
|
|
description: "Maximum acceptable value for integer/float arguments."
|
|
|
|
# ─── Automation ───────────────────────────────────────────────
|
|
automation_profile:
|
|
type: string
|
|
required: false
|
|
description: >
|
|
Default automation profile for plans created from this action.
|
|
References a named automation profile (e.g., local/cautious, trusted).
|
|
|
|
# ─── Invariants ───────────────────────────────────────────────
|
|
invariants:
|
|
type: array
|
|
required: false
|
|
items:
|
|
type: string
|
|
description: >
|
|
Constraints carried forward as plan-level invariants when
|
|
the action is used. Invariants are trimmed, de-duplicated,
|
|
and blanks are dropped during validation.
|
|
|
|
# ─── Inputs Schema (Advanced) ─────────────────────────────────
|
|
inputs_schema:
|
|
type: object
|
|
required: false
|
|
description: >
|
|
Optional JSON Schema dict for advanced input validation
|
|
beyond basic argument types. Allows complex nested validation
|
|
rules for action inputs.
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Constraints
|
|
# ----------------------------------------------------------------------------
|
|
|
|
required: [name, description, strategy_actor, execution_actor, definition_of_done]
|
|
additional_properties: false
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Key Normalization
|
|
# ----------------------------------------------------------------------------
|
|
# The schema loader accepts camelCase keys and normalizes them to snake_case:
|
|
# strategyActor -> strategy_actor
|
|
# executionActor -> execution_actor
|
|
# definitionOfDone -> definition_of_done
|
|
# longDescription -> long_description
|
|
# estimationActor -> estimation_actor
|
|
# reviewActor -> review_actor
|
|
# applyActor -> apply_actor
|
|
# invariantActor -> invariant_actor
|
|
# readOnly -> read_only
|
|
# automationProfile -> automation_profile
|
|
# inputsSchema -> inputs_schema
|
|
# validationPattern -> validation_pattern
|
|
# minValue -> min_value
|
|
# maxValue -> max_value
|
|
# schemaVersion -> schema_version
|
|
# Legacy camelCase keys emit a warning but are accepted.
|