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.
Files changed (167) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/README.md +37 -11
  3. package/dist/agents/index.d.ts.map +1 -1
  4. package/dist/agents/index.js +5 -1
  5. package/dist/agents/index.js.map +1 -1
  6. package/dist/core/MemoryManager.d.ts.map +1 -1
  7. package/dist/core/MemoryManager.js +4 -0
  8. package/dist/core/MemoryManager.js.map +1 -1
  9. package/dist/core/di/AgentDependencies.d.ts +127 -0
  10. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  11. package/dist/core/di/AgentDependencies.js +251 -0
  12. package/dist/core/di/AgentDependencies.js.map +1 -0
  13. package/dist/core/di/DIContainer.d.ts +149 -0
  14. package/dist/core/di/DIContainer.d.ts.map +1 -0
  15. package/dist/core/di/DIContainer.js +333 -0
  16. package/dist/core/di/DIContainer.js.map +1 -0
  17. package/dist/core/di/index.d.ts +11 -0
  18. package/dist/core/di/index.d.ts.map +1 -0
  19. package/dist/core/di/index.js +22 -0
  20. package/dist/core/di/index.js.map +1 -0
  21. package/dist/core/index.d.ts +1 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +11 -1
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/memory/RuVectorPatternStore.d.ts +5 -1
  26. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  27. package/dist/core/memory/RuVectorPatternStore.js +43 -1
  28. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  29. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  30. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  31. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  32. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  33. package/dist/learning/LearningEngine.d.ts +101 -1
  34. package/dist/learning/LearningEngine.d.ts.map +1 -1
  35. package/dist/learning/LearningEngine.js +330 -3
  36. package/dist/learning/LearningEngine.js.map +1 -1
  37. package/dist/learning/QLearning.d.ts +38 -125
  38. package/dist/learning/QLearning.d.ts.map +1 -1
  39. package/dist/learning/QLearning.js +46 -267
  40. package/dist/learning/QLearning.js.map +1 -1
  41. package/dist/learning/QLearningLegacy.d.ts +154 -0
  42. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  43. package/dist/learning/QLearningLegacy.js +337 -0
  44. package/dist/learning/QLearningLegacy.js.map +1 -0
  45. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  46. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  47. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  48. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  49. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  50. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  51. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  52. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  53. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  54. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  55. package/dist/learning/algorithms/PPOLearner.js +490 -0
  56. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  57. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  58. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  59. package/dist/learning/algorithms/QLearning.js +116 -0
  60. package/dist/learning/algorithms/QLearning.js.map +1 -0
  61. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  62. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  63. package/dist/learning/algorithms/SARSALearner.js +252 -0
  64. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  65. package/dist/learning/algorithms/index.d.ts +29 -0
  66. package/dist/learning/algorithms/index.d.ts.map +1 -0
  67. package/dist/learning/algorithms/index.js +44 -0
  68. package/dist/learning/algorithms/index.js.map +1 -0
  69. package/dist/learning/index.d.ts +3 -0
  70. package/dist/learning/index.d.ts.map +1 -1
  71. package/dist/learning/index.js +15 -1
  72. package/dist/learning/index.js.map +1 -1
  73. package/dist/learning/types.d.ts +2 -0
  74. package/dist/learning/types.d.ts.map +1 -1
  75. package/dist/mcp/handlers/advanced/index.d.ts +3 -2
  76. package/dist/mcp/handlers/advanced/index.d.ts.map +1 -1
  77. package/dist/mcp/handlers/advanced/index.js +4 -5
  78. package/dist/mcp/handlers/advanced/index.js.map +1 -1
  79. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts +1 -0
  80. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  81. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +3 -0
  82. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  83. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts +1 -0
  84. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  85. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +3 -0
  86. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  87. package/dist/mcp/handlers/analysis/index.d.ts +0 -2
  88. package/dist/mcp/handlers/analysis/index.d.ts.map +1 -1
  89. package/dist/mcp/handlers/analysis/index.js +2 -3
  90. package/dist/mcp/handlers/analysis/index.js.map +1 -1
  91. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts +1 -0
  92. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  93. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +3 -0
  94. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  95. package/dist/mcp/handlers/prediction/flaky-test-detect.d.ts.map +1 -1
  96. package/dist/mcp/handlers/prediction/flaky-test-detect.js +2 -0
  97. package/dist/mcp/handlers/prediction/flaky-test-detect.js.map +1 -1
  98. package/dist/mcp/handlers/prediction/index.d.ts +0 -2
  99. package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
  100. package/dist/mcp/handlers/prediction/index.js +2 -3
  101. package/dist/mcp/handlers/prediction/index.js.map +1 -1
  102. package/dist/mcp/handlers/security/index.d.ts +0 -30
  103. package/dist/mcp/handlers/security/index.d.ts.map +1 -1
  104. package/dist/mcp/handlers/security/index.js +5 -31
  105. package/dist/mcp/handlers/security/index.js.map +1 -1
  106. package/dist/mcp/lazy-loader.d.ts +156 -0
  107. package/dist/mcp/lazy-loader.d.ts.map +1 -0
  108. package/dist/mcp/lazy-loader.js +327 -0
  109. package/dist/mcp/lazy-loader.js.map +1 -0
  110. package/dist/mcp/server-instructions.d.ts +18 -0
  111. package/dist/mcp/server-instructions.d.ts.map +1 -0
  112. package/dist/mcp/server-instructions.js +133 -0
  113. package/dist/mcp/server-instructions.js.map +1 -0
  114. package/dist/mcp/server.d.ts.map +1 -1
  115. package/dist/mcp/server.js +236 -49
  116. package/dist/mcp/server.js.map +1 -1
  117. package/dist/mcp/tool-categories.d.ts +105 -0
  118. package/dist/mcp/tool-categories.d.ts.map +1 -0
  119. package/dist/mcp/tool-categories.js +463 -0
  120. package/dist/mcp/tool-categories.js.map +1 -0
  121. package/dist/mcp/tools.d.ts +3 -19
  122. package/dist/mcp/tools.d.ts.map +1 -1
  123. package/dist/mcp/tools.js +260 -647
  124. package/dist/mcp/tools.js.map +1 -1
  125. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  126. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  127. package/dist/memory/DistributedPatternLibrary.js +370 -0
  128. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  129. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  130. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  131. package/dist/memory/PatternQualityScorer.js +327 -0
  132. package/dist/memory/PatternQualityScorer.js.map +1 -0
  133. package/dist/memory/PatternReplicationService.d.ts +187 -0
  134. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  135. package/dist/memory/PatternReplicationService.js +392 -0
  136. package/dist/memory/PatternReplicationService.js.map +1 -0
  137. package/dist/providers/ClaudeProvider.d.ts +98 -0
  138. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  139. package/dist/providers/ClaudeProvider.js +418 -0
  140. package/dist/providers/ClaudeProvider.js.map +1 -0
  141. package/dist/providers/ILLMProvider.d.ts +287 -0
  142. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  143. package/dist/providers/ILLMProvider.js +33 -0
  144. package/dist/providers/ILLMProvider.js.map +1 -0
  145. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  146. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  147. package/dist/providers/LLMProviderFactory.js +426 -0
  148. package/dist/providers/LLMProviderFactory.js.map +1 -0
  149. package/dist/providers/RuvllmProvider.d.ts +107 -0
  150. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  151. package/dist/providers/RuvllmProvider.js +417 -0
  152. package/dist/providers/RuvllmProvider.js.map +1 -0
  153. package/dist/providers/index.d.ts +31 -0
  154. package/dist/providers/index.d.ts.map +1 -0
  155. package/dist/providers/index.js +69 -0
  156. package/dist/providers/index.js.map +1 -0
  157. package/dist/utils/IntervalRegistry.d.ts +110 -0
  158. package/dist/utils/IntervalRegistry.d.ts.map +1 -0
  159. package/dist/utils/IntervalRegistry.js +190 -0
  160. package/dist/utils/IntervalRegistry.js.map +1 -0
  161. package/dist/utils/index.d.ts +1 -0
  162. package/dist/utils/index.d.ts.map +1 -1
  163. package/dist/utils/index.js +5 -1
  164. package/dist/utils/index.js.map +1 -1
  165. package/docs/reference/agents.md +33 -0
  166. package/docs/reference/usage.md +60 -0
  167. package/package.json +2 -2
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Lazy Tool Loader for Hierarchical MCP Tools
3
+ * Phase 2 Implementation - Issue #115
4
+ *
5
+ * Manages dynamic loading of tool domains to reduce context consumption.
6
+ */
7
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
8
+ import { ToolDomain, SpecializedDomain } from './tool-categories.js';
9
+ export interface LoaderState {
10
+ loadedDomains: Set<ToolDomain | SpecializedDomain>;
11
+ coreLoaded: boolean;
12
+ totalToolsLoaded: number;
13
+ }
14
+ export interface LoadResult {
15
+ success: boolean;
16
+ domain: string;
17
+ toolsLoaded: string[];
18
+ alreadyLoaded: boolean;
19
+ }
20
+ export interface UsageStats {
21
+ toolName: string;
22
+ callCount: number;
23
+ lastUsed: number;
24
+ domain?: string;
25
+ }
26
+ export interface DomainUsageStats {
27
+ domain: string;
28
+ loadCount: number;
29
+ toolUsageCount: number;
30
+ lastLoaded: number;
31
+ averageToolsPerLoad: number;
32
+ }
33
+ export declare class LazyToolLoader {
34
+ private state;
35
+ private toolCache;
36
+ private toolUsageCount;
37
+ private toolLastUsed;
38
+ private domainUsageCount;
39
+ private domainLastLoaded;
40
+ private domainToolUsageCount;
41
+ private usageTrackingEnabled;
42
+ constructor(enableUsageTracking?: boolean);
43
+ /**
44
+ * Index all tools for quick lookup
45
+ */
46
+ private indexTools;
47
+ /**
48
+ * Get core tools (always loaded)
49
+ */
50
+ getCoreTools(): Tool[];
51
+ /**
52
+ * Load a specific domain's tools
53
+ */
54
+ loadDomain(domain: ToolDomain | SpecializedDomain): LoadResult;
55
+ /**
56
+ * Get tools for a loaded domain
57
+ */
58
+ getToolsForDomain(domain: ToolDomain | SpecializedDomain): Tool[];
59
+ /**
60
+ * Auto-detect and load domains based on message content
61
+ */
62
+ autoLoadFromMessage(message: string): LoadResult[];
63
+ /**
64
+ * Get all currently loaded tools
65
+ */
66
+ getLoadedTools(): Tool[];
67
+ /**
68
+ * Get current loader state
69
+ */
70
+ getState(): LoaderState;
71
+ /**
72
+ * Check if a domain is loaded
73
+ */
74
+ isDomainLoaded(domain: ToolDomain | SpecializedDomain): boolean;
75
+ /**
76
+ * Get available domains that haven't been loaded
77
+ */
78
+ getAvailableDomains(): (ToolDomain | SpecializedDomain)[];
79
+ /**
80
+ * Get statistics about tool loading
81
+ */
82
+ getStats(): {
83
+ coreTools: number;
84
+ loadedDomains: string[];
85
+ availableDomains: string[];
86
+ totalLoaded: number;
87
+ totalAvailable: number;
88
+ };
89
+ /**
90
+ * Reset loader state (useful for testing)
91
+ */
92
+ reset(): void;
93
+ /**
94
+ * Preload commonly used domain combinations
95
+ */
96
+ preloadCommonDomains(): void;
97
+ /**
98
+ * Track tool usage when a tool is called
99
+ */
100
+ trackToolUsage(toolName: string): void;
101
+ /**
102
+ * Find which domain a tool belongs to
103
+ */
104
+ private findDomainForTool;
105
+ /**
106
+ * Get usage statistics for all tools
107
+ */
108
+ getToolUsageStats(): UsageStats[];
109
+ /**
110
+ * Get usage statistics for domains
111
+ */
112
+ getDomainUsageStats(): DomainUsageStats[];
113
+ /**
114
+ * Get top N most frequently used tools
115
+ */
116
+ getTopTools(limit?: number): UsageStats[];
117
+ /**
118
+ * Get top N most frequently used domains
119
+ */
120
+ getTopDomains(limit?: number): DomainUsageStats[];
121
+ /**
122
+ * Preload domains based on usage frequency
123
+ * Loads the most frequently used domains that aren't already loaded
124
+ */
125
+ preloadFrequentDomains(threshold?: number): LoadResult[];
126
+ /**
127
+ * Export usage statistics as JSON
128
+ */
129
+ exportUsageStats(): {
130
+ toolStats: UsageStats[];
131
+ domainStats: DomainUsageStats[];
132
+ exportedAt: number;
133
+ };
134
+ /**
135
+ * Import usage statistics from JSON
136
+ */
137
+ importUsageStats(data: {
138
+ toolStats: UsageStats[];
139
+ domainStats: DomainUsageStats[];
140
+ }): void;
141
+ /**
142
+ * Clear all usage statistics
143
+ */
144
+ clearUsageStats(): void;
145
+ /**
146
+ * Enable or disable usage tracking
147
+ */
148
+ setUsageTracking(enabled: boolean): void;
149
+ /**
150
+ * Check if usage tracking is enabled
151
+ */
152
+ isUsageTrackingEnabled(): boolean;
153
+ }
154
+ export declare function getToolLoader(): LazyToolLoader;
155
+ export declare function resetToolLoader(): void;
156
+ //# sourceMappingURL=lazy-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loader.d.ts","sourceRoot":"","sources":["../../src/mcp/lazy-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ /**
3
+ * Lazy Tool Loader for Hierarchical MCP Tools
4
+ * Phase 2 Implementation - Issue #115
5
+ *
6
+ * Manages dynamic loading of tool domains to reduce context consumption.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LazyToolLoader = void 0;
10
+ exports.getToolLoader = getToolLoader;
11
+ exports.resetToolLoader = resetToolLoader;
12
+ const tool_categories_js_1 = require("./tool-categories.js");
13
+ const tools_js_1 = require("./tools.js");
14
+ class LazyToolLoader {
15
+ constructor(enableUsageTracking = true) {
16
+ this.state = {
17
+ loadedDomains: new Set(),
18
+ coreLoaded: false,
19
+ totalToolsLoaded: 0,
20
+ };
21
+ this.toolCache = new Map();
22
+ this.toolUsageCount = new Map();
23
+ this.toolLastUsed = new Map();
24
+ this.domainUsageCount = new Map();
25
+ this.domainLastLoaded = new Map();
26
+ this.domainToolUsageCount = new Map();
27
+ this.usageTrackingEnabled = enableUsageTracking;
28
+ this.indexTools();
29
+ }
30
+ /**
31
+ * Index all tools for quick lookup
32
+ */
33
+ indexTools() {
34
+ for (const tool of tools_js_1.agenticQETools) {
35
+ this.toolCache.set(tool.name, tool);
36
+ }
37
+ }
38
+ /**
39
+ * Get core tools (always loaded)
40
+ */
41
+ getCoreTools() {
42
+ this.state.coreLoaded = true;
43
+ return tool_categories_js_1.CORE_TOOLS
44
+ .map(name => this.toolCache.get(name))
45
+ .filter((tool) => tool !== undefined);
46
+ }
47
+ /**
48
+ * Load a specific domain's tools
49
+ */
50
+ loadDomain(domain) {
51
+ // Track domain usage
52
+ if (this.usageTrackingEnabled) {
53
+ const currentCount = this.domainUsageCount.get(domain) || 0;
54
+ this.domainUsageCount.set(domain, currentCount + 1);
55
+ this.domainLastLoaded.set(domain, Date.now());
56
+ }
57
+ // Check if already loaded
58
+ if (this.state.loadedDomains.has(domain)) {
59
+ return {
60
+ success: true,
61
+ domain,
62
+ toolsLoaded: [],
63
+ alreadyLoaded: true,
64
+ };
65
+ }
66
+ // Get tools for domain
67
+ const toolNames = domain in tool_categories_js_1.DOMAIN_TOOLS
68
+ ? tool_categories_js_1.DOMAIN_TOOLS[domain]
69
+ : tool_categories_js_1.SPECIALIZED_TOOLS[domain] || [];
70
+ const loadedTools = toolNames.filter(name => this.toolCache.has(name));
71
+ this.state.loadedDomains.add(domain);
72
+ this.state.totalToolsLoaded += loadedTools.length;
73
+ return {
74
+ success: true,
75
+ domain,
76
+ toolsLoaded: loadedTools,
77
+ alreadyLoaded: false,
78
+ };
79
+ }
80
+ /**
81
+ * Get tools for a loaded domain
82
+ */
83
+ getToolsForDomain(domain) {
84
+ const toolNames = domain in tool_categories_js_1.DOMAIN_TOOLS
85
+ ? tool_categories_js_1.DOMAIN_TOOLS[domain]
86
+ : tool_categories_js_1.SPECIALIZED_TOOLS[domain] || [];
87
+ return toolNames
88
+ .map(name => this.toolCache.get(name))
89
+ .filter((tool) => tool !== undefined);
90
+ }
91
+ /**
92
+ * Auto-detect and load domains based on message content
93
+ */
94
+ autoLoadFromMessage(message) {
95
+ const domains = (0, tool_categories_js_1.detectDomainsFromMessage)(message);
96
+ return domains.map(domain => this.loadDomain(domain));
97
+ }
98
+ /**
99
+ * Get all currently loaded tools
100
+ */
101
+ getLoadedTools() {
102
+ const tools = [];
103
+ // Always include core
104
+ tools.push(...this.getCoreTools());
105
+ // Add loaded domains
106
+ for (const domain of this.state.loadedDomains) {
107
+ tools.push(...this.getToolsForDomain(domain));
108
+ }
109
+ return tools;
110
+ }
111
+ /**
112
+ * Get current loader state
113
+ */
114
+ getState() {
115
+ return { ...this.state, loadedDomains: new Set(this.state.loadedDomains) };
116
+ }
117
+ /**
118
+ * Check if a domain is loaded
119
+ */
120
+ isDomainLoaded(domain) {
121
+ return this.state.loadedDomains.has(domain);
122
+ }
123
+ /**
124
+ * Get available domains that haven't been loaded
125
+ */
126
+ getAvailableDomains() {
127
+ const allDomains = [
128
+ ...Object.keys(tool_categories_js_1.DOMAIN_TOOLS),
129
+ ...Object.keys(tool_categories_js_1.SPECIALIZED_TOOLS),
130
+ ];
131
+ return allDomains.filter(d => !this.state.loadedDomains.has(d));
132
+ }
133
+ /**
134
+ * Get statistics about tool loading
135
+ */
136
+ getStats() {
137
+ const availableDomains = this.getAvailableDomains();
138
+ return {
139
+ coreTools: tool_categories_js_1.CORE_TOOLS.length,
140
+ loadedDomains: Array.from(this.state.loadedDomains),
141
+ availableDomains,
142
+ totalLoaded: this.state.totalToolsLoaded + tool_categories_js_1.CORE_TOOLS.length,
143
+ totalAvailable: this.toolCache.size,
144
+ };
145
+ }
146
+ /**
147
+ * Reset loader state (useful for testing)
148
+ */
149
+ reset() {
150
+ this.state = {
151
+ loadedDomains: new Set(),
152
+ coreLoaded: false,
153
+ totalToolsLoaded: 0,
154
+ };
155
+ }
156
+ /**
157
+ * Preload commonly used domain combinations
158
+ */
159
+ preloadCommonDomains() {
160
+ // Testing workflows often need coverage and quality
161
+ this.loadDomain('coverage');
162
+ this.loadDomain('quality');
163
+ }
164
+ /**
165
+ * Track tool usage when a tool is called
166
+ */
167
+ trackToolUsage(toolName) {
168
+ if (!this.usageTrackingEnabled)
169
+ return;
170
+ const currentCount = this.toolUsageCount.get(toolName) || 0;
171
+ this.toolUsageCount.set(toolName, currentCount + 1);
172
+ this.toolLastUsed.set(toolName, Date.now());
173
+ // Find the domain for this tool and track domain-level usage
174
+ const domain = this.findDomainForTool(toolName);
175
+ if (domain) {
176
+ const currentDomainToolCount = this.domainToolUsageCount.get(domain) || 0;
177
+ this.domainToolUsageCount.set(domain, currentDomainToolCount + 1);
178
+ }
179
+ }
180
+ /**
181
+ * Find which domain a tool belongs to
182
+ */
183
+ findDomainForTool(toolName) {
184
+ // Check domain tools
185
+ for (const [domain, tools] of Object.entries(tool_categories_js_1.DOMAIN_TOOLS)) {
186
+ if (tools.includes(toolName)) {
187
+ return domain;
188
+ }
189
+ }
190
+ // Check specialized tools
191
+ for (const [domain, tools] of Object.entries(tool_categories_js_1.SPECIALIZED_TOOLS)) {
192
+ if (tools.includes(toolName)) {
193
+ return domain;
194
+ }
195
+ }
196
+ // Check core tools
197
+ if (tool_categories_js_1.CORE_TOOLS.includes(toolName)) {
198
+ return 'core';
199
+ }
200
+ return undefined;
201
+ }
202
+ /**
203
+ * Get usage statistics for all tools
204
+ */
205
+ getToolUsageStats() {
206
+ const stats = [];
207
+ for (const [toolName, callCount] of this.toolUsageCount.entries()) {
208
+ stats.push({
209
+ toolName,
210
+ callCount,
211
+ lastUsed: this.toolLastUsed.get(toolName) || 0,
212
+ domain: this.findDomainForTool(toolName),
213
+ });
214
+ }
215
+ // Sort by call count descending
216
+ return stats.sort((a, b) => b.callCount - a.callCount);
217
+ }
218
+ /**
219
+ * Get usage statistics for domains
220
+ */
221
+ getDomainUsageStats() {
222
+ const stats = [];
223
+ for (const [domain, loadCount] of this.domainUsageCount.entries()) {
224
+ const toolUsageCount = this.domainToolUsageCount.get(domain) || 0;
225
+ stats.push({
226
+ domain,
227
+ loadCount,
228
+ toolUsageCount,
229
+ lastLoaded: this.domainLastLoaded.get(domain) || 0,
230
+ averageToolsPerLoad: toolUsageCount / Math.max(loadCount, 1),
231
+ });
232
+ }
233
+ // Sort by tool usage count descending
234
+ return stats.sort((a, b) => b.toolUsageCount - a.toolUsageCount);
235
+ }
236
+ /**
237
+ * Get top N most frequently used tools
238
+ */
239
+ getTopTools(limit = 10) {
240
+ return this.getToolUsageStats().slice(0, limit);
241
+ }
242
+ /**
243
+ * Get top N most frequently used domains
244
+ */
245
+ getTopDomains(limit = 5) {
246
+ return this.getDomainUsageStats().slice(0, limit);
247
+ }
248
+ /**
249
+ * Preload domains based on usage frequency
250
+ * Loads the most frequently used domains that aren't already loaded
251
+ */
252
+ preloadFrequentDomains(threshold = 5) {
253
+ const results = [];
254
+ const domainStats = this.getDomainUsageStats();
255
+ for (const stat of domainStats) {
256
+ // Skip if already loaded or below threshold
257
+ if (this.state.loadedDomains.has(stat.domain) || stat.toolUsageCount < threshold) {
258
+ continue;
259
+ }
260
+ // Load the domain
261
+ const result = this.loadDomain(stat.domain);
262
+ results.push(result);
263
+ }
264
+ return results;
265
+ }
266
+ /**
267
+ * Export usage statistics as JSON
268
+ */
269
+ exportUsageStats() {
270
+ return {
271
+ toolStats: this.getToolUsageStats(),
272
+ domainStats: this.getDomainUsageStats(),
273
+ exportedAt: Date.now(),
274
+ };
275
+ }
276
+ /**
277
+ * Import usage statistics from JSON
278
+ */
279
+ importUsageStats(data) {
280
+ // Import tool stats
281
+ for (const stat of data.toolStats) {
282
+ this.toolUsageCount.set(stat.toolName, stat.callCount);
283
+ this.toolLastUsed.set(stat.toolName, stat.lastUsed);
284
+ }
285
+ // Import domain stats
286
+ for (const stat of data.domainStats) {
287
+ this.domainUsageCount.set(stat.domain, stat.loadCount);
288
+ this.domainToolUsageCount.set(stat.domain, stat.toolUsageCount);
289
+ this.domainLastLoaded.set(stat.domain, stat.lastLoaded);
290
+ }
291
+ }
292
+ /**
293
+ * Clear all usage statistics
294
+ */
295
+ clearUsageStats() {
296
+ this.toolUsageCount.clear();
297
+ this.toolLastUsed.clear();
298
+ this.domainUsageCount.clear();
299
+ this.domainLastLoaded.clear();
300
+ this.domainToolUsageCount.clear();
301
+ }
302
+ /**
303
+ * Enable or disable usage tracking
304
+ */
305
+ setUsageTracking(enabled) {
306
+ this.usageTrackingEnabled = enabled;
307
+ }
308
+ /**
309
+ * Check if usage tracking is enabled
310
+ */
311
+ isUsageTrackingEnabled() {
312
+ return this.usageTrackingEnabled;
313
+ }
314
+ }
315
+ exports.LazyToolLoader = LazyToolLoader;
316
+ // Singleton instance for use across the application
317
+ let loaderInstance = null;
318
+ function getToolLoader() {
319
+ if (!loaderInstance) {
320
+ loaderInstance = new LazyToolLoader();
321
+ }
322
+ return loaderInstance;
323
+ }
324
+ function resetToolLoader() {
325
+ loaderInstance = null;
326
+ }
327
+ //# sourceMappingURL=lazy-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loader.js","sourceRoot":"","sources":["../../src/mcp/lazy-loader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA+ZH,sCAKC;AAED,0CAEC;AAraD,6DAQ8B;AAC9B,yCAA4C;AA8B5C,MAAa,cAAc;IAUzB,YAAY,mBAAmB,GAAG,IAAI;QACpC,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE,CAAC;SACpB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,KAAK,MAAM,IAAI,IAAI,yBAAc,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,OAAO,+BAAU;aACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAsC;QAC/C,qBAAqB;QACrB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,MAAM,IAAI,iCAAY;YACtC,CAAC,CAAC,iCAAY,CAAC,MAAoB,CAAC;YACpC,CAAC,CAAC,sCAAiB,CAAC,MAA2B,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC;QAElD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,WAAW,EAAE,WAAW;YACxB,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAsC;QACtD,MAAM,SAAS,GAAG,MAAM,IAAI,iCAAY;YACtC,CAAC,CAAC,iCAAY,CAAC,MAAoB,CAAC;YACpC,CAAC,CAAC,sCAAiB,CAAC,MAA2B,CAAC,IAAI,EAAE,CAAC;QAEzD,OAAO,SAAS;aACb,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAe;QACjC,MAAM,OAAO,GAAG,IAAA,6CAAwB,EAAC,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,sBAAsB;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAEnC,qBAAqB;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAsC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,UAAU,GAAG;YACjB,GAAG,MAAM,CAAC,IAAI,CAAC,iCAAY,CAAC;YAC5B,GAAG,MAAM,CAAC,IAAI,CAAC,sCAAiB,CAAC;SACI,CAAC;QAExC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,QAAQ;QAON,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,OAAO;YACL,SAAS,EAAE,+BAAU,CAAC,MAAM;YAC5B,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACnD,gBAAgB;YAChB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,+BAAU,CAAC,MAAM;YAC5D,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG;YACX,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE,CAAC;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,oDAAoD;QACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5C,6DAA6D;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAgB;QACxC,qBAAqB;QACrB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iCAAY,CAAC,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAe,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sCAAiB,CAAC,EAAE,CAAC;YAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAe,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,+BAAU,CAAC,QAAQ,CAAC,QAAe,CAAC,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ;gBACR,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QAED,gCAAgC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,KAAK,GAAuB,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM;gBACN,SAAS;gBACT,cAAc;gBACd,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClD,mBAAmB,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;aAC7D,CAAC,CAAC;QACL,CAAC;QAED,sCAAsC;QACtC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAK,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAK,GAAG,CAAC;QACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,SAAS,GAAG,CAAC;QAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,4CAA4C;YAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAa,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,SAAS,EAAE,CAAC;gBACxF,SAAS;YACX,CAAC;YAED,kBAAkB;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAwC,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,gBAAgB;QAKd,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACvC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAGhB;QACC,oBAAoB;QACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAgB;QAC/B,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;CACF;AAhXD,wCAgXC;AAED,oDAAoD;AACpD,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD,SAAgB,aAAa;IAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAgB,eAAe;IAC7B,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Server Instructions for Agentic QE MCP Server
3
+ * Phase 2 Implementation - Issue #115
4
+ *
5
+ * These instructions are shown to Claude once per session to guide tool usage.
6
+ */
7
+ export declare const SERVER_INSTRUCTIONS = "\n# Agentic QE Fleet - MCP Tool Guide\n\n## Overview\nAgentic QE provides 96 specialized quality engineering tools organized into a hierarchical system for efficient context usage.\n\n## Quick Start\n1. **Discover available tools:** Use `tools_discover` to see all domains\n2. **Load domain tools:** Use `tools_load_domain` to load specialized tools\n3. **Auto-loading:** Domain tools auto-load when relevant keywords are detected\n\n---\n\n## Core Tools (Always Available - 14 tools)\n\n### Fleet Management\n- `fleet_init` - Initialize QE fleet with topology\n- `agent_spawn` - Spawn specialized QE agent\n- `fleet_status` - Get fleet and agent status\n\n### Testing\n- `test_generate_enhanced` - AI test generation with pattern recognition\n- `test_execute_parallel` - Parallel test execution with retry\n- `test_report_comprehensive` - Multi-format test reports\n\n### Memory & Coordination\n- `memory_store` - Store data with TTL & namespacing\n- `memory_retrieve` - Retrieve stored data\n- `memory_query` - Pattern-based memory search\n\n### Quality & Orchestration\n- `quality_analyze` - Analyze quality metrics\n- `task_orchestrate` - Orchestrate tasks across agents\n- `task_status` - Check task progress\n\n### Discovery\n- `tools_discover` - List available tool domains\n- `tools_load_domain` - Load tools for a domain\n\n---\n\n## Domain Tools (Load as Needed)\n\n| Domain | Keywords | Tools | Use Case |\n|--------|----------|-------|----------|\n| **Security** | security, vulnerability, audit, owasp | 4 tools | Security scanning, vulnerability detection |\n| **Performance** | benchmark, bottleneck, profiling | 4 tools | Performance testing, bottleneck analysis |\n| **Coverage** | coverage, gap, uncovered | 5 tools | Coverage analysis, gap detection |\n| **Quality** | quality gate, deploy, release | 6 tools | Quality gates, deployment readiness |\n| **Flaky** | flaky, unstable, retry | 3 tools | Flaky test detection and stabilization |\n| **Visual** | screenshot, accessibility, wcag | 3 tools | Visual regression, accessibility testing |\n| **Requirements** | bdd, gherkin, acceptance | 2 tools | Requirements validation, BDD generation |\n\n### Loading Domain Tools\n```\n# Explicit load\ntools_load_domain({ domain: 'security' })\n\n# Auto-load: Just mention keywords in your request\n\"I need to run a security scan\" \u2192 Security tools auto-load\n```\n\n---\n\n## Specialized Tools (Expert Use)\n\n### Learning Domain (4 tools)\nFor persistent learning and pattern storage across sessions.\nLoad with: `tools_load_domain({ domain: 'learning' })`\n\n### Advanced Domain (7 tools)\nFor mutation testing, API contract validation, production incident replay.\nLoad with: `tools_load_domain({ domain: 'advanced' })`\n\n---\n\n## Best Practices\n\n1. **Start with core tools** - They handle 80% of use cases\n2. **Let auto-load work** - Mention keywords naturally\n3. **Use tools_discover** - When unsure what's available\n4. **Batch operations** - Use parallel execution for speed\n5. **Check fleet_status** - Monitor agent health\n\n---\n\n## Common Workflows\n\n### Test Generation & Execution\n1. `test_generate_enhanced` - Generate tests\n2. `test_execute_parallel` - Run tests\n3. `test_report_comprehensive` - Generate report\n\n### Quality Gate Check\n1. Load quality domain if not auto-loaded\n2. `quality_analyze` - Analyze metrics\n3. `qe_qualitygate_evaluate` - Make go/no-go decision\n\n### Security Audit\n1. `tools_load_domain({ domain: 'security' })`\n2. `qe_security_scan_comprehensive` - Full scan\n3. `qe_security_detect_vulnerabilities` - Detailed analysis\n\n---\n\n## Tool Naming Convention\nAll tools follow: `mcp__agentic_qe__<tool_name>`\n\nExample: `mcp__agentic_qe__test_generate_enhanced`\n";
8
+ export declare const SERVER_NAME = "agentic-qe";
9
+ export declare const SERVER_VERSION = "2.2.0";
10
+ /**
11
+ * Get formatted server info for MCP initialization
12
+ */
13
+ export declare function getServerInfo(): {
14
+ name: string;
15
+ version: string;
16
+ instructions: string;
17
+ };
18
+ //# sourceMappingURL=server-instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-instructions.d.ts","sourceRoot":"","sources":["../../src/mcp/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,oqHA6G/B,CAAC;AAEF,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAMvF"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * Server Instructions for Agentic QE MCP Server
4
+ * Phase 2 Implementation - Issue #115
5
+ *
6
+ * These instructions are shown to Claude once per session to guide tool usage.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SERVER_VERSION = exports.SERVER_NAME = exports.SERVER_INSTRUCTIONS = void 0;
10
+ exports.getServerInfo = getServerInfo;
11
+ exports.SERVER_INSTRUCTIONS = `
12
+ # Agentic QE Fleet - MCP Tool Guide
13
+
14
+ ## Overview
15
+ Agentic QE provides 96 specialized quality engineering tools organized into a hierarchical system for efficient context usage.
16
+
17
+ ## Quick Start
18
+ 1. **Discover available tools:** Use \`tools_discover\` to see all domains
19
+ 2. **Load domain tools:** Use \`tools_load_domain\` to load specialized tools
20
+ 3. **Auto-loading:** Domain tools auto-load when relevant keywords are detected
21
+
22
+ ---
23
+
24
+ ## Core Tools (Always Available - 14 tools)
25
+
26
+ ### Fleet Management
27
+ - \`fleet_init\` - Initialize QE fleet with topology
28
+ - \`agent_spawn\` - Spawn specialized QE agent
29
+ - \`fleet_status\` - Get fleet and agent status
30
+
31
+ ### Testing
32
+ - \`test_generate_enhanced\` - AI test generation with pattern recognition
33
+ - \`test_execute_parallel\` - Parallel test execution with retry
34
+ - \`test_report_comprehensive\` - Multi-format test reports
35
+
36
+ ### Memory & Coordination
37
+ - \`memory_store\` - Store data with TTL & namespacing
38
+ - \`memory_retrieve\` - Retrieve stored data
39
+ - \`memory_query\` - Pattern-based memory search
40
+
41
+ ### Quality & Orchestration
42
+ - \`quality_analyze\` - Analyze quality metrics
43
+ - \`task_orchestrate\` - Orchestrate tasks across agents
44
+ - \`task_status\` - Check task progress
45
+
46
+ ### Discovery
47
+ - \`tools_discover\` - List available tool domains
48
+ - \`tools_load_domain\` - Load tools for a domain
49
+
50
+ ---
51
+
52
+ ## Domain Tools (Load as Needed)
53
+
54
+ | Domain | Keywords | Tools | Use Case |
55
+ |--------|----------|-------|----------|
56
+ | **Security** | security, vulnerability, audit, owasp | 4 tools | Security scanning, vulnerability detection |
57
+ | **Performance** | benchmark, bottleneck, profiling | 4 tools | Performance testing, bottleneck analysis |
58
+ | **Coverage** | coverage, gap, uncovered | 5 tools | Coverage analysis, gap detection |
59
+ | **Quality** | quality gate, deploy, release | 6 tools | Quality gates, deployment readiness |
60
+ | **Flaky** | flaky, unstable, retry | 3 tools | Flaky test detection and stabilization |
61
+ | **Visual** | screenshot, accessibility, wcag | 3 tools | Visual regression, accessibility testing |
62
+ | **Requirements** | bdd, gherkin, acceptance | 2 tools | Requirements validation, BDD generation |
63
+
64
+ ### Loading Domain Tools
65
+ \`\`\`
66
+ # Explicit load
67
+ tools_load_domain({ domain: 'security' })
68
+
69
+ # Auto-load: Just mention keywords in your request
70
+ "I need to run a security scan" → Security tools auto-load
71
+ \`\`\`
72
+
73
+ ---
74
+
75
+ ## Specialized Tools (Expert Use)
76
+
77
+ ### Learning Domain (4 tools)
78
+ For persistent learning and pattern storage across sessions.
79
+ Load with: \`tools_load_domain({ domain: 'learning' })\`
80
+
81
+ ### Advanced Domain (7 tools)
82
+ For mutation testing, API contract validation, production incident replay.
83
+ Load with: \`tools_load_domain({ domain: 'advanced' })\`
84
+
85
+ ---
86
+
87
+ ## Best Practices
88
+
89
+ 1. **Start with core tools** - They handle 80% of use cases
90
+ 2. **Let auto-load work** - Mention keywords naturally
91
+ 3. **Use tools_discover** - When unsure what's available
92
+ 4. **Batch operations** - Use parallel execution for speed
93
+ 5. **Check fleet_status** - Monitor agent health
94
+
95
+ ---
96
+
97
+ ## Common Workflows
98
+
99
+ ### Test Generation & Execution
100
+ 1. \`test_generate_enhanced\` - Generate tests
101
+ 2. \`test_execute_parallel\` - Run tests
102
+ 3. \`test_report_comprehensive\` - Generate report
103
+
104
+ ### Quality Gate Check
105
+ 1. Load quality domain if not auto-loaded
106
+ 2. \`quality_analyze\` - Analyze metrics
107
+ 3. \`qe_qualitygate_evaluate\` - Make go/no-go decision
108
+
109
+ ### Security Audit
110
+ 1. \`tools_load_domain({ domain: 'security' })\`
111
+ 2. \`qe_security_scan_comprehensive\` - Full scan
112
+ 3. \`qe_security_detect_vulnerabilities\` - Detailed analysis
113
+
114
+ ---
115
+
116
+ ## Tool Naming Convention
117
+ All tools follow: \`mcp__agentic_qe__<tool_name>\`
118
+
119
+ Example: \`mcp__agentic_qe__test_generate_enhanced\`
120
+ `;
121
+ exports.SERVER_NAME = 'agentic-qe';
122
+ exports.SERVER_VERSION = '2.2.0';
123
+ /**
124
+ * Get formatted server info for MCP initialization
125
+ */
126
+ function getServerInfo() {
127
+ return {
128
+ name: exports.SERVER_NAME,
129
+ version: exports.SERVER_VERSION,
130
+ instructions: exports.SERVER_INSTRUCTIONS,
131
+ };
132
+ }
133
+ //# sourceMappingURL=server-instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/mcp/server-instructions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAuHH,sCAMC;AA3HY,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GlC,CAAC;AAEW,QAAA,WAAW,GAAG,YAAY,CAAC;AAC3B,QAAA,cAAc,GAAG,OAAO,CAAC;AAEtC;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,mBAAW;QACjB,OAAO,EAAE,sBAAc;QACvB,YAAY,EAAE,2BAAmB;KAClC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAkGjF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAA+B;;IA+CvD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuJ1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuW5B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AA6GjF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAA+B;;IA+CvD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiJ1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmlB5B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1C"}