Skip to main content

Manifest Fields Reference

Every Semantic Manifest field, and the annotation attribute it is generated from. The JSON Schema that enforces these fields is described in Manifest Schema.

Top-Level Fields​

FieldTypeRequiredFilled from
versionstringMUSTSpecification version of the generator ("1.1.0")
generated_atstring (ISO 8601)MUSTTime of generation
sourceobjectMUSTurl, paths, tool, tool_version of the run
conformancestringMUSTComputed — see Conformance Levels
actionsAction[]MUSTOne entry per distinct axag-intent, sorted by intent
dynamic_actionsobject[]MAYAnnotations that couldn't be read at build time and are registered at runtime instead (1.1). Each has source_file, source_line and reason

When two elements declare the same intent, generators keep the first and report the second (AXAG-CORE-003).

Action Object​

FieldTypeRequiredFilled from
intentstringMUSTaxag-intent
entitystringMUSTaxag-entity, or the part of the intent before the dot
action_typestringMUSTaxag-action-type (read when absent)
descriptionstringMUSTaxag-description, or the intent in words (cart.add_item → Cart Add Item)
operation_idstringSHOULDaxag-operation-id, or the intent with . → _
required_parametersParameter[]SHOULDaxag-required-parameters
optional_parametersParameter[]MAYaxag-optional-parameters
risk_levelstringSHOULDaxag-risk-level
confirmation_requiredbooleanMUST (high/critical)axag-confirmation-required
approval_requiredbooleanMAYaxag-approval-required
approval_rolesstring[]MUST (if approval)axag-approval-roles
idempotentbooleanSHOULD (write/delete)axag-idempotent
asyncbooleanMAYaxag-async
scopestringSHOULDaxag-scope
tenant_boundarystringMAYaxag-tenant-boundary
required_rolesstring[]MAYaxag-required-roles
preconditionsstring[]MAYaxag-preconditions
postconditionsstring[]MAYaxag-postconditions
side_effectsstring[]MAYaxag-side-effects
element_selectorstringMAYCSS path, when read from a live page
source_file / source_linestring / integerMAYWhere the annotation was found

Optional fields appear only when the annotation declares them.

Parameter Object​

Besides declared parameters, generators add parameters from bound schemas and from form controls; see Schema Harvesting. Parameters listed by name ('["query"]') become { "name": "query", "type": "string" }. The object form carries types and constraints through unchanged:

axag-required-parameters='[{"name":"quantity","type":"integer","min":1,"max":99}]'
FieldTypeRequiredDescription
namestringMUSTParameter name
typestringMUSTstring, number, integer, boolean, array, object
descriptionstringMAYParameter description
enumany[]MAYAllowed values
min / maxnumberMAYNumeric bounds
minLength / maxLengthintegerMAYString length bounds
patternstringMAYRegular expression the value must match
formatstringMAYemail, url, date, datetime, uuid
defaultanyMAYValue used when omitted
itemsobjectMAYJSON Schema for array elements
propertiesobjectMAYJSON Schema properties for objects
sourcestringMAYharvested:html, zod or openapi for parameters not declared on the annotation — see Schema Harvesting

Example Manifest​

{
"version": "1.1.0",
"generated_at": "2026-09-14T10:30:00.000Z",
"source": { "url": "https://example.com", "paths": ["src"], "tool": "@web-axag/cli", "tool_version": "1.1.1" },
"conformance": "intermediate",
"actions": [
{
"intent": "product.search",
"entity": "product",
"action_type": "read",
"operation_id": "product_search",
"description": "Search the product catalog",
"required_parameters": [{ "name": "query", "type": "string" }],
"optional_parameters": [{ "name": "category", "type": "string" }],
"risk_level": "none",
"idempotent": true,
"scope": "public",
"source_file": "src/search.html",
"source_line": 12
}
]
}