{"_id":"@adhd/sox-store-adapter","_rev":"29-2ee3a728c9f78b905cd2e71e8f25e66a","name":"@adhd/sox-store-adapter","dist-tags":{"latest":"0.13.2"},"versions":{"0.1.0":{"name":"@adhd/sox-store-adapter","version":"0.1.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.1.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"d6257a5842ed52079c5ffd0d25574a6ebe186085","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.1.0.tgz","fileCount":35,"integrity":"sha512-tRyOOAL2p4ayVDjSdikhQIjED7A+1ljwFtqOZt05RnVCxrMaBGKGH4FJ5nVbfsQ41b6QHQYmY1/mKWLS4TKKeA==","signatures":[{"sig":"MEUCIES/1aCJuY8mmHxVtJ4OUBXGIyQWEENTfWkyPJxCLiG9AiEAoP9fH67zn21JEI2dCSWMlKj/LnYkfYGOhd8IvlIStjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111311},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/4d9961947d9ee1f9ac3a567f9b904b89/adhd-sox-store-adapter-0.1.0.tgz","_integrity":"sha512-tRyOOAL2p4ayVDjSdikhQIjED7A+1ljwFtqOZt05RnVCxrMaBGKGH4FJ5nVbfsQ41b6QHQYmY1/mKWLS4TKKeA==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"better-sqlite3":"^12.10.0"},"_hasShrinkwrap":false,"peerDependencies":{"@tursodatabase/database":"^0.7.1"},"peerDependenciesMeta":{"@tursodatabase/database":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.1.0_1785132615911_0.057324310327401484","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adhd/sox-store-adapter","version":"0.1.1","license":"MIT","_id":"@adhd/sox-store-adapter@0.1.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"f599b3796f9ccbeeb66a1667f021a627d015eb3e","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.1.1.tgz","fileCount":59,"integrity":"sha512-RdBlgK7SNkW6D1VAZChk2vzpY1zBq3DQhMywft+tkkXKjS6wk5YNMcmhHjGx1ffpvFgzJ56XV9yc2rioRWU6Yg==","signatures":[{"sig":"MEQCIDStylw3fIn/KtvnNqK24jCeK5Me1oD9RfB0hYzSajqoAiBtU9ZHLOQ7bFX8ZTjo/+6utzyI7S4Sk6QthhiLyN71Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474143},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/Users/nix/.adhd/sox-ecosystem/publish-verify-201412/adhd-sox-store-adapter-0.1.1.tgz","_integrity":"sha512-RdBlgK7SNkW6D1VAZChk2vzpY1zBq3DQhMywft+tkkXKjS6wk5YNMcmhHjGx1ffpvFgzJ56XV9yc2rioRWU6Yg==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"better-sqlite3":"^12.10.0","@adhd/sox-telemetry":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@tursodatabase/database":"^0.7.1"},"peerDependenciesMeta":{"@tursodatabase/database":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.1.1_1785892758756_0.03227187421971367","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adhd/sox-store-adapter","version":"0.1.2","license":"MIT","_id":"@adhd/sox-store-adapter@0.1.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"779e2cc5a530717c0b10e61b1253bca8f050d91f","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.1.2.tgz","fileCount":59,"integrity":"sha512-CnYqdPpPlYBW9vEXolUf0yIp6NhzN67o84OHu6HSWI/dkUjBtFYfuxaVeroCcR9xoUINcUvfwnGhT7kfIcx4/A==","signatures":[{"sig":"MEUCIQCjRbD5ELZ7ZTWtQ+ifEWENWnTYkSiInWuQxg8Cn65M6AIgTXEbw0H3xBWzx3BBoC2T/ing0TJRMyPmok1SA4Etx00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474020},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/Users/nix/.adhd/sox-ecosystem/publish-verify2-203027/adhd-sox-store-adapter-0.1.2.tgz","_integrity":"sha512-CnYqdPpPlYBW9vEXolUf0yIp6NhzN67o84OHu6HSWI/dkUjBtFYfuxaVeroCcR9xoUINcUvfwnGhT7kfIcx4/A==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"better-sqlite3":"^12.10.0","@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.1.2_1785893484108_0.4879049722917368","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adhd/sox-store-adapter","version":"0.2.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.2.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"7e543b81aecd1a96d5f8e485a0db71c0849b0b51","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.2.0.tgz","fileCount":63,"integrity":"sha512-KFBwrnkQXG14tk/IapSB1JP+IVep6RHcFzqkKLEWPWtmDC3zOcdpz6rK8Y8CPKv4QLpPWjWOaFi3HD+vUIm6dw==","signatures":[{"sig":"MEUCIQCqG07xZo4Aze36vtwXOCLRF2EgCbaL65r//Pqo3p3+LwIgA5yfEG6J4FWcidx5M8bC7sOl5U1oSgpIxqPI9UcHVqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521158},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/Users/nix/.adhd/sox-ecosystem/pubv3-142121/adhd-sox-store-adapter-0.2.0.tgz","_integrity":"sha512-KFBwrnkQXG14tk/IapSB1JP+IVep6RHcFzqkKLEWPWtmDC3zOcdpz6rK8Y8CPKv4QLpPWjWOaFi3HD+vUIm6dw==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"better-sqlite3":"^12.10.0","@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.2.0_1785957729967_0.25570257242536965","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adhd/sox-store-adapter","version":"0.3.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.3.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"56d574e3e32fb28a420f9322f3ec86f7f411824d","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.3.0.tgz","fileCount":67,"integrity":"sha512-mpzEd1itF2V2Tkid20Oj22NMPo0KG0M2vKp+iGnNSbkkA82E/SVDQ1QBDZfX4s+9NMFJuddKEcdd1lnjgCBEIg==","signatures":[{"sig":"MEUCIBSuDPQGn/OJ+koHtgQTU6INhjgK9xmR6DEacj0QHI6SAiEAyES3Esj4y5C0dj/Ta39mDavWAvP6b0v9efvjGnAOxQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560849},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/cb663555d1d5e125047e8c7694e2f09a/adhd-sox-store-adapter-0.3.0.tgz","_integrity":"sha512-mpzEd1itF2V2Tkid20Oj22NMPo0KG0M2vKp+iGnNSbkkA82E/SVDQ1QBDZfX4s+9NMFJuddKEcdd1lnjgCBEIg==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"better-sqlite3":"^12.10.0","@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.3.0_1786144734765_0.8391072281688452","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adhd/sox-store-adapter","version":"0.4.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.4.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"4ca4ce6239f4692409c88ed4f58d73c12b5e2639","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.4.0.tgz","fileCount":71,"integrity":"sha512-yp7D+wYoFZbNmtIVxpUUwMA12/ExDf6uHXGDjt6jqWdl8gMZ6Iz/LVgfaUDYlX1X98BgLlI4ux+vkgWK9/8ZXg==","signatures":[{"sig":"MEUCIQCIKqxnzsHTocig5EWr3JJ6kxG1HdVBIlBPbBrEpDcobQIgUJchR3H4xoxPWqL0IG6D1/5kX/YHRphRtflATTJmv9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":637866},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/df520b0a80fbfc2a3cdb2a38f5277112/adhd-sox-store-adapter-0.4.0.tgz","_integrity":"sha512-yp7D+wYoFZbNmtIVxpUUwMA12/ExDf6uHXGDjt6jqWdl8gMZ6Iz/LVgfaUDYlX1X98BgLlI4ux+vkgWK9/8ZXg==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.4.0_1786247477926_0.38457719859613415","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adhd/sox-store-adapter","version":"0.5.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"33e0584a302d6be99329127183f0e236f993ceb7","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.0.tgz","fileCount":71,"integrity":"sha512-RK/JOmC3fYEGh5ZxqlvEEduJJBQVKMwaUUyEORB1zKKjrmAvB4NeUn4apwvTmR4A16SqIj4w+ABfDylP72z2Tw==","signatures":[{"sig":"MEUCIQDFD+2ZKALbX/kdEV0NfHYB3uac7wNZF1odEC1ARqnGMAIgMleTGHzpgq1pOv6XvAzVg0Hu09FUjCo6UNrP4tX/Pjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":640044},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"deprecated":"Broken publish: ships pnpm 'workspace:*' protocol for @adhd/sox-telemetry (uninstallable by npm consumers). Use 0.5.1 — same code, corrected dependency.","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"workspace:*","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.0_1786383385737_0.19263365806523258","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@adhd/sox-store-adapter","version":"0.5.1","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"9b3fc8e7194557e3ba2ecfed065b910af5d2fe05","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.1.tgz","fileCount":71,"integrity":"sha512-s5vDgaQE/ghTTDrXd2+MxGJ46T9B8yvv85+HlECnQQ1lUSCT8TV9NF3rD6mwMdzcUQYrakv1IUS/h8YSljv62Q==","signatures":[{"sig":"MEQCIBUkDseahVTgkSOufB2vO9+DSGTKL14a2zU7a6oWyGP3AiBrYNqBBRS1elG7T7QyIrF5MyYvVQC1+LQ1Tp0p1NXGdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":640037},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/f0f919d0215c26be7b90bffd8a1f21df/adhd-sox-store-adapter-0.5.1.tgz","_integrity":"sha512-s5vDgaQE/ghTTDrXd2+MxGJ46T9B8yvv85+HlECnQQ1lUSCT8TV9NF3rD6mwMdzcUQYrakv1IUS/h8YSljv62Q==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.1_1786383517995_0.26023513479478044","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@adhd/sox-store-adapter","version":"0.5.2","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"2b336004f74ffe6e30458ef5b669d52e2b9ef1ff","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.2.tgz","fileCount":75,"integrity":"sha512-D7d7LgrIIssAUebW8ZiqvwayX6wheb5tZBTQKZdGlj//E2Y6TCjtYEN5AEv3Yd3l5JFR+07CsAidzT/99NA3Pg==","signatures":[{"sig":"MEQCIHbPnq2U9zEYrE0yR186Ka/2gbu9LjMSWeNVipirZcjzAiAWDyG2POUnuxaGscIfTKEZxcTyL6jbxAlZFsQZkXqTuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":751476},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/2064c676f9a319a381f3ce481211110d/adhd-sox-store-adapter-0.5.2.tgz","_integrity":"sha512-D7d7LgrIIssAUebW8ZiqvwayX6wheb5tZBTQKZdGlj//E2Y6TCjtYEN5AEv3Yd3l5JFR+07CsAidzT/99NA3Pg==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.2_1786494960690_0.2736205990674401","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@adhd/sox-store-adapter","version":"0.5.3","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"88952030695587313cab329636db748578572c90","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.3.tgz","fileCount":75,"integrity":"sha512-OefBEB92HXdD6LR1IpUh+RdIG8Tqw38p0tTmNt9qlzWAN/JzAOzJrRQOBnIuKpCEn69PHJ0wWc4fuhjGerhAiQ==","signatures":[{"sig":"MEUCID4Ji8mSD7pRzdpuV+WVi+vYW5t2ihcslIVl6qbk8NXPAiEAhXrYWlIpdH+YPEhfOJvvGwBbItq3sE529rM70wZvzAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761334},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/25c31f188787cfece874ac8901dbf60f/adhd-sox-store-adapter-0.5.3.tgz","_integrity":"sha512-OefBEB92HXdD6LR1IpUh+RdIG8Tqw38p0tTmNt9qlzWAN/JzAOzJrRQOBnIuKpCEn69PHJ0wWc4fuhjGerhAiQ==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.3_1786506949823_0.7377060553504828","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@adhd/sox-store-adapter","version":"0.5.4","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.4","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"4429b582642445a28f017fc11df61df8c342d5b5","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.4.tgz","fileCount":75,"integrity":"sha512-rnkeVodlCNeSusN/+6aoveL9tjzW596ijzMTMXgTzprpFoliam/qW8C/KYYiKhen8tK1YxjlynMW8/uHHyn/rQ==","signatures":[{"sig":"MEQCICZwO69dqgPaphJTp5FAanEzyLK0Y5WVRQo6X0r6a4PWAiA70SnMDrHVQfDmp6SHMuR+x8UFlAfgECwE5EfsSLyZkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":767986},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/979ee9f9866d9cf6687bb6a34f275876/adhd-sox-store-adapter-0.5.4.tgz","_integrity":"sha512-rnkeVodlCNeSusN/+6aoveL9tjzW596ijzMTMXgTzprpFoliam/qW8C/KYYiKhen8tK1YxjlynMW8/uHHyn/rQ==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.4_1786513698638_0.8966879468417617","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@adhd/sox-store-adapter","version":"0.5.5","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.5","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"ed0c0244bdd46aa70516b4b13daab4f63a016f84","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.5.tgz","fileCount":75,"integrity":"sha512-LlvimY0EuCryUQ9qgzViAeei2oCbOsdeJiCkfWpv+7VoZuREQkMTPHyd4/3JFYjNyC6MwFglz8RMxmGlX9k4Uw==","signatures":[{"sig":"MEQCIDueU+jkXGW/99hPrbAdO/NMVLV1+dxOh/emn0HuT60aAiAkMQNR73dvJLeQQEljklOv5H5+FRf32EEt61FVtkK7sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":773633},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/c7cc58d94e3be647b35c0179a544dc36/adhd-sox-store-adapter-0.5.5.tgz","_integrity":"sha512-LlvimY0EuCryUQ9qgzViAeei2oCbOsdeJiCkfWpv+7VoZuREQkMTPHyd4/3JFYjNyC6MwFglz8RMxmGlX9k4Uw==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.5_1786520608090_0.4559517705582139","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@adhd/sox-store-adapter","version":"0.5.6","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.6","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"65c1c0fa09b6c1e661e9be0ac6d717c572231ac4","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.6.tgz","fileCount":75,"integrity":"sha512-j3ajVnoPmHnPnN6MiqwD6I+xD8HcG7GPZv21VVjcZP370PoSDqkgCH4FuKfWh5d4ZnM7OgEExAfF8woypWIL1Q==","signatures":[{"sig":"MEYCIQDZ4EuagqUCOWxRwal3laNAHZ9jB4sxH+6/Rt5ZUJQjcwIhANiroix/q2+G8jHs2M680UpL72rnY/X2op2jnNpC2w8j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":783103},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/27758fed676761d354cabf29a489bcf9/adhd-sox-store-adapter-0.5.6.tgz","_integrity":"sha512-j3ajVnoPmHnPnN6MiqwD6I+xD8HcG7GPZv21VVjcZP370PoSDqkgCH4FuKfWh5d4ZnM7OgEExAfF8woypWIL1Q==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.6_1786521841133_0.3945262857525642","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@adhd/sox-store-adapter","version":"0.5.7","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.7","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"6f9435dfe5d6776358031bf8aab8486c5bd9950a","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.7.tgz","fileCount":79,"integrity":"sha512-zNwmtjZlZkeqIX+03q+zSInpCtsWTWZBmZur38zS9SXC5xnbLjzJsJ+ApC+RpWTqh3h+/mnDBz0MvJ7v+Ob95A==","signatures":[{"sig":"MEQCID+XA9l7r8O8jBEWXUYGFerJv1OnZ9YmgqaG4kNDOGnRAiBBfnZgsgWs0PmUgaHDgF9izNxltjXecA3B7KtxUCE0YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":807495},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/81aa25a0ebc54387ffb785d916a77b24/adhd-sox-store-adapter-0.5.7.tgz","_integrity":"sha512-zNwmtjZlZkeqIX+03q+zSInpCtsWTWZBmZur38zS9SXC5xnbLjzJsJ+ApC+RpWTqh3h+/mnDBz0MvJ7v+Ob95A==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.7_1786525896588_0.03590567610875994","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@adhd/sox-store-adapter","version":"0.5.8","license":"MIT","_id":"@adhd/sox-store-adapter@0.5.8","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"804bc490f84a66abc01caae38fcd44f0b503243a","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.5.8.tgz","fileCount":83,"integrity":"sha512-XuV6OZaq1Gfor1WKZFKccRx6kKxpAlr75U56GXXjtXELrmVc/RA2JnJo6TJfGlZZHEpXSsM5wZxh64I0nEuBOA==","signatures":[{"sig":"MEUCIFnqt4j94hMtbWBL4JmxVEaR1fwjYQbeUwCcO+pDhggGAiEAvV0KWynzfwRs9/wpb0NmlYBDZjpCh75k1bSMgpghD2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":908461},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.5.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/2bbfec9c3f10e241b7e4efd78d0ea93b/adhd-sox-store-adapter-0.5.8.tgz","_integrity":"sha512-XuV6OZaq1Gfor1WKZFKccRx6kKxpAlr75U56GXXjtXELrmVc/RA2JnJo6TJfGlZZHEpXSsM5wZxh64I0nEuBOA==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.5.8_1786575363536_0.2521880998868056","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adhd/sox-store-adapter","version":"0.7.0","license":"MIT","_id":"@adhd/sox-store-adapter@0.7.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"8758ec138908a7501c6602fa1ef5bf4dd586f71b","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.7.0.tgz","fileCount":91,"integrity":"sha512-gJ+wYhi52cji5/MDJB/93YGQwqr0Jah8YEwCd8DD+oq7OweHmUmZKglFW7+fl1KcdpB4VJeTJ9uMGiJRDiafLA==","signatures":[{"sig":"MEQCIE8ciEoEcmf6rVnqtyn4eP9HVjAjZibmk0QtcwtdO+fdAiAWcop2x4+M3Zn3eJCyGS4+2hVPfD1gIZnctuerHo2F/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1147298},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/d294709e2a78c4aeca22ed67cfe4f759/adhd-sox-store-adapter-0.7.0.tgz","_integrity":"sha512-gJ+wYhi52cji5/MDJB/93YGQwqr0Jah8YEwCd8DD+oq7OweHmUmZKglFW7+fl1KcdpB4VJeTJ9uMGiJRDiafLA==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.7.0_1787113045869_0.9435388820062485","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@adhd/sox-store-adapter","version":"0.7.1","license":"MIT","_id":"@adhd/sox-store-adapter@0.7.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"8e56b6a469c8cdb30a8f5547b24687145d12f4c2","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.7.1.tgz","fileCount":91,"integrity":"sha512-lG3IvBAnjX6RTYAqHYtw1DGcoOSZCxlUh4H/KcOyJVpxi+lNBza9KbhRy5NZtwyQyGc/Mdo6FcHuPtVavcxYvA==","signatures":[{"sig":"MEUCIAg9rtY+fTA2vW5lbISoY0Afj1TH0DskbSXGaSzyc1MnAiEAlS/48MGoWMYdPvJM1LGFmAuwxn3nrztHDRSfK8gE6m4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1150023},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.7.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/c8e114546358a345f11d23f84f080a45/adhd-sox-store-adapter-0.7.1.tgz","_integrity":"sha512-lG3IvBAnjX6RTYAqHYtw1DGcoOSZCxlUh4H/KcOyJVpxi+lNBza9KbhRy5NZtwyQyGc/Mdo6FcHuPtVavcxYvA==","_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.7.1_1787259631859_0.9222854247838874","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@adhd/sox-store-adapter","version":"0.8.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.8.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"e96d6deefc6a340fa99c649ebd075aad8d1696a6","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.8.0.tgz","fileCount":92,"integrity":"sha512-sjSYpGAU9epZEQSslX+cShfj+eaDn9gj/3lviSaxYtZ4JSdeikOPaeHprPg1gctdN+iEQnq9qPW87/AfJ8Bdyg==","signatures":[{"sig":"MEYCIQD/FuNMx4mxo4S5lOfSWuSZPG6BFrKfpmPsaMGAtXo1VAIhAKhzlzSjyhp/YPidtEYuO+1AMRkPwRX91Ymr0DLV59MK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1152632},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/7793849da3cc71f86bad168483d6f224/adhd-sox-store-adapter-0.8.0.tgz","_integrity":"sha512-sjSYpGAU9epZEQSslX+cShfj+eaDn9gj/3lviSaxYtZ4JSdeikOPaeHprPg1gctdN+iEQnq9qPW87/AfJ8Bdyg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.8.0_1787933935158_0.4460685451184436","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@adhd/sox-store-adapter","version":"0.9.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.9.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"24084214ba7049eba7946403a7043c0febeca28b","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.9.0.tgz","fileCount":100,"integrity":"sha512-ngbY0QYOiqTamnpp3rAum9hnLiQs6EcEJ+ehoe6LM/HZyOXFbwl8izgRsgmoBNObvr4Q+kkuwvTGepGKx7dy1g==","signatures":[{"sig":"MEUCIC/hVZLSxw+tEq9oDLuIcosIKLB2pbwiemjQcl7rS+pQAiEAzFGucu9dHbTvw8iX2Yse3xwjf3YxLEOZfDQYRl1cU4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1236482},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/9d7f49efce8ffc076cbf4328e30eb8eb/adhd-sox-store-adapter-0.9.0.tgz","_integrity":"sha512-ngbY0QYOiqTamnpp3rAum9hnLiQs6EcEJ+ehoe6LM/HZyOXFbwl8izgRsgmoBNObvr4Q+kkuwvTGepGKx7dy1g==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.9.0_1788566483515_0.8634340929063575","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@adhd/sox-store-adapter","version":"0.9.1","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.9.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"b287f4bda91c3844ad0cfdd340fd832635515497","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.9.1.tgz","fileCount":100,"integrity":"sha512-Ev2AliiYDNihNnuo0mIZCL+vEx4gR151N48zRGnEKRJhx1ThOrysmk//PWCYeMJeVf+0Iaxzf3nQPrklHcu6bQ==","signatures":[{"sig":"MEYCIQCS3UMg/ySpjN7j8+1oM/MNrskonPjoCsn65kIs9hxUwQIhAIutByov+Z+bvNtYza86ACWmdrME5QNbZRnKNB/DDT3w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1246332},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.9.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/ca477bfce68d94dd0fe6d9fd4999dc46/adhd-sox-store-adapter-0.9.1.tgz","_integrity":"sha512-Ev2AliiYDNihNnuo0mIZCL+vEx4gR151N48zRGnEKRJhx1ThOrysmk//PWCYeMJeVf+0Iaxzf3nQPrklHcu6bQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.9.1_1788727916588_0.9888556453962025","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@adhd/sox-store-adapter","version":"0.9.2","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.9.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"6fbf7dc3d6c242171b55076eb4454deaa58c3a7b","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.9.2.tgz","fileCount":100,"integrity":"sha512-XH19cXcMgr0YgM9NSphhQp7a22PKdAPMntziWkyhbpe/Zzjs5b0QvSB5UvVNy3m0AwoxtPR2okOnBqW3qzbeoQ==","signatures":[{"sig":"MEUCIAuaIyf2fuMGJFWZJQmWAyd4F6HoLDGmbTfJnSOtHZnfAiEAv1/vPoksl/qJ3ZRRzHYJAh6T/OYrjeaCec6FDkdaG+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1250540},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.9.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/7bdbe9448bd0a0faaf0b675d2838ae7f/adhd-sox-store-adapter-0.9.2.tgz","_integrity":"sha512-XH19cXcMgr0YgM9NSphhQp7a22PKdAPMntziWkyhbpe/Zzjs5b0QvSB5UvVNy3m0AwoxtPR2okOnBqW3qzbeoQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.9.2_1789422369679_0.02583857342726148","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@adhd/sox-store-adapter","version":"0.9.3","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.9.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"f2db9fe8b9203fbbab4fe173d6749c1c7507e3c4","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.9.3.tgz","fileCount":100,"integrity":"sha512-MLYQd2KYwmhK64pXIuefcZZOYVcb2yHY9njCjuzHeIIoM34ZUsIwuh9zR3g5Y+E8b6GFUDJJj6FOb/ESNRkGaA==","signatures":[{"sig":"MEUCIC1fQLjlUIEEapqoCnCH9hKetO0liZE2UakP7Ukl1LrqAiEAiObGBAxl8PTkJaReKy2gBqH0DC6Lanfb0YtuYnFir40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFF5iPEgphiiBBbRC7ErHH4phjao/hdAmZTkwZ7Gb9zsAiATf+U88Z0R8IMM5hk80jQSv90DsbBxG2pA+e4XOeTatw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1254545},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.9.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/5c71977425bbe1aa9b11a1c77f0ac98b/adhd-sox-store-adapter-0.9.3.tgz","_integrity":"sha512-MLYQd2KYwmhK64pXIuefcZZOYVcb2yHY9njCjuzHeIIoM34ZUsIwuh9zR3g5Y+E8b6GFUDJJj6FOb/ESNRkGaA==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.1","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.9.3_1790298431242_0.2240677408984566","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@adhd/sox-store-adapter","version":"0.10.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.10.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"7a04fccaf9417ea979d234c02f916662b946a21b","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.10.0.tgz","fileCount":108,"integrity":"sha512-kuIH1yJjsFBMdmF6K0sml24wopcQk+PHMWFc75XPt45TXntoGkfLVHiD0F/qYbH01EwCI/NdDfPzGGe3PaScDg==","signatures":[{"sig":"MEQCIGMtmWAfkzgUYFsT0RrC1sB54YBgVwMUy6OCni6RQhYDAiBGdeaRTg9aXhroiruIJ0NSX7kEU7On3C+Yhy4sFmsW1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC/TmHS94hGY6yvRkmpgxp0uJ5N+WxBNuZdJi8MHNaykAIgS/GUS/SAzV689JbIIUr/GBpnix6Zb08Lcq9UN3+c23U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1380739},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/957a6c776540e1fe31db1f8f839c057f/adhd-sox-store-adapter-0.10.0.tgz","_integrity":"sha512-kuIH1yJjsFBMdmF6K0sml24wopcQk+PHMWFc75XPt45TXntoGkfLVHiD0F/qYbH01EwCI/NdDfPzGGe3PaScDg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.10.0_1790391247298_0.43182814634964295","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@adhd/sox-store-adapter","version":"0.11.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.11.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"sidecars":["src/deep-verify-child.ts"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"sidecarExternals":["@tursodatabase/database","better-sqlite3","sqlite-vec"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"da9c102f0d7e5390810e8e2e0e45cb52b23fb6d8","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.11.0.tgz","fileCount":124,"integrity":"sha512-aFU5w+Q7aZuqXDEaVKX6V9Gqzn4fKVn1t/2ncJS1752QUhAJ3uontgg9tho6S403OacAwXHo2U34isFFcFI1wg==","signatures":[{"sig":"MEUCIQCIyN7f/QZDGNF23VwruCZ2QlEfHds9CaWrorh9A27BrwIgaPdM0hd0OzUnvlx+DHBauh6MwSccaERfr0Q7+W42+Eo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXvyP4prvt254WSA8sVA7opjAV7M+vuqpAhG0geNQ74AIge9W3HADZVzbYz3QnkyntI/1maSF2kJjecYlMEq41eGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1663032},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.11.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/185b9c7771d4e1e910953b22ea3b2648/adhd-sox-store-adapter-0.11.0.tgz","_integrity":"sha512-aFU5w+Q7aZuqXDEaVKX6V9Gqzn4fKVn1t/2ncJS1752QUhAJ3uontgg9tho6S403OacAwXHo2U34isFFcFI1wg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.11.0_1790650390480_0.8501570156621137","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@adhd/sox-store-adapter","version":"0.12.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.12.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"sidecars":["src/deep-verify-child.ts"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"sidecarExternals":["@tursodatabase/database","better-sqlite3","sqlite-vec"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"b35f494d5d8922b9be62d61e5b3c645ae29b9020","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.12.0.tgz","fileCount":128,"integrity":"sha512-ca67OgDPWpo3cOW4tHUL/nmKmpS8Bm8LI8iaYfwZ94yfPGSGJ365Ts86H/4tQ+k4aOM2lTgtWDeGKnokxpYyRg==","signatures":[{"sig":"MEQCIDpEUSW3Fb/bN/oW2GF2OSmzohsOnEwlwndpMFezjNXQAiBaPoz4xL+dAMAmPs5Y7ejGTkTUT2qEl9kWo/v2NYJTUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAmGVWTZReqy5sUrI4Z+6twACJxSb3hWxosSox3GpSP2AiEA0l4P53reraZ2edeVnRRpUKAAaqu3AOS1t9MkM5P3oPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1696725},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.12.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/612d29c52fb5fea25742e25d5b7222aa/adhd-sox-store-adapter-0.12.0.tgz","_integrity":"sha512-ca67OgDPWpo3cOW4tHUL/nmKmpS8Bm8LI8iaYfwZ94yfPGSGJ365Ts86H/4tQ+k4aOM2lTgtWDeGKnokxpYyRg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.12.0_1790658710218_0.8194598991426769","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@adhd/sox-store-adapter","version":"0.13.0","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.13.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"sidecars":["src/deep-verify-child.ts","src/turso-driver-worker.ts"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"sidecarExternals":["@tursodatabase/database","better-sqlite3","sqlite-vec"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"64aec64c622add6df9f3baca8fa94414b13ca7e0","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.13.0.tgz","fileCount":140,"integrity":"sha512-3EJFwwbD7Kj28BvsY6Ox9upSJhT+SPCGm0GVBB5mmJVVWotmc120VxAU15muZMlDXFq4MSlvq2y97D5JKKag/A==","signatures":[{"sig":"MEQCID0DnamcWoUXMH/8X5DPMukjv9h6EuMZN5hi0C0zaS74AiA2JVDgsQiAl52So4vuhfbJCv26drKTrEiLc/6bhnF0QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG6IUeZNhk5xnjDwjtyy+BCwFMkv6S2lb6UcK8kXZVUxAiBgJKnuWMmdy3gEytLsMCEjgMGehQ3yBcnR8GyDoHrAvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1830750},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.13.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/1c359a6f8ea4d82df076707ef6dd2315/adhd-sox-store-adapter-0.13.0.tgz","_integrity":"sha512-3EJFwwbD7Kj28BvsY6Ox9upSJhT+SPCGm0GVBB5mmJVVWotmc120VxAU15muZMlDXFq4MSlvq2y97D5JKKag/A==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.13.0_1790727390961_0.38358875618823096","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@adhd/sox-store-adapter","version":"0.13.1","keywords":["storage","adapter","sqlite","turso","database","typescript"],"license":"MIT","_id":"@adhd/sox-store-adapter@0.13.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"homepage":"https://github.com/PseudoSky/adhd","bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"sidecars":["src/deep-verify-child.ts","src/turso-driver-worker.ts"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"sidecarExternals":["@tursodatabase/database","better-sqlite3","sqlite-vec"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"8162b0d9bfec7d1b22fd256acfda07d622d0eb48","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.13.1.tgz","fileCount":140,"integrity":"sha512-OBk55SOuP+kTT0Odg4IzTymfgfZyBp3nDriPgucS9Gup3cSiAkN2kAVnr1hPwgNEplk3Q1qX/o7NZp0yQyCylA==","signatures":[{"sig":"MEYCIQDBZCEElKxiGLRpcAQz0RIQc34V8iEo6RjokE1liHeo/AIhAN0jss71G6hYm5AJVROjCZuLQxF8y8TZAapxK/ohfHf1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDmBTRFsFRzE3NHW6wLeF23XfOOoShVCRP4Evjc9mhPRgIgdHwxj8bWssi8QuEMUyj3+/7MGU6f6qs6MtsZR9n7L3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1830750},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-store-adapter-0.13.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/02e2348683142e33e8c21ea08ca5772d/adhd-sox-store-adapter-0.13.1.tgz","_integrity":"sha512-OBk55SOuP+kTT0Odg4IzTymfgfZyBp3nDriPgucS9Gup3cSiAkN2kAVnr1hPwgNEplk3Q1qX/o7NZp0yQyCylA==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.4.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-store-adapter_0.13.1_1790798669911_0.9012666453668228","host":"s3://npm-registry-packages-npm-production"}},"0.13.2":{"_id":"@adhd/sox-store-adapter@0.13.2","sox":{"area":"data","group":"store","concerns":["unified async database interface (Turso + SQLite)","capability-flagged adapter factory","transaction mode support (deferred/immediate/exclusive/concurrent)","portable error helpers (duck-typed, no instanceof driver classes)","retry utilities with exponential backoff"],"sidecars":["src/deep-verify-child.ts","src/turso-driver-worker.ts"],"invariants":["Adapter instances are NOT shared across consumers — each opens its own connection","transaction() always uses raw BEGIN/COMMIT/ROLLBACK — no db.transaction(fn) wrapper","BEGIN CONCURRENT is TursoAdapter-only — SqliteAdapter throws for mode: 'concurrent'","Errors are driver-native — consumers use portable helpers, never instanceof"],"entrypoints":["dist/index.js"],"sidecarExternals":["@tursodatabase/database","better-sqlite3","sqlite-vec"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep; also reached via @adhd/sox-graph-store","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"5b176e85f19d59501a20df15853c48a169318713","tarball":"https://registry.npmjs.org/@adhd/sox-store-adapter/-/sox-store-adapter-0.13.2.tgz","fileCount":140,"integrity":"sha512-VIfnnap6PD30Gd3wgaxJ7iybs5QigKy4PGKrjtaWuwi2u4YTLYO/PhcCQtEg9T4wee1E8J5SATTlGQDCEHwrew==","signatures":[{"sig":"MEUCIQDbamwYXNgWtCqFjdNXcL2yovaqjHL0UtTrGqCzYJbPiQIgLvuev6871iGEBGzfAXHM5JwtKqOPAJpr49YsmFu7kBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDatyLYDIfXvr0CULrL2oBBrkA3A7Q5t5Zj2FbeVO7bXQIgANhulnShZ3C4M/r+uUcdmQ8SfCIz9EjqAPstbITibJU="}],"unpackedSize":1897231},"main":"./dist/index.js","name":"@adhd/sox-store-adapter","type":"module","_from":"file:adhd-sox-store-adapter-0.13.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","private":false,"version":"0.13.2","_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"homepage":"https://github.com/PseudoSky/adhd","keywords":["storage","adapter","sqlite","turso","database","typescript"],"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/895ba5c04a001da4fa87f718019d54d8/adhd-sox-store-adapter-0.13.2.tgz","_integrity":"sha512-VIfnnap6PD30Gd3wgaxJ7iybs5QigKy4PGKrjtaWuwi2u4YTLYO/PhcCQtEg9T4wee1E8J5SATTlGQDCEHwrew==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","directories":{},"maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.4.0","@tursodatabase/database":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"better-sqlite3":"^12.10.0"},"optionalDependencies":{"better-sqlite3":"^12.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sox-store-adapter_0.13.2_1790807513301_0.6021974338093723"}}},"time":{"created":"2026-07-27T06:10:15.669Z","modified":"2026-09-30T22:31:53.592Z","0.1.0":"2026-07-27T06:10:16.054Z","0.1.1":"2026-08-05T01:19:18.906Z","0.1.2":"2026-08-05T01:31:24.278Z","0.2.0":"2026-08-05T19:22:10.144Z","0.3.0":"2026-08-07T23:18:54.974Z","0.4.0":"2026-08-09T03:51:18.051Z","0.5.0":"2026-08-10T17:36:25.882Z","0.5.1":"2026-08-10T17:38:38.180Z","0.5.2":"2026-08-12T00:36:00.849Z","0.5.3":"2026-08-12T03:55:50.067Z","0.5.4":"2026-08-12T05:48:18.800Z","0.5.5":"2026-08-12T07:43:28.250Z","0.5.6":"2026-08-12T08:04:01.294Z","0.5.7":"2026-08-12T09:11:36.766Z","0.5.8":"2026-08-12T22:56:03.705Z","0.7.0":"2026-08-19T04:17:26.047Z","0.7.1":"2026-08-20T21:00:32.011Z","0.8.0":"2026-08-28T16:18:55.352Z","0.9.0":"2026-09-05T00:01:23.657Z","0.9.1":"2026-09-06T20:51:56.723Z","0.9.2":"2026-09-14T21:46:09.820Z","0.9.3":"2026-09-25T01:07:11.324Z","0.10.0":"2026-09-26T02:54:07.400Z","0.11.0":"2026-09-29T02:53:10.571Z","0.12.0":"2026-09-29T05:11:50.335Z","0.13.0":"2026-09-30T00:16:31.081Z","0.13.1":"2026-09-30T20:04:30.052Z","0.13.2":"2026-09-30T22:31:53.422Z"},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"license":"MIT","homepage":"https://github.com/PseudoSky/adhd","keywords":["storage","adapter","sqlite","turso","database","typescript"],"repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"description":"Unified store adapter — Turso Database (primary) and SQLite (backward-compat) behind a single async interface","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"readme":"# @adhd/sox-store-adapter\n\nUnified async database adapter — Turso Database (primary) and SQLite (backward-compatible) behind a single `StoreAdapter` interface.\n\n```bash\npnpm add @adhd/sox-store-adapter\n```\n\n## Quick start\n\n```typescript\nimport { createStoreAdapter } from '@adhd/sox-store-adapter';\n\n// Auto-detect from env (STORE_ADAPTER=turso|sqlite, default: turso)\n// TursoAdapter enables multiprocess_wal by default for concurrent readers/writers\nconst adapter = await createStoreAdapter({ dbPath: 'app.db' });\n\nawait adapter.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');\nawait adapter.executeRun('INSERT INTO users (id, name) VALUES (?, ?)', [1, 'Alice']);\n\nconst user = await adapter.executeGet<{ name: string }>(\n  'SELECT name FROM users WHERE id = ?',\n  [1],\n);\nconsole.log(user.name); // \"Alice\"\n\nawait adapter.close();\n```\n\n### Explicit adapter selection\n\n```typescript\nimport { createSqliteAdapter, createTursoAdapter } from '@adhd/sox-store-adapter';\n\n// SQLite (backward-compatible fallback, synchronous I/O, single-writer)\nconst sqlite = createSqliteAdapter({ dbPath: ':memory:' });\n\n// Turso (default — async I/O, native vectors, multi-process writers via multiprocess_wal)\nconst turso = await createTursoAdapter({\n  url: 'libsql://my-db.turso.io',\n  authToken: process.env.TURSO_AUTH_TOKEN,\n});\n```\n\n## Execution model\n\nThe Turso backend runs its native driver (`@tursodatabase/database`) on a **process-wide off-thread\ndriver worker** — the sidecar `turso-driver-worker.js` — never on the main thread. `TursoAdapter`\nreaches it through a connection-shaped async RPC, so every `executeGet` / `executeRun` / `exec` /\n`pragma*` call site is unchanged.\n\n**Worker topology.** One `worker_threads.Worker` per process (per JS realm). The host holds it in a\n`globalThis` slot keyed on `Symbol.for('@adhd/sox-store-adapter/turso-driver-host')`, so N copies of\nthis package in one process resolve to **one** worker — two worker threads driving one store is the\nexact multi-open hazard this design removes. A separate realm (a forked child process, or a worker\nthread) has its own `globalThis` and therefore its own host — correct, because it is a genuinely\nseparate isolate. The worker is spawned lazily on the first connection open and torn down when the\nlast connection closes. Requests cross a **versioned** protocol: a copy of this package speaking a\ndifferent protocol throws `E_TURSO_DRIVER_PROTOCOL_MISMATCH` rather than spawning a competing worker.\n\n### What this does — and does not — fix\n\n- **It bounds main-thread blocking, NOT operation latency.** A slow native step no longer freezes the\n  whole process (an MCP server stays responsive to other work), but the operation itself still takes\n  exactly as long. Moving work off the main thread does not make it faster.\n- **One driver thread per process serializes all ops on that store.** Every request from every\n  connection in the process is served FIFO from one port. A slow op delays the ops queued behind it;\n  it does not run concurrently with them. (The worker dispatches requests fire-and-forget, so a slow\n  call does not block *dequeuing* the next message — it blocks that next call's *native execution*.)\n- **Same-process writers still pay the 5s busy timeout.** On the pinned `@tursodatabase/database`\n  0.7.x the step loop never yields, so a writer's busy-wait runs synchronously inside one native step\n  on the driver thread. When the lock holder is in the same process, the holder's own queued `COMMIT`\n  waits out the full `DEFAULT_BUSY_TIMEOUT_MS` (5s). Moving the wait off the main thread removes it\n  from the main thread but does not shorten it. Tracked as BL `809153d1`; upstream 0.8's `STEP_SLEEP`\n  is the fix.\n- **Reads queue behind a store's writes.** One connection per store serves both reads and writes, so a\n  recall read queued behind a write's busy-wait waits too — even though WAL snapshot reads do not need\n  the writer slot. A dedicated read connection per store is a separate, deferred connection-topology\n  change (BL `56c72ccb`).\n\n### `unwrap()` returns an async connection handle\n\nOn the Turso adapter `unwrap()` now returns a **`TursoDriverConnection`** — the off-thread proxy —\n**not** the native `Database`. Its methods (`run` / `get` / `all` / `exec` / `pragma` / `close`) are\n**async**; callers must `await` them. Handing it to a library that expects the synchronous native\n`Database` will not work. `unwrap()` is itself still synchronous and still throws `[DEBT-003]` if\ncalled before the first real operation has opened the connection — await a cheap op\n(`executeGet('SELECT 1')`) first.\n\n### Observing a stalled driver\n\n`driverStatus` is a synchronous, worker-touching-free snapshot of the driver host: lifecycle state\n(`not-started` / `idle` / `busy` / `stalled` / `exited`), in-flight count, the oldest pending op's\nlabel and age, open connections, and the worker thread id. `'stalled'` is a **deadline verdict**\nderived from the oldest op's age versus `driverStallAfterMs` (default\n`DEFAULT_DRIVER_STALL_AFTER_MS`, 5s). Reading it never spawns or contacts the worker, so it is safe\nfrom a watchdog or health probe. It **reports** a stalled driver; it does not cancel it — a native\ncall cannot be aborted, so cancellation is the consumer's policy (in `memory-server`, the\ndriver-stall watchdog's hard `forceExit`). `connectionHealth` is deliberately unchanged: that reports\nthis adapter's own connection lifecycle, not the process driver thread.\n\n## API reference\n\n### `StoreAdapter` interface\n\n```typescript\ninterface StoreAdapter {\n  // Query methods\n  executeGet<T>(sql: string, args?: unknown[]): Promise<T | null>;\n  executeAll<T>(sql: string, args?: unknown[]): Promise<AllResult<T>>;\n  executeRun(sql: string, args?: unknown[]): Promise<RunResult>;\n\n  // DDL / multi-statement\n  exec(sql: string): Promise<void>;\n\n  // PRAGMA shortcuts\n  pragmaSet(key: string, value: string | number | boolean): Promise<void>;\n  pragmaGet<T>(key: string): Promise<T>;\n\n  // Transaction with mode support\n  transaction<T>(fn: (tx: AdapterTransaction) => T | Promise<T>, opts?: TransactionOptions): Promise<T>;\n\n  // Batch convenience (NON-ATOMIC)\n  executeMany(stmts: { sql: string; args?: unknown[] }[]): Promise<RunResult[]>;\n\n  // Lifecycle\n  close(): Promise<void>;\n\n  // Introspection\n  readonly config: Readonly<AdapterConfig>;\n  readonly capabilities: Readonly<AdapterCapabilities>;\n\n  // Escape hatch\n  unwrap(): unknown;\n}\n```\n\n### Result types\n\n```typescript\ninterface RunResult {\n  rowsAffected: number;\n  lastInsertRowid: number | bigint;\n}\n\ninterface AllResult<T = Record<string, unknown>> {\n  columns: string[];\n  rows: T[];\n}\n```\n\n### Transaction modes\n\n| Mode | SQL | Lock acquired | SqliteAdapter | TursoAdapter |\n|------|-----|--------------|---------------|-------------|\n| `'deferred'` | `BEGIN DEFERRED` | On first write | ✓ (default) | ✓ (default) |\n| `'immediate'` | `BEGIN IMMEDIATE` | RESERVED at start | ✓ | ✓ |\n| `'exclusive'` | `BEGIN EXCLUSIVE` | EXCLUSIVE at start | ✓ | ✓ |\n| `'concurrent'` | `BEGIN CONCURRENT` | Optimistic (commit-time) | **throws** | ✓ |\n\n```typescript\nawait adapter.transaction(async (tx) => {\n  const current = await tx.executeGet<{ status: string }>(\n    'SELECT status FROM items WHERE id = ?', [id]\n  );\n  if (current.status !== 'pending') return;\n  await tx.executeRun(\"UPDATE items SET status = 'claimed' WHERE id = ?\", [id]);\n}, { mode: 'immediate' }); // BEGIN IMMEDIATE — compare-and-swap primitive\n```\n\n### `AdapterTransaction` interface\n\nInside a transaction callback, the `tx` object provides the same query methods as the adapter — all returning Promises:\n\n```typescript\ninterface AdapterTransaction {\n  executeGet<T>(sql: string, args?: unknown[]): Promise<T | null>;\n  executeAll<T>(sql: string, args?: unknown[]): Promise<AllResult<T>>;\n  executeRun(sql: string, args?: unknown[]): Promise<RunResult>;\n  exec(sql: string): Promise<void>;\n}\n```\n\n### `executeMany` (non-atomic batch)\n\nRuns statements sequentially. First failure does **not** roll back prior statements. For atomicity, use `transaction()`.\n\n```typescript\nconst results = await adapter.executeMany([\n  { sql: \"INSERT INTO users (id, name) VALUES (1, 'Alice')\" },\n  { sql: \"INSERT INTO users (id, name) VALUES (2, 'Bob')\" },\n]);\n```\n\n### Error helpers\n\nAll adapter methods throw driver-native errors (never a wrapper class). Use the portable helpers for duck-type checks:\n\n```typescript\nimport { isUniqueConstraintError, isForeignKeyError, isBusyError, isDatabaseError } from '@adhd/sox-store-adapter';\n\ntry {\n  await adapter.executeRun(\"INSERT INTO users (email) VALUES ('duplicate@test.com')\");\n} catch (err) {\n  if (isUniqueConstraintError(err)) {\n    // SQLITE_CONSTRAINT_UNIQUE\n  }\n  if (isDatabaseError(err)) {\n    // Any recognized SQLITE_* error\n  }\n}\n```\n\n```typescript\nfunction isUniqueConstraintError(err: unknown): boolean;\nfunction isForeignKeyError(err: unknown): boolean;\nfunction isBusyError(err: unknown): boolean;\nfunction isConcurrentConflict(err: unknown): boolean;\nfunction isDatabaseError(err: unknown): boolean;\nfunction dbErrorCode(err: unknown): string | undefined;\n```\n\n### Retry utilities\n\n```typescript\nimport { withRetry } from '@adhd/sox-store-adapter';\n\n// Retry a busy operation up to 3 times with exponential backoff\nconst result = await withRetry(\n  async () => adapter.executeRun(\"INSERT INTO tasks (status) VALUES ('pending')\"),\n  { maxRetries: 5, baseDelayMs: 10 },\n);\n```\n\n### Capability flags\n\n```typescript\ninterface AdapterCapabilities {\n  multiprocessWrite: boolean;      // Multi-process writer support (Turso multiprocess_wal)\n  nativeVectors: boolean;          // Built-in vector SQL functions\n  concurrentTransactions: boolean; // BEGIN CONCURRENT (MVCC)\n  /** @deprecated Use `fts` instead. */\n  fts5: boolean;\n  fts: boolean;                    // True when the adapter supports full-text search\n  needsWriteSerialization: boolean; // True for single-sync-connection adapters that require\n                                     // in-app write serialization (better-sqlite3). False for\n                                     // async adapters with native concurrent I/O (Turso).\n}\n```\n\n| Flag | SqliteAdapter | TursoAdapter |\n|---|---|---|\n| `multiprocessWrite` | `false` (inherent SQLite single-writer limitation) | `true` by default |\n| `nativeVectors` | `false` | `true` |\n| `concurrentTransactions` | `false` | `true` |\n| `fts` | `true` (fts5 virtual table) | `true` (native Tantivy index) |\n| `needsWriteSerialization` | `true` | `false` |\n\n> **`multiprocessWrite` is `true` by default** on TursoAdapter — `multiprocess_wal` is enabled\n> at connect time via the `.tshm` shared memory coordination layer, allowing concurrent readers\n> and writers across multiple OS processes. Setting `experimental: { multiprocessWal: false }`\n> opts out, reverting to Turso's default EXCLUSIVE file locking (single-writer).\n>\n> SqliteAdapter always reports `multiprocessWrite: false` (inherent SQLite single-writer limitation).\n>\n> **`concurrentTransactions: true` / `needsWriteSerialization: false` on TursoAdapter are the\n> correct, measured defaults — not bugs and not something to \"fix\" by serializing writes.**\n> Turso's shared connection handle has been load-tested at 50 concurrent transactions (both\n> `deferred` and `immediate` modes) with zero lost writes, zero rejected commits, and isolation\n> holding throughout. The only real failure mode is a loud thrown `Transaction error: cannot\n> start a transaction within a transaction` when a transaction outlives the ~70ms retry budget\n> (`maxRetries` × `baseDelayMs`) — fixed in-adapter via `_txMutexChain` (a promise-chain mutex\n> serializing the retry-loop critical section per adapter instance), never by flipping\n> `needsWriteSerialization` to `true` or disabling `concurrentTransactions`. See the doc comment\n> on `TursoAdapterImpl` in `turso-adapter.ts` (BL-321).\n\n### Full-text search per adapter\n\nFTS implementation is adapter-specific and the two are **not** structurally alike:\n\n- **SqliteAdapter** — classic `fts5` virtual table (`fts_node`) kept in sync with the base table\n  via triggers.\n- **TursoAdapter** — no `fts_node` shadow table and no sync triggers. FTS is a native Tantivy\n  index, `CREATE INDEX idx_fts_node ON \"node\" USING fts (...)`, queried via `fts_match()` /\n  `fts_score()`. This requires the `index_method` experimental flag on every connection that\n  creates *or* queries the index (unconditionally enabled by this adapter — see `turso-adapter.ts`);\n  without it, index creation throws a parse error that must not be silently swallowed.\n\n### Configuration\n\n```typescript\ninterface AdapterConfig {\n  type: 'sqlite' | 'turso';\n  dbPath?: string;\n  url?: string;           // Turso remote URL\n  authToken?: string;\n  readonly?: boolean;\n  encryption?: {\n    cipher: 'aegis256' | 'aes256gcm';\n    hexkey: string;\n  };\n  experimental?: {\n    multiprocessWal?: boolean; // Default: true — set false to opt out of multiprocess_wal\n  };\n  defaultQueryTimeout?: number;\n}\n```\n\n## Factory functions\n\n### `createStoreAdapter(config?)`\n\nEnv-driven auto-detect. Reads `STORE_ADAPTER` env var (default: `'turso'`).\n\n```typescript\nimport { createStoreAdapter } from '@adhd/sox-store-adapter';\n\nconst adapter = await createStoreAdapter({ dbPath: 'app.db' });\n// returns StoreAdapter (base type — no unwrap() type narrowing)\n```\n\n### `createSqliteAdapter(opts)`\n\nExplicit SqliteAdapter. Returns narrowed `SqliteAdapter` type with `unwrap()` returning `better-sqlite3.Database`.\n\n```typescript\nimport { createSqliteAdapter } from '@adhd/sox-store-adapter';\n\n// Option A: path config\nconst adapter = createSqliteAdapter({ dbPath: ':memory:' });\nconst db = adapter.unwrap(); // better-sqlite3.Database\n\n// Option B: wrap an existing better-sqlite3 handle\nimport Database from 'better-sqlite3';\nconst db = new Database('app.db');\nconst adapter = createSqliteAdapter(db);\n```\n\n### `createTursoAdapter(opts)`\n\nExplicit TursoAdapter. Returns narrowed `TursoAdapter` type.\n\n```typescript\nimport { createTursoAdapter } from '@adhd/sox-store-adapter';\n\n// Local file (multiprocess_wal enabled by default for concurrent readers/writers)\nconst local = await createTursoAdapter({ dbPath: 'app.db' });\n\n// Remote Turso\nconst remote = await createTursoAdapter({\n  url: 'libsql://my-db.turso.io',\n  authToken: process.env.TURSO_AUTH_TOKEN,\n});\n\n// Opt out of multiprocess_wal (single-writer fallback)\nconst single = await createTursoAdapter({\n  dbPath: 'shared.db',\n  experimental: { multiprocessWal: false },\n});\n```\n\n### When to use which factory\n\n| Scenario | Factory | Why |\n|----------|---------|-----|\n| Library code that needs to be adapter-agnostic | `createStoreAdapter()` | Env-driven selection |\n| Code that hardcodes SQLite | `createSqliteAdapter()` | Narrowed type, `unwrap()` available |\n| Code that hardcodes Turso | `createTursoAdapter()` | Narrowed type, `unwrap()` available |\n| Wrapping an existing `better-sqlite3` handle | `createSqliteAdapter(db)` | Wrap external connection |\n| Testing with MockAdapter | `new MockAdapter()` | In-memory test double |\n\n## Consumer migration guide (better-sqlite3 → StoreAdapter)\n\n### Mechanical 1:1 mapping\n\n| `better-sqlite3` | `StoreAdapter` |\n|---|---|\n| `db.prepare(sql).get(args)` | `await adapter.executeGet<T>(sql, args)` |\n| `db.prepare(sql).all(args)` | `await adapter.executeAll<T>(sql, args)` |\n| `db.prepare(sql).run(args)` | `await adapter.executeRun(sql, args)` |\n| `db.exec(sql)` | `await adapter.exec(sql)` |\n| `db.pragma('key = value')` | `await adapter.pragmaSet('key', 'value')` |\n| `db.pragma('key', { simple: true })` | `await adapter.pragmaGet<T>('key')` |\n| `db.transaction(fn)()` | `await adapter.transaction(fn)` |\n| `db.transaction(fn).immediate()()` | `await adapter.transaction(fn, { mode: 'immediate' })` |\n| `db.close()` | `await adapter.close()` |\n| `new Database(path)` | `createSqliteAdapter({ dbPath: path })` |\n| `new Database(path, { readonly: true })` | `createSqliteAdapter({ dbPath: path, readonly: true })` |\n\n### Transaction migration\n\n```typescript\n// BEFORE (better-sqlite3 — sync, immediate mode)\nconst result = db.transaction(() => {\n  const current = db.prepare('SELECT status FROM items WHERE id = ?').get(id);\n  if (current.status !== 'pending') return;\n  db.prepare('UPDATE items SET status = ? WHERE id = ?').run('claimed', id);\n}).immediate()();\n\n// AFTER (StoreAdapter — async, explicit mode)\nconst result = await adapter.transaction(async (tx) => {\n  const current = await tx.executeGet<{ status: string }>(\n    'SELECT status FROM items WHERE id = ?', [id],\n  );\n  if (current?.status !== 'pending') return;\n  await tx.executeRun(\"UPDATE items SET status = 'claimed' WHERE id = ?\", ['claimed', id]);\n}, { mode: 'immediate' });\n```\n\n### Drizzle migration\n\n**Phase 1 — unwrap bridge (keep drizzle-orm/better-sqlite3):**\n\n```typescript\nimport { drizzle } from 'drizzle-orm/better-sqlite3';\nimport { createSqliteAdapter } from '@adhd/sox-store-adapter';\nimport type { SqliteAdapter } from '@adhd/sox-store-adapter';\n\nconst adapter = createSqliteAdapter({ dbPath: 'app.db' });\nconst sqlite = (adapter as SqliteAdapter).unwrap();\nconst db = drizzle(sqlite, { schema });\n```\n\n**Phase 2 — drizzle-orm/tursodatabase/database (beta):**\n\n```typescript\nimport { drizzle } from 'drizzle-orm/tursodatabase/database';\nimport { createTursoAdapter } from '@adhd/sox-store-adapter';\nimport type { TursoAdapter } from '@adhd/sox-store-adapter';\n\nconst adapter = await createTursoAdapter({ dbPath: 'app.db' });\nconst client = (adapter as TursoAdapter).unwrap();\nconst db = drizzle({ client });\n```\n\n> **Note (off-thread driver, 862129b5):** `unwrap()` now yields a `TursoDriverConnection` — an\n> async proxy — not the native `Database`. This bridge only works if the ORM accepts an\n> async, connection-shaped client; otherwise use the adapter's own query methods (see the\n> [Execution model](#execution-model) section).\n\n## Testing guide\n\nUse `MockAdapter` for unit tests — it's an in-memory `Map`-backed `StoreAdapter` implementation:\n\n```typescript\nimport { MockAdapter } from '@adhd/sox-store-adapter';\nimport { describe, it, expect } from 'vitest';\n\nit('my function uses the adapter', async () => {\n  const adapter = new MockAdapter();\n  await adapter.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');\n  await adapter.executeRun(\"INSERT INTO users (id, name) VALUES (1, 'Alice')\");\n\n  const result = await myFunction(adapter);\n  expect(result).toBe('Alice');\n});\n```\n\n### Contract tests\n\nThe package exports a reusable contract test suite. Import `runContractTests` to verify any `StoreAdapter` implementation:\n\n```typescript\nimport { runContractTests } from '@adhd/sox-store-adapter/test/contract.test';\n\ndescribe('my adapter', () => {\n  runContractTests('MyAdapter', () => new MyAdapter());\n});\n```\n\n## Configuration reference\n\n| Env variable | Purpose | Default |\n|---|---|---|\n| `STORE_ADAPTER` | Adapter type: `'sqlite'` or `'turso'` | `'turso'` |\n| `TURSO_DB_URL` | Turso remote URL (`libsql://...`) | — |\n| `TURSO_AUTH_TOKEN` | Turso auth token | — |\n| `SOX_CONFIG_DB_PATH` | Default dbPath fallback | — |\n\n## Examples\n\n### Typed queries\n\n```typescript\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\n// Single row — null safe\nconst user = await adapter.executeGet<User>(\n  'SELECT id, name, email FROM users WHERE id = ?',\n  [1],\n);\nif (user) {\n  console.log(user.name); // typed as string\n}\n\n// Multiple rows\nconst users = await adapter.executeAll<User>('SELECT id, name, email FROM users');\nfor (const u of users.rows) {\n  console.log(u.name);\n}\n\n// Run with result\nconst result = await adapter.executeRun(\n  'UPDATE users SET name = ? WHERE id = ?',\n  ['Bob', 1],\n);\nconsole.log(`Updated ${result.rowsAffected} row(s)`);\n```\n\n### CAS with BEGIN IMMEDIATE\n\n```typescript\nasync function claimTask(adapter: StoreAdapter, taskId: number): Promise<boolean> {\n  return adapter.transaction(async (tx) => {\n    const task = await tx.executeGet<{ status: string }>(\n      'SELECT status FROM tasks WHERE id = ?',\n      [taskId],\n    );\n    if (!task || task.status !== 'pending') return false;\n\n    await tx.executeRun(\n      \"UPDATE tasks SET status = 'claimed', claimed_at = datetime('now') WHERE id = ?\",\n      [taskId],\n    );\n    return true;\n  }, { mode: 'immediate' });\n}\n```\n\n### Schema migration\n\n```typescript\nasync function migrateV1(adapter: StoreAdapter): Promise<void> {\n  return adapter.transaction(async (tx) => {\n    await tx.exec(`\n      CREATE TABLE IF NOT EXISTS migrations (version INTEGER PRIMARY KEY, applied_at TEXT);\n      CREATE TABLE IF NOT EXISTS items (\n        id INTEGER PRIMARY KEY,\n        name TEXT NOT NULL,\n        created_at TEXT DEFAULT (datetime('now'))\n      );\n    `);\n    await tx.executeRun(\"INSERT OR REPLACE INTO migrations (version, applied_at) VALUES (1, datetime('now'))\");\n  }, { mode: 'exclusive' });\n}\n```\n","readmeFilename":"README.md"}