Parity with TypeScript
The Python SDK is parity-bound to the TypeScript SDK — every feature the TS surface exposes will eventually be available in Python, because both speak the same language-agnostic Intermediate Representation.
Supported today (0.1.0a1)
define_intent()— all required and optional fieldsparam.*— every parameter type, includingoptionalanddefaultentitlements— list of entitlement identifiersinfo_plist_keys— list of Info.plist usage keysis_discoverable— flag for Siri/Shortcuts discoverability- Multi-intent files — parse any number of intents from a single
.pyfile IntentIR.to_dict()— emits the exact camelCase JSON schema the TS compiler consumesIntentIR.from_dict()— round-trip IR JSON back into dataclasses- CLI:
axint parse,axint compile(via TS handoff)
Ships in 0.3.0
- Direct Swift codegen — currently
axint compileshells out to@axint/compiler. In 0.3.0 the Python package will ship its own generator so it works without Node. - Return-type inference — walking Python function bodies for
returnstatements, the same trick the TS compiler does. - MCP server —
python -m axint.mcpwill start an MCP server for AI assistants that prefer Python. - Deeper validator integration — running the full AX100-series validator rules on Python-authored intents.
Won’t ever support
- Arbitrary Python expressions as parameter values. The parser is
deliberately AST-only and never executes user code. If you write
param.string(compute_description()), the parser will flag AXP007 becausecompute_description()isn’t a string literal. This is a safety feature, not a limitation. - Runtime performance of
perform(). Axint is a compile-time tool — theperform()body never runs in Python. It gets transpiled to a Swift stub that you implement yourself.