agentic-qe 1.8.3 → 1.8.4
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/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
- package/CHANGELOG.md +220 -0
- package/README.md +36 -3
- package/config/constitution.schema.json +423 -0
- package/config/otel-collector.yaml +234 -0
- package/dist/cli/commands/init-claude-md-template.js +3 -3
- package/dist/constitution/index.d.ts +105 -0
- package/dist/constitution/index.d.ts.map +1 -0
- package/dist/constitution/index.js +207 -0
- package/dist/constitution/index.js.map +1 -0
- package/dist/constitution/loader.d.ts +141 -0
- package/dist/constitution/loader.d.ts.map +1 -0
- package/dist/constitution/loader.js +515 -0
- package/dist/constitution/loader.js.map +1 -0
- package/dist/constitution/schema.d.ts +409 -0
- package/dist/constitution/schema.d.ts.map +1 -0
- package/dist/constitution/schema.js +71 -0
- package/dist/constitution/schema.js.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.js +270 -0
- package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +18 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +96 -11
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +12 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/mcp/handlers/memory/memory-backup.js +6 -6
- package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -38
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -4
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/persistence/event-store.d.ts +162 -0
- package/dist/persistence/event-store.d.ts.map +1 -0
- package/dist/persistence/event-store.js +315 -0
- package/dist/persistence/event-store.js.map +1 -0
- package/dist/persistence/index.d.ts +145 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +227 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/metrics-aggregator.d.ts +187 -0
- package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
- package/dist/persistence/metrics-aggregator.js +495 -0
- package/dist/persistence/metrics-aggregator.js.map +1 -0
- package/dist/persistence/reasoning-store.d.ts +178 -0
- package/dist/persistence/reasoning-store.d.ts.map +1 -0
- package/dist/persistence/reasoning-store.js +440 -0
- package/dist/persistence/reasoning-store.js.map +1 -0
- package/dist/persistence/schema.d.ts +181 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +186 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/telemetry/bootstrap.d.ts +67 -0
- package/dist/telemetry/bootstrap.d.ts.map +1 -0
- package/dist/telemetry/bootstrap.js +320 -0
- package/dist/telemetry/bootstrap.js.map +1 -0
- package/dist/telemetry/index.d.ts +16 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +84 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.js +213 -0
- package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
- package/dist/telemetry/metrics/index.d.ts +51 -0
- package/dist/telemetry/metrics/index.d.ts.map +1 -0
- package/dist/telemetry/metrics/index.js +100 -0
- package/dist/telemetry/metrics/index.js.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.js +259 -0
- package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
- package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
- package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/system-metrics.js +380 -0
- package/dist/telemetry/metrics/system-metrics.js.map +1 -0
- package/dist/telemetry/types.d.ts +195 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +90 -0
- package/dist/telemetry/types.js.map +1 -0
- package/package.json +18 -2
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Event store for telemetry and event history persistence
|
|
4
|
+
* @module persistence/event-store
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.EventStore = void 0;
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
const schema_1 = require("./schema");
|
|
10
|
+
/**
|
|
11
|
+
* EventStore provides persistence for telemetry events
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const store = new EventStore({ dbPath: './data/events.db' });
|
|
16
|
+
*
|
|
17
|
+
* // Record an event
|
|
18
|
+
* const event = await store.recordEvent({
|
|
19
|
+
* agent_id: 'test-generator',
|
|
20
|
+
* event_type: 'test_generated',
|
|
21
|
+
* payload: { testCount: 10, coverage: 85 },
|
|
22
|
+
* session_id: 'session-123'
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Query events
|
|
26
|
+
* const agentEvents = store.getEventsByAgent('test-generator');
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
class EventStore {
|
|
30
|
+
/**
|
|
31
|
+
* Create a new EventStore instance
|
|
32
|
+
* @param config - Persistence configuration
|
|
33
|
+
*/
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
this.config = { ...schema_1.DEFAULT_PERSISTENCE_CONFIG, ...config };
|
|
36
|
+
this.db = (0, schema_1.createDatabase)(this.config);
|
|
37
|
+
this.statements = this.prepareStatements();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Prepare SQL statements for performance
|
|
41
|
+
*/
|
|
42
|
+
prepareStatements() {
|
|
43
|
+
return {
|
|
44
|
+
insert: this.db.prepare(`
|
|
45
|
+
INSERT INTO events (id, timestamp, agent_id, event_type, payload, correlation_id, session_id)
|
|
46
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
47
|
+
`),
|
|
48
|
+
getById: this.db.prepare(`
|
|
49
|
+
SELECT * FROM events WHERE id = ?
|
|
50
|
+
`),
|
|
51
|
+
getByAgent: this.db.prepare(`
|
|
52
|
+
SELECT * FROM events WHERE agent_id = ?
|
|
53
|
+
ORDER BY timestamp DESC
|
|
54
|
+
LIMIT ? OFFSET ?
|
|
55
|
+
`),
|
|
56
|
+
getByType: this.db.prepare(`
|
|
57
|
+
SELECT * FROM events WHERE event_type = ?
|
|
58
|
+
ORDER BY timestamp DESC
|
|
59
|
+
LIMIT ? OFFSET ?
|
|
60
|
+
`),
|
|
61
|
+
getByTimeRange: this.db.prepare(`
|
|
62
|
+
SELECT * FROM events
|
|
63
|
+
WHERE timestamp >= ? AND timestamp <= ?
|
|
64
|
+
ORDER BY timestamp DESC
|
|
65
|
+
LIMIT ? OFFSET ?
|
|
66
|
+
`),
|
|
67
|
+
getBySession: this.db.prepare(`
|
|
68
|
+
SELECT * FROM events WHERE session_id = ?
|
|
69
|
+
ORDER BY timestamp ASC
|
|
70
|
+
`),
|
|
71
|
+
getByCorrelation: this.db.prepare(`
|
|
72
|
+
SELECT * FROM events WHERE correlation_id = ?
|
|
73
|
+
ORDER BY timestamp ASC
|
|
74
|
+
`),
|
|
75
|
+
countByAgent: this.db.prepare(`
|
|
76
|
+
SELECT COUNT(*) as count FROM events WHERE agent_id = ?
|
|
77
|
+
`),
|
|
78
|
+
countByType: this.db.prepare(`
|
|
79
|
+
SELECT COUNT(*) as count FROM events WHERE event_type = ?
|
|
80
|
+
`),
|
|
81
|
+
deleteOlderThan: this.db.prepare(`
|
|
82
|
+
DELETE FROM events WHERE timestamp < ?
|
|
83
|
+
`),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Deserialize event record from database row
|
|
88
|
+
*/
|
|
89
|
+
deserializeEvent(row) {
|
|
90
|
+
return {
|
|
91
|
+
id: row.id,
|
|
92
|
+
timestamp: row.timestamp,
|
|
93
|
+
agent_id: row.agent_id,
|
|
94
|
+
event_type: row.event_type,
|
|
95
|
+
payload: JSON.parse(row.payload),
|
|
96
|
+
correlation_id: row.correlation_id,
|
|
97
|
+
session_id: row.session_id,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Record a new event
|
|
102
|
+
* @param input - Event creation input
|
|
103
|
+
* @returns Created event record
|
|
104
|
+
*/
|
|
105
|
+
recordEvent(input) {
|
|
106
|
+
const id = (0, uuid_1.v4)();
|
|
107
|
+
const timestamp = new Date().toISOString();
|
|
108
|
+
const payload = JSON.stringify(input.payload);
|
|
109
|
+
let retries = this.config.maxRetries || 3;
|
|
110
|
+
while (retries > 0) {
|
|
111
|
+
try {
|
|
112
|
+
this.statements.insert.run(id, timestamp, input.agent_id, input.event_type, payload, input.correlation_id || null, input.session_id);
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
retries--;
|
|
117
|
+
if (retries === 0) {
|
|
118
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
119
|
+
throw new Error(`Failed to record event after retries: ${errorMessage}`);
|
|
120
|
+
}
|
|
121
|
+
// Small delay before retry
|
|
122
|
+
const start = Date.now();
|
|
123
|
+
while (Date.now() - start < 100) {
|
|
124
|
+
// Busy wait for synchronous retry
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
id,
|
|
130
|
+
timestamp,
|
|
131
|
+
agent_id: input.agent_id,
|
|
132
|
+
event_type: input.event_type,
|
|
133
|
+
payload: input.payload,
|
|
134
|
+
correlation_id: input.correlation_id || null,
|
|
135
|
+
session_id: input.session_id,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get event by ID
|
|
140
|
+
* @param id - Event ID
|
|
141
|
+
* @returns Event record or null
|
|
142
|
+
*/
|
|
143
|
+
getEventById(id) {
|
|
144
|
+
const row = this.statements.getById.get(id);
|
|
145
|
+
return row ? this.deserializeEvent(row) : null;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get events by agent ID
|
|
149
|
+
* @param agentId - Agent identifier
|
|
150
|
+
* @param options - Query options
|
|
151
|
+
* @returns Array of event records
|
|
152
|
+
*/
|
|
153
|
+
getEventsByAgent(agentId, options = {}) {
|
|
154
|
+
const { limit = 100, offset = 0 } = options;
|
|
155
|
+
const rows = this.statements.getByAgent.all(agentId, limit, offset);
|
|
156
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get events by event type
|
|
160
|
+
* @param eventType - Event type to filter
|
|
161
|
+
* @param options - Query options
|
|
162
|
+
* @returns Array of event records
|
|
163
|
+
*/
|
|
164
|
+
getEventsByType(eventType, options = {}) {
|
|
165
|
+
const { limit = 100, offset = 0 } = options;
|
|
166
|
+
const rows = this.statements.getByType.all(eventType, limit, offset);
|
|
167
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get events within a time range
|
|
171
|
+
* @param timeRange - Start and end timestamps
|
|
172
|
+
* @param options - Query options
|
|
173
|
+
* @returns Array of event records
|
|
174
|
+
*/
|
|
175
|
+
getEventsByTimeRange(timeRange, options = {}) {
|
|
176
|
+
const { limit = 1000, offset = 0 } = options;
|
|
177
|
+
const rows = this.statements.getByTimeRange.all(timeRange.start, timeRange.end, limit, offset);
|
|
178
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get all events for a session
|
|
182
|
+
* @param sessionId - Session identifier
|
|
183
|
+
* @returns Array of event records in chronological order
|
|
184
|
+
*/
|
|
185
|
+
getEventsBySession(sessionId) {
|
|
186
|
+
const rows = this.statements.getBySession.all(sessionId);
|
|
187
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get correlated events
|
|
191
|
+
* @param correlationId - Correlation identifier
|
|
192
|
+
* @returns Array of correlated events
|
|
193
|
+
*/
|
|
194
|
+
getEventsByCorrelation(correlationId) {
|
|
195
|
+
const rows = this.statements.getByCorrelation.all(correlationId);
|
|
196
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Count events by agent
|
|
200
|
+
* @param agentId - Agent identifier
|
|
201
|
+
* @returns Event count
|
|
202
|
+
*/
|
|
203
|
+
countEventsByAgent(agentId) {
|
|
204
|
+
const result = this.statements.countByAgent.get(agentId);
|
|
205
|
+
return result.count;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Count events by type
|
|
209
|
+
* @param eventType - Event type
|
|
210
|
+
* @returns Event count
|
|
211
|
+
*/
|
|
212
|
+
countEventsByType(eventType) {
|
|
213
|
+
const result = this.statements.countByType.get(eventType);
|
|
214
|
+
return result.count;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get event counts grouped by agent
|
|
218
|
+
* @returns Map of agent ID to event count
|
|
219
|
+
*/
|
|
220
|
+
getEventCountsByAgent() {
|
|
221
|
+
const rows = this.db.prepare(`
|
|
222
|
+
SELECT agent_id, COUNT(*) as count
|
|
223
|
+
FROM events
|
|
224
|
+
GROUP BY agent_id
|
|
225
|
+
ORDER BY count DESC
|
|
226
|
+
`).all();
|
|
227
|
+
const counts = new Map();
|
|
228
|
+
for (const row of rows) {
|
|
229
|
+
counts.set(row.agent_id, row.count);
|
|
230
|
+
}
|
|
231
|
+
return counts;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Get event counts grouped by type
|
|
235
|
+
* @returns Map of event type to count
|
|
236
|
+
*/
|
|
237
|
+
getEventCountsByType() {
|
|
238
|
+
const rows = this.db.prepare(`
|
|
239
|
+
SELECT event_type, COUNT(*) as count
|
|
240
|
+
FROM events
|
|
241
|
+
GROUP BY event_type
|
|
242
|
+
ORDER BY count DESC
|
|
243
|
+
`).all();
|
|
244
|
+
const counts = new Map();
|
|
245
|
+
for (const row of rows) {
|
|
246
|
+
counts.set(row.event_type, row.count);
|
|
247
|
+
}
|
|
248
|
+
return counts;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get recent events with pagination
|
|
252
|
+
* @param limit - Maximum number of events
|
|
253
|
+
* @param offset - Number of events to skip
|
|
254
|
+
* @returns Array of recent events
|
|
255
|
+
*/
|
|
256
|
+
getRecentEvents(limit = 50, offset = 0) {
|
|
257
|
+
const rows = this.db.prepare(`
|
|
258
|
+
SELECT * FROM events
|
|
259
|
+
ORDER BY timestamp DESC
|
|
260
|
+
LIMIT ? OFFSET ?
|
|
261
|
+
`).all(limit, offset);
|
|
262
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Search events by payload content
|
|
266
|
+
* @param searchKey - Key to search in payload
|
|
267
|
+
* @param searchValue - Value to match
|
|
268
|
+
* @param limit - Maximum results
|
|
269
|
+
* @returns Matching events
|
|
270
|
+
*/
|
|
271
|
+
searchByPayload(searchKey, searchValue, limit = 100) {
|
|
272
|
+
// SQLite JSON extraction
|
|
273
|
+
const pattern = `%"${searchKey}":${JSON.stringify(searchValue)}%`;
|
|
274
|
+
const rows = this.db.prepare(`
|
|
275
|
+
SELECT * FROM events
|
|
276
|
+
WHERE payload LIKE ?
|
|
277
|
+
ORDER BY timestamp DESC
|
|
278
|
+
LIMIT ?
|
|
279
|
+
`).all(pattern, limit);
|
|
280
|
+
return rows.map(row => this.deserializeEvent(row));
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Delete events older than specified date
|
|
284
|
+
* @param olderThan - ISO timestamp cutoff
|
|
285
|
+
* @returns Number of deleted events
|
|
286
|
+
*/
|
|
287
|
+
deleteEventsOlderThan(olderThan) {
|
|
288
|
+
const result = this.statements.deleteOlderThan.run(olderThan);
|
|
289
|
+
return result.changes;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get database statistics
|
|
293
|
+
* @returns Statistics about stored events
|
|
294
|
+
*/
|
|
295
|
+
getStatistics() {
|
|
296
|
+
const stats = this.db.prepare(`
|
|
297
|
+
SELECT
|
|
298
|
+
COUNT(*) as totalEvents,
|
|
299
|
+
COUNT(DISTINCT agent_id) as uniqueAgents,
|
|
300
|
+
COUNT(DISTINCT session_id) as uniqueSessions,
|
|
301
|
+
MIN(timestamp) as oldestEvent,
|
|
302
|
+
MAX(timestamp) as newestEvent
|
|
303
|
+
FROM events
|
|
304
|
+
`).get();
|
|
305
|
+
return stats;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Close database connection
|
|
309
|
+
*/
|
|
310
|
+
close() {
|
|
311
|
+
(0, schema_1.closeDatabase)(this.db);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
exports.EventStore = EventStore;
|
|
315
|
+
//# sourceMappingURL=event-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/persistence/event-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Main entry point for AQE persistence layer
|
|
3
|
+
* @module persistence
|
|
4
|
+
*/
|
|
5
|
+
export { EventType, EventRecord, CreateEventInput, ThoughtType, ChainStatus, ReasoningChain, ReasoningStep, ReasoningChainWithSteps, StartChainInput, AddStepInput, AggregationPeriod, QualityMetric, AggregatedMetric, RecordMetricInput, MetricTrendPoint, AgentPerformance, PersistenceConfig, DEFAULT_PERSISTENCE_CONFIG, CURRENT_SCHEMA_VERSION, createDatabase, closeDatabase, initializeSchema, } from './schema';
|
|
6
|
+
export { EventStore, EventQueryOptions, TimeRange } from './event-store';
|
|
7
|
+
export { ReasoningStore, ChainQueryOptions } from './reasoning-store';
|
|
8
|
+
export { MetricsAggregator, MetricQueryOptions, AggregationConfig } from './metrics-aggregator';
|
|
9
|
+
import { EventStore } from './event-store';
|
|
10
|
+
import { ReasoningStore } from './reasoning-store';
|
|
11
|
+
import { MetricsAggregator } from './metrics-aggregator';
|
|
12
|
+
/**
|
|
13
|
+
* Options for persistence initialization
|
|
14
|
+
*/
|
|
15
|
+
export interface InitPersistenceOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Base directory for database files
|
|
18
|
+
* @default './data'
|
|
19
|
+
*/
|
|
20
|
+
baseDir?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Enable WAL mode for better concurrency
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
enableWAL?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Busy timeout in milliseconds
|
|
28
|
+
* @default 5000
|
|
29
|
+
*/
|
|
30
|
+
busyTimeout?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Maximum retry attempts for operations
|
|
33
|
+
* @default 3
|
|
34
|
+
*/
|
|
35
|
+
maxRetries?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Use separate databases for each store
|
|
38
|
+
* @default false (single database)
|
|
39
|
+
*/
|
|
40
|
+
separateDatabases?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Initialized persistence stores
|
|
44
|
+
*/
|
|
45
|
+
export interface PersistenceStores {
|
|
46
|
+
eventStore: EventStore;
|
|
47
|
+
reasoningStore: ReasoningStore;
|
|
48
|
+
metricsAggregator: MetricsAggregator;
|
|
49
|
+
/**
|
|
50
|
+
* Close all database connections
|
|
51
|
+
*/
|
|
52
|
+
close: () => void;
|
|
53
|
+
/**
|
|
54
|
+
* Get statistics from all stores
|
|
55
|
+
*/
|
|
56
|
+
getStatistics: () => {
|
|
57
|
+
events: ReturnType<EventStore['getStatistics']>;
|
|
58
|
+
reasoning: ReturnType<ReasoningStore['getStatistics']>;
|
|
59
|
+
metrics: ReturnType<MetricsAggregator['getStatistics']>;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Initialize the persistence layer
|
|
64
|
+
*
|
|
65
|
+
* @param options - Initialization options
|
|
66
|
+
* @returns Initialized persistence stores
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // Initialize with default settings
|
|
71
|
+
* const persistence = initPersistence();
|
|
72
|
+
*
|
|
73
|
+
* // Record an event
|
|
74
|
+
* persistence.eventStore.recordEvent({
|
|
75
|
+
* agent_id: 'test-gen',
|
|
76
|
+
* event_type: 'test_generated',
|
|
77
|
+
* payload: { count: 5 },
|
|
78
|
+
* session_id: 'session-123'
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* // Start a reasoning chain
|
|
82
|
+
* const chain = persistence.reasoningStore.startChain({
|
|
83
|
+
* session_id: 'session-123',
|
|
84
|
+
* agent_id: 'test-gen'
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* // Record a metric
|
|
88
|
+
* persistence.metricsAggregator.recordMetric({
|
|
89
|
+
* agent_id: 'test-gen',
|
|
90
|
+
* metric_name: 'coverage',
|
|
91
|
+
* metric_value: 85.5
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* // Clean up
|
|
95
|
+
* persistence.close();
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function initPersistence(options?: InitPersistenceOptions): PersistenceStores;
|
|
99
|
+
/**
|
|
100
|
+
* Quick utility to create an event store with default settings
|
|
101
|
+
* @param dbPath - Optional database path
|
|
102
|
+
* @returns Configured EventStore instance
|
|
103
|
+
*/
|
|
104
|
+
export declare function createEventStore(dbPath?: string): EventStore;
|
|
105
|
+
/**
|
|
106
|
+
* Quick utility to create a reasoning store with default settings
|
|
107
|
+
* @param dbPath - Optional database path
|
|
108
|
+
* @returns Configured ReasoningStore instance
|
|
109
|
+
*/
|
|
110
|
+
export declare function createReasoningStore(dbPath?: string): ReasoningStore;
|
|
111
|
+
/**
|
|
112
|
+
* Quick utility to create a metrics aggregator with default settings
|
|
113
|
+
* @param dbPath - Optional database path
|
|
114
|
+
* @returns Configured MetricsAggregator instance
|
|
115
|
+
*/
|
|
116
|
+
export declare function createMetricsAggregator(dbPath?: string): MetricsAggregator;
|
|
117
|
+
/**
|
|
118
|
+
* Database cleanup utility
|
|
119
|
+
* @param baseDir - Directory containing database files
|
|
120
|
+
* @param olderThan - Delete data older than this ISO timestamp
|
|
121
|
+
* @returns Cleanup results
|
|
122
|
+
*/
|
|
123
|
+
export declare function cleanupOldData(baseDir: string | undefined, olderThan: string): {
|
|
124
|
+
eventsDeleted: number;
|
|
125
|
+
chainsDeleted: number;
|
|
126
|
+
metricsDeleted: number;
|
|
127
|
+
aggregatedDeleted: number;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Run metric aggregation for all periods
|
|
131
|
+
* @param baseDir - Directory containing database files
|
|
132
|
+
* @param periods - Periods to aggregate
|
|
133
|
+
* @returns Aggregation results
|
|
134
|
+
*/
|
|
135
|
+
export declare function runAggregation(baseDir?: string, periods?: Array<'1min' | '5min' | '1hour' | '1day'>): Record<string, number>;
|
|
136
|
+
declare const _default: {
|
|
137
|
+
initPersistence: typeof initPersistence;
|
|
138
|
+
createEventStore: typeof createEventStore;
|
|
139
|
+
createReasoningStore: typeof createReasoningStore;
|
|
140
|
+
createMetricsAggregator: typeof createMetricsAggregator;
|
|
141
|
+
cleanupOldData: typeof cleanupOldData;
|
|
142
|
+
runAggregation: typeof runAggregation;
|
|
143
|
+
};
|
|
144
|
+
export default _default;
|
|
145
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAEL,SAAS,EACT,WAAW,EACX,gBAAgB,EAGhB,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,YAAY,EAGZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAGhB,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EAGtB,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IAErC;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM;QACnB,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAChD,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;KACzD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,CAyDvF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,YAAW,EAC1B,SAAS,EAAE,MAAM,GAChB;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAkBA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,GAAE,MAAiB,EAC1B,OAAO,GAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAqC,GACrF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;;;;;;;;;AAGD,wBAOE"}
|