agentic-qe 2.1.1 → 2.2.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 +213 -0
- package/README.md +37 -11
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +5 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/core/MemoryManager.d.ts.map +1 -1
- package/dist/core/MemoryManager.js +4 -0
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/di/AgentDependencies.d.ts +127 -0
- package/dist/core/di/AgentDependencies.d.ts.map +1 -0
- package/dist/core/di/AgentDependencies.js +251 -0
- package/dist/core/di/AgentDependencies.js.map +1 -0
- package/dist/core/di/DIContainer.d.ts +149 -0
- package/dist/core/di/DIContainer.d.ts.map +1 -0
- package/dist/core/di/DIContainer.js +333 -0
- package/dist/core/di/DIContainer.js.map +1 -0
- package/dist/core/di/index.d.ts +11 -0
- package/dist/core/di/index.d.ts.map +1 -0
- package/dist/core/di/index.js +22 -0
- package/dist/core/di/index.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +5 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +43 -1
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
- package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
- package/dist/learning/ExperienceSharingProtocol.js +538 -0
- package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +101 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +330 -3
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/QLearning.d.ts +38 -125
- package/dist/learning/QLearning.d.ts.map +1 -1
- package/dist/learning/QLearning.js +46 -267
- package/dist/learning/QLearning.js.map +1 -1
- package/dist/learning/QLearningLegacy.d.ts +154 -0
- package/dist/learning/QLearningLegacy.d.ts.map +1 -0
- package/dist/learning/QLearningLegacy.js +337 -0
- package/dist/learning/QLearningLegacy.js.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
- package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
- package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
- package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
- package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/PPOLearner.js +490 -0
- package/dist/learning/algorithms/PPOLearner.js.map +1 -0
- package/dist/learning/algorithms/QLearning.d.ts +68 -0
- package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
- package/dist/learning/algorithms/QLearning.js +116 -0
- package/dist/learning/algorithms/QLearning.js.map +1 -0
- package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
- package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
- package/dist/learning/algorithms/SARSALearner.js +252 -0
- package/dist/learning/algorithms/SARSALearner.js.map +1 -0
- package/dist/learning/algorithms/index.d.ts +29 -0
- package/dist/learning/algorithms/index.d.ts.map +1 -0
- package/dist/learning/algorithms/index.js +44 -0
- package/dist/learning/algorithms/index.js.map +1 -0
- package/dist/learning/index.d.ts +3 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +15 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +2 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/mcp/handlers/advanced/index.d.ts +3 -2
- package/dist/mcp/handlers/advanced/index.d.ts.map +1 -1
- package/dist/mcp/handlers/advanced/index.js +4 -5
- package/dist/mcp/handlers/advanced/index.js.map +1 -1
- package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts +1 -0
- package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
- package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +3 -0
- package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
- package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts +1 -0
- package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
- package/dist/mcp/handlers/analysis/coverageGapsDetect.js +3 -0
- package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
- package/dist/mcp/handlers/analysis/index.d.ts +0 -2
- package/dist/mcp/handlers/analysis/index.d.ts.map +1 -1
- package/dist/mcp/handlers/analysis/index.js +2 -3
- package/dist/mcp/handlers/analysis/index.js.map +1 -1
- package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts +1 -0
- package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
- package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +3 -0
- package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
- package/dist/mcp/handlers/prediction/flaky-test-detect.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/flaky-test-detect.js +2 -0
- package/dist/mcp/handlers/prediction/flaky-test-detect.js.map +1 -1
- package/dist/mcp/handlers/prediction/index.d.ts +0 -2
- package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/index.js +2 -3
- package/dist/mcp/handlers/prediction/index.js.map +1 -1
- package/dist/mcp/handlers/security/index.d.ts +0 -30
- package/dist/mcp/handlers/security/index.d.ts.map +1 -1
- package/dist/mcp/handlers/security/index.js +5 -31
- package/dist/mcp/handlers/security/index.js.map +1 -1
- package/dist/mcp/lazy-loader.d.ts +156 -0
- package/dist/mcp/lazy-loader.d.ts.map +1 -0
- package/dist/mcp/lazy-loader.js +327 -0
- package/dist/mcp/lazy-loader.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +18 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +133 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +236 -49
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-categories.d.ts +105 -0
- package/dist/mcp/tool-categories.d.ts.map +1 -0
- package/dist/mcp/tool-categories.js +463 -0
- package/dist/mcp/tool-categories.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -19
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +260 -647
- package/dist/mcp/tools.js.map +1 -1
- package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
- package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
- package/dist/memory/DistributedPatternLibrary.js +370 -0
- package/dist/memory/DistributedPatternLibrary.js.map +1 -0
- package/dist/memory/PatternQualityScorer.d.ts +169 -0
- package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
- package/dist/memory/PatternQualityScorer.js +327 -0
- package/dist/memory/PatternQualityScorer.js.map +1 -0
- package/dist/memory/PatternReplicationService.d.ts +187 -0
- package/dist/memory/PatternReplicationService.d.ts.map +1 -0
- package/dist/memory/PatternReplicationService.js +392 -0
- package/dist/memory/PatternReplicationService.js.map +1 -0
- package/dist/providers/ClaudeProvider.d.ts +98 -0
- package/dist/providers/ClaudeProvider.d.ts.map +1 -0
- package/dist/providers/ClaudeProvider.js +418 -0
- package/dist/providers/ClaudeProvider.js.map +1 -0
- package/dist/providers/ILLMProvider.d.ts +287 -0
- package/dist/providers/ILLMProvider.d.ts.map +1 -0
- package/dist/providers/ILLMProvider.js +33 -0
- package/dist/providers/ILLMProvider.js.map +1 -0
- package/dist/providers/LLMProviderFactory.d.ts +154 -0
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
- package/dist/providers/LLMProviderFactory.js +426 -0
- package/dist/providers/LLMProviderFactory.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +107 -0
- package/dist/providers/RuvllmProvider.d.ts.map +1 -0
- package/dist/providers/RuvllmProvider.js +417 -0
- package/dist/providers/RuvllmProvider.js.map +1 -0
- package/dist/providers/index.d.ts +31 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +69 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/utils/IntervalRegistry.d.ts +110 -0
- package/dist/utils/IntervalRegistry.d.ts.map +1 -0
- package/dist/utils/IntervalRegistry.js +190 -0
- package/dist/utils/IntervalRegistry.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -1
- package/dist/utils/index.js.map +1 -1
- package/docs/reference/agents.md +33 -0
- package/docs/reference/usage.md +60 -0
- package/package.json +2 -2
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentDependencies - Pre-configured dependencies for QE agents
|
|
3
|
+
*
|
|
4
|
+
* Provides factory functions and registration helpers for common
|
|
5
|
+
* agent dependencies including LLM providers, learning engines,
|
|
6
|
+
* and memory stores.
|
|
7
|
+
*
|
|
8
|
+
* @module core/di/AgentDependencies
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import { DIContainer, DependencyConfig } from './DIContainer';
|
|
12
|
+
import { ExperienceSharingConfig } from '../../learning/ExperienceSharingProtocol';
|
|
13
|
+
import { RLAlgorithmType } from '../../learning/algorithms';
|
|
14
|
+
import { SwarmMemoryManager } from '../memory/SwarmMemoryManager';
|
|
15
|
+
/**
|
|
16
|
+
* Well-known dependency names
|
|
17
|
+
*/
|
|
18
|
+
export declare const DependencyNames: {
|
|
19
|
+
readonly LLM_PROVIDER: "llmProvider";
|
|
20
|
+
readonly LLM_FACTORY: "llmProviderFactory";
|
|
21
|
+
readonly CLAUDE_PROVIDER: "claudeProvider";
|
|
22
|
+
readonly RUVLLM_PROVIDER: "ruvllmProvider";
|
|
23
|
+
readonly LEARNING_ENGINE: "learningEngine";
|
|
24
|
+
readonly RL_ALGORITHM: "rlAlgorithm";
|
|
25
|
+
readonly EXPERIENCE_SHARING: "experienceSharing";
|
|
26
|
+
readonly MEMORY_STORE: "memoryStore";
|
|
27
|
+
readonly SWARM_MEMORY: "swarmMemory";
|
|
28
|
+
readonly LOGGER: "logger";
|
|
29
|
+
readonly EVENT_BUS: "eventBus";
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Configuration for agent dependency setup
|
|
33
|
+
*/
|
|
34
|
+
export interface AgentDependencyConfig {
|
|
35
|
+
/** Agent ID for scoped dependencies */
|
|
36
|
+
agentId: string;
|
|
37
|
+
/** Enable LLM provider (default: true) */
|
|
38
|
+
enableLLM?: boolean;
|
|
39
|
+
/** Preferred LLM provider type */
|
|
40
|
+
llmProvider?: 'claude' | 'ruvllm' | 'hybrid';
|
|
41
|
+
/** Enable learning system (default: true) */
|
|
42
|
+
enableLearning?: boolean;
|
|
43
|
+
/** RL algorithm to use */
|
|
44
|
+
rlAlgorithm?: RLAlgorithmType;
|
|
45
|
+
/** Enable experience sharing (default: false) */
|
|
46
|
+
enableExperienceSharing?: boolean;
|
|
47
|
+
/** Experience sharing config */
|
|
48
|
+
experienceSharingConfig?: Partial<ExperienceSharingConfig>;
|
|
49
|
+
/** Custom memory store */
|
|
50
|
+
memoryStore?: SwarmMemoryManager;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Register standard agent dependencies in a container
|
|
54
|
+
*/
|
|
55
|
+
export declare function registerAgentDependencies(container: DIContainer, config: AgentDependencyConfig): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Create a pre-configured container for an agent
|
|
58
|
+
*/
|
|
59
|
+
export declare function createAgentContainer(config: AgentDependencyConfig, parent?: DIContainer): Promise<DIContainer>;
|
|
60
|
+
/**
|
|
61
|
+
* Interface for DI-enabled agents
|
|
62
|
+
*/
|
|
63
|
+
export interface IDIAgent {
|
|
64
|
+
/** Get the DI container */
|
|
65
|
+
getDIContainer(): DIContainer;
|
|
66
|
+
/** Set the DI container */
|
|
67
|
+
setDIContainer(container: DIContainer): void;
|
|
68
|
+
/** Resolve a dependency */
|
|
69
|
+
resolveDependency<D>(name: string): Promise<D>;
|
|
70
|
+
/** Try to resolve a dependency */
|
|
71
|
+
tryResolveDependency<D>(name: string): Promise<D | undefined>;
|
|
72
|
+
/** Register a dependency */
|
|
73
|
+
registerDependency<D>(name: string, config: DependencyConfig<D>): void;
|
|
74
|
+
/** Register an instance */
|
|
75
|
+
registerDependencyInstance<D>(name: string, instance: D): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Dependency injection mixin for BaseAgent
|
|
79
|
+
*
|
|
80
|
+
* Adds DI capabilities to BaseAgent without modifying the class directly.
|
|
81
|
+
*
|
|
82
|
+
* Usage:
|
|
83
|
+
* ```typescript
|
|
84
|
+
* class MyAgent extends withDI(BaseAgent) {
|
|
85
|
+
* async initialize() {
|
|
86
|
+
* await super.initialize();
|
|
87
|
+
* const llm = await this.resolveDependency<ILLMProvider>('llmProvider');
|
|
88
|
+
* }
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function withDI<T extends new (...args: any[]) => any>(Base: T): {
|
|
93
|
+
new (...args: any[]): {
|
|
94
|
+
[x: string]: any;
|
|
95
|
+
/** @internal DI container - use getDIContainer() instead */
|
|
96
|
+
__diContainer?: DIContainer;
|
|
97
|
+
/**
|
|
98
|
+
* Get or create the DI container for this agent
|
|
99
|
+
*/
|
|
100
|
+
getDIContainer(): DIContainer;
|
|
101
|
+
/**
|
|
102
|
+
* Set the DI container (for external configuration)
|
|
103
|
+
*/
|
|
104
|
+
setDIContainer(container: DIContainer): void;
|
|
105
|
+
/**
|
|
106
|
+
* Resolve a dependency from the container
|
|
107
|
+
*/
|
|
108
|
+
resolveDependency<D>(name: string): Promise<D>;
|
|
109
|
+
/**
|
|
110
|
+
* Try to resolve a dependency (returns undefined if not found)
|
|
111
|
+
*/
|
|
112
|
+
tryResolveDependency<D>(name: string): Promise<D | undefined>;
|
|
113
|
+
/**
|
|
114
|
+
* Register a dependency in the container
|
|
115
|
+
*/
|
|
116
|
+
registerDependency<D>(name: string, config: DependencyConfig<D>): void;
|
|
117
|
+
/**
|
|
118
|
+
* Register an instance directly
|
|
119
|
+
*/
|
|
120
|
+
registerDependencyInstance<D>(name: string, instance: D): void;
|
|
121
|
+
/**
|
|
122
|
+
* Dispose the container on agent termination
|
|
123
|
+
*/
|
|
124
|
+
terminate(): Promise<void>;
|
|
125
|
+
};
|
|
126
|
+
} & T;
|
|
127
|
+
//# sourceMappingURL=AgentDependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentDependencies.d.ts","sourceRoot":"","sources":["../../../src/core/di/AgentDependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAA6B,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAC9G,OAAO,EAAwC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAmBlB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,iDAAiD;IACjD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3D,0BAA0B;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AA4HD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CAItB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,cAAc,IAAI,WAAW,CAAC;IAC9B,2BAA2B;IAC3B,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7C,2BAA2B;IAC3B,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/C,kCAAkC;IAClC,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9D,4BAA4B;IAC5B,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,2BAA2B;IAC3B,0BAA0B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;CAChE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC;kBAAtB,GAAG,EAAE;;QAEhD,4DAA4D;wBAC5C,WAAW;QAE3B;;WAEG;0BACe,WAAW;QAO7B;;WAEG;kCACuB,WAAW,GAAG,IAAI;QAI5C;;WAEG;0BACqB,CAAC,QAAQ,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QAIpD;;WAEG;6BACwB,CAAC,QAAQ,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;QAInE;;WAEG;2BACgB,CAAC,QAAQ,MAAM,UAAU,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;QAItE;;WAEG;mCACwB,CAAC,QAAQ,MAAM,YAAY,CAAC,GAAG,IAAI;QAI9D;;WAEG;qBACgB,OAAO,CAAC,IAAI,CAAC;;MAWnC"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentDependencies - Pre-configured dependencies for QE agents
|
|
4
|
+
*
|
|
5
|
+
* Provides factory functions and registration helpers for common
|
|
6
|
+
* agent dependencies including LLM providers, learning engines,
|
|
7
|
+
* and memory stores.
|
|
8
|
+
*
|
|
9
|
+
* @module core/di/AgentDependencies
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DependencyNames = void 0;
|
|
14
|
+
exports.registerAgentDependencies = registerAgentDependencies;
|
|
15
|
+
exports.createAgentContainer = createAgentContainer;
|
|
16
|
+
exports.withDI = withDI;
|
|
17
|
+
const DIContainer_1 = require("./DIContainer");
|
|
18
|
+
const providers_1 = require("../../providers");
|
|
19
|
+
const LearningEngine_1 = require("../../learning/LearningEngine");
|
|
20
|
+
const ExperienceSharingProtocol_1 = require("../../learning/ExperienceSharingProtocol");
|
|
21
|
+
const algorithms_1 = require("../../learning/algorithms");
|
|
22
|
+
const Logger_1 = require("../../utils/Logger");
|
|
23
|
+
/**
|
|
24
|
+
* Well-known dependency names
|
|
25
|
+
*/
|
|
26
|
+
exports.DependencyNames = {
|
|
27
|
+
// LLM Providers
|
|
28
|
+
LLM_PROVIDER: 'llmProvider',
|
|
29
|
+
LLM_FACTORY: 'llmProviderFactory',
|
|
30
|
+
CLAUDE_PROVIDER: 'claudeProvider',
|
|
31
|
+
RUVLLM_PROVIDER: 'ruvllmProvider',
|
|
32
|
+
// Learning
|
|
33
|
+
LEARNING_ENGINE: 'learningEngine',
|
|
34
|
+
RL_ALGORITHM: 'rlAlgorithm',
|
|
35
|
+
EXPERIENCE_SHARING: 'experienceSharing',
|
|
36
|
+
// Memory
|
|
37
|
+
MEMORY_STORE: 'memoryStore',
|
|
38
|
+
SWARM_MEMORY: 'swarmMemory',
|
|
39
|
+
// Utilities
|
|
40
|
+
LOGGER: 'logger',
|
|
41
|
+
EVENT_BUS: 'eventBus'
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Register standard agent dependencies in a container
|
|
45
|
+
*/
|
|
46
|
+
async function registerAgentDependencies(container, config) {
|
|
47
|
+
const logger = Logger_1.Logger.getInstance();
|
|
48
|
+
// Register logger
|
|
49
|
+
container.registerInstance(exports.DependencyNames.LOGGER, logger);
|
|
50
|
+
// Register LLM providers if enabled
|
|
51
|
+
if (config.enableLLM !== false) {
|
|
52
|
+
await registerLLMDependencies(container, config);
|
|
53
|
+
}
|
|
54
|
+
// Register learning dependencies if enabled
|
|
55
|
+
if (config.enableLearning !== false) {
|
|
56
|
+
await registerLearningDependencies(container, config);
|
|
57
|
+
}
|
|
58
|
+
// Register experience sharing if enabled
|
|
59
|
+
if (config.enableExperienceSharing) {
|
|
60
|
+
registerExperienceSharingDependency(container, config);
|
|
61
|
+
}
|
|
62
|
+
logger.info(`Agent dependencies registered for ${config.agentId}`, {
|
|
63
|
+
llm: config.enableLLM !== false,
|
|
64
|
+
learning: config.enableLearning !== false,
|
|
65
|
+
experienceSharing: config.enableExperienceSharing
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Register LLM provider dependencies
|
|
70
|
+
*/
|
|
71
|
+
async function registerLLMDependencies(container, config) {
|
|
72
|
+
// Register LLM Provider Factory
|
|
73
|
+
container.register(exports.DependencyNames.LLM_FACTORY, {
|
|
74
|
+
factory: () => new providers_1.LLMProviderFactory({
|
|
75
|
+
defaultProvider: config.llmProvider === 'ruvllm' ? 'ruvllm' : 'claude',
|
|
76
|
+
enableFallback: true
|
|
77
|
+
}),
|
|
78
|
+
lifecycle: 'singleton',
|
|
79
|
+
initialize: async (factory) => factory.initialize(),
|
|
80
|
+
dispose: async (factory) => factory.shutdown()
|
|
81
|
+
});
|
|
82
|
+
// Register main LLM provider based on preference
|
|
83
|
+
container.register(exports.DependencyNames.LLM_PROVIDER, {
|
|
84
|
+
factory: async (c) => {
|
|
85
|
+
const factory = await c.resolve(exports.DependencyNames.LLM_FACTORY);
|
|
86
|
+
switch (config.llmProvider) {
|
|
87
|
+
case 'ruvllm':
|
|
88
|
+
return factory.getProvider('ruvllm') ?? factory.selectBestProvider({ preferLocal: true });
|
|
89
|
+
case 'hybrid':
|
|
90
|
+
return factory.createHybridRouter();
|
|
91
|
+
case 'claude':
|
|
92
|
+
default:
|
|
93
|
+
return factory.getProvider('claude') ?? factory.selectBestProvider();
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
lifecycle: 'singleton',
|
|
97
|
+
dependencies: [exports.DependencyNames.LLM_FACTORY]
|
|
98
|
+
});
|
|
99
|
+
// Register individual providers for direct access
|
|
100
|
+
container.register(exports.DependencyNames.CLAUDE_PROVIDER, {
|
|
101
|
+
factory: () => new providers_1.ClaudeProvider(),
|
|
102
|
+
lifecycle: 'singleton',
|
|
103
|
+
initialize: async (p) => p.initialize(),
|
|
104
|
+
dispose: async (p) => p.shutdown()
|
|
105
|
+
});
|
|
106
|
+
container.register(exports.DependencyNames.RUVLLM_PROVIDER, {
|
|
107
|
+
factory: () => new providers_1.RuvllmProvider(),
|
|
108
|
+
lifecycle: 'singleton',
|
|
109
|
+
initialize: async (p) => {
|
|
110
|
+
try {
|
|
111
|
+
await p.initialize();
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// ruvllm may not be available - that's OK
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
dispose: async (p) => p.shutdown()
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Register learning system dependencies
|
|
122
|
+
*/
|
|
123
|
+
async function registerLearningDependencies(container, config) {
|
|
124
|
+
// Register RL algorithm
|
|
125
|
+
const algorithmType = config.rlAlgorithm ?? 'sarsa';
|
|
126
|
+
container.register(exports.DependencyNames.RL_ALGORITHM, {
|
|
127
|
+
factory: () => (0, algorithms_1.createRLAlgorithm)(algorithmType, {
|
|
128
|
+
learningRate: 0.1,
|
|
129
|
+
discountFactor: 0.95,
|
|
130
|
+
explorationRate: 0.3,
|
|
131
|
+
explorationDecay: 0.995,
|
|
132
|
+
minExplorationRate: 0.01,
|
|
133
|
+
useExperienceReplay: true,
|
|
134
|
+
replayBufferSize: 10000,
|
|
135
|
+
batchSize: 32
|
|
136
|
+
}),
|
|
137
|
+
lifecycle: 'scoped' // Each agent gets its own RL algorithm
|
|
138
|
+
});
|
|
139
|
+
// Register Learning Engine (requires memory store)
|
|
140
|
+
container.register(exports.DependencyNames.LEARNING_ENGINE, {
|
|
141
|
+
factory: async (c) => {
|
|
142
|
+
const memoryStore = config.memoryStore ?? await c.tryResolve(exports.DependencyNames.SWARM_MEMORY);
|
|
143
|
+
if (!memoryStore) {
|
|
144
|
+
throw new Error('Memory store required for learning engine');
|
|
145
|
+
}
|
|
146
|
+
return new LearningEngine_1.LearningEngine(config.agentId, memoryStore, {
|
|
147
|
+
enabled: true,
|
|
148
|
+
learningRate: 0.1,
|
|
149
|
+
discountFactor: 0.95,
|
|
150
|
+
explorationRate: 0.3,
|
|
151
|
+
algorithm: algorithmType
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
lifecycle: 'scoped',
|
|
155
|
+
initialize: async (engine) => engine.initialize()
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Register experience sharing dependency
|
|
160
|
+
*/
|
|
161
|
+
function registerExperienceSharingDependency(container, config) {
|
|
162
|
+
container.register(exports.DependencyNames.EXPERIENCE_SHARING, {
|
|
163
|
+
factory: () => new ExperienceSharingProtocol_1.ExperienceSharingProtocol({
|
|
164
|
+
agentId: config.agentId,
|
|
165
|
+
...config.experienceSharingConfig
|
|
166
|
+
}),
|
|
167
|
+
lifecycle: 'scoped',
|
|
168
|
+
initialize: async (protocol) => protocol.start(),
|
|
169
|
+
dispose: async (protocol) => protocol.stop()
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Create a pre-configured container for an agent
|
|
174
|
+
*/
|
|
175
|
+
async function createAgentContainer(config, parent) {
|
|
176
|
+
const container = new DIContainer_1.DIContainer(parent);
|
|
177
|
+
await registerAgentDependencies(container, config);
|
|
178
|
+
return container;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Dependency injection mixin for BaseAgent
|
|
182
|
+
*
|
|
183
|
+
* Adds DI capabilities to BaseAgent without modifying the class directly.
|
|
184
|
+
*
|
|
185
|
+
* Usage:
|
|
186
|
+
* ```typescript
|
|
187
|
+
* class MyAgent extends withDI(BaseAgent) {
|
|
188
|
+
* async initialize() {
|
|
189
|
+
* await super.initialize();
|
|
190
|
+
* const llm = await this.resolveDependency<ILLMProvider>('llmProvider');
|
|
191
|
+
* }
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
function withDI(Base) {
|
|
196
|
+
return class DIAgent extends Base {
|
|
197
|
+
/**
|
|
198
|
+
* Get or create the DI container for this agent
|
|
199
|
+
*/
|
|
200
|
+
getDIContainer() {
|
|
201
|
+
if (!this.__diContainer) {
|
|
202
|
+
this.__diContainer = new DIContainer_1.DIContainer();
|
|
203
|
+
}
|
|
204
|
+
return this.__diContainer;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Set the DI container (for external configuration)
|
|
208
|
+
*/
|
|
209
|
+
setDIContainer(container) {
|
|
210
|
+
this.__diContainer = container;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Resolve a dependency from the container
|
|
214
|
+
*/
|
|
215
|
+
async resolveDependency(name) {
|
|
216
|
+
return this.getDIContainer().resolve(name);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Try to resolve a dependency (returns undefined if not found)
|
|
220
|
+
*/
|
|
221
|
+
async tryResolveDependency(name) {
|
|
222
|
+
return this.getDIContainer().tryResolve(name);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Register a dependency in the container
|
|
226
|
+
*/
|
|
227
|
+
registerDependency(name, config) {
|
|
228
|
+
this.getDIContainer().register(name, config);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Register an instance directly
|
|
232
|
+
*/
|
|
233
|
+
registerDependencyInstance(name, instance) {
|
|
234
|
+
this.getDIContainer().registerInstance(name, instance);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Dispose the container on agent termination
|
|
238
|
+
*/
|
|
239
|
+
async terminate() {
|
|
240
|
+
if (this.__diContainer) {
|
|
241
|
+
await this.__diContainer.dispose();
|
|
242
|
+
this.__diContainer = undefined;
|
|
243
|
+
}
|
|
244
|
+
// Call parent terminate if it exists
|
|
245
|
+
if (super.terminate) {
|
|
246
|
+
await super.terminate();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=AgentDependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentDependencies.js","sourceRoot":"","sources":["../../../src/core/di/AgentDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DIContainer - Dependency Injection Container for AQE Fleet
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized dependency management for:
|
|
5
|
+
* - LLM providers (Claude, ruvllm, hybrid)
|
|
6
|
+
* - Learning engines and algorithms
|
|
7
|
+
* - Memory stores and pattern libraries
|
|
8
|
+
* - Experience sharing protocols
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Singleton and transient lifecycle management
|
|
12
|
+
* - Lazy initialization
|
|
13
|
+
* - Hierarchical scopes (agent-level, fleet-level)
|
|
14
|
+
* - Type-safe dependency resolution
|
|
15
|
+
*
|
|
16
|
+
* @module core/di/DIContainer
|
|
17
|
+
* @version 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
import { EventEmitter } from 'events';
|
|
20
|
+
/**
|
|
21
|
+
* Dependency lifecycle types
|
|
22
|
+
*/
|
|
23
|
+
export type DependencyLifecycle = 'singleton' | 'transient' | 'scoped';
|
|
24
|
+
/**
|
|
25
|
+
* Dependency registration configuration
|
|
26
|
+
*/
|
|
27
|
+
export interface DependencyConfig<T> {
|
|
28
|
+
/** Factory function to create instance */
|
|
29
|
+
factory: (container: DIContainer) => T | Promise<T>;
|
|
30
|
+
/** Lifecycle management */
|
|
31
|
+
lifecycle: DependencyLifecycle;
|
|
32
|
+
/** Optional initialization function */
|
|
33
|
+
initialize?: (instance: T) => Promise<void>;
|
|
34
|
+
/** Optional cleanup function */
|
|
35
|
+
dispose?: (instance: T) => Promise<void>;
|
|
36
|
+
/** Dependencies required before this one */
|
|
37
|
+
dependencies?: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Container scope for hierarchical DI
|
|
41
|
+
*/
|
|
42
|
+
export interface DIScope {
|
|
43
|
+
id: string;
|
|
44
|
+
parent?: DIContainer;
|
|
45
|
+
instances: Map<string, any>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* DIContainer - Central dependency injection container
|
|
49
|
+
*
|
|
50
|
+
* Usage:
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const container = new DIContainer();
|
|
53
|
+
*
|
|
54
|
+
* // Register dependencies
|
|
55
|
+
* container.register('llmProvider', {
|
|
56
|
+
* factory: () => new ClaudeProvider(),
|
|
57
|
+
* lifecycle: 'singleton',
|
|
58
|
+
* initialize: async (p) => p.initialize()
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* // Resolve dependencies
|
|
62
|
+
* const llm = await container.resolve<ILLMProvider>('llmProvider');
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class DIContainer extends EventEmitter {
|
|
66
|
+
private readonly logger;
|
|
67
|
+
private readonly dependencies;
|
|
68
|
+
private readonly scopes;
|
|
69
|
+
private readonly parent?;
|
|
70
|
+
private isDisposed;
|
|
71
|
+
constructor(parent?: DIContainer);
|
|
72
|
+
/**
|
|
73
|
+
* Register a dependency
|
|
74
|
+
*/
|
|
75
|
+
register<T>(name: string, config: DependencyConfig<T>): this;
|
|
76
|
+
/**
|
|
77
|
+
* Register a singleton instance directly
|
|
78
|
+
*/
|
|
79
|
+
registerInstance<T>(name: string, instance: T): this;
|
|
80
|
+
/**
|
|
81
|
+
* Register a factory function
|
|
82
|
+
*/
|
|
83
|
+
registerFactory<T>(name: string, factory: (container: DIContainer) => T | Promise<T>, lifecycle?: DependencyLifecycle): this;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve a dependency
|
|
86
|
+
*/
|
|
87
|
+
resolve<T>(name: string, scope?: string): Promise<T>;
|
|
88
|
+
/**
|
|
89
|
+
* Try to resolve a dependency (returns undefined if not found)
|
|
90
|
+
*/
|
|
91
|
+
tryResolve<T>(name: string, scope?: string): Promise<T | undefined>;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a dependency is registered
|
|
94
|
+
*/
|
|
95
|
+
has(name: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Create a child scope
|
|
98
|
+
*/
|
|
99
|
+
createScope(scopeId: string): DIContainer;
|
|
100
|
+
/**
|
|
101
|
+
* Dispose a scope and its instances
|
|
102
|
+
*/
|
|
103
|
+
disposeScope(scopeId: string): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Dispose all dependencies and clean up
|
|
106
|
+
*/
|
|
107
|
+
dispose(): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Get all registered dependency names
|
|
110
|
+
*/
|
|
111
|
+
getRegisteredNames(): string[];
|
|
112
|
+
/**
|
|
113
|
+
* Resolve a registration
|
|
114
|
+
*/
|
|
115
|
+
private resolveRegistration;
|
|
116
|
+
/**
|
|
117
|
+
* Resolve singleton instance
|
|
118
|
+
*/
|
|
119
|
+
private resolveSingleton;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve scoped instance
|
|
122
|
+
*/
|
|
123
|
+
private resolveScoped;
|
|
124
|
+
/**
|
|
125
|
+
* Resolve transient instance (new instance each time)
|
|
126
|
+
*/
|
|
127
|
+
private resolveTransient;
|
|
128
|
+
/**
|
|
129
|
+
* Create and initialize an instance
|
|
130
|
+
*/
|
|
131
|
+
private createAndInitialize;
|
|
132
|
+
/**
|
|
133
|
+
* Get scoped instance
|
|
134
|
+
*/
|
|
135
|
+
private getScopedInstance;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get the global DI container
|
|
139
|
+
*/
|
|
140
|
+
export declare function getGlobalContainer(): DIContainer;
|
|
141
|
+
/**
|
|
142
|
+
* Set the global DI container
|
|
143
|
+
*/
|
|
144
|
+
export declare function setGlobalContainer(container: DIContainer): void;
|
|
145
|
+
/**
|
|
146
|
+
* Reset the global container (for testing)
|
|
147
|
+
*/
|
|
148
|
+
export declare function resetGlobalContainer(): Promise<void>;
|
|
149
|
+
//# sourceMappingURL=DIContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DIContainer.d.ts","sourceRoot":"","sources":["../../../src/core/di/DIContainer.ts"],"names":[],"mappings":"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"}
|