decision-table
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.
Разработка из исходного кода
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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/tetracoralla/decision-table'
If you have feedback or need assistance with the MCP directory API, please join our Discord server