{"_id":"@vulcanen/openclaw-monitor","_rev":"31-db94e757f52c1827d9b39511ba8d8e51","name":"@vulcanen/openclaw-monitor","dist-tags":{"latest":"0.9.8"},"versions":{"0.6.0":{"name":"@vulcanen/openclaw-monitor","version":"0.6.0","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.6.0","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"0a15bac7e96f80bf24d348abcb98fe4e3f6c45fa","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.6.0.tgz","fileCount":50,"integrity":"sha512-Jmi8ZINPU5bLiaxNF/5SdNzQp/m313KxeGZ6Fd5oRdNbLh7oW5FCPSTI+7m5K51KWnKgzMpwlb91iOzSFxwldw==","signatures":[{"sig":"MEYCIQDogJ/u+mO2iktg9Bk9TziOK9KbFF4ljScke6OKsZ9w8wIhANqW5Rdl7NP7JjvrgIMDnlBhAvWFnm3SJdQoxuZzoRX1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":826672},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"01d032ce3a0ab14553b43b66169d03f5a40703bc","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.6.0_1778550003837_0.7885593401187279","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@vulcanen/openclaw-monitor","version":"0.6.1","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.6.1","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"0b9984375f1156fe4b77d4b85d0258941819ec97","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.6.1.tgz","fileCount":50,"integrity":"sha512-RTRCUrF8UxG21o8VJwof8CLEogIbTWBEfZGHAEhl3Dp57ilRuHiADAGm/FFRgugd6QaHHoExtrjF0lGwObez4w==","signatures":[{"sig":"MEUCIQCr5rTUS95zS+DkNjd1/VGnrGF0mBBrRR/LQZBF9inFAAIgCNroqwcQO5pvf4n330+hQzkNs7us4UlQpl3CczxM1QE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":827564},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"4c26fce220ed532377a98171e660f2d790028ba9","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.6.1_1778550311194_0.4797279939833423","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@vulcanen/openclaw-monitor","version":"0.6.2","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.6.2","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"1690e93e2a41b895232a7909a8111266d7cdb674","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.6.2.tgz","fileCount":50,"integrity":"sha512-dDpCxiMVt2WiUR/NjHhdFHIUt77ycFvbLmpwa+ElCxrRNUhGlEdIGTLyRq5Tx60iIGKYZuqz9B10LDL+JQBrDA==","signatures":[{"sig":"MEUCIQCpD6Ouw6HS7/lscFlENIFYaIfR2Z/uN5bFuBEU7oU3vwIgNY6MSpk/z0dWFOgFxPtSgFLbL3LIkLgEtoLnKg2s1eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":828031},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"f70923cd1a95622dfc7d5ccf912c728bc7d1b935","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.6.2_1778551053638_0.8302094590610942","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@vulcanen/openclaw-monitor","version":"0.6.3","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.6.3","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"7c575372f1d503e210e330ff0314e516e0df6e17","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.6.3.tgz","fileCount":50,"integrity":"sha512-YggPk3HXe043GqpVc+GO3cPkte3M483J42IFDqE0zKLI9/Wcf8FQ9PHyHFfjDLGlGJlBT2NA1hPw4pt3xHisnw==","signatures":[{"sig":"MEYCIQDIf6lB8UN3XCCR8NmZwRMOzEYxOjsMQi1A85ilNLVQsgIhAIUkbIj9Lo+fwrix7HCudTJWWV22PL0BCzJZMV/A9Yo5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":829456},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"4f1260d5e5e3c80b349e637d28683830fad4a08a","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.6.3_1778554534139_0.507634661972681","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@vulcanen/openclaw-monitor","version":"0.7.0","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.7.0","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"74e3a8269a6ba6369c26482bb0b7fee486f769e4","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.7.0.tgz","fileCount":64,"integrity":"sha512-T/DMdniGWYpJUExhaGdv+c25iU/dm1a1IxqtpjdzUexpHdNw3ydhpyzCzAuM5i5fphJ8H1T/Rr9tetSDhZBCZA==","signatures":[{"sig":"MEYCIQDjWSHbBfgvb61obQmFi5dhAzSRJD0ipqedGIMCNv6DeQIhAPBunnxqW9H7HHutjLn2Y4EuTBKDdnUBj07YvToQAOHe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":883315},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"3698e5fe7d6fe8fab563f14a08e5420e3b913971","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.7.0_1778556060504_0.3859860894128162","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@vulcanen/openclaw-monitor","version":"0.7.1","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.7.1","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"dba6b78f2aa120d9f87b452836efbfccc8aac78f","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.7.1.tgz","fileCount":65,"integrity":"sha512-mBFLFm1sqXLQlYvPV4U7WKCy+bf6YaFsC6ynLcNy6O1JO9XZ0/TZQ3rhTOKWizgJ7xOsRURz061BVbEmaZ9MbQ==","signatures":[{"sig":"MEUCIE24Ie5qFbupb3/G2p0MugusYIu6L0To7nTbvE+90VsMAiEAzRa0OexbqC0QBLMVgbwv195LevZW2KV70rFX2Y/16gQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":891223},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"f849fc3fe5c05c4e45dd57d7316de6d6026c83a4","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.7.1_1778556405692_0.964939214407428","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@vulcanen/openclaw-monitor","version":"0.8.0","license":"UNLICENSED","_id":"@vulcanen/openclaw-monitor@0.8.0","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"004219d48aec544c44b9f9d192ed23f98b901fb4","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.8.0.tgz","fileCount":75,"integrity":"sha512-789WhNamHh+eIl92CnQjpiiOY1r723aWjgwsRUP/JDOsOIpc3wAXXKy/H+gp8wSZrJS+0TuhEqlSsc9uwhLzsw==","signatures":[{"sig":"MEQCIC+kftsXKMt+hm6qt4nfSN1PtYsJ3D8IUXhOwV+EIKibAiAUDTbd0smANP/Ot8oRya67myUC0GKCTleiGjUukoMBtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":954761},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"a00f91e7644d2109a75da9bfd34e1f310bd4b855","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.8.0_1778558006789_0.3218962422461109","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@vulcanen/openclaw-monitor","version":"0.8.1","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.8.1","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"8410dec4709656976df2aff9accbdf6855fdbcb2","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.8.1.tgz","fileCount":76,"integrity":"sha512-4W+i64cfTW29tF+72zb8VMDxV0y/LilIQfShyyb6WifeZyj+0/qlC05lsoB9AQUpcA78Wtc543vLQFNjxuIKKA==","signatures":[{"sig":"MEUCIH7xDNh86kwq6G0FCfWTHeRTA6DdJx7iNyppBd+UdikeAiEAyJZGyH9RNrKFq+eO+rSbEwQDCVpHn0/V8uVVjs215VA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":962673},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"accc1b01a9786c230b6120b67480ec1d3b66a07b","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.8.1_1778564632601_0.13087847162135136","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@vulcanen/openclaw-monitor","version":"0.8.3","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.8.3","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"0244531b8fd13aa53829f615710839b27db26705","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.8.3.tgz","fileCount":76,"integrity":"sha512-KwBvrlxhKQnxdI7vvo1J0MisPl8zzan/jnvtAsp/A81vKHTSVE79c158rZLYDDY1tZ2zZp4BDO52TrPbffD82A==","signatures":[{"sig":"MEUCIQCCPYdoOwMDSfXlt472DKNPT2cg2RSQmWk/yo7v3VO0fAIgNmZh7StzAnP5ilJzWjiLSakFysXFkdnntkev4urQKRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":965548},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"f9771b34a2a5a95c878f22e3f9e06cf1f5e327b4","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.8.3_1778566129107_0.20835147163006362","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@vulcanen/openclaw-monitor","version":"0.9.0","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.0","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"2226f0726d99b4388e4d212805c1f5b6b9e98798","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.0.tgz","fileCount":82,"integrity":"sha512-cIuRI+5WZuMYCTTCx9QEhbXEBfAQwmss370mcreLn0cju8GRsD56I1QdB7jNjpeUCiqfMB2HbS/YpMUf+RKPlA==","signatures":[{"sig":"MEYCIQDHnYhprPRty6tdaGsla8mistIIvQ/pxusNLLrwS0HbLwIhANnzZuZFK6rUYV+9VU1n61WEyF0y6Bw5RwoUgQz7nexx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1010322},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"84ebaa8fe8cfcb2a09edca2236661565789dd545","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.0_1778567604543_0.045053477765339744","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@vulcanen/openclaw-monitor","version":"0.9.1","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.1","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"82be6dcb6ac67b0129603deef604262099c03c13","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.1.tgz","fileCount":82,"integrity":"sha512-eslvf2oUfG40gwxrYctTYWSmHxnbcZb1cxepdRxx81OfPaD8O7jGgI3q1hBjSzjF3HZdGF4yCFxGsnQznD5G7w==","signatures":[{"sig":"MEUCIHVz0Me2cdHGFkpk0MPYCIjVs4LbqyppXe9GE06m3uHqAiEA/AUezJ61djZO0kITUNO+AXoXHSN+QSEAeUQcWFAEteI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1014377},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"294b253f4d96e52a57f5f809476aea9bde34c991","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.1_1778569799527_0.4029102245487446","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@vulcanen/openclaw-monitor","version":"0.9.2","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.2","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"cb1292bb0f84650fb7c72f4bad37da9fa8f2c748","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.2.tgz","fileCount":86,"integrity":"sha512-VCXjLfWB+t/gY12i2ykX071B2IXKfk3KYM5MTTFMQD2GV/jYZA/fswuvdVnJLdwnNV2bf1sQBAuMpu7e0UrlMQ==","signatures":[{"sig":"MEUCIQCmNkCvu5cN3P3KX7cJbXVgGaMAIn04hZeF3+fwdp8i2QIgHaEzh46Sr/4Q4P/HLD0xAp8/j/E1BHaX3p7fHYaC6RI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027746},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"3a4e1638e0b1f51cd6fa9dabb80b6e5ae95cda89","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","openclaw":"2026.5.7","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.2_1778579185625_0.5645237005827908","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@vulcanen/openclaw-monitor","version":"0.9.3","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.3","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"46b8b38c35f20484d57f8d4fe57d694ca7b64949","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.3.tgz","fileCount":86,"integrity":"sha512-7EGTTByOO5zQPvyVtXWnPJ47VUL9VOVX76s/TMVoD1rc0pKXhRZop7m8kDUqds5W2zyQRbxf9u0inI6e+VbkYQ==","signatures":[{"sig":"MEUCIBMXUkSRHnzRTwKb8BjYpVh9idCfj+DjOcsMZOsik/B9AiEAwPP2AVKlct79CrxJFEJ98XgvstybRXzf2yVHKtOtms4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1036168},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"a7f65d96e7cb61653af6f0ba633b9b6ed5913451","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","openclaw":"2026.5.7","typescript":"^6.0.3","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.3_1778589454955_0.8903622343698734","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@vulcanen/openclaw-monitor","version":"0.9.4","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.4","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"74cbd3209a376b35b3bcf533623e470ea2b5ef5a","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.4.tgz","fileCount":86,"integrity":"sha512-2QrlNa0U4H8J7lKjnttCG+f/XKAxOIRHQTUU8qqy8krlBHqFtt+xQPjOTz6ZHzKXRl+mVyHhXh0OA9QMDcN3Gg==","signatures":[{"sig":"MEQCIE4iWoaGkk0kdRbWutESwqx5aBTwSIBZ+KaGxOlayFwZAiBoGu26I66Ry/acUa9eqBFewQa83D52/xSjA4UcDR9OrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038263},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"4a493b7a191ed12931edaae4ff0ec9c63b92543a","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","openclaw":"2026.5.7","typescript":"^6.0.3","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.4_1778636515605_0.7757274475468816","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@vulcanen/openclaw-monitor","version":"0.9.5","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.5","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"dist":{"shasum":"e48680c9907d7345fa4068fd136d179051947568","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.5.tgz","fileCount":86,"integrity":"sha512-8rQix1f8LHmWoSIPi4436D2x2o9XavfsnALuDSK6foi/us6zN1aLpOnMctANokBk9DbTSfE+DVS/5J1mllMzfg==","signatures":[{"sig":"MEQCIBK2qqlajIRuNHRuG3DSoVW7Vvm29OLj4bUOw/jj0EJKAiA/XYzUT506ZoTEHpg8QunS/r97GvRmmfqQRjEQaecY5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1040880},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"35edb717cc92bc04c0d2c53ceb48c40204c4ca9f","private":false,"scripts":{"test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build:ui":"cd ui && npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.22.2","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","openclaw":"2026.5.7","typescript":"^6.0.3","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.5_1778637722896_0.8420455714294901","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"@vulcanen/openclaw-monitor","version":"0.9.7","license":"MIT","_id":"@vulcanen/openclaw-monitor@0.9.7","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"homepage":"https://github.com/vulcanen/openclaw-monitor#readme","bugs":{"url":"https://github.com/vulcanen/openclaw-monitor/issues"},"dist":{"shasum":"4f46eaff315e42a1a7c111862805c66ebeb9bccb","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.7.tgz","fileCount":88,"integrity":"sha512-U9NgozWDbYvnxDHo4msa6/fjMs251PE8t/PQs8UGAyPEWNRjdpBZLurbs/sgQ1x+KiCWXz1AwKGIf4RpwB4NNg==","signatures":[{"sig":"MEYCIQCUvZVnRlnRYwVKwxCm3sUAUlgTJjv5rzlOvkgj3U8kJQIhAM0tBe3ZQxj5geSP1A35tYkiGg1EAoxTLMgHtKVh7i9L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130314},"main":"./dist/index.js","type":"module","engines":{"node":">=22"},"gitHead":"5cd775c19bdc9988c553c4a35f256b9293d0c7c5","private":false,"scripts":{"lint":"eslint .","test":"vitest run","build":"npm run build:plugin && npm run build:ui","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","format":"prettier --write \"src/**/*.{ts,tsx}\" \"ui/src/**/*.{ts,tsx,css}\"","build:ui":"cd ui && npm run build","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","ui:install":"cd ui && npm install","build:plugin":"tsc -p tsconfig.json","format:check":"prettier --check \"src/**/*.{ts,tsx}\" \"ui/src/**/*.{ts,tsx,css}\"","typecheck:ui":"cd ui && npm run typecheck","prepublishOnly":"npm run clean && npm run build && npm run test"},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.7","pluginSdkVersion":"2026.5.7"},"compat":{"pluginApi":">=2026.5.7"},"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.7"},"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/vulcanen/openclaw-monitor.git","type":"git"},"_npmVersion":"11.7.0","description":"Self-contained real-time monitoring console for OpenClaw","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","vitest":"^4.1.6","globals":"^15.15.0","openclaw":"2026.5.7","prettier":"^3.8.3","typescript":"^6.0.3","@types/node":"^25.7.0","typescript-eslint":"^8.59.3","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-monitor_0.9.7_1778673436891_0.8609473691543346","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"@vulcanen/openclaw-monitor","version":"0.9.8","description":"Self-contained real-time monitoring console for OpenClaw","repository":{"type":"git","url":"git+https://github.com/vulcanen/openclaw-monitor.git"},"bugs":{"url":"https://github.com/vulcanen/openclaw-monitor/issues"},"homepage":"https://github.com/vulcanen/openclaw-monitor#readme","type":"module","main":"./dist/index.js","scripts":{"build":"npm run build:plugin && npm run build:ui","build:plugin":"tsc -p tsconfig.json","build:ui":"cd ui && npm run build","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","test":"vitest run","test:watch":"vitest","typecheck":"tsc -p tsconfig.json --noEmit","typecheck:ui":"cd ui && npm run typecheck","ui:install":"cd ui && npm install","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write \"src/**/*.{ts,tsx}\" \"ui/src/**/*.{ts,tsx,css}\"","format:check":"prettier --check \"src/**/*.{ts,tsx}\" \"ui/src/**/*.{ts,tsx,css}\"","prepublishOnly":"npm run clean && npm run build && npm run test"},"openclaw":{"extensions":["./dist/index.js"],"install":{"npmSpec":"@vulcanen/openclaw-monitor","defaultChoice":"npm","minHostVersion":">=2026.5.18"},"compat":{"pluginApi":">=2026.5.18"},"build":{"openclawVersion":"2026.5.18","pluginSdkVersion":"2026.5.18"}},"devDependencies":{"@types/node":"^25.7.0","eslint":"^9.39.4","eslint-plugin-react-hooks":"^5.2.0","globals":"^15.15.0","openclaw":"2026.5.18","prettier":"^3.8.3","typescript":"^6.0.3","typescript-eslint":"^8.59.3","vitest":"^4.1.6"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"engines":{"node":">=22"},"license":"MIT","private":false,"gitHead":"0bd4669fb2d2e84427ccb1a8b369a05e31dc7168","_id":"@vulcanen/openclaw-monitor@0.9.8","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-t0wowQVJ+KZWt/KC0KmQzhx+27TWD+w6q7Bn3Uw7GQfwPFw4uNzl4QsY82hAzx2nkgb3gGGemM94DG0Nmz/KOA==","shasum":"610968f36271b6a6cd63cef6ed8ce9df4d56b131","tarball":"https://registry.npmjs.org/@vulcanen/openclaw-monitor/-/openclaw-monitor-0.9.8.tgz","fileCount":91,"unpackedSize":1175444,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDaj9DRZL8QDSLNHtXP6w9IMrB03jln79j3qImxQjXApAIgNXfsXRVcTQoq4AoluEpRx21LI4AfvanS0VZst8sdUBQ="}]},"_npmUser":{"name":"vulcanen","email":"chenyangisgood@gmail.com"},"directories":{},"maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-monitor_0.9.8_1779244520303_0.33108110216505815"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-09T11:59:54.741Z","modified":"2026-05-20T02:35:20.617Z","0.1.0":"2026-05-09T11:59:55.086Z","0.2.0":"2026-05-11T08:39:55.026Z","0.4.0":"2026-05-11T09:31:57.889Z","0.4.1":"2026-05-11T09:42:15.640Z","0.4.3":"2026-05-11T10:03:03.954Z","0.5.0":"2026-05-11T11:13:04.350Z","0.5.2":"2026-05-11T13:15:57.757Z","0.6.0":"2026-05-12T01:40:04.090Z","0.6.1":"2026-05-12T01:45:11.519Z","0.6.2":"2026-05-12T01:57:33.858Z","0.6.3":"2026-05-12T02:55:34.353Z","0.7.0":"2026-05-12T03:21:00.680Z","0.7.1":"2026-05-12T03:26:45.872Z","0.8.0":"2026-05-12T03:53:26.987Z","0.8.1":"2026-05-12T05:43:52.809Z","0.8.3":"2026-05-12T06:08:49.326Z","0.9.0":"2026-05-12T06:33:24.736Z","0.9.1":"2026-05-12T07:09:59.721Z","0.9.2":"2026-05-12T09:46:25.836Z","0.9.3":"2026-05-12T12:37:35.149Z","0.9.4":"2026-05-13T01:41:55.821Z","0.9.5":"2026-05-13T02:02:03.130Z","0.9.7":"2026-05-13T11:57:17.086Z","0.9.8":"2026-05-20T02:35:20.521Z"},"bugs":{"url":"https://github.com/vulcanen/openclaw-monitor/issues"},"license":"MIT","homepage":"https://github.com/vulcanen/openclaw-monitor#readme","repository":{"type":"git","url":"git+https://github.com/vulcanen/openclaw-monitor.git"},"description":"Self-contained real-time monitoring console for OpenClaw","maintainers":[{"name":"vulcanen","email":"chenyangisgood@gmail.com"}],"readme":"# OpenClaw Monitor\n\n[English](./README.md) | **中文**\n\nOpenClaw 实时监控插件。订阅 OpenClaw 内部诊断事件总线，做指标聚合、对话内容审计与日志记录；通过 SSE 提供实时事件流，并内置一个 React 仪表板（中英文）开箱即用——不依赖任何外部 Grafana / Prometheus / OTel Collector。\n\n## 功能\n\n- **总览**：顶部健康横幅（正常 / 需要关注 / 故障三档）+ 1m / 5m / 15m / 1h 滑动窗口的模型调用量、错误率、P95 延迟、会话告警；第二排生命周期 stat card（活跃 session、今日 context 压缩次数、上次 gateway 启动时间、工具结果落盘次数）；当 host ≥ 2026.5.14 在 `llm_output` 上发送 `contextTokenBudget` 时，额外渲染**上下文利用率（平均 / 峰值）** stat card；今日 Top 入口来源面板\n- **维度统计**：按 channel、provider × model、tool、入口来源（OpenAI 兼容 API / Control UI / channel 插件）维度的调用计数、错误率、token 用量、耗时分位、以及（host ≥ 2026.5.14 起）**上下文预算利用率**；新增**执行框架（Harness）维度**（`pi` / `codex-app-server` / …），单独 Harnesses 页查看\n- **运行追踪**：harness 运行列表 + 单次运行完整事件 trace 下钻\n- **诊断事件流**：每条捕获事件按推断的严重度（error / warn / info / debug）展示，支持按 level、component 子串、**事件类型前缀**（如 `model.*`、`tool.*`、`session.*`、`gateway.*`）过滤\n- **对话内容审计** *(可选)*：列表按 sessionKey 折叠分组，支持**状态过滤**（全部 / 仅失败 / 仅成功）；详情页用**时间线 + 配对卡片**呈现——入站 / 每次 LLM 调用（input+output 同卡）/ 出站 / 错误按时间排序，**只渲染有数据的卡片**，半捕获跳会内嵌诊断 hint（默认 1 MiB 单段上限）。30 分钟无 host 更新的卡死 record（发送方掉线、host 中途崩溃）会被自动 sweep 并标记为 `abandoned`，内存有界。\n- **告警引擎** *(可选)*：定时评估滑动窗口指标（错误率、P95 延迟、调用量、以及 host ≥ 2026.5.14 起的 `avgContextUtilizationPct` / `peakContextUtilizationPct`），命中阈值时推送到通用 webhook 或钉钉自定义机器人；带冷却 + 恢复通知；活跃告警 / 规则状态 / 24h 历史在 Alerts 页查看\n- **成本 / Token 经济学** *(需要 audit 安全门 + 上游返回 usage)*：按 provider/model 配置价格表（input/output/cacheRead/cacheWrite per 1k tokens）；滑动窗口实时成本 + 今日 / 本周 / 本月 / 近 30 天的持久化日级累计 (UTC)；按 model / channel / source 拆分。Token 数据来自 `llm_output` hook 的 `usage` 字段——如果上游 LLM provider 在 OpenAI 兼容响应里不返回 usage（部分自建网关 / 代理会忽略），Costs 页会一直为 0（页面会自动检测并提示）\n- **诊断 / Top-N 下钻**：把聚合指标变成可点击的个案——最慢的 `model.call.completed`、Token 消耗最多的对话、按 provider × model × errorCategory 聚类的错误、按工具失败率排序；每行可跳到 Run Detail / Conversation Detail。时间窗可选 15m / 1h / 6h / 24h。\n- **实时流**：SSE 推送 `/api/monitor/stream`，仪表板自动订阅\n- **生命周期可视化**：session 起 / 结、agent 上下文压缩（before / after）、tool 结果持久化、gateway 启 / 停作为合成事件出现在 Logs / Events 页——配合事件类型前缀过滤可单独下钻任一类。专门的 **会话** 页直接展示 start / end / 时长 / 结束原因。\n- **全局时间窗选择器**：顶部一个下拉，所有支持时间窗的页面共用；URL hash (`?window=15m`) 同步，深链能复现视图\n- **零外部依赖**：JSONL 文件持久化，按日期分区 + 后台 retention，无原生模块\n- **i18n**：中文默认，可一键切英文\n\n## 兼容性\n\n| 项 | 要求 |\n|---|---|\n| OpenClaw host | `>=2026.5.7` |\n| Plugin API | `>=2026.5.7` |\n| Node | `>=22` |\n\n## 安装\n\n在部署 OpenClaw 的主机上：\n\n```bash\nopenclaw plugins install npm:@vulcanen/openclaw-monitor\nopenclaw monitor setup --audit            # 信任插件 + 启用内容审计\nopenclaw gateway restart\n```\n\n仅启用指标 / 仪表板，不启用内容审计：\n\n```bash\nopenclaw plugins install npm:@vulcanen/openclaw-monitor\nopenclaw monitor setup                    # 不带 --audit\nopenclaw gateway restart\n```\n\n随时查看状态：`openclaw monitor status`\n\n## 配置\n\n完整配置项及默认值（写入 OpenClaw 的 `~/.openclaw/openclaw.json`）：\n\n```jsonc\n{\n  \"plugins\": {\n    \"allow\": [\"openclaw-monitor\"],\n    \"entries\": {\n      \"openclaw-monitor\": {\n        \"hooks\": {\n          \"allowConversationAccess\": true   // host 安全门：放行 llm_input / llm_output / agent_end hook\n        },\n        \"config\": {\n          \"buffer\": { \"maxPerType\": 1024 },\n          \"storage\": {\n            \"kind\": \"jsonl\",                 // 或 \"memory\"\n            \"path\": null                     // 默认 <stateDir>/openclaw-monitor\n          },\n          \"retention\": {\n            \"eventsDays\": 7,\n            \"runsDays\": 90\n          },\n          \"stream\": {\n            \"maxSubscribers\": 16,\n            \"heartbeatMs\": 15000\n          },\n          \"audit\": {\n            \"enabled\": true,                 // 默认开\n            \"contentMaxBytes\": 1048576,      // 单条文本上限（1 MiB，cap 16 MiB）\n            \"retainDays\": 3,                 // 对话 JSONL 保留天数\n            \"captureSystemPrompt\": true\n          },\n          \"pricing\": {\n            \"currency\": \"CNY\",               // 自由文本货币单位，不做汇率换算\n            \"models\": {\n              \"qwen/qwen3-5-397b-a17b\": { \"input\": 0.0008, \"output\": 0.002 },\n              \"openai/gpt-4\":           { \"input\": 0.03,   \"output\": 0.06 },\n              \"anthropic/claude-3.5-sonnet\": {\n                \"input\": 0.003,\n                \"output\": 0.015,\n                \"cacheRead\": 0.0003,         // 可选；省略则用 input 价格\n                \"cacheWrite\": 0.00375        // 可选；省略则用 input 价格\n              }\n            }\n          },\n          \"alerts\": {\n            \"enabled\": false,                // 默认关。开启需同时配 channels 和 rules\n            \"evaluationIntervalSec\": 30,\n            \"channels\": {\n              \"ops-webhook\": {\n                \"kind\": \"webhook\",\n                \"url\": \"https://example.com/alert-receiver\"\n              },\n              \"ops-dingtalk\": {\n                \"kind\": \"dingtalk\",\n                \"url\": \"https://oapi.dingtalk.com/robot/send?access_token=XXX\",\n                \"secret\": \"SEC_xxx\"          // 可选，钉钉自定义机器人 HMAC-SHA256 签名密钥\n              }\n            },\n            \"rules\": [\n              {\n                \"id\": \"model-errors-spike\",\n                \"name\": \"LLM 调用 5m 内错误数 > 5\",\n                \"metric\": \"modelErrors\",\n                \"window\": \"5m\",\n                \"op\": \">\",\n                \"threshold\": 5,\n                \"severity\": \"error\",\n                \"cooldownSec\": 600,\n                \"channels\": [\"ops-webhook\", \"ops-dingtalk\"]\n              },\n              {\n                \"id\": \"model-p95-too-slow\",\n                \"name\": \"LLM P95 延迟 > 5s\",\n                \"metric\": \"modelP95Ms\",\n                \"window\": \"5m\",\n                \"op\": \">\",\n                \"threshold\": 5000,\n                \"severity\": \"warn\",\n                \"cooldownSec\": 300,\n                \"channels\": [\"ops-webhook\"]\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n> `openclaw monitor setup [--audit]` 命令会自动写入 `plugins.allow` 和 `hooks.allowConversationAccess`。这两个键由 OpenClaw host 安全模型管理，**不能由插件自动写盘**——必须由操作者显式触发。\n\n## 仪表板\n\n```\nhttp://<gateway-host>:<port>/monitor/\n```\n\n首次进入会提示输入 OpenClaw gateway operator token（可用 `openclaw config get gateway.auth.token` 获取）。Token 仅存浏览器 localStorage，后续 API 请求自动附 `Authorization: Bearer ...` 头。右上角可切换中 / EN。\n\n## HTTP 端点\n\n所有 `/api/monitor/*` 路由均需 `Authorization: Bearer <gateway-operator-token>`；`/monitor/*` 静态资源公开（数据接口仍受保护）。\n\n| 路径 | 用途 |\n|---|---|\n| `GET /api/monitor/overview` | 4 个滑动窗口指标 + 错误列表 + 类型计数 |\n| `GET /api/monitor/events?type=&limit=` | 原始事件流 |\n| `GET /api/monitor/health` | 健康检查 |\n| `GET /api/monitor/channels` | 每通道调用统计 |\n| `GET /api/monitor/models` | 每 provider × model 调用统计 + token |\n| `GET /api/monitor/tools` | 每 tool 执行统计 |\n| `GET /api/monitor/sources` | 按入口来源（openai-api / control-ui / channel:*）统计 |\n| `GET /api/monitor/harnesses` | 按 harness 后端聚合（如 `pi`、`codex-app-server`）；host < 2026.5.14 时返回空 |\n| `GET /api/monitor/runs?limit=` | harness 运行列表 |\n| `GET /api/monitor/runs/:runId` | 单次运行详情 + 事件 trace |\n| `GET /api/monitor/logs?level=&component=&type=&typePrefix=` | 诊断事件流（按推断 level / 子串 component / 精确 event type / 事件类型前缀如 `model.` 过滤） |\n| `GET /api/monitor/series?metric=&windowSec=` | 10 秒粒度时序数据 |\n| `GET /api/monitor/stream` | SSE 实时事件推送 |\n| `GET /api/monitor/conversations?limit=&groupBy=sessionKey&hasError=true\\|false` | 对话审计列表（加 `groupBy=sessionKey` 返回按 session 分组的嵌套结构；加 `hasError` 服务端过滤成功/失败） |\n| `GET /api/monitor/conversations/:runId` | 单次对话四段完整内容 |\n| `GET /api/monitor/alerts/rules` | 当前生效的告警规则列表 + 引擎运行状态 |\n| `GET /api/monitor/alerts/active` | 当前正在触发的告警 |\n| `GET /api/monitor/alerts/history?limit=` | 最近 24h 告警事件（fired / renotified / resolved） |\n| `GET /api/monitor/costs` | 成本快照：sinceStart / windows / 今日 / 本周 / 本月 / 近 30 天每日趋势 + 按 model / channel / source 拆分 |\n| `GET /api/monitor/insights/slow-calls?windowSec=&limit=` | 时间窗内最慢的 model.call.completed Top-N |\n| `GET /api/monitor/insights/heavy-conversations?windowSec=&limit=` | 按总 token 排序的对话 Top-N |\n| `GET /api/monitor/insights/error-clusters?windowSec=&limit=` | model.call.error 按 provider × model × errorCategory 聚类 |\n| `GET /api/monitor/insights/tool-failures?windowSec=&limit=` | 工具失败次数 + 失败率 Top-N |\n| `GET /monitor/*` | 内置仪表板 |\n\n## 自建 LLM 上游的已知配置注意点\n\n### Costs 页 token 一直显示 0 —— 给 model 加 `compat.supportsUsageInStreaming: true`\n\nOpenClaw 转发请求时**已经**带了 `stream_options.include_usage: true`（host 源码 `src/agents/openai-transport-stream.ts` 写死的）。问题在 parser：host 对**未知 baseUrl** 的 OpenAI-compat provider（任何自建的 vLLM / SGLang / TGI / 自建 proxy）默认把 `model.compat.supportsUsageInStreaming` 设成 `false`（`src/plugins/provider-model-compat.ts`），导致 stream parser **静默丢弃**上游真实发回来的 usage 帧。结果就是 Monitor 的 Costs 页 token / cost 永远是 0。\n\n按模型覆盖默认：\n\n```jsonc\n\"models\": {\n  \"providers\": {\n    \"qwen\": {\n      \"baseUrl\": \"http://your-internal-gateway/v1\",\n      \"apiKey\": \"...\",\n      \"api\": \"openai-completions\",\n      \"models\": [\n        {\n          \"id\": \"qwen3-5-397b-a17b\",\n          \"name\": \"Qwen 3.5\",\n          // ...原有字段...\n          \"compat\": {\n            \"supportsUsageInStreaming\": true\n          }\n        }\n      ]\n    }\n  }\n}\n```\n\n重启 gateway。几次请求后 Costs 页就有 token 了。要看人民币成本，再在 `plugins.entries.openclaw-monitor.config.pricing.models[\"provider/model\"]` 里填每 1k token 的单价。\n\n排错时先验证上游本身正常（绕过 OpenClaw）：\n\n```bash\ncurl -s \"$BASE_URL/chat/completions\" -H \"Authorization: Bearer $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\":\"...\", \"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\n       \"stream\": true,\n       \"stream_options\": {\"include_usage\": true}}'\n```\n\n`[DONE]` 前的最后一个 `data:` 块带非空 `\"usage\"` 字段 → 上游是好的，只需要上面那个 `compat` flag。\n\n## 隐私与存储\n\n- 内容审计抓取的是原始 prompt / assistant 文本，可能含 PII / 业务密钥；落盘为明文 JSONL，请控制运维角色访问\n- 单条对话约 1–50 KB（开启全量内容后可上到 MB 级），按业务流量估算容量；retention 默认 3 天可调\n- 仪表板限定 `trusted-operator` 权限，**不要把 OpenClaw gateway 暴露公网**\n- 不需要内容审计时，将 `config.audit.enabled` 设为 `false` 即可关闭\n\n## 许可\n\nMIT — 见 [LICENSE](./LICENSE)。\n","readmeFilename":"README.zh-CN.md"}