agentic-qe 1.3.5 → 1.3.7
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/agents/qe-code-complexity.md +291 -0
- package/.claude/settings.json +2 -2
- package/CHANGELOG.md +67 -0
- package/README.md +36 -6
- package/dist/agents/BaseAgent.d.ts +6 -2
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +62 -51
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +139 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js +403 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -0
- package/dist/agents/FleetCommanderAgent.js +2 -2
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.d.ts +5 -5
- package/dist/agents/QualityGateAgent.d.ts.map +1 -1
- package/dist/agents/QualityGateAgent.js +33 -19
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +9 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +96 -2
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +23 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +279 -54
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/coordination/AgentCoordinator.d.ts +98 -0
- package/dist/agents/coordination/AgentCoordinator.d.ts.map +1 -0
- package/dist/agents/coordination/AgentCoordinator.js +196 -0
- package/dist/agents/coordination/AgentCoordinator.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +107 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.js +220 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -0
- package/dist/agents/memory/AgentMemoryService.d.ts +173 -0
- package/dist/agents/memory/AgentMemoryService.d.ts.map +1 -0
- package/dist/agents/memory/AgentMemoryService.js +297 -0
- package/dist/agents/memory/AgentMemoryService.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +45 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/skills/index.d.ts +4 -0
- package/dist/cli/commands/skills/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/index.js +8 -2
- package/dist/cli/commands/skills/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +2 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +4 -1
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/dao/AccessControlDAO.d.ts +66 -0
- package/dist/core/memory/dao/AccessControlDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/AccessControlDAO.js +140 -0
- package/dist/core/memory/dao/AccessControlDAO.js.map +1 -0
- package/dist/core/memory/dao/BaseDAO.d.ts +34 -0
- package/dist/core/memory/dao/BaseDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/BaseDAO.js +34 -0
- package/dist/core/memory/dao/BaseDAO.js.map +1 -0
- package/dist/core/memory/dao/BlackboardDAO.d.ts +90 -0
- package/dist/core/memory/dao/BlackboardDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/BlackboardDAO.js +223 -0
- package/dist/core/memory/dao/BlackboardDAO.js.map +1 -0
- package/dist/core/memory/dao/EventDAO.d.ts +83 -0
- package/dist/core/memory/dao/EventDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/EventDAO.js +177 -0
- package/dist/core/memory/dao/EventDAO.js.map +1 -0
- package/dist/core/memory/dao/MemoryEntryDAO.d.ts +57 -0
- package/dist/core/memory/dao/MemoryEntryDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/MemoryEntryDAO.js +159 -0
- package/dist/core/memory/dao/MemoryEntryDAO.js.map +1 -0
- package/dist/core/memory/dao/WorkflowDAO.d.ts +85 -0
- package/dist/core/memory/dao/WorkflowDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/WorkflowDAO.js +182 -0
- package/dist/core/memory/dao/WorkflowDAO.js.map +1 -0
- package/dist/core/memory/services/AccessControlService.d.ts +123 -0
- package/dist/core/memory/services/AccessControlService.d.ts.map +1 -0
- package/dist/core/memory/services/AccessControlService.js +249 -0
- package/dist/core/memory/services/AccessControlService.js.map +1 -0
- package/dist/core/memory/services/MemoryStoreService.d.ts +69 -0
- package/dist/core/memory/services/MemoryStoreService.d.ts.map +1 -0
- package/dist/core/memory/services/MemoryStoreService.js +214 -0
- package/dist/core/memory/services/MemoryStoreService.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +4 -1
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +11 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +63 -8
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +7 -1
- package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
- package/dist/mcp/handlers/quality-analyze.js +18 -1
- package/dist/mcp/handlers/quality-analyze.js.map +1 -1
- package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
- package/dist/mcp/handlers/test-generate.js +24 -8
- package/dist/mcp/handlers/test-generate.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts +5 -0
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +19 -0
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/utils/__mocks__/Database.d.ts +64 -0
- package/dist/utils/__mocks__/Database.d.ts.map +1 -0
- package/dist/utils/__mocks__/Database.js +134 -0
- package/dist/utils/__mocks__/Database.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccessControlService = void 0;
|
|
4
|
+
const AccessControl_1 = require("../AccessControl");
|
|
5
|
+
/**
|
|
6
|
+
* AccessControlService - Business logic for access control and permissions
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - Permission checking across private/team/swarm/public access levels
|
|
10
|
+
* - ACL management (grant, revoke, check)
|
|
11
|
+
* - System agent special permissions
|
|
12
|
+
* - Team and swarm membership validation
|
|
13
|
+
*
|
|
14
|
+
* Implements the access control rules from the original SwarmMemoryManager
|
|
15
|
+
*/
|
|
16
|
+
class AccessControlService {
|
|
17
|
+
constructor(accessControlDAO) {
|
|
18
|
+
this.accessControlDAO = accessControlDAO;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if an agent has permission to access a resource
|
|
22
|
+
*/
|
|
23
|
+
checkPermission(request) {
|
|
24
|
+
// System agents have full access
|
|
25
|
+
if (request.isSystemAgent) {
|
|
26
|
+
return { allowed: true, reason: 'System agent' };
|
|
27
|
+
}
|
|
28
|
+
// Owner always has full access
|
|
29
|
+
if (request.agentId === request.resourceOwner) {
|
|
30
|
+
return { allowed: true, reason: 'Resource owner' };
|
|
31
|
+
}
|
|
32
|
+
// Check access level rules
|
|
33
|
+
switch (request.accessLevel) {
|
|
34
|
+
case AccessControl_1.AccessLevel.PRIVATE:
|
|
35
|
+
return this.checkPrivateAccess(request);
|
|
36
|
+
case AccessControl_1.AccessLevel.TEAM:
|
|
37
|
+
return this.checkTeamAccess(request);
|
|
38
|
+
case AccessControl_1.AccessLevel.SWARM:
|
|
39
|
+
return this.checkSwarmAccess(request);
|
|
40
|
+
case AccessControl_1.AccessLevel.PUBLIC:
|
|
41
|
+
return this.checkPublicAccess(request);
|
|
42
|
+
default:
|
|
43
|
+
return { allowed: false, reason: 'Unknown access level' };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Grant a permission to an agent for a resource
|
|
48
|
+
*/
|
|
49
|
+
async grant(resourceKey, resourcePartition, agentId, permission, grantedBy, ttl) {
|
|
50
|
+
await this.accessControlDAO.grant({
|
|
51
|
+
resourceKey,
|
|
52
|
+
resourcePartition,
|
|
53
|
+
agentId,
|
|
54
|
+
permission,
|
|
55
|
+
grantedBy,
|
|
56
|
+
ttl
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Revoke a permission from an agent for a resource
|
|
61
|
+
*/
|
|
62
|
+
async revoke(resourceKey, resourcePartition, agentId, permission) {
|
|
63
|
+
await this.accessControlDAO.revoke(resourceKey, resourcePartition, agentId, permission);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if an agent has explicit ACL permission for a resource
|
|
67
|
+
*/
|
|
68
|
+
async hasExplicitPermission(resourceKey, resourcePartition, agentId, permission) {
|
|
69
|
+
return this.accessControlDAO.hasPermission(resourceKey, resourcePartition, agentId, permission);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get all permissions for a resource
|
|
73
|
+
*/
|
|
74
|
+
async getResourcePermissions(resourceKey, resourcePartition) {
|
|
75
|
+
return this.accessControlDAO.findByResource(resourceKey, resourcePartition);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all permissions for an agent
|
|
79
|
+
*/
|
|
80
|
+
async getAgentPermissions(agentId) {
|
|
81
|
+
return this.accessControlDAO.findByAgent(agentId);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Delete all permissions for a resource
|
|
85
|
+
*/
|
|
86
|
+
async deleteResourcePermissions(resourceKey, resourcePartition) {
|
|
87
|
+
await this.accessControlDAO.deleteByResource(resourceKey, resourcePartition);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Delete all permissions for an agent
|
|
91
|
+
*/
|
|
92
|
+
async deleteAgentPermissions(agentId) {
|
|
93
|
+
await this.accessControlDAO.deleteByAgent(agentId);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Clean up expired ACL entries
|
|
97
|
+
*/
|
|
98
|
+
async cleanupExpired() {
|
|
99
|
+
await this.accessControlDAO.deleteExpired();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get ACL statistics
|
|
103
|
+
*/
|
|
104
|
+
async getStatistics() {
|
|
105
|
+
const [totalCount, permissionCounts] = await Promise.all([
|
|
106
|
+
this.accessControlDAO.count(),
|
|
107
|
+
this.accessControlDAO.getPermissionCounts()
|
|
108
|
+
]);
|
|
109
|
+
return {
|
|
110
|
+
total: totalCount,
|
|
111
|
+
byPermission: permissionCounts
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// ============================================================================
|
|
115
|
+
// Private Access Level Checkers
|
|
116
|
+
// ============================================================================
|
|
117
|
+
/**
|
|
118
|
+
* Check PRIVATE access level
|
|
119
|
+
* Only owner can access
|
|
120
|
+
*/
|
|
121
|
+
checkPrivateAccess(request) {
|
|
122
|
+
// Already checked owner above, so deny all others
|
|
123
|
+
return {
|
|
124
|
+
allowed: false,
|
|
125
|
+
reason: 'Private access level - only owner allowed'
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check TEAM access level
|
|
130
|
+
* Owner + same team members can access
|
|
131
|
+
*/
|
|
132
|
+
checkTeamAccess(request) {
|
|
133
|
+
// Check if both are in the same team
|
|
134
|
+
if (!request.teamId || !request.resourceTeamId) {
|
|
135
|
+
return {
|
|
136
|
+
allowed: false,
|
|
137
|
+
reason: 'Team access level - team ID missing'
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (request.teamId === request.resourceTeamId) {
|
|
141
|
+
return { allowed: true, reason: 'Same team member' };
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
allowed: false,
|
|
145
|
+
reason: 'Team access level - different teams'
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check SWARM access level
|
|
150
|
+
* Owner + same swarm members can access
|
|
151
|
+
*/
|
|
152
|
+
checkSwarmAccess(request) {
|
|
153
|
+
// Check if both are in the same swarm
|
|
154
|
+
if (!request.swarmId || !request.resourceSwarmId) {
|
|
155
|
+
return {
|
|
156
|
+
allowed: false,
|
|
157
|
+
reason: 'Swarm access level - swarm ID missing'
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (request.swarmId === request.resourceSwarmId) {
|
|
161
|
+
return { allowed: true, reason: 'Same swarm member' };
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
allowed: false,
|
|
165
|
+
reason: 'Swarm access level - different swarms'
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check PUBLIC access level
|
|
170
|
+
* Everyone has read access, only owner/team can write
|
|
171
|
+
*/
|
|
172
|
+
checkPublicAccess(request) {
|
|
173
|
+
// Read is always allowed for public
|
|
174
|
+
if (request.permission === AccessControl_1.Permission.READ) {
|
|
175
|
+
return { allowed: true, reason: 'Public read access' };
|
|
176
|
+
}
|
|
177
|
+
// Write/Delete requires ownership or team membership
|
|
178
|
+
if (request.permission === AccessControl_1.Permission.WRITE || request.permission === AccessControl_1.Permission.DELETE) {
|
|
179
|
+
// Check team membership for write/delete
|
|
180
|
+
if (request.teamId && request.resourceTeamId && request.teamId === request.resourceTeamId) {
|
|
181
|
+
return { allowed: true, reason: 'Same team member with write access' };
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
allowed: false,
|
|
185
|
+
reason: 'Public write/delete requires team membership'
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return { allowed: false, reason: 'Unknown permission type' };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Validate permission grant request
|
|
192
|
+
* Ensures grantor has authority to grant permissions
|
|
193
|
+
*/
|
|
194
|
+
async validateGrant(resourceKey, resourcePartition, grantedBy, resourceOwner) {
|
|
195
|
+
// Only owner can grant permissions
|
|
196
|
+
if (grantedBy === resourceOwner) {
|
|
197
|
+
return { allowed: true, reason: 'Resource owner' };
|
|
198
|
+
}
|
|
199
|
+
// Check if grantor has explicit write permission (closest to admin)
|
|
200
|
+
// Note: Permission.ADMIN doesn't exist in the Permission enum
|
|
201
|
+
const hasAdminPerm = await this.accessControlDAO.hasPermission(resourceKey, resourcePartition, grantedBy, AccessControl_1.Permission.WRITE);
|
|
202
|
+
if (hasAdminPerm) {
|
|
203
|
+
return { allowed: true, reason: 'Explicit admin permission' };
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
allowed: false,
|
|
207
|
+
reason: 'Only owner or admin can grant permissions'
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Bulk grant permissions to multiple agents
|
|
212
|
+
*/
|
|
213
|
+
async grantBulk(resourceKey, resourcePartition, agentIds, permission, grantedBy, ttl) {
|
|
214
|
+
const promises = agentIds.map(agentId => this.accessControlDAO.grant({
|
|
215
|
+
resourceKey,
|
|
216
|
+
resourcePartition,
|
|
217
|
+
agentId,
|
|
218
|
+
permission,
|
|
219
|
+
grantedBy,
|
|
220
|
+
ttl
|
|
221
|
+
}));
|
|
222
|
+
await Promise.all(promises);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Bulk revoke permissions from multiple agents
|
|
226
|
+
*/
|
|
227
|
+
async revokeBulk(resourceKey, resourcePartition, agentIds, permission) {
|
|
228
|
+
const promises = agentIds.map(agentId => this.accessControlDAO.revoke(resourceKey, resourcePartition, agentId, permission));
|
|
229
|
+
await Promise.all(promises);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Check if agent has any permission for a resource
|
|
233
|
+
*/
|
|
234
|
+
async hasAnyPermission(resourceKey, resourcePartition, agentId) {
|
|
235
|
+
const permissions = await this.accessControlDAO.findByResource(resourceKey, resourcePartition);
|
|
236
|
+
return permissions.some(acl => acl.owner === agentId);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get all agents with a specific permission for a resource
|
|
240
|
+
*/
|
|
241
|
+
async getAgentsWithPermission(resourceKey, resourcePartition, permission) {
|
|
242
|
+
const permissions = await this.accessControlDAO.findByResource(resourceKey, resourcePartition);
|
|
243
|
+
return permissions
|
|
244
|
+
.filter(acl => acl.grantedPermissions?.[permission])
|
|
245
|
+
.map(acl => acl.owner);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.AccessControlService = AccessControlService;
|
|
249
|
+
//# sourceMappingURL=AccessControlService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControlService.js","sourceRoot":"","sources":["../../../../src/core/memory/services/AccessControlService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { MemoryEntryDAO } from '../dao/MemoryEntryDAO';
|
|
2
|
+
import { MemoryEntry, StoreOptions, RetrieveOptions, DeleteOptions } from '../SwarmMemoryManager';
|
|
3
|
+
import { AccessControl } from '../AccessControl';
|
|
4
|
+
/**
|
|
5
|
+
* MemoryStoreService - Business logic for memory storage operations
|
|
6
|
+
*
|
|
7
|
+
* Handles:
|
|
8
|
+
* - Core store/retrieve/delete operations
|
|
9
|
+
* - Access control permission checking
|
|
10
|
+
* - TTL calculation
|
|
11
|
+
* - Modification tracking for sync
|
|
12
|
+
*
|
|
13
|
+
* Separates business logic from data access (DAO)
|
|
14
|
+
*/
|
|
15
|
+
export declare class MemoryStoreService {
|
|
16
|
+
private memoryDAO;
|
|
17
|
+
private accessControl;
|
|
18
|
+
private lastModifiedTimestamps;
|
|
19
|
+
constructor(memoryDAO: MemoryEntryDAO, accessControl: AccessControl);
|
|
20
|
+
/**
|
|
21
|
+
* Store a value in memory with access control
|
|
22
|
+
*/
|
|
23
|
+
store(key: string, value: any, options?: StoreOptions): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve a value from memory with access control
|
|
26
|
+
*/
|
|
27
|
+
retrieve(key: string, options?: RetrieveOptions): Promise<any>;
|
|
28
|
+
/**
|
|
29
|
+
* Query memory entries by pattern with access control
|
|
30
|
+
*/
|
|
31
|
+
query(pattern: string, options?: RetrieveOptions): Promise<MemoryEntry[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Delete a memory entry with access control
|
|
34
|
+
*/
|
|
35
|
+
delete(key: string, partition?: string, options?: DeleteOptions): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Clear all entries in a partition
|
|
38
|
+
*/
|
|
39
|
+
clear(partition?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get last modification timestamp for an entry (for QUIC sync)
|
|
42
|
+
*/
|
|
43
|
+
getLastModified(key: string, partition?: string): number | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Calculate expiration timestamp from TTL
|
|
46
|
+
*/
|
|
47
|
+
private calculateExpiresAt;
|
|
48
|
+
/**
|
|
49
|
+
* Track modification timestamp for sync
|
|
50
|
+
*/
|
|
51
|
+
private trackModification;
|
|
52
|
+
/**
|
|
53
|
+
* Check write permission for updating entry
|
|
54
|
+
*/
|
|
55
|
+
private checkWritePermission;
|
|
56
|
+
/**
|
|
57
|
+
* Check read permission for retrieving entry
|
|
58
|
+
*/
|
|
59
|
+
private checkReadPermission;
|
|
60
|
+
/**
|
|
61
|
+
* Check delete permission for removing entry
|
|
62
|
+
*/
|
|
63
|
+
private checkDeletePermission;
|
|
64
|
+
/**
|
|
65
|
+
* Filter entries by access control permissions
|
|
66
|
+
*/
|
|
67
|
+
private filterByPermissions;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=MemoryStoreService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryStoreService.d.ts","sourceRoot":"","sources":["../../../../src/core/memory/services/MemoryStoreService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,sBAAsB,CAAsB;gBAGlD,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,aAAa;IAO9B;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/E;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBxE;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYnF;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpG;;OAEG;IACG,KAAK,CAAC,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,MAAM,GAAG,SAAS;IAS/E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;YACW,oBAAoB;IAqBlC;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,qBAAqB;IAsBnC;;OAEG;YACW,mBAAmB;CA+BlC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryStoreService = void 0;
|
|
4
|
+
const SwarmMemoryManager_1 = require("../SwarmMemoryManager");
|
|
5
|
+
/**
|
|
6
|
+
* MemoryStoreService - Business logic for memory storage operations
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - Core store/retrieve/delete operations
|
|
10
|
+
* - Access control permission checking
|
|
11
|
+
* - TTL calculation
|
|
12
|
+
* - Modification tracking for sync
|
|
13
|
+
*
|
|
14
|
+
* Separates business logic from data access (DAO)
|
|
15
|
+
*/
|
|
16
|
+
class MemoryStoreService {
|
|
17
|
+
constructor(memoryDAO, accessControl) {
|
|
18
|
+
this.memoryDAO = memoryDAO;
|
|
19
|
+
this.accessControl = accessControl;
|
|
20
|
+
this.lastModifiedTimestamps = new Map();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Store a value in memory with access control
|
|
24
|
+
*/
|
|
25
|
+
async store(key, value, options = {}) {
|
|
26
|
+
const partition = options.partition || 'default';
|
|
27
|
+
const owner = options.owner || 'system';
|
|
28
|
+
const accessLevel = options.accessLevel || SwarmMemoryManager_1.AccessLevel.PRIVATE;
|
|
29
|
+
const createdAt = Date.now();
|
|
30
|
+
const expiresAt = this.calculateExpiresAt(options.ttl, createdAt);
|
|
31
|
+
// Check write permission if updating existing entry
|
|
32
|
+
const existing = await this.memoryDAO.findByKey(key, partition);
|
|
33
|
+
if (existing && options.owner) {
|
|
34
|
+
await this.checkWritePermission(existing, options);
|
|
35
|
+
}
|
|
36
|
+
const entry = {
|
|
37
|
+
key,
|
|
38
|
+
value,
|
|
39
|
+
partition,
|
|
40
|
+
createdAt,
|
|
41
|
+
expiresAt,
|
|
42
|
+
owner,
|
|
43
|
+
accessLevel,
|
|
44
|
+
teamId: options.teamId,
|
|
45
|
+
swarmId: options.swarmId
|
|
46
|
+
};
|
|
47
|
+
await this.memoryDAO.insert(entry);
|
|
48
|
+
// Track modification for QUIC sync
|
|
49
|
+
this.trackModification(partition, key, createdAt);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retrieve a value from memory with access control
|
|
53
|
+
*/
|
|
54
|
+
async retrieve(key, options = {}) {
|
|
55
|
+
const partition = options.partition || 'default';
|
|
56
|
+
const entry = await this.memoryDAO.findByKey(key, partition, options.includeExpired);
|
|
57
|
+
if (!entry) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
// Check read permission if agentId provided
|
|
61
|
+
if (options.agentId) {
|
|
62
|
+
await this.checkReadPermission(entry, options);
|
|
63
|
+
}
|
|
64
|
+
return entry.value;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Query memory entries by pattern with access control
|
|
68
|
+
*/
|
|
69
|
+
async query(pattern, options = {}) {
|
|
70
|
+
const partition = options.partition || 'default';
|
|
71
|
+
const entries = await this.memoryDAO.findByPattern(pattern, partition, options.includeExpired);
|
|
72
|
+
// Filter by access control if agentId provided
|
|
73
|
+
if (options.agentId) {
|
|
74
|
+
return this.filterByPermissions(entries, options);
|
|
75
|
+
}
|
|
76
|
+
return entries;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Delete a memory entry with access control
|
|
80
|
+
*/
|
|
81
|
+
async delete(key, partition = 'default', options = {}) {
|
|
82
|
+
// Check delete permission if agentId provided
|
|
83
|
+
if (options.agentId) {
|
|
84
|
+
const entry = await this.memoryDAO.findByKey(key, partition);
|
|
85
|
+
if (entry) {
|
|
86
|
+
await this.checkDeletePermission(entry, options);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
await this.memoryDAO.deleteByKey(key, partition);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Clear all entries in a partition
|
|
93
|
+
*/
|
|
94
|
+
async clear(partition = 'default') {
|
|
95
|
+
await this.memoryDAO.deleteByPartition(partition);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get last modification timestamp for an entry (for QUIC sync)
|
|
99
|
+
*/
|
|
100
|
+
getLastModified(key, partition = 'default') {
|
|
101
|
+
const entryKey = `${partition}:${key}`;
|
|
102
|
+
return this.lastModifiedTimestamps.get(entryKey);
|
|
103
|
+
}
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Private Helper Methods
|
|
106
|
+
// ============================================================================
|
|
107
|
+
/**
|
|
108
|
+
* Calculate expiration timestamp from TTL
|
|
109
|
+
*/
|
|
110
|
+
calculateExpiresAt(ttl, createdAt) {
|
|
111
|
+
return ttl ? createdAt + (ttl * 1000) : undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Track modification timestamp for sync
|
|
115
|
+
*/
|
|
116
|
+
trackModification(partition, key, timestamp) {
|
|
117
|
+
const entryKey = `${partition}:${key}`;
|
|
118
|
+
this.lastModifiedTimestamps.set(entryKey, timestamp);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check write permission for updating entry
|
|
122
|
+
*/
|
|
123
|
+
async checkWritePermission(entry, options) {
|
|
124
|
+
if (!entry.owner || !entry.accessLevel || !options.owner) {
|
|
125
|
+
return; // Skip check if missing required fields
|
|
126
|
+
}
|
|
127
|
+
const permCheck = this.accessControl.checkPermission({
|
|
128
|
+
agentId: options.owner,
|
|
129
|
+
resourceOwner: entry.owner,
|
|
130
|
+
accessLevel: entry.accessLevel,
|
|
131
|
+
permission: SwarmMemoryManager_1.Permission.WRITE,
|
|
132
|
+
teamId: options.teamId,
|
|
133
|
+
resourceTeamId: entry.teamId,
|
|
134
|
+
swarmId: options.swarmId,
|
|
135
|
+
resourceSwarmId: entry.swarmId
|
|
136
|
+
});
|
|
137
|
+
if (!permCheck.allowed) {
|
|
138
|
+
throw new SwarmMemoryManager_1.AccessControlError(`Write denied: ${permCheck.reason}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check read permission for retrieving entry
|
|
143
|
+
*/
|
|
144
|
+
async checkReadPermission(entry, options) {
|
|
145
|
+
if (!entry.owner || !entry.accessLevel || !options.agentId) {
|
|
146
|
+
return; // Skip check if missing required fields
|
|
147
|
+
}
|
|
148
|
+
const permCheck = this.accessControl.checkPermission({
|
|
149
|
+
agentId: options.agentId,
|
|
150
|
+
resourceOwner: entry.owner,
|
|
151
|
+
accessLevel: entry.accessLevel,
|
|
152
|
+
permission: SwarmMemoryManager_1.Permission.READ,
|
|
153
|
+
teamId: options.teamId,
|
|
154
|
+
resourceTeamId: entry.teamId,
|
|
155
|
+
swarmId: options.swarmId,
|
|
156
|
+
resourceSwarmId: entry.swarmId,
|
|
157
|
+
isSystemAgent: options.isSystemAgent
|
|
158
|
+
});
|
|
159
|
+
if (!permCheck.allowed) {
|
|
160
|
+
throw new SwarmMemoryManager_1.AccessControlError(`Read denied: ${permCheck.reason}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check delete permission for removing entry
|
|
165
|
+
*/
|
|
166
|
+
async checkDeletePermission(entry, options) {
|
|
167
|
+
if (!entry.owner || !entry.accessLevel || !options.agentId) {
|
|
168
|
+
return; // Skip check if missing required fields
|
|
169
|
+
}
|
|
170
|
+
const permCheck = this.accessControl.checkPermission({
|
|
171
|
+
agentId: options.agentId,
|
|
172
|
+
resourceOwner: entry.owner,
|
|
173
|
+
accessLevel: entry.accessLevel,
|
|
174
|
+
permission: SwarmMemoryManager_1.Permission.DELETE,
|
|
175
|
+
teamId: options.teamId,
|
|
176
|
+
resourceTeamId: entry.teamId,
|
|
177
|
+
swarmId: options.swarmId,
|
|
178
|
+
resourceSwarmId: entry.swarmId,
|
|
179
|
+
isSystemAgent: options.isSystemAgent
|
|
180
|
+
});
|
|
181
|
+
if (!permCheck.allowed) {
|
|
182
|
+
throw new SwarmMemoryManager_1.AccessControlError(`Delete denied: ${permCheck.reason}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Filter entries by access control permissions
|
|
187
|
+
*/
|
|
188
|
+
async filterByPermissions(entries, options) {
|
|
189
|
+
const filtered = [];
|
|
190
|
+
for (const entry of entries) {
|
|
191
|
+
if (!entry.owner || !entry.accessLevel || !options.agentId) {
|
|
192
|
+
filtered.push(entry); // Include if missing permission fields
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const permCheck = this.accessControl.checkPermission({
|
|
196
|
+
agentId: options.agentId,
|
|
197
|
+
resourceOwner: entry.owner,
|
|
198
|
+
accessLevel: entry.accessLevel,
|
|
199
|
+
permission: SwarmMemoryManager_1.Permission.READ,
|
|
200
|
+
teamId: options.teamId,
|
|
201
|
+
resourceTeamId: entry.teamId,
|
|
202
|
+
swarmId: options.swarmId,
|
|
203
|
+
resourceSwarmId: entry.swarmId,
|
|
204
|
+
isSystemAgent: options.isSystemAgent
|
|
205
|
+
});
|
|
206
|
+
if (permCheck.allowed) {
|
|
207
|
+
filtered.push(entry);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return filtered;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
exports.MemoryStoreService = MemoryStoreService;
|
|
214
|
+
//# sourceMappingURL=MemoryStoreService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryStoreService.js","sourceRoot":"","sources":["../../../../src/core/memory/services/MemoryStoreService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,8BAAsB,WAAW;IAC/B,SAAS,CAAC,cAAc,SAAK;IAE7B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IAEpD;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAY/E;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAYjF;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,8BAAsB,WAAW;IAC/B,SAAS,CAAC,cAAc,SAAK;IAE7B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IAEpD;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAY/E;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAYjF;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAUrE;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAKlF;;OAEG;cACa,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAMpH"}
|
|
@@ -44,7 +44,10 @@ class BaseHandler {
|
|
|
44
44
|
* Validate required parameters
|
|
45
45
|
*/
|
|
46
46
|
validateRequired(args, requiredFields) {
|
|
47
|
-
|
|
47
|
+
if (args === null || args === undefined || typeof args !== 'object' || Array.isArray(args)) {
|
|
48
|
+
throw new Error(`Invalid arguments: expected object, got ${args === null ? 'null' : typeof args}`);
|
|
49
|
+
}
|
|
50
|
+
const missing = requiredFields.filter(field => !(field in args) || args[field] === undefined || args[field] === null);
|
|
48
51
|
if (missing.length > 0) {
|
|
49
52
|
throw new Error(`Missing required fields: ${missing.join(', ')}`);
|
|
50
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAsB3D,MAAsB,WAAW;IAAjC;QACY,mBAAc,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAsB3D,MAAsB,WAAW;IAAjC;QACY,mBAAc,GAAG,CAAC,CAAC;IA0E/B,CAAC;IAnEC;;OAEG;IACO,iBAAiB;QACzB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,IAAI,8BAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,IAAS,EAAE,SAAkB;QAC3D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;aACjD;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAC,KAAa,EAAE,SAAkB;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;aACjD;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,IAAS,EAAE,cAAwB;QAC5D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACtH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACO,GAAG,CAAC,KAAgC,EAAE,OAAe,EAAE,IAAU;QACzE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,oBAAoB,CAAI,SAA2B;QACjE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;CACF;AA3ED,kCA2EC"}
|
|
@@ -11,7 +11,7 @@ import { BaseHandler, HandlerResponse } from '../base-handler.js';
|
|
|
11
11
|
import { AgentRegistry } from '../../services/AgentRegistry.js';
|
|
12
12
|
import { HookExecutor } from '../../services/HookExecutor.js';
|
|
13
13
|
export interface RegressionRiskAnalyzeArgs {
|
|
14
|
-
changeSet
|
|
14
|
+
changeSet?: {
|
|
15
15
|
repository: string;
|
|
16
16
|
baseBranch: string;
|
|
17
17
|
compareBranch: string;
|
|
@@ -22,6 +22,12 @@ export interface RegressionRiskAnalyzeArgs {
|
|
|
22
22
|
changeType: 'added' | 'modified' | 'deleted' | 'renamed';
|
|
23
23
|
}>;
|
|
24
24
|
};
|
|
25
|
+
changes?: Array<{
|
|
26
|
+
file: string;
|
|
27
|
+
type: 'add' | 'modify' | 'delete' | 'rename' | 'refactor';
|
|
28
|
+
complexity?: number;
|
|
29
|
+
linesChanged: number;
|
|
30
|
+
}>;
|
|
25
31
|
analysisConfig?: {
|
|
26
32
|
depth: 'basic' | 'standard' | 'comprehensive';
|
|
27
33
|
includeHistoricalData?: boolean;
|
|
@@ -137,6 +143,10 @@ export declare class RegressionRiskAnalyzeHandler extends BaseHandler {
|
|
|
137
143
|
private hookExecutor;
|
|
138
144
|
constructor(registry: AgentRegistry, hookExecutor: HookExecutor);
|
|
139
145
|
handle(args: RegressionRiskAnalyzeArgs): Promise<HandlerResponse>;
|
|
146
|
+
/**
|
|
147
|
+
* Normalize arguments to support both 'changes' and 'changeSet' formats
|
|
148
|
+
*/
|
|
149
|
+
private normalizeArgs;
|
|
140
150
|
/**
|
|
141
151
|
* Analyze regression risk
|
|
142
152
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regression-risk-analyze.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/prediction/regression-risk-analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,MAAM,WAAW,yBAAyB;
|
|
1
|
+
{"version":3,"file":"regression-risk-analyze.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/prediction/regression-risk-analyze.ts"],"names":[],"mappings":"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"}
|