@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.
Files changed (215) hide show
  1. package/README.md +12 -12
  2. package/dist/api/server.d.ts.map +1 -1
  3. package/dist/api/server.js +463 -35
  4. package/dist/api/server.js.map +1 -1
  5. package/dist/arbitration/index.d.ts.map +1 -1
  6. package/dist/arbitration/index.js +8 -6
  7. package/dist/arbitration/index.js.map +1 -1
  8. package/dist/audit/key-manager.d.ts +118 -0
  9. package/dist/audit/key-manager.d.ts.map +1 -0
  10. package/dist/audit/key-manager.js +565 -0
  11. package/dist/audit/key-manager.js.map +1 -0
  12. package/dist/basis/evaluator.d.ts +31 -0
  13. package/dist/basis/evaluator.d.ts.map +1 -1
  14. package/dist/basis/evaluator.js +205 -10
  15. package/dist/basis/evaluator.js.map +1 -1
  16. package/dist/basis/parser.d.ts +210 -210
  17. package/dist/basis/parser.js.map +1 -1
  18. package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
  19. package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
  20. package/dist/carbon-aware/carbon-metrics.js +370 -0
  21. package/dist/carbon-aware/carbon-metrics.js.map +1 -0
  22. package/dist/carbon-aware/carbon-router.d.ts +101 -0
  23. package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
  24. package/dist/carbon-aware/carbon-router.js +400 -0
  25. package/dist/carbon-aware/carbon-router.js.map +1 -0
  26. package/dist/chain/index.d.ts +147 -0
  27. package/dist/chain/index.d.ts.map +1 -0
  28. package/dist/chain/index.js +219 -0
  29. package/dist/chain/index.js.map +1 -0
  30. package/dist/cognigate/index.d.ts +33 -4
  31. package/dist/cognigate/index.d.ts.map +1 -1
  32. package/dist/cognigate/index.js +199 -24
  33. package/dist/cognigate/index.js.map +1 -1
  34. package/dist/common/adapters.d.ts +172 -0
  35. package/dist/common/adapters.d.ts.map +1 -0
  36. package/dist/common/adapters.js +329 -0
  37. package/dist/common/adapters.js.map +1 -0
  38. package/dist/common/config.d.ts +168 -163
  39. package/dist/common/config.d.ts.map +1 -1
  40. package/dist/common/config.js +2 -0
  41. package/dist/common/config.js.map +1 -1
  42. package/dist/common/index.d.ts +1 -0
  43. package/dist/common/index.d.ts.map +1 -1
  44. package/dist/common/index.js +1 -0
  45. package/dist/common/index.js.map +1 -1
  46. package/dist/common/types.d.ts +67 -16
  47. package/dist/common/types.d.ts.map +1 -1
  48. package/dist/common/types.js +4 -0
  49. package/dist/common/types.js.map +1 -1
  50. package/dist/enforce/index.d.ts +226 -16
  51. package/dist/enforce/index.d.ts.map +1 -1
  52. package/dist/enforce/index.js +196 -49
  53. package/dist/enforce/index.js.map +1 -1
  54. package/dist/governance/fluid-workflow.d.ts +217 -0
  55. package/dist/governance/fluid-workflow.d.ts.map +1 -0
  56. package/dist/governance/fluid-workflow.js +491 -0
  57. package/dist/governance/fluid-workflow.js.map +1 -0
  58. package/dist/governance/index.d.ts +1 -0
  59. package/dist/governance/index.d.ts.map +1 -1
  60. package/dist/governance/index.js +1 -0
  61. package/dist/governance/index.js.map +1 -1
  62. package/dist/index.d.ts +9 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/intent/index.d.ts +127 -10
  67. package/dist/intent/index.d.ts.map +1 -1
  68. package/dist/intent/index.js +121 -16
  69. package/dist/intent/index.js.map +1 -1
  70. package/dist/langchain/executor.d.ts +19 -5
  71. package/dist/langchain/executor.d.ts.map +1 -1
  72. package/dist/langchain/executor.js +287 -36
  73. package/dist/langchain/executor.js.map +1 -1
  74. package/dist/langchain/index.d.ts +2 -1
  75. package/dist/langchain/index.d.ts.map +1 -1
  76. package/dist/langchain/index.js +3 -1
  77. package/dist/langchain/index.js.map +1 -1
  78. package/dist/langchain/tools.d.ts.map +1 -1
  79. package/dist/langchain/tools.js +2 -1
  80. package/dist/langchain/tools.js.map +1 -1
  81. package/dist/langchain/types.d.ts +41 -0
  82. package/dist/langchain/types.d.ts.map +1 -1
  83. package/dist/layers/index.d.ts +1 -1
  84. package/dist/layers/index.d.ts.map +1 -1
  85. package/dist/persistence/file.d.ts +35 -3
  86. package/dist/persistence/file.d.ts.map +1 -1
  87. package/dist/persistence/file.js +138 -11
  88. package/dist/persistence/file.js.map +1 -1
  89. package/dist/persistence/index.d.ts +11 -1
  90. package/dist/persistence/index.d.ts.map +1 -1
  91. package/dist/persistence/index.js +25 -1
  92. package/dist/persistence/index.js.map +1 -1
  93. package/dist/persistence/sqlite.d.ts +135 -0
  94. package/dist/persistence/sqlite.d.ts.map +1 -0
  95. package/dist/persistence/sqlite.js +372 -0
  96. package/dist/persistence/sqlite.js.map +1 -0
  97. package/dist/persistence/supabase.d.ts +93 -0
  98. package/dist/persistence/supabase.d.ts.map +1 -0
  99. package/dist/persistence/supabase.js +219 -0
  100. package/dist/persistence/supabase.js.map +1 -0
  101. package/dist/persistence/types.d.ts +5 -1
  102. package/dist/persistence/types.d.ts.map +1 -1
  103. package/dist/phase6/ceiling.d.ts +177 -0
  104. package/dist/phase6/ceiling.d.ts.map +1 -0
  105. package/dist/phase6/ceiling.js +463 -0
  106. package/dist/phase6/ceiling.js.map +1 -0
  107. package/dist/phase6/context.d.ts +207 -0
  108. package/dist/phase6/context.d.ts.map +1 -0
  109. package/dist/phase6/context.js +603 -0
  110. package/dist/phase6/context.js.map +1 -0
  111. package/dist/phase6/index.d.ts +79 -0
  112. package/dist/phase6/index.d.ts.map +1 -0
  113. package/dist/phase6/index.js +152 -0
  114. package/dist/phase6/index.js.map +1 -0
  115. package/dist/phase6/presets.d.ts +148 -0
  116. package/dist/phase6/presets.d.ts.map +1 -0
  117. package/dist/phase6/presets.js +467 -0
  118. package/dist/phase6/presets.js.map +1 -0
  119. package/dist/phase6/provenance.d.ts +148 -0
  120. package/dist/phase6/provenance.d.ts.map +1 -0
  121. package/dist/phase6/provenance.js +545 -0
  122. package/dist/phase6/provenance.js.map +1 -0
  123. package/dist/phase6/role-gates/index.d.ts +7 -0
  124. package/dist/phase6/role-gates/index.d.ts.map +1 -0
  125. package/dist/phase6/role-gates/index.js +7 -0
  126. package/dist/phase6/role-gates/index.js.map +1 -0
  127. package/dist/phase6/role-gates/kernel.d.ts +84 -0
  128. package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
  129. package/dist/phase6/role-gates/kernel.js +258 -0
  130. package/dist/phase6/role-gates/kernel.js.map +1 -0
  131. package/dist/phase6/role-gates/policy.d.ts +110 -0
  132. package/dist/phase6/role-gates/policy.d.ts.map +1 -0
  133. package/dist/phase6/role-gates/policy.js +157 -0
  134. package/dist/phase6/role-gates/policy.js.map +1 -0
  135. package/dist/phase6/role-gates.d.ts +164 -0
  136. package/dist/phase6/role-gates.d.ts.map +1 -0
  137. package/dist/phase6/role-gates.js +536 -0
  138. package/dist/phase6/role-gates.js.map +1 -0
  139. package/dist/phase6/types.d.ts +1827 -0
  140. package/dist/phase6/types.d.ts.map +1 -0
  141. package/dist/phase6/types.js +450 -0
  142. package/dist/phase6/types.js.map +1 -0
  143. package/dist/phase6/weight-presets/canonical.d.ts +93 -0
  144. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
  145. package/dist/phase6/weight-presets/canonical.js +122 -0
  146. package/dist/phase6/weight-presets/canonical.js.map +1 -0
  147. package/dist/phase6/weight-presets/deltas.d.ts +144 -0
  148. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
  149. package/dist/phase6/weight-presets/deltas.js +184 -0
  150. package/dist/phase6/weight-presets/deltas.js.map +1 -0
  151. package/dist/phase6/weight-presets/index.d.ts +8 -0
  152. package/dist/phase6/weight-presets/index.d.ts.map +1 -0
  153. package/dist/phase6/weight-presets/index.js +8 -0
  154. package/dist/phase6/weight-presets/index.js.map +1 -0
  155. package/dist/phase6/weight-presets/merger.d.ts +79 -0
  156. package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
  157. package/dist/phase6/weight-presets/merger.js +161 -0
  158. package/dist/phase6/weight-presets/merger.js.map +1 -0
  159. package/dist/proof/index.d.ts +50 -1
  160. package/dist/proof/index.d.ts.map +1 -1
  161. package/dist/proof/index.js +122 -3
  162. package/dist/proof/index.js.map +1 -1
  163. package/dist/proof/merkle.d.ts +195 -0
  164. package/dist/proof/merkle.d.ts.map +1 -0
  165. package/dist/proof/merkle.js +412 -0
  166. package/dist/proof/merkle.js.map +1 -0
  167. package/dist/proof/zk-proofs.d.ts +218 -0
  168. package/dist/proof/zk-proofs.d.ts.map +1 -0
  169. package/dist/proof/zk-proofs.js +531 -0
  170. package/dist/proof/zk-proofs.js.map +1 -0
  171. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
  172. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
  173. package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
  174. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
  175. package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
  176. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
  177. package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
  178. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
  179. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
  180. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
  181. package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
  182. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
  183. package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
  184. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
  185. package/dist/trust-engine/context-policy/enforcement.js +104 -0
  186. package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
  187. package/dist/trust-engine/context-policy/factory.d.ts +75 -0
  188. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
  189. package/dist/trust-engine/context-policy/factory.js +130 -0
  190. package/dist/trust-engine/context-policy/factory.js.map +1 -0
  191. package/dist/trust-engine/context-policy/index.d.ts +6 -0
  192. package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
  193. package/dist/trust-engine/context-policy/index.js +6 -0
  194. package/dist/trust-engine/context-policy/index.js.map +1 -0
  195. package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
  196. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
  197. package/dist/trust-engine/creation-modifiers/index.js +5 -0
  198. package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
  199. package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
  200. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
  201. package/dist/trust-engine/creation-modifiers/types.js +166 -0
  202. package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
  203. package/dist/trust-engine/decay-profiles.d.ts +159 -0
  204. package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
  205. package/dist/trust-engine/decay-profiles.js +210 -0
  206. package/dist/trust-engine/decay-profiles.js.map +1 -0
  207. package/dist/trust-engine/index.d.ts +144 -5
  208. package/dist/trust-engine/index.d.ts.map +1 -1
  209. package/dist/trust-engine/index.js +320 -15
  210. package/dist/trust-engine/index.js.map +1 -1
  211. package/dist/trust-engine/phase6-types.d.ts +123 -0
  212. package/dist/trust-engine/phase6-types.d.ts.map +1 -0
  213. package/dist/trust-engine/phase6-types.js +88 -0
  214. package/dist/trust-engine/phase6-types.js.map +1 -0
  215. 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":"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"}
@@ -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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"}