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,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryEntryDAO = void 0;
4
+ const BaseDAO_1 = require("./BaseDAO");
5
+ const SwarmMemoryManager_1 = require("../SwarmMemoryManager");
6
+ /**
7
+ * MemoryEntryDAO - Data Access Object for core memory entries (Table 1)
8
+ *
9
+ * Handles all database operations for the memory_entries table
10
+ * Separates data access from business logic
11
+ */
12
+ class MemoryEntryDAO extends BaseDAO_1.BaseDAO {
13
+ async createTable() {
14
+ await this.run(`
15
+ CREATE TABLE IF NOT EXISTS memory_entries (
16
+ key TEXT NOT NULL,
17
+ partition TEXT NOT NULL DEFAULT 'default',
18
+ value TEXT NOT NULL,
19
+ metadata TEXT,
20
+ created_at INTEGER NOT NULL,
21
+ expires_at INTEGER,
22
+ owner TEXT,
23
+ access_level TEXT DEFAULT 'private',
24
+ team_id TEXT,
25
+ swarm_id TEXT,
26
+ PRIMARY KEY (key, partition)
27
+ )
28
+ `);
29
+ }
30
+ async createIndexes() {
31
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_memory_partition ON memory_entries(partition)`);
32
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_memory_expires ON memory_entries(expires_at)`);
33
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner)`);
34
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_memory_access ON memory_entries(access_level)`);
35
+ }
36
+ /**
37
+ * Insert or replace a memory entry
38
+ */
39
+ async insert(entry) {
40
+ await this.run(`INSERT OR REPLACE INTO memory_entries
41
+ (key, partition, value, metadata, created_at, expires_at, owner, access_level, team_id, swarm_id)
42
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
43
+ entry.key,
44
+ entry.partition || 'default',
45
+ JSON.stringify(entry.value),
46
+ null, // metadata handled separately
47
+ entry.createdAt,
48
+ entry.expiresAt || null,
49
+ entry.owner || 'system',
50
+ entry.accessLevel || SwarmMemoryManager_1.AccessLevel.PRIVATE,
51
+ entry.teamId || null,
52
+ entry.swarmId || null
53
+ ]);
54
+ }
55
+ /**
56
+ * Find a memory entry by key and partition
57
+ */
58
+ async findByKey(key, partition, includeExpired = false) {
59
+ const now = Date.now();
60
+ let query = `SELECT * FROM memory_entries WHERE key = ? AND partition = ?`;
61
+ const params = [key, partition];
62
+ if (!includeExpired) {
63
+ query += ` AND (expires_at IS NULL OR expires_at > ?)`;
64
+ params.push(now);
65
+ }
66
+ const row = await this.queryOne(query, params);
67
+ return row ? this.mapToEntry(row) : null;
68
+ }
69
+ /**
70
+ * Find memory entries by pattern match on key
71
+ */
72
+ async findByPattern(pattern, partition, includeExpired = false) {
73
+ const now = Date.now();
74
+ let query = `SELECT * FROM memory_entries WHERE partition = ? AND key LIKE ?`;
75
+ const params = [partition, pattern];
76
+ if (!includeExpired) {
77
+ query += ` AND (expires_at IS NULL OR expires_at > ?)`;
78
+ params.push(now);
79
+ }
80
+ const rows = await this.queryAll(query, params);
81
+ return rows.map(row => this.mapToEntry(row));
82
+ }
83
+ /**
84
+ * Delete a memory entry by key and partition
85
+ */
86
+ async deleteByKey(key, partition) {
87
+ await this.run(`DELETE FROM memory_entries WHERE key = ? AND partition = ?`, [key, partition]);
88
+ }
89
+ /**
90
+ * Delete all entries in a partition
91
+ */
92
+ async deleteByPartition(partition) {
93
+ await this.run(`DELETE FROM memory_entries WHERE partition = ?`, [partition]);
94
+ }
95
+ /**
96
+ * Delete all expired entries
97
+ */
98
+ async deleteExpired() {
99
+ const now = Date.now();
100
+ await this.run(`DELETE FROM memory_entries WHERE expires_at IS NOT NULL AND expires_at <= ?`, [now]);
101
+ }
102
+ /**
103
+ * Count total memory entries
104
+ */
105
+ async count() {
106
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM memory_entries`);
107
+ return result?.count || 0;
108
+ }
109
+ /**
110
+ * Get list of distinct partitions
111
+ */
112
+ async getPartitions() {
113
+ const rows = await this.queryAll(`SELECT DISTINCT partition FROM memory_entries`);
114
+ return rows.map(row => row.partition);
115
+ }
116
+ /**
117
+ * Get count of entries by access level
118
+ */
119
+ async getAccessLevelCounts() {
120
+ const rows = await this.queryAll(`SELECT access_level, COUNT(*) as count FROM memory_entries GROUP BY access_level`);
121
+ const counts = {};
122
+ rows.forEach(row => {
123
+ counts[row.access_level] = row.count;
124
+ });
125
+ return counts;
126
+ }
127
+ /**
128
+ * Find entries modified since a timestamp (for QUIC sync)
129
+ */
130
+ async findModifiedSince(since, partition) {
131
+ let query = `SELECT * FROM memory_entries WHERE created_at > ?`;
132
+ const params = [since];
133
+ if (partition) {
134
+ query += ` AND partition = ?`;
135
+ params.push(partition);
136
+ }
137
+ query += ` ORDER BY created_at ASC`;
138
+ const rows = await this.queryAll(query, params);
139
+ return rows.map(row => this.mapToEntry(row));
140
+ }
141
+ /**
142
+ * Map database row to MemoryEntry object
143
+ */
144
+ mapToEntry(row) {
145
+ return {
146
+ key: row.key,
147
+ value: JSON.parse(row.value),
148
+ partition: row.partition,
149
+ createdAt: row.created_at,
150
+ expiresAt: row.expires_at,
151
+ owner: row.owner,
152
+ accessLevel: row.access_level,
153
+ teamId: row.team_id,
154
+ swarmId: row.swarm_id
155
+ };
156
+ }
157
+ }
158
+ exports.MemoryEntryDAO = MemoryEntryDAO;
159
+ //# sourceMappingURL=MemoryEntryDAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryEntryDAO.js","sourceRoot":"","sources":["../../../../src/core/memory/dao/MemoryEntryDAO.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { BaseDAO } from './BaseDAO';
2
+ /**
3
+ * Workflow state interface
4
+ */
5
+ export interface WorkflowState {
6
+ id: string;
7
+ step: string;
8
+ status: 'pending' | 'in_progress' | 'completed' | 'failed';
9
+ checkpoint: any;
10
+ sha: string;
11
+ ttl?: number;
12
+ createdAt?: number;
13
+ updatedAt?: number;
14
+ }
15
+ /**
16
+ * WorkflowDAO - Data Access Object for workflow state management (Table 4)
17
+ *
18
+ * Handles all database operations for the workflows table
19
+ * Manages workflow execution state and checkpoints
20
+ */
21
+ export declare class WorkflowDAO extends BaseDAO {
22
+ createTable(): Promise<void>;
23
+ createIndexes(): Promise<void>;
24
+ /**
25
+ * Insert or update a workflow state
26
+ */
27
+ insert(workflow: WorkflowState): Promise<void>;
28
+ /**
29
+ * Find a workflow by ID
30
+ */
31
+ findById(id: string): Promise<WorkflowState | null>;
32
+ /**
33
+ * Find workflows by status
34
+ */
35
+ findByStatus(status: WorkflowState['status']): Promise<WorkflowState[]>;
36
+ /**
37
+ * Find workflows by step
38
+ */
39
+ findByStep(step: string): Promise<WorkflowState[]>;
40
+ /**
41
+ * Find workflow by SHA checkpoint
42
+ */
43
+ findBySHA(sha: string): Promise<WorkflowState | null>;
44
+ /**
45
+ * Update workflow status
46
+ */
47
+ updateStatus(id: string, status: WorkflowState['status']): Promise<void>;
48
+ /**
49
+ * Update workflow checkpoint
50
+ */
51
+ updateCheckpoint(id: string, checkpoint: any, sha: string): Promise<void>;
52
+ /**
53
+ * Delete a workflow by ID
54
+ */
55
+ deleteById(id: string): Promise<void>;
56
+ /**
57
+ * Delete workflows by status
58
+ */
59
+ deleteByStatus(status: WorkflowState['status']): Promise<void>;
60
+ /**
61
+ * Delete expired workflows
62
+ */
63
+ deleteExpired(): Promise<void>;
64
+ /**
65
+ * Count total workflows
66
+ */
67
+ count(): Promise<number>;
68
+ /**
69
+ * Count workflows by status
70
+ */
71
+ countByStatus(status: WorkflowState['status']): Promise<number>;
72
+ /**
73
+ * Get workflow statistics by status
74
+ */
75
+ getStatusCounts(): Promise<Record<string, number>>;
76
+ /**
77
+ * Find active workflows (pending or in_progress)
78
+ */
79
+ findActive(): Promise<WorkflowState[]>;
80
+ /**
81
+ * Map database row to WorkflowState object
82
+ */
83
+ private mapToWorkflow;
84
+ }
85
+ //# sourceMappingURL=WorkflowDAO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDAO.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/dao/WorkflowDAO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3D,UAAU,EAAE,GAAG,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,OAAO;IAChC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpD;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAQzD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAY7E;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAYxD;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAa3D;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/E;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAQrE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAYxD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAY5C;;OAEG;IACH,OAAO,CAAC,aAAa;CAYtB"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowDAO = void 0;
4
+ const BaseDAO_1 = require("./BaseDAO");
5
+ /**
6
+ * WorkflowDAO - Data Access Object for workflow state management (Table 4)
7
+ *
8
+ * Handles all database operations for the workflows table
9
+ * Manages workflow execution state and checkpoints
10
+ */
11
+ class WorkflowDAO extends BaseDAO_1.BaseDAO {
12
+ async createTable() {
13
+ await this.run(`
14
+ CREATE TABLE IF NOT EXISTS workflows (
15
+ id TEXT PRIMARY KEY,
16
+ step TEXT NOT NULL,
17
+ status TEXT NOT NULL CHECK(status IN ('pending', 'in_progress', 'completed', 'failed')),
18
+ checkpoint TEXT NOT NULL,
19
+ sha TEXT NOT NULL,
20
+ created_at INTEGER NOT NULL,
21
+ updated_at INTEGER NOT NULL,
22
+ expires_at INTEGER
23
+ )
24
+ `);
25
+ }
26
+ async createIndexes() {
27
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_status ON workflows(status)`);
28
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_step ON workflows(step)`);
29
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_sha ON workflows(sha)`);
30
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_created ON workflows(created_at)`);
31
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_updated ON workflows(updated_at)`);
32
+ await this.run(`CREATE INDEX IF NOT EXISTS idx_workflows_expires ON workflows(expires_at)`);
33
+ }
34
+ /**
35
+ * Insert or update a workflow state
36
+ */
37
+ async insert(workflow) {
38
+ const now = Date.now();
39
+ const createdAt = workflow.createdAt || now;
40
+ const updatedAt = workflow.updatedAt || now;
41
+ const expiresAt = workflow.ttl ? now + (workflow.ttl * 1000) : null;
42
+ await this.run(`INSERT OR REPLACE INTO workflows
43
+ (id, step, status, checkpoint, sha, created_at, updated_at, expires_at)
44
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
45
+ workflow.id,
46
+ workflow.step,
47
+ workflow.status,
48
+ JSON.stringify(workflow.checkpoint),
49
+ workflow.sha,
50
+ createdAt,
51
+ updatedAt,
52
+ expiresAt
53
+ ]);
54
+ }
55
+ /**
56
+ * Find a workflow by ID
57
+ */
58
+ async findById(id) {
59
+ const row = await this.queryOne(`SELECT * FROM workflows WHERE id = ?`, [id]);
60
+ return row ? this.mapToWorkflow(row) : null;
61
+ }
62
+ /**
63
+ * Find workflows by status
64
+ */
65
+ async findByStatus(status) {
66
+ const now = Date.now();
67
+ const rows = await this.queryAll(`SELECT * FROM workflows
68
+ WHERE status = ?
69
+ AND (expires_at IS NULL OR expires_at > ?)
70
+ ORDER BY updated_at DESC`, [status, now]);
71
+ return rows.map(row => this.mapToWorkflow(row));
72
+ }
73
+ /**
74
+ * Find workflows by step
75
+ */
76
+ async findByStep(step) {
77
+ const now = Date.now();
78
+ const rows = await this.queryAll(`SELECT * FROM workflows
79
+ WHERE step = ?
80
+ AND (expires_at IS NULL OR expires_at > ?)
81
+ ORDER BY updated_at DESC`, [step, now]);
82
+ return rows.map(row => this.mapToWorkflow(row));
83
+ }
84
+ /**
85
+ * Find workflow by SHA checkpoint
86
+ */
87
+ async findBySHA(sha) {
88
+ const now = Date.now();
89
+ const row = await this.queryOne(`SELECT * FROM workflows
90
+ WHERE sha = ?
91
+ AND (expires_at IS NULL OR expires_at > ?)
92
+ ORDER BY updated_at DESC
93
+ LIMIT 1`, [sha, now]);
94
+ return row ? this.mapToWorkflow(row) : null;
95
+ }
96
+ /**
97
+ * Update workflow status
98
+ */
99
+ async updateStatus(id, status) {
100
+ const now = Date.now();
101
+ await this.run(`UPDATE workflows SET status = ?, updated_at = ? WHERE id = ?`, [status, now, id]);
102
+ }
103
+ /**
104
+ * Update workflow checkpoint
105
+ */
106
+ async updateCheckpoint(id, checkpoint, sha) {
107
+ const now = Date.now();
108
+ await this.run(`UPDATE workflows SET checkpoint = ?, sha = ?, updated_at = ? WHERE id = ?`, [JSON.stringify(checkpoint), sha, now, id]);
109
+ }
110
+ /**
111
+ * Delete a workflow by ID
112
+ */
113
+ async deleteById(id) {
114
+ await this.run(`DELETE FROM workflows WHERE id = ?`, [id]);
115
+ }
116
+ /**
117
+ * Delete workflows by status
118
+ */
119
+ async deleteByStatus(status) {
120
+ await this.run(`DELETE FROM workflows WHERE status = ?`, [status]);
121
+ }
122
+ /**
123
+ * Delete expired workflows
124
+ */
125
+ async deleteExpired() {
126
+ const now = Date.now();
127
+ await this.run(`DELETE FROM workflows WHERE expires_at IS NOT NULL AND expires_at <= ?`, [now]);
128
+ }
129
+ /**
130
+ * Count total workflows
131
+ */
132
+ async count() {
133
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM workflows`);
134
+ return result?.count || 0;
135
+ }
136
+ /**
137
+ * Count workflows by status
138
+ */
139
+ async countByStatus(status) {
140
+ const result = await this.queryOne(`SELECT COUNT(*) as count FROM workflows WHERE status = ?`, [status]);
141
+ return result?.count || 0;
142
+ }
143
+ /**
144
+ * Get workflow statistics by status
145
+ */
146
+ async getStatusCounts() {
147
+ const rows = await this.queryAll(`SELECT status, COUNT(*) as count FROM workflows GROUP BY status`);
148
+ const counts = {};
149
+ rows.forEach(row => {
150
+ counts[row.status] = row.count;
151
+ });
152
+ return counts;
153
+ }
154
+ /**
155
+ * Find active workflows (pending or in_progress)
156
+ */
157
+ async findActive() {
158
+ const now = Date.now();
159
+ const rows = await this.queryAll(`SELECT * FROM workflows
160
+ WHERE status IN ('pending', 'in_progress')
161
+ AND (expires_at IS NULL OR expires_at > ?)
162
+ ORDER BY updated_at DESC`, [now]);
163
+ return rows.map(row => this.mapToWorkflow(row));
164
+ }
165
+ /**
166
+ * Map database row to WorkflowState object
167
+ */
168
+ mapToWorkflow(row) {
169
+ return {
170
+ id: row.id,
171
+ step: row.step,
172
+ status: row.status,
173
+ checkpoint: JSON.parse(row.checkpoint),
174
+ sha: row.sha,
175
+ createdAt: row.created_at,
176
+ updatedAt: row.updated_at,
177
+ ttl: row.expires_at ? (row.expires_at - row.created_at) / 1000 : undefined
178
+ };
179
+ }
180
+ }
181
+ exports.WorkflowDAO = WorkflowDAO;
182
+ //# sourceMappingURL=WorkflowDAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDAO.js","sourceRoot":"","sources":["../../../../src/core/memory/dao/WorkflowDAO.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { AccessControlDAO } from '../dao/AccessControlDAO';
2
+ import { AccessLevel, Permission } from '../AccessControl';
3
+ /**
4
+ * Permission check request
5
+ */
6
+ export interface PermissionCheckRequest {
7
+ agentId: string;
8
+ resourceOwner: string;
9
+ accessLevel: AccessLevel;
10
+ permission: Permission;
11
+ teamId?: string;
12
+ resourceTeamId?: string;
13
+ swarmId?: string;
14
+ resourceSwarmId?: string;
15
+ isSystemAgent?: boolean;
16
+ }
17
+ /**
18
+ * Permission check result
19
+ */
20
+ export interface PermissionCheckResult {
21
+ allowed: boolean;
22
+ reason?: string;
23
+ }
24
+ /**
25
+ * AccessControlService - Business logic for access control and permissions
26
+ *
27
+ * Handles:
28
+ * - Permission checking across private/team/swarm/public access levels
29
+ * - ACL management (grant, revoke, check)
30
+ * - System agent special permissions
31
+ * - Team and swarm membership validation
32
+ *
33
+ * Implements the access control rules from the original SwarmMemoryManager
34
+ */
35
+ export declare class AccessControlService {
36
+ private accessControlDAO;
37
+ constructor(accessControlDAO: AccessControlDAO);
38
+ /**
39
+ * Check if an agent has permission to access a resource
40
+ */
41
+ checkPermission(request: PermissionCheckRequest): PermissionCheckResult;
42
+ /**
43
+ * Grant a permission to an agent for a resource
44
+ */
45
+ grant(resourceKey: string, resourcePartition: string, agentId: string, permission: Permission, grantedBy: string, ttl?: number): Promise<void>;
46
+ /**
47
+ * Revoke a permission from an agent for a resource
48
+ */
49
+ revoke(resourceKey: string, resourcePartition: string, agentId: string, permission: Permission): Promise<void>;
50
+ /**
51
+ * Check if an agent has explicit ACL permission for a resource
52
+ */
53
+ hasExplicitPermission(resourceKey: string, resourcePartition: string, agentId: string, permission: Permission): Promise<boolean>;
54
+ /**
55
+ * Get all permissions for a resource
56
+ */
57
+ getResourcePermissions(resourceKey: string, resourcePartition: string): Promise<import("../AccessControl").ACL[]>;
58
+ /**
59
+ * Get all permissions for an agent
60
+ */
61
+ getAgentPermissions(agentId: string): Promise<import("../AccessControl").ACL[]>;
62
+ /**
63
+ * Delete all permissions for a resource
64
+ */
65
+ deleteResourcePermissions(resourceKey: string, resourcePartition: string): Promise<void>;
66
+ /**
67
+ * Delete all permissions for an agent
68
+ */
69
+ deleteAgentPermissions(agentId: string): Promise<void>;
70
+ /**
71
+ * Clean up expired ACL entries
72
+ */
73
+ cleanupExpired(): Promise<void>;
74
+ /**
75
+ * Get ACL statistics
76
+ */
77
+ getStatistics(): Promise<{
78
+ total: number;
79
+ byPermission: Record<string, number>;
80
+ }>;
81
+ /**
82
+ * Check PRIVATE access level
83
+ * Only owner can access
84
+ */
85
+ private checkPrivateAccess;
86
+ /**
87
+ * Check TEAM access level
88
+ * Owner + same team members can access
89
+ */
90
+ private checkTeamAccess;
91
+ /**
92
+ * Check SWARM access level
93
+ * Owner + same swarm members can access
94
+ */
95
+ private checkSwarmAccess;
96
+ /**
97
+ * Check PUBLIC access level
98
+ * Everyone has read access, only owner/team can write
99
+ */
100
+ private checkPublicAccess;
101
+ /**
102
+ * Validate permission grant request
103
+ * Ensures grantor has authority to grant permissions
104
+ */
105
+ validateGrant(resourceKey: string, resourcePartition: string, grantedBy: string, resourceOwner: string): Promise<PermissionCheckResult>;
106
+ /**
107
+ * Bulk grant permissions to multiple agents
108
+ */
109
+ grantBulk(resourceKey: string, resourcePartition: string, agentIds: string[], permission: Permission, grantedBy: string, ttl?: number): Promise<void>;
110
+ /**
111
+ * Bulk revoke permissions from multiple agents
112
+ */
113
+ revokeBulk(resourceKey: string, resourcePartition: string, agentIds: string[], permission: Permission): Promise<void>;
114
+ /**
115
+ * Check if agent has any permission for a resource
116
+ */
117
+ hasAnyPermission(resourceKey: string, resourcePartition: string, agentId: string): Promise<boolean>;
118
+ /**
119
+ * Get all agents with a specific permission for a resource
120
+ */
121
+ getAgentsWithPermission(resourceKey: string, resourcePartition: string, permission: Permission): Promise<string[]>;
122
+ }
123
+ //# sourceMappingURL=AccessControlService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessControlService.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/services/AccessControlService.ts"],"names":[],"mappings":"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"}