API Reference

Programmatic API for parsing, validating, and working with Aexol specifications in TypeScript/JavaScript.

Quick Start

npm install @aexol/parser
import { Parser, Validator } from "@aexol/parser";

const ast = new Parser(`
type User {
  id: string
  name: string
  email: string
}
`).parse();

const result = new Validator(ast).validate();
console.log(result.isValid); // true

Package Exports

ExportKindPurpose
ParserClassParse source code into AST
ValidatorClassValidate AST for semantic correctness
LexerClassTokenize Aexol source
TokenizerClassToken stream with lookahead
parseAexolFunctionConvenience parse function
TokenTypeEnumToken type constants

Parser API

import { Parser } from "@aexol/parser";

const parser = new Parser(source, {
  includePositions: true, // Attach line/column to AST nodes
  recoverFromErrors: true, // Continue parsing after errors
});

const ast = parser.parse();
// ast.types, ast.visitors, ast.agents, ast.workflows, ast.roles, ast.enums

AST Shape

NodeKey fields
TypeDefinitionname, fields[]
FieldDefinitionname, type, isArray, isOptional
VisitorDefinitionname?, capabilities[], position?
Capabilityverb, target, conditions?[], nested?[]
WorkflowDefinitionstates, transitions
AgentDefinitionname, role?, capabilities[]

Error Handling

try {
  parser.parse();
} catch (error) {
  if (error instanceof SyntaxError) {
    console.error(error.message, `line ${error.line}`);
  }
}

Validator API

const result = new Validator(ast).validate();
// result.isValid, result.errors[], result.warnings[], result.infos[]

interface Diagnostic {
  severity: "error" | "warning" | "info";
  message: string;
  line?: number;
  column?: number;
  code?: string;
}

Validation Rules

CheckError
Unique namesTypes, visitors, agents, roles, workflows must be unique
Anonymous visitorAt most one unnamed visitor per spec
Valid referencesType references must resolve to existing types
Valid verbsCapability verbs must be recognized
Workflow statesTransitions must reference defined states
Circular refsNo infinite recursion in required fields

Options

new Validator(ast, {
  strictMode: true,
  allowUnknownVerbs: false,
});

Complete Example

import { Parser, Validator } from "@aexol/parser";

async function processAexol(source: string) {
  const ast = new Parser(source).parse();
  const result = new Validator(ast).validate();

  if (!result.isValid) {
    for (const err of result.errors) {
      console.error(`[${err.severity}] ${err.message}`);
    }
    return;
  }

  console.log(`Types: ${ast.types.length} | Visitors: ${ast.visitors.length}`);
  console.log("✅ Valid specification!");
}

Remote MCP Tools

For AI assistant integration, use the backend MCP endpoint.

Endpoint: https://api.aexol.ai/mcp Protocol: JSON-RPC 2.0 Auth: Authorization: Bearer sk-aexol-team-... Methods: initialize, ping, tools/list, tools/call

Tool Catalog

ToolCategoryPurpose
remote_start_inferenceGenerationStart artifact generation (single or batch)
remote_get_inference_taskGenerationRetrieve/wait for generation results
remote_list_inference_tasksGenerationList generation tasks
remote_cancel_inference_taskGenerationCancel a running task
remote_refine_inference_artifactRefinementRefine a generated artifact
remote_refine_aexol_contentRefinementRefine raw Aexol content
remote_start_fromImportGenerate Aexol from text/document
remote_get_from_taskImportRetrieve/wait for import results
remote_list_from_tasksImportList import tasks
remote_ingest_cloud_documentKnowledgeUpload document to knowledge base
remote_cloud_searchKnowledgeSearch knowledge base chunks
remote_list_cloud_documentsKnowledgeList cloud documents (paginated)
remote_get_cloud_documentKnowledgeGet document by ID
remote_update_cloud_documentKnowledgeUpdate document fields
remote_delete_cloud_documentKnowledgeDelete document
remote_set_contextSessionSet default team/project scope
remote_get_contextSessionGet effective context
remote_clear_contextSessionClear session defaults
remote_wait_taskUtilityUnified waiter for inference/from tasks

Full setup: Remote MCP Configuration | Working with AI & IDEs


CLI Analysis

aexol analyze app.aexol

Outputs: type count, visitor count, workflow count, total capabilities, nesting depth, complexity rating.


Next Steps