claude-flow 2.0.0-alpha.66 → 2.0.0-alpha.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/cache/agent-pool.json +33 -0
- package/.claude/cache/memory-optimization.json +19 -0
- package/.claude/cache/neural-optimization.json +25 -0
- package/.claude/cache/optimized-hooks.json +19 -0
- package/.claude/cache/parallel-processing.json +26 -0
- package/.claude/optimized-settings.json +270 -0
- package/.claude/settings-enhanced.json +278 -0
- package/.claude/settings.json +105 -8
- package/CHANGELOG.md +18 -0
- package/bin/claude-flow +1 -1
- package/dist/cli/simple-commands/hive-mind.js +1 -1
- package/dist/cli/simple-commands/hive-mind.js.map +1 -1
- package/dist/cli/simple-commands/hooks.js +6 -4
- package/dist/cli/simple-commands/hooks.js.map +1 -1
- package/dist/providers/anthropic-provider.d.ts +27 -0
- package/dist/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/providers/anthropic-provider.js +247 -0
- package/dist/providers/anthropic-provider.js.map +1 -0
- package/dist/providers/base-provider.d.ts +134 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +407 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/cohere-provider.d.ts +28 -0
- package/dist/providers/cohere-provider.d.ts.map +1 -0
- package/dist/providers/cohere-provider.js +407 -0
- package/dist/providers/cohere-provider.js.map +1 -0
- package/dist/providers/google-provider.d.ts +23 -0
- package/dist/providers/google-provider.d.ts.map +1 -0
- package/dist/providers/google-provider.js +362 -0
- package/dist/providers/google-provider.js.map +1 -0
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama-provider.d.ts +23 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -0
- package/dist/providers/ollama-provider.js +374 -0
- package/dist/providers/ollama-provider.js.map +1 -0
- package/dist/providers/openai-provider.d.ts +23 -0
- package/dist/providers/openai-provider.d.ts.map +1 -0
- package/dist/providers/openai-provider.js +349 -0
- package/dist/providers/openai-provider.js.map +1 -0
- package/dist/providers/provider-manager.d.ts +139 -0
- package/dist/providers/provider-manager.d.ts.map +1 -0
- package/dist/providers/provider-manager.js +513 -0
- package/dist/providers/provider-manager.js.map +1 -0
- package/dist/providers/types.d.ts +356 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +61 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/utils.d.ts +37 -0
- package/dist/providers/utils.d.ts.map +1 -0
- package/dist/providers/utils.js +322 -0
- package/dist/providers/utils.js.map +1 -0
- package/dist/services/agentic-flow-hooks/hook-manager.d.ts +70 -0
- package/dist/services/agentic-flow-hooks/hook-manager.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/hook-manager.js +512 -0
- package/dist/services/agentic-flow-hooks/hook-manager.js.map +1 -0
- package/dist/services/agentic-flow-hooks/index.d.ts +36 -0
- package/dist/services/agentic-flow-hooks/index.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/index.js +325 -0
- package/dist/services/agentic-flow-hooks/index.js.map +1 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.d.ts +33 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.js +415 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.d.ts +45 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.js +532 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.d.ts +39 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.js +561 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.d.ts +33 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.js +621 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/types.d.ts +379 -0
- package/dist/services/agentic-flow-hooks/types.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/types.js +8 -0
- package/dist/services/agentic-flow-hooks/types.js.map +1 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts +39 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.js +742 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.js.map +1 -0
- package/package.json +1 -1
- package/scripts/optimize-performance.js +400 -0
- package/scripts/performance-monitor.js +263 -0
- package/src/cli/help-text.js +1 -1
- package/src/cli/simple-cli.js +1 -1
- package/src/cli/simple-commands/hive-mind.js +1 -1
- package/src/providers/anthropic-provider.ts +282 -0
- package/src/providers/base-provider.ts +560 -0
- package/src/providers/cohere-provider.ts +521 -0
- package/src/providers/google-provider.ts +477 -0
- package/src/providers/index.ts +21 -0
- package/src/providers/ollama-provider.ts +489 -0
- package/src/providers/openai-provider.ts +476 -0
- package/src/providers/provider-manager.ts +654 -0
- package/src/providers/types.ts +531 -0
- package/src/providers/utils.ts +376 -0
- package/src/services/agentic-flow-hooks/hook-manager.ts +701 -0
- package/src/services/agentic-flow-hooks/index.ts +386 -0
- package/src/services/agentic-flow-hooks/llm-hooks.ts +557 -0
- package/src/services/agentic-flow-hooks/memory-hooks.ts +710 -0
- package/src/services/agentic-flow-hooks/neural-hooks.ts +758 -0
- package/src/services/agentic-flow-hooks/performance-hooks.ts +827 -0
- package/src/services/agentic-flow-hooks/types.ts +503 -0
- package/src/services/agentic-flow-hooks/workflow-hooks.ts +1026 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic Flow Hook System
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the hook system integration with agentic-flow.
|
|
5
|
+
* Provides initialization, registration, and management of all hook types.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { agenticHookManager } from './hook-manager.js';
|
|
9
|
+
import { registerLLMHooks } from './llm-hooks.js';
|
|
10
|
+
import { registerMemoryHooks } from './memory-hooks.js';
|
|
11
|
+
import { registerNeuralHooks } from './neural-hooks.js';
|
|
12
|
+
import { registerPerformanceHooks } from './performance-hooks.js';
|
|
13
|
+
import { registerWorkflowHooks } from './workflow-hooks.js';
|
|
14
|
+
import { Logger } from '../../core/logger.js';
|
|
15
|
+
|
|
16
|
+
export * from './types.js';
|
|
17
|
+
export { agenticHookManager } from './hook-manager.js';
|
|
18
|
+
export * from './llm-hooks.js';
|
|
19
|
+
export * from './memory-hooks.js';
|
|
20
|
+
export * from './neural-hooks.js';
|
|
21
|
+
export * from './performance-hooks.js';
|
|
22
|
+
export * from './workflow-hooks.js';
|
|
23
|
+
|
|
24
|
+
const logger = new Logger({
|
|
25
|
+
level: 'info',
|
|
26
|
+
format: 'text',
|
|
27
|
+
destination: 'console'
|
|
28
|
+
}, { prefix: 'AgenticFlowHooks' });
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the agentic-flow hook system
|
|
32
|
+
*/
|
|
33
|
+
export async function initializeAgenticFlowHooks(): Promise<void> {
|
|
34
|
+
logger.info('Initializing agentic-flow hook system...');
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// Register all hook types
|
|
38
|
+
registerLLMHooks();
|
|
39
|
+
logger.debug('LLM hooks registered');
|
|
40
|
+
|
|
41
|
+
registerMemoryHooks();
|
|
42
|
+
logger.debug('Memory hooks registered');
|
|
43
|
+
|
|
44
|
+
registerNeuralHooks();
|
|
45
|
+
logger.debug('Neural hooks registered');
|
|
46
|
+
|
|
47
|
+
registerPerformanceHooks();
|
|
48
|
+
logger.debug('Performance hooks registered');
|
|
49
|
+
|
|
50
|
+
registerWorkflowHooks();
|
|
51
|
+
logger.debug('Workflow hooks registered');
|
|
52
|
+
|
|
53
|
+
// Set up default pipelines
|
|
54
|
+
await setupDefaultPipelines();
|
|
55
|
+
|
|
56
|
+
// Initialize metrics collection
|
|
57
|
+
startMetricsCollection();
|
|
58
|
+
|
|
59
|
+
logger.info('Agentic-flow hook system initialized successfully');
|
|
60
|
+
} catch (error) {
|
|
61
|
+
logger.error('Failed to initialize agentic-flow hooks:', error);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Set up default hook pipelines
|
|
68
|
+
*/
|
|
69
|
+
async function setupDefaultPipelines(): Promise<void> {
|
|
70
|
+
// LLM Call Pipeline
|
|
71
|
+
agenticHookManager.createPipeline({
|
|
72
|
+
id: 'llm-call-pipeline',
|
|
73
|
+
name: 'LLM Call Pipeline',
|
|
74
|
+
stages: [
|
|
75
|
+
{
|
|
76
|
+
name: 'pre-call',
|
|
77
|
+
hooks: agenticHookManager.getHooks('pre-llm-call'),
|
|
78
|
+
parallel: false,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'call-execution',
|
|
82
|
+
hooks: [], // Actual LLM call happens here
|
|
83
|
+
parallel: false,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'post-call',
|
|
87
|
+
hooks: agenticHookManager.getHooks('post-llm-call'),
|
|
88
|
+
parallel: true,
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
errorStrategy: 'continue',
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Memory Operation Pipeline
|
|
95
|
+
agenticHookManager.createPipeline({
|
|
96
|
+
id: 'memory-operation-pipeline',
|
|
97
|
+
name: 'Memory Operation Pipeline',
|
|
98
|
+
stages: [
|
|
99
|
+
{
|
|
100
|
+
name: 'validation',
|
|
101
|
+
hooks: agenticHookManager.getHooks('pre-memory-store'),
|
|
102
|
+
parallel: false,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'storage',
|
|
106
|
+
hooks: agenticHookManager.getHooks('post-memory-store'),
|
|
107
|
+
parallel: true,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'sync',
|
|
111
|
+
hooks: agenticHookManager.getHooks('memory-sync'),
|
|
112
|
+
parallel: true,
|
|
113
|
+
condition: (ctx) => ctx.metadata.crossProvider === true,
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
errorStrategy: 'rollback',
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Workflow Execution Pipeline
|
|
120
|
+
agenticHookManager.createPipeline({
|
|
121
|
+
id: 'workflow-execution-pipeline',
|
|
122
|
+
name: 'Workflow Execution Pipeline',
|
|
123
|
+
stages: [
|
|
124
|
+
{
|
|
125
|
+
name: 'initialization',
|
|
126
|
+
hooks: agenticHookManager.getHooks('workflow-start'),
|
|
127
|
+
parallel: false,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'execution',
|
|
131
|
+
hooks: [
|
|
132
|
+
...agenticHookManager.getHooks('workflow-step'),
|
|
133
|
+
...agenticHookManager.getHooks('workflow-decision'),
|
|
134
|
+
],
|
|
135
|
+
parallel: false,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: 'completion',
|
|
139
|
+
hooks: agenticHookManager.getHooks('workflow-complete'),
|
|
140
|
+
parallel: true,
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
errorStrategy: 'fail-fast',
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Start background metrics collection
|
|
149
|
+
*/
|
|
150
|
+
function startMetricsCollection(): void {
|
|
151
|
+
// Collect metrics every 30 seconds
|
|
152
|
+
setInterval(() => {
|
|
153
|
+
const metrics = agenticHookManager.getMetrics();
|
|
154
|
+
|
|
155
|
+
// Log high-level metrics
|
|
156
|
+
logger.debug('Hook system metrics:', {
|
|
157
|
+
totalHooks: metrics['hooks.count'],
|
|
158
|
+
totalExecutions: metrics['hooks.executions'],
|
|
159
|
+
errorRate: metrics['hooks.errors'] / metrics['hooks.executions'] || 0,
|
|
160
|
+
cacheHitRate: metrics['hooks.cacheHits'] / metrics['hooks.executions'] || 0,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Emit metrics event
|
|
164
|
+
agenticHookManager.emit('metrics:collected', metrics);
|
|
165
|
+
}, 30000);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Shutdown the hook system gracefully
|
|
170
|
+
*/
|
|
171
|
+
export async function shutdownAgenticFlowHooks(): Promise<void> {
|
|
172
|
+
logger.info('Shutting down agentic-flow hook system...');
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
// Wait for active executions to complete
|
|
176
|
+
const maxWaitTime = 10000; // 10 seconds
|
|
177
|
+
const startTime = Date.now();
|
|
178
|
+
|
|
179
|
+
while (agenticHookManager.getMetrics()['executions.active'] > 0) {
|
|
180
|
+
if (Date.now() - startTime > maxWaitTime) {
|
|
181
|
+
logger.warn('Timeout waiting for active executions to complete');
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Remove all listeners
|
|
188
|
+
agenticHookManager.removeAllListeners();
|
|
189
|
+
|
|
190
|
+
logger.info('Agentic-flow hook system shut down successfully');
|
|
191
|
+
} catch (error) {
|
|
192
|
+
logger.error('Error during hook system shutdown:', error);
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Get hook system status
|
|
199
|
+
*/
|
|
200
|
+
export function getHookSystemStatus(): {
|
|
201
|
+
initialized: boolean;
|
|
202
|
+
metrics: Record<string, any>;
|
|
203
|
+
pipelines: string[];
|
|
204
|
+
activeExecutions: number;
|
|
205
|
+
} {
|
|
206
|
+
const metrics = agenticHookManager.getMetrics();
|
|
207
|
+
|
|
208
|
+
return {
|
|
209
|
+
initialized: metrics['hooks.count'] > 0,
|
|
210
|
+
metrics,
|
|
211
|
+
pipelines: [
|
|
212
|
+
'llm-call-pipeline',
|
|
213
|
+
'memory-operation-pipeline',
|
|
214
|
+
'workflow-execution-pipeline',
|
|
215
|
+
],
|
|
216
|
+
activeExecutions: metrics['executions.active'] || 0,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Create a context builder for hook execution
|
|
222
|
+
*/
|
|
223
|
+
export function createHookContext(): HookContextBuilder {
|
|
224
|
+
class ContextBuilder implements HookContextBuilder {
|
|
225
|
+
private context: Partial<AgenticHookContext> = {
|
|
226
|
+
timestamp: Date.now(),
|
|
227
|
+
correlationId: this.generateCorrelationId(),
|
|
228
|
+
metadata: {},
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
withSession(sessionId: string): HookContextBuilder {
|
|
232
|
+
this.context.sessionId = sessionId;
|
|
233
|
+
return this;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
withMemory(namespace: string, provider: string): HookContextBuilder {
|
|
237
|
+
this.context.memory = {
|
|
238
|
+
namespace,
|
|
239
|
+
provider,
|
|
240
|
+
cache: new Map(),
|
|
241
|
+
};
|
|
242
|
+
return this;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
withNeural(modelId: string): HookContextBuilder {
|
|
246
|
+
this.context.neural = {
|
|
247
|
+
modelId,
|
|
248
|
+
patterns: this.createPatternStore(),
|
|
249
|
+
training: {
|
|
250
|
+
epoch: 0,
|
|
251
|
+
loss: 0,
|
|
252
|
+
accuracy: 0,
|
|
253
|
+
learningRate: 0.001,
|
|
254
|
+
optimizer: 'adam',
|
|
255
|
+
checkpoints: [],
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
return this;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
withPerformance(metrics: PerformanceMetric[]): HookContextBuilder {
|
|
262
|
+
const metricsMap = new Map<string, PerformanceMetric>();
|
|
263
|
+
metrics.forEach(m => metricsMap.set(m.name, m));
|
|
264
|
+
|
|
265
|
+
this.context.performance = {
|
|
266
|
+
metrics: metricsMap,
|
|
267
|
+
bottlenecks: [],
|
|
268
|
+
optimizations: [],
|
|
269
|
+
};
|
|
270
|
+
return this;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
withMetadata(metadata: Record<string, any>): HookContextBuilder {
|
|
274
|
+
this.context.metadata = { ...this.context.metadata, ...metadata };
|
|
275
|
+
return this;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
build(): AgenticHookContext {
|
|
279
|
+
if (!this.context.sessionId) {
|
|
280
|
+
this.context.sessionId = this.generateSessionId();
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (!this.context.memory) {
|
|
284
|
+
this.context.memory = {
|
|
285
|
+
namespace: 'default',
|
|
286
|
+
provider: 'memory',
|
|
287
|
+
cache: new Map(),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (!this.context.neural) {
|
|
292
|
+
this.context.neural = {
|
|
293
|
+
modelId: 'default',
|
|
294
|
+
patterns: this.createPatternStore(),
|
|
295
|
+
training: {
|
|
296
|
+
epoch: 0,
|
|
297
|
+
loss: 0,
|
|
298
|
+
accuracy: 0,
|
|
299
|
+
learningRate: 0.001,
|
|
300
|
+
optimizer: 'adam',
|
|
301
|
+
checkpoints: [],
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (!this.context.performance) {
|
|
307
|
+
this.context.performance = {
|
|
308
|
+
metrics: new Map(),
|
|
309
|
+
bottlenecks: [],
|
|
310
|
+
optimizations: [],
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return this.context as AgenticHookContext;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
private generateCorrelationId(): string {
|
|
318
|
+
return `corr_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
private generateSessionId(): string {
|
|
322
|
+
return `sess_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
private createPatternStore(): PatternStore {
|
|
326
|
+
const patterns = new Map<string, Pattern>();
|
|
327
|
+
|
|
328
|
+
return {
|
|
329
|
+
add(pattern: Pattern): void {
|
|
330
|
+
patterns.set(pattern.id, pattern);
|
|
331
|
+
},
|
|
332
|
+
|
|
333
|
+
get(id: string): Pattern | undefined {
|
|
334
|
+
return patterns.get(id);
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
findSimilar(pattern: Partial<Pattern>, threshold: number): Pattern[] {
|
|
338
|
+
const results: Pattern[] = [];
|
|
339
|
+
|
|
340
|
+
for (const p of patterns.values()) {
|
|
341
|
+
// Simple similarity check
|
|
342
|
+
if (p.type === pattern.type && p.confidence >= threshold) {
|
|
343
|
+
results.push(p);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return results;
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
getByType(type: Pattern['type']): Pattern[] {
|
|
351
|
+
return Array.from(patterns.values()).filter(p => p.type === type);
|
|
352
|
+
},
|
|
353
|
+
|
|
354
|
+
prune(maxAge: number): void {
|
|
355
|
+
const cutoff = Date.now() - maxAge;
|
|
356
|
+
for (const [id, pattern] of patterns) {
|
|
357
|
+
if (pattern.context.timestamp < cutoff) {
|
|
358
|
+
patterns.delete(id);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
|
|
363
|
+
export(): Pattern[] {
|
|
364
|
+
return Array.from(patterns.values());
|
|
365
|
+
},
|
|
366
|
+
|
|
367
|
+
import(newPatterns: Pattern[]): void {
|
|
368
|
+
for (const pattern of newPatterns) {
|
|
369
|
+
patterns.set(pattern.id, pattern);
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return new ContextBuilder();
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// Import types for the context builder
|
|
380
|
+
import type {
|
|
381
|
+
AgenticHookContext,
|
|
382
|
+
HookContextBuilder,
|
|
383
|
+
PatternStore,
|
|
384
|
+
Pattern,
|
|
385
|
+
PerformanceMetric,
|
|
386
|
+
} from './types.js';
|