{"_id":"@ooples/token-optimizer-mcp","_rev":"39-477958ab9f08450851dd70eae51b24cd","name":"@ooples/token-optimizer-mcp","dist-tags":{"latest":"7.3.0"},"versions":{"2.18.0":{"name":"@ooples/token-optimizer-mcp","version":"2.18.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@2.18.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"8acf700e2e4952629cf1249853dc9e3b4993b327","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-2.18.0.tgz","fileCount":553,"integrity":"sha512-yYFF2a0iFGbYhPZbLd1QcRQMqbeqfYmc+8QVE0q/ftzKvEcWCCQAVOYqe03hoqxt0HaAmZ4kFZbzhdiSlih1fg==","signatures":[{"sig":"MEUCIQCzJ3+qd8fIhOBgNI9fYuze45lMoTj4EJdqDnkzvIKSqAIgWAFLuMJIPHJQu7ygdRSEx4tM77vgeSwxXK86kaaxeBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5539471},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"fd6b932069d1abed56cae8206b45fc6bfb7bf115","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_2.18.0_1761792604408_0.9505053955103271","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"@ooples/token-optimizer-mcp","version":"2.19.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@2.19.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"e0e8a2ab429dbb6758a034d221522eced260490c","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-2.19.0.tgz","fileCount":553,"integrity":"sha512-POqgypdNUx1Uq4oD/v2WvJxnjyZLt0vOX1DEIs01ppbLVwQTeqBlLOee+NUFW8ESXiIUcWBqlAuN46IZcsKGeQ==","signatures":[{"sig":"MEQCIBt6g+4zIHD5bsFkRN9+e+LpX8+gWpoJIRqo6pkMkpE2AiAdYU2bH6jOuWjYlckz3aUl52O9txvgFYIghz3V4X+B+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5553302},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"242e3db2969d6c8d18e49005bba7ec984089af82","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_2.19.0_1761793084599_0.7086761031284499","host":"s3://npm-registry-packages-npm-production"}},"2.19.1":{"name":"@ooples/token-optimizer-mcp","version":"2.19.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@2.19.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"45bb864ec4ce7fdaae971caad061d4ba6e3ac403","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-2.19.1.tgz","fileCount":552,"integrity":"sha512-9UyitBA7IOvuC5x0QJoon4TscBvqNyZFEzsjQCJgOVHXiFkRdzXB1LjAaLsci91nF4kfySoC1aWKJm7uH7zLUA==","signatures":[{"sig":"MEUCIQCPOMz1aGewjxoL8TYxzk0MT/FS5L1hJIvTAcQM0kdZxgIgcNIOeeBBDJFn6spEsJ9uBisO2YyWP4YxyTq2CxS7pJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5549095},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"4216a7d4f5ce53172aaeb741f764e9a621a0fcef","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_2.19.1_1761798949057_0.31484815926694365","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@ooples/token-optimizer-mcp","version":"3.0.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.0.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"6de9e3847ed18b33ad63be63a475af2896ea734f","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.0.0.tgz","fileCount":553,"integrity":"sha512-3DrDx0zEHnsAZdwZPsUOVUjzMDspcwSzKuT4Ait+gOLtAXHLk6yaRqgsJaHMmFCY3y56WFvo1IIe55QGj/WejA==","signatures":[{"sig":"MEUCIQDb6YiJItyLZ5gpPYs31iM+nrd47I99ZULx4lmgjYXYOAIgeB0OZu9/Ac2iuOCHJwCoW5+mVMRtSdryewmwrwyZEko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5552280},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"5cc33456de4632dc1f6dd30ab20735963f197c8c","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.0.0_1761799502565_0.22689545413565138","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@ooples/token-optimizer-mcp","version":"3.0.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.0.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"fe17ddbba7eb13a7f07ff563cc73e1dc6818e19e","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.0.1.tgz","fileCount":553,"integrity":"sha512-Y39lx+O36HQbGWULiyP0QctDBBSbQiJ+T5zyTlgmsoAgNp87x+DnSSNoiPNvYwIyVNTRtmF/OXKk431YM8iT1A==","signatures":[{"sig":"MEQCIDQOx+A6Al6hXvYmE9lLun3IiJRuXaL0oa7COa32n7OJAiA66kY+99Fs2EWkA9ARUsiPG8KmFjJQJ/v4kZic3qYq3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5552282},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"14ddecd203f3cb8c5b42f87d05e827cb490ed74a","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.0.1_1761827947446_0.4074971179943403","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@ooples/token-optimizer-mcp","version":"3.0.2","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.0.2","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"daf11fca9975bf8f164f4331950f554fd77dfa2c","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.0.2.tgz","fileCount":553,"integrity":"sha512-09vwN0dOejcYB5vg0mzb5R59980tpAfoJeMCPs8pP6vwmfrcsbwbYkPc3vxsa+OhbCJwdDAYLMesdEBbFqpepQ==","signatures":[{"sig":"MEUCIGRFnJxX6wyX7DChtlNhPHodKIkNzugI92tC0GExiN48AiEAvtcZ59RGxi54FmrlnFcWqh2hrocUBA9zEZQzr/fQc9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5552832},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"291e58a8bb5ed882e885178ddb1a43c9552c14e1","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.0.2_1761852018275_0.6623788280244518","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@ooples/token-optimizer-mcp","version":"3.0.3","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.0.3","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"4bbacf82208ef557ed0fec1434232cb4ba0fa648","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.0.3.tgz","fileCount":553,"integrity":"sha512-ysN0D29AwelRZ8Na3t/+ucaqPVlV1TG5/3M8J7K24srZqrvaqm83QRBlySJ1ZyaWEYRiqOgQN9xVsovRBxPvkQ==","signatures":[{"sig":"MEUCIQDWVodRwFOf/4xnCSjnEpmpR1CX1vu3uhj+PSF6Ph1O6gIgbZeSijV6v5WmCKlCBPjuOp111ErtdqonfEB8vLIVedU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5559246},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"d38efe03d0b63fbf4286db5979de9072f67cf625","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.0.3_1761874420712_0.493017565771519","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@ooples/token-optimizer-mcp","version":"3.0.4","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.0.4","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"6593d011d4b9e7e05d2813ddb5f3b54a48c914e9","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.0.4.tgz","fileCount":553,"integrity":"sha512-0Ucl6XRNibon0mPiJCdg9f6JEoBBbnk/idPJQju8lLPdMjyPwEwW36y7Y27C+KpNzsLHfI6HICamYI6AmphYtw==","signatures":[{"sig":"MEUCIQDP4xUrLuBYGvf2f6pf1OGSsKk4IXTnmINhJGXPtAyB+gIgZxUD4oWcJf1/dDpfhib9CgoIHSKcIBYgtnFQ6ex4h/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5566680},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"718b36a8dc7c1729232abfb794d4952285652bdf","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.0.4_1761880927181_0.8768623995578995","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@ooples/token-optimizer-mcp","version":"3.1.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@3.1.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"747e43b59575a1dad35e03a3eea5cec5e7c1cab7","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-3.1.0.tgz","fileCount":561,"integrity":"sha512-nj+Iqo5+MvIEdLJasG3bl7E/u3sFF4iMOPEp49ykuTBSXOXqfVpULVe5idFNJGrU7+ppyjmmUy6kuTE/z0jVLg==","signatures":[{"sig":"MEUCIQDrOECuU05N5EfB7Ji3NQcdPtiGvN4ECAZylhPWbnwhdwIgKpB11STwuU89BRKgMuW9K4y0hZNcXk5ZTGPvfmXE2J0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5604931},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"7c5a5d20ae81804fca18f1824760b4cf2f0981ad","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_3.1.0_1761881645914_0.861061410827975","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@ooples/token-optimizer-mcp","version":"4.0.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@4.0.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"99ab65e7f9e74b05eee459029709a4a6ff9a07d0","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-4.0.0.tgz","fileCount":561,"integrity":"sha512-Pb6T0l3B8bfKGUfDVDrvyRYq+dpQvomtMbOdOCCzFQ1k0TXJdomFo7ChJyQnRDR6xazklS67qcgWvjw0m4kZVw==","signatures":[{"sig":"MEUCIQCJ6TonO1wM97nOerlqkuWL6jqmHKCyxiSm+jihdf4vLwIgZXc1UJnvvwMvLUkgDWEjiqGs6IgSfVcShs9K0OL35nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5607431},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"1a3da5e46bfe6621a7a9a7fcd7bc049491aa5719","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_4.0.0_1761912790887_0.13947944696507553","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@ooples/token-optimizer-mcp","version":"4.0.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@4.0.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"d32fdc997988d018dee1f26790e4446046b7f60a","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-4.0.1.tgz","fileCount":561,"integrity":"sha512-TjlYP2YsHiiUi6OwuoE/qNM/2XsD+S+7C4w2u8gtARExABOrjuiQt9BEPWjNh3UH4a5i2ZWH6LujpWFmAsNI+g==","signatures":[{"sig":"MEQCIB3682reYXIVSVvBkzz1fHQDdhSKT0cu0nsKEzBea6dSAiB65mVjt/c5rg/J9URFoWnAJwiSPI+zhgUSm73Rf+mPUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5608253},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"4d5a0c50e8ec0b3ce87ddbc62bf541638e19e520","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_4.0.1_1761932886497_0.5493450754631313","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@ooples/token-optimizer-mcp","version":"4.1.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@4.1.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"a23a4e7ba237b47bb93b9dab7b6233932cda71c3","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-4.1.0.tgz","fileCount":561,"integrity":"sha512-jkqMObG4fDV7sShZqFew8C4f716xkN4Cd2DyboXI3PauFoVpAAMG31jQnxWKDA4qTk269FVwKFBD1rVVttstVg==","signatures":[{"sig":"MEQCIC1kAV0HueockvFTOD3F5NtEPvx0Quw++zRoN5KJmNTRAiAqMnPv+tz+jtVu2pUSqJDa5u0XZ/JIgNPlPiKkkurfbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5609310},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"04097dd8bed9444b95849a190a32e69068a0f56f","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_4.1.0_1761976319010_0.8564950606573802","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@ooples/token-optimizer-mcp","version":"4.2.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@4.2.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js"},"dist":{"shasum":"384fff0a86e2808f1c36a54da9eb81ba12fd5e50","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-4.2.0.tgz","fileCount":593,"integrity":"sha512-aw4/+nKKimyVimLs/Zh4dcx0wl7o2GLtC66+qVT9rwPV8posVTsKwJx1ixAywfLt21i1zf+XCStv418S7Kerfg==","signatures":[{"sig":"MEUCIQD99v2hI3pbPXqHShes3fHAQHxv1i3tKwTlXPFmE+uLrwIgH2a8P+MMe3jvkRaNCu6XAe9Jk8lM06Kw+4kFcnkRXQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5690375},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"3d1cacc146299ff85b7749b6f2680fdbdb5f67ea","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_4.2.0_1762018773566_0.25170243247753055","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@ooples/token-optimizer-mcp","version":"5.0.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.0.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"7ea532dcdfc27d6eead5ef863442780c5fbaf894","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.0.0.tgz","fileCount":597,"integrity":"sha512-ZJ5WQlbKVRDf8BxYZhEEli1Kxrr/36Ws4G55iFoIypYBZait9Aq8+FxlbS6pb9sOnXPyPKCFOldGnvZMatQaBQ==","signatures":[{"sig":"MEUCIA/x0mC3W3NhX6TGJTCffvOn1DDSBqyjbIp8M0lWHhKZAiEAm6G0mcN0/2SIW2KXeuLF6xYnDqQNoONKPgdq/XyUkPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5710241},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"0b9b1d3fb6c06fa7b94b772490ac432bfb7369d9","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.0.0_1762019527155_0.5009844830860697","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@ooples/token-optimizer-mcp","version":"5.0.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.0.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"5838756a76cda2ae775e9b7d141bfcecef36e811","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.0.1.tgz","fileCount":597,"integrity":"sha512-2KyXs7mq5GBp1vH2E+XReYkKIZI1Tz1dNYa+1G1Nr/7ahxohm5X0Xt7a3HDQoXExVsLVbYAotKQsIaIxXzijiw==","signatures":[{"sig":"MEQCIQCIYXohFQJwT9bMO7vbbNe1TC63J/EfMalWNTITxj0s6gIfUXqmESvrudKE1l3yUd97SBQYmRKtS9d3o3k8rOfhQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5715812},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"8138f3a6d32eff80387f24d6068039ae8fb7bfa9","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build && npm test","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"ooples","email":"cheatcountry@gmail.com"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"20.19.5","dependencies":{"cors":"^2.8.5","diff":"^8.0.2","glob":"^11.0.3","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","@modelcontextprotocol/sdk":"^1.20.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^24.2.0","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.0.1_1762100880349_0.8019821253069142","host":"s3://npm-registry-packages-npm-production"}},"5.1.1":{"name":"@ooples/token-optimizer-mcp","version":"5.1.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.1.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"0b21bd9dd55c1e95a35a60e732cad6c0ea3d59d4","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.1.1.tgz","fileCount":680,"integrity":"sha512-LYJQheTlGJ+DYDrxxkGjjqb2rXC8jqCpn/ncl0OG7Qb18bfqBJ4DFS9rLF9jY2zS7i1FLHCojkpf767l/+Ebog==","signatures":[{"sig":"MEYCIQD1/9rcNBOZaWAwFegnl8pfzDD/1DeCdoDu4xz4K8Md+AIhANhSdSzxBXM1mPcFjwUbhT0r7oRMJH0RG1VMcX8xVsD8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6089695},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"687b55460d752fa4ee011c58535c733191b831c8","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.16.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.1.1_1784525128067_0.5690739483260254","host":"s3://npm-registry-packages-npm-production"}},"5.1.2":{"name":"@ooples/token-optimizer-mcp","version":"5.1.2","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.1.2","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"c0237e933dd88f254d00e27a0e186448ca0aabdf","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.1.2.tgz","fileCount":680,"integrity":"sha512-AZGoqbMd8P6mzm/O268LZhiOkLjS4hfGSoiBl75Hqp1I6k0AasWgfT5/X8vfftKgNY2AoF0Y1X9VUGh9B9pTCA==","signatures":[{"sig":"MEQCIAWcI2/bxMy8/FBWxxFsVwOsQagcY5MPjrESd9Z16kaYAiAnd6sX3c78wgeQO1zA1xVw7EPhijljkIgaRz7VdHTayg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6091156},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"ba7a5fcabc0d5e2d662372d3cae1840f1b5e8ba9","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.16.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.1.2_1784555106573_0.2109481790265868","host":"s3://npm-registry-packages-npm-production"}},"5.1.3":{"name":"@ooples/token-optimizer-mcp","version":"5.1.3","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.1.3","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"af69bba75088a00a08d15cca5066e7d1f0a7b6c7","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.1.3.tgz","fileCount":680,"integrity":"sha512-QLazAPJEDcHttavBYza814ddow8+2OR8Lk3DP1ms4oUswifLlQnHTB+OfZmoiHvngM6Xca820eUyXQqAe91ECA==","signatures":[{"sig":"MEYCIQC+ytr+43CyXhWDNWECeKl/DqfwjPxrSf2u0KXfLqBZeAIhANcrTNlTicK2okagKm0uoCrnay92TUpoekLJXY6wtWl6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6107013},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"1f7592142d7b590455202a62e95c12f776c5179e","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.16.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.1.3_1784603574009_0.9607487698499502","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@ooples/token-optimizer-mcp","version":"5.2.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.2.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"eeb7c9a32196449343d30fa8c38352974043e8c4","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.2.0.tgz","fileCount":682,"integrity":"sha512-Kbtf/FDAhHdSc/RpbAiztnAzktaVD8bMmfuFYT0PPw8gLylAO/oIkDSzembMLo9wewQsIKSHz+xxtnEMo8dNWA==","signatures":[{"sig":"MEUCICIA4a7MgcI/5uNosP+r2jumFb1gcu+yFdGBGISk+A3XAiEA2F2rPAGSb1L5Y3RLX1rkX+3zPaxwHmJ5eaN/UkU1cOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6116572},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"623ffba890feae2775afe661e1c94811740804c4","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.16.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.2.0_1784638335263_0.5223679597378901","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"@ooples/token-optimizer-mcp","version":"5.3.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"5c0bb6dea2a173e18e128cf9c7a5cefe926a32e1","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.0.tgz","fileCount":953,"integrity":"sha512-NlhWfQQgriIRberXmVvlORv2J+tnW1aTS5kfaQMNfreWuDpEKgKtWCHXUeC04BF0dZLgPOQjd1QiKqKzmVZzBw==","signatures":[{"sig":"MEQCICIHYAfm/0fBjGHKlxdd17v3nCK6HRltykErPHi2ExztAiA2omJ4K2ZgfXWc4MTsGpDKXA7uSYOBmeM24hp/fB3+ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8203538},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"029c122003f3c32546299d52c3e86d3530bf2885","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.0_1785467342684_0.10757324699758097","host":"s3://npm-registry-packages-npm-production"}},"5.3.1":{"name":"@ooples/token-optimizer-mcp","version":"5.3.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"5714be1fe99731a67a086999d00ef9a7344d2572","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.1.tgz","fileCount":953,"integrity":"sha512-cRIGCvKGYY2aSQSfEylNyt9iPBlJq0/rctd5FIqnWiAo/ohAikhX+qzT9RDurFMjgF3jCN7RPS8pbAo4lmoBKg==","signatures":[{"sig":"MEQCIDOA+XCnIRgvyVxp2SQ/uwRSU0KtOzo7FaxfYI4k6si+AiBt1D3oSCnvwkORVzEHFdVxEOLN136p+ssqerEFwZRZRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8204140},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"20078ff0af72875efffa9ca0dd8c9112bbf474b7","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.1_1785469857577_0.2701333111085187","host":"s3://npm-registry-packages-npm-production"}},"5.3.2":{"name":"@ooples/token-optimizer-mcp","version":"5.3.2","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.2","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js"},"dist":{"shasum":"716ca46c5c8ba5a540f95c07b6f5e8adc025bf24","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.2.tgz","fileCount":1014,"integrity":"sha512-0KLLqODgZHytE3uqq1IUvxRtl5xB78KH6ozMuSf5vs4ktWCPDgnk1nWR4fP5ksMPcmuWAMZ6LyFc2GJmdLp4Jg==","signatures":[{"sig":"MEUCIQCwjHlcXaHn/no4vqlJtN9EgH0KMtNlury+zp21MqAKAgIgQCBLTaRHxDs9jor5TZ7PSk2dIzAnAeDt6MPQI4NtZIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8676629},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"dc1f9b0f5459e33d099668755067c8fae1bae09b","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"require('fs').cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true})\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","express":"^5.1.0","tiktoken":"^1.0.22","lru-cache":"^11.2.2","async-mutex":"^0.5.0","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.2_1785472299180_0.7717469235909806","host":"s3://npm-registry-packages-npm-production"}},"5.3.3":{"name":"@ooples/token-optimizer-mcp","version":"5.3.3","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.3","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"0d4428991cf35442bd18fb20c5c760983962c930","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.3.tgz","fileCount":1042,"integrity":"sha512-a5MNv2WElwr7ohaY+QuEbTwAUYRirZsfJ8I5kbzVZgYdPMnOw3Xph6HAMJLO030Bx0fUp1jxA/yWtNW6jSnukQ==","signatures":[{"sig":"MEUCIQDDkHiXuCxQt/q0y7iMPO2DsUrYwTPZh/nbV/RBc7EF0gIgYgceV+CwfkU/7CNZmgQBLK1xMMMsrI6J9Q7g31X4AGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9209319},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"60bdee4c824ded0187bb14b2db7294b54032aa50","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"const{cpSync,mkdirSync}=require('fs');cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true});mkdirSync('dist/dashboard/public/vendor',{recursive:true});cpSync('node_modules/chart.js/dist/chart.umd.js','dist/dashboard/public/vendor/chart.umd.min.js')\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.3_1785596930181_0.056429113678666765","host":"s3://npm-registry-packages-npm-production"}},"5.3.4":{"name":"@ooples/token-optimizer-mcp","version":"5.3.4","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.4","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"ab13b30e3c83def7fb479d9d84e9b4cd1f04331d","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.4.tgz","fileCount":1066,"integrity":"sha512-e4EvLE1ag8yux4lDj0WkxoJl7l6N9Gn3AhbuZdk5LfCd+N+DF34a+sOfM5eeItP2o0TlVYbAy0rY8qbvMYSyXQ==","signatures":[{"sig":"MEQCIE/u7I6hIxYbJ4NcxEqXvUxZk4zNQd9luFBnnKafNadqAiACemePfDwUF+d3liD/LXuYAFw0R8Vdi+59uozJBnYbQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9267492},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"16e7455e6f2b0d35e6c0f9981b0d37375c2931dc","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"const{cpSync,mkdirSync}=require('fs');cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true});mkdirSync('dist/dashboard/public/vendor',{recursive:true});cpSync('node_modules/chart.js/dist/chart.umd.js','dist/dashboard/public/vendor/chart.umd.min.js')\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.4_1785628707213_0.15661892029527857","host":"s3://npm-registry-packages-npm-production"}},"5.3.5":{"name":"@ooples/token-optimizer-mcp","version":"5.3.5","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.5","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"5c7f9df479b2399c9bc4e9d35c58f1e5a76c7569","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.5.tgz","fileCount":1066,"integrity":"sha512-qEi00nlqaay77VmiUGijOdt8Ayyp3/DN4vu3Ox2LOc3+fqJPLv95LFAEaeWFJ+abQFlEXqoFbCrr47MtMFF4Mg==","signatures":[{"sig":"MEYCIQDeKteAKXyGb0dL+Pj2jwTMLyrBV1zhfvXaCIwOr2usgwIhAPVQzHsVAzPiaefKcpNX0mtvlXfgVRqJ6h8XY38IojBH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9268551},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"4316496a10c5d85317b1bb4d2286c00c8d649223","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"const{cpSync,mkdirSync}=require('fs');cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true});mkdirSync('dist/dashboard/public/vendor',{recursive:true});cpSync('node_modules/chart.js/dist/chart.umd.js','dist/dashboard/public/vendor/chart.umd.min.js')\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.5_1785676912657_0.1479739466719061","host":"s3://npm-registry-packages-npm-production"}},"5.3.6":{"name":"@ooples/token-optimizer-mcp","version":"5.3.6","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.3.6","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"38a4d2e6ae61f4eadee4fb94d20bf972af4e4a7e","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.3.6.tgz","fileCount":1083,"integrity":"sha512-pMaKD11Fxlq354MlbZv9MC3TgZ6lL9eVOBaXDMWZycu3QSiz94rfqpxr40cW6QTcJzgW2C2owEFJ0a9ayUTVoQ==","signatures":[{"sig":"MEUCIAg20X8XeHIm5OhNXN72KpFxo+fUfhsJU9e30LcanDpBAiEA1Z+y8jqhZK0p8AlvKgIMStFmnaYAdCaFiyci1u2mLKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9482705},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"5d6cf652e7c21aea0e594a91258efd711d2d3da8","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node -e \"const{cpSync,mkdirSync}=require('fs');cpSync('src/dashboard/public','dist/dashboard/public',{recursive:true});mkdirSync('dist/dashboard/public/vendor',{recursive:true});cpSync('node_modules/chart.js/dist/chart.umd.js','dist/dashboard/public/vendor/chart.umd.min.js')\"","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.3.6_1785846819404_0.31805691080971643","host":"s3://npm-registry-packages-npm-production"}},"5.4.2":{"name":"@ooples/token-optimizer-mcp","version":"5.4.2","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.4.2","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"6c0919e156c804c009974f4eb2f7ff0b78351ea7","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.4.2.tgz","fileCount":1103,"integrity":"sha512-hL3+E06I4DmeR5Q6kd7RMEVClGGSLz6gcauuTkG3bW4u+l0TbgqGUGIB3YUNDc5AxJt772HsDTetbp2JJqIQrA==","signatures":[{"sig":"MEUCIQDQ6PZRA3ApITDEoOsdLZRUyNJ0tNsAGEDuNqZYIyFc7QIgIGdRkGzLI+BCL5HygMAatPaVAUeWiWQ4OMYuj/sbiSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10030718},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"451dbedb71c166c6e4b80d09ab31613e9d3d3207","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.4.2_1785929517970_0.39464107144973104","host":"s3://npm-registry-packages-npm-production"}},"5.4.3":{"name":"@ooples/token-optimizer-mcp","version":"5.4.3","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.4.3","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"51882387125b855ab38e1a1fdc860b5e124582a8","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.4.3.tgz","fileCount":1103,"integrity":"sha512-1ezl7XLJGJn1o+QGi6oQvKSyMUd3/A77j4xkXtX6ZHaO08nBooXQcm3ztAHsqHrYn0kBdTrpX8gcCGmvuUPkXg==","signatures":[{"sig":"MEUCIQD9OgP1bm7ouA+VYdJ3GVWkSK5MHmrmYcq2rRFWjpPyWwIgZtVUrBv7z1dH/AydP7a7mEOykbs/hIWGYESUYVd3VQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10160396},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"843c1e9acf51ef2c565189edf5c672daddfbcea1","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.4.3_1785954449619_0.22408535067955437","host":"s3://npm-registry-packages-npm-production"}},"5.5.0":{"name":"@ooples/token-optimizer-mcp","version":"5.5.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.5.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"9e5fa7f7323e938f920dedc8f8d2810590dd7518","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.5.0.tgz","fileCount":1108,"integrity":"sha512-oF4JkckdgjqgrYJP3rjtqU/tHWOSmFBxzovD7xQ2b+OI2CL8GckUAFwKKhsIMdwn2FWZPZWxrmlgwimPIcAbBA==","signatures":[{"sig":"MEQCIQDr5YkC4x52huC+E7R4QGClgv22ryWGExqKQvNdhBg9UgIfIJGG8IFw5DpMnT6RwaOux3OD0tRjvWOzpPmIE6JlTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10608905},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"465e9cc5e6e1c7531f60b8cd1ecee59d2f7aed1f","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.5.0_1786099504001_0.3525107597773456","host":"s3://npm-registry-packages-npm-production"}},"5.6.0":{"name":"@ooples/token-optimizer-mcp","version":"5.6.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.6.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"cfa14d233db75d59cf7eae2d68771486e73a11e9","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.6.0.tgz","fileCount":1119,"integrity":"sha512-eWszILRStMpq4iT2V/eFFAobI/LekE50bw3vPTW87TA0F9vOFslZI4RqUBNsbqi8IcrZdNABNAy87DAYZlHjAw==","signatures":[{"sig":"MEUCIHP/ezCdfKlFLMVtXk5rKCAAa6HLB7dU/5yuqlzS7eP1AiEAySfxkWzNSNXnsfl+3Gv4MI/7k1wGxDyT4TvwHBQ2L9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11069791},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"58c23aeaf573f2ef3a2ad14f00825a6e5b185d98","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.6.0_1786155775795_0.28468740808638815","host":"s3://npm-registry-packages-npm-production"}},"5.6.1":{"name":"@ooples/token-optimizer-mcp","version":"5.6.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.6.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"ab092a6fbef35ad63b5eea49bd874cd493e0d5da","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.6.1.tgz","fileCount":1119,"integrity":"sha512-sHIfXHTYmyU1+Mk872kVf2ANWAaaDc7e/BapgNSIVVQw5Q6Jg9nM3pQccH+CinH/1pGMJmApcKH6/1G038T1iA==","signatures":[{"sig":"MEYCIQD0SsNXxeLf9Jnk+6u4x/t3nHK/rqzR3sFfCCtGccYJDQIhANKnvzBbeewLUzt6wqnYbPhj+TIwTtf0M9m/4YLckXgL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11121585},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"cd16ec84a8dcb2ba6f2896c416a0fe83230c7439","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run verify:clients && npm run verify:harvest && npm run verify:ui && npm run verify:interactions","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","verify:interactions":"node scripts/verify-wiki-interactions.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Intelligent context window optimization for Claude Code - store content externally via caching and compression, freeing up your context window for what matters","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^12.4.1","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.6.1_1786158351437_0.2087843877048885","host":"s3://npm-registry-packages-npm-production"}},"5.7.0":{"name":"@ooples/token-optimizer-mcp","version":"5.7.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@5.7.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs"},"dist":{"shasum":"ec2c2c3c2ce21e12f15176974d8031fa6a5efe8e","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-5.7.0.tgz","fileCount":1558,"integrity":"sha512-9bDiVbBe0Y4bumiO87nIDt7jakGh2oQmWlUMHB45q1CQA+Gkn5Oovpj07ulbtbYJT9p4cewd6RSRTgqr/kknYw==","signatures":[{"sig":"MEUCIQDo37PmM8Tn/CaOjUpSrgHrVQG88orYnaHCwKUw8ghMrwIgCL7v1ngPdLS6VgVzfxyrEudABrvWjN8y2hdqGHmgmGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@5.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17753944},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"41ddbf7ffd1fc727d61a3986be852107826b6966","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions","verify:ucr":"node scripts/verify-ucr-runtime.mjs","copy:assets":"node scripts/copy-assets.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Cross-client context optimization and durable live knowledge capture for AI coding agents and CLI tools","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_5.7.0_1786414682726_0.0021910116887575715","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@ooples/token-optimizer-mcp","version":"6.0.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@6.0.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"798e2d9f10e5a6cdd8b689d00b99b6cd4b05429c","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-6.0.0.tgz","fileCount":1743,"integrity":"sha512-HK1EQuwQxbld/JGPnV2JkszbSkklto/UpacN4ozwPif3w/tJdSPlnGNpKPjolhRdLah1YNGPiE8l/BNEOks/SQ==","signatures":[{"sig":"MEQCIAmIOPrC0S/buTkOP+0w1SanMKqh/dnWBizrQSqMwcKHAiBq7B6TkqUdmYN9APBqv0dFqk7jGpou63Ppk5haQ+1IiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@6.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23486739},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"7102c5d7e0b902aa0e07b75c22508121a7784f4a","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions","verify:ucr":"node scripts/verify-ucr-runtime.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","wiki:census":"node scripts/wiki-census.mjs","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_6.0.0_1787843032277_0.19400909313040327","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"@ooples/token-optimizer-mcp","version":"6.0.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@6.0.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"e4b618234073ecb8d895ef7118c985280c56a705","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-6.0.1.tgz","fileCount":1744,"integrity":"sha512-21vGrUQIYqrPsoZkkxHsxStnsMQqgI4In6RIVkaC8L1ZsMd/A0BY/lwCfnHxrR4Pv84ocwxwB1WMqFSWiG2ywQ==","signatures":[{"sig":"MEQCIDVUz4dodMZl3UrVuv9BSXidLE1POhhc16/4fhmRlfg7AiAqPn6LYWcZlw+uI4A+DSJ9L++XI1TBcRfIRSaNxiQHGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@6.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23502346},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"32c8fd3473cf3b7dfc82adf5f8e3fe8b471a17b5","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions","verify:ucr":"node scripts/verify-ucr-runtime.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","wiki:census":"node scripts/wiki-census.mjs","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":">=3.25.0 <5","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_6.0.1_1787892903826_0.4887583987157871","host":"s3://npm-registry-packages-npm-production"}},"6.0.2":{"name":"@ooples/token-optimizer-mcp","version":"6.0.2","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@6.0.2","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"96235ea5c4b7d87bee8228d76b8f94b98d6b6c0d","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-6.0.2.tgz","fileCount":1752,"integrity":"sha512-B+J0SZaKbFqSBxpxdEiW5vIa55zM2tjtAbjKouFJLs5ctWPgz1sjyTqaJaL1KM9ZRYK4uga8ta1dFuxzVKTFHQ==","signatures":[{"sig":"MEUCIQDzFjF8COdmkgdLwleMDI0pQoaCxeZOqnB7A2PEyLjSHgIgZtyxPR98fi3EWIVmNwRP2MHBQizfUcpuWvY6Sjf8e6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@6.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23607501},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"82c59f7cdae1bd5ba1bdd68381b6c70d196ea124","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.js","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src --ext .ts,.js --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions","verify:ucr":"node scripts/verify-ucr-runtime.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","wiki:census":"node scripts/wiki-census.mjs","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"undici":"7.29.0","js-yaml":"4.3.0","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","eslint-plugin-n":"^18.3.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@stryker-mutator/core":"^10.0.0","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@stryker-mutator/jest-runner":"^10.0.0","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_6.0.2_1787952084978_0.14101565148123996","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@ooples/token-optimizer-mcp","version":"7.0.1","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@7.0.1","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-run":"scripts/run-client.mjs","token-optimizer-proxy":"dist/proxy/cli.js","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"558cba7b8fc859760699122b8846651f71d5ae73","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-7.0.1.tgz","fileCount":2029,"integrity":"sha512-vEpcaZVizWbdxKBt/pwMICRQlfLXEu35F/qqAA/f4w/vmAOFHj2DODsFB7VlvKtOGaCXJASWcJ8i0jKp3/lK2g==","signatures":[{"sig":"MEUCIQDe7l4iVpdiieeVrAgCFpomZ/DqSRkkeJUq+ajeyFBJ1gIgdta0JyvVpVW0CsBDAbptSj2BahCWb7J1o/YJUgQpWQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHilKypWCF/x1XUv3qe7P6ip3o6CPCqD/dbTwCoR69WFAiBJfLzkh1GJ/Mn6mRfbI7lGoODqv0XG1vtrty9QRIoGlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@7.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27330316},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"2bf6d2394609326be7e0aa2b710958406bcc4bcf","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src tests --ext .ts,.js,.mjs,.mts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","proxy":"node dist/proxy/cli.js","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src tests --ext .ts,.js,.mjs,.mts --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","bench:pack":"node scripts/bench-pack.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions","verify:ucr":"node scripts/verify-ucr-runtime.mjs","bench:build":"npm run bench:pack && docker build -f bench/thol/Dockerfile -t thol-rig:local bench/","bench:field":"node bench/field/report.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","verify:onnx":"node scripts/verify-onnx-adapter.mjs","wiki:census":"node scripts/wiki-census.mjs","bench:screen":"bash bench/thol/run-campaign.sh","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","bench:confirm":"REPS=3 bash bench/thol/run-campaign.sh","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","bench:debug-loop":"node bench/debug-loop/run.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","bench:screen:knowledge":"bash bench/thol/screen-knowledge.sh","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:package-contents":"node scripts/verify-package-contents.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"qs":"6.16.0","undici":"7.29.0","js-yaml":"4.3.2","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","eslint-plugin-n":"^18.3.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@stryker-mutator/core":"^10.0.0","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@stryker-mutator/jest-runner":"^10.0.0","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_7.0.1_1789665166697_0.5403452385091332","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@ooples/token-optimizer-mcp","version":"7.1.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@7.1.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-run":"scripts/run-client.mjs","token-optimizer-proxy":"dist/proxy/cli.js","token-optimizer-route":"scripts/route-client.mjs","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"cd3af8b5dbb6c312bf42a4cf7afcffc3609696ae","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-7.1.0.tgz","fileCount":2045,"integrity":"sha512-g0uFTZul62xKJGTcMcL2JGC8ST9EWj4+3HqpmxDJTVM1tJrsw77oEKJ+sRUWT2Xdd/ElW0S/lqT1nSewgGVzEg==","signatures":[{"sig":"MEQCICvYmej9WYs73O31m5goncnMyvFx3xokPVIQdubXgm38AiAhuE5rcMMyYIcCO8wmX09c+8CwBvUPKT2jktH9TUttLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICJQaWKbYCZOQkSfcsw9jm7p9LjAA+bpa6WiPhKft42GAiBS9u2ofiEyFCGIVwg/g1dwarbwe1dbbpECwAa5ioQEQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@7.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27722144},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"4fe24104e8b4f5f95b55fc0c1f35f53b4408790b","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src tests --ext .ts,.js,.mjs,.mts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","proxy":"node dist/proxy/cli.js","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src tests --ext .ts,.js,.mjs,.mts --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","bench:pack":"node scripts/bench-pack.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions && npm run verify:install","verify:ucr":"node scripts/verify-ucr-runtime.mjs","bench:build":"npm run bench:pack && docker build -f bench/thol/Dockerfile -t thol-rig:local bench/","bench:field":"node bench/field/report.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","verify:onnx":"node scripts/verify-onnx-adapter.mjs","wiki:census":"node scripts/wiki-census.mjs","bench:screen":"bash bench/thol/run-campaign.sh","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","bench:confirm":"REPS=3 bash bench/thol/run-campaign.sh","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","verify:install":"node scripts/verify-fresh-install.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","bench:debug-loop":"node bench/debug-loop/run.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","bench:screen:knowledge":"bash bench/thol/screen-knowledge.sh","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:package-contents":"node scripts/verify-package-contents.mjs","verify:published-launch":"node scripts/verify-published-launch.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"qs":"6.16.0","undici":"7.29.0","js-yaml":"4.3.2","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","eslint-plugin-n":"^18.3.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@stryker-mutator/core":"^10.0.0","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@stryker-mutator/jest-runner":"^10.0.0","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_7.1.0_1789759199367_0.9728736217304148","host":"s3://npm-registry-packages-npm-production"}},"7.2.0":{"name":"@ooples/token-optimizer-mcp","version":"7.2.0","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"author":{"name":"ooples"},"license":"MIT","_id":"@ooples/token-optimizer-mcp@7.2.0","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-run":"scripts/run-client.mjs","token-optimizer-proxy":"dist/proxy/cli.js","token-optimizer-route":"scripts/route-client.mjs","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"dist":{"shasum":"3aef8ff0ff3c77093cff985e6b6422944d8579e5","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-7.2.0.tgz","fileCount":2093,"integrity":"sha512-xnmDUsb1gYcNn67tAfxy5onnc95Ocn3wmVKSNp0OboqTls5V9x/rJR+o38yGAJu7t7H9PpTSahHOtDiHZA3i5w==","signatures":[{"sig":"MEQCIGumyJTyKDCxxtxy5K+dgMTHKWVLfRhYBlINbdlJgMX6AiBERVrQH80PNq9vuVgOie7+paR6p5rCDnTZtzDD1kXqSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFtcrBEmPoDOo7qUhFMpBGNa1Hp/t6fYwjT/r7ezP56hAiBIQv3iE68GhyM3UCqqifEl4kCh8YLQOjdbwPYezO+S9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@7.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28035442},"main":"dist/server/index.js","type":"module","types":"dist/server/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"b83535f1efcff4f6f03b685526396cdb548a5fe7","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src tests --ext .ts,.js,.mjs,.mts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","proxy":"node dist/proxy/cli.js","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src tests --ext .ts,.js,.mjs,.mts --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","bench:pack":"node scripts/bench-pack.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions && npm run verify:install","verify:ucr":"node scripts/verify-ucr-runtime.mjs","bench:build":"npm run bench:pack && docker build -f bench/thol/Dockerfile -t thol-rig:local bench/","bench:field":"node bench/field/report.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","verify:onnx":"node scripts/verify-onnx-adapter.mjs","wiki:census":"node scripts/wiki-census.mjs","bench:screen":"bash bench/thol/run-campaign.sh","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","bench:confirm":"REPS=3 bash bench/thol/run-campaign.sh","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","verify:install":"node scripts/verify-fresh-install.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","bench:debug-loop":"node bench/debug-loop/run.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:orcarouter":"node scripts/capture-orcarouter-evidence.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","bench:screen:knowledge":"bash bench/thol/screen-knowledge.sh","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","bench:ledger:provenance":"node bench/ledger/verify-provenance.mjs","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:package-contents":"node scripts/verify-package-contents.mjs","verify:published-launch":"node scripts/verify-published-launch.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","evidence:orcarouter-live":"node scripts/verify-orcarouter-live.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"overrides":{"qs":"6.16.0","undici":"7.29.0","js-yaml":"4.3.2","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","eslint-plugin-n":"^18.3.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@stryker-mutator/core":"^10.0.0","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@stryker-mutator/jest-runner":"^10.0.0","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/token-optimizer-mcp_7.2.0_1789825479398_0.6226803423242024","host":"s3://npm-registry-packages-npm-production"}},"7.3.0":{"_id":"@ooples/token-optimizer-mcp@7.3.0","bin":{"token-optimizer-mcp":"dist/server/index.js","token-optimizer-run":"scripts/run-client.mjs","token-optimizer-proxy":"dist/proxy/cli.js","token-optimizer-route":"scripts/route-client.mjs","token-optimizer-daemon":"dist/server/daemon.js","token-optimizer-doctor":"scripts/doctor.mjs","token-optimizer-install":"scripts/install-cli.mjs","token-optimizer-diagnostics":"scripts/export-diagnostics.mjs"},"bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"dist":{"shasum":"65ddfb7995944364fdafedf8b8529c153d4953f2","tarball":"https://registry.npmjs.org/@ooples/token-optimizer-mcp/-/token-optimizer-mcp-7.3.0.tgz","fileCount":2120,"integrity":"sha512-Sfy8EkF52qJtwTtfwVVzH+sGJhoG3A4JifBc08Zhy21B/JWuO0uEWg7f0xb7FaVB8cZpHZINnbEiPjW262U6Iw==","signatures":[{"sig":"MEUCIFbF1MSwq7XsMCTpnvhCKrLD75sAYr7tfqz+Qg5zDLlYAiEAkneWG/zgaproQChaU5rfr9H069ObojsEPFuQkRbuAnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDI9rj3mEwuARvaS1/fj2tob2wZ+E50EsFXG40+7jvRHAIhAMaVO3/gbmDIWKabUnvcY1usNoVrIJlNvbgS3i3S4eWr"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ooples%2ftoken-optimizer-mcp@7.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28484994},"main":"dist/server/index.js","name":"@ooples/token-optimizer-mcp","type":"module","types":"dist/server/index.d.ts","author":{"name":"ooples"},"engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"b895349021920b376e62a1c42bd61703246ab9e9","license":"MIT","mcpName":"io.github.ooples/token-optimizer-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src tests --ext .ts,.js,.mjs,.mts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc && npm run copy:assets","clean":"rm -rf dist","proxy":"node dist/proxy/cli.js","start":"node dist/server/index.js","doctor":"node scripts/doctor.mjs","format":"prettier --write 'src/**/*.{ts,js,json}'","test:ci":"node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --maxWorkers=2","lint:fix":"eslint src tests --ext .ts,.js,.mjs,.mts --fix","validate":"node scripts/validate-package.js","checksums":"node scripts/checksums.mjs","dashboard":"node dist/server/web-server.js","test:unit":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/unit","verify:ui":"node scripts/verify-wiki-ui.mjs","bench:pack":"node scripts/bench-pack.mjs","sync:hooks":"node scripts/sync-hook-core.mjs && node scripts/generate-client-entries.mjs && node scripts/generate-client-configs.mjs && node scripts/pin-mcp-version.mjs","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","verify:all":"npm run sync:hooks:check && npm run eval:ucr:qualification:verify && npm run verify:clients && npm run verify:certification && npm run verify:harvest && npm run verify:ucr && npm run verify:ucr:study-design && npm run verify:live-graph && npm run verify:ui && npm run verify:interactions && npm run verify:install","verify:ucr":"node scripts/verify-ucr-runtime.mjs","bench:build":"npm run bench:pack && docker build -f bench/thol/Dockerfile -t thol-rig:local bench/","bench:field":"node bench/field/report.mjs","copy:assets":"node scripts/copy-assets.mjs","diagnostics":"node scripts/export-diagnostics.mjs","postinstall":"node scripts/postinstall.cjs","screenshots":"node scripts/capture-screenshots.mjs","verify:onnx":"node scripts/verify-onnx-adapter.mjs","wiki:census":"node scripts/wiki-census.mjs","bench:screen":"bash bench/thol/run-campaign.sh","eval:handoff":"node scripts/run-handoff-eval.mjs","explore:wiki":"node scripts/explore-wiki.mjs","format:check":"prettier --check 'src/**/*.{ts,js,json}'","bench:confirm":"REPS=3 bash bench/thol/run-campaign.sh","dashboard:dev":"tsc -p tsconfig.dashboard.json && npm run copy:assets && node dist/server/web-server.js","eval:evidence":"node scripts/run-evidence-eval.mjs","stamp:version":"node scripts/sync-hook-core.mjs --stamp && node scripts/generate-client-entries.mjs --stamp","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage","eval:ucr:scale":"node scripts/run-ucr-scale.mjs","prepublishOnly":"npm run clean && npm run build","test:benchmark":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/benchmarks","verify:clients":"node scripts/verify-client-configs.mjs","verify:harvest":"node scripts/verify-harvest-api.mjs","verify:install":"node scripts/verify-fresh-install.mjs","dashboard:build":"tsc -p tsconfig.dashboard.json && npm run copy:assets","uninstall-hooks":"node scripts/uninstall.mjs","bench:debug-loop":"node bench/debug-loop/run.mjs","eval:ucr:context":"node scripts/run-mcp-context-audit.mjs","eval:ucr:handoff":"node scripts/run-ucr-handoff-smoke.mjs --execute","sync:hooks:check":"node scripts/sync-hook-core.mjs --check && node scripts/generate-client-entries.mjs --check && node scripts/generate-client-configs.mjs --check && node scripts/pin-mcp-version.mjs --check","test:integration":"node --experimental-vm-modules node_modules/jest/bin/jest.js tests/integration","eval:handoff:plan":"node scripts/run-handoff-eval.mjs --dry-run","eval:ucr:adapters":"node scripts/run-ucr-adapter-certification.mjs --write","projects:discover":"node scripts/discover-project-graphs.mjs","verify:live-graph":"node scripts/verify-live-graph-flow.mjs","eval:evidence:plan":"node scripts/run-evidence-eval.mjs --dry-run","eval:ucr:full-study":"node scripts/run-ucr-full-study.mjs --execute --powered --runner-module scripts/ucr-study-driver-dispatch.mjs","eval:ucr:multimodel":"node scripts/run-ucr-multimodel-handoff.mjs --execute --directions all","eval:ucr:production":"node scripts/run-ucr-production-study.mjs","evidence:orcarouter":"node scripts/capture-orcarouter-evidence.mjs","evidence:ucr:update":"node scripts/verify-ucr-runtime.mjs --write","verify:interactions":"node scripts/verify-wiki-interactions.mjs","eval:ucr:competitive":"node scripts/run-ucr-competitive-study.mjs --execute","eval:ucr:compounding":"node scripts/run-ucr-compounding-study.mjs","verify:certification":"node scripts/certify-clients.mjs --no-version-check","dashboard:verify-live":"node scripts/verify-live-dashboard.mjs","eval:ucr:coordination":"node scripts/run-ucr-coordination-scale.mjs","eval:ucr:handoff:plan":"node scripts/run-ucr-handoff-smoke.mjs","evidence:ucr:assemble":"node scripts/assemble-ucr-evidence.mjs && node scripts/verify-ucr-runtime.mjs --write","bench:screen:knowledge":"bash bench/thol/screen-knowledge.sh","eval:ucr:consolidation":"node scripts/run-ucr-consolidation-study.mjs","eval:ucr:effectiveness":"node scripts/run-ucr-handoff-effectiveness.mjs --execute --pairs-per-direction 357","bench:ledger:provenance":"node bench/ledger/verify-provenance.mjs","dashboard:audit-savings":"node scripts/audit-token-savings.mjs","eval:handoff:concurrent":"node scripts/run-concurrent-handoff-eval.mjs","verify:package-contents":"node scripts/verify-package-contents.mjs","verify:published-launch":"node scripts/verify-published-launch.mjs","verify:ucr:study-design":"node scripts/verify-ucr-study-readiness.mjs","eval:ucr:full-study:plan":"node scripts/run-ucr-full-study.mjs","eval:ucr:multimodel:plan":"node scripts/run-ucr-multimodel-handoff.mjs","evidence:orcarouter-live":"node scripts/verify-orcarouter-live.mjs","eval:ucr:competitive:plan":"node scripts/run-ucr-competitive-study.mjs","dashboard:attribution-smoke":"node scripts/run-dashboard-attribution-smoke.mjs","eval:ucr:effectiveness:plan":"node scripts/run-ucr-handoff-effectiveness.mjs","eval:ucr:identity:provision":"node scripts/provision-ucr-study-identity.mjs","eval:ucr:production:traffic":"node scripts/assemble-ucr-production-traffic.mjs --execute","eval:ucr:qualification:gate":"node scripts/verify-ucr-qualification.mjs --require-qualified","eval:ucr:qualification:verify":"node scripts/verify-ucr-qualification.mjs","eval:ucr:full-study:powered-plan":"node scripts/run-ucr-full-study.mjs --powered","eval:ucr:production:traffic:plan":"node scripts/assemble-ucr-production-traffic.mjs","evidence:ucr:study-design:update":"node scripts/verify-ucr-study-readiness.mjs --write","eval:ucr:full-study:qualification":"node scripts/run-ucr-full-study.mjs --execute --runner-module scripts/ucr-study-driver-dispatch.mjs"},"version":"7.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9fe79788-d4f6-47c7-8d03-5a41bcf31981"}},"homepage":"https://github.com/ooples/token-optimizer-mcp#readme","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"overrides":{"qs":"6.16.0","undici":"7.29.0","js-yaml":"4.3.2","brace-expansion":"5.0.9"},"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"_npmVersion":"12.1.0","description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","directories":{},"maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","cors":"^2.8.5","diff":"^8.0.2","glob":"^11.1.0","yaml":"^2.9.0","chalk":"^4.1.2","express":"^5.1.0","chart.js":"4.4.0","d3-force":"^3.0.0","graphlib":"^2.1.8","tiktoken":"^1.0.22","lru-cache":"^11.2.2","typescript":"^5.9.3","@iarna/toml":"^2.2.5","async-mutex":"^0.5.0","@babel/parser":"^7.29.8","better-sqlite3":"^13.0.3","express-rate-limit":"^8.5.2","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/typescript-estree":"^8.65.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"npm":"^11.19.0","jest":"^30.2.0","eslint":"^9.38.0","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/qs":"^6.14.0","fast-check":"^4.9.0","playwright":"^1.62.1","@types/cors":"^2.8.19","@types/jest":"^30.0.0","@types/mime":"^3.0.4","@types/node":"^24.7.2","@types/send":"^1.2.0","@ast-grep/cli":"0.45.0","@types/express":"^5.0.3","@commitlint/cli":"^19.6.0","eslint-plugin-n":"^18.3.0","semantic-release":"^25.0.2","@types/tar-stream":"^3.1.4","@types/body-parser":"^1.19.6","@types/http-errors":"^2.0.5","@types/json-schema":"^7.0.15","@types/range-parser":"^1.2.7","@types/serve-static":"^1.15.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.3","@stryker-mutator/core":"^10.0.0","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@semantic-release/github":"^11.0.0","@typescript-eslint/parser":"^8.46.1","@semantic-release/changelog":"^6.0.3","@stryker-mutator/jest-runner":"^10.0.0","@types/normalize-package-data":"^2.4.4","@commitlint/config-conventional":"^19.6.0","@types/express-serve-static-core":"^5.1.0","@typescript-eslint/eslint-plugin":"^8.46.1","@semantic-release/commit-analyzer":"^13.0.0","@types/conventional-commits-parser":"^5.0.1","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/token-optimizer-mcp_7.3.0_1790204213508_0.053077731559856955"}}},"time":{"created":"2025-10-30T02:50:04.024Z","modified":"2026-09-23T22:56:54.052Z","2.18.0":"2025-10-30T02:50:04.771Z","2.19.0":"2025-10-30T02:58:04.929Z","2.19.1":"2025-10-30T04:35:49.374Z","3.0.0":"2025-10-30T04:45:02.850Z","3.0.1":"2025-10-30T12:39:07.662Z","3.0.2":"2025-10-30T19:20:18.600Z","3.0.3":"2025-10-31T01:33:41.050Z","3.0.4":"2025-10-31T03:22:07.488Z","3.1.0":"2025-10-31T03:34:06.192Z","4.0.0":"2025-10-31T12:13:11.146Z","4.0.1":"2025-10-31T17:48:06.732Z","4.1.0":"2025-11-01T05:51:59.269Z","4.2.0":"2025-11-01T17:39:33.789Z","5.0.0":"2025-11-01T17:52:07.414Z","5.0.1":"2025-11-02T16:28:00.585Z","5.1.1":"2026-07-20T05:25:28.265Z","5.1.2":"2026-07-20T13:45:06.748Z","5.1.3":"2026-07-21T03:12:54.257Z","5.2.0":"2026-07-21T12:52:15.451Z","5.3.0":"2026-07-31T03:09:02.883Z","5.3.1":"2026-07-31T03:50:57.777Z","5.3.2":"2026-07-31T04:31:39.400Z","5.3.3":"2026-08-01T15:08:50.456Z","5.3.4":"2026-08-01T23:58:27.406Z","5.3.5":"2026-08-02T13:21:52.840Z","5.3.6":"2026-08-04T12:33:39.582Z","5.4.2":"2026-08-05T11:31:58.167Z","5.4.3":"2026-08-05T18:27:29.859Z","5.5.0":"2026-08-07T10:45:04.167Z","5.6.0":"2026-08-08T02:22:56.013Z","5.6.1":"2026-08-08T03:05:51.695Z","5.7.0":"2026-08-11T02:18:02.997Z","6.0.0":"2026-08-27T15:03:52.488Z","6.0.1":"2026-08-28T04:55:04.114Z","6.0.2":"2026-08-28T21:21:25.269Z","7.0.1":"2026-09-17T17:12:47.010Z","7.1.0":"2026-09-18T19:19:59.540Z","7.2.0":"2026-09-19T13:44:39.573Z","7.3.0":"2026-09-23T22:56:53.704Z"},"bugs":{"url":"https://github.com/ooples/token-optimizer-mcp/issues"},"author":{"name":"ooples"},"license":"MIT","homepage":"https://github.com/ooples/token-optimizer-mcp#readme","keywords":["mcp","model-context-protocol","claude","claude-code","token-optimization","caching","compression","ai","llm","context-management","prompt-optimization"],"repository":{"url":"git+https://github.com/ooples/token-optimizer-mcp.git","type":"git"},"description":"Audit net MCP context avoided per AI coding agent, optimize context, and share a live local knowledge graph across 16 CLI clients","maintainers":[{"name":"ooples","email":"cheatcountry@gmail.com"}],"readme":"[![MCP Toplist](https://mcptoplist.com/badge/io.github.ooples%2Ftoken-optimizer-mcp.svg)](https://mcptoplist.com/server/io.github.ooples%2Ftoken-optimizer-mcp)\n\n<p align=\"center\">\n  <img src=\"docs/assets/logo-400.png\" alt=\"Token Optimizer\" width=\"96\" height=\"96\">\n</p>\n\n<h1 align=\"center\">Token Optimizer MCP</h1>\n\n<p align=\"center\">\n  <strong>Compression that optimises your bill, not your byte count &mdash;\n  and ships the benchmark so you can check it.</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@ooples/token-optimizer-mcp\"><img src=\"https://img.shields.io/npm/v/%40ooples%2Ftoken-optimizer-mcp?logo=npm\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/ooples/token-optimizer-mcp/actions/workflows/ci.yml\"><img src=\"https://github.com/ooples/token-optimizer-mcp/actions/workflows/ci.yml/badge.svg?branch=master\" alt=\"CI\"></a>\n  <a href=\"./LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"MIT license\"></a>\n  <a href=\"https://nodejs.org/\"><img src=\"https://img.shields.io/badge/node-%3E%3D22-339933?logo=node.js&logoColor=white\" alt=\"Node.js 22+\"></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/measured-on%20two%20harnesses-2ea043\" alt=\"Measured on two independent harnesses\">\n  <img src=\"https://img.shields.io/badge/clients-16-8b5cf6\" alt=\"16 clients\">\n  <img src=\"https://img.shields.io/badge/direct%20savings-before%20%2F%20actual%20return-3b82f6\" alt=\"Direct savings measured before and after\">\n  <img src=\"https://img.shields.io/badge/telemetry-opt--in-2ea043\" alt=\"Telemetry is opt-in and off by default\">\n  <img src=\"https://img.shields.io/badge/commercial%20use-MIT%2C%20allowed-0d9488\" alt=\"MIT, commercial use allowed\">\n</p>\n\n<p align=\"center\">\n  <img alt=\"Live Token Optimizer dashboard separating verified net MCP transport savings, excluded reports, per-agent attribution, and graph evidence\" src=\"./docs/media/live/overview-live.png\" width=\"1000\">\n</p>\n\n<p align=\"center\"><em>One local ledger for optimizer tools, live-graph substitutions, every agent, and the graph's own cost.</em></p>\n\n---\n\n## Why it wins\n\nProviders cache the prompt prefix: cached tokens re-read at **0.1x**, rewritten\nones bill at **1.25x**. Most compressors optimise bytes removed and ignore that\nmultiplier. This one optimises the bill.\n\n**It wins both columns.** Against a faithful reimplementation of the leading\nopen compressor's published design, `node bench/compression/proof.mjs`:\n\n<!-- PROOF-TABLE:START -- every figure below must appear in the output of\n     `node bench/compression/proof.mjs`. Guarded by\n     `node bench/compression/readme-table.check.mjs`; do not hand-edit. -->\n\n| workload             | payload | theirs | ours   | verdict |\n| -------------------- | ------: | -----: | -----: | ------- |\n| code-search          |  17765 |  92.1% |  97.6% | ours    |\n| sre-debugging        |  65694 |  92.2% |  98.4% | ours    |\n| issue-triage         |  54174 |  72.8% |  97.3% | ours    |\n| codebase-exploration |  78502 |  47.4% |  46.0% | theirs  |\n\n<!-- PROOF-TABLE:END -->\n\nFour workloads, because those are the four with a published comparator. The\nharness reports twelve; the other eight are ours alone and are not a\nhead-to-head.\n\n**`codebase-exploration` is theirs, by 1.4 points.** An earlier version of this\ntable claimed 61.3% for us on that row, and a later one claimed parity; both\nwere figures from a branch rather than from here. Measured on this tree it is\n46.0% against their 47.4%, and it is published as a loss because that is what\nit is. A number in prose is a fact about the tree it was measured on, which is\nwhy `bench/compression/readme-table.check.mjs` re-derives every figure in the\nblock above from the harness rather than trusting it.\n\n**Reduction is not the only column, and the other one goes to them.** Scored\nsymmetrically on their own fixtures, of 3,793 retention units they keep **1,890**\ndirectly visible in the text they send and we keep **345** — we reach a higher\nreduction partly by eliding harder, into a spill about 0.94x the size of the\ninput. Nothing is unrecoverably lost on our side, and a retrieval costs a turn.\nBoth numbers belong in any quote of either.\n\nAgainst the four published comparators: **ours on 3, theirs on 1.**\nThe tally is over comparators, not over workloads -- the harness runs twelve\nand eight of them have nothing to compare against.\n\nThe two columns come from different arms of the same engine, and that is the\npoint. `v3-history` compresses history too and matches them byte for byte;\n`v1-frontier` leaves the cached prefix alone and wins the invoice by 11–42%.\nMaximising bytes removed is available and is not the default, because on a\ncached prefix it costs money.\n\nThe competitor arm is this repository's reimplementation of their published\ndesign — opaque hash markers, history compressed, a retrieval tool and system\nmessage injected — not their binary, and it is held to the same signed-content\nguard we hold ourselves to.\n\n### On whole sessions\n\n`node bench/compression/session-replay.mjs` replays real recorded conversations\nturn by turn and prices each the way a provider does. Four independent sessions,\nwhole request including system prompt and tool schema, against no proxy:\n\n| conversation length | **ours**   | cheaper on |\n| ------------------- | ---------- | ---------- |\n| 10 turns            | **0.953x** | **4 of 4** |\n| 20 turns            | **0.915x** | **4 of 4** |\n\nThis is the region nothing else touches: conversation history is ~65% of a live\nrequest and the only part that grows every turn. The saving grows with session\nlength, because model reasoning accumulates.\n\n### On end-to-end agent tasks\n\nTHOL, 16 real tasks against a no-proxy control:\n\n- **cheaper on 11 of 16 tasks**\n- **median cost 0.926x**, **median turns 0.671x**\n- **zero quality cost**: mean score **0.994** against control's **0.994**,\n  lower on **0 of 16 tasks**\n\nOne run per task, so the aggregate interval still spans 1.0; the per-task tally\nand the score parity are the solid parts. Every figure here is regenerated from\nthe committed benchmarks, which ship in this repository.\n\n## The 30-second version\n\nYour agent burns most of its context on work it already did: re-reading files\nthat have not changed, dumping a whole file to see three lines, running\nunbounded searches, and re-deriving conclusions it reached last session and then\nforgot.\n\nToken Optimizer attacks that on four fronts.\n\n**1. It makes the expensive call impossible.** Install the plugin and a built-in\n`Read` of a 200 KB file is **denied**, with the refusal naming the cached,\ndiffed replacement. Same for `Grep`, `Glob`, `Edit`, `Write`, and `cat` /\n`head` / `grep -r` through the shell. **Re-reading a file you already read this\nsession returns only a diff** — usually the single biggest win, and one that\nsize-based rules structurally cannot catch. There is no setting to turn on.\n\n**2. It remembers what your agent worked out.** A per-project knowledge graph\naccumulates findings, decisions and dead ends as a side effect of working, then\nfeeds them back the moment the agent touches the relevant file. A finding costs\n~150 tokens to carry. Re-deriving it costs 5k–50k.\n\n**3. It measures itself, in public, and tells you when it is losing.** A\nmaterialized before/actual-return measurement for MCP progressive disclosure,\nwith later expansions debited from the same net. Modeled graph substitutions\nand the randomized control arm for downstream graph effects remain separate.\nEvery number is measured, visibly collecting, excluded, or absent.\n\n**4. It attributes the traffic.** Returned context, optional cost equivalents,\nand net transport avoided are grouped by operation and MCP handshake identity. Codex, Claude Code,\nGemini, and any other connected client get separate rows. Old records without\nidentity remain explicitly unattributed instead of being assigned to whichever\nagent happens to be open now.\n\nNo account, no telemetry, no hosted service. MIT, so it is usable at work.\n\n### What the dashboard proves on a real machine\n\nThe screenshots in this README come from the shipped server reading persisted\nlocal data, not a design mockup. In the capture above it reports:\n\n- **43,491 net verified MCP transport tokens avoided** in the current live\n  proof: 54,037 gross reduction minus a deliberate 10,546-token expansion;\n- **486,074,740 historical/tool-reported tokens quarantined**, dominated by\n  repository scan volume that never entered model context;\n- a live Codex / Claude Code / Gemini stdio smoke against AiDotNet, with each\n  client attributed independently;\n- **2,648 graph nodes, 6,527 edges, and 58 findings** across 11 local projects;\n- **more than 1,000 hook runs with zero failures and zero timeouts** across six\n  active CLI clients in the selected rolling 24-hour window;\n- **6,332 tokens of modeled graph-substitution potential**, excluded from the\n  verified headline while the causal graph-reuse study remains `Collecting`.\n\nThe dashboard now reads native CLI usage receipts and prices uncached input,\ncache reads, cache writes, and output with the exact captured provider, model,\nroute, request-time tier, and versioned official source. Ambiguous model ids stay\n**Not priced** instead of receiving a blended guess. API/list-price equivalents\nare kept separate from provider-reported charges and are never labeled as a\nsubscription invoice. See the [token accounting contract](./docs/TOKEN_ACCOUNTING.md).\n\n## Quick start\n\n**Claude Code** — install the plugin, not the bare MCP server. The plugin is\nwhat enforces; adding the server alone just gives the model tools it can ignore.\n\n```text\n/plugin marketplace add ooples/token-optimizer-mcp\n/plugin install token-optimizer@token-optimizer\n/reload-plugins\n```\n\nThat is the entire installation. [All sixteen clients →](#installation)\n\nThen, whenever you want to know what to do next:\n\n```text\ntoken_audit\n```\n\nOne ranked queue: what is costing the most per session, with an optional monthly\ncost equivalent only after you configure your own effective rate. Each line\nnames how to fix it. Not a dashboard, not six reports — a queue.\n\n---\n\n## The knowledge graph — the part nothing else has\n\nEvery agent session ends the same way: the reasoning evaporates. The next\nsession re-derives it, at full price, forever.\n\nThis builds a **living per-project graph** — nodes for files, symbols, tasks and\nfindings; edges for `derived_from`, `contains`, `supersedes`, `contradicts`,\n`related` — and it fills itself in from real work. No ingestion job, no\nembedding model, no rebuild step, no query to formulate.\n\n```\nyou touch  src/auth.ts\n           │\n           ├─ verify() compares exp against the LOCAL clock          (finding, 0.9)\n           ├─ per-host retry budgets; global was rejected — deadlock (decision)\n           ├─ ! the skew fix was reverted once already               (dead end)\n           └─ [git] 47 changes in 90d, last three: \"fix token expiry\",\n                    \"revert skew fix\", \"fix token expiry again\"\n```\n\nNone of that is in your repository. It exists only because an agent once burned\ntokens finding it out — and every other tool throws it away at the end of the\nsession.\n\n**What a default install actually produces.** The structural graph — files,\nsymbols, tasks, and the edges between them — is captured from ordinary tool\ntraffic with no configuration at all. Findings are produced two ways. At session\nend, `derive` reads evidence already on disk (command outcomes and exit codes,\nred-to-green transitions, corrections, re-read churn) and writes findings from\nit: no model call, no credential, nothing sent anywhere. And the active model\nrecords durable conclusions itself through `wiki_write`.\n\nThe **model-based semantic harvest** is the third path, and the only one that\nneeds something you do not already have. It is **not opt-in** —\n`TOKEN_OPTIMIZER_HARVEST=0` turns it _off_ — but its real gate is a credential:\nwith none it reports `off:no-key`, which is the state on CI, corporate machines,\nand subscription-only logins. Point `TOKEN_OPTIMIZER_HARVEST_ENDPOINT` at a\nlocal model and it runs **free and private, with nothing leaving the machine**.\n`npx token-optimizer-doctor` states which of these is live.\n\n### Why this is not RAG\n\n| Classic RAG                                                    | This                                                                          |\n| -------------------------------------------------------------- | ----------------------------------------------------------------------------- |\n| Retrieves **evidence**; the model re-derives meaning each time | Retrieves **verdicts** — the reasoning already happened                       |\n| Index built by a **batch ingestion job**                       | Accretes from **real agent traffic** — coverage follows attention             |\n| **Similarity** search                                          | **Traversal** — this symbol _and its callers_                                 |\n| Model must **formulate a query**                               | Fires when the model **reaches for a file**                                   |\n| Staleness **invisible**; serves rotted chunks confidently      | Staleness **computed** from content hashes, served with the invalidating diff |\n| Returns only what is **in the documents**                      | Returns **dead ends**, which exist nowhere in your source tree                |\n\nTraversal plus lexical search: deterministic, instant, explainable, and it works\noffline.\n\n### The zero-turn refusal\n\nA plain deny costs a full turn: the model calls `Read`, is refused, re-plans,\ncalls `smart_read`. But at refusal time we already hold the file _and_ the\nsnapshot the graph stored — so the refusal **carries the answer inside it**.\nNothing to re-plan, no second call. Turn cost drops from one to zero.\n\nAnd when the graph already holds the verdict a tool output would support, the\noutput never enters context at all. Not compressed. Absent.\n\n---\n\n## The dashboard\n\n```bash\nnpm install\nnpm run build\nnpm run dashboard      # http://localhost:3100\n```\n\n<p align=\"center\">\n  <img alt=\"Per-agent token accounting with historical rows left unattributed and live Codex, Claude Code, and Gemini rows measured separately\" src=\"./docs/media/live/agent-accounting-live.png\" width=\"1000\">\n</p>\n\nThe overview answers the questions a token optimizer should answer first:\n\n1. **How much MCP context did it avoid?** The headline is gross materialized\n   payload reduction minus every later linked expansion. Graph estimates are\n   intentionally separate.\n2. **How much context still reached the agents?** Every successful current MCP\n   result records its actual returned text, even when no valid before-state\n   exists. That row is context-accounted but savings-unmeasured.\n3. **Which agent and action spent it?** The client ledger and action table show\n   operations, returned context, optional cost equivalent, and net tokens\n   avoided. Lifecycle-only clients say `Not measured`; no zero is invented.\n4. **Did remembering cost more than it saved?** Delivery and semantic-harvest\n   tokens are charged to the graph. A causal benefit is added only after the\n   treated/holdout evidence gate passes.\n\n### Walkthrough: get useful data, not an empty dashboard\n\n1. Install the MCP server and the native adapter for your CLI. The MCP handshake\n   provides per-client accounting; native lifecycle hooks provide automatic\n   routing, capture, health, and delivery where the client protocol permits it.\n2. Use `smart_read`, `smart_grep`, `smart_glob`, `smart_edit`, or any other MCP\n   operation normally. Every successful result records returned context; tools\n   with a comparable materialized before-state also record a gross reduction;\n   later `expand` calls debit that reduction.\n3. Let the active model record durable conclusions with `wiki_write`. Before a\n   new agent re-derives work, call `wiki_read` for the project or the files it is\n   about to touch. Native clients can also deliver matching knowledge\n   automatically.\n   Use `wiki_query` to read the graph directly — one finding by key, a ranked\n   BM25 search over claims, a node with its neighbours, or the graph's own audit\n   — which is how a subagent that never sees the SessionStart briefing reaches\n   what previous sessions established.\n4. Open `http://localhost:3100`. Use **Overview** for combined accounting and\n   **What it knows** for capture health, graph exploration, audits, and causal\n   evidence.\n5. To register existing local repositories without reading their source, run\n   `npm run projects:discover -- /absolute/path/to/repos`. This makes coverage\n   gaps explicit; it does not fabricate findings.\n\nFor maintainers, this live smoke exercises the shipped stdio transport and\ncreates separately attributed rows without seeding the analytics database:\n\n```bash\nnpm run dashboard:attribution-smoke -- /absolute/path/to/project /absolute/path/to/large-file\nnpm run dashboard:verify-live -- http://localhost:3100\n```\n\n<p align=\"center\">\n  <img alt=\"Structured cross-client hook and MCP health cards from live local data\" src=\"./docs/media/live/capture-health-live.png\" width=\"1000\">\n</p>\n\nThe health panel is deliberately operational rather than a raw text dump. Each\nclient has activity, runtime failures/timeouts, policy outcomes, and observed\nsurface coverage. Diagnostics keep no prompts, commands, paths, or tool output.\n\n<p align=\"center\">\n  <img alt=\"Direct graph savings, remembering cost, holdouts, and an honest collecting causal study\" src=\"./docs/media/live/graph-balance-live.png\" width=\"1000\">\n</p>\n\nModeled substitution potential and causal graph effects are different claims.\nThe first is a full-file counterfactual and is never promoted to the verified\nMCP headline. The second asks whether delivered knowledge prevented later reads;\nit uses a control arm and remains `Collecting` until there are at least 20\ntreated file touches and 5 holdouts with valid downstream joins.\n\n<p align=\"center\">\n  <img alt=\"Interactive 3D knowledge graph spanning eleven local projects\" src=\"./docs/media/live/graph-explorer-live.png\" width=\"1000\">\n</p>\n\nDrag to orbit, scroll to zoom, click a node for provenance, or switch to the\nbounded one-hop focus view. The default **All known projects** scope pools local\ngraphs through opaque project IDs; filesystem paths never reach the browser.\n\n**Audit tab.** Contradictions, stale findings, and low-confidence claims remain\nreviewable instead of silently becoming model truth.\n\n**Evidence console.** Client/model/task cohorts, matched effects with 95%\nintervals, live outcome joins, harm feedback, and capability tiers for all 16\nclients. Release and superiority claims fail closed while evidence is missing.\n\n**One-click Markdown export.** The accumulated graph becomes documentation you\ncan inspect, edit, and commit.\n\nServer-side by design: the browser asks for a neighbourhood, a search result or\na page. A mature graph holds thousands of nodes, and shipping it wholesale would\nmake every page load a multi-megabyte download for a view that shows twenty\nthings.\n\nThe default **All known projects** scope combines captured graphs through an\nopaque machine-local project registry; filesystem paths never reach the\nbrowser. Lifecycle hooks register repositories as they are used. To backfill\nexisting local checkouts without reading their source files, run the bounded\ndiscovery command against one or more explicit roots:\n\n```bash\nnpm run projects:discover -- /absolute/path/to/repos /absolute/path/to/worktrees\n```\n\nCoverage distinguishes repositories with graph data from known repositories\nwhose capture has not started. The balance cards are backed by persisted events:\n**Memory deliveries** counts graph context actually supplied to an agent,\n**Kept back for comparison** counts randomized control touches, and **Cost of\nremembering** combines delivered-context tokens with measured semantic-write\npayload cost. **Reading avoided** stays `Collecting` or `Not measured` until at\nleast 20 treated file touches and 5 holdouts exist with a downstream join; the\ndashboard does not manufacture a savings estimate from missing data.\n\nSee the [cross-client capability contract](docs/CLIENT_SUPPORT.md) and the\n[live evaluation suite](evals/README.md).\n\n### Cross-client lifecycle diagnostics\n\nEvery native hook writes the same bounded JSONL lifecycle record, including\nClaude Code's custom router and compaction paths. Records carry the client and\nplugin versions, event, hashed session/turn correlation, latency, outcome,\ninput/output byte counts, and response key shape. They deliberately retain no\nprompt, command, tool output, file content, or raw working-directory path. The\nfields include OpenTelemetry log severity and resource semantics so the local\nfiles can be collected without inventing a second schema.\n\n```bash\nnpm run diagnostics                         # last 24 hours, summary-first JSON\nnpm run diagnostics -- --hours 72 --output hook-summary.json\nnpm run diagnostics -- --include-events --limit 100 --output hook-report.json\n```\n\nRaw event rows are opt-in and capped at 1,000. The default report contains aggregate health and\nat most twenty recent failures/timeouts, keeping routine troubleshooting output small enough for\nCLI and model context windows.\n\nThe dashboard's **Capture health** panel shows runs, failures, timeouts and\np50/p95 latency by client. Logs rotate at 5 MiB, retain at most 40 files for 14\ndays, and live under `.token-optimizer/logs` when a state directory is set (or\n`~/.token-optimizer/logs` otherwise). `TOKEN_OPTIMIZER_LOG_DIR`,\n`TOKEN_OPTIMIZER_LOG_MAX_BYTES`, `TOKEN_OPTIMIZER_LOG_MAX_FILES`, and\n`TOKEN_OPTIMIZER_LOG_RETENTION_DAYS` override those operational defaults.\n\n---\n\n## What it does that other optimizers do not\n\n### Compression that does not break the cache, or lose the needle\n\nAn optional local proxy compresses tool results, search output, logs and\nconversation history on the way to the model. A hook cannot do this: the\n`PostToolUse` output schema is `{hookEventName, additionalContext?,\nclassifierContext?}` and `updatedOutput` occurs nowhere in the client, so a hook\ncan add context but never replace a result. The proxy never tries to -- it\nrewrites the outbound request, where those results already sit as history.\n\nTwo things make it different from simply compressing harder.\n\n**It never rewrites cached content.** A cached prefix bills at 0.1x and a cache\nwrite at 1.25x, so compressing history can cut tokens while multiplying the\nbill. Measured on our own benchmark: compressing behind the cache breakpoint\nremoves more raw tokens on every workload and costs more money on every\nworkload. Compression stops at the frontier, and cache-weighted tokens are\nreported beside raw ones so the trap is visible rather than inferred.\n\n**It keeps the rows that matter.** Eliding a long array after the first few rows\nscored 95.7% on a search payload here and destroyed both the UUID record and the\nerror record planted in it -- the only two rows anyone would have searched for.\nThe engine now keeps every row that departs from the shape, wherever it sits:\n92.4% with the needles intact. A gate in the benchmark fails the build if a\nplanted needle disappears, because a size metric alone cannot tell compression\nfrom truncation.\n\nReduction over the content each strategy is permitted to rewrite, on fixtures\nmatching the four workloads HeadRoom publishes (their figures from their\nREADME; ours from `bench/compression`, which anyone can run):\n\n| workload             | ours  | theirs |\n| -------------------- | ----- | ------ |\n| issue triage         | 98.9% | 72.8%  |\n| code search          | 98.2% | 92.1%  |\n| SRE debugging        | 92.8% | 92.2%  |\n| codebase exploration | 61.3% | 47.4%  |\n\nThese are not their corpora, which are unpublished; the code workloads read real\nfiles out of this repository and the rest are generated to the shape and scale\nof their published ones, from their own benchmark generator's definition.\n\n**Reduction is not the bill, and the two disagree.** Cache changes the\narithmetic: a cached prefix is re-read at 0.1x and a rewritten one is charged at\n1.25x, so an arm can remove more bytes and still cost more. Run\n`node bench/compression/proof.mjs` and that is exactly what happens -- the\nHeadRoom-style arm removes a larger share of every workload and loses on\ncache-weighted effective tokens on all of them:\n\n| workload        | raw reduction, ours / theirs | effective tokens, ours / theirs |\n| --------------- | ---------------------------- | ------------------------------- |\n| code search     | 85.0% / **96.8%**            | **859** / 1,068                 |\n| SRE debugging   | 86.2% / **97.2%**            | **1,783** / 2,141               |\n| issue triage    | 90.7% / **98.0%**            | **439** / 557                   |\n| grep output     | 47.1% / **53.4%**            | **6,896** / 8,971               |\n| raw build log   | 50.1% / **55.0%**            | **15,937** / 17,943             |\n| browser session | 20.3% / 20.3%                | **18,407** / 18,539             |\n\nThe competitor arm is this repository's own reimplementation of their published\ndesign -- opaque hash markers, history compressed, a retrieval tool and system\nmessage injected -- not their binary. It is implemented to win where it can: the\nraw column is theirs on six of six.\n\n**On whole sessions.** `node bench/compression/session-replay.mjs` replays real\nrecorded conversations turn by turn and prices each one the way a provider does,\ncharging the longest byte-identical leading run at 0.1x and everything after at\n1.25x. Four independent sessions, whole request including system prompt and tool\nschema, against no proxy at all:\n\n| turns | HeadRoom's design | ours (v4-substitute) | cheaper on |\n| ----- | ----------------- | -------------------- | ---------- |\n| 10    | 1.000x            | **0.953x**           | 4 of 4     |\n| 20    | 0.999x            | **0.915x**           | 4 of 4     |\n\nThe replay uses stored transcripts, which discard reasoning text while retaining\nsignatures. Its savings therefore do not establish that useful reasoning survives\ncompression. It also uses our reimplementation of the competitor's design;\nthese are offline estimates, not results from their shipped proxy.\n\n**Live comparison against HeadRoom's shipped proxy.** The balanced four-arm run\nrecorded in commit `f712b4ec` used `bench/live/ab.sh`, rotated each arm through\nevery position, and re-ran pytest independently after each task:\n\n| arm                                                      | mean weighted input tokens | tests passed |\n| -------------------------------------------------------- | -------------------------: | -----------: |\n| uncompressed control                                     |                    134,706 |          4/4 |\n| Token Optimizer, previous 1,500-character deferral floor |                    100,818 |          4/4 |\n| Token Optimizer, zero floor (now the default)            |                     49,053 |          4/4 |\n| HeadRoom shipped proxy                                   |                     48,626 |          4/4 |\n\nWeighted input is `input + 1.25 * cache_creation + 0.1 * cache_read`; it excludes\noutput cost. Both zero-floor Token Optimizer and HeadRoom reduced that measure\nby about 64% versus control. Token Optimizer used about 0.9% more than HeadRoom.\nThis small arithmetic repair task does not establish superiority across tasks,\ncompression quality, or total cost. Rotation balances run position, but does\nnot guarantee that shared provider-cache effects disappear.\n\n**Codex three-task comparison against HeadRoom 0.37.0 (2026-09-18).** Three\nsynthetic controlled-read tasks, three repetitions, three arms, every arm in\nevery position. All 27 runs returned the correct answer, so this compares cost\nat equal correctness rather than accuracy. HeadRoom ran in `--mode token`, its\ncompression-first setting, not the `cache` default that exists to freeze the\ncache hit rate.\n\n| arm                             | mean input tokens | of which cached | output | requests | agent seconds |\n| ------------------------------- | ----------------: | --------------: | -----: | -------: | ------------: |\n| uncompressed control            |            55,632 |          43,079 |    200 |      3.0 |          19.1 |\n| Token Optimizer                 |            42,468 |          33,052 |    189 |      3.0 |          17.3 |\n| HeadRoom 0.37.0, `--mode token` |            71,626 |          51,897 |    285 |      4.3 |          27.3 |\n\nInput reduction against the control was 22.7% on the log task, 34.3% on the JSON\ntask and 11.5% on the code search; against HeadRoom, 54.9%, 10.0% and 42.2%.\nEvery task favoured this proxy on both comparisons, and the JSON column is where\nHeadRoom is strongest and the margin thinnest.\n\nThe mechanism is visible in two numbers that move independently. Mean input per\nREQUEST was 14,156 here against HeadRoom's 16,529 and the control's 18,544 --\nboth proxies compress, and this one compresses harder. Mean requests per RUN was\n3.0, the same as the control, against HeadRoom's 4.3. A compressor that elides\ncontent the agent then has to read back spends a turn recovering it, and on\nthese workloads a turn costs more than the elision saved; that is the failure\nthis project's own deferral floor exists to avoid, and it is what the extra\n1.3 requests are.\n\nWHAT THIS DOES NOT SHOW. These are token counts, not dollar costs, and\n`bench/live/report-codex.mjs` deliberately declines to price them. Three short\nsynthetic workloads do not establish a universal win. Each task ran in a fresh\ntemporary workspace with no knowledge graph, so graph injection contributed\nnothing and this measures compression alone. Cached tokens are a subset of the\ninput column, not an additional charge. HeadRoom's compression is scored from\nprovider usage rather than byte counts recorded at our own listener.\n\nReproduce with `HEADROOM_MODE=token node bench/live/codex.mjs`, then\n`node bench/live/report-codex.mjs <evidence-dir>`; the figures above were read\nonly after that reporter returned `valid: true` with `balanced: true` and no\nfailures. Four earlier campaigns were discarded rather than published: one ran\nwithout HeadRoom's `[proxy]` extra so every HeadRoom run errored before\nreadiness, one ran HeadRoom in its `cache` default, one was voided by the\nreporter for an incomplete request capture, and one died on `ENOSPC` with the\nhost disk full.\n\nThe subsequent Claude Code default-versus-aggressive confirmation hit Claude's\nweekly usage limit and is incomplete. Its missing usage cannot count as a win.\nCodex validation runs independently through the Responses API.\n\n**Latest Codex joint confirmation (2026-09-16).** The frozen twelve-family study\ncompleted 120 pairs against installed HeadRoom 0.37.0. Our proxy passed 119/120\nattempts; HeadRoom passed 120/120. One local allocation crash left unknown usage.\nThere were **77 strict joint wins** (passing, cheaper, and faster), 20 cost-only\nlosses, 12 speed-only losses, nine losses on both measures, one equal-time pair\nthat cost more, and the failed attempt. Across the **119 fully measured pairs\nonly**, estimated token cost was 26.9% lower and agent time 30.1% lower. JSON\nagent time was 5.6% higher. Only logs and refactoring met the simultaneous\nper-family criteria; the complete-study superiority gate failed. These results\ndo not establish that every task is cheaper or faster. The measured build\npreserves explicit nulls, retains complete numeric tables, and avoids copying\nunchanged payloads. See the [full results, every loss, and retained crash](bench/live/evidence/joint-confirmation-2026-09-16/README.md).\n\n**Earlier expanded local Codex confirmation.** A preregistered seven-family study ran\n70 pairs / 140 attempts against installed HeadRoom 0.37.0. Our frozen proxy\npassed 70/70; HeadRoom passed 69/70 with one upstream HTTP 503 and missing usage.\nThe complete-ledger gate therefore failed: **superiority was not established**.\nAcross the 69 fully measured pairs only, descriptive totals were 25.7% lower\nestimated cost, 38.9% lower input, and 30.0% lower agent time for our proxy.\nJSON remained a loss (35.1% higher estimated cost). See the\n[protocol, all attempts, and limitations](bench/live/evidence/confirmation-2026-09-15-v2/README.md).\n\nA subsequent rare-string-group fix targets that JSON loss. In three fully measured\nfresh pairs, input fell 17.7%, estimated cost 13.4%, and agent time 13.6% versus\nHeadRoom, with three requests each. A fourth pair had a retained upstream 503 on\nour arm; one measured pair still cost more. These are development results, not\nconfirmation of the new build or an all-workload win. See the\n[complete screen and exclusions](bench/live/evidence/json-categories-2026-09-16/README.md).\n\n**Current amended Codex study.** The next fixed 70-pair schedule completed:\nour proxy passed 69/70 and HeadRoom 70/70. Our remaining attempt hit an upstream\n503 with unknown usage, so strict superiority was not established. Across the\n69 fully measured pairs only, estimated cost was 27.9% lower, input 44.2% lower,\nand agent time 31.7% lower. Every family's mean cost favored our proxy, including\nJSON at 27.5% lower, but 13 individual pairs still cost more. The run includes a\ndisclosed repair to a between-case file-hashing failure; the original product and\nschedule stayed fixed. See the [full results, amendment, and retained failure](bench/live/evidence/confirmation-2026-09-16-v3-continuation/README.md).\n\n**Exact search rows, subsequent development.** Factoring shared declaration syntax\nwhile preserving every identifier and value closed the code-size gap: 37.5% fewer\nbytes than archived HeadRoom on the original 40 losing inputs. Eight fresh local\ncases also sent fewer bytes. Four balanced live pairs all passed their audits;\nour estimated token cost was 50.1% lower, input 44.8% lower, and agent time 51.1%\nlower. This is a small development follow-up, separate from the broader study.\nSee the [captured bodies, reconstruction checks, and live evidence](bench/live/evidence/search-columns-2026-09-16/README.md).\n\n**Cost-loss follow-up (2026-09-16).** We investigated all 13 losing pairs and\nimplemented exact ID-prefix factoring plus support for records inside truncated\nshell envelopes. A fixed follow-up of those 13 cases passed all 26 attempts;\n12 pairs favored our proxy, with 33.4% lower total estimated cost. The remaining\nloss exposed the outer-envelope bug. After fixing it, two balanced controlled\npairs both favored our proxy: all four attempts passed, estimated cost was 34.3%\nlower, and input was 15.9% lower. These development runs retain every original\nloss; cache and model variation also affect results. See the [case-by-case audit,\nfixes, exact replay, and live evidence](bench/live/evidence/cost-losses-2026-09-16/README.md).\n\n**Local proxy performance (2026-09-16).** Against installed HeadRoom 0.37.0,\n2,160 completed local-upstream requests covered repeated and unique logs, JSON,\nand code-search output in three rotated arm orders. Our mean latency and process\nCPU were lower in all six groups. Sampled peak process-tree private memory was\n80.0 MiB versus 1,909.9 MiB; this is footprint, not allocation volume. Unique\ncode still forwarded 5.7% more bytes. HeadRoom's rate limit was disabled for this\nthroughput measurement; compression settings stayed default. These measurements\ndo not measure model quality or billed cost. See the\n[raw samples, reproduction commands, and limitations](bench/live/evidence/local-proxy-performance-2026-09-16/README.md).\n\n**Live Codex comparison (2026-09-15).** Local Codex CLI 0.154.0, `gpt-6-astra`,\nand installed HeadRoom 0.37.0 completed a balanced 27-run campaign. All three\narms passed all nine tasks; every initial read was complete, and all provider\nledger totals matched Codex's reported usage.\n\n| workload            | mean input, ours | mean input, HeadRoom | reduction vs HeadRoom |\n| ------------------- | ---------------: | -------------------: | --------------------: |\n| JSON outlier lookup |           39,318 |               44,043 |                 10.7% |\n| code search         |           44,427 |               82,697 |                 46.3% |\n| log diagnosis       |           39,203 |               84,308 |                 53.5% |\n\nThese counts include cached input and extra retrieval turns; they are not raw\ncompression percentages or dollar costs. Output tokens did not improve on every\nworkload. See the [Codex evidence and limitations](bench/live/evidence/codex-2026-09-15/README.md)\nand [reproduction instructions](bench/live/README.md). These three synthetic tasks\ndo not establish superiority across all workloads.\n\nA separate **27-run natural-workflow development screen** passed all runs and\nmeasured 35.5%, 43.5%, and 16.6% less total input than installed HeadRoom for retry\nbug fixes, multi-file refactors, and configuration refreshes. These are small\nsynthetic repositories with natural tool selection. Uncached input and latency\nhave separate results; see the [workflow evidence and limitations](bench/live/evidence/codex-workflows-2026-09-15/README.md).\n\nThe proxy is enabled by default and binds loopback only.\n\n**It is now on without launching anything through us.** Until 7.1.0 the only way\nto be routed was to start the client through our wrapper, so anyone who installed\nwith `/plugin` and then opened Claude Code from a shortcut, an IDE or the desktop\napp saved nothing -- and the doctor reported that as a broken installation rather\nthan as a feature that never applied. Installation now writes the endpoint into\nClaude Code's own `settings.json`, which is the one thing a session we did not\nstart will read, and a small background proxy serves it. Four rules make that\nsafe to switch on:\n\n- **Recorded.** Every value written is stored with whatever was there before.\n  `token-optimizer-uninstall --apply` restores it exactly, and refuses when the\n  value is no longer the one we wrote -- if you change it, it is yours again.\n- **Never written on hope.** The entry appears only after the proxy has actually\n  served the route. A settings file naming a dead port does not degrade politely:\n  the client cannot reach its provider at all.\n- **Self-healing.** The check runs again at every session start, before the first\n  model request, and removes the entry the moment the route cannot be served.\n- **Hands off what is not ours.** A client already pointed at another local proxy\n  is left alone, and a settings file we cannot parse is never rewritten.\n\nSet `TOKEN_OPTIMIZER_DEFAULT_ROUTING=0` to keep the wrapper-only behaviour, or\n`TOKEN_OPTIMIZER_PROXY_AUTOSTART=0` if you do not want a local background service\nat all. Either one also undoes an entry already written.\n\n**Managed commands.** Global npm installs activate Claude hooks and wrap the\nclient commands you actually have -- `claude`, `codex`, `gemini`, `opencode`,\n`qwen`, `crush`, `droid`, `cn` (Continue), `copilot` and `amp` -- in Command\nPrompt, PowerShell, Bash, and Zsh when lifecycle scripts are enabled. Only\ncommands already on your PATH are wrapped, so installing this does not claim a\nname for a client you have not installed; `TOKEN_OPTIMIZER_MANAGED_CLIENTS` takes\na comma-separated list (or `all`) when a client lives somewhere PATH cannot see,\nand `0` skips shell activation entirely. Windows installs add owned `.cmd`\nlaunchers to the User PATH, so profiles and PowerShell execution-policy changes\nare not required. For local installs or disabled lifecycle scripts, run\n`token-optimizer-install`. Reopen the terminal to load the updated PATH and shell\nactivation. Each managed session starts its own proxy, registers the packaged\ncore MCP tools (including wiki), and shuts the proxy down on exit.\n`token-optimizer-run <client> ...` works without shell activation.\n\n**Which clients can be routed, and which cannot.** Ten have a supported way to\nredirect model traffic and are listed above. Claude Code and Gemini have exactly\none provider each, so they are routed on installation. The rest choose a provider\nin their own configuration, and are routed once that configuration names an\nendpoint -- because forwarding on a guess would deliver one provider's\ncredentials to another company. Six clients cannot be routed at all: Cursor,\nCline, Windsurf, Kilo, Roo and Zed run the assistant inside the editor process\nand expose no documented redirect. Everything else -- the optimizer tools, the\ngraph, the hooks -- still applies to them, and the doctor states the limitation\ninstead of counting it as a failure.\n\n`token-optimizer-route` shows what is running and what configuration has been\nwritten on your behalf. Zed is the one client that can be routed and cannot be\nrouted for you -- its provider is a named entry you pick inside the editor, and\nonly you know which endpoint and model it should use:\n\n```bash\ntoken-optimizer-route                                                  # what is routed right now\ntoken-optimizer-route zed --upstream https://api.openai.com/v1 --model gpt-4o\ntoken-optimizer-route zed --remove\n```\n\nZed's provider schema here comes from its published settings documentation and\nhas not been exercised against an installed Zed in this repository. It is\nwritten into a file the command can take back out, and nothing is written unless\nthe route is already being served.\n\nExisting custom provider authentication stays in the client, and your own\nendpoint stays yours: the proxy is inserted in front of whatever you configured,\nnever in place of it. `TOKEN_OPTIMIZER_PROXY=0` disables routing and\n`TOKEN_OPTIMIZER_MODE=off` disables optimization. npm lifecycle scripts may be\nblocked, so package installation alone is not proof that activation ran.\nOpenCode's session plugin uses its resolved configuration and project directory;\naccount credentials and provider files stay in place. Unsupported endpoints and\nprovider modes retain native routing. Claude routing controlled by local\nmanaged-policy files or Windows registry policy also stays native. Remote/MDM\npolicy can arrive after launch; the launcher reports observed model traffic, not\njust listener startup.\n`doctor` checks routing configuration.\nRequest-body capture is opt-in via `TOKEN_OPTIMIZER_PROXY_CAPTURE`; when enabled,\nit writes plaintext request content to the named directory.\nCapture queues are bounded to 128 requests and 16 MiB of queued snapshots and\nmetadata. Excess captures are rejected with a warning while requests continue;\nlive audits reject incomplete capture evidence. See the\n[allocation hardening and follow-up results](bench/live/evidence/allocation-hardening-2026-09-16/README.md)\nfor the reproduced OOM fix, constrained-memory replay, and remaining cost losses.\n\nYour provider key is forwarded in the request headers and is never read, stored\nor written by the proxy. That is a narrower claim than \"nothing sensitive is\nwritten\", and the difference matters: the proxy does write _message content_ to\ndisk, described next, and it does not inspect that content for secrets. If a\nsecret is in your conversation, it can reach a spill file the same way any other\ntext does.\n\nIt will not reach an unencrypted network, though: an upstream that is neither\n`https` nor loopback is refused rather than forwarded to, and with no upstream\nconfigured the proxy serves only Anthropic's own routes -- so a client for a\ndifferent provider is told to name its provider rather than having its key sent\nto the wrong company.\n\n**It does write some payload to disk, and you should know exactly when.** An\nelision has to name a way back to what it removed, and content that arrived in a\ntool result has no file of its own -- so that content is written to a _spill\nfile_ and the marker names its path. This happens only when an engine actually\nelides something recoverable-by-path: a JSON array tail, a set of function\nbodies, a passage of prose. Requests below the size floor, requests nothing\nclaims, and every elision that is lossless are all written nowhere.\n\nSpills go under your OS temp directory in `token-optimizer-spill/`, one file per\ndistinct content, created `0600` (owner read/write only) and named by an HMAC of\nthe content under a salt generated fresh in each proxy process -- so the name\ndiscloses nothing and two runs do not collide. They are never read back by us;\nthe agent reads them with the `Read` tool it already has, which is the whole\npoint of a path instead of a hash.\n\nThey are **not** deleted while the proxy is running, and that is deliberate: a\nmarker whose spill has been swept is exactly the dangling reference this design\nexists to avoid, and the agent may follow a path many turns after it was\nwritten. So retention within one run is bounded only by the distinct content you\nelide -- there is no quota, and a very long session that elides constantly can\naccumulate.\n\nWhen the proxy stops, its spill directory is removed. Each proxy process gets\nits own directory under `token-optimizer-spill/`, so stopping one never sweeps\nanother's live paths, and the moment it stops is also the moment no agent can\nstill be following one of them. If a run ends without that cleanup -- a kill\nsignal, a power cut -- the directory is left behind in your OS temp directory\nand is safe to delete by hand. Running with the proxy off writes no spills at\nall.\n\n### Three switches, and what each one trades\n\n| variable                          | default    | what it does                                               |\n| --------------------------------- | ---------- | ---------------------------------------------------------- |\n| `TOKEN_OPTIMIZER_PROXY`           | on         | the compression proxy itself; set `0` to opt out           |\n| `TOKEN_OPTIMIZER_COMPRESSION`     | `balanced` | `balanced`, `aggressive`, `conservative`, `lossless`       |\n| `TOKEN_OPTIMIZER_PROXY_KNOWLEDGE` | on         | put what this project already learned in the cached prefix |\n\nBoth of the `on` rows said `off` here until 7.1.0, which was wrong about the\nshipped code rather than a change of default: an unset value has always meant\nenabled, and `0`, `false`, `no` and `off` are what turn either one off.\n\n`lossless` is worth knowing about: it forbids every transform that removes\nsomething the output cannot reconstruct -- function bodies, array tails,\nlower-signal prose -- and keeps the ones that can, which is whitespace, null\nkeys, folded duplicate lines with their timestamps listed, repeated path\nprefixes, and back-references to content still in the request. Measured on the\ncodebase-exploration workload it still removes 12.2%, with **zero** lossy\nelisions. For review or audit work where \"the model can read the path\" is not\nan acceptable answer, that is the setting.\n\nPresets are a starting point, not a ceiling: the library takes a\n`CompressionOptions` object layered over the preset, so \"aggressive, but keep\nsix head rows\" is expressible.\n\n### The graph, in the cached prefix\n\n**The expensive failure here is turns, not tokens.** This project measured a\nposture that cut nothing and cost 1.471x through extra turns alone. So a\nfinding that prevents one wasted turn pays for a great deal of context.\n\nThe knowledge graph knows things that would prevent them, but until now it\nreached the model two ways and both arrive too late or too dear: a SessionStart\nindex chosen once from the opening task text, and a `PreToolUse` advisory that\nfires _after_ the model already decided to make the call it is advising about --\nso acting on it costs the very turn it was meant to save.\n\nVerified project findings enter the **cached prefix** by default, with a\n2,000-character budget. The proxy freezes the selected block for a conversation\nto preserve the cache; new sessions can select newly recorded findings. This\nincludes the Codex Responses API path. Shared graphs exclude project-specific\nclaims. Set `TOKEN_OPTIMIZER_PROXY_KNOWLEDGE=0` to disable injection.\n\nAdded knowledge is reported separately as `injectedChars`. It adds input tokens;\nnet cost improvement requires measuring whether it prevents enough work.\nEarlier head-to-head results do not establish that the newly enabled combination\nwins every workload.\n\n### Images\n\nAn image block was invisible to all of this until recently -- every walker keyed\non `block.text`. That matters because an image costs about `width * height /\n750` tokens, so one 1456x816 screenshot is roughly 1,585, re-sent as history on\nevery later turn. A browser-driving agent sends the same frame repeatedly, and\nthose repeats now collapse to a reference to the copy already in the request.\nDimensions come from the file header, so there is no codec dependency; resizing\nis deliberately not done for the same reason.\n\n### Relevance: BM25 by default, a model if you want one\n\nRetention is ranked by BM25, which is why this needs no Python, no model\nweights and no RAM floor, and why it is deterministic enough to keep a cached\nprefix byte-stable. Lexical has a ceiling, though: \"the database ran out of\nhandles\" shares no token with \"connection pool exhausted\", and worse, BM25\ndoes not go quiet on that question -- it confidently picks the wrong line.\n\nSo there are two ways to do better. `registerRanker` installs any synchronous\nranker. Or supply a `SemanticEncoder` and let the proxy warm an embedding\ncache: a request-level async pre-pass embeds the candidate units in one batch,\nand the engines then read vectors synchronously, exactly as before. An\n`onnxruntime-node` adapter is included, loaded dynamically so the runtime is\nnever a dependency of this package.\n\nAnything the pre-pass did not see falls back to BM25 rather than scoring zero\n-- a missing vector is our omission, not evidence about the line.\n\nThe adapter is verified against **real inference**, not mocked:\n`npm run verify:onnx` runs nine checks against a 2.3 KB ONNX graph with real\nweights, committed alongside the generator that builds it. It is a script\nrather than a jest test because onnxruntime checks `instanceof Float32Array`\nin native code and jest's per-suite VM realm has its own typed arrays; CI\ninstalls the optional runtime and runs it.\n\n**Not claimed:** that an embedding model actually beats BM25 on these\nworkloads. The mechanism is proved and the measurement is not done.\n\n### Compaction is consolidation, not loss\n\nEveryone else checkpoints and restores what you _had_ — which spends the\nscarcest budget in the session replaying context you already paid for.\n\nSelection here is **derived**, not a category list: `cost-to-rederive ×\nirrecoverability × reuse-probability`, with dead ends and decisions on a floor,\nbecause cheap-to-find is not the same as cheap-to-find-_again_. Restoration then\nadapts to the situation — mid-problem, cold resume, or in-flow — within a\nmeasured budget:\n\n> **Where you were:** does clock skew explain the 401s?\n> ruled out: token signing, clock drift on the client\n> untested: NTP skew on the server\n\nThat is resuming a thought. A summary describes one.\n\n### Progressive disclosure that knows what you asked\n\nA large tool result becomes a preview chosen by the **session's actual\nquestion**, after parsing the output's shape (test report, diff, stack trace,\nlog, JSON) — not the first 40 lines because they are first.\n\n```\n[selected against: \"which shard fails?\"]\n--- failures ---\n  FAILED  DBNetTests.BceOnRelu -- expected 0.0 got NaN\n  FAILED  TftGradientFlow -- gradient did not reach the encoder\n---- omitted: 1,760 lines of passing tests (expand 8bb6bd66) ----\n```\n\nEvery cut is **named**, because a model reasoning over a silent truncation\ncannot know it is missing anything. `expand` serves from a content-addressed\nstore — it never re-runs your test suite — and expanding both teaches the next\npreview and promotes what you needed into the graph, so the second expansion\nnever happens.\n\n### Prompt-cache economics, measured from your own transcript\n\nProvider caches are billable and provider-specific; a cache hit is not a free\ninput token. For example, Anthropic publishes separate cache-read and\ncache-write multipliers, while OpenAI and Gemini expose their own cached-input\nusage and pricing rules. Token Optimizer reads native cache fields when the\nclient supplies them and keeps reads, writes, uncached input, and output\nseparate. It never applies one provider's cache multiplier to another client.\nThe attribution view then does the part a hit rate cannot:\n\n```\n! CLAUDE.md:2 has an embedded timestamp, invalidating everything after it\n    about 329,421 tokens re-written per session\n```\n\nAttributed to a line, priced by what sits _behind_ it. Keep-warm is decided by\nexpected value from your observed gaps, per TTL tier — and when neither tier\npays, it says so.\n\n### Model routing decided by outcomes, not by task size\n\nEveryone guesses from task shape and never checks. This reads which model ran\neach episode and what happened — retries, errors, turns — and prices **both**\nmistakes: what an overpowered model wastes, and what an underpowered one costs\nin retries. A tier that needs a retry in more than half its episodes is excluded\nat any price, because four cheap turns that fail are not cheap.\n\n### Waste detection that becomes a ratchet\n\nA report is read once and forgotten. Here a detection produces a **durable,\nmeasured, reversible fix** — a skip rule, a composite touch — plus a ~50-token\nsession-start briefing so the waste never starts. Detectors are a shipped floor\n_plus_ patterns derived from your project's own history, each carrying what it\nhas actually saved:\n\n```\ngenerated/schema.d.ts: read in 9/9 sessions, never the source of a finding\n    3,400 tokens/session; cost equivalent not priced; apply: waste_audit action=\"apply\"\n```\n\nAnything that touches **your** files is proposed as a diff and never applied.\n\n### One audit across every project\n\n`fleet_audit` ranks your whole machine by measured cost, and does something a\nper-project scanner cannot: a fix proven in one project is offered to the others\ncontaining the **same file contents**, carrying the evidence from where it was\nmeasured. Matching is by content hash, never by filename.\n\nIt also runs the natural experiment nobody else can — enforcing clients versus\ndirective ones — and reports it whichever way it falls, with the confound\nstated.\n\n---\n\n## Trust: we ship hooks that refuse your tool calls\n\nThat is a bigger ask than a normal dependency makes, so:\n\n**Verify the release.** Published from CI with npm provenance — `npm audit\nsignatures` ties the artifact to the workflow run and the commit, without\ntrusting us. `CHECKSUMS.sha256` ships alongside for offline checking.\n\n**If nothing seems to be happening, the lifecycle bundle is probably not\ninstalled.** An MCP server process cannot modify the host that launched it, and\nnpm 11 gates lifecycle scripts behind `allow-scripts`. Install the native\nplugin/hook bundle listed for your client below; adding only the MCP server gives\nthe model tools but no pre-execution veto. For a legacy global Claude Code\ninstallation, recovery is one line:\n\n```bash\nnpx token-optimizer-install     # wire Claude Code hooks\nnpx token-optimizer-doctor      # prove the Claude hooks work\n```\n\n**Check that it works — not that files exist.**\n\n```bash\nnpx token-optimizer-doctor      # or npm run doctor, from a clone\n```\n\nIt feeds a synthetic payload to the _real_ hook binary and asserts a large read\nis refused and a small one is not. A checklist would have passed on the exact\nbug this project once shipped, where the plugin was connected, visible in\n`/mcp`, and saving nothing. Every failure names its own fix.\n\n**Every refusal carries its own off switch.** Enforcement that hides its disable\nis coercive, and the person who needs it is mid-refusal, not reading a README:\n\n```\nauth.ts is 91 KB. Call smart_read instead.\n(Not what you wanted? TOKEN_OPTIMIZER_MODE=off disables enforcement.)\n```\n\n**Removal is exact.** The installer records every file it wrote, with hashes.\nUninstall removes only what still matches; anything you edited since is left in\nplace and named. Your own hooks are never touched, and we never rewrite your\n`settings.json` — we merge into it.\n\n```bash\nnpm run uninstall-hooks              # show the plan; changes nothing\nnpm run uninstall-hooks -- --apply   # carry it out\n```\n\n---\n\n## It separates direct savings from causal graph evidence\n\nEvery tool in this space reports \"tokens saved\" computed from its own\nassumptions. That number cannot be wrong, because nothing checks it.\n\nFor optimizer results, this records the materialized before-state and the text\nactually returned to the client, then subtracts any linked expansion responses.\nNative graph-substitution counterfactuals stay labeled as modeled and outside\nthe main headline.\n\nThe graph's broader claim—whether delivered knowledge prevented later\nre-reading—is causal, so it runs a **randomized holdout**. Delivery is silently\nwithheld on a slice of file touches, stratified by file, and the effect is the\ndifference in downstream reads between arms. That effect is not added to the\ncombined net until the experiment can support it, and the page will tell you\nplainly:\n\n> the graph is NOT yet paying for itself\n\nA tool that can only ever report good news is not reporting. The same discipline\nruns throughout: an unmeasurable saving renders as **unknown**, never as zero,\nand never as `$0.00` — because \"cannot tell yet\" printed as \"saved nothing\" is a\nsilent false negative, and dollars get quoted to other people.\n\n## It runs everywhere, and says which tier\n\nThe tier is a protocol guarantee, not a preference:\n\n- **Lifecycle continuation:** Claude Code, Codex, GitHub Copilot CLI, Gemini CLI,\n  Qwen Code, and Cursor. Native routing/capture/delivery plus one active-model\n  completion reflection.\n- **Native observation:** Cline, OpenCode, Kilo, and Windsurf. Native\n  routing/capture/delivery; the active model performs semantic writes.\n- **MCP + rules:** Roo Code, Zed, Amp, Continue, Crush, and Droid. MCP-visible\n  activity and explicit graph tools, with no claim over hidden built-in calls.\n\nThe exact surfaces still differ. For example, a protocol that can replace a\nlarge read before it reaches the model provides a stronger token guarantee than\none that can only observe it. The generated registry, adapters, dashboard, and\ncertification report all read the same capability source so those claims cannot\ndrift independently.\n\nEvery config shape is confirmed against that client's published documentation,\nwith the source URL recorded in its README.\n\n## Everything here is verified, and you can run it\n\n```bash\nnpm run verify:all\n```\n\n| Suite            | Checks | What it proves                                                                                                          |\n| ---------------- | ------ | ----------------------------------------------------------------------------------------------------------------------- |\n| `test`           | 2,437  | Enforcement, staleness, injection, consolidation, disclosure, cache, routing, trust — driving the real hooks over stdin |\n| `verify:clients` | 253    | Every client config, lifecycle manifest, and enforcement surface matches its documented schema                          |\n| `verify:harvest` | 26     | Request shape, response parsing, and that **no secret from a tool result crosses the wire**                             |\n| `verify:ui`      | 22     | Real headless Chromium: layout, label collisions, legibility                                                            |\n| `doctor`         | 10     | The installed hooks actually refuse, and the server actually answers                                                    |\n\nThese are not decoration. They found six client configs that would have failed\n**silently**, an installer that destroyed user hooks, a Windows path bug that\nmade enforcement blind to half its own refusals, and an uninstaller that printed\na plan and deleted nothing.\n\n## OrcaRouter\n\n[OrcaRouter](https://www.orcarouter.ai) is an OpenAI-compatible AI gateway that\nroutes many providers behind one endpoint. It is wired here as a first-class\nprovider for the optimizer's own model calls, with **two independent ways in**:\n\n| Choice              | Provider id        | What it does                                                       |\n| ------------------- | ------------------ | ------------------------------------------------------------------ |\n| `OrcaRouter - API`  | `orcarouter`       | You paste an `sk-orca-…` key you already hold. Nothing opens.      |\n| `OrcaRouter - Auth` | `orcarouter-oauth` | OAuth 2.0 + PKCE: a browser asks for consent and issues you a key. |\n\nBoth produce the same ordinary OrcaRouter API key, and everything downstream —\nthe Bearer header, the endpoint, model discovery, `401` recovery — is identical\nwhichever one you used. The two are not interchangeable in the UI on purpose: a\nsingle button that sometimes asks for a key and sometimes opens a browser makes\nlogout, reauthentication and support harder.\n\n![The OrcaRouter card showing both authentication choices side by side, with the stored key masked](./docs/media/orcarouter/auth-methods.png)\n\n### Configure it\n\nOpen the dashboard (`npm run dashboard`) and use the **OrcaRouter** card, or set\nit from the environment:\n\n```bash\nexport ORCAROUTER_API_KEY=sk-orca-…          # the API-key choice\nexport TOKEN_OPTIMIZER_ORCA_MODEL=orcarouter/auto   # which model the optimizer calls\n```\n\nOr connect with an account instead, which writes the issued key under\n`$TOKEN_OPTIMIZER_HOME` (default `~/.token-optimizer`) with owner-only\npermissions:\n\n```bash\ntoken-optimizer-route orcarouter --connect   # opens a browser, then stores the key\ntoken-optimizer-route orcarouter --status    # shows a redacted status and the origins in use\ntoken-optimizer-route orcarouter --clear     # removes the stored key\n```\n\n**A PKCE-issued key is durable, not a refresh token.** OrcaRouter returns a\nlong-lived key, not an access/refresh pair, so it is reused until you revoke it\nat <https://www.orcarouter.ai/console/authorized-apps> — there is no refresh to\nschedule and re-authorizing on every launch would hit the account's limit of ten\nkeys per 24 hours. When the relay answers `401`, the exact account and credential\ngeneration that made the rejected request is marked for reauthentication, and\nnothing attempts a refresh. Refreshable OAuth tokens rotate automatically;\ndurable key grants such as OrcaRouter are reused until the provider revokes them.\n\n### Origins\n\nAuthentication and inference are **different hosts**, and neither is derived from\nthe other:\n\n| Purpose                          | Default                        |\n| -------------------------------- | ------------------------------ |\n| Consent screen and code exchange | `https://www.orcarouter.ai`    |\n| Inference and model discovery    | `https://api.orcarouter.ai/v1` |\n\n`https://api.orcarouter.ai/v1/auth/keys` is a 404 — the auth endpoints are not\nunder the relay. Self-hosted installs can set `ORCA_BASE_URL` for a single shared\norigin, or `ORCA_AUTH_BASE_URL` / `ORCA_API_BASE_URL` separately; explicit values\nwin, and cleartext HTTP is permitted only for loopback.\n\n### Models\n\nThe model control is a listbox built from `GET /v1/models` on the configured\norigin, using your own key so the list is what your workspace can actually call.\nModel ids keep their `vendor/model` namespace. Options are filtered per entry\npoint, and a model that does not declare a capability is **not offered** rather\nthan offered and then rejected:\n\n- text chat — `?capability=chat`, and the model must declare an `openai`,\n  `anthropic`, `gemini` or `openai-response` endpoint type;\n- multimodal — the same, plus an explicit `architecture.input_modalities` entry\n  for the modality being sent (an undeclared capability fails closed);\n- embedding, image, video and rerank — matched strictly against the\n  `embeddings`, `image-generation`, `openai-video` and `jina-rerank` endpoint\n  types.\n\nIf discovery fails, a small **verified fallback** list is shown and labelled as\nsuch (`openai/gpt-5.5`, `anthropic/claude-opus-4.8`, `google/gemini-3.5-flash`,\n`deepseek/deepseek-v4-pro`, `orcarouter/auto`), with its context, modality and\nreasoning-effort metadata intact. A successful live result is authoritative and\nnever has the fallback mixed into it.\n\n| Text entry point                                                                                    | After switching to images                                                                                                                           |\n| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |\n| ![The model listbox open on the live chat catalog](./docs/media/orcarouter/text-model-dropdown.png) | ![The model listbox after switching to images, holding only models that declare image input](./docs/media/orcarouter/multimodal-model-dropdown.png) |\n\nThe second capture is after the entry point is switched to images: the text-only\nselection is cleared, and only models whose catalog entry declares image\ninput remain.\n\n`npm run evidence:orcarouter` regenerates the screenshots and assertions for the\ncard into `orca-evidence/` (untracked — it is a run artifa","readmeFilename":"README.md"}