diff --git a/bun.lock b/bun.lock index 0e9cc7c..0bbb869 100644 --- a/bun.lock +++ b/bun.lock @@ -3,13 +3,16 @@ "workspaces": { "": { "name": "dvmcp", + "dependencies": { + "@types/debug": "^4.1.12", + }, "devDependencies": { "prettier": "^3.5.1", }, }, "packages/dvmcp-bridge": { "name": "@dvmcp/bridge", - "version": "0.1.3", + "version": "0.1.19", "bin": { "dvmcp-bridge": "./cli.ts", }, @@ -29,20 +32,21 @@ }, "packages/dvmcp-commons": { "name": "@dvmcp/commons", - "version": "0.1.0", + "version": "0.1.2", "peerDependencies": { "typescript": "^5.0.0", }, }, "packages/dvmcp-discovery": { "name": "@dvmcp/discovery", - "version": "0.1.3", + "version": "0.1.18", "bin": { "dvmcp-discovery": "./cli.ts", }, "dependencies": { - "@dvmcp/commons": "^0.1.0", + "@dvmcp/commons": "^0.1.2", "@modelcontextprotocol/sdk": "^1.5.0", + "debug": "^4.4.0", "nostr-tools": "^2.10.4", "yaml": "^2.7.0", }, @@ -50,6 +54,7 @@ "@types/bun": "latest", }, "peerDependencies": { + "@types/debug": "^4.1.12", "typescript": "^5.0.0", }, }, @@ -77,6 +82,10 @@ "@types/bun": ["@types/bun@1.2.4", "", { "dependencies": { "bun-types": "1.2.4" } }, "sha512-QtuV5OMR8/rdKJs213iwXDpfVvnskPXY/S0ZiFbsTjQZycuqPbMW8Gf/XhLfwE5njW8sxI2WjISURXPlHypMFA=="], + "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + "@types/node": ["@types/node@22.13.5", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg=="], "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], @@ -103,7 +112,7 @@ "cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="], - "debug": ["debug@4.3.6", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg=="], + "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], @@ -175,7 +184,7 @@ "mime-types": ["mime-types@3.0.0", "", { "dependencies": { "mime-db": "^1.53.0" } }, "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w=="], - "ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -251,34 +260,40 @@ "zod-to-json-schema": ["zod-to-json-schema@3.24.3", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A=="], + "@dvmcp/discovery/@types/bun": ["@types/bun@1.2.6", "", { "dependencies": { "bun-types": "1.2.6" } }, "sha512-fY9CAmTdJH1Llx7rugB0FpgWK2RKuHCs3g2cFDYXUutIy1QGiPQxKkGY8owhfZ4MXWNfxwIbQLChgH5gDsY7vw=="], + "@noble/curves/@noble/hashes": ["@noble/hashes@1.3.2", "", {}, "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ=="], "@scure/bip32/@noble/curves": ["@noble/curves@1.1.0", "", { "dependencies": { "@noble/hashes": "1.3.1" } }, "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA=="], "@scure/bip32/@noble/hashes": ["@noble/hashes@1.3.2", "", {}, "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ=="], - "body-parser/debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], - "body-parser/iconv-lite": ["iconv-lite@0.5.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag=="], "body-parser/qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], + "express/debug": ["debug@4.3.6", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg=="], + "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "finalhandler/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="], + "send/debug": ["debug@4.3.6", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg=="], + "send/fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], "send/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "send/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "@dvmcp/discovery/@types/bun/bun-types": ["bun-types@1.2.6", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-FbCKyr5KDiPULUzN/nm5oqQs9nXCHD8dVc64BArxJadCvbNzAI6lUWGh9fSJZWeDIRD38ikceBU8Kj/Uh+53oQ=="], "@scure/bip32/@noble/curves/@noble/hashes": ["@noble/hashes@1.3.1", "", {}, "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA=="], - "body-parser/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "express/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "send/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], + "send/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], } } diff --git a/package.json b/package.json index ba1576d..1a2652a 100644 --- a/package.json +++ b/package.json @@ -13,5 +13,8 @@ ], "devDependencies": { "prettier": "^3.5.1" + }, + "dependencies": { + "@types/debug": "^4.1.12" } } \ No newline at end of file diff --git a/packages/dvmcp-discovery/README.md b/packages/dvmcp-discovery/README.md index 5b7f773..39786d1 100644 --- a/packages/dvmcp-discovery/README.md +++ b/packages/dvmcp-discovery/README.md @@ -69,6 +69,14 @@ bun run start --server naddr1... This is useful when you want to work with a specific subset of tools rather than discovering all tools from a provider. +## Debug + +You can enable debug mode by setting the `DEBUG` environment variable to `*`: + +```bash +DEBUG=* npx @dvmcp/discovery +``` + ## Testing Run the test suite: diff --git a/packages/dvmcp-discovery/cli.ts b/packages/dvmcp-discovery/cli.ts index cf2d266..18ab831 100755 --- a/packages/dvmcp-discovery/cli.ts +++ b/packages/dvmcp-discovery/cli.ts @@ -21,9 +21,9 @@ import { fetchProviderAnnouncement, fetchServerAnnouncement, parseAnnouncement, - type DVMAnnouncement, } from './src/direct-discovery.js'; import type { DirectServerInfo } from './index.js'; +import logger from './src/logger'; const defaultConfigPath = join(process.cwd(), 'config.dvmcp.yml'); let configPath = defaultConfigPath; @@ -47,7 +47,7 @@ if ( argv[configPathArgIndex + 1] ) { configPath = resolve(argv[configPathArgIndex + 1]); - console.log(`Using config path: ${configPath}`); + logger(`Using config path: ${configPath}`); setConfigPath(configPath); } @@ -110,7 +110,7 @@ const configFields: Record = { }; const configure = async () => { - console.log( + logger( `${CONFIG_EMOJIS.SETUP} DVMCP Discovery Configuration Setup ${CONFIG_EMOJIS.SETUP}` ); const generator = new ConfigGenerator(configPath, configFields); @@ -119,7 +119,7 @@ const configure = async () => { const runApp = async (directServerInfo?: DirectServerInfo) => { const main = await import('./index.js'); - console.log(`${CONFIG_EMOJIS.INFO} Running main application...`); + logger(`${CONFIG_EMOJIS.INFO} Running main application...`); await main.default(directServerInfo); }; @@ -134,9 +134,7 @@ const setupInMemoryConfig = (relays: string[], pubkey: string) => { }; const setupFromProvider = async (nprofileEntity: string) => { - console.log( - `${CONFIG_EMOJIS.INFO} Setting up from provider: ${nprofileEntity}` - ); + logger(`${CONFIG_EMOJIS.INFO} Setting up from provider: ${nprofileEntity}`); const providerData = decodeNprofile(nprofileEntity); if (!providerData) { @@ -152,7 +150,7 @@ const setupFromProvider = async (nprofileEntity: string) => { } setupInMemoryConfig(providerData.relays, providerData.pubkey); - console.log(`${CONFIG_EMOJIS.SUCCESS} Successfully set up from provider`); + logger(`${CONFIG_EMOJIS.SUCCESS} Successfully set up from provider`); } catch (error) { console.error(`Error: ${error}`); process.exit(1); @@ -160,7 +158,7 @@ const setupFromProvider = async (nprofileEntity: string) => { }; const setupFromServer = async (naddrEntity: string) => { - console.log(`${CONFIG_EMOJIS.INFO} Setting up from server: ${naddrEntity}`); + logger(`${CONFIG_EMOJIS.INFO} Setting up from server: ${naddrEntity}`); const addrData = decodeNaddr(naddrEntity); if (!addrData) { @@ -182,7 +180,7 @@ const setupFromServer = async (naddrEntity: string) => { } setupInMemoryConfig(addrData.relays, addrData.pubkey); - console.log(`${CONFIG_EMOJIS.SUCCESS} Successfully set up from server`); + logger(`${CONFIG_EMOJIS.SUCCESS} Successfully set up from server`); return { pubkey: addrData.pubkey, @@ -213,7 +211,7 @@ const cliMain = async () => { } // Handle normal config file mode else if (!existsSync(configPath)) { - console.log( + logger( `${CONFIG_EMOJIS.INFO} No configuration file found. Starting setup...` ); await configure(); diff --git a/packages/dvmcp-discovery/index.ts b/packages/dvmcp-discovery/index.ts index f37bf86..7edeb95 100644 --- a/packages/dvmcp-discovery/index.ts +++ b/packages/dvmcp-discovery/index.ts @@ -1,6 +1,7 @@ import { getConfig } from './src/config'; import { DiscoveryServer } from './src/discovery-server'; import type { DVMAnnouncement } from './src/direct-discovery'; +import logger from './src/logger'; export interface DirectServerInfo { pubkey: string; @@ -14,9 +15,7 @@ async function main(directServerInfo?: DirectServerInfo | null) { if (directServerInfo) { // If we have direct server info, register tools from that server only - console.log( - `Using direct server with pubkey: ${directServerInfo.pubkey}` - ); + logger(`Using direct server with pubkey: ${directServerInfo.pubkey}`); await server.registerDirectServerTools( directServerInfo.pubkey, directServerInfo.announcement @@ -26,8 +25,8 @@ async function main(directServerInfo?: DirectServerInfo | null) { await server.start(); } - console.log(`DVMCP Discovery Server (${config.mcp.version}) started`); - console.log(`Connected to ${config.nostr.relayUrls.length} relays`); + logger(`DVMCP Discovery Server (${config.mcp.version}) started`); + logger(`Connected to ${config.nostr.relayUrls.length} relays`); // Handle shutdown const cleanup = () => { diff --git a/packages/dvmcp-discovery/package.json b/packages/dvmcp-discovery/package.json index fe09b57..43a12a9 100644 --- a/packages/dvmcp-discovery/package.json +++ b/packages/dvmcp-discovery/package.json @@ -1,6 +1,6 @@ { "name": "@dvmcp/discovery", - "version": "0.1.17", + "version": "0.1.18", "description": "Discovery service for MCP tools in the Nostr DVM ecosystem", "module": "index.ts", "type": "module", @@ -27,13 +27,15 @@ "@types/bun": "latest" }, "peerDependencies": { - "typescript": "^5.0.0" + "typescript": "^5.0.0", + "@types/debug": "^4.1.12" }, "dependencies": { "@modelcontextprotocol/sdk": "^1.5.0", "nostr-tools": "^2.10.4", "yaml": "^2.7.0", - "@dvmcp/commons": "^0.1.2" + "@dvmcp/commons": "^0.1.2", + "debug": "^4.4.0" }, "publishConfig": { "access": "public" diff --git a/packages/dvmcp-discovery/src/direct-discovery.ts b/packages/dvmcp-discovery/src/direct-discovery.ts index 9b83c2f..bc0c2cf 100644 --- a/packages/dvmcp-discovery/src/direct-discovery.ts +++ b/packages/dvmcp-discovery/src/direct-discovery.ts @@ -2,6 +2,7 @@ import type { Event, Filter } from 'nostr-tools'; import { RelayHandler } from '@dvmcp/commons/nostr/relay-handler'; import { DVM_ANNOUNCEMENT_KIND } from '@dvmcp/commons/constants'; import type { NaddrData, NprofileData } from './nip19-utils'; +import logger from './logger'; export interface DVMAnnouncement { name: string; @@ -19,7 +20,7 @@ async function fetchAnnouncement( try { // Query for the announcement event - console.log('Querying for announcement event:', filter); + logger('Querying for announcement event:', filter); const events = await relayHandler.queryEvents(filter); if (events.length === 0) { diff --git a/packages/dvmcp-discovery/src/discovery-server.ts b/packages/dvmcp-discovery/src/discovery-server.ts index 873cb99..ac0a922 100644 --- a/packages/dvmcp-discovery/src/discovery-server.ts +++ b/packages/dvmcp-discovery/src/discovery-server.ts @@ -9,6 +9,7 @@ import type { Tool } from '@modelcontextprotocol/sdk/types.js'; import { ToolRegistry } from './tool-registry'; import { ToolExecutor } from './tool-executor'; import type { DVMAnnouncement } from './direct-discovery'; +import logger from './logger'; export class DiscoveryServer { private mcpServer: McpServer; @@ -63,7 +64,7 @@ export class DiscoveryServer { private async handleDVMAnnouncement(event: Event) { try { if (!this.isAllowedDVM(event.pubkey)) { - console.log('DVM not in whitelist:', event.pubkey); + logger('DVM not in whitelist:', event.pubkey); return; } @@ -103,7 +104,7 @@ export class DiscoveryServer { pubkey: string, announcement: DVMAnnouncement ) { - console.log('Starting discovery server with direct server tools...'); + logger('Starting discovery server with direct server tools...'); if (!announcement?.tools) { console.error('No tools found in server announcement'); @@ -112,27 +113,25 @@ export class DiscoveryServer { this.registerToolsFromAnnouncement(pubkey, announcement.tools); - console.log( - `Registered ${announcement.tools.length} tools from direct server` - ); + logger(`Registered ${announcement.tools.length} tools from direct server`); // Connect the MCP server const transport = new StdioServerTransport(); await this.mcpServer.connect(transport); - console.log('DVMCP Discovery Server started'); + logger('DVMCP Discovery Server started'); } public async start() { - console.log('Starting discovery server...'); + logger('Starting discovery server...'); await this.startDiscovery(); - console.log(`Discovered ${this.toolRegistry.listTools().length} tools`); + logger(`Discovered ${this.toolRegistry.listTools().length} tools`); const transport = new StdioServerTransport(); await this.mcpServer.connect(transport); - console.log('DVMCP Discovery Server started'); + logger('DVMCP Discovery Server started'); } public async cleanup(): Promise { diff --git a/packages/dvmcp-discovery/src/logger.ts b/packages/dvmcp-discovery/src/logger.ts new file mode 100644 index 0000000..6e18973 --- /dev/null +++ b/packages/dvmcp-discovery/src/logger.ts @@ -0,0 +1,5 @@ +import debug from 'debug'; + +const logger = debug('dvmcp-discovery'); + +export default logger; diff --git a/packages/dvmcp-discovery/src/nip19-utils.ts b/packages/dvmcp-discovery/src/nip19-utils.ts index 0c9d409..ce73977 100644 --- a/packages/dvmcp-discovery/src/nip19-utils.ts +++ b/packages/dvmcp-discovery/src/nip19-utils.ts @@ -1,5 +1,6 @@ import { nip19 } from 'nostr-tools'; import { DVM_ANNOUNCEMENT_KIND } from '@dvmcp/commons/constants'; +import logger from './logger'; // Default fallback relay when no relay hints are provided export const DEFAULT_FALLBACK_RELAY = 'wss://relay.dvmcp.fun'; @@ -32,7 +33,7 @@ export function decodeNprofile(nprofileEntity: string): NprofileData | null { // Ensure we have at least one relay by using the fallback if necessary const profileData = data as NprofileData; if (!profileData.relays || profileData.relays.length === 0) { - console.log( + logger( `No relay hints in nprofile, using fallback relay: ${DEFAULT_FALLBACK_RELAY}` ); profileData.relays = [DEFAULT_FALLBACK_RELAY]; @@ -67,7 +68,7 @@ export function decodeNaddr(naddrEntity: string): NaddrData | null { // Ensure we have at least one relay by using the fallback if necessary const addrData = data as NaddrData; if (!addrData.relays || addrData.relays.length === 0) { - console.log( + logger( `No relay hints in naddr, using fallback relay: ${DEFAULT_FALLBACK_RELAY}` ); addrData.relays = [DEFAULT_FALLBACK_RELAY]; diff --git a/packages/dvmcp-discovery/src/tool-executor.ts b/packages/dvmcp-discovery/src/tool-executor.ts index da9b79b..29096eb 100644 --- a/packages/dvmcp-discovery/src/tool-executor.ts +++ b/packages/dvmcp-discovery/src/tool-executor.ts @@ -8,6 +8,7 @@ import { TOOL_RESPONSE_KIND, DVM_NOTICE_KIND, } from '@dvmcp/commons/constants'; +import logger from './logger'; interface ExecutionContext { timeoutId: ReturnType; @@ -65,7 +66,7 @@ export class ToolExecutor { private createExecutionContext(executionId: string): ExecutionContext { const timeoutId = setTimeout(() => { - console.log('Execution timeout for:', executionId); + logger('Execution timeout for:', executionId); this.cleanupExecution(executionId); }, ToolExecutor.EXECUTION_TIMEOUT); diff --git a/packages/dvmcp-discovery/src/tool-registry.ts b/packages/dvmcp-discovery/src/tool-registry.ts index 69589b8..e925e5e 100644 --- a/packages/dvmcp-discovery/src/tool-registry.ts +++ b/packages/dvmcp-discovery/src/tool-registry.ts @@ -2,6 +2,7 @@ import { type Tool } from '@modelcontextprotocol/sdk/types.js'; import { ToolSchema } from '@modelcontextprotocol/sdk/types.js'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; +import logger from './logger'; export class ToolRegistry { private discoveredTools: Map = @@ -72,7 +73,7 @@ export class ToolRegistry { } } ); - console.log('Tool registered successfully:', toolId); + logger('Tool registered successfully:', toolId); } catch (error) { console.error('Error registering tool:', toolId, error); }