{"_id":"@adhd/sox-graph-store","_rev":"24-d3f4dd5f1c427e59acbb2f1d4ff9cda2","name":"@adhd/sox-graph-store","dist-tags":{"latest":"0.12.2"},"versions":{"0.3.0":{"name":"@adhd/sox-graph-store","version":"0.3.0","license":"MIT","_id":"@adhd/sox-graph-store@0.3.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"c576a84d0ed9b5c5935cbdcfd749d0e4b181915e","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.3.0.tgz","fileCount":14,"integrity":"sha512-bPVwrVoUW+dMTNpMChvTGHQeMiLdOv3Bg6Baqp5SEK/SWSj1W7Nrjdy0VEjvOVw9yNr/Wl9L6RC8GWMqbbXCIA==","signatures":[{"sig":"MEUCIQDOZhb6JrXa6ixSnU7A4FKRE5sUM2kNGRoSWNJHMkyFjgIgC5QMUVgCLw1712Sh5MK30UN+dkRkL/fJ0L1WOOl8MfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128777},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/fd9ca4a10a7d9cee1bafc960168c2459/adhd-sox-graph-store-0.3.0.tgz","_integrity":"sha512-bPVwrVoUW+dMTNpMChvTGHQeMiLdOv3Bg6Baqp5SEK/SWSj1W7Nrjdy0VEjvOVw9yNr/Wl9L6RC8GWMqbbXCIA==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"drizzle-orm":"^0.45.2","better-sqlite3":"^12.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.3.0_1784239337443_0.16634363614021974","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adhd/sox-graph-store","version":"0.4.0","license":"MIT","_id":"@adhd/sox-graph-store@0.4.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"74df542e0eb9e5eec19b7839343457f9c9a455f4","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.4.0.tgz","fileCount":14,"integrity":"sha512-Rh2K8gaWFRQALfsylM08czf2S4jwaW6vT+Dhp3EJ2tI6SNEXPwjQx3lsLpb7NlBVUZ0B0vFQIHCZo1toUrOw2g==","signatures":[{"sig":"MEUCIQCrEgas7/C0XOhr1DVJB8I7KPC9euy/2//dyWBpd4AeHAIgMP6ClaCgHX556RxOd/44fanFaQWFhykHZhvayNGqq84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137557},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/84a6e93d81a13e633140b53b7672fc9c/adhd-sox-graph-store-0.4.0.tgz","_integrity":"sha512-Rh2K8gaWFRQALfsylM08czf2S4jwaW6vT+Dhp3EJ2tI6SNEXPwjQx3lsLpb7NlBVUZ0B0vFQIHCZo1toUrOw2g==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"drizzle-orm":"^0.45.2","better-sqlite3":"^12.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.4.0_1784829261839_0.2119491182179596","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adhd/sox-graph-store","version":"0.5.0","license":"MIT","_id":"@adhd/sox-graph-store@0.5.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"cd122b74c2ddbbf86246097021398afd1f15292d","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.5.0.tgz","fileCount":14,"integrity":"sha512-T+SCZ1c9ny4E5qEz5m9yNaYf72Cl9oHhFezSRav4ehDZ9mTNDrCi9S09He4E02HUP14cyn3FOWIe7J+6tlqRNw==","signatures":[{"sig":"MEUCIQCobJ5oOWaricHkml93AFP+5gArEzOSx4BScU5cQubXDwIgdILkE3WmKx0pQM7koNpJ2lIznFQANZ4dFxLbgzVOXTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126416},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/d20e5614f8fbb1469beb1f6026cc0b81/adhd-sox-graph-store-0.5.0.tgz","_integrity":"sha512-T+SCZ1c9ny4E5qEz5m9yNaYf72Cl9oHhFezSRav4ehDZ9mTNDrCi9S09He4E02HUP14cyn3FOWIe7J+6tlqRNw==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.5.0_1785132652218_0.9196968428955161","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@adhd/sox-graph-store","version":"0.5.1","license":"MIT","_id":"@adhd/sox-graph-store@0.5.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"5c13d9b59398eb3d9d17b22de7240d420c7f78c2","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.5.1.tgz","fileCount":14,"integrity":"sha512-A7+Wgqtb2inlxB/3NFSDFxpuJ8jQrYSRoag2edQodbv9+H3T0ob7G7aKtXy+MTYhm9hyKqZISUxZa3Xv4KC4YA==","signatures":[{"sig":"MEYCIQDYaiftgj0Fa/l/yWDtSl0lftYvb5wSUjyvVt9o6xGO0QIhAPXlNz/3TXLfVXtv1dqFFwqLmccKmIUK+cYYRJEgkSl+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130444},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.5.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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-graph-store-0.5.1.tgz","_integrity":"sha512-A7+Wgqtb2inlxB/3NFSDFxpuJ8jQrYSRoag2edQodbv9+H3T0ob7G7aKtXy+MTYhm9hyKqZISUxZa3Xv4KC4YA==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.5.1_1785892761417_0.7842807494892166","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@adhd/sox-graph-store","version":"0.5.2","license":"MIT","_id":"@adhd/sox-graph-store@0.5.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"afeb01c99a18de9993d512a7375d0b679cfaa90e","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.5.2.tgz","fileCount":14,"integrity":"sha512-6z4jn+xuD7tqv8akUVKLDaPni9kS2EnZDgrNeZBIzAm2z/CdO4QiQb1jBFNn6+orRqZ6gErW17zZ9GrnhUVDsQ==","signatures":[{"sig":"MEYCIQDgEqMhQLi5nolIUHtdNA7z/BUa4Wk3mQficSq3yJFqnwIhANpJfl4OBgvRLCUQFOGk9FSc/2NCXQdL6pzRh93f7f4r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130444},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.5.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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-graph-store-0.5.2.tgz","_integrity":"sha512-6z4jn+xuD7tqv8akUVKLDaPni9kS2EnZDgrNeZBIzAm2z/CdO4QiQb1jBFNn6+orRqZ6gErW17zZ9GrnhUVDsQ==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.5.2_1785893486205_0.975289737834891","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@adhd/sox-graph-store","version":"0.5.3","license":"MIT","_id":"@adhd/sox-graph-store@0.5.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"8eeb3bbdf508c5743276629abdc1306d300375d4","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.5.3.tgz","fileCount":14,"integrity":"sha512-JA8zF9m+8Zooot4N/OUG6WS+cI8CPYG4GqiLIJY3FcK06khqX5E5bXRXi8Xo2kCV6HfFBWB6gprl4KFe8wG55g==","signatures":[{"sig":"MEQCIGk93uPi3BR0ZroFCmMHmbzhvPX8I66iehBgu8EIDwKZAiBkuXPtgSFf9o5/A1PpiMLc3+L5QRPTvDh26I8yTTDdNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130444},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.5.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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-graph-store-0.5.3.tgz","_integrity":"sha512-JA8zF9m+8Zooot4N/OUG6WS+cI8CPYG4GqiLIJY3FcK06khqX5E5bXRXi8Xo2kCV6HfFBWB6gprl4KFe8wG55g==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.5.3_1785957733652_0.3743235167017196","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@adhd/sox-graph-store","version":"0.6.0","license":"MIT","_id":"@adhd/sox-graph-store@0.6.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"8b33f634719103222940a020260d263a4ec5a4f9","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.6.0.tgz","fileCount":18,"integrity":"sha512-aE9LiuJFDw5IVB3FROqorg/VmVg/Eywd6H4LjuTYtOTnGvEaBj0XtTch4u+7u/P5ypHfnyo6P+Q4xMNY+WNqjw==","signatures":[{"sig":"MEQCIBDOFYDU7lADX/nr/dV5oxhwT4RGwLbwMQ3GaMOV9lbbAiBuOAEB+Bp8FQ0+s1aKqXYwz4aeCwl3r7a5OAYtj+DgRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172360},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/791149133afb77bb319334c5f5857b34/adhd-sox-graph-store-0.6.0.tgz","_integrity":"sha512-aE9LiuJFDw5IVB3FROqorg/VmVg/Eywd6H4LjuTYtOTnGvEaBj0XtTch4u+7u/P5ypHfnyo6P+Q4xMNY+WNqjw==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.6.0_1786144734088_0.45420585505291133","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adhd/sox-graph-store","version":"0.7.0","license":"MIT","_id":"@adhd/sox-graph-store@0.7.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"483b22350434a99602089be8fd45c8f637b3996d","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.7.0.tgz","fileCount":18,"integrity":"sha512-rTUGmFfP4QmXM4Jae86NNEpaNBxD120x98bZ8TWn5Y1a6VQqqh5XaBtlyw61/zajw+kcTNJGHC7atV/G2xoqaw==","signatures":[{"sig":"MEUCIADfptJDjD8BXUd0s8puFmeQztdss+8TOgkhVMu9gZ1NAiEAxUbuXhldTZy/eak37TlKctxQ1tfpY4eaysnjm9dkRrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175238},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/dbd072f8b439d5ef18a15a73ae19d102/adhd-sox-graph-store-0.7.0.tgz","_integrity":"sha512-rTUGmFfP4QmXM4Jae86NNEpaNBxD120x98bZ8TWn5Y1a6VQqqh5XaBtlyw61/zajw+kcTNJGHC7atV/G2xoqaw==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.7.0_1786233866740_0.4604604489386168","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@adhd/sox-graph-store","version":"0.8.0","license":"MIT","_id":"@adhd/sox-graph-store@0.8.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"c721473fc35028233794155571941f5da5a387ac","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.0.tgz","fileCount":18,"integrity":"sha512-Cg6v23AX1Ai1zn549t0Ox3c4YMhbRbIcg13HSPTUHXF+emHv+Vx3T0RPYST3jNFemcqp9fidFz2FqLsrqhDrUg==","signatures":[{"sig":"MEUCIQD/nJoco/fzxlNfYWvgbVSa7CwGcWVEFqUxH6dvbB4+0gIgclHKyPQwtPjGi+PDZ13MnG2NuOs08pykKfPfQOsSPqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209685},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.0_1786383432403_0.674155856363509","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@adhd/sox-graph-store","version":"0.8.1","license":"MIT","_id":"@adhd/sox-graph-store@0.8.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"6824f910e2040db60859d91ac58f63a92862c4db","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.1.tgz","fileCount":18,"integrity":"sha512-eFEzLRC8gN+KQELDechiCGuL2M53g/6TO2vYsewp2nF4pUsJvPayjgyFTqLt4OQJR+wQixjGprevV+SnmxPAiQ==","signatures":[{"sig":"MEUCIE17u2RsCreYUIowOwROc2VFxJNdMTgBVOENcxLJz13+AiEAh4hjBcOmUb0ThOREtvLfEQ+92+AHteWAFIPNC4Deits=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211456},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.8.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/42d64f2c5c9b320c01da4aa82a92edea/adhd-sox-graph-store-0.8.1.tgz","_integrity":"sha512-eFEzLRC8gN+KQELDechiCGuL2M53g/6TO2vYsewp2nF4pUsJvPayjgyFTqLt4OQJR+wQixjGprevV+SnmxPAiQ==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-store-adapter":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.1_1786384995110_0.8590912093085306","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@adhd/sox-graph-store","version":"0.8.2","license":"MIT","_id":"@adhd/sox-graph-store@0.8.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"a6a8892ff348f192355fa8adff50098684607727","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.2.tgz","fileCount":18,"integrity":"sha512-ZSQq9kbhkFac7xfbTcGzckDx4JYo2cqK6qWDpVmF8Z+P3sERIfO5qKzxWLHh3SbhgLi/GqrczMOBZQjuL4sMvw==","signatures":[{"sig":"MEQCID0uZp/7VpolWwlFDNzW4H11km/FFHxjqgY3eVlqw+04AiAZ/8vUoX6xbfT8Cn2vnPcftp+1EqNW1mDpUhcUmZ5P7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219371},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.8.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/e4b3a0e97482422fef4bdd05ddfd52f3/adhd-sox-graph-store-0.8.2.tgz","_integrity":"sha512-ZSQq9kbhkFac7xfbTcGzckDx4JYo2cqK6qWDpVmF8Z+P3sERIfO5qKzxWLHh3SbhgLi/GqrczMOBZQjuL4sMvw==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@adhd/sox-store-adapter":"0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.2_1786494959559_0.39969073308447967","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@adhd/sox-graph-store","version":"0.8.3","license":"MIT","_id":"@adhd/sox-graph-store@0.8.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"4dd4a4fdd8dedac53a0f37f275cb9aa10742b119","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.3.tgz","fileCount":18,"integrity":"sha512-2eCykmu/FfwyHHVavHYP33FH2a9SaTXbVeRFbP/MGZY3mGwwgbq7awk3Z07ow70kkNxzlieI4dfSIr1dE8o/1Q==","signatures":[{"sig":"MEUCIAw7mLPYI5RW30WQfh3s2h4AvurzoJMh5ovJ+MSYDLQzAiEApr1rHmrYSaExCv/KMnTUeNWf4sOjtkPSNZKKn1cR/io=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231277},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.8.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/686daaddd90452502964c50d40ecfcb9/adhd-sox-graph-store-0.8.3.tgz","_integrity":"sha512-2eCykmu/FfwyHHVavHYP33FH2a9SaTXbVeRFbP/MGZY3mGwwgbq7awk3Z07ow70kkNxzlieI4dfSIr1dE8o/1Q==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@adhd/sox-store-adapter":"0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.3_1786506949207_0.9965785932700333","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@adhd/sox-graph-store","version":"0.8.4","license":"MIT","_id":"@adhd/sox-graph-store@0.8.4","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"672b5b4ba6ea3746966f758753b5ed90112a4440","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.4.tgz","fileCount":18,"integrity":"sha512-SrjNScUnBGY31iz+OYbOJK7RzS3ocgXtNC2Bg85HeXfTkvXXiCIH/lM5rW8+vENFxo7I+4TioK1qAR3RivQJkA==","signatures":[{"sig":"MEUCIQDCGl8/3Hn9ICoNDJlWl57yHgTkamSDPUHFgWwfr+J8LQIgPJvYsKYYKKFPW/ZE6e8+HdWitKeI1VSyAgp0CP5yU3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234567},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.8.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/2cf493ce1b90585037a678efcf4d6557/adhd-sox-graph-store-0.8.4.tgz","_integrity":"sha512-SrjNScUnBGY31iz+OYbOJK7RzS3ocgXtNC2Bg85HeXfTkvXXiCIH/lM5rW8+vENFxo7I+4TioK1qAR3RivQJkA==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"0.2.0","@adhd/sox-store-adapter":"0.5.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.4_1786575371458_0.897114495023905","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@adhd/sox-graph-store","version":"0.8.6","license":"MIT","_id":"@adhd/sox-graph-store@0.8.6","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"0466cae5303b889ce1464bffe7b8144f7dfc0142","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.8.6.tgz","fileCount":18,"integrity":"sha512-ag+k/NYBGkcY5S/Tb2yoaXu9KP5XNGIdHCSwayAJX5YbfJPDZONIFNW3FmZ+t4S1trDH0PORtDJsvrBpywlc8A==","signatures":[{"sig":"MEYCIQD0N8Z0wCwQcTWAMLZqK9t26rNiC78RamrZIs9K8mevEwIhAOsRu8vAu9GyFiibhPAuF4bUWe5K4h6ObMrMNk4SRGg+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256350},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.8.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/175baebe17b367339f1fe1d25a733acc/adhd-sox-graph-store-0.8.6.tgz","_integrity":"sha512-ag+k/NYBGkcY5S/Tb2yoaXu9KP5XNGIdHCSwayAJX5YbfJPDZONIFNW3FmZ+t4S1trDH0PORtDJsvrBpywlc8A==","_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@adhd/sox-store-adapter":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.8.6_1787113044317_0.08248018490039688","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@adhd/sox-graph-store","version":"0.9.0","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"eab97fe4b3691f9930157cd4548a51017f804e21","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.9.0.tgz","fileCount":19,"integrity":"sha512-AW9DQ4I7260f1hd7Ff3qScCoU3UMwomJpvooYGBRWoXIuKHLD801YRxkIE2W+/PPLV4k8ElJCoVOFlwlYqID4A==","signatures":[{"sig":"MEQCIDXPN8rrZwvOkwOKCXi8xMz3JfCKY68fCiL3Mt+GgA7+AiBp5i5iLDhx+4kF0TSFoYenxTPpvJUf3WrGqOOXfu3Tdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302915},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/9c70cac2f77599f37e776c85c1fb3a5b/adhd-sox-graph-store-0.9.0.tgz","_integrity":"sha512-AW9DQ4I7260f1hd7Ff3qScCoU3UMwomJpvooYGBRWoXIuKHLD801YRxkIE2W+/PPLV4k8ElJCoVOFlwlYqID4A==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@adhd/sox-store-adapter":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.9.0_1787933934924_0.604609879516355","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@adhd/sox-graph-store","version":"0.9.1","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"6bfdb163e7c4695845cf97290ed1178aa021fa82","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.9.1.tgz","fileCount":19,"integrity":"sha512-pBgBy1VQQiMBfb7OFf6IWTTndz9aW1hm3/cuOxqgjqqwusXvJ2vQWA5hG53g5C36lCw500fY/XHgBrqWCjMPOQ==","signatures":[{"sig":"MEUCIE7Q01FOxgVlqLz2BgN/cpoO1LxV/OqTp52dCZvRmYUkAiEA/Gm2izNHkjTcvZvHj0nCztKRWVvIUF3KlcHBAHSkZQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFGYenLEE+CM/NnL4Ylz3G+AzCHheWiP3j0c6Np/qV2HAiEA+Yp1qoF3c5iteIk9V+NHmgE6Xd17YZcddqXtlQuHjws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306095},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.9.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/f754d2be3cb336bf033bf53111db89fa/adhd-sox-graph-store-0.9.1.tgz","_integrity":"sha512-pBgBy1VQQiMBfb7OFf6IWTTndz9aW1hm3/cuOxqgjqqwusXvJ2vQWA5hG53g5C36lCw500fY/XHgBrqWCjMPOQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.2.1","@adhd/sox-store-adapter":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.9.1_1788558696014_0.6669443571831923","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@adhd/sox-graph-store","version":"0.9.2","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"94e9c7b392ceced49a6607377f4e4e1031487c3c","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.9.2.tgz","fileCount":19,"integrity":"sha512-zExP9d8TvFkEW+9QCsyJBlBxmv5xPiyBRZZ5X7HKHUw9Q3Z9xWdBzUmBsVPCRWEYfz8xUbxlt3uG14+CgoT5dQ==","signatures":[{"sig":"MEQCIBihnD+8lOwtWamhXHsJXdgU80qYh7d6isFJWsKlIedtAiBiYAlxoUnFAkY3svViE+hxtLkGOKnb9SnqqLBzBSYcbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICCZjLEN0s4DAe6/Z+Xx1byDBhlJhm9rpcyzP0ho2WPcAiAzxUlF1SzoCZMBEkGdc+BB+aoh6XtROxME+Qa/DuMUrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318506},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.9.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/beacf80032ba132e331f66289a6b5ef5/adhd-sox-graph-store-0.9.2.tgz","_integrity":"sha512-zExP9d8TvFkEW+9QCsyJBlBxmv5xPiyBRZZ5X7HKHUw9Q3Z9xWdBzUmBsVPCRWEYfz8xUbxlt3uG14+CgoT5dQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@adhd/sox-store-adapter":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.9.2_1788566534382_0.2377510071346871","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@adhd/sox-graph-store","version":"0.10.0","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"e56a02b2e6cf3278e65911ce0f0c89fa817c6f9f","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.10.0.tgz","fileCount":19,"integrity":"sha512-4aHGf8EFR7Dul0FOKrxnfoqTG+9aHXkYd4ywnVItWroRSnVHK8CCUcFd6z86szi6crT14XAee2/V4rS8lRIXZw==","signatures":[{"sig":"MEYCIQDI3sZWVEFLBwwR5OBGeUlRf3CpUtiAXR9/1pcwqakN6gIhAOuX6N9RYrWpANP5Q/wkRJ48vMJ0iJmg9v2a1lsWJu5D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDNgBwVmIEIvH5MGzHJzCJfZRd8MDvU4yJwq5Ssl5oQ4AiEA5dVt6A+g+ZMCgw5rlizy/2+zQUO6PURybjEr6c5gNrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320292},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/6c9d1804e30f1ac7e99fe4c084641971/adhd-sox-graph-store-0.10.0.tgz","_integrity":"sha512-4aHGf8EFR7Dul0FOKrxnfoqTG+9aHXkYd4ywnVItWroRSnVHK8CCUcFd6z86szi6crT14XAee2/V4rS8lRIXZw==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@adhd/sox-store-adapter":"^0.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.10.0_1789655295160_0.11725854796323709","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@adhd/sox-graph-store","version":"0.10.1","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@0.10.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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"e3936881d2d8871f32a1067cee47aea6392f133e","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.10.1.tgz","fileCount":19,"integrity":"sha512-CPoBmSdqjXnPS8iFWjEFsYad1Wn4Le7HooO1BL4GQkFZ2OiUGf+MeSeMBj5pFcaYLRn2DeH01kZ4mleUTzTAhw==","signatures":[{"sig":"MEUCIFFS5haohSPLepcXKSp8JzlZx4D2P9+9W/WsPS4zbYaXAiEAgjkQIFXvRpyUQHcqT1kAGGxIhp7ldnYFsDiYm95gjlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDsZ3U3yHPrGrQmxjRyWq4pW/mZER4I1WFG8uVAHzmfEAiEA/oxpAyGHWUqz0ixfzLMuhENe1FBPnFCu9xLCzT/JeEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322968},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.10.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/d8884dd4ec9ec40a0e5a150de9daabe2/adhd-sox-graph-store-0.10.1.tgz","_integrity":"sha512-CPoBmSdqjXnPS8iFWjEFsYad1Wn4Le7HooO1BL4GQkFZ2OiUGf+MeSeMBj5pFcaYLRn2DeH01kZ4mleUTzTAhw==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@adhd/sox-store-adapter":"^0.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.10.1_1790047990083_0.9217241249922412","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@adhd/sox-graph-store","version":"0.11.0","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","transaction() hands the callback a GraphTransaction (AdapterTransaction + typed tx-bound writeNode/writeEdge/invalidateEdge/touch/getNodeByUid/...) — every typed call runs on the transaction and delegates to the same typePolicy/uniquenessPolicy-validating internals the bare backend uses, never a raw-SQL bypass; the raw AdapterTransaction surface is preserved so existing callbacks keep working","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"0badc86c7056494703970ccaf5c1b42eabc7d88c","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.11.0.tgz","fileCount":19,"integrity":"sha512-uHRbFDsYvAtq/63vlLP3lwgZ/yCBlOrXtwbqSKQABqdprhIFG8vV4JbsTK2G0vt60gHvM+IY31fvFDESYh16ag==","signatures":[{"sig":"MEQCIH44sxscw3XfxAXEYEMGfrmPwOAtxrrveyPbZiy//qQ1AiBlHObXB+68lCdA8f4LkSnjdHOXRqizPx5akMqv2OA/pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDHrcj1CjiBxVvCnr+Wvywt+9jJRwqlmB6GRiGwB3d69AIhAMQYkgCFMRrbyCYXyUjvclXzfc7g252OTX1qbdS9P63u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343653},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.11.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/c6e8cb34d731f71007786741c33594b7/adhd-sox-graph-store-0.11.0.tgz","_integrity":"sha512-uHRbFDsYvAtq/63vlLP3lwgZ/yCBlOrXtwbqSKQABqdprhIFG8vV4JbsTK2G0vt60gHvM+IY31fvFDESYh16ag==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.0","@adhd/sox-store-adapter":"^0.9.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.11.0_1790054222524_0.2667112474867295","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@adhd/sox-graph-store","version":"0.11.1","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@0.11.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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","transaction() hands the callback a GraphTransaction (AdapterTransaction + typed tx-bound writeNode/writeEdge/invalidateEdge/touch/getNodeByUid/...) — every typed call runs on the transaction and delegates to the same typePolicy/uniquenessPolicy-validating internals the bare backend uses, never a raw-SQL bypass; the raw AdapterTransaction surface is preserved so existing callbacks keep working","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"84ddc4ed952ab8c06369739932af854a151d025d","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.11.1.tgz","fileCount":19,"integrity":"sha512-kSguF/FI1uhRuCkAGWn+EWRMy7MGhUQrfTYhnOdPAQI7ZNoDSO5UXVxSnZJEUvtYk4J+hhfiykj2AIofFsIM9w==","signatures":[{"sig":"MEYCIQDAUbpbupzttw4Qt7Kt/LSf9Q5FcFCs0bSmO7CTV5MasgIhAOeBFBMIqE6o+QubFhSv7B/7r55+DfqTXFpHAD7JtPfH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCdZgtn0Run2tPNRYLKOVEQ8Oibtw1sO7QFtwbxcJKBGQIgVcjzg2Dw8gIiR1c0XAthBIQJ9vDA8O0HFgO3Bp911+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344608},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.11.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/229d395971077394f058dfe99e4dc76d/adhd-sox-graph-store-0.11.1.tgz","_integrity":"sha512-kSguF/FI1uhRuCkAGWn+EWRMy7MGhUQrfTYhnOdPAQI7ZNoDSO5UXVxSnZJEUvtYk4J+hhfiykj2AIofFsIM9w==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@adhd/sox-store-adapter":"^0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.11.1_1790391162540_0.9612024018920569","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@adhd/sox-graph-store","version":"0.12.0","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","transaction() hands the callback a GraphTransaction (AdapterTransaction + typed tx-bound writeNode/writeEdge/invalidateEdge/touch/getNodeByUid/...) — every typed call runs on the transaction and delegates to the same typePolicy/uniquenessPolicy-validating internals the bare backend uses, never a raw-SQL bypass; the raw AdapterTransaction surface is preserved so existing callbacks keep working","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"5603e32f2e1a81330dca2ecd6035b425d48c067e","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.12.0.tgz","fileCount":19,"integrity":"sha512-nTNA2sRnhkFMw+S1SNnrpGM/fNzS1iBCyLaGaHxL75lafru2XuAqVtsfHKY9nBnToqiM7TZrjmH9GyKORqY+sg==","signatures":[{"sig":"MEUCIDY9/1Yx884vzPIwYEDZaXe9DEGLHgWGbWEmoVc7HXSsAiEAxePsA/z8gDYMhGEyVQswNfe2yQPl9XjpLtSf9bAd1P8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCxiA4kiPlCIZU/67GbmyuW4Lut9hbe4+3OcqO1LkaUJAIhAMCuv9LzS3JyggwEqaS5w4J/7AhqXZYRYXNuaA7o1T0+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344840},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.12.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/b8d85ceb0d07c2e71011d29665a6a97f/adhd-sox-graph-store-0.12.0.tgz","_integrity":"sha512-nTNA2sRnhkFMw+S1SNnrpGM/fNzS1iBCyLaGaHxL75lafru2XuAqVtsfHKY9nBnToqiM7TZrjmH9GyKORqY+sg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@adhd/sox-store-adapter":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.12.0_1790650268498_0.5346622306214244","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@adhd/sox-graph-store","version":"0.12.1","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"license":"MIT","_id":"@adhd/sox-graph-store@0.12.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":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","transaction() hands the callback a GraphTransaction (AdapterTransaction + typed tx-bound writeNode/writeEdge/invalidateEdge/touch/getNodeByUid/...) — every typed call runs on the transaction and delegates to the same typePolicy/uniquenessPolicy-validating internals the bare backend uses, never a raw-SQL bypass; the raw AdapterTransaction surface is preserved so existing callbacks keep working","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"dist":{"shasum":"0522edd3764aacba1de31af9e7186481edf4f701","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.12.1.tgz","fileCount":19,"integrity":"sha512-E0tpqKfyh75O5ISl9VLZocCAMSFgUwJz57YqzNu8WV8l56dDME/Myk1N9Rc2E307+5JWcSdh6MyXp95HLxdgoQ==","signatures":[{"sig":"MEUCIDbnQIP6G92VKssZfaV/GhJXW8Ad6X29TZAiNmvjcaCuAiEA+f69FfY7xZJef1KLjapvLKFPUEjSUYT5yyQGbjrR4bc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAKJmNqGQxliWoaPnYiymkJ+UPIQpA5+j0zAiRgEVUFcAiA39gEUIdM4ZXc4kKuiBwtIC4nPVWWRxj7KIv5ulPac5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344840},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-graph-store-0.12.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"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/0192f19291efb1a4560e3fbef63aa7df/adhd-sox-graph-store-0.12.1.tgz","_integrity":"sha512-E0tpqKfyh75O5ISl9VLZocCAMSFgUwJz57YqzNu8WV8l56dDME/Myk1N9Rc2E307+5JWcSdh6MyXp95HLxdgoQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@adhd/sox-store-adapter":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"tmp":"tmp/sox-graph-store_0.12.1_1790658739250_0.5613153030235056","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"_id":"@adhd/sox-graph-store@0.12.2","sox":{"area":"data","group":"graph","assets":["drizzle/migrations"],"concerns":["schema migration via Drizzle ORM (ADR-0008) — drizzle-kit generated, applied at startup","bi-temporal nodes (t_valid / t_invalid) + tExpires TTL + isStale derived field","namespace isolation (NodeMeta.namespace — hard graph partition, default: \"global\")","content-hash dedup (writeGraph / writeNodeBatch atomic transactions)","FTS5 sync triggers (searchNodes scored by mechanism-agnostic score field)","supersession chains (supersede / touch / getSupersessionChain)","edge upsert idempotency (writeEdge — safe for re-projection)","graph traversal (getNeighbors / getNeighborsWithEdges / isReachable / getSubgraph)","GraphBackendCapabilities (bitemporal / fullTextSearch / metadataFilter flags)","confidence as first-class epistemic field (distinct from importance ranking weight)","DEPENDS_ON edge rel for typed dependency graphs (plan DAGs, tool dep trees)","node.kind non-memory reuse contract (BL-295) — the node.kind CHECK constraint is a fixed enum (episode/entity/claim/community/session/generic) and is NEVER extended per consumer. A non-memory reuse case (e.g. a component registry) writes with kind:'generic' and carries its own sub-kind (e.g. 'component') in tags/metadata instead of registering a new kind. writeNode()'s kind param defaults to 'episode' and is validated against DEFAULT_NODE_KINDS, throwing ConstraintError for anything outside the enum."],"invariants":["records are NEVER deleted — invalidate() sets t_invalid (audit-preserving), supersede() mints a new node linked by SUPERSEDES","touch() updates mutable metadata (tExpires, confidence, name, tags) without minting a new node or SUPERSEDES edge — THROWS if nodeId is invalidated or missing","writeEdge() is upsert-idempotent on (src, dst, rel) — safe to call on re-projection","writeGraph() / writeNodeBatch() are atomic (single SQLite transaction) — all or nothing","transaction() hands the callback a GraphTransaction (AdapterTransaction + typed tx-bound writeNode/writeEdge/invalidateEdge/touch/getNodeByUid/...) — every typed call runs on the transaction and delegates to the same typePolicy/uniquenessPolicy-validating internals the bare backend uses, never a raw-SQL bypass; the raw AdapterTransaction surface is preserved so existing callbacks keep working","searchNodes() returns [] (not an error) when capabilities.fullTextSearch === false","NodeFilter.validAt is honored only when capabilities.bitemporal === true, ignored silently otherwise","namespace is a hard isolation field (not a tag/filter convention) — absent → \"global\"","kind is one of DEFAULT_NODE_KINDS ('episode'|'entity'|'claim'|'community'|'session'|'generic'); an out-of-enum kind throws ConstraintError rather than a raw SQLite CHECK failure — there is no per-consumer kind registration"],"entrypoints":["dist/index.js"],"externalConsumers":[{"name":"@adhd/backlog","note":"direct dep (^range)","path":"entrypoint/backlog","repo":"/Users/nix/dev/node/adhd"}]},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"5c8c129d4b6c5e007192beb41450c9caf00c7da7","tarball":"https://registry.npmjs.org/@adhd/sox-graph-store/-/sox-graph-store-0.12.2.tgz","fileCount":19,"integrity":"sha512-OAMELvA9PmAWyxpjFr6PnwqUZHpH4A2J5Zhk4LOJWvK2F6Rn2+q15lKuzzb6mz1r7sSRmHEtq8EhWtZjs5VjYg==","signatures":[{"sig":"MEYCIQC7DsP6U0xJ82Shit7rHsXf0POpudm5YN0uE9Nq3CCf9AIhAIwjs2n5IAe84o6Cg5xILgZmu5/ckQdoT/uFPTtX6ZQP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGCOvfPMD87qHoJky29QgJ/c7C5hqGsLnWUsWzLkrYgjAiEA0utPRO7KaKF7tlxGgKGVjjqr2IzipAK8zy/KR9AeZao="}],"unpackedSize":344840},"main":"./dist/index.js","name":"@adhd/sox-graph-store","type":"module","_from":"file:adhd-sox-graph-store-0.12.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","private":false,"version":"0.12.2","_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"homepage":"https://github.com/PseudoSky/adhd","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/a0d9e8b62f4d98a406a9ba6133314445/adhd-sox-graph-store-0.12.2.tgz","_integrity":"sha512-OAMELvA9PmAWyxpjFr6PnwqUZHpH4A2J5Zhk4LOJWvK2F6Rn2+q15lKuzzb6mz1r7sSRmHEtq8EhWtZjs5VjYg==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","directories":{},"maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"_nodeVersion":"24.11.1","dependencies":{"@adhd/sox-telemetry":"^0.3.2","@adhd/sox-store-adapter":"^0.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"drizzle-kit":"^0.31.10"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sox-graph-store_0.12.2_1790727249393_0.6454472966361322"}}},"time":{"created":"2026-07-16T22:02:17.333Z","modified":"2026-09-30T00:14:09.679Z","0.3.0":"2026-07-16T22:02:17.609Z","0.4.0":"2026-07-23T17:54:21.996Z","0.5.0":"2026-07-27T06:10:52.375Z","0.5.1":"2026-08-05T01:19:21.570Z","0.5.2":"2026-08-05T01:31:26.397Z","0.5.3":"2026-08-05T19:22:13.786Z","0.6.0":"2026-08-07T23:18:54.238Z","0.7.0":"2026-08-09T00:04:26.958Z","0.8.0":"2026-08-10T17:37:12.559Z","0.8.1":"2026-08-10T18:03:15.292Z","0.8.2":"2026-08-12T00:35:59.742Z","0.8.3":"2026-08-12T03:55:49.369Z","0.8.4":"2026-08-12T22:56:11.636Z","0.8.6":"2026-08-19T04:17:24.497Z","0.9.0":"2026-08-28T16:18:55.100Z","0.9.1":"2026-09-04T21:51:36.100Z","0.9.2":"2026-09-05T00:02:14.483Z","0.10.0":"2026-09-17T14:28:15.261Z","0.10.1":"2026-09-22T03:33:10.199Z","0.11.0":"2026-09-22T05:17:02.605Z","0.11.1":"2026-09-26T02:52:42.637Z","0.12.0":"2026-09-29T02:51:08.632Z","0.12.1":"2026-09-29T05:12:19.356Z","0.12.2":"2026-09-30T00:14:09.521Z"},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"license":"MIT","homepage":"https://github.com/PseudoSky/adhd","keywords":["graph","sqlite","bi-temporal","database","store","typescript"],"repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"description":"Bi-temporal graph store — nodes + edges over SQLite with t_valid/t_invalid correctness, tExpires TTL, content-hash dedup, FTS5 sync, namespace isolation, and supersession chains. Schema migration via Drizzle ORM (ADR-0008). GraphBackendCapabilities flags ","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"readme":"# @adhd/sox-graph-store\n\nA bi-temporal graph store — nodes and edges with `t_valid`/`t_invalid` correctness, TTL expiry, content-hash dedup, full-text search, namespace isolation, and supersession chains — built on [`@adhd/sox-store-adapter`](https://www.npmjs.com/package/@adhd/sox-store-adapter)'s `StoreAdapter`, not directly on SQLite.\n\nThat matters because store-adapter's default backend is Turso, and Turso's default mode is `multiprocess-wal`: **multiple OS processes hold concurrent write connections to the same store file**, serialized through a `-tshm` coordinator sidecar — there is no opt-out and no single-writer bottleneck to design around. Point many CLI invocations, many MCP servers, or many agent workers at one `graph.db` and they all write concurrently, safely. SQLite (`better-sqlite3`) remains available as a single-writer, backward-compatible fallback via the same `StoreAdapter` interface.\n\n```bash\npnpm add @adhd/sox-graph-store @adhd/sox-store-adapter\n```\n\n## Quick start\n\n```typescript\nimport { createStoreAdapter } from '@adhd/sox-store-adapter';\nimport { createGraphBackend } from '@adhd/sox-graph-store';\n\n// Turso is the default backend — multiprocess_wal is on, so this same file\n// can be opened by many processes with concurrent writers, no coordination\n// required beyond store-adapter's own '-tshm' sidecar.\nconst adapter = await createStoreAdapter({ dbPath: 'graph.db' });\nconst graph = createGraphBackend(adapter);\nawait graph.applySchema();\n\nconst id = await graph.writeNode('Ravens migrate south for winter', {\n  kind: 'claim',\n  name: 'raven-migration',\n  topic: 'ornithology',\n  tags: ['birds', 'migration'],\n  confidence: 'unverified',\n});\n\nconst node = await graph.getNode(id);\nconsole.log(node?.name); // \"raven-migration\"\n\n// Full-text search over content/name/summary\nconst hits = await graph.searchNodes('migrate');\nconsole.log(hits[0]?.score);\n\nawait adapter.close();\n```\n\n## API reference\n\n### `createGraphBackend(adapter, opts?)`\n\n```typescript\nfunction createGraphBackend(adapter: StoreAdapter, opts?: GraphBackendOpts): GraphBackend;\n\ninterface GraphBackendOpts {\n  /** Injected type-vocabulary policy. Defaults to the six built-in kinds / ten built-in rels. */\n  typePolicy?: TypePolicy;\n  /** Write observers, fired after-commit (e.g. to drive an embedding pipeline). */\n  observers?: GraphWriteObserver[];\n  /** Injected uniqueness check, run inside writeNode before the INSERT. */\n  uniquenessPolicy?: NodeUniquenessPolicy;\n}\n```\n\n### `GraphBackend` interface\n\n```typescript\ninterface GraphBackend {\n  readonly capabilities: GraphBackendCapabilities; // { bitemporal, fullTextSearch, metadataFilter }\n  readonly engineIdentity?: EngineIdentity | null;\n\n  applySchema(): Promise<void>;\n\n  // Writes\n  writeNode(content: string, meta: NodeMeta, opts?: WriteNodeOpts): Promise<number>;\n  findOrCreateNode(kind: string, name: string, opts?: { content?: string; meta?: NodeMeta }): Promise<number>;\n  supersede(oldId: number, newContent: string, meta: NodeMeta): Promise<number>;\n  invalidate(nodeId: number, reason?: string): Promise<void>;\n  touch(nodeId: number, meta: Partial<NodeMeta>): Promise<void>;\n  writeNodeBatch(nodes: Array<{ content: string; meta: NodeMeta }>, opts?: WriteNodeOpts): Promise<number[]>;\n  writeGraph(\n    nodes: Array<{ content: string; meta: NodeMeta }>,\n    edges: Array<{ srcIdx: number; dstIdx: number; rel: EdgeRel; meta?: EdgeMeta }>,\n    opts?: WriteNodeOpts,\n  ): Promise<number[]>;\n  transaction<T>(fn: (tx: GraphTransaction) => Promise<T>, opts?: TransactionOptions): Promise<T>;\n\n  writeEdge(src: number, dst: number, rel: EdgeRel, meta?: EdgeMeta): Promise<void>;\n  writeEdges(edges: Array<{ src: number; dst: number; rel: EdgeRel; meta?: EdgeMeta }>): Promise<void>;\n  invalidateEdge(src: number, dst: number, rel: EdgeRel, reason?: string): Promise<void>;\n\n  // Reads\n  getNode(id: number): Promise<NodeRecord | null>;\n  getNodeByUid(uid: string): Promise<NodeRecord | null>;\n  getNodesByIds(ids: number[], opts?: { liveOnly?: boolean }): Promise<NodeRecord[]>;\n  queryNodes(filter?: NodeFilter): Promise<NodeRecord[]>;\n  searchNodes(query: string, opts?: { limit?: number; offset?: number; filter?: NodeFilter }):\n    Promise<Array<NodeRecord & { score: number }>>;\n  countNodes(filter?: NodeFilter): Promise<number>;\n  countBy(field: 'kind' | 'namespace' | 'agentId', filter?: NodeFilter): Promise<Record<string, number>>;\n  countNodesFts(query: string, filter?: NodeFilter): Promise<number>;\n  getSupersessionChain(nodeId: number): Promise<NodeRecord[]>;\n  getEdges(opts: { src?: number; dst?: number; rel?: EdgeRel; metadata?: Record<string, MetadataFilterValue> }): Promise<EdgeRecord[]>;\n\n  // Traversal\n  getNeighbors(nodeId: number, opts?: { rel?: EdgeRel; depth?: number; direction?: 'in' | 'out' | 'both' }): Promise<NodeRecord[]>;\n  getNeighborsWithEdges(nodeId: number, opts?: { rel?: EdgeRel; depth?: number; direction?: 'in' | 'out' | 'both' }):\n    Promise<Array<{ node: NodeRecord; edge: EdgeRecord }>>;\n  isReachable(src: number, dst: number, opts?: { rel?: EdgeRel; direction?: 'out' | 'in' }): Promise<boolean>;\n  getSubgraph(rootId: number, opts?: { rel?: EdgeRel; depth?: number; direction?: 'out' | 'in' | 'both' }):\n    Promise<{ nodes: NodeRecord[]; edges: EdgeRecord[] }>;\n}\n```\n\n### Core types\n\n```typescript\ntype EdgeRel = 'MENTIONS' | 'SUPPORTS' | 'RELATES_TO' | 'DERIVED_FROM' | 'SUPERSEDES'\n  | 'SAME_AS' | 'ASSIGNED_TO' | 'MEMBER_OF' | 'PART_OF' | 'DEPENDS_ON' | (string & {});\ntype Confidence = 'confirmed' | 'unverified' | 'disputed' | 'deprecated';\n\ninterface NodeMeta {\n  kind?: string;          // one of DEFAULT_NODE_KINDS unless a custom TypePolicy is injected\n  name?: string;\n  summary?: string;\n  topic?: string;\n  tags?: string[];\n  importance?: number;\n  confidence?: Confidence;\n  source?: string;\n  agentId?: string;\n  projectPath?: string;\n  sessionId?: string;\n  namespace?: string;     // hard partition; absent → \"global\"\n  tOccurred?: string;\n  tExpires?: string;      // TTL — node.isStale flips true once this passes\n  metadata?: Record<string, unknown>;\n}\n\ninterface NodeRecord {\n  id: number;             // rowid — per-store, changes across export/rebuild\n  uid: string;            // stable, exportable UUID\n  kind: string;\n  content: string;\n  name?: string; summary?: string; topic?: string;\n  tags: string[];\n  importance?: number;\n  confidence?: Confidence;\n  tCreated: string; tValid: string; tInvalid?: string; tExpires?: string;\n  isSuperseded: boolean;\n  isStale: boolean;\n  namespace: string;\n  metadata?: Record<string, unknown>;\n}\n\nconst DEFAULT_NODE_KINDS = ['episode', 'entity', 'claim', 'community', 'session', 'generic'] as const;\n```\n\n## Bi-temporal writes: nothing is ever deleted\n\n`invalidate()` marks a node dead (`t_invalid` set) without removing it; `supersede()` mints a brand-new node linked back to the old one by a `SUPERSEDES` edge; `touch()` mutates cheap fields (name, tags, importance, `tExpires`, metadata) on the *same* node with no new row and no edge:\n\n```typescript\nconst v1 = await graph.writeNode('draft policy text', { name: 'retention-policy' });\n\n// touch() — same node, no history event, throws if v1 is already invalidated\nawait graph.touch(v1, { importance: 8, metadata: { reviewed: true } });\n\n// supersede() — mints v2, writes v2 -[SUPERSEDES]-> v1, marks v1 invalid\nconst v2 = await graph.supersede(v1, 'final policy text', { name: 'retention-policy' });\n\nconst chain = await graph.getSupersessionChain(v2); // [v1, v2], oldest first\n```\n\n## Full-text search, gated by a capability flag\n\n`graph.capabilities.fullTextSearch` reflects whether the underlying adapter supports it (SQLite: `fts5`; Turso: a native Tantivy index) — `searchNodes()` returns `[]`, not an error, when it's `false`:\n\n```typescript\nif (graph.capabilities.fullTextSearch) {\n  const results = await graph.searchNodes('policy retention', { limit: 10 });\n  for (const r of results) console.log(r.name, r.score);\n}\n```\n\n## Filtering: bitemporal validity + arbitrary metadata\n\n`NodeFilter.validAt` is honored only when `capabilities.bitemporal === true` (silently ignored otherwise). `metadata` accepts either scalar equality or an operator object (`eq`/`neq`/`in`/`gt`/`gte`/`lt`/`lte`/`between`/`exists`/`contains`), evaluated via `json_extract` so ISO-8601 timestamps and numbers compare correctly:\n\n```typescript\nawait graph.writeNode('p1', { kind: 'issue', metadata: { priority: 1, status: 'open', tags: ['x'] } });\nawait graph.writeNode('p2', { kind: 'issue', metadata: { priority: 3, status: 'closed' } });\n\nconst highPriorityOpen = await graph.queryNodes({\n  kind: 'issue',\n  metadata: {\n    priority: { gte: 2 },\n    status: { eq: 'open' },\n    tags: { contains: 'x' },\n  },\n  orderBy: 'importance',\n  orderDir: 'desc',\n  limit: 20,\n});\n```\n\nFor stable pagination under concurrent writers, use the keyset cursor (`after`) instead of `offset`, which is O(offset) and unstable across concurrent inserts:\n\n```typescript\nlet page = await graph.queryNodes({ kind: 'issue', limit: 100 });\nwhile (page.length > 0) {\n  const lastId = page[page.length - 1]!.id;\n  // ...process page...\n  page = await graph.queryNodes({ kind: 'issue', limit: 100, after: lastId });\n}\n```\n\n## Traversal\n\n```typescript\nconst a = await graph.writeNode('task A', { kind: 'generic' });\nconst b = await graph.writeNode('task B', { kind: 'generic' });\nawait graph.writeEdge(a, b, 'DEPENDS_ON');\n\nconst deps = await graph.getNeighbors(a, { rel: 'DEPENDS_ON', direction: 'out', depth: 2 });\nconst reachable = await graph.isReachable(a, b, { rel: 'DEPENDS_ON', direction: 'out' });\nconst { nodes, edges } = await graph.getSubgraph(a, { direction: 'out', depth: 3 });\n```\n\n`DEPENDS_ON` is a first-class `EdgeRel` for typed dependency graphs (plan DAGs, tool dependency trees) — see [`@adhd/sox-analysis`](https://www.npmjs.com/package/@adhd/sox-analysis) for pure `topoSort`/`criticalPath`/`detectCycles` algorithms that consume a graph shaped this way.\n\n## Atomic batch writes and multi-op transactions\n\n`writeGraph()` / `writeNodeBatch()` run inside one adapter transaction — all nodes (and edges) commit together or none do. `writeEdge()` is upsert-idempotent on `(src, dst, rel)`, so replaying a projection is always safe.\n\n`transaction()` composes your own atomic multi-step writes. Its callback receives a **`GraphTransaction`** — the raw `AdapterTransaction` surface (`executeGet` / `executeAll` / `executeRun` / `exec`) **plus** typed, transaction-bound graph primitives (`tx.writeNode`, `tx.writeEdge`, `tx.invalidateEdge`, `tx.touch`, `tx.getNodeByUid`, …). Every typed call executes on the transaction, so a check-then-write composed through `tx` is atomic; the injected `typePolicy` / `uniquenessPolicy` still validate at the write boundary. Pass `{ mode: 'immediate' }` for `BEGIN IMMEDIATE` (the cross-process CAS primitive):\n\n```typescript\nconst ids = await graph.writeGraph(\n  [\n    { content: 'root task', meta: { kind: 'generic', name: 'root' } },\n    { content: 'child task', meta: { kind: 'generic', name: 'child' } },\n  ],\n  [{ srcIdx: 1, dstIdx: 0, rel: 'DEPENDS_ON' }], // child depends on root\n);\n\nawait graph.transaction(\n  async (tx) => {\n    // Typed, tx-scoped writes — no hand-composed SQL, no schema coupling.\n    const existing = await tx.getNodeByUid(uid);\n    if (existing) throw new Error('already exists');\n    const node = await tx.writeNode('content', { kind: 'generic', name: 'n' });\n    await tx.writeEdge(node, ids[0], 'RELATES_TO');\n  },\n  { mode: 'immediate' }, // BEGIN IMMEDIATE: safe under concurrent writers\n);\n```\n\nThe typed primitives mirror the `GraphBackend` methods of the same name; the bulk ones\n(`tx.writeGraph` / `tx.writeEdges` / `tx.writeNodeBatch` / `tx.supersede`) do **not** open a nested\ntransaction, so call them through `tx` — not on `graph` — from inside a `transaction()` callback.\nBecause `GraphTransaction` is a structural superset of `AdapterTransaction`, existing callbacks that\nhand-compose SQL against the tx handle keep working unchanged.\n\n\n## Idempotent business-key writes\n\n`findOrCreateNode()` returns the existing node's id on a repeat call with the same `(kind, name)`, or creates it — useful for idempotent projections (e.g. re-running an ETL):\n\n```typescript\nconst statusId = await graph.findOrCreateNode('status', 'OPEN', { content: 'Open status' });\nawait graph.findOrCreateNode('status', 'OPEN'); // returns the same id, writes nothing new\n```\n\nBecause the store is parallel-process enabled (multiple processes may hold concurrent Turso write connections), a plain check-then-insert like this is not automatically race-free across processes — wrap it in `transaction()` or back it with your own uniqueness policy (below) if two processes might race to create the same key.\n\n## Content-hash dedup\n\n`writeNode()` dedups by content hash by default: writing the same content twice returns the *same* node id rather than inserting a duplicate row.\n\n```typescript\nconst id1 = await graph.writeNode('hello world', {});\nconst id2 = await graph.writeNode('hello world', { topic: 'different' });\nconsole.log(id1 === id2); // true — same content, same node\n```\n\nSet `skipDedupe: true` when identity is business-key-based rather than content-based (e.g. entity nodes where two entities can legitimately share content):\n\n```typescript\nawait graph.writeNode('Acme Corp', { kind: 'entity', name: 'acme' }, { skipDedupe: true });\n```\n\n## Namespace isolation\n\n`NodeMeta.namespace` is a hard partition, not a filter convention — nodes in different namespaces never match each other's queries by default. Absent namespace defaults to `\"global\"`.\n\n```typescript\nawait graph.writeNode('doc', { namespace: 'tenant-a' });\nconst tenantANodes = await graph.queryNodes({ namespace: 'tenant-a' });\n```\n\n## Custom type policies and uniqueness\n\n`createGraphBackend`'s `typePolicy` and `uniquenessPolicy` options let you replace the built-in six-kind / ten-rel vocabulary and enforce your own uniqueness rules at the write boundary, inside the same transaction as the INSERT:\n\n```typescript\nimport { createGraphBackend } from '@adhd/sox-graph-store';\nimport type { TypePolicy } from '@adhd/sox-graph-store';\n\nconst openVocabulary: TypePolicy = {\n  validateKind: () => {}, // accept any kind string\n  validateRel: () => {},  // accept any rel string\n};\n\nconst graph = createGraphBackend(adapter, { typePolicy: openVocabulary });\n```\n\n## Invariants\n\n- Records are **never deleted** — `invalidate()` sets `t_invalid` (audit-preserving); `supersede()` mints a new node linked by `SUPERSEDES`.\n- `touch()` updates mutable metadata without minting a new node or edge — throws if the node is invalidated or missing.\n- `writeEdge()` is upsert-idempotent on `(src, dst, rel)` — safe to call on re-projection.\n- `writeGraph()` / `writeNodeBatch()` are atomic — all or nothing, in one adapter transaction.\n- `transaction()` hands the callback a `GraphTransaction` — a structural superset of `AdapterTransaction` that adds typed, transaction-bound writes. Every typed method runs on the transaction and delegates to the same `typePolicy`/`uniquenessPolicy`-validating internals the bare backend uses; the tx path is never a raw-SQL bypass. Existing `(tx) => tx.executeRun(...)` callbacks keep working.\n- `searchNodes()` returns `[]` (not an error) when `capabilities.fullTextSearch === false`.\n- `NodeFilter.validAt` is honored only when `capabilities.bitemporal === true`; ignored silently otherwise.\n- `namespace` is a hard isolation field (not a tag/filter convention) — absent → `\"global\"`.\n- `kind` must be one of `DEFAULT_NODE_KINDS` (`episode`/`entity`/`claim`/`community`/`session`/`generic`) unless you inject a custom `TypePolicy` — an out-of-vocabulary kind throws `ConstraintError`.\n- The store is **parallel-process enabled** (Turso `multiprocess-wal`, the default) — concurrent processes may hold concurrent write connections to the same store file. A caller-side check-then-write (`findOrCreateNode`, a custom `NodeUniquenessPolicy`) is not automatically race-free across processes; wrap it in `transaction()` or back it with a DDL constraint if two processes might race on the same key.\n\n## Requires\n\nNode >=22. Runs on [`@adhd/sox-store-adapter`](https://www.npmjs.com/package/@adhd/sox-store-adapter) — see that package's README for adapter configuration (Turso vs. SQLite, transaction modes, retry utilities).\n","readmeFilename":"README.md"}