agentic-qe 1.3.4 → 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 (136) hide show
  1. package/.claude/agents/qe-code-complexity.md +291 -0
  2. package/.claude/settings.json +2 -2
  3. package/CHANGELOG.md +289 -0
  4. package/README.md +56 -26
  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/routing/index.d.ts +1 -1
  43. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  44. package/dist/cli/commands/routing/index.js +29 -19
  45. package/dist/cli/commands/routing/index.js.map +1 -1
  46. package/dist/cli/commands/skills/index.d.ts +4 -0
  47. package/dist/cli/commands/skills/index.d.ts.map +1 -1
  48. package/dist/cli/commands/skills/index.js +8 -2
  49. package/dist/cli/commands/skills/index.js.map +1 -1
  50. package/dist/core/memory/SwarmMemoryManager.d.ts +2 -1
  51. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  52. package/dist/core/memory/SwarmMemoryManager.js +4 -1
  53. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  54. package/dist/core/memory/dao/AccessControlDAO.d.ts +66 -0
  55. package/dist/core/memory/dao/AccessControlDAO.d.ts.map +1 -0
  56. package/dist/core/memory/dao/AccessControlDAO.js +140 -0
  57. package/dist/core/memory/dao/AccessControlDAO.js.map +1 -0
  58. package/dist/core/memory/dao/BaseDAO.d.ts +34 -0
  59. package/dist/core/memory/dao/BaseDAO.d.ts.map +1 -0
  60. package/dist/core/memory/dao/BaseDAO.js +34 -0
  61. package/dist/core/memory/dao/BaseDAO.js.map +1 -0
  62. package/dist/core/memory/dao/BlackboardDAO.d.ts +90 -0
  63. package/dist/core/memory/dao/BlackboardDAO.d.ts.map +1 -0
  64. package/dist/core/memory/dao/BlackboardDAO.js +223 -0
  65. package/dist/core/memory/dao/BlackboardDAO.js.map +1 -0
  66. package/dist/core/memory/dao/EventDAO.d.ts +83 -0
  67. package/dist/core/memory/dao/EventDAO.d.ts.map +1 -0
  68. package/dist/core/memory/dao/EventDAO.js +177 -0
  69. package/dist/core/memory/dao/EventDAO.js.map +1 -0
  70. package/dist/core/memory/dao/MemoryEntryDAO.d.ts +57 -0
  71. package/dist/core/memory/dao/MemoryEntryDAO.d.ts.map +1 -0
  72. package/dist/core/memory/dao/MemoryEntryDAO.js +159 -0
  73. package/dist/core/memory/dao/MemoryEntryDAO.js.map +1 -0
  74. package/dist/core/memory/dao/WorkflowDAO.d.ts +85 -0
  75. package/dist/core/memory/dao/WorkflowDAO.d.ts.map +1 -0
  76. package/dist/core/memory/dao/WorkflowDAO.js +182 -0
  77. package/dist/core/memory/dao/WorkflowDAO.js.map +1 -0
  78. package/dist/core/memory/services/AccessControlService.d.ts +123 -0
  79. package/dist/core/memory/services/AccessControlService.d.ts.map +1 -0
  80. package/dist/core/memory/services/AccessControlService.js +249 -0
  81. package/dist/core/memory/services/AccessControlService.js.map +1 -0
  82. package/dist/core/memory/services/MemoryStoreService.d.ts +69 -0
  83. package/dist/core/memory/services/MemoryStoreService.d.ts.map +1 -0
  84. package/dist/core/memory/services/MemoryStoreService.js +214 -0
  85. package/dist/core/memory/services/MemoryStoreService.js.map +1 -0
  86. package/dist/learning/ExperienceReplayBuffer.d.ts +143 -0
  87. package/dist/learning/ExperienceReplayBuffer.d.ts.map +1 -0
  88. package/dist/learning/ExperienceReplayBuffer.js +255 -0
  89. package/dist/learning/ExperienceReplayBuffer.js.map +1 -0
  90. package/dist/learning/LearningEngine.d.ts +50 -1
  91. package/dist/learning/LearningEngine.d.ts.map +1 -1
  92. package/dist/learning/LearningEngine.js +140 -0
  93. package/dist/learning/LearningEngine.js.map +1 -1
  94. package/dist/learning/QLearning.d.ts +154 -0
  95. package/dist/learning/QLearning.d.ts.map +1 -0
  96. package/dist/learning/QLearning.js +337 -0
  97. package/dist/learning/QLearning.js.map +1 -0
  98. package/dist/learning/index.d.ts +2 -0
  99. package/dist/learning/index.d.ts.map +1 -1
  100. package/dist/learning/index.js +2 -0
  101. package/dist/learning/index.js.map +1 -1
  102. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  103. package/dist/mcp/handlers/base-handler.js +4 -1
  104. package/dist/mcp/handlers/base-handler.js.map +1 -1
  105. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +11 -1
  106. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
  107. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +63 -8
  108. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
  109. package/dist/mcp/handlers/quality-analyze.d.ts +7 -1
  110. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
  111. package/dist/mcp/handlers/quality-analyze.js +18 -1
  112. package/dist/mcp/handlers/quality-analyze.js.map +1 -1
  113. package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
  114. package/dist/mcp/handlers/test-generate.js +24 -8
  115. package/dist/mcp/handlers/test-generate.js.map +1 -1
  116. package/dist/mcp/services/AgentRegistry.d.ts +5 -0
  117. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  118. package/dist/mcp/services/AgentRegistry.js +19 -0
  119. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  120. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +11 -1
  121. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
  122. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +12 -0
  123. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
  124. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +10 -1
  125. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
  126. package/dist/mcp/streaming/TestExecuteStreamHandler.js +11 -0
  127. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
  128. package/dist/reasoning/QEReasoningBank.d.ts +89 -2
  129. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
  130. package/dist/reasoning/QEReasoningBank.js +396 -10
  131. package/dist/reasoning/QEReasoningBank.js.map +1 -1
  132. package/dist/utils/__mocks__/Database.d.ts +64 -0
  133. package/dist/utils/__mocks__/Database.d.ts.map +1 -0
  134. package/dist/utils/__mocks__/Database.js +134 -0
  135. package/dist/utils/__mocks__/Database.js.map +1 -0
  136. package/package.json +6 -2
@@ -0,0 +1,173 @@
1
+ /**
2
+ * AgentMemoryService - Manages agent memory operations with automatic namespacing
3
+ *
4
+ * Responsibilities:
5
+ * - Namespaced memory operations (agent-specific and shared)
6
+ * - Task result storage and retrieval
7
+ * - State persistence and restoration
8
+ * - Memory key generation and validation
9
+ *
10
+ * Part of BaseAgent refactoring (Phase 3)
11
+ * Reduces BaseAgent complexity by ~150 LOC
12
+ */
13
+ import { MemoryStore, AgentId, QEAgentType as AgentType } from '../../types';
14
+ export interface AgentMemoryServiceConfig {
15
+ agentId: AgentId;
16
+ memoryStore: MemoryStore;
17
+ }
18
+ export interface TaskResultData {
19
+ result: any;
20
+ timestamp: Date;
21
+ agentId: string;
22
+ }
23
+ export interface AgentStateData {
24
+ performanceMetrics?: any;
25
+ timestamp: Date;
26
+ [key: string]: any;
27
+ }
28
+ export interface ErrorRecord {
29
+ error: {
30
+ message: string;
31
+ stack?: string;
32
+ name: string;
33
+ };
34
+ assignment: {
35
+ id: string;
36
+ taskType: string;
37
+ };
38
+ timestamp: Date;
39
+ agentId: string;
40
+ }
41
+ export declare class AgentMemoryService {
42
+ private readonly agentId;
43
+ private readonly memoryStore;
44
+ constructor(config: AgentMemoryServiceConfig);
45
+ /**
46
+ * Store data in agent-specific memory namespace
47
+ * @param key Memory key (will be prefixed with agent:agentId:)
48
+ * @param value Value to store
49
+ * @param ttl Optional time-to-live in seconds
50
+ */
51
+ store(key: string, value: any, ttl?: number): Promise<void>;
52
+ /**
53
+ * Retrieve data from agent-specific memory namespace
54
+ * @param key Memory key (will be prefixed with agent:agentId:)
55
+ * @returns Stored value or null if not found
56
+ */
57
+ retrieve(key: string): Promise<any>;
58
+ /**
59
+ * Check if key exists in agent memory
60
+ * @param key Memory key to check
61
+ */
62
+ has(key: string): Promise<boolean>;
63
+ /**
64
+ * Delete data from agent memory
65
+ * @param key Memory key to delete
66
+ */
67
+ delete(key: string): Promise<void>;
68
+ /**
69
+ * Store data in shared memory accessible by agents of the same type
70
+ * @param key Memory key (will be prefixed with shared:agentType:)
71
+ * @param value Value to store
72
+ * @param ttl Optional time-to-live in seconds
73
+ */
74
+ storeShared(key: string, value: any, ttl?: number): Promise<void>;
75
+ /**
76
+ * Retrieve data from shared memory of a specific agent type
77
+ * @param agentType Type of agent that stored the data
78
+ * @param key Memory key (will be prefixed with shared:agentType:)
79
+ * @returns Stored value or null if not found
80
+ */
81
+ retrieveShared(agentType: AgentType, key: string): Promise<any>;
82
+ /**
83
+ * Retrieve shared memory from this agent's type
84
+ * @param key Memory key
85
+ */
86
+ retrieveOwnShared(key: string): Promise<any>;
87
+ /**
88
+ * Store task execution result
89
+ * @param taskId Task identifier
90
+ * @param result Task result data
91
+ */
92
+ storeTaskResult(taskId: string, result: any): Promise<void>;
93
+ /**
94
+ * Retrieve task execution result
95
+ * @param taskId Task identifier
96
+ * @returns Task result or null if not found
97
+ */
98
+ retrieveTaskResult(taskId: string): Promise<TaskResultData | null>;
99
+ /**
100
+ * Store task error information
101
+ * @param taskId Task identifier
102
+ * @param assignment Task assignment details
103
+ * @param error Error object
104
+ */
105
+ storeTaskError(taskId: string, assignment: {
106
+ id: string;
107
+ taskType: string;
108
+ }, error: Error): Promise<void>;
109
+ /**
110
+ * Retrieve task error information
111
+ * @param taskId Task identifier
112
+ * @returns Error record or null if not found
113
+ */
114
+ retrieveTaskError(taskId: string): Promise<ErrorRecord | null>;
115
+ /**
116
+ * Save agent state to memory
117
+ * @param state State data to persist
118
+ */
119
+ saveState(state: AgentStateData): Promise<void>;
120
+ /**
121
+ * Restore agent state from memory
122
+ * @returns Stored state or null if not found
123
+ */
124
+ restoreState(): Promise<AgentStateData | null>;
125
+ /**
126
+ * Clear saved state
127
+ */
128
+ clearState(): Promise<void>;
129
+ /**
130
+ * Report agent status to coordination system
131
+ * @param status Status string
132
+ * @param metrics Optional metrics data
133
+ */
134
+ reportStatus(status: string, metrics?: any): Promise<void>;
135
+ /**
136
+ * Retrieve status of another agent of the same type
137
+ * @param agentId Agent identifier
138
+ * @returns Status information or null if not found
139
+ */
140
+ retrieveAgentStatus(agentId: string): Promise<any>;
141
+ /**
142
+ * Build agent-specific namespaced key
143
+ * @param key Original key
144
+ * @returns Namespaced key (agent:agentId:key)
145
+ */
146
+ private buildAgentKey;
147
+ /**
148
+ * Build shared memory key
149
+ * @param key Original key
150
+ * @returns Shared key (shared:agentType:key)
151
+ */
152
+ private buildSharedKey;
153
+ /**
154
+ * Validate memory key format
155
+ * @param key Key to validate
156
+ * @throws Error if key is invalid
157
+ */
158
+ private validateKey;
159
+ /**
160
+ * Get memory usage statistics (if supported by MemoryStore)
161
+ * @returns Statistics object or null if not supported
162
+ */
163
+ getStatistics(): Promise<{
164
+ totalKeys: number;
165
+ agentKeys: number;
166
+ sharedKeys: number;
167
+ } | null>;
168
+ /**
169
+ * Get agent ID
170
+ */
171
+ getAgentId(): AgentId;
172
+ }
173
+ //# sourceMappingURL=AgentMemoryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMemoryService.d.ts","sourceRoot":"","sources":["../../../src/agents/memory/AgentMemoryService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ /**
3
+ * AgentMemoryService - Manages agent memory operations with automatic namespacing
4
+ *
5
+ * Responsibilities:
6
+ * - Namespaced memory operations (agent-specific and shared)
7
+ * - Task result storage and retrieval
8
+ * - State persistence and restoration
9
+ * - Memory key generation and validation
10
+ *
11
+ * Part of BaseAgent refactoring (Phase 3)
12
+ * Reduces BaseAgent complexity by ~150 LOC
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AgentMemoryService = void 0;
16
+ class AgentMemoryService {
17
+ constructor(config) {
18
+ this.agentId = config.agentId;
19
+ this.memoryStore = config.memoryStore;
20
+ }
21
+ // ============================================================================
22
+ // Agent-Specific Memory (Namespaced by agent ID)
23
+ // ============================================================================
24
+ /**
25
+ * Store data in agent-specific memory namespace
26
+ * @param key Memory key (will be prefixed with agent:agentId:)
27
+ * @param value Value to store
28
+ * @param ttl Optional time-to-live in seconds
29
+ */
30
+ async store(key, value, ttl) {
31
+ this.validateKey(key);
32
+ const namespacedKey = this.buildAgentKey(key);
33
+ try {
34
+ await this.memoryStore.store(namespacedKey, value, ttl);
35
+ }
36
+ catch (error) {
37
+ console.warn(`[${this.agentId.id}] Failed to store memory at ${namespacedKey}:`, error);
38
+ throw error;
39
+ }
40
+ }
41
+ /**
42
+ * Retrieve data from agent-specific memory namespace
43
+ * @param key Memory key (will be prefixed with agent:agentId:)
44
+ * @returns Stored value or null if not found
45
+ */
46
+ async retrieve(key) {
47
+ this.validateKey(key);
48
+ const namespacedKey = this.buildAgentKey(key);
49
+ try {
50
+ return await this.memoryStore.retrieve(namespacedKey);
51
+ }
52
+ catch (error) {
53
+ console.warn(`[${this.agentId.id}] Failed to retrieve memory from ${namespacedKey}:`, error);
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Check if key exists in agent memory
59
+ * @param key Memory key to check
60
+ */
61
+ async has(key) {
62
+ const value = await this.retrieve(key);
63
+ return value !== null && value !== undefined;
64
+ }
65
+ /**
66
+ * Delete data from agent memory
67
+ * @param key Memory key to delete
68
+ */
69
+ async delete(key) {
70
+ this.validateKey(key);
71
+ const namespacedKey = this.buildAgentKey(key);
72
+ try {
73
+ // MemoryStore interface doesn't have delete, so we store null with TTL=1
74
+ await this.memoryStore.store(namespacedKey, null, 1);
75
+ }
76
+ catch (error) {
77
+ console.warn(`[${this.agentId.id}] Failed to delete memory at ${namespacedKey}:`, error);
78
+ }
79
+ }
80
+ // ============================================================================
81
+ // Shared Memory (Accessible by other agents)
82
+ // ============================================================================
83
+ /**
84
+ * Store data in shared memory accessible by agents of the same type
85
+ * @param key Memory key (will be prefixed with shared:agentType:)
86
+ * @param value Value to store
87
+ * @param ttl Optional time-to-live in seconds
88
+ */
89
+ async storeShared(key, value, ttl) {
90
+ this.validateKey(key);
91
+ const sharedKey = this.buildSharedKey(key);
92
+ try {
93
+ await this.memoryStore.store(sharedKey, value, ttl);
94
+ }
95
+ catch (error) {
96
+ console.warn(`[${this.agentId.id}] Failed to store shared memory at ${sharedKey}:`, error);
97
+ throw error;
98
+ }
99
+ }
100
+ /**
101
+ * Retrieve data from shared memory of a specific agent type
102
+ * @param agentType Type of agent that stored the data
103
+ * @param key Memory key (will be prefixed with shared:agentType:)
104
+ * @returns Stored value or null if not found
105
+ */
106
+ async retrieveShared(agentType, key) {
107
+ this.validateKey(key);
108
+ const sharedKey = `shared:${agentType}:${key}`;
109
+ try {
110
+ return await this.memoryStore.retrieve(sharedKey);
111
+ }
112
+ catch (error) {
113
+ console.warn(`[${this.agentId.id}] Failed to retrieve shared memory from ${sharedKey}:`, error);
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Retrieve shared memory from this agent's type
119
+ * @param key Memory key
120
+ */
121
+ async retrieveOwnShared(key) {
122
+ return this.retrieveShared(this.agentId.type, key);
123
+ }
124
+ // ============================================================================
125
+ // Task-Specific Memory
126
+ // ============================================================================
127
+ /**
128
+ * Store task execution result
129
+ * @param taskId Task identifier
130
+ * @param result Task result data
131
+ */
132
+ async storeTaskResult(taskId, result) {
133
+ const data = {
134
+ result,
135
+ timestamp: new Date(),
136
+ agentId: this.agentId.id
137
+ };
138
+ await this.store(`task:${taskId}:result`, data);
139
+ }
140
+ /**
141
+ * Retrieve task execution result
142
+ * @param taskId Task identifier
143
+ * @returns Task result or null if not found
144
+ */
145
+ async retrieveTaskResult(taskId) {
146
+ return await this.retrieve(`task:${taskId}:result`);
147
+ }
148
+ /**
149
+ * Store task error information
150
+ * @param taskId Task identifier
151
+ * @param assignment Task assignment details
152
+ * @param error Error object
153
+ */
154
+ async storeTaskError(taskId, assignment, error) {
155
+ const errorRecord = {
156
+ error: {
157
+ message: error.message,
158
+ stack: error.stack,
159
+ name: error.name
160
+ },
161
+ assignment,
162
+ timestamp: new Date(),
163
+ agentId: this.agentId.id
164
+ };
165
+ await this.store(`error:${taskId}`, errorRecord);
166
+ }
167
+ /**
168
+ * Retrieve task error information
169
+ * @param taskId Task identifier
170
+ * @returns Error record or null if not found
171
+ */
172
+ async retrieveTaskError(taskId) {
173
+ return await this.retrieve(`error:${taskId}`);
174
+ }
175
+ // ============================================================================
176
+ // State Persistence
177
+ // ============================================================================
178
+ /**
179
+ * Save agent state to memory
180
+ * @param state State data to persist
181
+ */
182
+ async saveState(state) {
183
+ const stateWithTimestamp = {
184
+ ...state,
185
+ timestamp: new Date()
186
+ };
187
+ await this.store('state', stateWithTimestamp);
188
+ }
189
+ /**
190
+ * Restore agent state from memory
191
+ * @returns Stored state or null if not found
192
+ */
193
+ async restoreState() {
194
+ try {
195
+ const state = await this.retrieve('state');
196
+ if (!state) {
197
+ console.info(`[${this.agentId.id}] No saved state found`);
198
+ return null;
199
+ }
200
+ return state;
201
+ }
202
+ catch (error) {
203
+ console.warn(`[${this.agentId.id}] Could not restore state:`, error);
204
+ return null;
205
+ }
206
+ }
207
+ /**
208
+ * Clear saved state
209
+ */
210
+ async clearState() {
211
+ await this.delete('state');
212
+ }
213
+ // ============================================================================
214
+ // Status Reporting
215
+ // ============================================================================
216
+ /**
217
+ * Report agent status to coordination system
218
+ * @param status Status string
219
+ * @param metrics Optional metrics data
220
+ */
221
+ async reportStatus(status, metrics) {
222
+ try {
223
+ await this.storeShared('status', {
224
+ agentId: this.agentId.id,
225
+ status,
226
+ metrics,
227
+ timestamp: new Date()
228
+ });
229
+ }
230
+ catch (error) {
231
+ console.warn(`[${this.agentId.id}] Failed to report status:`, error);
232
+ }
233
+ }
234
+ /**
235
+ * Retrieve status of another agent of the same type
236
+ * @param agentId Agent identifier
237
+ * @returns Status information or null if not found
238
+ */
239
+ async retrieveAgentStatus(agentId) {
240
+ return await this.retrieveOwnShared('status');
241
+ }
242
+ // ============================================================================
243
+ // Helper Methods
244
+ // ============================================================================
245
+ /**
246
+ * Build agent-specific namespaced key
247
+ * @param key Original key
248
+ * @returns Namespaced key (agent:agentId:key)
249
+ */
250
+ buildAgentKey(key) {
251
+ return `agent:${this.agentId.id}:${key}`;
252
+ }
253
+ /**
254
+ * Build shared memory key
255
+ * @param key Original key
256
+ * @returns Shared key (shared:agentType:key)
257
+ */
258
+ buildSharedKey(key) {
259
+ return `shared:${this.agentId.type}:${key}`;
260
+ }
261
+ /**
262
+ * Validate memory key format
263
+ * @param key Key to validate
264
+ * @throws Error if key is invalid
265
+ */
266
+ validateKey(key) {
267
+ if (!key || typeof key !== 'string') {
268
+ throw new Error('Memory key must be a non-empty string');
269
+ }
270
+ if (key.includes('..')) {
271
+ throw new Error('Memory key cannot contain ".." (path traversal)');
272
+ }
273
+ if (key.length > 256) {
274
+ throw new Error('Memory key too long (max 256 characters)');
275
+ }
276
+ }
277
+ // ============================================================================
278
+ // Statistics
279
+ // ============================================================================
280
+ /**
281
+ * Get memory usage statistics (if supported by MemoryStore)
282
+ * @returns Statistics object or null if not supported
283
+ */
284
+ async getStatistics() {
285
+ // This would require additional methods on MemoryStore interface
286
+ // For now, return null
287
+ return null;
288
+ }
289
+ /**
290
+ * Get agent ID
291
+ */
292
+ getAgentId() {
293
+ return this.agentId;
294
+ }
295
+ }
296
+ exports.AgentMemoryService = AgentMemoryService;
297
+ //# sourceMappingURL=AgentMemoryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMemoryService.js","sourceRoot":"","sources":["../../../src/agents/memory/AgentMemoryService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAMvD,qBAAa,WAAW;WACT,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;mBAiOpC,wBAAwB;mBAuCxB,kBAAkB;mBAsElB,iBAAiB;mBAiSjB,mBAAmB;mBAyFnB,eAAe;IAMpC;;OAEG;mBACkB,kBAAkB;IA+IvC;;OAEG;mBACkB,cAAc;IAiBnC;;OAEG;mBACkB,oBAAoB;IAoFzC;;OAEG;mBACkB,iBAAiB;mBAMjB,gBAAgB;IAyBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;mBA4BR,kBAAkB;IAkDvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA0BnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;mBAwBpB,0BAA0B;mBAoC1B,kBAAkB;mBAclB,sBAAsB;mBAoDtB,cAAc;IAwdnC;;OAEG;mBACkB,yBAAyB;IAoC9C;;OAEG;mBACkB,wBAAwB;IAsB7C;;OAEG;mBACkB,wBAAwB;IAqC7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA8GnC;;OAEG;mBACkB,yBAAyB;IA2C9C;;OAEG;mBACkB,yBAAyB;IA6F9C;;OAEG;mBACkB,2BAA2B;IAoGhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAoBrC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAMvD,qBAAa,WAAW;WACT,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;mBAiOpC,wBAAwB;mBAuCxB,kBAAkB;mBAsElB,iBAAiB;mBAiSjB,mBAAmB;mBAyFnB,eAAe;IAMpC;;OAEG;mBACkB,kBAAkB;IA+IvC;;OAEG;mBACkB,cAAc;IAiBnC;;OAEG;mBACkB,oBAAoB;IAoFzC;;OAEG;mBACkB,iBAAiB;mBAMjB,gBAAgB;IAyBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;mBA4BR,kBAAkB;IAkDvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA0BnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;mBAwBpB,0BAA0B;mBAoC1B,kBAAkB;mBAclB,sBAAsB;mBAoDtB,cAAc;IAmgBnC;;OAEG;mBACkB,yBAAyB;IAoC9C;;OAEG;mBACkB,wBAAwB;IAsB7C;;OAEG;mBACkB,wBAAwB;IAqC7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA8GnC;;OAEG;mBACkB,yBAAyB;IA2C9C;;OAEG;mBACkB,yBAAyB;IA6F9C;;OAEG;mBACkB,2BAA2B;IAoGhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAoBrC"}
@@ -185,7 +185,7 @@ class InitCommand {
185
185
  }
186
186
  spinner.text = 'Creating CLAUDE.md documentation...';
187
187
  // Create or update CLAUDE.md with agent documentation
188
- await this.createClaudeMd(fleetConfig);
188
+ await this.createClaudeMd(fleetConfig, options.yes);
189
189
  // Initialize Claude Flow coordination
190
190
  await this.initializeCoordination(fleetConfig);
191
191
  // Phase 2: Initialize memory database FIRST (required for agents)
@@ -1173,16 +1173,42 @@ echo "[AQE] Post-execution coordination complete"
1173
1173
  await fs.ensureDir('.agentic-qe/logs');
1174
1174
  await fs.ensureDir('.agentic-qe/state/coordination');
1175
1175
  }
1176
- static async createClaudeMd(config) {
1176
+ static async createClaudeMd(config, isYesMode = false) {
1177
1177
  const claudeMdPath = 'CLAUDE.md';
1178
1178
  const agentCount = await this.countAgentFiles('.claude/agents');
1179
1179
  // Check if CLAUDE.md exists
1180
1180
  const exists = await fs.pathExists(claudeMdPath);
1181
+ let existingContent = '';
1182
+ let appendPosition = 'append'; // default for --yes mode (v1.3.7 fix)
1181
1183
  if (exists) {
1182
1184
  // Backup existing CLAUDE.md
1183
1185
  const backupPath = 'CLAUDE.md.backup';
1184
1186
  await fs.copy(claudeMdPath, backupPath);
1185
1187
  console.log(chalk_1.default.yellow(` ℹ️ Existing CLAUDE.md backed up to ${backupPath}`));
1188
+ // Read existing content
1189
+ existingContent = await fs.readFile(claudeMdPath, 'utf8');
1190
+ // In interactive mode, ask where to add AQE instructions (v1.3.7 fix)
1191
+ if (!isYesMode) {
1192
+ const { position } = await inquirer_1.default.prompt([
1193
+ {
1194
+ type: 'list',
1195
+ name: 'position',
1196
+ message: 'Existing CLAUDE.md detected. Where should we add AQE instructions?',
1197
+ choices: [
1198
+ {
1199
+ name: 'At the end (append) - Recommended',
1200
+ value: 'append',
1201
+ },
1202
+ {
1203
+ name: 'At the beginning (prepend)',
1204
+ value: 'prepend',
1205
+ },
1206
+ ],
1207
+ default: 'append',
1208
+ },
1209
+ ]);
1210
+ appendPosition = position;
1211
+ }
1186
1212
  }
1187
1213
  const claudeMdContent = `# Claude Code Configuration - Agentic QE Fleet
1188
1214
 
@@ -1634,7 +1660,23 @@ tail -f .agentic-qe/logs/fleet.log
1634
1660
  **Initialization Date**: ${new Date().toISOString()}
1635
1661
  **Fleet Topology**: ${config.topology}
1636
1662
  `;
1637
- await fs.writeFile(claudeMdPath, claudeMdContent);
1663
+ // Write CLAUDE.md based on append strategy (v1.3.7 fix)
1664
+ let finalContent;
1665
+ if (exists && existingContent) {
1666
+ const separator = '\n\n---\n\n';
1667
+ if (appendPosition === 'append') {
1668
+ finalContent = existingContent + separator + claudeMdContent;
1669
+ console.log(chalk_1.default.green(` ✓ AQE instructions appended to existing CLAUDE.md`));
1670
+ }
1671
+ else {
1672
+ finalContent = claudeMdContent + separator + existingContent;
1673
+ console.log(chalk_1.default.green(` ✓ AQE instructions prepended to existing CLAUDE.md`));
1674
+ }
1675
+ }
1676
+ else {
1677
+ finalContent = claudeMdContent;
1678
+ }
1679
+ await fs.writeFile(claudeMdPath, finalContent);
1638
1680
  }
1639
1681
  // ============================================================================
1640
1682
  // Phase 2 Initialization Methods (v1.1.0)