@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
package/dist/persistence/file.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* File-based Persistence Provider
|
|
3
3
|
*
|
|
4
|
-
* JSON file storage for simple persistence needs.
|
|
4
|
+
* JSON file storage for simple persistence needs with robust error handling.
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
|
-
import { readFile, writeFile, mkdir, unlink, access } from 'fs/promises';
|
|
8
|
+
import { readFile, writeFile, mkdir, unlink, access, rename, copyFile } from 'fs/promises';
|
|
9
9
|
import { dirname } from 'path';
|
|
10
10
|
import { createLogger } from '../common/logger.js';
|
|
11
11
|
const logger = createLogger({ component: 'persistence-file' });
|
|
12
12
|
/**
|
|
13
|
-
* File-based persistence provider
|
|
13
|
+
* File-based persistence provider with robust error handling
|
|
14
14
|
*/
|
|
15
15
|
export class FilePersistenceProvider {
|
|
16
16
|
name = 'file';
|
|
@@ -18,10 +18,16 @@ export class FilePersistenceProvider {
|
|
|
18
18
|
config;
|
|
19
19
|
dirty = false;
|
|
20
20
|
saveTimer = null;
|
|
21
|
+
retryCount = 0;
|
|
22
|
+
retryTimer = null;
|
|
23
|
+
isFlushing = false;
|
|
21
24
|
constructor(config) {
|
|
22
25
|
this.config = {
|
|
23
26
|
autoSaveIntervalMs: 0,
|
|
24
27
|
prettyPrint: true,
|
|
28
|
+
maxRetryAttempts: 3,
|
|
29
|
+
retryDelayMs: 1000,
|
|
30
|
+
enableBackup: true,
|
|
25
31
|
...config,
|
|
26
32
|
};
|
|
27
33
|
}
|
|
@@ -40,21 +46,117 @@ export class FilePersistenceProvider {
|
|
|
40
46
|
}
|
|
41
47
|
logger.info({ path: this.config.path, count: this.records.size }, 'Loaded trust records from file');
|
|
42
48
|
}
|
|
43
|
-
catch {
|
|
44
|
-
//
|
|
45
|
-
|
|
49
|
+
catch (error) {
|
|
50
|
+
// Check if it's a parse error vs file not existing
|
|
51
|
+
if (error instanceof SyntaxError) {
|
|
52
|
+
logger.warn({ path: this.config.path, error: error.message }, 'Corrupted file detected, attempting recovery from backup');
|
|
53
|
+
await this.recoverFromBackup();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// File doesn't exist, start fresh
|
|
57
|
+
logger.info({ path: this.config.path }, 'Creating new trust records file');
|
|
58
|
+
}
|
|
46
59
|
}
|
|
47
60
|
// Set up auto-save if configured
|
|
48
61
|
if (this.config.autoSaveIntervalMs && this.config.autoSaveIntervalMs > 0) {
|
|
49
62
|
this.saveTimer = setInterval(() => {
|
|
50
|
-
if (this.dirty) {
|
|
51
|
-
this.
|
|
52
|
-
logger.error({ err }, 'Auto-save
|
|
63
|
+
if (this.dirty && !this.isFlushing) {
|
|
64
|
+
this.flushWithRetry().catch((err) => {
|
|
65
|
+
logger.error({ err }, 'Auto-save exhausted all retry attempts');
|
|
53
66
|
});
|
|
54
67
|
}
|
|
55
68
|
}, this.config.autoSaveIntervalMs);
|
|
56
69
|
}
|
|
57
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Attempt to recover data from backup file
|
|
73
|
+
*/
|
|
74
|
+
async recoverFromBackup() {
|
|
75
|
+
const backupPath = `${this.config.path}.backup`;
|
|
76
|
+
try {
|
|
77
|
+
await access(backupPath);
|
|
78
|
+
const content = await readFile(backupPath, 'utf-8');
|
|
79
|
+
const storage = JSON.parse(content);
|
|
80
|
+
for (const [id, record] of Object.entries(storage.records)) {
|
|
81
|
+
this.records.set(id, record);
|
|
82
|
+
}
|
|
83
|
+
logger.info({ path: backupPath, count: this.records.size }, 'Recovered trust records from backup');
|
|
84
|
+
// Restore main file from backup
|
|
85
|
+
await copyFile(backupPath, this.config.path);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
logger.warn({ backupPath }, 'No valid backup found, starting fresh');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a backup of the current file before writing
|
|
93
|
+
*/
|
|
94
|
+
async createBackup() {
|
|
95
|
+
if (!this.config.enableBackup)
|
|
96
|
+
return;
|
|
97
|
+
try {
|
|
98
|
+
await access(this.config.path);
|
|
99
|
+
const backupPath = `${this.config.path}.backup`;
|
|
100
|
+
await copyFile(this.config.path, backupPath);
|
|
101
|
+
logger.debug({ path: this.config.path, backupPath }, 'Created backup before write');
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Original file doesn't exist, no backup needed
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Flush with retry logic for resilience
|
|
109
|
+
*/
|
|
110
|
+
async flushWithRetry() {
|
|
111
|
+
this.isFlushing = true;
|
|
112
|
+
try {
|
|
113
|
+
await this.flush();
|
|
114
|
+
this.retryCount = 0; // Reset on success
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
this.retryCount++;
|
|
118
|
+
const willRetry = this.retryCount < this.config.maxRetryAttempts;
|
|
119
|
+
const nextRetryMs = willRetry ? this.config.retryDelayMs * Math.pow(2, this.retryCount - 1) : undefined;
|
|
120
|
+
const errorEvent = {
|
|
121
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
122
|
+
attemptNumber: this.retryCount,
|
|
123
|
+
willRetry,
|
|
124
|
+
nextRetryMs,
|
|
125
|
+
};
|
|
126
|
+
// Notify error handler if configured
|
|
127
|
+
if (this.config.onAutoSaveError) {
|
|
128
|
+
try {
|
|
129
|
+
this.config.onAutoSaveError(errorEvent);
|
|
130
|
+
}
|
|
131
|
+
catch (handlerError) {
|
|
132
|
+
logger.warn({ handlerError }, 'Error in onAutoSaveError callback');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
logger.warn({
|
|
136
|
+
attempt: this.retryCount,
|
|
137
|
+
maxAttempts: this.config.maxRetryAttempts,
|
|
138
|
+
willRetry,
|
|
139
|
+
nextRetryMs,
|
|
140
|
+
error: errorEvent.error.message,
|
|
141
|
+
}, 'Auto-save failed');
|
|
142
|
+
if (willRetry) {
|
|
143
|
+
// Schedule retry with exponential backoff
|
|
144
|
+
this.retryTimer = setTimeout(() => {
|
|
145
|
+
this.flushWithRetry().catch((err) => {
|
|
146
|
+
logger.error({ err }, 'Retry flush failed');
|
|
147
|
+
});
|
|
148
|
+
}, nextRetryMs);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// Exhausted all retries
|
|
152
|
+
this.retryCount = 0;
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
this.isFlushing = false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
58
160
|
async save(record) {
|
|
59
161
|
this.records.set(record.entityId, JSON.parse(JSON.stringify(record)));
|
|
60
162
|
this.dirty = true;
|
|
@@ -131,16 +233,23 @@ export class FilePersistenceProvider {
|
|
|
131
233
|
await this.flush();
|
|
132
234
|
}
|
|
133
235
|
async close() {
|
|
236
|
+
// Clear auto-save timer
|
|
134
237
|
if (this.saveTimer) {
|
|
135
238
|
clearInterval(this.saveTimer);
|
|
136
239
|
this.saveTimer = null;
|
|
137
240
|
}
|
|
241
|
+
// Clear any pending retry timer
|
|
242
|
+
if (this.retryTimer) {
|
|
243
|
+
clearTimeout(this.retryTimer);
|
|
244
|
+
this.retryTimer = null;
|
|
245
|
+
}
|
|
246
|
+
// Final flush if dirty
|
|
138
247
|
if (this.dirty) {
|
|
139
248
|
await this.flush();
|
|
140
249
|
}
|
|
141
250
|
}
|
|
142
251
|
/**
|
|
143
|
-
* Flush records to disk
|
|
252
|
+
* Flush records to disk with atomic write
|
|
144
253
|
*/
|
|
145
254
|
async flush() {
|
|
146
255
|
const storage = {
|
|
@@ -151,7 +260,25 @@ export class FilePersistenceProvider {
|
|
|
151
260
|
const content = this.config.prettyPrint
|
|
152
261
|
? JSON.stringify(storage, null, 2)
|
|
153
262
|
: JSON.stringify(storage);
|
|
154
|
-
|
|
263
|
+
// Create backup before writing
|
|
264
|
+
await this.createBackup();
|
|
265
|
+
// Write to temp file first, then rename for atomicity
|
|
266
|
+
const tempPath = `${this.config.path}.tmp`;
|
|
267
|
+
await writeFile(tempPath, content, 'utf-8');
|
|
268
|
+
try {
|
|
269
|
+
await rename(tempPath, this.config.path);
|
|
270
|
+
}
|
|
271
|
+
catch (renameError) {
|
|
272
|
+
// Fallback to direct write if rename fails (e.g., cross-device)
|
|
273
|
+
await writeFile(this.config.path, content, 'utf-8');
|
|
274
|
+
// Clean up temp file
|
|
275
|
+
try {
|
|
276
|
+
await unlink(tempPath);
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// Ignore cleanup errors
|
|
280
|
+
}
|
|
281
|
+
}
|
|
155
282
|
this.dirty = false;
|
|
156
283
|
logger.debug({ path: this.config.path, count: this.records.size }, 'Flushed trust records to file');
|
|
157
284
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/persistence/file.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/persistence/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,19 @@
|
|
|
8
8
|
export * from './types.js';
|
|
9
9
|
export * from './memory.js';
|
|
10
10
|
export * from './file.js';
|
|
11
|
+
export * from './supabase.js';
|
|
12
|
+
export * from './sqlite.js';
|
|
11
13
|
import type { PersistenceProvider, PersistenceConfig } from './types.js';
|
|
14
|
+
import { type SQLiteDatabaseConstructor } from './sqlite.js';
|
|
15
|
+
/**
|
|
16
|
+
* Extended persistence configuration with SQLite support
|
|
17
|
+
*/
|
|
18
|
+
export interface ExtendedPersistenceConfig extends PersistenceConfig {
|
|
19
|
+
/** SQLite Database constructor (better-sqlite3) - required for sqlite type */
|
|
20
|
+
sqliteDatabase?: SQLiteDatabaseConstructor;
|
|
21
|
+
}
|
|
12
22
|
/**
|
|
13
23
|
* Create a persistence provider based on configuration
|
|
14
24
|
*/
|
|
15
|
-
export declare function createPersistenceProvider(config:
|
|
25
|
+
export declare function createPersistenceProvider(config: ExtendedPersistenceConfig): PersistenceProvider;
|
|
16
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIzE,OAAO,EAA6B,KAAK,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,8EAA8E;IAC9E,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CA2ChG"}
|
|
@@ -8,8 +8,12 @@
|
|
|
8
8
|
export * from './types.js';
|
|
9
9
|
export * from './memory.js';
|
|
10
10
|
export * from './file.js';
|
|
11
|
+
export * from './supabase.js';
|
|
12
|
+
export * from './sqlite.js';
|
|
11
13
|
import { MemoryPersistenceProvider } from './memory.js';
|
|
12
14
|
import { FilePersistenceProvider } from './file.js';
|
|
15
|
+
import { SupabasePersistenceProvider } from './supabase.js';
|
|
16
|
+
import { SQLitePersistenceProvider } from './sqlite.js';
|
|
13
17
|
/**
|
|
14
18
|
* Create a persistence provider based on configuration
|
|
15
19
|
*/
|
|
@@ -25,8 +29,28 @@ export function createPersistenceProvider(config) {
|
|
|
25
29
|
path: config.path,
|
|
26
30
|
autoSaveIntervalMs: config.autoSaveIntervalMs,
|
|
27
31
|
});
|
|
32
|
+
case 'supabase':
|
|
33
|
+
if (!config.client) {
|
|
34
|
+
throw new Error('Supabase persistence requires a client');
|
|
35
|
+
}
|
|
36
|
+
return new SupabasePersistenceProvider({
|
|
37
|
+
client: config.client,
|
|
38
|
+
tableName: config.tableName,
|
|
39
|
+
});
|
|
28
40
|
case 'sqlite':
|
|
29
|
-
|
|
41
|
+
if (!config.path) {
|
|
42
|
+
throw new Error('SQLite persistence requires a path');
|
|
43
|
+
}
|
|
44
|
+
if (!config.sqliteDatabase) {
|
|
45
|
+
throw new Error('SQLite persistence requires a Database constructor. ' +
|
|
46
|
+
'Install better-sqlite3 and pass it as sqliteDatabase: ' +
|
|
47
|
+
'import Database from "better-sqlite3"; createPersistenceProvider({ type: "sqlite", path: "./data.db", sqliteDatabase: Database })');
|
|
48
|
+
}
|
|
49
|
+
return new SQLitePersistenceProvider({
|
|
50
|
+
path: config.path,
|
|
51
|
+
Database: config.sqliteDatabase,
|
|
52
|
+
tableName: config.tableName,
|
|
53
|
+
});
|
|
30
54
|
default:
|
|
31
55
|
throw new Error(`Unknown persistence type: ${config.type}`);
|
|
32
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAuB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAkC,MAAM,aAAa,CAAC;AAUxF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAyB,EAAE,CAAC;QAEzC,KAAK,MAAM;YACT,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,IAAI,uBAAuB,CAAC;gBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;aAC9C,CAAC,CAAC;QAEL,KAAK,UAAU;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,2BAA2B,CAAC;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAwB;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QAEL,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,sDAAsD;oBACtD,wDAAwD;oBACxD,mIAAmI,CACpI,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,yBAAyB,CAAC;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,cAAc;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QAEL;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
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 type { ID } from '../common/types.js';
|
|
10
|
+
import type { TrustRecord } from '../trust-engine/index.js';
|
|
11
|
+
import type { PersistenceProvider, TrustRecordQuery } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* SQLite database interface (better-sqlite3 compatible)
|
|
14
|
+
*/
|
|
15
|
+
export interface SQLiteDatabase {
|
|
16
|
+
prepare(sql: string): SQLiteStatement;
|
|
17
|
+
exec(sql: string): void;
|
|
18
|
+
close(): void;
|
|
19
|
+
pragma(pragma: string): unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* SQLite statement interface
|
|
23
|
+
*/
|
|
24
|
+
export interface SQLiteStatement {
|
|
25
|
+
run(...params: unknown[]): {
|
|
26
|
+
changes: number;
|
|
27
|
+
lastInsertRowid: number | bigint;
|
|
28
|
+
};
|
|
29
|
+
get(...params: unknown[]): unknown;
|
|
30
|
+
all(...params: unknown[]): unknown[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SQLite database constructor type
|
|
34
|
+
*/
|
|
35
|
+
export type SQLiteDatabaseConstructor = new (path: string, options?: {
|
|
36
|
+
readonly?: boolean;
|
|
37
|
+
}) => SQLiteDatabase;
|
|
38
|
+
/**
|
|
39
|
+
* SQLite persistence provider configuration
|
|
40
|
+
*/
|
|
41
|
+
export interface SQLitePersistenceConfig {
|
|
42
|
+
/** Path to the SQLite database file */
|
|
43
|
+
path: string;
|
|
44
|
+
/** Database constructor (better-sqlite3) - required as peer dependency */
|
|
45
|
+
Database: SQLiteDatabaseConstructor;
|
|
46
|
+
/** Table name for trust records */
|
|
47
|
+
tableName?: string;
|
|
48
|
+
/** Enable WAL mode for better concurrent performance */
|
|
49
|
+
walMode?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SQLite-based persistence provider
|
|
53
|
+
*
|
|
54
|
+
* Provides durable, ACID-compliant storage for trust records with:
|
|
55
|
+
* - Automatic schema migrations
|
|
56
|
+
* - Indexed queries for fast lookups
|
|
57
|
+
* - WAL mode for concurrent read/write access
|
|
58
|
+
* - Automatic JSON serialization of complex fields
|
|
59
|
+
*/
|
|
60
|
+
export declare class SQLitePersistenceProvider implements PersistenceProvider {
|
|
61
|
+
readonly name = "sqlite";
|
|
62
|
+
private db;
|
|
63
|
+
private config;
|
|
64
|
+
private initialized;
|
|
65
|
+
constructor(config: SQLitePersistenceConfig);
|
|
66
|
+
/**
|
|
67
|
+
* Initialize the SQLite database
|
|
68
|
+
*/
|
|
69
|
+
initialize(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Create the database schema
|
|
72
|
+
*/
|
|
73
|
+
private createSchema;
|
|
74
|
+
/**
|
|
75
|
+
* Ensure database is initialized
|
|
76
|
+
*/
|
|
77
|
+
private ensureInitialized;
|
|
78
|
+
/**
|
|
79
|
+
* Convert a TrustRecord to a database row
|
|
80
|
+
*/
|
|
81
|
+
private recordToRow;
|
|
82
|
+
/**
|
|
83
|
+
* Convert a database row to a TrustRecord
|
|
84
|
+
*/
|
|
85
|
+
private rowToRecord;
|
|
86
|
+
/**
|
|
87
|
+
* Save a trust record (upsert)
|
|
88
|
+
*/
|
|
89
|
+
save(record: TrustRecord): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Get a trust record by entity ID
|
|
92
|
+
*/
|
|
93
|
+
get(entityId: ID): Promise<TrustRecord | undefined>;
|
|
94
|
+
/**
|
|
95
|
+
* Delete a trust record
|
|
96
|
+
*/
|
|
97
|
+
delete(entityId: ID): Promise<boolean>;
|
|
98
|
+
/**
|
|
99
|
+
* List all entity IDs
|
|
100
|
+
*/
|
|
101
|
+
listIds(): Promise<ID[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Query trust records with filtering, sorting, and pagination
|
|
104
|
+
*/
|
|
105
|
+
query(options?: TrustRecordQuery): Promise<TrustRecord[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Check if an entity exists
|
|
108
|
+
*/
|
|
109
|
+
exists(entityId: ID): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Get total count of records
|
|
112
|
+
*/
|
|
113
|
+
count(): Promise<number>;
|
|
114
|
+
/**
|
|
115
|
+
* Clear all records
|
|
116
|
+
*/
|
|
117
|
+
clear(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Close the database connection
|
|
120
|
+
*/
|
|
121
|
+
close(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Get database statistics
|
|
124
|
+
*/
|
|
125
|
+
getStats(): Promise<{
|
|
126
|
+
recordCount: number;
|
|
127
|
+
fileSizeBytes: number | null;
|
|
128
|
+
walMode: boolean;
|
|
129
|
+
}>;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a new SQLite persistence provider
|
|
133
|
+
*/
|
|
134
|
+
export declare function createSQLiteProvider(config: SQLitePersistenceConfig): SQLitePersistenceProvider;
|
|
135
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/persistence/sqlite.ts"],"names":[],"mappings":"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"}
|