{"_id":"xtctx","_rev":"46-fe9f30f8b76a22a66c576512d0954b7e","name":"xtctx","dist-tags":{"latest":"0.22.1"},"versions":{"0.3.2":{"name":"xtctx","version":"0.3.2","license":"MIT","_id":"xtctx@0.3.2","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"8e1cb986556897cb423880a671229b59cabb2615","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.3.2.tgz","fileCount":217,"integrity":"sha512-BaU13/xvnoc7VdRynFft36qFCez3vW4nDW03JvQ+zDud2gvXU/IFlLtYbE4GhWviUwqSy04n8uY2mqvZLeYqiA==","signatures":[{"sig":"MEYCIQCcABDC/33VniJEihtVxs+LWLkwQ5kXmxLySmMVOT7vywIhAN2OIF6atjygjsyODKmxSl9A3BOX5C9heTK7viJ7ZK4g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1842206},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d95575e6d707f5ce30d22ec0dff0a3657b4ff319","scripts":{"api":"tsx src/api/server.ts","dev":"tsx watch src/cli/index.ts","mcp":"tsx src/mcp/server.ts","lint":"eslint src/ tests/","test":"vitest run","build":"tsc","prepack":"npm run build && npm run build:bundle-web","web:dev":"npm --prefix web run dev","smoke:cli":"node dist/src/cli/index.js --help","web:build":"npm --prefix web run build","test:watch":"vitest","landing:dev":"npm --prefix landing run dev","web:preview":"npm --prefix web run preview","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/api/security.test.ts","web:copy-dist":"node scripts/copy-web-dist.mjs","verify:release":"npm test && npm run test:security && npm run security:checklist && npm run build && npm run build:bundle-web && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","build:bundle-web":"npm run web:build && npm run web:copy-dist","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs"},"_npmUser":{"name":"fstubner","email":"felix.stubner@gmail.com"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.6.2","description":"Cross-tool context for AI coding agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"glob":"^11.0.0","yaml":"^2.7.0","helmet":"^8.1.0","express":"^5.0.0","chokidar":"^4.0.0","commander":"^13.0.0","apache-arrow":"^17.0.0","better-sqlite3":"^11.0.0","@lancedb/lancedb":"^0.13.0","express-rate-limit":"^7.5.0","@xenova/transformers":"^2.17.2","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.3.2_1772149070645_0.07419657808260016","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"xtctx","version":"0.11.1","license":"MIT","_id":"xtctx@0.11.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"bfd71f06aead9426ecf6f9c8a3991e36b8262ec7","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.1.tgz","fileCount":144,"integrity":"sha512-ym7NTLKvb+2AE/HuCP7hBJs0CovKbpoTXQuWqj5Lt84/tVKkudeg35g2h8tWBG5Sj/KFSXf0/oHac/jmSgsVaQ==","signatures":[{"sig":"MEUCICTuZfcu911iPXjJEa9Ei5LICZABHGp9CJ74FN8a3AvaAiEA+9BEnRNTwvlyH7eoAT+JIA0eTsF5rXUmk5sFrlV0+/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":540418},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"23de0aa80a5984d8b3a697cbbb4a65344ee54fd9","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:drift":"vitest run tests/drift","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit --omit=dev && npm run test:drift && npm run build && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.16.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"glob":"^11.0.0","yaml":"^2.7.0","commander":"^13.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^11.0.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^24.0.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.1_1785934466441_0.22453165788186502","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"xtctx","version":"0.11.3","license":"MIT","_id":"xtctx@0.11.3","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"5731c6311f7c40b41802cd9cb506afec74210440","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.3.tgz","fileCount":152,"integrity":"sha512-8hM3xSwHUxbwy5Jtv/aHTSd3zvwMQtB9WQbmzirzwCCQK3hpjQ7LCkA1V6qCS/FXaMWMlzp6nU6F52D7w6QJiA==","signatures":[{"sig":"MEUCIEPmi4LgN0t9fHf5m9K9OXJhgTMnoZZSuJG4EDh6AvJ9AiEA8cQ1ci+XwvsEkC9tqQB4fb4B7lBn3WgQRDJXOsxn4tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":627394},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"29bc181241b29f20b6e880ce55f4e80bdda610d3","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:drift":"vitest run tests/drift","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^11.0.0","yaml":"^2.7.0","commander":"^13.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^11.0.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^24.0.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.3_1787189295073_0.7428204741096127","host":"s3://npm-registry-packages-npm-production"}},"0.11.4":{"name":"xtctx","version":"0.11.4","license":"MIT","_id":"xtctx@0.11.4","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"d66e4ed0658e83ba5235ca4cf5c60f97f6e71d4e","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.4.tgz","fileCount":152,"integrity":"sha512-8cyRrfbsvuzoSJIxu/1Hie+vjbKAys6XlTIVmwu3ygqI+zJ15y7hWWW/E9JABgE/kWyNYQnbGA+b3Q04wSHppg==","signatures":[{"sig":"MEYCIQDrGsvYNYDBrZBclxSuezOF6zMxApX7krqZe3fwsdyNegIhAPYMOfVhRCwZsLwVebCxQK3epiWced7zQrKkpsN4xwCd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":627828},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"221682b42f8b6832df8f61b51be71daf72cefb7f","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:drift":"vitest run tests/drift","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^11.0.0","yaml":"^2.7.0","commander":"^13.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^11.0.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^24.0.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.4_1787191869577_0.06515954370546684","host":"s3://npm-registry-packages-npm-production"}},"0.11.5":{"name":"xtctx","version":"0.11.5","license":"MIT","_id":"xtctx@0.11.5","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"9254936d8e39104aca5cd491257b8ea2fc6d8e01","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.5.tgz","fileCount":152,"integrity":"sha512-RG6mhT2f1gPuUYefdk3pMVCsY7jD5viTHDUz7kx5N6LRTdGIc/fXUVPUCUiIkoLOHZjzhar9hIH8YaOlTjNvYA==","signatures":[{"sig":"MEUCIBG/WXBKDvyKDgK4R9z679shcJSbSIM9ZYb74iooagwBAiEAsmtK2CPxuZx/tORYJOhlBSEBLKYMoNn2LZokVqIrOB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":628108},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"7896aeec7f1de92e2774d6c5a7da7d0067d62054","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:drift":"vitest run tests/drift","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.5_1787194190817_0.5326632586624551","host":"s3://npm-registry-packages-npm-production"}},"0.11.6":{"name":"xtctx","version":"0.11.6","license":"MIT","_id":"xtctx@0.11.6","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"219b80dbe6456abb230fcbe28eb9ca35aa344bd6","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.6.tgz","fileCount":152,"integrity":"sha512-2C4uD9SFZHtFSTTVU3Soh3u82ivDz9lFM/XdoRSa0kYNh2UzUHQXxZLAhjTMqn5BJSEgw0m2a0b389SIqiqGPQ==","signatures":[{"sig":"MEYCIQC5ObgV4WSfIC80HWJjHzrrEao9qA3xBf6++K+McDNWYwIhAJ4R5SAPhwLA0iJfbYayIiznOpgh7wseOhQLHQa/IM1E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":628791},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"a39ceb9d28040a381ead6becb6785c0d4a7c9b0a","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.6_1787196642756_0.4684307574598403","host":"s3://npm-registry-packages-npm-production"}},"0.11.7":{"name":"xtctx","version":"0.11.7","license":"MIT","_id":"xtctx@0.11.7","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"5c3ba1a21e521de8a5ee9d7c3e5f1b76f70babe8","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.11.7.tgz","fileCount":152,"integrity":"sha512-MF9svtZwHHSU7gLtEq9VtoXcIgFZ5Ng8IHaqy2czCjFr2Fp8aKEgY1dYLAtBRIP2O9rQJ/629cnPyLtdVRUTrQ==","signatures":[{"sig":"MEUCIBFxFEa/3cASd4AqbvyQBs96Cie8rBj5Zh1eAIwCoHByAiEA0TQ/hGH+XOca7pB+LGwJZroYb29TBHA8+q2YjEmMA0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.11.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":631970},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"8f0cdf707b53d8dfcac307fa1856fb0f92d61399","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.11.7_1787220920268_0.3034761552698588","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"xtctx","version":"0.12.0","license":"MIT","_id":"xtctx@0.12.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"57fadbc70cd8234ee0f1294b77aa57887781e39c","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.12.0.tgz","fileCount":152,"integrity":"sha512-+VIZNhinjabP5lpMvT3cb/eCUBbTkAJvYBvGqe93kKXXt6rw0JEeK8xj0mkGvihTe+NT4xNXxtXwXalDRNl2yA==","signatures":[{"sig":"MEUCIBK6LBtz83NKFfCSYAgvjf8TzcMyNhMXnmhE3yBe2LESAiEAgrtlsl57Z4Jfp63796zCcrTJE5hps1VK27YOjZPyw6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":632581},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"0b7677dddec6a6736d0f33f2ef229bf57c878eca","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.12.0_1787223565211_0.6879053574391059","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"xtctx","version":"0.13.0","license":"MIT","_id":"xtctx@0.13.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"164bfdce15f32893d0ec9656145761f997a87de6","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.13.0.tgz","fileCount":152,"integrity":"sha512-soTT/bSQvh11oL1bT9xFOWaTpMbZTYEcEZJWb3Sr5WbHd3HrfzKy+eM5MfS+z0xklK7FUaktFCJi/8Y0mQlRNg==","signatures":[{"sig":"MEYCIQDE0AUPCJ45fzhGkbX6bVJxH1AgVf8gF4UlUXL0ZpwcTwIhAO4jKg7RU8Lo9rdauuA22JRWgBIlDFptUFk6seaTLSyc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":634957},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"97ca9f081a0633e66c98d6aee0f44069352afc66","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.13.0_1787226025256_0.4937651202488018","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"xtctx","version":"0.13.1","license":"MIT","_id":"xtctx@0.13.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"c17ab7467f426c63de70a8b6735c26388ab2206f","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.13.1.tgz","fileCount":152,"integrity":"sha512-67xX/pzzMqP3Xu5o0MKUfb7kIe80q2Aaqk/05MxSZnx05bRHkD2pnS3QdZUfnrEXkjTBCgXobHZ+UqiEsiUJcA==","signatures":[{"sig":"MEUCIQCLMDvtlc4ftT0l/55+nf2tLntIWrkG4iyjFXm6tU36vwIgZIfZ02JvwqD44pkqcKHbX/PrdTNvzztFZJKNd+dxeuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636831},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"8b07ccd5fce9b976ea7950b4f0d135cbfaad5491","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.13.1_1787227905093_0.4758998963753607","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"xtctx","version":"0.14.0","license":"MIT","_id":"xtctx@0.14.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"0b76bc035dcfd5758c33df4f73934051b79643a3","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.0.tgz","fileCount":156,"integrity":"sha512-DsrmFFe+Wo42ouBppeol9NWiK24qj0QBmqsWcIzrndCLR6EJLsDRJus1xCQxTfRBc3pkJVt/XKRCt0V0V3WvYg==","signatures":[{"sig":"MEYCIQDgTQQQN4eV51T7My5/GkijV2/po3Iqij/r7SrOIH9K3gIhALCY2VbQ6NEyPRLX2VmBr9BhhOci3rQ6GfkoxjvJNhsv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":683401},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"d49d9a12cd2678a31345d87d5c732ec1fd3295fa","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.0_1787310991779_0.5285638055483368","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"xtctx","version":"0.14.1","license":"MIT","_id":"xtctx@0.14.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"89e4161c84bee144a65057835beb6b965189d099","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.1.tgz","fileCount":156,"integrity":"sha512-7EIOEelhRzk7xDe+WuwCAOV8ghGCYdcdEwysXyRNPCOGzVfRp+/GFZ4lX/fWSFCxW0unDdwuSHhp8gw/5qJ4sA==","signatures":[{"sig":"MEYCIQDjQMBqfYBcdrCv3BDNkHcm4BKZftp3QHNYklNMi+fiMQIhAI3azWEUyFFEjAToNcmb6qLk3MbqApTz7eQa5BLCeZXr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":689345},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"80b930067aa07ca85b039d15620a8e2e5f47551c","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.1_1787314363927_0.7537838633806708","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"xtctx","version":"0.14.2","license":"MIT","_id":"xtctx@0.14.2","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"3a563b08ff9e4ea0fb6e3a2871a38a2cc944666f","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.2.tgz","fileCount":156,"integrity":"sha512-y5Ji4eB7ks8ep57cWcbC8KMW++uEvHm78D/Z8LWpZTkue7TJoDWXB1yyxqzAT+6Pw+mqbgVzeZd7X3SNyN+b1w==","signatures":[{"sig":"MEQCIGCfGrAf1LxpSJeFJwa07q9dZrdlPnqhT/ZEo3xl7ikTAiBD40Er4yK4+ArDVQZkGbQK3miiuzQZJwqz8v65VF/9+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":689956},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"98c99048336c4640c2911cf2b37fac8ddb2b81db","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.2_1787325469149_0.9582681886993554","host":"s3://npm-registry-packages-npm-production"}},"0.14.3":{"name":"xtctx","version":"0.14.3","license":"MIT","_id":"xtctx@0.14.3","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"d00c56a53d5cb9a98d95ca7b388618a35b711ae0","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.3.tgz","fileCount":156,"integrity":"sha512-B6bB38Mg2nMa/KKoeKK38hloDM1UhxCRJwQ6QTQDHTP25JHn4zCoeIfQw5js8VB8y4KTSr20dh6UBITc1Tp/KQ==","signatures":[{"sig":"MEYCIQDwoJ2CdKg0leMfbHXPNfOm8zGxFLY4BDuvOGB4Od0QEwIhAI7oc6+Hf734/Jbdy48z7h1YZ0bQU27EIoO2JALUDXDc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":700236},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"1f9b074dfdaa6532cf78fbd148340e100c7fee3f","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.3_1787339153050_0.11192524874435916","host":"s3://npm-registry-packages-npm-production"}},"0.14.4":{"name":"xtctx","version":"0.14.4","license":"MIT","_id":"xtctx@0.14.4","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"fc23fc2c72ec188344644b1256a555dd10aac0f0","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.4.tgz","fileCount":156,"integrity":"sha512-yZgIC4eG9aiUjyBH9QGEbG2NWipTiLVTsZlzUL6xUf6a1siL6mellhbiB5OHVYkR9YeBKYBuH1NtEP941B4sBg==","signatures":[{"sig":"MEYCIQCbtG36AbupfhRe4T6aQWaJ75Xfgpzc1h75iFq4/foUIQIhAOWjSt+dLHhe/GUK05j+7WklPYaRB5ynQ6O0H/JwVyAM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":705227},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"5f4aa8505c69fd37e8cf4c18983c1d48d7ed670c","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.4_1787443549258_0.42957234944528766","host":"s3://npm-registry-packages-npm-production"}},"0.14.5":{"name":"xtctx","version":"0.14.5","license":"MIT","_id":"xtctx@0.14.5","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"889c54a70468b5f5baf87afc80f602e17e2a2956","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.5.tgz","fileCount":156,"integrity":"sha512-ASeUwCOa57OFr/CIkULzzm58p13N5WuIFa/7pTWQJQCMkhY+6zd4ZDuRepP9sILlrXWM7Q/4NUaPSEsfOXqLmw==","signatures":[{"sig":"MEUCIE3Gl1bMrSKHo80FfKW2IPeYb3ZJ3wxNPdyC/296jppZAiEAtNcTFT5Wumf9o3D2y7+C5HNMsPtbgO9uljs2MFNSuy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":706071},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"2616bacabe7420d78c0aac5c1a6de22586caacf0","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.5_1787446578010_0.6976315205431347","host":"s3://npm-registry-packages-npm-production"}},"0.14.6":{"name":"xtctx","version":"0.14.6","license":"MIT","_id":"xtctx@0.14.6","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"657c84b0874673fc0e938a4fd957141350544593","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.6.tgz","fileCount":156,"integrity":"sha512-zKbIZqB59TBmrKsR1PnT/l3mTXnU66XyD6aLLKqa45QHGomICIZgwh9DzL8+XBrSFVSt21tfI+qWiaY0S1eECw==","signatures":[{"sig":"MEQCIBKfnogemFdb3UavvVKh14tWAgub0J0OLtSfEiBCAICYAiBQGufkfN6mY9AoCXB2oJ9IOwfXJ0u+lnJm4RhGpib1kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":706404},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"8c67639d0380ce3a547d5405579124f6f84faf51","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.6_1787447837279_0.09901714474970724","host":"s3://npm-registry-packages-npm-production"}},"0.14.7":{"name":"xtctx","version":"0.14.7","license":"MIT","_id":"xtctx@0.14.7","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"bc47be6d550ab1893529abfbea9512024716230a","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.7.tgz","fileCount":156,"integrity":"sha512-7jEqvsaCIgEV4QzTueOPHyEVtSvDCBgVFTpawt+4NsQKejg+KRFhcVxQCtWhBBdnc8o0ZwBgGRqwmZ0yBCZKPw==","signatures":[{"sig":"MEQCIATAimvAtvvmlJLpvbUUSc/vVR/wRKIyTBas1WQgLrPmAiBP5ubLRIu18aZgnqVAZo23jj89Hv1EpZSCbH/fBgRDuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":706738},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"51ab7a8e605d6fef59c8816bbc645cd8608ae9a0","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.7_1787448615292_0.9728109867474819","host":"s3://npm-registry-packages-npm-production"}},"0.14.8":{"name":"xtctx","version":"0.14.8","license":"MIT","_id":"xtctx@0.14.8","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"12d8becf3a69f441b79ad7aa4771a7192897addb","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.14.8.tgz","fileCount":156,"integrity":"sha512-8Yn7tWYJ/EtcP+eIwBpdoP+NTogG7UK2oyQSzuc53YW5keiMgaBw6LEn1IshvI6N5MC0qMjBJk+ss6vMSM6ImA==","signatures":[{"sig":"MEUCIGvsTRG2MDFdenM/wbmygOLJ3lhV7LSIDuCF9IaWp8HmAiEA+8sE9vcQj1DGVV/0Ct1tp29SEJtuhSL7+7wLt3Wa7fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.14.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":709441},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"fad0f453db5de47b22d24e07d29e08077cd3b7b2","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.14.8_1787450070808_0.417245665590088","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"xtctx","version":"0.15.0","license":"MIT","_id":"xtctx@0.15.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"f615cd84dd67ead8f18cb284573c5b973e7672c5","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.0.tgz","fileCount":156,"integrity":"sha512-v+bK3mpsT5hSHD5tgMB+XTx1n1TqPNsv17ARCSfF8552mCJQ+xuvetPhosmUMy3ejACdF7aRJwB0jH++s4Rd4w==","signatures":[{"sig":"MEQCIHlUxmDkipM2UNBSAjeF8d7ShUL31fhw4FmrzXEwuwJqAiBZi4b8z86/w840tR0+wKFUSVF6LFVtyYSHJ72AxFWtYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":709816},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"6b31d8d71a5be2819cc4a12d99283d683ddf60f2","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.0_1787453797858_0.258245467596645","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"xtctx","version":"0.15.1","license":"MIT","_id":"xtctx@0.15.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"4862bf3672d059f4c9ef999d57529e19f94beb3a","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.1.tgz","fileCount":156,"integrity":"sha512-Y5z5WcSix4WSaQL32XtiftsGDXbSx0AE9Slgdt3hp+BUOU8KgIxT4XWMduFk94pzywmBI0rRZTPiW9X6Kh1Jgg==","signatures":[{"sig":"MEQCIB7AFEY6Vk61iOXOp4T3e1e2fXA63sEqgqHgPlru4X3GAiBiAjLwKs5XShnns4tUQwzm6OQMqh5t4vB2skarLLgGkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":710141},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"fb71ea3f4c68da1069c28bcc5a9507b1ae22acd3","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.1_1787455815414_0.8265152947092189","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"xtctx","version":"0.15.2","license":"MIT","_id":"xtctx@0.15.2","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"415cb5d9405163a7172d4523b201594d294b3539","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.2.tgz","fileCount":156,"integrity":"sha512-V77UgfH6y/oaD5voF0RnhRvFIIKCREjShPkhfvHH1DP9zU1qaS0DcnrJBKHRsw58OlyLfxw1Y5YWcTghxebM0Q==","signatures":[{"sig":"MEUCIEnSgyvvLPWJJmbWCMr/e3Z5V99s78rghwHdctip6VOTAiEA8zrBOJpXs2U9L70ECIjg0KDdQ5+IPfG4hfZYWc6JICE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":710468},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"6fca331b6dc6b58020e015c7c2fc6d9b61803234","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^10.0.3","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.56.1","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.2_1787458298694_0.17090645140076588","host":"s3://npm-registry-packages-npm-production"}},"0.15.3":{"name":"xtctx","version":"0.15.3","license":"MIT","_id":"xtctx@0.15.3","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"56ae04b1176f3f98d46908db89d65f5164aeb77f","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.3.tgz","fileCount":156,"integrity":"sha512-oyEGvwNR9QVZk9BpC0gRARtYkpHbcv2n0JlcLh3xnbiJiOMymj5J42IY4AAk0nJEM7iivusSxW1crUfUO6sf6g==","signatures":[{"sig":"MEUCID7VDRobVMMJUn+U/ThC2M9xoj9aip+PyQ8tvy2VKn7lAiEAjKmrKPEYFJzCFen30VJDVfVGUpcmqd9eE+rce0XCyP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":710803},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"647a10cbe1bd3397b35c6e0f91c9774dc1f8a2f7","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.3_1787459098109_0.3065871862505751","host":"s3://npm-registry-packages-npm-production"}},"0.15.4":{"name":"xtctx","version":"0.15.4","license":"MIT","_id":"xtctx@0.15.4","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"fb2513b772dd26c81113e92e33efa74dfc5c87dd","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.4.tgz","fileCount":156,"integrity":"sha512-4zXpuXBaie0Fj/9LnyR9ybVFnrx08kApjILzD9H/IxwQHKc7gyrvjzlre5s/xFi6jGb88IJgRsCIsSmuc+y4BA==","signatures":[{"sig":"MEUCIB4PqP8VFldE1JAEWKR6IY3tCUeJjYfS86tBxfd9EB9WAiEAmowbnj2taQFjFOwNzY1XMr9aGd8NsK1jK9pXSpzGQRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":711112},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"16f58646aeb99d0cc4ad619999ce0d94db65b2fd","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.4_1787459542871_0.5538555318538825","host":"s3://npm-registry-packages-npm-production"}},"0.15.5":{"name":"xtctx","version":"0.15.5","license":"MIT","_id":"xtctx@0.15.5","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"06e923ccb0e6a54578ed7ba886280aec15ce6a8f","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.5.tgz","fileCount":156,"integrity":"sha512-TfbV+xM/rySwMsquN2J6X+d7waoKegAz8AKfAZy0oapLuBTRtd69M2CjujlIQ8VjQGzrqFRq0ceXbbMO4ZDPiQ==","signatures":[{"sig":"MEUCIHZ5Ctrbnp2DfWKKbu7W5rggmb42M/X7l+dLCWYMQclPAiEAw7FCUywWKiTkcQlg7ezfOCy7su6Wa3BEkOOlC5KCCBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":711449},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"799e7c9893f2c37bba1a16c5089578b300ee8122","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.5_1787483363051_0.6995564358859814","host":"s3://npm-registry-packages-npm-production"}},"0.15.6":{"name":"xtctx","version":"0.15.6","license":"MIT","_id":"xtctx@0.15.6","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"e68e9fa0cfe80b58c099e699872614ce1f2c2971","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.6.tgz","fileCount":156,"integrity":"sha512-3sMkGFDlVsaSTwXIA/FQtF6je8ABIBriGN+cs+s0QtqbeYL20qzrlzdxP+sxUMZJ2fGyhi7OJ4gbpI08WxTHsw==","signatures":[{"sig":"MEUCIQCcC7Z5HC/PduPZMb3jqkhxP3O4o7JUr3KMworW+R7zyQIgOHpTxtUr5+GlYFJzzkeiLC24K6JN2FChQqu0aceV0jQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":724258},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"7e0b901bc734c6f8c85c570af959b595b534eeed","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.6_1787488821025_0.3659254196325996","host":"s3://npm-registry-packages-npm-production"}},"0.15.7":{"name":"xtctx","version":"0.15.7","license":"MIT","_id":"xtctx@0.15.7","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"5e4467d080c3701d6549b55d5c221dcd7d0e1157","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.7.tgz","fileCount":156,"integrity":"sha512-xIQuIYbIK+DhhLX7ntL014Ktwc2UFhfivCytQQhwMUq1lg5loKisOgrn2Em/pg7K2xV44wy3AvhGIFgtqCCoWw==","signatures":[{"sig":"MEUCIC7Jv5qImJIAYItSBJd3hp0JP2QIyIho661l+PCm1XsmAiEAlY9XJFJBeZvEBzmdvhf3d7L5qPHsxatyPFWmNVSb6nE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":737964},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"d0746f1213b52297e0e22cf49b1ba322e5f6b7bb","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.7_1787494812230_0.07041930935382124","host":"s3://npm-registry-packages-npm-production"}},"0.15.8":{"name":"xtctx","version":"0.15.8","license":"MIT","_id":"xtctx@0.15.8","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"b2539ad4a4b95430836096e5354284ee524c25a8","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.8.tgz","fileCount":156,"integrity":"sha512-HmmRTIR1uO9cBfb81uTLtbFruHygcuXWkeMIjuQ5HzDLkmH8+D4/+M62ygaf/loQaOtKqO11y12nny/fIMwGsw==","signatures":[{"sig":"MEUCIQC73IC3KE/ZJyK9J5CfxkTK8B3zaERrDy3IWvSSE7I/nwIgYgSgohSH83TJ3Nr1UlHVj2d5BN6QEMqTdfHValF/yuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":738274},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"6158f2ade06d48d31bbd18c74906d1bb1c0bac6c","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.8_1787495954271_0.29344396916564164","host":"s3://npm-registry-packages-npm-production"}},"0.15.9":{"name":"xtctx","version":"0.15.9","license":"MIT","_id":"xtctx@0.15.9","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"438ae2e39347cda4161478cfb9910c97027daf26","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.9.tgz","fileCount":156,"integrity":"sha512-BFX8fkTgKFhjiXpslknmWrEAaeatapYuBvUk0TU3mqW8oyHHuqeJ+327dll6fFFNVELRqScpBMXdHlL54HbiEw==","signatures":[{"sig":"MEUCIQCfZ1GlrJkl7so+5L0nDaV/8MvhKzNQ9RWOltk5I07sKQIgEW3AnIEE5d7PDLcYta+++ufvOKFDW6ZeUOLqEHPdt+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":738589},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"fbba88b37284c1fa29d8c289a2008f36c54b1e98","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.9_1787496945276_0.28043455047148114","host":"s3://npm-registry-packages-npm-production"}},"0.15.10":{"name":"xtctx","version":"0.15.10","license":"MIT","_id":"xtctx@0.15.10","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"45de64c665ba69f8d1a741b4e3997521b25cbe31","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.15.10.tgz","fileCount":156,"integrity":"sha512-4ErkcR7uVcpmBE0IUZrqEBw5Lhe/HfuyX0+1IJkY5KnISJnRyQsEkbdnBwyYgY+AdFHe9uwg3lx++uJMtFyctQ==","signatures":[{"sig":"MEYCIQDlonkNsM6ikOXV1ruaVowoOxZiqH8EwZSTpfr2cju8VQIhAIJEc2azS62C7D2PwADPhcwGNPPvKtV8b7Y/Zx/5XO/U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.15.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":738894},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"4270e5d4ff99c996b20222afa633acf4ae4580b9","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.15.10_1787498018036_0.9494217023479552","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"xtctx","version":"0.16.0","license":"MIT","_id":"xtctx@0.16.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"058281e090d9841d958dffd7bd4cae702e4cb7b8","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.16.0.tgz","fileCount":156,"integrity":"sha512-Vh/R9p86f/7uwLxXug5/rMuF04GtsfFwc/RSjIh44WHpGWVepDvYoqT3X28/Y2spIbZnXHw2DIvE2s4hjHZwzg==","signatures":[{"sig":"MEYCIQCGhRs2CVIfaQpVUZk+b6Au4FFuc2LbAhoP750N8RRr9gIhALvIlbXEYtBCpZtCMdp/o81ygv24h03f9LGiAVM5JTKI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":752056},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"ed41f378e0d31b760c48267cbc986924da5e8df4","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.16.0_1787508120746_0.6407961246719565","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"xtctx","version":"0.16.1","license":"MIT","_id":"xtctx@0.16.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"b665f3b1d31757c7c831310887d2b0fc312c96c0","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.16.1.tgz","fileCount":156,"integrity":"sha512-uBDpWjaOnxJusS3elfk9z4gze24M6/4ugDqXfnjVIfFy1EevBSoPX9G1BXv1Ggr7YbVvdzycdcaJOMkMm4iSSg==","signatures":[{"sig":"MEUCIDkUCibu305vO/fOJZJL7RmGrROV0pRUfdOy/sXhZg4GAiEAwgi5cxTzRfRycg05/911ze7nYegEG7Bu8hy810/VbO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":764878},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"ccdcb9f444a62d22811b2086416290c4356d4bf0","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.16.1_1787512877034_0.5953952467093002","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"xtctx","version":"0.17.0","license":"MIT","_id":"xtctx@0.17.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"f5214839a6c1f5909459162a6604b16ccf2fd76b","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.17.0.tgz","fileCount":156,"integrity":"sha512-FkiUh5nxUoXERTGeOyPuAiMxIV1OoFhJuW7OEI8dW+96qvFaezq7z1noJ/u/PwxZMz8ci4dX5amGlV3SNc4+FA==","signatures":[{"sig":"MEYCIQCB3x4pRigkiMrvWtWvw0jYTyyLFQbi16eiKRc5wrSKKAIhANq7GaJhVwP/Bha6ptydWY2oPFa79OPax2B8HEIaVPTs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":776963},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"1380b8931a8cea69d89618b0ecde7ded1b9914ac","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.17.0_1787518560393_0.4187530985916814","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"xtctx","version":"0.18.0","license":"MIT","_id":"xtctx@0.18.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"b10a69ad7ed4c40085fa9f95cefa9d81f5f71daf","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.0.tgz","fileCount":156,"integrity":"sha512-sC/jjHaq/CyTE9t9J582n936Uh1xKhUBWb1WSQdLBSoCamqHbH2fZV+CheNgLXNCjv53XvEVVG9AtcYmqCidlw==","signatures":[{"sig":"MEUCIQCmH1uX7zelQfo2s/bhwfIfcSI1/106Zy4CzO7UvDqlTwIgO58SDvSHAPvkH7eAwwY6FijKnGZRh2TB57+UZKmeoS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":788407},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"8ae24b7cac331dc34cc4e790e17fe033baa4949c","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.0_1787520174702_0.8981744412174764","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"xtctx","version":"0.18.1","license":"MIT","_id":"xtctx@0.18.1","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"c9e815e6faa0f7c2cd3885ad6352de0951b289d0","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.1.tgz","fileCount":156,"integrity":"sha512-I85vNwpV25vkybB3xEiaq1ITX9UJJz+VcLXGbmwwCPsh15grSuHlCiyQ/LyNI7Jbc40zOZObqSdIEDsVsxvspg==","signatures":[{"sig":"MEUCIQD+i47xNXILkitMAsnAOOhU+SQ5dEzPQ8UyWO1M/3AX4QIgbTgytl4WI9hekeCvNb83fWzBqaoC30QTFsRFAbvukx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801595},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"7b24f388ad115052cb3034a3a0d13fec07960e06","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.1_1787531892359_0.43887290131221435","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"xtctx","version":"0.18.2","license":"MIT","_id":"xtctx@0.18.2","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"8a7056c209aa9345e3c9f4a3e43be5fafa1bd503","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.2.tgz","fileCount":156,"integrity":"sha512-6xBEnbamsR0/5JEfvqLXh9TGOdyxTf90eA/P1F8Zs742mgBGl/rTokjiyQrLJQWy9DVqv1Sfvl/Hlv0ymy0AFw==","signatures":[{"sig":"MEUCIQDH0uoxPjzfO7PKEAtaHc5z3uqTYQ8s9iX1ULns7KoDMAIgZXPNHJcUopIyoq2rUAdY11aPJ83cpFk72ca9QPY9ck4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":814188},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"3f2c3c8683ac24f0f5aa5e59640a46669041c259","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.2_1787533342222_0.8942720643019277","host":"s3://npm-registry-packages-npm-production"}},"0.18.3":{"name":"xtctx","version":"0.18.3","license":"MIT","_id":"xtctx@0.18.3","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"96c86b540dfd5e660829c6c3d78c613d89ceef51","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.3.tgz","fileCount":156,"integrity":"sha512-blZEhetbM7dnTRiAM97VFunFOwSwbMleq43x54C1BRMjRhcCrbx++6ei8ggM7EF/SSsNtIJP9HTi6ooZRJiu4w==","signatures":[{"sig":"MEUCIQDHC0U6ZF+o3qfoRhhqeardi4fZPJdboYopTwXmjMJcsQIgaS3cNt4xoaw6ApZLXWAQJ6hpvCCa9uHq+Z40yFbRAfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":845579},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"88d9d3ba5c2338f7096afd884865d329dda29d60","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.3_1787568562856_0.44672657798352566","host":"s3://npm-registry-packages-npm-production"}},"0.18.4":{"name":"xtctx","version":"0.18.4","license":"MIT","_id":"xtctx@0.18.4","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"cfaf7a71685f17cd6e85363d354c9a33bcd9de9f","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.4.tgz","fileCount":156,"integrity":"sha512-aVeEfdJwXMz+tvGhClO5sNZ1JJAfV0DfP9MO0fsb3OTPl1ovx6tD/Snb2sQCHWRCaJqhN6E6IWO2+/tndd5urw==","signatures":[{"sig":"MEUCIQCKK1vBPKyH/EW4gsuklGxo16iBEzaPKOpjzT8M/w/MZAIgSn/mx766mtqdBZ1+7XfQHeSSS2bOJhnhj/xFRVUrLNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":846647},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"85ccaa080c57663627d8d082bc5b638005dab4e4","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.4_1787571195538_0.8802418424952698","host":"s3://npm-registry-packages-npm-production"}},"0.18.5":{"name":"xtctx","version":"0.18.5","license":"MIT","_id":"xtctx@0.18.5","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"0a4c0aea7cc4a3fac0d71568f634b270181bacdd","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.5.tgz","fileCount":156,"integrity":"sha512-zrW66nX/xr40JcNgJtJu2ZN0lOtC4dCT1TRoTLNcbgOD4fY4/RnwRAABEWv3seni7cEZ6bceWp56Kj5JCsCQRg==","signatures":[{"sig":"MEUCIQDjDTL5jqkBeahCZKkuCdS/75zvQ/p0NI0oym64VdXPOwIgd3vmeVkH8V7ow4f9lkDRiRhLj/en03qewrxTgXHS/is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":856450},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"78a28a750850ee2152c71202e0e3410914fe72c9","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.5_1787823759307_0.48930329113314386","host":"s3://npm-registry-packages-npm-production"}},"0.18.6":{"name":"xtctx","version":"0.18.6","license":"MIT","_id":"xtctx@0.18.6","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"e7efe5dae231f6bb9c8ceead0d841c797da96299","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.6.tgz","fileCount":156,"integrity":"sha512-j6kg9r9G5C65oPe8H2kKB5FDHu6A6UJFq+f+KBR/xLLIOOEhG1CBF4caPgdWpGggMQQEWEKbzH077PK+VKeLzg==","signatures":[{"sig":"MEQCIF8IIHh8kGeQjSDeG6lMj9A43S/G+Zj9/iy/dc54GTUIAiBF78nvO9r5P2kxtz3z7h8Mpi88x01j9V6WycGaAbu19w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":859734},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"d6d7a90566e10934420293258ef0922feac38f18","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.6_1787848638347_0.1388388770536093","host":"s3://npm-registry-packages-npm-production"}},"0.18.7":{"name":"xtctx","version":"0.18.7","license":"MIT","_id":"xtctx@0.18.7","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"0bc9a98cb31ab2069230a757720aae02d73d8dfc","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.7.tgz","fileCount":156,"integrity":"sha512-1wD2koyHfCLn0AXFOvYY8UOba+INGev03SZDu5k/bNH4ZQFoBY9vf3WpE0LHEoVyf6uvkDoTFLBron9MlF+zzQ==","signatures":[{"sig":"MEUCIQDCjrBJrovNtU6QNafgv6XSIlOAkNtTUwpwE/hhl2Uc8gIgG6rBGVPUDtuy+KLPOK8n6ijP8qljKZMdSAvmsqirsGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":860062},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"7bcaadf922f310d39fbc71db296b57807f9ee755","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.7_1787922333338_0.336976362229225","host":"s3://npm-registry-packages-npm-production"}},"0.18.8":{"name":"xtctx","version":"0.18.8","license":"MIT","_id":"xtctx@0.18.8","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"1826811136fff5842cb21f525d862a32afe2442d","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.8.tgz","fileCount":156,"integrity":"sha512-DDf1Aq2ZZxVOYiaGWZisGYUaaUbAs+sYy5fw+tJP0p58RKXoYStGlRkSygp9jzIIo6Y8jPsJWvP19deoE/Sp5A==","signatures":[{"sig":"MEUCIDdxQNjk0kC53BJpHVKLuggzMYVW1w9wHSLcCvG1YvkBAiEAkPptZjYjjt7FSgbLoavgwv56M3o7NMDY5aE+7BCorzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":861578},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"60098baf5b379ac6d22fa01ceea3435e0fb45a7d","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.8_1787923939955_0.7774434458859087","host":"s3://npm-registry-packages-npm-production"}},"0.18.9":{"name":"xtctx","version":"0.18.9","license":"MIT","_id":"xtctx@0.18.9","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"da16a66b69117116c2063d464b4c98cea2521d8a","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.18.9.tgz","fileCount":156,"integrity":"sha512-/pSd3nJSHF911X1E3UcCt28xNzbCiBKlJf07nae5uG9YM8IJ6hF/KMI6nG5yc7fzl/YW5DWBzSr+6OdB2Mzfwg==","signatures":[{"sig":"MEQCIDss3nFCeHcZ0bUJWDfFJyjr974elI7m/5sEv4vrX/G5AiB5dGTscOygl9FUCGxqa6t2wTWwYsX388NNxFCI9OpITg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.18.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":862606},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"4af72d3d86a303df44dbe55bebe09c7190342027","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.18.9_1787930375407_0.09561840202943994","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"xtctx","version":"0.19.0","license":"MIT","_id":"xtctx@0.19.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"f2e929f16fab64011abfb4a0c6356d2a77df29f7","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.19.0.tgz","fileCount":156,"integrity":"sha512-LpbRh6/iQ5reiBzavPL88RI3ss+41Kc1jaG1PVYwE/KS36TYb0s9VqdUSY6GFYHlrpKzvp7Q0uu1tsOKGWMqiw==","signatures":[{"sig":"MEUCIQDRMaQKP1efkkmmDJiWbcNCZiZYCUEEbx63xfBr/krYcQIgaZbx30YrVERGspuVpOBXgJ+GrQeHLNeK6eDNztoAmKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":866873},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"454ffde4098bb2c49581927881185f0cf1200423","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","landing:preview":"npm --prefix landing run preview","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.0","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.17.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.19.0_1787933758780_0.7915512191889682","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"xtctx","version":"0.22.0","license":"MIT","_id":"xtctx@0.22.0","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"homepage":"https://xtctx.com","bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"bin":{"xtctx":"dist/src/cli/index.js"},"dist":{"shasum":"6bfeac178a6052293b811f9627575487870915a4","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.22.0.tgz","fileCount":471,"integrity":"sha512-nT4qVIpTmFzeoYWCgfobhYS3BtxgRdPxluC0Uvv2b90kEsi4nqVOEv6ePVLwLtJWHAs/vrLFHrue5pSaOtQEbQ==","signatures":[{"sig":"MEUCIAkDIbF46YJeMNHHjo2820V5z7O3EtQB3X/0Pd7Blw5rAiEAm+pQq99QX4RgyX9fytBU0DdyAXCEvTRuInvumHUHz7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCzmdLHUDb1cxqaEK+iC9qN6DPxQX+2hxNyGwyPt9jrQIgR+60ypZ6ErbLAN5b1UxvCHPLvc0uKPUHkRF/8SV1Ruo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2863607},"type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"a942d2a6be86a8d752529358c735224c594d6d7f","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepare":"npm run build","version":"node scripts/sync-version.mjs","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:cloud":"npm --prefix cloud run typecheck && npm --prefix cloud test","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","sync:version":"node scripts/sync-version.mjs","audit:landing":"node scripts/audit-production.mjs --landing","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security tests/mcp/hardening.test.ts tests/utils/atomic-file.test.ts tests/utils/project-boundary.test.ts tests/scrapers/copilot-journal-safety.test.ts tests/config/disconnect-unconfigured.test.ts","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:cloud && npm run test:security && npm run security:checklist && npm run check:review-coverage && npm run check:workflows && npm run audit:production && npm run audit:landing && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","check:workflows":"node ./scripts/check-workflows.mjs","landing:preview":"npm --prefix landing run preview","audit:production":"node scripts/audit-production.mjs","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","check:review-coverage":"node ./scripts/check-review-coverage.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.1","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.19.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0","@huggingface/transformers":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/xtctx_0.22.0_1791054914029_0.8115833772516772","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"_id":"xtctx@0.22.1","bin":{"xtctx":"dist/src/cli/index.js"},"bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"dist":{"shasum":"1be7f9d8bac1e4c4af5def3e2b142736e5397156","tarball":"https://registry.npmjs.org/xtctx/-/xtctx-0.22.1.tgz","fileCount":471,"integrity":"sha512-2o847w1xRG7Ec0c/Qdup62JXzDM5LSmT2fezToYis0QEuq9s41JaIe9Xd0iyBj7gtA7ckX2p4sn5rH5XThmQ6g==","signatures":[{"sig":"MEUCIQCcwA0CgqCLf5JTggy66ZcOJaypfy5N2oNvZ03Lvb6ADQIgEvkK/qXm0VfpNtHEvi5ByCXZKqfNpD4KEyoTEtg3pDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAPm8LQfAdUYrItoFZ8vtIaYS8DwVacasIKSyjGSC/02AiB9tO7xaU/x3n/YqqJNzQFC/qJ2Qa5MLaHFbXi45zDicw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/xtctx@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2866295},"name":"xtctx","type":"module","engines":{"node":">=24.0.0"},"exports":{"./scrapers":{"types":"./dist/src/scrapers/index.d.ts","import":"./dist/src/scrapers/index.js"}},"gitHead":"0ac2aae15c7946c113b1ddd44b9a38e9669f772f","license":"MIT","scripts":{"dev":"tsx watch src/cli/index.ts","lint":"eslint src/ tests/ scripts/","test":"vitest run --exclude=tests/smoke/** --exclude=tests/drift/** --exclude=tests/eval/**","build":"npm run clean && tsc","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepare":"npm run build","version":"node scripts/sync-version.mjs","smoke:cli":"node dist/src/cli/index.js --help","test:eval":"vitest run tests/eval","typecheck":"tsc --noEmit -p tsconfig.test.json","test:cloud":"npm --prefix cloud run typecheck && npm --prefix cloud test","test:drift":"vitest run tests/drift","test:smoke":"vitest run tests/smoke","test:watch":"vitest","demo:public":"node scripts/public-demo-smoke.mjs","landing:dev":"npm --prefix landing run dev","sync:version":"node scripts/sync-version.mjs","audit:landing":"node scripts/audit-production.mjs --landing","landing:build":"npm --prefix landing run build","test:security":"vitest run tests/security tests/mcp/hardening.test.ts tests/utils/atomic-file.test.ts tests/utils/project-boundary.test.ts tests/scrapers/copilot-journal-safety.test.ts tests/config/disconnect-unconfigured.test.ts","check:upstream":"node scripts/check-upstream-versions.mjs","verify:release":"npm run lint && npm run typecheck && npm test && npm run test:cloud && npm run test:security && npm run security:checklist && npm run check:review-coverage && npm run check:workflows && npm run audit:production && npm run audit:landing && npm run test:drift && npm run test:integration && npm run test:smoke && npm run test:eval && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli","capture:formats":"node scripts/capture-format-fingerprint.mjs","check:workflows":"node ./scripts/check-workflows.mjs","landing:preview":"npm --prefix landing run preview","audit:production":"node scripts/audit-production.mjs","test:integration":"vitest run tests/integration","security:checklist":"node scripts/verify-security-checklist.mjs","check:review-coverage":"node ./scripts/check-review-coverage.mjs","drift:update-snapshots":"node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift"},"version":"0.22.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"46b2f204-0abb-424c-8c7f-ccb1a5b25eab"}},"homepage":"https://xtctx.com","overrides":{"sharp":"^0.35.3","adm-zip":"^0.6.1","protobufjs":"^7.5.5"},"repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"_npmVersion":"11.19.0","description":"Local cross-tool handoff for AI coding agents.","directories":{},"maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"glob":"^13.0.6","yaml":"^2.9.0","commander":"^15.0.0","@iarna/toml":"^2.2.5","better-sqlite3":"^13.0.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.11","typescript":"^5.9.3","@types/node":"^26.2.0","typescript-eslint":"^8.67.0","@types/better-sqlite3":"^9.6.0","@huggingface/transformers":"^4.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xtctx_0.22.1_1791070795723_0.9537518279440733"}}},"time":{"created":"2026-02-26T23:37:50.545Z","modified":"2026-10-03T23:39:56.128Z","0.3.2":"2026-02-26T23:37:50.883Z","0.11.1":"2026-08-05T12:54:26.599Z","0.11.3":"2026-08-20T01:28:15.228Z","0.11.4":"2026-08-20T02:11:09.731Z","0.11.5":"2026-08-20T02:49:50.978Z","0.11.6":"2026-08-20T03:30:42.907Z","0.11.7":"2026-08-20T10:15:20.428Z","0.12.0":"2026-08-20T10:59:25.342Z","0.13.0":"2026-08-20T11:40:25.406Z","0.13.1":"2026-08-20T12:11:45.239Z","0.14.0":"2026-08-21T11:16:31.915Z","0.14.1":"2026-08-21T12:12:44.076Z","0.14.2":"2026-08-21T15:17:49.362Z","0.14.3":"2026-08-21T19:05:53.213Z","0.14.4":"2026-08-23T00:05:49.403Z","0.14.5":"2026-08-23T00:56:18.187Z","0.14.6":"2026-08-23T01:17:17.420Z","0.14.7":"2026-08-23T01:30:15.447Z","0.14.8":"2026-08-23T01:54:30.970Z","0.15.0":"2026-08-23T02:56:38.005Z","0.15.1":"2026-08-23T03:30:15.579Z","0.15.2":"2026-08-23T04:11:38.889Z","0.15.3":"2026-08-23T04:24:58.294Z","0.15.4":"2026-08-23T04:32:23.039Z","0.15.5":"2026-08-23T11:09:23.219Z","0.15.6":"2026-08-23T12:40:21.198Z","0.15.7":"2026-08-23T14:20:12.424Z","0.15.8":"2026-08-23T14:39:14.406Z","0.15.9":"2026-08-23T14:55:45.453Z","0.15.10":"2026-08-23T15:13:38.179Z","0.16.0":"2026-08-23T18:02:00.890Z","0.16.1":"2026-08-23T19:21:17.161Z","0.17.0":"2026-08-23T20:56:00.578Z","0.18.0":"2026-08-23T21:22:54.913Z","0.18.1":"2026-08-24T00:38:12.501Z","0.18.2":"2026-08-24T01:02:22.414Z","0.18.3":"2026-08-24T10:49:22.991Z","0.18.4":"2026-08-24T11:33:15.685Z","0.18.5":"2026-08-27T09:42:39.473Z","0.18.6":"2026-08-27T16:37:18.514Z","0.18.7":"2026-08-28T13:05:33.480Z","0.18.8":"2026-08-28T13:32:20.115Z","0.18.9":"2026-08-28T15:19:35.641Z","0.19.0":"2026-08-28T16:15:58.941Z","0.22.0":"2026-10-03T19:15:14.150Z","0.22.1":"2026-10-03T23:39:55.825Z"},"bugs":{"url":"https://github.com/fstubner/xtctx/issues"},"license":"MIT","homepage":"https://xtctx.com","repository":{"url":"git+https://github.com/fstubner/xtctx.git","type":"git"},"description":"Local cross-tool handoff for AI coding agents.","maintainers":[{"name":"fstubner","email":"felix.stubner@gmail.com"}],"readme":"# xtctx\n\n[![CI](https://github.com/fstubner/xtctx/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fstubner/xtctx/actions/workflows/ci.yml)\n[![Landing Deploy](https://github.com/fstubner/xtctx/actions/workflows/deploy-landing.yml/badge.svg?branch=main)](https://github.com/fstubner/xtctx/actions/workflows/deploy-landing.yml)\n[![Release](https://github.com/fstubner/xtctx/actions/workflows/release.yml/badge.svg)](https://github.com/fstubner/xtctx/actions/workflows/release.yml)\n[![npm Publish](https://github.com/fstubner/xtctx/actions/workflows/publish.yml/badge.svg)](https://github.com/fstubner/xtctx/actions/workflows/publish.yml)\n[![Latest Release](https://img.shields.io/github/v/release/fstubner/xtctx?display_name=tag&sort=semver)](https://github.com/fstubner/xtctx/releases)\n[![License](https://img.shields.io/github/license/fstubner/xtctx)](LICENSE)\n[![Node >=24](https://img.shields.io/badge/node-%3E%3D24-339933?logo=node.js&logoColor=white)](https://nodejs.org/)\n\nxtctx is local cross-tool handoff for AI coding agents.\n\nIt indexes the transcript files your local coding agents already write, and\nexposes them over MCP so the next tool you open can find recent sessions and\nread the raw messages. It does not run a daemon, host an API, generate\nsummaries, or maintain durable project memory. Everything stays on your\nmachine unless you opt a project in to cloud sync, which is optional, off by\ndefault, and self-hosted: you run the server\n([`docs/cloud-sync.md`](docs/cloud-sync.md)).\n\nEach project opts in once with `xtctx setup`. The MCP server resolves the\nproject from the working directory, and in a project that has not opted in it\nsays so and names the command, so an agent can offer it. Setup does not push\nthe transcripts themselves to the agent: in Claude Code a SessionStart hook\ninjects a short pointer to recent sessions, and every other tool gets\ninstruction text that names the tools to call.\n\nThe intended user is a solo developer who switches between local coding agents\nand wants the next agent to recover recent context without a pasted recap.\n\n## Install\n\nTwo routes, and they answer different questions.\n\nThe **plugin** is the smaller commitment: it registers the MCP server and the\nhandoff skill machine-wide, and writes nothing into your project. The tools\nresolve the project from the working directory. In a project that has been\nset up they answer; in one that has not, every tool says so and names\n`xtctx setup`, so the agent can offer it — nothing is scanned or written\ninto a directory nobody opted in. What you are relying on is the agent\nchoosing to call a tool, which the skill prompts it to do.\n\n**`setup`** writes managed blocks into the instruction files each tool already\nreads (`CLAUDE.md`, `AGENTS.md`, Cursor rules, and so on); they tell the agent\nthat xtctx exists and which tools to call, and the agent still has to call\nthem. For Claude Code it also installs a SessionStart hook that injects a\nshort pointer to recent sessions at the start of each session. It wires MCP\nper tool and translates the skill into each tool's native format.\n\n| | Plugin | `setup` |\n|---|---|---|\n| MCP tools | yes | yes |\n| Handoff skill | yes | yes |\n| Reachable from every project | yes | no |\n| Retrieval in an unconfigured project | no (offers `setup`) | no |\n| Pointer to recent sessions injected at session start | no | Claude Code only |\n| Instruction text naming the tools | no | yes |\n| SessionStart hook (Claude Code) | no | yes |\n| Writes into your project | no | yes |\n| Tool coverage | six with a plugin format | every supported tool |\n\nStart with the plugin so the tools are reachable everywhere, then run `setup`\nin each project you want handoff in; the two compose, and running both is the\nnormal end state.\n\n```bash\nnpx -y xtctx setup\n```\n\nAs a plugin, from the marketplace this repository publishes:\n\n```bash\nclaude plugin marketplace add fstubner/xtctx && claude plugin install xtctx@xtctx\n```\n\n```bash\ncodex plugin marketplace add fstubner/xtctx && codex plugin add xtctx@xtctx\n```\n\n```bash\ncopilot plugin marketplace add fstubner/xtctx && copilot plugin install xtctx@xtctx\n```\n\n```bash\nagy plugin install https://github.com/fstubner/xtctx\n```\n\nCursor registers the marketplace from its agent CLI, then installs from\n`/plugins` in an interactive session:\n\n```bash\ncursor-agent plugin marketplace add https://github.com/fstubner/xtctx\n```\n\nVS Code reads the same package but has no CLI route: its plugin management\nlives in the Chat view, behind the `chat.plugins.enabled` setting. opencode\nhas its own plugin system — JavaScript modules under `.opencode/plugins/`, or\nnpm packages named in `opencode.json` — but does not implement the Agent\nPlugins standard the package above is built against, so `setup` is the only\nroute there.\n\nEither route registers the same MCP server and the same handoff skill. The\nplugin runs `npx -y xtctx`; `setup` writes `npx -y xtctx@<version>`, pinned\nto the xtctx that ran it, and re-running setup is what moves the pin.\n\nOne thing to know about the plugin specifically: it is installed from this\nrepository, so its skill text comes from `main`, while the server it launches\nis whatever `npx -y xtctx` resolves to on npm. Those are not the same commit\nwhenever work has landed but not been released — which is the normal state\nhere — so a plugin install can describe behaviour the server it runs does not\nhave yet. `xtctx status` reports a skill copy that predates the built-in one;\nit cannot see the server's version from the other side. Because the plugin writes no project config, `xtctx status`\nreports a plugin-only project as `Config missing (run xtctx setup)`, and the\ntools answer the same way until `setup` has been run there.\n\n### Semantic search is an optional add-on\n\nThe default install is small (about 55 MB on disk with its dependencies) and\nsearches by keyword straight away, with no model to download. Semantic search,\nwhich also matches by meaning, needs a local embedding model, and the model\nand its runtime are several hundred megabytes. They are not part of\n`npx -y xtctx`: bundling them made a cold start take from 18 seconds to over\ntwo minutes before the server could answer, which is longer than some MCP\nclients wait.\n\nTurn it on once per machine:\n\n```bash\nnpx -y xtctx embeddings enable        # asks first; add --yes in a script or from an agent\n```\n\nThat installs a pinned runtime from a lockfile shipped with this release into\n`~/.xtctx/embeddings` (about 540 MB on disk, including the model), then the\nserver builds vectors in the background as before. `xtctx embeddings disable`\nremoves it again and leaves your index, vectors included, alone.\n`xtctx status` says which mode you are in and how to switch.\n\nPointing a project at an OpenAI-compatible endpoint (see\n[`docs/embedding-providers.md`](docs/embedding-providers.md)) needs none of\nthis: nothing local is installed for it.\n\nOne thing to expect in a project with a large transcript history: the first\nscan builds the index from scratch and can run for minutes. The server starts\nit as soon as it starts, calls return within a refresh budget with whatever\nhas landed so far, and each answer names the tools it has not read yet, so\nthe counts fill in over the first few calls rather than all at once.\n\n## Workflow\n\n```bash\nnpx -y xtctx setup\nnpx -y xtctx status\nnpx -y xtctx export\nnpx -y xtctx disconnect antigravity\n```\n\n`xtctx setup` writes project-level MCP config with `npx -y xtctx@<version>`\n(the version that ran setup; `xtctx status` shows it on its `Pinned` line), installs\nreal hooks where a tool supports them, and writes managed instruction blocks\nthat point agents to the MCP retrieval tools. It also syncs selected project\nskills from `.xtctx/skills` into verified native or adapter surfaces for\nsupported tools. Antigravity MCP is always written to the app-level config\nbecause Antigravity has no project MCP file. Use `xtctx setup --global-mcp`\nto also configure the global-only GitHub Copilot CLI surface.\n\n`xtctx status` reports actual handoff state: config, MCP command, local SQLite\nindex, detected transcript stores, hook mode, managed-block drift, and stale\ngenerated references. It also reports selected skills, generated skill targets,\ntarget drift, and tools that do not have a verified skill surface.\nIt reports the current local index rather than forcing a transcript scan. If\nthe index is empty, ask a configured agent to call `xtctx_recent_sessions`.\nWhen the index holds sessions whose transcripts are gone, it says how many and\npoints at `xtctx export`. Its `Cloud` line says whether cloud sync is on for\nthe project, and when it last uploaded or failed.\n\n`xtctx disconnect <tool>` stops xtctx from managing one tool for the project.\nIt removes the xtctx MCP entry for that tool, removes managed instruction\nblocks where that tool owns them, removes supported startup hooks, and marks the\ntool disabled in `.xtctx/config.yaml`. It removes generated skill adapters for\nthat tool. It does not delete transcript sources, canonical project skills, or\nthe local SQLite index. Use `xtctx disconnect --all` to remove xtctx from every\nsupported tool — that one also deletes `.xtctx/skills`, since with nothing left\nmanaging skills the synced source is xtctx's own scaffolding. A skill you\nwrote yourself and selected at setup is kept where you wrote it. Antigravity and Copilot CLI keep one MCP config for every\nproject on the machine, so a project disconnect leaves those two files alone;\npass `--global-mcp` to remove xtctx from them as well.\n\nThat flag is **not** symmetric with `setup`, and the difference is worth\nknowing before you assume `disconnect --all` has removed everything. `setup`\nwrites Antigravity's config without the flag, because Antigravity has no\nproject-scoped MCP file and there is nowhere else to put it; `setup\n--global-mcp` additionally writes Copilot CLI's. Neither file holds a\nper-project entry, so a project disconnect cannot remove \"this project's\"\nwiring from them — it can only remove xtctx from that client for every project\nat once. Doing that silently is exactly what it used to do, and it took xtctx\naway from every other project on the machine, so it is an explicit step now.\n\nTo remove xtctx from a machine entirely: `xtctx disconnect --all --global-mcp`\nin each project you set up, then delete each project's `.xtctx` directory,\nwhich holds the config and the indexed transcripts and is deliberately kept.\nRun `xtctx export` first if you want to keep the sessions whose transcripts\nare already gone: the index is their only copy.\n\n`xtctx export` writes this project's indexed sessions and messages to a JSON\nLines file (`xtctx-export-<time>.jsonl` in the current directory, or\n`--out <file>`; `--out -` for stdout). It reads the index as it stands, never\ntouches a transcript, and never overwrites an existing file. `xtctx import\n<file>` merges an export back into a project's index — after the index was\ndeleted, on another machine, or into a project that has moved. Sessions keep\ntheir ids, so importing the same file twice, or into an index that already\nhas some of its sessions, adds only what is missing. Retrieval windows are\nrebuilt on import and vectors re-embedded as usual; the file holds sessions\nand messages only. The export holds raw conversation text, so treat it like\nthe index: keep it, and do not commit it.\n\n`xtctx scan` reads every enabled transcript store into the project's index and\nexits. The MCP server does the same thing on its own every time it starts, so\nthe session after another tool's work starts with that work already indexed.\nThe scan is incremental and runs in the background: it resumes from a\nper-file offset, so after the first pass it reads only what each tool has\nappended. The first pass over a large history is the expensive one — see the\nnote above.\n\n`xtctx scan --embed` additionally vectorizes every window the scan leaves\nwithout one, running to completion however long that takes rather than to a\nbudget. It needs semantic search to be enabled (`xtctx embeddings enable`) and\nsays so when it is not. You need it when `xtctx status` says the backlog is\ntoo large to finish in the background — otherwise the server gets there on its\nown.\n\nOnce semantic search is enabled, indexing picks a device by measuring it, and\n**you do not have to do anything to get that**. The first time the MCP server\nstarts on a machine, or the first `xtctx scan --embed`, it times the embedding\nmodel on each execution provider available and remembers\nthe fastest in `~/.xtctx/device.json`, once per machine. On a machine with a\nusable GPU that has measured roughly six times faster than the CPU; on one\nwithout, it picks the CPU and nothing changes. Vectors are identical whichever\ndevice wins, so this changes speed and nothing else.\n\nNothing is measured while semantic search is off, since there is no model to\ntime. `xtctx calibrate` runs that measurement on demand and prints it. You need it\nonly to re-measure after the hardware changes (`--force`) or to see the\nnumbers — it is not a setup step. `scan --no-calibrate` skips the automatic\nrun for anyone who would rather start embedding immediately.\n\nGenerated MCP clients should use:\n\n```json\n{\n  \"mcpServers\": {\n    \"xtctx\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"xtctx@<version>\"]\n    }\n  }\n}\n```\n\nWhen invoked by an MCP client over stdio, bare `xtctx` starts the MCP server.\nWhen invoked in a normal terminal, it shows the human CLI.\n\n## MCP Tools\n\n- `xtctx_recent_sessions` lists recent indexed transcript sessions.\n- `xtctx_session_detail` returns raw messages for a `session_ref`.\n- `xtctx_search_sessions` hybrid-searches chronological transcript windows: keyword always, plus local semantic vectors once semantic search is enabled (`xtctx embeddings enable`). `mode: \"literal\"` skips the index entirely and matches text straight in the transcript stores, so it answers before a scan has finished and finds exact strings the index has not reached yet; it reads what the scrapers attribute to this project, so it never widens the project boundary. It says when it stopped at its limit or time budget rather than reporting an empty result as a complete one.\n- `xtctx_continuity_status` reports wiring and local index diagnostics.\n- `xtctx_handoff_manifest` returns a read-only orchestrator envelope with stable\n  session handoff IDs and pointers to raw-detail retrieval. A caller can attach\n  a correlation ID; xtctx echoes it but does not persist task state.\n\nThe server scans transcript stores when it starts and on each call, updating\n`.xtctx/state/xtctx.db` as it goes. The source transcripts remain\nauthoritative while they exist, and for those sessions the index is derived\ndata. It is also the only copy of sessions whose transcripts have since been\ndeleted (Claude Code deletes them after 30 days by default), so deleting it\nloses those. xtctx never deletes it: an upgrade migrates it in place, and a\ncorrupt one is moved aside, rebuilt, and has those sessions copied back in.\nKeep it, back it up with `xtctx export`, and do not commit it: it holds raw\nconversation text.\n\nWith the plugin installed, a project that has also run `setup` reaches the\nsame server under two names in Claude Code (`xtctx` from `.mcp.json` and\n`plugin:xtctx:xtctx` from the plugin). Setup grants the tools under both, so\nwhichever copy the agent picks needs no prompt.\n\nWhen semantic search is enabled it embeds sliding windows of raw transcript\nturns, not generated summaries. Window text includes role, timestamp, and message order so retrieval\ncan prefer the relevant point in the conversation, then return the matching\nmessage range for `xtctx_session_detail`.\n\n## Supported Tools\n\n- Claude Code\n- Cursor\n- Codex\n- GitHub Copilot\n- Google Antigravity\n- opencode\n- GitHub Copilot CLI\n\nEach tool has a scraper for local handoff storage. Antigravity support reads\nfull transcript steps from the running local Antigravity language server when\nit is available, and falls back to readable `brain` artifacts when the encrypted\n`.pb` conversation store cannot be queried. Setup writes Antigravity MCP config\nand a managed `GEMINI.md` handoff block (Antigravity CLI keeps project-memory\ncompatibility with that file). Some tools have native MCP config or executable\nstartup hooks; others receive MCP config plus managed instructions only.\n`xtctx status` labels the real mode for each integration.\n\n## Limits\n\n- xtctx is local-only by default: it never uploads transcripts and runs no\n  telemetry. Cloud sync is optional and opt-in per project: it sends nothing\n  until you log in (`xtctx login`) *and* opt a project in (`xtctx sync enable`),\n  and then sends that project's transcript text, including whatever paths or\n  output the agents wrote into it, to a sync server you deployed yourself (there\n  is no hosted xtctx service, and no default server), where your other\n  machines' agents can read it over MCP. `xtctx status` says whether it is on\n  for the project and when it last uploaded\n  ([`docs/cloud-sync.md`](docs/cloud-sync.md)).\n  A project can opt into an external embedding endpoint by writing\n  one into `.xtctx/config.yaml`, in which case window text is sent there to be\n  vectorized — never inferred from an environment variable, and `xtctx status`\n  names the endpoint in full whenever one is configured.\n- Transcript formats belong to each upstream tool and can drift. The drift\n  tests and format fingerprints exist to catch parser breakage, but `xtctx status`\n  is still the source of truth for your machine.\n- Semantic search is off until you run `xtctx embeddings enable`; until then\n  every search is keyword-only, which `xtctx status` states along with the\n  command. Vectors are built incrementally once it is on, and the MCP server\n  also works the backlog down in the background when it starts, as long as\n  this machine's measured rate says the remainder fits in fifteen minutes.\n  Above that nothing drains it on its own and `xtctx status` says so, naming\n  `xtctx scan --embed`. Hybrid search falls back to keyword whenever vectors\n  are missing or the embedding model is unavailable, and `xtctx status`\n  reports the reason. An index that already has vectors from an earlier\n  install keeps them while the add-on is off.\n- Antigravity conversation `.pb` files are not parsed directly; retrieval uses\n  the local language-server API when available, otherwise readable `brain`\n  artifacts.\n\n## Skill Sync\n\nProject skills live in `.xtctx/skills/<skill-id>/SKILL.md`. Fresh setup writes\nthe built-in `xtctx-handoff` skill. Interactive setup also inventories skills\nfrom connected tool surfaces and lets you select which ones to keep in sync for\nthe project. Non-interactive `xtctx setup --yes` is conservative: it syncs the\nbuilt-in skill plus any skills already selected in `.xtctx/config.yaml`.\n\nSkill sync uses real target surfaces only:\n\n- Claude Code receives native project skills under `.claude/skills/`.\n- Cursor receives generated rule adapters under `.cursor/rules/xtctx-skills/`.\n- GitHub Copilot receives generated instruction adapters under `.github/instructions/`.\n- Antigravity, Codex, opencode, and Copilot CLI receive skill pointers through\n  managed handoff blocks (`GEMINI.md` / `AGENTS.md` / Copilot instructions).\n- Tools without a verified native or adapter surface are reported as unsupported.\n\n## Project Files\n\n- `.xtctx/config.yaml`: project xtctx configuration\n- `.xtctx/skills/<skill-id>/SKILL.md`: canonical local project skills\n- `.xtctx/state/xtctx.db`: local handoff index, the only copy of sessions whose transcripts are gone; back up with `xtctx export`, never commit\n- `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.cursor/rules/xtctx.mdc`, `.github/copilot-instructions.md`: managed handoff instructions where applicable\n\nContent outside `<!-- xtctx:begin -->` / `<!-- xtctx:end -->` fences is\npreserved. Run `xtctx setup --yes` again to replace stale or duplicated generated\nblocks.\n\n## Development\n\n```bash\nnpm ci\nnpm --prefix landing ci\nnpm run verify:release\n```\n\nUseful focused checks:\n\n```bash\nnpm test\nnpm run test:drift\nnpm run lint\nnpm run build\nnpm run demo:public\n```\n\n`npm test` excludes the smoke, drift and eval suites, which build, spawn\nprocesses and load a real embedding model. What each suite defends, what it\nstructurally cannot catch, and how that was measured is in\n[`docs/testing-strategy.md`](docs/testing-strategy.md).\n\nIndexing throughput — what has been measured, what was tried and rejected, and\nwhat is still open — is in\n[`docs/embedding-performance.md`](docs/embedding-performance.md). Read it\nbefore optimizing the embedding path; several of the obvious ideas have\nalready been measured and lost.\n\n`npm run demo:public` creates synthetic Claude Code and Codex transcript stores\nin a temporary project, starts the built MCP server, and calls the public\nhandoff tools. It does not scan private local transcript directories. See\n[`docs/demo.md`](docs/demo.md).\n\n## Orchestrator Integration\n\nxtctx is supporting fabric, not an orchestrator. An external control plane can\ncall `xtctx_handoff_manifest` to obtain project-scoped handoff IDs and the\ncorresponding `xtctx_session_detail` calls, then retain its own task, branch,\nownership, and scheduling state. See\n[`docs/orchestrator-integration.md`](docs/orchestrator-integration.md).\n\n## Release\n\nNothing is released by merging. Cutting a release is one manual action: run the\n**release** workflow, choose `patch`/`minor`/`major`, and type `release` to\nconfirm. It runs `verify:release` first, then bumps the version, writes the\nCHANGELOG entry from GitHub's generated notes, commits, tags, creates the\nGitHub release, and publishes to npm.\n\nUntick `publish_npm` to cut a release without publishing. To publish a version\nthat was tagged earlier, run the **publish** workflow on its own against that\ntag — it verifies the checked-out commit really carries the tag for the version\nin `package.json`, so a branch tip cannot be published by mistake.\n\nThis replaced an automatic pipeline. Every `fix:`/`feat:` merge opened a release\nPR that a second workflow auto-merged within seconds, so merging any change at\nall cut a release: five versions went out between 09:34 and 16:58 on\n2026-08-30, none awaited, none soaked. A per-day ceiling was tried first and was\nthe wrong shape — capping unwanted releases still leaves them unwanted.\n\nReleases are published rather than drafted, deliberately, and `publish.yml` has\nno `release: published` trigger. It had one once, with releases drafted so\nnothing published itself, and that broke outright: GitHub's `releases/latest`\nendpoint hides drafts, the release tooling read that endpoint to find the last\nrelease, so it saw a pre-draft version forever and proposed a release covering\nthe entire history. It cut 76 versions over four days, 49 of them in one day.\n","readmeFilename":"README.md"}