{"_id":"@clawdreyhepburn/openclaw-ovid-me","_rev":"10-0b24002b24fe9ff38ebd6671d130f08a","name":"@clawdreyhepburn/openclaw-ovid-me","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.0":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.0","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.0","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"f40098d825a7194dccb72e320da4ca66c071a6c5","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.0.tgz","fileCount":6,"integrity":"sha512-ybYZbSbpCocWOkmxSDy1jGETJJaCiAFAXRo/UTa44F2pD22BHcjhVou/ihCARK2UULdJGf6GAL8da1iszRHjtw==","signatures":[{"sig":"MEUCIQDF+/k1jt5pqSrcPZFdHWBAQ9ubH61a7ag64oc+glrjXwIgTsQPSOZC8++AecRPGwb+MRoEQ8EhEm5TjlDu1RrgpFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12488},"main":"src/index.ts","type":"module","gitHead":"e3d53acb8a52a2143f7f84bb8e7ece091156f329","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid-me":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.0_1774309812297_0.004383684692388812","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.1","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.1","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"082442c038b27a17d1697cc6d366a655345c8103","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.1.tgz","fileCount":6,"integrity":"sha512-huo0y6N2dv9w6hBWil8RvmUEpPikB0eCHkPKsjEQsqpSiWHJuzsLFzWDOuLT3hz70LSDLx0qyIDZCDpWBZXGyg==","signatures":[{"sig":"MEUCIAnsuSjMSbg/sbjEBOCKJ6Tw+bMs16btj4BIc3yVDm/ZAiEA0Kr34MyA07w13bErhh9nw3/edt0co0mNy1rH+dmW//Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12672},"main":"src/index.ts","type":"module","gitHead":"a3d187e89e5dffaf7d2058673db9013b2b365245","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0","@clawdreyhepburn/ovid-me":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.1_1774312016667_0.36538679358828485","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.2","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.2","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"7bc22b6d945c72a64d1a3dc200cf5c8078f19a62","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.2.tgz","fileCount":9,"integrity":"sha512-owOOHOMNETsyMtWu3cLX5HXTaxOReLwjpwI25q7GVExttqk1AIVBP94Y7g5+IBNM7KIEI/fbQaTGnkYSlK06YQ==","signatures":[{"sig":"MEUCIFoXGS0+i57MUpatO2A47J8GpEA+y6gUqE5WtZPlsW0EAiEA/nmMcYrPOtUeMJ2U9MCEvuUgLztpOPMyqGHSrTsTG5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47288},"main":"src/index.ts","type":"module","gitHead":"1c01abc71076402089432a59bc12aceecc95c0a3","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0","@clawdreyhepburn/ovid-me":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.2_1774381500472_0.3322741368105948","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.3","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.3","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"82f19417b42349a0a342a94dd12b92e0ded279d9","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.3.tgz","fileCount":9,"integrity":"sha512-1GTLvAhLsR/Z6uPavXRnfMJf2fuZR21YXcMj30rUcHFkyoMgMV3hAr2Yx9CXPQoH2trkTsFAFhjd3XutFzmUXA==","signatures":[{"sig":"MEUCIQCuJ3uix9tUTa4iyfRbGXb30exFflX10A18WU/wBE3JlAIgJIJ63qa/1A4CcmlL5X4iIwmmEJOrScsnsl/W3alhAxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47407},"main":"src/index.ts","type":"module","gitHead":"97849c24b5256379381efb9b9428c3d198d8f2fa","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0","@clawdreyhepburn/ovid-me":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.3_1774381620876_0.5079020127537592","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.4","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.4","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"79bcb9d1a3f4d4cba1aef82d3c4c20ba75f120b5","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.4.tgz","fileCount":9,"integrity":"sha512-DV9kAQUvni2LDQLog1g327qivfzmdM/zt9MZmuwRRtM9bJVoA6rjPTpXE8B6xatJuiYtBD9XuKMf/PXACUhtgQ==","signatures":[{"sig":"MEQCIFaesERWCW0wDR+ZZd2E1bkcXbAHI6oNqDZLqvBjITuKAiAPgLQKkLZknLrYcqbQLxaxgRjgyBLrZkvbR/dVlKwNYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47416},"main":"src/index.ts","type":"module","gitHead":"6b6d8db9307d9c26a9c1911f6d14bc4e4d45175d","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":">=0.2.0","@clawdreyhepburn/ovid-me":">=0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.4_1774381894484_0.4421345343894554","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.5","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.5","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"9ec43fea722e0de3f101d67d0aca4a90e388258c","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.5.tgz","fileCount":5,"integrity":"sha512-Ab9HeDcHGtX+HdziVHIqcdx4qaHm1VsfL9DeWfhxxvuW1apGvCXkYkJ4w0K//7xd+Yzd9j3LLjHnp3+BOtrvHg==","signatures":[{"sig":"MEQCIF9JAR7HMEOtUax2SbTh6A0gaPsQKAvxYQ7TAOQX2sd1AiBwAsatQ0KuGbwZTHJ0DPVmWBNRqRQf9LYKVCL5RjUibw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27698},"main":"src/index.ts","type":"module","gitHead":"47a395335f60c5cb0dfff72d76a179560dcd6611","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":"^0.4.1","@clawdreyhepburn/ovid-me":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.5_1783958662998_0.7467506202948799","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.6","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.6","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"ece9dff80a9aa116bd2438a41b04cefb2c85741f","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.6.tgz","fileCount":5,"integrity":"sha512-gnOUgQQ+0Ih+iB3+nBRYGQo1yFICKjft3dXOWE+oyZXjoXHT2HLBQFqMJEXIhy8U38KLiCk7wnMA/tqUDzHYAw==","signatures":[{"sig":"MEUCIE7UGKDLD9ELZoHbhmtXHYwrR/Ci3gwFP0cvjlf8epmdAiEAhedeUiYRlL5i5psG1SqX6fOSMBSYAzL0nHlN4IHpL1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40804},"main":"src/index.ts","type":"module","gitHead":"89a41aa7d6fe6e5311690b3e4d12ef266314173d","_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":"^0.4.2","@clawdreyhepburn/ovid-me":"^0.4.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.6_1783964726794_0.8171064556933318","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.7","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.7","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"e328c5ac551b2c5492bd43890c674d94c0e4e17d","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.7.tgz","fileCount":8,"integrity":"sha512-1u8bTLo/POKOycpQ7Iq8NufSjBOVJyO00FF4UTeayZVor7lAMh10jppk0evMZOC56zHC/JSXiRDeiNymTZ8AkQ==","signatures":[{"sig":"MEUCIQCuiYHgQHPBZ85pEZmNm5ZZhZ7mi8Hpdz8ssJSUkfDVrAIgNtuYkhxE6y251AviiupZxHyj3M4bPtbdBizWHPk5U/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87153},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9541b89f1426f19b97e5f29f53ac919902e5fc79","scripts":{"build":"tsc"},"_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":"^0.4.2","@clawdreyhepburn/ovid-me":"^0.4.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.7_1783966937381_0.0673436538596397","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.8","license":"Apache-2.0","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.8","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"dist":{"shasum":"3b22a6dac7644f582d72748ea73dfd273d9970c3","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.8.tgz","fileCount":8,"integrity":"sha512-v7tE33eiJaTDLi8/IB+cfVqe/aIhT+3lRxPymLSrWLifBQhpqWMFX5QDevoDWdkrwmJF2toNn8as14/73P0S1g==","signatures":[{"sig":"MEUCIDh61/vJw0ZOF4c8yy/ZkXNmjyzPhJYcTBK9F0KK4lYAAiEA2opoQIbTPq8lEVdiALYoKZJPRx570BgZZnuwNGzkFm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91368},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"74b3e19a9d7fca490069550cea2d71ab75e5088d","scripts":{"build":"tsc"},"_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"openclaw":{"extensions":["./src/index.ts"]},"repository":{"url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git","type":"git"},"_npmVersion":"10.9.4","description":"OpenClaw plugin for OVID-ME mandate evaluation","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@clawdreyhepburn/ovid":"^0.4.2","@clawdreyhepburn/ovid-me":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-ovid-me_0.1.8_1783968153210_0.8036926954647796","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@clawdreyhepburn/openclaw-ovid-me","version":"0.1.9","description":"OpenClaw plugin for OVID-ME mandate evaluation","type":"module","main":"dist/index.js","scripts":{"build":"tsc"},"dependencies":{"@clawdreyhepburn/ovid":"^0.5.0","@clawdreyhepburn/ovid-me":"^0.4.6"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"openclaw":{"extensions":["./src/index.ts"]},"gitHead":"f85592e5678191dfcc30ba8d49007cdda64df15c","types":"./dist/index.d.ts","_id":"@clawdreyhepburn/openclaw-ovid-me@0.1.9","bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-04YlhORkVaSpZzUlcSI65q+nYLpxmudlGf+Ioj4rIIBTGkmfl3IyLHBedzLwQxO9O527ywunV3Y2hEqhxR550A==","shasum":"9f96e5ad333cde17c14fdc25a6b89db1b9334708","tarball":"https://registry.npmjs.org/@clawdreyhepburn/openclaw-ovid-me/-/openclaw-ovid-me-0.1.9.tgz","fileCount":8,"unpackedSize":97556,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEEAyOv8DvOJa2IAAsr7aOP3pD+Qve56AeDfIOh4PjIPAiEAuQ5sMQ0GLEiG1gwgdI3fvdCq9ruAO6YxvVz2qs6LHRs="}]},"_npmUser":{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"},"directories":{},"maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-ovid-me_0.1.9_1784728819484_0.6532211364306719"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T23:50:12.220Z","modified":"2026-07-22T14:00:19.868Z","0.1.0":"2026-03-23T23:50:12.432Z","0.1.1":"2026-03-24T00:26:56.810Z","0.1.2":"2026-03-24T19:45:00.647Z","0.1.3":"2026-03-24T19:47:01.024Z","0.1.4":"2026-03-24T19:51:34.617Z","0.1.5":"2026-07-13T16:04:23.133Z","0.1.6":"2026-07-13T17:45:26.929Z","0.1.7":"2026-07-13T18:22:17.539Z","0.1.8":"2026-07-13T18:42:33.347Z","0.1.9":"2026-07-22T14:00:19.719Z"},"bugs":{"url":"https://github.com/clawdreyhepburn/openclaw-ovid-me/issues"},"license":"Apache-2.0","homepage":"https://github.com/clawdreyhepburn/openclaw-ovid-me#readme","repository":{"type":"git","url":"git+https://github.com/clawdreyhepburn/openclaw-ovid-me.git"},"description":"OpenClaw plugin for OVID-ME mandate evaluation","maintainers":[{"name":"clawdreyhepburn","email":"clawdrey.hepburn@engageidentity.com"}],"readme":"# @clawdreyhepburn/openclaw-ovid-me\n\n**The security desk that checks every AI helper's ID badge — and stops it from doing anything its badge doesn't allow.**\n\nThis is a plugin for [OpenClaw](https://github.com/openclaw/openclaw) (an AI agent runtime). Its companion plugin, [openclaw-ovid](https://github.com/clawdreyhepburn/openclaw-ovid), gives each AI helper (\"sub-agent\") a signed ID badge listing what it's allowed to do. **This plugin is the part that actually reads those badges at runtime and blocks off-badge actions.**\n\nYou do **not** need any security or identity background to read this. Everything is explained from scratch.\n\n---\n\n## Table of contents\n\n- [The 30-second version](#the-30-second-version)\n- [Why this exists](#why-this-exists)\n- [The core idea in one picture](#the-core-idea-in-one-picture)\n- [Install](#install)\n- [The three modes (start safe, tighten later)](#the-three-modes-start-safe-tighten-later)\n- [Worked example](#worked-example)\n- [The extra safety check: \"you can't give away more than you have\"](#the-extra-safety-check-you-cant-give-away-more-than-you-have)\n- [The audit trail and dashboard](#the-audit-trail-and-dashboard)\n- [Configuration](#configuration)\n- [Command-line tools](#command-line-tools)\n- [How it fits with its sibling plugins](#how-it-fits-with-its-sibling-plugins)\n- [FAQ](#faq)\n\n---\n\n## The 30-second version\n\n- AI assistants spawn smaller **helper agents** to do parts of a job.\n- By default, every helper inherits the assistant's *full* power — far more than its task needs.\n- The companion plugin stamps each helper with a **badge** listing its allowed actions.\n- **This plugin checks that badge before every action the helper takes**, and blocks anything the badge doesn't cover.\n- It starts in a safe \"watch but don't block\" mode so you can see what *would* happen before you turn on real enforcement.\n\n---\n\n## Why this exists\n\nGive an AI assistant a task like *\"resolve this support ticket,\"* and it may spawn a helper to *\"look up the customer's account settings.\"* In most systems, that helper quietly receives the assistant's entire set of credentials — the same access keys, the same permissions, the same reach. A helper that only needed to *read one setting* now also has the power to *change security configuration*, *delete records*, or *run commands*.\n\nThe task got smaller. The power didn't. That mismatch is where accidents and abuse live.\n\nThe fix is an old, well-proven idea: **give each worker exactly the authority its job requires, and check that limit at the door.** This plugin is the \"check at the door\" part. Every time a badged helper tries to do something, this plugin asks a simple question:\n\n> *\"Does this helper's badge actually permit this specific action?\"*\n\nIf yes, it proceeds. If no, this plugin can log it, warn, or block it outright — your choice.\n\n---\n\n## The core idea in one picture\n\n```\n   Helper agent wants to do something (e.g. run a command)\n                        │\n                        ▼\n        ┌───────────────────────────────┐\n        │        THIS PLUGIN             │\n        │  (the security desk)           │\n        │                                │\n        │  1. Look at the helper's badge │\n        │  2. Read its list of allowed   │\n        │     actions (its \"mandate\")    │\n        │  3. Does the badge permit THIS │\n        │     exact action?              │\n        └───────────────┬───────────────┘\n                        │\n             ┌──────────┴───────────┐\n             ▼                      ▼\n        YES: allow             NO: log / warn / block\n        the action             (depending on your mode)\n```\n\nThe badge itself is created and signed by the companion plugin, [openclaw-ovid](https://github.com/clawdreyhepburn/openclaw-ovid). This plugin never has to trust the helper's word about who it is — the badge is cryptographically signed and traceable back to you, so it can't be faked.\n\n---\n\n## Install\n\n```bash\n# Recommended full stack\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid      # issues badges\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid-me   # checks badges (this plugin)\nopenclaw plugins install @clawdreyhepburn/carapace           # deployment ceiling\nopenclaw carapace setup\n```\n\nOr just the OVID pair:\n\n```bash\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid-me\nopenclaw plugins install @clawdreyhepburn/openclaw-ovid\n```\n\nOpenClaw picks plugins up automatically. **By default this plugin starts in `dry-run` mode**, which watches and logs but never blocks — so installing it can't break your workflow. You opt into real blocking when you're ready (see next section).\n\nIf the forensics dashboard fails after a Node upgrade with a `better-sqlite3` / `NODE_MODULE_VERSION` error, rebuild the native binding in the ovid-me install (`npm rebuild better-sqlite3`). Evaluation still works without SQLite; only the dashboard/structured audit store needs it.\n\n---\n\n## The three modes (start safe, tighten later)\n\nYou control how strict this plugin is with one setting, `mandateMode`:\n\n| Mode | What it does | When to use it |\n|---|---|---|\n| **`dry-run`** *(default)* | Checks every action and **logs** the decision, but **always lets it proceed.** Nothing is ever blocked. | Start here. Run it for a while and read the logs to see what *would* be blocked, without risk. |\n| **`enforce`** | Checks every action and **actually blocks** anything the badge doesn't allow. | Turn this on once the dry-run logs look clean — i.e., legitimate work isn't getting flagged. |\n| **`shadow`** | Enforces your *current* rules while simultaneously testing a *candidate* new rule set, so you can compare before switching. | For carefully migrating from one policy to another. |\n\nThe recommended path is simple: **install in `dry-run`, watch the logs for a bit, then flip to `enforce` once you're confident normal work isn't being caught.** This is the difference between a system that *works correctly* and one you've *seen work correctly* — and you want the second before you let it block anything.\n\n---\n\n## Worked example\n\nSay a helper was badged to *read and search only*. Here are two actions it might attempt, and what this plugin does in **enforce** mode:\n\n```\nHelper action: read the file ./src/index.ts\n   → badge allows \"read\"? YES\n   → decision: ALLOW  ✅  (recorded as \"allow-proven\")\n\nHelper action: run the command  rm -rf /\n   → badge allows \"exec\"? NO — badge only has read + search\n   → decision: DENY   ⛔  (recorded, and in enforce mode, blocked)\n```\n\nIn **dry-run** mode, that second action would still be *allowed to run*, but the log would clearly show it *would have been denied* — your early-warning signal.\n\n---\n\n## The extra safety check: \"you can't give away more than you have\"\n\nThere's a subtle failure this plugin also guards against. Suppose a helper that can only *read* tries to spawn its *own* helper and grant it the power to *write* and *run commands*. That would be a worker handing out more authority than it was ever given — a way to sneak past the limits.\n\nThis plugin can mathematically **prove** that a new helper's permissions are a genuine *subset* of its parent's, at the moment the badge is created. If the proof fails, the spawn still proceeds, but that helper's later actions are recorded in the audit log as **`allow-unproven`** instead of `allow-proven` — a clear, searchable signal that something granted authority it couldn't justify, so you can review it. (Turning a failed proof into an actual *block* is opt-in: set `subsetProof: 'required'` with a configured policy source.)\n\n- It does this using a **formal proof engine** (a program that reasons about the permission rules the way a mathematician proves a theorem — no guessing, no pattern-matching).\n- If that proof engine isn't installed on your machine, this plugin **degrades gracefully**: it falls back to a simpler, more conservative check rather than crashing. (By default this proof step is off; you switch it on with the `subsetProof` setting.)\n\nYou don't have to understand the proof machinery to benefit from it. The takeaway: **authority can only ever narrow as it's delegated down the chain, never widen — and that can be proven, not just hoped.**\n\n---\n\n## The audit trail and dashboard\n\nEvery decision this plugin makes is recorded — who did what, when, and whether it was allowed or denied. This gives you a complete, after-the-fact record of everything your AI helpers did and were permitted to do.\n\nTwo places this lands:\n\n- A structured database at `~/.ovid/audit.db` (and optionally a plain-text log).\n- A built-in **web dashboard** you can open in a browser to see the whole picture — which helpers ran, their permission chains, and every allow/deny.\n\n```bash\nopenclaw ovid-me dashboard    # starts the dashboard, then open the printed URL\n```\n\nBy default the dashboard runs at `http://localhost:19831` and is bound to your own machine only.\n\n---\n\n## Configuration\n\nAll settings are optional; sensible defaults are shown.\n\n| Setting | Default | What it means |\n|---|---|---|\n| `mandateMode` | `dry-run` | `dry-run` (log only), `enforce` (block), or `shadow` (compare). See [modes](#the-three-modes-start-safe-tighten-later). |\n| `subsetProof` | `off` | `required`, `advisory`, or `off`. Whether to prove a child's permissions are a subset of its parent's (the \"can't give away more than you have\" check). |\n| `enforcementFailure` | `closed` | If a check itself errors out, do we fail `closed` (deny — safest) or `open` (allow)? |\n| `auditLog` | *(unset)* | Optional path for a plain-text (JSONL) log of every decision. |\n| `auditDb` | `~/.ovid/audit.db` | Where the structured audit database lives (powers the dashboard). |\n| `dashboardPort` | `19831` | Port for the web dashboard. |\n| `authzenPort` | `19832` | Port for the built-in standards-based decision API (see note below). |\n| `authzenEnabled` | `true` | Whether to start that decision API at all. |\n\n> **Heads-up:** by default this plugin also starts a small local API server (on port `19832`) that answers permission questions in a standard format called **AuthZEN** (an open industry protocol for asking \"is this action allowed?\"). It's bound to your own machine. If you don't need it, set `authzenEnabled: false`.\n\n> A note on defaults: the plugin's runtime default for `mandateMode` is `dry-run`, so installing it cannot break existing workflows — it watches and logs but blocks nothing until you opt in. Once you've reviewed the dry-run logs and confirmed normal work isn't being flagged, set `mandateMode: \"enforce\"` explicitly to turn on real blocking.\n\n---\n\n## Command-line tools\n\n```bash\nopenclaw ovid-me status      # Show current mode, config, and audit stats\nopenclaw ovid-me dashboard   # Launch the forensics dashboard\n```\n\nAnd three tools your assistant can call directly:\n\n- **`ovid_evaluate`** — ask \"would this specific action be allowed under this badge?\"\n- **`ovid_shadow`** — compare two different permission sets against the same test actions, side by side.\n- **`ovid_audit`** — query the audit database (what happened, when, allowed or denied).\n\n---\n\n## How it fits with its sibling plugins\n\nPicture a secure building:\n\n```\n   Carapace                openclaw-ovid            openclaw-ovid-me\n   (the building's     →    (the badge printer:  →   (the security desk —\n    master rulebook,        stamps each helper        THIS PLUGIN — checks\n    set by YOU: what's      with its allowed          every badge at every\n    allowed at all)         actions)                  door, allows or denies)\n```\n\n- **[Carapace](https://github.com/clawdreyhepburn/carapace)** — the absolute limits *you* set as the human. No badge can exceed them (e.g. \"nothing may ever run `rm`, full stop\").\n- **[openclaw-ovid](https://github.com/clawdreyhepburn/openclaw-ovid)** — the badge printer. Creates and signs each helper's ID and permissions.\n- **openclaw-ovid-me** *(you are here)* — the security desk. Reads each badge and enforces it on every action.\n\n**Both checks must pass for an action to run.** Carapace enforces what you the human permit at all; this plugin enforces what the helper's parent actually delegated. A helper with a generous badge still can't punch through the human's ceiling, and a helper under a permissive ceiling still can't exceed its own badge.\n\nFor the underlying evaluation library (the Cedar policy engine, the audit system, the proof machinery), see **[@clawdreyhepburn/ovid-me](https://github.com/clawdreyhepburn/ovid-me)**. For the badge/identity format itself, see **[@clawdreyhepburn/ovid](https://github.com/clawdreyhepburn/ovid)**.\n\n---\n\n## FAQ\n\n**Will installing this break my current setup?**\nNo. It defaults to a watch-only posture (`dry-run` is the recommended starting config) — it logs decisions but blocks nothing until you deliberately switch to `enforce`.\n\n**What's a \"mandate\"?**\nJust the plain list of actions a helper is allowed to do, written on its badge. This plugin's whole job is checking actions against that list.\n\n**What is \"Cedar\"?**\nThe small permission language the rules are written in — created by Amazon, designed to be precise and analyzable. You mostly don't interact with it directly through this plugin; the badge-issuing companion handles writing the rules.\n\n**Do I need the formal proof engine?**\nNo. It's an optional extra check (`subsetProof`). Without it, the plugin still enforces every badge normally; it just uses a simpler method for the \"can't give away more than you have\" guarantee, and it never crashes if the proof engine is missing.\n\n**What does \"OVID-ME\" mean?**\n**OVID** is the ID-badge format (**O**penClaw **V**erifiable **I**dentity **D**ocument). **ME** is **M**andate **E**valuation — the checking of what each badge permits. So: \"the thing that evaluates what OVID badges allow.\"\n\n---\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}