family-ai-agent 1.0.6 → 1.0.8
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/.letta/settings.local.json +3 -0
- package/dist/cli/index.js +1 -1
- package/dist/database/adapters/base-adapter.d.ts +81 -0
- package/dist/database/adapters/base-adapter.d.ts.map +1 -0
- package/dist/database/adapters/base-adapter.js +105 -0
- package/dist/database/adapters/base-adapter.js.map +1 -0
- package/dist/database/adapters/index.d.ts +49 -0
- package/dist/database/adapters/index.d.ts.map +1 -0
- package/dist/database/adapters/index.js +200 -0
- package/dist/database/adapters/index.js.map +1 -0
- package/dist/database/adapters/postgres-adapter.d.ts +75 -0
- package/dist/database/adapters/postgres-adapter.d.ts.map +1 -0
- package/dist/database/adapters/postgres-adapter.js +225 -0
- package/dist/database/adapters/postgres-adapter.js.map +1 -0
- package/dist/database/adapters/sqlite-adapter.d.ts +72 -0
- package/dist/database/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/database/adapters/sqlite-adapter.js +368 -0
- package/dist/database/adapters/sqlite-adapter.js.map +1 -0
- package/dist/database/cache/cache-keys.d.ts +180 -0
- package/dist/database/cache/cache-keys.d.ts.map +1 -0
- package/dist/database/cache/cache-keys.js +107 -0
- package/dist/database/cache/cache-keys.js.map +1 -0
- package/dist/database/cache/index.d.ts +24 -0
- package/dist/database/cache/index.d.ts.map +1 -0
- package/dist/database/cache/index.js +34 -0
- package/dist/database/cache/index.js.map +1 -0
- package/dist/database/cache/query-cache.d.ts +67 -0
- package/dist/database/cache/query-cache.d.ts.map +1 -0
- package/dist/database/cache/query-cache.js +177 -0
- package/dist/database/cache/query-cache.js.map +1 -0
- package/dist/database/client.d.ts +63 -4
- package/dist/database/client.d.ts.map +1 -1
- package/dist/database/client.js +147 -59
- package/dist/database/client.js.map +1 -1
- package/dist/database/db-config.d.ts +104 -0
- package/dist/database/db-config.d.ts.map +1 -0
- package/dist/database/db-config.js +167 -0
- package/dist/database/db-config.js.map +1 -0
- package/dist/database/drizzle/index.d.ts +42 -0
- package/dist/database/drizzle/index.d.ts.map +1 -0
- package/dist/database/drizzle/index.js +48 -0
- package/dist/database/drizzle/index.js.map +1 -0
- package/dist/database/drizzle/schema/audit.d.ts +533 -0
- package/dist/database/drizzle/schema/audit.d.ts.map +1 -0
- package/dist/database/drizzle/schema/audit.js +71 -0
- package/dist/database/drizzle/schema/audit.js.map +1 -0
- package/dist/database/drizzle/schema/checkpoints.d.ts +665 -0
- package/dist/database/drizzle/schema/checkpoints.d.ts.map +1 -0
- package/dist/database/drizzle/schema/checkpoints.js +110 -0
- package/dist/database/drizzle/schema/checkpoints.js.map +1 -0
- package/dist/database/drizzle/schema/conversations.d.ts +449 -0
- package/dist/database/drizzle/schema/conversations.d.ts.map +1 -0
- package/dist/database/drizzle/schema/conversations.js +91 -0
- package/dist/database/drizzle/schema/conversations.js.map +1 -0
- package/dist/database/drizzle/schema/documents.d.ts +600 -0
- package/dist/database/drizzle/schema/documents.d.ts.map +1 -0
- package/dist/database/drizzle/schema/documents.js +100 -0
- package/dist/database/drizzle/schema/documents.js.map +1 -0
- package/dist/database/drizzle/schema/index.d.ts +3084 -0
- package/dist/database/drizzle/schema/index.d.ts.map +1 -0
- package/dist/database/drizzle/schema/index.js +46 -0
- package/dist/database/drizzle/schema/index.js.map +1 -0
- package/dist/database/drizzle/schema/memories.d.ts +435 -0
- package/dist/database/drizzle/schema/memories.d.ts.map +1 -0
- package/dist/database/drizzle/schema/memories.js +73 -0
- package/dist/database/drizzle/schema/memories.js.map +1 -0
- package/dist/database/drizzle/schema/tasks.d.ts +565 -0
- package/dist/database/drizzle/schema/tasks.d.ts.map +1 -0
- package/dist/database/drizzle/schema/tasks.js +84 -0
- package/dist/database/drizzle/schema/tasks.js.map +1 -0
- package/dist/database/health/circuit-breaker.d.ts +81 -0
- package/dist/database/health/circuit-breaker.d.ts.map +1 -0
- package/dist/database/health/circuit-breaker.js +184 -0
- package/dist/database/health/circuit-breaker.js.map +1 -0
- package/dist/database/health/health-monitor.d.ts +69 -0
- package/dist/database/health/health-monitor.d.ts.map +1 -0
- package/dist/database/health/health-monitor.js +174 -0
- package/dist/database/health/health-monitor.js.map +1 -0
- package/dist/database/health/index.d.ts +27 -0
- package/dist/database/health/index.d.ts.map +1 -0
- package/dist/database/health/index.js +23 -0
- package/dist/database/health/index.js.map +1 -0
- package/dist/database/index.d.ts +16 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +41 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/migrations/index.d.ts +34 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/migrations/index.js +45 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/migrations/migrator.d.ts +77 -0
- package/dist/database/migrations/migrator.d.ts.map +1 -0
- package/dist/database/migrations/migrator.js +258 -0
- package/dist/database/migrations/migrator.js.map +1 -0
- package/dist/database/migrations/versions/001_initial.d.ts +9 -0
- package/dist/database/migrations/versions/001_initial.d.ts.map +1 -0
- package/dist/database/migrations/versions/001_initial.js +183 -0
- package/dist/database/migrations/versions/001_initial.js.map +1 -0
- package/dist/database/types.d.ts +255 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +8 -0
- package/dist/database/types.js.map +1 -0
- package/dist/database/vector/embedding-cache.d.ts +92 -0
- package/dist/database/vector/embedding-cache.d.ts.map +1 -0
- package/dist/database/vector/embedding-cache.js +185 -0
- package/dist/database/vector/embedding-cache.js.map +1 -0
- package/dist/database/vector/hnsw-index.d.ts +111 -0
- package/dist/database/vector/hnsw-index.d.ts.map +1 -0
- package/dist/database/vector/hnsw-index.js +337 -0
- package/dist/database/vector/hnsw-index.js.map +1 -0
- package/dist/database/vector/index.d.ts +75 -0
- package/dist/database/vector/index.d.ts.map +1 -0
- package/dist/database/vector/index.js +213 -0
- package/dist/database/vector/index.js.map +1 -0
- package/dist/database/vector/similarity.d.ts +67 -0
- package/dist/database/vector/similarity.d.ts.map +1 -0
- package/dist/database/vector/similarity.js +176 -0
- package/dist/database/vector/similarity.js.map +1 -0
- package/package.json +6 -3
- package/src/cli/index.ts +1 -1
- package/src/database/adapters/base-adapter.ts +171 -0
- package/src/database/adapters/index.ts +224 -0
- package/src/database/adapters/postgres-adapter.ts +285 -0
- package/src/database/adapters/sqlite-adapter.ts +420 -0
- package/src/database/cache/cache-keys.ts +150 -0
- package/src/database/cache/index.ts +44 -0
- package/src/database/cache/query-cache.ts +213 -0
- package/src/database/client.ts +166 -64
- package/src/database/db-config.ts +194 -0
- package/src/database/drizzle/index.ts +66 -0
- package/src/database/drizzle/schema/audit.ts +127 -0
- package/src/database/drizzle/schema/checkpoints.ts +164 -0
- package/src/database/drizzle/schema/conversations.ts +138 -0
- package/src/database/drizzle/schema/documents.ts +157 -0
- package/src/database/drizzle/schema/index.ts +139 -0
- package/src/database/drizzle/schema/memories.ts +127 -0
- package/src/database/drizzle/schema/tasks.ts +129 -0
- package/src/database/health/circuit-breaker.ts +214 -0
- package/src/database/health/health-monitor.ts +224 -0
- package/src/database/health/index.ts +41 -0
- package/src/database/index.ts +157 -0
- package/src/database/migrations/index.ts +52 -0
- package/src/database/migrations/migrator.ts +325 -0
- package/src/database/migrations/versions/001_initial.ts +198 -0
- package/src/database/types.ts +324 -0
- package/src/database/vector/embedding-cache.ts +234 -0
- package/src/database/vector/hnsw-index.ts +452 -0
- package/src/database/vector/index.ts +292 -0
- package/src/database/vector/similarity.ts +198 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker
|
|
3
|
+
*
|
|
4
|
+
* Prevents cascade failures by temporarily blocking calls to failing services.
|
|
5
|
+
* Implements the circuit breaker pattern for database resilience.
|
|
6
|
+
*/
|
|
7
|
+
import type { CircuitBreakerState, CircuitBreakerOptions } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when circuit is open
|
|
10
|
+
*/
|
|
11
|
+
export declare class CircuitOpenError extends Error {
|
|
12
|
+
constructor(message?: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Circuit breaker for database operations
|
|
16
|
+
*/
|
|
17
|
+
export declare class CircuitBreaker {
|
|
18
|
+
private state;
|
|
19
|
+
private failureCount;
|
|
20
|
+
private successCount;
|
|
21
|
+
private lastFailureTime;
|
|
22
|
+
private options;
|
|
23
|
+
private stateChangeListeners;
|
|
24
|
+
constructor(options?: Partial<CircuitBreakerOptions>);
|
|
25
|
+
/**
|
|
26
|
+
* Execute a function with circuit breaker protection
|
|
27
|
+
*/
|
|
28
|
+
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Handle successful execution
|
|
31
|
+
*/
|
|
32
|
+
private onSuccess;
|
|
33
|
+
/**
|
|
34
|
+
* Handle failed execution
|
|
35
|
+
*/
|
|
36
|
+
private onFailure;
|
|
37
|
+
/**
|
|
38
|
+
* Transition to a new state
|
|
39
|
+
*/
|
|
40
|
+
private transitionTo;
|
|
41
|
+
/**
|
|
42
|
+
* Register a state change listener
|
|
43
|
+
*/
|
|
44
|
+
onStateChange(listener: (state: CircuitBreakerState) => void): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Get current state
|
|
47
|
+
*/
|
|
48
|
+
getState(): CircuitBreakerState;
|
|
49
|
+
/**
|
|
50
|
+
* Check if circuit is open
|
|
51
|
+
*/
|
|
52
|
+
isOpen(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Check if circuit is half-open
|
|
55
|
+
*/
|
|
56
|
+
isHalfOpen(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Check if circuit is closed
|
|
59
|
+
*/
|
|
60
|
+
isClosed(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Force circuit to open state
|
|
63
|
+
*/
|
|
64
|
+
trip(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Force circuit to closed state
|
|
67
|
+
*/
|
|
68
|
+
reset(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Get circuit breaker statistics
|
|
71
|
+
*/
|
|
72
|
+
getStats(): {
|
|
73
|
+
state: CircuitBreakerState;
|
|
74
|
+
failureCount: number;
|
|
75
|
+
successCount: number;
|
|
76
|
+
lastFailureTime: number | null;
|
|
77
|
+
timeSinceLastFailure: number | null;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export default CircuitBreaker;
|
|
81
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/database/health/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAK9E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,GAAE,MAAkC;CAIxD;AAWD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,oBAAoB,CAAmD;gBAEnE,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIxD;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBlD;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,MAAM,IAAI;IAUzE;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAI/B;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,mBAAmB,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC;CAWF;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker
|
|
3
|
+
*
|
|
4
|
+
* Prevents cascade failures by temporarily blocking calls to failing services.
|
|
5
|
+
* Implements the circuit breaker pattern for database resilience.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '../../utils/logger.js';
|
|
8
|
+
const logger = createLogger('CircuitBreaker');
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when circuit is open
|
|
11
|
+
*/
|
|
12
|
+
export class CircuitOpenError extends Error {
|
|
13
|
+
constructor(message = 'Circuit breaker is open') {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'CircuitOpenError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Default circuit breaker options
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_OPTIONS = {
|
|
22
|
+
failureThreshold: 5,
|
|
23
|
+
resetTimeoutMs: 60000,
|
|
24
|
+
halfOpenMaxAttempts: 3,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Circuit breaker for database operations
|
|
28
|
+
*/
|
|
29
|
+
export class CircuitBreaker {
|
|
30
|
+
state = 'closed';
|
|
31
|
+
failureCount = 0;
|
|
32
|
+
successCount = 0;
|
|
33
|
+
lastFailureTime = 0;
|
|
34
|
+
options;
|
|
35
|
+
stateChangeListeners = [];
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Execute a function with circuit breaker protection
|
|
41
|
+
*/
|
|
42
|
+
async execute(fn) {
|
|
43
|
+
// Check if circuit should transition from open to half-open
|
|
44
|
+
if (this.state === 'open') {
|
|
45
|
+
const timeSinceLastFailure = Date.now() - this.lastFailureTime;
|
|
46
|
+
if (timeSinceLastFailure >= this.options.resetTimeoutMs) {
|
|
47
|
+
this.transitionTo('half-open');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw new CircuitOpenError(`Circuit breaker is open. Retry in ${Math.ceil((this.options.resetTimeoutMs - timeSinceLastFailure) / 1000)} seconds.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const result = await fn();
|
|
55
|
+
this.onSuccess();
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.onFailure();
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Handle successful execution
|
|
65
|
+
*/
|
|
66
|
+
onSuccess() {
|
|
67
|
+
this.failureCount = 0;
|
|
68
|
+
if (this.state === 'half-open') {
|
|
69
|
+
this.successCount++;
|
|
70
|
+
if (this.successCount >= this.options.halfOpenMaxAttempts) {
|
|
71
|
+
this.transitionTo('closed');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Handle failed execution
|
|
77
|
+
*/
|
|
78
|
+
onFailure() {
|
|
79
|
+
this.failureCount++;
|
|
80
|
+
this.lastFailureTime = Date.now();
|
|
81
|
+
this.successCount = 0;
|
|
82
|
+
if (this.state === 'half-open') {
|
|
83
|
+
// Immediately open on failure in half-open state
|
|
84
|
+
this.transitionTo('open');
|
|
85
|
+
}
|
|
86
|
+
else if (this.failureCount >= this.options.failureThreshold) {
|
|
87
|
+
this.transitionTo('open');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Transition to a new state
|
|
92
|
+
*/
|
|
93
|
+
transitionTo(newState) {
|
|
94
|
+
if (this.state === newState)
|
|
95
|
+
return;
|
|
96
|
+
const oldState = this.state;
|
|
97
|
+
this.state = newState;
|
|
98
|
+
if (newState === 'closed') {
|
|
99
|
+
this.failureCount = 0;
|
|
100
|
+
this.successCount = 0;
|
|
101
|
+
}
|
|
102
|
+
else if (newState === 'half-open') {
|
|
103
|
+
this.successCount = 0;
|
|
104
|
+
}
|
|
105
|
+
logger.info('Circuit breaker state changed', {
|
|
106
|
+
from: oldState,
|
|
107
|
+
to: newState,
|
|
108
|
+
});
|
|
109
|
+
// Notify listeners
|
|
110
|
+
for (const listener of this.stateChangeListeners) {
|
|
111
|
+
try {
|
|
112
|
+
listener(newState);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
logger.error('State change listener error', { error });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Register a state change listener
|
|
121
|
+
*/
|
|
122
|
+
onStateChange(listener) {
|
|
123
|
+
this.stateChangeListeners.push(listener);
|
|
124
|
+
return () => {
|
|
125
|
+
const index = this.stateChangeListeners.indexOf(listener);
|
|
126
|
+
if (index >= 0) {
|
|
127
|
+
this.stateChangeListeners.splice(index, 1);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get current state
|
|
133
|
+
*/
|
|
134
|
+
getState() {
|
|
135
|
+
return this.state;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if circuit is open
|
|
139
|
+
*/
|
|
140
|
+
isOpen() {
|
|
141
|
+
return this.state === 'open';
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if circuit is half-open
|
|
145
|
+
*/
|
|
146
|
+
isHalfOpen() {
|
|
147
|
+
return this.state === 'half-open';
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if circuit is closed
|
|
151
|
+
*/
|
|
152
|
+
isClosed() {
|
|
153
|
+
return this.state === 'closed';
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Force circuit to open state
|
|
157
|
+
*/
|
|
158
|
+
trip() {
|
|
159
|
+
this.lastFailureTime = Date.now();
|
|
160
|
+
this.transitionTo('open');
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Force circuit to closed state
|
|
164
|
+
*/
|
|
165
|
+
reset() {
|
|
166
|
+
this.transitionTo('closed');
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get circuit breaker statistics
|
|
170
|
+
*/
|
|
171
|
+
getStats() {
|
|
172
|
+
return {
|
|
173
|
+
state: this.state,
|
|
174
|
+
failureCount: this.failureCount,
|
|
175
|
+
successCount: this.successCount,
|
|
176
|
+
lastFailureTime: this.lastFailureTime || null,
|
|
177
|
+
timeSinceLastFailure: this.lastFailureTime
|
|
178
|
+
? Date.now() - this.lastFailureTime
|
|
179
|
+
: null,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export default CircuitBreaker;
|
|
184
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/database/health/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitor
|
|
3
|
+
*
|
|
4
|
+
* Monitors database connection health and provides status information.
|
|
5
|
+
* Integrates with circuit breaker for resilience.
|
|
6
|
+
*/
|
|
7
|
+
import type { DatabaseAdapter, DatabaseHealth, HealthMonitorOptions } from '../types.js';
|
|
8
|
+
import { CircuitBreaker } from './circuit-breaker.js';
|
|
9
|
+
/**
|
|
10
|
+
* Database health monitor
|
|
11
|
+
*/
|
|
12
|
+
export declare class HealthMonitor {
|
|
13
|
+
private adapter;
|
|
14
|
+
private circuitBreaker;
|
|
15
|
+
private options;
|
|
16
|
+
private checkInterval;
|
|
17
|
+
private lastStatus;
|
|
18
|
+
private consecutiveErrors;
|
|
19
|
+
private isRunning;
|
|
20
|
+
constructor(adapter: DatabaseAdapter, circuitBreaker: CircuitBreaker, options?: Partial<HealthMonitorOptions>);
|
|
21
|
+
/**
|
|
22
|
+
* Start health monitoring
|
|
23
|
+
*/
|
|
24
|
+
start(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Stop health monitoring
|
|
27
|
+
*/
|
|
28
|
+
stop(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Perform a health check
|
|
31
|
+
*/
|
|
32
|
+
check(): Promise<DatabaseHealth>;
|
|
33
|
+
/**
|
|
34
|
+
* Determine overall health status
|
|
35
|
+
*/
|
|
36
|
+
private determineStatus;
|
|
37
|
+
/**
|
|
38
|
+
* Get current health status
|
|
39
|
+
*/
|
|
40
|
+
getStatus(): DatabaseHealth | null;
|
|
41
|
+
/**
|
|
42
|
+
* Check if database is healthy
|
|
43
|
+
*/
|
|
44
|
+
isHealthy(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Check if database is degraded
|
|
47
|
+
*/
|
|
48
|
+
isDegraded(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Check if database is unhealthy
|
|
51
|
+
*/
|
|
52
|
+
isUnhealthy(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Wait for database to become healthy
|
|
55
|
+
*/
|
|
56
|
+
waitForHealthy(timeoutMs?: number): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Get health summary for API responses
|
|
59
|
+
*/
|
|
60
|
+
getSummary(): {
|
|
61
|
+
healthy: boolean;
|
|
62
|
+
status: string;
|
|
63
|
+
database: string;
|
|
64
|
+
latencyMs: number;
|
|
65
|
+
circuitBreaker: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export default HealthMonitor;
|
|
69
|
+
//# sourceMappingURL=health-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../../src/database/health/health-monitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAatD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAuB;IAEtC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,SAAS,CAAkB;gBAGjC,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAO7C;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAgDtC;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,SAAS,IAAI,cAAc,GAAG,IAAI;IAIlC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,cAAc,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjE;;OAEG;IACH,UAAU,IAAI;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB;CAWF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitor
|
|
3
|
+
*
|
|
4
|
+
* Monitors database connection health and provides status information.
|
|
5
|
+
* Integrates with circuit breaker for resilience.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '../../utils/logger.js';
|
|
8
|
+
const logger = createLogger('HealthMonitor');
|
|
9
|
+
/**
|
|
10
|
+
* Default health monitor options
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_OPTIONS = {
|
|
13
|
+
checkIntervalMs: 30000,
|
|
14
|
+
errorThreshold: 3,
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Database health monitor
|
|
18
|
+
*/
|
|
19
|
+
export class HealthMonitor {
|
|
20
|
+
adapter;
|
|
21
|
+
circuitBreaker;
|
|
22
|
+
options;
|
|
23
|
+
checkInterval = null;
|
|
24
|
+
lastStatus = null;
|
|
25
|
+
consecutiveErrors = 0;
|
|
26
|
+
isRunning = false;
|
|
27
|
+
constructor(adapter, circuitBreaker, options = {}) {
|
|
28
|
+
this.adapter = adapter;
|
|
29
|
+
this.circuitBreaker = circuitBreaker;
|
|
30
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start health monitoring
|
|
34
|
+
*/
|
|
35
|
+
start() {
|
|
36
|
+
if (this.isRunning)
|
|
37
|
+
return;
|
|
38
|
+
this.isRunning = true;
|
|
39
|
+
this.check(); // Initial check
|
|
40
|
+
this.checkInterval = setInterval(() => this.check(), this.options.checkIntervalMs);
|
|
41
|
+
logger.info('Health monitor started', {
|
|
42
|
+
intervalMs: this.options.checkIntervalMs,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Stop health monitoring
|
|
47
|
+
*/
|
|
48
|
+
stop() {
|
|
49
|
+
if (!this.isRunning)
|
|
50
|
+
return;
|
|
51
|
+
if (this.checkInterval) {
|
|
52
|
+
clearInterval(this.checkInterval);
|
|
53
|
+
this.checkInterval = null;
|
|
54
|
+
}
|
|
55
|
+
this.isRunning = false;
|
|
56
|
+
logger.info('Health monitor stopped');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Perform a health check
|
|
60
|
+
*/
|
|
61
|
+
async check() {
|
|
62
|
+
const startTime = Date.now();
|
|
63
|
+
const errors = [];
|
|
64
|
+
let isHealthy = false;
|
|
65
|
+
try {
|
|
66
|
+
isHealthy = await this.circuitBreaker.execute(async () => {
|
|
67
|
+
return this.adapter.healthCheck();
|
|
68
|
+
});
|
|
69
|
+
if (isHealthy) {
|
|
70
|
+
this.consecutiveErrors = 0;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.consecutiveErrors++;
|
|
74
|
+
errors.push('Health check returned false');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
this.consecutiveErrors++;
|
|
79
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
80
|
+
errors.push(message);
|
|
81
|
+
logger.warn('Health check failed', { error: message });
|
|
82
|
+
}
|
|
83
|
+
const latencyMs = Date.now() - startTime;
|
|
84
|
+
const status = this.determineStatus(errors.length > 0, latencyMs);
|
|
85
|
+
this.lastStatus = {
|
|
86
|
+
status,
|
|
87
|
+
type: this.adapter.type,
|
|
88
|
+
latencyMs,
|
|
89
|
+
poolStats: this.adapter.getPoolStats?.(),
|
|
90
|
+
circuitState: this.circuitBreaker.getState(),
|
|
91
|
+
lastCheck: new Date(),
|
|
92
|
+
errors,
|
|
93
|
+
};
|
|
94
|
+
// Log status changes
|
|
95
|
+
if (status !== 'healthy') {
|
|
96
|
+
logger.warn('Database health degraded', {
|
|
97
|
+
status,
|
|
98
|
+
errors,
|
|
99
|
+
consecutiveErrors: this.consecutiveErrors,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return this.lastStatus;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Determine overall health status
|
|
106
|
+
*/
|
|
107
|
+
determineStatus(hasErrors, latencyMs) {
|
|
108
|
+
// Unhealthy if circuit is open or too many consecutive errors
|
|
109
|
+
if (this.circuitBreaker.isOpen() ||
|
|
110
|
+
this.consecutiveErrors >= this.options.errorThreshold) {
|
|
111
|
+
return 'unhealthy';
|
|
112
|
+
}
|
|
113
|
+
// Degraded if circuit is half-open, has errors, or high latency
|
|
114
|
+
if (this.circuitBreaker.isHalfOpen() ||
|
|
115
|
+
hasErrors ||
|
|
116
|
+
latencyMs > 1000) {
|
|
117
|
+
return 'degraded';
|
|
118
|
+
}
|
|
119
|
+
return 'healthy';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get current health status
|
|
123
|
+
*/
|
|
124
|
+
getStatus() {
|
|
125
|
+
return this.lastStatus;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if database is healthy
|
|
129
|
+
*/
|
|
130
|
+
isHealthy() {
|
|
131
|
+
return this.lastStatus?.status === 'healthy';
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if database is degraded
|
|
135
|
+
*/
|
|
136
|
+
isDegraded() {
|
|
137
|
+
return this.lastStatus?.status === 'degraded';
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if database is unhealthy
|
|
141
|
+
*/
|
|
142
|
+
isUnhealthy() {
|
|
143
|
+
return this.lastStatus?.status === 'unhealthy';
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Wait for database to become healthy
|
|
147
|
+
*/
|
|
148
|
+
async waitForHealthy(timeoutMs = 30000) {
|
|
149
|
+
const startTime = Date.now();
|
|
150
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
151
|
+
const status = await this.check();
|
|
152
|
+
if (status.status === 'healthy') {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get health summary for API responses
|
|
161
|
+
*/
|
|
162
|
+
getSummary() {
|
|
163
|
+
const status = this.lastStatus;
|
|
164
|
+
return {
|
|
165
|
+
healthy: status?.status === 'healthy',
|
|
166
|
+
status: status?.status ?? 'unknown',
|
|
167
|
+
database: this.adapter.type,
|
|
168
|
+
latencyMs: status?.latencyMs ?? -1,
|
|
169
|
+
circuitBreaker: this.circuitBreaker.getState(),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export default HealthMonitor;
|
|
174
|
+
//# sourceMappingURL=health-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-monitor.js","sourceRoot":"","sources":["../../../src/database/health/health-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitoring Exports
|
|
3
|
+
*
|
|
4
|
+
* Central export for health monitoring and circuit breaker functionality.
|
|
5
|
+
*/
|
|
6
|
+
export { CircuitBreaker, CircuitOpenError } from './circuit-breaker.js';
|
|
7
|
+
export { HealthMonitor } from './health-monitor.js';
|
|
8
|
+
import { CircuitBreaker } from './circuit-breaker.js';
|
|
9
|
+
import { HealthMonitor } from './health-monitor.js';
|
|
10
|
+
import type { DatabaseAdapter, CircuitBreakerOptions, HealthMonitorOptions } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a health monitoring system for an adapter
|
|
13
|
+
*/
|
|
14
|
+
export declare function createHealthSystem(adapter: DatabaseAdapter, options?: {
|
|
15
|
+
circuitBreaker?: Partial<CircuitBreakerOptions>;
|
|
16
|
+
healthMonitor?: Partial<HealthMonitorOptions>;
|
|
17
|
+
}): {
|
|
18
|
+
circuitBreaker: CircuitBreaker;
|
|
19
|
+
healthMonitor: HealthMonitor;
|
|
20
|
+
};
|
|
21
|
+
declare const _default: {
|
|
22
|
+
CircuitBreaker: typeof CircuitBreaker;
|
|
23
|
+
HealthMonitor: typeof HealthMonitor;
|
|
24
|
+
createHealthSystem: typeof createHealthSystem;
|
|
25
|
+
};
|
|
26
|
+
export default _default;
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/health/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhG;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC1C,GACL;IACD,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;CAC9B,CASA;;;;;;AAED,wBAIE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitoring Exports
|
|
3
|
+
*
|
|
4
|
+
* Central export for health monitoring and circuit breaker functionality.
|
|
5
|
+
*/
|
|
6
|
+
export { CircuitBreaker, CircuitOpenError } from './circuit-breaker.js';
|
|
7
|
+
export { HealthMonitor } from './health-monitor.js';
|
|
8
|
+
import { CircuitBreaker } from './circuit-breaker.js';
|
|
9
|
+
import { HealthMonitor } from './health-monitor.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a health monitoring system for an adapter
|
|
12
|
+
*/
|
|
13
|
+
export function createHealthSystem(adapter, options = {}) {
|
|
14
|
+
const circuitBreaker = new CircuitBreaker(options.circuitBreaker);
|
|
15
|
+
const healthMonitor = new HealthMonitor(adapter, circuitBreaker, options.healthMonitor);
|
|
16
|
+
return { circuitBreaker, healthMonitor };
|
|
17
|
+
}
|
|
18
|
+
export default {
|
|
19
|
+
CircuitBreaker,
|
|
20
|
+
HealthMonitor,
|
|
21
|
+
createHealthSystem,
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/health/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,UAGI,EAAE;IAKN,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,OAAO,EACP,cAAc,EACd,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,eAAe;IACb,cAAc;IACd,aAAa;IACb,kBAAkB;CACnB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Layer
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the database abstraction layer.
|
|
5
|
+
* Provides unified access to PostgreSQL and SQLite with auto-detection.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export { getDatabaseConfig, loadDatabaseConfig, buildPostgresUrl, getDefaultSqlitePath } from './db-config.js';
|
|
9
|
+
export { getAdapter, closeAdapter, resetAdapter, detectDatabase, isAdapterInitialized, getAdapterType, PostgresAdapter, SQLiteAdapter, BaseAdapter, } from './adapters/index.js';
|
|
10
|
+
export { createPgDrizzle, createSqliteDrizzle, isPgDrizzle, isSqliteDrizzle, type DrizzlePgInstance, type DrizzleSqliteInstance, type DrizzleInstance, conversationsPg, messagesPg, conversationsSqlite, messagesSqlite, type ConversationPg, type NewConversationPg, type MessagePg, type NewMessagePg, type ConversationSqlite, type NewConversationSqlite, type MessageSqlite, type NewMessageSqlite, type Conversation, type NewConversation, type Message, type NewMessage, longTermMemoriesPg, longTermMemoriesSqlite, type LongTermMemoryPg, type NewLongTermMemoryPg, type LongTermMemorySqlite, type NewLongTermMemorySqlite, type LongTermMemory, type NewLongTermMemory, type ParsedMemory, documentsPg, documentChunksPg, documentsSqlite, documentChunksSqlite, type DocumentPg, type NewDocumentPg, type DocumentChunkPg, type NewDocumentChunkPg, type DocumentSqlite, type NewDocumentSqlite, type DocumentChunkSqlite, type NewDocumentChunkSqlite, type Document, type NewDocument, type DocumentChunk, type NewDocumentChunk, type ParsedDocumentChunk, checkpointsPg, checkpointWritesPg, checkpointsSqlite, checkpointWritesSqlite, type CheckpointPg, type NewCheckpointPg, type CheckpointWritePg, type NewCheckpointWritePg, type CheckpointSqlite, type NewCheckpointSqlite, type CheckpointWriteSqlite, type NewCheckpointWriteSqlite, type Checkpoint, type NewCheckpoint, type CheckpointWrite, type NewCheckpointWrite, auditLogsPg, auditLogsSqlite, type AuditLogPg, type NewAuditLogPg, type AuditLogSqlite, type NewAuditLogSqlite, type AuditLog, type NewAuditLog, type AuditStatus, tasksPg, tasksSqlite, type TaskPg, type NewTaskPg, type TaskSqlite, type NewTaskSqlite, type Task, type NewTask, TaskPriority, type TaskPriorityLevel, pgSchema, sqliteSchema, } from './drizzle/index.js';
|
|
11
|
+
export { HNSWIndex, EmbeddingCache, PgVectorSearchEngine, SqliteVectorSearchEngine, createVectorSearchEngine, cosineSimilarity, euclideanDistance, parseEmbedding, serializeEmbedding, } from './vector/index.js';
|
|
12
|
+
export { Migrator, createMigrator, runMigrations, getCurrentVersion, allMigrations } from './migrations/index.js';
|
|
13
|
+
export { CircuitBreaker, CircuitOpenError, HealthMonitor, createHealthSystem } from './health/index.js';
|
|
14
|
+
export { QueryCache, getQueryCache, resetQueryCache, cacheKeys, invalidationPatterns } from './cache/index.js';
|
|
15
|
+
export { initDatabase, closePool, query, transaction, getClient, healthCheck, getPool, } from './client.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Layer
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the database abstraction layer.
|
|
5
|
+
* Provides unified access to PostgreSQL and SQLite with auto-detection.
|
|
6
|
+
*/
|
|
7
|
+
// Core types
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
// Configuration
|
|
10
|
+
export { getDatabaseConfig, loadDatabaseConfig, buildPostgresUrl, getDefaultSqlitePath } from './db-config.js';
|
|
11
|
+
// Adapters
|
|
12
|
+
export { getAdapter, closeAdapter, resetAdapter, detectDatabase, isAdapterInitialized, getAdapterType, PostgresAdapter, SQLiteAdapter, BaseAdapter, } from './adapters/index.js';
|
|
13
|
+
// Drizzle ORM (exclude duplicate types already exported from types.js)
|
|
14
|
+
export {
|
|
15
|
+
// Drizzle factories
|
|
16
|
+
createPgDrizzle, createSqliteDrizzle, isPgDrizzle, isSqliteDrizzle,
|
|
17
|
+
// Conversations
|
|
18
|
+
conversationsPg, messagesPg, conversationsSqlite, messagesSqlite,
|
|
19
|
+
// Long-term memories (excluding MemoryType - already in types.js)
|
|
20
|
+
longTermMemoriesPg, longTermMemoriesSqlite,
|
|
21
|
+
// Documents
|
|
22
|
+
documentsPg, documentChunksPg, documentsSqlite, documentChunksSqlite,
|
|
23
|
+
// Checkpoints
|
|
24
|
+
checkpointsPg, checkpointWritesPg, checkpointsSqlite, checkpointWritesSqlite,
|
|
25
|
+
// Audit logs (excluding AuditActionType - already in types.js)
|
|
26
|
+
auditLogsPg, auditLogsSqlite,
|
|
27
|
+
// Tasks (excluding TaskStatus - already in types.js)
|
|
28
|
+
tasksPg, tasksSqlite, TaskPriority,
|
|
29
|
+
// Schema helpers
|
|
30
|
+
pgSchema, sqliteSchema, } from './drizzle/index.js';
|
|
31
|
+
// Vector search
|
|
32
|
+
export { HNSWIndex, EmbeddingCache, PgVectorSearchEngine, SqliteVectorSearchEngine, createVectorSearchEngine, cosineSimilarity, euclideanDistance, parseEmbedding, serializeEmbedding, } from './vector/index.js';
|
|
33
|
+
// Migrations
|
|
34
|
+
export { Migrator, createMigrator, runMigrations, getCurrentVersion, allMigrations } from './migrations/index.js';
|
|
35
|
+
// Health monitoring
|
|
36
|
+
export { CircuitBreaker, CircuitOpenError, HealthMonitor, createHealthSystem } from './health/index.js';
|
|
37
|
+
// Caching
|
|
38
|
+
export { QueryCache, getQueryCache, resetQueryCache, cacheKeys, invalidationPatterns } from './cache/index.js';
|
|
39
|
+
// Re-export client functions for backward compatibility
|
|
40
|
+
export { initDatabase, closePool, query, transaction, getClient, healthCheck, getPool, } from './client.js';
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE/G,WAAW;AACX,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AACvE,OAAO;AACL,oBAAoB;AACpB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,eAAe;AAKf,gBAAgB;AAChB,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,cAAc;AAad,kEAAkE;AAClE,kBAAkB,EAClB,sBAAsB;AAQtB,YAAY;AACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,oBAAoB;AAcpB,cAAc;AACd,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB;AAatB,+DAA+D;AAC/D,WAAW,EACX,eAAe;AAQf,qDAAqD;AACrD,OAAO,EACP,WAAW,EAOX,YAAY;AAEZ,iBAAiB;AACjB,QAAQ,EACR,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAElH,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExG,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/G,wDAAwD;AACxD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,OAAO,GACR,MAAM,aAAa,CAAC"}
|