{"_id":"@adhd/sox-analysis","_rev":"11-0700d0d95588d6ef1c00ecd3e9ca4a66","name":"@adhd/sox-analysis","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.0":{"name":"@adhd/sox-analysis","version":"0.1.0","license":"MIT","_id":"@adhd/sox-analysis@0.1.0","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"092cfeef71b2b8cce827a30f404db111a7d2b9fb","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.0.tgz","fileCount":7,"integrity":"sha512-g+G9Yd5aY5k0Hdx0hsroGDFdNJfhADDsnG+AI8FBexwn/iOVyEdJCH+CXSe9O7UL5IU9EwLkqG/XuA2stTjvQA==","signatures":[{"sig":"MEQCIHWHWha+/kPZ6NDctS1cDzrf6GoUhRDRru/hOz53GNuOAiBl2FQdbAUnoVE5KW4ia2UviqHHHcIRywSn1RQehLvntA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97969},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.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/63444fea4b08a53a7270874b4a237e7d/adhd-sox-analysis-0.1.0.tgz","_integrity":"sha512-g+G9Yd5aY5k0Hdx0hsroGDFdNJfhADDsnG+AI8FBexwn/iOVyEdJCH+CXSe9O7UL5IU9EwLkqG/XuA2stTjvQA==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.3.0","@adhd/sox-vector-store":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.0_1784239337512_0.9661409339642109","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adhd/sox-analysis","version":"0.1.1","license":"MIT","_id":"@adhd/sox-analysis@0.1.1","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"dc688b83a5aa5ed955f15d7bccf7270d9ee68ab8","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.1.tgz","fileCount":7,"integrity":"sha512-dcA3w4f8rRa+V7TAnyo3t9cWc0/xt9ez0cF7mwBrpSh2pJTqdaaWLyKoACuN3K0DfaJo7u28dIx6HVVybXpgyg==","signatures":[{"sig":"MEUCIQCmHlW7dfRX/JMJFA/FbsrDxm8/KwDpdhaDD1zj4Uu2pgIgSTz0wF1SUrYaKiU/JLe5EiMPv2Us5NeoCjBgtanSEfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97969},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.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/00143b428f71f30b3d67ba8d3f297e04/adhd-sox-analysis-0.1.1.tgz","_integrity":"sha512-dcA3w4f8rRa+V7TAnyo3t9cWc0/xt9ez0cF7mwBrpSh2pJTqdaaWLyKoACuN3K0DfaJo7u28dIx6HVVybXpgyg==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.4.0","@adhd/sox-vector-store":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.1_1784829261572_0.06397838854043392","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adhd/sox-analysis","version":"0.1.2","license":"MIT","_id":"@adhd/sox-analysis@0.1.2","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"38bd73d01609e2d16caef33df7e6893462a9c2ad","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.2.tgz","fileCount":7,"integrity":"sha512-efLALqrNhpvnECtTnfyRcxazj/3QkFEo3XZUXOq4tDeGuJpOrUi2Pud5bI5jeVe4OAnObQVsktRpSQPZvdpoDQ==","signatures":[{"sig":"MEQCIGoVQtBHPvsTJD8F5DaDVzu81Tc2N82a2BA7YimHXFdNAiBv7COY1sAG716CPzTcZvWyBTXwdIQfuvsEZX4XNJvrwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.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-verify-201412/adhd-sox-analysis-0.1.2.tgz","_integrity":"sha512-efLALqrNhpvnECtTnfyRcxazj/3QkFEo3XZUXOq4tDeGuJpOrUi2Pud5bI5jeVe4OAnObQVsktRpSQPZvdpoDQ==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.5.1","@adhd/sox-vector-store":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.2_1785892765787_0.5726512853451398","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@adhd/sox-analysis","version":"0.1.3","license":"MIT","_id":"@adhd/sox-analysis@0.1.3","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"12a12038750fd2ef1e64eef40c2bf1bd26a90a6d","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.3.tgz","fileCount":7,"integrity":"sha512-QrMVBeN5MODO/5ZSONvrBuB71rkTZDEOAXBhipjdwL+1Mq63MjHcJDnuiVVFyj/O566w7j/B9KYWoiHTlET9gg==","signatures":[{"sig":"MEQCIBnAgOQmDpH6rlsrR4xs8R5igB4U0MjqwJDw6hFdBN5fAiAvPo+/YCEFls54E4ZtYRwdTg4MTqzYmnUkYFtZpgkHOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.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/publish-verify2-203027/adhd-sox-analysis-0.1.3.tgz","_integrity":"sha512-QrMVBeN5MODO/5ZSONvrBuB71rkTZDEOAXBhipjdwL+1Mq63MjHcJDnuiVVFyj/O566w7j/B9KYWoiHTlET9gg==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.5.2","@adhd/sox-vector-store":"0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.3_1785893489797_0.01810944716247298","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@adhd/sox-analysis","version":"0.1.4","license":"MIT","_id":"@adhd/sox-analysis@0.1.4","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"4559e59717c23eb6d9226d8ee044031d04247780","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.4.tgz","fileCount":7,"integrity":"sha512-dMqBfzkgQP0Q0luaSOLzaYFQfsVdqOTHQ2DDj7EmBkhRAJlIZPPCfNksCQIVnpLWc3Dk6RykMROP2Ub/ghDJAg==","signatures":[{"sig":"MEUCIQCafd1w/qgppSwGTtFo6QKx9DgUWu95s0nTk3dihyWvcAIgBK2QuCzdv5LgRCSUHoORtelDzZMtCJ16X54OmmJVI/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.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":"/Users/nix/.adhd/sox-ecosystem/pubv3-142121/adhd-sox-analysis-0.1.4.tgz","_integrity":"sha512-dMqBfzkgQP0Q0luaSOLzaYFQfsVdqOTHQ2DDj7EmBkhRAJlIZPPCfNksCQIVnpLWc3Dk6RykMROP2Ub/ghDJAg==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.5.3","@adhd/sox-vector-store":"0.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.4_1785957737608_0.6575106916405333","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@adhd/sox-analysis","version":"0.1.5","license":"MIT","_id":"@adhd/sox-analysis@0.1.5","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"908e0f5d3b837893e8e8a70bcc65b94df545c7fe","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.5.tgz","fileCount":7,"integrity":"sha512-eHcLGUC4Xk+MJSepFTNMoD30Z1NvNmd0oOuPuwQeUIVt1M2VnQPEUu3ikQtxpVEqwsH6UoC7p4Rr3tWRsSCEMA==","signatures":[{"sig":"MEQCIBUXvSkCh41haPDWrHhNNPxcw64c+ZFUGauDgo3VGjPQAiBJpQ7OZAxmMV4VaftemK90Xusb1JFKgOqpvYUT+dc33w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.5.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/ac01aa02f8e595f765121e0c1903d1d0/adhd-sox-analysis-0.1.5.tgz","_integrity":"sha512-eHcLGUC4Xk+MJSepFTNMoD30Z1NvNmd0oOuPuwQeUIVt1M2VnQPEUu3ikQtxpVEqwsH6UoC7p4Rr3tWRsSCEMA==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.6.0","@adhd/sox-vector-store":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.5_1786144734303_0.12288275701102402","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@adhd/sox-analysis","version":"0.1.7","license":"MIT","_id":"@adhd/sox-analysis@0.1.7","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"c60bb35817a7871057d26ff2d394b99293fc799f","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.7.tgz","fileCount":7,"integrity":"sha512-JrBnjJztOuGayiSxopWs+cGMuxg1zI3ghzHKt9hlbYby1vxnoElBM9WbxeIIafhL3SkgbJSR/SoZIXcfhj756w==","signatures":[{"sig":"MEUCIQCTj7rFfMphSwc0GiQWZn3oQRlK0wUEn/sdwLQA/pkteAIgDXAS/mPDNqU4qhLnwDWjDvK0Czql/wvkTU71HP1epEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.7.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/b3ae694d1a4112f2a080ec7f2c30e6c3/adhd-sox-analysis-0.1.7.tgz","_integrity":"sha512-JrBnjJztOuGayiSxopWs+cGMuxg1zI3ghzHKt9hlbYby1vxnoElBM9WbxeIIafhL3SkgbJSR/SoZIXcfhj756w==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.8.2","@adhd/sox-vector-store":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.7_1786494959339_0.6746902380071718","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@adhd/sox-analysis","version":"0.1.8","license":"MIT","_id":"@adhd/sox-analysis@0.1.8","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"9d4c5cfb1ddf73893c820de51d66e79e6bffc314","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.8.tgz","fileCount":7,"integrity":"sha512-7U0v4tBIlM8XvVHBGmhkDB8qiexPGhgZqEhEXeajvZW4wblgc3YPi8bOgYJTJmwHIhgdB9l5hL8gxEDzMtUsrw==","signatures":[{"sig":"MEUCIQCDxsYBt/burHYYFCsmYmgSdu3j5Rs2LyONEs5925vJIQIgC/tsi5jY1n/s5hiNAhtvG35eQr+j0XpEe89/k65iLHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98498},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.8.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/1d2bd53092525aad80a562c422553d2f/adhd-sox-analysis-0.1.8.tgz","_integrity":"sha512-7U0v4tBIlM8XvVHBGmhkDB8qiexPGhgZqEhEXeajvZW4wblgc3YPi8bOgYJTJmwHIhgdB9l5hL8gxEDzMtUsrw==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"0.8.3","@adhd/sox-vector-store":"0.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"0.5.3"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.8_1786506948833_0.458072390076687","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@adhd/sox-analysis","version":"0.1.9","license":"MIT","_id":"@adhd/sox-analysis@0.1.9","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"7784571e0b253c4cce5115b20e365d5e53fd3075","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.9.tgz","fileCount":7,"integrity":"sha512-U9Mlxst58YmTQvn/La3hF6NIii0x9Elxg/WcCFoQ/OsnUCZjrWIN1tQITIZ8AcZnYS2PDUVEps12T/Zs3rknWg==","signatures":[{"sig":"MEQCIGRkN3yL/eVitl6wJO8tRtkwegDYbp/UQCDbb4gwhuiXAiAoYKDWj+iB6hMd06X0yqniQX4xww5WQcfhwtb9/zlxvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98501},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.9.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/ddf1841a89ce6c10133558757110c5df/adhd-sox-analysis-0.1.9.tgz","_integrity":"sha512-U9Mlxst58YmTQvn/La3hF6NIii0x9Elxg/WcCFoQ/OsnUCZjrWIN1tQITIZ8AcZnYS2PDUVEps12T/Zs3rknWg==","_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"^0.8.6","@adhd/sox-vector-store":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.9_1787786395415_0.1479028607516657","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@adhd/sox-analysis","version":"0.1.10","keywords":["graph","clustering","analysis","batch","typescript"],"license":"MIT","_id":"@adhd/sox-analysis@0.1.10","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":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"dist":{"shasum":"08b7cd042972e4ae1dc2e2cc75b8b30c7a022f8c","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.10.tgz","fileCount":8,"integrity":"sha512-a8+cpa4eYXeSSQ1zGeSvrytCxgFniIuFMMvw9I8LtIbswMZYCvWkLQW2TuFGX1NMa2JKEh1QSKjeylL6aAuBqQ==","signatures":[{"sig":"MEUCIQDXudyDEpPVyYMbyxJgesayER7TKxIwOja7/dQLb/vU1gIgLgYPLSq1Pa/QiEDooENnlbT5p3gUf6vqxgPm5aWeMl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100652},"main":"./dist/index.js","type":"module","_from":"file:adhd-sox-analysis-0.1.10.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/23569857f8979982b8711ef67a2c81a0/adhd-sox-analysis-0.1.10.tgz","_integrity":"sha512-a8+cpa4eYXeSSQ1zGeSvrytCxgFniIuFMMvw9I8LtIbswMZYCvWkLQW2TuFGX1NMa2JKEh1QSKjeylL6aAuBqQ==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"^0.9.0","@adhd/sox-vector-store":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sox-analysis_0.1.10_1787933934616_0.1593025968346149","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"_id":"@adhd/sox-analysis@0.1.11","sox":{"area":"data","group":"analysis","concerns":["clustering / community detection (density-clustering, in-process JS — NOT a SQLite extension)","near-dup detection (NearDupPair with near_dup / candidate / distinct status)","importance scoring (inDegree, outDegree, recencyMs, nearDupCount)","auto-linking (similarity-threshold edge creation, RELATES_TO by default)","batch enrichment orchestration (runBatchEnrich — incremental, skip-list)","pure topoSort + wave assignment (Kahn BFS, cycle detection + recovery)","criticalPath (longest-path DP for dispatch/scheduling prioritization)","detectCycles (all cycles, not just first — for user-facing error messages)","packBatches (bin-packing with submodular shared cost; algorithm auto-selects by N + DAG structure)","detectDAGStructure (forest / series-parallel / general — determines packBatches algorithm)","setOverlapMatrix (pairwise intersection; MinHash for |S| > 500)"],"invariants":["operates over a corpus (batch), never per-query — analysis functions are not on the hot query path","clustering uses an existing JS lib (density-clustering / hdbscanjs) — NOT hand-rolled DBSCAN/HDBSCAN","all DB-integrated functions take (VectorBackend, GraphBackend) directly — no CorpusBackend wrapper","similarity-based outputs (clusters, near-dup pairs, link scores) MUST record the modelId they were computed under — re-clustering after a model migration is required","computeImportance / buildAutoLinks are incremental by default ([def:deterministic-first] — processes only un-scored nodes)","topoSort / criticalPath / detectCycles accept a caller-supplied adjacency function (getEdges) so they work over any graph representation, not just graph-store","packBatches shared resource cost is submodular (union cost) — shared resources are paid once per batch; callers must not compute additive per-item resource cost"],"entrypoints":["dist/index.js"]},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"dist":{"shasum":"45d8e4e72374be927f636befa8a4044f53611de5","tarball":"https://registry.npmjs.org/@adhd/sox-analysis/-/sox-analysis-0.1.11.tgz","fileCount":8,"integrity":"sha512-TavanL/J+7wePeojlm4GqNPmjWzgMV3mdcY1PbMKhYhG66GliUZupuviSH6oUyOrtO265UdU0cNcuIz51wbuvw==","signatures":[{"sig":"MEYCIQCJXtETHzkzM29ORsxZcJLaRP1y5KX/10t9oG63C7peTAIhAIVKzHteFDVULc8TzOkR0xSDM5t890NPpl0jocJmFGqO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDndiYwEgZwk552CpBBPCZ8criuhfo5/+n2A0tPWdjbMAiEAkI0WytHSRAP/PzoJ5E0PvpfIGH8HmjwESfaz2cpCvrQ="}],"unpackedSize":112932},"main":"./dist/index.js","name":"@adhd/sox-analysis","type":"module","_from":"file:adhd-sox-analysis-0.1.11.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.1.11","_npmUser":{"name":"pseudosky","email":"skywinston.sk@gmail.com"},"homepage":"https://github.com/PseudoSky/adhd","keywords":["graph","clustering","analysis","batch","typescript"],"_resolved":"/private/var/folders/yg/cfczgtx54bzfh74lx2_mv0z80000gp/T/4583843f2a234dd688ffd381edc87553/adhd-sox-analysis-0.1.11.tgz","_integrity":"sha512-TavanL/J+7wePeojlm4GqNPmjWzgMV3mdcY1PbMKhYhG66GliUZupuviSH6oUyOrtO265UdU0cNcuIz51wbuvw==","repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"_npmVersion":"11.6.2","description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","directories":{},"maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"_nodeVersion":"24.11.1","dependencies":{"density-clustering":"^1.3.0","@adhd/sox-graph-store":"^0.9.2","@adhd/sox-vector-store":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@adhd/sox-store-adapter":"^0.9.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sox-analysis_0.1.11_1788566536514_0.11445690911036577"}}},"time":{"created":"2026-07-16T22:02:17.368Z","modified":"2026-09-05T00:02:16.782Z","0.1.0":"2026-07-16T22:02:17.656Z","0.1.1":"2026-07-23T17:54:21.707Z","0.1.2":"2026-08-05T01:19:25.945Z","0.1.3":"2026-08-05T01:31:29.944Z","0.1.4":"2026-08-05T19:22:17.756Z","0.1.5":"2026-08-07T23:18:54.490Z","0.1.7":"2026-08-12T00:35:59.507Z","0.1.8":"2026-08-12T03:55:48.976Z","0.1.9":"2026-08-26T23:19:55.588Z","0.1.10":"2026-08-28T16:18:54.798Z","0.1.11":"2026-09-05T00:02:16.596Z"},"bugs":{"url":"https://github.com/PseudoSky/adhd/issues"},"license":"MIT","homepage":"https://github.com/PseudoSky/adhd","keywords":["graph","clustering","analysis","batch","typescript"],"repository":{"url":"git+https://github.com/PseudoSky/adhd.git","type":"git"},"description":"Batch derivation over a corpus — clustering (density-clustering, in-process JS), near-dup detection, importance + link scoring, and a suite of pure graph algorithms (topoSort, criticalPath, detectCycles, packBatches). No CorpusBackend wrapper: DB-integrat","maintainers":[{"name":"pseudosky","email":"skywinston.sk@gmail.com"}],"readme":"# @adhd/sox-analysis\n\nBatch-scale derivation over a corpus: clustering, near-duplicate detection, importance scoring, similarity auto-linking, and a set of pure graph algorithms (topological sort, critical path, cycle detection, bin-packing). The DB-integrated functions take a `VectorBackend` and `GraphBackend` directly — there is no `CorpusBackend` wrapper to construct — and the pure algorithm functions (`cluster`, `topoSort`, `criticalPath`, `detectCycles`, `packBatches`, `setOverlapMatrix`) work over plain in-memory data with no store at all.\n\nThis package's DB-integrated functions write into whatever `GraphBackend` you supply. When that backend is [`@adhd/sox-graph-store`](https://www.npmjs.com/package/@adhd/sox-graph-store) on its default Turso adapter, the graph-side writes a batch run makes — importance scores (`touch`), near-dup edges, auto-link edges — inherit [`@adhd/sox-store-adapter`](https://www.npmjs.com/package/@adhd/sox-store-adapter)'s `multiprocess-wal` model: many batch-enrichment runs can write into the same graph store concurrently from separate processes. The vector side is a separate concern — see \"Vector backend note\" below for the current constraint there.\n\n```bash\npnpm add @adhd/sox-analysis @adhd/sox-graph-store @adhd/sox-vector-store @adhd/sox-store-adapter\n```\n\n## Quick start\n\n```typescript\nimport { createSqliteAdapter } from '@adhd/sox-store-adapter';\nimport { createGraphBackend } from '@adhd/sox-graph-store';\nimport { SqliteVectorBackend } from '@adhd/sox-vector-store';\nimport { runBatchEnrich } from '@adhd/sox-analysis';\n\nconst SPACE = { modelId: 'my-model', dim: 4 };\n\n// SqliteVectorBackend requires a SqliteAdapter (see \"Vector backend note\").\nconst adapter = createSqliteAdapter({ dbPath: 'corpus.db' });\nconst graph = createGraphBackend(adapter);\nawait graph.applySchema();\nconst vec = new SqliteVectorBackend(adapter);\nvec.ensureSpace(SPACE);\n\nconst id1 = await graph.writeNode('The quick brown fox', { name: 'doc-1' });\nconst id2 = await graph.writeNode('A related but distinct fox', { name: 'doc-2' });\nvec.upsert(id1, new Float32Array([1, 0, 0, 0]), SPACE);\nvec.upsert(id2, new Float32Array([0.85, 0.527, 0, 0]), SPACE); // cosine ≈ 0.85\n\n// Runs importance scoring, near-dup detection, auto-linking, and clustering\n// in one pass over every node currently in the graph.\nconst result = await runBatchEnrich(vec, graph);\nconsole.log(result);\n// { nodesProcessed: 2, nearDupPairsFound: 0, autoLinksCreated: 1, communitiesUpdated: 1, durationMs: ... }\n// cosine 0.85 clears the auto-link threshold (0.80) and the cluster threshold (0.75),\n// but not the near-dup threshold (0.95) — the two are treated as related, not duplicates.\n\nawait adapter.close();\n```\n\n## API reference\n\n### DB-integrated functions (take a `VectorBackend` + `GraphBackend`)\n\n```typescript\nfunction clusterStore(vec: VectorBackend, graph: GraphBackend, opts?: ClusterOpts): Promise<ClusterResult>;\nfunction clusterSubset(vec: VectorBackend, graph: GraphBackend, filter: NodeFilter, opts?: ClusterOpts): Promise<SubsetClusterResult>;\nfunction detectNearDup(vec: VectorBackend, graph: GraphBackend, opts?: NearDupOpts): Promise<NearDupPair[]>;\nfunction computeImportance(vec: VectorBackend, graph: GraphBackend, opts?: ImportanceOpts): Promise<void>;\nfunction buildAutoLinks(vec: VectorBackend, graph: GraphBackend, opts?: AutoLinkOpts): Promise<void>;\nfunction runBatchEnrich(vec: VectorBackend, graph: GraphBackend, opts?: BatchOpts): Promise<BatchResult>;\n```\n\n### Pure functions (no backend required)\n\n```typescript\nfunction cluster(vecs: Array<{ id: number; vec: Float32Array }>, opts?: ClusterOpts): ClusterResult;\nfunction detectNearDupPairs(vecs: Array<{ id: number; vec: Float32Array }>, opts?: NearDupOpts): NearDupPair[];\nfunction scoreImportance(node: { inDegree: number; outDegree: number; recencyMs: number; nearDupCount: number }): number;\nfunction topoSort(nodeIds: number[], getEdges: (id: number) => number[]): TopoSortResult;\nfunction criticalPath(nodeIds: number[], getEdges: (id: number) => number[], getWeight: (id: number) => number): Map<number, number>;\nfunction detectCycles(nodeIds: number[], getEdges: (id: number) => number[]): Array<number[]>;\nfunction detectDAGStructure(nodeIds: number[], getEdges: (id: number) => number[]): DAGStructure;\nfunction packBatches(items: PackItem[], opts: PackOpts): PackResult;\nfunction setOverlapMatrix(items: Array<{ id: number; keys: string[] }>, valueFn?: (key: string) => number): OverlapEntry[];\n```\n\n### Option / result types\n\n```typescript\ninterface ClusterOpts { modelId?: string; minClusterSize?: number; threshold?: number }\ninterface ClusterResult {\n  communities: Array<{ id: number; memberIds: number[]; label?: string }>;\n  unclustered: number[];\n  durationMs: number;\n}\ninterface SubsetClusterResult extends ClusterResult { filter: NodeFilter; totalInSubset: number }\n\ninterface NearDupOpts { nearDupThreshold?: number; distinctThreshold?: number; modelId?: string; limit?: number }\ninterface NearDupPair { a: number; b: number; cosine: number; status: 'near_dup' | 'candidate' | 'distinct' }\n\ninterface ImportanceOpts { filter?: NodeFilter; dryRun?: boolean }\ninterface AutoLinkOpts { filter?: NodeFilter; similarityThreshold?: number; maxLinksPerNode?: number; rel?: EdgeRel; dryRun?: boolean }\ninterface BatchOpts { filter?: NodeFilter; skip?: Array<'importance' | 'nearDup' | 'autoLinks' | 'clustering'>; dryRun?: boolean }\ninterface BatchResult {\n  nodesProcessed: number; nearDupPairsFound: number; autoLinksCreated: number;\n  communitiesUpdated: number; durationMs: number;\n}\n\ninterface TopoSortResult { order: number[]; waves: Map<number, number>; cycle: number[] | null }\ntype DAGStructure = 'forest' | 'series-parallel' | 'general';\n\ninterface PackItem {\n  id: number; cost: number; resources: string[];\n  resourceCost: (key: string) => number; // cost of holding one resource, paid once per batch\n  deps: number[]; group?: string;\n}\ninterface PackOpts {\n  B: number;  // fixed base cost charged once per batch\n  W: number;  // max total cost per batch (capacity)\n  algorithm?: 'auto' | 'bitmask-dp' | 'tree-dp' | 'simulated-annealing' | 'hlfet';\n}\ninterface PackResult { batches: Array<{ items: number[]; cost: number }>; totalCost: number; algorithm: string }\n\ninterface OverlapEntry { a: number; b: number; intersection: string[]; bytes: number }\n```\n\n## Clustering\n\n`cluster()` (pure, in-process `density-clustering`) groups vectors by cosine similarity. `clusterStore()` reads every live vector for a model out of the store and clusters it; `clusterSubset()` restricts to a `NodeFilter`-selected subset and reports `totalInSubset`:\n\n```typescript\nimport { cluster } from '@adhd/sox-analysis';\n\nconst result = cluster(\n  [\n    { id: 1, vec: new Float32Array([1, 0, 0, 0]) },\n    { id: 2, vec: new Float32Array([0.99, 0.14, 0, 0]) }, // cos ≈ 0.99 with id 1\n    { id: 3, vec: new Float32Array([0, 1, 0, 0]) },        // orthogonal\n  ],\n  { threshold: 0.9, minClusterSize: 2 }, // defaults: threshold 0.75, minClusterSize 2\n);\n// result.communities: [{ id: 0, memberIds: [1, 2] }]\n// result.unclustered: [3]\n```\n\n```typescript\nimport { clusterStore } from '@adhd/sox-analysis';\n\nconst result = await clusterStore(vec, graph, { threshold: 0.5 });\n```\n\nSimilarity-based outputs record the `modelId` they were computed under (defaults to the vector store's first registered space) — re-cluster after a model migration rather than mixing embeddings from two models.\n\n## Near-duplicate detection\n\n`detectNearDupPairs()` (pure) classifies every pair by cosine similarity against two thresholds: `>= nearDupThreshold` (default `0.95`) is `'near_dup'`, `< distinctThreshold` (default `0.70`) is `'distinct'`, and everything between is `'candidate'`:\n\n```typescript\nimport { detectNearDupPairs } from '@adhd/sox-analysis';\n\nconst pairs = detectNearDupPairs([\n  { id: 1, vec: new Float32Array([1, 0, 0, 0]) },\n  { id: 2, vec: new Float32Array([0.999, 0.045, 0, 0]) },\n], { nearDupThreshold: 0.95 });\n// [{ a: 1, b: 2, cosine: 0.999, status: 'near_dup' }]\n```\n\n`detectNearDup()` runs this over a store's live vectors and additionally writes a `SAME_AS` edge (`weight` = cosine, `metadata: { cosine, status, modelId }`) for every `'near_dup'` and `'candidate'` pair it finds.\n\n## Importance scoring\n\n`scoreImportance()` (pure) combines graph centrality, recency, and a near-dup penalty into a `[1, 10]` score:\n\n```typescript\nimport { scoreImportance } from '@adhd/sox-analysis';\n\nconst score = scoreImportance({ inDegree: 5, outDegree: 2, recencyMs: 3_600_000, nearDupCount: 0 });\n```\n\n`computeImportance()` runs this over a `GraphBackend` and writes the result via `touch()`. **It is incremental only when no `filter` is given**: with no filter, a node whose `importance` is already set and positive is skipped; passing any `filter` forces every matching node to be rescored regardless of its current value.\n\n```typescript\nawait computeImportance(vec, graph);                  // skips already-scored nodes\nawait computeImportance(vec, graph, { dryRun: true }); // computes but doesn't write\n```\n\n## Auto-linking\n\n`buildAutoLinks()` computes every pairwise cosine similarity among the vectors for the (optionally filtered) node set, and writes an edge (default `RELATES_TO`, `weight` = cosine) for every pair at or above `similarityThreshold` (default `0.80`) — highest-similarity pairs first, capped at `maxLinksPerNode` per node (default `5`). Unlike `computeImportance`, this recomputes the full candidate set on every call; it is not incremental.\n\n```typescript\nawait buildAutoLinks(vec, graph, { similarityThreshold: 0.8, maxLinksPerNode: 3 });\nconst edges = await graph.getEdges({ rel: 'RELATES_TO' });\n```\n\n## Batch enrichment\n\n`runBatchEnrich()` runs importance → near-dup → auto-links → clustering in sequence over the (optionally filtered) node set, skipping any step named in `skip`:\n\n```typescript\nimport { runBatchEnrich } from '@adhd/sox-analysis';\n\nconst result = await runBatchEnrich(vec, graph, {\n  skip: ['clustering'],\n  filter: { namespace: 'tenant-a' },\n});\n```\n\n## Graph algorithms (pure — bring your own adjacency function)\n\n`topoSort`, `criticalPath`, `detectCycles`, and `detectDAGStructure` all take a caller-supplied `getEdges(id) => number[]` returning the ids `id` **depends on** — they work over any graph representation, not just `@adhd/sox-graph-store`:\n\n```typescript\nimport { topoSort, criticalPath, detectCycles, detectDAGStructure } from '@adhd/sox-analysis';\n\n// 1 depends on 2 and 3; 2 depends on 3\nconst deps: Record<number, number[]> = { 1: [2, 3], 2: [3], 3: [] };\nconst getEdges = (id: number) => deps[id] ?? [];\n\nconst { order, waves, cycle } = topoSort([1, 2, 3], getEdges);\n// order: dependency-first, e.g. [3, 2, 1]; waves.get(3) === 0, waves.get(1) === 2; cycle === null\n\nconst weights: Record<number, number> = { 1: 1, 2: 2, 3: 3 };\nconst longest = criticalPath([1, 2, 3], getEdges, (id) => weights[id] ?? 0);\n// longest.get(1) === 6  (1 + max(path through 2, path through 3))\n\nconst cycles = detectCycles([1, 2, 3], getEdges); // [] — acyclic\nconst structure = detectDAGStructure([1, 2, 3], getEdges); // 'forest' | 'series-parallel' | 'general'\n```\n\n`detectCycles` reports every cycle (not just the first), which is what makes it usable for a user-facing error message rather than just a boolean check.\n\n## Bin-packing (`packBatches`)\n\nPacks `PackItem`s into batches under a per-batch cost cap `W`, respecting `deps` (a dependency must land in an earlier batch) and `group` (items in different groups never share a batch). Per-batch cost is `B + Σ(distinct resourceCost) + Σ(item.cost)` — a shared `resources` key is paid **once per batch**, not once per item, so grouping items that share an expensive resource together is cheaper:\n\n```typescript\nimport { packBatches } from '@adhd/sox-analysis';\n\nconst items = [\n  { id: 1, cost: 1, resources: ['expensive'], resourceCost: (k: string) => (k === 'expensive' ? 10 : 1), deps: [] },\n  { id: 2, cost: 1, resources: ['expensive'], resourceCost: (k: string) => (k === 'expensive' ? 10 : 1), deps: [] },\n];\nconst result = packBatches(items, { B: 1, W: 30, algorithm: 'hlfet' });\n```\n\n`algorithm: 'auto'` (the default) picks `bitmask-dp` / `tree-dp` / `simulated-annealing` / `hlfet` based on item count and DAG shape (via `detectDAGStructure`) — pass an explicit algorithm to override.\n\n## Pairwise set overlap\n\n`setOverlapMatrix()` computes every pairwise key intersection (e.g. shared resources, shared tags) and, optionally, a weighted \"bytes\" cost per shared key:\n\n```typescript\nimport { setOverlapMatrix } from '@adhd/sox-analysis';\n\nconst entries = setOverlapMatrix([\n  { id: 1, keys: ['a', 'b', 'c'] },\n  { id: 2, keys: ['b', 'c', 'd'] },\n  { id: 3, keys: ['e', 'f'] },\n]);\n// entries finds {a:1,b:2}: intersection ['b','c'], bytes 2 (default valueFn counts keys)\n// entries finds {a:1,b:3}: intersection [], bytes 0\n```\n\n## Vector backend note\n\nThe DB-integrated functions accept any `VectorBackend`, but the concrete implementation in [`@adhd/sox-vector-store`](https://www.npmjs.com/package/@adhd/sox-vector-store) most commonly paired with this package — `SqliteVectorBackend` — requires a `SqliteAdapter` specifically, because `sqlite-vec`/`vec0` is a synchronous, SQLite-only mechanism; it throws if handed a Turso-backed adapter. So while the `GraphBackend` side of a batch run can be Turso-backed and safely written to from multiple concurrent processes, the vector similarity computations in that same run are only as concurrent as whatever `VectorBackend` you supply — check the backend you choose for its own concurrency contract.\n\n## Invariants\n\n- Operates over a corpus (batch), never per-query — analysis functions are not on the hot query path.\n- Clustering uses an existing JS library (`density-clustering`, in-process) — not a hand-rolled DBSCAN/HDBSCAN.\n- All DB-integrated functions take `(VectorBackend, GraphBackend)` directly — no `CorpusBackend` wrapper.\n- Similarity-based outputs (clusters, near-dup pairs, link scores) record the `modelId` they were computed under — re-cluster after a model migration.\n- `computeImportance` is incremental (skips already-scored nodes) only when called with no `filter`; `buildAutoLinks` recomputes its full candidate set on every call.\n- `topoSort` / `criticalPath` / `detectCycles` / `detectDAGStructure` accept a caller-supplied adjacency function — they work over any graph representation, not just `@adhd/sox-graph-store`.\n- `packBatches`'s shared-resource cost is submodular (union cost) — a resource shared by items in the same batch is paid once, not per item.\n\n## Requires\n\nNode >=22. DB-integrated functions expect a [`@adhd/sox-graph-store`](https://www.npmjs.com/package/@adhd/sox-graph-store) `GraphBackend` and an `@adhd/sox-vector-store` `VectorBackend`.\n","readmeFilename":"README.md"}