/** * Aexol Language Parser — AST Node Types * * Pure type definitions for the Aexol abstract syntax tree, * shared by the parser, validator, and public API (mod.ts). */ export interface ASTNode { type: string; location: { start: number; end: number; line: number; column: number; }; } export interface Program extends ASTNode { type: "Program"; body: (RoleDefinition | VisitorDefinition | WorkflowDefinition | AgentDefinition | TypeDefinition)[]; } export interface VisitorDefinition extends ASTNode { type: "VisitorDefinition"; name?: string; description?: string; capabilities: CapabilityNode[]; } export interface CapabilityNode extends ASTNode { type: "Capability"; verb?: "can" | "had" | "must" | "should" | "may" | "will" | "shall" | "cannot"; action: string; description?: string; context?: string; nested?: CapabilityNode[]; conditions?: ConditionNode[]; metadata?: Record; } export interface ConditionNode extends ASTNode { type: "Condition"; expression: ExpressionNode; } export interface ExpressionNode extends ASTNode { type: "Expression"; operator?: string; left?: ExpressionNode; right?: ExpressionNode; value?: string | number | boolean; } export interface RoleDefinition extends ASTNode { type: "RoleDefinition"; name: string; description?: string; permissions: PermissionNode[]; inherits?: string[]; } export interface PermissionNode extends ASTNode { type: "Permission"; resource: string; description?: string; actions: string[]; conditions?: ConditionNode[]; } export interface WorkflowDefinition extends ASTNode { type: "WorkflowDefinition"; name: string; description?: string; steps: WorkflowStep[]; initialState: string; finalStates: string[]; } export interface WorkflowStep extends ASTNode { type: "WorkflowStep"; name: string; description?: string; action: string; transitions: Transition[]; parallel?: boolean; } export interface Transition extends ASTNode { type: "Transition"; from: string; to: string; description?: string; condition?: ConditionNode; metadata?: Record; } export interface AgentDefinition extends ASTNode { type: "AgentDefinition"; name: string; description?: string; agentKind: "domain" | "builder"; role: string; responsibilities: string[]; workflow?: string; capabilities: CapabilityNode[]; skills?: string[]; model?: string; maxConcurrent?: number; } export interface TypeDefinition extends ASTNode { type: "TypeDefinition"; name: string; description?: string; kind: "type" | "enum" | "interface"; fields?: TypeField[]; values?: string[]; extends?: string[]; } export interface TypeField extends ASTNode { type: "TypeField"; name: string; description?: string; fieldType: string; required: boolean; default?: string | number | boolean; } //# sourceMappingURL=nodes.d.ts.map