axint
Слой сжатия для AI-агентов в экосистеме Apple
AI-агенты для написания кода платят за каждый токен. API Apple — App Intents, SwiftUI, WidgetKit — очень многословны. Для создания одного виджета требуются TimelineEntry, TimelineProvider, EntryView и структура Widget еще до того, как вы напишете хоть строчку бизнес-логики.
Axint сжимает всё это. Одно определение на TypeScript компилируется в идиоматичный, готовый к продакшену Swift без лишнего шаблонного кода. Интент сжимается примерно в 4 раза. Представление — в 4 раза. Виджет сжимается в 13 раз.
┌───────────────────────────────────────────┐
│ defineIntent() defineView() │ TypeScript / Python / JSON
│ defineWidget() defineApp() │
└───────────────────┬───────────────────────┘
│ axint compile
┌─────────┼─────────┐─────────┐
▼ ▼ ▼ ▼
┌────────┐ ┌───────┐ ┌────────┐ ┌──────┐
│ .swift │ │ .swift│ │ .swift │ │.swift│
│ .plist │ │ │ │ │ │ │
│ .entl. │ │ │ │ │ │ │
└────────┘ └───────┘ └────────┘ └──────┘
App Intent SwiftUI WidgetKit App
for Siri View Widget ScaffoldRelated MCP server: xcode-mcp
Почему Axint
Четыре поверхности Apple, один компилятор. App Intents, представления SwiftUI, виджеты WidgetKit и каркасы приложений компилируются через один и тот же конвейер.
Настоящий парсер AST TypeScript. Использует API компилятора TypeScript (как и
tsc), а не регулярные выражения. Полная точность типов и диагностика с указанием строк/столбцов.MCP-native с режимом JSON-схемы. Тринадцать инструментов, доступных любому MCP-клиенту. Инструмент
axint.schema.compileпринимает минимальный JSON (~20 токенов) и возвращает скомпилированный Swift — AI-агенты полностью пропускают TypeScript и экономят еще больше токенов.Точность нативных типов.
int → Int,double → Double,date → Date,url → URL,duration → Measurement<UnitDuration>. Значения по умолчанию и опциональность сохраняются от начала до конца.150 диагностических кодов (
AX000–AX999) с предложениями по исправлению и цветовой индикацией вывода. Валидаторы интентов, сущностей, представлений, виджетов, приложений, конкурентности Swift и Live Activities имеют свои диапазоны ошибок.Компиляция за доли миллисекунды. Песочница axint.ai запускает полный компилятор прямо в браузере без обращения к серверу.
500 тестов. Парсер, валидатор, генератор, пути вывода, представления, виджеты, приложения, режим наблюдения, песочница, MCP, конкурентность Swift и Live Activities — всё покрыто тестами.
Кросс-языковое промежуточное представление (IR). Промежуточное представление — это JSON, не зависящий от языка. TypeScript, Python и «сырой» JSON подаются в один и тот же генератор. Новые языковые фронтенды подключаются без изменения Swift-эмиттера.
Apache 2.0, без CLA. Форкайте, расширяйте, используйте в проектах.
Быстрый старт
npm install -g @axint/compiler
# Or run without installing
npx @axint/compiler compile my-intent.ts --stdoutИнтент
import { defineIntent, param } from "@axint/compiler";
export default defineIntent({
name: "CreateEvent",
title: "Create Calendar Event",
description: "Creates a new event in the user's calendar.",
domain: "productivity",
params: {
title: param.string("Event title"),
date: param.date("Event date"),
duration: param.duration("Event duration", { default: "1h" }),
location: param.string("Location", { required: false }),
},
});Представление
import { defineView, prop, state, view } from "@axint/compiler";
export default defineView({
name: "EventCard",
props: {
title: prop.string(),
date: prop.date(),
},
state: {
isExpanded: state.boolean(false),
},
body: [
view.vstack({ alignment: "leading", spacing: 8 }, [
view.text("entry.title"),
view.conditional("isExpanded", [view.text("entry.date")]),
]),
],
});Виджет
import { defineWidget, entry, view } from "@axint/compiler";
export default defineWidget({
name: "EventCountdown",
displayName: "Event Countdown",
description: "Shows time until the next event.",
families: ["systemSmall", "systemMedium"],
entry: {
eventName: entry.string("Untitled"),
minutesUntil: entry.int(0),
},
body: [
view.vstack({ alignment: "center", spacing: 4 }, [
view.text("entry.eventName"),
view.text("entry.minutesUntil"),
]),
],
});Приложение
import { defineApp, scene, storage } from "@axint/compiler";
export default defineApp({
name: "WeatherApp",
scenes: [
scene.windowGroup("WeatherDashboard"),
scene.settings("SettingsView", { platform: "macOS" }),
],
appStorage: {
useCelsius: storage.boolean("use_celsius", true),
lastCity: storage.string("last_city", "Cupertino"),
},
});Скомпилируйте любой из них:
axint compile my-intent.ts --out ios/Intents/
axint compile my-view.ts --out ios/Views/
axint compile my-widget.ts --out ios/Widgets/
axint compile my-app.ts --out ios/App/Режим наблюдения (Watch mode)
Для итеративной разработки axint watch перекомпилирует код при каждом сохранении:
axint watch ./intents/ --out ios/Intents/ --emit-info-plist --emit-entitlements
axint watch my-intent.ts --out ios/Intents/ --format --swift-buildДебаунс 150 мс, встроенные ошибки и опциональная сборка swift build после каждой успешной компиляции.
MCP-сервер
Axint поставляется с axint-mcp, сервером протокола Model Context Protocol для Claude Desktop, Claude Code, Cursor, Windsurf и любого другого MCP-клиента.
{
"mcpServers": {
"axint": {
"command": "axint-mcp",
"args": []
}
}
}Тринадцать инструментов (имена через точку — старые псевдонимы с подчеркиванием всё еще работают):
Инструмент | Что он делает |
| Генерирует полный пакет функций по описанию |
| Предлагает нативные функции Apple для заданного домена |
| Генерирует стартовый TypeScript-интент по описанию |
| Полный конвейер: TypeScript → Swift + plist + entitlements |
| Пробная валидация с диагностикой |
| Минимальный JSON → Swift (режим экономии токенов для AI) |
| Валидация существующего Swift по правилам сборки Axint |
| Автоисправление механических ошибок Swift (конкурентность, LA) |
| Список встроенных эталонных шаблонов |
| Возвращает исходный код конкретного шаблона |
| Получить руководство по быстрому старту Axint |
| Создать новый интент из параметров |
| Создать новый виджет из параметров |
Режим схемы — ключевая оптимизация для агентов: вместо генерации TypeScript и последующей компиляции, агенты отправляют ~20 токенов JSON и получают скомпилированный Swift напрямую.
Диагностика
150 диагностических кодов в восьми валидаторах:
Диапазон | Домен |
| Компилятор / Парсер |
| Интент |
| Вывод Swift |
| Представление |
| Виджет |
| Приложение |
| Правила сборки Swift |
| Конкурентность Swift 6 |
| Live Activities |
error[AX100]: Intent name "sendMessage" must be PascalCase
--> src/intents/messaging.ts:5:9
= help: rename to "SendMessage"Полный справочник см. в docs/ERRORS.md.
Поддерживаемые типы
TypeScript | Swift | Поддержка значений по умолчанию |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| — |
|
| ✓ (например, |
|
| — |
|
| ✓ |
Попробуйте в браузере
Установка не требуется: axint.ai/#playground запускает весь компилятор в браузере без обращения к серверу.
Требования
Node.js 22+
Любая ОС: macOS, Linux, Windows
Xcode 15+ (только для отправки сгенерированного Swift на платформу Apple)
Структура проекта
axint/
├── src/
│ ├── core/ # Parser, validator, generator, compiler, types, IR
│ ├── sdk/ # defineIntent(), defineView(), defineWidget(), param/prop/state/entry helpers
│ ├── mcp/ # MCP server (13 tools including JSON schema mode)
│ ├── cli/ # axint CLI (compile, watch, validate, eject, init, xcode)
│ └── templates/ # Intent template registry (25 templates)
├── python/ # Python SDK with native Swift codegen
├── extensions/ # Claude Code, Codex, Cursor, Windsurf, Zed, JetBrains, Xcode
├── spm-plugin/ # Xcode SPM build plugin
├── tools/ # swift-syntax helper binary (POC)
├── tests/ # 500 vitest tests
├── examples/ # Example definitions
└── docs/ # Error reference, research, assetsУчастие в разработке
Мы рассматриваем PR в течение 48 часов. С чего начать:
Просмотрите задачи с меткой
good first issueДобавьте шаблон для распространенного сценария использования
Улучшите диагностику с помощью более качественных предложений по исправлению
См. CONTRIBUTING.md. Apache 2.0, без CLA.
Дорожная карта
См. ROADMAP.md. Основное:
[x] Четыре цели компиляции: интенты, представления, виджеты, приложения
[x] MCP-сервер с режимом JSON-схемы (6 инструментов)
[x] 91 диагностический код с предложениями по исправлению
[x] Режим
--watchс--swift-build[x] Расширение для VS Code / Cursor
[x] Python SDK с нативной генерацией кода Swift
[x] Плагин сборки SPM для Xcode + плагин проекта Xcode
[x]
axint ejectдля вывода Swift без зависимостей[x] Кросс-языковой мост IR (TS, Python, JSON)
[x]
defineApp()— компиляция каркаса полноценного приложения[ ]
defineExtension()— компиляция расширений приложений[ ] Axint Cloud (хостинговая компиляция)
Лицензия
Apache 2.0 — форкайте, расширяйте, используйте. Без CLA.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/agenticempire/axint'
If you have feedback or need assistance with the MCP directory API, please join our Discord server