{"_id":"@aquex/cmos-mcp","_rev":"16-e5a922d1b74c0bd25d35b1cd4874bd92","name":"@aquex/cmos-mcp","dist-tags":{"latest":"3.1.0"},"versions":{"1.0.0":{"name":"@aquex/cmos-mcp","version":"1.0.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"ISC","_id":"@aquex/cmos-mcp@1.0.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js","cmos-mcp-http":"dist/http-server.js"},"dist":{"shasum":"2e76333bf4a1ad787a8916e7207201293cc91600","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-1.0.0.tgz","fileCount":854,"integrity":"sha512-DlasZEqZzDyduBODzPEH4mHDc9fm3wLWK02DkejJfay625gtLYXHD7dNakyLKUEFiJSoGli+ZlcNyXtrFWc/iA==","signatures":[{"sig":"MEYCIQDORLITafO3z6v7O0OBpMHUkxTm7PnXu+cOBYybrEVUggIhALn0GeLDbPzlX40US7roqL65Mo2S2U5F2PAZNjXh81gh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5026725},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./http-server":{"types":"./dist/http-server.d.ts","default":"./dist/http-server.js","require":"./dist/http-server.js"},"./package.json":"./package.json"},"gitHead":"826f5429768a2c3a6542073c39070226ca006209","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.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}\" --fix","outcomes":"npx ts-node scripts/collect-mission-outcomes.ts","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","start:http":"node dist/http-server.js","test:watch":"jest --watch","lint:staged":"lint-staged","format:check":"prettier --check .","test:coverage":"jest --coverage","prepublishOnly":"npm run build","prune:registry":"npx ts-node scripts/prune-project-registry.ts","validate:packs":"npx ts-node scripts/validate-packs.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"jest --coverage=false tests/import-export/performance.test.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"11.5.1","description":"MCP server for CMOS (Context, Missions, Operations, Sessions) - typed, safe, reliable SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"24.6.0","dependencies":{"zod":"^3.25.76","yaml":"^2.8.1","gpt-tokenizer":"^3.2.0","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_1.0.0_1778210360149_0.9612719530345524","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aquex/cmos-mcp","version":"1.0.1","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"ISC","_id":"@aquex/cmos-mcp@1.0.1","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js","cmos-mcp-http":"dist/http-server.js"},"dist":{"shasum":"78ba8590c969a1e1202e96a9a33e85907140296f","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-1.0.1.tgz","fileCount":854,"integrity":"sha512-2vfespp74QR30yknBAngrZ4U/ci4cXDyzf6YEcjvqJ8rGSzzp3AvZlQuzQ13AvKweRn2mLV2H32Aefia7gVjFQ==","signatures":[{"sig":"MEUCIQDM+DNp0+O7fFOaozN85HG3E18xwWGdYSli5KnnYm+MSgIgCAcjzRSq4mGep8vUhkHyceE3JSYz00IzB3Z9dpASve8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5031938},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./http-server":{"types":"./dist/http-server.d.ts","default":"./dist/http-server.js","require":"./dist/http-server.js"},"./package.json":"./package.json"},"gitHead":"53b537058c3e1a231b8c0387fab2d0135dc881bd","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.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}\" --fix","outcomes":"npx ts-node scripts/collect-mission-outcomes.ts","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","start:http":"node dist/http-server.js","test:watch":"jest --watch","lint:staged":"lint-staged","format:check":"prettier --check .","test:coverage":"jest --coverage","prepublishOnly":"npm run build","prune:registry":"npx ts-node scripts/prune-project-registry.ts","validate:packs":"npx ts-node scripts/validate-packs.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"jest --coverage=false tests/import-export/performance.test.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"11.5.1","description":"MCP server for CMOS (Context, Missions, Operations, Sessions) - typed, safe, reliable SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"24.6.0","dependencies":{"zod":"^3.25.76","yaml":"^2.8.1","gpt-tokenizer":"^3.2.0","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_1.0.1_1778961652401_0.24558096846510336","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aquex/cmos-mcp","version":"1.1.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@1.1.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js","cmos-mcp-http":"dist/http-server.js"},"dist":{"shasum":"3d298197489e2b0de2de68e76ab47854f4c9893b","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-1.1.0.tgz","fileCount":827,"integrity":"sha512-hrLISfdNEdfBMdNVujU4LfAeuNIFHblG4KezGsJiinxFi90J6mmDewqqjno3WS4Vwoczq4tNcK90qFy+3Brmng==","signatures":[{"sig":"MEUCIEJ0cJV3MzWyP/KOYpbEKv/YZnVetpGO3GpQfnuOaqL+AiEAzg74nIOlDVTsZ6sY4an6l1EC0wyRixikcWG6mDW3SbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5181781},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./http-server":{"types":"./dist/http-server.d.ts","default":"./dist/http-server.js","require":"./dist/http-server.js"},"./package.json":"./package.json"},"gitHead":"34220980dd5abd818af02e70a8e337f6ecbac4c1","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.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}\" --fix","outcomes":"npx ts-node scripts/collect-mission-outcomes.ts","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","start:http":"node dist/http-server.js","test:watch":"jest --watch","lint:staged":"lint-staged","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","validate:packs":"npx ts-node scripts/validate-packs.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"jest --coverage=false tests/import-export/performance.test.ts","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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:production":"npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","gpt-tokenizer":"^3.2.0","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_1.1.0_1780947726217_0.17171968516914915","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aquex/cmos-mcp","version":"1.1.1","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@1.1.1","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js","cmos-mcp-http":"dist/http-server.js"},"dist":{"shasum":"b6b82351c2844e40ecb2dd64c99f4e87f449512a","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-1.1.1.tgz","fileCount":827,"integrity":"sha512-8rDnxMltzqoHCyP016i5GAN/CxY2VcRqJQWSF9cjqxYvd9HJiA6ZRorSfIF8jGNTm15BI7gbrQWUbcGE9B4r9A==","signatures":[{"sig":"MEUCIQDyrVBTG7K93AB1sAPKira5btKV12iAimpHTbGl0/P+cQIgW5QdxJQhUA0aZsq0huOtV8Z7iGEPg6/Y0sqNR6Gr48M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5203861},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./http-server":{"types":"./dist/http-server.d.ts","default":"./dist/http-server.js","require":"./dist/http-server.js"},"./package.json":"./package.json"},"gitHead":"b2f81b5f22e7103dd548293f5ffc522dd7024813","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","test":"jest","build":"tsc && node scripts/generate-build-manifest.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}\" --fix","outcomes":"npx ts-node scripts/collect-mission-outcomes.ts","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","start:http":"node dist/http-server.js","test:watch":"jest --watch","lint:staged":"lint-staged","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","validate:packs":"npx ts-node scripts/validate-packs.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"jest --coverage=false tests/import-export/performance.test.ts","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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:production":"npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","gpt-tokenizer":"^3.2.0","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_1.1.1_1783485912628_0.45883703668642495","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aquex/cmos-mcp","version":"2.0.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.0.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"dace2d53c0deb6f3221d29d891118b6db3b4dade","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.0.0.tgz","fileCount":578,"integrity":"sha512-rWKTFEuZZkAT8bhnTWOA1yuGJON7bAnOjDcDeG7JDndD4mS/0fDBtLSMT6KMZfmrXT5lQoN+F9BYk+dyIeRO5g==","signatures":[{"sig":"MEYCIQCTisSlsO2dEBkjc4XxjmL/LC8qh1zO2SUp2+sayi4mKwIhAPaltwMX+wzqupPxDNNvipnLH44qAp6W5jq0qOvQxg9b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3918471},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b7b418ff18d88ab9faa8b7d97a9a52455e6f0121","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --fix","snapshots":"jest --runTestsByPath tests/tools/tool-definitions.test.ts --coverage=false","test:watch":"jest --watch","lint:staged":"lint-staged","format:check":"prettier --check .","test:coverage":"jest --coverage","prune:registry":"npx ts-node scripts/prune-project-registry.ts","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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:production":"npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.0.0_1783571531420_0.915610257116388","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@aquex/cmos-mcp","version":"2.1.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.1.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"b7af09cc2e08ce41b783dbf062e26ba448da7c4c","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.1.0.tgz","fileCount":582,"integrity":"sha512-mzqSGznJ+pR3pui9JRREsHT/0eS0kFiFis4+uc/3XrUq+Kfr843id34vKEWunGaKMQimqM8Z3loL7hyva8FaOw==","signatures":[{"sig":"MEUCIQDjCn4g62OluS5pAEWMf2yp3Rp7MKUrtdOe9XPXluOjLgIgET76unQZIYWkD2SE5jv4koAAal3ZKTv5pB182jXWonY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3969566},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"70811870252e637b92e76c0710cf3bab589c999b","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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:production":"npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.1.0_1783620131249_0.05507116965721792","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@aquex/cmos-mcp","version":"2.2.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.2.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"4c21517910ef44e2b8b6a092190cca361813033c","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.2.0.tgz","fileCount":582,"integrity":"sha512-w+DtO/QFoVs6pCnQzv8Euxfq9AU8+3LvO3zaT0hrYb1/wlUs5wEO62BcIbUR9u09vTP5gBUTk44lAeBB4xCVVg==","signatures":[{"sig":"MEUCIQD82/zfvU5JoTXgBBYkVnmisFYsVVkVKeTKKTriRtXuGgIgF8BzmSXSNRisi58V08VDYrqyv9x0oKrgj1P3O6hRQMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4006351},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c644f75c432b6ab95dd3a84c0a055c50c13d7ea3","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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:production":"npx ts-node scripts/measure-retrieval-production.ts"},"_npmUser":{"name":"kneelinghorse","email":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.2.0_1783657921895_0.5094895463470157","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@aquex/cmos-mcp","version":"2.3.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.3.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"ed0c7d6079c34f970030ebb93c92e822eb542359","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.3.0.tgz","fileCount":582,"integrity":"sha512-1Z7fpM7pvIetLsFRikEQmI2I4520rsRnmzaYQmkIttsif+FJ5ZIVNKcGKm8zqk1t7TTmbF0kYU5k1gt+M4RW8Q==","signatures":[{"sig":"MEUCIQChwjK1D6H819nGbMgwPUNlCO3pCZ2+dRRUbdWfIG0kzAIgdIky2Ua+l3OKoQvpWyrLF0DyKYl+O0sc+Pp95DSceqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4067493},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"87e103d64ab87060ddb9fbd6cb28f40eaeb6bd4a","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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","cleanup:credkeys":"npx ts-node scripts/cleanup-stale-credkeys.ts","detect:corrupted":"npx ts-node scripts/detect-corrupted-decisions.ts","test:performance":"RUN_PERF_ASSERTS=1 jest --coverage=false tests/tools/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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","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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.3.0_1783806653095_0.29154174549970424","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@aquex/cmos-mcp","version":"2.4.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.4.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"a713d8b4be440bc3f2af1ca55c36b89576b517db","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.4.0.tgz","fileCount":586,"integrity":"sha512-fcqsrNCPowGmFVp/Fvb8e0k4Wyxv8BjnZKD+mGlL6AUVxfY9Z2OLWha6R4PpU+2Fapo2xWtoiYGJMxoPGLS7Kg==","signatures":[{"sig":"MEQCIEJQgsUJ2I12ALsi/Z0tpgsUw3prpKUqdxLaBGq9CgFtAiA5CI31WXHesbO8KcqMOaMA+3LJD7uBZA+yJQYhJGrr7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4164230},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"09e8ae97070fd98c104820414fc316eea24f47b9","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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","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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.4.0_1786386145285_0.11890649896450078","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@aquex/cmos-mcp","version":"2.5.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.5.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"8f709dd3fd662d6af900e6d8d502de3433eba027","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.5.0.tgz","fileCount":590,"integrity":"sha512-gGD/sJTYcJJ7pd06b4JA0f4RCZxnZRpiaeQULnMFiydx9/qRJtwYyuwoiJ8dhBEivI48nSk8Uj1+I6aVb5sI1A==","signatures":[{"sig":"MEUCIQCX71Mx59NMIb7ll2qfzQAZ1rs/pOAz5o8P6UsWP8D3xAIgDl2tJIYqBxIEBYXB5XQye3pg1cKtkuZnkSe0q+5tipc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4208590},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"84bc051bdc82261704b899ac80ebb6bef3a43a8b","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","test:e2e-firstrun":"jest --config jest.e2e.config.js --runInBand","backfill:embeddings":"npx ts-node scripts/backfill-embeddings.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","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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.5.0_1786403220969_0.9066281022749001","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@aquex/cmos-mcp","version":"2.6.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.6.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"e91b645db663412835c4ddfd88258e46cbedf2d1","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.6.0.tgz","fileCount":610,"integrity":"sha512-/LBx3iSVljx3e3/GBPPXH/lB5JRE3hH60EyD6Yd15nUgocMmic6SFBAaGt1XgsEt2HiXzkviHBwxV+/VPaw4UQ==","signatures":[{"sig":"MEQCIGnqG7kbGjWMIz03T9p3oQl6Ynyi1W7YLgvB83OOuageAiAyM1e+DHdCa2C9i6V2TVEtUrYliqf1tEvms3v7gzo7DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4565552},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"df528e05cf6bf896364da8296f6755c8015cd644","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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","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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.6.0_1786563207144_0.6846570970623038","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@aquex/cmos-mcp","version":"2.7.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.7.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"e867ed49671ca259e7aac5e5ea8c04fd6324fad3","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.7.0.tgz","fileCount":610,"integrity":"sha512-G9Pg7dTlF5eKL7nG9/4H6RGX4Am174u0LnAJPZWwVNAJxk5pIZsjfMXxzoAnZdWxfNHML4UWuGc6LXseXCUdFg==","signatures":[{"sig":"MEQCIC7W4NXXK8BdbgYjeFblgG4kIqQeShgFgc2PHnhhiZPOAiA1+Ea13RsVYRocRBJGR8sNB23fzHZqFIY0ohe4PAA8+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4681846},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6d18483b017586cb5f6a18e57498268915b34ba7","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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","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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.7.0_1787903905373_0.5281880003126038","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@aquex/cmos-mcp","version":"2.8.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.8.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"d783268c9f3c783ac1f1c54b8f359fdc03d412e1","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.8.0.tgz","fileCount":622,"integrity":"sha512-UtVRhj1/eWrqWLdXfOB3z+Dz2kK2dQgzNcG6DyrgZcHWcHvsSLTk9I57qN7Seejak+5Bb7jneyJQjNXleklj8w==","signatures":[{"sig":"MEQCIFQiYRX0G/VK58OJnQ8sbhKAaZrMkuljLZn8ykmCBAzzAiAVFulYQb8+/D30PH6uElto5F5F+YtXRonwr/XLyEz3kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4805576},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4278f2211e462ce64df72272fcd6e002ab7f8fde","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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: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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.8.0_1787986924172_0.045825943605399155","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"@aquex/cmos-mcp","version":"2.8.1","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@2.8.1","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"517d8a094d8deab8bfe88964e76fb17a39d35967","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-2.8.1.tgz","fileCount":626,"integrity":"sha512-0Ey4E09atbPdq4Ve8CxY4lreMXrxK8LiQJAECKQHeB+gRYbXDORilAeBfzkguaJN4CM/IZq/UfMzx+sNL7SL0A==","signatures":[{"sig":"MEUCIQCOg/oXs1S4UInOGpyngsrGCjP4zE/tCOGrivuMtxllXQIgAPNrXBZ6r1v1YG5W9Vmor2oAX1uKTVugHY3zMLmoTnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4848840},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0d63a7c445d453773b8b70b6872bb1bb9197c8b8","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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: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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_2.8.1_1788068468293_0.900606373187876","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@aquex/cmos-mcp","version":"3.0.0","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"author":"","license":"Apache-2.0","_id":"@aquex/cmos-mcp@3.0.0","maintainers":[{"name":"kneelinghorse","email":"derek@deniedart.com"}],"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"bin":{"cmos-mcp":"dist/index.js"},"dist":{"shasum":"25c4503fab3573bb1e5050a8a4ab33e1daf901b7","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-3.0.0.tgz","fileCount":626,"integrity":"sha512-suBufmJj6ub0tTwiUV9hbHhnLdVqVaRinRVkw9rQKX4uK0IzWXjSx9pmtRnvL0kTmo1H5YuXEPM+2zVC2tWcMA==","signatures":[{"sig":"MEYCIQDmEx2MvLZpOp0VpaCYUvUDnltCTFixmXQKV8yNXQzlyAIhAOMNfYYnUxAmgVl/gAYDDgtlfvezvCkhxYiER7jJ9xhH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4874124},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"627fdcd1fea0ae22ff1d515c80f536d63ab20a43","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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: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":"derek@deniedart.com"},"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/cmos-mcp_3.0.0_1788322485802_0.9719372926970222","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"_id":"@aquex/cmos-mcp@3.1.0","bin":{"cmos-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"dist":{"shasum":"49c2806b2be2365dbeb3a49e05367479c4bfc74f","tarball":"https://registry.npmjs.org/@aquex/cmos-mcp/-/cmos-mcp-3.1.0.tgz","fileCount":646,"integrity":"sha512-FJzRl/UCsOlTMr4mVM303ZABLJPyimBCFwEidXVXGT7CPRtrzKbaxoSwAihksDsGlZI0YrFyHb0zs5/U8uL2uw==","signatures":[{"sig":"MEUCIQDf/tTh0q0KgnblBK2+RPGNQJ5ZlDvhUxCSIrJpW9nVLgIgX9rtYUuuB8DE37wgBoeIabvp0EjB3KMmfjrWMWdCx0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHCBmAorTazI2ZyWs7ASweZovYLGPXkr0s5yAxvPIaUdAiEAnw3uxGrAX8vqfm8IEvXf0FN15sisbBi1pbPlS5hbdQI="}],"unpackedSize":4979624},"main":"dist/index.js","name":"@aquex/cmos-mcp","type":"commonjs","types":"dist/index.d.ts","author":"","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6f0578e3e590c9edae5cf5231cbc4bb2251eaae0","license":"Apache-2.0","scripts":{"lint":"eslint \"src/**/*.{ts,js}\" \"tests/**/*.ts\" \"scripts/**/*.{ts,js}\"","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}\" --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/cmos/e2e-lifecycle.test.ts","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: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":"3.1.0","_npmUser":{"name":"kneelinghorse","email":"derekn@shout.net"},"homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"overrides":{"protobufjs":"^7.6.5"},"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","directories":{"test":"tests"},"lint-staged":{"!(*.config).{js,ts}":["eslint --cache --fix --max-warnings=0","prettier --cache --write"],"*.{json,md,yaml,yml}":"prettier --cache --write"},"maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","ulid":"^3.0.2","yaml":"^2.8.1","sqlite-vec":"^0.1.9","better-sqlite3":"^12.6.0","fast-xml-parser":"^5.3.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","jest":"^30.2.0","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.2.7","jest-cucumber":"^4.5.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cmos-mcp_3.1.0_1789741751946_0.20030827834057496"}}},"time":{"created":"2026-05-08T03:19:20.063Z","modified":"2026-09-18T14:29:12.230Z","1.0.0":"2026-05-08T03:19:20.349Z","1.0.1":"2026-05-16T20:00:52.653Z","1.1.0":"2026-06-08T19:42:06.386Z","1.1.1":"2026-07-08T04:45:12.869Z","2.0.0":"2026-07-09T04:32:11.615Z","2.1.0":"2026-07-09T18:02:11.427Z","2.2.0":"2026-07-10T04:32:02.117Z","2.3.0":"2026-07-11T21:50:53.314Z","2.4.0":"2026-08-10T18:22:25.480Z","2.5.0":"2026-08-10T23:07:01.170Z","2.6.0":"2026-08-12T19:33:27.333Z","2.7.0":"2026-08-28T07:58:25.589Z","2.8.0":"2026-08-29T07:02:04.363Z","2.8.1":"2026-08-30T05:41:08.509Z","3.0.0":"2026-09-02T04:14:46.035Z","3.1.0":"2026-09-18T14:29:12.055Z"},"bugs":{"url":"https://github.com/kneelinghorse/cmos-mcp/issues"},"license":"Apache-2.0","homepage":"https://github.com/kneelinghorse/cmos-mcp#readme","keywords":["mcp","cmos","claude","sqlite","project-management","ai-agents"],"repository":{"url":"git+https://github.com/kneelinghorse/cmos-mcp.git","type":"git"},"description":"MCP server for CMOS — typed, safe, SQLite-backed project management for AI agents","maintainers":[{"name":"kneelinghorse","email":"derekn@shout.net"}],"readme":"# cmos-mcp\n\n[![npm version](https://img.shields.io/npm/v/@aquex/cmos-mcp)](https://www.npmjs.com/package/@aquex/cmos-mcp)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache_2.0-blue.svg)](LICENSE)\n\nA local-first Model Context Protocol server for CMOS — Context, Missions, Operations, Sessions. Gives AI agents typed, SQLite-backed project operations without fragile CLI parsing.\n\n## What it is\n\ncmos-mcp is the protocol + client. It runs locally on your machine, owns a SQLite database under `cmos/db/cmos.sqlite`, and exposes 15 typed tools to any MCP-capable agent (Claude Code, Claude Desktop, Cursor, Zed, VS Code, Windsurf).\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- Snapshot-backed safety on destructive operations\n- Per-project credential store and device-code auth (RFC 8628)\n\nThe dashboard at [cmos.aquex.ai](https://cmos.aquex.ai) is **optional**. You can run cmos-mcp standalone forever — sign-up unlocks sync (SQLite ↔ Postgres mirror), the project registry (`cmos://you/*` addresses), and cross-project messaging. Without it, every other tool still works locally.\n\n## Install\n\n```bash\nnpm install -g @aquex/cmos-mcp\n```\n\nOr run on demand without a global install:\n\n```bash\nnpx -y @aquex/cmos-mcp\n```\n\nRequires Node.js 18+.\n\n## Configure your MCP client\n\n### Claude Code\n\n```bash\nclaude mcp add-json cmos-mcp '{\"command\":\"npx\",\"args\":[\"-y\",\"@aquex/cmos-mcp\"]}'\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    \"cmos-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aquex/cmos-mcp\"]\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"cmos-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aquex/cmos-mcp\"]\n    }\n  }\n}\n```\n\n### Zed\n\n```json\n{\n  \"context_servers\": {\n    \"cmos-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aquex/cmos-mcp\"]\n    }\n  }\n}\n```\n\n### VS Code (Claude extension)\n\n```json\n{\n  \"mcp.servers\": {\n    \"cmos-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aquex/cmos-mcp\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"cmos-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aquex/cmos-mcp\"]\n    }\n  }\n}\n```\n\n## First call\n\nIn your MCP client, open the project with the session digest:\n\n```\nRun cmos_review to see the project state.\n```\n\n`cmos_review` returns a ≤4 KB digest — project identity, current sprint, work queue, recent decisions, freshness, and the top next actions — in one call. (For a brand-new project's cold start, or to carry the operational tier, use `cmos_agent_onboard`; it surfaces the fresh-project pathway when there's no database yet.)\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\ncmos-mcp exposes 15 consolidated tools. 12 use an `action` parameter to select the operation; `cmos_agent_onboard`, `cmos_status` and `cmos_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| `cmos_review`             | ≤4 KB session-opener digest: identity, current sprint, work queue, decisions  |\n| `cmos_agent_onboard`      | Cold-start payload: identity, active sprint, missions, decisions, suggestions |\n| `cmos_status`             | Diagnostic snapshot: cmos_address, dashboard_url, auth_tier, sync timestamps  |\n| `cmos_mission`            | Missions — create, update, query, and link dependencies                       |\n| `cmos_mission_transition` | Mission state machine — start, complete, block, unblock, drop, defer          |\n| `cmos_sprint`             | Sprints — CRUD, closeout, retro, and cross-sprint analytics                   |\n| `cmos_session`            | Work sessions — start, capture insights, complete, list, and search           |\n| `cmos_context`            | Master/project context — view, update, condense, snapshot, and search         |\n| `cmos_decisions`          | Strategic decisions — list, full-text search, update, and staleness review    |\n| `cmos_learnings`          | Cross-cutting learnings — list, search, update, and reaffirm                  |\n| `cmos_db`                 | Database ops — health, snapshot/restore, and sync (backfill, reconcile, pull) |\n| `cmos_project`            | Project registry — init, register, list, validate                             |\n| `cmos_auth`               | Dashboard credential lifecycle — device-code login, rotate, revoke            |\n| `cmos_message`            | Cross-project messaging (requires the hosted dashboard)                       |\n| `cmos_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## Optional: hosted dashboard\n\nThe dashboard is a separate service. Sign up at [cmos.aquex.ai](https://cmos.aquex.ai) to unlock:\n\n- **Sync** — your local SQLite mirrors to a Postgres replica; survives machine swaps and IDE reinstalls.\n- **Project registry** — addressable `cmos://you/project-name` URIs across machines.\n- **Messaging** — `cmos_message(action=\"send\")` to your own projects (free) or, on the paid tier, to other users.\n\nTo connect:\n\n```bash\nexport CMOS_DASHBOARD_URL=https://cmos.aquex.ai\n```\n\nThen run `cmos_auth(action=\"login_init\")` from your agent. It returns a one-time `userCode` and `verificationUri` — paste the code at the URL in your browser, then run `cmos_auth(action=\"login_complete\", deviceCode=...)` to finish. Credentials persist atomically to `~/.config/cmos-mcp/credentials.json` (mode 0600).\n\nIf `CMOS_DASHBOARD_URL` is unset or unreachable, the dashboard-relay tools (`cmos_message`, sync, registry) return a structured `DASHBOARD_NOT_CONFIGURED` or `DASHBOARD_UPGRADE_REQUIRED` error pointing at the sign-up URL. Local tools never depend on the dashboard.\n\n## Project resolution\n\nWhen an MCP tool is called, cmos-mcp resolves the target project root in this order:\n\n1. Explicit `projectRoot` parameter on the tool call (highest trust).\n2. `CMOS_PROJECT_ROOT` environment variable (CI/CD).\n3. Auto-discovery from the current working directory (looks for `cmos/db/cmos.sqlite`).\n4. Default project from the registry at `~/.config/cmos-mcp/project-registry.json`.\n5. Structured error pointing at `cmos_project(action=\"register\")`.\n\nThis is what makes Claude Code \"just work\" from a workspace, while Claude Desktop (no CWD context) needs an explicit `cmos_project(action=\"register\", setAsDefault=true)` once.\n\n## Environment variables\n\n```bash\n# Optional — connects to the hosted dashboard. Defaults to https://cmos.aquex.ai\n# when unset; treat empty string as unset.\nCMOS_DASHBOARD_URL=https://cmos.aquex.ai\n\n# Optional — explicit project root (CI/CD). Otherwise auto-discovered.\nCMOS_PROJECT_ROOT=/path/to/your/project\n\n# Optional — override the credential + registry directory. Default: ~/.config/cmos-mcp\nCMOS_CONFIG_DIR=/custom/path\n\n# Snapshot retention (default shown)\nCMOS_MAX_SNAPSHOTS=50\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 cmos_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, context snapshots, and mission history are immutable rows.\n- **Atomic credential writes.** `credentials.json` is written via temp-file + rename with 0600 permissions.\n- **Manual snapshots.** `cmos_db(action=\"snapshot\")` copies the database on demand; `CMOS_MAX_SNAPSHOTS` caps how many are kept. There is no automatic snapshot before destructive operations, and no soft-delete net — `cmos_db(action=\"purge\")` and `cmos_db(action=\"restore\")` are genuinely destructive. See [SECURITY.md](SECURITY.md#backups--deletion--the-honest-reality).\n- **Dry-run where it exists.** `cmos_context(action=\"condense\")` and `cmos_db(action=\"backfill\")` accept `dryRun` to preview without committing. It is not a general property of mutating tools.\n\n## Known limits\n\n- Sync is checkpoint-driven, not continuous — manual `cmos_db(action=\"backfill\")` flushes pending events to the dashboard.\n- SQLite is the source of truth and the Postgres mirror is a mirror. To bring state down, `cmos_db(action=\"clone\")` bootstraps a fresh machine from dashboard state and `cmos_db(action=\"pull\")` merges events since your last cursor.\n- Cross-user messaging on the dashboard is paid-tier; same-user (multi-device) messaging is free.\n\n## Documentation\n\n- [Getting started](docs/getting-started.md) — install through first onboard, no dashboard required.\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\n```bash\ngit clone https://github.com/kneelinghorse/cmos-mcp\ncd cmos-mcp\nnpm install\nnpm run build\nnpm test\n```\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"}