Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
No EOL
6.9 KiB
Text
1 line
No EOL
6.9 KiB
Text
{"version":3,"file":"attributeExtraction.js","sources":["../../../../src/integrations/mcp-server/attributeExtraction.ts"],"sourcesContent":["/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record<string, unknown>,\n): Record<string, string | number> {\n const attributes: Record<string, string | number> = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (typeof params.data === 'string') {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = params.data;\n } else {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = JSON.stringify(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record<string, unknown>,\n): Record<string, string | number> {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...getRequestArguments(request.method, params || {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {});\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,yBAAyB;AACzC,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAmC;AACnC,EAAE,MAAM,UAAU,GAAoC,EAAE;;AAExD,EAAE,QAAQ,MAAM;AAChB,IAAI,KAAK,yBAAyB;AAClC,MAAM,IAAI,MAAM,EAAE,SAAS,EAAE;AAC7B,QAAQ,UAAU,CAAC,0BAA0B,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AACzE;AACA,MAAM,IAAI,MAAM,EAAE,MAAM,EAAE;AAC1B,QAAQ,UAAU,CAAC,sBAAsB,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAClE;AACA,MAAM;;AAEN,IAAI,KAAK,uBAAuB;AAChC,MAAM,IAAI,MAAM,EAAE,KAAK,EAAE;AACzB,QAAQ,UAAU,CAAC,2BAA2B,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACtE;AACA,MAAM,IAAI,MAAM,EAAE,MAAM,EAAE;AAC1B,QAAQ,UAAU,CAAC,4BAA4B,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACxE;AACA,MAAM,IAAI,MAAM,EAAE,IAAA,KAAS,SAAS,EAAE;AACtC,QAAQ,UAAU,CAAC,+BAA+B,CAAA,GAAI,OAAO,MAAM,CAAC,IAAI;AACxE,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAA,KAAS,QAAQ,EAAE;AAC7C,UAAU,UAAU,CAAC,6BAA6B,IAAI,MAAM,CAAC,IAAI;AACjE,eAAe;AACf,UAAU,UAAU,CAAC,6BAA6B,CAAA,GAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AACjF;AACA;AACA,MAAM;;AAEN,IAAI,KAAK,wBAAwB;AACjC,MAAM,IAAI,MAAM,EAAE,aAAa,EAAE;AACjC,QAAQ,UAAU,CAAC,oBAAoB,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACvE;AACA,MAAM,IAAI,OAAO,MAAM,EAAE,QAAA,KAAa,QAAQ,EAAE;AAChD,QAAQ,UAAU,CAAC,sBAAsB,IAAI,MAAM,CAAC,QAAQ;AAC5D;AACA,MAAM,IAAI,OAAO,MAAM,EAAE,KAAA,KAAU,QAAQ,EAAE;AAC7C,QAAQ,UAAU,CAAC,oBAAoB,IAAI,MAAM,CAAC,KAAK;AACvD,QAAQ,IAAI,OAAO,MAAM,EAAE,QAAA,KAAa,QAAQ,EAAE;AAClD,UAAU,UAAU,CAAC,yBAAyB,CAAA,GAAI,CAAC,MAAM,CAAC,QAAA,GAAW,MAAM,CAAC,KAAK,IAAI,GAAG;AACxF;AACA;AACA,MAAM,IAAI,MAAM,EAAE,OAAO,EAAE;AAC3B,QAAQ,UAAU,CAAC,sBAAsB,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACnE;AACA,MAAM;;AAEN,IAAI,KAAK,iCAAiC;AAC1C,MAAM,IAAI,MAAM,EAAE,GAAG,EAAE;AACvB,QAAQ,UAAU,CAAC,0BAA0B,CAAA,GAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACnE,QAAQ,MAAM,SAAA,GAAY,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpE,QAAQ,IAAI,SAAA,IAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;AAC1D,UAAU,UAAU,CAAC,uBAAuB,CAAA,GAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACnF;AACA;AACA,MAAM;;AAEN,IAAI,KAAK,2BAA2B;AACpC,MAAM,UAAU,CAAC,qBAAqB,CAAA,GAAI,yBAAyB;AACnE,MAAM,UAAU,CAAC,oBAAoB,CAAA,GAAI,CAAC;AAC1C,MAAM;AACN;;AAEA,EAAE,OAAO,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,2BAA2B;AAC3C,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAmC;AACnC,EAAE,IAAI,IAAA,KAAS,SAAS,EAAE;AAC1B,IAAI,MAAM,OAAA,GAAU,OAAA;AACpB,IAAI,MAAM,UAAA,GAAa,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAA,IAAU,EAAE,CAAC;;AAEtE,IAAI,OAAO;AACX,MAAM,IAAI,OAAO,CAAC,OAAO,SAAA,IAAa,EAAE,CAAC,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA,EAAG,CAAC;AACzF,MAAM,GAAG,UAAU,CAAC,UAAU;AAC9B,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAA,IAAU,EAAE,CAAC;AAC1D,KAAK;AACL;;AAEA,EAAE,OAAO,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAA,IAAU,EAAE,CAAC;AAChE;;;;"} |