Files
klz-cables.com/.pnpm-store/v10/files/5b/89056563a9f6600caa74a4998388f931d700398697062ddb79090985f76f9d0278a828559de13f1f1dc4685c89628eb9b17c3eb32195331cea5c79bc91cd6c
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

1 line
2.6 KiB
Plaintext

{"version":3,"file":"piiFiltering.js","sources":["../../../../src/integrations/mcp-server/piiFiltering.ts"],"sourcesContent":["/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record<string, unknown>,\n sendDefaultPii: boolean,\n): Record<string, SpanAttributeValue> {\n if (sendDefaultPii) {\n return spanData as Record<string, SpanAttributeValue>;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record<string, SpanAttributeValue>,\n );\n}\n"],"names":[],"mappings":";;AAUA;AACA;AACA;AACA;AACA,MAAM,sBAAA,GAAyB,IAAI,GAAG,CAAC,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;;AAErH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAmB;AACrD,EAAE,OAAO,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB;AACxC,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAsC;AACtC,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,OAAO,QAAA;AACX,EAAE;;AAEF,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;AACxC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC3B,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;AACvC,QAAQ,GAAG,CAAC,GAAG,CAAA,GAAI,KAAA;AACnB,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,EAAC;AACL,GAAG;AACH;;;;"}