dpth 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -148
- package/dist/adapter-sqlite.d.ts +17 -2
- package/dist/adapter-sqlite.d.ts.map +1 -1
- package/dist/adapter-sqlite.js +127 -16
- package/dist/adapter-sqlite.js.map +1 -1
- package/dist/dpth.d.ts +35 -2
- package/dist/dpth.d.ts.map +1 -1
- package/dist/dpth.js +157 -49
- package/dist/dpth.js.map +1 -1
- package/dist/entity.d.ts +1 -0
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +21 -5
- package/dist/entity.js.map +1 -1
- package/dist/errors.d.ts +43 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +63 -0
- package/dist/errors.js.map +1 -0
- package/dist/experimental/agent-sdk.d.ts +157 -0
- package/dist/experimental/agent-sdk.d.ts.map +1 -0
- package/dist/experimental/agent-sdk.js +367 -0
- package/dist/experimental/agent-sdk.js.map +1 -0
- package/dist/experimental/economics.d.ts +203 -0
- package/dist/experimental/economics.d.ts.map +1 -0
- package/dist/experimental/economics.js +510 -0
- package/dist/experimental/economics.js.map +1 -0
- package/dist/experimental/fallback.d.ts +104 -0
- package/dist/experimental/fallback.d.ts.map +1 -0
- package/dist/experimental/fallback.js +359 -0
- package/dist/experimental/fallback.js.map +1 -0
- package/dist/experimental/federation.d.ts +224 -0
- package/dist/experimental/federation.d.ts.map +1 -0
- package/dist/experimental/federation.js +377 -0
- package/dist/experimental/federation.js.map +1 -0
- package/dist/experimental/index.d.ts +20 -0
- package/dist/experimental/index.d.ts.map +1 -0
- package/dist/experimental/index.js +20 -0
- package/dist/experimental/index.js.map +1 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -14
- package/dist/index.js.map +1 -1
- package/dist/storage.d.ts +10 -11
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -11
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +11 -1
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +20 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +28 -0
- package/dist/util.js.map +1 -0
- package/package.json +13 -25
package/README.md
CHANGED
|
@@ -1,198 +1,151 @@
|
|
|
1
1
|
# dpth.io
|
|
2
2
|
|
|
3
3
|
[](https://github.com/rightclickable420/dpth/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/dpth)
|
|
4
5
|
[](https://opensource.org/licenses/MIT)
|
|
5
6
|
|
|
6
|
-
**
|
|
7
|
+
**Your data is scattered. dpth connects it.**
|
|
7
8
|
|
|
8
|
-
dpth
|
|
9
|
+
dpth is a TypeScript library that resolves entities across APIs, detects cross-source patterns, and gives every data point a history. One `npm install`, zero dependencies, works anywhere Node runs.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## Architecture
|
|
11
|
+
## Install
|
|
13
12
|
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
│ Applications │
|
|
17
|
-
│ (Fathom, your app, any client) │
|
|
18
|
-
├─────────────────────────────────────────────────┤
|
|
19
|
-
│ dpth.io │
|
|
20
|
-
│ ┌───────────┐ ┌──────────┐ ┌────────────────┐ │
|
|
21
|
-
│ │ Intelligence│ │ Inference │ │ Agent Network │ │
|
|
22
|
-
│ │ Layer │ │ Routing │ │ (Contribute) │ │
|
|
23
|
-
│ └───────────┘ └──────────┘ └────────────────┘ │
|
|
24
|
-
│ ┌───────────┐ ┌──────────┐ ┌────────────────┐ │
|
|
25
|
-
│ │ Entity │ │ Model │ │ Reputation │ │
|
|
26
|
-
│ │Resolution │ │ Registry │ │ & Rewards │ │
|
|
27
|
-
│ └───────────┘ └──────────┘ └────────────────┘ │
|
|
28
|
-
├─────────────────────────────────────────────────┤
|
|
29
|
-
│ Agent Network (P2P) │
|
|
30
|
-
│ Storage │ Compute │ GPU │ Verification │
|
|
31
|
-
└─────────────────────────────────────────────────┘
|
|
13
|
+
```bash
|
|
14
|
+
npm install dpth
|
|
32
15
|
```
|
|
33
16
|
|
|
34
|
-
##
|
|
17
|
+
## Quick Start
|
|
35
18
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- **Correlation Engine** — Cross-source pattern detection and causality discovery
|
|
39
|
-
- **Temporal Data** — Time-native storage where every value has history
|
|
40
|
-
- **Semantic Search** — Embedding-based similarity across all data
|
|
19
|
+
```typescript
|
|
20
|
+
import { dpth } from 'dpth/dpth';
|
|
41
21
|
|
|
42
|
-
|
|
43
|
-
- **Registration** — Agents join with cryptographic identity
|
|
44
|
-
- **Contributions** — Storage, compute, and GPU resource sharing
|
|
45
|
-
- **Reputation** — 5-tier system (newcomer → legendary) with earned privileges
|
|
46
|
-
- **Rewards** — Intelligence access, priority, storage, and features based on contribution
|
|
47
|
-
- **Storage Proofs** — Challenge-response verification that agents store what they claim
|
|
22
|
+
const db = dpth();
|
|
48
23
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
24
|
+
// Entity resolution — same person in Stripe and GitHub? Merged automatically.
|
|
25
|
+
await db.entity.resolve('person', 'John Smith', 'stripe', 'cus_123', {
|
|
26
|
+
email: 'john@company.com'
|
|
27
|
+
});
|
|
28
|
+
await db.entity.resolve('person', 'jsmith', 'github', 'jsmith-gh', {
|
|
29
|
+
email: 'john@company.com'
|
|
30
|
+
});
|
|
31
|
+
// ^ auto-merged — same entity, two sources
|
|
32
|
+
|
|
33
|
+
// Temporal history — every value has a timeline
|
|
34
|
+
await db.temporal.snapshot('dashboard', { revenue: 50000, users: 200 });
|
|
35
|
+
await db.temporal.snapshot('dashboard', { revenue: 55000, users: 220 });
|
|
36
|
+
const history = await db.temporal.history('dashboard');
|
|
37
|
+
const diff = db.temporal.diff(history[0], history[1]);
|
|
38
|
+
// { changed: [{ key: 'revenue', from: 50000, to: 55000 }, ...] }
|
|
39
|
+
|
|
40
|
+
// Correlation — finds patterns you'd never think to look for
|
|
41
|
+
await db.correlation.track('mrr', 50000);
|
|
42
|
+
await db.correlation.track('deploys', 12);
|
|
43
|
+
const patterns = await db.correlation.find('mrr');
|
|
44
|
+
// "deploys correlates with mrr (r=0.87, 3-day lag)"
|
|
45
|
+
```
|
|
55
46
|
|
|
56
|
-
##
|
|
47
|
+
## Add Persistence
|
|
57
48
|
|
|
58
|
-
```
|
|
59
|
-
|
|
49
|
+
```typescript
|
|
50
|
+
// In-memory by default (great for testing, serverless, scripts)
|
|
51
|
+
const db = dpth();
|
|
52
|
+
|
|
53
|
+
// Add SQLite for persistence — survives restarts
|
|
54
|
+
// npm install better-sqlite3
|
|
55
|
+
import { SQLiteAdapter } from 'dpth/adapter-sqlite';
|
|
56
|
+
import { configure } from 'dpth/storage';
|
|
57
|
+
configure({ adapter: new SQLiteAdapter('./myapp.db') });
|
|
58
|
+
|
|
59
|
+
// Add vector search — semantic similarity on top
|
|
60
|
+
import { VectorOverlay } from 'dpth/adapter-vector';
|
|
61
|
+
configure({ adapter: new VectorOverlay(new SQLiteAdapter('./myapp.db')) });
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
## What You Get
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
### Entity Resolution
|
|
67
|
+
`john@company.com` in Stripe and `jsmith` on GitHub are the same person. dpth figures that out automatically — fuzzy name matching, email matching, alias tracking, confidence scoring.
|
|
65
68
|
|
|
66
|
-
###
|
|
69
|
+
### Temporal History
|
|
70
|
+
Every value you store has a full timeline. Not just "revenue is $50K" but "$30K → $42K → $50K over 3 months" with automatic change detection and diffing.
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const response = await fetch('/api/dpth/inference', {
|
|
71
|
-
method: 'POST',
|
|
72
|
-
headers: { 'Content-Type': 'application/json' },
|
|
73
|
-
body: JSON.stringify({
|
|
74
|
-
modelId: 'llama-3.3-70b',
|
|
75
|
-
input: {
|
|
76
|
-
messages: [{ role: 'user', content: 'Hello!' }]
|
|
77
|
-
},
|
|
78
|
-
params: { maxTokens: 1000, temperature: 0.7 }
|
|
79
|
-
})
|
|
80
|
-
});
|
|
72
|
+
### Cross-Source Correlation
|
|
73
|
+
Revenue went up 20% the same month commits doubled? Your biggest customer just opened 3 support tickets? dpth finds these connections across any data sources you feed it. Pearson correlation, lag detection, anomaly alerts.
|
|
81
74
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
// Same API either way
|
|
85
|
-
```
|
|
75
|
+
### Content-Addressed Storage
|
|
76
|
+
SHA-256 hashed chunks. Immutable, deduplicated, cache forever. Like git for your data.
|
|
86
77
|
|
|
87
|
-
###
|
|
78
|
+
### Vector Search
|
|
79
|
+
Semantic similarity built in. Works with any embedding model — store vectors, search by similarity, power smarter entity matching.
|
|
88
80
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// Temporal snapshots with diffing
|
|
105
|
-
takeSnapshot('dashboard-1', { revenue: 50000, users: 200 });
|
|
106
|
-
// ...later...
|
|
107
|
-
takeSnapshot('dashboard-1', { revenue: 62000, users: 245 });
|
|
108
|
-
const diff = diffSnapshots(snapshots[0], snapshots[1]); // → changed: ['revenue', 'users']
|
|
81
|
+
### Pluggable Storage
|
|
82
|
+
Memory adapter (default, zero config) → SQLite adapter (persistence) → Vector overlay (semantic search). Or write your own — implement `StorageAdapter` for any backend.
|
|
83
|
+
|
|
84
|
+
## Architecture
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
┌──────────────────────────────────────────────┐
|
|
88
|
+
│ Your Application │
|
|
89
|
+
├──────────────────────────────────────────────┤
|
|
90
|
+
│ dpth() │
|
|
91
|
+
│ entity temporal correlation vector │
|
|
92
|
+
├──────────────────────────────────────────────┤
|
|
93
|
+
│ Storage Adapter │
|
|
94
|
+
│ Memory │ SQLite │ Vector │ Custom │
|
|
95
|
+
└──────────────────────────────────────────────┘
|
|
109
96
|
```
|
|
110
97
|
|
|
111
|
-
|
|
98
|
+
## Module Exports
|
|
99
|
+
|
|
100
|
+
| Import | What it does |
|
|
101
|
+
|--------|-------------|
|
|
102
|
+
| `dpth/dpth` | Unified API — `dpth()` factory, entity/temporal/correlation/vector |
|
|
103
|
+
| `dpth/entity` | Standalone entity resolution |
|
|
104
|
+
| `dpth/correlation` | Standalone correlation engine |
|
|
105
|
+
| `dpth/temporal` | Standalone temporal storage |
|
|
106
|
+
| `dpth/embed` | Embedding and similarity search |
|
|
107
|
+
| `dpth/storage` | Adapter interface, `MemoryAdapter`, `configure()` |
|
|
108
|
+
| `dpth/adapter-sqlite` | SQLite persistence adapter |
|
|
109
|
+
| `dpth/adapter-vector` | Vector search adapter + overlay |
|
|
110
|
+
| `dpth/agent-sdk` | Agent network participation |
|
|
111
|
+
| `dpth/economics` | Credit earn/spend/transfer system |
|
|
112
|
+
| `dpth/federation` | Federated learning coordination |
|
|
113
|
+
| `dpth/fallback` | Centralized inference fallback |
|
|
114
|
+
|
|
115
|
+
## Agent Network (Advanced)
|
|
116
|
+
|
|
117
|
+
dpth also includes a protocol for distributed intelligence — agents contribute storage, compute, and GPU power, earn credits, and access shared inference. [See PROTOCOL.md](PROTOCOL.md) for the full spec.
|
|
112
118
|
|
|
113
119
|
```typescript
|
|
114
120
|
import { DpthAgent } from 'dpth/agent-sdk';
|
|
115
121
|
|
|
116
122
|
const agent = new DpthAgent({
|
|
117
123
|
name: 'my-agent',
|
|
118
|
-
apiUrl: 'https://your-
|
|
124
|
+
apiUrl: 'https://your-instance/api/dpth',
|
|
119
125
|
capabilities: {
|
|
120
126
|
storageCapacityMb: 10000,
|
|
121
127
|
cpuCores: 8,
|
|
122
128
|
hasGpu: true,
|
|
123
129
|
gpuVramMb: 24576,
|
|
124
|
-
taskTypes: ['embed', 'inference', '
|
|
130
|
+
taskTypes: ['embed', 'inference', 'train']
|
|
125
131
|
}
|
|
126
132
|
});
|
|
127
133
|
|
|
128
|
-
// Register and start working
|
|
129
134
|
await agent.register();
|
|
130
135
|
await agent.startWorking();
|
|
131
136
|
```
|
|
132
137
|
|
|
133
|
-
|
|
138
|
+
## Stats
|
|
134
139
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
eventSource.addEventListener('token', (e) => {
|
|
140
|
-
const { text } = JSON.parse(e.data);
|
|
141
|
-
process.stdout.write(text); // Real-time tokens
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
eventSource.addEventListener('done', (e) => {
|
|
145
|
-
const { stats } = JSON.parse(e.data);
|
|
146
|
-
console.log(`\n${stats.tokensPerSecond} tok/s`);
|
|
147
|
-
});
|
|
148
|
-
```
|
|
140
|
+
- **15 modules** — entity, correlation, temporal, embed, storage, adapters, agent-sdk, economics, federation, fallback
|
|
141
|
+
- **171 tests** — smoke, integration, API routes, adapters, unified API
|
|
142
|
+
- **79KB** packed — zero production dependencies
|
|
143
|
+
- **5 phases complete** — core → agents → inference → federation → economics
|
|
149
144
|
|
|
150
|
-
##
|
|
145
|
+
## Contributing
|
|
151
146
|
|
|
152
|
-
|
|
153
|
-
|----------|-------------|
|
|
154
|
-
| `POST /api/dpth/agents` | Register an agent |
|
|
155
|
-
| `GET /api/dpth/agents` | List online agents |
|
|
156
|
-
| `POST /api/dpth/tasks` | Submit/claim/complete tasks |
|
|
157
|
-
| `POST /api/dpth/storage` | Store content-addressed data |
|
|
158
|
-
| `GET /api/dpth/storage?cid=xxx` | Retrieve by CID |
|
|
159
|
-
| `POST /api/dpth/contribute?type=storage\|compute\|gpu` | Record contributions |
|
|
160
|
-
| `GET /api/dpth/reputation?agentId=xxx` | Get reputation & tier |
|
|
161
|
-
| `GET /api/dpth/rewards?agentId=xxx` | Available rewards |
|
|
162
|
-
| `POST /api/dpth/models` | Register a model |
|
|
163
|
-
| `GET /api/dpth/models` | List available models |
|
|
164
|
-
| `POST /api/dpth/inference` | Create inference request |
|
|
165
|
-
| `GET /api/dpth/inference/stream?id=xxx` | SSE token stream |
|
|
166
|
-
| `POST /api/dpth/proofs?action=challenge` | Storage verification |
|
|
167
|
-
| `GET /api/dpth/status` | Network dashboard data |
|
|
168
|
-
|
|
169
|
-
## Protocol
|
|
170
|
-
|
|
171
|
-
See [PROTOCOL.md](src/lib/dpth/PROTOCOL.md) for the full protocol specification.
|
|
172
|
-
|
|
173
|
-
## Economics
|
|
174
|
-
|
|
175
|
-
dpth.io uses a contribution-based reward system:
|
|
176
|
-
|
|
177
|
-
1. **Agents contribute** — storage, compute, GPU inference
|
|
178
|
-
2. **Agents earn reputation** — 5 tiers with increasing privileges
|
|
179
|
-
3. **Agents claim rewards** — intelligence queries, storage, priority, features
|
|
180
|
-
4. **Network grows** — more agents = more capacity = better for everyone
|
|
181
|
-
|
|
182
|
-
The architecture is designed to be tokenizable in the future without rebuilding — contribution scores map naturally to emission schedules. But for now, it's credits, not crypto.
|
|
183
|
-
|
|
184
|
-
## Roadmap
|
|
185
|
-
|
|
186
|
-
- [x] **Phase 1:** Core Infrastructure (entity, correlation, temporal, storage)
|
|
187
|
-
- [x] **Phase 2:** Agent Network (contribution, reputation, rewards, GPU, proofs)
|
|
188
|
-
- [x] **Phase 3:** Distributed Inference (model registry, routing, streaming, fallback)
|
|
189
|
-
- [ ] **Phase 4:** Network Models (federated fine-tuning, weight distribution)
|
|
190
|
-
- [ ] **Phase 5:** Economics (credit system, tokenization readiness)
|
|
147
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
|
|
191
148
|
|
|
192
149
|
## License
|
|
193
150
|
|
|
194
151
|
MIT — see [LICENSE](LICENSE)
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
*Built by humans and agents, working together.*
|
package/dist/adapter-sqlite.d.ts
CHANGED
|
@@ -36,14 +36,29 @@ export declare class SQLiteAdapter implements StorageAdapter {
|
|
|
36
36
|
delete(collection: string, key: string): Promise<boolean>;
|
|
37
37
|
has(collection: string, key: string): Promise<boolean>;
|
|
38
38
|
query(filter: QueryFilter): Promise<unknown[]>;
|
|
39
|
+
/** Fallback query using JS filtering (for SQLite versions without json_extract) */
|
|
40
|
+
private queryFallback;
|
|
41
|
+
/** Escape a field name for use in json_extract path */
|
|
42
|
+
private escapeJsonPath;
|
|
39
43
|
keys(collection: string): Promise<string[]>;
|
|
40
44
|
count(collection: string): Promise<number>;
|
|
41
45
|
clear(collection?: string): Promise<void>;
|
|
42
46
|
close(): Promise<void>;
|
|
43
47
|
/**
|
|
44
|
-
* Run a batch of operations in a transaction
|
|
48
|
+
* Run a synchronous batch of operations in a transaction.
|
|
49
|
+
* NOTE: better-sqlite3 transactions are synchronous. The callback
|
|
50
|
+
* MUST be synchronous — async work will execute outside the transaction.
|
|
45
51
|
*/
|
|
46
|
-
|
|
52
|
+
transactionSync<T>(fn: () => T): T;
|
|
53
|
+
/**
|
|
54
|
+
* Bulk put — writes multiple key-value pairs in a single transaction.
|
|
55
|
+
* Much faster than individual put() calls for large imports.
|
|
56
|
+
*/
|
|
57
|
+
putBatch(operations: Array<{
|
|
58
|
+
collection: string;
|
|
59
|
+
key: string;
|
|
60
|
+
value: unknown;
|
|
61
|
+
}>): Promise<void>;
|
|
47
62
|
/**
|
|
48
63
|
* Get database stats (SQLite-specific)
|
|
49
64
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-sqlite.d.ts","sourceRoot":"","sources":["../src/adapter-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsBhE,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAiC;gBAEjC,UAAU,EAAE,MAAM,GAAG,oBAAoB;YASvC,IAAI;
|
|
1
|
+
{"version":3,"file":"adapter-sqlite.d.ts","sourceRoot":"","sources":["../src/adapter-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsBhE,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAiC;gBAEjC,UAAU,EAAE,MAAM,GAAG,oBAAoB;YASvC,IAAI;YAqCJ,WAAW;IAIzB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAgBb,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAOlE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtD,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA0FpD,mFAAmF;IACnF,OAAO,CAAC,aAAa;IA+CrB,uDAAuD;IACvD,OAAO,CAAC,cAAc;IAKhB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3C,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1C,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAKlC;;;OAGG;IACG,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrG;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAsB1G"}
|
package/dist/adapter-sqlite.js
CHANGED
|
@@ -61,6 +61,19 @@ export class SQLiteAdapter {
|
|
|
61
61
|
CREATE INDEX IF NOT EXISTS idx_dpth_collection ON dpth_store(collection);
|
|
62
62
|
CREATE INDEX IF NOT EXISTS idx_dpth_updated ON dpth_store(collection, updated_at);
|
|
63
63
|
`);
|
|
64
|
+
// Computed indexes on common JSON fields for fast entity queries
|
|
65
|
+
// json_extract requires SQLite 3.38+ (available since 2022)
|
|
66
|
+
try {
|
|
67
|
+
this.db.exec(`
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_dpth_type
|
|
69
|
+
ON dpth_store(collection, json_extract(value, '$.type'));
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_dpth_email
|
|
71
|
+
ON dpth_store(collection, json_extract(value, '$.attributes.email.current'));
|
|
72
|
+
`);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Older SQLite without json_extract — fall back to JS filtering
|
|
76
|
+
}
|
|
64
77
|
}
|
|
65
78
|
async ensureReady() {
|
|
66
79
|
await this.ready;
|
|
@@ -124,26 +137,102 @@ export class SQLiteAdapter {
|
|
|
124
137
|
}
|
|
125
138
|
async query(filter) {
|
|
126
139
|
await this.ensureReady();
|
|
127
|
-
//
|
|
128
|
-
|
|
140
|
+
// Build SQL query using json_extract for filtering
|
|
141
|
+
const params = [filter.collection];
|
|
142
|
+
const clauses = ['collection = ?'];
|
|
143
|
+
// Push where filters to SQL via json_extract
|
|
144
|
+
if (filter.where) {
|
|
145
|
+
for (const [field, value] of Object.entries(filter.where)) {
|
|
146
|
+
clauses.push(`json_extract(value, '$.${this.escapeJsonPath(field)}') = ?`);
|
|
147
|
+
params.push(value);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Push comparison filters to SQL via json_extract
|
|
151
|
+
if (filter.compare) {
|
|
152
|
+
for (const cmp of filter.compare) {
|
|
153
|
+
const jsonPath = `json_extract(value, '$.${this.escapeJsonPath(cmp.field)}')`;
|
|
154
|
+
switch (cmp.op) {
|
|
155
|
+
case 'gt':
|
|
156
|
+
clauses.push(`${jsonPath} > ?`);
|
|
157
|
+
params.push(cmp.value);
|
|
158
|
+
break;
|
|
159
|
+
case 'gte':
|
|
160
|
+
clauses.push(`${jsonPath} >= ?`);
|
|
161
|
+
params.push(cmp.value);
|
|
162
|
+
break;
|
|
163
|
+
case 'lt':
|
|
164
|
+
clauses.push(`${jsonPath} < ?`);
|
|
165
|
+
params.push(cmp.value);
|
|
166
|
+
break;
|
|
167
|
+
case 'lte':
|
|
168
|
+
clauses.push(`${jsonPath} <= ?`);
|
|
169
|
+
params.push(cmp.value);
|
|
170
|
+
break;
|
|
171
|
+
case 'ne':
|
|
172
|
+
clauses.push(`${jsonPath} != ?`);
|
|
173
|
+
params.push(cmp.value);
|
|
174
|
+
break;
|
|
175
|
+
case 'in': {
|
|
176
|
+
const arr = cmp.value;
|
|
177
|
+
if (arr.length > 0) {
|
|
178
|
+
clauses.push(`${jsonPath} IN (${arr.map(() => '?').join(', ')})`);
|
|
179
|
+
params.push(...arr);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
clauses.push('0'); // empty IN → no results
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case 'contains':
|
|
187
|
+
clauses.push(`${jsonPath} LIKE ?`);
|
|
188
|
+
params.push(`%${cmp.value}%`);
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Build ORDER BY
|
|
194
|
+
let orderSql = '';
|
|
195
|
+
if (filter.orderBy) {
|
|
196
|
+
const dir = filter.orderBy.direction === 'desc' ? 'DESC' : 'ASC';
|
|
197
|
+
orderSql = ` ORDER BY json_extract(value, '$.${this.escapeJsonPath(filter.orderBy.field)}') ${dir}`;
|
|
198
|
+
}
|
|
199
|
+
// Build LIMIT/OFFSET
|
|
200
|
+
let limitSql = '';
|
|
201
|
+
if (filter.limit) {
|
|
202
|
+
limitSql += ` LIMIT ?`;
|
|
203
|
+
params.push(filter.limit);
|
|
204
|
+
}
|
|
205
|
+
if (filter.offset) {
|
|
206
|
+
if (!filter.limit) {
|
|
207
|
+
limitSql += ` LIMIT -1`; // SQLite requires LIMIT before OFFSET
|
|
208
|
+
}
|
|
209
|
+
limitSql += ` OFFSET ?`;
|
|
210
|
+
params.push(filter.offset);
|
|
211
|
+
}
|
|
212
|
+
const sql = `SELECT value FROM dpth_store WHERE ${clauses.join(' AND ')}${orderSql}${limitSql}`;
|
|
213
|
+
try {
|
|
214
|
+
const rows = this.db.prepare(sql).all(...params);
|
|
215
|
+
return rows.map(r => this.deserialize(r.value));
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// Fallback: if json_extract not available (SQLite < 3.38), use JS filtering
|
|
219
|
+
return this.queryFallback(filter);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** Fallback query using JS filtering (for SQLite versions without json_extract) */
|
|
223
|
+
queryFallback(filter) {
|
|
129
224
|
const rows = this.stmt('SELECT value FROM dpth_store WHERE collection = ?')
|
|
130
225
|
.all(filter.collection);
|
|
131
226
|
let results = rows.map(r => this.deserialize(r.value));
|
|
132
|
-
// Apply where filters
|
|
133
227
|
if (filter.where) {
|
|
134
228
|
for (const [field, value] of Object.entries(filter.where)) {
|
|
135
|
-
results = results.filter(item =>
|
|
136
|
-
const obj = item;
|
|
137
|
-
return obj[field] === value;
|
|
138
|
-
});
|
|
229
|
+
results = results.filter(item => item[field] === value);
|
|
139
230
|
}
|
|
140
231
|
}
|
|
141
|
-
// Apply comparison filters
|
|
142
232
|
if (filter.compare) {
|
|
143
233
|
for (const cmp of filter.compare) {
|
|
144
234
|
results = results.filter(item => {
|
|
145
|
-
const
|
|
146
|
-
const fieldVal = obj[cmp.field];
|
|
235
|
+
const fieldVal = item[cmp.field];
|
|
147
236
|
switch (cmp.op) {
|
|
148
237
|
case 'gt': return fieldVal > cmp.value;
|
|
149
238
|
case 'gte': return fieldVal >= cmp.value;
|
|
@@ -157,7 +246,6 @@ export class SQLiteAdapter {
|
|
|
157
246
|
});
|
|
158
247
|
}
|
|
159
248
|
}
|
|
160
|
-
// Apply ordering
|
|
161
249
|
if (filter.orderBy) {
|
|
162
250
|
const { field, direction } = filter.orderBy;
|
|
163
251
|
results.sort((a, b) => {
|
|
@@ -169,13 +257,17 @@ export class SQLiteAdapter {
|
|
|
169
257
|
return direction === 'asc' ? cmp : -cmp;
|
|
170
258
|
});
|
|
171
259
|
}
|
|
172
|
-
// Apply pagination
|
|
173
260
|
if (filter.offset)
|
|
174
261
|
results = results.slice(filter.offset);
|
|
175
262
|
if (filter.limit)
|
|
176
263
|
results = results.slice(0, filter.limit);
|
|
177
264
|
return results;
|
|
178
265
|
}
|
|
266
|
+
/** Escape a field name for use in json_extract path */
|
|
267
|
+
escapeJsonPath(field) {
|
|
268
|
+
// Prevent SQL injection in JSON path: only allow alphanumeric, dots, underscores
|
|
269
|
+
return field.replace(/[^a-zA-Z0-9._]/g, '');
|
|
270
|
+
}
|
|
179
271
|
async keys(collection) {
|
|
180
272
|
await this.ensureReady();
|
|
181
273
|
const rows = this.stmt('SELECT key FROM dpth_store WHERE collection = ?')
|
|
@@ -203,13 +295,32 @@ export class SQLiteAdapter {
|
|
|
203
295
|
this.db.close();
|
|
204
296
|
}
|
|
205
297
|
/**
|
|
206
|
-
* Run a batch of operations in a transaction
|
|
298
|
+
* Run a synchronous batch of operations in a transaction.
|
|
299
|
+
* NOTE: better-sqlite3 transactions are synchronous. The callback
|
|
300
|
+
* MUST be synchronous — async work will execute outside the transaction.
|
|
207
301
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const tx = this.db.transaction(() => fn());
|
|
302
|
+
transactionSync(fn) {
|
|
303
|
+
const tx = this.db.transaction(fn);
|
|
211
304
|
return tx();
|
|
212
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Bulk put — writes multiple key-value pairs in a single transaction.
|
|
308
|
+
* Much faster than individual put() calls for large imports.
|
|
309
|
+
*/
|
|
310
|
+
async putBatch(operations) {
|
|
311
|
+
await this.ensureReady();
|
|
312
|
+
const insert = this.stmt(`
|
|
313
|
+
INSERT INTO dpth_store (collection, key, value, updated_at)
|
|
314
|
+
VALUES (?, ?, ?, unixepoch())
|
|
315
|
+
ON CONFLICT(collection, key)
|
|
316
|
+
DO UPDATE SET value = excluded.value, updated_at = unixepoch()
|
|
317
|
+
`);
|
|
318
|
+
this.transactionSync(() => {
|
|
319
|
+
for (const op of operations) {
|
|
320
|
+
insert.run(op.collection, op.key, this.serialize(op.value));
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
}
|
|
213
324
|
/**
|
|
214
325
|
* Get database stats (SQLite-specific)
|
|
215
326
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-sqlite.js","sourceRoot":"","sources":["../src/adapter-sqlite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter-sqlite.js","sourceRoot":"","sources":["../src/adapter-sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/dpth.d.ts
CHANGED
|
@@ -33,6 +33,25 @@ export interface DpthOptions {
|
|
|
33
33
|
/** Path to SQLite database (convenience — creates SQLiteAdapter) */
|
|
34
34
|
path?: string;
|
|
35
35
|
}
|
|
36
|
+
/** Object-style options for entity.resolve() */
|
|
37
|
+
export interface ResolveOptions {
|
|
38
|
+
/** Entity type (e.g. 'person', 'company', or any custom string) */
|
|
39
|
+
type: EntityType;
|
|
40
|
+
/** Display name */
|
|
41
|
+
name: string;
|
|
42
|
+
/** Source system identifier (e.g. 'stripe', 'github') */
|
|
43
|
+
source: SourceId;
|
|
44
|
+
/** External ID in the source system (e.g. 'cus_123') */
|
|
45
|
+
externalId: string;
|
|
46
|
+
/** Email for matching (strong signal) */
|
|
47
|
+
email?: string;
|
|
48
|
+
/** Alternative names / aliases */
|
|
49
|
+
aliases?: string[];
|
|
50
|
+
/** Additional attributes to store */
|
|
51
|
+
attributes?: Record<string, unknown>;
|
|
52
|
+
/** Minimum confidence for auto-merge (default: 0.7) */
|
|
53
|
+
minConfidence?: number;
|
|
54
|
+
}
|
|
36
55
|
export interface ResolveResult {
|
|
37
56
|
entity: Entity;
|
|
38
57
|
isNew: boolean;
|
|
@@ -89,7 +108,16 @@ export declare class Dpth {
|
|
|
89
108
|
declare class EntityAPI {
|
|
90
109
|
private adapter;
|
|
91
110
|
constructor(adapter: StorageAdapter);
|
|
92
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Resolve an entity — find existing match or create new.
|
|
113
|
+
*
|
|
114
|
+
* Preferred (object form):
|
|
115
|
+
* db.entity.resolve({ type: 'person', name: 'John', source: 'stripe', externalId: 'cus_123' })
|
|
116
|
+
*
|
|
117
|
+
* Legacy (positional form — deprecated, will be removed in v1.0):
|
|
118
|
+
* db.entity.resolve('person', 'John', 'stripe', 'cus_123', { email: '...' })
|
|
119
|
+
*/
|
|
120
|
+
resolve(opts: ResolveOptions): Promise<ResolveResult>;
|
|
93
121
|
resolve(type: EntityType, name: string, sourceId: SourceId, externalId: string, options?: {
|
|
94
122
|
email?: string;
|
|
95
123
|
aliases?: string[];
|
|
@@ -108,6 +136,8 @@ declare class EntityAPI {
|
|
|
108
136
|
merge(keepId: EntityId, mergeId: EntityId): Promise<Entity | undefined>;
|
|
109
137
|
/** Count entities */
|
|
110
138
|
count(type?: EntityType): Promise<number>;
|
|
139
|
+
/** Update the email index for an entity */
|
|
140
|
+
private updateEmailIndex;
|
|
111
141
|
private findBestMatch;
|
|
112
142
|
private fuzzyScore;
|
|
113
143
|
}
|
|
@@ -117,7 +147,10 @@ declare class TemporalAPI {
|
|
|
117
147
|
/** Take a snapshot of any data */
|
|
118
148
|
snapshot<T = Record<string, unknown>>(key: string, data: T, source?: SourceId): Promise<SnapshotRecord<T>>;
|
|
119
149
|
/** Get all snapshots for a key (ordered by time) */
|
|
120
|
-
history<T = Record<string, unknown>>(key: string
|
|
150
|
+
history<T = Record<string, unknown>>(key: string, options?: {
|
|
151
|
+
limit?: number;
|
|
152
|
+
offset?: number;
|
|
153
|
+
}): Promise<SnapshotRecord<T>[]>;
|
|
121
154
|
/** Get the latest snapshot for a key */
|
|
122
155
|
latest<T = Record<string, unknown>>(key: string): Promise<SnapshotRecord<T> | undefined>;
|
|
123
156
|
/** Get snapshot closest to a specific time */
|