Package Exports
- @intent-driven/runtime-local
Readme
@intent-driven/runtime-local
Standalone Fold-runtime для локального quickstart'а. Принимает ontology.js (сгенерированный idf full-bootstrap), поднимает HTTP-сервер с эндпоинтами, которые ожидает @intent-driven/mcp-server для подключения к Claude Desktop / Cursor / Zed.
Статус: v0.3 — stateful Φ через
@intent-driven/engine. Поддерживает/api/health,/api/typemap,/api/agent/:domain/schema(discovery),/api/state/current,/api/agent/:domain/world(fold снимок). agent/exec + approvals lifecycle — в следующих релизах (см. roadmap fold-15min).
Зачем
До этого пакета чтобы поднять Fold-runtime локально нужно было git clone idf + npm install + npm run server в host-репе. Это блокер коробочности: пользователь не должен знать про host. После этого пакета:
idf serve --ontology ./ontology.js # планируется в @intent-driven/cli
# или программно:
import { createRuntime } from '@intent-driven/runtime-local';
const runtime = createRuntime({
ontology: require('./ontology.js'),
seed: require('./seed.json'), // опц. — массив эффектов
});
await runtime.start();Установка
npm install @intent-driven/runtime-localPeer-зависимость: @intent-driven/core@>=0.49.0 (через @intent-driven/engine).
API
createRuntime(opts)
Создаёт runtime-инстанс. Не стартует сервер — для этого вызови .start().
| Опция | Тип | Default | Описание |
|---|---|---|---|
ontology |
object | required | IDF ontology — { entities, intents, roles, projections, ... }. |
seed |
array | [] |
Pre-confirmed эффекты для начального состояния Φ. Каждый — {id, intent_id, alpha, target, context, value?, status: 'confirmed', created_at}. Primitive value (строки/числа) нормализуются в JSON-encoded автоматически. |
port |
number | 3001 |
Порт. 0 = random (для тестов). |
host |
string | '127.0.0.1' |
Bind-адрес. |
Возвращает { app, ontology, domain, engine, persistence, start(), stop() }. engine — instance @intent-driven/engine, для прямого использования (e.g., тесты).
runtime.start() → Promise<{url, port, host}>
Поднимает Express-сервер. Загружает seed в persistence перед listen. Возвращает actual URL/port (полезно при port: 0).
runtime.stop() → Promise<void>
Закрывает сервер.
Эндпоинты
| Метод | Путь | Назначение |
|---|---|---|
GET |
/api/health |
Liveness check для idf doctor и MCP-server. Возвращает {status, domain, runtime, version}. |
GET |
/api/typemap |
Сводка ontology: entities/intents/roles names. |
GET |
/api/agent/:domain/schema |
Full ontology snapshot для MCP discovery. 503 если domain не совпадает. |
GET |
/api/state/current |
Folded world snapshot — {domain, world: {products: [...], orders: [...]}}. |
GET |
/api/agent/:domain/world |
Тот же world, что и /api/state/current. Этот endpoint вызывает @intent-driven/mcp-server для resource-чтения. 503 при mismatch domain. |
Roadmap (следующие PR)
- v0.4:
POST /api/agent/:domain/exec/:intentId— ingest черезengine.submitс invariant validation, ApprovalRequest auto-injection черезlifecycleAugmenter - v0.5:
GET /api/approvals/pending+POST /api/approvals/:id/approve|reject+ timer-driven expiry - v0.6:
GET /api/state/at?t=ISO+/api/state/diff?from=&to=— time-travel - v0.7: SSE-стрим
/api/approvals/streamдляidf approvals --watch
Лицензия
MIT. © Ignat Dubovsky.