mcp-resend 1.0.0-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/LICENSE +190 -0
- package/README.md +257 -0
- package/data/embeddings.json +245241 -0
- package/dist/config/environment.d.ts +152 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +217 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/services/rate-limiter.d.ts +90 -0
- package/dist/services/rate-limiter.d.ts.map +1 -0
- package/dist/services/rate-limiter.js +267 -0
- package/dist/services/rate-limiter.js.map +1 -0
- package/dist/services/tool-registry.d.ts +219 -0
- package/dist/services/tool-registry.d.ts.map +1 -0
- package/dist/services/tool-registry.js +459 -0
- package/dist/services/tool-registry.js.map +1 -0
- package/dist/tools/docs/embeddings-loader.d.ts +69 -0
- package/dist/tools/docs/embeddings-loader.d.ts.map +1 -0
- package/dist/tools/docs/embeddings-loader.js +218 -0
- package/dist/tools/docs/embeddings-loader.js.map +1 -0
- package/dist/tools/docs/errors.d.ts +75 -0
- package/dist/tools/docs/errors.d.ts.map +1 -0
- package/dist/tools/docs/errors.js +145 -0
- package/dist/tools/docs/errors.js.map +1 -0
- package/dist/tools/docs/index.d.ts +11 -0
- package/dist/tools/docs/index.d.ts.map +1 -0
- package/dist/tools/docs/index.js +14 -0
- package/dist/tools/docs/index.js.map +1 -0
- package/dist/tools/docs/metrics.d.ts +94 -0
- package/dist/tools/docs/metrics.d.ts.map +1 -0
- package/dist/tools/docs/metrics.js +174 -0
- package/dist/tools/docs/metrics.js.map +1 -0
- package/dist/tools/docs/search-docs-tool.d.ts +54 -0
- package/dist/tools/docs/search-docs-tool.d.ts.map +1 -0
- package/dist/tools/docs/search-docs-tool.js +231 -0
- package/dist/tools/docs/search-docs-tool.js.map +1 -0
- package/dist/tools/docs/types.d.ts +70 -0
- package/dist/tools/docs/types.d.ts.map +1 -0
- package/dist/tools/docs/types.js +7 -0
- package/dist/tools/docs/types.js.map +1 -0
- package/dist/tools/docs/vector-search.d.ts +80 -0
- package/dist/tools/docs/vector-search.d.ts.map +1 -0
- package/dist/tools/docs/vector-search.js +297 -0
- package/dist/tools/docs/vector-search.js.map +1 -0
- package/dist/tools/index.d.ts +27 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3413 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/utils/mcp-errors.d.ts +109 -0
- package/dist/utils/mcp-errors.d.ts.map +1 -0
- package/dist/utils/mcp-errors.js +306 -0
- package/dist/utils/mcp-errors.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry for Dynamic MCP Tool Discovery
|
|
3
|
+
*
|
|
4
|
+
* Manages tool loading/unloading by tier and scope, enabling dynamic tool discovery
|
|
5
|
+
* and permission-based access control.
|
|
6
|
+
*
|
|
7
|
+
* @module services/tool-registry
|
|
8
|
+
*/
|
|
9
|
+
// NOTE: Use console.error for logging - stdout is reserved for MCP protocol
|
|
10
|
+
const log = (message) => console.error(`[tool-registry] ${message}`);
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Module-Level State
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* All registered tools, indexed by name.
|
|
16
|
+
*/
|
|
17
|
+
const registeredTools = new Map();
|
|
18
|
+
/**
|
|
19
|
+
* Currently enabled tool names.
|
|
20
|
+
*/
|
|
21
|
+
const enabledTools = new Set();
|
|
22
|
+
/**
|
|
23
|
+
* MCP Server reference for notifications.
|
|
24
|
+
*/
|
|
25
|
+
let serverInstance = null;
|
|
26
|
+
/**
|
|
27
|
+
* Tools organized by tier for efficient loading.
|
|
28
|
+
*/
|
|
29
|
+
const toolsByTier = {
|
|
30
|
+
core: [],
|
|
31
|
+
secondary: [],
|
|
32
|
+
tertiary: [],
|
|
33
|
+
};
|
|
34
|
+
// NOTE: Tool tier arrays define which tools belong to each tier
|
|
35
|
+
// These are populated by registerTool() calls during initialization
|
|
36
|
+
/**
|
|
37
|
+
* Core tools - essential functionality (always available).
|
|
38
|
+
*/
|
|
39
|
+
export const CORE_TOOLS = [
|
|
40
|
+
"send_email",
|
|
41
|
+
"get_email",
|
|
42
|
+
"list_emails",
|
|
43
|
+
"list_domains",
|
|
44
|
+
"search_resend_documentation",
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Secondary tools - commonly used features.
|
|
48
|
+
*/
|
|
49
|
+
export const SECONDARY_TOOLS = [
|
|
50
|
+
// Domain
|
|
51
|
+
"get_domain",
|
|
52
|
+
"create_domain",
|
|
53
|
+
"update_domain",
|
|
54
|
+
"verify_domain",
|
|
55
|
+
// Email
|
|
56
|
+
"update_email",
|
|
57
|
+
"cancel_email",
|
|
58
|
+
// Contact
|
|
59
|
+
"list_contacts",
|
|
60
|
+
"create_contact",
|
|
61
|
+
"get_contact",
|
|
62
|
+
"update_contact",
|
|
63
|
+
// Template
|
|
64
|
+
"list_templates",
|
|
65
|
+
"create_template",
|
|
66
|
+
"get_template",
|
|
67
|
+
"update_template",
|
|
68
|
+
"publish_template",
|
|
69
|
+
"duplicate_template",
|
|
70
|
+
// Webhook
|
|
71
|
+
"list_webhooks",
|
|
72
|
+
"create_webhook",
|
|
73
|
+
"get_webhook",
|
|
74
|
+
"update_webhook",
|
|
75
|
+
// Audience
|
|
76
|
+
"list_audiences",
|
|
77
|
+
"create_audience",
|
|
78
|
+
"get_audience",
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* Tertiary tools - advanced/admin features.
|
|
82
|
+
* NOTE: API key operations are EXCLUDED for security reasons.
|
|
83
|
+
*/
|
|
84
|
+
export const TERTIARY_TOOLS = [
|
|
85
|
+
// Destructive Operations
|
|
86
|
+
"delete_domain",
|
|
87
|
+
"delete_contact",
|
|
88
|
+
"delete_template",
|
|
89
|
+
"delete_topic",
|
|
90
|
+
"delete_webhook",
|
|
91
|
+
"delete_segment",
|
|
92
|
+
"delete_broadcast",
|
|
93
|
+
"delete_contact_property",
|
|
94
|
+
// Batch Operations
|
|
95
|
+
"send_batch_emails",
|
|
96
|
+
// Broadcast Operations
|
|
97
|
+
"list_broadcasts",
|
|
98
|
+
"create_broadcast",
|
|
99
|
+
"get_broadcast",
|
|
100
|
+
"update_broadcast",
|
|
101
|
+
"send_broadcast",
|
|
102
|
+
// Segment Operations
|
|
103
|
+
"list_segments",
|
|
104
|
+
"create_segment",
|
|
105
|
+
"get_segment",
|
|
106
|
+
"add_contact_to_segment",
|
|
107
|
+
"remove_contact_from_segment",
|
|
108
|
+
// Contact Property Operations
|
|
109
|
+
"list_contact_properties",
|
|
110
|
+
"create_contact_property",
|
|
111
|
+
"get_contact_property",
|
|
112
|
+
"update_contact_property",
|
|
113
|
+
// Inbound Email Operations
|
|
114
|
+
"list_received_emails",
|
|
115
|
+
"get_received_email",
|
|
116
|
+
"list_received_email_attachments",
|
|
117
|
+
"get_received_email_attachment",
|
|
118
|
+
// Sent Email Attachment Operations
|
|
119
|
+
"list_email_attachments",
|
|
120
|
+
"get_email_attachment",
|
|
121
|
+
// Topic Advanced Operations
|
|
122
|
+
"get_topic",
|
|
123
|
+
"update_topic",
|
|
124
|
+
"get_contact_topics",
|
|
125
|
+
"update_contact_topics",
|
|
126
|
+
// Contact Segment Operations
|
|
127
|
+
"list_contact_segments",
|
|
128
|
+
];
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Public API
|
|
131
|
+
// ============================================================================
|
|
132
|
+
/**
|
|
133
|
+
* Initialize the tool registry with an MCP server instance.
|
|
134
|
+
*
|
|
135
|
+
* @param server - MCP Server instance for notifications
|
|
136
|
+
* @param tools - Initial tools to register
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const server = new Server({ name: "resend-mcp" }, { capabilities: { tools: {} } });
|
|
141
|
+
* initializeRegistry(server, [sendEmailTool, listDomainsTool]);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export function initializeRegistry(server, tools = []) {
|
|
145
|
+
serverInstance = server;
|
|
146
|
+
// Register all provided tools
|
|
147
|
+
for (const tool of tools) {
|
|
148
|
+
registerTool(tool);
|
|
149
|
+
}
|
|
150
|
+
log(`Registry initialized with ${tools.length} tools`);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Register a tool in the registry.
|
|
154
|
+
*
|
|
155
|
+
* @param tool - Tool definition to register
|
|
156
|
+
*/
|
|
157
|
+
export function registerTool(tool) {
|
|
158
|
+
if (registeredTools.has(tool.name)) {
|
|
159
|
+
log(`Warning: Overwriting existing tool '${tool.name}'`);
|
|
160
|
+
}
|
|
161
|
+
registeredTools.set(tool.name, tool);
|
|
162
|
+
toolsByTier[tool.tier].push(tool.name);
|
|
163
|
+
log(`Registered tool: ${tool.name} (tier: ${tool.tier})`);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Unregister a tool from the registry.
|
|
167
|
+
*
|
|
168
|
+
* @param name - Tool name to unregister
|
|
169
|
+
*/
|
|
170
|
+
export function unregisterTool(name) {
|
|
171
|
+
const tool = registeredTools.get(name);
|
|
172
|
+
if (!tool) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
registeredTools.delete(name);
|
|
176
|
+
enabledTools.delete(name);
|
|
177
|
+
// Remove from tier list
|
|
178
|
+
const tierTools = toolsByTier[tool.tier];
|
|
179
|
+
const index = tierTools.indexOf(name);
|
|
180
|
+
if (index >= 0) {
|
|
181
|
+
tierTools.splice(index, 1);
|
|
182
|
+
}
|
|
183
|
+
log(`Unregistered tool: ${name}`);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Load all tools of a specific tier (and lower tiers).
|
|
187
|
+
*
|
|
188
|
+
* @param tier - Tier to load (includes all lower tiers)
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* loadTier("secondary"); // Loads core + secondary tools
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export async function loadTier(tier) {
|
|
196
|
+
const previousCount = enabledTools.size;
|
|
197
|
+
// Always include core tools
|
|
198
|
+
for (const name of toolsByTier.core) {
|
|
199
|
+
if (registeredTools.has(name)) {
|
|
200
|
+
enabledTools.add(name);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Include secondary tools if tier is secondary or tertiary
|
|
204
|
+
if (tier === "secondary" || tier === "tertiary") {
|
|
205
|
+
for (const name of toolsByTier.secondary) {
|
|
206
|
+
if (registeredTools.has(name)) {
|
|
207
|
+
enabledTools.add(name);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Include tertiary tools if tier is tertiary
|
|
212
|
+
if (tier === "tertiary") {
|
|
213
|
+
for (const name of toolsByTier.tertiary) {
|
|
214
|
+
if (registeredTools.has(name)) {
|
|
215
|
+
enabledTools.add(name);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const newCount = enabledTools.size;
|
|
220
|
+
log(`Loaded tier '${tier}': ${newCount} tools enabled (was ${previousCount})`);
|
|
221
|
+
// Notify server of tool list change
|
|
222
|
+
await notifyToolsChanged();
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Unload all tools of a specific tier (keeps lower tiers).
|
|
226
|
+
*
|
|
227
|
+
* @param tier - Tier to unload
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* unloadTier("tertiary"); // Removes only tertiary tools
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
export async function unloadTier(tier) {
|
|
235
|
+
const previousCount = enabledTools.size;
|
|
236
|
+
// Unload specified tier
|
|
237
|
+
for (const name of toolsByTier[tier]) {
|
|
238
|
+
enabledTools.delete(name);
|
|
239
|
+
}
|
|
240
|
+
// If unloading secondary, also unload tertiary
|
|
241
|
+
if (tier === "secondary") {
|
|
242
|
+
for (const name of toolsByTier.tertiary) {
|
|
243
|
+
enabledTools.delete(name);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// If unloading core, unload everything
|
|
247
|
+
if (tier === "core") {
|
|
248
|
+
for (const name of toolsByTier.secondary) {
|
|
249
|
+
enabledTools.delete(name);
|
|
250
|
+
}
|
|
251
|
+
for (const name of toolsByTier.tertiary) {
|
|
252
|
+
enabledTools.delete(name);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const newCount = enabledTools.size;
|
|
256
|
+
log(`Unloaded tier '${tier}': ${newCount} tools enabled (was ${previousCount})`);
|
|
257
|
+
// Notify server of tool list change
|
|
258
|
+
await notifyToolsChanged();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Load tools by scope(s).
|
|
262
|
+
*
|
|
263
|
+
* @param scopes - Scopes to enable
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* loadByScope(["read", "write"]); // Enable tools with read or write scope
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export async function loadByScope(scopes) {
|
|
271
|
+
const previousCount = enabledTools.size;
|
|
272
|
+
const scopeSet = new Set(scopes);
|
|
273
|
+
// Enable tools that have at least one matching scope
|
|
274
|
+
for (const [name, tool] of registeredTools) {
|
|
275
|
+
const hasMatchingScope = tool.scopes.some((s) => scopeSet.has(s));
|
|
276
|
+
if (hasMatchingScope) {
|
|
277
|
+
enabledTools.add(name);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
const newCount = enabledTools.size;
|
|
281
|
+
log(`Loaded scopes [${scopes.join(", ")}]: ${newCount} tools enabled (was ${previousCount})`);
|
|
282
|
+
// Notify server of tool list change
|
|
283
|
+
await notifyToolsChanged();
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Unload tools by scope(s).
|
|
287
|
+
*
|
|
288
|
+
* @param scopes - Scopes to disable
|
|
289
|
+
*/
|
|
290
|
+
export async function unloadByScope(scopes) {
|
|
291
|
+
const previousCount = enabledTools.size;
|
|
292
|
+
const scopeSet = new Set(scopes);
|
|
293
|
+
// Disable tools that have ALL scopes in the provided list
|
|
294
|
+
for (const [name, tool] of registeredTools) {
|
|
295
|
+
const allScopesMatch = tool.scopes.every((s) => scopeSet.has(s));
|
|
296
|
+
if (allScopesMatch) {
|
|
297
|
+
enabledTools.delete(name);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
const newCount = enabledTools.size;
|
|
301
|
+
log(`Unloaded scopes [${scopes.join(", ")}]: ${newCount} tools enabled (was ${previousCount})`);
|
|
302
|
+
// Notify server of tool list change
|
|
303
|
+
await notifyToolsChanged();
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get all currently enabled tools as MCP tool definitions.
|
|
307
|
+
*
|
|
308
|
+
* @returns Array of MCP tool definitions
|
|
309
|
+
*/
|
|
310
|
+
export function getEnabledTools() {
|
|
311
|
+
const tools = [];
|
|
312
|
+
for (const name of enabledTools) {
|
|
313
|
+
const tool = registeredTools.get(name);
|
|
314
|
+
if (tool) {
|
|
315
|
+
tools.push({
|
|
316
|
+
name: tool.name,
|
|
317
|
+
description: tool.description,
|
|
318
|
+
inputSchema: tool.inputSchema,
|
|
319
|
+
annotations: tool.annotations,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return tools;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Check if a tool is currently enabled.
|
|
327
|
+
*
|
|
328
|
+
* @param name - Tool name to check
|
|
329
|
+
* @returns True if tool is enabled
|
|
330
|
+
*/
|
|
331
|
+
export function isToolEnabled(name) {
|
|
332
|
+
return enabledTools.has(name);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Get a tool definition by name.
|
|
336
|
+
*
|
|
337
|
+
* @param name - Tool name
|
|
338
|
+
* @returns Tool definition or undefined
|
|
339
|
+
*/
|
|
340
|
+
export function getTool(name) {
|
|
341
|
+
return registeredTools.get(name);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Get a tool's execute function if the tool is enabled.
|
|
345
|
+
*
|
|
346
|
+
* @param name - Tool name
|
|
347
|
+
* @returns Execute function or undefined
|
|
348
|
+
*/
|
|
349
|
+
export function getToolExecutor(name) {
|
|
350
|
+
if (!enabledTools.has(name)) {
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
return registeredTools.get(name)?.execute;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get registry statistics for debugging.
|
|
357
|
+
*
|
|
358
|
+
* @returns Registry statistics
|
|
359
|
+
*/
|
|
360
|
+
export function getRegistryStats() {
|
|
361
|
+
const stats = {
|
|
362
|
+
totalRegistered: registeredTools.size,
|
|
363
|
+
totalEnabled: enabledTools.size,
|
|
364
|
+
byTier: {
|
|
365
|
+
core: toolsByTier.core.length,
|
|
366
|
+
secondary: toolsByTier.secondary.length,
|
|
367
|
+
tertiary: toolsByTier.tertiary.length,
|
|
368
|
+
},
|
|
369
|
+
enabledByTier: {
|
|
370
|
+
core: 0,
|
|
371
|
+
secondary: 0,
|
|
372
|
+
tertiary: 0,
|
|
373
|
+
},
|
|
374
|
+
enabledTools: [],
|
|
375
|
+
};
|
|
376
|
+
// Count enabled by tier
|
|
377
|
+
for (const name of enabledTools) {
|
|
378
|
+
const tool = registeredTools.get(name);
|
|
379
|
+
if (tool) {
|
|
380
|
+
stats.enabledByTier[tool.tier]++;
|
|
381
|
+
stats.enabledTools.push(name);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return stats;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Reset the registry to initial state.
|
|
388
|
+
* Useful for testing or reconfiguration.
|
|
389
|
+
*/
|
|
390
|
+
export function resetRegistry() {
|
|
391
|
+
registeredTools.clear();
|
|
392
|
+
enabledTools.clear();
|
|
393
|
+
toolsByTier.core = [];
|
|
394
|
+
toolsByTier.secondary = [];
|
|
395
|
+
toolsByTier.tertiary = [];
|
|
396
|
+
serverInstance = null;
|
|
397
|
+
log("Registry reset");
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Enable a specific tool by name.
|
|
401
|
+
*
|
|
402
|
+
* @param name - Tool name to enable
|
|
403
|
+
* @returns True if tool was enabled
|
|
404
|
+
*/
|
|
405
|
+
export async function enableTool(name) {
|
|
406
|
+
if (!registeredTools.has(name)) {
|
|
407
|
+
log(`Cannot enable unknown tool: ${name}`);
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
if (enabledTools.has(name)) {
|
|
411
|
+
return true; // Already enabled
|
|
412
|
+
}
|
|
413
|
+
enabledTools.add(name);
|
|
414
|
+
log(`Enabled tool: ${name}`);
|
|
415
|
+
await notifyToolsChanged();
|
|
416
|
+
return true;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Disable a specific tool by name.
|
|
420
|
+
*
|
|
421
|
+
* @param name - Tool name to disable
|
|
422
|
+
* @returns True if tool was disabled
|
|
423
|
+
*/
|
|
424
|
+
export async function disableTool(name) {
|
|
425
|
+
if (!enabledTools.has(name)) {
|
|
426
|
+
return true; // Already disabled
|
|
427
|
+
}
|
|
428
|
+
enabledTools.delete(name);
|
|
429
|
+
log(`Disabled tool: ${name}`);
|
|
430
|
+
await notifyToolsChanged();
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
// ============================================================================
|
|
434
|
+
// Internal Helpers
|
|
435
|
+
// ============================================================================
|
|
436
|
+
/**
|
|
437
|
+
* Send notification that tool list has changed.
|
|
438
|
+
* MCP clients should re-fetch the tool list.
|
|
439
|
+
*/
|
|
440
|
+
async function notifyToolsChanged() {
|
|
441
|
+
if (!serverInstance) {
|
|
442
|
+
log("Warning: No server instance for notification");
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
try {
|
|
446
|
+
// NOTE: MCP SDK may require specific notification format
|
|
447
|
+
// The notification name follows MCP spec: "notifications/tools/list_changed"
|
|
448
|
+
await serverInstance.notification({
|
|
449
|
+
method: "notifications/tools/list_changed",
|
|
450
|
+
});
|
|
451
|
+
log("Sent tools/list_changed notification");
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
// Notification failures are non-fatal
|
|
455
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
456
|
+
log(`Warning: Failed to send notification: ${message}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/services/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy loader for pre-computed embeddings.
|
|
3
|
+
* Loads embeddings from data/embeddings.json on first access and caches them.
|
|
4
|
+
* Uses ES module path resolution for compatibility with both dev (tsx) and production (node).
|
|
5
|
+
*/
|
|
6
|
+
/** Expected schema version - must match build-embeddings.ts INDEX_VERSION */
|
|
7
|
+
export declare const EXPECTED_SCHEMA_VERSION = "1.0.0";
|
|
8
|
+
/** Expected embedding dimensions for Xenova/all-MiniLM-L6-v2 */
|
|
9
|
+
export declare const EXPECTED_DIMENSIONS = 384;
|
|
10
|
+
/**
|
|
11
|
+
* Structure of the embeddings index file.
|
|
12
|
+
* Mirrors the EmbeddingsIndex from scripts/types.ts but defined here
|
|
13
|
+
* to avoid importing build-time dependencies at runtime.
|
|
14
|
+
*/
|
|
15
|
+
export interface EmbeddingsIndex {
|
|
16
|
+
version: string;
|
|
17
|
+
model: string;
|
|
18
|
+
dimensions: number;
|
|
19
|
+
generatedAt: string;
|
|
20
|
+
sourceHash: string;
|
|
21
|
+
chunks: EmbeddingChunk[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A single chunk with its embedding vector.
|
|
25
|
+
*/
|
|
26
|
+
export interface EmbeddingChunk {
|
|
27
|
+
id: string;
|
|
28
|
+
section: string;
|
|
29
|
+
content: string;
|
|
30
|
+
tokenCount: number;
|
|
31
|
+
embedding: number[];
|
|
32
|
+
sourceUrl?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load embeddings asynchronously with caching.
|
|
36
|
+
* Safe to call multiple times; will return cached data after first load.
|
|
37
|
+
* Concurrent calls will share the same loading promise.
|
|
38
|
+
*
|
|
39
|
+
* @returns Promise resolving to the embeddings index
|
|
40
|
+
* @throws Error if embeddings file is missing or invalid
|
|
41
|
+
*/
|
|
42
|
+
export declare function loadEmbeddings(): Promise<EmbeddingsIndex>;
|
|
43
|
+
/**
|
|
44
|
+
* Get cached embeddings synchronously.
|
|
45
|
+
* Returns null if embeddings haven't been loaded yet.
|
|
46
|
+
* Use loadEmbeddings() for guaranteed access.
|
|
47
|
+
*
|
|
48
|
+
* @returns The cached embeddings index, or null if not loaded
|
|
49
|
+
*/
|
|
50
|
+
export declare function getLoadedEmbeddings(): EmbeddingsIndex | null;
|
|
51
|
+
/**
|
|
52
|
+
* Clear the embeddings cache.
|
|
53
|
+
* Primarily for testing purposes.
|
|
54
|
+
*/
|
|
55
|
+
export declare function clearEmbeddingsCache(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Get the freshness warning message if embeddings are stale.
|
|
58
|
+
* Returns null if embeddings are fresh or not yet loaded.
|
|
59
|
+
*
|
|
60
|
+
* @returns Freshness warning message, or null
|
|
61
|
+
*/
|
|
62
|
+
export declare function getFreshnessWarning(): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Check if embeddings are currently loaded.
|
|
65
|
+
*
|
|
66
|
+
* @returns true if embeddings are cached
|
|
67
|
+
*/
|
|
68
|
+
export declare function isEmbeddingsLoaded(): boolean;
|
|
69
|
+
//# sourceMappingURL=embeddings-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/docs/embeddings-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAQvC;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0LD;;;;;;;GAOG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAwB/D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAE5D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
|