agentic-qe 2.3.4 → 2.4.0
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/CHANGELOG.md +72 -0
- package/README.md +1 -1
- package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +41 -0
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +149 -1
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +41 -0
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +7 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +48 -104
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +5 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +51 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +44 -0
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +46 -0
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QXPartnerAgent.js +52 -0
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +45 -0
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.d.ts +40 -0
- package/dist/agents/QualityGateAgent.d.ts.map +1 -1
- package/dist/agents/QualityGateAgent.js +227 -1
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +42 -0
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts +5 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +39 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +46 -0
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +6 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +52 -46
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +5 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +51 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +17 -8
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/index.js +68 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +142 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +58 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +102 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +95 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +65 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
- package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceExtractor.js +536 -0
- package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
- package/dist/learning/capture/ExperienceStore.d.ts +196 -0
- package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceStore.js +453 -0
- package/dist/learning/capture/ExperienceStore.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +2 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -1
- package/dist/learning/scheduler/SleepScheduler.js +2 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -1
- package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
- package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
- package/dist/learning/synthesis/ClusteringEngine.js +356 -0
- package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
- package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
- package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
- package/dist/learning/transfer/TransferRegistry.js +410 -0
- package/dist/learning/transfer/TransferRegistry.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.js +297 -4
- package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts +6 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +34 -3
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentMemoryStrategy - Strategy interface for agent memory operations
|
|
3
|
+
*
|
|
4
|
+
* Handles storage, retrieval, and persistence of agent memory.
|
|
5
|
+
* Supports both local and shared (cross-agent) memory.
|
|
6
|
+
* Part of Phase 2 (B1.3b) layered architecture refactoring.
|
|
7
|
+
*
|
|
8
|
+
* @module core/strategies/AgentMemoryStrategy
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import type { QEAgentType } from '../../types';
|
|
12
|
+
/**
|
|
13
|
+
* Memory storage options
|
|
14
|
+
*/
|
|
15
|
+
export interface MemoryOptions {
|
|
16
|
+
/** Time-to-live in milliseconds (0 = never expires) */
|
|
17
|
+
ttl?: number;
|
|
18
|
+
/** Namespace for grouping related entries */
|
|
19
|
+
namespace?: string;
|
|
20
|
+
/** Persist to disk (vs memory-only) */
|
|
21
|
+
persist?: boolean;
|
|
22
|
+
/** Priority for cache eviction */
|
|
23
|
+
priority?: 'low' | 'normal' | 'high' | 'critical';
|
|
24
|
+
/** Custom metadata */
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Memory entry for bulk operations
|
|
29
|
+
*/
|
|
30
|
+
export interface MemoryEntry {
|
|
31
|
+
key: string;
|
|
32
|
+
value: unknown;
|
|
33
|
+
options?: MemoryOptions;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Memory query options
|
|
37
|
+
*/
|
|
38
|
+
export interface MemoryQueryOptions {
|
|
39
|
+
/** Filter by namespace */
|
|
40
|
+
namespace?: string;
|
|
41
|
+
/** Filter by key pattern (glob) */
|
|
42
|
+
pattern?: string;
|
|
43
|
+
/** Maximum results */
|
|
44
|
+
limit?: number;
|
|
45
|
+
/** Include metadata in results */
|
|
46
|
+
includeMetadata?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Memory statistics
|
|
50
|
+
*/
|
|
51
|
+
export interface MemoryStats {
|
|
52
|
+
totalEntries: number;
|
|
53
|
+
totalSize: number;
|
|
54
|
+
hitRate: number;
|
|
55
|
+
missRate: number;
|
|
56
|
+
evictionCount: number;
|
|
57
|
+
lastCleanup: Date;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* AgentMemoryStrategy interface
|
|
61
|
+
*
|
|
62
|
+
* Implementations:
|
|
63
|
+
* - DefaultMemoryStrategy: SQLite-backed storage
|
|
64
|
+
* - CachedMemoryStrategy: Binary cache layer (Phase 1)
|
|
65
|
+
* - DistributedMemoryStrategy: S3/Redis backend (Phase 4)
|
|
66
|
+
*/
|
|
67
|
+
export interface AgentMemoryStrategy {
|
|
68
|
+
/**
|
|
69
|
+
* Store a value in agent memory
|
|
70
|
+
* @param key - Unique key for the value
|
|
71
|
+
* @param value - Value to store (will be serialized)
|
|
72
|
+
* @param options - Storage options
|
|
73
|
+
*/
|
|
74
|
+
store(key: string, value: unknown, options?: MemoryOptions): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Retrieve a value from agent memory
|
|
77
|
+
* @param key - Key to retrieve
|
|
78
|
+
* @returns Stored value or undefined if not found
|
|
79
|
+
*/
|
|
80
|
+
retrieve<T = unknown>(key: string): Promise<T | undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* Delete a value from agent memory
|
|
83
|
+
* @param key - Key to delete
|
|
84
|
+
* @returns True if deleted, false if not found
|
|
85
|
+
*/
|
|
86
|
+
delete(key: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Check if a key exists
|
|
89
|
+
* @param key - Key to check
|
|
90
|
+
*/
|
|
91
|
+
exists(key: string): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Store a value in shared memory (accessible by other agents)
|
|
94
|
+
* @param agentType - Agent type namespace
|
|
95
|
+
* @param key - Key within the namespace
|
|
96
|
+
* @param value - Value to store
|
|
97
|
+
* @param options - Storage options
|
|
98
|
+
*/
|
|
99
|
+
storeShared(agentType: QEAgentType, key: string, value: unknown, options?: MemoryOptions): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Retrieve a value from another agent's shared memory
|
|
102
|
+
* @param agentType - Target agent type
|
|
103
|
+
* @param key - Key to retrieve
|
|
104
|
+
*/
|
|
105
|
+
retrieveShared<T = unknown>(agentType: QEAgentType, key: string): Promise<T | undefined>;
|
|
106
|
+
/**
|
|
107
|
+
* Store multiple entries atomically
|
|
108
|
+
* @param entries - Entries to store
|
|
109
|
+
*/
|
|
110
|
+
bulkStore(entries: MemoryEntry[]): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Retrieve multiple values
|
|
113
|
+
* @param keys - Keys to retrieve
|
|
114
|
+
* @returns Map of key to value (missing keys omitted)
|
|
115
|
+
*/
|
|
116
|
+
bulkRetrieve<T = unknown>(keys: string[]): Promise<Map<string, T>>;
|
|
117
|
+
/**
|
|
118
|
+
* Delete multiple keys
|
|
119
|
+
* @param keys - Keys to delete
|
|
120
|
+
* @returns Number of deleted entries
|
|
121
|
+
*/
|
|
122
|
+
bulkDelete(keys: string[]): Promise<number>;
|
|
123
|
+
/**
|
|
124
|
+
* Query memory entries
|
|
125
|
+
* @param options - Query options
|
|
126
|
+
*/
|
|
127
|
+
query<T = unknown>(options: MemoryQueryOptions): Promise<MemoryEntry[]>;
|
|
128
|
+
/**
|
|
129
|
+
* List all keys matching a pattern
|
|
130
|
+
* @param pattern - Glob pattern (e.g., "cache/*")
|
|
131
|
+
*/
|
|
132
|
+
listKeys(pattern?: string): Promise<string[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Initialize the memory strategy
|
|
135
|
+
*/
|
|
136
|
+
initialize(): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Close connections and cleanup
|
|
139
|
+
*/
|
|
140
|
+
close(): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Clear all agent memory (use with caution)
|
|
143
|
+
*/
|
|
144
|
+
clear(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Get memory statistics
|
|
147
|
+
*/
|
|
148
|
+
getStats(): Promise<MemoryStats>;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Factory function type for creating memory strategies
|
|
152
|
+
*/
|
|
153
|
+
export type MemoryStrategyFactory = (config?: Record<string, unknown>) => AgentMemoryStrategy;
|
|
154
|
+
//# sourceMappingURL=AgentMemoryStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMemoryStrategy.d.ts","sourceRoot":"","sources":["../../../src/core/strategies/AgentMemoryStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentMemoryStrategy - Strategy interface for agent memory operations
|
|
4
|
+
*
|
|
5
|
+
* Handles storage, retrieval, and persistence of agent memory.
|
|
6
|
+
* Supports both local and shared (cross-agent) memory.
|
|
7
|
+
* Part of Phase 2 (B1.3b) layered architecture refactoring.
|
|
8
|
+
*
|
|
9
|
+
* @module core/strategies/AgentMemoryStrategy
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
//# sourceMappingURL=AgentMemoryStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMemoryStrategy.js","sourceRoot":"","sources":["../../../src/core/strategies/AgentMemoryStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DefaultCoordinationStrategy - Standard agent coordination implementation
|
|
3
|
+
*
|
|
4
|
+
* Wraps EventEmitter for backward compatibility.
|
|
5
|
+
* Provides event emission, message passing, and basic coordination.
|
|
6
|
+
*
|
|
7
|
+
* @module core/strategies/DefaultCoordinationStrategy
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { EventEmitter } from 'events';
|
|
11
|
+
import type { AgentId, QEEvent } from '../../types';
|
|
12
|
+
import type { AgentCoordinationStrategy, AgentMessage, MessageHandler, SwarmMembership, CoordinationMetrics, CoordinationEventHandler } from './AgentCoordinationStrategy';
|
|
13
|
+
/**
|
|
14
|
+
* DefaultCoordinationStrategy - EventEmitter-based coordination
|
|
15
|
+
*/
|
|
16
|
+
export declare class DefaultCoordinationStrategy implements AgentCoordinationStrategy {
|
|
17
|
+
private eventBus?;
|
|
18
|
+
private agentId?;
|
|
19
|
+
private messageHandlers;
|
|
20
|
+
private swarmMembership;
|
|
21
|
+
private metrics;
|
|
22
|
+
private eventSubscriptions;
|
|
23
|
+
private latencySum;
|
|
24
|
+
private latencyCount;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the coordination strategy
|
|
27
|
+
*/
|
|
28
|
+
initialize(eventBus: EventEmitter, agentId: AgentId): void;
|
|
29
|
+
/**
|
|
30
|
+
* Emit an event to the event bus
|
|
31
|
+
*/
|
|
32
|
+
emit(event: QEEvent): void;
|
|
33
|
+
/**
|
|
34
|
+
* Subscribe to events of a specific type
|
|
35
|
+
*/
|
|
36
|
+
on<T = unknown>(eventType: string, handler: CoordinationEventHandler<T>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Unsubscribe from events
|
|
39
|
+
*/
|
|
40
|
+
off<T = unknown>(eventType: string, handler: CoordinationEventHandler<T>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to a single event occurrence
|
|
43
|
+
*/
|
|
44
|
+
once<T = unknown>(eventType: string, handler: CoordinationEventHandler<T>): void;
|
|
45
|
+
/**
|
|
46
|
+
* Broadcast a message to all agents
|
|
47
|
+
*/
|
|
48
|
+
broadcast(message: AgentMessage): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Send a message to a specific agent
|
|
51
|
+
*/
|
|
52
|
+
send(targetAgent: AgentId, message: AgentMessage): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe to messages
|
|
55
|
+
*/
|
|
56
|
+
onMessage(handler: MessageHandler): void;
|
|
57
|
+
/**
|
|
58
|
+
* Unsubscribe from messages
|
|
59
|
+
*/
|
|
60
|
+
offMessage(handler: MessageHandler): void;
|
|
61
|
+
/**
|
|
62
|
+
* Request-response pattern
|
|
63
|
+
*/
|
|
64
|
+
request<T = unknown>(targetAgent: AgentId, message: AgentMessage, timeout?: number): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Join a swarm
|
|
67
|
+
*/
|
|
68
|
+
joinSwarm(swarmId: string, role?: 'coordinator' | 'worker'): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Leave the current swarm
|
|
71
|
+
*/
|
|
72
|
+
leaveSwarm(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Get current swarm membership
|
|
75
|
+
*/
|
|
76
|
+
getSwarmMembership(): SwarmMembership | null;
|
|
77
|
+
/**
|
|
78
|
+
* Discover peers in the swarm
|
|
79
|
+
*/
|
|
80
|
+
discoverPeers(): Promise<AgentId[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Shutdown coordination
|
|
83
|
+
*/
|
|
84
|
+
shutdown(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Get coordination metrics
|
|
87
|
+
*/
|
|
88
|
+
getMetrics(): CoordinationMetrics;
|
|
89
|
+
/**
|
|
90
|
+
* Check if coordination is healthy
|
|
91
|
+
*/
|
|
92
|
+
isHealthy(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Emit a simple event (not a full QEEvent)
|
|
95
|
+
*/
|
|
96
|
+
private emitSimple;
|
|
97
|
+
private setupMessageListener;
|
|
98
|
+
private generateMessageId;
|
|
99
|
+
private updateLatency;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Factory function for creating coordination strategies
|
|
103
|
+
*/
|
|
104
|
+
export declare function createCoordinationStrategy(): AgentCoordinationStrategy;
|
|
105
|
+
//# sourceMappingURL=DefaultCoordinationStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultCoordinationStrategy.d.ts","sourceRoot":"","sources":["../../../src/core/strategies/DefaultCoordinationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EACV,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AAGrC;;GAEG;AACH,qBAAa,2BAA4B,YAAW,yBAAyB;IAC3E,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAgC;IAGvD,OAAO,CAAC,OAAO,CAQb;IAEF,OAAO,CAAC,kBAAkB,CAAyD;IACnF,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IAEzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ1D;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAqB1B;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;IAqB9E;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;IAe/E;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;IAahF;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtE;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,YAAY,EACrB,OAAO,SAAQ,GACd,OAAO,CAAC,CAAC,CAAC;IA4Bb;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,aAAa,GAAG,QAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1F;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACH,kBAAkB,IAAI,eAAe,GAAG,IAAI;IAI5C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKzC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB/B;;OAEG;IACH,UAAU,IAAI,mBAAmB;IAIjC;;OAEG;IACH,SAAS,IAAI,OAAO;IAMpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;CAKtB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,yBAAyB,CAEtE"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DefaultCoordinationStrategy - Standard agent coordination implementation
|
|
4
|
+
*
|
|
5
|
+
* Wraps EventEmitter for backward compatibility.
|
|
6
|
+
* Provides event emission, message passing, and basic coordination.
|
|
7
|
+
*
|
|
8
|
+
* @module core/strategies/DefaultCoordinationStrategy
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DefaultCoordinationStrategy = void 0;
|
|
13
|
+
exports.createCoordinationStrategy = createCoordinationStrategy;
|
|
14
|
+
const SecureRandom_1 = require("../../utils/SecureRandom");
|
|
15
|
+
/**
|
|
16
|
+
* DefaultCoordinationStrategy - EventEmitter-based coordination
|
|
17
|
+
*/
|
|
18
|
+
class DefaultCoordinationStrategy {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.messageHandlers = new Set();
|
|
21
|
+
this.swarmMembership = null;
|
|
22
|
+
// Metrics
|
|
23
|
+
this.metrics = {
|
|
24
|
+
eventsEmitted: 0,
|
|
25
|
+
eventsReceived: 0,
|
|
26
|
+
messagesSent: 0,
|
|
27
|
+
messagesReceived: 0,
|
|
28
|
+
broadcastsSent: 0,
|
|
29
|
+
averageLatency: 0,
|
|
30
|
+
activeSubscriptions: 0,
|
|
31
|
+
};
|
|
32
|
+
this.eventSubscriptions = new Map();
|
|
33
|
+
this.latencySum = 0;
|
|
34
|
+
this.latencyCount = 0;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the coordination strategy
|
|
38
|
+
*/
|
|
39
|
+
initialize(eventBus, agentId) {
|
|
40
|
+
this.eventBus = eventBus;
|
|
41
|
+
this.agentId = agentId;
|
|
42
|
+
// Subscribe to messages targeted at this agent
|
|
43
|
+
this.setupMessageListener();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Emit an event to the event bus
|
|
47
|
+
*/
|
|
48
|
+
emit(event) {
|
|
49
|
+
if (!this.eventBus) {
|
|
50
|
+
throw new Error('Coordination strategy not initialized');
|
|
51
|
+
}
|
|
52
|
+
const enrichedEvent = {
|
|
53
|
+
id: event.id ?? SecureRandom_1.SecureRandom.generateId(16),
|
|
54
|
+
type: event.type,
|
|
55
|
+
source: event.source ?? this.agentId,
|
|
56
|
+
target: event.target,
|
|
57
|
+
data: event.data,
|
|
58
|
+
timestamp: event.timestamp ?? new Date(),
|
|
59
|
+
priority: event.priority ?? 'medium',
|
|
60
|
+
scope: event.scope ?? 'local',
|
|
61
|
+
category: event.category,
|
|
62
|
+
};
|
|
63
|
+
this.eventBus.emit(event.type, enrichedEvent);
|
|
64
|
+
this.metrics.eventsEmitted++;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Subscribe to events of a specific type
|
|
68
|
+
*/
|
|
69
|
+
on(eventType, handler) {
|
|
70
|
+
if (!this.eventBus) {
|
|
71
|
+
throw new Error('Coordination strategy not initialized');
|
|
72
|
+
}
|
|
73
|
+
// Track subscriptions
|
|
74
|
+
if (!this.eventSubscriptions.has(eventType)) {
|
|
75
|
+
this.eventSubscriptions.set(eventType, new Set());
|
|
76
|
+
}
|
|
77
|
+
this.eventSubscriptions.get(eventType).add(handler);
|
|
78
|
+
// Wrap handler to track metrics
|
|
79
|
+
const wrappedHandler = (event) => {
|
|
80
|
+
this.metrics.eventsReceived++;
|
|
81
|
+
handler(event);
|
|
82
|
+
};
|
|
83
|
+
this.eventBus.on(eventType, wrappedHandler);
|
|
84
|
+
this.metrics.activeSubscriptions++;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Unsubscribe from events
|
|
88
|
+
*/
|
|
89
|
+
off(eventType, handler) {
|
|
90
|
+
if (!this.eventBus)
|
|
91
|
+
return;
|
|
92
|
+
const handlers = this.eventSubscriptions.get(eventType);
|
|
93
|
+
if (handlers) {
|
|
94
|
+
handlers.delete(handler);
|
|
95
|
+
if (handlers.size === 0) {
|
|
96
|
+
this.eventSubscriptions.delete(eventType);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.eventBus.off(eventType, handler);
|
|
100
|
+
this.metrics.activeSubscriptions = Math.max(0, this.metrics.activeSubscriptions - 1);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Subscribe to a single event occurrence
|
|
104
|
+
*/
|
|
105
|
+
once(eventType, handler) {
|
|
106
|
+
if (!this.eventBus) {
|
|
107
|
+
throw new Error('Coordination strategy not initialized');
|
|
108
|
+
}
|
|
109
|
+
const wrappedHandler = (event) => {
|
|
110
|
+
this.metrics.eventsReceived++;
|
|
111
|
+
handler(event);
|
|
112
|
+
};
|
|
113
|
+
this.eventBus.once(eventType, wrappedHandler);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Broadcast a message to all agents
|
|
117
|
+
*/
|
|
118
|
+
async broadcast(message) {
|
|
119
|
+
if (!this.eventBus) {
|
|
120
|
+
throw new Error('Coordination strategy not initialized');
|
|
121
|
+
}
|
|
122
|
+
const enrichedMessage = {
|
|
123
|
+
...message,
|
|
124
|
+
id: message.id ?? this.generateMessageId(),
|
|
125
|
+
sender: message.sender ?? this.agentId,
|
|
126
|
+
timestamp: message.timestamp ?? new Date(),
|
|
127
|
+
};
|
|
128
|
+
this.eventBus.emit('agent:broadcast', enrichedMessage);
|
|
129
|
+
this.metrics.broadcastsSent++;
|
|
130
|
+
this.metrics.messagesSent++;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Send a message to a specific agent
|
|
134
|
+
*/
|
|
135
|
+
async send(targetAgent, message) {
|
|
136
|
+
if (!this.eventBus) {
|
|
137
|
+
throw new Error('Coordination strategy not initialized');
|
|
138
|
+
}
|
|
139
|
+
const startTime = performance.now();
|
|
140
|
+
const enrichedMessage = {
|
|
141
|
+
...message,
|
|
142
|
+
id: message.id ?? this.generateMessageId(),
|
|
143
|
+
sender: message.sender ?? this.agentId,
|
|
144
|
+
target: targetAgent,
|
|
145
|
+
timestamp: message.timestamp ?? new Date(),
|
|
146
|
+
};
|
|
147
|
+
// Emit to specific agent channel
|
|
148
|
+
this.eventBus.emit(`agent:message:${targetAgent.id}`, enrichedMessage);
|
|
149
|
+
this.metrics.messagesSent++;
|
|
150
|
+
// Update latency metrics
|
|
151
|
+
const latency = performance.now() - startTime;
|
|
152
|
+
this.updateLatency(latency);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Subscribe to messages
|
|
156
|
+
*/
|
|
157
|
+
onMessage(handler) {
|
|
158
|
+
this.messageHandlers.add(handler);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Unsubscribe from messages
|
|
162
|
+
*/
|
|
163
|
+
offMessage(handler) {
|
|
164
|
+
this.messageHandlers.delete(handler);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Request-response pattern
|
|
168
|
+
*/
|
|
169
|
+
async request(targetAgent, message, timeout = 30000) {
|
|
170
|
+
if (!this.eventBus) {
|
|
171
|
+
throw new Error('Coordination strategy not initialized');
|
|
172
|
+
}
|
|
173
|
+
const correlationId = this.generateMessageId();
|
|
174
|
+
return new Promise((resolve, reject) => {
|
|
175
|
+
const timeoutId = setTimeout(() => {
|
|
176
|
+
this.eventBus.off(`agent:response:${correlationId}`, responseHandler);
|
|
177
|
+
reject(new Error(`Request timeout after ${timeout}ms`));
|
|
178
|
+
}, timeout);
|
|
179
|
+
const responseHandler = (response) => {
|
|
180
|
+
clearTimeout(timeoutId);
|
|
181
|
+
resolve(response.data);
|
|
182
|
+
};
|
|
183
|
+
this.eventBus.once(`agent:response:${correlationId}`, responseHandler);
|
|
184
|
+
// Send request with correlation ID
|
|
185
|
+
this.send(targetAgent, {
|
|
186
|
+
...message,
|
|
187
|
+
correlationId,
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Join a swarm
|
|
193
|
+
*/
|
|
194
|
+
async joinSwarm(swarmId, role = 'worker') {
|
|
195
|
+
this.swarmMembership = {
|
|
196
|
+
swarmId,
|
|
197
|
+
role,
|
|
198
|
+
joinedAt: new Date(),
|
|
199
|
+
topology: 'mesh',
|
|
200
|
+
peers: [],
|
|
201
|
+
};
|
|
202
|
+
// Emit swarm join event
|
|
203
|
+
this.emitSimple('swarm:join', {
|
|
204
|
+
agentId: this.agentId,
|
|
205
|
+
swarmId,
|
|
206
|
+
role,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Leave the current swarm
|
|
211
|
+
*/
|
|
212
|
+
async leaveSwarm() {
|
|
213
|
+
if (this.swarmMembership) {
|
|
214
|
+
this.emitSimple('swarm:leave', {
|
|
215
|
+
agentId: this.agentId,
|
|
216
|
+
swarmId: this.swarmMembership.swarmId,
|
|
217
|
+
});
|
|
218
|
+
this.swarmMembership = null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get current swarm membership
|
|
223
|
+
*/
|
|
224
|
+
getSwarmMembership() {
|
|
225
|
+
return this.swarmMembership;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Discover peers in the swarm
|
|
229
|
+
*/
|
|
230
|
+
async discoverPeers() {
|
|
231
|
+
// In default implementation, peers are tracked via events
|
|
232
|
+
return this.swarmMembership?.peers ?? [];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Shutdown coordination
|
|
236
|
+
*/
|
|
237
|
+
async shutdown() {
|
|
238
|
+
// Leave swarm if member
|
|
239
|
+
if (this.swarmMembership) {
|
|
240
|
+
await this.leaveSwarm();
|
|
241
|
+
}
|
|
242
|
+
// Clear all subscriptions
|
|
243
|
+
for (const [eventType, handlers] of this.eventSubscriptions) {
|
|
244
|
+
for (const handler of handlers) {
|
|
245
|
+
this.eventBus?.off(eventType, handler);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
this.eventSubscriptions.clear();
|
|
249
|
+
// Clear message handlers
|
|
250
|
+
this.messageHandlers.clear();
|
|
251
|
+
this.eventBus = undefined;
|
|
252
|
+
this.agentId = undefined;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get coordination metrics
|
|
256
|
+
*/
|
|
257
|
+
getMetrics() {
|
|
258
|
+
return { ...this.metrics };
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Check if coordination is healthy
|
|
262
|
+
*/
|
|
263
|
+
isHealthy() {
|
|
264
|
+
return this.eventBus !== undefined && this.agentId !== undefined;
|
|
265
|
+
}
|
|
266
|
+
// === Private Helpers ===
|
|
267
|
+
/**
|
|
268
|
+
* Emit a simple event (not a full QEEvent)
|
|
269
|
+
*/
|
|
270
|
+
emitSimple(type, data) {
|
|
271
|
+
if (!this.eventBus)
|
|
272
|
+
return;
|
|
273
|
+
const event = {
|
|
274
|
+
id: SecureRandom_1.SecureRandom.generateId(16),
|
|
275
|
+
type,
|
|
276
|
+
source: this.agentId,
|
|
277
|
+
data,
|
|
278
|
+
timestamp: new Date(),
|
|
279
|
+
priority: 'medium',
|
|
280
|
+
scope: 'local',
|
|
281
|
+
};
|
|
282
|
+
this.eventBus.emit(type, event);
|
|
283
|
+
this.metrics.eventsEmitted++;
|
|
284
|
+
}
|
|
285
|
+
setupMessageListener() {
|
|
286
|
+
if (!this.eventBus || !this.agentId)
|
|
287
|
+
return;
|
|
288
|
+
// Listen for direct messages
|
|
289
|
+
this.eventBus.on(`agent:message:${this.agentId.id}`, (message) => {
|
|
290
|
+
this.metrics.messagesReceived++;
|
|
291
|
+
for (const handler of this.messageHandlers) {
|
|
292
|
+
try {
|
|
293
|
+
handler(message);
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
console.error('[DefaultCoordinationStrategy] Message handler error:', error);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
// Listen for broadcasts
|
|
301
|
+
this.eventBus.on('agent:broadcast', (message) => {
|
|
302
|
+
// Don't process own broadcasts
|
|
303
|
+
if (message.sender?.id === this.agentId?.id)
|
|
304
|
+
return;
|
|
305
|
+
this.metrics.messagesReceived++;
|
|
306
|
+
for (const handler of this.messageHandlers) {
|
|
307
|
+
try {
|
|
308
|
+
handler(message);
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
console.error('[DefaultCoordinationStrategy] Broadcast handler error:', error);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
generateMessageId() {
|
|
317
|
+
return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
318
|
+
}
|
|
319
|
+
updateLatency(latency) {
|
|
320
|
+
this.latencySum += latency;
|
|
321
|
+
this.latencyCount++;
|
|
322
|
+
this.metrics.averageLatency = this.latencySum / this.latencyCount;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.DefaultCoordinationStrategy = DefaultCoordinationStrategy;
|
|
326
|
+
/**
|
|
327
|
+
* Factory function for creating coordination strategies
|
|
328
|
+
*/
|
|
329
|
+
function createCoordinationStrategy() {
|
|
330
|
+
return new DefaultCoordinationStrategy();
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=DefaultCoordinationStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultCoordinationStrategy.js","sourceRoot":"","sources":["../../../src/core/strategies/DefaultCoordinationStrategy.ts"],"names":[],"mappings":"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"}
|