{"_id":"@aquex/reasonbook","_rev":"23-4995738f065dcb264ef52110fda75d86","name":"@aquex/reasonbook","dist-tags":{"latest":"4.12.0"},"versions":{"0.0.0-stage":{"name":"@aquex/reasonbook","version":"0.0.0-stage","_id":"@aquex/reasonbook@0.0.0-stage","stub":true,"maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"dist":{"shasum":"9c2305b86a6129c383734810e06c670c73660f68","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-7xE6vkxpX88L8V2gPZ3Iie1ZpjHWCsVv04a9UTYuYr3TewPYq/qhAhhzXHDkTRntEkfImmcjR0/K/8fY6CxrmA==","signatures":[{"sig":"MEQCID+qRwfGil9lKF+TxOkwzBS7CBUw8zvvGNnm/OGrB5apAiBVxBiClJ/VU9To/ifJwHi8/OoVYSeZAI5WZhQ3NDkkNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"description":"Temporary package placeholder for staged publishing","directories":{}},"4.0.0":{"name":"@aquex/reasonbook","version":"4.0.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.0.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"793ed178f2331df7ce89e2128c3123f85a26d920","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.0.0.tgz","fileCount":1169,"integrity":"sha512-qLwppZw+Zm0t3TKqcmcRjvZMnQw3M8hfOYzw9TUigyuDMTNKvBcu4blcNhCeQTF40JfkOHlup4Y2B4LDRi8IRg==","signatures":[{"sig":"MEYCIQD8IWhHDfGluDtYfjCNLUAQVz8g2A12KfZG05obyy83PgIhAI6LAsaP5HuT3z2H1lgX8sh+ku31rtCYyBiRzXtRvci0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqfXDG8BJAeQqPBsRcFZbGgyXS9iK3l3PvwLzxdaE/HAIhAN2WP/NKvQXZC+bPBcVGx6XPCYZxbzV5cISypm9N0hpA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7410530},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"32035b2b64a29d33b8227c8ea8be147b005a389b","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"10.8.2","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(cmos)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.0.0_1791821704914_0.11706047005789388","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@aquex/reasonbook","version":"4.0.1","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.0.1","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"e76923f8727e43a986dcdee65ce6398e3c53e685","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.0.1.tgz","fileCount":1169,"integrity":"sha512-XAA49p2iQ1gJyKpS4D84KLPN/e5QqOe8Vxv7ajC2JUzNulK6dZ9x7fAZYkzeUOcXv6nlJBcxI4kN766BcfwFNw==","signatures":[{"sig":"MEUCICbypqvQL79IuWyNl9Pz14o2f1AHhrsQ0e9KoQ3XAvPOAiEA2imCsTBLrlepIcoBwMPcG7hPiLdlUQtEHZjk/nk7TiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDV+KQUpKkdtiriqjz9e2Bg0jYTsRggKLRlMAgCN9btSgIhAPmqlVfuDuYF0r1AkJTSD8pAsizD9qFGsYvHisCDV5q8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7412911},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a75309fbf365fcbae0e9d99daabea8e4782404d2","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"10.8.2","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.0.1_1791857780290_0.46226365014156334","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"name":"@aquex/reasonbook","version":"4.0.2","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.0.2","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"a51135e492fd4793268f4eacee20a940f739f5c8","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.0.2.tgz","fileCount":1169,"integrity":"sha512-H46v52vGC1HMcrDNVF7iqBavwxtRasZZJZVLZIxLyhZCX3rIE+9Iq4rOjqFUjfOhEcpApJiXYldWASNpXd8aig==","signatures":[{"sig":"MEUCIQDWfDwELKJlICrSjdLavVOqhvzNXqLJUFddmdmSqw8NTwIgIRvufutqMr9HfqySiN8jKSjiIJXtez9M8pRXanHNaSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAmnmjZsl4InSoK/19qkyLZlMEmjtcRYiiLBN9+LPq+uAiEAy5/r0KoXCiLdwotMqv2vo2d8ezppTDldVzKCWXrDbOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7432198},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0c50ca201add0d4952d36743625dc99c1a04fd76","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"10.8.2","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.0.2_1792098861165_0.25049688503348433","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@aquex/reasonbook","version":"4.1.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.1.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"08e1580e780e40f2f9076a81f8b4dac066ab9819","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.1.0.tgz","fileCount":1485,"integrity":"sha512-GNWOg1xRvq0goxFCS5gT8C3AMCLlBMeNVY58keFylavxH6skr2AukVWdBZM49HnFo9xU8qMTrVik+7G2rrtetw==","signatures":[{"sig":"MEQCIAa7IZE3eLrZ9rE7I2FeGZPyUkWmEHvIBnm72MVGLgdfAiB8qwrQeURQCOmzj+LnNI5DqSdF+gLH4NfdEtcDNwfFMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAinN0P0yJ7V5MvQxoe3yQDYzWE30blxdu2lcoyxGz6eAiEAsjFRLJHEPRGbXxnELk0hI5L28rTYsMVg6mSz89X9FcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8793809},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4e9cbefecb7baef7f3d00b49ac550c2ae1f05c71","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"10.8.2","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.1.0_1792316334574_0.26795175898413914","host":"s3://npm-registry-packages-npm-production"}},"4.2.0-rc.2":{"name":"@aquex/reasonbook","version":"4.2.0-rc.2","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.2.0-rc.2","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"bfbe9a3b3bc75023655f5e4fc32bf4ac9c839c87","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.2.0-rc.2.tgz","fileCount":1565,"integrity":"sha512-xylsSXPXTpmfRvYPBcu2KuJQb6N3NCd3sr7pqnc+LdnASpMI5qTEla/o5z9RzsR2lHmNc15OC5TMWIJ70JsNZw==","signatures":[{"sig":"MEUCIDaamttd7cJYCy3CEll36gB2JK2iot2zs1suoVA1MD15AiEAsZSJFlVtLO5PLLVpQyeAOwPUtl64AHC0/KubR9mfxDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD06hgWLP2buFM+i1eXEEEXMCwSeGsyxBHZv8zJu3+EYwIgahRoIzhupqJXbdk/eqbQdRcAg8vOo+csN2HEQfPLdHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9254137},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./package.json":"./package.json"},"gitHead":"6ea376ea7c49c4bf8e6daaaafc47bd3d777758b0","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"10.8.2","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.2.0-rc.2_1792390059042_0.6952558244182543","host":"s3://npm-registry-packages-npm-production"}},"4.2.0-rc.3":{"name":"@aquex/reasonbook","version":"4.2.0-rc.3","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.2.0-rc.3","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"195f8280331169d1cb4b5df61ace399d9df511f6","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.2.0-rc.3.tgz","fileCount":1573,"integrity":"sha512-51MZvz/NmfIX48DGJXlCVeF3NAqP8hrH8CGeHKum4SZkIVTq1WVoh7aImCllHWJElh+rOLTGtSQc+AMj0h/nJw==","signatures":[{"sig":"MEYCIQDw+ZiSlI+hAQuKmVFzt/VtQXVTDz1YeK1x2lDMIZVNhgIhAOntiAFjyxGavA6exOrph+evKEUh33Inhfu1ZeTw0PJQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDCtvxVXRInNdrfXbxS/7ILlngreIABD8za0LODmUJMLQIhANTKfU5yM15yzTPKqWhL1HXV8PACbtiDofI5tqIeZevK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9323563},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/43059e19-6596-40ae-9b6a-59d821ae377e/scratchpad/pkg/aquex-reasonbook-4.2.0-rc.3.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/43059e19-6596-40ae-9b6a-59d821ae377e/scratchpad/pkg/aquex-reasonbook-4.2.0-rc.3.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-51MZvz/NmfIX48DGJXlCVeF3NAqP8hrH8CGeHKum4SZkIVTq1WVoh7aImCllHWJElh+rOLTGtSQc+AMj0h/nJw==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.2.0-rc.3_1792430109823_0.5916057867925217","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@aquex/reasonbook","version":"4.2.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.2.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"f7b8e6cdb3c8396e5b0d114ac0106af663e78ca2","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.2.0.tgz","fileCount":1576,"integrity":"sha512-3M+ss0bSiZqYAEhaFNenj6rCvbcNtQMosYdv6AFeqPfIBj33faH+N/iTGQuy7qmcs+xHzvpuexR57EScWGrhiA==","signatures":[{"sig":"MEUCIQDlL2LSMIc/EPwS5M6HRJ2Xup6CTewaYkQOQpzP1gglkAIgcWv3PQSHNpP6vLUjm5IiwzHDJ3QJx8ca0HDbv49+ZBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCcChK6B+oumolnnkdoJp499QzzL1pY7D2D7qtvGapA0QIgYgawCCA06GFovy0LJVhqBPXi5gu6B7LJ1bNLHIMKo7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9365546},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/43059e19-6596-40ae-9b6a-59d821ae377e/scratchpad/pkg-420/aquex-reasonbook-4.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/43059e19-6596-40ae-9b6a-59d821ae377e/scratchpad/pkg-420/aquex-reasonbook-4.2.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-3M+ss0bSiZqYAEhaFNenj6rCvbcNtQMosYdv6AFeqPfIBj33faH+N/iTGQuy7qmcs+xHzvpuexR57EScWGrhiA==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.2.0_1792436515861_0.4943102217444244","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@aquex/reasonbook","version":"4.2.1","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.2.1","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"60663635f6d0026763bb123c49b37945b06e245d","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.2.1.tgz","fileCount":1588,"integrity":"sha512-i3+Vxyjls8lHlXgrZnQDBCj4C9E3TGccMI5caLg53dNSClqqDiN34tRQ2WXEYvDaySgVc9Pfk8pFAV2yarMLbA==","signatures":[{"sig":"MEUCIQCp8yJCj8wyhEvI6YtP27zA31cdPjiCT2HdmUw26fHGvAIgUhg9+1uSOed3tVe1j2k1RLibo3/GEu1Ff5mOVXl+YIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA9M5Fdt41fEBqPFO9mTlvrAgKx4zuWf6jkvky2BmMNBAiBcgdsQl5QmaNYl8sFWgIHrpLas3Rpyfx/PIU6UIEKm+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9499496},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/a7f65215-6f77-4b56-93e4-711976fd0517/scratchpad/release/pack/aquex-reasonbook-4.2.1.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/a7f65215-6f77-4b56-93e4-711976fd0517/scratchpad/release/pack/aquex-reasonbook-4.2.1.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-i3+Vxyjls8lHlXgrZnQDBCj4C9E3TGccMI5caLg53dNSClqqDiN34tRQ2WXEYvDaySgVc9Pfk8pFAV2yarMLbA==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.2.1_1792511421368_0.2869719717529875","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"@aquex/reasonbook","version":"4.3.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.3.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"5c70ad8218bdf5e7db554f17e703c2c378d82b5f","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.3.0.tgz","fileCount":1636,"integrity":"sha512-4NCJkZD0sXWD5cP3B4Br4XmHq92az3Iz7OrOhlHlFZQytSM3fyvMBLton8peDFxTFAf+9alt1U8aBMd+u9z2DQ==","signatures":[{"sig":"MEYCIQD9SI8mAW6i4Ed1uNMLsbpKA8khhVWoqZv0eOu7v0WDZgIhAL+81NmGD1XXl77IjQ0//PZlfbRqDd3tqFb0Gt6zhQKz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAjbrMOBgnoFSTuK/IKDUsno0NT8s6oYTIdl9+dvaJi0AiEA7E59h0RHqkv1voQvJU3ux78139qH7/22QXAHYfHOnIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9738331},"main":"dist/index.js","type":"commonjs","_from":"file:/var/folders/gd/rty3217130vdbr9_q713nvg80000gn/T/tmp.epmSfmdlBy/aquex-reasonbook-4.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/var/folders/gd/rty3217130vdbr9_q713nvg80000gn/T/tmp.epmSfmdlBy/aquex-reasonbook-4.3.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-4NCJkZD0sXWD5cP3B4Br4XmHq92az3Iz7OrOhlHlFZQytSM3fyvMBLton8peDFxTFAf+9alt1U8aBMd+u9z2DQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.3.0_1792545056680_0.3512699523790619","host":"s3://npm-registry-packages-npm-production"}},"4.4.0":{"name":"@aquex/reasonbook","version":"4.4.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.4.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"663245b9c53002c22d8da4801a2b61e731ad3d8a","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.4.0.tgz","fileCount":1664,"integrity":"sha512-WTJslT0Rcwav+NVWgB3HefqrYLUWb5qJSqB0XhTxWiqqPZfT67WQSw1jRtbF10pBVIhSd1gPKUb06QvYiPloqQ==","signatures":[{"sig":"MEUCIQCZuTGJGyDuG5mgjZLPyD+U6X6+taDsl3i5k+4EdYqV1gIgMURm4eDB3Ok10vc2su2flMYlqaS3jju9NS2yow3jreY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDvmzE8wiF+X9uGhk4LrYpBcrN7C0gNwH7vkQW7O3vz2wIgEiNOde6oeFWZIxNZx7qMnn5EyOqibwcL8wKxirdDrAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9825914},"main":"dist/index.js","type":"commonjs","_from":"file:/Users/systemsystems/portfolio/cmos-mcp-pro/rbook/research/2026-10-s98-build/s98-m14/release-checkpoint/local-package/aquex-reasonbook-4.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/Users/systemsystems/portfolio/cmos-mcp-pro/rbook/research/2026-10-s98-build/s98-m14/release-checkpoint/local-package/aquex-reasonbook-4.4.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-WTJslT0Rcwav+NVWgB3HefqrYLUWb5qJSqB0XhTxWiqqPZfT67WQSw1jRtbF10pBVIhSd1gPKUb06QvYiPloqQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.4.0_1792640232255_0.8824255916642156","host":"s3://npm-registry-packages-npm-production"}},"4.5.0":{"name":"@aquex/reasonbook","version":"4.5.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.5.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"5d65d84bf028ecfa4b8bc41ec1d881d218ec1ec1","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.5.0.tgz","fileCount":1796,"integrity":"sha512-m1CnQ1CYF7myVbkoL7NfX2/+ZkbKl0PBn5YvYmqvYlsAu/QLC9BZVnrr8ESvnJPwMF4lXfb/ubgb1hxGN/NodQ==","signatures":[{"sig":"MEQCIAerfWwHeFmyXRS8Z6og2cSzuzrmcq7YdA/gyW/IS3sBAiBcle3f03RS6kaLqHvcHGbk7Z+G3Wpv99eo5079HifBXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD+aQaUwSZ153NhHcCEV9QRyr/4A5FjKZYmD1NJ4Ei++AIgSggz5+/gxq/3a2TZiMfE7A7uNhKgTg8t4+udS5uEp3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10190785},"main":"dist/index.js","type":"commonjs","_from":"file:/var/folders/gd/rty3217130vdbr9_q713nvg80000gn/T/s98-m20-release-rgifask5/local-package/aquex-reasonbook-4.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/var/folders/gd/rty3217130vdbr9_q713nvg80000gn/T/s98-m20-release-rgifask5/local-package/aquex-reasonbook-4.5.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-m1CnQ1CYF7myVbkoL7NfX2/+ZkbKl0PBn5YvYmqvYlsAu/QLC9BZVnrr8ESvnJPwMF4lXfb/ubgb1hxGN/NodQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.5.0_1792688516996_0.6343769015497556","host":"s3://npm-registry-packages-npm-production"}},"4.5.1":{"name":"@aquex/reasonbook","version":"4.5.1","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.5.1","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"642edf1d663a9f7dffb37d31820fac5fcb59311f","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.5.1.tgz","fileCount":1838,"integrity":"sha512-KTWok7eL72lV+7K0V6AKo6OxLF0aijMWXIZmxE6Z9WtJ9CB5bICIt/d6vEosh613Ln3w3onIC9Np0H2SWap6ZA==","signatures":[{"sig":"MEQCIETDNfA0DYpsQJKjhTgtcZlZ+DDIdUHhFN2pOzahKSD7AiA9eIkAUDc888+9zIdqwAGZLFmtfe2rJtBX6jmbmjKl+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICd5+GQgfJPe29sWZeA6J1EgCm2w8CNLmcV9sM2eZS5MAiAO13c8RtcH40wJJWUO2/jnOMMbTyH3w2oi38OV/HfxfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10364554},"main":"dist/index.js","type":"commonjs","_from":"file:/tmp/s101-m07-release.X2nRDB/aquex-reasonbook-4.5.1.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/tmp/s101-m07-release.X2nRDB/aquex-reasonbook-4.5.1.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-KTWok7eL72lV+7K0V6AKo6OxLF0aijMWXIZmxE6Z9WtJ9CB5bICIt/d6vEosh613Ln3w3onIC9Np0H2SWap6ZA==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.5.1_1792799673806_0.628211990350829","host":"s3://npm-registry-packages-npm-production"}},"4.6.0":{"name":"@aquex/reasonbook","version":"4.6.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.6.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"9650963ea6cdb192ba1fc664bd16a83da65bacce","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.6.0.tgz","fileCount":1906,"integrity":"sha512-cSoZZaUqe4x9z1hONSPjMY16BvOwSz42uk9MwHzz2mMd+Y/vIlekr7P779xxR89DKa8dBpzRCVcVvm6Ai1jugw==","signatures":[{"sig":"MEYCIQDUUD/oXr/Zwsym1/gVPcDFGTS/cFR2ZPS9BoMxnpzM8wIhAO3X/m4uGUM6avwituJmWeyw5j3nF9udPL+IXl1dGPIe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGBtUGN8c6QQae9WGrJUCjFIBQqVTHFzuyXPd7JMDK5sAiAMBsyo0RNZKjK5ehnWq1RTV8zSQCtgpsbSrlXVn4dWZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10545104},"main":"dist/index.js","type":"commonjs","_from":"file:/tmp/s102-release-candidate-7/packed/aquex-reasonbook-4.6.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/tmp/s102-release-candidate-7/packed/aquex-reasonbook-4.6.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-cSoZZaUqe4x9z1hONSPjMY16BvOwSz42uk9MwHzz2mMd+Y/vIlekr7P779xxR89DKa8dBpzRCVcVvm6Ai1jugw==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.6.0_1792943011744_0.525841054101136","host":"s3://npm-registry-packages-npm-production"}},"4.6.1":{"name":"@aquex/reasonbook","version":"4.6.1","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.6.1","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"122e200b8f89686b3a4ca5accb7dca4e2490b571","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.6.1.tgz","fileCount":1906,"integrity":"sha512-Ma/VVw+RHRVlWy5RBzVSWEje8KtM0TuDrJhVxMJUNBryccrrmznRzJJ3N19XXKP7Tk9a3ARM8YdRGbqQZgYB0Q==","signatures":[{"sig":"MEYCIQDtfjuzPhMVOwdRcP5899JjSKnXZjd5Dccb6eAPZeHRNgIhAJhIkL3lyXQRcHg4PtAxI3LF3jyMsXN2Fup3KWlk6D6k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDy8wMSzp7KwMjyYKbQvGSh0BwrIG2/fmF39g7VpuYWkQIhALA/xmbHQG4sDVT14hYzckPmLovy9Sx6je09Jsc3vePm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10549028},"main":"dist/index.js","type":"commonjs","_from":"file:/Users/systemsystems/portfolio/cmos-mcp-pro/rbook/runtime/s103-release-4.6.1-pending/attempt-2/packed/aquex-reasonbook-4.6.1.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/Users/systemsystems/portfolio/cmos-mcp-pro/rbook/runtime/s103-release-4.6.1-pending/attempt-2/packed/aquex-reasonbook-4.6.1.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-Ma/VVw+RHRVlWy5RBzVSWEje8KtM0TuDrJhVxMJUNBryccrrmznRzJJ3N19XXKP7Tk9a3ARM8YdRGbqQZgYB0Q==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.6.1_1793110032768_0.5360245393223383","host":"s3://npm-registry-packages-npm-production"}},"4.7.0":{"name":"@aquex/reasonbook","version":"4.7.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.7.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"26a3b05310b21c734f277deddd7e0438544f15b0","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.7.0.tgz","fileCount":1918,"integrity":"sha512-COKLc6guIDu9Wb2otwikZkT6qOBExibqb5BdgJM/jjSTleIaw7AnTA89qku2OG3bUZBislaW7fjK0iyAMWleeQ==","signatures":[{"sig":"MEUCIFkPe+Td6IGzWFar8b40cn9akNk18JsHnjmU9A700gJMAiEA1CDsOvAkN+BGF91OvnYRiBxP1JaK+/SlHuPq5jhpJT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCylwoYoTSVn6OOR4AxRJO5wnKNKviNBjPg3gYBAN/f4AIgZdNCuWYCU8c8W/UlNeVWH6iy1LauVtfSTdomAmr9YtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10604010},"main":"dist/index.js","type":"commonjs","_from":"file:/Users/systemsystems/portfolio/cmos-mcp-pro-gate-evidence/s104-m06-release-gates-02/tarball/aquex-reasonbook-4.7.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/Users/systemsystems/portfolio/cmos-mcp-pro-gate-evidence/s104-m06-release-gates-02/tarball/aquex-reasonbook-4.7.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-COKLc6guIDu9Wb2otwikZkT6qOBExibqb5BdgJM/jjSTleIaw7AnTA89qku2OG3bUZBislaW7fjK0iyAMWleeQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.7.0_1793194294027_0.7029833762759738","host":"s3://npm-registry-packages-npm-production"}},"4.7.1":{"name":"@aquex/reasonbook","version":"4.7.1","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.7.1","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"0654426d5a7fb4a1a7b410dcfd39e373209dc313","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.7.1.tgz","fileCount":1918,"integrity":"sha512-jYKO0EBF+erk6Zji/hlpzlR0vjcLq+JmHXg8PaHIADOJ+RCe0ZsbKaqO4fzp40h4N4c0fFRaahnqku7kO+/oUw==","signatures":[{"sig":"MEUCIDbtputjwgTG1Vtgnn0S/awaF+SFmi6aSuS2APBy1AdjAiEA1MlnWb+DqhcPrxbn834VSv7oAcikRBrV5nu15qm3ZbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDZYLu6GZL+2EXtvUCdjWmjf+Fscf4JNNUdCs/oYxuFcAiEAgEZqdPuFg5BP1upUqdgxhk6P8WRcTDUTIE4ngGRk//Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10607410},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/fd3d56e0-b3d4-4b4d-8cb6-e483decd20d6/scratchpad/release/gates-2/tarball/aquex-reasonbook-4.7.1.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/fd3d56e0-b3d4-4b4d-8cb6-e483decd20d6/scratchpad/release/gates-2/tarball/aquex-reasonbook-4.7.1.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-jYKO0EBF+erk6Zji/hlpzlR0vjcLq+JmHXg8PaHIADOJ+RCe0ZsbKaqO4fzp40h4N4c0fFRaahnqku7kO+/oUw==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.7.1_1793280231349_0.028805879702575532","host":"s3://npm-registry-packages-npm-production"}},"4.8.0":{"name":"@aquex/reasonbook","version":"4.8.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.8.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"62f3cd94e2ece3c8549d46e23e395be6a399d4a0","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.8.0.tgz","fileCount":1930,"integrity":"sha512-K7btMMtZzlOReGEM2qU4pmWrDxGrqusNi8sZogBE8jxe+VEniRDTvgsC4xGMvP9vT2oLRmd2a9KNym1o9pYIHQ==","signatures":[{"sig":"MEYCIQCE9GWrI4kdZhe0KsW1im4AN1rxhl8jg8+6UZCaSacD6AIhAK2nPRn/ByNmkdJlTTkAMhgpOL/icD2glGcjx9dLTOJl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDPuOWloIyyB8wQuDQlbQXUq9bOTfUjxYOQiCuSV2lSfAiEAyDnO84+6Dv1KbTq1A3mzTF/uYW5r3ND5nTVpyUmpf/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763550},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/a870c4c0-86d2-44b9-9612-62767a0447f8/scratchpad/m06-gates/release/aquex-reasonbook-4.8.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/a870c4c0-86d2-44b9-9612-62767a0447f8/scratchpad/m06-gates/release/aquex-reasonbook-4.8.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-K7btMMtZzlOReGEM2qU4pmWrDxGrqusNi8sZogBE8jxe+VEniRDTvgsC4xGMvP9vT2oLRmd2a9KNym1o9pYIHQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.8.0_1793406950747_0.6260778440290975","host":"s3://npm-registry-packages-npm-production"}},"4.9.0":{"name":"@aquex/reasonbook","version":"4.9.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.9.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"21805b2931b4c4c906d1c9c606966db3db9fe681","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.9.0.tgz","fileCount":1970,"integrity":"sha512-KiOG73C6vqGvFtgv5ZnpLSkDH89G7XysaVPZrr0Wx+kH4szUJ0N6uJaoNSfwfSw5uvxpjmu/kXgocHMyhePjdQ==","signatures":[{"sig":"MEUCIQDkbyBZGB0bQzuwlOOFq6iYf+NHGg1GdSDda0qFlWHVfwIgfE2j3HodH8NJ+Ai81bIXuFdlkWI5EJwRf1p5D1F8Kbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEqu/GGsfNLJyB6rEShuhSUY/SvZ/7JUBfWCEipiN0TyAiEAjAM8iZMrITCm2Rj4J2BG+72UQod7JoGheUb2rl3yVoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11028325},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/d2eb6635-0b82-4f81-84cb-01ff01fedae2/scratchpad/release/packed/aquex-reasonbook-4.9.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/d2eb6635-0b82-4f81-84cb-01ff01fedae2/scratchpad/release/packed/aquex-reasonbook-4.9.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-KiOG73C6vqGvFtgv5ZnpLSkDH89G7XysaVPZrr0Wx+kH4szUJ0N6uJaoNSfwfSw5uvxpjmu/kXgocHMyhePjdQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.9.0_1793472052100_0.4005355754166736","host":"s3://npm-registry-packages-npm-production"}},"4.10.0":{"name":"@aquex/reasonbook","version":"4.10.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.10.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"0be458350ce515a4ea17a63f2d38596d24172df0","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.10.0.tgz","fileCount":2006,"integrity":"sha512-S87FYGU8htd9b7pJHhnzBhWEGZcx1csDJZSK1AGmWRrF/T1lWDOqpslHHnNKlBxW0fV25exS5g49McOnp2B8GA==","signatures":[{"sig":"MEUCIQCGlDyh2T3nEVyqLFB/GjBraxQmKkPbtbpmYRYikmdflgIgP/h071Df+PMYJ8WLbK9kIqwfe4V1suyyFHCsnW+JzSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCEc4RwNU5gOribU7z/94bzjrL/EZHifixPW51zpUyDvwIgftx8+OYWQBTArOlOVccyQ0Qs5k+RfiHwvaa3pyA8dwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11282727},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/56c77eb1-09ce-4c60-928c-9ae29a8dc1c0/scratchpad/release-4.10.0/packed/aquex-reasonbook-4.10.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/56c77eb1-09ce-4c60-928c-9ae29a8dc1c0/scratchpad/release-4.10.0/packed/aquex-reasonbook-4.10.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-S87FYGU8htd9b7pJHhnzBhWEGZcx1csDJZSK1AGmWRrF/T1lWDOqpslHHnNKlBxW0fV25exS5g49McOnp2B8GA==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.10.0_1793563147687_0.06038173127268709","host":"s3://npm-registry-packages-npm-production"}},"4.11.0":{"name":"@aquex/reasonbook","version":"4.11.0","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/reasonbook@4.11.0","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"homepage":"https://github.com/kneelinghorse/reasonbook#readme","bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"bin":{"reasonbook":"dist/bin.js"},"dist":{"shasum":"7894d5a13832176fc83c3bb8b8c816ba49daf6f4","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.11.0.tgz","fileCount":2086,"integrity":"sha512-Mw+W9rPeM6RWcAnGnYjDfp35q9woxtmv/BusPRF4oOkzVuIRy8LuUdURdoAG2FQF2F1PZLK15JtODXAEwq4jEg==","signatures":[{"sig":"MEQCIHVRmoi65Mrw5g9rpg5m36v7r/ErAEswMXatOEYnCK9iAiAhCHQIsLBTpspTpVitAZty3HCEouO7s4mXg24uArh/rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDdpDGgUXjCWAeyjAi88wGd0veOMPdKLNmcdXAvwueY/AIhAN4ezBM0APG1lU0kQWqO0oqocbKK8FFp5oB76jHAuwEl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11594553},"main":"dist/index.js","type":"commonjs","_from":"file:/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/354885f2-6ba5-4174-a48b-298e07cd7c5a/scratchpad/m06-release/packed/aquex-reasonbook-4.11.0.tgz","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"_resolved":"/private/tmp/claude-501/-Users-systemsystems-portfolio-cmos-mcp-pro/354885f2-6ba5-4174-a48b-298e07cd7c5a/scratchpad/m06-release/packed/aquex-reasonbook-4.11.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-Mw+W9rPeM6RWcAnGnYjDfp35q9woxtmv/BusPRF4oOkzVuIRy8LuUdURdoAG2FQF2F1PZLK15JtODXAEwq4jEg==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reasonbook_4.11.0_1793718271643_0.7610315739149701","host":"s3://npm-registry-packages-npm-production"}},"4.12.0":{"_id":"@aquex/reasonbook@4.12.0","bin":{"reasonbook":"dist/bin.js"},"bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"dist":{"shasum":"427fc44628555d79ed056186d621e4b41c96e1d9","tarball":"https://registry.npmjs.org/@aquex/reasonbook/-/reasonbook-4.12.0.tgz","fileCount":2119,"integrity":"sha512-mdxK3PnVRIOhwCouz7EU4HDTgNNPTmwRT3fJjFDqofZ8YykTEjJjfQvJnH/uEVAmZhS1rnLd0nWfPMpnR219CQ==","signatures":[{"sig":"MEUCIQCVNp0wyJ64IBSbnAnVyt9WhmGkpWpc28BIphfIArp/fQIgaVF/HP0gTMKT/F+rRwcPw6QPTZx5QotAi8hlXyrc8xE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCA3w5C3StXRZPiZzSRxBSVicD2vMeaIjb8udbHSIBy2AIgKFY4sGGNCszhX0vN/D+4jB9uzUfjuicgyimmChGthKk="}],"unpackedSize":11756305},"main":"dist/index.js","name":"@aquex/reasonbook","type":"commonjs","_from":"file:/tmp/rbook-s110-m06/release/aquex-reasonbook-4.12.0.tgz","types":"dist/index.d.ts","author":"","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./referee":{"types":"./dist/referee/index.d.ts","default":"./dist/referee/index.js","require":"./dist/referee/index.js"},"./signals":{"types":"./dist/signals/index.d.ts","default":"./dist/signals/index.js","require":"./dist/signals/index.js"},"./package.json":"./package.json"},"license":"Apache-2.0","mcpName":"ai.aquex/reasonbook","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.js && node scripts/generate-tool-reference.js","clean":"rm -rf dist coverage","start":"node dist/index.js","format":"prettier --write .","metrics":"node scripts/collect-quality-metrics.js","prepare":"husky","lint:fix":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\" \"plugins/**/*.mjs\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","verify:dist":"npx ts-node scripts/verify-dist.ts","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","prune:snapshots":"npx ts-node scripts/prune-context-snapshots.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","snapshots:update":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false -u","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/rbook/e2e-lifecycle.test.ts","test:class-sweeps":"node scripts/class-sweeps.js","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.ts","probe:action-params":"npx ts-node scripts/generate-action-params.ts","probe:router-params":"npx ts-node scripts/probe-router-params.ts","baseline:cross-store":"npx ts-node scripts/measure-cross-store-baseline.ts","tune:retrieval:params":"npx ts-node scripts/tune-retrieval-params.ts","measure:retrieval:gate":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --gate","test:retrieval-quality":"node scripts/retrieval-quality-gate.js","test:identity-real-store":"jest --testMatch '**/*.fire.ts' --runTestsByPath tests/private/identity-registration-real-store.fire.ts --runInBand --coverage=false","measure:retrieval:baseline":"npm run build && npx ts-node scripts/measure-retrieval-production.ts --write-baseline","measure:retrieval:production":"npm run build && npx ts-node scripts/measure-retrieval-production.ts"},"version":"4.12.0","_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"homepage":"https://github.com/kneelinghorse/reasonbook#readme","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"_resolved":"/tmp/rbook-s110-m06/release/aquex-reasonbook-4.12.0.tgz","overrides":{"uuid":"^11.1.1","protobufjs":"^7.6.5","@istanbuljs/load-nyc-config":{"js-yaml":"^4.1.0"}},"_integrity":"sha512-mdxK3PnVRIOhwCouz7EU4HDTgNNPTmwRT3fJjFDqofZ8YykTEjJjfQvJnH/uEVAmZhS1rnLd0nWfPMpnR219CQ==","repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"_npmVersion":"11.5.1","description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","directories":{"test":"tests"},"lint-staged":{"*.{json,md,yaml,yml}":"prettier --cache --write","{!(*.config),!(rbook)/**/!(*.config)}.{js,ts,mjs}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"]},"maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.2.0","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"referee":["dist/referee/index.d.ts"],"signals":["dist/signals/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.5.2","husky":"^9.1.7","eslint":"^8.57.1","ts-jest":"^29.4.4","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.6.2","lint-staged":"^16.4.0","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@xenova/transformers":"^2.17.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@modelcontextprotocol/client":"^2.3.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"peerDependencies":{"@xenova/transformers":"^2.17.2"},"peerDependenciesMeta":{"@xenova/transformers":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/reasonbook_4.12.0_1793839669735_0.7269442241037625"}}},"time":{"created":"2026-10-12T16:12:26.487Z","modified":"2026-11-05T00:47:50.105Z","0.0.0-stage":"2026-10-12T16:12:26.487Z","4.0.0":"2026-10-12T16:15:05.028Z","4.0.1":"2026-10-13T02:16:20.427Z","4.0.2":"2026-10-15T21:14:21.341Z","4.1.0":"2026-10-18T09:38:54.685Z","4.2.0-rc.2":"2026-10-19T06:07:39.178Z","4.2.0-rc.3":"2026-10-19T17:15:09.971Z","4.2.0":"2026-10-19T19:01:56.023Z","4.2.1":"2026-10-20T15:50:21.549Z","4.3.0":"2026-10-21T01:10:56.830Z","4.4.0":"2026-10-22T03:37:12.374Z","4.5.0":"2026-10-22T17:01:57.239Z","4.5.1":"2026-10-23T23:54:33.972Z","4.6.0":"2026-10-25T15:43:31.890Z","4.6.1":"2026-10-27T14:07:13.094Z","4.7.0":"2026-10-28T13:31:34.175Z","4.7.1":"2026-10-29T13:23:51.574Z","4.8.0":"2026-10-31T00:35:51.031Z","4.9.0":"2026-10-31T18:40:52.295Z","4.10.0":"2026-11-01T19:59:07.843Z","4.11.0":"2026-11-03T15:04:31.889Z","4.12.0":"2026-11-05T00:47:49.914Z"},"bugs":{"url":"https://github.com/kneelinghorse/reasonbook/issues"},"license":"Apache-2.0","homepage":"https://github.com/kneelinghorse/reasonbook#readme","keywords":["mcp","reasonbook","rbook","claude","codex","decisions","agent-hooks","project-records","sqlite","project-management","ai-agents"],"repository":{"url":"git+https://github.com/kneelinghorse/reasonbook.git","type":"git"},"description":"Reasonbook: decisions that survive the session, in a local record AI agents keep.","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"readme":"# Reasonbook — decisions that survive the session\n\n[![npm version](https://img.shields.io/npm/v/@aquex/reasonbook)](https://www.npmjs.com/package/@aquex/reasonbook)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache_2.0-blue.svg)](LICENSE)\n\nReasonbook keeps a local record of your project's decisions, reasons and lessons so the next agent session can pick up where you left off.\nYou make the decisions; agents handle the bookkeeping. No dashboard account is required.\n\n[<img src=\"https://raw.githubusercontent.com/kneelinghorse/reasonbook/main/docs/demo/reasonbook-handoff.gif\" width=\"480\" alt=\"A recorded handoff between Claude Code and Codex\">](https://github.com/kneelinghorse/reasonbook/blob/main/docs/demo/reasonbook-handoff.mp4)\n\nA 65-second replay of recorded runs. [Read the demo's receipts](https://github.com/kneelinghorse/reasonbook/blob/main/docs/demo/README.md)\nand [what Reasonbook sends and stores](docs/trust.md).\n\n## Try it\n\nChoose a plugin below, or install the CLI with npm. [Your first ten minutes](docs/first-ten-minutes.md)\ntakes you from installation to recording a choice and finding its reason in another session.\n\nCommit the generated agent instructions, `rbook/.gitignore` and your project documents; keep the SQLite store, WAL/SHM files and snapshots out of Git.\n\n### Install it in Claude Code\n\nInstall the plugin once for all your projects:\n\n```sh\nclaude plugin marketplace add kneelinghorse/reasonbook\nclaude plugin install reasonbook@reasonbook\n```\n\nStart a new Claude Code session after installation, then ask it to start a Reasonbook Ledger for\nthis project. If the first session says Reasonbook is installing, start another once it finishes.\n\n### Get a project digest in three steps\n\nRequires Node.js 20 or newer.\n\n1. Install the pinned CLI:\n\n   ```sh\n   npm install -g @aquex/reasonbook@4.12.0\n   ```\n\n   Ensure the global npm bin directory is on your PATH. If the former package is installed globally, run `npm uninstall -g @aquex/cmos-mcp` first. Version 4 provides only the `reasonbook` command; update scripts and MCP configurations that use the old command.\n\n2. In the project folder you want to track, start a Ledger:\n\n   ```sh\n   cd /absolute/path/to/your/project\n   reasonbook init --level ledger\n   ```\n\n3. Read its first digest:\n\n   ```sh\n   reasonbook review --format=context\n   ```\n\nThe digest names this project and shows its decisions, lessons and open work. A new\nLedger starts empty. Planner adds next steps; Builder adds sprints and missions.\n\nCommit the generated `AGENTS.md`, `CLAUDE.md`, `rbook/.gitignore` and the project documents you\nmaintain. A new record's ignore file keeps the SQLite store, its WAL/SHM files and snapshots out\nof Git. Init preserves an existing ignore file. Shared records require the store to remain\nuntracked; exchange those records through Reasonbook's sharing commands.\n\nA plugin installation does not put `reasonbook` on your terminal PATH. Plugin-only users can\nreplace `reasonbook` in these commands with `npx --prefer-offline -y @aquex/reasonbook@4.12.0`,\nfor example `npx --prefer-offline -y @aquex/reasonbook@4.12.0 review --format=context`.\n\n## Codex plugins\n\n```sh\ncodex plugin marketplace add kneelinghorse/reasonbook\ncodex plugin add reasonbook@reasonbook\n```\n\nFor chat workflows, use `codex plugin add reasonbook-chat@reasonbook` instead.\nSee [Codex setup and verification limits](docs/harnesses.md#codex).\n\n<a id=\"existing-installations-and-candidate-testing\"></a>\n\n## Upgrading from CMOS\n\nUse `reasonbook doctor` to inspect what needs changing and `reasonbook migrate` to preview a record move.\nFollow the [migration guide](docs/migrating-from-cmos.md) to upgrade clients before moving their records.\n\n## Propose a decision, then approve it\n\nWhen a choice needs your approval, the agent ends its reply with one concrete line:\n\n> Would record: Use a weekly review because it keeps the reading list useful without daily upkeep.\n\nWith the developer hooks enabled and linked to that conversation, the Stop hook keeps this as a\ndraft. Your next reply can approve it, decline it, ask a question or amend the wording. The agent\nrecords an approved draft with its returned `P<n>` id; a draft is not yet a decision. In the same\nlive conversation, an answer more than two hours later can still address an unexpired draft. Late\napprovals record as agent-judged; late declines persist. Constraint, rule and profile drafts need\nto be proposed again for plain approval. Inspect drafts from the project folder with:\n\n```sh\nreasonbook drafts list\n```\n\n`reasonbook-chat` makes a direct record of the choice and reasons you request or approve. It states\nthat you approved it in the conversation without quoting the conversation or using the draft runtime.\nAn explicit approval already given for the exact wording counts, so the agent need not ask again.\n\n## The method\n\n- One project, one record of decisions, lessons, constraints and next steps.\n- Start from that record; supported hooks bring it into the session automatically.\n- Record decisions deliberately, with reasons. Supersede a changed decision.\n- Make expiry and supersession visible; closing a sprint keeps records active by default.\n- Keep the record with the project so it survives a change of tools.\n\n[The method](docs/method.md) gives the five lines in full, what Reasonbook does at each level, and\nhow to move up; the [starter templates](https://github.com/kneelinghorse/reasonbook/tree/main/templates) hold the files each level starts with.\n\n## What leaves your machine\n\nThe record stays in your project's SQLite file. With a stored user-scoped key or legacy\nenvironment credentials, explicit session and sprint closes attempt a background\nupload of the **whole file**, including pending and declined proposals. For a registered project,\nMCP tool writes also schedule an upload after 5 quiet minutes or 30 minutes of continuous writes;\nthe next poll starts it within 60 seconds when no upload lease or failure backoff blocks it.\nTransfer time follows. See the timing and failure details under [Optional: hosted dashboard](#optional-hosted-dashboard).\n`RBOOK_CHECKPOINT_SYNC=off` stops automatic uploads and manual `rbook_db(action=\"backfill\")`\nuploads. Other requested network actions and shared-record exchanges remain available.\nLogging out leaves project keys valid for other requested dashboard calls, but closes and manual\nbackfill also require a stored user-scoped key or environment credentials. Implicit process-exit closes do not upload. A project shared through\nreasonbook.ai keeps uploading its whole file until the share hands its record to the dashboard's\nreferee copy, then sends the shared record's changes until it is moved back. The client also supports a\nmember uploading a scrubbed SQLite copy when reasonbook.ai begins hosted recovery. The owner\nreviews and confirms the recovery plan on the Shared record page. Either `RBOOK_SHARED_SYNC=off` or `RBOOK_DASHBOARD_SHARING=off`\nstops recovery contributions, including during an explicit sync. [Full network and data disclosure](SECURITY.md#outbound-network).\n\n## What it is\n\nReasonbook is the protocol + client. It runs locally on your machine, owns a SQLite database under `rbook/db/rbook.sqlite`, and exposes 15 typed tools over MCP. Claude Code and Codex are verified (see the [harness guide](docs/harnesses.md)); other MCP clients, such as Claude Desktop, Cursor, Zed, VS Code and Windsurf, are untested.\n\nOut of the box you get:\n\n- Sprint and mission state machines with auditable transitions\n- Session capture for decisions, learnings, constraints, next-steps\n- Strategic context that condenses across sprints, with FTS5 retrieval\n- Full-text search across decisions, learnings, missions, sessions\n- Database snapshots on demand; backup attempts around sprint closes; required backups before\n  a restore or a snapshot prune with selected rows\n- Per-project credential store and device-code auth (RFC 8628)\n\nThe dashboard at [reasonbook.ai](https://reasonbook.ai) is **optional**. You can run Reasonbook standalone forever — sign-up unlocks dashboard uploads (SQLite → Postgres mirror), the project registry (`rbook://you/*` addresses), and cross-project messaging. Without it, every other tool still works locally.\n\n## Install\n\nRecommended: a global install of this release. The server then starts from disk, with no registry\nlookup on launch:\n\n```bash\nnpm install -g @aquex/reasonbook@4.12.0\n```\n\nIf the former package is installed globally, run `npm uninstall -g @aquex/cmos-mcp` first. Version 4 provides only the `reasonbook` command; update scripts and MCP configurations that use the old command.\n\nOr run it on demand with `npx`. Pin the version and prefer the local cache: an unpinned `npx -y`\ncan look the package up again on every launch.\n\n```bash\nnpx --prefer-offline -y @aquex/reasonbook@4.12.0\n```\n\nSemantic (vector) search is optional. Without it, retrieval is keyword-only, and the install is\nabout 45 MB instead of about 306 MB. To add a vector term to retrieval, install\n`@xenova/transformers` next to Reasonbook. `rbook_db(action=\"health\")` reports whether it is on.\n\nRequires Node.js 20 or newer.\n\n## Configure your MCP client\n\nClaude Code and Codex are verified; the other blocks follow each client's own MCP configuration\nand are untested with Reasonbook. Each example below runs a pinned version through `npx`, preferring the local cache; to upgrade,\nchange the version. With the global install, use `\"command\": \"reasonbook\"` and drop the `npx`\narguments (keep `--project-root` where an example has it).\n\n### Claude Code\n\n```bash\nclaude mcp add-json rbook '{\"command\":\"npx\",\"args\":[\"--prefer-offline\",\"-y\",\"@aquex/reasonbook@4.12.0\"]}'\n```\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or the equivalent on Windows/Linux:\n\n```json\n{\n  \"mcpServers\": {\n    \"rbook\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"--prefer-offline\",\n        \"-y\",\n        \"@aquex/reasonbook@4.12.0\",\n        \"--project-root\",\n        \"/absolute/path/to/your/project\"\n      ]\n    }\n  }\n}\n```\n\nClaude Desktop is expected to start servers with no project context (on macOS, from `/` with no\nworkspace roots; untested with Reasonbook), so name the project in the config. `--project-root` applies only to this server entry, and only to\ncalls with no project context: no `projectRoot`, no workspace roots, and a working directory of `/`,\nyour home directory or the server's install directory. A client that starts the server from any\nother folder should pass `projectRoot` instead.\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"rbook\": {\n      \"command\": \"npx\",\n      \"args\": [\"--prefer-offline\", \"-y\", \"@aquex/reasonbook@4.12.0\"]\n    }\n  }\n}\n```\n\n### Zed\n\n```json\n{\n  \"context_servers\": {\n    \"rbook\": {\n      \"command\": \"npx\",\n      \"args\": [\"--prefer-offline\", \"-y\", \"@aquex/reasonbook@4.12.0\"]\n    }\n  }\n}\n```\n\n### VS Code (Claude extension)\n\nUse the Claude Code command above from the integrated terminal, or add the server\nthrough `/mcp` in the Claude panel. The extension and CLI share MCP configuration;\nstart a new conversation after changing it. The extension does not add `claude` to\nyour terminal PATH, so the terminal route needs the standalone Claude CLI.\n[Claude Code in VS Code](https://code.claude.com/docs/en/vs-code#connect-to-external-tools-with-mcp)\n\n### Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"rbook\": {\n      \"command\": \"npx\",\n      \"args\": [\"--prefer-offline\", \"-y\", \"@aquex/reasonbook@4.12.0\"]\n    }\n  }\n}\n```\n\n## First call\n\nProject tools work on a folder that has a Reasonbook database, so a new project starts with init:\n\n```\nrbook_project(action=\"init\", projectRoot=\"/absolute/path/to/your/project\")\n```\n\n`init` creates `rbook/db/rbook.sqlite`, the seed files, an `AGENTS.md` and a `CLAUDE.md` that imports it at the project root\n(keeping either file if it already exists). In a folder without that database, the tools that read or write a project\nrefuse and name `init`; registry and sign-in actions need no project.\n\nThen run `rbook_agent_onboard` once: on a new project it walks the first-session setup. Open every\nlater session with the session digest:\n\n```\nRun rbook_review to see the project state.\n```\n\n`rbook_review` returns the shared session digest: project identity, current sprint, open work and recent decisions. Its local text core is capped at 4,000 characters; appended portfolio context and the surrounding MCP response are outside that cap.\n\nThe full walkthrough — install → config → init → first sprint/mission/session loop — lives in [docs/getting-started.md](docs/getting-started.md).\n\n## Tool surface\n\nReasonbook exposes 15 consolidated tools. 12 use an `action` parameter to select the operation; `rbook_agent_onboard`, `rbook_status` and `rbook_review` take no `action`. [TOOL_REFERENCE.md](TOOL_REFERENCE.md) publishes one parameter table per action, so it says which parameters actually apply to a given call.\n\n| Tool                       | Purpose                                                                         |\n| -------------------------- | ------------------------------------------------------------------------------- |\n| `rbook_review`             | Session digest: identity, sprint, work, decisions, other projects' signals      |\n| `rbook_agent_onboard`      | Cold-start payload: identity, active sprint, missions, decisions, suggestions   |\n| `rbook_status`             | Diagnostic snapshot: rbook_address, dashboard_url, auth_tier, sync timestamps   |\n| `rbook_mission`            | Missions — create, update, query, and link dependencies                         |\n| `rbook_mission_transition` | Mission state machine — start, complete, block, unblock, drop, defer, reopen    |\n| `rbook_sprint`             | Sprints — CRUD, closeout, retro, and cross-sprint analytics                     |\n| `rbook_session`            | Work sessions (optional) — start, capture insights, complete, list, search      |\n| `rbook_context`            | Master/project context — view, update, condense, snapshot, and search           |\n| `rbook_decisions`          | Strategic decisions — record, show, list, search, update, staleness review      |\n| `rbook_learnings`          | Cross-cutting learnings — list, search, show, update, and reaffirm              |\n| `rbook_db`                 | Database ops — health, snapshot/restore, backfill, and a context-snapshot prune |\n| `rbook_project`            | Projects — init, register, list, validate; share, invite, join, members, sync   |\n| `rbook_auth`               | Dashboard credential lifecycle — device-code login, rotate, revoke              |\n| `rbook_message`            | Cross-project messaging (requires the hosted dashboard)                         |\n| `rbook_feedback`           | Agent-feedback channel — list, triage, resolve, archive                         |\n\nSee **[TOOL_REFERENCE.md](TOOL_REFERENCE.md)** for the exact per-action parameter reference — it is generated from the tool definitions on every build, so it never drifts from the shipped surface.\n\n## Share a project's record\n\nThe [sharing guide](docs/sharing.md#share-a-projects-record) covers the dashboard, SSH and bundles.\nRead the [trust boundary](docs/trust.md#shared-copies) before sharing a full record with another person.\n\n## Optional: hosted dashboard\n\nSee [connecting the hosted dashboard](docs/sharing.md#optional-connect-the-hosted-dashboard) for sign-in, uploads and their controls.\n\n## Project resolution\n\nReasonbook never acts on a project you did not name. For each tool call it picks one project, in this\norder, and refuses rather than falling back when that project cannot be used:\n\n1. The `projectRoot` parameter on the call: a project folder or an exact registered\n   `rbook://owner/project` address. Address discovery reads stored identities without repairing\n   them; no match, duplicate matches or an unreadable registered identity refuse.\n2. For a supported Codex request, its conversation working folder. An invalid supplied folder\n   refuses instead of falling back to the server's folder.\n3. The workspace roots your MCP client advertises: the first one inside a Reasonbook project.\n4. The working directory, or the nearest folder above it that is a Reasonbook project — one holding\n   `rbook/db/`; a plain folder named `rbook` does not count (the search stops below your home\n   directory).\n5. Only when the server has no project context at all — no `projectRoot`, no roots, and a working\n   directory of `/`, your home directory or the server's install directory (as for a client that starts\n   servers without a project folder): the `--project-root <dir>` argument in that server's config, then a registry default set\n   with `rbook_project(action=\"register\", projectRoot=\"...\", setAsDefault=true)`.\n6. Otherwise the call is refused. In a folder that is not a Reasonbook project, a write names\n   `rbook_project(action=\"init\")` and a read answers \"No Reasonbook project in '<dir>'\".\n\n`rbook_project(action=\"list\")` includes stored ids, addresses and folders. `init`, `register` and\n`unregister` require folders; an address never becomes a filesystem path.\n\nEvery successful response names the project it used (`projectRoot` and `resolvedBy` in its data), and\nsays so in its text whenever the project came from workspace roots, `--project-root` or the registry\ndefault. A registry default set before 3.2.0 is not applied until you re-run `setAsDefault`; the\nserver, `rbook_message(action=\"whoami\")` and `rbook_review` say so when one exists.\n\n## Move work out of a central planning folder\n\nIf you collect several efforts in one Reasonbook project, use `spin-out` when an effort needs its\nown project folder. It copies selected missions, their linked decisions, learnings and next\nsteps, and any additional record IDs you name. The source remains a readable history with\npointers to the new project.\n\nCreate the destination folder first. The source must be registered, and the two stores must\nhave distinct project identities. Both roots are required; this command does not use an ambient\nproject or registry default. Omit `--apply` to preview the selection and mapping:\n\n```sh\nreasonbook spin-out --from /work/projects --to /work/new-product --sprint sprint-12\n\n# Or select missions, with additional decisions, learnings and next steps by ID:\nreasonbook spin-out --from /work/projects --to /work/new-product \\\n  --missions product-plan,product-prototype \\\n  --decisions 41,42 --learnings 17 --next-steps 23,24\n\n# Apply the same reviewed selection:\nreasonbook spin-out --from /work/projects --to /work/new-product \\\n  --missions product-plan,product-prototype \\\n  --decisions 41,42 --learnings 17 --next-steps 23,24 --apply\n```\n\nChoose either `--sprint` or `--missions`. A destination without Reasonbook is reported as needing\ninitialization in the preview; `--apply` initializes it and takes database backups before\ncopying. Copied work retains its status but has no sprint assignment in the destination.\nAssign it to a target sprint when ready. Source Queued, Blocked and Deferred missions become\nDropped; Completed and already Dropped missions retain their status. Source decisions and\nlearnings become archived, and source next steps become dropped. Default lists and retrieval\nomit these transferred source rows. Sprint history retains its counts and identifies transfers\nwith their destination pointers. No sprint closes automatically.\n\nRead a source or copied decision, learning or mission with its existing `show` action and an\nexplicit `projectRoot`; the result includes `spunOutTo` or `spinOutOrigin` and a readable address.\nFor a historical next step, use\n`rbook_context(action=\"next_steps\", nextStepAction=\"list\", nextStepIds=[23], projectRoot=\"/work/projects\")`.\nExplicit IDs include moved or dropped rows; an explicit `nextStepStatus` still filters them.\nThe ordinary next-step list continues to show open work. Target next steps without a sprint\nare flagged idle after 42 days. The CLI does not upload either store immediately: each enters\nthe normal upload schedule after its next successful MCP write, subject to the configured\n[upload controls](#optional-hosted-dashboard).\n\nRetry the exact command after an interruption. A verified completed operation returns unchanged.\nIf source records changed after the target copy committed, final source marking is refused and\nboth stores are preserved for review. If a reserved retry lacks its committed target receipt,\nthe command also refuses: it cannot distinguish a crash before copying from an erased proof of\nan earlier copy. Preserve **both roots and the operation ID** named in the remedy, inspect their\nledgers and pre-write snapshots, and resolve or restore the conflicting state before retrying.\nDo not delete a reservation to force another copy; retries never silently overwrite copied work.\n\n## Environment variables\n\n```bash\n# Optional — connects to the hosted dashboard. Defaults to https://reasonbook.ai\n# when unset; treat empty string as unset.\nRBOOK_DASHBOARD_URL=https://reasonbook.ai\n\n# Optional — the directory the server reads its own .env from. It does NOT select a project:\n# use the projectRoot parameter, or --project-root in a server's config.\nRBOOK_PROJECT_ROOT=/path/to/your/project\n\n# Optional — override the credential + registry directory. Default: ~/.config/rbook\nRBOOK_CONFIG_DIR=/custom/path\n\n# Snapshot retention (default shown)\nRBOOK_MAX_SNAPSHOTS=50\n\n# Optional — disable timed uploads, explicit-close uploads and manual backfill for this server.\n# Shared-record exchanges and other requested network actions remain available.\nRBOOK_CHECKPOINT_SYNC=off\n\n# Optional — disable shared-record exchanges started by hooks and the server timer.\n# Explicit reasonbook sync and bundle commands remain available; recovery contributions stop.\nRBOOK_SHARED_SYNC=off\n\n# Optional — turn off starting a share or a join through reasonbook.ai on this machine\n# (off, false, 0 or no, in any case). On by default; a project already shared through the\n# dashboard syncs either way. Hosted recovery contributions are also stopped by this switch.\nRBOOK_DASHBOARD_SHARING=off\n```\n\n## Error response shape\n\nEvery tool returns a uniform envelope:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSION_NOT_FOUND\",\n    \"message\": \"Mission 's99-m01' not found\",\n    \"suggestion\": \"Use rbook_mission(action=\\\"list\\\") to see available missions\"\n  }\n}\n```\n\n`code` is machine-readable, `message` is human-readable, `suggestion` is a concrete next step. Validation errors carry `validValues` (a `string[]`). State errors can carry `currentState`: generally a status string when the relevant mission, session, or sprint state is available, and — on `SESSION_ALREADY_ACTIVE` only — an object `{ id, type, title, startedAt, captureCount }`. Branch on `code` before reading it.\n\n## Safety\n\n- **Append-only audit.** Session events and mission transitions are append-only rows. Context snapshots keep their rows, ids and events, but `rbook_db(action=\"prune_snapshots\")` can empty the content of copies Reasonbook wrote on its own.\n- **Atomic credential writes.** `credentials.json` is written via temp-file + rename with 0600 permissions.\n- **Database snapshots.** `rbook_db(action=\"snapshot\")` copies the database on demand. A `rbook_sprint(action=\"complete\")` attempts a snapshot before and after the close; a snapshot failure warns without blocking completion. Applying `rbook_db(action=\"prune_snapshots\")` to a nonempty selection requires a backup, and `rbook_db(action=\"restore\")` first copies the live database to `rbook/db/snapshots/pre-restore/`. `RBOOK_MAX_SNAPSHOTS` caps how many are kept: taking one deletes the oldest beyond it, automatic ones included. Nothing else snapshots first, and there is no soft-delete net — `rbook_db(action=\"purge\")` deletes this project's data from the dashboard mirror, and is refused while a project is shared through reasonbook.ai. See [SECURITY.md](SECURITY.md#backups--deletion--the-honest-reality).\n- **Dry-run where it exists.** `rbook_context(action=\"condense\")` accepts `dryRun` to preview without committing. It is not a general property of mutating tools. Backfill's old event-replay dry run is retired and refuses with `LEGACY_SYNC_RETIRED`.\n\n## Known limits\n\n- Shared records switch to protocol 2 only after every active copy reports support; `rbook_review` names blocking copies. Before the switch, id claims use their existing clock order. Afterwards, the first counted acceptance fixes a claim's position, pre-switch claims outrank later ones, and an accepted id is final once the copy holds every earlier-positioned claim's data. A predictable id can still be claimed first; recovery judges previously unjudged transactions in clock order. A gone copy must be set aside to stop blocking the switch. On reasonbook.ai, the owner uses **Set aside this copy** on the Shared record page.\n- After a protocol-2 switch, older readers receive each stream only before the whole transaction containing its first protocol-2 change. Joins, successors and planned moves to old or unreported readers refuse. **Downgrading can rename ids locally:** the old copy still sends its own writes but receives nothing past that boundary; an old authority holds members' protocol-2 writes. Upgrade every copy before continuing shared work. Recovery keeps the switch only when it is in the adopted authority prefix.\n- Registered projects with dashboard credentials upload snapshots after writes and explicit closes while a server is running; manual `rbook_db(action=\"backfill\")` requests a whole-file upload immediately. Shared-record exchanges use their own hooks, timer and `RBOOK_SHARED_SYNC` control.\n- SQLite is the source of truth; the dashboard holds the owner's uploaded mirror. Shared copies exchange their record with `reasonbook sync`, through reasonbook.ai, over SSH or by bundle.\n- Through reasonbook.ai, moving a project back was measured with one member and automatic syncs off: the owner's copy caught the member's copy up over SSH before that copy had synced with the dashboard since the move. With automatic syncs on, the member's copy may well sync first. Not measured: a member's copy that syncs with the dashboard first, whose sync then says to sync with the owner's copy over SSH or with a bundle, and a member's copy the owner's machine cannot reach over SSH. The dashboard's activity feed shows 50 entries a page by default and at most 100, and its decisions page 20 decisions a page; older entries are on later pages.\n- A project shared through reasonbook.ai changes through its members' agents; the dashboard's pages show the record. Hosted recovery collects surviving copies after a call discovers a lost or behind referee, and the owner reviews and confirms its plan. A same-record re-share after a move back retains member/account bindings, including removed members; members admitted only through direct sharing afterwards are refused. Every member keeps their local copy. [Privacy](docs/privacy.md#sharing-through-reasonbookai) describes the deployed membership reconciliation and its valid-census requirement.\n- A share through reasonbook.ai names and refuses over the owner's other copies that wrote, exchanged successfully or retain an SSH route, including an observed or routed former owner copy. Dashboard-route rows, cut copies and this folder's former identities do not count. On the direct authority copy, `reasonbook set-aside --replica <id>` previews one gone copy's held cutoff and last exchange; add `--yes` to record it. The person's other copies remain members. Role changes, removal and re-admission preserve the cut; later writes stay quarantined for the person to redo, and recovery does not wait for that copy. On a hosted project, the owner uses **Set aside this copy** on the Shared record page, with **This copy is gone** confirmation for a copy that called in the last seven days. This control is unavailable during recovery or a move back. Local administration is refused while the dashboard referees.\n- A record with a set-aside requires a reported library version of 4.5.0 or later at the target of a planned handover or dashboard share. Unknown reports refuse too; a share checks before uploading. **A `reasonbook recover` run by a pre-4.5.0 binary can undo a set-aside.** Upgrade recovery copies before using them. The old `rbook_db(action=\"clone\")` and `rbook_db(action=\"pull\")` actions refuse with `LEGACY_SYNC_RETIRED`; their action values remain until 5.0.0.\n\n## Documentation\n\n- [Documentation home](docs/README.md) — what it is, how to install it, the levels and where to read more.\n- [The handoff demo](https://github.com/kneelinghorse/reasonbook/blob/main/docs/demo/README.md) — a 65-second replay of recorded runs, with a transcript.\n- [Trust](docs/trust.md) — what leaves your machine, what the hooks read, and how to turn each part off.\n- [Privacy](docs/privacy.md) — collection, dashboard visibility, retention and removal.\n- [The method](docs/method.md) — the five lines, the three levels and how to move up.\n- [Getting started](docs/getting-started.md) — client configuration and an optional Builder walkthrough.\n- [Sharing and the hosted dashboard](docs/sharing.md) — sharing routes, sign-in and upload controls.\n- [Harness coverage](docs/harnesses.md) — native adapters, MCP prompts and the fallback without hooks.\n- [Tool reference](TOOL_REFERENCE.md) — every tool, action, and parameter (generated from the tool definitions).\n- [Changelog](CHANGELOG.md) — release notes and tool-surface changes.\n\n## Development\n\nFor candidate testing, replace `kneelinghorse/reasonbook` with this checkout's absolute\npath. Start a new Claude Code session after installation. The plugin supplies the\nMCP server, hooks and commands; its first cold session may report that Reasonbook is\ninstalling and load the record from the next session. Use `/reasonbook:init` for a new\nrecord, `/reasonbook:start` to read it, `/reasonbook:close-out` to finish work, `/reasonbook:plan` to plan,\nand `/reasonbook:build` to execute. [Plugin installation](https://code.claude.com/docs/en/discover-plugins).\nOther tools use the [harness adapters and coverage guide](docs/harnesses.md).\n\n```bash\ngit clone https://github.com/kneelinghorse/reasonbook\ncd reasonbook\nnpm install\nnpm run build\nnpm test\n```\n\nDevelopment needs Node.js 20.17 or newer (lint-staged 16.4); the published package runs on Node.js\n20 or newer.\n\nPre-commit hooks run lint + format via husky/lint-staged. This public repository is a code mirror;\nrelease validation and npm publishing run from the private source.\n\n## License\n\nApache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).\n","readmeFilename":"README.md"}