@vorionsys/atsf-core 0.1.0 → 0.2.1
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 +12 -12
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +463 -35
- package/dist/api/server.js.map +1 -1
- package/dist/arbitration/index.d.ts.map +1 -1
- package/dist/arbitration/index.js +8 -6
- package/dist/arbitration/index.js.map +1 -1
- package/dist/audit/key-manager.d.ts +118 -0
- package/dist/audit/key-manager.d.ts.map +1 -0
- package/dist/audit/key-manager.js +565 -0
- package/dist/audit/key-manager.js.map +1 -0
- package/dist/basis/evaluator.d.ts +31 -0
- package/dist/basis/evaluator.d.ts.map +1 -1
- package/dist/basis/evaluator.js +205 -10
- package/dist/basis/evaluator.js.map +1 -1
- package/dist/basis/parser.d.ts +210 -210
- package/dist/basis/parser.js.map +1 -1
- package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
- package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
- package/dist/carbon-aware/carbon-metrics.js +370 -0
- package/dist/carbon-aware/carbon-metrics.js.map +1 -0
- package/dist/carbon-aware/carbon-router.d.ts +101 -0
- package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
- package/dist/carbon-aware/carbon-router.js +400 -0
- package/dist/carbon-aware/carbon-router.js.map +1 -0
- package/dist/chain/index.d.ts +147 -0
- package/dist/chain/index.d.ts.map +1 -0
- package/dist/chain/index.js +219 -0
- package/dist/chain/index.js.map +1 -0
- package/dist/cognigate/index.d.ts +33 -4
- package/dist/cognigate/index.d.ts.map +1 -1
- package/dist/cognigate/index.js +199 -24
- package/dist/cognigate/index.js.map +1 -1
- package/dist/common/adapters.d.ts +172 -0
- package/dist/common/adapters.d.ts.map +1 -0
- package/dist/common/adapters.js +329 -0
- package/dist/common/adapters.js.map +1 -0
- package/dist/common/config.d.ts +168 -163
- package/dist/common/config.d.ts.map +1 -1
- package/dist/common/config.js +2 -0
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/types.d.ts +67 -16
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js +4 -0
- package/dist/common/types.js.map +1 -1
- package/dist/enforce/index.d.ts +226 -16
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +196 -49
- package/dist/enforce/index.js.map +1 -1
- package/dist/governance/fluid-workflow.d.ts +217 -0
- package/dist/governance/fluid-workflow.d.ts.map +1 -0
- package/dist/governance/fluid-workflow.js +491 -0
- package/dist/governance/fluid-workflow.js.map +1 -0
- package/dist/governance/index.d.ts +1 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +1 -0
- package/dist/governance/index.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +127 -10
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +121 -16
- package/dist/intent/index.js.map +1 -1
- package/dist/langchain/executor.d.ts +19 -5
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +287 -36
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +2 -1
- package/dist/langchain/index.d.ts.map +1 -1
- package/dist/langchain/index.js +3 -1
- package/dist/langchain/index.js.map +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +2 -1
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +41 -0
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/layers/index.d.ts +1 -1
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/persistence/file.d.ts +35 -3
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +138 -11
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +11 -1
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +25 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +135 -0
- package/dist/persistence/sqlite.d.ts.map +1 -0
- package/dist/persistence/sqlite.js +372 -0
- package/dist/persistence/sqlite.js.map +1 -0
- package/dist/persistence/supabase.d.ts +93 -0
- package/dist/persistence/supabase.d.ts.map +1 -0
- package/dist/persistence/supabase.js +219 -0
- package/dist/persistence/supabase.js.map +1 -0
- package/dist/persistence/types.d.ts +5 -1
- package/dist/persistence/types.d.ts.map +1 -1
- package/dist/phase6/ceiling.d.ts +177 -0
- package/dist/phase6/ceiling.d.ts.map +1 -0
- package/dist/phase6/ceiling.js +463 -0
- package/dist/phase6/ceiling.js.map +1 -0
- package/dist/phase6/context.d.ts +207 -0
- package/dist/phase6/context.d.ts.map +1 -0
- package/dist/phase6/context.js +603 -0
- package/dist/phase6/context.js.map +1 -0
- package/dist/phase6/index.d.ts +79 -0
- package/dist/phase6/index.d.ts.map +1 -0
- package/dist/phase6/index.js +152 -0
- package/dist/phase6/index.js.map +1 -0
- package/dist/phase6/presets.d.ts +148 -0
- package/dist/phase6/presets.d.ts.map +1 -0
- package/dist/phase6/presets.js +467 -0
- package/dist/phase6/presets.js.map +1 -0
- package/dist/phase6/provenance.d.ts +148 -0
- package/dist/phase6/provenance.d.ts.map +1 -0
- package/dist/phase6/provenance.js +545 -0
- package/dist/phase6/provenance.js.map +1 -0
- package/dist/phase6/role-gates/index.d.ts +7 -0
- package/dist/phase6/role-gates/index.d.ts.map +1 -0
- package/dist/phase6/role-gates/index.js +7 -0
- package/dist/phase6/role-gates/index.js.map +1 -0
- package/dist/phase6/role-gates/kernel.d.ts +84 -0
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
- package/dist/phase6/role-gates/kernel.js +258 -0
- package/dist/phase6/role-gates/kernel.js.map +1 -0
- package/dist/phase6/role-gates/policy.d.ts +110 -0
- package/dist/phase6/role-gates/policy.d.ts.map +1 -0
- package/dist/phase6/role-gates/policy.js +157 -0
- package/dist/phase6/role-gates/policy.js.map +1 -0
- package/dist/phase6/role-gates.d.ts +164 -0
- package/dist/phase6/role-gates.d.ts.map +1 -0
- package/dist/phase6/role-gates.js +536 -0
- package/dist/phase6/role-gates.js.map +1 -0
- package/dist/phase6/types.d.ts +1827 -0
- package/dist/phase6/types.d.ts.map +1 -0
- package/dist/phase6/types.js +450 -0
- package/dist/phase6/types.js.map +1 -0
- package/dist/phase6/weight-presets/canonical.d.ts +93 -0
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
- package/dist/phase6/weight-presets/canonical.js +122 -0
- package/dist/phase6/weight-presets/canonical.js.map +1 -0
- package/dist/phase6/weight-presets/deltas.d.ts +144 -0
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
- package/dist/phase6/weight-presets/deltas.js +184 -0
- package/dist/phase6/weight-presets/deltas.js.map +1 -0
- package/dist/phase6/weight-presets/index.d.ts +8 -0
- package/dist/phase6/weight-presets/index.d.ts.map +1 -0
- package/dist/phase6/weight-presets/index.js +8 -0
- package/dist/phase6/weight-presets/index.js.map +1 -0
- package/dist/phase6/weight-presets/merger.d.ts +79 -0
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
- package/dist/phase6/weight-presets/merger.js +161 -0
- package/dist/phase6/weight-presets/merger.js.map +1 -0
- package/dist/proof/index.d.ts +50 -1
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +122 -3
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +195 -0
- package/dist/proof/merkle.d.ts.map +1 -0
- package/dist/proof/merkle.js +412 -0
- package/dist/proof/merkle.js.map +1 -0
- package/dist/proof/zk-proofs.d.ts +218 -0
- package/dist/proof/zk-proofs.d.ts.map +1 -0
- package/dist/proof/zk-proofs.js +531 -0
- package/dist/proof/zk-proofs.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.js +104 -0
- package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
- package/dist/trust-engine/context-policy/factory.d.ts +75 -0
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/factory.js +130 -0
- package/dist/trust-engine/context-policy/factory.js.map +1 -0
- package/dist/trust-engine/context-policy/index.d.ts +6 -0
- package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/index.js +6 -0
- package/dist/trust-engine/context-policy/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.js +5 -0
- package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.js +166 -0
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
- package/dist/trust-engine/decay-profiles.d.ts +159 -0
- package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
- package/dist/trust-engine/decay-profiles.js +210 -0
- package/dist/trust-engine/decay-profiles.js.map +1 -0
- package/dist/trust-engine/index.d.ts +144 -5
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +320 -15
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +123 -0
- package/dist/trust-engine/phase6-types.d.ts.map +1 -0
- package/dist/trust-engine/phase6-types.js +88 -0
- package/dist/trust-engine/phase6-types.js.map +1 -0
- package/package.json +26 -10
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Persistence Provider
|
|
3
|
+
*
|
|
4
|
+
* Lightweight, file-based SQL database for production persistence.
|
|
5
|
+
* Uses better-sqlite3 for synchronous, high-performance operations.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { mkdir } from 'fs/promises';
|
|
10
|
+
import { dirname } from 'path';
|
|
11
|
+
import { createLogger } from '../common/logger.js';
|
|
12
|
+
const logger = createLogger({ component: 'persistence-sqlite' });
|
|
13
|
+
/**
|
|
14
|
+
* SQLite-based persistence provider
|
|
15
|
+
*
|
|
16
|
+
* Provides durable, ACID-compliant storage for trust records with:
|
|
17
|
+
* - Automatic schema migrations
|
|
18
|
+
* - Indexed queries for fast lookups
|
|
19
|
+
* - WAL mode for concurrent read/write access
|
|
20
|
+
* - Automatic JSON serialization of complex fields
|
|
21
|
+
*/
|
|
22
|
+
export class SQLitePersistenceProvider {
|
|
23
|
+
name = 'sqlite';
|
|
24
|
+
db = null;
|
|
25
|
+
config;
|
|
26
|
+
initialized = false;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.config = {
|
|
29
|
+
tableName: 'trust_records',
|
|
30
|
+
walMode: true,
|
|
31
|
+
...config,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize the SQLite database
|
|
36
|
+
*/
|
|
37
|
+
async initialize() {
|
|
38
|
+
if (this.initialized) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
// Ensure directory exists
|
|
43
|
+
const dir = dirname(this.config.path);
|
|
44
|
+
await mkdir(dir, { recursive: true });
|
|
45
|
+
// Create database connection
|
|
46
|
+
this.db = new this.config.Database(this.config.path);
|
|
47
|
+
// Enable WAL mode for better concurrent performance
|
|
48
|
+
if (this.config.walMode) {
|
|
49
|
+
this.db.pragma('journal_mode = WAL');
|
|
50
|
+
}
|
|
51
|
+
// Enable foreign keys
|
|
52
|
+
this.db.pragma('foreign_keys = ON');
|
|
53
|
+
// Create table if not exists
|
|
54
|
+
this.createSchema();
|
|
55
|
+
this.initialized = true;
|
|
56
|
+
logger.info({ path: this.config.path, table: this.config.tableName }, 'SQLite persistence initialized');
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
60
|
+
logger.error({ error: message, path: this.config.path }, 'Failed to initialize SQLite persistence');
|
|
61
|
+
throw new Error(`SQLite initialization failed: ${message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create the database schema
|
|
66
|
+
*/
|
|
67
|
+
createSchema() {
|
|
68
|
+
if (!this.db) {
|
|
69
|
+
throw new Error('Database not initialized');
|
|
70
|
+
}
|
|
71
|
+
const tableName = this.config.tableName;
|
|
72
|
+
// Create main table
|
|
73
|
+
this.db.exec(`
|
|
74
|
+
CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
75
|
+
entity_id TEXT PRIMARY KEY,
|
|
76
|
+
score INTEGER NOT NULL,
|
|
77
|
+
level INTEGER NOT NULL,
|
|
78
|
+
components TEXT NOT NULL,
|
|
79
|
+
signals TEXT NOT NULL,
|
|
80
|
+
last_calculated_at TEXT NOT NULL,
|
|
81
|
+
history TEXT NOT NULL,
|
|
82
|
+
recent_failures TEXT NOT NULL,
|
|
83
|
+
recent_successes TEXT NOT NULL,
|
|
84
|
+
peak_score INTEGER NOT NULL,
|
|
85
|
+
consecutive_successes INTEGER NOT NULL DEFAULT 0,
|
|
86
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
87
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
88
|
+
)
|
|
89
|
+
`);
|
|
90
|
+
// Create indexes for common queries
|
|
91
|
+
this.db.exec(`
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_score ON ${tableName}(score);
|
|
93
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_level ON ${tableName}(level);
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_last_calculated ON ${tableName}(last_calculated_at);
|
|
95
|
+
`);
|
|
96
|
+
logger.debug({ table: tableName }, 'SQLite schema created');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Ensure database is initialized
|
|
100
|
+
*/
|
|
101
|
+
ensureInitialized() {
|
|
102
|
+
if (!this.db || !this.initialized) {
|
|
103
|
+
throw new Error('SQLite persistence not initialized. Call initialize() first.');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Convert a TrustRecord to a database row
|
|
108
|
+
*/
|
|
109
|
+
recordToRow(record) {
|
|
110
|
+
return {
|
|
111
|
+
entity_id: record.entityId,
|
|
112
|
+
score: record.score,
|
|
113
|
+
level: record.level,
|
|
114
|
+
components: JSON.stringify(record.components),
|
|
115
|
+
signals: JSON.stringify(record.signals),
|
|
116
|
+
last_calculated_at: record.lastCalculatedAt,
|
|
117
|
+
history: JSON.stringify(record.history),
|
|
118
|
+
recent_failures: JSON.stringify(record.recentFailures),
|
|
119
|
+
recent_successes: JSON.stringify(record.recentSuccesses),
|
|
120
|
+
peak_score: record.peakScore,
|
|
121
|
+
consecutive_successes: record.consecutiveSuccesses,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Convert a database row to a TrustRecord
|
|
126
|
+
*/
|
|
127
|
+
rowToRecord(row) {
|
|
128
|
+
return {
|
|
129
|
+
entityId: row.entity_id,
|
|
130
|
+
score: row.score,
|
|
131
|
+
level: row.level,
|
|
132
|
+
components: JSON.parse(row.components),
|
|
133
|
+
signals: JSON.parse(row.signals),
|
|
134
|
+
lastCalculatedAt: row.last_calculated_at,
|
|
135
|
+
history: JSON.parse(row.history),
|
|
136
|
+
recentFailures: JSON.parse(row.recent_failures),
|
|
137
|
+
recentSuccesses: JSON.parse(row.recent_successes),
|
|
138
|
+
peakScore: row.peak_score,
|
|
139
|
+
consecutiveSuccesses: row.consecutive_successes,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Save a trust record (upsert)
|
|
144
|
+
*/
|
|
145
|
+
async save(record) {
|
|
146
|
+
this.ensureInitialized();
|
|
147
|
+
const row = this.recordToRow(record);
|
|
148
|
+
const tableName = this.config.tableName;
|
|
149
|
+
try {
|
|
150
|
+
const stmt = this.db.prepare(`
|
|
151
|
+
INSERT INTO ${tableName} (
|
|
152
|
+
entity_id, score, level, components, signals,
|
|
153
|
+
last_calculated_at, history, recent_failures, recent_successes,
|
|
154
|
+
peak_score, consecutive_successes, updated_at
|
|
155
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
156
|
+
ON CONFLICT(entity_id) DO UPDATE SET
|
|
157
|
+
score = excluded.score,
|
|
158
|
+
level = excluded.level,
|
|
159
|
+
components = excluded.components,
|
|
160
|
+
signals = excluded.signals,
|
|
161
|
+
last_calculated_at = excluded.last_calculated_at,
|
|
162
|
+
history = excluded.history,
|
|
163
|
+
recent_failures = excluded.recent_failures,
|
|
164
|
+
recent_successes = excluded.recent_successes,
|
|
165
|
+
peak_score = excluded.peak_score,
|
|
166
|
+
consecutive_successes = excluded.consecutive_successes,
|
|
167
|
+
updated_at = datetime('now')
|
|
168
|
+
`);
|
|
169
|
+
stmt.run(row.entity_id, row.score, row.level, row.components, row.signals, row.last_calculated_at, row.history, row.recent_failures, row.recent_successes, row.peak_score, row.consecutive_successes);
|
|
170
|
+
logger.debug({ entityId: record.entityId }, 'Trust record saved to SQLite');
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
174
|
+
logger.error({ error: message, entityId: record.entityId }, 'Failed to save trust record');
|
|
175
|
+
throw new Error(`Failed to save trust record: ${message}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get a trust record by entity ID
|
|
180
|
+
*/
|
|
181
|
+
async get(entityId) {
|
|
182
|
+
this.ensureInitialized();
|
|
183
|
+
try {
|
|
184
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.config.tableName} WHERE entity_id = ?`);
|
|
185
|
+
const row = stmt.get(entityId);
|
|
186
|
+
if (!row) {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
return this.rowToRecord(row);
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
193
|
+
logger.error({ error: message, entityId }, 'Failed to get trust record');
|
|
194
|
+
throw new Error(`Failed to get trust record: ${message}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Delete a trust record
|
|
199
|
+
*/
|
|
200
|
+
async delete(entityId) {
|
|
201
|
+
this.ensureInitialized();
|
|
202
|
+
try {
|
|
203
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.config.tableName} WHERE entity_id = ?`);
|
|
204
|
+
const result = stmt.run(entityId);
|
|
205
|
+
const deleted = result.changes > 0;
|
|
206
|
+
if (deleted) {
|
|
207
|
+
logger.debug({ entityId }, 'Trust record deleted from SQLite');
|
|
208
|
+
}
|
|
209
|
+
return deleted;
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
213
|
+
logger.error({ error: message, entityId }, 'Failed to delete trust record');
|
|
214
|
+
throw new Error(`Failed to delete trust record: ${message}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* List all entity IDs
|
|
219
|
+
*/
|
|
220
|
+
async listIds() {
|
|
221
|
+
this.ensureInitialized();
|
|
222
|
+
try {
|
|
223
|
+
const stmt = this.db.prepare(`SELECT entity_id FROM ${this.config.tableName}`);
|
|
224
|
+
const rows = stmt.all();
|
|
225
|
+
return rows.map((row) => row.entity_id);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
229
|
+
logger.error({ error: message }, 'Failed to list entity IDs');
|
|
230
|
+
throw new Error(`Failed to list entity IDs: ${message}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Query trust records with filtering, sorting, and pagination
|
|
235
|
+
*/
|
|
236
|
+
async query(options = {}) {
|
|
237
|
+
this.ensureInitialized();
|
|
238
|
+
try {
|
|
239
|
+
const conditions = [];
|
|
240
|
+
const params = [];
|
|
241
|
+
// Build WHERE conditions
|
|
242
|
+
if (options.minLevel !== undefined) {
|
|
243
|
+
conditions.push('level >= ?');
|
|
244
|
+
params.push(options.minLevel);
|
|
245
|
+
}
|
|
246
|
+
if (options.maxLevel !== undefined) {
|
|
247
|
+
conditions.push('level <= ?');
|
|
248
|
+
params.push(options.maxLevel);
|
|
249
|
+
}
|
|
250
|
+
if (options.minScore !== undefined) {
|
|
251
|
+
conditions.push('score >= ?');
|
|
252
|
+
params.push(options.minScore);
|
|
253
|
+
}
|
|
254
|
+
if (options.maxScore !== undefined) {
|
|
255
|
+
conditions.push('score <= ?');
|
|
256
|
+
params.push(options.maxScore);
|
|
257
|
+
}
|
|
258
|
+
// Build query
|
|
259
|
+
let query = `SELECT * FROM ${this.config.tableName}`;
|
|
260
|
+
if (conditions.length > 0) {
|
|
261
|
+
query += ` WHERE ${conditions.join(' AND ')}`;
|
|
262
|
+
}
|
|
263
|
+
// Add sorting
|
|
264
|
+
const sortBy = options.sortBy ?? 'score';
|
|
265
|
+
const sortOrder = options.sortOrder ?? 'desc';
|
|
266
|
+
const sortColumn = sortBy === 'lastCalculatedAt' ? 'last_calculated_at' : sortBy;
|
|
267
|
+
query += ` ORDER BY ${sortColumn} ${sortOrder.toUpperCase()}`;
|
|
268
|
+
// Add pagination
|
|
269
|
+
if (options.limit !== undefined) {
|
|
270
|
+
query += ` LIMIT ?`;
|
|
271
|
+
params.push(options.limit);
|
|
272
|
+
}
|
|
273
|
+
if (options.offset !== undefined) {
|
|
274
|
+
query += ` OFFSET ?`;
|
|
275
|
+
params.push(options.offset);
|
|
276
|
+
}
|
|
277
|
+
const stmt = this.db.prepare(query);
|
|
278
|
+
const rows = stmt.all(...params);
|
|
279
|
+
return rows.map((row) => this.rowToRecord(row));
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
283
|
+
logger.error({ error: message, options }, 'Failed to query trust records');
|
|
284
|
+
throw new Error(`Failed to query trust records: ${message}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Check if an entity exists
|
|
289
|
+
*/
|
|
290
|
+
async exists(entityId) {
|
|
291
|
+
this.ensureInitialized();
|
|
292
|
+
try {
|
|
293
|
+
const stmt = this.db.prepare(`SELECT 1 FROM ${this.config.tableName} WHERE entity_id = ? LIMIT 1`);
|
|
294
|
+
const result = stmt.get(entityId);
|
|
295
|
+
return result !== undefined;
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
299
|
+
logger.error({ error: message, entityId }, 'Failed to check entity existence');
|
|
300
|
+
throw new Error(`Failed to check entity existence: ${message}`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get total count of records
|
|
305
|
+
*/
|
|
306
|
+
async count() {
|
|
307
|
+
this.ensureInitialized();
|
|
308
|
+
try {
|
|
309
|
+
const stmt = this.db.prepare(`SELECT COUNT(*) as count FROM ${this.config.tableName}`);
|
|
310
|
+
const result = stmt.get();
|
|
311
|
+
return result.count;
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
315
|
+
logger.error({ error: message }, 'Failed to count records');
|
|
316
|
+
throw new Error(`Failed to count records: ${message}`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Clear all records
|
|
321
|
+
*/
|
|
322
|
+
async clear() {
|
|
323
|
+
this.ensureInitialized();
|
|
324
|
+
try {
|
|
325
|
+
this.db.exec(`DELETE FROM ${this.config.tableName}`);
|
|
326
|
+
logger.info({ table: this.config.tableName }, 'All trust records cleared');
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
330
|
+
logger.error({ error: message }, 'Failed to clear records');
|
|
331
|
+
throw new Error(`Failed to clear records: ${message}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Close the database connection
|
|
336
|
+
*/
|
|
337
|
+
async close() {
|
|
338
|
+
if (this.db) {
|
|
339
|
+
try {
|
|
340
|
+
this.db.close();
|
|
341
|
+
this.db = null;
|
|
342
|
+
this.initialized = false;
|
|
343
|
+
logger.info({ path: this.config.path }, 'SQLite connection closed');
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
347
|
+
logger.error({ error: message }, 'Failed to close SQLite connection');
|
|
348
|
+
throw new Error(`Failed to close SQLite connection: ${message}`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get database statistics
|
|
354
|
+
*/
|
|
355
|
+
async getStats() {
|
|
356
|
+
this.ensureInitialized();
|
|
357
|
+
const recordCount = await this.count();
|
|
358
|
+
const journalMode = this.db.pragma('journal_mode');
|
|
359
|
+
return {
|
|
360
|
+
recordCount,
|
|
361
|
+
fileSizeBytes: null, // Would need fs.stat to get this
|
|
362
|
+
walMode: journalMode[0]?.journal_mode === 'wal',
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Create a new SQLite persistence provider
|
|
368
|
+
*/
|
|
369
|
+
export function createSQLiteProvider(config) {
|
|
370
|
+
return new SQLitePersistenceProvider(config);
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/persistence/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;AA2DjE;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,QAAQ,CAAC;IACjB,EAAE,GAA0B,IAAI,CAAC;IACjC,MAAM,CAAgG;IACtG,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,IAAI;YACb,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,6BAA6B;YAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAErD,oDAAoD;YACpD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvC,CAAC;YAED,sBAAsB;YACtB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAEpC,6BAA6B;YAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,gCAAgC,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,yCAAyC,CAAC,CAAC;YACpG,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAExC,oBAAoB;QACpB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;mCACkB,SAAS;;;;;;;;;;;;;;;KAevC,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;uCACsB,SAAS,aAAa,SAAS;uCAC/B,SAAS,aAAa,SAAS;uCAC/B,SAAS,uBAAuB,SAAS;KAC3E,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,MAAmB;QACrC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB;YAC3C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;YACtD,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;YACxD,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,qBAAqB,EAAE,MAAM,CAAC,oBAAoB;SACnD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAmB;QACrC,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,KAA8B;YACzC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAChC,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;YACxC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAChC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;YAC/C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACjD,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,oBAAoB,EAAE,GAAG,CAAC,qBAAqB;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAmB;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC;sBACd,SAAS;;;;;;;;;;;;;;;;;OAiBxB,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,gBAAgB,EACpB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,qBAAqB,CAC1B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,QAAY;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC3B,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,sBAAsB,CAC7D,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAA+B,CAAC;YAE7D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,4BAA4B,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAY;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC3B,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,sBAAsB,CAC3D,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,kCAAkC,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC3B,yBAAyB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CACjD,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAA6B,CAAC;YAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,UAA4B,EAAE;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,MAAM,MAAM,GAAc,EAAE,CAAC;YAE7B,yBAAyB;YACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,cAAc;YACd,IAAI,KAAK,GAAG,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,IAAI,UAAU,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,CAAC;YAED,cAAc;YACd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;YACzC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC;YACjF,KAAK,IAAI,aAAa,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAE9D,iBAAiB;YACjB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,IAAI,UAAU,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,KAAK,IAAI,WAAW,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAqB,CAAC;YAErD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAY;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC3B,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,8BAA8B,CACrE,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAElC,OAAO,MAAM,KAAK,SAAS,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,kCAAkC,CAAC,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAG,CAAC,OAAO,CAC3B,iCAAiC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CACzD,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAuB,CAAC;YAE/C,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,2BAA2B,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QAKZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAG,CAAC,MAAM,CAAC,cAAc,CAA+B,CAAC;QAElF,OAAO;YACL,WAAW;YACX,aAAa,EAAE,IAAI,EAAE,iCAAiC;YACtD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,KAAK;SAChD,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supabase/PostgreSQL Persistence Provider
|
|
3
|
+
*
|
|
4
|
+
* Database-backed storage for trust records using Supabase or any PostgreSQL client.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import type { ID } from '../common/types.js';
|
|
9
|
+
import type { TrustRecord } from '../trust-engine/index.js';
|
|
10
|
+
import type { PersistenceProvider, TrustRecordQuery } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Generic database client interface
|
|
13
|
+
* Compatible with Supabase client, Drizzle, or raw pg
|
|
14
|
+
*/
|
|
15
|
+
export interface DatabaseClient {
|
|
16
|
+
from(table: string): DatabaseQueryBuilder;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Query builder interface matching Supabase's API
|
|
20
|
+
*/
|
|
21
|
+
export interface DatabaseQueryBuilder {
|
|
22
|
+
select(columns?: string): DatabaseQueryBuilder;
|
|
23
|
+
insert(data: Record<string, unknown> | Record<string, unknown>[]): DatabaseQueryBuilder;
|
|
24
|
+
update(data: Record<string, unknown>): DatabaseQueryBuilder;
|
|
25
|
+
upsert(data: Record<string, unknown> | Record<string, unknown>[], options?: {
|
|
26
|
+
onConflict?: string;
|
|
27
|
+
}): DatabaseQueryBuilder;
|
|
28
|
+
delete(): DatabaseQueryBuilder;
|
|
29
|
+
eq(column: string, value: unknown): DatabaseQueryBuilder;
|
|
30
|
+
gte(column: string, value: unknown): DatabaseQueryBuilder;
|
|
31
|
+
lte(column: string, value: unknown): DatabaseQueryBuilder;
|
|
32
|
+
order(column: string, options?: {
|
|
33
|
+
ascending?: boolean;
|
|
34
|
+
}): DatabaseQueryBuilder;
|
|
35
|
+
range(from: number, to: number): DatabaseQueryBuilder;
|
|
36
|
+
single(): DatabaseQueryBuilder;
|
|
37
|
+
then<T>(resolve: (result: DatabaseResult<T>) => void, reject?: (error: Error) => void): Promise<DatabaseResult<T>>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Database result interface
|
|
41
|
+
*/
|
|
42
|
+
export interface DatabaseResult<T> {
|
|
43
|
+
data: T | null;
|
|
44
|
+
error: {
|
|
45
|
+
message: string;
|
|
46
|
+
code?: string;
|
|
47
|
+
} | null;
|
|
48
|
+
count?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Supabase persistence provider configuration
|
|
52
|
+
*/
|
|
53
|
+
export interface SupabasePersistenceConfig {
|
|
54
|
+
/** Supabase client or compatible database client */
|
|
55
|
+
client: DatabaseClient;
|
|
56
|
+
/** Table name for trust records (default: 'trust_scores') */
|
|
57
|
+
tableName?: string;
|
|
58
|
+
/** Enable debug logging */
|
|
59
|
+
debug?: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Supabase/PostgreSQL persistence provider
|
|
63
|
+
*/
|
|
64
|
+
export declare class SupabasePersistenceProvider implements PersistenceProvider {
|
|
65
|
+
readonly name = "supabase";
|
|
66
|
+
private client;
|
|
67
|
+
private tableName;
|
|
68
|
+
private debug;
|
|
69
|
+
constructor(config: SupabasePersistenceConfig);
|
|
70
|
+
initialize(): Promise<void>;
|
|
71
|
+
save(record: TrustRecord): Promise<void>;
|
|
72
|
+
get(entityId: ID): Promise<TrustRecord | undefined>;
|
|
73
|
+
delete(entityId: ID): Promise<boolean>;
|
|
74
|
+
listIds(): Promise<ID[]>;
|
|
75
|
+
query(options?: TrustRecordQuery): Promise<TrustRecord[]>;
|
|
76
|
+
exists(entityId: ID): Promise<boolean>;
|
|
77
|
+
count(): Promise<number>;
|
|
78
|
+
clear(): Promise<void>;
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Convert a TrustRecord to a database row
|
|
82
|
+
*/
|
|
83
|
+
private recordToRow;
|
|
84
|
+
/**
|
|
85
|
+
* Convert a database row to a TrustRecord
|
|
86
|
+
*/
|
|
87
|
+
private rowToRecord;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a new Supabase persistence provider
|
|
91
|
+
*/
|
|
92
|
+
export declare function createSupabaseProvider(config: SupabasePersistenceConfig): SupabasePersistenceProvider;
|
|
93
|
+
//# sourceMappingURL=supabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/persistence/supabase.ts"],"names":[],"mappings":"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"}
|