{"_id":"@act0r/cxs","_rev":"12-cf6c29bbb136cdbe143fdd16c2b8d06f","name":"@act0r/cxs","dist-tags":{"latest":"0.3.7"},"versions":{"0.2.0":{"name":"@act0r/cxs","version":"0.2.0","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.2.0","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"8146c66e494836205fa0e5a5c5bbf4cc3c5fc59a","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.2.0.tgz","fileCount":4,"integrity":"sha512-9XHmS2lW6Ep/QvRYB7k+38umNmx/zPM+iACW3JnyG/jU7UMX9Xg/fiZtTxARW8i7BD00D9JKdT9hf37Jzm7D9g==","signatures":[{"sig":"MEYCIQCSgkMY26kK2Xq9/uRg1pfdBoalKkxbirGn7LHHIZYO0AIhAJK6p8opvEbHnPsxcvZVWbfY86rnlmY4/UpzRTqruUjV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68569},"type":"module","engines":{"node":">=22"},"gitHead":"da65caf87746ce4efd2a66eef006922deb0861c9","scripts":{"cxs":"tsx ./cli.ts","test":"vitest run","build":"esbuild cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"11.6.2","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"25.0.0","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.2.0_1777288308433_0.43907467141789236","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@act0r/cxs","version":"0.2.1","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.2.1","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"22cad8e63ab008eefee81baf3d244a4e9a98c83c","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.2.1.tgz","fileCount":4,"integrity":"sha512-6K5sUbz9UaXv6FZtDyex2S/CEA9LYYkpZ/14eGEu3Tn7B2FuNSgZ8MsoRALkk2CRRv381pGWcWi9CaEgq5yw+w==","signatures":[{"sig":"MEUCIH/8nEgk7pvBPvz5xjfWNsNV0rK/fuAwAhh7o1+xwYm7AiEAsDCpvNteTKI26b4BLarcXqBCyGXWrw2OxOhJZHTEuUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69827},"type":"module","engines":{"node":">=22"},"gitHead":"5417bbd23db1d18277ae609e8e4ad796fc7602df","scripts":{"cxs":"tsx ./cli.ts","test":"vitest run","build":"esbuild cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.2.1_1777342221213_0.8417183999754905","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@act0r/cxs","version":"0.2.2","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.2.2","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"29e3637859bf0662923a8d6c15d61a68f2c4fd22","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.2.2.tgz","fileCount":4,"integrity":"sha512-KxUdZnoaL8IA0D9u/czLGmrGzi0zOThmj5Tzhswq+V97srHnFfs39wAr4ZLSkbHKZ9o8KcopEMhATK9CSxK1BQ==","signatures":[{"sig":"MEQCID/EkJAZUMKb8X0QkH5OFU9E3tB8sruKLi3sJ8oaWjD9AiB9W8hRiSzDahCFkxowHQN1duqoUFRvjiB/curYpQI4DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71326},"type":"module","engines":{"node":">=22"},"gitHead":"839f437b6d0fac5f5bacc0f03dae7cb9fdcf0c25","scripts":{"cxs":"tsx ./cli.ts","test":"vitest run","build":"esbuild cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.2.2_1777346235586_0.9841755854649015","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@act0r/cxs","version":"0.2.3","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.2.3","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"998ad9926cca8ac2b448dc8fa77371348c61740b","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.2.3.tgz","fileCount":4,"integrity":"sha512-yrJZbJMq5jmmparfrPuht1jXO4RfLuH609idB3ceNQSHEG8ZJJ/293GLE+z4n4PkV1zW2NmwMYrJGTahyhEyJg==","signatures":[{"sig":"MEUCIAaKumcMj6ipigOcwEXNG3PeEoRaNXTF0grZ6mhjAT6lAiEAtCATkNT5j56/0jTKLwtpN7YYd/p5DkEhq6zTgXCmrUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71004},"type":"module","engines":{"node":">=22"},"gitHead":"4a459becdb84fd5c486ec44b685fa759ecd52846","scripts":{"cxs":"tsx ./cli.ts","test":"vitest run","build":"esbuild cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.2.3_1777347730545_0.7794657546644876","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@act0r/cxs","version":"0.3.0","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.0","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"b5c1d2c724b824862e3c1f2ba1766d7cdb66ef58","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.0.tgz","fileCount":4,"integrity":"sha512-mbgw+dsx3PDQiBbIsSHmJqJDQlea7GpVug8dxnIR/UmTXIlvVOFqt425KkXn/NEHL5VXKWnmez+USm+oYqsnQg==","signatures":[{"sig":"MEQCIQD58Il73Ytg/Tg/u/W6RoaPT20hXdPen3tv6HN5whp/AgIfO7LJJVvzQZzrfKWqC2J2sybVbagJc9Zzt2Szvmxagg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88597},"type":"module","engines":{"node":">=22"},"gitHead":"ba5cbd2207a21d2acb3ff1ffd2b406c1250d7551","scripts":{"cxs":"tsx ./cli.ts","test":"vitest run","build":"esbuild cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.0_1777430879953_0.4230081989552297","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@act0r/cxs","version":"0.3.1","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.1","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"3b3b353214d1b5419e617c002a618d2da7925f16","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.1.tgz","fileCount":4,"integrity":"sha512-vYrBaQ4hVKxjW8TO69tbzejI0oxtBYQAYPOA/NQBN3/1c2MzXRHNbHUDKLna8xB8FUdeQ4m0Q5aLxiLvRjEzGQ==","signatures":[{"sig":"MEYCIQCDPbI8bogAjyTu8ZDCE/GgLy7/M1SRjDKfXVECS9ZL7wIhANU9E5WJuLgXfHOyPhCVGk6hEiHFTcQb33ODoiS2HqGB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96350},"type":"module","engines":{"node":">=22"},"gitHead":"8472118ab1a565d3d6ec14a8a9111c4a2d317eb1","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.1_1777536572800_0.8139738344589142","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@act0r/cxs","version":"0.3.2","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.2","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"c6314aebe40acb781d6c1a614392f153ca55bd5c","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.2.tgz","fileCount":4,"integrity":"sha512-YWDrSE/wDk1sQz4HUn8zpvE5uJnrRd0q4GH9nXYsrS4QvzZ5ROK0Va7eexA+WIxNEyPHFa75pWkE21ynFBwKtA==","signatures":[{"sig":"MEQCIFFk2bsSr/u70udcyqqJumF5gJ7ly/Zc0BNMS79Ex4tiAiBn5USQzvEaP8Mlhk8B+I3oCwrpsMQleSHOFxsZ4ABUAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110172},"type":"module","engines":{"node":">=22"},"gitHead":"717d2c06e6314e2e65f1ab66add95cd731c4bf37","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.7","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.2","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.2_1779184392881_0.12551474686696795","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@act0r/cxs","version":"0.3.3","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.3","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"d61350bed15952339b177fff3f93de5e68fc5ba3","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.3.tgz","fileCount":4,"integrity":"sha512-1oTu+HOguv8OCuhSrxv8T447jOsYJIqjiWjOxyuwkV+Z5Z1KrEOc11GjQY1UQA+9My+bClt4u5hVK0hhuxd2FQ==","signatures":[{"sig":"MEUCIBUraFChQIJUhV8X6GHk1i2fyN9qkZU1EfUkJr1w3v7UAiEAj6pgX2ff4Amny8sjxGNQOqb9MKF9i5jrE6ItRfmuxfA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113891},"type":"module","engines":{"node":">=22"},"gitHead":"5f32012e07c4b23b762483dbd0b4e85a9ec92bc4","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.8","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.3_1779447158045_0.56411989446403","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@act0r/cxs","version":"0.3.4","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.4","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"33d391662dafaf53c7a05ce5dc7a01b992ec8726","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.4.tgz","fileCount":4,"integrity":"sha512-pzTtnHZcwGrjvqjK0mKmmxeO9HBQ2ahiZci37u5TvDlJPGCHIlKASRYzb2rvPya/HnbYf6K5LyqXm7j29DGQeQ==","signatures":[{"sig":"MEUCIQDVZcJ82uIEnAToVajrD+V26OZ+OIVfdT8XGa3jlIp9HwIgP641h5igRELcBGkkIq4jw7WeytiY7cP2N42psf0wBNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115487},"type":"module","engines":{"node":">=22"},"gitHead":"c89e7466af5468f7f7e0e9df8431431406bda3a7","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.8","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.4_1780449620618_0.5356511687140115","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@act0r/cxs","version":"0.3.5","keywords":["codex","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.5","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"d7e5873b39e5d92e397e002896a2cfee7b097fe0","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.5.tgz","fileCount":4,"integrity":"sha512-rwgp3rYr2XTE+DDsV0CwkeVE0cxH+PIsZ67gdlfmbJclWL6LxiqlHBmVxDqYg3s+XEWRrJ29bl+Bp7xbbBj53w==","signatures":[{"sig":"MEUCIFR2tgDcU9H+TYUpCLFdFpVirKGpDMsfaM+5Z04kAskGAiEA5uuG7peTE9nXPkNZbJwwKCakWnv5Fq8QYyI/3iuXRxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153788},"type":"module","engines":{"node":">=22"},"gitHead":"bcc43dd9f1e6caf0774dbb45867294db56ad38ad","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.8","description":"Progressive search CLI for local Codex session logs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.5_1780752018957_0.03759697272942231","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@act0r/cxs","version":"0.3.6","keywords":["codex","claude-code","cli","fts","search","sqlite","session"],"license":"MIT","_id":"@act0r/cxs@0.3.6","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"homepage":"https://github.com/catoncat/cxs","bugs":{"url":"https://github.com/catoncat/cxs/issues"},"os":["darwin","linux"],"bin":{"cxs":"dist/cli.js"},"dist":{"shasum":"2847678661bbe3603c732dc3e2e81007d0f7fa50","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.6.tgz","fileCount":4,"integrity":"sha512-TEvquMPHbBP3mtTiB0pNqn4gev12fe/fANHN1jiRHB9HNRs5qdtRnqBw9Xjqz1X+TXe5k3otj3A3RKgGFY4ZnQ==","signatures":[{"sig":"MEYCIQDTS6hbjBTsUHOuuVhnMi9LkF5ncyTXHtKHbARzZF8IGQIhALXxxESPa5vieaJR7pBGrkBx5c9WtHyoiQRLUHuh1x5Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154896},"type":"module","engines":{"node":">=22"},"gitHead":"e8916317492741beacc37552e49c1b46ff107b25","scripts":{"cxs":"tsx ./src/cli.ts","test":"vitest run","build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","check":"tsc --noEmit && vitest run","eval:perf":"tsx ./eval/perf-bench.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"repository":{"url":"git+https://github.com/catoncat/cxs.git","type":"git"},"_npmVersion":"10.9.8","description":"Progressive search CLI for local Codex and Claude Code session logs","directories":{},"_nodeVersion":"22.22.3","dependencies":{"chalk":"^5.6.2","commander":"^14.0.3","better-sqlite3":"^12.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.5","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/cxs_0.3.6_1780808029404_0.671054841765935","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@act0r/cxs","version":"0.3.7","type":"module","description":"Progressive search CLI for local Codex and Claude Code session logs","license":"MIT","homepage":"https://github.com/catoncat/cxs","repository":{"type":"git","url":"git+https://github.com/catoncat/cxs.git"},"bugs":{"url":"https://github.com/catoncat/cxs/issues"},"bin":{"cxs":"dist/cli.js"},"publishConfig":{"access":"public"},"keywords":["codex","claude-code","cli","fts","search","sqlite","session"],"engines":{"node":">=22"},"os":["darwin","linux"],"scripts":{"build":"esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --external:better-sqlite3 --external:chalk --external:commander --outfile=dist/cli.js && node scripts/post-build.mjs","prepublishOnly":"npm run build","test":"vitest run","check":"tsc --noEmit && vitest run","cxs":"tsx ./src/cli.ts","eval:manual":"tsx ./eval/run-manual-eval.ts","eval:compare":"tsx ./eval/compare-eval-batches.ts","eval:perf":"tsx ./eval/perf-bench.ts","eval:dogfood":"tsx ./eval/run-dogfood-eval.ts"},"dependencies":{"better-sqlite3":"^12.9.0","chalk":"^5.6.2","commander":"^14.0.3"},"devDependencies":{"@types/better-sqlite3":"^7.6.13","@types/node":"^25.6.0","esbuild":"^0.28.0","tsx":"^4.21.0","typescript":"^6.0.3","vitest":"^4.1.5"},"_id":"@act0r/cxs@0.3.7","gitHead":"3710348241141610be6c258f0c11d86c237a75e6","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-WpLRbfmR5Z1wCtQ/P4jnUONRjPmBTZJq45Q87HD+h8GpBcZiYFx+UgY7iaLcVxY9dyoS8u2Dg0Vrz8eqPsOUzQ==","shasum":"d26bf503fa30d98a56dd2b2c14f141d1e870ea8f","tarball":"https://registry.npmjs.org/@act0r/cxs/-/cxs-0.3.7.tgz","fileCount":4,"unpackedSize":160758,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCU+mPsLqAXRVg0CTalp7qv5KM+dwyt9Xmtenb9N3HkqQIhAK64bVH2OxlCjtpkaT2IZy9l1K7UF4xMaLu16ywdjY25"}]},"_npmUser":{"name":"catoncat","email":"cat@chen.rs"},"directories":{},"maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cxs_0.3.7_1780817064610_0.9666575404895819"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T11:11:48.323Z","modified":"2026-06-07T07:24:24.897Z","0.2.0":"2026-04-27T11:11:48.570Z","0.2.1":"2026-04-28T02:10:21.353Z","0.2.2":"2026-04-28T03:17:15.739Z","0.2.3":"2026-04-28T03:42:10.715Z","0.3.0":"2026-04-29T02:48:00.094Z","0.3.1":"2026-04-30T08:09:32.922Z","0.3.2":"2026-05-19T09:53:13.026Z","0.3.3":"2026-05-22T10:52:38.177Z","0.3.4":"2026-06-03T01:20:20.743Z","0.3.5":"2026-06-06T13:20:19.099Z","0.3.6":"2026-06-07T04:53:49.570Z","0.3.7":"2026-06-07T07:24:24.753Z"},"bugs":{"url":"https://github.com/catoncat/cxs/issues"},"license":"MIT","homepage":"https://github.com/catoncat/cxs","keywords":["codex","claude-code","cli","fts","search","sqlite","session"],"repository":{"type":"git","url":"git+https://github.com/catoncat/cxs.git"},"description":"Progressive search CLI for local Codex and Claude Code session logs","maintainers":[{"name":"catoncat","email":"cat@chen.rs"}],"readme":"# cxs\n\n[https://cxs.chen.rs](https://cxs.chen.rs)\n\n`cxs` is a local-first CLI for searching local Codex and Claude Code session\nlogs. It is designed for progressive retrieval: find the right session first,\nthen read only the relevant range or page.\n\nThe public session sources in this checkout are `codex` and experimental\n`claude-code`. `find` searches all public indexed sources by default so agents\ndo not have to guess where a memory came from. Other fixed commands still treat\nomitted `--source` as Codex unless they receive a source-qualified session ref\nsuch as `claude-code:<id>`. Claude Code support is public in this checkout, but\nit is still an experimental transcript-reader contract rather than a stable\nraw-format promise.\n\nWhen reading this from a source checkout, the installed `cxs` on your `PATH`\nmay still be an older npm release. Check `cxs status --help` before using\n`--source`; if help does not list `--source`, omit source flags or update the\ninstalled CLI from a release that includes source-aware behavior.\n\nCore workflow:\n\n```text\nstatus -> ensure selector coverage -> find/list -> read-range/read-page\n```\n\n## What It Is\n\n- A CLI for indexed search over local Codex JSONL sessions.\n- A retrieval backend for agents, sidecars, and local tools that need session recall.\n- A manual-sync tool: `sync` is the only command that writes the SQLite index.\n\n## What It Is Not\n\n- Not a GUI.\n- Not a watcher, daemon, or realtime sync service.\n- Not a live in-flight thread attachment layer.\n- Not a default full-transcript dumper.\n\n## Install\n\nRequirements:\n\n- macOS or Linux. Windows users should use WSL.\n- Node.js `>= 22`.\n- Read access to `~/.codex/sessions`.\n\nInstall the CLI globally:\n\n```bash\nnpm i -g @act0r/cxs\ncxs --help\n```\n\nThe installed command is `cxs`. The package is scoped because the unscoped\n`cxs` package name is already taken on npm. The current distribution is the npm\npackage only; no standalone binary is published.\n\nFor one-off usage:\n\n```bash\nnpx @act0r/cxs@latest --help\nnpx @act0r/cxs@latest status --json\n```\n\n## Quick Start\n\nInspect the Codex source inventory and index coverage:\n\n```bash\ncxs status --json\n```\n\nCheck coverage for a project:\n\n```bash\ncxs status --cwd /Users/you/work/project --json\n```\n\nIf `requestedCoverage.recommendedAction` is `\"sync\"`, build or refresh coverage:\n\n```bash\ncxs sync --cwd /Users/you/work/project\n```\n\nReplace the example paths with your own absolute paths.\n\nSearch and read progressively:\n\n```bash\ncxs find \"health check\"\ncxs read-range <sessionRef> --seq <matchSeq>\ncxs read-page <sessionRef> --offset 0 --limit 20\n```\n\nYou can run the same flow without global installation:\n\n```bash\nnpx @act0r/cxs@latest sync --root /Users/you/.codex/sessions\nnpx @act0r/cxs@latest find \"health check\" --root /Users/you/.codex/sessions\n```\n\n## Commands\n\n| Command | Purpose |\n| --- | --- |\n| `cxs status` | Show execution context, source inventory, index state, and coverage. `--selector` checks whether a target range is fresh. Does not write the index. |\n| `cxs sync --root <dir>\\|--cwd <path>\\|--selector <json>` | Scan selected sessions for the chosen source and update the SQLite index. This is the only write command. |\n| `cxs find <query>` | Search indexed sessions across all public sources by default and return ranked session candidates with minimal snippets. Use `--source <id>` to narrow, or `--root`, `--cwd`, and `--sort ended` for scoped \"latest + keyword\" queries. |\n| `cxs read-range <sessionUuid>` | Read a small message window around a matched sequence or in-session query. |\n| `cxs read-page <sessionUuid>` | Read a session page by offset and limit. |\n| `cxs list` | List indexed sessions without full-text search. |\n| `cxs stats` | Show index statistics. |\n\nAll commands that read indexed content support `--json`. Read commands fail\ncleanly if the index has not been created yet.\n\nIn source-aware builds, all fixed commands accept `--source <id>`. Public\nvalues are `codex` and experimental `claude-code`.\n\n`find` is the recall primitive and defaults to all public indexed sources:\n\n```bash\ncxs find \"health check\"\ncxs find \"health check\" --source all\n```\n\nUse a source only to narrow or diagnose:\n\n```bash\ncxs find \"health check\" --source codex\ncxs find \"health check\" --source claude-code\n```\n\nFor `status`, `sync`, `list`, `stats`, and bare read commands, omitting\n`--source` still means Codex. Read commands can also consume the `sessionRef`\nreturned by `find` directly:\n\n```bash\ncxs status --source claude-code --json\ncxs sync --source claude-code --root ~/.claude/projects --json\ncxs read-range claude-code:<sessionId> --seq <matchSeq>\n```\n\nUnknown sources still return `unsupported_source` before doing command work.\nClaude Code remains experimental public support: the current adapter is built\naround the existing local transcript reader, validated with synthetic fixtures,\nand may still evolve toward a more stable SDK/session API contract. If an\ninstalled CLI rejects the `--source` option itself, that installation predates\nthis behavior; update the CLI or run the checkout with `npm run cxs -- ...`.\n\n## Selectors\n\n`sync` requires an explicit scope, but it no longer requires handwritten\n`root` inside selector JSON. Prefer these CLI shortcuts:\n\n```bash\ncxs sync --root /Users/you/.codex/sessions\ncxs sync --cwd /Users/you/work/project\ncxs find \"health check\" --cwd /Users/you/work/project --sort ended\ncxs list --root /Users/you/.codex/sessions --sort ended -n 10\n```\n\nUse full selector JSON for date ranges or advanced scopes. If you pass\n`--root`, the selector JSON may omit `root`; without `--root`, cxs uses the\ndefault source root. Selector JSON may also omit `source`; canonical selectors\ninclude the resolved source id in this checkout.\n\n```text\n{\"source\":\"codex\",\"kind\":\"all\",\"root\":\"/Users/you/.codex/sessions\"}\n{\"source\":\"codex\",\"kind\":\"date_range\",\"root\":\"/Users/you/.codex/sessions\",\"fromDate\":\"2026-04-01\",\"toDate\":\"2026-04-30\"}\n{\"source\":\"codex\",\"kind\":\"cwd\",\"root\":\"/Users/you/.codex/sessions\",\"cwd\":\"/Users/you/work/project\"}\n{\"source\":\"codex\",\"kind\":\"cwd_date_range\",\"root\":\"/Users/you/.codex/sessions\",\"cwd\":\"/Users/you/work/project\",\"fromDate\":\"2026-04-01\",\"toDate\":\"2026-04-30\"}\n```\n\nExample list query scoped to one project:\n\n```bash\ncxs list --selector '{\"kind\":\"cwd\",\"root\":\"/Users/you/.codex/sessions\",\"cwd\":\"/Users/you/work/project\"}' --sort ended -n 10\ncxs list --selector '{\"kind\":\"cwd\",\"cwd\":\"/Users/you/work/project\"}' --sort ended -n 10\n```\n\nExample latest keyword query, excluding the current self-hit:\n\n```bash\ncxs find \"xsearch\" --cwd /Users/you/work/project --sort ended --exclude-session <current_session_uuid> -n 5 --json\n```\n\n`find` defaults to relevance sorting. Do not treat default `find` order as time\norder.\n\n## Sync And Storage\n\nBy default, source-scoped commands read Codex sessions from\n`~/.codex/sessions`. With `--source claude-code`, the default root is\n`~/.claude/projects`. `find` defaults to searching all public indexed sources\nalready present in the SQLite index. Index data is stored at:\n\n```text\n~/.local/state/cxs/index.sqlite\n```\n\n`$XDG_STATE_HOME` is respected, and `CXS_DATA_DIR` has the highest priority:\n\n```bash\nexport CXS_DATA_DIR=\"$HOME/.config/cxs\"\n```\n\nSync is strict by default. If any selected file fails to parse or write, `sync`\nexits non-zero with per-file diagnostics and does not commit partial coverage.\nOn success, strict sync updates the selected index slice for files that are\ncurrently visible in the source snapshot and writes complete coverage for that\nsnapshot. Previously indexed sessions whose source JSONL later disappears are\nretained by default, so raw log maintenance does not make historical `cxs find`\nor `read-*` results disappear.\nPass `--prune` only when you explicitly want to delete indexed sessions that are\nno longer present in the selected source snapshot.\nPass `--best-effort` only when you explicitly want successful files written\ndespite failures; best-effort sync does not record complete coverage.\n\n`sync` is not required before every query. Use `status --cwd` or\n`status --selector` to check coverage first. A fresh `{\"kind\":\"all\", ...}`\ncoverage record covers narrower selectors under the same source and root; a high\n`stats.sessionCount` only means rows exist and is not itself a freshness proof.\n\nIndexes created before `cxs-v7-source-identity` should be refreshed with\n`sync --root`, `sync --cwd`, or `sync --selector` so selector coverage and reads\nuse source-aware identity, current `path_date`, and source-root provenance\nfields. Source-aware read commands do not migrate old indexes because they are\nread-only; they return `index_schema_upgrade_required` with a `cxs sync` hint\nwhen the index needs this refresh.\n\nOlder `cxs <= 0.2.0` indexes stored under `~/.cache/cxs/` are migrated\nautomatically on first run when the new state directory is empty. If the new\ndirectory already has data, migration is skipped and the old cache is left in\nplace.\n\n## Retrieval Model\n\nThe current retrieval chain is:\n\n```text\nmessage/session recall -> session heuristic rerank -> read-range/read-page\n```\n\nImplemented recall surfaces:\n\n- `messages_fts` over real user and assistant messages.\n- `sessions_fts` over `title + summary_text + compact_text + reasoning_summary_text`.\n- Session-level FTS weights: title `8.0`, compact `4.0`, summary `3.0`, reasoning summary `1.2`.\n- A small LIKE fallback for rare zero-token CJK message queries.\n\n`find` returns enough context to choose the next read step. If a result only\nmatches session-level fields, it is marked with `matchSource = \"session\"` and\nhas no message anchor; use `read-page` for those results.\n\nNot implemented yet:\n\n- Resource-level reranking.\n- Richer projection or event replay.\n- Range cache.\n- Duplicate-family collapse or diversity control.\n- Strong gold-set acceptance suite.\n- Public Claude Code CLI support.\n\nMore detail: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). Roadmap:\n[docs/ROADMAP.md](docs/ROADMAP.md).\n\n## Development\n\nRun from source:\n\n```bash\ngit clone https://github.com/catoncat/cxs.git\ncd cxs\nnpm install\nnpm run cxs -- --version\n```\n\nUse `npm run cxs -- ...` to verify checkout behavior. A globally installed\n`cxs` command may still be an older npm release until a separate release and\ninstall workflow updates it.\n\nCommon checks:\n\n```bash\nnpm run check\nnpm run eval:manual\nnpm run eval:compare -- data/cxs-eval/<before-batch> data/cxs-eval/<after-batch>\n```\n\n`npm run check` runs TypeScript and Vitest. `eval:manual` exports manual eval\nresults; `eval:compare` compares two eval batches.\n\nProject rules and contribution notes:\n\n- [AGENTS.md](AGENTS.md)\n- [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Agent Skill Package\n\nThis repository also publishes an installable agent skill package:\n\n```text\nskill-packages/cxs\n```\n\nInstall or update it with:\n\n```bash\nnpx skills add catoncat/cxs --full-depth --skill cxs -g -a codex -y\n```\n\nList available skills in the repository:\n\n```bash\nnpx skills add catoncat/cxs --full-depth --list\n```\n\nImportant boundaries:\n\n- `npx skills add` installs the agent skill only; it does not install the `cxs` CLI.\n- Install the CLI with `npm i -g @act0r/cxs`, use `npx @act0r/cxs@latest`, or set `CXS_BIN` for the skill.\n- Restart Codex or open a new session after installing or updating the skill.\n","readmeFilename":"README.md"}