@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,382 @@
1
+ /**
2
+ * V3 LLM Hooks System
3
+ *
4
+ * Provides pre/post operation hooks for all LLM calls with:
5
+ * - Request caching with memory persistence
6
+ * - Provider-specific optimizations
7
+ * - Cost tracking and optimization
8
+ * - Performance metrics
9
+ * - Pattern learning
10
+ *
11
+ * @module @claude-flow/hooks/llm/llm-hooks
12
+ */
13
+ import { reasoningBank } from '../reasoningbank/index.js';
14
+ const responseCache = new Map();
15
+ const DEFAULT_CACHE_TTL = 3600000; // 1 hour
16
+ const MAX_CACHE_SIZE = 1000;
17
+ function generateCacheKey(provider, model, request) {
18
+ const normalized = {
19
+ provider,
20
+ model,
21
+ messages: request.messages,
22
+ temperature: request.temperature,
23
+ maxTokens: request.maxTokens,
24
+ };
25
+ return Buffer.from(JSON.stringify(normalized)).toString('base64').slice(0, 64);
26
+ }
27
+ function getCached(key) {
28
+ const entry = responseCache.get(key);
29
+ if (!entry)
30
+ return undefined;
31
+ if (Date.now() - entry.timestamp > DEFAULT_CACHE_TTL) {
32
+ responseCache.delete(key);
33
+ return undefined;
34
+ }
35
+ entry.hits++;
36
+ return entry;
37
+ }
38
+ function setCache(key, response) {
39
+ // Enforce max size
40
+ if (responseCache.size >= MAX_CACHE_SIZE) {
41
+ const oldest = Array.from(responseCache.entries())
42
+ .sort((a, b) => a[1].timestamp - b[1].timestamp)[0];
43
+ if (oldest)
44
+ responseCache.delete(oldest[0]);
45
+ }
46
+ responseCache.set(key, {
47
+ response,
48
+ timestamp: Date.now(),
49
+ hits: 0,
50
+ key,
51
+ });
52
+ }
53
+ const providerOptimizations = {
54
+ anthropic: {
55
+ preferredTemperature: 0.7,
56
+ systemPromptOptimizations: [
57
+ 'Be concise and direct',
58
+ 'Use structured output when appropriate',
59
+ ],
60
+ costReductionStrategies: [
61
+ 'Use claude-3-haiku for simple tasks',
62
+ 'Batch similar requests',
63
+ ],
64
+ },
65
+ openai: {
66
+ preferredTemperature: 0.8,
67
+ systemPromptOptimizations: [
68
+ 'Respond in a structured format',
69
+ ],
70
+ costReductionStrategies: [
71
+ 'Use gpt-4o-mini for simple tasks',
72
+ 'Enable response caching',
73
+ ],
74
+ },
75
+ google: {
76
+ preferredTemperature: 0.7,
77
+ costReductionStrategies: [
78
+ 'Use gemini-1.5-flash for simple tasks',
79
+ ],
80
+ },
81
+ ollama: {
82
+ preferredTemperature: 0.7,
83
+ costReductionStrategies: [
84
+ 'Free - no cost optimization needed',
85
+ ],
86
+ },
87
+ };
88
+ function loadProviderOptimizations(provider) {
89
+ return providerOptimizations[provider] || {};
90
+ }
91
+ function applyRequestOptimizations(request, optimizations) {
92
+ const optimized = { ...request };
93
+ // Apply temperature if not set
94
+ if (optimized.temperature === undefined && optimizations.preferredTemperature) {
95
+ optimized.temperature = optimizations.preferredTemperature;
96
+ }
97
+ return optimized;
98
+ }
99
+ // ===== PRE-LLM HOOK =====
100
+ export async function preLLMCallHook(payload, context) {
101
+ const { provider, model, request } = payload;
102
+ const sideEffects = [];
103
+ // Check cache
104
+ const cacheKey = generateCacheKey(provider, model, request);
105
+ const cached = getCached(cacheKey);
106
+ if (cached) {
107
+ sideEffects.push({
108
+ type: 'metric',
109
+ action: 'increment',
110
+ data: { name: 'llm.cache.hits', provider, model },
111
+ });
112
+ return {
113
+ continue: false, // Skip LLM call
114
+ modified: true,
115
+ cachedResponse: cached.response,
116
+ payload: {
117
+ ...payload,
118
+ metrics: {
119
+ ...payload.metrics,
120
+ requestStart: Date.now(),
121
+ cacheHit: true,
122
+ },
123
+ },
124
+ sideEffects,
125
+ };
126
+ }
127
+ // Load and apply optimizations
128
+ const optimizations = loadProviderOptimizations(provider);
129
+ const optimizedRequest = applyRequestOptimizations(request, optimizations);
130
+ // Track request
131
+ sideEffects.push({
132
+ type: 'metric',
133
+ action: 'increment',
134
+ data: { name: `llm.calls.${provider}.${model}` },
135
+ }, {
136
+ type: 'memory',
137
+ action: 'store',
138
+ data: {
139
+ key: `llm:request:${context.correlationId}`,
140
+ value: {
141
+ provider,
142
+ model,
143
+ request: optimizedRequest,
144
+ timestamp: Date.now(),
145
+ },
146
+ ttl: 3600,
147
+ },
148
+ });
149
+ return {
150
+ continue: true,
151
+ modified: optimizedRequest !== request,
152
+ payload: {
153
+ ...payload,
154
+ request: optimizedRequest,
155
+ metrics: {
156
+ ...payload.metrics,
157
+ requestStart: Date.now(),
158
+ cacheHit: false,
159
+ },
160
+ },
161
+ sideEffects,
162
+ };
163
+ }
164
+ // ===== POST-LLM HOOK =====
165
+ export async function postLLMCallHook(payload, context) {
166
+ const { provider, model, request, response, metrics } = payload;
167
+ const sideEffects = [];
168
+ if (!response) {
169
+ return { continue: true, modified: false };
170
+ }
171
+ const latency = metrics?.requestStart
172
+ ? Date.now() - metrics.requestStart
173
+ : undefined;
174
+ // Cache response
175
+ const cacheKey = generateCacheKey(provider, model, request);
176
+ setCache(cacheKey, response);
177
+ // Track metrics
178
+ sideEffects.push({
179
+ type: 'metric',
180
+ action: 'record',
181
+ data: {
182
+ name: `llm.latency.${provider}`,
183
+ value: latency,
184
+ },
185
+ }, {
186
+ type: 'metric',
187
+ action: 'record',
188
+ data: {
189
+ name: `llm.tokens.${provider}`,
190
+ value: response.usage?.totalTokens,
191
+ },
192
+ });
193
+ if (response.cost) {
194
+ sideEffects.push({
195
+ type: 'metric',
196
+ action: 'record',
197
+ data: {
198
+ name: `llm.cost.${provider}`,
199
+ value: response.cost.totalCost,
200
+ },
201
+ });
202
+ }
203
+ // Learn patterns from successful responses
204
+ if (response.content && response.content.length > 100) {
205
+ const pattern = extractPatternFromResponse(request, response);
206
+ if (pattern) {
207
+ sideEffects.push({
208
+ type: 'pattern',
209
+ action: 'learn',
210
+ data: {
211
+ strategy: pattern.strategy,
212
+ domain: pattern.domain,
213
+ quality: pattern.quality,
214
+ },
215
+ });
216
+ // Store in reasoning bank
217
+ try {
218
+ await reasoningBank.storePattern(pattern.strategy, pattern.domain);
219
+ }
220
+ catch {
221
+ // Ignore storage errors
222
+ }
223
+ }
224
+ }
225
+ // Store response in memory
226
+ sideEffects.push({
227
+ type: 'memory',
228
+ action: 'store',
229
+ data: {
230
+ key: `llm:response:${context.correlationId}`,
231
+ value: {
232
+ provider,
233
+ model,
234
+ response: {
235
+ content: response.content.slice(0, 500), // Truncate
236
+ usage: response.usage,
237
+ cost: response.cost,
238
+ latency,
239
+ },
240
+ timestamp: Date.now(),
241
+ },
242
+ ttl: 86400, // 24 hours
243
+ },
244
+ });
245
+ return {
246
+ continue: true,
247
+ modified: false,
248
+ payload: {
249
+ ...payload,
250
+ metrics: {
251
+ requestStart: metrics?.requestStart ?? Date.now(),
252
+ responseEnd: Date.now(),
253
+ latency,
254
+ cacheHit: metrics?.cacheHit,
255
+ tokenEstimate: metrics?.tokenEstimate,
256
+ costEstimate: metrics?.costEstimate,
257
+ },
258
+ },
259
+ sideEffects,
260
+ };
261
+ }
262
+ // ===== ERROR HOOK =====
263
+ export async function errorLLMCallHook(payload, error, context) {
264
+ const { provider, model, metrics } = payload;
265
+ const sideEffects = [];
266
+ const latency = metrics?.requestStart
267
+ ? Date.now() - metrics.requestStart
268
+ : undefined;
269
+ // Track error metrics
270
+ sideEffects.push({
271
+ type: 'metric',
272
+ action: 'increment',
273
+ data: {
274
+ name: `llm.errors.${provider}`,
275
+ errorType: error.name,
276
+ },
277
+ }, {
278
+ type: 'log',
279
+ action: 'error',
280
+ data: {
281
+ message: `LLM call failed: ${error.message}`,
282
+ provider,
283
+ model,
284
+ latency,
285
+ errorType: error.name,
286
+ },
287
+ });
288
+ // Store error for learning
289
+ sideEffects.push({
290
+ type: 'memory',
291
+ action: 'store',
292
+ data: {
293
+ key: `llm:error:${context.correlationId}`,
294
+ value: {
295
+ provider,
296
+ model,
297
+ error: {
298
+ name: error.name,
299
+ message: error.message,
300
+ },
301
+ timestamp: Date.now(),
302
+ },
303
+ ttl: 86400,
304
+ },
305
+ });
306
+ return {
307
+ continue: true,
308
+ modified: false,
309
+ sideEffects,
310
+ };
311
+ }
312
+ function extractPatternFromResponse(request, response) {
313
+ // Simple heuristic pattern extraction
314
+ const lastUserMessage = [...request.messages]
315
+ .reverse()
316
+ .find((m) => m.role === 'user');
317
+ if (!lastUserMessage)
318
+ return null;
319
+ // Detect domain from content
320
+ const content = lastUserMessage.content.toLowerCase();
321
+ let domain = 'general';
322
+ if (content.includes('code') || content.includes('function') || content.includes('implement')) {
323
+ domain = 'code';
324
+ }
325
+ else if (content.includes('security') || content.includes('vulnerability')) {
326
+ domain = 'security';
327
+ }
328
+ else if (content.includes('test') || content.includes('spec')) {
329
+ domain = 'testing';
330
+ }
331
+ else if (content.includes('architecture') || content.includes('design')) {
332
+ domain = 'architecture';
333
+ }
334
+ else if (content.includes('performance') || content.includes('optimize')) {
335
+ domain = 'performance';
336
+ }
337
+ // Extract strategy from response
338
+ const responseContent = response.content;
339
+ const strategy = responseContent.length > 500
340
+ ? responseContent.slice(0, 500)
341
+ : responseContent;
342
+ // Quality based on response length and structure
343
+ const hasCodeBlocks = responseContent.includes('```');
344
+ const hasLists = responseContent.includes('\n- ') || responseContent.includes('\n1.');
345
+ const quality = Math.min(0.9, 0.5 + (hasCodeBlocks ? 0.2 : 0) + (hasLists ? 0.1 : 0) + (responseContent.length > 1000 ? 0.1 : 0));
346
+ return {
347
+ strategy: `[${domain}] ${strategy.slice(0, 200)}...`,
348
+ domain,
349
+ quality,
350
+ };
351
+ }
352
+ // ===== CACHE MANAGEMENT =====
353
+ export function clearLLMCache() {
354
+ responseCache.clear();
355
+ }
356
+ export function getLLMCacheStats() {
357
+ let totalHits = 0;
358
+ const entries = [];
359
+ for (const [key, entry] of responseCache) {
360
+ totalHits += entry.hits;
361
+ entries.push({
362
+ key,
363
+ hits: entry.hits,
364
+ age: Date.now() - entry.timestamp,
365
+ });
366
+ }
367
+ return {
368
+ size: responseCache.size,
369
+ totalHits,
370
+ entries: entries.slice(0, 10), // Top 10
371
+ };
372
+ }
373
+ // ===== EXPORTS =====
374
+ export const llmHooks = {
375
+ preLLMCall: preLLMCallHook,
376
+ postLLMCall: postLLMCallHook,
377
+ errorLLMCall: errorLLMCallHook,
378
+ clearCache: clearLLMCache,
379
+ getCacheStats: getLLMCacheStats,
380
+ };
381
+ export default llmHooks;
382
+ //# sourceMappingURL=llm-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-hooks.js","sourceRoot":"","sources":["../../src/llm/llm-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * V3 Hooks MCP Tools
3
+ *
4
+ * MCP tool definitions for hooks system integration.
5
+ * These tools provide programmatic access to hooks functionality.
6
+ */
7
+ /**
8
+ * MCP Tool definition interface
9
+ */
10
+ interface MCPTool {
11
+ name: string;
12
+ description: string;
13
+ inputSchema: {
14
+ type: 'object';
15
+ properties: Record<string, unknown>;
16
+ required?: string[];
17
+ };
18
+ handler: (input: Record<string, unknown>, context?: unknown) => Promise<unknown>;
19
+ }
20
+ /**
21
+ * Pre-edit hook MCP tool
22
+ */
23
+ export declare const preEditTool: MCPTool;
24
+ /**
25
+ * Post-edit hook MCP tool
26
+ */
27
+ export declare const postEditTool: MCPTool;
28
+ /**
29
+ * Route task MCP tool
30
+ */
31
+ export declare const routeTaskTool: MCPTool;
32
+ /**
33
+ * Metrics query MCP tool
34
+ */
35
+ export declare const metricsTool: MCPTool;
36
+ /**
37
+ * Pre-command hook MCP tool
38
+ */
39
+ export declare const preCommandTool: MCPTool;
40
+ /**
41
+ * Post-command hook MCP tool
42
+ */
43
+ export declare const postCommandTool: MCPTool;
44
+ /**
45
+ * Daemon status MCP tool
46
+ */
47
+ export declare const daemonStatusTool: MCPTool;
48
+ /**
49
+ * Statusline data MCP tool
50
+ */
51
+ export declare const statuslineTool: MCPTool;
52
+ /**
53
+ * All hooks MCP tools
54
+ */
55
+ export declare const hooksMCPTools: MCPTool[];
56
+ /**
57
+ * Get tool by name
58
+ */
59
+ export declare function getHooksTool(name: string): MCPTool | undefined;
60
+ export { type MCPTool };
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH;;GAEG;AACH,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OA8DzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OA6C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAsD3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OAkEzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAsC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OA6C7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OA4B9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OA0B5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,EASlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE9D;AAkID,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC"}