@claude-flow/hooks 3.0.0-alpha.1
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/README.md +440 -0
- package/bin/hooks-daemon.js +199 -0
- package/bin/statusline.js +77 -0
- package/dist/bridge/official-hooks-bridge.d.ts +99 -0
- package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
- package/dist/bridge/official-hooks-bridge.js +280 -0
- package/dist/bridge/official-hooks-bridge.js.map +1 -0
- package/dist/cli/guidance-cli.d.ts +17 -0
- package/dist/cli/guidance-cli.d.ts.map +1 -0
- package/dist/cli/guidance-cli.js +486 -0
- package/dist/cli/guidance-cli.js.map +1 -0
- package/dist/daemons/index.d.ts +204 -0
- package/dist/daemons/index.d.ts.map +1 -0
- package/dist/daemons/index.js +443 -0
- package/dist/daemons/index.js.map +1 -0
- package/dist/executor/index.d.ts +80 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +273 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +11 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-hooks.d.ts +93 -0
- package/dist/llm/llm-hooks.d.ts.map +1 -0
- package/dist/llm/llm-hooks.js +382 -0
- package/dist/llm/llm-hooks.js.map +1 -0
- package/dist/mcp/index.d.ts +61 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +501 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/reasoningbank/guidance-provider.d.ts +78 -0
- package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
- package/dist/reasoningbank/guidance-provider.js +350 -0
- package/dist/reasoningbank/guidance-provider.js.map +1 -0
- package/dist/reasoningbank/index.d.ts +212 -0
- package/dist/reasoningbank/index.d.ts.map +1 -0
- package/dist/reasoningbank/index.js +785 -0
- package/dist/reasoningbank/index.js.map +1 -0
- package/dist/registry/index.d.ts +85 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +212 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/statusline/index.d.ts +128 -0
- package/dist/statusline/index.d.ts.map +1 -0
- package/dist/statusline/index.js +493 -0
- package/dist/statusline/index.js.map +1 -0
- package/dist/swarm/index.d.ts +271 -0
- package/dist/swarm/index.d.ts.map +1 -0
- package/dist/swarm/index.js +638 -0
- package/dist/swarm/index.js.map +1 -0
- package/dist/types.d.ts +525 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/dist/workers/index.d.ts +232 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +1521 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/mcp-tools.d.ts +37 -0
- package/dist/workers/mcp-tools.d.ts.map +1 -0
- package/dist/workers/mcp-tools.js +414 -0
- package/dist/workers/mcp-tools.js.map +1 -0
- package/dist/workers/session-hook.d.ts +42 -0
- package/dist/workers/session-hook.d.ts.map +1 -0
- package/dist/workers/session-hook.js +172 -0
- package/dist/workers/session-hook.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Guidance Provider
|
|
3
|
+
*
|
|
4
|
+
* Generates Claude-visible guidance output from ReasoningBank patterns.
|
|
5
|
+
* Outputs plain text (exit 0) or JSON with additionalContext.
|
|
6
|
+
*
|
|
7
|
+
* @module @claude-flow/hooks/reasoningbank/guidance-provider
|
|
8
|
+
*/
|
|
9
|
+
import { ReasoningBank } from './index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Security patterns to block
|
|
12
|
+
*/
|
|
13
|
+
const BLOCKED_PATTERNS = ['.env', '.pem', '.key', 'credentials', 'secret', 'password'];
|
|
14
|
+
const WARNED_PATTERNS = ['prod', 'production', 'live', 'deploy'];
|
|
15
|
+
/**
|
|
16
|
+
* Dangerous commands to block
|
|
17
|
+
*/
|
|
18
|
+
const DANGEROUS_COMMANDS = [
|
|
19
|
+
'rm -rf',
|
|
20
|
+
'drop database',
|
|
21
|
+
'truncate',
|
|
22
|
+
'push.*--force|--force.*push',
|
|
23
|
+
'reset --hard',
|
|
24
|
+
'format c:',
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Risky commands to warn about
|
|
28
|
+
*/
|
|
29
|
+
const RISKY_COMMANDS = ['npm publish', 'git push', 'deploy', 'kubectl apply'];
|
|
30
|
+
/**
|
|
31
|
+
* Guidance Provider class
|
|
32
|
+
*
|
|
33
|
+
* Converts ReasoningBank patterns into Claude-visible guidance.
|
|
34
|
+
*/
|
|
35
|
+
export class GuidanceProvider {
|
|
36
|
+
reasoningBank;
|
|
37
|
+
constructor(reasoningBank) {
|
|
38
|
+
this.reasoningBank = reasoningBank || new ReasoningBank();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Initialize the provider
|
|
42
|
+
*/
|
|
43
|
+
async initialize() {
|
|
44
|
+
await this.reasoningBank.initialize();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate session start context
|
|
48
|
+
* Returns plain text that Claude will see
|
|
49
|
+
*/
|
|
50
|
+
async generateSessionContext() {
|
|
51
|
+
const stats = this.reasoningBank.getStats();
|
|
52
|
+
const lines = [
|
|
53
|
+
'## V3 Development Context',
|
|
54
|
+
'',
|
|
55
|
+
'**Architecture**: Domain-Driven Design with 15 @claude-flow modules',
|
|
56
|
+
'**Priority**: Security-first (CVE-1, CVE-2, CVE-3 remediation)',
|
|
57
|
+
'',
|
|
58
|
+
'**Performance Targets**:',
|
|
59
|
+
'- HNSW search: 150x-12,500x faster (<1ms)',
|
|
60
|
+
'- Flash Attention: 2.49x-7.47x speedup',
|
|
61
|
+
'- Memory: 50-75% reduction',
|
|
62
|
+
'',
|
|
63
|
+
'**Active Patterns**:',
|
|
64
|
+
'- Use TDD London School (mock-first)',
|
|
65
|
+
'- Event sourcing for state changes',
|
|
66
|
+
'- agentic-flow@alpha as core foundation',
|
|
67
|
+
'- Bounded contexts with clear interfaces',
|
|
68
|
+
'',
|
|
69
|
+
'**Code Quality Rules**:',
|
|
70
|
+
'- Files under 500 lines',
|
|
71
|
+
'- No hardcoded secrets',
|
|
72
|
+
'- Input validation at boundaries',
|
|
73
|
+
'- Typed interfaces for all public APIs',
|
|
74
|
+
'',
|
|
75
|
+
`**Learned Patterns**: ${stats.shortTermCount + stats.longTermCount} available`,
|
|
76
|
+
`**Avg Search Time**: ${stats.avgSearchTime.toFixed(2)}ms`,
|
|
77
|
+
];
|
|
78
|
+
return lines.join('\n');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Generate user prompt context
|
|
82
|
+
* Returns plain text guidance based on prompt analysis
|
|
83
|
+
*/
|
|
84
|
+
async generatePromptContext(prompt) {
|
|
85
|
+
const guidance = await this.reasoningBank.generateGuidance({
|
|
86
|
+
event: 'pre-route',
|
|
87
|
+
timestamp: new Date(),
|
|
88
|
+
routing: { task: prompt },
|
|
89
|
+
});
|
|
90
|
+
const lines = [];
|
|
91
|
+
// Add domain-specific guidance
|
|
92
|
+
if (guidance.recommendations.length > 0) {
|
|
93
|
+
const domains = this.detectDomains(prompt);
|
|
94
|
+
for (const domain of domains) {
|
|
95
|
+
lines.push(`**${this.capitalize(domain)} Guidance**:`);
|
|
96
|
+
for (const rec of guidance.recommendations.slice(0, 5)) {
|
|
97
|
+
lines.push(`- ${rec}`);
|
|
98
|
+
}
|
|
99
|
+
lines.push('');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Add relevant patterns
|
|
103
|
+
if (guidance.patterns.length > 0) {
|
|
104
|
+
lines.push('**Relevant Learned Patterns**:');
|
|
105
|
+
for (const { pattern, similarity } of guidance.patterns.slice(0, 3)) {
|
|
106
|
+
lines.push(`- ${pattern.strategy} (${(similarity * 100).toFixed(0)}% match)`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return lines.join('\n');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Generate pre-edit guidance
|
|
113
|
+
* Returns JSON for Claude hook system
|
|
114
|
+
*/
|
|
115
|
+
async generatePreEditGuidance(filePath) {
|
|
116
|
+
// Security checks - block sensitive files
|
|
117
|
+
for (const pattern of BLOCKED_PATTERNS) {
|
|
118
|
+
if (filePath.toLowerCase().includes(pattern)) {
|
|
119
|
+
return {
|
|
120
|
+
hookSpecificOutput: {
|
|
121
|
+
hookEventName: 'PreToolUse',
|
|
122
|
+
permissionDecision: 'deny',
|
|
123
|
+
permissionDecisionReason: `Security: Cannot edit ${pattern} files directly. Use environment variables instead.`,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Warn about production files
|
|
129
|
+
for (const pattern of WARNED_PATTERNS) {
|
|
130
|
+
if (filePath.toLowerCase().includes(pattern)) {
|
|
131
|
+
return {
|
|
132
|
+
hookSpecificOutput: {
|
|
133
|
+
hookEventName: 'PreToolUse',
|
|
134
|
+
permissionDecision: 'ask',
|
|
135
|
+
permissionDecisionReason: `This appears to be a ${pattern} file. Confirm this edit is intentional.`,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Generate file-specific guidance from patterns
|
|
141
|
+
const guidance = await this.reasoningBank.generateGuidance({
|
|
142
|
+
event: 'pre-edit',
|
|
143
|
+
timestamp: new Date(),
|
|
144
|
+
file: { path: filePath, operation: 'modify' },
|
|
145
|
+
});
|
|
146
|
+
let contextGuidance = '';
|
|
147
|
+
// File type specific guidance
|
|
148
|
+
if (/test|spec/i.test(filePath)) {
|
|
149
|
+
contextGuidance = 'Testing file: Use TDD London School patterns. Mock dependencies, test behavior not implementation.';
|
|
150
|
+
}
|
|
151
|
+
else if (/security|auth/i.test(filePath)) {
|
|
152
|
+
contextGuidance = 'Security module: Validate inputs, use parameterized queries, no hardcoded secrets.';
|
|
153
|
+
}
|
|
154
|
+
else if (/memory|cache/i.test(filePath)) {
|
|
155
|
+
contextGuidance = 'Memory module: Consider HNSW indexing, batch operations, proper cleanup.';
|
|
156
|
+
}
|
|
157
|
+
else if (/swarm|coordinator/i.test(filePath)) {
|
|
158
|
+
contextGuidance = 'Swarm module: Use event-driven communication, handle failures gracefully.';
|
|
159
|
+
}
|
|
160
|
+
else if (/\.ts$/.test(filePath)) {
|
|
161
|
+
contextGuidance = 'TypeScript: Use strict types, avoid any, export interfaces for public APIs.';
|
|
162
|
+
}
|
|
163
|
+
// Add pattern-based guidance
|
|
164
|
+
if (guidance.patterns.length > 0) {
|
|
165
|
+
const patternHints = guidance.patterns
|
|
166
|
+
.slice(0, 2)
|
|
167
|
+
.map(p => p.pattern.strategy)
|
|
168
|
+
.join('; ');
|
|
169
|
+
contextGuidance += ` Similar patterns: ${patternHints}`;
|
|
170
|
+
}
|
|
171
|
+
if (contextGuidance) {
|
|
172
|
+
return {
|
|
173
|
+
hookSpecificOutput: {
|
|
174
|
+
hookEventName: 'PreToolUse',
|
|
175
|
+
permissionDecision: 'allow',
|
|
176
|
+
additionalContext: contextGuidance,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { decision: 'allow' };
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate post-edit feedback
|
|
184
|
+
* Returns JSON with quality feedback
|
|
185
|
+
*/
|
|
186
|
+
async generatePostEditFeedback(filePath, fileContent) {
|
|
187
|
+
const issues = [];
|
|
188
|
+
if (fileContent) {
|
|
189
|
+
// Check for console.log in non-test files
|
|
190
|
+
if (!/test|spec/i.test(filePath) && fileContent.includes('console.log')) {
|
|
191
|
+
issues.push('Remove console.log statements (use proper logging)');
|
|
192
|
+
}
|
|
193
|
+
// Check for TODO/FIXME
|
|
194
|
+
if (/TODO|FIXME|HACK/i.test(fileContent)) {
|
|
195
|
+
issues.push('Address TODO/FIXME comments before committing');
|
|
196
|
+
}
|
|
197
|
+
// Check for any type in TypeScript
|
|
198
|
+
if (/\.ts$/.test(filePath) && /:\s*any\b/.test(fileContent)) {
|
|
199
|
+
issues.push("Replace 'any' types with specific types");
|
|
200
|
+
}
|
|
201
|
+
// Check file size
|
|
202
|
+
const lines = fileContent.split('\n').length;
|
|
203
|
+
if (lines > 500) {
|
|
204
|
+
issues.push(`File exceeds 500 lines (${lines}). Consider splitting.`);
|
|
205
|
+
}
|
|
206
|
+
// Check for hardcoded secrets
|
|
207
|
+
if (/password\s*=\s*['"][^'"]+['"]|api[_-]?key\s*=\s*['"][^'"]+['"]/i.test(fileContent)) {
|
|
208
|
+
issues.push('Possible hardcoded secret detected. Use environment variables.');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Store the edit as a pattern
|
|
212
|
+
await this.reasoningBank.storePattern(`Edit: ${filePath}`, 'code', {
|
|
213
|
+
operation: 'modify',
|
|
214
|
+
issues: issues.length,
|
|
215
|
+
});
|
|
216
|
+
if (issues.length > 0) {
|
|
217
|
+
return {
|
|
218
|
+
decision: 'allow',
|
|
219
|
+
reason: `Edit completed. Review suggestions:\n- ${issues.join('\n- ')}`,
|
|
220
|
+
hookSpecificOutput: {
|
|
221
|
+
hookEventName: 'PostToolUse',
|
|
222
|
+
additionalContext: `Quality check found items to address:\n- ${issues.join('\n- ')}`,
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return { decision: 'allow' };
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Generate pre-command guidance
|
|
230
|
+
* Returns JSON with risk assessment
|
|
231
|
+
*/
|
|
232
|
+
async generatePreCommandGuidance(command) {
|
|
233
|
+
// Block dangerous commands
|
|
234
|
+
for (const pattern of DANGEROUS_COMMANDS) {
|
|
235
|
+
if (new RegExp(pattern, 'i').test(command)) {
|
|
236
|
+
return {
|
|
237
|
+
hookSpecificOutput: {
|
|
238
|
+
hookEventName: 'PreToolUse',
|
|
239
|
+
permissionDecision: 'deny',
|
|
240
|
+
permissionDecisionReason: `Destructive command blocked: ${pattern}. Use safer alternatives.`,
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Warn about risky commands
|
|
246
|
+
for (const pattern of RISKY_COMMANDS) {
|
|
247
|
+
if (command.toLowerCase().includes(pattern)) {
|
|
248
|
+
return {
|
|
249
|
+
hookSpecificOutput: {
|
|
250
|
+
hookEventName: 'PreToolUse',
|
|
251
|
+
permissionDecision: 'ask',
|
|
252
|
+
permissionDecisionReason: `This command has external effects (${pattern}). Confirm before proceeding.`,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Guide test commands
|
|
258
|
+
if (/npm test|vitest|jest|pnpm test/i.test(command)) {
|
|
259
|
+
return {
|
|
260
|
+
hookSpecificOutput: {
|
|
261
|
+
hookEventName: 'PreToolUse',
|
|
262
|
+
permissionDecision: 'allow',
|
|
263
|
+
additionalContext: 'Running tests. If failures occur, fix them before proceeding.',
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
// Guide build commands
|
|
268
|
+
if (/npm run build|tsc|pnpm build/i.test(command)) {
|
|
269
|
+
return {
|
|
270
|
+
hookSpecificOutput: {
|
|
271
|
+
hookEventName: 'PreToolUse',
|
|
272
|
+
permissionDecision: 'allow',
|
|
273
|
+
additionalContext: 'Building project. Watch for type errors. All must pass before commit.',
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
return { decision: 'allow' };
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Generate task routing guidance
|
|
281
|
+
* Returns plain text with agent recommendation
|
|
282
|
+
*/
|
|
283
|
+
async generateRoutingGuidance(task) {
|
|
284
|
+
const routing = await this.reasoningBank.routeTask(task);
|
|
285
|
+
const lines = [
|
|
286
|
+
`**Recommended Agent**: ${routing.agent}`,
|
|
287
|
+
`**Confidence**: ${routing.confidence}%`,
|
|
288
|
+
`**Reasoning**: ${routing.reasoning}`,
|
|
289
|
+
'',
|
|
290
|
+
];
|
|
291
|
+
if (routing.alternatives.length > 0) {
|
|
292
|
+
lines.push('**Alternatives**:');
|
|
293
|
+
for (const alt of routing.alternatives) {
|
|
294
|
+
lines.push(`- ${alt.agent} (${alt.confidence}%)`);
|
|
295
|
+
}
|
|
296
|
+
lines.push('');
|
|
297
|
+
}
|
|
298
|
+
if (routing.historicalPerformance) {
|
|
299
|
+
lines.push('**Historical Performance**:');
|
|
300
|
+
lines.push(`- Success rate: ${(routing.historicalPerformance.successRate * 100).toFixed(0)}%`);
|
|
301
|
+
lines.push(`- Avg quality: ${(routing.historicalPerformance.avgQuality * 100).toFixed(0)}%`);
|
|
302
|
+
lines.push(`- Similar tasks: ${routing.historicalPerformance.taskCount}`);
|
|
303
|
+
}
|
|
304
|
+
lines.push('');
|
|
305
|
+
lines.push(`Use Task tool with subagent_type="${routing.agent}" for optimal results.`);
|
|
306
|
+
return lines.join('\n');
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Generate stop check
|
|
310
|
+
* Returns exit code 2 + stderr if work incomplete
|
|
311
|
+
*/
|
|
312
|
+
async generateStopCheck() {
|
|
313
|
+
const stats = this.reasoningBank.getStats();
|
|
314
|
+
// Check if there are uncommitted patterns
|
|
315
|
+
if (stats.shortTermCount > 10) {
|
|
316
|
+
return {
|
|
317
|
+
shouldStop: false,
|
|
318
|
+
reason: `${stats.shortTermCount} patterns not yet consolidated. Run consolidation before stopping.`,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
return { shouldStop: true };
|
|
322
|
+
}
|
|
323
|
+
// ===== Helper Methods =====
|
|
324
|
+
detectDomains(text) {
|
|
325
|
+
const domains = [];
|
|
326
|
+
const lowerText = text.toLowerCase();
|
|
327
|
+
if (/security|auth|password|token|secret|cve|vuln/i.test(lowerText)) {
|
|
328
|
+
domains.push('security');
|
|
329
|
+
}
|
|
330
|
+
if (/test|spec|mock|coverage|tdd|assert/i.test(lowerText)) {
|
|
331
|
+
domains.push('testing');
|
|
332
|
+
}
|
|
333
|
+
if (/perf|optim|fast|slow|memory|cache|speed/i.test(lowerText)) {
|
|
334
|
+
domains.push('performance');
|
|
335
|
+
}
|
|
336
|
+
if (/architect|design|ddd|domain|refactor|struct/i.test(lowerText)) {
|
|
337
|
+
domains.push('architecture');
|
|
338
|
+
}
|
|
339
|
+
if (/fix|bug|error|issue|broken|fail|debug/i.test(lowerText)) {
|
|
340
|
+
domains.push('debugging');
|
|
341
|
+
}
|
|
342
|
+
return domains;
|
|
343
|
+
}
|
|
344
|
+
capitalize(s) {
|
|
345
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Export singleton
|
|
349
|
+
export const guidanceProvider = new GuidanceProvider();
|
|
350
|
+
//# sourceMappingURL=guidance-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidance-provider.js","sourceRoot":"","sources":["../../src/reasoningbank/guidance-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 ReasoningBank - Pattern Learning with AgentDB
|
|
3
|
+
*
|
|
4
|
+
* Connects hooks to persistent vector storage using AgentDB adapter.
|
|
5
|
+
* No JSON - all patterns stored as vectors in memory.db
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Real HNSW indexing (M=16, efConstruction=200) for 150x+ faster search
|
|
9
|
+
* - ONNX embeddings via @claude-flow/embeddings (MiniLM-L6 384-dim)
|
|
10
|
+
* - AgentDB backend for persistence
|
|
11
|
+
* - Pattern promotion from short-term to long-term memory
|
|
12
|
+
*
|
|
13
|
+
* @module @claude-flow/hooks/reasoningbank
|
|
14
|
+
*/
|
|
15
|
+
import { EventEmitter } from 'node:events';
|
|
16
|
+
import type { HookContext } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Pattern stored in AgentDB
|
|
19
|
+
*/
|
|
20
|
+
export interface GuidancePattern {
|
|
21
|
+
id: string;
|
|
22
|
+
strategy: string;
|
|
23
|
+
domain: string;
|
|
24
|
+
embedding: Float32Array;
|
|
25
|
+
quality: number;
|
|
26
|
+
usageCount: number;
|
|
27
|
+
successCount: number;
|
|
28
|
+
createdAt: number;
|
|
29
|
+
updatedAt: number;
|
|
30
|
+
metadata: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Guidance result from pattern search
|
|
34
|
+
*/
|
|
35
|
+
export interface GuidanceResult {
|
|
36
|
+
patterns: Array<{
|
|
37
|
+
pattern: GuidancePattern;
|
|
38
|
+
similarity: number;
|
|
39
|
+
}>;
|
|
40
|
+
context: string;
|
|
41
|
+
recommendations: string[];
|
|
42
|
+
agentSuggestion?: {
|
|
43
|
+
agent: string;
|
|
44
|
+
confidence: number;
|
|
45
|
+
reasoning: string;
|
|
46
|
+
};
|
|
47
|
+
searchTimeMs: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Agent routing result
|
|
51
|
+
*/
|
|
52
|
+
export interface RoutingResult {
|
|
53
|
+
agent: string;
|
|
54
|
+
confidence: number;
|
|
55
|
+
alternatives: Array<{
|
|
56
|
+
agent: string;
|
|
57
|
+
confidence: number;
|
|
58
|
+
}>;
|
|
59
|
+
reasoning: string;
|
|
60
|
+
historicalPerformance?: {
|
|
61
|
+
successRate: number;
|
|
62
|
+
avgQuality: number;
|
|
63
|
+
taskCount: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* ReasoningBank configuration
|
|
68
|
+
*/
|
|
69
|
+
export interface ReasoningBankConfig {
|
|
70
|
+
/** Vector dimensions (384 for MiniLM, 1536 for OpenAI) */
|
|
71
|
+
dimensions: number;
|
|
72
|
+
/** HNSW M parameter */
|
|
73
|
+
hnswM: number;
|
|
74
|
+
/** HNSW ef construction */
|
|
75
|
+
hnswEfConstruction: number;
|
|
76
|
+
/** HNSW ef search */
|
|
77
|
+
hnswEfSearch: number;
|
|
78
|
+
/** Maximum patterns in short-term memory */
|
|
79
|
+
maxShortTerm: number;
|
|
80
|
+
/** Maximum patterns in long-term memory */
|
|
81
|
+
maxLongTerm: number;
|
|
82
|
+
/** Promotion threshold (usage count) */
|
|
83
|
+
promotionThreshold: number;
|
|
84
|
+
/** Quality threshold for promotion */
|
|
85
|
+
qualityThreshold: number;
|
|
86
|
+
/** Deduplication similarity threshold */
|
|
87
|
+
dedupThreshold: number;
|
|
88
|
+
/** Database path */
|
|
89
|
+
dbPath: string;
|
|
90
|
+
/** Use mock embeddings (for testing) */
|
|
91
|
+
useMockEmbeddings?: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* ReasoningBank metrics
|
|
95
|
+
*/
|
|
96
|
+
export interface ReasoningBankMetrics {
|
|
97
|
+
patternsStored: number;
|
|
98
|
+
patternsRetrieved: number;
|
|
99
|
+
searchCount: number;
|
|
100
|
+
totalSearchTime: number;
|
|
101
|
+
promotions: number;
|
|
102
|
+
hnswSearchTime: number;
|
|
103
|
+
bruteForceSearchTime: number;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* ReasoningBank - Vector-based pattern storage and retrieval
|
|
107
|
+
*
|
|
108
|
+
* Uses AgentDB adapter for HNSW-indexed pattern storage.
|
|
109
|
+
* Provides guidance generation from learned patterns.
|
|
110
|
+
*/
|
|
111
|
+
export declare class ReasoningBank extends EventEmitter {
|
|
112
|
+
private config;
|
|
113
|
+
private agentDB;
|
|
114
|
+
private hnswIndex;
|
|
115
|
+
private embeddingService;
|
|
116
|
+
private initialized;
|
|
117
|
+
private useRealBackend;
|
|
118
|
+
private shortTermPatterns;
|
|
119
|
+
private longTermPatterns;
|
|
120
|
+
private metrics;
|
|
121
|
+
constructor(config?: Partial<ReasoningBankConfig>);
|
|
122
|
+
/**
|
|
123
|
+
* Initialize ReasoningBank with AgentDB backend and real HNSW
|
|
124
|
+
*/
|
|
125
|
+
initialize(): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Load optional dependencies
|
|
128
|
+
*/
|
|
129
|
+
private loadDependencies;
|
|
130
|
+
/**
|
|
131
|
+
* Store a new pattern from hook execution
|
|
132
|
+
*/
|
|
133
|
+
storePattern(strategy: string, domain: string, metadata?: Record<string, unknown>): Promise<{
|
|
134
|
+
id: string;
|
|
135
|
+
action: 'created' | 'updated';
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* Search for similar patterns using HNSW (if available) or brute-force
|
|
139
|
+
*/
|
|
140
|
+
searchPatterns(query: string | Float32Array, k?: number): Promise<Array<{
|
|
141
|
+
pattern: GuidancePattern;
|
|
142
|
+
similarity: number;
|
|
143
|
+
}>>;
|
|
144
|
+
/**
|
|
145
|
+
* Brute-force search (fallback)
|
|
146
|
+
*/
|
|
147
|
+
private bruteForceSearch;
|
|
148
|
+
/**
|
|
149
|
+
* Generate guidance for a given context
|
|
150
|
+
*/
|
|
151
|
+
generateGuidance(context: HookContext): Promise<GuidanceResult>;
|
|
152
|
+
/**
|
|
153
|
+
* Route task to optimal agent based on learned patterns
|
|
154
|
+
*/
|
|
155
|
+
routeTask(task: string): Promise<RoutingResult>;
|
|
156
|
+
/**
|
|
157
|
+
* Record pattern usage outcome
|
|
158
|
+
*/
|
|
159
|
+
recordOutcome(patternId: string, success: boolean): Promise<void>;
|
|
160
|
+
/**
|
|
161
|
+
* Consolidate patterns (dedup, prune, promote)
|
|
162
|
+
* Called by HooksLearningDaemon
|
|
163
|
+
*/
|
|
164
|
+
consolidate(): Promise<{
|
|
165
|
+
duplicatesRemoved: number;
|
|
166
|
+
patternsPruned: number;
|
|
167
|
+
patternsPromoted: number;
|
|
168
|
+
}>;
|
|
169
|
+
/**
|
|
170
|
+
* Get statistics
|
|
171
|
+
*/
|
|
172
|
+
getStats(): {
|
|
173
|
+
shortTermCount: number;
|
|
174
|
+
longTermCount: number;
|
|
175
|
+
metrics: ReasoningBankMetrics;
|
|
176
|
+
avgSearchTime: number;
|
|
177
|
+
useRealBackend: boolean;
|
|
178
|
+
hnswSpeedup: number;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Export patterns for backup/transfer
|
|
182
|
+
*/
|
|
183
|
+
exportPatterns(): Promise<{
|
|
184
|
+
shortTerm: GuidancePattern[];
|
|
185
|
+
longTerm: GuidancePattern[];
|
|
186
|
+
}>;
|
|
187
|
+
/**
|
|
188
|
+
* Import patterns from backup
|
|
189
|
+
*/
|
|
190
|
+
importPatterns(data: {
|
|
191
|
+
shortTerm: GuidancePattern[];
|
|
192
|
+
longTerm: GuidancePattern[];
|
|
193
|
+
}): Promise<{
|
|
194
|
+
imported: number;
|
|
195
|
+
}>;
|
|
196
|
+
private ensureInitialized;
|
|
197
|
+
private loadPatterns;
|
|
198
|
+
private storeInAgentDB;
|
|
199
|
+
private updateInStorage;
|
|
200
|
+
private deleteFromStorage;
|
|
201
|
+
private entryToPattern;
|
|
202
|
+
private buildQueryFromContext;
|
|
203
|
+
private detectDomains;
|
|
204
|
+
private suggestAgent;
|
|
205
|
+
private calculateQuality;
|
|
206
|
+
private shouldPromote;
|
|
207
|
+
private checkPromotion;
|
|
208
|
+
private promotePattern;
|
|
209
|
+
private cosineSimilarity;
|
|
210
|
+
}
|
|
211
|
+
export declare const reasoningBank: ReasoningBank;
|
|
212
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/index.ts"],"names":[],"mappings":"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"}
|