Skip to main content
Glama
tetracoralla

decision-table

by tetracoralla

Decision Table

Decision Table — это детерминированный примитив принятия решений и ограничений для ИИ-агентов. Он выносит ограниченные бизнес-суждения из рассуждений модели в строгий, версионируемый, исполняемый IR.

Название продукта и стабильные идентификаторы пакета, CLI, плагина, Skill и MCP зафиксированы в docs/PRODUCT_IDENTITY.md.

Первый релиз предоставляет:

  • decision.evaluate: оценка фактов с политикой попаданий first, unique, collect или priority;

  • decision.validate: проверка модели и консервативное доказательство дублирующих, перекрывающихся или затенённых правил, где это поддерживается;

  • constraint.check: проверка предлагаемого кандидата с возвратом нарушений, отсутствующих входных данных и настроенных подсказок по исправлению;

  • constraint.check_approved: если настроено хостом, выполняет read-only проверку по точному утверждённому набору правил, который вызывающий код не может заменить или датировать задним числом;

  • одно общее ядро на TypeScript, JSON CLI, а также MCP-сервер и плагин Codex.

Установка в Codex

codex plugin marketplace add tetracoralla/decision-table --ref main
codex plugin add decision-table@decision-table

После установки начните новую задачу Codex, чтобы Skill и MCP-инструменты загрузились из установленного плагина. Учётная запись npm, npm-пакет или сборка из исходников не требуются; плагин содержит предварительно собранный MCP-сервер, и ему нужен только Node.js 20.19 или новее в PATH.

Корень репозитория — это маркетплейс, а plugins/decision-table — устанавливаемый плагин. Сведения об обновлении, удалении и проверке см. в docs/INSTALLATION.md.

Используйте обычные запросы, например:

  • «Проверь этот набор правил принятия решений, прежде чем я начну его использовать».

  • «Оцени этот набор правил на основе этих фактов».

  • «Проверь, удовлетворяет ли это предлагаемое действие этим ограничениям».

Decision Table распространяется с GitHub как плагин Codex. Node-пакет в этом репозитории является приватным и существует только для сборки, тестирования и локальной разработки библиотеки; он не публикуется в npm.

Related MCP server: agent-orchestrator

Разработка из исходного кода

npm install
npm run check

Для локальной разработки плагина добавьте сам каталог этого репозитория как маркетплейс и проверьте исходный плагин с помощью npm run check:plugin.

CLI

npm run cli -- validate examples/payment-approval.decision.json
npm run cli -- evaluate examples/payment-approval.decision.json \
  --facts examples/payment-approval.facts.json \
  --expected-version 1.0.0
npm run cli -- check examples/email-marketing.constraint.json \
  --candidate examples/email-marketing.candidate.json \
  --facts examples/email-marketing.facts.json

Все выходные данные — в формате JSON. Используйте - вместо пути к входному файлу, чтобы прочитать соответствующий документ из stdin. Опции, не определённые для выбранной команды, отклоняются. Набор правил, факты и документ кандидата используют один общий совокупный лимит 256 KiB.

Для точной привязки содержимого передавайте и --expected-version, и --expected-fingerprint <sha256>.

Утверждённые проверки и контроль на стороне хоста

Вызов constraint.check в коде носит рекомендательный характер, поскольку набор правил предоставляет вызывающий код. Для read-only анализа с политикой, одобренной хостом, привяжите набор правил перед запуском MCP-сервера:

import {
  createApprovedConstraintChecker,
  createConstraintExecutionGuard,
  fingerprintRuleset,
} from "@openadam/decision-table";

const expected = {
  id: approvedRuleset.id,
  version: approvedRuleset.version,
  fingerprint: fingerprintRuleset(approvedRuleset),
};
const checker = createApprovedConstraintChecker({ ruleset: approvedRuleset, expected });

Входящий в комплект stdio-сервер предоставляет constraint.check_approved, когда его хост задаёт DECISION_TABLE_APPROVED_CONSTRAINT_JSON как тот же строгий объект привязки. Агент не может заменить политику или датировать проверку задним числом, но он по-прежнему предоставляет кандидата и факты, поэтому этот read-only MCP-инструмент не является границей выполнения.

Для управляемого побочного эффекта держите конструирование кандидата, загрузку доверенных фактов, проверку и выполнение внутри контекста, принадлежащего хосту:

const guard = createConstraintExecutionGuard(checker, async (action, run) =>
  database.transaction(async (transaction) =>
    run({
      candidate: candidateFromActualAction(action),
      facts: await loadTrustedFacts(transaction, action),
      execute: (sameActionSnapshot) =>
        executeActualAction(transaction, sameActionSnapshot),
    }),
  ),
);

const outcome = await guard.execute(actualToolArguments);

Ограничитель делает снимок фактического действия, блокирует исполнителя, если ограничения не возвращают valid, и передаёт этот же замороженный снимок на выполнение. Контекст, принадлежащий хосту, — это место, где транзакция или блокировка должна сохранять изменчивые факты действительными на протяжении побочного эффекта. Ограничитель — это граница библиотеки и намеренно не является MCP-инструментом, вызываемым Агентом.

Структура набора правил

Условия — это тегированные данные, а не исполняемые строки:

{
  "op": "compare",
  "left": { "kind": "fact", "path": "amount" },
  "comparator": "gte",
  "right": { "kind": "literal", "value": "10000" }
}

Десятичные входные значения — это строки. Отсутствующие пути порождают UNKNOWN; они не приводятся к false. Значения даты и времени требуют реального календарного значения ISO, явного смещения, секунд и точности не более миллисекунды. Полную границу продукта см. в examples/ и docs/PRODUCT_MODEL.md.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides deterministic AST graph queries and rule validation for AI coding agents via MCP tools, enabling structural intelligence without LLM calls.
    3 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Deterministic logical reasoning server for MCP clients that compiles facts, rules, and queries to Prolog and returns exact answers with proof trees.
    4
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI agents to perform auditable A* reasoning, import world graphs, incorporate physical carrier constraints, and maintain a learning knowledge base through a zero-dependency local MCP stdio service.
    MIT