{"_id":"@adjudicate/approval-engine","_rev":"8-144807177799149f253a090a4ac480a2","name":"@adjudicate/approval-engine","dist-tags":{"latest":"0.3.4"},"versions":{"0.2.0":{"name":"@adjudicate/approval-engine","version":"0.2.0","_id":"@adjudicate/approval-engine@0.2.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"919a6a44241b98d063b4791bd8a582492db1294c","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.2.0.tgz","fileCount":39,"integrity":"sha512-5zVI2c/yGggiHoPLpPgVGv2puew9Rs1b8VtFyVo+qaluVZUuaJZrH6TJrqd6Mtj5bbMWt2AbIOvo1CQKU+v8cQ==","signatures":[{"sig":"MEUCIBeRz4SkQ7+zhFrGtvhjNDX1Movx0zRwBdFZZjMekZyEAiEA+WtLPA8KKJc6XYCR9VU4OWK8iGb8KpJs97yN27zqjsM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85085},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/835e9a72382191e59d55c351ba9ed34f/adjudicate-approval-engine-0.2.0.tgz","_integrity":"sha512-5zVI2c/yGggiHoPLpPgVGv2puew9Rs1b8VtFyVo+qaluVZUuaJZrH6TJrqd6Mtj5bbMWt2AbIOvo1CQKU+v8cQ==","_npmVersion":"11.10.0","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.3.0","@adjudicate/adapter-core":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.2.0_1780863214393_0.47275873931769175","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@adjudicate/approval-engine","version":"0.2.1","_id":"@adjudicate/approval-engine@0.2.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"ff6d6afa9f3fd306df7fd0bfe23759ca52c3fbb6","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.2.1.tgz","fileCount":39,"integrity":"sha512-eWXS91VQfWmgT4dwvG2Y6D7oMafnF+b+JbCpMSOYzfl6LFjuyRWMOhpm1/0xWuR39zyJAqcZDfdfz9/n9kI8gw==","signatures":[{"sig":"MEYCIQCctd/eDxoKIEnXTPjHtnNb3guL85y2mY4VYaOZ0BNvIQIhAP8tC6201V388hz3w5iOwKYRYzNwGeUYQb8W81G+zV79","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85148},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/029926e945de4370d9de78ca0deb0f07/adjudicate-approval-engine-0.2.1.tgz","_integrity":"sha512-eWXS91VQfWmgT4dwvG2Y6D7oMafnF+b+JbCpMSOYzfl6LFjuyRWMOhpm1/0xWuR39zyJAqcZDfdfz9/n9kI8gw==","_npmVersion":"11.10.0","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.3.0","@adjudicate/adapter-core":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.2.1_1781145189929_0.5103828377960453","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@adjudicate/approval-engine","version":"0.2.2","_id":"@adjudicate/approval-engine@0.2.2","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"c5d99fe566b31cc7e6946c0780b6a052afd4ba43","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.2.2.tgz","fileCount":39,"integrity":"sha512-RSlCtvTY8wVP4yXtfUb45GublEZfNmmRiXWSgypCedqgWtiFI/so+YsBHdAhFTeOBbbFjbUm7V/aX0lPzsVeIw==","signatures":[{"sig":"MEUCIQCp9D4Lj5wp1bNhV/sIbCxu+MdY62Jyu1bG99eIs+D7LgIgRKWtwCk3wi9n3+zdMb1lLjojYtwFj8pxyMdLFcF2Jp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85913},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.2.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/080b8da134530827d8ba0273ed0e1991/adjudicate-approval-engine-0.2.2.tgz","_integrity":"sha512-RSlCtvTY8wVP4yXtfUb45GublEZfNmmRiXWSgypCedqgWtiFI/so+YsBHdAhFTeOBbbFjbUm7V/aX0lPzsVeIw==","_npmVersion":"11.10.0","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.4.0","@adjudicate/adapter-core":"0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.2.2_1781667844311_0.5001146636766796","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adjudicate/approval-engine","version":"0.3.0","_id":"@adjudicate/approval-engine@0.3.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"a951da2bccf4c5de6a1b6d0c8150b5b39f5d01d9","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.3.0.tgz","fileCount":49,"integrity":"sha512-iGmdGW2CQwGguaP6OiL4SR+z2rQCYMokPYuR4HTKEDxIQEoa1lq30vAxgdZ2Bi1GXFZDLQOkRBmZy1QB3NL3tg==","signatures":[{"sig":"MEQCIFkRuzihIFQ9S9KVk0R3tnS692lMO5HmZ/V37hLGkrkuAiA8k0cNqmXCv91ZccDUGanw2CGEGlofC9uSqGaYtvB+mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260212},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/141d451b80d44fbb48d50860f30fd0b1/adjudicate-approval-engine-0.3.0.tgz","_integrity":"sha512-iGmdGW2CQwGguaP6OiL4SR+z2rQCYMokPYuR4HTKEDxIQEoa1lq30vAxgdZ2Bi1GXFZDLQOkRBmZy1QB3NL3tg==","_npmVersion":"11.10.0","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.5.0","@adjudicate/adapter-core":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.3.0_1782275545260_0.6668185993808755","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@adjudicate/approval-engine","version":"0.3.1","_id":"@adjudicate/approval-engine@0.3.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"9bfacefef2bf4f40b0c329c8097a57c51367f07e","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.3.1.tgz","fileCount":49,"integrity":"sha512-lggJbY5nRYH2kIldiu61QQh3HGV86h2Imov/+fZAwmX2Fmd6d1e6upQGQIwBn0htndaSdoChBsCYAiMvj1/KsA==","signatures":[{"sig":"MEUCIAJjbhq6+cRtgWlj6UYqD7q236Sf25PP0b05k3y9Me/QAiEAuv2p/fq4zf4/XCNoAZ+K8Rn4o2tbFPXLnMdnjBZKrig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260337},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.3.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/20fbbc14f2bb47d31d5723a0c10656c3/adjudicate-approval-engine-0.3.1.tgz","_integrity":"sha512-lggJbY5nRYH2kIldiu61QQh3HGV86h2Imov/+fZAwmX2Fmd6d1e6upQGQIwBn0htndaSdoChBsCYAiMvj1/KsA==","_npmVersion":"11.10.0","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.6.0","@adjudicate/adapter-core":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.3.1_1782443683034_0.1596446276646022","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@adjudicate/approval-engine","version":"0.3.2","_id":"@adjudicate/approval-engine@0.3.2","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"53c3510c7c19065f7021f9132448bf24d3d65f09","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.3.2.tgz","fileCount":49,"integrity":"sha512-TZ+kXy8xzvH4J2K7CO4k/dsGRfoipHGl7cKJOAA/WhRawO0jKQEUui+QiGsKuc8ewAUhXlreTpXtCB1rHUDCag==","signatures":[{"sig":"MEQCIHV/JtbtfRFRMsilLauv5HFiT6PoXmd+WOmRbaDEtKhqAiA+bV0XhqLqRIrjcpoGdFqzr7FBm066hodK4lbJLLFDFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260462},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.3.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/70b9eea01387aa3319792ec4ef741ffc/adjudicate-approval-engine-0.3.2.tgz","_integrity":"sha512-TZ+kXy8xzvH4J2K7CO4k/dsGRfoipHGl7cKJOAA/WhRawO0jKQEUui+QiGsKuc8ewAUhXlreTpXtCB1rHUDCag==","_npmVersion":"10.9.8","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.7.0","@adjudicate/adapter-core":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.3.2_1782665482977_0.048261520998207574","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@adjudicate/approval-engine","version":"0.3.3","_id":"@adjudicate/approval-engine@0.3.3","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"3c6bef7fb273fa2f569de51b0949e182b018329d","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.3.3.tgz","fileCount":49,"integrity":"sha512-pWCK9f+M3/8ivMwf8G6/saSyQUXdIMCHfnovzg+RGE0Gl7Jlk4dJjcWyzV1/RFNr/HgD0xZc6puuvmdkC6aziw==","signatures":[{"sig":"MEYCIQDRGZ+isvocqgsPrAZdS0C8JFmZjXRJKjUVVm6gQ2n/lwIhAKsMt8IPglIZi3u3MEAUjYLGUd0zKz5yuoQIh/M8lIQa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260587},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-approval-engine-0.3.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/3ea63df2064c02835082c145738cd3c8/adjudicate-approval-engine-0.3.3.tgz","_integrity":"sha512-pWCK9f+M3/8ivMwf8G6/saSyQUXdIMCHfnovzg+RGE0Gl7Jlk4dJjcWyzV1/RFNr/HgD0xZc6puuvmdkC6aziw==","_npmVersion":"10.9.8","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.8.0","@adjudicate/adapter-core":"0.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-engine_0.3.3_1782870220085_0.9903701571373136","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@adjudicate/approval-engine","version":"0.3.4","description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"dependencies":{"@adjudicate/adapter-core":"0.4.4","@adjudicate/core":"1.9.0"},"devDependencies":{"@vitest/coverage-v8":"^3.2.0","typescript":"^5.9.0","vitest":"^3.2.0"},"scripts":{"build":"tsc --outDir dist","lint":"tsc --noEmit","test":"vitest run"},"_id":"@adjudicate/approval-engine@0.3.4","_integrity":"sha512-uvm5hSbq2TaQMcJ/3+W3reVwHmzkEdhnrSPie2K8/Ux5LSTBD8KpjMkee6qLfWIEt2RjUP3qWUELf/8l7r9t9g==","_resolved":"/tmp/95912555236124879433cc7126cc65e7/adjudicate-approval-engine-0.3.4.tgz","_from":"file:adjudicate-approval-engine-0.3.4.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-uvm5hSbq2TaQMcJ/3+W3reVwHmzkEdhnrSPie2K8/Ux5LSTBD8KpjMkee6qLfWIEt2RjUP3qWUELf/8l7r9t9g==","shasum":"f162eb7745a0df31bf929b14384d83de31fc292c","tarball":"https://registry.npmjs.org/@adjudicate/approval-engine/-/approval-engine-0.3.4.tgz","fileCount":49,"unpackedSize":260712,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC73el+nUVmT2IEU3Xa/fS5jXxuFKh6+v4C67pGVAWAxwIhANCGksqTVRblJxG22Nxm90DCz68LgInTK3zd/wTmW8Wg"}]},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"directories":{},"maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/approval-engine_0.3.4_1783002097106_0.006390153702130474"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-07T20:13:34.205Z","modified":"2026-07-02T14:21:37.393Z","0.2.0":"2026-06-07T20:13:34.522Z","0.2.1":"2026-06-11T02:33:10.057Z","0.2.2":"2026-06-17T03:44:04.469Z","0.3.0":"2026-06-24T04:32:25.400Z","0.3.1":"2026-06-26T03:14:43.200Z","0.3.2":"2026-06-28T16:51:23.113Z","0.3.3":"2026-07-01T01:43:40.222Z","0.3.4":"2026-07-02T14:21:37.262Z"},"description":"Reference human-approval orchestration for REQUEST_CONFIRMATION flows — pluggable channels (webhook, Slack, Teams, email) + a replay-safe resume via adapter-core confirm().","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"readme":"# @adjudicate/approval-engine\n\nReference orchestration for the `REQUEST_CONFIRMATION` → human review → resume\nflow, with pluggable channels (webhook, Slack, Teams, email).\n\n```ts\nimport {\n  createApprovalEngine,\n  createInMemoryApprovalRegistry,\n  createConsoleLogChannel,\n} from \"@adjudicate/approval-engine\";\n\nconst engine = createApprovalEngine({\n  agent,                                  // adapter-core AdjudicatedAgent\n  registry: createInMemoryApprovalRegistry(),\n  channels: [createConsoleLogChannel()],\n  resolveStateContext: async (sessionId) => loadStateAndContext(sessionId),\n});\n\n// when agent.send() returns outcome.kind === \"awaiting_confirmation\":\nawait engine.request({ token, sessionId, intentHash, intentKind, prompt, taint });\n\n// when the human approves/declines (Slack button, webhook callback, console):\nawait engine.resolve({ token, accepted: true, by: { id: \"alice\" } });\n```\n\n## Design\n\n- **Owns a projection registry, not the ConfirmationStore.** adapter-core's\n  `ConfirmationStore` is single-use `put`/`take` and must not be enumerated. The\n  engine keeps its own read-optimized `ApprovalRequest` index (status, prompt,\n  channel) for the operator UI; the authoritative envelope blob stays in the\n  ConfirmationStore.\n- **The engine owns none of the crypto.** `resolve()` calls `agent.confirm()`,\n  which performs the single-use token take, timing-safe hash verification, and\n  `confirmationReceipt` forwarding. The engine adds zero behavioral drift.\n- **State fetched fresh at resolve time** via `resolveStateContext(sessionId)` —\n  the out-of-band callback fires hours later, and re-adjudication should run\n  against current state. The engine stores neither state nor context, so nothing\n  reaches `intentHash`.\n- **Channels are I/O.** Ships `webhook` + `console-log`; Slack/Teams/email are\n  one-file `ApprovalChannel` implementations with injected transport.\n","readmeFilename":"README.md"}