{"_id":"@coffeexdev/openclaw-sentinel","_rev":"26-0d8ba51b8ffafbcbaa68d4e83c8f18db","name":"@coffeexdev/openclaw-sentinel","dist-tags":{"latest":"0.8.3"},"versions":{"0.1.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"41ae8ac659d1244aea81fd133ee05462a63f2de3","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.0.tgz","fileCount":3,"integrity":"sha512-/UjdcXO6L+1PrOJaoy3iqkw0NCsjX2xLgROJTuivzYunCJF5yoBCk+PybpgXIh+rXleLEccThlpz6Tj6JVbXUA==","signatures":[{"sig":"MEUCIFnVZOI/fz6WXJfRvZS7SVqLPB5bQYfYRTYNIxcNLwtpAiEA/SDJCIts3ceRFSzZhmLOR+MDsnlOPSLaHmxRe1yEbXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7423},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ceb8e18c48d6478caf3e0f1f175a24dc0300dd70","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.36.0","vitest":"^3.0.8","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","@changesets/cli":"^2.29.7"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.0_1772583494274_0.39851193221630865","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.1","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.1","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"f64335184ab963a5cff079de69be40fa0731f046","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.1.tgz","fileCount":33,"integrity":"sha512-sr35T8uzkuo41slfZ89XwqEDBVpayuzdTl3/vIwjN2Rii9mApRonGPwx8ua8dCrIWAbINCcnJynvOjr9rvhfPg==","signatures":[{"sig":"MEYCIQCJ6KKBdvEpTYjl49AruRkQTzBUXhMmkjY84aCGbVucLwIhAMfsosf2g2tsdckTPG853G+955M+UCzQKolAum6noBlB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":38240},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ef2c8b18033d85080d27cfb44915017cca2cdeae","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.36.0","vitest":"^3.0.8","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","@changesets/cli":"^2.29.7"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.1_1772584357908_0.3063654117031769","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.2","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.2","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"f66d53a2ab8baafd46405a13e0a2acd6b6ab78c8","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.2.tgz","fileCount":34,"integrity":"sha512-c5Sin005kUpftJ3qen4aCJs/ThNxooUpXiia4uq+vYb0yyi3pkwrjkYjjY5kkrGVUCYxqXJY30kLiaQcc68VDQ==","signatures":[{"sig":"MEYCIQCT/IGOMlr8JdXCANCEzwF/FueuF4es0fpsZqaG0uV3/gIhAIF7wJW0e5MlXhrvM+ZfFx8fuC1U/uSAk8j6EhWnZEU3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":38469},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"8ef60dd15dc01a4aac395f19d680004d7d057000","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.36.0","vitest":"^3.0.8","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","@changesets/cli":"^2.29.7"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.2_1772584645364_0.153748185526001","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.3","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.3","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"34fcabdf579df616ac8cfe9d0b36367e82fa4f0f","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.3.tgz","fileCount":34,"integrity":"sha512-3ZCxzIDT80vzjeF24g3t3SR1ruPlxxoBrlBvz5qlzcUXQjqvg/rEXdhqA0+nLh2bwR8FGBrIEL9q9Pk0Ox20ZQ==","signatures":[{"sig":"MEUCIDDgcAGrzPLA4dwrc3iJj4In6YPBxzQrO3DHyfn+NAZPAiEA/a1TItOc98l2QA1ueXZzCsi5p2U5rd5EJ7jUZdJF830=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":38500},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"96bfc91f239f6cd2870bdb59081429bcb764d32e","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.36.0","vitest":"^3.0.8","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","@changesets/cli":"^2.29.7"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.3_1772590882040_0.6055720075825524","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.4","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.4","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"ee23e3673b13469b0f8ad7ea24ac51991be4f2d8","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.4.tgz","fileCount":36,"integrity":"sha512-twgMRqR/cl5Fdxj3j9aQUXDEQayiuk4s325AFR5KWWv1oFFJcUEGOVUKLebYL99THE7brStJKAAEBAWQMxRXVg==","signatures":[{"sig":"MEQCIHIA5/dJnE7M2McCaVbnbr3aMqA8gDzkl8QQOgW6UfFxAiAGtj9PgK8HKe4jcvtfUTNzRMHPyh1yEr7RYYBQuTt5qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47597},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"55a3cb0a0f72e4c43923e3dd89ccf5ca74dca508","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"*.{ts,js,jsx,tsx,mjs,cjs,json,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.4_1772594038835_0.4148157260063281","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.5","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.5","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"c6538ec39f03cb3f1073a9e76035e78f795e0244","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.5.tgz","fileCount":38,"integrity":"sha512-IGJbsWzzJpouvv7+GqlAjjioqHftCtDk0yXUnVAkDrrpw7HYXYfmpaPi8Rp8708p6GkNYwKMXMTnw+6MBurbTA==","signatures":[{"sig":"MEQCIHuxJgLEpX7q9e1jt50XlQJZasocbQGbKR7CQHv+Yo4ZAiAJBecnVYPiWbLgjUk08x+lWP3a8iMJyrLJubxSXE6N5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54858},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"f35e32376f2e841cdf4640c663fd449c62e52c6c","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"*.{ts,js,jsx,tsx,mjs,cjs,json,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","zod":"^3.24.1","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.5_1772595446679_0.4025914585607422","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.6","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.6","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"9154eb39b25e56ba710e1c53cf94c1855bfc7462","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.6.tgz","fileCount":38,"integrity":"sha512-xEmbP6OGZnhrx+uWlkKkxZuhwBViJV1A9qMVh/Zg4bXnQWA8XGmarPZHxWqrOrMgMOpnQjgzPsn+yawhmgK33g==","signatures":[{"sig":"MEQCIAghlJRGfilique8NtCgMuywf0uhjZPDn5jLuEFmd05zAiAF24TMPOFEPpz2Rvgfk1FbOHPX+M2bas8m2IP02ym8fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55306},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"334953dc0bdb2f48db95f21853f94610e0d36b2b","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.8.2","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.6_1772596469584_0.7464196087642758","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.7","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.7","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"979d2b788b9acc6d92e8b88a26bdc75185ee546c","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.7.tgz","fileCount":38,"integrity":"sha512-IPuCU07QOdUWHA59ZCc5+eEVIYm8uS2+gr4Vln3mcqRCtWjjl1riI5zo7o/3IxLTkAG1+WAFDGl3etZr7j2+KQ==","signatures":[{"sig":"MEUCIB8StDoJRA7m+iXoaZR+7endG+nlL9m/6Y+9zgE3FclUAiEAntyz6OxoPG6dxb6BgBWG9s7tC116J8zrxsmaO4gwhQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56561},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"903fcd07722356da2af45bb07200b32c62fdf657","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.7_1772597339848_0.4281279111106966","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@coffeexdev/openclaw-sentinel","version":"0.1.8","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.1.8","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"4859275bc687595b8629152697b7063378ce43d4","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.1.8.tgz","fileCount":38,"integrity":"sha512-TLe6Zc+cRq7VZ6R4gfhAmSlsaUmIKIVgFItkJve8i5wJsa4Om0nxIkBy2sMy4YT9kAtQrZlMVdGHid4ciaoj+w==","signatures":[{"sig":"MEUCIACo8tYn+u5o5sForx9+CH6yvt4ixvMYoIgDnq6caxJbAiEA5HKUPP/GBRnNdVJCbNDcGvk6dZdAksY30Hlk7vsPRQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58939},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"6b56335e9c018d2860d69ee1bc7eaf073a921eb4","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.1.8_1772598230462_0.2131483345610372","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.2.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.2.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"8588434f957ddce9f968579be19bc305e3ea97ec","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.2.0.tgz","fileCount":38,"integrity":"sha512-/nURiDDG+SBr2nN1gPbnz2D9cLUA5JoGw34KjhEZWL2DS/xXY3AY24MX/lo39HVDz/Mnfj23cvvEVvXQoKIPlQ==","signatures":[{"sig":"MEUCIQCnhSS+X+ZyLnRD3Z3faVDydK2oylKbKUtxi5KKzwnxlgIgP1ReUkijSMeqeo63xB6/kG9AwUhRL7F3nzKwc3P2Ep8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66581},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"79d8c3c02c9e1ac04da56a101669962b624bc8f8","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.2.0_1772631203758_0.7217349197703009","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@coffeexdev/openclaw-sentinel","version":"0.2.1","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.2.1","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"5c4e879c18fdf01465a651cec50e3aa9b0dbc863","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.2.1.tgz","fileCount":38,"integrity":"sha512-0BfIissCBxJabU8awFdOnlmyi6gAXuyAqdsAxpaYG6H2MUEHsXZAf4d7SNPMEkmJNkuLEoXmTEStMo0z6we56w==","signatures":[{"sig":"MEYCIQCHrfhUDK9wqThjQrW6clfO4NM7wnteyA9eM0ijIXjFqwIhAIISXO5A58rbUTp0pCLJZk8VecIKAg8huhkyGbrYS9Tm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66579},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"gitHead":"aab254ce1c72c1f649f11045c02d423851a547b8","scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","prepack":"npm run build","prepare":"husky","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.2.1_1772632478843_0.7850397561702915","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.3.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.3.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"56588292b95eef1d18583705df6eaa41fecaf4e7","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.3.0.tgz","fileCount":38,"integrity":"sha512-l6MNdui6zqtxb6gtddWhCFGJrHLmvj/eDn5sU9dAQN0zrpXMoCORP7HbjDMbBUHT9UuHrBCNeOWxemKjeQRjfA==","signatures":[{"sig":"MEUCIQCJJJg1I90j2N3NbWtfDHMGt8PX5iG14jAMzaVJRz95XwIgBHawVrNC3ZVcQFmxp4zTTjZS/4GKbMBZEwuWGE18ADU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77969},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/150e381324b9efcf820eb3d38e263a4d/coffeexdev-openclaw-sentinel-0.3.0.tgz","_integrity":"sha512-l6MNdui6zqtxb6gtddWhCFGJrHLmvj/eDn5sU9dAQN0zrpXMoCORP7HbjDMbBUHT9UuHrBCNeOWxemKjeQRjfA==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.3.0_1772636193513_0.6802714860513521","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"dcde8aeba760f0861176941086984e8bd2f2e15c","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.0.tgz","fileCount":40,"integrity":"sha512-NbvlC3IVCJ4YeN/KI5MJsMssZiOxy9R55kPvSn/uA6ffkgrMydseOta7mEn+4A21+rZJxxPMAKP7NwHBnJg0bQ==","signatures":[{"sig":"MEUCIC0JRxcpX1OeFT8BNJhtxH24PRo42mpzP9FiJpgHoAsHAiEA/FCUMQKgqM5I6fvgrRiQdqD6Vgx/xgIHFrw94X0nVMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":85408},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/76f703f3c3213196395ae40c3cc20c61/coffeexdev-openclaw-sentinel-0.4.0.tgz","_integrity":"sha512-NbvlC3IVCJ4YeN/KI5MJsMssZiOxy9R55kPvSn/uA6ffkgrMydseOta7mEn+4A21+rZJxxPMAKP7NwHBnJg0bQ==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.0_1772639009097_0.15054983122619148","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.1","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.1","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"6adad2b5c8008eac5890bc8c2319c354b09cbf54","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.1.tgz","fileCount":42,"integrity":"sha512-qHBdNjL7IQtqnAYtcHuVTt4s51QPbDe0bCio082FqWEOs7Ld+HZsMVxyJYvTZgjmVkcd/V3N4AGckeZFFuhfPg==","signatures":[{"sig":"MEYCIQDeiMoOB1MHgqEKX7d6sVTosyImBpunLnJPES9NWM07EwIhAPC+x0EFZbXONGlhGhU5QaoLrR9U0sMieZL7QdBaRBf3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89641},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/d6cbefb35c478d04ff4dc99287b44507/coffeexdev-openclaw-sentinel-0.4.1.tgz","_integrity":"sha512-qHBdNjL7IQtqnAYtcHuVTt4s51QPbDe0bCio082FqWEOs7Ld+HZsMVxyJYvTZgjmVkcd/V3N4AGckeZFFuhfPg==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.1_1772643396664_0.33073952927179606","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.2","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.2","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"7946fa40a19df1f2c40c03e053cb20ff3ab34b16","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.2.tgz","fileCount":42,"integrity":"sha512-jSaPWWhafazGS/UAOytsqEM8O2Q7RUrw+J5/C6iJAAq3PYjyUmtniIc+xCrglA3g27syfBD/Pv7uOhOJzZ/59Q==","signatures":[{"sig":"MEYCIQDF7BcvqFIZsxT8ZR8rfwBHlqTZi4rzi0juPh3dhMApUAIhAPJtbMp/V0CBMbZ2CiNY38+uGs0G6I//z/fXl38FtMYt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90990},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.2.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/0cdd8aa9ee9dd8957bb368c985ce9fa0/coffeexdev-openclaw-sentinel-0.4.2.tgz","_integrity":"sha512-jSaPWWhafazGS/UAOytsqEM8O2Q7RUrw+J5/C6iJAAq3PYjyUmtniIc+xCrglA3g27syfBD/Pv7uOhOJzZ/59Q==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.2_1772646255570_0.8810524672374904","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.3","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.3","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"4c86236714a580df44277b2aa8ba1cda18356439","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.3.tgz","fileCount":42,"integrity":"sha512-fETZgsZf0KDOPAgcz6MYRY7Uz5LzFMb+u1lb9Ol0bLzXxr9pEHo1tQ6LNeZhtGSM3MQMFj1mBUg5izM4NtGdXQ==","signatures":[{"sig":"MEQCIHvpWKry0cxMVRfXSR/r63pq8l571IrfpAZvYTNbpsLXAiBfoESzJYu54ZIhfOaXdyj92YetZEgOZFQMCuOuIImtkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96511},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.3.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/45ee2d4e482ced1b3f6afe44b62fb8bd/coffeexdev-openclaw-sentinel-0.4.3.tgz","_integrity":"sha512-fETZgsZf0KDOPAgcz6MYRY7Uz5LzFMb+u1lb9Ol0bLzXxr9pEHo1tQ6LNeZhtGSM3MQMFj1mBUg5izM4NtGdXQ==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.3_1772647794038_0.7274910461176343","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.4","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.4","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"3c4fefb6764165c2c84b0bce68cfa9636255ae8d","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.4.tgz","fileCount":42,"integrity":"sha512-Vsw4wm5SONKDF6yD18Z3sZvWq/fWlUj+BecjHpFsSQJ8DwHTBMGhdLeRy/vwUJvaUs9sJrW5wlDn4mpQZDpp6g==","signatures":[{"sig":"MEQCIDVCxY3QKakQ6tuZfXU4+F88XTylTILRHhqmyue9hry+AiBFI45W5Ynuosy3hILY7SDF9G2TQYYrdrYwS2bJGGtdug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":98316},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.4.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/9925648984e71c42072ffcb47567de46/coffeexdev-openclaw-sentinel-0.4.4.tgz","_integrity":"sha512-Vsw4wm5SONKDF6yD18Z3sZvWq/fWlUj+BecjHpFsSQJ8DwHTBMGhdLeRy/vwUJvaUs9sJrW5wlDn4mpQZDpp6g==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.4_1772654484701_0.4113300376524671","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@coffeexdev/openclaw-sentinel","version":"0.4.5","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.4.5","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"c85f8f65bb5dcee3703b4cec9b5327282117dabc","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.4.5.tgz","fileCount":42,"integrity":"sha512-Jrny+c0jQRDDSBfQjvGHhEm7sA5Pr9cCjhmYyLH97neoGUowWq+vmU5l1kOtLCvHpUrIoJD9444q2+n3gk7o1A==","signatures":[{"sig":"MEUCICmd57yFxboeLEy33UlnDM8MhSQKsPmioYFmkJzbtApwAiEAmxjxmqDvq5Edqxh7153eXr+6NN3w3zHf+PY30rvJCUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120348},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.4.5.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/99aa3e91aaf80a14aee10ee856b4d775/coffeexdev-openclaw-sentinel-0.4.5.tgz","_integrity":"sha512-Jrny+c0jQRDDSBfQjvGHhEm7sA5Pr9cCjhmYyLH97neoGUowWq+vmU5l1kOtLCvHpUrIoJD9444q2+n3gk7o1A==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.4.5_1772660015808_0.6830788909071892","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.5.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.5.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"1ec887ad96095f523d351127dfe8beae1c8e1392","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.5.0.tgz","fileCount":42,"integrity":"sha512-t5XNd1g7AH+h4aTTXFWkwutpScJQThHSt/tXyD/xNt0jHspk9PaIdYkCPjxy9W93IB/1LnyjTSP6MRlGSD4LZw==","signatures":[{"sig":"MEYCIQCDGV0qYdmdxCn0bdWfMaafFvlxagVzZWiQ5zvH7hU1pAIhAOCY2xQnEmswlGNePEGAQ8OE5slAb4Mgw+Lbhx39Pz3h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138014},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/a663329a093034eded0b0432190b7a9c/coffeexdev-openclaw-sentinel-0.5.0.tgz","_integrity":"sha512-t5XNd1g7AH+h4aTTXFWkwutpScJQThHSt/tXyD/xNt0jHspk9PaIdYkCPjxy9W93IB/1LnyjTSP6MRlGSD4LZw==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.5.0_1772662258066_0.861139288431805","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@coffeexdev/openclaw-sentinel","version":"0.5.1","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.5.1","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"e2d4f64a07d46ae4d426f4f1a1da7bbdce7513e3","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.5.1.tgz","fileCount":42,"integrity":"sha512-bk+5+chUHPPTt1fTCTrkZ9ydiWd3gQgZQnMEqlQoW6sFsNrz1bU3SdOl5La+3eYrdrh/G++LvmgweQ64gTgj+g==","signatures":[{"sig":"MEYCIQCWrtOayfV6tygNOyy6TUKlsJG3AcEBG1Sw5/XZy0mHAQIhAO9uR40cOH3Ou7LMyU8Aa7J9DvgDObuAWDmsg/GK4abW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138564},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.5.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/1b2e965f81d8eaf1b3e21223dd023984/coffeexdev-openclaw-sentinel-0.5.1.tgz","_integrity":"sha512-bk+5+chUHPPTt1fTCTrkZ9ydiWd3gQgZQnMEqlQoW6sFsNrz1bU3SdOl5La+3eYrdrh/G++LvmgweQ64gTgj+g==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.5.1_1772663517153_0.6972897228585622","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.6.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.6.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"6b3aa15c27220496a47bb1d3ef959970867033d9","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.6.0.tgz","fileCount":44,"integrity":"sha512-zy1mN9BttT5WE13E/vMjksLydxDdKNdI8h6YcpF0xcyPwhmJEPL1ROVUioLvpQhR563HvOcKBRboVTBo8v3o0A==","signatures":[{"sig":"MEUCID7ZDSnoB+BIcbEtXqJMzVZvqPKgU/A2qKyrB/91t4+uAiEA1LAJnFJ35MQH9SoxNLVZJu8+N7zS1ERQ1E/Q/grZRFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153783},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/d4e8ff8d5a59fd2e05cb4e536a78fa74/coffeexdev-openclaw-sentinel-0.6.0.tgz","_integrity":"sha512-zy1mN9BttT5WE13E/vMjksLydxDdKNdI8h6YcpF0xcyPwhmJEPL1ROVUioLvpQhR563HvOcKBRboVTBo8v3o0A==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.6.0_1772665712466_0.3026606119923132","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.7.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.7.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"ecf08ac4760122212ae479d316720b0240b9a21c","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.7.0.tgz","fileCount":44,"integrity":"sha512-Ed0z/SVBQ38kk9qcqYN7vx15xxHeq3uHRKhhl3N0tSM9/lewzMqKd9lyHB0E4RP+DZl/Nuogj62IHdR0ElSnWg==","signatures":[{"sig":"MEYCIQC9Sft4QVK5QxUYI187rBLfWxbNNSFQ6u0KIeD4rJiWkgIhAIZRKeY1oiDNSMZacnrcBqEf6ILsMN3gXzukdRfMn4C6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157893},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.7.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","changeset":"changeset","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/e1ce426fbb6df9ba266cc7526e105e1b/coffeexdev-openclaw-sentinel-0.7.0.tgz","_integrity":"sha512-Ed0z/SVBQ38kk9qcqYN7vx15xxHeq3uHRKhhl3N0tSM9/lewzMqKd9lyHB0E4RP+DZl/Nuogj62IHdR0ElSnWg==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.7.0_1772677835038_0.9686203794321282","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@coffeexdev/openclaw-sentinel","version":"0.8.0","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.8.0","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"c173f2178c1df66727b31eeb2785d819b4cb1853","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.8.0.tgz","fileCount":46,"integrity":"sha512-NsHxrEZrMClyV6I7IkvwUrumtADeJQJdJYKnW0Gu52zeS9SK1KcW8EZZNLOWijm4AJnXzhZFTRaRX2eX6tdzfw==","signatures":[{"sig":"MEQCIDrVKZQUdlY7Oy1uQxmnmg9gPUoaI7bujrMcp0Rzsct7AiB3TKLwhIR73f9GKtyPyJ/lHiE+CB2lh3VEk6/WeFlBCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160996},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.8.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"pnpm run test:unit && pnpm run test:e2e","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","test:e2e":"vitest run --config vitest.e2e.config.ts","changeset":"changeset","test:unit":"vitest run --config vitest.unit.config.ts","test:smoke":"pnpm run test:smoke-install","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/9610917278a4fe3f6a564d2f663af1ef/coffeexdev-openclaw-sentinel-0.8.0.tgz","_integrity":"sha512-NsHxrEZrMClyV6I7IkvwUrumtADeJQJdJYKnW0Gu52zeS9SK1KcW8EZZNLOWijm4AJnXzhZFTRaRX2eX6tdzfw==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.8.0_1772683371639_0.4019755642463947","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@coffeexdev/openclaw-sentinel","version":"0.8.1","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.8.1","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"4893759fa8a6052c058f58c436798799cd867a1a","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.8.1.tgz","fileCount":46,"integrity":"sha512-9Oaccb64Q8PtK3AdmbsTm5B0QMn9EzQjNWlqLAFEsYI+N+6wGbddvqgk/EtLoNgfDlbEfdoUNdNUnjhHSpnNBQ==","signatures":[{"sig":"MEYCIQCzuLurCiPZ3NElT/S4ztX5WGHgWZqBg+AIp3AvYC37AQIhAJ96Z+Cp9OnYgZQjT9CZbOHMYwBpzlw90rfZVRfe1ybR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159463},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.8.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"pnpm run test:unit && pnpm run test:e2e","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","test:e2e":"vitest run --config vitest.e2e.config.ts","changeset":"changeset","test:unit":"vitest run --config vitest.unit.config.ts","test:smoke":"pnpm run test:smoke-install","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/9b79cac536087e6d8cbf3ad255415718/coffeexdev-openclaw-sentinel-0.8.1.tgz","_integrity":"sha512-9Oaccb64Q8PtK3AdmbsTm5B0QMn9EzQjNWlqLAFEsYI+N+6wGbddvqgk/EtLoNgfDlbEfdoUNdNUnjhHSpnNBQ==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.8.1_1772685958610_0.16710450527515297","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@coffeexdev/openclaw-sentinel","version":"0.8.2","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","_id":"@coffeexdev/openclaw-sentinel@0.8.2","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"bin":{"openclaw-sentinel":"dist/cli.js"},"dist":{"shasum":"ad3cd2ccd798a912b1f06083d4b0990f189f3e5b","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.8.2.tgz","fileCount":48,"integrity":"sha512-fakMiNVrviej5olHr3xdD/OxI7rj0z8bNBVpuZmPeYiBBYo3JlBfvSTCKpYhUIIGQBOJPtp/4QNFUzjm/Srd+w==","signatures":[{"sig":"MEUCIBeb6EODG3YuE4DuYSyA2qE78nzOpPaQxX2QAtHM4J9wAiEAwU4NPBb3L1qzK4uezlylR0nVjpU6mYrY9IV/8cIayAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167684},"main":"dist/index.js","type":"module","_from":"file:coffeexdev-openclaw-sentinel-0.8.2.tgz","types":"dist/index.d.ts","engines":{"node":">=22"},"scripts":{"lint":"tsc --noEmit","test":"pnpm run test:unit && pnpm run test:e2e","build":"tsc -p tsconfig.json","format":"oxfmt --write .","release":"changeset publish","test:e2e":"vitest run --config vitest.e2e.config.ts","changeset":"changeset","test:unit":"vitest run --config vitest.unit.config.ts","test:smoke":"pnpm run test:smoke-install","format:check":"oxfmt --check .","version-packages":"changeset version","test:smoke-install":"./scripts/smoke-install.sh"},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"openclaw":{"extensions":["dist/index.js"]},"_resolved":"/tmp/3f466b3940bd48f39e12abce941dae7e/coffeexdev-openclaw-sentinel-0.8.2.tgz","_integrity":"sha512-fakMiNVrviej5olHr3xdD/OxI7rj0z8bNBVpuZmPeYiBBYo3JlBfvSTCKpYhUIIGQBOJPtp/4QNFUzjm/Srd+w==","repository":{"url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git","type":"git"},"_npmVersion":"10.9.4","description":"Secure declarative gateway-native watcher plugin for OpenClaw","directories":{},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"_nodeVersion":"22.22.0","dependencies":{"ox":"^0.6.0","ws":"^8.18.3","re2-wasm":"^1.0.2","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","husky":"^9.1.7","oxfmt":"^0.36.0","vitest":"^3.0.8","openclaw":"latest","@types/ws":"^8.5.13","typescript":"^5.8.2","@types/node":"^24.0.0","lint-staged":"^16.3.2","@changesets/cli":"^2.29.7"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-sentinel_0.8.2_1772732707339_0.05960785895586329","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@coffeexdev/openclaw-sentinel","version":"0.8.3","description":"Secure declarative gateway-native watcher plugin for OpenClaw","keywords":["openclaw","plugin","security","sentinel","watcher"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git"},"bin":{"openclaw-sentinel":"dist/cli.js"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"dependencies":{"@sinclair/typebox":"^0.34.48","ox":"^0.6.0","re2-wasm":"^1.0.2","ws":"^8.18.3"},"devDependencies":{"@changesets/cli":"^2.29.7","@types/node":"^24.0.0","@types/ws":"^8.5.13","ajv":"^8.17.1","husky":"^9.1.7","lint-staged":"^16.3.2","openclaw":"latest","oxfmt":"^0.36.0","typescript":"^5.8.2","vitest":"^3.0.8"},"peerDependencies":{"openclaw":">=2026.3.2"},"optionalDependencies":{"re2":"^1.23.3"},"lint-staged":{"!(*package-lock).json":"oxfmt --write","*.{ts,js,jsx,tsx,mjs,cjs,yml,yaml,md,css,html}":"oxfmt --write"},"engines":{"node":">=22"},"openclaw":{"extensions":["dist/index.js"]},"scripts":{"build":"tsc -p tsconfig.json","test":"pnpm run test:unit && pnpm run test:e2e","test:unit":"vitest run --config vitest.unit.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","test:smoke":"pnpm run test:smoke-install","test:smoke-install":"./scripts/smoke-install.sh","lint":"tsc --noEmit","format":"oxfmt --write .","format:check":"oxfmt --check .","changeset":"changeset","version-packages":"changeset version","release":"changeset publish"},"_id":"@coffeexdev/openclaw-sentinel@0.8.3","bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","_integrity":"sha512-Q6M7wQSyOsrcEFT5u8GvzFQ0xpfvnYozIP5I2/2kWIetSxEnuSKwWn8A2cqIdt5uL9UrqBDlWGhZ/Yq/hGlDYw==","_resolved":"/tmp/74fb5ddefa2ebb16a91d82a66bf381ef/coffeexdev-openclaw-sentinel-0.8.3.tgz","_from":"file:coffeexdev-openclaw-sentinel-0.8.3.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Q6M7wQSyOsrcEFT5u8GvzFQ0xpfvnYozIP5I2/2kWIetSxEnuSKwWn8A2cqIdt5uL9UrqBDlWGhZ/Yq/hGlDYw==","shasum":"43d254c65bb8a40123c291eff9079c893fdadeb4","tarball":"https://registry.npmjs.org/@coffeexdev/openclaw-sentinel/-/openclaw-sentinel-0.8.3.tgz","fileCount":48,"unpackedSize":172645,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeexdev%2fopenclaw-sentinel@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCF8UC+RjHQIEdhsRdKVIlbwEdjwzipaCdv+hEiC2RZZAIgMu2dee8lpgWASUeBDyDbKsNdm4UVZ0PGWkFYrbwm634="}]},"_npmUser":{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"},"directories":{},"maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-sentinel_0.8.3_1772773948616_0.43932418932858797"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T00:18:14.172Z","modified":"2026-03-06T05:12:29.087Z","0.1.0":"2026-03-04T00:18:14.430Z","0.1.1":"2026-03-04T00:32:38.110Z","0.1.2":"2026-03-04T00:37:25.517Z","0.1.3":"2026-03-04T02:21:22.208Z","0.1.4":"2026-03-04T03:13:58.992Z","0.1.5":"2026-03-04T03:37:26.811Z","0.1.6":"2026-03-04T03:54:29.712Z","0.1.7":"2026-03-04T04:08:59.988Z","0.1.8":"2026-03-04T04:23:50.608Z","0.2.0":"2026-03-04T13:33:23.912Z","0.2.1":"2026-03-04T13:54:38.992Z","0.3.0":"2026-03-04T14:56:33.677Z","0.4.0":"2026-03-04T15:43:29.258Z","0.4.1":"2026-03-04T16:56:36.803Z","0.4.2":"2026-03-04T17:44:15.729Z","0.4.3":"2026-03-04T18:09:54.211Z","0.4.4":"2026-03-04T20:01:24.834Z","0.4.5":"2026-03-04T21:33:35.990Z","0.5.0":"2026-03-04T22:10:58.214Z","0.5.1":"2026-03-04T22:31:57.316Z","0.6.0":"2026-03-04T23:08:32.632Z","0.7.0":"2026-03-05T02:30:35.195Z","0.8.0":"2026-03-05T04:02:51.783Z","0.8.1":"2026-03-05T04:45:58.771Z","0.8.2":"2026-03-05T17:45:07.499Z","0.8.3":"2026-03-06T05:12:28.791Z"},"bugs":{"url":"https://github.com/coffeexcoin/openclaw-sentinel/issues"},"license":"MIT","homepage":"https://github.com/coffeexcoin/openclaw-sentinel#readme","keywords":["openclaw","plugin","security","sentinel","watcher"],"repository":{"type":"git","url":"git+https://github.com/coffeexcoin/openclaw-sentinel.git"},"description":"Secure declarative gateway-native watcher plugin for OpenClaw","maintainers":[{"name":"coffeexcoin","email":"coffee@cubelabs.xyz"}],"readme":"# @coffeexdev/openclaw-sentinel\n\nSecure, declarative, gateway-native background watcher plugin for OpenClaw.\n\n## Quick start (OpenClaw users)\n\nIf you only read one section, read this.\n\n### 1) Install plugin\n\n```bash\nopenclaw plugins install @coffeexdev/openclaw-sentinel\n```\n\n### 2) Configure Sentinel\n\nAdd/update `~/.openclaw/openclaw.json`:\n\n```json5\n{\n  plugins: {\n    entries: {\n      \"openclaw-sentinel\": {\n        enabled: true,\n        config: {\n          // Required: watchers can only call endpoints on these hosts.\n          allowedHosts: [\"api.github.com\", \"api.coingecko.com\"],\n\n          // Default dispatch base for internal webhook callbacks.\n          localDispatchBase: \"http://127.0.0.1:18789\",\n\n          // Optional: base prefix for isolated /hooks/sentinel callback sessions.\n          // Sentinel appends :watcher:<id> by default (or :group:<key> when grouped).\n          hookSessionPrefix: \"agent:main:hooks:sentinel\",\n\n          // Optional: default group key for callbacks without explicit hookSessionGroup.\n          // hookSessionGroup: \"ops-alerts\",\n\n          // Optional: suppress duplicate relays by dedupe key within this time window.\n          hookRelayDedupeWindowMs: 120000,\n\n          // Optional: guarantee hook-response delivery contract for /hooks/sentinel callbacks.\n          // Wait this long for assistant-authored output before fallback behavior applies.\n          hookResponseTimeoutMs: 30000,\n\n          // Optional: timeout fallback relay mode for /hooks/sentinel response contracts.\n          // \"none\" = no fallback message, \"concise\" = send a fail-safe relay line.\n          hookResponseFallbackMode: \"concise\",\n\n          // Optional: dedupe repeated callback response contracts by dedupe key.\n          hookResponseDedupeWindowMs: 120000,\n\n          // Optional: payload style for non-/hooks/sentinel deliveryTargets notifications.\n          // \"none\" suppresses delivery-target message fan-out (callback still fires).\n          // \"concise\" (default) sends human-friendly relay text only.\n          // \"debug\" appends a structured sentinel envelope block for diagnostics.\n          // notificationPayloadMode: \"concise\",\n\n          // Optional: max length for watcher.fire.operatorGoal.\n          // Default: 12000, min: 500, hard cap: 20000.\n          // Keep this as small as practical to reduce state + prompt bloat.\n          // maxOperatorGoalChars: 12000,\n\n          // Optional legacy alias for hookSessionPrefix (still supported).\n          // hookSessionKey: \"agent:main:hooks:sentinel\",\n\n          // Optional: explicit bearer token override for dispatch calls back to gateway.\n          // Sentinel auto-detects gateway auth token from runtime config when available,\n          // so manual token copy is usually no longer required.\n          // dispatchAuthToken: \"<gateway-token>\"\n        },\n      },\n    },\n  },\n}\n```\n\n### 3) Restart gateway\n\n```bash\nopenclaw gateway restart\n```\n\n### Troubleshooting: `Unrecognized key: \"sentinel\"`\n\nIf gateway startup/validation reports:\n\n```text\nUnrecognized key: \"sentinel\"\n```\n\nyour config is using the old root-level shape. Move Sentinel config under:\n\n- `plugins.entries.openclaw-sentinel.config`\n\nSentinel also logs a runtime warning when that legacy root key is still observable, but it never writes a root-level `sentinel` key.\n\n### Hardening notes (0.6 minor)\n\n- `hookSessionKey` remains supported but is deprecated. If both are present, `hookSessionPrefix` now wins.\n- HTTP watcher strategies now set `redirect: \"error\"` to prevent host-allowlist bypass via redirects.\n- Watcher IDs are now constrained to `^[A-Za-z0-9_-]{1,128}$`.\n- `/hooks/sentinel` validates JSON `Content-Type` when provided and returns `415` for unsupported media types.\n\n### 4) Create your first watcher (`sentinel_control`)\n\n```json\n{\n  \"action\": \"create\",\n  \"watcher\": {\n    \"id\": \"eth-price-watch\",\n    \"skillId\": \"skills.alerts\",\n    \"enabled\": true,\n    \"strategy\": \"http-poll\",\n    \"endpoint\": \"https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd\",\n    \"intervalMs\": 15000,\n    \"match\": \"all\",\n    \"conditions\": [{ \"path\": \"ethereum.usd\", \"op\": \"gte\", \"value\": 5000 }],\n    \"fire\": {\n      \"webhookPath\": \"/hooks/sentinel\",\n      \"eventName\": \"eth_target_hit\",\n      \"intent\": \"price_threshold_review\",\n      \"contextTemplate\": {\n        \"asset\": \"ETH\",\n        \"priceUsd\": \"${payload.ethereum.usd}\",\n        \"workflow\": \"alerts\"\n      },\n      \"priority\": \"high\",\n      \"sessionGroup\": \"portfolio-risk\",\n      \"operatorGoal\": \"Confirm threshold breach, summarize impact, and notify on-call with actionable next steps.\",\n      \"deadlineTemplate\": \"${timestamp}\",\n      \"payloadTemplate\": {\n        \"event\": \"${event.name}\",\n        \"price\": \"${payload.ethereum.usd}\",\n        \"ts\": \"${timestamp}\"\n      }\n    },\n    \"retry\": { \"maxRetries\": 5, \"baseMs\": 500, \"maxMs\": 15000 },\n    \"fireOnce\": true\n  }\n}\n```\n\n### 5) Verify\n\nUse `sentinel_control`:\n\n```json\n{ \"action\": \"list\" }\n```\n\n```json\n{ \"action\": \"status\", \"id\": \"eth-price-watch\" }\n```\n\n---\n\n## What happens when a watcher fires?\n\n1. Sentinel evaluates conditions.\n2. On match, it dispatches a generic callback envelope (`type: \"sentinel.callback\"`) to `localDispatchBase + webhookPath`.\n3. The envelope includes stable keys (`intent`, `context`, `watcher`, `trigger`, bounded `payload`, `deliveryTargets`, `deliveryContext`, `source`) so downstream agent behavior is workflow-agnostic.\n4. For `/hooks/sentinel`, Sentinel enqueues an instruction-prefixed system event with a **structured callback prompt context** (`watcher`, `trigger`, `source`, `deliveryTargets`, `deliveryContext`, `context`, `payload`) plus the full envelope, then requests an immediate `cron:sentinel-callback` wake (avoids heartbeat-poll prompting).\n5. The hook route creates a **response-delivery contract** keyed by callback dedupe key, preserving original chat/session context (`deliveryContext`) and intended relay targets.\n6. OpenClaw processes each callback in an isolated hook session: per-watcher by default, or grouped when `hookSessionGroup` / `fire.sessionGroup` is set. Shared global hook-session mode is intentionally not supported.\n7. Relay guardrails suppress control-token outputs (`NO_REPLY`, `HEARTBEAT_OK`, empty variants). If model output is unusable, Sentinel emits a concise contextual fallback message. Timeout fallback behavior still follows `hookResponseFallbackMode`.\n\nThe `/hooks/sentinel` route is auto-registered on plugin startup (idempotent). Response contracts are dedupe-aware by callback dedupe key (`hookResponseDedupeWindowMs`).\n\nSample emitted envelope:\n\n```json\n{\n  \"type\": \"sentinel.callback\",\n  \"version\": \"1\",\n  \"intent\": \"price_threshold_review\",\n  \"actionable\": true,\n  \"watcher\": {\n    \"id\": \"eth-price-watch\",\n    \"skillId\": \"skills.alerts\",\n    \"eventName\": \"eth_target_hit\",\n    \"intent\": \"price_threshold_review\",\n    \"strategy\": \"http-poll\",\n    \"endpoint\": \"https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd\",\n    \"match\": \"all\",\n    \"conditions\": [{ \"path\": \"ethereum.usd\", \"op\": \"gte\", \"value\": 5000 }],\n    \"fireOnce\": false\n  },\n  \"trigger\": {\n    \"matchedAt\": \"2026-03-04T15:00:00.000Z\",\n    \"dedupeKey\": \"<sha256>\",\n    \"priority\": \"high\"\n  },\n  \"context\": { \"asset\": \"ETH\", \"priceUsd\": 5001, \"workflow\": \"alerts\" },\n  \"payload\": { \"ethereum\": { \"usd\": 5001 } },\n  \"deliveryTargets\": [{ \"channel\": \"telegram\", \"to\": \"5613673222\" }],\n  \"deliveryContext\": {\n    \"sessionKey\": \"agent:main:telegram:direct:5613673222\",\n    \"messageChannel\": \"telegram\",\n    \"requesterSenderId\": \"5613673222\",\n    \"currentChat\": { \"channel\": \"telegram\", \"to\": \"5613673222\" }\n  },\n  \"source\": { \"plugin\": \"openclaw-sentinel\", \"route\": \"/hooks/sentinel\" }\n}\n```\n\n## `fire.operatorGoal` length guidance\n\n- Default max length is **12000** chars (raised from 500).\n- You can tune this with plugin config: `maxOperatorGoalChars` (min 500, hard cap 20000).\n- Recommendation: keep most goals in the **200-2000 char** range for clarity and lower prompt/state overhead.\n- Use larger goals only when you genuinely need richer policy/runbook context.\n\nTradeoff: larger values improve callback guidance but also increase persisted watcher size and callback prompt footprint, so unbounded values are intentionally not allowed.\n\nMigration: existing watchers under the old 500-char limit continue to work unchanged. No migration action is required unless you want to add richer guidance.\n\n## Why Sentinel\n\nSentinel runs watcher lifecycles inside the gateway with fixed strategies and declarative conditions.\nIt **does not** execute user-authored code from watcher definitions.\n\n## Features\n\n- Tool registration: `sentinel_control`\n  - actions: `create` (`add`), `enable`, `disable`, `remove` (`delete`), `status` (`get`), `list`\n- Strict schema validation (TypeBox, strict object checks) + code-like field/value rejection\n- Strategies:\n  - `http-poll` (supports POST with custom body for JSON-RPC etc.)\n  - `websocket`\n  - `sse`\n  - `http-long-poll`\n  - `evm-call` — smart contract state polling via `eth_call` with ABI encoding/decoding\n- Condition operators:\n  - `eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `exists`, `absent`, `contains`, `matches`, `changed`\n- Match mode: `all` / `any`\n- Fire templating: substitution-only placeholders, non-Turing-complete\n- Local webhook dispatch model (no outbound custom fire URL)\n- Default callback route: `/hooks/sentinel` (auto-registered)\n- Persistence: `~/.openclaw/sentinel-state.json`\n- Resource limits and per-skill limits\n- `allowedHosts` endpoint enforcement\n- CLI surface: `list`, `status`, `enable`, `disable`, `audit`\n\n## Tool input example (`sentinel_control:create`)\n\n```json\n{\n  \"action\": \"create\",\n  \"watcher\": {\n    \"id\": \"sentinel-alert\",\n    \"skillId\": \"skills.general-monitor\",\n    \"enabled\": true,\n    \"strategy\": \"http-poll\",\n    \"endpoint\": \"https://api.github.com/events\",\n    \"intervalMs\": 15000,\n    \"match\": \"any\",\n    \"conditions\": [{ \"path\": \"type\", \"op\": \"eq\", \"value\": \"PushEvent\" }],\n    \"fire\": {\n      \"webhookPath\": \"/hooks/sentinel\",\n      \"eventName\": \"sentinel_push\",\n      \"payloadTemplate\": {\n        \"watcher\": \"${watcher.id}\",\n        \"event\": \"${event.name}\",\n        \"type\": \"${payload.type}\",\n        \"ts\": \"${timestamp}\"\n      }\n    },\n    \"retry\": { \"maxRetries\": 5, \"baseMs\": 250, \"maxMs\": 5000 },\n    \"deliveryTargets\": [\n      { \"channel\": \"telegram\", \"to\": \"5613673222\" },\n      { \"channel\": \"discord\", \"to\": \"123456789012345678\", \"accountId\": \"main\" }\n    ]\n  }\n}\n```\n\n`deliveryTargets` is optional. If omitted on `create`, Sentinel infers a default target from the current tool/session context (channel + current peer).\n\n## Notification payload delivery modes\n\nSentinel always dispatches the callback envelope to `localDispatchBase + webhookPath` on match.\n`notificationPayloadMode` only controls **additional fan-out messages** to `deliveryTargets` for watcher dispatches (for example `/hooks/agent`).\nIt does **not** control `/hooks/sentinel` hook-response contracts or assistant-output relay behavior.\n\nGlobal mode options:\n\n- `none`: suppress delivery-target notification messages (callback dispatch still occurs)\n- `concise` (default): send short relay text only\n- `debug`: send relay text plus `SENTINEL_DEBUG_ENVELOPE_JSON` block\n\n### 1) Global notifications disabled (`none`)\n\n```json5\n{\n  plugins: {\n    entries: {\n      \"openclaw-sentinel\": {\n        enabled: true,\n        config: {\n          allowedHosts: [\"api.github.com\"],\n          notificationPayloadMode: \"none\",\n        },\n      },\n    },\n  },\n}\n```\n\n### 2) Global concise relay (default)\n\n```json5\n{\n  plugins: {\n    entries: {\n      \"openclaw-sentinel\": {\n        enabled: true,\n        config: {\n          allowedHosts: [\"api.github.com\"],\n          notificationPayloadMode: \"concise\",\n        },\n      },\n    },\n  },\n}\n```\n\n### 3) Global debug diagnostics\n\n```json5\n{\n  plugins: {\n    entries: {\n      \"openclaw-sentinel\": {\n        enabled: true,\n        config: {\n          allowedHosts: [\"api.github.com\"],\n          notificationPayloadMode: \"debug\",\n        },\n      },\n    },\n  },\n}\n```\n\nIn debug mode, delivery notifications include the same concise relay line plus a `SENTINEL_DEBUG_ENVELOPE_JSON` block for diagnostics.\n\n### 4) Per-watcher override (`watcher.fire.notificationPayloadMode`)\n\n```json\n{\n  \"action\": \"create\",\n  \"watcher\": {\n    \"id\": \"status-watch\",\n    \"skillId\": \"skills.ops\",\n    \"enabled\": true,\n    \"strategy\": \"http-poll\",\n    \"endpoint\": \"https://status.example.com/api/health\",\n    \"intervalMs\": 10000,\n    \"match\": \"all\",\n    \"conditions\": [{ \"path\": \"status\", \"op\": \"eq\", \"value\": \"degraded\" }],\n    \"fire\": {\n      \"webhookPath\": \"/hooks/agent\",\n      \"eventName\": \"service_degraded\",\n      \"notificationPayloadMode\": \"none\",\n      \"payloadTemplate\": { \"event\": \"${event.name}\", \"status\": \"${payload.status}\" }\n    },\n    \"retry\": { \"maxRetries\": 5, \"baseMs\": 250, \"maxMs\": 5000 }\n  }\n}\n```\n\nAllowed values:\n\n- `inherit` (or omitted): follow global `notificationPayloadMode`\n- `none`: suppress delivery-target notification messages for this watcher\n- `concise`: force concise notification text for this watcher\n- `debug`: force debug envelope output for this watcher\n\nPrecedence: **watcher override > global setting**.\n\n### Migration notes\n\n- Existing installs keep default behavior (`concise`) unless you set `notificationPayloadMode` explicitly.\n- If you want callback-only operation (wake LLM loop via `/hooks/sentinel` but no delivery-target chat message), set global or per-watcher mode to `none`.\n\n## Hook-response delivery contract (`/hooks/sentinel`)\n\n`/hooks/sentinel` now enforces a dedicated trigger → LLM → user-visible relay contract:\n\n1. Callback is enqueued to isolated hook session.\n2. Contract captures original delivery context (`deliveryContext` + resolved `deliveryTargets`).\n3. The LLM calls `sentinel_act notify` to deliver results to targets (sole delivery mechanism).\n4. Any successful `sentinel_act` call fulfills the relay contract and cancels the timeout timer.\n5. If no `sentinel_act` call arrives in time (`hookResponseTimeoutMs`), timeout fallback is configurable:\n   - `hookResponseFallbackMode: \"concise\"` (default) sends a short fail-safe relay.\n   - `hookResponseFallbackMode: \"none\"` suppresses timeout fallback.\n6. Repeated callbacks with same dedupe key are idempotent within `hookResponseDedupeWindowMs`.\n\nExample config:\n\n```json5\n{\n  plugins: {\n    entries: {\n      \"openclaw-sentinel\": {\n        enabled: true,\n        config: {\n          allowedHosts: [\"api.github.com\"],\n          hookResponseTimeoutMs: 30000,\n          hookResponseFallbackMode: \"concise\",\n          hookResponseDedupeWindowMs: 120000,\n        },\n      },\n    },\n  },\n}\n```\n\n## Runtime controls\n\n```json\n{ \"action\": \"status\", \"id\": \"sentinel-alert\" }\n```\n\n```json\n{ \"action\": \"disable\", \"id\": \"sentinel-alert\" }\n```\n\n```json\n{ \"action\": \"remove\", \"id\": \"sentinel-alert\" }\n```\n\n## JSON Schema\n\nFormal JSON Schema for sentinel config/watchers:\n\n- `schema/sentinel.schema.json`\n\n## Documentation\n\n- [Usage Guide](docs/USAGE.md)\n\n## CLI\n\n```bash\nopenclaw-sentinel list\nopenclaw-sentinel status <watcher-id>\nopenclaw-sentinel enable <watcher-id>\nopenclaw-sentinel disable <watcher-id>\nopenclaw-sentinel audit\n```\n\n## Development\n\n```bash\npnpm install\npnpm run lint\npnpm test\npnpm run build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}