{"_id":"@adaptivemcp/approval","_rev":"4-1fda67c5a93e7f924afd4911a3a4a1df","name":"@adaptivemcp/approval","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.0":{"name":"@adaptivemcp/approval","version":"0.2.0","license":"MIT","_id":"@adaptivemcp/approval@0.2.0","maintainers":[{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"}],"dist":{"shasum":"7bb148467deb09a848b6cc93e89011741b95bd3b","tarball":"https://registry.npmjs.org/@adaptivemcp/approval/-/approval-0.2.0.tgz","fileCount":10,"integrity":"sha512-+INegY//a2G8cOpG58PI9NxVNGQXHkNQsaR7PCUbhiVJVtlSoooEdc2MvgSvA+0nhcSj7PY1TXQuKz3DTBOHSQ==","signatures":[{"sig":"MEQCIDLnI65RPBDPuAY3fYmL4ms+v2KtXKUxK0r6Nw0isbHmAiBMdq9wJ4dVcadFuXjEXSeGfE8FsJ/VsDeNRdnCoGIpcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10558},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c04f081b84978d143a021ad607fbb72ada829913","scripts":{"test":"vitest run --config ../../vitest.config.ts","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"},"_npmVersion":"12.0.1","description":"Intent, plan, and tool approval boundaries for Adaptive MCP.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@adaptivemcp/spec":"workspace:*","@adaptivemcp/memory":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/approval_0.2.0_1784449904590_0.9037034529632926","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@adaptivemcp/approval","version":"0.2.1","license":"MIT","_id":"@adaptivemcp/approval@0.2.1","maintainers":[{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"}],"dist":{"shasum":"3ba5e3fa12fa1370857adc0979d37da6469e68f2","tarball":"https://registry.npmjs.org/@adaptivemcp/approval/-/approval-0.2.1.tgz","fileCount":10,"integrity":"sha512-nvSfq89KB0Yo12w/r6i5uTgXZUnsIZJ5PmmiALIARcfE2IwSEtfa3oH6X3IAfEOA6Rdfesquftcl7S1s9jWTCA==","signatures":[{"sig":"MEUCIBPubpI9d17sG2jRfql/FN/EPVV8FIEWmTSVXZyhkycpAiEA7/iM158yo8n9vD5EGonQymZsHiqj5Ya0LVYEe8w70Os=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10900},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"67875dd46c157fcfce32192c63201c00105202d5","scripts":{"test":"vitest run --config ../../vitest.config.ts","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"},"_npmVersion":"12.0.1","description":"Intent, plan, and tool approval boundaries for Adaptive MCP.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@adaptivemcp/spec":"workspace:*","@adaptivemcp/memory":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/approval_0.2.1_1784454886815_0.7780354378024268","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@adaptivemcp/approval","version":"0.2.2","license":"MIT","_id":"@adaptivemcp/approval@0.2.2","maintainers":[{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"}],"dist":{"shasum":"c39449f2bb0322ae6c3fcf9075dbd06364fb4a30","tarball":"https://registry.npmjs.org/@adaptivemcp/approval/-/approval-0.2.2.tgz","fileCount":10,"integrity":"sha512-NduzPh263xen1O1Rh4o4+PNnDVeZEGhdzo2B604WvV/WoviD9T3VdJMd3unyefJ3av7Pnc71cNKCfzEm2cInfw==","signatures":[{"sig":"MEUCIQDuJkb3qvtK2ihgyfT1NyXXL/wX4PC5A9+wqy31VmBmVQIgKjVnbBk8u43vGtU/LLeouuq5RigE+N5KKdsM/Wlrt5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10900},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"00b51e676ad298a079f5de73e5cbea411fae39f2","scripts":{"test":"vitest run --config ../../vitest.config.ts","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"},"_npmVersion":"12.0.1","description":"Intent, plan, and tool approval boundaries for Adaptive MCP.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@adaptivemcp/spec":"workspace:*","@adaptivemcp/memory":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/approval_0.2.2_1784457362080_0.7691802912481744","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"_id":"@adaptivemcp/approval@0.2.3","dist":{"shasum":"10e8a6a507ba2cdeffff92d9f6d6ac5de53fbd3e","tarball":"https://registry.npmjs.org/@adaptivemcp/approval/-/approval-0.2.3.tgz","fileCount":10,"integrity":"sha512-ZlJCRXqUnG0G/mRvBAdarCUSXdSfGR4qn/xIBOvE2IOAen/p/HHu6y4p6cJemUG0q0z+hjdGM3V8xsun7gypYg==","signatures":[{"sig":"MEYCIQDimF9YZVP9ilWCNkjS0HeQb2IdIb7baia7J69ZU/MURQIhAMYUZDLcMTC1ruKLY6euz4NhpceTOZTHP5L+bEHFrgbr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEj84iLr/3ppwC8vFSmJu5wj+eJu0+thOr55O7unRRvyAiA4fRpD3jVm0mQ6qpU5hE0YnTkzwzFzcFIvzS6uhmL/6w=="}],"unpackedSize":12736},"main":"./dist/index.js","name":"@adaptivemcp/approval","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9ee97159d0137dc23b6a02008def6faa0f857092","license":"MIT","scripts":{"test":"vitest run --config ../../vitest.config.ts","build":"tsc -p tsconfig.json"},"version":"0.2.3","_npmUser":{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"},"_npmVersion":"12.1.0","description":"Intent, plan, and tool approval boundaries for Adaptive MCP.","directories":{},"maintainers":[{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"}],"_nodeVersion":"26.10.0","dependencies":{"@adaptivemcp/spec":"workspace:*","@adaptivemcp/memory":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/approval_0.2.3_1790580046428_0.15779618351762204"}}},"time":{"created":"2026-07-19T08:31:44.461Z","modified":"2026-09-28T07:20:46.920Z","0.2.0":"2026-07-19T08:31:44.715Z","0.2.1":"2026-07-19T09:54:46.943Z","0.2.2":"2026-07-19T10:36:02.215Z","0.2.3":"2026-09-28T07:20:46.513Z"},"license":"MIT","description":"Intent, plan, and tool approval boundaries for Adaptive MCP.","maintainers":[{"name":"kemalelmizan","email":"kemalelmizan@gmail.com"}],"readme":"# @adaptivemcp/approval\n\nIntent, plan, and tool approval experiments for Adaptive MCP.\n\n> **Status:** published to npm as `@adaptivemcp/approval`. It is the\n> enforcement hook for autonomy boundaries.\n\n`approval` is the enforcement hook for autonomy boundaries. Given a tool name,\nit returns an allow/confirm/deny decision based on its learned risk and\nflakiness.\n\n## Usage\n\n```ts\nimport { MemoryStore } from \"@adaptivemcp/memory\";\nimport { ApprovalGate } from \"@adaptivemcp/approval\";\n\nconst memory = new MemoryStore();\nconst gate = new ApprovalGate({ memory });\n\n// Before a tool runs:\nconst decision = gate.gate(\"deploy_service\");\n// -> \"allow\" | \"require_confirmation\" | \"deny\"\n// High-risk tools (annotation risk: \"high\") or flaky tools require confirmation.\n```\n\n## What it does\n\n- `gate(toolName)` → `\"allow\" | \"require_confirmation\" | \"deny\"`.\n- `isFlaky(toolName)`: predicate used by the gate and other packages.\n\n### Defaults\n\n| Option | Default |\n| --- | --- |\n| `confirmRiskLevels` | `[\"high\"]` |\n| `flakyFailureRate` | `0.2` |\n| `minInvocations` | `10` |\n\n## Open questions\n\nWhat should users approve? Can approval boundaries adapt? How much autonomy\nshould agents receive? See the root [`AGENTS.md`](../../AGENTS.md).\n\n## License\n\nReleased under the [MIT License](../../LICENSE). Copyright (c) 2026 Kemal Elmizan.\n","readmeFilename":"README.md"}