{"_id":"@akalsey/sapience-feedback","_rev":"13-e57057ba12b2300bd3ec4bcf1319982f","name":"@akalsey/sapience-feedback","dist-tags":{"latest":"0.5.5"},"versions":{"0.1.1":{"name":"@akalsey/sapience-feedback","version":"0.1.1","_id":"@akalsey/sapience-feedback@0.1.1","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"2399973c8ac558ffd6d5b7c3a0de6dc36ccd3345","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.1.1.tgz","fileCount":10,"integrity":"sha512-h/ulheS/yBKTP4tu1m1dBolmTR2JRei/5OB7vCqCNJJ1gsQ43/um0RoSQs4YHQIupQGujxzlBy1n014/ds8Nag==","signatures":[{"sig":"MEQCIGu3EAYUrssNlkqmw5dDK9q/zHg8+jjGEP6cKpAxg+jMAiBWpnd3r3l9n/xUc52KdNTf8YL+Lg/BMAh3x9pgB8iq+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14398},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"e69aa5226df47dbe33b331476ade8e20aca36f95","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.1.1_1779638519545_0.13607289095343034","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@akalsey/sapience-feedback","version":"0.2.0","_id":"@akalsey/sapience-feedback@0.2.0","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"bb740a5bef9d73b461874cb8d584088cf54f5f22","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.2.0.tgz","fileCount":12,"integrity":"sha512-QTZQG6Ya7spn9b5jEQX09UYQIXcziBi/2DKbiCMfhpIpjwwxPPtJsLLlwwdq7G0EZVSSQMgQ+VOA+eBvlQXZuw==","signatures":[{"sig":"MEUCIF1oWXOJMyD6mNPo8JVYlL3Z2xEH0ciirJhwoHHQysZnAiEAkFO8X697vkl4UQNuQOzrXMNaoM1t6/A7zE+ZS9zkQTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25027},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"39e96442fc20e8f43ca9165d94b40399613090b4","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.2.0_1779809290495_0.477306376466893","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@akalsey/sapience-feedback","version":"0.3.0","_id":"@akalsey/sapience-feedback@0.3.0","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"7c31515ebe32effb1dfeb30e57332ac45deb59c9","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.3.0.tgz","fileCount":13,"integrity":"sha512-lgfZ0f0yOf+3AMbyyb4Gl6+7jmCuut+nYfOMYBv8uuz4WzCkUFIewcR5MjDFhkgEoLOm0b6Ztu+hmq13xBqLOQ==","signatures":[{"sig":"MEQCIFUDSNMA3w6aIK169i0RPMxYkaBtilra1fy4O1vtg2gVAiAzkYMJQN11+VWmCoRihV6HSnDKltkCeAApK4lzg4FT9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26970},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"3fdcdcf039e736bacac997650f41c70747b120de","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.3.0_1781063531571_0.43819141796481187","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@akalsey/sapience-feedback","version":"0.3.1","_id":"@akalsey/sapience-feedback@0.3.1","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"3cfd1e5740d009440b4b394fcb68dedf61478d6b","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.3.1.tgz","fileCount":13,"integrity":"sha512-baGe1bGhQmt+NOL4A6nZQVHldWdv+dWNH2MZ8tnSeW7OQYUABlx1th0HhPoEw8Oqa66x2+EEqL1KPNcCgoxD1Q==","signatures":[{"sig":"MEUCIQDZt332IwAVQCxBHOTbywFntCllyR+Xuf+3Un8HnCcx2gIgM5IUg0hFRwk1ZSYmf7p3UK9BS4bgpS3b9RkuGE4WuOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27049},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"3fdcdcf039e736bacac997650f41c70747b120de","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.3.1_1782363124556_0.8516944100948356","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@akalsey/sapience-feedback","version":"0.3.3","_id":"@akalsey/sapience-feedback@0.3.3","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"1d351839553924c7f0de55ac1a91528748927561","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.3.3.tgz","fileCount":13,"integrity":"sha512-Lm7zOxOXwSJ5wM+TraGpF0MZb4X/MNap9QZqNGlwf97a5z3G4iOqFdhqt6AlZzoeElJBgIeIoQRqL9vfkCH/1A==","signatures":[{"sig":"MEYCIQCR/pvQAy75xgpKlLvFbQEs0X39oVg5ElXZ/7Sn5Cj1NQIhAIEwfjXyDPkG1Z5SDBhDatEnXPZD281LAq+RQQuW8kBE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28000},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"a380449457dca9cf5993e9770b9f44f3629db217","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.3.3_1782529235113_0.7219471805513809","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@akalsey/sapience-feedback","version":"0.3.4","_id":"@akalsey/sapience-feedback@0.3.4","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"46f2546eb023245f31ccbf6e7115dde0fad477c3","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.3.4.tgz","fileCount":14,"integrity":"sha512-i5wmWuxJJvbSMdaYrzCs3usPowUTQneR+goUaYI042BmO+MKdj7Pn0bejtWDj5EfGTvdUSk7D26Q/1InCCdKGA==","signatures":[{"sig":"MEQCIFuOW8PxMnBRtLO2EytVnSQQ/S1Od6VQZ+P8Ecw0aaPxAiAVQGQKrIndn4f1kQsT24wl7B01Nfu8ys3TsFspCl86eA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29290},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"0eced2643c72140ad95df391743884b90481b536","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.3.4_1782600217975_0.7091834459239506","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@akalsey/sapience-feedback","version":"0.4.0","_id":"@akalsey/sapience-feedback@0.4.0","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"6798ada7a9c7da1a2ff80ebc14b5443554da2204","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.4.0.tgz","fileCount":16,"integrity":"sha512-I0STLZIgGZDLp2pUqEGCUlE2DOwRc7MCyyiJ0hGLibU4PhmzXHar57sFbyrer014pM4GgHJuOlVPUuoYfeyCBg==","signatures":[{"sig":"MEUCIFlXu1Ms4vxHghQ5y1VnhEQBMBk8qIibiat0qO7shobvAiEAgfhJip++Smdizg1qqRufFEHfeLfqeuuyaC6bMSaCIQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34978},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"5b2370974d9adb7f29010cbc9a27c2fd3f0ddfdf","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.4.0_1783294343264_0.24088499605690883","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@akalsey/sapience-feedback","version":"0.5.0","_id":"@akalsey/sapience-feedback@0.5.0","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"e290d31b01ab0df71c9c5e237703783a45f5d555","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.0.tgz","fileCount":18,"integrity":"sha512-Z6lPqvFWGZdmJicsSMLVBB3i/9K3zDKRFLv41JVwE0Sm0MeR4iOx8ltJEEG5zeiatoddp3FOl1Z5UvKHxK4KwQ==","signatures":[{"sig":"MEUCID6BFXslZiwdFTBz4HqlEDnrm27aFIHBztKmM4Wbz6/TAiEA1y2br+48g4d2W4NmtFeuilb/p693yVYRUbpHYQa1x+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41990},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"f02178b78ced8e8f9bd78b1646f58498518b1c3d","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.5.0_1783302609390_0.9127102562769196","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@akalsey/sapience-feedback","version":"0.5.1","_id":"@akalsey/sapience-feedback@0.5.1","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"37c710ea647ec6f9286b60fc0c01089c3bbb83dd","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.1.tgz","fileCount":18,"integrity":"sha512-DKX8RTmuxbiOyKtPC7RpVkaWwZwQJ18BHleQezu81E9WT6wgMvcoSRAwqG6tbf5JH2Wu0jnpDD+CPYxNkzBEpA==","signatures":[{"sig":"MEQCIEiq1IsbaLuw7vRW7IRiS0rH561Mn0PkfPWveDYBs+dEAiAVU7Rq0aEVrCz3fJHDRcZIQbokif1MDqtfnBt9hZryxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42812},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"f8f111702b2e16cd1a5b46e9ce8dbdc832144416","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.5.1_1784097457217_0.24423795608899224","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@akalsey/sapience-feedback","version":"0.5.2","_id":"@akalsey/sapience-feedback@0.5.2","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"2036dfed8d5fc4c3fa2bf74f80f804160fdfdece","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.2.tgz","fileCount":18,"integrity":"sha512-7gG0btEyEtuMoBP/p1mjHr4Vd9N8OJaUV28+irkkDvl3HtfS9/rAyEWhbXlMKWQ5617bk83Mtnkh6flFptNJGg==","signatures":[{"sig":"MEQCIE8RRl0ZQxVUjvVt7vdnNlgoRZhIfPL0BjQa1kR+BVfPAiBpdIEHXdShd0qB5u6j7Dz6sGIiTL4gbCnDTb4P4xoy/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43086},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"eb297250731094244d51778cebc80f657edfd3e3","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.5.2_1784334755762_0.8714124138444517","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@akalsey/sapience-feedback","version":"0.5.3","_id":"@akalsey/sapience-feedback@0.5.3","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"d754cccd757d4f072735cbc40b04de867b39bdc5","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.3.tgz","fileCount":18,"integrity":"sha512-mlUyJxblFlOkp7S2v07Q0jTk6ovFsfNYSL7G23gORqWNZf5hZAaN9PSF1V5eJsmkrvWfKg/j1jM+epgQzqnv6Q==","signatures":[{"sig":"MEUCIQD64U/y+tSTX+Cfw4g1Jpn0Al0LUOztbCHOqLXdnlZEoQIgVzsfK18cm5ct+3FXzHtYdOUnUqIBQKmi0vrVJp5fJmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44690},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"d087829aebe6647e19e81e8961bbea91f2b147c3","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.5.3_1784994177812_0.43720317494093597","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@akalsey/sapience-feedback","version":"0.5.4","_id":"@akalsey/sapience-feedback@0.5.4","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"f9619474b1439e02f8c186cab671bf2443151da8","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.4.tgz","fileCount":19,"integrity":"sha512-XT7GZphThu0ltoTgjRPSLBHLUgQ36LGsj7swAjw75ravxbZFh8x2ABsBuxBpSlOdZJCvCrtUxzlx9+A3/c1IyQ==","signatures":[{"sig":"MEUCIDf99zGT7pXk33Sy+3x0EhnYsQK1xOwMZ+WhtlKh5/OLAiEAmQvk58znsUFBrjoN9xUwGek7T3G2YoCO0ghBhlsDuF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48435},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"766410f327e22178318b4501458f3640ba0908c5","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.7.1","minGatewayVersion":"2026.7.1"},"install":{"localPath":".","minHostVersion":">=2026.7.1"},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","directories":{},"_nodeVersion":"26.5.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.7.1"},"_npmOperationalInternal":{"tmp":"tmp/sapience-feedback_0.5.4_1788373576183_0.8655984006428374","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@akalsey/sapience-feedback","version":"0.5.5","type":"module","main":"./dist/index.js","exports":{".":"./dist/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"openclaw":{"extensions":["./dist/index.js"],"compat":{"pluginApi":">=2026.7.1","minGatewayVersion":"2026.7.1"},"install":{"localPath":".","minHostVersion":">=2026.7.1"}},"devDependencies":{"@types/node":"^22.0.0","openclaw":"latest","typescript":"^5.5.0","vitest":"^2.0.0"},"peerDependencies":{"openclaw":">=2026.7.1"},"gitHead":"766410f327e22178318b4501458f3640ba0908c5","_id":"@akalsey/sapience-feedback@0.5.5","description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","_nodeVersion":"26.5.1","_npmVersion":"11.13.0","dist":{"integrity":"sha512-WCfTmCLahKcmAL1LVWXwG4YbQ6BaVd479PghgOWjqP7pRQFxNrqo3cF+yGIXuAbEXBZz1tOa7ROa5TDlX2804Q==","shasum":"713804d0be67010e8e75b18714042a6bc5dc244e","tarball":"https://registry.npmjs.org/@akalsey/sapience-feedback/-/sapience-feedback-0.5.5.tgz","fileCount":20,"unpackedSize":50996,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUsKeDAoKeD504JYdmWc+Ylh0AG10cjsrDu3cx5QWZxgIgduQBrKQOj5SLbEq9AC1Qs5IlDFnYDXNU5GK+srvMi2k="}]},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"directories":{},"maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sapience-feedback_0.5.5_1788405359765_0.8459633073593227"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T16:01:59.340Z","modified":"2026-09-03T03:16:00.196Z","0.1.1":"2026-05-24T16:01:59.704Z","0.2.0":"2026-05-26T15:28:10.643Z","0.3.0":"2026-06-10T03:52:11.715Z","0.3.1":"2026-06-25T04:52:04.703Z","0.3.3":"2026-06-27T03:00:35.253Z","0.3.4":"2026-06-27T22:43:38.120Z","0.4.0":"2026-07-05T23:32:23.403Z","0.5.0":"2026-07-06T01:50:09.527Z","0.5.1":"2026-07-15T06:37:37.357Z","0.5.2":"2026-07-18T00:32:35.956Z","0.5.3":"2026-07-25T15:42:58.011Z","0.5.4":"2026-09-02T18:26:16.323Z","0.5.5":"2026-09-03T03:16:00.036Z"},"description":"You give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"readme":"# OpenClaw Feedback\n\nYou give feedback constantly — correcting a format choice, confirming something worked well, redirecting how the agent handled a decision. This plugin catches those signals from your normal chat messages and makes them permanent.\n\nA correction becomes a calibration. A confirmation reinforces a pattern. The sapience calibration profile updates in real time so the agent's behavior reflects how you actually want it to operate.\n\nThis plugin is part of the Sapience Suite that gives your OpenClaw agent genuine agency — not just the ability to execute tasks, but the judgment to know when to act, when to ask, when to propose, and when to say \"I'm not sure how you want me to handle this.\"\n\nThis plugin can be used without Sapience if all you want to do is have the agent track and incorporate feedback.\n\n---\n\n## Setup\n\n### Prerequisites\n\nNone required. This plugin works standalone.\n\nIf `sapience` is also installed, the calibration profile at `<workspace>/sapience/calibration.json` feeds directly into autonomy routing. Without sapience, the profile is still written but nothing reads it.\n\n### Install\n\n```bash\nopenclaw plugins install npm:@akalsey/sapience-feedback\n```\n\n### Configuration\n\nConfig lives under `plugins.entries.sapience-feedback.config` — the full path shape; the short `plugins.sapience-feedback` form is silently ignored.\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"sapience-feedback\": {\n        \"config\": {\n          \"logPath\": \"sapience/feedback.md\",\n          \"calibrationPath\": \"sapience/calibration.json\",\n          \"playbooksPath\": \"sapience/playbooks.json\",\n          \"memoryEnabled\": true,\n          \"semanticDetection\": {\n            \"enabled\": true,\n            \"minLength\": 8,\n            \"minConfidence\": 0.6\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nAll settings are optional — defaults are used if omitted. Relative paths resolve under the agent workspace dir (`<workspace>/`); absolute and `~/` paths are honored as-is. Full key reference: [docs/configuration.md](../docs/configuration.md).\n\n**`semanticDetection`** controls the LLM-based classifier. When enabled (the default), every user message above `minLength` characters is classified by the agent's default inference provider. Set `enabled: false` to fall back to regex-only matching (useful if you want zero LLM cost on routine chat).\n\n---\n\n## How capture works\n\nPassive capture rides the gateway's message hook: every incoming user message is classified as it arrives. Whether the hook surface was available is recorded as `captureMode` in the plugin's status artifact — `message-hook` means passive capture is live; `command-only` means the gateway didn't expose the hook and only `/feedback` works. `openclaw sapience doctor` warns when capture is degraded to command-only.\n\n## What it detects\n\nEvery user message is analyzed by the agent's default inference provider (using `api.runtime.llm.complete` — no separate provider configuration required). The classifier returns structured signals in one of four categories. No trigger words or special syntax — speak normally.\n\n### Corrections\n\nAnything that tells the agent it did something wrong or should do it differently. The classifier picks up direct phrasing (\"don't push to main\"), rhetorical questions (\"did you check the password manager first?\"), and implicit critiques (\"is there something wrong with the passwords you have?\").\n\n**Effect:** Confidence on the matching domain/action-class drops by 0.3.\n\n### Confirmations\n\nAnything that reinforces what the agent just did — agreement, praise, \"keep doing that\".\n\n**Effect:** Confidence on the matching domain/action-class increases by 0.1.\n\n### Tier adjustments\n\nInstructions about how much autonomy the agent should have. \"Just do it\" or \"stop asking\" bumps toward **Act**. \"Always check first\" or \"ask me before doing X\" bumps toward **Ask**.\n\n**Effect:** Tier for matching domain/action-class is updated directly.\n\n### Method feedback\n\nStanding rules about *how* to analyze something, rather than how much autonomy to take. \"Whenever you look at churn, segment by plan tier.\" \"Always check for outliers before reporting an average.\"\n\n**Effect:** No confidence change — the rule is appended to the shared analytical playbooks file (`playbooksPath`), and every future thinking pass applies it whenever the data in front of it is relevant. Near-duplicate rules are detected and skipped (`playbook_duplicate` event).\n\nA **one-time directive** is not method feedback. \"Go re-check the Q3 numbers and tell me what you find\" is a task, not a standing analytical move; stored as a permanent playbook it gets re-read as an unexecuted mandate on every thinking pass and re-proposed forever. The classifier distinguishes the two, and anything too long to be a single analytical move is rejected outright with a `playbook_rejected` event.\n\nIf the LLM is unavailable (no `api.runtime.llm` exposed, or the call fails), the plugin falls back to a regex matcher covering the common phrasings. The regex layer is intentionally conservative and misses paraphrases — semantic detection is the primary path.\n\n---\n\n## Explicit feedback: the `/feedback` command\n\nWhen you want to leave feedback without ambiguity, use the slash command:\n\n```\n/feedback always look at the password manager before asking me for credentials\n```\n\nThe command runs the same classifier and then records the result as a `manual` signal. If the classifier finds no clear signal, the message is still logged as a generic correction in the `general` domain — manual feedback is never discarded.\n\n---\n\n## Domain detection\n\nThe LLM extracts a domain slug from the content of your message: `github`, `credentials`, `okr-system`, `salesforce`, etc. When the LLM can't identify anything specific, it returns `general`. The regex fallback uses a shared builtin taxonomy (the same one sapience's routing uses) and is more likely to bucket things into `general`.\n\nThe taxonomy is extendable: set `domains: {\"<regex>\": \"<slug>\"}` in plugin config — your patterns are checked before the builtins. Set the same key on the `sapience` plugin so feedback lands on domains routing actually emits.\n\n---\n\n## Reading the feedback log\n\n```bash\ncat <workspace>/sapience/feedback.md\n```\n\nThe log rotates at 5 MB (newest 500 lines kept in place, previous contents in `feedback.md.old`).\n\nEach entry shows:\n- Signal type (correction / confirmation / tier_adjustment / method)\n- Domain and action class affected\n- The original message\n- Tier adjustment, if any\n- Meta-pointer written to memory, for corrections\n\n---\n\n## Meta-memory pointers\n\nFor corrections, the plugin calls `api.memory.add` to write a behavioral reminder directly into OpenClaw's native memory:\n\n> \"Before working on github / github/action: check feedback log — correction recorded: 'don't push to main without a PR'\"\n\nThe *write* goes through `api.memory.add` — the same API OpenClaw itself uses — and succeeds whether or not any extra memory plugin is installed. **But a successful write is not enough for the pointer to come back.** For these corrections to actually resurface in future sessions (and for `sapience-thinking` to pick up memory as context), OpenClaw needs the `memory-wiki` layer installed and configured:\n\n| Setting | Value | Why |\n|---|---|---|\n| `plugins.entries.memory-core.config.dreaming.enabled` | `true` | Background consolidation of memories |\n| `plugins.entries.memory-wiki.config.vaultMode` | `\"bridge\"` | Wiki operates in bridge mode |\n| `plugins.entries.memory-wiki.config.bridge.enabled` | `true` | Bridges `memory-core` ↔ wiki so writes become recallable |\n| `plugins.entries.memory-wiki.config.search.corpus` | `\"all\"` | Recall searches across the whole corpus |\n\nThe suite installer (`install.sh`) checks for `memory-wiki` and offers to install it and apply these settings. Without them, corrections are written but may never persist or resurface across sessions — the calibration profile still updates, but the behavioral reminders won't reliably come back.\n\nTo disable memory writes entirely, set `memoryEnabled: false` in config.\n\n---\n\n## Troubleshooting\n\n**Feedback not being detected**\nThe plugin only scans messages you send (role: `user`), not the agent's responses. Make sure you're sending the correction as a chat message, not just thinking it.\n\n**Calibration not updating**\nFeedback on a domain sapience hasn't routed yet is not dropped: the plugin seeds a conservative calibration entry (`propose` tier, confidence 0, `notes: \"created from feedback\"`) and applies the signal to it. If `calibration.json` isn't changing at all, check that capture is working (`captureMode` in the doctor output) and look for a quarantined `calibration.json.corrupt-<timestamp>` next to it.\n\n**Feedback getting misclassified or missed**\nRaise the bar with `semanticDetection.minConfidence` if the classifier is too noisy; lower it if real feedback is being dropped. To force a recording, use `/feedback <text>` — manual entries bypass the confidence threshold.\n\n**LLM cost concerns**\nEvery user message above `minLength` characters incurs one classifier call. To disable, set `semanticDetection.enabled: false` — the plugin will fall back to the regex matcher with no LLM calls.\n","readmeFilename":"README.md"}