{"_id":"kevlar-4u","_rev":"32-c5ac2984059bde8e6d29d24305e7b8c1","name":"kevlar-4u","dist-tags":{"latest":"1.6.22"},"versions":{"1.0.0":{"name":"kevlar-4u","version":"1.0.0","keywords":["mcp","multi-agent","content-review","ai"],"author":"","license":"ISC","_id":"kevlar-4u@1.0.0","maintainers":[{"name":"churze","email":"c0529q@gmail.com"}],"bin":{"kevlar":"dist/index.js"},"dist":{"shasum":"3aafc87a168459ce9443a81a6fa473efe6a40f4a","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.0.0.tgz","fileCount":238,"integrity":"sha512-5dGLqJIZIWZaQ+jPLhE2YtK18iZxk5+IF0cLUDMX1y/yqlHPFanFucH9wo/WJnmoVXl6pqSCPSmVTWlaOhwJ7g==","signatures":[{"sig":"MEUCIADoF+Xr9FJWjb+5K4e1WNYYvFsd8TeCyUU2u1Zvs5a4AiEA3W8tY6KuSETUQbhRxqfIoHyu/OWUc5KRY9yprwJ3MV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656222},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"4641c0cea9721ab0232b1aaeaf7cc2a06f0de943","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/**/*.test.ts","build":"tsc","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-mcp":"tsx scripts/cli.ts","test:watch":"tsx --test --watch src/__tests__/**/*.test.ts"},"_npmUser":{"name":"churze","email":"c0529q@gmail.com"},"_npmVersion":"11.6.2","description":"Kevlar: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"chalk":"^5.4.1","dotenv":"^17.4.2","gray-matter":"^4.0.3","@inquirer/prompts":"^7.5.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.0.0_1779607163302_0.26743183807790016","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"kevlar-4u","version":"1.0.1","keywords":["mcp","multi-agent","content-review","ai"],"author":"","license":"ISC","_id":"kevlar-4u@1.0.1","maintainers":[{"name":"churze","email":"c0529q@gmail.com"}],"bin":{"kevlar-4u":"dist/index.js"},"dist":{"shasum":"d5fb656f7d688404f78820d8fcdaed9ba22f15bc","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.0.1.tgz","fileCount":240,"integrity":"sha512-ttqHTm98756T8/v9I7R+T1v+FZi+gYv6XuuuiXNbPW0Vx8r0SDzxZWcMfNW1RgfVkrjj7vfrT4Lsk0k0B4WHUg==","signatures":[{"sig":"MEUCIQCJyVu4VFJs+Ka6yrs3wihTb5mpKc8vAi/zmBRMclm7wAIgBGEM1pyFlkiHS9vQkX9g13nd1TQ9HaODDK4J0qpa8gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655954},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"4641c0cea9721ab0232b1aaeaf7cc2a06f0de943","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/**/*.test.ts","build":"tsc","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","test:watch":"tsx --test --watch src/__tests__/**/*.test.ts"},"_npmUser":{"name":"churze","email":"c0529q@gmail.com"},"_npmVersion":"11.6.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"chalk":"^5.4.1","dotenv":"^17.4.2","gray-matter":"^4.0.3","@inquirer/prompts":"^7.5.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.0.1_1779608432413_0.2576325675278903","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"kevlar-4u","version":"1.1.0","keywords":["mcp","multi-agent","content-review","ai"],"author":"","license":"ISC","_id":"kevlar-4u@1.1.0","maintainers":[{"name":"churze","email":"c0529q@gmail.com"}],"bin":{"kevlar-4u":"dist/index.js"},"dist":{"shasum":"6908a84707c0d92a9a8a43e0d3be4e4a46697820","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.1.0.tgz","fileCount":207,"integrity":"sha512-frcMRgChww+2Zs2q7CZeAXN9WrvOS+Sm/hjqu+Fq3dYqdZ+tUVmXHaCUsMiGxfFjSpYxW+tI0W7tPILd07p9bA==","signatures":[{"sig":"MEUCIHM8amXsqpDEbhifcbgMNMG8EeVv1DhCc+3ZM++ZivV/AiEA2rL96VyfoBkuKto9zoKMwEeHmPjbCN1UUqA+VTK4elc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":685081},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"cb89d6ee134eefc5ec2e795973c4c4c5a772a8b9","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/**/*.test.ts","build":"tsc","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","test:watch":"tsx --test --watch src/__tests__/**/*.test.ts"},"_npmUser":{"name":"churze","email":"c0529q@gmail.com"},"_npmVersion":"10.8.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"chalk":"^5.4.1","dotenv":"^17.4.2","gray-matter":"^4.0.3","@inquirer/prompts":"^7.5.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.1.0_1779716815555_0.14241613758723548","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"kevlar-4u","version":"1.2.0","keywords":["mcp","multi-agent","content-review","ai"],"author":"","license":"MIT","_id":"kevlar-4u@1.2.0","maintainers":[{"name":"churze","email":"c0529q@gmail.com"}],"bin":{"kevlar-4u":"dist/index.js"},"dist":{"shasum":"ec4dba81ecb135193747e3080c2bc97b65d31252","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.2.0.tgz","fileCount":243,"integrity":"sha512-GSqb4TfMV6eEV+iwWlfA/ql6q+l7yaZ4gcfcMAscrWtELI6HyUamDzvQjEnwMg53rmCGowgKbPT+NjuaR6NWFQ==","signatures":[{"sig":"MEUCIDSOPqRKbRb0EKytI7ciHcvWfqjSrmaKaHb23NFJMJ6SAiEA6xlSihCTfyqTJCXZOx36o9B71lIszeZ5B+B9pTICSXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":787500},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"52bf60f712628aee4595d13edafa3808164a8e79","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/**/*.test.ts","build":"tsc","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","test:watch":"tsx --test --watch src/__tests__/**/*.test.ts"},"_npmUser":{"name":"churze","email":"c0529q@gmail.com"},"_npmVersion":"11.6.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"chalk":"^5.4.1","dotenv":"^17.4.2","gray-matter":"^4.0.3","@inquirer/prompts":"^7.5.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.2.0_1779845560350_0.5165075956813501","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"kevlar-4u","version":"1.3.0","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"9Churze"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.3.0","maintainers":[{"name":"churze","email":"c0529q@gmail.com"}],"homepage":"https://github.com/9Churze/kevlar-4u#readme","bugs":{"url":"https://github.com/9Churze/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/index.js"},"dist":{"shasum":"389a89b604341af808e60a4e116095cda62891f9","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.3.0.tgz","fileCount":380,"integrity":"sha512-hXBZYjKeuLTtJQrotbYPLKchOeDUT0j4PpdUGnV87iY6WxzfzbHkj+NOEiMf3nHGAapHbxgnk+07NKv+jjxTrw==","signatures":[{"sig":"MEUCIQC0u43lpWQ91FDUR1QYwsmHK9bb3BbcRLyE5LnYw9JdXAIgS6zIGuuH0ixPaeZwcME/Pv1uoBy3UMsr+mnVYiCx5iE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1358218},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"045d637ea0fb8eb1c2cff043a3f4af0877af4aa6","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","test:watch":"tsx --test --watch src/__tests__/*.test.ts","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"churze","email":"c0529q@gmail.com"},"repository":{"url":"git+https://github.com/9Churze/kevlar-4u.git","type":"git"},"_npmVersion":"11.6.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"chalk":"^5.4.1","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.3.0_1780107182628_0.16116171690619385","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"kevlar-4u","version":"1.5.3","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.5.3","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"1a8eef330178d139d962f799cf30f25b15943da5","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.5.3.tgz","fileCount":391,"integrity":"sha512-gh/Yv0A+5VkVnV7abonZifz0dLO4Uj3Em6//cBM3Z8jJK6BTCorlkX/QB2M2kmT1rcN6wjkuJ6WtnQyKmjXBNA==","signatures":[{"sig":"MEUCIQDeot2XQC2B7aEIxKlqQY+0xeCTlAyrpbhjnse1JCY2CwIgSEcFEIFNjRJlglZYCQGFqFMYCEoZuS87GkKNpxKx0w4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1806552},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"a021468a1e707310e19741aa4ac765b57f7cad33","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.5.3_1782027123549_0.7664352927280511","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"kevlar-4u","version":"1.5.5","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.5.5","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"79f9365c83d009838b61292f7c5d8d607d1e0851","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.5.5.tgz","fileCount":390,"integrity":"sha512-t/E5ltDQIPiY9e46Om5fDYCHKc/0cTmt1cIeSntWuDnkrVlQpAW6uwurSNfS75KibMNfKQYcqFq1pGqBMxlkcA==","signatures":[{"sig":"MEYCIQDQSdr0SiPRcXth66IBbbtRAQlMYDpGc66oTapAwSuJLwIhAPcG5v1iLneXwpOdZvez8SDxLjTEWTQ/VQV6OZl0CeJP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1781641},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"a5a313aeb8f7ce719a3d24d079033ada131e837c","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Kevlar-4u: A Local-first, MCP-compliant Multi-Agent armor to stress-test your content before the internet does.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.5.5_1782034115008_0.8303941414140095","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"kevlar-4u","version":"1.6.0","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.0","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"dd230353228f955f65cc449748d3a60026191657","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.0.tgz","fileCount":398,"integrity":"sha512-sMaCExkdVdoMOGQXofzcHsv8iWgNhgyTtXS+kGgt1eHo7O3mRivmlUVMb5Ejn4e1QP/7kgwDgzi/eM84Yq+JkQ==","signatures":[{"sig":"MEYCIQDUpizNpPwzwTKP7iUHg4nelef3FMtmijDDo6x0BLcp1AIhAOtmCHINPLZzZMJTvwSq5MoeAT8zz8DoyQqmHt0fzcri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1810375},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"72abfc92c2a2c5fbd4b8eedc4c139f55821691ac","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.0_1782108371467_0.7093132020644315","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"kevlar-4u","version":"1.6.1","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.1","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"e90214f6bc296c7fb0c6107c9b705fe534744032","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.1.tgz","fileCount":398,"integrity":"sha512-kpz+WL9R5R09nKnI5ZAFDz71ztBt5fyoGos0nkkl310LMD7Rep4AuF8kgFZlGJKKQvfI8hE9NERSvFqDkAhf+w==","signatures":[{"sig":"MEUCIQCzmkdBDKRGQqRL/FRgU/Fm/kPZZJc2RO3ZZx1oWxYPyQIgcOgLoSua3Ikosu5eKiDN89bcvzaDCBq/O3ORQ5Nka0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1813657},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"d03b20fbe6e3a9de4f59119298ebcf83cca41d7a","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.1_1782198593609_0.29983981715457597","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"kevlar-4u","version":"1.6.2","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.2","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"1f1f199bd1fd716d3883fd6c280fefd434b829b3","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.2.tgz","fileCount":398,"integrity":"sha512-BDdympa6yW/2tlHldWUej81I3IiAEQC3BRk3y+CtAxEswdi8VwgMraXOoA5ESG0tGNXj6ezYu5d8Zgl3X0X0dw==","signatures":[{"sig":"MEUCIG/+pS753X5lmUPRUonqfYIqMFo0ye2yM461rSSAeOMGAiEA49vkH8o9deLHrQwbSE7RKwbIrFIYQN+RS5QcvV/EsaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1813713},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"69b16e10deed17907279a97ccd72073aad74c2a1","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.2_1782203368302_0.7869997213127418","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"kevlar-4u","version":"1.6.3","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.3","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"1ba78e6019a1cd402ed82fcf8b3791611e546901","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.3.tgz","fileCount":398,"integrity":"sha512-cgwcAb+iBMceUG4ZGlix+qYDadtg0o6tktHEX821w5JDqTN/2tcxOoQ5Kos03bQhXWpzmJTufov+sDo4y2Sgcw==","signatures":[{"sig":"MEYCIQD6po32l7XUZ7OCJY+Ip0gglf6oA/ZxwGHhLGFfovHoCAIhAO6AaOjZx2gd06j1UJm2haGMzJKVQBtaXEGIwQF/wLaT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1815234},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"4a294f95ba1bf2f8748ede3e9caf10d365e50d27","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.3_1782205227767_0.4113253680993507","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"kevlar-4u","version":"1.6.4","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.4","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"00d55216eb379d3a70c374b5a1588c421f4999bd","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.4.tgz","fileCount":398,"integrity":"sha512-tarLe4m3OjpBv3OW9WEOGSZvAWTUCfrxZngyvKJ78JSeui5cp4t0h1eyMb+hvpnkWPFfjIzwMfIO1puMeL+QBA==","signatures":[{"sig":"MEYCIQCTht87XZOOZk2fNQtTRfUEefgxdlX/5l3uk4oHR3K6pQIhANujB9oDo8zPMPPXzAounmmRMwgZ6Q8WBvgrNg6kC+f+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1815230},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"39ac740e05b8424c724ffae3842c4317e6b06d4b","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.4_1782205289010_0.03808928898532815","host":"s3://npm-registry-packages-npm-production"}},"1.6.5":{"name":"kevlar-4u","version":"1.6.5","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.5","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"b94c3139c8df1f941a215977529c73ed081b744c","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.5.tgz","fileCount":398,"integrity":"sha512-fZkr7CIrNpOOMUt8daNFNNmi3xZ27OmxqtYlDLq9AI0ZMlvHWstcU/N3IGzepDbEuKhss0rQSvnZIHwhSeoBiQ==","signatures":[{"sig":"MEQCIGsxQi6aswqIBj4uEyWY40YKnerFq55FHqIBt7z4lNUjAiA+YqctMNgFcHIYCigbQA4R5Y1fZLWhVYicj304+QJgHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1815289},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"e85ff465d24eb8e5a42a0e8cb6e9a00f9cced4f5","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.5_1782206632643_0.4165442998378186","host":"s3://npm-registry-packages-npm-production"}},"1.6.6":{"name":"kevlar-4u","version":"1.6.6","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.6","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"d469c3a6c8f562514c0ca08dd5eef9c722c5bbd3","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.6.tgz","fileCount":398,"integrity":"sha512-Dqv+3x2rPT9+KJsQ86Tg3N2YbkmWzp7tcgrBLUgPKF4q0JNFSrCUgDX03bXnBTkwLy4e59HZSZm6XOOJJZqEyw==","signatures":[{"sig":"MEUCIEwoxbCT+o9N0FzAfvLvnJmDDRWwhfhFRdMZP7gF7FOKAiEAqmmmJWsqdwSJlEDUGDG+n6ILZ/TrecnFWf+jI5tS/HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1814182},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"b4d15169ff7de6c99331657957b74dce0bf3f023","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.6_1782219447486_0.6237347749232525","host":"s3://npm-registry-packages-npm-production"}},"1.6.7":{"name":"kevlar-4u","version":"1.6.7","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.7","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"634ad19e8544e3651c79169fb19dffe6b49dc92b","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.7.tgz","fileCount":402,"integrity":"sha512-BIjB2X/rzsTUBGL+swqID4cgGVIteXgBuX1iZt/8v+PKxSF/019ouYU6o6HzoRytmSItCP8AcKGGfbiuN8Lnsg==","signatures":[{"sig":"MEQCIDjaALe0SraCpjlgE7wHfZ+wj7lMr9NVT8g26ejKqVuKAiAleznMyWVxIVgVvPdz8hxhZ1zUcxWwd17AZZ2Bm8s6pA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1847251},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"14a46a4e954097390beb9b4fcc38e0eedf98af77","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.7_1782268352893_0.29416724788980164","host":"s3://npm-registry-packages-npm-production"}},"1.6.8":{"name":"kevlar-4u","version":"1.6.8","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.8","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"9eae0a727ab4cd520062831486af88e6e03f3ed9","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.8.tgz","fileCount":404,"integrity":"sha512-C8lhFyd+sV4eyj+QCDuBrtMy6PY3DWWjWgx0QzZRqdgoVfLc6J1k4ta8tfTaeHuVW2jsxGhfZhxIXfT75RV47w==","signatures":[{"sig":"MEYCIQC3Wt/r4DKelAGKVk13+jwGFDxe9vhfhxYgNuba9bTXZAIhANLLfbl5wxa81tn/gTfn+6k49wdcuWrYutgfPirttNkf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1852457},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"1ad3417c0b818abc343a9da853a5c4f9062a1760","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.8_1782288218620_0.16131944309811663","host":"s3://npm-registry-packages-npm-production"}},"1.6.9":{"name":"kevlar-4u","version":"1.6.9","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.9","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"33d09d567471ef665494a1a72db117f099748e8c","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.9.tgz","fileCount":404,"integrity":"sha512-sHJrpy8z+wC0VHR9PHOrmydwShhEO0Y5PtChcYLz3lu70eC1OqZRBldFI7wlACzLJfy4Et6SA3D4lqyo5rmLhg==","signatures":[{"sig":"MEQCIBR5Ov5dg9Mvp277xspcPFADqPWUMmW8lwftTvmOyK/pAiBKTEyC0eDMmObYXO8BlZIORGHdMLazyMnhR2ZzVRcxqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1857013},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"9e58125898641cbd97ba6866d7a7fb49560e6341","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.9_1782304178957_0.08863449692008163","host":"s3://npm-registry-packages-npm-production"}},"1.6.10":{"name":"kevlar-4u","version":"1.6.10","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.10","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"21f38081f37950c2b2e8acbf5f87a54a0e01643b","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.10.tgz","fileCount":424,"integrity":"sha512-KppV0lDXfxiW4XvdYUXpWMx6v7D5ZgHZ2eiSP6BwWdPPxvePsqb6j9hRRuoz8u0P1Mrqml3t6jMDYKEgaxrDLQ==","signatures":[{"sig":"MEQCIHYHjftscVLUx2vVCQZWEpEOWBPahMnwL0ZqKHC4nPevAiBzqonMpnCgvUlcAGc3TByKPLl1Nd/3VZ5YdSAbwtLgpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1970513},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"52f3fc82898beb7e69016e9a8470cd55bb132aa3","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.10_1782390418460_0.45309262193156763","host":"s3://npm-registry-packages-npm-production"}},"1.6.11":{"name":"kevlar-4u","version":"1.6.11","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.11","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"9998e328cd3f714124f85ab5059160124dbfa2e7","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.11.tgz","fileCount":416,"integrity":"sha512-agiq41KIqjszG52VwIjijpWOc9IQ1TBUmA9OXas83czvLYZ9EXMVAuvCoNI1MscwKntRYyQQdE665n48UoU93A==","signatures":[{"sig":"MEQCIGnx25tK96oWt8P64ROPWYKnVBqb4bhI/3eceHUdWlWtAiA8u8uPX4CbSkKFNYtu0ULJocF5d0BRuAcA/NjP+kVV2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1937534},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"727802bb806717b93361886eb8f73c27b0e64d58","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.11_1782440905580_0.20105226207420324","host":"s3://npm-registry-packages-npm-production"}},"1.6.12":{"name":"kevlar-4u","version":"1.6.12","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.12","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"5154295c55b630c0152eeb01f8ae3a504983a286","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.12.tgz","fileCount":416,"integrity":"sha512-q8y+b8hPIQWnw+BYywIxlhN5M/VyzQadYwF1W/OZzteiIEgdNraYpKPaOGR3gmnYQMkpECPCjI73uLmYY6S4PA==","signatures":[{"sig":"MEYCIQCNFaSyJ8icTRtAVhkRJYsyJl54UYD2mW994U7K2R4bhgIhAOpmJdbP4/pEP8gJuhTPF9K1Zsj5GDBldhpkkeK0J9rq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1942947},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"d4d2b91ce40dfa99c83afdbbcbc877dc367cdd57","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.12_1782442976323_0.7588766803934086","host":"s3://npm-registry-packages-npm-production"}},"1.6.13":{"name":"kevlar-4u","version":"1.6.13","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.13","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"945e05c256e2af662b2c131fedc1f75b6b4ef515","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.13.tgz","fileCount":416,"integrity":"sha512-Rmw+JM9elnEvssvlYFLaFO7eXaM+kY+am1TkF3kwX1nUv8OF4yREt4V5sAdU4DAcagTmohXWl5fq/1c4kqFiCg==","signatures":[{"sig":"MEQCIFCxHDjov5Fzyjlm4ae/8zT5dzhBMRS6VGcJWyKHo+cgAiAXsuXjp5wqQg9mAnrg0n+GMMRJoaZEtKtiTKCHOvcvIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1945729},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"af4cd59467e693230f637909185fef26ef3349fe","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.13_1782444581063_0.04393432468980385","host":"s3://npm-registry-packages-npm-production"}},"1.6.14":{"name":"kevlar-4u","version":"1.6.14","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.14","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"c09f1504ed78fc2c1d10fe6c1e8377238f1062f5","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.14.tgz","fileCount":416,"integrity":"sha512-krjE9guS1yfkW0dt33c5e4pkBqkUt5CusuMDRyk7ti1Wd3mVM3KVeI/svWw/gJM8OYf+tlitgMSkaYotD5Paog==","signatures":[{"sig":"MEUCICU3Hw/dWjJrSHa+WpIUPubUEL2KHj5S/z2YfN/bHmzbAiEA/by0oWDLLSCd6lepPXhbX+K0zfFBaYINlwSLteqBli4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1944168},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"ac5b5b76b5cba4fa4c1db222efd85a3c6c91b290","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.14_1782445535432_0.6370758210703984","host":"s3://npm-registry-packages-npm-production"}},"1.6.15":{"name":"kevlar-4u","version":"1.6.15","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.15","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"8b66f94547baf43466018a268cbbd30a2b011022","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.15.tgz","fileCount":362,"integrity":"sha512-VEIkPQcCMBC2DO5UMJmXQDFmkkSM3oJU4FTRTM4xtMABGENsL44gZj1oiYbGN1RpxpHU0KZopAPelItOcijeQg==","signatures":[{"sig":"MEUCIQDANcK1MurrQuihg3gnRRj+klIf8HFyjEur3OwyhVD6lwIgJ1YJ/rrLM4tNjD+439Tarxh9DsGeUJfyF+VKwfwKt+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1883284},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"cbac4dff196bd89c10536a488b9270a040607144","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.15_1783216788483_0.7207505706659956","host":"s3://npm-registry-packages-npm-production"}},"1.6.16":{"name":"kevlar-4u","version":"1.6.16","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.16","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"855cebf692f22f0c5febe903cf94163d5a74256b","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.16.tgz","fileCount":362,"integrity":"sha512-339G+xjnUBfxVUWIvCds0xhW18MCxeMDveqbVez65IRxl4P+CNgAb5mtwK/J2LF4cQ3qtXj8DY1iJGVGJBD54A==","signatures":[{"sig":"MEUCIQD6hUFGEvPQFAhoBjQP/RRDEKO8hS0dRi48e2Xnp98KywIgHhBzIUvaaFEsWYXKBad9m2BXa/hfsPFwfJxi7PQcCpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1892460},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"668631fb96ec69aa6686a1a0e30ea9a9bb44b757","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.16_1783305334179_0.9948753014304301","host":"s3://npm-registry-packages-npm-production"}},"1.6.17":{"name":"kevlar-4u","version":"1.6.17","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.17","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"d0e4a29568369002192e2959d216f77b42d94d44","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.17.tgz","fileCount":362,"integrity":"sha512-inxhf1pW0rVrXonOND7DTYxkugiypl0LmKZkpCg0mv1akfb2gFF53AWdffbKbnEyDMu7mh+49fELRTBFVdq5Tw==","signatures":[{"sig":"MEUCIQCW5MhfQuasvN59F5SsC6+cQtiQi7CCagJYiTCjpfwSHAIgNbVX+/w2IQGDudGstaTKQfTeM3FO0fUtHcdPq4XoKKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1892352},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"ed426ef2c29f444404056c6671e2add007e2d248","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.17_1783311229844_0.030615968568720175","host":"s3://npm-registry-packages-npm-production"}},"1.6.18":{"name":"kevlar-4u","version":"1.6.18","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.18","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"ac021bcf23c7f9f700b4b80f1cb71a2ab3aad54c","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.18.tgz","fileCount":362,"integrity":"sha512-d2cRM1OpH7ArrfCrYkGK3qTAWp658W2P6dEy3HzLEFfpL1bZuGD/GB3+4ojbDFvpGb8XzCY5Del27wDUXNE1CQ==","signatures":[{"sig":"MEUCIC4H0RO8IZGK0uYfkeBPBcWZH+Z53iQL+J+v9INXAxVGAiEAqLCOlPUb/LlaHrZaAK1xfnfekU1I5CHV/EMaJJALWmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1894040},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"1ff335a82ccb66132304453de20a47231c1162d0","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.18_1783323410211_0.017811624255246405","host":"s3://npm-registry-packages-npm-production"}},"1.6.19":{"name":"kevlar-4u","version":"1.6.19","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.19","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"e6e49cace9f22dfb7c7389b2b9b252785d7169ad","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.19.tgz","fileCount":370,"integrity":"sha512-UfFnRD5giqOesttzYr6YFQzWkDz1LdusTz5a+HKT1TD81BtsUA+cda7uCyY3zKAGt8ZaaHOrxGeXPx0x1I+17g==","signatures":[{"sig":"MEQCIB4190jtN9qpwBt3+AlWQrpWCm6OAqBv82qqqaj2ZSNKAiA/g+Kub+glEI9jK8L7OBxUcWziOE8M70uiR5MtERc6CA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1953465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"2b988a9411aeda0102e93fd3b1d40975f4c72244","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.19_1783502245207_0.9999042163848182","host":"s3://npm-registry-packages-npm-production"}},"1.6.20":{"name":"kevlar-4u","version":"1.6.20","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.20","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"2c05f8c758ef149f5b30baed3ef771b027f61e0f","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.20.tgz","fileCount":379,"integrity":"sha512-ArjSMIkmUTvi1zQAdlC3YRetbAmKDghnRA5tFEV5TAhOywM1R+gdHo68GHTOIeVkPqGzEgFqMzgpTi33tZ+VEA==","signatures":[{"sig":"MEQCIFHZAKJ+uxb13njSHPjhBE7DevRIXWurP2IIxoRiVpj4AiBToTwCV9NK0sZXbUfkngKXU1CG5AjTQsMGjskMeqlfUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1999747},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"6c5874d4c705f9a73802172a5dda4c336e1af637","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.20_1783580154466_0.5290992130008301","host":"s3://npm-registry-packages-npm-production"}},"1.6.21":{"name":"kevlar-4u","version":"1.6.21","keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","_id":"kevlar-4u@1.6.21","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"bin":{"kevlar-4u":"dist/scripts/cli.js"},"dist":{"shasum":"c413fba01187fcec4bcd517b4a65e596e049bebe","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.21.tgz","fileCount":379,"integrity":"sha512-WVUpSVAas4wIRZcwcewuB186Oe44eBXn+gGVV4BqeT8/3qtPfCqOBpPqaSzrydnY07gtPA11/2u1pO/DVG/laA==","signatures":[{"sig":"MEUCIQCvFpTO8r4AfL6fP5fxaaXO46TZrHxCadjXcJUEJlDD6QIgE04mFxZ6MvBFma+UZx7Sq2jsrPRA91CbPbmUfFfeBA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2001328},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"}},"gitHead":"ce1840e5bfc4c201af4fbd169cd2f423227a8f7d","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/__tests__/*.test.ts","build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","setup":"tsx scripts/setup.ts","start":"node dist/index.js","kevlar-4u":"tsx scripts/cli.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","deploy:all":"node ./scripts/deploy-all.js","test:watch":"tsx --test --watch src/__tests__/*.test.ts","auto-install":"tsx scripts/cli.ts --auto","sync:backend":"node ./scripts/sync-backend-version.js","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"repository":{"url":"git+https://github.com/ChurzeXo/kevlar-4u.git","type":"git"},"_npmVersion":"10.8.2","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^9.4.0","zod":"^4.4.3","chalk":"^5.4.1","json5":"^2.2.3","dotenv":"^17.4.2","i18next":"^26.3.0","@inquirer/prompts":"^7.5.2","i18next-fs-backend":"^2.6.6","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/kevlar-4u_1.6.21_1783586338857_0.5077650562353204","host":"s3://npm-registry-packages-npm-production"}},"1.6.22":{"name":"kevlar-4u","version":"1.6.22","description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","main":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./execution/strategy":{"types":"./dist/execution/strategy.d.ts","import":"./dist/execution/strategy.js"},"./execution/config":{"types":"./dist/execution/config.d.ts","import":"./dist/execution/config.js"},"./subscription/tier":{"types":"./dist/subscription/tier.d.ts","import":"./dist/subscription/tier.js"},"./subscription/promptTypes":{"types":"./dist/subscription/promptTypes.d.ts","import":"./dist/subscription/promptTypes.js"},"./subscription/promptTemplates":{"types":"./dist/subscription/promptTemplates.d.ts","import":"./dist/subscription/promptTemplates.js"},"./utils/logger":{"types":"./dist/utils/logger.d.ts","import":"./dist/utils/logger.js"},"./utils/observability":{"types":"./dist/utils/observability.d.ts","import":"./dist/utils/observability.js"}},"types":"dist/index.d.ts","bin":{"kevlar-4u":"dist/scripts/cli.js"},"scripts":{"build":"tsc -b && cp -r src/i18n/locales dist/i18n/locales && chmod +x dist/scripts/cli.js","dev":"tsx src/index.ts","start":"node dist/index.js","setup":"tsx scripts/setup.ts","kevlar-4u":"tsx scripts/cli.ts","auto-install":"tsx scripts/cli.ts --auto","build:scripts":"tsc -b tsconfig.scripts.json && chmod +x dist/scripts/cli.js","test":"tsx --test src/__tests__/*.test.ts","test:watch":"tsx --test --watch src/__tests__/*.test.ts","commit:pro":"node ./scripts/sync-pro-submodule.js","sync:backend":"node ./scripts/sync-backend-version.js","deploy:all":"node ./scripts/deploy-all.js","prepublishOnly":"if [ -z \"$CI\" ]; then echo '⚠️  请通过 CI 发布：git tag vX.X.X && git push origin vX.X.X'; exit 1; fi"},"engines":{"node":">=20"},"keywords":["mcp","multi-agent","content-review","ai"],"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","repository":{"type":"git","url":"git+https://github.com/ChurzeXo/kevlar-4u.git"},"homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"type":"module","dependencies":{"@inquirer/prompts":"^7.5.2","@modelcontextprotocol/sdk":"^1.29.0","chalk":"^5.4.1","dotenv":"^17.4.2","i18next":"^26.3.0","i18next-fs-backend":"^2.6.6","json5":"^2.2.3","ora":"^9.4.0","zod":"^4.4.3"},"devDependencies":{"@types/node":"^25.8.0","tsx":"^4.22.1","typescript":"^6.0.3"},"_id":"kevlar-4u@1.6.22","gitHead":"80d2de49764b2fa591ffc67a25a8a365ff7b0e3a","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-10Gj+LcXARrtLNpFwZ8nyr0P++f2SItEmLrAtMJBrUaI+5z7rIpbrfwQUSB2MzurXPkhY5e2wl/QEpOnJY/80Q==","shasum":"808ac6ac19e05dadee0d807160e33cab62a66c8f","tarball":"https://registry.npmjs.org/kevlar-4u/-/kevlar-4u-1.6.22.tgz","fileCount":379,"unpackedSize":2001492,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kevlar-4u@1.6.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDjpuDsgo0dnDKvxFV7F2Oh5ExyFHMinsSZXANGQNM3sAIhANuIkMotzqRJofQZsHlQBm7FlwZ/fOiFER4SKuhpfIfW"}]},"_npmUser":{"name":"9churze","email":"churze.9@gmail.com"},"directories":{},"maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kevlar-4u_1.6.22_1783591547356_0.04851365746486769"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T07:19:23.163Z","modified":"2026-07-09T10:05:47.896Z","1.0.0":"2026-05-24T07:19:23.479Z","1.0.1":"2026-05-24T07:40:32.580Z","1.1.0":"2026-05-25T13:46:55.728Z","1.2.0":"2026-05-27T01:32:40.504Z","1.3.0":"2026-05-30T02:13:02.807Z","1.5.3":"2026-06-21T07:32:03.734Z","1.5.5":"2026-06-21T09:28:35.230Z","1.6.0":"2026-06-22T06:06:11.612Z","1.6.1":"2026-06-23T07:09:53.829Z","1.6.2":"2026-06-23T08:29:28.456Z","1.6.3":"2026-06-23T09:00:27.921Z","1.6.4":"2026-06-23T09:01:29.195Z","1.6.5":"2026-06-23T09:23:52.836Z","1.6.6":"2026-06-23T12:57:27.872Z","1.6.7":"2026-06-24T02:32:33.067Z","1.6.8":"2026-06-24T08:03:38.793Z","1.6.9":"2026-06-24T12:29:39.109Z","1.6.10":"2026-06-25T12:26:58.639Z","1.6.11":"2026-06-26T02:28:25.763Z","1.6.12":"2026-06-26T03:02:56.505Z","1.6.13":"2026-06-26T03:29:41.258Z","1.6.14":"2026-06-26T03:45:35.576Z","1.6.15":"2026-07-05T01:59:48.632Z","1.6.16":"2026-07-06T02:35:34.356Z","1.6.17":"2026-07-06T04:13:49.988Z","1.6.18":"2026-07-06T07:36:50.359Z","1.6.19":"2026-07-08T09:17:25.422Z","1.6.20":"2026-07-09T06:55:54.690Z","1.6.21":"2026-07-09T08:38:59.071Z","1.6.22":"2026-07-09T10:05:47.612Z"},"bugs":{"url":"https://github.com/ChurzeXo/kevlar-4u/issues"},"author":{"name":"ChurzeXo"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/ChurzeXo/kevlar-4u#readme","keywords":["mcp","multi-agent","content-review","ai"],"repository":{"type":"git","url":"git+https://github.com/ChurzeXo/kevlar-4u.git"},"description":"Local-first MCP content review server — simulates reader reactions before publishing. 100% offline, no telemetry, AGPL-3.0 open source.","maintainers":[{"name":"9churze","email":"churze.9@gmail.com"}],"readme":"# Kevlar-4u — Comment Section Simulator\n\n![Release](https://img.shields.io/badge/Release-passing-brightgreen?logo=github)\n![License](https://img.shields.io/github/license/ChurzeXo/kevlar-4u?color=blue)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/ChurzeXo/kevlar-4u?color=blue)\n![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)\n\n🌐 [English](README.md) · [中文](docs/README.zh.md) · [日本語](docs/README.ja.md) · [한국어](docs/README.ko.md)\n\n---\n\n> **It simulates real reactions from different audiences — casual users, picky netizens, technical users, media perspectives — helping you spot expression issues, misunderstandings, and communication risks before you publish.**\n\n---\n\n> 🔒 **Privacy & Security**: Kevlar-4u runs **100% locally** on your machine. No content is ever sent to any server. No telemetry, no analytics, no data collection. The source code is fully open (AGPL-3.0) and auditable on [GitHub](https://github.com/ChurzeXo/kevlar-4u). Pro features use an optional cloud sync for rule updates only — your content and review results never leave your device.\n\nDrop any content you're about to publish — **articles, tweets, video scripts, product intros, press releases, announcements, Reddit posts, V2EX posts, Hacker News headlines** — directly into Kevlar-4u. It won't just say \"looks good.\" Instead, it'll **question, misinterpret, roast, nitpick, and comprehension-test** your content, just like the real internet.\n\nWriters often suffer from the **\"curse of knowledge\"**:\nYou think you've made it clear, but others don't get it.\nYou think the key point stands out, but readers can't tell what you're trying to say.\n\nAnd most platforms don't offer a real **A/B test**. Once content goes live, by the time the **first wave of organic traffic** passes, it's usually too late to revise.\n\n**Kevlar-4u helps you surface these problems before you hit publish.**\n\n---\n\n## License & Tier Model\n\nThis repository is licensed under **AGPL-3.0**. It contains both **Free** (open source) and **Pro** (subscription-gated) client code. Pro features are inert without a valid license; no Pro prompt IP or server-side code lives in this repository.\n\n### Feature Comparison\n\n| Area | Free (out of the box) | Pro (requires activation) |\n|---|---|---|\n| **Persona simulation** | Full RST-based persona creation, natural language parsing, all execution modes | — |\n| **System pre-audit** | 6 defensive dimensions with local rule engine (`rules_free.json`) | Server-synced strategy bundle with enhanced prompts, real precedent names, worst-case narratives |\n| **Rule sets** | `rules_free.json` (shipped with repo) | `rules_pro.json` merged on top (pulled from server) |\n| **Audit report detail** | Abstract/generic descriptions | Real brand/event names, detailed amplification chains |\n| **Strategy updates** | Static default bundled with release | Dynamic sync from server (`npx . --sync`) |\n| **Prompt fidelity** | Locked/teaser text (prevents prompt IP leakage) | Full Pro instructions from SaaS |\n| **Agent result submission** | Single aggregated receipt per session | Per-agent slot-based submission with server-side auto-aggregation (merge → cross-validate → synergy → finalize) |\n| **Credential & sync** | — | AES-256-GCM credential store, Ed25519 bundle verification, revocation checks |\n| **Custom persona storage** | Unlimited local personas via `skills/*.json` | — |\n\n> **Pro is powered by a backend service at `https://kevlar4u.xyz`.** The client communicates only metadata (license id, version, session id, locale) — never user content, audit results, or API keys.\n\n---\n\n## Who needs Kevlar\n\n**Indie developers** / **Content creators** / **Product teams** / **PR teams** / Heavy users of X, Reddit, V2EX, Hacker News / Anyone who wants to improve content quality and reach\n\n---\n\n## Core Features\n\n### 1. Highly Customizable Reviewers (Persona Customization) — Free\n\nBreak out of the single-AI perspective with comprehensive persona customization:\n\n- **Core attributes**: Age, interests, personality, tone of voice.\n- **RST (Reaction Simulation Taxonomy)**: Four-layer internet reaction simulation — choose an archetype (e.g., \"Anti-Marketing Detector\"), content sensitivity triggers, regional cultural context, and platform culture. The system simulates how real internet users react, not just how reviewers evaluate.\n- **Cognition & relationship**: Define blind spots (e.g., domain-specific biases) and social relationship with the author (e.g., a strict mentor, a radical opponent).\n- **Natural language creation**: Describe your ideal reviewer in plain text (e.g., \"a cynical HN user who hates buzzwords\"), and the system auto-parses it into a full RST configuration.\n\n### 2. Two-Stage Review Pipeline\n\n**Stage 1 — System Pre-audit** (Free: local rules; Pro: server-enhanced): Six specialized system auditors scan content in six defensive dimensions:\n\n| Auditor (ID) | Focus |\n|---|---|\n| 合规哨兵 (`legal_compliance`) | Advertising law violations, false claims, political/legal red lines, industry regulation |\n| 社伦判官 (`social_risk`) | Discrimination, stereotyping, moralizing, tone-of-voice risks, reverse-risk (\"backfire effect\") |\n| 语境猎手 (`context_distortion`) | Screenshot out-of-context vulnerability, malicious misinterpretation potential |\n| 暗语破译 (`network_culture_risk`) | Internet slang collisions, subculture terminology, hidden vulgar meanings |\n| 事实判官 (`factual_integrity`) | Factual errors, common-sense violations, logical fallacies, data credibility |\n| 跨界判官 (`cross_lingual_distortion`) | Malicious mistranslation, Chinglish puns, cultural misfit across languages |\n\nAuditors execute via a **3-tier fallback chain**:\n\n| Tier | Mode | What happens |\n|------|------|-------------|\n| L1 | MCP Sampling / Direct API | 6 parallel LLM calls, one per auditor — maximum isolation (requires `sampling` capability or API key) |\n| L2 | Subagent dispatch (`mcp_subagent`) | Kevlar sends an **ExecutionBlueprint** with natural-language instructions. The Host AI creates independent subagents for each auditor, executes in parallel, and submits per-agent results via `review_content_wizard_continue`. Pro tier supports slot-based submission: each agent result submitted individually, server auto-aggregates when all slots filled. See [Execution Modes](#execution-modes). |\n| L3 | Orchestration (host fallback) | Single-inference **matrix-filling protocol** — each dimension is a structured XML sandbox slot filled independently, then arbitrated. See [Protocol Comparison](#protocol-comparison-pseudo-parallel-vs-matrix-filling). |\n\n**Stage 2 — RST Review** (Free): User-created reviewers with RST personalities receive **Focus Topics** (filtered + translated from pre-audit findings based on each persona's RST triggers) and produce authentic user reactions, not dimension-scored reports.\n\n---\n\n## Quick Start\n\nRequires **Node.js 20+**.\n\n```bash\nnpm install           # Install dependencies\nnpm run build         # Compile TypeScript\nnpm run setup         # Zero-config setup (auto-detect MCP client and write config)\nnpm run kevlar-4u     # Interactive install CLI (manually select client)\n```\n\nOnce installed, restart your AI client to start using Kevlar-4u. Supports auto-configuration for:\n\n**Claude Desktop** / **Cursor** / **Windsurf** / **OpenCode** / **Codex** / **Antigravity** / **CodeBuddy CN** / **WorkBuddy**\n\nLocal development:\n\n```bash\nnpm run dev\n```\n\nProduction start:\n\n```bash\nnpm start\n```\n\n### Pro Activation\n\n```bash\nnpx . --activate --code <activation-code>    # Exchange code for license\nnpx . --sync                                  # Sync strategy bundle from server\nnpx . --status                                # Show Free/Pro status\nnpx . --doctor                                # Run diagnostics\n```\n\nActivation codes are single-use, time-limited (10–30 min). Once activated, the client securely stores credentials via AES-256-GCM and syncs strategy bundles from `kevlar4u.xyz`. The `--status` command shows your current tier; `--sync` downloads the latest Pro bundle with signature verification.\n\n---\n\n## Usage Guide\n\n### Core Workflow\n\nAll core operations in Kevlar-4u are handled through Wizard tools — just tell the AI what you want in natural language, and Kevlar-4u takes care of the rest.\n\n### Recommended Tool Flow\n\n| Wizard Tool | Purpose | Key Behavior |\n| --- | --- | --- |\n| `review_content_wizard` | Review content | Submit content → Select platform → Pick reviewers → Confirm → Multi-dimensional feedback |\n| `create_persona_wizard` | Create a persona | Describe the role → Fill 6 attributes (age/interests/traits/tone/platform/relation) → Preview → Confirm → Save persona |\n| `delete_persona_wizard` | Delete a persona | Select target → Reply `确认删除{persona name}` → Done |\n| `configure_wizard` | Modify config | Preview changes → Reply `确认修改配置` → Write |\n\nLow-level direct tools (suitable for automation scripts):\n\n| Tool | Purpose |\n| --- | --- |\n| `delete_persona` | Delete persona directly (requires `confirm: true`) |\n| `configure` | Write config directly |\n| `get_execution_modes` | Check current mode and availability |\n| `list_personas` | List local personas |\n| `kevlar_help` | View help |\n\n### Content Review Flow\n\n`review_content_wizard` chains \"pre-audit, reviewer selection, Focus Topic transformation, RST review\" into a stable flow.\n\n```mermaid\nflowchart TD\n  A[\"Submit content\"] --> B[\"Stage 1: System Pre-audit\"]\n  B --> C[\"6 system auditors scan in parallel<br/>(3-tier fallback: sampling → subagent → orchestration)\"]\n  C --> D[\"Raw findings report\"]\n  D --> E{\"Any user personas?\"}\n  E -->|No| F[\"Prompt to create persona, save state\"]\n  F -.->|\"Same sessionId\"| E\n  E -->|Yes| G[\"Select reviewers (RST recommended or manual)\"]\n  G --> H[\"Focus Topic transformation\"]\n  H --> I[\"Filter findings by reviewer's RST triggers\"]\n  I --> J[\"Translate to natural-language prompts\"]\n  J --> K[\"Stage 2: RST Review\"]\n  K --> L[\"Each reviewer produces authentic user reaction\"]\n  L --> M[\"Aggregated report\"]\n```\n\n### Creating a Reviewer Persona\n\n`create_persona_wizard` guides you through persona creation with RST support.\n\n```mermaid\nflowchart LR\n  A[\"Age range\"] --> B[\"Interests\"]\n  B --> C[\"Personality traits\"]\n  C --> D[\"Tone of voice\"]\n  D --> E[\"Platform\"]\n  E --> F[\"Author relation\"]\n  F --> G[\"Perspective / RST archetype\"]\n  G --> H[\"Final confirmation & preview\"]\n  H -->|Confirm| I[\"Save persona\"]\n  H -->|Edit| G\n```\n\nYou can select a traditional perspective preset (9 options) or an **RST archetype** (8 options). RST archetypes auto-configure triggers, regional context, and platform culture. You can also describe your ideal reviewer in natural language (e.g., \"a skeptical tech user on HN\") and the system will parse it into a full RST config.\n\nAfter creation, Kevlar-4u automatically infers the cultural background, blind spots, and behavior hints, saving them to `skills/*.json` (routed by platform tag — see [Architecture](#architecture-overview)).\n\n---\n\n## Execution Modes\n\nKevlar-4u operates on a **3-tier fallback chain** that automatically selects the best execution path based on available LLM access. The default `auto` resolves the chain without any configuration.\n\n```\n                   ┌─────────────────────────────┐\n                   │  User submits review request │\n                   └─────────────┬───────────────┘\n                                 │\n                   ┌─────────────▼───────────────┐\n                   │  Mode resolution (auto):     │\n                   │  1. kevlar-config.json       │\n                   │  2. KEVLAR_MODE env          │\n                   │  3. Priority-based auto-detect│\n                   └─────────────┬───────────────┘\n                                 │\n                ┌────────────────┼────────────────┐\n                ▼                ▼                 ▼\n   ┌────────────────────┐ ┌──────────────┐ ┌──────────────┐\n   │ L1: MCP Sampling  │ │ L1: Direct   │ │ L2: Subagent │\n   │ (via createMessage)│ │ API          │ │ Dispatch     │\n   │                   │ │              │ │ (mcp_subagent)│\n    │ Max isolation     │ │ API key      │ │ ExecutionBlueprint│\n   │ No API key needed │ │ required     │ │ → per-agent   │\n   │                   │ │ Good isolation│ │   submission  │\n   └────────┬──────────┘ └──────┬───────┘ └──────┬───────┘\n            │                   │                │\n            └───────┬───────────┘                │\n                    │                            │\n           -32601 or missing                     │\n           capability                             │\n                    │                            │\n                    ▼                    SEQUENTIAL_FALLBACK\n                    │                   or invalid receipt\n                    ▼                            │\n                    └──────────┬─────────────────┘\n                               │\n                               ▼\n                    ┌──────────────────────┐\n                    │ L3: Orchestration    │\n                    │ (Host fallback)      │\n                    │                     │\n                    │ Matrix-filling      │\n                    │ protocol (pre-audit)│\n                    │ Role-play + reset   │\n                    │ gates (RST review)  │\n                    └──────────────────────┘\n```\n\n### Mode details\n\n| Tier | Mode | Identifier | Trigger | Pre-audit strategy | RST review strategy |\n|------|------|------------|---------|-------------------|-------------------|\n| L1 | MCP Sampling | `mcp_sampling` | Client declares `sampling` capability | 6 parallel agent calls via `sampling/createMessage` | Independent LLM call per persona |\n| L2 | Subagent dispatch | `mcp_subagent` | Host AI supports Task/Subagent tools | **ExecutionBlueprint dispatch** — Kevlar sends structured blueprint + natural-language guidance; host creates 6 isolated subagents, submits per-agent results; Pro: slot-based submission with server-side auto-aggregation | Sequential persona dispatch with per-persona subagent |\n| L3 | Orchestration (fallback) | `orchestration` | Neither sampling nor subagent tools available | **V4 Matrix-filling protocol** — single prompt with 6 XML sandbox slots | **Reinforced role-play** — sequential persona execution with context reset gates |\n\n> **v2.1**: `direct_api` mode removed. Direct API calling has been superseded by MCP Sampling + Host AI's `samplingFn` injection.\n\n### Auto mode resolution\n\nPriority order (highest → lowest): `mcp_sampling` (10) → `mcp_subagent` (15) → `orchestration` (30).\n\n1. Checks mode in `skills/kevlar-config.json` (if set)\n2. Falls back to `KEVLAR_MODE` environment variable\n3. Otherwise auto-selects by availability and priority\n\n### L2: Subagent Dispatch (ExecutionBlueprint protocol)\n\nWhen independent LLM access is unavailable, Kevlar sends a **natural-language-wrapped ExecutionBlueprint** to the Host AI. The blueprint contains:\n- Executor mode flag (`ephemeral_agents`)\n- 6 fully self-contained agent definitions (auditor identity, content, decomposition, local findings, core reasoning framework)\n- A `ContinuationSpec` with sessionId, checkpoint, revision, and continuationId for result submission\n- Pro: `agentSlots` metadata enabling per-agent slot-based result submission\n\nHost AI has three valid responses:\n1. **Execute dispatch** — create subagents, submit aggregated ExecutionReceipt via `review_content_wizard_continue`\n2. **Per-agent submission (Pro only)** — submit each agent result individually via `review_content_wizard_continue(agentId, result)`; server auto-aggregates when all slots filled (merge → cross-validate → synergy → finalize)\n3. **Acknowledge inability** — reply `SEQUENTIAL_FALLBACK`, Kevlar drops to L3 orchestration\n\nInvalid or absent responses are caught by `validateReceipt()` and trigger automatic L3 fallback.\n\n### L3: Orchestration Mode Details\n\nWhen the first two tiers are unavailable:\n\n**System pre-audit**: Uses the [V4 matrix-filling protocol](#protocol-comparison-pseudo-parallel-vs-matrix-filling) — a single inference where the model fills structured XML sandbox slots (one per defensive dimension) rather than role-playing as independent characters. Each sandbox contains a dimension-specific CoT checklist derived from the auditor's `systemPrompt`. An `<arbitration_sandbox>` then cross-validates and filters noise. Finally, the model outputs pure JSON `{ dimensions: [...] }`, and the summary is auto-generated by the code to ensure consistent formatting.\n\n**RST review**: Personas retain their role-play mode (required for authentic \"real user\" simulation), but each persona block is preceded by a **context reset gate**: `--- 隔离边界：上下文重置点。丢弃上一个审查员的全部推理和结论 ---`. This prevents the long-tail degradation where later personas soften or repeat earlier ones.\n\n---\n\n## Protocol Comparison\n\nKevlar-4u uses different execution protocols depending on the available LLM access tier. The following table compares all three protocols:\n\n| Aspect | ExecutionBlueprint Subagent (L2, pre-audit + RST) | Matrix-filling (L3, pre-audit) | Role-play with reset gates (L3, RST review) |\n|---|---|---|---|\n| Philosophy | \"Create isolated subagents embedding full context\" | \"Fill structured slots with factual analysis\" | \"Act as persona, then reset context\" |\n| Trigger | Host AI supports subagent/Task tools | No subagent tools, no sampling, no API key | Same as L3 pre-audit |\n| Execution | 6 parallel subagents, each with independent context + CoT | Single inference, 6 structured XML sandboxes | Sequential persona execution with reset gates between |\n| Role drift risk | **None** — true isolation via subagent boundary | **Low** — protocol-level XML slot isolation | **Medium** — reset gates mitigate but don't eliminate |\n| Output submission | `review_content_wizard_continue` with ExecutionReceipt (or per-agent slot in Pro) | Pure JSON `{ dimensions: [...] }` via Turn 2 prompt | Mixed — JSON system findings + persona free text |\n| Pro enhancement | Slot-based per-agent submission + server-side auto-aggregation (merge → cross-validate → synergy → finalize) | Server-synced prompts & rules in arbitration | — |\n| Fallback on failure | `SEQUENTIAL_FALLBACK` keyword → drops to L3 | — | — |\n\n**Why not apply matrix-filling to RST review?** RST personas are designed to simulate *authentic user reactions* (\"real internet user's first response, not an evaluation report\"). Matrix-filling would suppress the emotional/creative freedom these personas need. The context reset gate approach gives most of the isolation benefit without sacrificing persona expressiveness.\n\n---\n\n## Configuration\n\n### Runtime Configuration\n\nUse `configure_wizard` to modify runtime preferences. Configuration is written to `skills/kevlar-config.json` (local only, not committed to the repository).\n\n```json\n{\n  \"mode\": \"auto\",\n  \"multiAgent\": {\n    \"maxConcurrency\": 3\n  }\n}\n```\n\n### Environment Variables\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `KEVLAR_MODE` | `auto` | `auto`, `orchestration`, `mcp_subagent`, `mcp_sampling` |\n| `KEVLAR_MAX_CONCURRENT` | `3` | Max concurrent reviewers (L2/L3 modes) |\n| `KEVLAR_TOKEN_BUDGET_PER_TASK` | `50000` | Token budget per review task |\n| `KEVLAR_MIN_DELAY_MS` | `1000` | Minimum delay between requests |\n| `KEVLAR_SKILLS_DIR` | `<repo>/skills` | Custom persona and config directory |\n| `KEVLAR_API_KEY` | — | Preferred Direct API key (L1 fallback) |\n| `ANTHROPIC_API_KEY` | — | Anthropic API key (L1 fallback) |\n| `OPENAI_API_KEY` | — | OpenAI API key (L1 fallback) |\n| `LOG_LEVEL` | `info` | `debug`, `info`, `warn`, `error` |\n| `KEVLAR_SYSTEM_AUDIT_LOCAL_FALLBACK` | — | Force local-only system audit (testing) |\n| `KEVLAR_RETRY_MAX` | `3` | Max retries for persona execution |\n| `KEVLAR_RETRY_BACKOFF_MS` | `1000` | Backoff delay for retries |\n| `KEVLAR_TASK_POLL_MS` | `1000` | Task polling interval (ms) |\n| `KEVLAR_TASK_TTL_MS` | `300000` | Task TTL (ms) |\n| `KEVLAR_TASK_TOTAL_TIMEOUT_MS` | `600000` | Total task timeout (ms) |\n\n> API keys are read from environment variables only — they are never written to config files.\n\n### Manual MCP Client Configuration\n\nClaude Desktop example:\n\n```json\n{\n  \"mcpServers\": {\n    \"kevlar-4u\": {\n      \"command\": \"node\",\n      \"args\": [\"/ABSOLUTE/PATH/TO/kevlar-4u/dist/index.js\"],\n      \"env\": {\n        \"KEVLAR_MODE\": \"auto\",\n        \"KEVLAR_MAX_CONCURRENT\": \"3\"\n      }\n    }\n  }\n}\n```\n\nCustom persona directory:\n\n```json\n{\n  \"env\": {\n    \"KEVLAR_SKILLS_DIR\": \"/ABSOLUTE/PATH/TO/skills\"\n  }\n}\n```\n\n---\n\n## Security Boundaries\n\n- `sessionId` only allows `[a-z0-9-]`.\n- Persona write and delete operations are restricted to the `skills/` directory via path validation.\n- Runtime drafts and wizard states are stored in `skills/tmp/`, with expired drafts cleaned up on startup.\n- Deleting a persona requires selecting a target and replying with the full confirmation phrase.\n- Config changes require preview before confirmation.\n- API keys are never passed via tool parameters or written to local config.\n- Non-`orchestration` modes use a review lock to prevent resource contention between multiple external model tasks.\n\n---\n\n## Architecture Overview\n\nKevlar-4u uses a **Server-side Workflow + 3-Tier Execution Fallback** architecture.\n\n```mermaid\nflowchart TD\n  User[\"User\"] --> Client[\"MCP Client / Host AI\"]\n  Client --> Tools[\"Kevlar-4u MCP Tools\"]\n\n  Tools --> Wizards[\"Server-side State Machine Wizards\"]\n  Wizards --> Tmp[\"skills/tmp Session State\"]\n\n  Tools --> Fallback[\"3-Tier Execution Fallback\"]\n  Fallback --> L1[\"L1: Sampling / Direct API\"]\n  Fallback --> L2[\"L2: ExecutionBlueprint Subagent Dispatch\"]\n  Fallback --> L3[\"L3: Host Orchestration (Matrix-filling)\"]\n\n  L2 --> Cont[\"review_content_wizard_continue\"]\n  Cont --> Slot{Pro + agentId?}\n  Slot -->|Yes| Agg[\"Auto-aggregation<br/>merge → cross-validate<br/>→ synergy → finalize\"]\n  Slot -->|No| Normal[\"Standard pipeline\"]\n\n  Agg --> Report[\"Structured Review Report\"]\n  Normal --> Report\n  L3 --> Report\n  L1 --> Report\n\n  subgraph Pro[\"Pro (subscription)\"]\n    Sync[\"npx . --sync\"]\n    Server[\"kevlar4u.xyz API\"]\n    Bundle[\"Strategy Bundle<br/>(prompts, rules, config)\"]\n    Cred[\"AES-256-GCM Credential Store\"]\n    SlotAgg[\"Slot-based per-agent<br/>result persistence<br/><i>(AgentSlotResult)</i>\"]\n  end\n\n  Sync --> Server --> Bundle --> Cred --> Fallback\n  SlotAgg -.-> Agg\n```\n\n**Free** features (persona creation, RST review, local rule engine, all execution modes) work entirely offline. **Pro** adds a server-synced strategy bundle with enhanced prompts, real precedent names, and additional rule sets — plus **slot-based per-agent result persistence** (per-agent submission via `review_content_wizard_continue(agentId, result)` with server-side auto-aggregation).\n\nDesign principles:\n\n- **State machine-driven workflows**: Key flows are maintained by tool state machines, not dependent on the host AI remembering long prompts.\n- **3-tier adaptive execution**: MCP Sampling → ExecutionBlueprint subagent dispatch → Host orchestration. Each tier auto-detects capability and falls through on failure. Zero configuration needed.\n- **Per-agent slot persistence (Pro)**: Each agent's raw findings are preserved in `agentSlots.received`, enabling audit trail, per-agent retry, and server-side deterministic aggregation.\n- **Safe confirmation**: High-risk operations like deletion, reset, and config writes all go through confirmation wizards.\n\n### Directory Structure\n\n```text\nkevlar-4u/\n├── config/\n│   └── mcp-config.json                    # MCP client config template\n├── docs/                                  # Architecture decisions, ADRs, audit reports\n├── schedule/                              # RST design docs & phase logs\n│   ├── RST-ARCHITECTURE.md                # RST four-layer architecture\n│   ├── RST-需求文档.md                     # RST requirements\n│   └── RST-PHASE-LOG.md                   # RST implementation phase log\n├── scripts/                               # Install & config scripts\n│   ├── cli.ts                             # Interactive install CLI\n│   ├── credentialCli.ts                   # Pro: activation, license, sync CLI\n│   ├── registry.ts                        # MCP client detection\n│   └── setup.ts                           # Zero-config setup script\n├── skills/                                # Reviewer persona library\n│   ├── auditors.json                      # System auditors (pre-screening)\n│   ├── xiaohongshu.json                   # Platform: 小红书\n│   ├── zhihu.json                         # Platform: 知乎\n│   ├── wechat_official.json               # Platform: 微信公众号\n│   ├── rules.json                         # Semantic risk rules (DAO layer)\n│   ├── _template.md                       # (Legacy) Persona reference template\n│   └── tmp/                               # Runtime wizard session state\n├── src/\n│   ├── index.ts                           # stdio server entry\n│   ├── server.ts                          # MCP server, DI, tool registration\n│   ├── __tests__/                         # Test suite\n│   ├── execution/                         # Multi-mode execution layer\n│   │   ├── index.ts                       # Execution entry, mode resolution\n│   │   ├── base.ts                        # Type definitions & interfaces\n│   │   ├── client.ts                      # Client capability detection\n│   │   ├── config.ts                      # Config read/write\n│   │   ├── aggregator.ts                  # Review report aggregation\n│   │   ├── limiter.ts                     # Concurrency limiting & retry\n│   │   ├── lock.ts                        # Review lock\n│   │   ├── parallel.ts                    # Shared parallel execution + RST prompt builder\n│   │   ├── dimensions.ts                  # Review dimensions + RST four-layer definitions\n│   │   ├── focusTopicTransform.ts         # Focus Topic filter + translate pipeline\n│   │   ├── rstParser.ts                   # Natural language → RST config parser\n│   │   ├── rstRecommender.ts              # RST-based persona recommendation engine\n│   │   ├── strategy.ts                    # Pro: strategy plan types\n│   │   ├── strategyBundle.ts              # Pro: bundle signature & verification\n│   │   ├── bundleStrategyProvider.ts      # Pro: server-backed strategy provider\n│   │   ├── proRuntime.ts                  # Pro: runtime loader (DynamicImport / Mock)\n│   │   ├── progress.ts                    # Session progress metadata & delta comparison\n│   │   ├── reviewSteps.ts                 # Pro: step type system & execution\n│   │   ├── protocol.ts                    # ExecutionBlueprint, ContinuationSpec, context slot metadata, receipt validation\n│   │   └── modes/\n│   │       ├── orchestration.ts\n│   │       ├── sampling.ts\n│   │       └── subagent.ts\n│   ├── credential/                        # Pro: activation, license, sync, bundle cache\n│   │   ├── index.ts                       # AES-256-GCM credential store\n│   │   ├── activate.ts                    # Activation code → license\n│   │   ├── activationClient.ts            # Full activation flow (code → license → session → bundle)\n│   │   ├── bundleCache.ts                 # Bundle cache read/write/status\n│   │   ├── syncClient.ts                  # Sync strategy bundle from server\n│   │   └── store.ts                       # Disk-backed secure credential store\n│   ├── subscription/                      # Pro: SaaS-prompt integration\n│   │   ├── tier.ts                        # isPro() resolution\n│   │   ├── promptTypes.ts                 # PromptSegments type & defaults\n│   │   └── promptTemplates.ts             # Prompt text for Pro/Free tiers\n│   ├── tools/                             # MCP tools\n│   │   ├── index.ts                       # Tool registry\n│   │   ├── listPersonasTool.ts\n│   │   ├── createPersonaTool.ts           # Create persona + draft management\n│   │   ├── createPersonaWizardTool.ts     # Wizard with RST archetype selection\n│   │   ├── deletePersonaTool.ts\n│   │   ├── deletePersonaWizardTool.ts\n│   │   ├── reviewContentWizardTool.ts     # Main review wizard + ExecutionBlueprint builder\n│   │   ├── continueWizardTool.ts          # Continuation contract tool (batch + Pro per-agent slot submission)\n│   │   ├── configureTool.ts\n│   │   ├── configureWizardTool.ts\n│   │   ├── getModesTool.ts\n│   │   └── helpTool.ts\n│   ├── dao/                               # Data Access Layer\n│   │   ├── IRuleRepository.ts             # Rule repository interface\n│   │   ├── LocalJsonRuleRepository.ts     # Local JSON implementation\n│   │   ├── index.ts                       # DAO entry point\n│   │   └── types.ts                       # Rule data types\n│   ├── prompts/\n│   │   ├── reviewWizard.ts                # Orchestration & subagent prompt builders (step 0, audit, dispatch, fallback)\n│   │   └── reviewDispatcherPrompt.ts      # Internal design reference\n│   └── utils/\n│       ├── errors.ts                      # Error codes & formatting\n│       ├── logger.ts                      # Structured logging\n│       ├── parser.ts                      # Multi-file JSON persona parsing & writing\n│       ├── sanitize.ts                    # Credential scanning, prompt boundary handling\n│       ├── sanitizeStep0Results.ts        # LLM safety filter sanitization (wild translations, black atoms, attack candidates, web context)\n│       └── ...\n└── package.json\n```\n\n---\n\n## Data Storage\n\n### Personas\n\nPersonas are stored in **multi-file JSON** format under `skills/`. Each persona file contains a `version`, `last_updated`, and `personas` map:\n\n```json\n{\n  \"version\": \"1.0.0\",\n  \"last_updated\": \"2026-05-28\",\n  \"personas\": {\n    \"analytical_zhihu\": {\n      \"meta\": {\n        \"id\": \"analytical_zhihu\",\n        \"name\": \"理性知乎人\",\n        \"tags\": [\"知乎\", \"理性分析\"],\n        \"tone\": [\"专业\", \"严谨\"],\n        \"dimensionBias\": {\n          \"entries\": [\n            { \"dimension\": \"information_gap\", \"weight\": \"focus\" },\n            { \"dimension\": \"differentiation\", \"weight\": \"focus\" }\n          ]\n        },\n        \"rst\": {\n          \"archetypes\": [\"technical_reviewer\"],\n          \"triggers\": [\"ai_writing\", \"overhyped\", \"data_credibility\"],\n          \"regionalPack\": \"china\",\n          \"platformCulture\": \"zhihu\"\n        }\n      },\n      \"systemPrompt\": \"你是一位活跃在知乎的用户...\"\n    }\n  }\n}\n```\n\nFiles are routed by tag:\n\n| Tag | Target File | Purpose |\n| --- | --- | --- |\n| `system_auditor` | `auditors.json` | System pre-screening auditors |\n| `\"小红书\"` | `xiaohongshu.json` | Platform-specific user personas |\n| `\"知乎\"` | `zhihu.json` | Platform-specific user personas |\n| *(unknown)* | `fallback.json` | Catch-all for unrecognised platforms |\n\nNew persona files are auto-detected at startup via content sniffing (presence of a `personas` key). Adding a new platform requires only placing a JSON file in `skills/`.\n\n### Rules\n\nSemantic risk rules live in `skills/rules.json` and are accessed through the DAO layer (`src/dao/`):\n\n```json\n{\n  \"version\": \"1.0.0\",\n  \"categories\": {\n    \"food\": {\n      \"enabled\": true,\n      \"associative_map\": [\n        {\n          \"root\": \"不新鲜\",\n          \"variants\": [\"食材不新鲜\", \"东西不新鲜\"],\n          \"misinterpret_direction\": \"可能被误解为食品安全问题\",\n          \"severity\": \"medium\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Creating Personas\n\nUse the `create_persona_wizard` tool — it guides you through age, interests, traits, tone, platform, author relation, and **RST archetype selection**. You can also describe your ideal reviewer in natural language (e.g., \"a sarcastic tech user on Hacker News who hates marketing fluff\") and the system will auto-parse it into a full RST configuration. The persona is automatically saved to the correct platform JSON file. No manual file editing is needed.\n\n---\n\n## Pre-Release Checklist\n\n```bash\nnpm run build\nnpm test\n```\n\nBefore release, it is recommended to hand [docs/PRE_RELEASE_AUDIT_REQUEST.md](docs/PRE_RELEASE_AUDIT_REQUEST.md) to your local AI for an independent audit.\n","readmeFilename":"README.md"}