agentic-qe 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.claude/agents/qe-code-complexity.md +291 -0
  2. package/.claude/settings.json +2 -2
  3. package/CHANGELOG.md +37 -0
  4. package/README.md +27 -2
  5. package/dist/agents/BaseAgent.d.ts +6 -2
  6. package/dist/agents/BaseAgent.d.ts.map +1 -1
  7. package/dist/agents/BaseAgent.js +62 -51
  8. package/dist/agents/BaseAgent.js.map +1 -1
  9. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +139 -0
  10. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -0
  11. package/dist/agents/CodeComplexityAnalyzerAgent.js +403 -0
  12. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -0
  13. package/dist/agents/FleetCommanderAgent.js +2 -2
  14. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  15. package/dist/agents/QualityGateAgent.d.ts +5 -5
  16. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  17. package/dist/agents/QualityGateAgent.js +33 -19
  18. package/dist/agents/QualityGateAgent.js.map +1 -1
  19. package/dist/agents/TestDataArchitectAgent.d.ts +9 -0
  20. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  21. package/dist/agents/TestDataArchitectAgent.js +96 -2
  22. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.d.ts +23 -1
  24. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  25. package/dist/agents/TestGeneratorAgent.js +279 -54
  26. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  27. package/dist/agents/coordination/AgentCoordinator.d.ts +98 -0
  28. package/dist/agents/coordination/AgentCoordinator.d.ts.map +1 -0
  29. package/dist/agents/coordination/AgentCoordinator.js +196 -0
  30. package/dist/agents/coordination/AgentCoordinator.js.map +1 -0
  31. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +107 -0
  32. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -0
  33. package/dist/agents/lifecycle/AgentLifecycleManager.js +220 -0
  34. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -0
  35. package/dist/agents/memory/AgentMemoryService.d.ts +173 -0
  36. package/dist/agents/memory/AgentMemoryService.d.ts.map +1 -0
  37. package/dist/agents/memory/AgentMemoryService.js +297 -0
  38. package/dist/agents/memory/AgentMemoryService.js.map +1 -0
  39. package/dist/cli/commands/init.d.ts.map +1 -1
  40. package/dist/cli/commands/init.js +45 -3
  41. package/dist/cli/commands/init.js.map +1 -1
  42. package/dist/cli/commands/skills/index.d.ts +4 -0
  43. package/dist/cli/commands/skills/index.d.ts.map +1 -1
  44. package/dist/cli/commands/skills/index.js +8 -2
  45. package/dist/cli/commands/skills/index.js.map +1 -1
  46. package/dist/core/memory/SwarmMemoryManager.d.ts +2 -1
  47. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  48. package/dist/core/memory/SwarmMemoryManager.js +4 -1
  49. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  50. package/dist/core/memory/dao/AccessControlDAO.d.ts +66 -0
  51. package/dist/core/memory/dao/AccessControlDAO.d.ts.map +1 -0
  52. package/dist/core/memory/dao/AccessControlDAO.js +140 -0
  53. package/dist/core/memory/dao/AccessControlDAO.js.map +1 -0
  54. package/dist/core/memory/dao/BaseDAO.d.ts +34 -0
  55. package/dist/core/memory/dao/BaseDAO.d.ts.map +1 -0
  56. package/dist/core/memory/dao/BaseDAO.js +34 -0
  57. package/dist/core/memory/dao/BaseDAO.js.map +1 -0
  58. package/dist/core/memory/dao/BlackboardDAO.d.ts +90 -0
  59. package/dist/core/memory/dao/BlackboardDAO.d.ts.map +1 -0
  60. package/dist/core/memory/dao/BlackboardDAO.js +223 -0
  61. package/dist/core/memory/dao/BlackboardDAO.js.map +1 -0
  62. package/dist/core/memory/dao/EventDAO.d.ts +83 -0
  63. package/dist/core/memory/dao/EventDAO.d.ts.map +1 -0
  64. package/dist/core/memory/dao/EventDAO.js +177 -0
  65. package/dist/core/memory/dao/EventDAO.js.map +1 -0
  66. package/dist/core/memory/dao/MemoryEntryDAO.d.ts +57 -0
  67. package/dist/core/memory/dao/MemoryEntryDAO.d.ts.map +1 -0
  68. package/dist/core/memory/dao/MemoryEntryDAO.js +159 -0
  69. package/dist/core/memory/dao/MemoryEntryDAO.js.map +1 -0
  70. package/dist/core/memory/dao/WorkflowDAO.d.ts +85 -0
  71. package/dist/core/memory/dao/WorkflowDAO.d.ts.map +1 -0
  72. package/dist/core/memory/dao/WorkflowDAO.js +182 -0
  73. package/dist/core/memory/dao/WorkflowDAO.js.map +1 -0
  74. package/dist/core/memory/services/AccessControlService.d.ts +123 -0
  75. package/dist/core/memory/services/AccessControlService.d.ts.map +1 -0
  76. package/dist/core/memory/services/AccessControlService.js +249 -0
  77. package/dist/core/memory/services/AccessControlService.js.map +1 -0
  78. package/dist/core/memory/services/MemoryStoreService.d.ts +69 -0
  79. package/dist/core/memory/services/MemoryStoreService.d.ts.map +1 -0
  80. package/dist/core/memory/services/MemoryStoreService.js +214 -0
  81. package/dist/core/memory/services/MemoryStoreService.js.map +1 -0
  82. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  83. package/dist/mcp/handlers/base-handler.js +4 -1
  84. package/dist/mcp/handlers/base-handler.js.map +1 -1
  85. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +11 -1
  86. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
  87. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +63 -8
  88. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
  89. package/dist/mcp/handlers/quality-analyze.d.ts +7 -1
  90. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
  91. package/dist/mcp/handlers/quality-analyze.js +18 -1
  92. package/dist/mcp/handlers/quality-analyze.js.map +1 -1
  93. package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
  94. package/dist/mcp/handlers/test-generate.js +24 -8
  95. package/dist/mcp/handlers/test-generate.js.map +1 -1
  96. package/dist/mcp/services/AgentRegistry.d.ts +5 -0
  97. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  98. package/dist/mcp/services/AgentRegistry.js +19 -0
  99. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  100. package/dist/utils/__mocks__/Database.d.ts +64 -0
  101. package/dist/utils/__mocks__/Database.d.ts.map +1 -0
  102. package/dist/utils/__mocks__/Database.js +134 -0
  103. package/dist/utils/__mocks__/Database.js.map +1 -0
  104. package/package.json +5 -1
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlackboardDAO = void 0;
4
+ const BaseDAO_1 = require("./BaseDAO");
5
+ /**
6
+ * BlackboardDAO - Data Access Object for blackboard pattern hints (Table 2b)
7
+ *
8
+ * Handles all database operations for the blackboard_hints table
9
+ * Implements the blackboard architectural pattern for agent coordination
10
+ */
11
+ class BlackboardDAO extends BaseDAO_1.BaseDAO {
12
+ async createTable() {
13
+ await this.run(`
14
+ CREATE TABLE IF NOT EXISTS blackboard_hints (
15
+ id TEXT PRIMARY KEY,
16
+ topic TEXT NOT NULL,
17
+ message TEXT NOT NULL,
18
+ priority TEXT NOT NULL CHECK(priority IN ('low', 'medium', 'high', 'critical')),
19
+ agent_id TEXT NOT NULL,
20
+ metadata TEXT,
21
+ created_at INTEGER NOT NULL,
22
+ expires_at INTEGER,
23
+ consumed INTEGER DEFAULT 0
24
+ )
25
+ `);
26
+ }
27
+ async createIndexes() {
28
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_topic ON blackboard_hints(topic)`);
29
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_priority ON blackboard_hints(priority)`);
30
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_agent ON blackboard_hints(agent_id)`);
31
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_created ON blackboard_hints(created_at)`);
32
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_expires ON blackboard_hints(expires_at)`);
33
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_hints_consumed ON blackboard_hints(consumed)`);
34
+ }
35
+ /**
36
+ * Post a hint to the blackboard
37
+ */
38
+ async post(hint) {
39
+ const id = hint.id || this.generateHintId();
40
+ const expiresAt = hint.expiresAt || null;
41
+ await this.run(`INSERT INTO blackboard_hints
42
+ (id, topic, message, priority, agent_id, metadata, created_at, expires_at, consumed)
43
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0)`, [
44
+ id,
45
+ hint.topic,
46
+ hint.message,
47
+ hint.priority,
48
+ hint.agentId,
49
+ hint.metadata ? JSON.stringify(hint.metadata) : null,
50
+ hint.createdAt,
51
+ expiresAt
52
+ ]);
53
+ return id;
54
+ }
55
+ /**
56
+ * Read hints from blackboard by topic
57
+ */
58
+ async findByTopic(topic, minPriority, limit = 50) {
59
+ const now = Date.now();
60
+ let query = `SELECT * FROM blackboard_hints
61
+ WHERE topic = ?
62
+ AND consumed = 0
63
+ AND (expires_at IS NULL OR expires_at > ?)`;
64
+ const params = [topic, now];
65
+ if (minPriority) {
66
+ const priorityOrder = { low: 1, medium: 2, high: 3, critical: 4 };
67
+ const minPriorityValue = priorityOrder[minPriority];
68
+ query += ` AND (
69
+ (priority = 'critical' AND 4 >= ?) OR
70
+ (priority = 'high' AND 3 >= ?) OR
71
+ (priority = 'medium' AND 2 >= ?) OR
72
+ (priority = 'low' AND 1 >= ?)
73
+ )`;
74
+ params.push(minPriorityValue, minPriorityValue, minPriorityValue, minPriorityValue);
75
+ }
76
+ query += ` ORDER BY
77
+ CASE priority
78
+ WHEN 'critical' THEN 1
79
+ WHEN 'high' THEN 2
80
+ WHEN 'medium' THEN 3
81
+ WHEN 'low' THEN 4
82
+ END,
83
+ created_at ASC
84
+ LIMIT ?`;
85
+ params.push(limit);
86
+ const rows = await this.queryAll(query, params);
87
+ return rows.map(row => this.mapToHint(row));
88
+ }
89
+ /**
90
+ * Find hints by agent
91
+ */
92
+ async findByAgent(agentId, limit = 50) {
93
+ const now = Date.now();
94
+ const rows = await this.queryAll(`SELECT * FROM blackboard_hints
95
+ WHERE agent_id = ?
96
+ AND (expires_at IS NULL OR expires_at > ?)
97
+ ORDER BY created_at DESC
98
+ LIMIT ?`, [agentId, now, limit]);
99
+ return rows.map(row => this.mapToHint(row));
100
+ }
101
+ /**
102
+ * Find hints since a timestamp
103
+ */
104
+ async findSince(topic, since, limit = 50) {
105
+ const now = Date.now();
106
+ const rows = await this.queryAll(`SELECT * FROM blackboard_hints
107
+ WHERE topic = ?
108
+ AND created_at > ?
109
+ AND consumed = 0
110
+ AND (expires_at IS NULL OR expires_at > ?)
111
+ ORDER BY created_at ASC
112
+ LIMIT ?`, [topic, since, now, limit]);
113
+ return rows.map(row => this.mapToHint(row));
114
+ }
115
+ /**
116
+ * Mark hint as consumed
117
+ */
118
+ async markConsumed(id) {
119
+ await this.run(`UPDATE blackboard_hints SET consumed = 1 WHERE id = ?`, [id]);
120
+ }
121
+ /**
122
+ * Mark multiple hints as consumed
123
+ */
124
+ async markManyConsumed(ids) {
125
+ if (ids.length === 0)
126
+ return;
127
+ const placeholders = ids.map(() => '?').join(',');
128
+ await this.run(`UPDATE blackboard_hints SET consumed = 1 WHERE id IN (${placeholders})`, ids);
129
+ }
130
+ /**
131
+ * Delete a hint by ID
132
+ */
133
+ async deleteById(id) {
134
+ await this.run(`DELETE FROM blackboard_hints WHERE id = ?`, [id]);
135
+ }
136
+ /**
137
+ * Delete hints by topic
138
+ */
139
+ async deleteByTopic(topic) {
140
+ await this.run(`DELETE FROM blackboard_hints WHERE topic = ?`, [topic]);
141
+ }
142
+ /**
143
+ * Delete expired hints
144
+ */
145
+ async deleteExpired() {
146
+ const now = Date.now();
147
+ await this.run(`DELETE FROM blackboard_hints WHERE expires_at IS NOT NULL AND expires_at <= ?`, [now]);
148
+ }
149
+ /**
150
+ * Delete old consumed hints
151
+ */
152
+ async deleteConsumedOlderThan(timestamp) {
153
+ await this.run(`DELETE FROM blackboard_hints WHERE consumed = 1 AND created_at < ?`, [timestamp]);
154
+ }
155
+ /**
156
+ * Count total hints
157
+ */
158
+ async count() {
159
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM blackboard_hints`);
160
+ return result?.count || 0;
161
+ }
162
+ /**
163
+ * Count unconsumed hints by topic
164
+ */
165
+ async countByTopic(topic) {
166
+ const now = Date.now();
167
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM blackboard_hints
168
+ WHERE topic = ?
169
+ AND consumed = 0
170
+ AND (expires_at IS NULL OR expires_at > ?)`, [topic, now]);
171
+ return result?.count || 0;
172
+ }
173
+ /**
174
+ * Get hint statistics by priority
175
+ */
176
+ async getPriorityCounts() {
177
+ const rows = await this.queryAll(`SELECT priority, COUNT(*) as count FROM blackboard_hints
178
+ WHERE consumed = 0
179
+ GROUP BY priority`);
180
+ const counts = {};
181
+ rows.forEach(row => {
182
+ counts[row.priority] = row.count;
183
+ });
184
+ return counts;
185
+ }
186
+ /**
187
+ * Get hint statistics by topic
188
+ */
189
+ async getTopicCounts() {
190
+ const rows = await this.queryAll(`SELECT topic, COUNT(*) as count FROM blackboard_hints
191
+ WHERE consumed = 0
192
+ GROUP BY topic`);
193
+ const counts = {};
194
+ rows.forEach(row => {
195
+ counts[row.topic] = row.count;
196
+ });
197
+ return counts;
198
+ }
199
+ /**
200
+ * Generate a unique hint ID
201
+ */
202
+ generateHintId() {
203
+ return `hint_${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
204
+ }
205
+ /**
206
+ * Map database row to Hint object
207
+ */
208
+ mapToHint(row) {
209
+ return {
210
+ id: row.id,
211
+ topic: row.topic,
212
+ message: row.message,
213
+ priority: row.priority,
214
+ agentId: row.agent_id,
215
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
216
+ createdAt: row.created_at,
217
+ expiresAt: row.expires_at,
218
+ consumed: row.consumed === 1
219
+ };
220
+ }
221
+ }
222
+ exports.BlackboardDAO = BlackboardDAO;
223
+ //# sourceMappingURL=BlackboardDAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlackboardDAO.js","sourceRoot":"","sources":["../../../../src/core/memory/dao/BlackboardDAO.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { BaseDAO } from './BaseDAO';
2
+ /**
3
+ * Event interface for event streaming
4
+ */
5
+ export interface Event {
6
+ id?: string;
7
+ type: string;
8
+ payload: any;
9
+ timestamp?: number;
10
+ source: string;
11
+ ttl?: number;
12
+ }
13
+ /**
14
+ * EventDAO - Data Access Object for event stream (Table 3)
15
+ *
16
+ * Handles all database operations for the events table
17
+ * Manages event streaming and coordination between agents
18
+ */
19
+ export declare class EventDAO extends BaseDAO {
20
+ createTable(): Promise<void>;
21
+ createIndexes(): Promise<void>;
22
+ /**
23
+ * Insert a new event
24
+ */
25
+ insert(event: Event): Promise<string>;
26
+ /**
27
+ * Find an event by ID
28
+ */
29
+ findById(id: string): Promise<Event | null>;
30
+ /**
31
+ * Find events by type
32
+ */
33
+ findByType(type: string, limit?: number): Promise<Event[]>;
34
+ /**
35
+ * Find events by source agent
36
+ */
37
+ findBySource(source: string, limit?: number): Promise<Event[]>;
38
+ /**
39
+ * Find events since a timestamp
40
+ */
41
+ findSince(since: number, limit?: number): Promise<Event[]>;
42
+ /**
43
+ * Get unconsumed events
44
+ */
45
+ findUnconsumed(limit?: number): Promise<Event[]>;
46
+ /**
47
+ * Mark event as consumed
48
+ */
49
+ markConsumed(id: string): Promise<void>;
50
+ /**
51
+ * Delete an event by ID
52
+ */
53
+ deleteById(id: string): Promise<void>;
54
+ /**
55
+ * Delete events by type
56
+ */
57
+ deleteByType(type: string): Promise<void>;
58
+ /**
59
+ * Delete expired events
60
+ */
61
+ deleteExpired(): Promise<void>;
62
+ /**
63
+ * Delete old consumed events
64
+ */
65
+ deleteConsumedOlderThan(timestamp: number): Promise<void>;
66
+ /**
67
+ * Count total events
68
+ */
69
+ count(): Promise<number>;
70
+ /**
71
+ * Count events by type
72
+ */
73
+ countByType(type: string): Promise<number>;
74
+ /**
75
+ * Get event statistics by type
76
+ */
77
+ getTypeCounts(): Promise<Record<string, number>>;
78
+ /**
79
+ * Map database row to Event object
80
+ */
81
+ private mapToEvent;
82
+ }
83
+ //# sourceMappingURL=EventDAO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDAO.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/dao/EventDAO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,OAAO;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB3C;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAQjD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAarE;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAazE;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAarE;;OAEG;IACG,cAAc,CAAC,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAa3D;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;OAEG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAYtD;;OAEG;IACH,OAAO,CAAC,UAAU;CAUnB"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventDAO = void 0;
4
+ const BaseDAO_1 = require("./BaseDAO");
5
+ const SecureRandom_1 = require("../../../utils/SecureRandom");
6
+ /**
7
+ * EventDAO - Data Access Object for event stream (Table 3)
8
+ *
9
+ * Handles all database operations for the events table
10
+ * Manages event streaming and coordination between agents
11
+ */
12
+ class EventDAO extends BaseDAO_1.BaseDAO {
13
+ async createTable() {
14
+ await this.run(`
15
+ CREATE TABLE IF NOT EXISTS events (
16
+ id TEXT PRIMARY KEY,
17
+ type TEXT NOT NULL,
18
+ payload TEXT NOT NULL,
19
+ timestamp INTEGER NOT NULL,
20
+ source TEXT NOT NULL,
21
+ expires_at INTEGER,
22
+ consumed INTEGER DEFAULT 0
23
+ )
24
+ `);
25
+ }
26
+ async createIndexes() {
27
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_events_type ON events(type)`);
28
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp)`);
29
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_events_source ON events(source)`);
30
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_events_expires ON events(expires_at)`);
31
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_events_consumed ON events(consumed)`);
32
+ }
33
+ /**
34
+ * Insert a new event
35
+ */
36
+ async insert(event) {
37
+ const id = event.id || SecureRandom_1.SecureRandom.generateId();
38
+ const timestamp = event.timestamp || Date.now();
39
+ const expiresAt = event.ttl ? timestamp + (event.ttl * 1000) : null;
40
+ await this.run(`INSERT INTO events (id, type, payload, timestamp, source, expires_at, consumed)
41
+ VALUES (?, ?, ?, ?, ?, ?, 0)`, [
42
+ id,
43
+ event.type,
44
+ JSON.stringify(event.payload),
45
+ timestamp,
46
+ event.source,
47
+ expiresAt
48
+ ]);
49
+ return id;
50
+ }
51
+ /**
52
+ * Find an event by ID
53
+ */
54
+ async findById(id) {
55
+ const row = await this.queryOne(`SELECT * FROM events WHERE id = ?`, [id]);
56
+ return row ? this.mapToEvent(row) : null;
57
+ }
58
+ /**
59
+ * Find events by type
60
+ */
61
+ async findByType(type, limit = 100) {
62
+ const now = Date.now();
63
+ const rows = await this.queryAll(`SELECT * FROM events
64
+ WHERE type = ?
65
+ AND (expires_at IS NULL OR expires_at > ?)
66
+ ORDER BY timestamp DESC
67
+ LIMIT ?`, [type, now, limit]);
68
+ return rows.map(row => this.mapToEvent(row));
69
+ }
70
+ /**
71
+ * Find events by source agent
72
+ */
73
+ async findBySource(source, limit = 100) {
74
+ const now = Date.now();
75
+ const rows = await this.queryAll(`SELECT * FROM events
76
+ WHERE source = ?
77
+ AND (expires_at IS NULL OR expires_at > ?)
78
+ ORDER BY timestamp DESC
79
+ LIMIT ?`, [source, now, limit]);
80
+ return rows.map(row => this.mapToEvent(row));
81
+ }
82
+ /**
83
+ * Find events since a timestamp
84
+ */
85
+ async findSince(since, limit = 100) {
86
+ const now = Date.now();
87
+ const rows = await this.queryAll(`SELECT * FROM events
88
+ WHERE timestamp > ?
89
+ AND (expires_at IS NULL OR expires_at > ?)
90
+ ORDER BY timestamp ASC
91
+ LIMIT ?`, [since, now, limit]);
92
+ return rows.map(row => this.mapToEvent(row));
93
+ }
94
+ /**
95
+ * Get unconsumed events
96
+ */
97
+ async findUnconsumed(limit = 100) {
98
+ const now = Date.now();
99
+ const rows = await this.queryAll(`SELECT * FROM events
100
+ WHERE consumed = 0
101
+ AND (expires_at IS NULL OR expires_at > ?)
102
+ ORDER BY timestamp ASC
103
+ LIMIT ?`, [now, limit]);
104
+ return rows.map(row => this.mapToEvent(row));
105
+ }
106
+ /**
107
+ * Mark event as consumed
108
+ */
109
+ async markConsumed(id) {
110
+ await this.run(`UPDATE events SET consumed = 1 WHERE id = ?`, [id]);
111
+ }
112
+ /**
113
+ * Delete an event by ID
114
+ */
115
+ async deleteById(id) {
116
+ await this.run(`DELETE FROM events WHERE id = ?`, [id]);
117
+ }
118
+ /**
119
+ * Delete events by type
120
+ */
121
+ async deleteByType(type) {
122
+ await this.run(`DELETE FROM events WHERE type = ?`, [type]);
123
+ }
124
+ /**
125
+ * Delete expired events
126
+ */
127
+ async deleteExpired() {
128
+ const now = Date.now();
129
+ await this.run(`DELETE FROM events WHERE expires_at IS NOT NULL AND expires_at <= ?`, [now]);
130
+ }
131
+ /**
132
+ * Delete old consumed events
133
+ */
134
+ async deleteConsumedOlderThan(timestamp) {
135
+ await this.run(`DELETE FROM events WHERE consumed = 1 AND timestamp < ?`, [timestamp]);
136
+ }
137
+ /**
138
+ * Count total events
139
+ */
140
+ async count() {
141
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM events`);
142
+ return result?.count || 0;
143
+ }
144
+ /**
145
+ * Count events by type
146
+ */
147
+ async countByType(type) {
148
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM events WHERE type = ?`, [type]);
149
+ return result?.count || 0;
150
+ }
151
+ /**
152
+ * Get event statistics by type
153
+ */
154
+ async getTypeCounts() {
155
+ const rows = await this.queryAll(`SELECT type, COUNT(*) as count FROM events GROUP BY type`);
156
+ const counts = {};
157
+ rows.forEach(row => {
158
+ counts[row.type] = row.count;
159
+ });
160
+ return counts;
161
+ }
162
+ /**
163
+ * Map database row to Event object
164
+ */
165
+ mapToEvent(row) {
166
+ return {
167
+ id: row.id,
168
+ type: row.type,
169
+ payload: JSON.parse(row.payload),
170
+ timestamp: row.timestamp,
171
+ source: row.source,
172
+ ttl: row.expires_at ? (row.expires_at - row.timestamp) / 1000 : undefined
173
+ };
174
+ }
175
+ }
176
+ exports.EventDAO = EventDAO;
177
+ //# sourceMappingURL=EventDAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDAO.js","sourceRoot":"","sources":["../../../../src/core/memory/dao/EventDAO.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,8DAA2D;AAc3D;;;;;GAKG;AACH,MAAa,QAAS,SAAQ,iBAAO;IACnC,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;KAUd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACvF,MAAM,IAAI,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACjF,MAAM,IAAI,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,2BAAY,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpE,MAAM,IAAI,CAAC,GAAG,CACZ;oCAC8B,EAC9B;YACE,EAAE;YACF,KAAK,CAAC,IAAI;YACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7B,SAAS;YACT,KAAK,CAAC,MAAM;YACZ,SAAS;SACV,CACF,CAAC;QAEF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC7B,mCAAmC,EACnC,CAAC,EAAE,CAAC,CACL,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,QAAgB,GAAG;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B;;;;eAIS,EACT,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CACnB,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,QAAgB,GAAG;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B;;;;eAIS,EACT,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CACrB,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,QAAgB,GAAG;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B;;;;eAIS,EACT,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CACpB,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,GAAG;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B;;;;eAIS,EACT,CAAC,GAAG,EAAE,KAAK,CAAC,CACb,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,IAAI,CAAC,GAAG,CACZ,6CAA6C,EAC7C,CAAC,EAAE,CAAC,CACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,GAAG,CACZ,qEAAqE,EACrE,CAAC,GAAG,CAAC,CACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,SAAiB;QAC7C,MAAM,IAAI,CAAC,GAAG,CACZ,yDAAyD,EACzD,CAAC,SAAS,CAAC,CACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,sCAAsC,CACvC,CAAC;QACF,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,qDAAqD,EACrD,CAAC,IAAI,CAAC,CACP,CAAC;QACF,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B,0DAA0D,CAC3D,CAAC;QAEF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAQ;QACzB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS;SAC1E,CAAC;IACJ,CAAC;CACF;AAxND,4BAwNC"}
@@ -0,0 +1,57 @@
1
+ import { BaseDAO } from './BaseDAO';
2
+ import { MemoryEntry } from '../SwarmMemoryManager';
3
+ /**
4
+ * MemoryEntryDAO - Data Access Object for core memory entries (Table 1)
5
+ *
6
+ * Handles all database operations for the memory_entries table
7
+ * Separates data access from business logic
8
+ */
9
+ export declare class MemoryEntryDAO extends BaseDAO {
10
+ createTable(): Promise<void>;
11
+ createIndexes(): Promise<void>;
12
+ /**
13
+ * Insert or replace a memory entry
14
+ */
15
+ insert(entry: MemoryEntry): Promise<void>;
16
+ /**
17
+ * Find a memory entry by key and partition
18
+ */
19
+ findByKey(key: string, partition: string, includeExpired?: boolean): Promise<MemoryEntry | null>;
20
+ /**
21
+ * Find memory entries by pattern match on key
22
+ */
23
+ findByPattern(pattern: string, partition: string, includeExpired?: boolean): Promise<MemoryEntry[]>;
24
+ /**
25
+ * Delete a memory entry by key and partition
26
+ */
27
+ deleteByKey(key: string, partition: string): Promise<void>;
28
+ /**
29
+ * Delete all entries in a partition
30
+ */
31
+ deleteByPartition(partition: string): Promise<void>;
32
+ /**
33
+ * Delete all expired entries
34
+ */
35
+ deleteExpired(): Promise<void>;
36
+ /**
37
+ * Count total memory entries
38
+ */
39
+ count(): Promise<number>;
40
+ /**
41
+ * Get list of distinct partitions
42
+ */
43
+ getPartitions(): Promise<string[]>;
44
+ /**
45
+ * Get count of entries by access level
46
+ */
47
+ getAccessLevelCounts(): Promise<Record<string, number>>;
48
+ /**
49
+ * Find entries modified since a timestamp (for QUIC sync)
50
+ */
51
+ findModifiedSince(since: number, partition?: string): Promise<MemoryEntry[]>;
52
+ /**
53
+ * Map database row to MemoryEntry object
54
+ */
55
+ private mapToEntry;
56
+ }
57
+ //# sourceMappingURL=MemoryEntryDAO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryEntryDAO.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/dao/MemoryEntryDAO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,OAAO;IACnC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/C;;OAEG;IACG,SAAS,CACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAc9B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC;IAczB;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOxC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAY7D;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAelF;;OAEG;IACH,OAAO,CAAC,UAAU;CAanB"}