@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,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"}
|