@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.
Files changed (72) hide show
  1. package/README.md +440 -0
  2. package/bin/hooks-daemon.js +199 -0
  3. package/bin/statusline.js +77 -0
  4. package/dist/bridge/official-hooks-bridge.d.ts +99 -0
  5. package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
  6. package/dist/bridge/official-hooks-bridge.js +280 -0
  7. package/dist/bridge/official-hooks-bridge.js.map +1 -0
  8. package/dist/cli/guidance-cli.d.ts +17 -0
  9. package/dist/cli/guidance-cli.d.ts.map +1 -0
  10. package/dist/cli/guidance-cli.js +486 -0
  11. package/dist/cli/guidance-cli.js.map +1 -0
  12. package/dist/daemons/index.d.ts +204 -0
  13. package/dist/daemons/index.d.ts.map +1 -0
  14. package/dist/daemons/index.js +443 -0
  15. package/dist/daemons/index.js.map +1 -0
  16. package/dist/executor/index.d.ts +80 -0
  17. package/dist/executor/index.d.ts.map +1 -0
  18. package/dist/executor/index.js +273 -0
  19. package/dist/executor/index.js.map +1 -0
  20. package/dist/index.d.ts +51 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +85 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/llm/index.d.ts +11 -0
  25. package/dist/llm/index.d.ts.map +1 -0
  26. package/dist/llm/index.js +11 -0
  27. package/dist/llm/index.js.map +1 -0
  28. package/dist/llm/llm-hooks.d.ts +93 -0
  29. package/dist/llm/llm-hooks.d.ts.map +1 -0
  30. package/dist/llm/llm-hooks.js +382 -0
  31. package/dist/llm/llm-hooks.js.map +1 -0
  32. package/dist/mcp/index.d.ts +61 -0
  33. package/dist/mcp/index.d.ts.map +1 -0
  34. package/dist/mcp/index.js +501 -0
  35. package/dist/mcp/index.js.map +1 -0
  36. package/dist/reasoningbank/guidance-provider.d.ts +78 -0
  37. package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
  38. package/dist/reasoningbank/guidance-provider.js +350 -0
  39. package/dist/reasoningbank/guidance-provider.js.map +1 -0
  40. package/dist/reasoningbank/index.d.ts +212 -0
  41. package/dist/reasoningbank/index.d.ts.map +1 -0
  42. package/dist/reasoningbank/index.js +785 -0
  43. package/dist/reasoningbank/index.js.map +1 -0
  44. package/dist/registry/index.d.ts +85 -0
  45. package/dist/registry/index.d.ts.map +1 -0
  46. package/dist/registry/index.js +212 -0
  47. package/dist/registry/index.js.map +1 -0
  48. package/dist/statusline/index.d.ts +128 -0
  49. package/dist/statusline/index.d.ts.map +1 -0
  50. package/dist/statusline/index.js +493 -0
  51. package/dist/statusline/index.js.map +1 -0
  52. package/dist/swarm/index.d.ts +271 -0
  53. package/dist/swarm/index.d.ts.map +1 -0
  54. package/dist/swarm/index.js +638 -0
  55. package/dist/swarm/index.js.map +1 -0
  56. package/dist/types.d.ts +525 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +56 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/workers/index.d.ts +232 -0
  61. package/dist/workers/index.d.ts.map +1 -0
  62. package/dist/workers/index.js +1521 -0
  63. package/dist/workers/index.js.map +1 -0
  64. package/dist/workers/mcp-tools.d.ts +37 -0
  65. package/dist/workers/mcp-tools.d.ts.map +1 -0
  66. package/dist/workers/mcp-tools.js +414 -0
  67. package/dist/workers/mcp-tools.js.map +1 -0
  68. package/dist/workers/session-hook.d.ts +42 -0
  69. package/dist/workers/session-hook.d.ts.map +1 -0
  70. package/dist/workers/session-hook.js +172 -0
  71. package/dist/workers/session-hook.js.map +1 -0
  72. 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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"}