Перейти к основному содержимому

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 impact
  • roles.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 → IDF entities с fields и ownerField (heuristic)
  • paths.*.operations → IDF intents с verb-mapping (POSTcreate, PUT/PATCHreplace, DELETEremove)
  • 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'а.