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,440 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Reasoning chain store for capturing agent reasoning processes
|
|
4
|
+
* @module persistence/reasoning-store
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ReasoningStore = void 0;
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
const schema_1 = require("./schema");
|
|
10
|
+
/**
|
|
11
|
+
* ReasoningStore captures and persists agent reasoning processes
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const store = new ReasoningStore({ dbPath: './data/reasoning.db' });
|
|
16
|
+
*
|
|
17
|
+
* // Start a reasoning chain
|
|
18
|
+
* const chain = store.startChain({
|
|
19
|
+
* session_id: 'session-123',
|
|
20
|
+
* agent_id: 'test-generator',
|
|
21
|
+
* context: { task: 'Generate unit tests' }
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Add reasoning steps
|
|
25
|
+
* store.addStep({
|
|
26
|
+
* chain_id: chain.id,
|
|
27
|
+
* thought_type: 'observation',
|
|
28
|
+
* content: 'Analyzing source code structure...',
|
|
29
|
+
* confidence: 0.9,
|
|
30
|
+
* token_count: 150
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Complete the chain
|
|
34
|
+
* store.completeChain(chain.id, 'completed');
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
class ReasoningStore {
|
|
38
|
+
/**
|
|
39
|
+
* Create a new ReasoningStore instance
|
|
40
|
+
* @param config - Persistence configuration
|
|
41
|
+
*/
|
|
42
|
+
constructor(config = {}) {
|
|
43
|
+
this.config = { ...schema_1.DEFAULT_PERSISTENCE_CONFIG, ...config };
|
|
44
|
+
this.db = (0, schema_1.createDatabase)(this.config);
|
|
45
|
+
this.statements = this.prepareStatements();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Prepare SQL statements for performance
|
|
49
|
+
*/
|
|
50
|
+
prepareStatements() {
|
|
51
|
+
return {
|
|
52
|
+
insertChain: this.db.prepare(`
|
|
53
|
+
INSERT INTO reasoning_chains (id, session_id, agent_id, created_at, status, context)
|
|
54
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
55
|
+
`),
|
|
56
|
+
insertStep: this.db.prepare(`
|
|
57
|
+
INSERT INTO reasoning_steps (id, chain_id, step_order, thought_type, content, confidence, token_count, created_at, metadata)
|
|
58
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
59
|
+
`),
|
|
60
|
+
updateChainStatus: this.db.prepare(`
|
|
61
|
+
UPDATE reasoning_chains
|
|
62
|
+
SET status = ?, completed_at = ?
|
|
63
|
+
WHERE id = ?
|
|
64
|
+
`),
|
|
65
|
+
getChainById: this.db.prepare(`
|
|
66
|
+
SELECT * FROM reasoning_chains WHERE id = ?
|
|
67
|
+
`),
|
|
68
|
+
getStepsByChain: this.db.prepare(`
|
|
69
|
+
SELECT * FROM reasoning_steps
|
|
70
|
+
WHERE chain_id = ?
|
|
71
|
+
ORDER BY step_order ASC
|
|
72
|
+
`),
|
|
73
|
+
getChainsBySession: this.db.prepare(`
|
|
74
|
+
SELECT * FROM reasoning_chains
|
|
75
|
+
WHERE session_id = ?
|
|
76
|
+
ORDER BY created_at DESC
|
|
77
|
+
LIMIT ? OFFSET ?
|
|
78
|
+
`),
|
|
79
|
+
getChainsByAgent: this.db.prepare(`
|
|
80
|
+
SELECT * FROM reasoning_chains
|
|
81
|
+
WHERE agent_id = ?
|
|
82
|
+
ORDER BY created_at DESC
|
|
83
|
+
LIMIT ? OFFSET ?
|
|
84
|
+
`),
|
|
85
|
+
getStepCount: this.db.prepare(`
|
|
86
|
+
SELECT COUNT(*) as count FROM reasoning_steps WHERE chain_id = ?
|
|
87
|
+
`),
|
|
88
|
+
getMaxStepOrder: this.db.prepare(`
|
|
89
|
+
SELECT COALESCE(MAX(step_order), 0) as max_order
|
|
90
|
+
FROM reasoning_steps
|
|
91
|
+
WHERE chain_id = ?
|
|
92
|
+
`),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Deserialize chain record from database row
|
|
97
|
+
*/
|
|
98
|
+
deserializeChain(row) {
|
|
99
|
+
return {
|
|
100
|
+
id: row.id,
|
|
101
|
+
session_id: row.session_id,
|
|
102
|
+
agent_id: row.agent_id,
|
|
103
|
+
created_at: row.created_at,
|
|
104
|
+
completed_at: row.completed_at,
|
|
105
|
+
status: row.status,
|
|
106
|
+
context: JSON.parse(row.context),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Deserialize step record from database row
|
|
111
|
+
*/
|
|
112
|
+
deserializeStep(row) {
|
|
113
|
+
return {
|
|
114
|
+
id: row.id,
|
|
115
|
+
chain_id: row.chain_id,
|
|
116
|
+
step_order: row.step_order,
|
|
117
|
+
thought_type: row.thought_type,
|
|
118
|
+
content: row.content,
|
|
119
|
+
confidence: row.confidence,
|
|
120
|
+
token_count: row.token_count,
|
|
121
|
+
created_at: row.created_at,
|
|
122
|
+
metadata: JSON.parse(row.metadata),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Start a new reasoning chain
|
|
127
|
+
* @param input - Chain creation input
|
|
128
|
+
* @returns Created chain record
|
|
129
|
+
*/
|
|
130
|
+
startChain(input) {
|
|
131
|
+
const id = (0, uuid_1.v4)();
|
|
132
|
+
const created_at = new Date().toISOString();
|
|
133
|
+
const context = JSON.stringify(input.context || {});
|
|
134
|
+
let retries = this.config.maxRetries || 3;
|
|
135
|
+
while (retries > 0) {
|
|
136
|
+
try {
|
|
137
|
+
this.statements.insertChain.run(id, input.session_id, input.agent_id, created_at, 'in_progress', context);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
retries--;
|
|
142
|
+
if (retries === 0) {
|
|
143
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
144
|
+
throw new Error(`Failed to start chain after retries: ${errorMessage}`);
|
|
145
|
+
}
|
|
146
|
+
const start = Date.now();
|
|
147
|
+
while (Date.now() - start < 100) {
|
|
148
|
+
// Busy wait for synchronous retry
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
id,
|
|
154
|
+
session_id: input.session_id,
|
|
155
|
+
agent_id: input.agent_id,
|
|
156
|
+
created_at,
|
|
157
|
+
completed_at: null,
|
|
158
|
+
status: 'in_progress',
|
|
159
|
+
context: input.context || {},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Add a reasoning step to a chain
|
|
164
|
+
* @param input - Step creation input
|
|
165
|
+
* @returns Created step record
|
|
166
|
+
*/
|
|
167
|
+
addStep(input) {
|
|
168
|
+
const id = (0, uuid_1.v4)();
|
|
169
|
+
const created_at = new Date().toISOString();
|
|
170
|
+
const metadata = JSON.stringify(input.metadata || {});
|
|
171
|
+
// Get next step order
|
|
172
|
+
const maxOrderResult = this.statements.getMaxStepOrder.get(input.chain_id);
|
|
173
|
+
const step_order = maxOrderResult.max_order + 1;
|
|
174
|
+
let retries = this.config.maxRetries || 3;
|
|
175
|
+
while (retries > 0) {
|
|
176
|
+
try {
|
|
177
|
+
this.statements.insertStep.run(id, input.chain_id, step_order, input.thought_type, input.content, input.confidence, input.token_count, created_at, metadata);
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
retries--;
|
|
182
|
+
if (retries === 0) {
|
|
183
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
184
|
+
throw new Error(`Failed to add step after retries: ${errorMessage}`);
|
|
185
|
+
}
|
|
186
|
+
const start = Date.now();
|
|
187
|
+
while (Date.now() - start < 100) {
|
|
188
|
+
// Busy wait for synchronous retry
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
id,
|
|
194
|
+
chain_id: input.chain_id,
|
|
195
|
+
step_order,
|
|
196
|
+
thought_type: input.thought_type,
|
|
197
|
+
content: input.content,
|
|
198
|
+
confidence: input.confidence,
|
|
199
|
+
token_count: input.token_count,
|
|
200
|
+
created_at,
|
|
201
|
+
metadata: input.metadata || {},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Complete a reasoning chain
|
|
206
|
+
* @param chainId - Chain identifier
|
|
207
|
+
* @param status - Final status (completed, failed, abandoned)
|
|
208
|
+
* @returns Updated chain record
|
|
209
|
+
*/
|
|
210
|
+
completeChain(chainId, status = 'completed') {
|
|
211
|
+
const completed_at = new Date().toISOString();
|
|
212
|
+
this.statements.updateChainStatus.run(status, completed_at, chainId);
|
|
213
|
+
return this.getChainById(chainId);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get chain by ID
|
|
217
|
+
* @param chainId - Chain identifier
|
|
218
|
+
* @returns Chain record or null
|
|
219
|
+
*/
|
|
220
|
+
getChainById(chainId) {
|
|
221
|
+
const row = this.statements.getChainById.get(chainId);
|
|
222
|
+
return row ? this.deserializeChain(row) : null;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get chain with all steps
|
|
226
|
+
* @param chainId - Chain identifier
|
|
227
|
+
* @returns Chain with steps or null
|
|
228
|
+
*/
|
|
229
|
+
getChainWithSteps(chainId) {
|
|
230
|
+
const chain = this.getChainById(chainId);
|
|
231
|
+
if (!chain)
|
|
232
|
+
return null;
|
|
233
|
+
const stepRows = this.statements.getStepsByChain.all(chainId);
|
|
234
|
+
const steps = stepRows.map(row => this.deserializeStep(row));
|
|
235
|
+
return { ...chain, steps };
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get chains by session ID
|
|
239
|
+
* @param sessionId - Session identifier
|
|
240
|
+
* @param options - Query options
|
|
241
|
+
* @returns Array of chains
|
|
242
|
+
*/
|
|
243
|
+
getChainsBySession(sessionId, options = {}) {
|
|
244
|
+
const { limit = 100, offset = 0, includeSteps = false } = options;
|
|
245
|
+
const rows = this.statements.getChainsBySession.all(sessionId, limit, offset);
|
|
246
|
+
const chains = rows.map(row => this.deserializeChain(row));
|
|
247
|
+
if (includeSteps) {
|
|
248
|
+
return chains.map(chain => {
|
|
249
|
+
const stepRows = this.statements.getStepsByChain.all(chain.id);
|
|
250
|
+
const steps = stepRows.map(row => this.deserializeStep(row));
|
|
251
|
+
return { ...chain, steps };
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
return chains;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get chains by agent ID
|
|
258
|
+
* @param agentId - Agent identifier
|
|
259
|
+
* @param options - Query options
|
|
260
|
+
* @returns Array of chains
|
|
261
|
+
*/
|
|
262
|
+
getChainsByAgent(agentId, options = {}) {
|
|
263
|
+
const { limit = 100, offset = 0 } = options;
|
|
264
|
+
const rows = this.statements.getChainsByAgent.all(agentId, limit, offset);
|
|
265
|
+
return rows.map(row => this.deserializeChain(row));
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get chains by status
|
|
269
|
+
* @param status - Chain status
|
|
270
|
+
* @param limit - Maximum results
|
|
271
|
+
* @returns Array of chains
|
|
272
|
+
*/
|
|
273
|
+
getChainsByStatus(status, limit = 100) {
|
|
274
|
+
const rows = this.db.prepare(`
|
|
275
|
+
SELECT * FROM reasoning_chains
|
|
276
|
+
WHERE status = ?
|
|
277
|
+
ORDER BY created_at DESC
|
|
278
|
+
LIMIT ?
|
|
279
|
+
`).all(status, limit);
|
|
280
|
+
return rows.map(row => this.deserializeChain(row));
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Get step count for a chain
|
|
284
|
+
* @param chainId - Chain identifier
|
|
285
|
+
* @returns Number of steps
|
|
286
|
+
*/
|
|
287
|
+
getStepCount(chainId) {
|
|
288
|
+
const result = this.statements.getStepCount.get(chainId);
|
|
289
|
+
return result.count;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get total token count for a chain
|
|
293
|
+
* @param chainId - Chain identifier
|
|
294
|
+
* @returns Total tokens used
|
|
295
|
+
*/
|
|
296
|
+
getTotalTokens(chainId) {
|
|
297
|
+
const result = this.db.prepare(`
|
|
298
|
+
SELECT COALESCE(SUM(token_count), 0) as total
|
|
299
|
+
FROM reasoning_steps
|
|
300
|
+
WHERE chain_id = ?
|
|
301
|
+
`).get(chainId);
|
|
302
|
+
return result.total;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get average confidence for a chain
|
|
306
|
+
* @param chainId - Chain identifier
|
|
307
|
+
* @returns Average confidence score
|
|
308
|
+
*/
|
|
309
|
+
getAverageConfidence(chainId) {
|
|
310
|
+
const result = this.db.prepare(`
|
|
311
|
+
SELECT COALESCE(AVG(confidence), 0) as avg_confidence
|
|
312
|
+
FROM reasoning_steps
|
|
313
|
+
WHERE chain_id = ?
|
|
314
|
+
`).get(chainId);
|
|
315
|
+
return result.avg_confidence;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get steps by thought type
|
|
319
|
+
* @param thoughtType - Type of thought
|
|
320
|
+
* @param limit - Maximum results
|
|
321
|
+
* @returns Array of steps
|
|
322
|
+
*/
|
|
323
|
+
getStepsByType(thoughtType, limit = 100) {
|
|
324
|
+
const rows = this.db.prepare(`
|
|
325
|
+
SELECT * FROM reasoning_steps
|
|
326
|
+
WHERE thought_type = ?
|
|
327
|
+
ORDER BY created_at DESC
|
|
328
|
+
LIMIT ?
|
|
329
|
+
`).all(thoughtType, limit);
|
|
330
|
+
return rows.map(row => this.deserializeStep(row));
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Search chains by context
|
|
334
|
+
* @param key - Context key to search
|
|
335
|
+
* @param value - Value to match
|
|
336
|
+
* @param limit - Maximum results
|
|
337
|
+
* @returns Matching chains
|
|
338
|
+
*/
|
|
339
|
+
searchByContext(key, value, limit = 100) {
|
|
340
|
+
const pattern = `%"${key}":${JSON.stringify(value)}%`;
|
|
341
|
+
const rows = this.db.prepare(`
|
|
342
|
+
SELECT * FROM reasoning_chains
|
|
343
|
+
WHERE context LIKE ?
|
|
344
|
+
ORDER BY created_at DESC
|
|
345
|
+
LIMIT ?
|
|
346
|
+
`).all(pattern, limit);
|
|
347
|
+
return rows.map(row => this.deserializeChain(row));
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get reasoning chain statistics
|
|
351
|
+
* @returns Statistics about stored chains
|
|
352
|
+
*/
|
|
353
|
+
getStatistics() {
|
|
354
|
+
const chainStats = this.db.prepare(`
|
|
355
|
+
SELECT
|
|
356
|
+
COUNT(*) as totalChains,
|
|
357
|
+
SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) as completedChains,
|
|
358
|
+
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) as failedChains
|
|
359
|
+
FROM reasoning_chains
|
|
360
|
+
`).get();
|
|
361
|
+
const stepStats = this.db.prepare(`
|
|
362
|
+
SELECT
|
|
363
|
+
COUNT(*) as totalSteps,
|
|
364
|
+
AVG(token_count) as avgTokens,
|
|
365
|
+
AVG(confidence) as avgConfidence
|
|
366
|
+
FROM reasoning_steps
|
|
367
|
+
`).get();
|
|
368
|
+
return {
|
|
369
|
+
totalChains: chainStats.totalChains,
|
|
370
|
+
totalSteps: stepStats.totalSteps,
|
|
371
|
+
completedChains: chainStats.completedChains,
|
|
372
|
+
failedChains: chainStats.failedChains,
|
|
373
|
+
avgStepsPerChain: chainStats.totalChains > 0
|
|
374
|
+
? stepStats.totalSteps / chainStats.totalChains
|
|
375
|
+
: 0,
|
|
376
|
+
avgTokensPerChain: chainStats.totalChains > 0
|
|
377
|
+
? (stepStats.avgTokens * stepStats.totalSteps) / chainStats.totalChains
|
|
378
|
+
: 0,
|
|
379
|
+
avgConfidence: stepStats.avgConfidence || 0,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Delete completed chains older than specified date
|
|
384
|
+
* @param olderThan - ISO timestamp cutoff
|
|
385
|
+
* @returns Number of deleted chains
|
|
386
|
+
*/
|
|
387
|
+
deleteOldChains(olderThan) {
|
|
388
|
+
// Delete steps first due to foreign key
|
|
389
|
+
this.db.prepare(`
|
|
390
|
+
DELETE FROM reasoning_steps
|
|
391
|
+
WHERE chain_id IN (
|
|
392
|
+
SELECT id FROM reasoning_chains
|
|
393
|
+
WHERE created_at < ? AND status IN ('completed', 'failed', 'abandoned')
|
|
394
|
+
)
|
|
395
|
+
`).run(olderThan);
|
|
396
|
+
const result = this.db.prepare(`
|
|
397
|
+
DELETE FROM reasoning_chains
|
|
398
|
+
WHERE created_at < ? AND status IN ('completed', 'failed', 'abandoned')
|
|
399
|
+
`).run(olderThan);
|
|
400
|
+
return result.changes;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Export chain as JSON for analysis
|
|
404
|
+
* @param chainId - Chain identifier
|
|
405
|
+
* @returns JSON-serializable chain data
|
|
406
|
+
*/
|
|
407
|
+
exportChain(chainId) {
|
|
408
|
+
const chain = this.getChainWithSteps(chainId);
|
|
409
|
+
if (!chain)
|
|
410
|
+
return null;
|
|
411
|
+
return {
|
|
412
|
+
id: chain.id,
|
|
413
|
+
session_id: chain.session_id,
|
|
414
|
+
agent_id: chain.agent_id,
|
|
415
|
+
created_at: chain.created_at,
|
|
416
|
+
completed_at: chain.completed_at,
|
|
417
|
+
status: chain.status,
|
|
418
|
+
context: chain.context,
|
|
419
|
+
total_tokens: this.getTotalTokens(chainId),
|
|
420
|
+
avg_confidence: this.getAverageConfidence(chainId),
|
|
421
|
+
steps: chain.steps.map(step => ({
|
|
422
|
+
order: step.step_order,
|
|
423
|
+
type: step.thought_type,
|
|
424
|
+
content: step.content,
|
|
425
|
+
confidence: step.confidence,
|
|
426
|
+
tokens: step.token_count,
|
|
427
|
+
timestamp: step.created_at,
|
|
428
|
+
metadata: step.metadata,
|
|
429
|
+
})),
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Close database connection
|
|
434
|
+
*/
|
|
435
|
+
close() {
|
|
436
|
+
(0, schema_1.closeDatabase)(this.db);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
exports.ReasoningStore = ReasoningStore;
|
|
440
|
+
//# sourceMappingURL=reasoning-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-store.js","sourceRoot":"","sources":["../../src/persistence/reasoning-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Database schema types and migration logic for AQE persistence layer
|
|
3
|
+
* @module persistence/schema
|
|
4
|
+
*/
|
|
5
|
+
import Database from 'better-sqlite3';
|
|
6
|
+
/**
|
|
7
|
+
* Event types for telemetry tracking
|
|
8
|
+
*/
|
|
9
|
+
export type EventType = 'agent_started' | 'agent_completed' | 'agent_error' | 'test_generated' | 'test_executed' | 'coverage_analyzed' | 'quality_gate_passed' | 'quality_gate_failed' | 'pattern_matched' | 'learning_completed' | 'custom';
|
|
10
|
+
/**
|
|
11
|
+
* Event record for telemetry tracking
|
|
12
|
+
*/
|
|
13
|
+
export interface EventRecord {
|
|
14
|
+
id: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
agent_id: string;
|
|
17
|
+
event_type: EventType;
|
|
18
|
+
payload: Record<string, unknown>;
|
|
19
|
+
correlation_id: string | null;
|
|
20
|
+
session_id: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Input for creating a new event
|
|
24
|
+
*/
|
|
25
|
+
export interface CreateEventInput {
|
|
26
|
+
agent_id: string;
|
|
27
|
+
event_type: EventType;
|
|
28
|
+
payload: Record<string, unknown>;
|
|
29
|
+
correlation_id?: string;
|
|
30
|
+
session_id: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Types of reasoning steps
|
|
34
|
+
*/
|
|
35
|
+
export type ThoughtType = 'observation' | 'hypothesis' | 'decision' | 'validation' | 'conclusion' | 'action';
|
|
36
|
+
/**
|
|
37
|
+
* Status of a reasoning chain
|
|
38
|
+
*/
|
|
39
|
+
export type ChainStatus = 'in_progress' | 'completed' | 'failed' | 'abandoned';
|
|
40
|
+
/**
|
|
41
|
+
* Reasoning chain record
|
|
42
|
+
*/
|
|
43
|
+
export interface ReasoningChain {
|
|
44
|
+
id: string;
|
|
45
|
+
session_id: string;
|
|
46
|
+
agent_id: string;
|
|
47
|
+
created_at: string;
|
|
48
|
+
completed_at: string | null;
|
|
49
|
+
status: ChainStatus;
|
|
50
|
+
context: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Reasoning step within a chain
|
|
54
|
+
*/
|
|
55
|
+
export interface ReasoningStep {
|
|
56
|
+
id: string;
|
|
57
|
+
chain_id: string;
|
|
58
|
+
step_order: number;
|
|
59
|
+
thought_type: ThoughtType;
|
|
60
|
+
content: string;
|
|
61
|
+
confidence: number;
|
|
62
|
+
token_count: number;
|
|
63
|
+
created_at: string;
|
|
64
|
+
metadata: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Input for starting a new reasoning chain
|
|
68
|
+
*/
|
|
69
|
+
export interface StartChainInput {
|
|
70
|
+
session_id: string;
|
|
71
|
+
agent_id: string;
|
|
72
|
+
context?: Record<string, unknown>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Input for adding a reasoning step
|
|
76
|
+
*/
|
|
77
|
+
export interface AddStepInput {
|
|
78
|
+
chain_id: string;
|
|
79
|
+
thought_type: ThoughtType;
|
|
80
|
+
content: string;
|
|
81
|
+
confidence: number;
|
|
82
|
+
token_count: number;
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Complete chain with all steps
|
|
87
|
+
*/
|
|
88
|
+
export interface ReasoningChainWithSteps extends ReasoningChain {
|
|
89
|
+
steps: ReasoningStep[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Aggregation window periods
|
|
93
|
+
*/
|
|
94
|
+
export type AggregationPeriod = '1min' | '5min' | '1hour' | '1day';
|
|
95
|
+
/**
|
|
96
|
+
* Individual quality metric record
|
|
97
|
+
*/
|
|
98
|
+
export interface QualityMetric {
|
|
99
|
+
id: string;
|
|
100
|
+
timestamp: string;
|
|
101
|
+
agent_id: string;
|
|
102
|
+
metric_name: string;
|
|
103
|
+
metric_value: number;
|
|
104
|
+
dimensions: Record<string, string>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Aggregated metrics for a time period
|
|
108
|
+
*/
|
|
109
|
+
export interface AggregatedMetric {
|
|
110
|
+
id: string;
|
|
111
|
+
period_start: string;
|
|
112
|
+
period_end: string;
|
|
113
|
+
agent_id: string;
|
|
114
|
+
metric_name: string;
|
|
115
|
+
count: number;
|
|
116
|
+
sum: number;
|
|
117
|
+
min: number;
|
|
118
|
+
max: number;
|
|
119
|
+
avg: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Input for recording a metric
|
|
123
|
+
*/
|
|
124
|
+
export interface RecordMetricInput {
|
|
125
|
+
agent_id: string;
|
|
126
|
+
metric_name: string;
|
|
127
|
+
metric_value: number;
|
|
128
|
+
dimensions?: Record<string, string>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Metric trend data point
|
|
132
|
+
*/
|
|
133
|
+
export interface MetricTrendPoint {
|
|
134
|
+
timestamp: string;
|
|
135
|
+
value: number;
|
|
136
|
+
count: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Agent performance summary
|
|
140
|
+
*/
|
|
141
|
+
export interface AgentPerformance {
|
|
142
|
+
agent_id: string;
|
|
143
|
+
total_events: number;
|
|
144
|
+
avg_duration_ms: number;
|
|
145
|
+
success_rate: number;
|
|
146
|
+
metrics: Record<string, number>;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Configuration for persistence layer
|
|
150
|
+
*/
|
|
151
|
+
export interface PersistenceConfig {
|
|
152
|
+
dbPath: string;
|
|
153
|
+
enableWAL?: boolean;
|
|
154
|
+
busyTimeout?: number;
|
|
155
|
+
maxRetries?: number;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Default persistence configuration
|
|
159
|
+
*/
|
|
160
|
+
export declare const DEFAULT_PERSISTENCE_CONFIG: PersistenceConfig;
|
|
161
|
+
/**
|
|
162
|
+
* Current schema version
|
|
163
|
+
*/
|
|
164
|
+
export declare const CURRENT_SCHEMA_VERSION = 1;
|
|
165
|
+
/**
|
|
166
|
+
* Initialize database schema
|
|
167
|
+
* @param db - Database instance
|
|
168
|
+
*/
|
|
169
|
+
export declare function initializeSchema(db: Database.Database): void;
|
|
170
|
+
/**
|
|
171
|
+
* Create database connection with configuration
|
|
172
|
+
* @param config - Persistence configuration
|
|
173
|
+
* @returns Configured database instance
|
|
174
|
+
*/
|
|
175
|
+
export declare function createDatabase(config?: Partial<PersistenceConfig>): Database.Database;
|
|
176
|
+
/**
|
|
177
|
+
* Close database connection safely
|
|
178
|
+
* @param db - Database instance to close
|
|
179
|
+
*/
|
|
180
|
+
export declare function closeDatabase(db: Database.Database): void;
|
|
181
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"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"}
|