iag-extract
OpenAPI-spec → IDF-онтология с auto-detected ownership, irreversibility-флагами и preapproval-guards. Работает на заранее настроенном petstore-примере за 2 минуты; на вашем OpenAPI — столько, сколько парсится.
1. Клонировать и поставить
git clone https://github.com/DubovskiyIM/idf-agent-gateway
cd idf-agent-gateway && npm install
2. Извлечь онтологию из demo OpenAPI
В репо есть demo/fake-petstore/openapi.yaml — реальный OpenAPI со схемами Pet и Order:
npm run iag-extract -- \
--openapi=demo/fake-petstore/openapi.yaml \
--out=demo/petstore-ontology.json
Ожидаемый вывод:
✓ wrote demo/petstore-ontology.json
entities: 2
intents: 5
preapproval: 1 intent protected (placeOrder)
3. Посмотреть, что вышло
cat demo/petstore-ontology.json | head -60
Обратите внимание:
entities.Pet.ownerField: "userId"— выведено по heuristic (совпадениеuserIdв schema)intents.deletePet.irreversibility: "high"— выведено из HTTP DELETE + cascade impactroles.agent.preapproval.placeOrder— 3 check'а (active,notExpired,maxAmount) предложены автоматически для amount-like intent'а
4. Подключить audit-mirror
Каждый выполненный intent через agent API попадает в SQLite store с chain-hash integrity:
npm run iag-audit -- mirror --source=http://localhost:3001 --domain=petstore
Audit-записи цепляются hash'ом предыдущей — post-hoc tamper detectable. Проверить chain:
npm run iag-audit -- verify --db=./iag-audit.sqlite
5. На своём OpenAPI
Замените --openapi=demo/fake-petstore/openapi.yaml на путь к вашему spec'у. Поддерживается OpenAPI 3.0 и 3.1.
Что гарантированно работает:
components.schemas→ IDFentitiesсfieldsиownerField(heuristic)paths.*.operations→ IDFintentsс verb-mapping (POST→create,PUT/PATCH→replace,DELETE→remove)description,summary,enum— попадают в онтологию
Что требует ручной доводки:
- Полная матрица
role.visibleFields(сейчас base-роли заданы по умолчанию) - Transition invariants для workflow-статусов — heuristic видит enum, но не знает допустимые переходы
- Ontology composition (R9) — межсущностные FK нужно явно указать
Для AI-обогащения сырого output'а — пакет @intent-driven/enricher-claude (subprocess к локально залогиненному claude CLI).
Полный integration test: npm test в репо — 35 tests pass, покрывает extract + audit + chain-verify.
Investor-уровень демо: demo/README.md — скрипт end-to-end walkthrough'а.