@clipform/mcp-server 2.10.2 → 2.10.4

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/detect.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/compatibility.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/json-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/logs/logs-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/exception-steps.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/release.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/logger.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/constants.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/event-types.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/posthog-events.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/ids.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/mcp-payloads.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/sanitization.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/truncation.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/sink.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/version.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/headers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/request-headers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/client-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/session-token.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/session.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/capture.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/transport-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/internal.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/lib-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/tools.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/mcp-sdk-compat.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/output-instructions.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/analytics-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/context-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/model-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/conversation-id.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/exceptions.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/intent.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/tracing-helpers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrumentation.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrument-lowlevel.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrument-highlevel.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/json-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/logs/logs-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/exception-steps.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/release.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/ai-capture/batching.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/context/context.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/gzip.node.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/index.mjs","../src/lib/instrument.ts"],"sourcesContent":["function asRecord(value) {\n return value && 'object' == typeof value ? value : void 0;\n}\nfunction hasMethod(value, key) {\n return 'function' == typeof asRecord(value)?.[key];\n}\nfunction hasNestedLowLevelServer(server) {\n const record = asRecord(server);\n return !!record && 'server' in record && !!asRecord(record.server);\n}\nfunction isBareServerShape(server) {\n const record = asRecord(server);\n return !!record && !('server' in record);\n}\nfunction hasToolRegistry(server) {\n return !!asRecord(asRecord(server)?._registeredTools);\n}\nfunction canRegisterTools(server) {\n return hasMethod(server, 'registerTool') || hasMethod(server, 'tool');\n}\nfunction canSetRequestHandler(server) {\n return hasMethod(server, 'setRequestHandler');\n}\nfunction hasRequestHandlerMap(server) {\n const handlers = asRecord(server)?._requestHandlers;\n return handlers instanceof Map && 'function' == typeof handlers.get;\n}\nfunction hasClientVersionAccessor(server) {\n return hasMethod(server, 'getClientVersion');\n}\nfunction hasNegotiatedProtocolVersionAccessor(server) {\n return hasMethod(server, 'getNegotiatedProtocolVersion');\n}\nfunction hasServerInfo(server) {\n const info = asRecord(asRecord(server)?._serverInfo);\n return !!info && 'name' in info;\n}\nexport { canRegisterTools, canSetRequestHandler, hasClientVersionAccessor, hasNegotiatedProtocolVersionAccessor, hasNestedLowLevelServer, hasRequestHandlerMap, hasServerInfo, hasToolRegistry, isBareServerShape };\n","import { canRegisterTools, canSetRequestHandler, hasClientVersionAccessor, hasNestedLowLevelServer, hasRequestHandlerMap, hasServerInfo, hasToolRegistry, isBareServerShape } from \"./detect.mjs\";\nfunction logCompatibilityWarning(logger) {\n logger('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');\n}\nfunction isHighLevelServer(server) {\n return hasNestedLowLevelServer(server);\n}\nfunction isLowLevelServer(server) {\n return isBareServerShape(server);\n}\nfunction isCompatibleServerType(server, logger) {\n if (!server || 'object' != typeof server) {\n logCompatibilityWarning(logger);\n throw new Error(\"PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.\");\n }\n if (isHighLevelServer(server)) {\n if (!hasToolRegistry(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.');\n }\n if (!canRegisterTools(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have a registerTool() or tool() method. This requires MCP SDK v1.11 or higher.');\n }\n const targetServer = server.server;\n validateLowLevelServer(targetServer, logger);\n return server;\n }\n validateLowLevelServer(server, logger);\n return server;\n}\nfunction validateLowLevelServer(server, logger) {\n if (!server || 'object' != typeof server) {\n logCompatibilityWarning(logger);\n throw new Error(\"PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.\");\n }\n if (!canSetRequestHandler(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasRequestHandlerMap(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasClientVersionAccessor(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasServerInfo(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.');\n }\n}\nfunction getMCPCompatibleErrorMessage(error) {\n if (error instanceof Error) try {\n return JSON.stringify(error, Object.getOwnPropertyNames(error));\n } catch {}\n else if ('string' == typeof error) return error;\n else if ('object' == typeof error && null !== error) return JSON.stringify(error);\n return 'Unknown error';\n}\nexport { getMCPCompatibleErrorMessage, isCompatibleServerType, isHighLevelServer, isLowLevelServer, logCompatibilityWarning };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nconst flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{\n const value = detail.variant ?? detail.enabled;\n const rawPayload = detail.metadata?.payload;\n return {\n key: detail.key,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value),\n payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null\n };\n });\nconst MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gad_source',\n 'mc_cid',\n 'gclid',\n 'gclsrc',\n 'dclid',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n 'twclid',\n 'li_fat_id',\n 'igshid',\n 'ttclid',\n 'rdt_cid',\n 'epik',\n 'qclid',\n 'sccid',\n 'irclid',\n '_kx'\n];\nconst MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [\n '$feature_flag',\n '$feature_flag_response',\n '$feature_flag_has_experiment',\n '$feature_flag_id',\n '$feature_flag_version',\n '$feature_flag_reason',\n '$feature_flag_request_id',\n '$feature_flag_evaluated_at',\n '$feature_flag_error',\n 'locally_evaluated',\n '$groups',\n '$process_person_profile',\n '$geoip_disable',\n '$current_url',\n '$pathname',\n '$referring_domain',\n ...MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES,\n '$session_id',\n '$window_id',\n '$lib',\n '$lib_version',\n '$device_id',\n '$is_server'\n];\nconst minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{\n const minimal = {};\n const copyKey = (key)=>{\n if (void 0 !== properties[key]) minimal[key] = properties[key];\n };\n MINIMAL_FLAG_CALLED_EVENT_PROPERTIES.forEach(copyKey);\n transportKeys.forEach(copyKey);\n return minimal;\n};\nexport { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, MINIMAL_FLAG_CALLED_EVENT_PROPERTIES, createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, minimizeFlagCalledEventProperties, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","const MAX_JSON_SAFE_VALUE_DEPTH = 20;\nconst MAX_JSON_SAFE_VALUE_ITEMS = 1000;\nconst MAX_JSON_SAFE_VALUE_NODES = 10000;\nconst CIRCULAR_VALUE = '[Circular]';\nconst TRUNCATED_VALUE = '[Truncated]';\nconst UNSERIALIZABLE_VALUE = '[Unserializable]';\nconst FUNCTION_VALUE = '[Function]';\nconst dateGetTime = Date.prototype.getTime;\nconst dateToISOString = Date.prototype.toISOString;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction sanitizeString(value) {\n let output = '';\n for(let index = 0; index < value.length; index++){\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (nextCodeUnit >= 0xdc00 && nextCodeUnit <= 0xdfff) {\n output += value[index] + value[index + 1];\n index++;\n } else output += '\\ufffd';\n } else output += codeUnit >= 0xdc00 && codeUnit <= 0xdfff ? '\\ufffd' : value[index];\n }\n return output;\n}\nfunction toJsonSafeValue(value) {\n const state = {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n const convert = (current, depth)=>{\n if (state.remainingNodes <= 0) return TRUNCATED_VALUE;\n state.remainingNodes--;\n try {\n if (null == current || 'boolean' == typeof current) return current;\n if ('string' == typeof current) return sanitizeString(current);\n if ('number' == typeof current) return Number.isFinite(current) ? current : null;\n if ('bigint' == typeof current) return current.toString();\n if ('function' == typeof current) return FUNCTION_VALUE;\n if ('symbol' == typeof current) return current.description ? `Symbol(${current.description})` : 'Symbol()';\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return TRUNCATED_VALUE;\n if (state.ancestors.has(current)) return CIRCULAR_VALUE;\n state.ancestors.add(current);\n try {\n if (current instanceof Date) return Number.isFinite(dateGetTime.call(current)) ? dateToISOString.call(current) : null;\n let hasToJSONResult = false;\n let toJSONResult;\n try {\n const toJSON = current.toJSON;\n if ('function' == typeof toJSON) {\n toJSONResult = toJSON.call(current);\n hasToJSONResult = true;\n }\n } catch {\n hasToJSONResult = false;\n }\n if (hasToJSONResult) return convert(toJSONResult, depth + 1);\n if (Array.isArray(current)) {\n const itemCount = Math.min(current.length, MAX_JSON_SAFE_VALUE_ITEMS);\n const output = [];\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)output.push(convert(current[index], depth + 1));\n if (current.length > index) output.push(TRUNCATED_VALUE);\n return output;\n }\n const output = {};\n let itemCount = 0;\n let truncated = false;\n for(const key in current){\n if (!propertyIsEnumerable.call(current, key)) break;\n if (itemCount >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n truncated = true;\n break;\n }\n const converted = convert(current[key], depth + 1);\n Object.defineProperty(output, key, {\n value: converted,\n enumerable: true,\n configurable: true,\n writable: true\n });\n itemCount++;\n }\n if (truncated) output[TRUNCATED_VALUE] = 'Additional properties omitted';\n return output;\n } finally{\n state.ancestors.delete(current);\n }\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n };\n return convert(value, 0);\n}\nexport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString, toJsonSafeValue };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nfunction safeJsonStringify(value) {\n const ancestors = [];\n return JSON.stringify(value, function(_key, replacementValue) {\n if ('bigint' == typeof replacementValue) return replacementValue.toString();\n if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;\n if (replacementValue instanceof Error) return {\n name: replacementValue.name,\n message: replacementValue.message,\n stack: replacementValue.stack\n };\n if (replacementValue && 'object' == typeof replacementValue) {\n while(ancestors.length > 0 && ancestors[ancestors.length - 1] !== this)ancestors.pop();\n if (ancestors.includes(replacementValue)) return '[Circular]';\n ancestors.push(replacementValue);\n }\n return replacementValue;\n }) ?? 'null';\n}\nfunction deepSortKeys(value) {\n if (null === value || 'object' != typeof value) return value;\n if (Array.isArray(value)) return value.map(deepSortKeys);\n return Object.keys(value).sort().reduce((acc, key)=>{\n acc[key] = deepSortKeys(value[key]);\n return acc;\n }, {});\n}\nfunction getPersonPropertiesHash(distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {\n return JSON.stringify({\n distinct_id,\n userPropertiesToSet: userPropertiesToSet ? deepSortKeys(userPropertiesToSet) : void 0,\n userPropertiesToSetOnce: userPropertiesToSetOnce ? deepSortKeys(userPropertiesToSetOnce) : void 0\n });\n}\nexport { getPersonPropertiesHash, includes, isDistinctIdStringLike, safeJsonStringify, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent, knownUnsafeEditableEventProperty } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x) && x === x;\nconst isPositiveNumber = (value)=>isNumber(value) && value > 0;\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nconst isKnownUnsafeEditableEventProperty = (x)=>includes(knownUnsafeEditableEventProperty, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return 'undefined' != typeof Event && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isKnownUnsafeEditableEventProperty, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPositiveNumber, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","/*! For license information please see uuidv7.mjs.LICENSE.txt */\n/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n */ const DIGITS = \"0123456789abcdef\";\nclass UUID {\n constructor(bytes){\n this.bytes = bytes;\n }\n static ofInner(bytes) {\n if (16 === bytes.length) return new UUID(bytes);\n throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 0xffffffffffff || randA > 0xfff || randBHi > 0x3fffffff || randBLo > 0xffffffff) throw new RangeError(\"invalid field value\");\n const bytes = new Uint8Array(16);\n bytes[0] = unixTsMs / 2 ** 40;\n bytes[1] = unixTsMs / 2 ** 32;\n bytes[2] = unixTsMs / 2 ** 24;\n bytes[3] = unixTsMs / 2 ** 16;\n bytes[4] = unixTsMs / 256;\n bytes[5] = unixTsMs;\n bytes[6] = 0x70 | randA >>> 8;\n bytes[7] = randA;\n bytes[8] = 0x80 | randBHi >>> 24;\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n return new UUID(bytes);\n }\n static parse(uuid) {\n let hex;\n switch(uuid.length){\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 38:\n hex = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 45:\n hex = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n default:\n break;\n }\n if (hex) {\n const inner = new Uint8Array(16);\n for(let i = 0; i < 16; i += 4){\n const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);\n inner[i + 0] = n >>> 24;\n inner[i + 1] = n >>> 16;\n inner[i + 2] = n >>> 8;\n inner[i + 3] = n;\n }\n return new UUID(inner);\n }\n throw new SyntaxError(\"could not parse UUID string\");\n }\n toString() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n if (3 === i || 5 === i || 7 === i || 9 === i) text += \"-\";\n }\n return text;\n }\n toHex() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n }\n return text;\n }\n toJSON() {\n return this.toString();\n }\n getVariant() {\n const n = this.bytes[8] >>> 4;\n if (n < 0) throw new Error(\"unreachable\");\n if (n <= 7) return this.bytes.every((e)=>0 === e) ? \"NIL\" : \"VAR_0\";\n if (n <= 11) return \"VAR_10\";\n if (n <= 13) return \"VAR_110\";\n if (n <= 15) return this.bytes.every((e)=>0xff === e) ? \"MAX\" : \"VAR_RESERVED\";\n else throw new Error(\"unreachable\");\n }\n getVersion() {\n return \"VAR_10\" === this.getVariant() ? this.bytes[6] >>> 4 : void 0;\n }\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n equals(other) {\n return 0 === this.compareTo(other);\n }\n compareTo(other) {\n for(let i = 0; i < 16; i++){\n const diff = this.bytes[i] - other.bytes[i];\n if (0 !== diff) return Math.sign(diff);\n }\n return 0;\n }\n}\nclass V7Generator {\n constructor(randomNumberGenerator){\n this.timestamp = 0;\n this.counter = 0;\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n generate() {\n return this.generateOrResetCore(Date.now(), 10000);\n }\n generateOrAbort() {\n return this.generateOrAbortCore(Date.now(), 10000);\n }\n generateOrResetCore(unixTsMs, rollbackAllowance) {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (void 0 === value) {\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n }\n return value;\n }\n generateOrAbortCore(unixTsMs, rollbackAllowance) {\n const MAX_COUNTER = 0x3ffffffffff;\n if (!Number.isInteger(unixTsMs) || unixTsMs < 1 || unixTsMs > 0xffffffffffff) throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n if (rollbackAllowance < 0 || rollbackAllowance > 0xffffffffffff) throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else {\n if (!(unixTsMs + rollbackAllowance >= this.timestamp)) return;\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & 2 ** 30 - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 0x400 * this.random.nextUint32() + (0x3ff & this.random.nextUint32());\n }\n generateV4() {\n const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n bytes[6] = 0x40 | bytes[6] >>> 4;\n bytes[8] = 0x80 | bytes[8] >>> 2;\n return UUID.ofInner(bytes);\n }\n}\nconst getDefaultRandom = ()=>({\n nextUint32: ()=>0x10000 * Math.trunc(0x10000 * Math.random()) + Math.trunc(0x10000 * Math.random()) >>> 0\n });\nlet defaultGenerator;\nconst uuidv7 = ()=>uuidv7obj().toString();\nconst uuidv7obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generate();\nconst uuidv4 = ()=>uuidv4obj().toString();\nconst uuidv4obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\nexport { UUID, V7Generator, uuidv4, uuidv4obj, uuidv7, uuidv7obj };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst OCULUS_BROWSER = 'Oculus Browser';\nconst VIVALDI = 'Vivaldi';\nconst YANDEX = 'Yandex';\nconst WHALE = 'Whale';\nconst DUCKDUCKGO = 'DuckDuckGo';\nconst PALE_MOON = 'Pale Moon';\nconst WATERFOX = 'Waterfox';\nconst BRAVE = 'Brave';\nconst GOOGLE_SEARCH_APP = 'Google Search App';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nfunction browserFromHints(hints) {\n if (hints?.brave) return BRAVE;\n return null;\n}\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor, hints, options) {\n vendor = vendor || '';\n const fromHints = browserFromHints(hints);\n if (fromHints) return fromHints;\n if (options?.detectGoogleSearchApp && includes(user_agent, 'GSA/')) return GOOGLE_SEARCH_APP;\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, 'OculusBrowser')) return OCULUS_BROWSER;\n else if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, VIVALDI + '/')) return VIVALDI;\n else if (includes(user_agent, 'YaBrowser/')) return YANDEX;\n else if (includes(user_agent, WHALE + '/')) return WHALE;\n else if (includes(user_agent, DUCKDUCKGO + '/') || includes(user_agent, 'Ddg/')) return DUCKDUCKGO;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (includes(user_agent, BRAVE + '/')) return BRAVE;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, 'PaleMoon/')) return PALE_MOON;\n else if (includes(user_agent, WATERFOX + '/')) return WATERFOX;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [OCULUS_BROWSER]: [\n new RegExp('OculusBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [VIVALDI]: [\n new RegExp(VIVALDI + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [YANDEX]: [\n new RegExp('YaBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WHALE]: [\n new RegExp(WHALE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [BRAVE]: [\n new RegExp(BRAVE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [DUCKDUCKGO]: [\n new RegExp('(DuckDuckGo|Ddg)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [PALE_MOON]: [\n new RegExp('PaleMoon\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WATERFOX]: [\n new RegExp(WATERFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [GOOGLE_SEARCH_APP]: [\n new RegExp('GSA\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor, hints, options) {\n const browser = detectBrowser(userAgent, vendor, hints, options);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent, options) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n if (options?.userAgentDataPlatform === 'Android' && (options?.maxTouchPoints ?? 0) > 0) {\n const shortSide = Math.min(options?.screenWidth ?? 0, options?.screenHeight ?? 0);\n const shortSideDp = shortSide / (options?.devicePixelRatio ?? 1);\n return shortSideDp >= 600 ? TABLET : MOBILE;\n }\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","import { isArray, isBoolean, isNull, isNullish, isNumber, isUndefined } from \"../utils/index.mjs\";\nimport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString } from \"../utils/json-utils.mjs\";\nconst OTLP_SEVERITY_MAP = {\n trace: {\n text: 'TRACE',\n number: 1\n },\n debug: {\n text: 'DEBUG',\n number: 5\n },\n info: {\n text: 'INFO',\n number: 9\n },\n warn: {\n text: 'WARN',\n number: 13\n },\n error: {\n text: 'ERROR',\n number: 17\n },\n fatal: {\n text: 'FATAL',\n number: 21\n }\n};\nconst DEFAULT_OTLP_SEVERITY = OTLP_SEVERITY_MAP.info;\nfunction getOtlpSeverityText(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).text;\n}\nfunction getOtlpSeverityNumber(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).number;\n}\nconst INT64_RANGE_LIMIT = 9223372036854775808;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction newState() {\n return {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n}\nfunction toOtlpAnyValue(value, logger) {\n try {\n return encodeAnyValue(value, logger, newState(), 0);\n } catch {\n return {\n stringValue: UNSERIALIZABLE_VALUE\n };\n }\n}\nfunction toOtlpKeyValueList(attrs, logger) {\n try {\n return encodeKeyValueList(attrs, logger, newState(), 0);\n } catch {\n return [];\n }\n}\nfunction encodeAnyValue(value, logger, state, depth) {\n if (state.remainingNodes <= 0) return {\n stringValue: TRUNCATED_VALUE\n };\n state.remainingNodes--;\n if (isBoolean(value)) return {\n boolValue: value\n };\n if ('number' == typeof value) {\n if (!Number.isFinite(value)) return {\n stringValue: String(value)\n };\n if (Number.isInteger(value)) {\n if (Number.isSafeInteger(value)) return {\n intValue: String(value)\n };\n if ('undefined' == typeof BigInt) return {\n stringValue: String(value)\n };\n const decimal = BigInt(value).toString();\n if (value >= INT64_RANGE_LIMIT || value < -INT64_RANGE_LIMIT) {\n logger?.debug(`Attribute ${decimal} is outside the int64 range; encoding it as a string`);\n return {\n stringValue: decimal\n };\n }\n return {\n intValue: decimal\n };\n }\n return {\n doubleValue: value\n };\n }\n if ('string' == typeof value) return {\n stringValue: sanitizeString(value)\n };\n if ('function' == typeof value) return {\n stringValue: FUNCTION_VALUE\n };\n if ('symbol' == typeof value) return {\n stringValue: String(value)\n };\n if ('object' == typeof value && null !== value) {\n if (state.ancestors.has(value)) return {\n stringValue: CIRCULAR_VALUE\n };\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return {\n stringValue: TRUNCATED_VALUE\n };\n if (value instanceof Date) {\n const time = value.getTime();\n const iso = Number.isFinite(time) ? value.toISOString() : String(value);\n return {\n stringValue: 'string' == typeof iso ? sanitizeString(iso) : String(iso)\n };\n }\n state.ancestors.add(value);\n try {\n try {\n const toJSON = value.toJSON;\n if ('function' == typeof toJSON) return encodeAnyValue(toJSON.call(value), logger, state, depth + 1);\n } catch {}\n if (isArray(value)) return {\n arrayValue: {\n values: encodeArrayValues(value, logger, state, depth + 1)\n }\n };\n return {\n kvlistValue: {\n values: encodeKeyValueList(value, logger, state, depth + 1)\n }\n };\n } finally{\n state.ancestors.delete(value);\n }\n }\n return {\n stringValue: sanitizeString(String(value))\n };\n}\nfunction encodeArrayValues(values, logger, state, depth) {\n const result = [];\n const itemCount = Math.min(values.length, MAX_JSON_SAFE_VALUE_ITEMS);\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)try {\n const element = index in values ? values[index] : void 0;\n if (isNullish(element)) continue;\n result.push(encodeAnyValue(element, logger, state, depth));\n } catch {\n result.push({\n stringValue: UNSERIALIZABLE_VALUE\n });\n }\n if (values.length > index) result.push({\n stringValue: TRUNCATED_VALUE\n });\n return result;\n}\nfunction encodeKeyValueList(attrs, logger, state, depth) {\n const result = [];\n for(const key in attrs)if (propertyIsEnumerable.call(attrs, key)) {\n if (result.length >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n logger?.debug('Attributes truncated: the value exceeds the OTLP encoder budget');\n break;\n }\n try {\n const value = attrs[key];\n if (isNull(value) || isUndefined(value)) continue;\n result.push({\n key: sanitizeString(key),\n value: encodeAnyValue(value, logger, state, depth)\n });\n } catch {\n result.push({\n key: sanitizeString(key),\n value: {\n stringValue: UNSERIALIZABLE_VALUE\n }\n });\n }\n }\n return result;\n}\nfunction timestampToUnixNano(timestampMs = Date.now()) {\n return String(timestampMs) + '000000';\n}\nfunction encodeBody(body) {\n try {\n return sanitizeString(String(body));\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n}\nfunction buildOtlpLogRecord(options, sdkContext, logger, occurredAtMs) {\n const level = options.level || 'info';\n const { text: severityText, number: severityNumber } = OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY;\n const eventTimeNano = timestampToUnixNano(isNumber(occurredAtMs) ? occurredAtMs : void 0);\n const autoAttributes = {};\n if (sdkContext.distinctId) autoAttributes.posthogDistinctId = sdkContext.distinctId;\n if (sdkContext.sessionId) autoAttributes.sessionId = sdkContext.sessionId;\n if (sdkContext.windowId) autoAttributes['window.id'] = sdkContext.windowId;\n if (!isNullish(sdkContext.sessionStartTimestamp)) autoAttributes.sessionStartTimestamp = String(sdkContext.sessionStartTimestamp);\n if (!isNullish(sdkContext.lastActivityTimestamp)) autoAttributes.lastActivityTimestamp = String(sdkContext.lastActivityTimestamp);\n if (sdkContext.currentUrl) autoAttributes['url.full'] = sdkContext.currentUrl;\n if (sdkContext.screenName) autoAttributes['screen.name'] = sdkContext.screenName;\n if (sdkContext.appState) autoAttributes['app.state'] = sdkContext.appState;\n if (sdkContext.activeFeatureFlags && sdkContext.activeFeatureFlags.length > 0) autoAttributes.feature_flags = sdkContext.activeFeatureFlags;\n const mergedAttributes = {\n ...autoAttributes\n };\n const userAttributes = options.attributes;\n if (userAttributes) {\n let keys = [];\n try {\n keys = Object.keys(userAttributes);\n } catch {\n keys = [];\n }\n for (const key of keys){\n let value;\n try {\n value = userAttributes[key];\n } catch {\n value = UNSERIALIZABLE_VALUE;\n }\n Object.defineProperty(mergedAttributes, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true\n });\n }\n }\n const record = {\n timeUnixNano: eventTimeNano,\n observedTimeUnixNano: eventTimeNano,\n severityNumber,\n severityText,\n body: {\n stringValue: encodeBody(options.body)\n },\n attributes: toOtlpKeyValueList(mergedAttributes, logger)\n };\n if (options.trace_id) record.traceId = options.trace_id;\n if (options.span_id) record.spanId = options.span_id;\n if (!isUndefined(options.trace_flags)) record.flags = options.trace_flags;\n return record;\n}\nfunction buildResourceAttributes(config, sdkName, sdkVersion) {\n return {\n ...config.resourceAttributes,\n 'service.name': config.serviceName || 'unknown_service',\n ...config.environment && {\n 'deployment.environment': config.environment\n },\n ...config.serviceVersion && {\n 'service.version': config.serviceVersion\n },\n 'telemetry.sdk.name': sdkName,\n 'telemetry.sdk.version': sdkVersion\n };\n}\nfunction buildOtlpLogsPayload(logRecords, resourceAttributes, scopeName, scopeVersion) {\n return {\n resourceLogs: [\n {\n resource: {\n attributes: toOtlpKeyValueList(resourceAttributes)\n },\n scopeLogs: [\n {\n scope: {\n name: scopeName,\n version: scopeVersion\n },\n logRecords\n }\n ]\n }\n ]\n };\n}\nexport { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText, toOtlpAnyValue, toOtlpKeyValueList };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\nexport * from \"./exception-steps.mjs\";\nexport * from \"./release.mjs\";\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext(hint);\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? ctx.skipFirstLines : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext(hint) {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser),\n skipFirstLines: hint.skipFirstLines ?? 1\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nconst MASKED_URL_PREFIX = 'webkit-masked-url://';\nconst ANONYMOUS_FILENAME = '<anonymous>';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: !filename?.startsWith(MASKED_URL_PREFIX) && filename !== ANONYMOUS_FILENAME\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst PROMISE_COMBINATOR = /^Promise\\.(?:all|any)$/;\nconst PROMISE_INDEX = /^index \\d+$/;\nconst PROMISE_FRAME_FILENAME = 'node:internal/promise';\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isError } from \"../../utils/type-utils.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isError(err);\n }\n coerce(err, ctx) {\n const stack = this.getStack(err);\n const synthetic = void 0 === stack;\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: stack ?? ctx.syntheticException?.stack,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent, isString } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n if (!isErrorEvent(err)) return false;\n const errorEvent = err;\n return void 0 != errorEvent.error || this._hasUsableMessage(errorEvent);\n }\n coerce(err, ctx) {\n if (void 0 != err.error) return ctx.apply(err.error);\n const exceptionLike = ctx.apply(err.message);\n return {\n ...exceptionLike,\n stack: this._buildLocationStack(err) ?? exceptionLike.stack,\n synthetic: true\n };\n }\n _hasUsableMessage(err) {\n return isString(err.message) && err.message.length > 0;\n }\n _buildLocationStack(err) {\n const location = err;\n const lineno = location.lineno ?? 0;\n const colno = location.colno ?? 0;\n if (!isString(location.filename) || 0 === location.filename.length) return;\n if (0 === lineno) return;\n return `Error\\n at ${location.filename}:${lineno}:${colno}`;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: this.getStack(candidate) ?? ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n if (isEvent(err)) return err.constructor.name;\n const name = 'name' in err ? err.name : void 0;\n return isString(name) && !isEmptyString(name) ? name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getStack(candidate) {\n try {\n if (isString(candidate.stacktrace) && candidate.stacktrace.length > 0) return candidate.stacktrace;\n return isString(candidate.stack) && candidate.stack.length > 0 ? candidate.stack : void 0;\n } catch {\n return;\n }\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isEvent, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent') || this.isCustomEventWrappingRejection(err);\n }\n isCustomEventWrappingRejection(err) {\n if (!isEvent(err)) return false;\n try {\n const detail = err.detail;\n return null != detail && 'object' == typeof detail && 'reason' in detail;\n } catch {\n return false;\n }\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && null != error.detail && 'object' == typeof error.detail && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","import { isNumber, isObject, isString, safeJsonStringify } from \"../utils/index.mjs\";\nconst EXCEPTION_STEP_INTERNAL_FIELDS = {\n MESSAGE: '$message',\n TIMESTAMP: '$timestamp'\n};\nconst RESERVED_EXCEPTION_STEP_KEYS = new Set([\n EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,\n EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP\n]);\nconst DEFAULT_EXCEPTION_STEPS_CONFIG = {\n enabled: true,\n max_bytes: 32768\n};\nfunction resolveExceptionStepsConfig(config) {\n if (!config) return {\n ...DEFAULT_EXCEPTION_STEPS_CONFIG\n };\n return {\n enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,\n max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)\n };\n}\nfunction stripReservedExceptionStepFields(properties) {\n if (!properties) return {\n sanitizedProperties: {},\n droppedKeys: []\n };\n const droppedKeys = [];\n const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{\n if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {\n droppedKeys.push(key);\n return acc;\n }\n acc[key] = properties[key];\n return acc;\n }, {});\n return {\n sanitizedProperties,\n droppedKeys\n };\n}\nclass ExceptionStepsBuffer {\n constructor(config){\n this._entries = [];\n this._totalBytes = 0;\n this._config = resolveExceptionStepsConfig(config);\n }\n setConfig(config) {\n this._config = resolveExceptionStepsConfig(config);\n this._trimToMaxBytes();\n }\n add(step) {\n const serialized = normalizeAndSerializeStep(step);\n if (!serialized) return;\n const bytes = getUtf8ByteLength(serialized.json);\n if (bytes > this._config.max_bytes) return;\n this._entries.push({\n step: serialized.step,\n bytes\n });\n this._totalBytes += bytes;\n this._trimToMaxBytes();\n }\n getAttachable() {\n return this._entries.map((e)=>e.step);\n }\n clear() {\n this._entries = [];\n this._totalBytes = 0;\n }\n size() {\n return this._entries.length;\n }\n _trimToMaxBytes() {\n while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){\n const evicted = this._entries.shift();\n if (evicted) this._totalBytes -= evicted.bytes;\n }\n }\n}\nfunction normalizePositiveInteger(input, fallback) {\n if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;\n const normalized = Math.floor(input);\n if (normalized < 0) return fallback;\n return normalized;\n}\nfunction normalizeAndSerializeStep(step) {\n let json;\n try {\n json = safeJsonStringify(step);\n } catch {\n return;\n }\n try {\n const parsed = JSON.parse(json);\n if (!isObject(parsed)) return;\n const parsedStep = parsed;\n const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];\n const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];\n if (!isString(message) || 0 === message.trim().length) return;\n if (!isString(timestamp) && !isNumber(timestamp)) return;\n return {\n step: parsedStep,\n json\n };\n } catch {\n return;\n }\n}\nfunction getUtf8ByteLength(value) {\n if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;\n const encoded = encodeURIComponent(value);\n let byteLength = 0;\n for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {\n byteLength += 1;\n i += 2;\n } else byteLength += 1;\n return byteLength;\n}\nexport { DEFAULT_EXCEPTION_STEPS_CONFIG, EXCEPTION_STEP_INTERNAL_FIELDS, ExceptionStepsBuffer, getUtf8ByteLength, resolveExceptionStepsConfig, stripReservedExceptionStepFields };\n","function getInjectedReleaseId() {\n const injected = globalThis._posthogReleaseId;\n return 'string' == typeof injected && injected.length > 0 ? injected : void 0;\n}\nexport { getInjectedReleaseId };\n","let activeLogger;\nfunction setLogger(logger) {\n activeLogger = logger;\n}\nfunction writeLog(logger, message) {\n if (logger) try {\n logger(message);\n } catch {}\n}\nfunction createLogger(logger) {\n return logger ? (message)=>writeLog(logger, message) : log;\n}\nfunction log(message) {\n writeLog(activeLogger, message);\n}\nexport { createLogger, log, setLogger };\n","const INACTIVITY_TIMEOUT_IN_MINUTES = 30;\nconst DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = \"Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \\\"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\\\"\";\nconst DEFAULT_MODEL_PARAMETER_DESCRIPTION = `The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" \\u{2014} never guess.`;\nconst DEFAULT_CONVERSATION_ID_DESCRIPTION = \"Echo the conversation_id from the server's previous response. The server provides it on the first call \\u2014 never invent one, and do not issue parallel tool calls until you have it.\";\nconst POSTHOG_MCP_ANALYTICS_SOURCE = 'posthog_mcp_analytics';\nconst POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp';\nconst PostHogMCPAnalyticsEvent = {\n Custom: '$mcp_custom',\n Exception: '$exception',\n Identify: '$identify',\n Initialize: '$mcp_initialize',\n MissingCapability: '$mcp_missing_capability',\n PromptGet: '$mcp_prompt_get',\n PromptsList: '$mcp_prompts_list',\n ResourceRead: '$mcp_resource_read',\n ResourcesList: '$mcp_resources_list',\n ToolCall: '$mcp_tool_call',\n ToolsList: '$mcp_tools_list'\n};\nconst PostHogMCPAnalyticsProperty = {\n ClientName: '$mcp_client_name',\n ClientUserAgent: '$mcp_client_user_agent',\n ClientVersion: '$mcp_client_version',\n ConversationId: '$mcp_conversation_id',\n DurationMs: '$mcp_duration_ms',\n ErrorMessage: '$mcp_error_message',\n ErrorType: '$mcp_error_type',\n IsError: '$mcp_is_error',\n Intent: '$mcp_intent',\n IntentSource: '$mcp_intent_source',\n ListedToolNames: '$mcp_listed_tool_names',\n LlmModel: '$mcp_llm_model',\n LlmModelSource: '$mcp_llm_model_source',\n Parameters: '$mcp_parameters',\n ProtocolVersion: '$mcp_protocol_version',\n ResourceName: '$mcp_resource_name',\n Response: '$mcp_response',\n ServerName: '$mcp_server_name',\n ServerVersion: '$mcp_server_version',\n SessionId: '$session_id',\n Source: '$mcp_source',\n ToolCategory: '$mcp_tool_category',\n ToolDescription: \"$mcp_tool_description\",\n ToolName: '$mcp_tool_name',\n VendorClient: '$mcp_vendor_client'\n};\nexport { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION, DEFAULT_CONVERSATION_ID_DESCRIPTION, DEFAULT_MODEL_PARAMETER_DESCRIPTION, INACTIVITY_TIMEOUT_IN_MINUTES, POSTHOG_MCP_ANALYTICS_SOURCE, POSTHOG_MCP_LIB_NAME, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty };\n","const MCPAnalyticsEventType = {\n identify: 'posthog:identify',\n custom: 'posthog:custom',\n mcpMissingCapability: 'mcp:missing_capability',\n mcpInitialize: 'mcp:initialize',\n mcpPromptsGet: 'mcp:prompts/get',\n mcpPromptsList: 'mcp:prompts/list',\n mcpResourcesList: 'mcp:resources/list',\n mcpResourcesRead: 'mcp:resources/read',\n mcpToolsCall: 'mcp:tools/call',\n mcpToolsList: 'mcp:tools/list'\n};\nexport { MCPAnalyticsEventType };\n","import { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from \"./constants.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nconst BUILT_IN_EVENT_NAME_BY_TYPE = {\n [MCPAnalyticsEventType.custom]: PostHogMCPAnalyticsEvent.Custom,\n [MCPAnalyticsEventType.identify]: PostHogMCPAnalyticsEvent.Identify,\n [MCPAnalyticsEventType.mcpMissingCapability]: PostHogMCPAnalyticsEvent.MissingCapability,\n [MCPAnalyticsEventType.mcpInitialize]: PostHogMCPAnalyticsEvent.Initialize,\n [MCPAnalyticsEventType.mcpPromptsGet]: PostHogMCPAnalyticsEvent.PromptGet,\n [MCPAnalyticsEventType.mcpPromptsList]: PostHogMCPAnalyticsEvent.PromptsList,\n [MCPAnalyticsEventType.mcpResourcesList]: PostHogMCPAnalyticsEvent.ResourcesList,\n [MCPAnalyticsEventType.mcpResourcesRead]: PostHogMCPAnalyticsEvent.ResourceRead,\n [MCPAnalyticsEventType.mcpToolsCall]: PostHogMCPAnalyticsEvent.ToolCall,\n [MCPAnalyticsEventType.mcpToolsList]: PostHogMCPAnalyticsEvent.ToolsList\n};\nfunction getDistinctId(event) {\n return event.identifyActorGivenId || event.sessionId || 'anonymous';\n}\nfunction getTimestamp(event) {\n return event.timestamp ? event.timestamp.toISOString() : new Date().toISOString();\n}\nfunction buildPostHogCaptureEvents(event, options = {}) {\n const batch = [\n buildCaptureEvent(event)\n ];\n if (event.isError && event.error && false !== options.enableExceptionAutocapture) batch.push(buildExceptionEvent(event));\n return batch;\n}\nfunction buildCaptureEvent(event) {\n const distinctId = getDistinctId(event);\n const timestamp = getTimestamp(event);\n const properties = {\n [PostHogMCPAnalyticsProperty.Source]: POSTHOG_MCP_ANALYTICS_SOURCE\n };\n addSessionIdProperty(event, properties);\n addConversationIdProperty(event, properties);\n addPersonProcessingProperty(event, properties);\n addGroupsProperty(event, properties);\n addCommonEventProperties(event, properties);\n addCustomEventProperties(event, properties);\n return {\n event: event.eventName ?? BUILT_IN_EVENT_NAME_BY_TYPE[event.eventType],\n distinct_id: distinctId,\n properties,\n timestamp,\n type: 'capture'\n };\n}\nfunction addSessionIdProperty(event, properties) {\n if ('string' == typeof event.sessionId && event.sessionId.length > 0) properties[PostHogMCPAnalyticsProperty.SessionId] = event.sessionId;\n}\nfunction addConversationIdProperty(event, properties) {\n if (void 0 !== event.conversationId && '' !== event.conversationId) properties[PostHogMCPAnalyticsProperty.ConversationId] = event.conversationId;\n}\nfunction addGroupsProperty(event, properties) {\n if (event.groups && Object.keys(event.groups).length > 0) properties.$groups = event.groups;\n}\nfunction addPersonProcessingProperty(event, properties) {\n if (!event.identifyActorGivenId) properties.$process_person_profile = false;\n}\nfunction addCommonEventProperties(event, properties) {\n if (event.resourceName) {\n properties[PostHogMCPAnalyticsProperty.ResourceName] = event.resourceName;\n if (event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolName] = event.resourceName;\n }\n if (event.toolDescription && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolDescription] = event.toolDescription;\n if (event.toolCategory && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolCategory] = event.toolCategory;\n if (event.listedToolNames && event.listedToolNames.length > 0 && event.eventType === MCPAnalyticsEventType.mcpToolsList) properties[PostHogMCPAnalyticsProperty.ListedToolNames] = event.listedToolNames;\n if (void 0 !== event.duration) properties[PostHogMCPAnalyticsProperty.DurationMs] = event.duration;\n if (event.serverName) properties[PostHogMCPAnalyticsProperty.ServerName] = event.serverName;\n if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;\n if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;\n if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;\n if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;\n if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;\n if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;\n if (event.userIntent) properties[PostHogMCPAnalyticsProperty.Intent] = event.userIntent;\n if (event.userIntentSource) properties[PostHogMCPAnalyticsProperty.IntentSource] = event.userIntentSource;\n if (event.llmModel) properties[PostHogMCPAnalyticsProperty.LlmModel] = event.llmModel;\n if (event.llmModelSource) properties[PostHogMCPAnalyticsProperty.LlmModelSource] = event.llmModelSource;\n if (void 0 !== event.isError) properties[PostHogMCPAnalyticsProperty.IsError] = event.isError;\n if (event.isError) {\n const firstException = event.error?.$exception_list?.[0];\n const errorType = event.errorType ?? firstException?.type;\n if (errorType) properties[PostHogMCPAnalyticsProperty.ErrorType] = errorType;\n if (firstException?.value) properties[PostHogMCPAnalyticsProperty.ErrorMessage] = firstException.value;\n }\n if (void 0 !== event.parameters) properties[PostHogMCPAnalyticsProperty.Parameters] = event.parameters;\n if (void 0 !== event.response) properties[PostHogMCPAnalyticsProperty.Response] = event.response;\n if (event.identifyActorData && Object.keys(event.identifyActorData).length > 0) properties.$set = {\n ...event.identifyActorData\n };\n}\nfunction addCustomEventProperties(event, properties) {\n if (event.properties) for (const [key, value] of Object.entries(event.properties))properties[key] = value;\n}\nfunction buildExceptionEvent(event) {\n const distinctId = getDistinctId(event);\n const timestamp = getTimestamp(event);\n const properties = {};\n addSessionIdProperty(event, properties);\n addConversationIdProperty(event, properties);\n addPersonProcessingProperty(event, properties);\n addGroupsProperty(event, properties);\n if (event.error) Object.assign(properties, event.error);\n if (event.resourceName) {\n properties[PostHogMCPAnalyticsProperty.ResourceName] = event.resourceName;\n if (event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolName] = event.resourceName;\n }\n if (event.toolDescription && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolDescription] = event.toolDescription;\n if (event.toolCategory && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolCategory] = event.toolCategory;\n if (event.serverName) properties[PostHogMCPAnalyticsProperty.ServerName] = event.serverName;\n if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;\n if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;\n if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;\n if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;\n if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;\n if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;\n addCustomEventProperties(event, properties);\n return {\n event: PostHogMCPAnalyticsEvent.Exception,\n distinct_id: distinctId,\n properties,\n timestamp,\n type: 'capture'\n };\n}\nexport { buildPostHogCaptureEvents };\n","import { uuidv7 } from \"@posthog/core\";\nfunction newPrefixedId(prefix) {\n return `${prefix}_${uuidv7()}`;\n}\nfunction deterministicPrefixedId(prefix, input) {\n return `${prefix}_${fnv1aHex(input)}${fnv1aHex(`${input}::salt`)}`;\n}\nfunction fnv1aHex(input) {\n let h1 = 0x84222325;\n let h2 = 0xcbf29ce4;\n for(let i = 0; i < input.length; i++){\n const c = input.charCodeAt(i);\n h1 = Math.imul(h1 ^ c, 0x000001b3);\n h2 = Math.imul(h2 ^ c, 0x00000193);\n }\n return (h1 >>> 0).toString(16).padStart(8, '0') + (h2 >>> 0).toString(16).padStart(8, '0');\n}\nexport { deterministicPrefixedId, newPrefixedId };\n","const CONTEXT_ARGUMENT_NAME = 'context';\nconst REDACTED_VALUE = '[redacted]';\nconst BINARY_REDACTED_VALUE = '[binary data redacted - not supported by PostHog MCP analytics]';\nconst BASE64_PATTERN = /^[A-Za-z0-9+/\\n\\r]+=*$/;\nconst BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;\nconst BASE64URL_SPECIFIC_CHAR_PATTERN = /[-_]/;\nconst BASE64_DATA_URL_PREFIX_PATTERN = /^data:[^,\\s]*;base64,/i;\nconst BASE64_DATA_URL_PAYLOAD_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;\nconst SIZE_GATE = 10240;\nconst POSTHOG_TOKEN_PATTERN = /\\bph[a-z]_[A-Za-z0-9_-]{20,}\\b/g;\nconst SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;\nfunction isRecord(value) {\n return !!value && 'object' == typeof value && !Array.isArray(value);\n}\nfunction shouldRedactKey(key) {\n return SENSITIVE_KEY_PATTERN.test(key);\n}\nfunction isBase64DataUrl(value) {\n const prefix = BASE64_DATA_URL_PREFIX_PATTERN.exec(value);\n if (!prefix) return false;\n let payload;\n try {\n payload = decodeURIComponent(value.slice(prefix[0].length));\n } catch {\n return false;\n }\n return BASE64_DATA_URL_PAYLOAD_PATTERN.test(payload.replace(/[\\r\\n]/g, ''));\n}\nfunction sanitizeString(value) {\n if (value.length >= SIZE_GATE && (BASE64_PATTERN.test(value) || isBase64DataUrl(value) || BASE64URL_SPECIFIC_CHAR_PATTERN.test(value) && BASE64URL_PATTERN.test(value))) return BINARY_REDACTED_VALUE;\n return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);\n}\nfunction sanitizeCapturedValue(value) {\n if (null == value) return value;\n if ('string' == typeof value) return sanitizeString(value);\n if (Array.isArray(value)) return value.map(sanitizeCapturedValue);\n if (value instanceof Date) return value;\n if ('object' != typeof value) return value;\n const result = {};\n for (const [key, nestedValue] of Object.entries(value))result[key] = shouldRedactKey(key) ? REDACTED_VALUE : sanitizeCapturedValue(nestedValue);\n return result;\n}\nfunction buildCapturedMcpArguments(argumentsValue) {\n if (!isRecord(argumentsValue)) return sanitizeCapturedValue(argumentsValue);\n const capturedArguments = {};\n for (const [key, value] of Object.entries(argumentsValue))if (key !== CONTEXT_ARGUMENT_NAME) capturedArguments[key] = sanitizeCapturedValue(value);\n return capturedArguments;\n}\nfunction buildCapturedMcpParams(params) {\n if (!isRecord(params)) return sanitizeCapturedValue(params);\n const capturedParams = {};\n for (const [key, value] of Object.entries(params))capturedParams[key] = 'arguments' === key ? buildCapturedMcpArguments(value) : sanitizeCapturedValue(value);\n return capturedParams;\n}\nfunction buildCapturedMcpParameters(request) {\n if (!isRecord(request)) return {\n request: sanitizeCapturedValue(request)\n };\n const capturedRequest = {};\n for (const key of [\n 'id',\n 'jsonrpc',\n 'method'\n ])if (key in request) capturedRequest[key] = sanitizeCapturedValue(request[key]);\n if ('params' in request) capturedRequest.params = buildCapturedMcpParams(request.params);\n return {\n request: capturedRequest\n };\n}\nexport { buildCapturedMcpParameters, sanitizeCapturedValue };\n","import { sanitizeCapturedValue } from \"./mcp-payloads.mjs\";\nfunction isRecord(value) {\n return !!value && 'object' == typeof value && !Array.isArray(value);\n}\nfunction sanitizeEvent(event) {\n const result = {\n ...event\n };\n if (null != result.response) result.response = sanitizeResponse(result.response);\n if (null != result.parameters) result.parameters = sanitizeParameters(result.parameters);\n if (null != result.userIntent) result.userIntent = sanitizeCapturedValue(result.userIntent);\n if (null != result.error) result.error = sanitizeExceptionValues(result.error);\n return result;\n}\nfunction sanitizeExceptionValues(error) {\n if (!Array.isArray(error.$exception_list)) return error;\n return {\n ...error,\n $exception_list: error.$exception_list.map((exception)=>({\n ...exception,\n value: sanitizeCapturedValue(exception.value)\n }))\n };\n}\nfunction sanitizeResponse(response) {\n if (null == response || 'object' != typeof response) return sanitizeCapturedValue(response);\n const sanitized = sanitizeCapturedValue(response);\n if (!isRecord(sanitized)) return sanitized;\n const result = {\n ...sanitized\n };\n const content = result.content;\n if (Array.isArray(content)) result.content = content.map(sanitizeContentBlock);\n if (null != result.structuredContent && 'object' == typeof result.structuredContent) result.structuredContent = sanitizeCapturedValue(result.structuredContent);\n return result;\n}\nfunction sanitizeContentBlock(block) {\n if (null == block || 'object' != typeof block) return block;\n if (!isRecord(block)) return block;\n switch(block.type){\n case 'text':\n return sanitizeCapturedValue(block);\n case 'image':\n return {\n type: 'text',\n text: '[image content redacted - not supported by PostHog MCP analytics]'\n };\n case 'audio':\n return {\n type: 'text',\n text: '[audio content redacted - not supported by PostHog MCP analytics]'\n };\n case 'resource':\n return sanitizeResourceBlock(block);\n case 'resource_link':\n return sanitizeCapturedValue(block);\n default:\n return {\n type: 'text',\n text: `[unsupported content type \"${block.type}\" redacted - not supported by PostHog MCP analytics]`\n };\n }\n}\nfunction sanitizeResourceBlock(block) {\n if (isRecord(block.resource) && 'blob' in block.resource) return {\n type: 'text',\n text: '[binary resource content redacted - not supported by PostHog MCP analytics]'\n };\n return sanitizeCapturedValue(block);\n}\nfunction sanitizeParameters(obj) {\n return sanitizeCapturedValue(obj);\n}\nexport { sanitizeEvent };\n","const MAX_DEPTH = 10;\nconst MAX_BREADTH = 100;\nconst MAX_STRING_LENGTH = 32768;\nconst MAX_EVENT_BYTES = 102400;\nconst MAX_USER_INTENT_LENGTH = 2048;\nconst MAX_ERROR_MESSAGE_LENGTH = 2048;\nconst MAX_RESOURCE_NAME_LENGTH = 256;\nconst MAX_METADATA_LENGTH = 256;\nconst MAX_STACK_FRAMES = 50;\nconst MAX_CONTENT_TEXT_LENGTH = 32768;\nconst TRUNCATION_SUFFIX = '...';\nfunction normalize(input, depth = MAX_DEPTH, maxBreadth = MAX_BREADTH, maxStringLength = MAX_STRING_LENGTH) {\n const memo = new WeakSet();\n return visit(input, depth, maxBreadth, maxStringLength, memo);\n}\nfunction visit(value, remainingDepth, maxBreadth, maxStringLength, memo) {\n if (null === value) return null;\n if (void 0 === value) return '[undefined]';\n if ('boolean' == typeof value) return value;\n if ('number' == typeof value) {\n if (Number.isNaN(value)) return '[NaN]';\n if (!Number.isFinite(value)) return value > 0 ? '[Infinity]' : '[-Infinity]';\n return value;\n }\n if ('bigint' == typeof value) return `[BigInt: ${value}]`;\n if ('string' == typeof value) {\n if (value.length > maxStringLength) return value.slice(0, maxStringLength) + TRUNCATION_SUFFIX;\n return value;\n }\n if ('symbol' == typeof value) {\n const desc = value.description;\n return desc ? `[Symbol(${desc})]` : '[Symbol()]';\n }\n if ('function' == typeof value) {\n const name = value.name || '<anonymous>';\n return `[Function: ${name}]`;\n }\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? '[Invalid Date]' : value.toISOString();\n if ('object' == typeof value) {\n if (memo.has(value)) return '[Circular ~]';\n if (remainingDepth <= 0) return Array.isArray(value) ? '[Array]' : '[Object]';\n memo.add(value);\n let result;\n result = Array.isArray(value) ? visitArray(value, remainingDepth - 1, maxBreadth, maxStringLength, memo) : visitObject(value, remainingDepth - 1, maxBreadth, maxStringLength, memo);\n memo.delete(value);\n return result;\n }\n return String(value);\n}\nfunction visitArray(arr, remainingDepth, maxBreadth, maxStringLength, memo) {\n const result = [];\n for(let i = 0; i < arr.length; i++){\n if (i >= maxBreadth) {\n result.push('[MaxProperties ~]');\n break;\n }\n result.push(visit(arr[i], remainingDepth, maxBreadth, maxStringLength, memo));\n }\n return result;\n}\nfunction visitObject(obj, remainingDepth, maxBreadth, maxStringLength, memo) {\n const result = {};\n const keys = Object.keys(obj);\n let count = 0;\n for (const key of keys){\n if (count >= maxBreadth) {\n result['...'] = '[MaxProperties ~]';\n break;\n }\n if (void 0 !== obj[key]) {\n result[key] = visit(obj[key], remainingDepth, maxBreadth, maxStringLength, memo);\n count++;\n }\n }\n return result;\n}\nfunction truncateString(str, maxLength) {\n if (null == str) return str;\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength) + TRUNCATION_SUFFIX;\n}\nfunction truncateStackFrames(frames) {\n if (!frames || frames.length <= MAX_STACK_FRAMES) return frames;\n const half = Math.floor(MAX_STACK_FRAMES / 2);\n return [\n ...frames.slice(0, half),\n ...frames.slice(-half)\n ];\n}\nfunction truncateExceptionList(error) {\n if (!Array.isArray(error.$exception_list)) return error;\n return {\n ...error,\n $exception_list: error.$exception_list.map((exception)=>{\n const next = {\n ...exception\n };\n if ('string' == typeof next.value) next.value = truncateString(next.value, MAX_ERROR_MESSAGE_LENGTH);\n if (next.stacktrace?.frames) next.stacktrace = {\n ...next.stacktrace,\n frames: truncateStackFrames(next.stacktrace.frames)\n };\n return next;\n })\n };\n}\nfunction truncateResponseContent(response) {\n if (null == response || 'object' != typeof response) return response;\n const result = {\n ...response\n };\n if (Array.isArray(result.content)) result.content = result.content.map((block)=>{\n if (null != block && 'object' == typeof block && 'type' in block && 'text' in block && block?.type === 'text' && 'string' == typeof block.text && block.text.length > MAX_CONTENT_TEXT_LENGTH) return {\n ...block,\n text: block.text.slice(0, MAX_CONTENT_TEXT_LENGTH) + TRUNCATION_SUFFIX\n };\n return block;\n });\n return result;\n}\nconst textEncoder = new TextEncoder();\nfunction jsonByteSize(value) {\n return textEncoder.encode(JSON.stringify(value)).length;\n}\nfunction truncateLargestFields(obj, maxBytes) {\n const result = structuredClone(obj);\n for(let attempt = 0; attempt < 10; attempt++){\n const currentSize = jsonByteSize(result);\n if (currentSize <= maxBytes) break;\n const excess = currentSize - maxBytes;\n const stringPaths = [];\n collectStringPaths(result, [], stringPaths);\n stringPaths.sort((a, b)=>b.length - a.length);\n if (0 === stringPaths.length) break;\n let remaining = excess + 200;\n let truncated = false;\n for (const { path, length } of stringPaths){\n if (remaining <= 0) break;\n const reduction = Math.min(remaining, Math.floor(0.5 * length));\n if (reduction < 10) continue;\n const newLength = length - reduction;\n const currentValue = getNestedValue(result, path);\n if ('string' == typeof currentValue) {\n setNestedValue(result, path, currentValue.slice(0, newLength) + TRUNCATION_SUFFIX);\n remaining -= reduction;\n truncated = true;\n }\n }\n if (!truncated) break;\n }\n return result;\n}\nfunction collectStringPaths(obj, currentPath, results) {\n if ('string' == typeof obj && obj.length > 100) return void results.push({\n path: [\n ...currentPath\n ],\n length: obj.length\n });\n if (Array.isArray(obj)) {\n for (const [i, item] of obj.entries())collectStringPaths(item, [\n ...currentPath,\n String(i)\n ], results);\n return;\n }\n if (null != obj && 'object' == typeof obj) for (const [key, value] of Object.entries(obj))collectStringPaths(value, [\n ...currentPath,\n key\n ], results);\n}\nfunction getNestedValue(obj, path) {\n let current = obj;\n for (const key of path){\n if (null == current || 'object' != typeof current) return;\n current = current[key];\n }\n return current;\n}\nfunction setNestedValue(obj, path, value) {\n let current = obj;\n for(let i = 0; i < path.length - 1; i++){\n if (null == current || 'object' != typeof current) return;\n current = current[path[i]];\n }\n const finalKey = path.at(-1);\n if (void 0 !== finalKey && null != current && 'object' == typeof current) current[finalKey] = value;\n}\nfunction truncateToSize(event) {\n if (jsonByteSize(event) <= MAX_EVENT_BYTES) return event;\n for(let depth = MAX_DEPTH - 1; depth >= 1; depth--){\n const reduced = {\n ...event\n };\n if (null != reduced.parameters) reduced.parameters = normalize(reduced.parameters, depth);\n if (null != reduced.response) reduced.response = normalize(reduced.response, depth);\n if (null != reduced.identifyActorData) reduced.identifyActorData = normalize(reduced.identifyActorData, depth);\n if (null != reduced.error) reduced.error = normalize(reduced.error, depth);\n if (jsonByteSize(reduced) <= MAX_EVENT_BYTES) return reduced;\n }\n const minimal = {\n ...event\n };\n if (null != minimal.parameters) minimal.parameters = normalize(minimal.parameters, 1);\n if (null != minimal.response) minimal.response = normalize(minimal.response, 1);\n if (null != minimal.identifyActorData) minimal.identifyActorData = normalize(minimal.identifyActorData, 1);\n if (null != minimal.error) minimal.error = normalize(minimal.error, 1);\n return truncateLargestFields(minimal, MAX_EVENT_BYTES);\n}\nfunction truncateEvent(event) {\n const result = {\n ...event\n };\n result.userIntent = truncateString(result.userIntent, MAX_USER_INTENT_LENGTH);\n result.resourceName = truncateString(result.resourceName, MAX_RESOURCE_NAME_LENGTH);\n result.serverName = truncateString(result.serverName, MAX_METADATA_LENGTH);\n result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);\n result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);\n result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);\n result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);\n result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);\n result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);\n result.llmModel = truncateString(result.llmModel, MAX_METADATA_LENGTH);\n if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);\n result.response = truncateResponseContent(result.response);\n if (null != result.parameters) result.parameters = normalize(result.parameters);\n if (null != result.response) result.response = normalize(result.response);\n if (null != result.identifyActorData) result.identifyActorData = normalize(result.identifyActorData);\n if (null != result.error) result.error = normalize(result.error);\n return truncateToSize(result);\n}\nexport { MAX_BREADTH, MAX_DEPTH, MAX_EVENT_BYTES, MAX_STRING_LENGTH, normalize, truncateEvent };\n","import { uuidv7 } from \"@posthog/core\";\nimport { log } from \"./logger.mjs\";\nimport { buildPostHogCaptureEvents } from \"./posthog-events.mjs\";\nimport { newPrefixedId } from \"./ids.mjs\";\nimport { sanitizeEvent } from \"./sanitization.mjs\";\nimport { truncateEvent } from \"./truncation.mjs\";\nasync function processMcpEvent(event, options, logger = log) {\n let processed = event;\n try {\n processed = sanitizeEvent(processed);\n } catch (err) {\n logger(`Failed to sanitize event: ${err}`);\n return null;\n }\n try {\n processed = truncateEvent(processed);\n } catch (err) {\n logger(`Failed to truncate event: ${err}`);\n return null;\n }\n processed.id = processed.id || newPrefixedId('evt');\n const fullEvent = processed;\n const built = buildPostHogCaptureEvents(fullEvent, {\n enableExceptionAutocapture: options.enableExceptionAutocapture\n });\n const captures = await applyBeforeSend(built, options.beforeSend, logger);\n return {\n event: fullEvent,\n captures\n };\n}\nasync function applyBeforeSend(captures, beforeSend, logger) {\n if (!beforeSend) return captures;\n const kept = [];\n for (const capture of captures)try {\n const result = await beforeSend(capture);\n if (result) kept.push(result);\n } catch (err) {\n logger(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);\n }\n return kept;\n}\nclass McpEventSink {\n constructor(posthog, logger = log){\n this.posthog = posthog;\n this.logger = logger;\n }\n async capture(event, options) {\n const result = await processMcpEvent(event, options, this.logger);\n if (!result) return;\n const { event: fullEvent, captures } = result;\n try {\n for (const captureEvent of captures){\n const groups = captureEvent.properties.$groups;\n this.posthog.capture({\n distinctId: captureEvent.distinct_id,\n event: captureEvent.event,\n properties: captureEvent.properties,\n ...groups ? {\n groups\n } : {},\n timestamp: new Date(captureEvent.timestamp),\n uuid: uuidv7()\n });\n }\n this.logger(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId ? 'identified' : 'anonymous'}`);\n } catch (err) {\n this.logger(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);\n }\n }\n}\nexport { McpEventSink, processMcpEvent };\n","const version = '0.12.0';\nexport { version };\n","function readHeaderValue(headers, name) {\n if (!headers || 'object' != typeof headers) return;\n const record = headers;\n let value = record[name];\n if (void 0 === value) {\n const key = Object.keys(record).find((k)=>k.toLowerCase() === name);\n value = void 0 === key ? void 0 : record[key];\n }\n return normalizeHeaderString(value);\n}\nfunction normalizeHeaderString(value) {\n const first = Array.isArray(value) ? value[0] : value;\n if ('string' != typeof first) return;\n const trimmed = first.trim();\n return trimmed.length > 0 ? trimmed : void 0;\n}\nexport { normalizeHeaderString, readHeaderValue };\n","function getRequestHeaders(extra) {\n if (!extra || 'object' != typeof extra) return;\n const record = extra;\n const http = record.http;\n const requestInfo = record.requestInfo;\n const source = http?.req?.headers ?? requestInfo?.headers;\n if (!source || 'object' != typeof source) return;\n return toHeaderBag(source);\n}\nfunction toHeaderBag(source) {\n try {\n const entries = isHeadersLike(source) ? [\n ...source.entries()\n ] : Object.entries(source);\n const bag = {};\n for (const [key, value] of entries)if ('string' == typeof key && null != value) {\n if ('string' == typeof value || Array.isArray(value)) bag[key.toLowerCase()] = value;\n }\n return bag;\n } catch {\n return;\n }\n}\nfunction isHeadersLike(source) {\n const candidate = source;\n return 'function' == typeof candidate.entries && 'function' == typeof candidate.get;\n}\nexport { getRequestHeaders };\n","import { hasClientVersionAccessor, hasNegotiatedProtocolVersionAccessor } from \"./detect.mjs\";\nimport { readHeaderValue } from \"./headers.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nconst META_CLIENT_INFO_KEY = 'io.modelcontextprotocol/clientInfo';\nconst META_PROTOCOL_VERSION_KEY = 'io.modelcontextprotocol/protocolVersion';\nconst PROTOCOL_VERSION_HEADER = 'mcp-protocol-version';\nconst MAX_PROTOCOL_VERSION_LENGTH = 64;\nfunction nonEmptyString(value) {\n return 'string' == typeof value && value.length > 0 ? value : void 0;\n}\nfunction readClientInfoValue(value) {\n if (!value || 'object' != typeof value) return;\n const { name, version } = value;\n const result = {};\n const clientName = nonEmptyString(name);\n const clientVersion = nonEmptyString(version);\n if (clientName) result.clientName = clientName;\n if (clientVersion) result.clientVersion = clientVersion;\n return result.clientName || result.clientVersion ? result : void 0;\n}\nfunction readReservedKeys(bag) {\n if (!bag || 'object' != typeof bag) return;\n const record = bag;\n const result = {\n ...readClientInfoValue(record[META_CLIENT_INFO_KEY])\n };\n const protocolVersion = nonEmptyString(record[META_PROTOCOL_VERSION_KEY]);\n if (protocolVersion) result.protocolVersion = protocolVersion;\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction readMetaClientInfo(request) {\n return readReservedKeys(request.params?._meta);\n}\nfunction readEnvelopeClientInfo(extra) {\n return readReservedKeys(extra?.mcpReq?.envelope);\n}\nfunction readHeaderProtocolVersion(extra) {\n const protocolVersion = readHeaderValue(getRequestHeaders(extra), PROTOCOL_VERSION_HEADER);\n if (!protocolVersion || protocolVersion.length > MAX_PROTOCOL_VERSION_LENGTH) return;\n return {\n protocolVersion\n };\n}\nfunction readServerClientIdentity(server) {\n if (!server) return;\n const result = {};\n try {\n if (hasClientVersionAccessor(server)) Object.assign(result, readClientInfoValue(server.getClientVersion()));\n if (hasNegotiatedProtocolVersionAccessor(server)) {\n const negotiated = server.getNegotiatedProtocolVersion();\n const protocolVersion = nonEmptyString(negotiated);\n if (protocolVersion) result.protocolVersion = protocolVersion;\n }\n } catch {}\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction resolveClientIdentity({ request, extra, server }) {\n const chain = [\n readEnvelopeClientInfo(extra),\n readMetaClientInfo(request),\n readHeaderProtocolVersion(extra),\n readServerClientIdentity(server)\n ];\n const result = {};\n for (const source of chain)if (source) {\n result.clientName ??= source.clientName;\n result.clientVersion ??= source.clientVersion;\n result.protocolVersion ??= source.protocolVersion;\n }\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction stampClientIdentity(event, request, extra, server) {\n const info = resolveClientIdentity({\n request,\n extra,\n server\n });\n if (!info) return;\n if (info.clientName) event.clientName = info.clientName;\n if (info.clientVersion) event.clientVersion = info.clientVersion;\n if (info.protocolVersion) event.protocolVersion = info.protocolVersion;\n}\nexport { META_CLIENT_INFO_KEY, META_PROTOCOL_VERSION_KEY, PROTOCOL_VERSION_HEADER, readEnvelopeClientInfo, readHeaderProtocolVersion, readMetaClientInfo, readServerClientIdentity, resolveClientIdentity, stampClientIdentity };\n","import { readHeaderValue } from \"./headers.mjs\";\nconst MCP_SESSION_HEADER = 'mcp-session-id';\nconst MAX_TOKEN_LENGTH = 4096;\nconst MAX_SESSION_ID_LENGTH = 128;\nconst MAX_CLIENT_FIELD_LENGTH = 200;\nconst BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;\nfunction encodeSessionId(payload) {\n if (!payload || 'string' != typeof payload.sessionId || 0 === payload.sessionId.length) throw new Error('encodeSessionId requires a non-empty `sessionId` (use newSessionId())');\n const wire = {\n sid: payload.sessionId\n };\n if ('string' == typeof payload.clientName && payload.clientName.length > 0) wire.cn = payload.clientName.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof payload.clientVersion && payload.clientVersion.length > 0) wire.cv = payload.clientVersion.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof payload.protocolVersion && payload.protocolVersion.length > 0) wire.pv = payload.protocolVersion.slice(0, MAX_CLIENT_FIELD_LENGTH);\n return utf8ToBase64Url(JSON.stringify(wire));\n}\nfunction decodeSessionId(value) {\n if ('string' != typeof value || 0 === value.length || value.length > MAX_TOKEN_LENGTH) return null;\n if (!BASE64URL_PATTERN.test(value)) return null;\n let parsed;\n try {\n parsed = JSON.parse(base64UrlToUtf8(value));\n } catch {\n return null;\n }\n if (!parsed || 'object' != typeof parsed || Array.isArray(parsed)) return null;\n const wire = parsed;\n if ('string' != typeof wire.sid || 0 === wire.sid.length || wire.sid.length > MAX_SESSION_ID_LENGTH) return null;\n const payload = {\n sessionId: wire.sid\n };\n if ('string' == typeof wire.cn && wire.cn.length > 0) payload.clientName = wire.cn.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof wire.cv && wire.cv.length > 0) payload.clientVersion = wire.cv.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof wire.pv && wire.pv.length > 0) payload.protocolVersion = wire.pv.slice(0, MAX_CLIENT_FIELD_LENGTH);\n return payload;\n}\nfunction readMcpSessionHeader(headers) {\n return readHeaderValue(headers, MCP_SESSION_HEADER);\n}\nfunction writeSessionIdToTransport(transport, token) {\n if (!transport || 'object' != typeof transport) return false;\n const outer = transport;\n try {\n outer.sessionId = token;\n } catch {}\n if (outer.sessionId === token) return true;\n const inner = outer._webStandardTransport;\n if (inner && 'object' == typeof inner) try {\n inner.sessionId = token;\n } catch {}\n return outer.sessionId === token;\n}\nfunction utf8ToBase64Url(input) {\n if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');\n const bytes = new TextEncoder().encode(input);\n let binary = '';\n for(let i = 0; i < bytes.length; i++)binary += String.fromCharCode(bytes[i]);\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nfunction base64UrlToUtf8(input) {\n const normalized = input.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');\n const padded = normalized + '='.repeat((4 - normalized.length % 4) % 4);\n if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for(let i = 0; i < binary.length; i++)bytes[i] = binary.charCodeAt(i);\n return new TextDecoder().decode(bytes);\n}\nexport { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport };\n","import { version as external_version_mjs_version } from \"../version.mjs\";\nimport { INACTIVITY_TIMEOUT_IN_MINUTES } from \"./constants.mjs\";\nimport { deterministicPrefixedId, newPrefixedId } from \"./ids.mjs\";\nimport { resolveClientIdentity } from \"./client-identity.mjs\";\nimport { getServerTrackingData, setServerTrackingData } from \"./internal.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nimport { decodeSessionId, readMcpSessionHeader } from \"./session-token.mjs\";\nconst MODERN_PROTOCOL_REVISION = '2026-07-28';\nconst REVISION_SHAPE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst DRAFT_REVISION = 'draft';\nfunction isModernEraRequest(request, extra, server) {\n const requested = request.params?.protocolVersion;\n const version = ('string' == typeof requested && requested.length > 0 ? requested : void 0) ?? resolveClientIdentity({\n request,\n extra,\n server\n })?.protocolVersion;\n if (!version) return false;\n if (version === DRAFT_REVISION) return true;\n return REVISION_SHAPE.test(version) && version >= MODERN_PROTOCOL_REVISION;\n}\nfunction newSessionId() {\n return newPrefixedId('ses');\n}\nfunction deriveSessionIdFromMCPSession(mcpSessionId) {\n return deterministicPrefixedId('ses', mcpSessionId);\n}\nfunction deriveSessionIdFromConversation(conversationId) {\n return deterministicPrefixedId('ses', conversationId);\n}\nfunction getSessionId(server, extra, conversationId) {\n const data = getServerTrackingData(server);\n if (!data) throw new Error('Server tracking data not found');\n if (conversationId) {\n applyTokenClientIdentity(data, extra);\n return deriveSessionIdFromConversation(conversationId);\n }\n const carriedByRequest = readSessionIdFromRequest(data, extra);\n const sessionId = carriedByRequest ?? getSessionIdFromMemory(data);\n data.sessionId = sessionId;\n data.lastActivity = new Date();\n setServerTrackingData(server, data);\n return sessionId;\n}\nfunction applyTokenClientIdentity(data, extra) {\n const token = decodeSessionId(readMcpSessionHeader(getRequestHeaders(extra)));\n if (!token) return;\n data.sessionInfo.clientName = token.clientName;\n data.sessionInfo.clientVersion = token.clientVersion;\n data.sessionInfo.protocolVersion = token.protocolVersion;\n return token;\n}\nfunction readSessionIdFromRequest(data, extra) {\n const token = applyTokenClientIdentity(data, extra);\n if (token) {\n data.sessionSource = 'token';\n return token.sessionId;\n }\n if (extra?.sessionId) {\n data.sessionSource = 'mcp';\n return deriveSessionIdFromMCPSession(extra.sessionId);\n }\n}\nfunction getSessionIdFromMemory(data) {\n const timeoutMs = 60 * INACTIVITY_TIMEOUT_IN_MINUTES * 1000;\n const isStale = Date.now() - data.lastActivity.getTime() > timeoutMs;\n if ('generated' === data.sessionSource && isStale) return newSessionId();\n return data.sessionId;\n}\nfunction getSessionInfo(server, data, sessionId) {\n let clientInfo;\n clientInfo = data?.sessionInfo.clientName ? {\n name: data.sessionInfo.clientName,\n version: data.sessionInfo.clientVersion\n } : server.getClientVersion();\n const actorInfo = data?.identifiedSessions.get(sessionId ?? data.sessionId);\n const sessionInfo = {\n ipAddress: void 0,\n sdkLanguage: 'TypeScript',\n sdkVersion: external_version_mjs_version,\n serverName: server._serverInfo?.name,\n serverVersion: server._serverInfo?.version,\n clientName: clientInfo?.name,\n clientVersion: clientInfo?.version,\n protocolVersion: data?.sessionInfo.protocolVersion,\n identifyActorGivenId: actorInfo?.distinctId,\n identifyActorData: actorInfo?.properties || {},\n identifyActorGroups: actorInfo?.groups\n };\n if (!data) return sessionInfo;\n data.sessionInfo = sessionInfo;\n setServerTrackingData(server, data);\n return {\n ...sessionInfo\n };\n}\nexport { MODERN_PROTOCOL_REVISION, deriveSessionIdFromConversation, deriveSessionIdFromMCPSession, getSessionId, getSessionInfo, isModernEraRequest, newSessionId };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { getSessionInfo } from \"./session.mjs\";\nfunction captureEvent(server, eventInput, logger, requestAttribution) {\n const data = getServerTrackingData(server);\n if (!data) return void logger('Warning: Server tracking data not found. Event will not be published.');\n const sink = data.sink;\n if (!sink) return;\n const sessionInfo = requestAttribution ?? getSessionInfo(server, data, eventInput.sessionId);\n const duration = eventInput.duration || (eventInput.timestamp ? Date.now() - eventInput.timestamp.getTime() : void 0);\n const fullEvent = {\n id: eventInput.id || '',\n sessionId: eventInput.sessionId || data.sessionId,\n eventType: eventInput.eventType || MCPAnalyticsEventType.custom,\n eventName: eventInput.eventName,\n timestamp: eventInput.timestamp || new Date(),\n duration,\n ipAddress: sessionInfo.ipAddress,\n sdkLanguage: sessionInfo.sdkLanguage,\n sdkVersion: sessionInfo.sdkVersion,\n serverName: sessionInfo.serverName,\n serverVersion: sessionInfo.serverVersion,\n clientName: eventInput.clientName ?? sessionInfo.clientName,\n clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,\n clientUserAgent: eventInput.clientUserAgent,\n vendorClient: eventInput.vendorClient,\n identifyActorGivenId: sessionInfo.identifyActorGivenId,\n identifyActorData: sessionInfo.identifyActorData,\n groups: sessionInfo.identifyActorGroups,\n resourceName: eventInput.resourceName,\n protocolVersion: eventInput.protocolVersion ?? sessionInfo.protocolVersion,\n toolCategory: eventInput.toolCategory,\n toolDescription: eventInput.toolDescription,\n listedToolNames: eventInput.listedToolNames,\n parameters: eventInput.parameters,\n response: eventInput.response,\n userIntent: eventInput.userIntent,\n userIntentSource: eventInput.userIntentSource,\n llmModel: eventInput.llmModel,\n llmModelSource: eventInput.llmModelSource,\n isError: eventInput.isError,\n error: eventInput.error,\n errorType: eventInput.errorType,\n conversationId: eventInput.conversationId,\n properties: eventInput.properties\n };\n return sink.capture(fullEvent, {\n enableExceptionAutocapture: data.options.enableExceptionAutocapture ?? true,\n beforeSend: data.options.beforeSend\n });\n}\nexport { captureEvent };\n","import { readHeaderValue } from \"./headers.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nconst CLIENT_USER_AGENT_HEADER = 'user-agent';\nconst VENDOR_CLIENT_HEADER = 'x-anthropic-client';\nfunction readTransportIdentity(extra) {\n const headers = getRequestHeaders(extra);\n if (!headers) return;\n const result = {};\n const clientUserAgent = readHeaderValue(headers, CLIENT_USER_AGENT_HEADER);\n if (clientUserAgent) result.clientUserAgent = clientUserAgent;\n const vendorClient = readHeaderValue(headers, VENDOR_CLIENT_HEADER);\n if (vendorClient) result.vendorClient = vendorClient;\n return result.clientUserAgent || result.vendorClient ? result : void 0;\n}\nfunction stampTransportIdentity(event, extra) {\n const identity = readTransportIdentity(extra);\n if (!identity) return;\n if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;\n if (identity.vendorClient) event.vendorClient = identity.vendorClient;\n}\nexport { CLIENT_USER_AGENT_HEADER, VENDOR_CLIENT_HEADER, readTransportIdentity, stampTransportIdentity };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { captureEvent } from \"./capture.mjs\";\nimport { stampClientIdentity } from \"./client-identity.mjs\";\nimport { stampTransportIdentity } from \"./transport-identity.mjs\";\nclass IdentityCache {\n constructor(maxSize = 1000){\n this._cache = new Map();\n this._maxSize = maxSize;\n }\n get(sessionId) {\n const identity = this._cache.get(sessionId);\n if (void 0 === identity) return;\n this._cache.delete(sessionId);\n this._cache.set(sessionId, identity);\n return identity;\n }\n set(sessionId, identity) {\n this._cache.delete(sessionId);\n if (this._cache.size >= this._maxSize) {\n const oldestKey = this._cache.keys().next().value;\n if (void 0 !== oldestKey) this._cache.delete(oldestKey);\n }\n this._cache.set(sessionId, identity);\n }\n has(sessionId) {\n return this._cache.has(sessionId);\n }\n size() {\n return this._cache.size;\n }\n}\nconst _serverTracking = new WeakMap();\nfunction getServerTrackingData(server) {\n return _serverTracking.get(server);\n}\nfunction setServerTrackingData(server, data) {\n _serverTracking.set(server, data);\n}\nfunction areIdentitiesEqual(a, b) {\n if (a.distinctId !== b.distinctId) return false;\n if (JSON.stringify(a.groups ?? {}) !== JSON.stringify(b.groups ?? {})) return false;\n const aProps = a.properties || {};\n const bProps = b.properties || {};\n const aKeys = Object.keys(aProps);\n const bKeys = Object.keys(bProps);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys){\n if (!(key in bProps)) return false;\n if (JSON.stringify(aProps[key]) !== JSON.stringify(bProps[key])) return false;\n }\n return true;\n}\nfunction mergeIdentities(previous, next) {\n if (!previous) return next;\n return {\n distinctId: next.distinctId,\n properties: {\n ...previous.properties || {},\n ...next.properties || {}\n },\n groups: next.groups ?? previous.groups\n };\n}\nasync function handleIdentify(server, data, sessionId, request, requestAttribution, extra, sessionFromConversation = false) {\n const identityBeforeRequest = data.identifiedSessions.get(sessionId);\n const sessionSourceBeforeIdentify = data.sessionSource;\n if (!data.options.identify) return identityBeforeRequest;\n const identifyEvent = {\n sessionId,\n resourceName: getRequestResourceName(request),\n eventType: MCPAnalyticsEventType.identify,\n parameters: {\n request,\n extra\n },\n timestamp: new Date()\n };\n stampClientIdentity(identifyEvent, request, extra, server);\n stampTransportIdentity(identifyEvent, extra);\n try {\n const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;\n if (identityResult) {\n const previousIdentity = data.identifiedSessions.get(sessionId);\n const mergedIdentity = mergeIdentities(previousIdentity, identityResult);\n const changed = void 0 !== previousIdentity && !areIdentitiesEqual(previousIdentity, mergedIdentity);\n const firstSeen = void 0 === previousIdentity;\n const announcedAtInitialize = !sessionFromConversation && 'token' === sessionSourceBeforeIdentify && 'initialize' !== request.method;\n const shouldPublish = changed || firstSeen && !announcedAtInitialize;\n data.identifiedSessions.set(sessionId, mergedIdentity);\n if (shouldPublish) {\n data.logger(`Identified session ${sessionId}`);\n captureEvent(server, identifyEvent, data.logger, withIdentity(requestAttribution, mergedIdentity));\n }\n return mergedIdentity;\n }\n data.logger(`Warning: Supplied identify function returned null for session ${sessionId}`);\n } catch (error) {\n data.logger(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);\n }\n return identityBeforeRequest;\n}\nfunction withIdentity(sessionInfo, identity) {\n return {\n ...sessionInfo,\n identifyActorGivenId: identity?.distinctId,\n identifyActorData: identity?.properties || {},\n identifyActorGroups: identity?.groups\n };\n}\nasync function resolveEventProperties(data, request, extra) {\n if (!data.options.eventProperties) return null;\n try {\n return await data.options.eventProperties(request, extra) ?? null;\n } catch (e) {\n data.logger(`eventProperties callback error: ${e}`);\n return null;\n }\n}\nfunction getRequestResourceName(request) {\n if (!request || 'object' != typeof request || !('params' in request)) return 'Unknown';\n const params = request.params;\n if (!params || 'object' != typeof params || !('name' in params)) return 'Unknown';\n return 'string' == typeof params.name ? params.name : 'Unknown';\n}\nexport { IdentityCache, areIdentitiesEqual, getServerTrackingData, handleIdentify, mergeIdentities, resolveEventProperties, setServerTrackingData, withIdentity };\n","import { version } from \"../version.mjs\";\nimport { POSTHOG_MCP_LIB_NAME } from \"./constants.mjs\";\nfunction applyMcpLibIdentity(client) {\n client.getLibraryId = ()=>POSTHOG_MCP_LIB_NAME;\n client.getLibraryVersion = ()=>version;\n}\nexport { applyMcpLibIdentity };\n","import { log } from \"./logger.mjs\";\nconst GET_MORE_TOOLS_NAME = 'get_more_tools';\nfunction resolveMissingCapabilityToolName(options) {\n return options?.missingCapabilityToolName ?? GET_MORE_TOOLS_NAME;\n}\nfunction getReportMissingToolDescriptor(name = GET_MORE_TOOLS_NAME) {\n return {\n name,\n description: 'Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.',\n inputSchema: {\n type: 'object',\n properties: {\n context: {\n type: 'string',\n description: \"A description of your goal and what kind of tool would help accomplish it.\"\n }\n },\n required: [\n 'context'\n ]\n },\n annotations: {\n title: 'Get More Tools',\n readOnlyHint: true,\n openWorldHint: true,\n idempotentHint: true,\n destructiveHint: false\n }\n };\n}\nfunction getMoreToolsResult() {\n return {\n content: [\n {\n type: 'text',\n text: 'Unfortunately, we have shown you the full tool list. We have noted your feedback and will work to improve the tool list in the future.'\n }\n ]\n };\n}\nfunction handleReportMissing(args, logger = log) {\n logger(`Missing tool reported: ${JSON.stringify(args)}`);\n return getMoreToolsResult();\n}\nexport { GET_MORE_TOOLS_NAME, getMoreToolsResult, getReportMissingToolDescriptor, handleReportMissing, resolveMissingCapabilityToolName };\n","function getToolFunction(tool) {\n if ('handler' in tool && 'function' == typeof tool.handler) return tool.handler;\n if ('callback' in tool && 'function' == typeof tool.callback) return tool.callback;\n throw new Error('Tool has neither callback nor handler property');\n}\nfunction getToolFunctionKey(tool) {\n if ('handler' in tool && 'function' == typeof tool.handler) return 'handler';\n return 'callback';\n}\nfunction hasToolFunction(tool) {\n if (!tool || 'object' != typeof tool) return false;\n const t = tool;\n return 'handler' in t && 'function' == typeof t.handler || 'callback' in t && 'function' == typeof t.callback;\n}\nfunction createWrappedTool(originalTool, wrappedFunction) {\n const key = getToolFunctionKey(originalTool);\n return {\n ...originalTool,\n [key]: wrappedFunction\n };\n}\nfunction isZ4Schema(schema) {\n if (!schema || 'object' != typeof schema) return false;\n return !!schema._zod;\n}\nfunction isZodTypeLike(value) {\n return !!value && 'object' == typeof value && 'parse' in value && 'function' == typeof value.parse && 'safeParse' in value && 'function' == typeof value.safeParse;\n}\nfunction isZodRawShapeCompat(schema) {\n return !!schema && 'object' == typeof schema && Object.values(schema).some(isZodTypeLike);\n}\nfunction getObjectShape(schema) {\n if (!schema || 'object' != typeof schema) return;\n let rawShape;\n if (isZ4Schema(schema)) {\n const v4Schema = schema;\n rawShape = v4Schema._zod?.def?.shape;\n } else {\n const v3Schema = schema;\n rawShape = v3Schema.shape ?? v3Schema._def?.shape;\n }\n if (!rawShape) return;\n if ('function' == typeof rawShape) try {\n return rawShape();\n } catch {\n return;\n }\n return rawShape;\n}\nfunction readRequestHandlerMethod(requestSchema) {\n if ('string' == typeof requestSchema) return requestSchema;\n const shape = getObjectShape(requestSchema);\n const method = shape?.method ? getLiteralValue(shape.method) : void 0;\n return 'string' == typeof method ? method : void 0;\n}\nfunction getLiteralValue(schema) {\n if (!schema || 'object' != typeof schema) return;\n if (isZ4Schema(schema)) {\n const v4Schema = schema;\n const def = v4Schema._zod?.def;\n if (def?.value !== void 0) return def.value;\n if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];\n } else {\n const v3Schema = schema;\n const def = v3Schema._def;\n if (def?.value !== void 0) return def.value;\n if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];\n }\n const directValue = schema.value;\n if (void 0 !== directValue) return directValue;\n}\nexport { createWrappedTool, getLiteralValue, getObjectShape, getToolFunction, getToolFunctionKey, hasToolFunction, isZ4Schema, isZodRawShapeCompat, readRequestHandlerMethod };\n","import { log } from \"./logger.mjs\";\nconst MCP_INSTRUCTIONS_KEY = '_mcp_instructions';\nconst INSTRUCTIONS_FIELD_DESCRIPTION = 'Server-issued metadata for this conversation.';\nconst CONVERSATION_ID_FIELD_DESCRIPTION = 'The server-issued conversation identifier.';\nfunction canDeclareOutputInstructions(outputSchema) {\n if (!outputSchema || 'object' != typeof outputSchema) return false;\n if (isSchemaObjectLike(outputSchema)) return false;\n const schema = outputSchema;\n if (schema.$ref || schema.oneOf || schema.allOf || schema.anyOf) return false;\n const { properties } = schema;\n if (void 0 !== properties && ('object' != typeof properties || null === properties || Array.isArray(properties))) return false;\n return !properties || !Object.prototype.hasOwnProperty.call(properties, MCP_INSTRUCTIONS_KEY);\n}\nfunction isZodLike(entry) {\n return !!entry && 'object' == typeof entry && ('_def' in entry || '_zod' in entry || '~standard' in entry);\n}\nfunction looksLikeJsonSchema(candidate) {\n if ('string' == typeof candidate.type || 'string' == typeof candidate.$ref) return true;\n if (Array.isArray(candidate.oneOf) || Array.isArray(candidate.allOf) || Array.isArray(candidate.anyOf)) return true;\n const { properties } = candidate;\n return !!properties && 'object' == typeof properties && !isZodLike(properties);\n}\nfunction isSchemaObjectLike(value) {\n const candidate = value;\n if (isZodLike(candidate)) return true;\n if (looksLikeJsonSchema(candidate)) return false;\n return Object.values(candidate).some(isZodLike);\n}\nfunction addInstructionsToOutputSchema(tool, logger = log) {\n const toolName = tool.name || 'unknown';\n const original = tool.outputSchema;\n if (!original || 'object' != typeof original) return tool;\n if (!canDeclareOutputInstructions(original)) {\n const schema = original;\n logger(schema.properties && Object.prototype.hasOwnProperty.call(schema.properties, MCP_INSTRUCTIONS_KEY) ? `WARN: Tool \"${toolName}\" already declares '${MCP_INSTRUCTIONS_KEY}' in its output schema. Leaving it alone.` : `WARN: Tool \"${toolName}\" has a complex output schema (oneOf/allOf/anyOf/$ref). Skipping '${MCP_INSTRUCTIONS_KEY}' declaration; its session handle stays content-only.`);\n return tool;\n }\n const modifiedTool = {\n ...tool\n };\n const outputSchema = JSON.parse(JSON.stringify(original));\n if (!outputSchema.properties) outputSchema.properties = {};\n outputSchema.properties[MCP_INSTRUCTIONS_KEY] = {\n type: 'object',\n description: INSTRUCTIONS_FIELD_DESCRIPTION,\n properties: {\n conversation_id: {\n type: 'string',\n description: CONVERSATION_ID_FIELD_DESCRIPTION\n }\n }\n };\n modifiedTool.outputSchema = outputSchema;\n return modifiedTool;\n}\nfunction addInstructionsToOutputSchemas(tools, logger = log) {\n return tools.map((tool)=>addInstructionsToOutputSchema(tool, logger));\n}\nfunction buildConversationInstructions(conversationId) {\n return {\n conversation_id: conversationId\n };\n}\nfunction mirrorInstructionsIntoStructuredContent(result, conversationId) {\n if (!result || 'object' != typeof result) return result;\n const structuredContent = result.structuredContent;\n if (!structuredContent || 'object' != typeof structuredContent || Array.isArray(structuredContent)) return result;\n if (Object.prototype.hasOwnProperty.call(structuredContent, MCP_INSTRUCTIONS_KEY)) return result;\n return {\n ...result,\n structuredContent: {\n ...structuredContent,\n [MCP_INSTRUCTIONS_KEY]: buildConversationInstructions(conversationId)\n }\n };\n}\nexport { MCP_INSTRUCTIONS_KEY, addInstructionsToOutputSchema, addInstructionsToOutputSchemas, buildConversationInstructions, canDeclareOutputInstructions, mirrorInstructionsIntoStructuredContent };\n","import { log } from \"./logger.mjs\";\nimport { getObjectShape, isZodRawShapeCompat } from \"./mcp-sdk-compat.mjs\";\nimport { canDeclareOutputInstructions } from \"./output-instructions.mjs\";\nconst JSON_SCHEMA_KEYWORDS = [\n '$defs',\n '$ref',\n 'additionalProperties',\n 'allOf',\n 'anyOf',\n 'definitions',\n 'oneOf',\n 'properties',\n 'required',\n 'type'\n];\nfunction hasAnalyticsParameter(schema, parameterName) {\n return !!schema?.properties && Object.prototype.hasOwnProperty.call(schema.properties, parameterName);\n}\nfunction canInjectAnalyticsParameter(schema, parameterName) {\n return !hasAnalyticsParameter(schema, parameterName) && !schema?.$ref && !schema?.oneOf && !schema?.allOf && !schema?.anyOf;\n}\nfunction addAnalyticsParameterToTool(tool, parameterName, description, injectionLabel, logger = log) {\n const modifiedTool = {\n ...tool\n };\n const toolName = tool.name || 'unknown';\n const schema = modifiedTool.inputSchema;\n if (!canInjectAnalyticsParameter(schema, parameterName)) {\n logger(hasAnalyticsParameter(schema, parameterName) ? `WARN: Tool \"${toolName}\" already has '${parameterName}' parameter. Skipping ${injectionLabel} injection.` : `WARN: Tool \"${toolName}\" has complex schema (oneOf/allOf/anyOf/$ref). Skipping ${injectionLabel} injection.`);\n return modifiedTool;\n }\n if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {\n type: 'object',\n properties: {},\n required: []\n };\n modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));\n const inputSchema = modifiedTool.inputSchema;\n if (!inputSchema.properties) inputSchema.properties = {};\n if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;\n inputSchema.properties[parameterName] = {\n type: 'string',\n description\n };\n if (Array.isArray(inputSchema.required)) {\n if (!inputSchema.required.includes(parameterName)) inputSchema.required.push(parameterName);\n } else inputSchema.required = [\n parameterName\n ];\n return modifiedTool;\n}\nfunction analyticsOwnsParameter(inputSchema, parameterName) {\n if (!inputSchema || 'object' != typeof inputSchema) return canInjectAnalyticsParameter(void 0, parameterName);\n if (isZodRawShapeCompat(inputSchema)) return canInjectAnalyticsParameter({\n properties: inputSchema\n }, parameterName);\n const shape = getObjectShape(inputSchema);\n if (shape) return canInjectAnalyticsParameter({\n properties: shape\n }, parameterName);\n const schema = inputSchema;\n if (JSON_SCHEMA_KEYWORDS.some((keyword)=>Object.prototype.hasOwnProperty.call(schema, keyword))) return canInjectAnalyticsParameter(schema, parameterName);\n if ('_def' in schema || '_zod' in schema || '~standard' in schema) return canInjectAnalyticsParameter(void 0, parameterName);\n return canInjectAnalyticsParameter(schema, parameterName);\n}\nfunction getAnalyticsParameterOwnership(inputSchema, outputSchema) {\n return {\n context: analyticsOwnsParameter(inputSchema, 'context'),\n conversationId: analyticsOwnsParameter(inputSchema, 'conversation_id'),\n llmModel: analyticsOwnsParameter(inputSchema, 'llm_model'),\n outputInstructions: canDeclareOutputInstructions(outputSchema)\n };\n}\nfunction stripOwnedAnalyticsArguments(args, ownership) {\n let cleanedArgs = args;\n if (ownership.context && cleanedArgs && 'object' == typeof cleanedArgs && 'context' in cleanedArgs) {\n const { context: _context, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n if (ownership.conversationId && cleanedArgs && 'object' == typeof cleanedArgs && 'conversation_id' in cleanedArgs) {\n const { conversation_id: _conversationId, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n if (ownership.llmModel && cleanedArgs && 'object' == typeof cleanedArgs && 'llm_model' in cleanedArgs) {\n const { llm_model: _llmModel, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n return cleanedArgs;\n}\nexport { addAnalyticsParameterToTool, analyticsOwnsParameter, canInjectAnalyticsParameter, getAnalyticsParameterOwnership, hasAnalyticsParameter, stripOwnedAnalyticsArguments };\n","import { addAnalyticsParameterToTool } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nfunction isContextEnabled(context) {\n return false !== context;\n}\nfunction getContextDescription(context) {\n return 'object' == typeof context ? context.description : void 0;\n}\nfunction addContextParameterToTool(tool, contextDescriptionOverride, logger = log) {\n return addAnalyticsParameterToTool(tool, 'context', contextDescriptionOverride || DEFAULT_CONTEXT_PARAMETER_DESCRIPTION, 'context', logger);\n}\nfunction addContextParameterToTools(tools, contextDescriptionOverride, logger = log) {\n return tools.map((tool)=>addContextParameterToTool(tool, contextDescriptionOverride, logger));\n}\nexport { addContextParameterToTool, addContextParameterToTools, getContextDescription, isContextEnabled };\n","import { addAnalyticsParameterToTool } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_MODEL_PARAMETER_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nfunction isCaptureModelEnabled(captureModel) {\n return true === captureModel || 'object' == typeof captureModel && null !== captureModel;\n}\nfunction getModelDescription(captureModel) {\n return 'object' == typeof captureModel && null !== captureModel ? captureModel.description : void 0;\n}\nfunction addModelParameterToTool(tool, modelDescriptionOverride, logger = log) {\n return addAnalyticsParameterToTool(tool, 'llm_model', modelDescriptionOverride || DEFAULT_MODEL_PARAMETER_DESCRIPTION, 'model', logger);\n}\nfunction addModelParameterToTools(tools, modelDescriptionOverride, logger = log) {\n return tools.map((tool)=>addModelParameterToTool(tool, modelDescriptionOverride, logger));\n}\nfunction getModelArgument(request) {\n const model = request.params?.arguments?.llm_model;\n if ('string' != typeof model) return;\n const trimmed = model.trim();\n if (!trimmed || 'unknown' === trimmed.toLowerCase()) return;\n return trimmed;\n}\nfunction setEventModel(event, model) {\n if (!model) return;\n event.llmModel = model;\n event.llmModelSource = 'self_reported';\n}\nexport { addModelParameterToTool, addModelParameterToTools, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel };\n","import { uuidv7 } from \"@posthog/core\";\nimport { canInjectAnalyticsParameter, hasAnalyticsParameter } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_CONVERSATION_ID_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nconst CONVERSATION_ID_PARAM_NAME = 'conversation_id';\nfunction addConversationIdToTool(tool, logger = log) {\n const modifiedTool = {\n ...tool\n };\n const toolName = tool.name || 'unknown';\n const schema = modifiedTool.inputSchema;\n if (!canInjectAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME)) {\n logger(hasAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME) ? `WARN: Tool \"${toolName}\" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.` : `WARN: Tool \"${toolName}\" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);\n return modifiedTool;\n }\n if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {\n type: 'object',\n properties: {},\n required: []\n };\n modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));\n const inputSchema = modifiedTool.inputSchema;\n if (!inputSchema.properties) inputSchema.properties = {};\n if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;\n inputSchema.properties[CONVERSATION_ID_PARAM_NAME] = {\n type: 'string',\n description: DEFAULT_CONVERSATION_ID_DESCRIPTION\n };\n return modifiedTool;\n}\nfunction addConversationIdToTools(tools, logger = log) {\n return tools.map((tool)=>addConversationIdToTool(tool, logger));\n}\nconst MINTED_CONVERSATION_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nfunction resolveConversationId(enabled, args) {\n if (!enabled) return {\n minted: false,\n conversationId: void 0\n };\n const supplied = extractConversationId(args);\n if (supplied && MINTED_CONVERSATION_ID.test(supplied)) return {\n minted: false,\n conversationId: supplied.toLowerCase()\n };\n return {\n minted: true,\n conversationId: uuidv7()\n };\n}\nfunction canInjectConversationIdPromptBack(result) {\n if (!(result && 'object' == typeof result)) return false;\n return Array.isArray(result.content);\n}\nfunction extractConversationId(args) {\n if (!(args && 'object' == typeof args)) return;\n const value = args[CONVERSATION_ID_PARAM_NAME];\n if ('string' != typeof value) return;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : void 0;\n}\nfunction stripConversationId(args) {\n if (!args || 'object' != typeof args || !(CONVERSATION_ID_PARAM_NAME in args)) return args;\n const { [CONVERSATION_ID_PARAM_NAME]: _omit, ...rest } = args;\n return rest;\n}\nfunction buildConversationIdPromptBack(conversationId) {\n return {\n type: 'text',\n text: JSON.stringify({\n conversation_id: conversationId\n })\n };\n}\nfunction injectConversationIdPromptBack(result, conversationId) {\n if (!canInjectConversationIdPromptBack(result)) return result;\n const resultObj = result;\n return {\n ...resultObj,\n content: [\n ...resultObj.content,\n buildConversationIdPromptBack(conversationId)\n ]\n };\n}\nexport { CONVERSATION_ID_PARAM_NAME, addConversationIdToTool, addConversationIdToTools, buildConversationIdPromptBack, canInjectConversationIdPromptBack, extractConversationId, injectConversationIdPromptBack, resolveConversationId, stripConversationId };\n","import { ErrorTracking } from \"@posthog/core\";\nconst errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([\n new ErrorTracking.EventCoercer(),\n new ErrorTracking.ErrorCoercer(),\n new ErrorTracking.ObjectCoercer(),\n new ErrorTracking.StringCoercer(),\n new ErrorTracking.PrimitiveCoercer()\n], ErrorTracking.createStackParser(\"node:javascript\", ErrorTracking.nodeStackLineParser));\nfunction captureException(error) {\n const normalized = isCallToolResult(error) ? extractCallToolResultMessage(error) : error;\n return errorPropertiesBuilder.buildFromUnknown(normalized);\n}\nfunction isCallToolResult(value) {\n return null !== value && 'object' == typeof value && 'isError' in value && 'content' in value && Array.isArray(value.content);\n}\nfunction isTextContentPart(value) {\n if (null === value || 'object' != typeof value) return false;\n const contentPart = value;\n return 'text' === contentPart.type && 'string' == typeof contentPart.text;\n}\nfunction extractCallToolResultMessage(result) {\n return result.content.filter(isTextContentPart).map((contentPart)=>contentPart.text).join(' ').trim() || 'Unknown error';\n}\nexport { captureException };\n","import { isContextEnabled } from \"./context-parameters.mjs\";\nfunction getContextArgument(request) {\n const context = request.params?.arguments?.context;\n return 'string' == typeof context && context.trim() ? context : void 0;\n}\nfunction normalizeIntent(intent) {\n if ('string' != typeof intent) return null;\n const trimmed = intent.trim();\n return trimmed ? trimmed : null;\n}\nasync function runIntentFallback(data, request, extra) {\n if (!data.options.intentFallback) return null;\n try {\n const intent = normalizeIntent(await data.options.intentFallback(request, extra));\n return intent ? {\n intent,\n source: 'inferred'\n } : null;\n } catch (error) {\n data.logger(`intentFallback callback error: ${error}`);\n return null;\n }\n}\nasync function resolveToolCallIntent(data, request, canCaptureContext, extra) {\n const contextArgument = getContextArgument(request);\n if (canCaptureContext && isContextEnabled(data.options.context) && contextArgument) return {\n intent: contextArgument,\n source: 'context_parameter'\n };\n return await runIntentFallback(data, request, extra);\n}\nfunction setEventIntent(event, resolvedIntent) {\n if (!resolvedIntent) return;\n event.userIntent = resolvedIntent.intent;\n event.userIntentSource = resolvedIntent.source;\n}\nfunction setExplicitContextIntent(event, context) {\n const intent = normalizeIntent(context);\n if (!intent) return;\n event.userIntent = intent;\n event.userIntentSource = 'context_parameter';\n}\nexport { resolveToolCallIntent, setEventIntent, setExplicitContextIntent };\n","import { resolveEventProperties } from \"./internal.mjs\";\nfunction isToolResultError(result) {\n return !!result && 'object' == typeof result && 'isError' in result && true === result.isError;\n}\nasync function applyResolvedMetadata(event, data, request, extra) {\n const resolvedProperties = await resolveEventProperties(data, request, extra);\n if (resolvedProperties) event.properties = resolvedProperties;\n}\nfunction getContextArgument(request) {\n const context = request.params?.arguments?.context;\n return 'string' == typeof context ? context : void 0;\n}\nfunction getEventDuration(event) {\n return event.timestamp ? Date.now() - event.timestamp.getTime() : 0;\n}\nexport { applyResolvedMetadata, getContextArgument, getEventDuration, isToolResultError };\n","import { getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from \"./analytics-parameters.mjs\";\nimport { addContextParameterToTools, getContextDescription, isContextEnabled } from \"./context-parameters.mjs\";\nimport { addModelParameterToTools, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel } from \"./model-parameters.mjs\";\nimport { addConversationIdToTools, canInjectConversationIdPromptBack, injectConversationIdPromptBack, resolveConversationId } from \"./conversation-id.mjs\";\nimport { stampClientIdentity } from \"./client-identity.mjs\";\nimport { stampTransportIdentity } from \"./transport-identity.mjs\";\nimport { addInstructionsToOutputSchemas, mirrorInstructionsIntoStructuredContent } from \"./output-instructions.mjs\";\nimport { captureEvent } from \"./capture.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { captureException } from \"./exceptions.mjs\";\nimport { resolveToolCallIntent, setEventIntent, setExplicitContextIntent } from \"./intent.mjs\";\nimport { getServerTrackingData, handleIdentify, setServerTrackingData, withIdentity } from \"./internal.mjs\";\nimport { buildCapturedMcpParameters } from \"./mcp-payloads.mjs\";\nimport { readRequestHandlerMethod } from \"./mcp-sdk-compat.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nimport { getSessionId, getSessionInfo, isModernEraRequest, newSessionId } from \"./session.mjs\";\nimport { encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport } from \"./session-token.mjs\";\nimport { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { applyResolvedMetadata, isToolResultError } from \"./tracing-helpers.mjs\";\nasync function captureToolCall(params) {\n const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;\n const resolvedEventType = eventType ?? MCPAnalyticsEventType.mcpToolsCall;\n const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership, resolvedEventType === MCPAnalyticsEventType.mcpMissingCapability);\n const canCaptureContextIntent = resolvedEventType !== MCPAnalyticsEventType.mcpMissingCapability && isContextEnabled(data.options.context) && (ownership.context || !ownership.contextOwnershipKnown);\n const conversation = resolveConversationId(ownership.conversationId, request.params?.arguments);\n const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);\n const startTime = new Date();\n const preparedEvent = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, resolvedEventType, canCaptureContextIntent);\n if (preparedEvent && explicitContextIntent) setExplicitContextIntent(preparedEvent.event, explicitContextIntent);\n let result;\n try {\n result = await execute(downstreamRequest);\n } catch (error) {\n publishFailedToolEvent(server, preparedEvent, error, startTime, conversation, data.logger);\n throw error;\n }\n const finalResult = applyConversationInstructions(preparedEvent?.event ?? null, result, conversation, ownership);\n publishSuccessfulToolEvent(server, preparedEvent, finalResult, startTime, data.logger, takeCapturedError, result);\n return finalResult;\n}\nfunction getActiveAnalyticsParameterOwnership(data, toolName, override, isMissingCapabilityTool) {\n const listed = toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0;\n const ownership = override ?? listed;\n return {\n contextOwnershipKnown: void 0 !== ownership,\n context: !isMissingCapabilityTool && isContextEnabled(data.options.context) && ownership?.context === true,\n conversationId: true === data.options.enableConversationId && ownership?.conversationId === true,\n llmModel: isCaptureModelEnabled(data.options.captureModel) && ownership?.llmModel === true,\n outputInstructions: true === data.options.enableConversationId && listed?.outputInstructions === true\n };\n}\nfunction cloneRequestWithoutOwnedAnalyticsArguments(request, ownership) {\n const args = request.params?.arguments;\n const cleanedArgs = stripOwnedAnalyticsArguments(args, ownership);\n if (cleanedArgs === args || !request.params) return request;\n return {\n ...request,\n params: {\n ...request.params,\n arguments: cleanedArgs\n }\n };\n}\nasync function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType, canCaptureContextIntent) {\n try {\n const sessionId = getSessionId(server, extra, conversation.conversationId);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const toolName = request.params?.name;\n const event = {\n sessionId,\n conversationId: conversation.conversationId,\n resourceName: toolName || 'Unknown Tool Name',\n parameters: buildCapturedMcpParameters(downstreamRequest),\n eventType,\n timestamp: startTime,\n toolCategory: toolName ? data.toolCategories.get(toolName) : void 0,\n toolDescription: toolName ? data.toolDescriptions.get(toolName) : void 0\n };\n stampClientIdentity(event, request, extra, server);\n stampTransportIdentity(event, extra);\n const identity = await handleIdentify(server, data, sessionId, request, sessionInfo, extra, !!conversation.conversationId);\n const requestAttribution = withIdentity(sessionInfo, identity);\n await applyResolvedMetadata(event, data, request, extra);\n setEventIntent(event, await resolveToolCallIntent(data, request, canCaptureContextIntent, extra));\n if (ownership.llmModel) setEventModel(event, getModelArgument(request));\n return {\n event,\n requestAttribution\n };\n } catch (error) {\n data.logger(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);\n return null;\n }\n}\nfunction applyConversationInstructions(event, result, conversation, ownership) {\n const conversationId = conversation.conversationId;\n if (!conversationId) return result;\n let updated = result;\n let delivered = false;\n if (ownership.outputInstructions) {\n const mirrored = mirrorInstructionsIntoStructuredContent(updated, conversationId);\n delivered = mirrored !== updated;\n updated = mirrored;\n }\n if (conversation.minted && canInjectConversationIdPromptBack(updated)) {\n updated = injectConversationIdPromptBack(updated, conversationId);\n delivered = true;\n }\n if (!delivered && conversation.minted && event) event.conversationId = void 0;\n return updated;\n}\nfunction publishSuccessfulToolEvent(server, preparedEvent, result, startTime, logger, takeCapturedError, resultBeforeInstructions) {\n if (!preparedEvent) return;\n const { event, requestAttribution } = preparedEvent;\n try {\n if (isToolResultError(result)) {\n event.isError = true;\n const capturedError = takeCapturedError?.();\n event.error = captureException(capturedError ?? resultBeforeInstructions ?? result);\n } else event.isError = false;\n event.response = result;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, logger, requestAttribution);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);\n }\n}\nfunction publishFailedToolEvent(server, preparedEvent, error, startTime, conversation, logger) {\n if (!preparedEvent) return;\n const { event, requestAttribution } = preparedEvent;\n try {\n if (conversation.minted) event.conversationId = void 0;\n event.isError = true;\n event.error = captureException(error);\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, logger, requestAttribution);\n } catch (publishError) {\n logger(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);\n }\n}\nconst originalRequestHandlers = new WeakMap();\nfunction rememberOriginalRequestHandler(server, handlerName, originalHandler) {\n let handlers = originalRequestHandlers.get(server);\n if (!handlers) {\n handlers = new Map();\n originalRequestHandlers.set(server, handlers);\n }\n handlers.set(handlerName, originalHandler);\n}\nfunction registerFallbackRequestHandler(server, handlerName, fallbackHandler, patch) {\n rememberOriginalRequestHandler(server, handlerName, fallbackHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, fallbackHandler, request, extra));\n}\nfunction patchRequestHandlers(server, patches) {\n for (const [handlerName, patch] of Object.entries(patches)){\n const originalHandler = server._requestHandlers.get(handlerName);\n if (originalHandler) {\n rememberOriginalRequestHandler(server, handlerName, originalHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));\n }\n }\n const originalSetRequestHandler = server.setRequestHandler.bind(server);\n server.setRequestHandler = (...args)=>{\n const handlerName = readRequestHandlerMethod(args[0]);\n const patch = void 0 !== handlerName && Object.prototype.hasOwnProperty.call(patches, handlerName) ? patches[handlerName] : void 0;\n if (void 0 === handlerName || !patch) return originalSetRequestHandler(...args);\n const result = originalSetRequestHandler(...args);\n const registeredHandler = server._requestHandlers.get(handlerName);\n if (registeredHandler) {\n rememberOriginalRequestHandler(server, handlerName, registeredHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, registeredHandler, request, extra));\n }\n return result;\n };\n}\nfunction getVirtualToolParameterOwnership(data, toolName) {\n return {\n ...getAnalyticsParameterOwnership(getReportMissingToolDescriptor(toolName).inputSchema),\n conversationId: data.toolAnalyticsParameterOwnership.get(toolName)?.conversationId === true\n };\n}\nasync function isToolAdvertised(server, toolName, extra, logger) {\n const listHandler = originalRequestHandlers.get(server)?.get('tools/list');\n if (!listHandler || !server._requestHandlers.has('tools/list')) return;\n try {\n const response = await listHandler({\n method: 'tools/list',\n params: {}\n }, extra);\n if (!response || !Array.isArray(response.tools)) return;\n return response.tools.some((tool)=>tool?.name === toolName);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics could not determine whether \"${toolName}\" is advertised; delegating to the server - ${error}`);\n return;\n }\n}\nasync function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n const startTime = new Date();\n const sessionId = getSessionId(server, extra);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const event = {\n sessionId,\n parameters: buildCapturedMcpParameters(request),\n eventType: MCPAnalyticsEventType.mcpToolsList,\n timestamp: startTime\n };\n stampClientIdentity(event, request, extra, server);\n stampTransportIdentity(event, extra);\n const identity = data ? await handleIdentify(server, data, sessionId, request, sessionInfo, extra) : void 0;\n const requestAttribution = withIdentity(sessionInfo, identity);\n if (data) await applyResolvedMetadata(event, data, request, extra);\n const response = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);\n const tools = response.tools;\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return response;\n }\n if (0 === tools.length) {\n data.logger('Warning: No tools found in the original list. This is likely due to the tools not being registered before PostHog MCP analytics.instrument().');\n event.error = captureException('No tools were sent to MCP client.');\n event.isError = true;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, data.logger, requestAttribution);\n return response;\n }\n event.response = response;\n event.listedToolNames = collectListedToolNames(tools);\n event.isError = false;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, data.logger, requestAttribution);\n return response;\n}\nfunction cacheToolAnalyticsParameterOwnership(cache, tools) {\n for (const tool of tools)if (tool?.name) cache.set(tool.name, getAnalyticsParameterOwnership(tool.inputSchema, tool.outputSchema));\n}\nfunction collectListedToolNames(tools) {\n if (!tools || 0 === tools.length) return;\n const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);\n return names.length > 0 ? names : void 0;\n}\nasync function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution) {\n try {\n const data = getServerTrackingData(server);\n const originalResponse = await originalListToolsHandler(request, extra);\n let tools = [\n ...originalResponse.tools || []\n ];\n if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);\n if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context), data.logger);\n if (data) {\n const missingToolName = resolveMissingCapabilityToolName(data.options);\n if (data.options.reportMissing) {\n const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);\n if (alreadyPresent) data.logger(`Warning: Cannot inject missing-capability tool \"${missingToolName}\" because a real tool already uses that name. The real tool will not be intercepted.`);\n else {\n const virtualTool = getReportMissingToolDescriptor(missingToolName);\n tools.push(virtualTool);\n cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, [\n virtualTool\n ]);\n }\n }\n if (isCaptureModelEnabled(data.options.captureModel)) tools = addModelParameterToTools(tools, getModelDescription(data.options.captureModel), data.logger);\n if (data.options.enableConversationId) {\n tools = addConversationIdToTools(tools, data.logger);\n tools = addInstructionsToOutputSchemas(tools, data.logger);\n }\n }\n if (data) {\n cacheToolDescriptions(data.toolDescriptions, tools);\n cacheToolCategories(data.toolCategories, tools);\n }\n return {\n ...originalResponse,\n tools\n };\n } catch (error) {\n logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);\n event.error = captureException(error);\n event.isError = true;\n event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;\n captureEvent(server, event, logger, requestAttribution);\n throw error;\n }\n}\nfunction cacheToolDescriptions(cache, tools) {\n if (!tools) return;\n for (const tool of tools)if (tool?.name && 'string' == typeof tool.description) cache.set(tool.name, tool.description);\n}\nfunction readToolMetaCategory(meta) {\n const category = meta?.category;\n return 'string' == typeof category && category.length > 0 ? category : void 0;\n}\nfunction cacheToolCategories(cache, tools) {\n if (!tools) return;\n for (const tool of tools){\n const category = tool?.name ? readToolMetaCategory(tool._meta) : void 0;\n if (category) cache.set(tool.name, category);\n }\n}\nfunction mintStatelessSessionOnInitialize(server, data, request, extra) {\n try {\n const headers = getRequestHeaders(extra);\n if (!headers) return;\n if (isModernEraRequest(request, extra, server)) return;\n if (readMcpSessionHeader(headers)) return;\n const transport = server.transport;\n if (!transport || extra?.sessionId || transport.sessionId) return;\n const sessionId = newSessionId();\n const clientInfo = readInitializeClientInfo(request);\n const requestedProtocolVersion = readProtocolVersion(void 0, request);\n const token = encodeSessionId({\n sessionId,\n clientName: clientInfo?.name,\n clientVersion: clientInfo?.version,\n protocolVersion: requestedProtocolVersion\n });\n if (!writeSessionIdToTransport(transport, token)) return;\n data.sessionId = sessionId;\n data.sessionSource = 'token';\n data.sessionInfo.clientName = clientInfo?.name;\n data.sessionInfo.clientVersion = clientInfo?.version;\n data.sessionInfo.protocolVersion = requestedProtocolVersion;\n data.lastActivity = new Date();\n setServerTrackingData(server, data);\n return sessionId;\n } catch (error) {\n data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);\n return;\n }\n}\nfunction upgradeMintedTokenToNegotiated(server, mintedSessionId, sessionInfo, negotiatedProtocolVersion, logger) {\n try {\n const transport = server.transport;\n if (!transport) return;\n const token = encodeSessionId({\n sessionId: mintedSessionId,\n clientName: sessionInfo.clientName,\n clientVersion: sessionInfo.clientVersion,\n protocolVersion: negotiatedProtocolVersion\n });\n writeSessionIdToTransport(transport, token);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);\n }\n}\nfunction readInitializeClientInfo(request) {\n const clientInfo = request.params?.clientInfo;\n if (!clientInfo || 'object' != typeof clientInfo) return;\n const { name, version } = clientInfo;\n return {\n name: 'string' == typeof name ? name : void 0,\n version: 'string' == typeof version ? version : void 0\n };\n}\nasync function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalInitializeHandler(request, extra);\n }\n const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);\n const sessionId = getSessionId(server, extra);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const initializeClientInfo = readInitializeClientInfo(request);\n const requestSessionInfo = {\n ...sessionInfo,\n clientName: initializeClientInfo?.name ?? sessionInfo.clientName,\n clientVersion: initializeClientInfo?.version ?? sessionInfo.clientVersion\n };\n const event = {\n sessionId,\n resourceName: request.params?.name || 'Unknown Tool Name',\n eventType: MCPAnalyticsEventType.mcpInitialize,\n parameters: buildCapturedMcpParameters(request),\n timestamp: new Date()\n };\n stampClientIdentity(event, request, extra, server);\n if (initializeClientInfo?.name) event.clientName = initializeClientInfo.name;\n if (initializeClientInfo?.version) event.clientVersion = initializeClientInfo.version;\n stampTransportIdentity(event, extra);\n const identity = await handleIdentify(server, data, sessionId, request, requestSessionInfo, extra);\n const requestAttribution = withIdentity(requestSessionInfo, identity);\n await applyResolvedMetadata(event, data, request, extra);\n const result = await originalInitializeHandler(request, extra);\n event.response = result;\n const negotiatedProtocolVersion = readProtocolVersion(result, request);\n event.protocolVersion = negotiatedProtocolVersion;\n if (data.sessionId === sessionId) {\n data.sessionInfo = {\n ...data.sessionInfo,\n protocolVersion: negotiatedProtocolVersion\n };\n setServerTrackingData(server, data);\n }\n if (mintedSessionId) upgradeMintedTokenToNegotiated(server, mintedSessionId, requestSessionInfo, negotiatedProtocolVersion, data.logger);\n captureEvent(server, event, data.logger, {\n ...requestAttribution,\n protocolVersion: negotiatedProtocolVersion\n });\n return result;\n}\nfunction readProtocolVersion(result, request) {\n const negotiated = result?.protocolVersion;\n if ('string' == typeof negotiated && negotiated.length > 0) return negotiated;\n const requested = request.params?.protocolVersion;\n return 'string' == typeof requested && requested.length > 0 ? requested : void 0;\n}\nexport { cacheToolCategories, cacheToolDescriptions, captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory, registerFallbackRequestHandler };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { handleReportMissing, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, registerFallbackRequestHandler } from \"./instrumentation.mjs\";\nimport { getContextArgument } from \"./tracing-helpers.mjs\";\nfunction instrumentLowLevelServer(server, logger) {\n try {\n const hadCallToolHandler = server._requestHandlers.has('tools/call');\n const traceToolCall = (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger);\n const handlers = {\n initialize: (server, originalHandler, request, extra)=>handleInitializeRequest(server, originalHandler, request, extra, logger),\n 'tools/list': (server, originalHandler, request, extra)=>handleListToolsRequest(server, originalHandler, request, extra, logger),\n 'tools/call': traceToolCall\n };\n patchRequestHandlers(server, handlers);\n if (!hadCallToolHandler) registerFallbackRequestHandler(server, 'tools/call', unknownToolHandler, traceToolCall);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n throw error;\n }\n}\nasync function unknownToolHandler(request) {\n throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);\n}\nasync function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalCallToolHandler?.(request, extra);\n }\n const toolName = request.params?.name;\n const isMissingCapabilityCandidate = data.options.reportMissing && toolName === resolveMissingCapabilityToolName(data.options);\n if (isMissingCapabilityCandidate && await isToolAdvertised(server, toolName, extra, data.logger) === false) {\n const context = getContextArgument(request) || '';\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n eventType: MCPAnalyticsEventType.mcpMissingCapability,\n explicitContextIntent: context,\n parameterOwnership: getVirtualToolParameterOwnership(data, toolName),\n execute: async ()=>handleReportMissing({\n context\n }, data.logger)\n });\n }\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n execute: (downstreamRequest)=>runOriginalToolHandler(originalCallToolHandler, downstreamRequest, extra)\n });\n}\nfunction runOriginalToolHandler(handler, request, extra) {\n if (!handler) throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);\n return handler(request, extra);\n}\nexport { instrumentLowLevelServer };\n","import { analyticsOwnsParameter, getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from \"./analytics-parameters.mjs\";\nimport { isContextEnabled } from \"./context-parameters.mjs\";\nimport { isCaptureModelEnabled } from \"./model-parameters.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { createWrappedTool, getToolFunction, hasToolFunction } from \"./mcp-sdk-compat.mjs\";\nimport { handleReportMissing, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory } from \"./instrumentation.mjs\";\nimport { getContextArgument } from \"./tracing-helpers.mjs\";\nconst wrappedCallbacks = new WeakMap();\nconst MCP_ANALYTICS_PROCESSED = Symbol('__posthog_mcp_analytics_processed__');\nfunction isCallbackUpdate(value) {\n return !!value && 'object' == typeof value && 'callback' in value && 'function' == typeof value.callback;\n}\nfunction addTracingToToolRegistry(tools, server, logger) {\n return Object.fromEntries(Object.entries(tools).map(([name, tool])=>[\n name,\n addTracingToToolCallbackInternal(tool, name, server, ()=>tool.inputSchema, logger)\n ]));\n}\nfunction setupListenerToRegisteredTools(server, logger) {\n try {\n const data = getServerTrackingData(server.server);\n if (!data) return void logger('Warning: Cannot setup listener - no tracking data found');\n const handler = {\n set (target, property, value) {\n try {\n if ('string' == typeof property && value && 'object' == typeof value && hasToolFunction(value)) {\n if ('string' == typeof value.description) data.toolDescriptions.set(property, value.description);\n if (value[MCP_ANALYTICS_PROCESSED]) {\n logger(`Tool ${String(property)} already processed, skipping proxy wrapping`);\n return Reflect.set(target, property, value);\n }\n if (wrappedCallbacks.has(getToolFunction(value))) {\n logger(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);\n return Reflect.set(target, property, value);\n }\n const getCurrentInputSchema = ()=>value.inputSchema;\n const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema, logger);\n if ('function' == typeof nextValue.update) {\n const originalUpdate = nextValue.update;\n nextValue.update = function(...updateArgs) {\n if (updateArgs[0]) {\n const updateObj = updateArgs[0];\n if (isCallbackUpdate(updateObj)) {\n const wrappedTool = addTracingToToolCallbackInternal({\n callback: updateObj.callback\n }, property, server, getCurrentInputSchema, logger);\n updateObj.callback = getToolFunction(wrappedTool);\n }\n }\n return originalUpdate.apply(this, updateArgs);\n };\n }\n return Reflect.set(target, property, nextValue);\n }\n return Reflect.set(target, property, value);\n } catch (error) {\n logger(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);\n return Reflect.set(target, property, value);\n }\n },\n get (target, property) {\n return Reflect.get(target, property);\n },\n deleteProperty (target, property) {\n return Reflect.deleteProperty(target, property);\n },\n has (target, property) {\n return Reflect.has(target, property);\n }\n };\n const originalTools = server._registeredTools || {};\n server._registeredTools = new Proxy(originalTools, handler);\n logger('Successfully set up listener for new tool registrations');\n } catch (error) {\n logger(`Warning: Failed to setup listener for registered tools - ${error}`);\n }\n}\nfunction addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema, logger) {\n const originalCallback = getToolFunction(tool);\n const options = getServerTrackingData(server.server)?.options;\n if (wrappedCallbacks.has(originalCallback)) {\n logger(`Tool ${toolName} callback already wrapped, skipping re-wrap`);\n return tool;\n }\n if (tool[MCP_ANALYTICS_PROCESSED]) {\n logger(`Tool ${toolName} already processed, skipping re-wrap`);\n return tool;\n }\n const wrappedCallback = async (...params)=>{\n let args;\n let extra;\n if (2 === params.length) {\n args = params[0];\n extra = params[1];\n } else {\n args = void 0;\n extra = params[0];\n }\n const inputSchema = getCurrentInputSchema();\n const cleanedArgs = stripOwnedAnalyticsArguments(args, {\n context: isContextEnabled(options?.context) && analyticsOwnsParameter(inputSchema, 'context'),\n conversationId: options?.enableConversationId === true && analyticsOwnsParameter(inputSchema, 'conversation_id'),\n llmModel: isCaptureModelEnabled(options?.captureModel) && analyticsOwnsParameter(inputSchema, 'llm_model')\n });\n try {\n if (void 0 === cleanedArgs) {\n const handler = originalCallback;\n return await handler(extra);\n }\n const handler = originalCallback;\n return await handler(cleanedArgs, extra);\n } catch (error) {\n if (error instanceof Error) extra.__mcp_analytics_error = error;\n throw error;\n }\n };\n wrappedCallbacks.set(originalCallback, true);\n wrappedCallbacks.set(wrappedCallback, true);\n const wrappedTool = createWrappedTool(tool, wrappedCallback);\n wrappedTool[MCP_ANALYTICS_PROCESSED] = true;\n return wrappedTool;\n}\nasync function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalCallToolHandler(request, extra);\n }\n const toolName = request.params?.name;\n const isMissingCapabilityCandidate = data.options.reportMissing && toolName === resolveMissingCapabilityToolName(data.options);\n if (isMissingCapabilityCandidate && await isToolAdvertised(server, toolName, extra, data.logger) === false) {\n const context = getContextArgument(request) || '';\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n eventType: MCPAnalyticsEventType.mcpMissingCapability,\n explicitContextIntent: context,\n parameterOwnership: getVirtualToolParameterOwnership(data, toolName),\n execute: async ()=>handleReportMissing({\n context\n }, data.logger)\n });\n }\n const registeredTool = toolName ? highLevelServer._registeredTools[toolName] : void 0;\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n execute: (downstreamRequest)=>originalCallToolHandler(downstreamRequest, extra),\n parameterOwnership: registeredTool ? getAnalyticsParameterOwnership(registeredTool.inputSchema, registeredTool.outputSchema) : void 0,\n takeCapturedError: ()=>{\n const captured = extra?.__mcp_analytics_error;\n if (extra) extra.__mcp_analytics_error = void 0;\n return captured;\n }\n });\n}\nfunction instrumentHighLevelServer(server, logger) {\n try {\n const lowLevelServer = server.server;\n const mcpAnalyticsData = getServerTrackingData(lowLevelServer);\n const handlers = {\n initialize: (trackedServer, originalHandler, request, extra)=>handleInitializeRequest(trackedServer, originalHandler, request, extra, logger),\n 'tools/list': (trackedServer, originalHandler, request, extra)=>handleListToolsRequest(trackedServer, originalHandler, request, extra, logger),\n 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra, logger)\n };\n patchRequestHandlers(lowLevelServer, handlers);\n server._registeredTools = addTracingToToolRegistry(server._registeredTools, server, logger);\n if (mcpAnalyticsData) {\n seedToolDescriptionsFromRegistry(mcpAnalyticsData.toolDescriptions, server._registeredTools);\n seedToolCategoriesFromRegistry(mcpAnalyticsData.toolCategories, server._registeredTools);\n }\n setupListenerToRegisteredTools(server, logger);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n }\n}\nfunction seedToolDescriptionsFromRegistry(cache, tools) {\n for (const [name, tool] of Object.entries(tools))if ('string' == typeof tool?.description) cache.set(name, tool.description);\n}\nfunction seedToolCategoriesFromRegistry(cache, tools) {\n for (const [name, tool] of Object.entries(tools)){\n const category = readToolMetaCategory(tool?._meta);\n if (category) cache.set(name, category);\n }\n}\nexport { instrumentHighLevelServer };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nconst flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{\n const value = detail.variant ?? detail.enabled;\n const rawPayload = detail.metadata?.payload;\n return {\n key: detail.key,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value),\n payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null\n };\n });\nconst MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gad_source',\n 'mc_cid',\n 'gclid',\n 'gclsrc',\n 'dclid',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n 'twclid',\n 'li_fat_id',\n 'igshid',\n 'ttclid',\n 'rdt_cid',\n 'epik',\n 'qclid',\n 'sccid',\n 'irclid',\n '_kx'\n];\nconst MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [\n '$feature_flag',\n '$feature_flag_response',\n '$feature_flag_has_experiment',\n '$feature_flag_id',\n '$feature_flag_version',\n '$feature_flag_reason',\n '$feature_flag_request_id',\n '$feature_flag_evaluated_at',\n '$feature_flag_error',\n 'locally_evaluated',\n '$groups',\n '$process_person_profile',\n '$geoip_disable',\n '$current_url',\n '$pathname',\n '$referring_domain',\n ...MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES,\n '$session_id',\n '$window_id',\n '$lib',\n '$lib_version',\n '$device_id',\n '$is_server'\n];\nconst minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{\n const minimal = {};\n const copyKey = (key)=>{\n if (void 0 !== properties[key]) minimal[key] = properties[key];\n };\n MINIMAL_FLAG_CALLED_EVENT_PROPERTIES.forEach(copyKey);\n transportKeys.forEach(copyKey);\n return minimal;\n};\nexport { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, MINIMAL_FLAG_CALLED_EVENT_PROPERTIES, createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, minimizeFlagCalledEventProperties, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","const MAX_JSON_SAFE_VALUE_DEPTH = 20;\nconst MAX_JSON_SAFE_VALUE_ITEMS = 1000;\nconst MAX_JSON_SAFE_VALUE_NODES = 10000;\nconst CIRCULAR_VALUE = '[Circular]';\nconst TRUNCATED_VALUE = '[Truncated]';\nconst UNSERIALIZABLE_VALUE = '[Unserializable]';\nconst FUNCTION_VALUE = '[Function]';\nconst dateGetTime = Date.prototype.getTime;\nconst dateToISOString = Date.prototype.toISOString;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction sanitizeString(value) {\n let output = '';\n for(let index = 0; index < value.length; index++){\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (nextCodeUnit >= 0xdc00 && nextCodeUnit <= 0xdfff) {\n output += value[index] + value[index + 1];\n index++;\n } else output += '\\ufffd';\n } else output += codeUnit >= 0xdc00 && codeUnit <= 0xdfff ? '\\ufffd' : value[index];\n }\n return output;\n}\nfunction toJsonSafeValue(value) {\n const state = {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n const convert = (current, depth)=>{\n if (state.remainingNodes <= 0) return TRUNCATED_VALUE;\n state.remainingNodes--;\n try {\n if (null == current || 'boolean' == typeof current) return current;\n if ('string' == typeof current) return sanitizeString(current);\n if ('number' == typeof current) return Number.isFinite(current) ? current : null;\n if ('bigint' == typeof current) return current.toString();\n if ('function' == typeof current) return FUNCTION_VALUE;\n if ('symbol' == typeof current) return current.description ? `Symbol(${current.description})` : 'Symbol()';\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return TRUNCATED_VALUE;\n if (state.ancestors.has(current)) return CIRCULAR_VALUE;\n state.ancestors.add(current);\n try {\n if (current instanceof Date) return Number.isFinite(dateGetTime.call(current)) ? dateToISOString.call(current) : null;\n let hasToJSONResult = false;\n let toJSONResult;\n try {\n const toJSON = current.toJSON;\n if ('function' == typeof toJSON) {\n toJSONResult = toJSON.call(current);\n hasToJSONResult = true;\n }\n } catch {\n hasToJSONResult = false;\n }\n if (hasToJSONResult) return convert(toJSONResult, depth + 1);\n if (Array.isArray(current)) {\n const itemCount = Math.min(current.length, MAX_JSON_SAFE_VALUE_ITEMS);\n const output = [];\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)output.push(convert(current[index], depth + 1));\n if (current.length > index) output.push(TRUNCATED_VALUE);\n return output;\n }\n const output = {};\n let itemCount = 0;\n let truncated = false;\n for(const key in current){\n if (!propertyIsEnumerable.call(current, key)) break;\n if (itemCount >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n truncated = true;\n break;\n }\n const converted = convert(current[key], depth + 1);\n Object.defineProperty(output, key, {\n value: converted,\n enumerable: true,\n configurable: true,\n writable: true\n });\n itemCount++;\n }\n if (truncated) output[TRUNCATED_VALUE] = 'Additional properties omitted';\n return output;\n } finally{\n state.ancestors.delete(current);\n }\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n };\n return convert(value, 0);\n}\nexport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString, toJsonSafeValue };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nfunction safeJsonStringify(value) {\n const ancestors = [];\n return JSON.stringify(value, function(_key, replacementValue) {\n if ('bigint' == typeof replacementValue) return replacementValue.toString();\n if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;\n if (replacementValue instanceof Error) return {\n name: replacementValue.name,\n message: replacementValue.message,\n stack: replacementValue.stack\n };\n if (replacementValue && 'object' == typeof replacementValue) {\n while(ancestors.length > 0 && ancestors[ancestors.length - 1] !== this)ancestors.pop();\n if (ancestors.includes(replacementValue)) return '[Circular]';\n ancestors.push(replacementValue);\n }\n return replacementValue;\n }) ?? 'null';\n}\nfunction deepSortKeys(value) {\n if (null === value || 'object' != typeof value) return value;\n if (Array.isArray(value)) return value.map(deepSortKeys);\n return Object.keys(value).sort().reduce((acc, key)=>{\n acc[key] = deepSortKeys(value[key]);\n return acc;\n }, {});\n}\nfunction getPersonPropertiesHash(distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {\n return JSON.stringify({\n distinct_id,\n userPropertiesToSet: userPropertiesToSet ? deepSortKeys(userPropertiesToSet) : void 0,\n userPropertiesToSetOnce: userPropertiesToSetOnce ? deepSortKeys(userPropertiesToSetOnce) : void 0\n });\n}\nexport { getPersonPropertiesHash, includes, isDistinctIdStringLike, safeJsonStringify, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent, knownUnsafeEditableEventProperty } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x) && x === x;\nconst isPositiveNumber = (value)=>isNumber(value) && value > 0;\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nconst isKnownUnsafeEditableEventProperty = (x)=>includes(knownUnsafeEditableEventProperty, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return 'undefined' != typeof Event && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isKnownUnsafeEditableEventProperty, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPositiveNumber, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst OCULUS_BROWSER = 'Oculus Browser';\nconst VIVALDI = 'Vivaldi';\nconst YANDEX = 'Yandex';\nconst WHALE = 'Whale';\nconst DUCKDUCKGO = 'DuckDuckGo';\nconst PALE_MOON = 'Pale Moon';\nconst WATERFOX = 'Waterfox';\nconst BRAVE = 'Brave';\nconst GOOGLE_SEARCH_APP = 'Google Search App';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nfunction browserFromHints(hints) {\n if (hints?.brave) return BRAVE;\n return null;\n}\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor, hints, options) {\n vendor = vendor || '';\n const fromHints = browserFromHints(hints);\n if (fromHints) return fromHints;\n if (options?.detectGoogleSearchApp && includes(user_agent, 'GSA/')) return GOOGLE_SEARCH_APP;\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, 'OculusBrowser')) return OCULUS_BROWSER;\n else if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, VIVALDI + '/')) return VIVALDI;\n else if (includes(user_agent, 'YaBrowser/')) return YANDEX;\n else if (includes(user_agent, WHALE + '/')) return WHALE;\n else if (includes(user_agent, DUCKDUCKGO + '/') || includes(user_agent, 'Ddg/')) return DUCKDUCKGO;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (includes(user_agent, BRAVE + '/')) return BRAVE;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, 'PaleMoon/')) return PALE_MOON;\n else if (includes(user_agent, WATERFOX + '/')) return WATERFOX;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [OCULUS_BROWSER]: [\n new RegExp('OculusBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [VIVALDI]: [\n new RegExp(VIVALDI + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [YANDEX]: [\n new RegExp('YaBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WHALE]: [\n new RegExp(WHALE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [BRAVE]: [\n new RegExp(BRAVE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [DUCKDUCKGO]: [\n new RegExp('(DuckDuckGo|Ddg)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [PALE_MOON]: [\n new RegExp('PaleMoon\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WATERFOX]: [\n new RegExp(WATERFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [GOOGLE_SEARCH_APP]: [\n new RegExp('GSA\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor, hints, options) {\n const browser = detectBrowser(userAgent, vendor, hints, options);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent, options) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n if (options?.userAgentDataPlatform === 'Android' && (options?.maxTouchPoints ?? 0) > 0) {\n const shortSide = Math.min(options?.screenWidth ?? 0, options?.screenHeight ?? 0);\n const shortSideDp = shortSide / (options?.devicePixelRatio ?? 1);\n return shortSideDp >= 600 ? TABLET : MOBILE;\n }\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","import { isArray, isBoolean, isNull, isNullish, isUndefined } from \"../utils/index.mjs\";\nimport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString } from \"../utils/json-utils.mjs\";\nconst OTLP_SEVERITY_MAP = {\n trace: {\n text: 'TRACE',\n number: 1\n },\n debug: {\n text: 'DEBUG',\n number: 5\n },\n info: {\n text: 'INFO',\n number: 9\n },\n warn: {\n text: 'WARN',\n number: 13\n },\n error: {\n text: 'ERROR',\n number: 17\n },\n fatal: {\n text: 'FATAL',\n number: 21\n }\n};\nconst DEFAULT_OTLP_SEVERITY = OTLP_SEVERITY_MAP.info;\nfunction getOtlpSeverityText(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).text;\n}\nfunction getOtlpSeverityNumber(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).number;\n}\nconst INT64_RANGE_LIMIT = 9223372036854775808;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction newState() {\n return {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n}\nfunction toOtlpAnyValue(value, logger) {\n try {\n return encodeAnyValue(value, logger, newState(), 0);\n } catch {\n return {\n stringValue: UNSERIALIZABLE_VALUE\n };\n }\n}\nfunction toOtlpKeyValueList(attrs, logger) {\n try {\n return encodeKeyValueList(attrs, logger, newState(), 0);\n } catch {\n return [];\n }\n}\nfunction encodeAnyValue(value, logger, state, depth) {\n if (state.remainingNodes <= 0) return {\n stringValue: TRUNCATED_VALUE\n };\n state.remainingNodes--;\n if (isBoolean(value)) return {\n boolValue: value\n };\n if ('number' == typeof value) {\n if (!Number.isFinite(value)) return {\n stringValue: String(value)\n };\n if (Number.isInteger(value)) {\n if (Number.isSafeInteger(value)) return {\n intValue: String(value)\n };\n if ('undefined' == typeof BigInt) return {\n stringValue: String(value)\n };\n const decimal = BigInt(value).toString();\n if (value >= INT64_RANGE_LIMIT || value < -INT64_RANGE_LIMIT) {\n logger?.debug(`Attribute ${decimal} is outside the int64 range; encoding it as a string`);\n return {\n stringValue: decimal\n };\n }\n return {\n intValue: decimal\n };\n }\n return {\n doubleValue: value\n };\n }\n if ('string' == typeof value) return {\n stringValue: sanitizeString(value)\n };\n if ('function' == typeof value) return {\n stringValue: FUNCTION_VALUE\n };\n if ('symbol' == typeof value) return {\n stringValue: String(value)\n };\n if ('object' == typeof value && null !== value) {\n if (state.ancestors.has(value)) return {\n stringValue: CIRCULAR_VALUE\n };\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return {\n stringValue: TRUNCATED_VALUE\n };\n if (value instanceof Date) {\n const time = value.getTime();\n const iso = Number.isFinite(time) ? value.toISOString() : String(value);\n return {\n stringValue: 'string' == typeof iso ? sanitizeString(iso) : String(iso)\n };\n }\n state.ancestors.add(value);\n try {\n try {\n const toJSON = value.toJSON;\n if ('function' == typeof toJSON) return encodeAnyValue(toJSON.call(value), logger, state, depth + 1);\n } catch {}\n if (isArray(value)) return {\n arrayValue: {\n values: encodeArrayValues(value, logger, state, depth + 1)\n }\n };\n return {\n kvlistValue: {\n values: encodeKeyValueList(value, logger, state, depth + 1)\n }\n };\n } finally{\n state.ancestors.delete(value);\n }\n }\n return {\n stringValue: sanitizeString(String(value))\n };\n}\nfunction encodeArrayValues(values, logger, state, depth) {\n const result = [];\n const itemCount = Math.min(values.length, MAX_JSON_SAFE_VALUE_ITEMS);\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)try {\n const element = index in values ? values[index] : void 0;\n if (isNullish(element)) continue;\n result.push(encodeAnyValue(element, logger, state, depth));\n } catch {\n result.push({\n stringValue: UNSERIALIZABLE_VALUE\n });\n }\n if (values.length > index) result.push({\n stringValue: TRUNCATED_VALUE\n });\n return result;\n}\nfunction encodeKeyValueList(attrs, logger, state, depth) {\n const result = [];\n for(const key in attrs)if (propertyIsEnumerable.call(attrs, key)) {\n if (result.length >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n logger?.debug('Attributes truncated: the value exceeds the OTLP encoder budget');\n break;\n }\n try {\n const value = attrs[key];\n if (isNull(value) || isUndefined(value)) continue;\n result.push({\n key: sanitizeString(key),\n value: encodeAnyValue(value, logger, state, depth)\n });\n } catch {\n result.push({\n key: sanitizeString(key),\n value: {\n stringValue: UNSERIALIZABLE_VALUE\n }\n });\n }\n }\n return result;\n}\nfunction timestampToUnixNano() {\n return String(Date.now()) + '000000';\n}\nfunction encodeBody(body) {\n try {\n return sanitizeString(String(body));\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n}\nfunction buildOtlpLogRecord(options, sdkContext, logger) {\n const level = options.level || 'info';\n const { text: severityText, number: severityNumber } = OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY;\n const now = timestampToUnixNano();\n const autoAttributes = {};\n if (sdkContext.distinctId) autoAttributes.posthogDistinctId = sdkContext.distinctId;\n if (sdkContext.sessionId) autoAttributes.sessionId = sdkContext.sessionId;\n if (sdkContext.windowId) autoAttributes['window.id'] = sdkContext.windowId;\n if (!isNullish(sdkContext.sessionStartTimestamp)) autoAttributes.sessionStartTimestamp = String(sdkContext.sessionStartTimestamp);\n if (!isNullish(sdkContext.lastActivityTimestamp)) autoAttributes.lastActivityTimestamp = String(sdkContext.lastActivityTimestamp);\n if (sdkContext.currentUrl) autoAttributes['url.full'] = sdkContext.currentUrl;\n if (sdkContext.screenName) autoAttributes['screen.name'] = sdkContext.screenName;\n if (sdkContext.appState) autoAttributes['app.state'] = sdkContext.appState;\n if (sdkContext.activeFeatureFlags && sdkContext.activeFeatureFlags.length > 0) autoAttributes.feature_flags = sdkContext.activeFeatureFlags;\n const mergedAttributes = {\n ...autoAttributes\n };\n const userAttributes = options.attributes;\n if (userAttributes) {\n let keys = [];\n try {\n keys = Object.keys(userAttributes);\n } catch {\n keys = [];\n }\n for (const key of keys){\n let value;\n try {\n value = userAttributes[key];\n } catch {\n value = UNSERIALIZABLE_VALUE;\n }\n Object.defineProperty(mergedAttributes, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true\n });\n }\n }\n const record = {\n timeUnixNano: now,\n observedTimeUnixNano: now,\n severityNumber,\n severityText,\n body: {\n stringValue: encodeBody(options.body)\n },\n attributes: toOtlpKeyValueList(mergedAttributes, logger)\n };\n if (options.trace_id) record.traceId = options.trace_id;\n if (options.span_id) record.spanId = options.span_id;\n if (!isUndefined(options.trace_flags)) record.flags = options.trace_flags;\n return record;\n}\nfunction buildResourceAttributes(config, sdkName, sdkVersion) {\n return {\n ...config.resourceAttributes,\n 'service.name': config.serviceName || 'unknown_service',\n ...config.environment && {\n 'deployment.environment': config.environment\n },\n ...config.serviceVersion && {\n 'service.version': config.serviceVersion\n },\n 'telemetry.sdk.name': sdkName,\n 'telemetry.sdk.version': sdkVersion\n };\n}\nfunction buildOtlpLogsPayload(logRecords, resourceAttributes, scopeName, scopeVersion) {\n return {\n resourceLogs: [\n {\n resource: {\n attributes: toOtlpKeyValueList(resourceAttributes)\n },\n scopeLogs: [\n {\n scope: {\n name: scopeName,\n version: scopeVersion\n },\n logRecords\n }\n ]\n }\n ]\n };\n}\nexport { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText, toOtlpAnyValue, toOtlpKeyValueList };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\nexport * from \"./exception-steps.mjs\";\nexport * from \"./release.mjs\";\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext(hint);\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? ctx.skipFirstLines : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext(hint) {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser),\n skipFirstLines: hint.skipFirstLines ?? 1\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nconst MASKED_URL_PREFIX = 'webkit-masked-url://';\nconst ANONYMOUS_FILENAME = '<anonymous>';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: !filename?.startsWith(MASKED_URL_PREFIX) && filename !== ANONYMOUS_FILENAME\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst PROMISE_COMBINATOR = /^Promise\\.(?:all|any)$/;\nconst PROMISE_INDEX = /^index \\d+$/;\nconst PROMISE_FRAME_FILENAME = 'node:internal/promise';\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isError } from \"../../utils/type-utils.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isError(err);\n }\n coerce(err, ctx) {\n const stack = this.getStack(err);\n const synthetic = void 0 === stack;\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: stack ?? ctx.syntheticException?.stack,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent, isString } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n if (!isErrorEvent(err)) return false;\n const errorEvent = err;\n return void 0 != errorEvent.error || this._hasUsableMessage(errorEvent);\n }\n coerce(err, ctx) {\n if (void 0 != err.error) return ctx.apply(err.error);\n const exceptionLike = ctx.apply(err.message);\n return {\n ...exceptionLike,\n stack: this._buildLocationStack(err) ?? exceptionLike.stack,\n synthetic: true\n };\n }\n _hasUsableMessage(err) {\n return isString(err.message) && err.message.length > 0;\n }\n _buildLocationStack(err) {\n const location = err;\n const lineno = location.lineno ?? 0;\n const colno = location.colno ?? 0;\n if (!isString(location.filename) || 0 === location.filename.length) return;\n if (0 === lineno) return;\n return `Error\\n at ${location.filename}:${lineno}:${colno}`;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: this.getStack(candidate) ?? ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n if (isEvent(err)) return err.constructor.name;\n const name = 'name' in err ? err.name : void 0;\n return isString(name) && !isEmptyString(name) ? name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getStack(candidate) {\n try {\n if (isString(candidate.stacktrace) && candidate.stacktrace.length > 0) return candidate.stacktrace;\n return isString(candidate.stack) && candidate.stack.length > 0 ? candidate.stack : void 0;\n } catch {\n return;\n }\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isEvent, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent') || this.isCustomEventWrappingRejection(err);\n }\n isCustomEventWrappingRejection(err) {\n if (!isEvent(err)) return false;\n try {\n const detail = err.detail;\n return null != detail && 'object' == typeof detail && 'reason' in detail;\n } catch {\n return false;\n }\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && null != error.detail && 'object' == typeof error.detail && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","import { isNumber, isObject, isString, safeJsonStringify } from \"../utils/index.mjs\";\nconst EXCEPTION_STEP_INTERNAL_FIELDS = {\n MESSAGE: '$message',\n TIMESTAMP: '$timestamp'\n};\nconst RESERVED_EXCEPTION_STEP_KEYS = new Set([\n EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,\n EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP\n]);\nconst DEFAULT_EXCEPTION_STEPS_CONFIG = {\n enabled: true,\n max_bytes: 32768\n};\nfunction resolveExceptionStepsConfig(config) {\n if (!config) return {\n ...DEFAULT_EXCEPTION_STEPS_CONFIG\n };\n return {\n enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,\n max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)\n };\n}\nfunction stripReservedExceptionStepFields(properties) {\n if (!properties) return {\n sanitizedProperties: {},\n droppedKeys: []\n };\n const droppedKeys = [];\n const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{\n if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {\n droppedKeys.push(key);\n return acc;\n }\n acc[key] = properties[key];\n return acc;\n }, {});\n return {\n sanitizedProperties,\n droppedKeys\n };\n}\nclass ExceptionStepsBuffer {\n constructor(config){\n this._entries = [];\n this._totalBytes = 0;\n this._config = resolveExceptionStepsConfig(config);\n }\n setConfig(config) {\n this._config = resolveExceptionStepsConfig(config);\n this._trimToMaxBytes();\n }\n add(step) {\n const serialized = normalizeAndSerializeStep(step);\n if (!serialized) return;\n const bytes = getUtf8ByteLength(serialized.json);\n if (bytes > this._config.max_bytes) return;\n this._entries.push({\n step: serialized.step,\n bytes\n });\n this._totalBytes += bytes;\n this._trimToMaxBytes();\n }\n getAttachable() {\n return this._entries.map((e)=>e.step);\n }\n clear() {\n this._entries = [];\n this._totalBytes = 0;\n }\n size() {\n return this._entries.length;\n }\n _trimToMaxBytes() {\n while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){\n const evicted = this._entries.shift();\n if (evicted) this._totalBytes -= evicted.bytes;\n }\n }\n}\nfunction normalizePositiveInteger(input, fallback) {\n if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;\n const normalized = Math.floor(input);\n if (normalized < 0) return fallback;\n return normalized;\n}\nfunction normalizeAndSerializeStep(step) {\n let json;\n try {\n json = safeJsonStringify(step);\n } catch {\n return;\n }\n try {\n const parsed = JSON.parse(json);\n if (!isObject(parsed)) return;\n const parsedStep = parsed;\n const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];\n const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];\n if (!isString(message) || 0 === message.trim().length) return;\n if (!isString(timestamp) && !isNumber(timestamp)) return;\n return {\n step: parsedStep,\n json\n };\n } catch {\n return;\n }\n}\nfunction getUtf8ByteLength(value) {\n if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;\n const encoded = encodeURIComponent(value);\n let byteLength = 0;\n for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {\n byteLength += 1;\n i += 2;\n } else byteLength += 1;\n return byteLength;\n}\nexport { DEFAULT_EXCEPTION_STEPS_CONFIG, EXCEPTION_STEP_INTERNAL_FIELDS, ExceptionStepsBuffer, getUtf8ByteLength, resolveExceptionStepsConfig, stripReservedExceptionStepFields };\n","function getInjectedReleaseId() {\n const injected = globalThis._posthogReleaseId;\n return 'string' == typeof injected && injected.length > 0 ? injected : void 0;\n}\nexport { getInjectedReleaseId };\n","import { ErrorTracking } from \"@posthog/core\";\nimport { constants } from \"node:fs\";\nimport { open as promises_open } from \"node:fs/promises\";\nimport { isAbsolute } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nconst LRU_FILE_CONTENTS_CACHE = new ErrorTracking.ReduceableCache(25);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new ErrorTracking.ReduceableCache(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\nconst MAX_CONTEXTLINES_FILE_SIZE = 10485760;\nasync function addSourceContext(frames, openSourceFile = promises_open, logger) {\n const filesToLines = {};\n let basePath;\n try {\n basePath = process.cwd();\n } catch {}\n for(let i = frames.length - 1; i >= 0; i--){\n const frame = frames[i];\n const filename = frame?.filename;\n if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;\n if (!isAbsolute(filename) && void 0 === basePath) continue;\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n filesToLines[filename].push(frame.lineno);\n }\n const files = Object.keys(filesToLines);\n if (0 == files.length) return frames;\n const readlinePromises = [];\n for (const file of files){\n const cacheKey = makeSourceCacheKey(file, basePath);\n if (void 0 === cacheKey) continue;\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(cacheKey)) continue;\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) continue;\n filesToLineRanges.sort((a, b)=>a - b);\n const ranges = makeLineReaderRanges(filesToLineRanges);\n if (ranges.every((r)=>rangeExistsInContentCache(cacheKey, r))) continue;\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, cacheKey, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache, cacheKey, openSourceFile, logger));\n }\n await Promise.all(readlinePromises).catch(()=>{});\n if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE, basePath);\n LRU_FILE_CONTENTS_CACHE.reduce();\n return frames;\n}\nasync function openRegularSourceFile(path, openSourceFile, logger) {\n let fileHandle;\n let isValid = false;\n try {\n fileHandle = await openSourceFile(path, constants.O_RDONLY | constants.O_NONBLOCK);\n const fileStat = await fileHandle.stat();\n if (!fileStat.isFile()) return;\n if (fileStat.size > MAX_CONTEXTLINES_FILE_SIZE) return void logger?.debug(`Skipping source context for oversized file ${path}: ${fileStat.size} bytes exceeds ${MAX_CONTEXTLINES_FILE_SIZE}`);\n isValid = true;\n return fileHandle;\n } catch {\n return;\n } finally{\n if (fileHandle && !isValid) await fileHandle.close().catch(()=>{});\n }\n}\nasync function getContextLinesFromFile(path, ranges, output, cacheKey, openSourceFile, logger) {\n const fileHandle = await openRegularSourceFile(path, openSourceFile, logger);\n if (void 0 === fileHandle) return void LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n const openedFileHandle = fileHandle;\n return new Promise((resolve)=>{\n let finished = false;\n function destroyStreamAndResolve(stream) {\n if (finished) return;\n finished = true;\n stream?.destroy();\n openedFileHandle.close().then(resolve, resolve);\n }\n let stream;\n try {\n stream = openedFileHandle.createReadStream({\n autoClose: false,\n start: 0,\n end: MAX_CONTEXTLINES_FILE_SIZE - 1\n });\n } catch {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n destroyStreamAndResolve();\n return;\n }\n let lineReaded;\n try {\n lineReaded = createInterface({\n input: stream\n });\n } catch {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n destroyStreamAndResolve(stream);\n return;\n }\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) return void destroyStreamAndResolve(stream);\n let rangeStart = range[0];\n let rangeEnd = range[1];\n function onStreamError() {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve(stream);\n }\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', ()=>destroyStreamAndResolve(stream));\n lineReaded.on('line', (line)=>{\n lineNumber++;\n if (lineNumber < rangeStart) return;\n output[lineNumber] = snipLine(line, 0);\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\nfunction addSourceContextToFrames(frames, cache, basePath) {\n for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {\n const cacheKey = makeSourceCacheKey(frame.filename, basePath);\n const contents = void 0 === cacheKey ? void 0 : cache.get(cacheKey);\n if (void 0 === contents) continue;\n addContextToFrame(frame.lineno, frame, contents);\n }\n}\nfunction addContextToFrame(lineno, frame, contents) {\n if (void 0 === frame.lineno || void 0 === contents) return;\n frame.pre_context = [];\n for(let i = makeRangeStart(lineno); i < lineno; i++){\n const line = contents[i];\n if (void 0 === line) return void clearLineContext(frame);\n frame.pre_context.push(line);\n }\n if (void 0 === contents[lineno]) return void clearLineContext(frame);\n frame.context_line = contents[lineno];\n const end = makeRangeEnd(lineno);\n frame.post_context = [];\n for(let i = lineno + 1; i <= end; i++){\n const line = contents[i];\n if (void 0 === line) break;\n frame.post_context.push(line);\n }\n}\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\nfunction shouldSkipContextLinesForFile(path) {\n return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');\n}\nfunction shouldSkipContextLinesForFrame(frame) {\n if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\nfunction makeSourceCacheKey(path, basePath) {\n if (isAbsolute(path)) return JSON.stringify([\n null,\n path\n ]);\n return void 0 === basePath ? void 0 : JSON.stringify([\n basePath,\n path\n ]);\n}\nfunction rangeExistsInContentCache(cacheKey, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(cacheKey);\n if (void 0 === contents) return false;\n for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;\n return true;\n}\nfunction makeLineReaderRanges(lines) {\n if (!lines.length) return [];\n let i = 0;\n const line = lines[0];\n if ('number' != typeof line) return [];\n let current = makeContextRange(line);\n const out = [];\n while(true){\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n const next = lines[i + 1];\n if ('number' != typeof next) break;\n if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;\n else {\n out.push(current);\n current = makeContextRange(next);\n }\n i++;\n }\n return out;\n}\nfunction makeContextRange(line) {\n return [\n makeRangeStart(line),\n makeRangeEnd(line)\n ];\n}\nfunction makeRangeStart(line) {\n return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);\n}\nfunction makeRangeEnd(line) {\n return line + DEFAULT_LINES_OF_CONTEXT;\n}\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n if (void 0 === value) {\n map.set(key, contents);\n return contents;\n }\n return value;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) return newLine;\n if (colno > lineLength) colno = lineLength;\n let start = Math.max(colno - 60, 0);\n if (start < 5) start = 0;\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) end = lineLength;\n if (end === lineLength) start = Math.max(end - 140, 0);\n newLine = newLine.slice(start, end);\n if (start > 0) newLine = `...${newLine}`;\n if (end < lineLength) newLine += '...';\n return newLine;\n}\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_FILE_SIZE, MAX_CONTEXTLINES_LINENO, addSourceContext };\n","const UNHANDLED_REJECTION_OPTION_NAMES = [\n '--unhandled-rejections',\n '--unhandled_rejections'\n];\nconst UNHANDLED_REJECTION_MODES = new Set([\n 'throw',\n 'strict',\n 'warn',\n 'warn-with-error-code',\n 'none'\n]);\nconst STARTUP_EXEC_ARGV = [\n ...globalThis.process?.execArgv ?? []\n];\nconst STARTUP_NODE_OPTIONS = globalThis.process?.env?.NODE_OPTIONS;\nfunction splitNodeOptions(nodeOptions) {\n const args = [];\n let current = '';\n let isInString = false;\n for(let index = 0; index < nodeOptions.length; index++){\n const character = nodeOptions[index];\n if ('\\\\' === character && isInString && index + 1 < nodeOptions.length) current += nodeOptions[++index];\n else if (' ' !== character || isInString) if ('\"' === character) isInString = !isInString;\n else current += character;\n else if (current) {\n args.push(current);\n current = '';\n }\n }\n if (current) args.push(current);\n return args;\n}\nfunction findUnhandledRejectionMode(args) {\n let mode;\n for(let index = 0; index < args.length; index++){\n const argument = args[index];\n const optionName = UNHANDLED_REJECTION_OPTION_NAMES.find((name)=>argument === name || argument.startsWith(`${name}=`));\n if (!optionName) continue;\n const value = argument === optionName ? args[++index] : argument.slice(optionName.length + 1);\n if (UNHANDLED_REJECTION_MODES.has(value)) mode = value;\n }\n return mode;\n}\nfunction getUnhandledRejectionMode(execArgv = STARTUP_EXEC_ARGV, nodeOptions = STARTUP_NODE_OPTIONS) {\n return findUnhandledRejectionMode(execArgv) ?? findUnhandledRejectionMode(splitNodeOptions(nodeOptions ?? '')) ?? 'throw';\n}\nconst STARTUP_UNHANDLED_REJECTION_MODE = getUnhandledRejectionMode();\nfunction captureUncaughtException(captureFn, error, origin) {\n captureFn(error, {\n mechanism: {\n type: 'unhandledRejection' === origin ? 'onunhandledrejection' : 'onuncaughtexception',\n handled: false\n }\n });\n}\nfunction makeUncaughtExceptionHandler(captureFn, onFatalFn) {\n let calledFatalError = false;\n return Object.assign((error, origin)=>{\n const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;\n captureUncaughtException(captureFn, error, origin);\n if (!calledFatalError && 0 === userProvidedListenersCount) {\n calledFatalError = true;\n onFatalFn(error);\n }\n }, {\n _posthogErrorHandler: true\n });\n}\nfunction addUncaughtExceptionListener(captureFn, onFatalFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {\n const process = globalThis.process;\n if (!process) return;\n if ('strict' === mode) return void process.on('uncaughtExceptionMonitor', (error, origin)=>captureUncaughtException(captureFn, error, origin));\n process.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));\n}\nfunction addUnhandledRejectionListener(captureFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {\n const process = globalThis.process;\n if (!process || 'throw' === mode || 'strict' === mode || 'warn-with-error-code' === mode) return;\n process.on('unhandledRejection', (reason)=>{\n captureFn(reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n });\n });\n}\nexport { addUncaughtExceptionListener, addUnhandledRejectionListener, getUnhandledRejectionMode };\n","import { safeJsonStringify } from \"@posthog/core\";\nimport { AI_BATCH_TARGET_BYTES, AI_MAX_EVENT_BYTES } from \"./routing.mjs\";\nconst encoder = new TextEncoder();\nfunction eventByteSize(message) {\n return encoder.encode(safeJsonStringify(message)).length;\n}\nfunction partitionAiBatch(messages, maxEventBytes = AI_MAX_EVENT_BYTES, targetBatchBytes = AI_BATCH_TARGET_BYTES) {\n const batches = [];\n const dropped = [];\n let current = [];\n let currentBytes = 0;\n for (const message of messages){\n if (void 0 === message) continue;\n const bytes = eventByteSize(message);\n if (bytes > maxEventBytes) {\n dropped.push({\n event: 'string' == typeof message.event ? message.event : 'unknown',\n bytes\n });\n continue;\n }\n if (current.length > 0 && currentBytes + bytes > targetBatchBytes) {\n batches.push(current);\n current = [];\n currentBytes = 0;\n }\n current.push(message);\n currentBytes += bytes;\n }\n if (current.length > 0) batches.push(current);\n return {\n batches,\n dropped\n };\n}\nexport { eventByteSize, partitionAiBatch };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nclass PostHogContext {\n constructor(){\n this.storage = new AsyncLocalStorage();\n }\n get() {\n return this.storage.getStore();\n }\n run(context, fn, options) {\n return this.storage.run(this.resolve(context, options), fn);\n }\n enter(context, options) {\n this.storage.enterWith(this.resolve(context, options));\n }\n resolve(context, options) {\n if (options?.fresh === true) return context;\n const current = this.get() || {};\n return {\n distinctId: context.distinctId ?? current.distinctId,\n sessionId: context.sessionId ?? current.sessionId,\n properties: {\n ...current.properties || {},\n ...context.properties || {}\n }\n };\n }\n}\nexport { PostHogContext };\n","import { gzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nconst gzipAsync = promisify(gzip);\nasync function gzipCompress(input, isDebug = true) {\n try {\n const compressed = await gzipAsync(input);\n return new Uint8Array(compressed);\n } catch (error) {\n if (isDebug) console.error('Failed to gzip compress data', error);\n return null;\n }\n}\nexport { gzipCompress };\n","import { ErrorTracking } from \"@posthog/core\";\nconst NAME = 'posthog-node';\nfunction createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [\n 'error'\n], sendExceptionsToPostHog = true } = {}) {\n return (event)=>{\n const shouldProcessLevel = '*' === severityAllowList || severityAllowList.includes(event.level);\n if (!shouldProcessLevel) return event;\n if (!event.tags) event.tags = {};\n const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];\n if (void 0 === userId) return event;\n const uiHost = _posthog.options.host ?? 'https://us.i.posthog.com';\n const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();\n event.tags['PostHog Person URL'] = personUrl;\n const exceptions = event.exception?.values || [];\n const exceptionList = exceptions.map((exception)=>({\n ...exception,\n stacktrace: exception.stacktrace ? {\n ...exception.stacktrace,\n type: 'raw',\n frames: (exception.stacktrace.frames || []).map((frame)=>({\n ...frame,\n platform: \"node:javascript\"\n }))\n } : void 0\n }));\n const properties = {\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_level: event.level,\n $exception_list: exceptionList,\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags\n };\n const injectedReleaseId = ErrorTracking.getInjectedReleaseId();\n if (injectedReleaseId) properties.$release_id = injectedReleaseId;\n if (organization && projectId) properties['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n if (sendExceptionsToPostHog) _posthog.capture({\n event: '$exception',\n distinctId: userId,\n properties\n });\n return event;\n };\n}\nfunction sentryIntegration(_posthog, options) {\n const processor = createEventProcessor(_posthog, options);\n return {\n name: NAME,\n processEvent (event) {\n return processor(event);\n }\n };\n}\nclass PostHogSentryIntegration {\n static #_ = this.POSTHOG_ID_TAG = 'posthog_distinct_id';\n constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog){\n this.name = NAME;\n this.name = NAME;\n this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {\n const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;\n addGlobalEventProcessor(createEventProcessor(_posthog, {\n organization,\n projectId,\n prefix,\n severityAllowList,\n sendExceptionsToPostHog: sendExceptionsToPostHog ?? true\n }));\n };\n }\n}\nexport { PostHogSentryIntegration, createEventProcessor, sentryIntegration };\n","import { isCompatibleServerType, isHighLevelServer } from \"./extensions/compatibility.mjs\";\nimport { McpEventSink } from \"./extensions/sink.mjs\";\nimport { MCPAnalyticsEventType } from \"./extensions/event-types.mjs\";\nimport { IdentityCache, getServerTrackingData, setServerTrackingData } from \"./extensions/internal.mjs\";\nimport { createLogger, setLogger } from \"./extensions/logger.mjs\";\nimport { captureEvent } from \"./extensions/capture.mjs\";\nimport { applyMcpLibIdentity } from \"./extensions/lib-identity.mjs\";\nimport { deriveSessionIdFromMCPSession, getSessionInfo, newSessionId } from \"./extensions/session.mjs\";\nimport { instrumentLowLevelServer } from \"./extensions/instrument-lowlevel.mjs\";\nimport { instrumentHighLevelServer } from \"./extensions/instrument-highlevel.mjs\";\nimport { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId } from \"./extensions/session-token.mjs\";\nimport { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from \"./extensions/constants.mjs\";\nimport { getRequestHeaders } from \"./extensions/request-headers.mjs\";\nimport { PostHogMCP } from \"./extensions/posthog-mcp.mjs\";\nimport { getMoreToolsResult } from \"./extensions/tools.mjs\";\nimport { PostHog } from \"posthog-node\";\nfunction instrument(server, posthog, options = {}) {\n const logger = createLogger(options?.logger);\n try {\n if (!posthog) logger('Warning: No PostHog client passed to instrument(). Events will not be sent anywhere.');\n const validatedServer = isCompatibleServerType(server, logger);\n const lowLevelServer = getLowLevelServer(validatedServer);\n const existingData = getServerTrackingData(lowLevelServer);\n if (existingData) {\n existingData.logger('instrument() - Server already instrumented, skipping initialization');\n return createAnalyticsHandle(lowLevelServer);\n }\n if (posthog) applyMcpLibIdentity(posthog);\n const sink = posthog ? new McpEventSink(posthog, logger) : void 0;\n const mcpAnalyticsData = buildTrackingData(lowLevelServer, options, sink, logger);\n setServerTrackingData(lowLevelServer, mcpAnalyticsData);\n setupTrackedServer(validatedServer, lowLevelServer, logger);\n return createAnalyticsHandle(lowLevelServer);\n } catch (error) {\n logger(`Warning: Failed to instrument server - ${error}`);\n return {\n capture: async ()=>void 0\n };\n }\n}\nfunction instrumentMutator(posthog, options) {\n return (server)=>{\n instrument(server, posthog, options);\n return server;\n };\n}\nfunction createAnalyticsHandle(lowLevelServer) {\n return {\n capture: (eventData)=>captureCustomEvent(lowLevelServer, eventData)\n };\n}\nfunction getLowLevelServer(server) {\n return isHighLevelServer(server) ? server.server : server;\n}\nconst DEFAULT_OPTIONS = {\n reportMissing: false,\n enableConversationId: false\n};\nfunction buildTrackingData(lowLevelServer, options, sink, logger) {\n return {\n sink,\n logger,\n sessionId: newSessionId(),\n lastActivity: new Date(),\n identifiedSessions: new IdentityCache(),\n toolAnalyticsParameterOwnership: new Map(),\n toolCategories: new Map(),\n toolDescriptions: new Map(),\n sessionInfo: getSessionInfo(lowLevelServer, void 0),\n options: {\n ...DEFAULT_OPTIONS,\n ...options\n },\n sessionSource: 'generated'\n };\n}\nfunction setupTrackedServer(validatedServer, lowLevelServer, logger) {\n if (isHighLevelServer(validatedServer)) {\n const highLevelServer = validatedServer;\n instrumentHighLevelServer(highLevelServer, logger);\n return;\n }\n try {\n instrumentLowLevelServer(lowLevelServer, logger);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n }\n}\nasync function captureCustomEvent(lowLevelServer, eventData) {\n if (!eventData || 'string' != typeof eventData.event || 0 === eventData.event.length) throw new Error('`capture` requires an `event` name, e.g. analytics.capture({ event: \"feedback_submitted\" })');\n const trackingData = getServerTrackingData(lowLevelServer);\n if (!trackingData) return;\n const event = {\n sessionId: trackingData.sessionId,\n eventType: MCPAnalyticsEventType.custom,\n eventName: eventData.event,\n timestamp: new Date(),\n properties: eventData.properties\n };\n await captureEvent(lowLevelServer, event, trackingData.logger);\n trackingData.logger(`Captured event \"${eventData.event}\" for session ${trackingData.sessionId}`);\n}\nexport { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, getRequestHeaders, instrument, instrumentMutator, newSessionId, setLogger };\n","import { instrument, PostHogMCPAnalyticsProperty, type MCPAnalyticsOptions } from \"@posthog/mcp\";\n\n/** The PostHog client shape `instrument()` itself expects. */\ntype McpAnalyticsClient = Parameters<typeof instrument>[1];\n\n/**\n * #3432 phase 2: the installed-client seam for the in-process lane, mirroring\n * `telemetry.ts`'s `customReporter`. The HTTP lane (apps/api's mcp/handler.ts)\n * never uses this - it passes its own request-scoped PostHog client + mcpAuth\n * straight into `instrumentServer` below. This seam exists so an in-process\n * consumer (packages/mcp-client) can call `instrumentServer` without every\n * caller having to thread its own PostHog client through: the host installs\n * one client once at boot (apps/api/src/index.ts's `setMcpAnalyticsClient`),\n * and every in-process tool call picks it up via `getMcpAnalyticsClient()`.\n */\nlet installedClient: McpAnalyticsClient | null = null;\n\nexport function setMcpAnalyticsClient(client: McpAnalyticsClient | null): void {\n installedClient = client;\n}\n\nexport function getMcpAnalyticsClient(): McpAnalyticsClient | null {\n return installedClient;\n}\n\n/**\n * #3408: options for the `@posthog/mcp` `instrument()` wrap around the\n * per-request server. Additive alongside (never a replacement for) the\n * hand-rolled `mcp_request`/`$exception` capture in apps/api's mcp/handler.ts -\n * see the mcp-miner skill for why both stay live during the parity window.\n * Pulled out so the options object is unit-testable without standing up the\n * raw-HTTP handler.\n */\nexport function buildInstrumentOptions(\n mcpAuth: { user_id?: string } | null\n): MCPAnalyticsOptions {\n return {\n context: {\n description: \"Describe the user's underlying goal in one sentence - not the tool you're calling.\",\n },\n intentFallback: (req) => (req.params?.name ? `Invoking ${req.params.name}` : null),\n // Static identity: a fresh server + instrument() call happens once per\n // stateless request, so mcpAuth is already resolved by call time. Matches\n // the mcp_request/$exception distinctId below so all three lines join.\n identify: { distinctId: mcpAuth?.user_id || \"anonymous\" },\n // PRIVACY PASS (non-negotiable, #797/#3200): tool params/responses carry\n // form content, share ids, and workspace data - ship intent + tool name +\n // timing + error flag ONLY, never the payloads.\n beforeSend: (event) => {\n delete event.properties[PostHogMCPAnalyticsProperty.Parameters];\n delete event.properties[PostHogMCPAnalyticsProperty.Response];\n return event;\n },\n // We already emit `$exception` with `$exception_source: \"mcp-server\"` via\n // onToolError below, which the miner's error query depends on - letting\n // the wrapper also emit `$exception` would double-count and lose that\n // source tag.\n enableExceptionAutocapture: false,\n // Enables the `get_more_tools` virtual tool so agents can report an ask no\n // tool covers. Injected by the wrapper only - never touches\n // packages/mcp-server's own catalog, so it does not trip the MCP\n // parity/catalog tests.\n reportMissing: true,\n };\n}\n\n/**\n * Wraps the per-request/per-connection server with PostHog MCP analytics\n * (#3408, extended in-process #3432), additively - `mcp_request`/`$exception`\n * in apps/api's mcp/handler.ts are untouched. Never throws into the request\n * path: no-ops when `posthogClient` is unset (dev, or no client installed via\n * `setMcpAnalyticsClient`) and swallows any wrapper failure so a PostHog-side\n * bug can never break a tool call.\n */\nexport function instrumentServer(\n server: unknown,\n posthogClient: McpAnalyticsClient | null,\n mcpAuth: { user_id?: string } | null\n): void {\n if (!posthogClient) return;\n try {\n instrument(server, posthogClient, buildInstrumentOptions(mcpAuth));\n } catch (err) {\n console.error(\"[mcp] Failed to instrument server for PostHog MCP analytics:\", err);\n }\n}\n"],"mappings":"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","names":["version","depth","line","createLogger","sanitizeString","isRecord","captureEvent","version","BASE64URL_PATTERN","version","getContextArgument","version","server","getContextArgument","handler","handleToolCallRequest","getContextArgument","MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES","MINIMAL_FLAG_CALLED_EVENT_PROPERTIES","dateGetTime","dateToISOString","safeJsonStringify","nativeIsArray","ObjProto","type_utils_hasOwnProperty","type_utils_toString","isArray","isObject","isArray","isUndefined","isString","type_utils_toString","isEmptyString","isNumber","type_utils_toString","isPrimitive","isBuiltin","isError","isInstanceOf","isErrorEvent","isEvent","isInstanceOf","MOBILE","IOS","ANDROID","TABLET","ANDROID_TABLET","APPLE","APPLE_WATCH","SAFARI","BLACKBERRY","SAMSUNG","SAMSUNG_BROWSER","SAMSUNG_INTERNET","CHROME","CHROME_OS","CHROME_IOS","IOS","INTERNET_EXPLORER","INTERNET_EXPLORER_MOBILE","MOBILE","OPERA","OPERA_MINI","EDGE","MICROSOFT_EDGE","FIREFOX","FIREFOX_IOS","NINTENDO","PLAYSTATION","XBOX","ANDROID_MOBILE","ANDROID","MOBILE_SAFARI","WINDOWS","WINDOWS_PHONE","GENERIC","GENERIC_MOBILE","MOBILE","GENERIC_TABLET","TABLET","KONQUEROR","OCULUS_BROWSER","VIVALDI","YANDEX","WHALE","DUCKDUCKGO","PALE_MOON","WATERFOX","BRAVE","GOOGLE_SEARCH_APP","BROWSER_VERSION_REGEX_SUFFIX","DEFAULT_BROWSER_VERSION_REGEX","XBOX_REGEX","XBOX","PLAYSTATION_REGEX","PLAYSTATION","NINTENDO_REGEX","NINTENDO","BLACKBERRY_REGEX","BLACKBERRY","windowsVersionMap","versionRegexes","INTERNET_EXPLORER_MOBILE","BROWSER_VERSION_REGEX_SUFFIX","MICROSOFT_EDGE","EDGE","CHROME","CHROME_IOS","SAFARI","DEFAULT_BROWSER_VERSION_REGEX","MOBILE_SAFARI","OPERA","FIREFOX","FIREFOX_IOS","KONQUEROR","BLACKBERRY","ANDROID_MOBILE","SAMSUNG_INTERNET","SAMSUNG_BROWSER","OCULUS_BROWSER","VIVALDI","YANDEX","WHALE","BRAVE","DUCKDUCKGO","PALE_MOON","WATERFOX","GOOGLE_SEARCH_APP","INTERNET_EXPLORER","osMatchers","XBOX","NINTENDO","PLAYSTATION","BLACKBERRY_REGEX","BLACKBERRY","WINDOWS","WINDOWS_PHONE","MOBILE","version","windowsVersionMap","IOS","isUndefined","ANDROID","CHROME_OS","OTLP_SEVERITY_MAP","DEFAULT_OTLP_SEVERITY","error_tracking_exports","DEFAULT_EXCEPTION_STEPS_CONFIG","DOMExceptionCoercer","EXCEPTION_STEP_INTERNAL_FIELDS","ErrorCoercer","ErrorEventCoercer","ErrorPropertiesBuilder","EventCoercer","ExceptionStepsBuffer","ObjectCoercer","PrimitiveCoercer","PromiseRejectionEventCoercer","ReduceableCache","StringCoercer","chromeStackLineParser","createDefaultStackParser","createStackParser","geckoStackLineParser","getInjectedReleaseId","getUtf8ByteLength","nodeStackLineParser","opera10StackLineParser","opera11StackLineParser","resolveExceptionStepsConfig","reverseAndStripFrames","stripReservedExceptionStepFields","winjsStackLineParser","parsedStackResults","lastKeysCount","cachedFilenameChunkIds","getFilenameToChunkIdMap","MAX_CAUSE_RECURSION","ErrorPropertiesBuilder","isArray","getFilenameToChunkIdMap","depth","UNKNOWN_FUNCTION","MASKED_URL_PREFIX","ANONYMOUS_FILENAME","createFrame","isUndefined","extractSafariExtensionDetails","UNKNOWN_FUNCTION","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeStackLineParser","line","createFrame","UNKNOWN_FUNCTION","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackLineParser","UNKNOWN_FUNCTION","extractSafariExtensionDetails","createFrame","winjsRegex","winjsStackLineParser","createFrame","UNKNOWN_FUNCTION","opera10Regex","opera10StackLineParser","createFrame","UNKNOWN_FUNCTION","opera11Regex","opera11StackLineParser","FILENAME_MATCH","FULL_MATCH","PROMISE_COMBINATOR","PROMISE_INDEX","PROMISE_FRAME_FILENAME","nodeStackLineParser","UNKNOWN_FUNCTION","_parseIntOrUndefined","filenameIsInApp","WEBPACK_ERROR_REGEXP","STACKTRACE_FRAME_LIMIT","reverseAndStripFrames","getLastStackFrame","UNKNOWN_FUNCTION","createDefaultStackParser","createStackParser","chromeStackLineParser","geckoStackLineParser","DOMExceptionCoercer","isString","isBuiltin","ErrorCoercer","isError","ErrorEventCoercer","isErrorEvent","isString","ERROR_TYPES_PATTERN","StringCoercer","severityLevels","extractExceptionKeysForMessage","ObjectCoercer","isEvent","isString","isEmptyString","extractExceptionKeysForMessage","severityLevels","isError","EventCoercer","isEvent","extractExceptionKeysForMessage","PrimitiveCoercer","isPrimitive","PromiseRejectionEventCoercer","isBuiltin","isEvent","isPrimitive","ReduceableCache","EXCEPTION_STEP_INTERNAL_FIELDS","RESERVED_EXCEPTION_STEP_KEYS","DEFAULT_EXCEPTION_STEPS_CONFIG","resolveExceptionStepsConfig","normalizePositiveInteger","stripReservedExceptionStepFields","ExceptionStepsBuffer","normalizeAndSerializeStep","getUtf8ByteLength","isNumber","safeJsonStringify","isObject","isString","getInjectedReleaseId","error_tracking_exports","error_tracking_exports","createLogger"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/detect.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/compatibility.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/json-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/vendor/uuidv7.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/logs/logs-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/exception-steps.mjs","../../../node_modules/.pnpm/@posthog+core@1.49.2/node_modules/@posthog/core/dist/error-tracking/release.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/logger.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/constants.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/event-types.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/posthog-events.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/ids.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/mcp-payloads.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/sanitization.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/truncation.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/sink.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/version.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/headers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/request-headers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/client-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/session-token.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/session.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/capture.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/transport-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/internal.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/lib-identity.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/tools.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/mcp-sdk-compat.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/output-instructions.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/analytics-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/context-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/model-parameters.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/conversation-id.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/exceptions.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/intent.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/tracing-helpers.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrumentation.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrument-lowlevel.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/extensions/instrument-highlevel.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/json-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/string-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/logs/logs-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/safari.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/opera.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/exception-steps.mjs","../../../node_modules/.pnpm/@posthog+core@1.48.11/node_modules/@posthog/core/dist/error-tracking/release.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/ai-capture/batching.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/context/context.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/gzip.node.mjs","../../../node_modules/.pnpm/posthog-node@5.51.2_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/sentry-integration.mjs","../../../node_modules/.pnpm/@posthog+mcp@0.12.0_@modelcontextprotocol+sdk@1.30.0_zod@3.25.76__posthog-node@5.51.2_rxjs@7.8.2_/node_modules/@posthog/mcp/dist/index.mjs","../src/lib/instrument.ts"],"sourcesContent":["function asRecord(value) {\n return value && 'object' == typeof value ? value : void 0;\n}\nfunction hasMethod(value, key) {\n return 'function' == typeof asRecord(value)?.[key];\n}\nfunction hasNestedLowLevelServer(server) {\n const record = asRecord(server);\n return !!record && 'server' in record && !!asRecord(record.server);\n}\nfunction isBareServerShape(server) {\n const record = asRecord(server);\n return !!record && !('server' in record);\n}\nfunction hasToolRegistry(server) {\n return !!asRecord(asRecord(server)?._registeredTools);\n}\nfunction canRegisterTools(server) {\n return hasMethod(server, 'registerTool') || hasMethod(server, 'tool');\n}\nfunction canSetRequestHandler(server) {\n return hasMethod(server, 'setRequestHandler');\n}\nfunction hasRequestHandlerMap(server) {\n const handlers = asRecord(server)?._requestHandlers;\n return handlers instanceof Map && 'function' == typeof handlers.get;\n}\nfunction hasClientVersionAccessor(server) {\n return hasMethod(server, 'getClientVersion');\n}\nfunction hasNegotiatedProtocolVersionAccessor(server) {\n return hasMethod(server, 'getNegotiatedProtocolVersion');\n}\nfunction hasServerInfo(server) {\n const info = asRecord(asRecord(server)?._serverInfo);\n return !!info && 'name' in info;\n}\nexport { canRegisterTools, canSetRequestHandler, hasClientVersionAccessor, hasNegotiatedProtocolVersionAccessor, hasNestedLowLevelServer, hasRequestHandlerMap, hasServerInfo, hasToolRegistry, isBareServerShape };\n","import { canRegisterTools, canSetRequestHandler, hasClientVersionAccessor, hasNestedLowLevelServer, hasRequestHandlerMap, hasServerInfo, hasToolRegistry, isBareServerShape } from \"./detect.mjs\";\nfunction logCompatibilityWarning(logger) {\n logger('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');\n}\nfunction isHighLevelServer(server) {\n return hasNestedLowLevelServer(server);\n}\nfunction isLowLevelServer(server) {\n return isBareServerShape(server);\n}\nfunction isCompatibleServerType(server, logger) {\n if (!server || 'object' != typeof server) {\n logCompatibilityWarning(logger);\n throw new Error(\"PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.\");\n }\n if (isHighLevelServer(server)) {\n if (!hasToolRegistry(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.');\n }\n if (!canRegisterTools(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have a registerTool() or tool() method. This requires MCP SDK v1.11 or higher.');\n }\n const targetServer = server.server;\n validateLowLevelServer(targetServer, logger);\n return server;\n }\n validateLowLevelServer(server, logger);\n return server;\n}\nfunction validateLowLevelServer(server, logger) {\n if (!server || 'object' != typeof server) {\n logCompatibilityWarning(logger);\n throw new Error(\"PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.\");\n }\n if (!canSetRequestHandler(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasRequestHandlerMap(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasClientVersionAccessor(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.');\n }\n if (!hasServerInfo(server)) {\n logCompatibilityWarning(logger);\n throw new Error('PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.');\n }\n}\nfunction getMCPCompatibleErrorMessage(error) {\n if (error instanceof Error) try {\n return JSON.stringify(error, Object.getOwnPropertyNames(error));\n } catch {}\n else if ('string' == typeof error) return error;\n else if ('object' == typeof error && null !== error) return JSON.stringify(error);\n return 'Unknown error';\n}\nexport { getMCPCompatibleErrorMessage, isCompatibleServerType, isHighLevelServer, isLowLevelServer, logCompatibilityWarning };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nconst flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{\n const value = detail.variant ?? detail.enabled;\n const rawPayload = detail.metadata?.payload;\n return {\n key: detail.key,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value),\n payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null\n };\n });\nconst MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gad_source',\n 'mc_cid',\n 'gclid',\n 'gclsrc',\n 'dclid',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n 'twclid',\n 'li_fat_id',\n 'igshid',\n 'ttclid',\n 'rdt_cid',\n 'epik',\n 'qclid',\n 'sccid',\n 'irclid',\n '_kx'\n];\nconst MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [\n '$feature_flag',\n '$feature_flag_response',\n '$feature_flag_has_experiment',\n '$feature_flag_id',\n '$feature_flag_version',\n '$feature_flag_reason',\n '$feature_flag_request_id',\n '$feature_flag_evaluated_at',\n '$feature_flag_error',\n 'locally_evaluated',\n '$groups',\n '$process_person_profile',\n '$geoip_disable',\n '$current_url',\n '$pathname',\n '$referring_domain',\n ...MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES,\n '$session_id',\n '$window_id',\n '$lib',\n '$lib_version',\n '$device_id',\n '$is_server'\n];\nconst minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{\n const minimal = {};\n const copyKey = (key)=>{\n if (void 0 !== properties[key]) minimal[key] = properties[key];\n };\n MINIMAL_FLAG_CALLED_EVENT_PROPERTIES.forEach(copyKey);\n transportKeys.forEach(copyKey);\n return minimal;\n};\nexport { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, MINIMAL_FLAG_CALLED_EVENT_PROPERTIES, createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, minimizeFlagCalledEventProperties, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","const MAX_JSON_SAFE_VALUE_DEPTH = 20;\nconst MAX_JSON_SAFE_VALUE_ITEMS = 1000;\nconst MAX_JSON_SAFE_VALUE_NODES = 10000;\nconst CIRCULAR_VALUE = '[Circular]';\nconst TRUNCATED_VALUE = '[Truncated]';\nconst UNSERIALIZABLE_VALUE = '[Unserializable]';\nconst FUNCTION_VALUE = '[Function]';\nconst dateGetTime = Date.prototype.getTime;\nconst dateToISOString = Date.prototype.toISOString;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction sanitizeString(value) {\n let output = '';\n for(let index = 0; index < value.length; index++){\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (nextCodeUnit >= 0xdc00 && nextCodeUnit <= 0xdfff) {\n output += value[index] + value[index + 1];\n index++;\n } else output += '\\ufffd';\n } else output += codeUnit >= 0xdc00 && codeUnit <= 0xdfff ? '\\ufffd' : value[index];\n }\n return output;\n}\nfunction toJsonSafeValue(value) {\n const state = {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n const convert = (current, depth)=>{\n if (state.remainingNodes <= 0) return TRUNCATED_VALUE;\n state.remainingNodes--;\n try {\n if (null == current || 'boolean' == typeof current) return current;\n if ('string' == typeof current) return sanitizeString(current);\n if ('number' == typeof current) return Number.isFinite(current) ? current : null;\n if ('bigint' == typeof current) return current.toString();\n if ('function' == typeof current) return FUNCTION_VALUE;\n if ('symbol' == typeof current) return current.description ? `Symbol(${current.description})` : 'Symbol()';\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return TRUNCATED_VALUE;\n if (state.ancestors.has(current)) return CIRCULAR_VALUE;\n state.ancestors.add(current);\n try {\n if (current instanceof Date) return Number.isFinite(dateGetTime.call(current)) ? dateToISOString.call(current) : null;\n let hasToJSONResult = false;\n let toJSONResult;\n try {\n const toJSON = current.toJSON;\n if ('function' == typeof toJSON) {\n toJSONResult = toJSON.call(current);\n hasToJSONResult = true;\n }\n } catch {\n hasToJSONResult = false;\n }\n if (hasToJSONResult) return convert(toJSONResult, depth + 1);\n if (Array.isArray(current)) {\n const itemCount = Math.min(current.length, MAX_JSON_SAFE_VALUE_ITEMS);\n const output = [];\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)output.push(convert(current[index], depth + 1));\n if (current.length > index) output.push(TRUNCATED_VALUE);\n return output;\n }\n const output = {};\n let itemCount = 0;\n let truncated = false;\n for(const key in current){\n if (!propertyIsEnumerable.call(current, key)) break;\n if (itemCount >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n truncated = true;\n break;\n }\n const converted = convert(current[key], depth + 1);\n Object.defineProperty(output, key, {\n value: converted,\n enumerable: true,\n configurable: true,\n writable: true\n });\n itemCount++;\n }\n if (truncated) output[TRUNCATED_VALUE] = 'Additional properties omitted';\n return output;\n } finally{\n state.ancestors.delete(current);\n }\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n };\n return convert(value, 0);\n}\nexport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString, toJsonSafeValue };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nfunction safeJsonStringify(value) {\n const ancestors = [];\n return JSON.stringify(value, function(_key, replacementValue) {\n if ('bigint' == typeof replacementValue) return replacementValue.toString();\n if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;\n if (replacementValue instanceof Error) return {\n name: replacementValue.name,\n message: replacementValue.message,\n stack: replacementValue.stack\n };\n if (replacementValue && 'object' == typeof replacementValue) {\n while(ancestors.length > 0 && ancestors[ancestors.length - 1] !== this)ancestors.pop();\n if (ancestors.includes(replacementValue)) return '[Circular]';\n ancestors.push(replacementValue);\n }\n return replacementValue;\n }) ?? 'null';\n}\nfunction deepSortKeys(value) {\n if (null === value || 'object' != typeof value) return value;\n if (Array.isArray(value)) return value.map(deepSortKeys);\n return Object.keys(value).sort().reduce((acc, key)=>{\n acc[key] = deepSortKeys(value[key]);\n return acc;\n }, {});\n}\nfunction getPersonPropertiesHash(distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {\n return JSON.stringify({\n distinct_id,\n userPropertiesToSet: userPropertiesToSet ? deepSortKeys(userPropertiesToSet) : void 0,\n userPropertiesToSetOnce: userPropertiesToSetOnce ? deepSortKeys(userPropertiesToSetOnce) : void 0\n });\n}\nexport { getPersonPropertiesHash, includes, isDistinctIdStringLike, safeJsonStringify, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent, knownUnsafeEditableEventProperty } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x) && x === x;\nconst isPositiveNumber = (value)=>isNumber(value) && value > 0;\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nconst isKnownUnsafeEditableEventProperty = (x)=>includes(knownUnsafeEditableEventProperty, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return 'undefined' != typeof Event && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isKnownUnsafeEditableEventProperty, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPositiveNumber, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","/*! For license information please see uuidv7.mjs.LICENSE.txt */\n/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n */ const DIGITS = \"0123456789abcdef\";\nclass UUID {\n constructor(bytes){\n this.bytes = bytes;\n }\n static ofInner(bytes) {\n if (16 === bytes.length) return new UUID(bytes);\n throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 0xffffffffffff || randA > 0xfff || randBHi > 0x3fffffff || randBLo > 0xffffffff) throw new RangeError(\"invalid field value\");\n const bytes = new Uint8Array(16);\n bytes[0] = unixTsMs / 2 ** 40;\n bytes[1] = unixTsMs / 2 ** 32;\n bytes[2] = unixTsMs / 2 ** 24;\n bytes[3] = unixTsMs / 2 ** 16;\n bytes[4] = unixTsMs / 256;\n bytes[5] = unixTsMs;\n bytes[6] = 0x70 | randA >>> 8;\n bytes[7] = randA;\n bytes[8] = 0x80 | randBHi >>> 24;\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n return new UUID(bytes);\n }\n static parse(uuid) {\n let hex;\n switch(uuid.length){\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 38:\n hex = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 45:\n hex = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n default:\n break;\n }\n if (hex) {\n const inner = new Uint8Array(16);\n for(let i = 0; i < 16; i += 4){\n const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);\n inner[i + 0] = n >>> 24;\n inner[i + 1] = n >>> 16;\n inner[i + 2] = n >>> 8;\n inner[i + 3] = n;\n }\n return new UUID(inner);\n }\n throw new SyntaxError(\"could not parse UUID string\");\n }\n toString() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n if (3 === i || 5 === i || 7 === i || 9 === i) text += \"-\";\n }\n return text;\n }\n toHex() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n }\n return text;\n }\n toJSON() {\n return this.toString();\n }\n getVariant() {\n const n = this.bytes[8] >>> 4;\n if (n < 0) throw new Error(\"unreachable\");\n if (n <= 7) return this.bytes.every((e)=>0 === e) ? \"NIL\" : \"VAR_0\";\n if (n <= 11) return \"VAR_10\";\n if (n <= 13) return \"VAR_110\";\n if (n <= 15) return this.bytes.every((e)=>0xff === e) ? \"MAX\" : \"VAR_RESERVED\";\n else throw new Error(\"unreachable\");\n }\n getVersion() {\n return \"VAR_10\" === this.getVariant() ? this.bytes[6] >>> 4 : void 0;\n }\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n equals(other) {\n return 0 === this.compareTo(other);\n }\n compareTo(other) {\n for(let i = 0; i < 16; i++){\n const diff = this.bytes[i] - other.bytes[i];\n if (0 !== diff) return Math.sign(diff);\n }\n return 0;\n }\n}\nclass V7Generator {\n constructor(randomNumberGenerator){\n this.timestamp = 0;\n this.counter = 0;\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n generate() {\n return this.generateOrResetCore(Date.now(), 10000);\n }\n generateOrAbort() {\n return this.generateOrAbortCore(Date.now(), 10000);\n }\n generateOrResetCore(unixTsMs, rollbackAllowance) {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (void 0 === value) {\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n }\n return value;\n }\n generateOrAbortCore(unixTsMs, rollbackAllowance) {\n const MAX_COUNTER = 0x3ffffffffff;\n if (!Number.isInteger(unixTsMs) || unixTsMs < 1 || unixTsMs > 0xffffffffffff) throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n if (rollbackAllowance < 0 || rollbackAllowance > 0xffffffffffff) throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else {\n if (!(unixTsMs + rollbackAllowance >= this.timestamp)) return;\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & 2 ** 30 - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 0x400 * this.random.nextUint32() + (0x3ff & this.random.nextUint32());\n }\n generateV4() {\n const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n bytes[6] = 0x40 | bytes[6] >>> 4;\n bytes[8] = 0x80 | bytes[8] >>> 2;\n return UUID.ofInner(bytes);\n }\n}\nconst getDefaultRandom = ()=>({\n nextUint32: ()=>0x10000 * Math.trunc(0x10000 * Math.random()) + Math.trunc(0x10000 * Math.random()) >>> 0\n });\nlet defaultGenerator;\nconst uuidv7 = ()=>uuidv7obj().toString();\nconst uuidv7obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generate();\nconst uuidv4 = ()=>uuidv4obj().toString();\nconst uuidv4obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\nexport { UUID, V7Generator, uuidv4, uuidv4obj, uuidv7, uuidv7obj };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst OCULUS_BROWSER = 'Oculus Browser';\nconst VIVALDI = 'Vivaldi';\nconst YANDEX = 'Yandex';\nconst WHALE = 'Whale';\nconst DUCKDUCKGO = 'DuckDuckGo';\nconst PALE_MOON = 'Pale Moon';\nconst WATERFOX = 'Waterfox';\nconst BRAVE = 'Brave';\nconst GOOGLE_SEARCH_APP = 'Google Search App';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nfunction browserFromHints(hints) {\n if (hints?.brave) return BRAVE;\n return null;\n}\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor, hints, options) {\n vendor = vendor || '';\n const fromHints = browserFromHints(hints);\n if (fromHints) return fromHints;\n if (options?.detectGoogleSearchApp && includes(user_agent, 'GSA/')) return GOOGLE_SEARCH_APP;\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, 'OculusBrowser')) return OCULUS_BROWSER;\n else if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, VIVALDI + '/')) return VIVALDI;\n else if (includes(user_agent, 'YaBrowser/')) return YANDEX;\n else if (includes(user_agent, WHALE + '/')) return WHALE;\n else if (includes(user_agent, DUCKDUCKGO + '/') || includes(user_agent, 'Ddg/')) return DUCKDUCKGO;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (includes(user_agent, BRAVE + '/')) return BRAVE;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, 'PaleMoon/')) return PALE_MOON;\n else if (includes(user_agent, WATERFOX + '/')) return WATERFOX;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [OCULUS_BROWSER]: [\n new RegExp('OculusBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [VIVALDI]: [\n new RegExp(VIVALDI + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [YANDEX]: [\n new RegExp('YaBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WHALE]: [\n new RegExp(WHALE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [BRAVE]: [\n new RegExp(BRAVE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [DUCKDUCKGO]: [\n new RegExp('(DuckDuckGo|Ddg)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [PALE_MOON]: [\n new RegExp('PaleMoon\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WATERFOX]: [\n new RegExp(WATERFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [GOOGLE_SEARCH_APP]: [\n new RegExp('GSA\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor, hints, options) {\n const browser = detectBrowser(userAgent, vendor, hints, options);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent, options) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n if (options?.userAgentDataPlatform === 'Android' && (options?.maxTouchPoints ?? 0) > 0) {\n const shortSide = Math.min(options?.screenWidth ?? 0, options?.screenHeight ?? 0);\n const shortSideDp = shortSide / (options?.devicePixelRatio ?? 1);\n return shortSideDp >= 600 ? TABLET : MOBILE;\n }\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","import { isArray, isBoolean, isNull, isNullish, isNumber, isUndefined } from \"../utils/index.mjs\";\nimport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString } from \"../utils/json-utils.mjs\";\nconst OTLP_SEVERITY_MAP = {\n trace: {\n text: 'TRACE',\n number: 1\n },\n debug: {\n text: 'DEBUG',\n number: 5\n },\n info: {\n text: 'INFO',\n number: 9\n },\n warn: {\n text: 'WARN',\n number: 13\n },\n error: {\n text: 'ERROR',\n number: 17\n },\n fatal: {\n text: 'FATAL',\n number: 21\n }\n};\nconst DEFAULT_OTLP_SEVERITY = OTLP_SEVERITY_MAP.info;\nfunction getOtlpSeverityText(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).text;\n}\nfunction getOtlpSeverityNumber(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).number;\n}\nconst INT64_RANGE_LIMIT = 9223372036854775808;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction newState() {\n return {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n}\nfunction toOtlpAnyValue(value, logger) {\n try {\n return encodeAnyValue(value, logger, newState(), 0);\n } catch {\n return {\n stringValue: UNSERIALIZABLE_VALUE\n };\n }\n}\nfunction toOtlpKeyValueList(attrs, logger) {\n try {\n return encodeKeyValueList(attrs, logger, newState(), 0);\n } catch {\n return [];\n }\n}\nfunction encodeAnyValue(value, logger, state, depth) {\n if (state.remainingNodes <= 0) return {\n stringValue: TRUNCATED_VALUE\n };\n state.remainingNodes--;\n if (isBoolean(value)) return {\n boolValue: value\n };\n if ('number' == typeof value) {\n if (!Number.isFinite(value)) return {\n stringValue: String(value)\n };\n if (Number.isInteger(value)) {\n if (Number.isSafeInteger(value)) return {\n intValue: String(value)\n };\n if ('undefined' == typeof BigInt) return {\n stringValue: String(value)\n };\n const decimal = BigInt(value).toString();\n if (value >= INT64_RANGE_LIMIT || value < -INT64_RANGE_LIMIT) {\n logger?.debug(`Attribute ${decimal} is outside the int64 range; encoding it as a string`);\n return {\n stringValue: decimal\n };\n }\n return {\n intValue: decimal\n };\n }\n return {\n doubleValue: value\n };\n }\n if ('string' == typeof value) return {\n stringValue: sanitizeString(value)\n };\n if ('function' == typeof value) return {\n stringValue: FUNCTION_VALUE\n };\n if ('symbol' == typeof value) return {\n stringValue: String(value)\n };\n if ('object' == typeof value && null !== value) {\n if (state.ancestors.has(value)) return {\n stringValue: CIRCULAR_VALUE\n };\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return {\n stringValue: TRUNCATED_VALUE\n };\n if (value instanceof Date) {\n const time = value.getTime();\n const iso = Number.isFinite(time) ? value.toISOString() : String(value);\n return {\n stringValue: 'string' == typeof iso ? sanitizeString(iso) : String(iso)\n };\n }\n state.ancestors.add(value);\n try {\n try {\n const toJSON = value.toJSON;\n if ('function' == typeof toJSON) return encodeAnyValue(toJSON.call(value), logger, state, depth + 1);\n } catch {}\n if (isArray(value)) return {\n arrayValue: {\n values: encodeArrayValues(value, logger, state, depth + 1)\n }\n };\n return {\n kvlistValue: {\n values: encodeKeyValueList(value, logger, state, depth + 1)\n }\n };\n } finally{\n state.ancestors.delete(value);\n }\n }\n return {\n stringValue: sanitizeString(String(value))\n };\n}\nfunction encodeArrayValues(values, logger, state, depth) {\n const result = [];\n const itemCount = Math.min(values.length, MAX_JSON_SAFE_VALUE_ITEMS);\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)try {\n const element = index in values ? values[index] : void 0;\n if (isNullish(element)) continue;\n result.push(encodeAnyValue(element, logger, state, depth));\n } catch {\n result.push({\n stringValue: UNSERIALIZABLE_VALUE\n });\n }\n if (values.length > index) result.push({\n stringValue: TRUNCATED_VALUE\n });\n return result;\n}\nfunction encodeKeyValueList(attrs, logger, state, depth) {\n const result = [];\n for(const key in attrs)if (propertyIsEnumerable.call(attrs, key)) {\n if (result.length >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n logger?.debug('Attributes truncated: the value exceeds the OTLP encoder budget');\n break;\n }\n try {\n const value = attrs[key];\n if (isNull(value) || isUndefined(value)) continue;\n result.push({\n key: sanitizeString(key),\n value: encodeAnyValue(value, logger, state, depth)\n });\n } catch {\n result.push({\n key: sanitizeString(key),\n value: {\n stringValue: UNSERIALIZABLE_VALUE\n }\n });\n }\n }\n return result;\n}\nfunction timestampToUnixNano(timestampMs = Date.now()) {\n return String(timestampMs) + '000000';\n}\nfunction encodeBody(body) {\n try {\n return sanitizeString(String(body));\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n}\nfunction buildOtlpLogRecord(options, sdkContext, logger, occurredAtMs) {\n const level = options.level || 'info';\n const { text: severityText, number: severityNumber } = OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY;\n const eventTimeNano = timestampToUnixNano(isNumber(occurredAtMs) ? occurredAtMs : void 0);\n const autoAttributes = {};\n if (sdkContext.distinctId) autoAttributes.posthogDistinctId = sdkContext.distinctId;\n if (sdkContext.sessionId) autoAttributes.sessionId = sdkContext.sessionId;\n if (sdkContext.windowId) autoAttributes['window.id'] = sdkContext.windowId;\n if (!isNullish(sdkContext.sessionStartTimestamp)) autoAttributes.sessionStartTimestamp = String(sdkContext.sessionStartTimestamp);\n if (!isNullish(sdkContext.lastActivityTimestamp)) autoAttributes.lastActivityTimestamp = String(sdkContext.lastActivityTimestamp);\n if (sdkContext.currentUrl) autoAttributes['url.full'] = sdkContext.currentUrl;\n if (sdkContext.screenName) autoAttributes['screen.name'] = sdkContext.screenName;\n if (sdkContext.appState) autoAttributes['app.state'] = sdkContext.appState;\n if (sdkContext.activeFeatureFlags && sdkContext.activeFeatureFlags.length > 0) autoAttributes.feature_flags = sdkContext.activeFeatureFlags;\n const mergedAttributes = {\n ...autoAttributes\n };\n const userAttributes = options.attributes;\n if (userAttributes) {\n let keys = [];\n try {\n keys = Object.keys(userAttributes);\n } catch {\n keys = [];\n }\n for (const key of keys){\n let value;\n try {\n value = userAttributes[key];\n } catch {\n value = UNSERIALIZABLE_VALUE;\n }\n Object.defineProperty(mergedAttributes, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true\n });\n }\n }\n const record = {\n timeUnixNano: eventTimeNano,\n observedTimeUnixNano: eventTimeNano,\n severityNumber,\n severityText,\n body: {\n stringValue: encodeBody(options.body)\n },\n attributes: toOtlpKeyValueList(mergedAttributes, logger)\n };\n if (options.trace_id) record.traceId = options.trace_id;\n if (options.span_id) record.spanId = options.span_id;\n if (!isUndefined(options.trace_flags)) record.flags = options.trace_flags;\n return record;\n}\nfunction buildResourceAttributes(config, sdkName, sdkVersion) {\n return {\n ...config.resourceAttributes,\n 'service.name': config.serviceName || 'unknown_service',\n ...config.environment && {\n 'deployment.environment': config.environment\n },\n ...config.serviceVersion && {\n 'service.version': config.serviceVersion\n },\n 'telemetry.sdk.name': sdkName,\n 'telemetry.sdk.version': sdkVersion\n };\n}\nfunction buildOtlpLogsPayload(logRecords, resourceAttributes, scopeName, scopeVersion) {\n return {\n resourceLogs: [\n {\n resource: {\n attributes: toOtlpKeyValueList(resourceAttributes)\n },\n scopeLogs: [\n {\n scope: {\n name: scopeName,\n version: scopeVersion\n },\n logRecords\n }\n ]\n }\n ]\n };\n}\nexport { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText, toOtlpAnyValue, toOtlpKeyValueList };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\nexport * from \"./exception-steps.mjs\";\nexport * from \"./release.mjs\";\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext(hint);\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? ctx.skipFirstLines : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext(hint) {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser),\n skipFirstLines: hint.skipFirstLines ?? 1\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nconst MASKED_URL_PREFIX = 'webkit-masked-url://';\nconst ANONYMOUS_FILENAME = '<anonymous>';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: !filename?.startsWith(MASKED_URL_PREFIX) && filename !== ANONYMOUS_FILENAME\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst PROMISE_COMBINATOR = /^Promise\\.(?:all|any)$/;\nconst PROMISE_INDEX = /^index \\d+$/;\nconst PROMISE_FRAME_FILENAME = 'node:internal/promise';\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isError } from \"../../utils/type-utils.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isError(err);\n }\n coerce(err, ctx) {\n const stack = this.getStack(err);\n const synthetic = void 0 === stack;\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: stack ?? ctx.syntheticException?.stack,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent, isString } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n if (!isErrorEvent(err)) return false;\n const errorEvent = err;\n return void 0 != errorEvent.error || this._hasUsableMessage(errorEvent);\n }\n coerce(err, ctx) {\n if (void 0 != err.error) return ctx.apply(err.error);\n const exceptionLike = ctx.apply(err.message);\n return {\n ...exceptionLike,\n stack: this._buildLocationStack(err) ?? exceptionLike.stack,\n synthetic: true\n };\n }\n _hasUsableMessage(err) {\n return isString(err.message) && err.message.length > 0;\n }\n _buildLocationStack(err) {\n const location = err;\n const lineno = location.lineno ?? 0;\n const colno = location.colno ?? 0;\n if (!isString(location.filename) || 0 === location.filename.length) return;\n if (0 === lineno) return;\n return `Error\\n at ${location.filename}:${lineno}:${colno}`;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: this.getStack(candidate) ?? ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n if (isEvent(err)) return err.constructor.name;\n const name = 'name' in err ? err.name : void 0;\n return isString(name) && !isEmptyString(name) ? name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getStack(candidate) {\n try {\n if (isString(candidate.stacktrace) && candidate.stacktrace.length > 0) return candidate.stacktrace;\n return isString(candidate.stack) && candidate.stack.length > 0 ? candidate.stack : void 0;\n } catch {\n return;\n }\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isEvent, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent') || this.isCustomEventWrappingRejection(err);\n }\n isCustomEventWrappingRejection(err) {\n if (!isEvent(err)) return false;\n try {\n const detail = err.detail;\n return null != detail && 'object' == typeof detail && 'reason' in detail;\n } catch {\n return false;\n }\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && null != error.detail && 'object' == typeof error.detail && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","import { isNumber, isObject, isString, safeJsonStringify } from \"../utils/index.mjs\";\nconst EXCEPTION_STEP_INTERNAL_FIELDS = {\n MESSAGE: '$message',\n TIMESTAMP: '$timestamp'\n};\nconst RESERVED_EXCEPTION_STEP_KEYS = new Set([\n EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,\n EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP\n]);\nconst DEFAULT_EXCEPTION_STEPS_CONFIG = {\n enabled: true,\n max_bytes: 32768\n};\nfunction resolveExceptionStepsConfig(config) {\n if (!config) return {\n ...DEFAULT_EXCEPTION_STEPS_CONFIG\n };\n return {\n enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,\n max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)\n };\n}\nfunction stripReservedExceptionStepFields(properties) {\n if (!properties) return {\n sanitizedProperties: {},\n droppedKeys: []\n };\n const droppedKeys = [];\n const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{\n if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {\n droppedKeys.push(key);\n return acc;\n }\n acc[key] = properties[key];\n return acc;\n }, {});\n return {\n sanitizedProperties,\n droppedKeys\n };\n}\nclass ExceptionStepsBuffer {\n constructor(config){\n this._entries = [];\n this._totalBytes = 0;\n this._config = resolveExceptionStepsConfig(config);\n }\n setConfig(config) {\n this._config = resolveExceptionStepsConfig(config);\n this._trimToMaxBytes();\n }\n add(step) {\n const serialized = normalizeAndSerializeStep(step);\n if (!serialized) return;\n const bytes = getUtf8ByteLength(serialized.json);\n if (bytes > this._config.max_bytes) return;\n this._entries.push({\n step: serialized.step,\n bytes\n });\n this._totalBytes += bytes;\n this._trimToMaxBytes();\n }\n getAttachable() {\n return this._entries.map((e)=>e.step);\n }\n clear() {\n this._entries = [];\n this._totalBytes = 0;\n }\n size() {\n return this._entries.length;\n }\n _trimToMaxBytes() {\n while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){\n const evicted = this._entries.shift();\n if (evicted) this._totalBytes -= evicted.bytes;\n }\n }\n}\nfunction normalizePositiveInteger(input, fallback) {\n if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;\n const normalized = Math.floor(input);\n if (normalized < 0) return fallback;\n return normalized;\n}\nfunction normalizeAndSerializeStep(step) {\n let json;\n try {\n json = safeJsonStringify(step);\n } catch {\n return;\n }\n try {\n const parsed = JSON.parse(json);\n if (!isObject(parsed)) return;\n const parsedStep = parsed;\n const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];\n const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];\n if (!isString(message) || 0 === message.trim().length) return;\n if (!isString(timestamp) && !isNumber(timestamp)) return;\n return {\n step: parsedStep,\n json\n };\n } catch {\n return;\n }\n}\nfunction getUtf8ByteLength(value) {\n if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;\n const encoded = encodeURIComponent(value);\n let byteLength = 0;\n for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {\n byteLength += 1;\n i += 2;\n } else byteLength += 1;\n return byteLength;\n}\nexport { DEFAULT_EXCEPTION_STEPS_CONFIG, EXCEPTION_STEP_INTERNAL_FIELDS, ExceptionStepsBuffer, getUtf8ByteLength, resolveExceptionStepsConfig, stripReservedExceptionStepFields };\n","function getInjectedReleaseId() {\n const injected = globalThis._posthogReleaseId;\n return 'string' == typeof injected && injected.length > 0 ? injected : void 0;\n}\nexport { getInjectedReleaseId };\n","let activeLogger;\nfunction setLogger(logger) {\n activeLogger = logger;\n}\nfunction writeLog(logger, message) {\n if (logger) try {\n logger(message);\n } catch {}\n}\nfunction createLogger(logger) {\n return logger ? (message)=>writeLog(logger, message) : log;\n}\nfunction log(message) {\n writeLog(activeLogger, message);\n}\nexport { createLogger, log, setLogger };\n","const INACTIVITY_TIMEOUT_IN_MINUTES = 30;\nconst DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = \"Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \\\"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\\\"\";\nconst DEFAULT_MODEL_PARAMETER_DESCRIPTION = `The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" \\u{2014} never guess.`;\nconst DEFAULT_CONVERSATION_ID_DESCRIPTION = \"Echo the conversation_id from the server's previous response. The server provides it on the first call \\u2014 never invent one, and do not issue parallel tool calls until you have it.\";\nconst POSTHOG_MCP_ANALYTICS_SOURCE = 'posthog_mcp_analytics';\nconst POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp';\nconst PostHogMCPAnalyticsEvent = {\n Custom: '$mcp_custom',\n Exception: '$exception',\n Identify: '$identify',\n Initialize: '$mcp_initialize',\n MissingCapability: '$mcp_missing_capability',\n PromptGet: '$mcp_prompt_get',\n PromptsList: '$mcp_prompts_list',\n ResourceRead: '$mcp_resource_read',\n ResourcesList: '$mcp_resources_list',\n ToolCall: '$mcp_tool_call',\n ToolsList: '$mcp_tools_list'\n};\nconst PostHogMCPAnalyticsProperty = {\n ClientName: '$mcp_client_name',\n ClientUserAgent: '$mcp_client_user_agent',\n ClientVersion: '$mcp_client_version',\n ConversationId: '$mcp_conversation_id',\n DurationMs: '$mcp_duration_ms',\n ErrorMessage: '$mcp_error_message',\n ErrorType: '$mcp_error_type',\n IsError: '$mcp_is_error',\n Intent: '$mcp_intent',\n IntentSource: '$mcp_intent_source',\n ListedToolNames: '$mcp_listed_tool_names',\n LlmModel: '$mcp_llm_model',\n LlmModelSource: '$mcp_llm_model_source',\n Parameters: '$mcp_parameters',\n ProtocolVersion: '$mcp_protocol_version',\n ResourceName: '$mcp_resource_name',\n Response: '$mcp_response',\n ServerName: '$mcp_server_name',\n ServerVersion: '$mcp_server_version',\n SessionId: '$session_id',\n Source: '$mcp_source',\n ToolCategory: '$mcp_tool_category',\n ToolDescription: \"$mcp_tool_description\",\n ToolName: '$mcp_tool_name',\n VendorClient: '$mcp_vendor_client'\n};\nexport { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION, DEFAULT_CONVERSATION_ID_DESCRIPTION, DEFAULT_MODEL_PARAMETER_DESCRIPTION, INACTIVITY_TIMEOUT_IN_MINUTES, POSTHOG_MCP_ANALYTICS_SOURCE, POSTHOG_MCP_LIB_NAME, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty };\n","const MCPAnalyticsEventType = {\n identify: 'posthog:identify',\n custom: 'posthog:custom',\n mcpMissingCapability: 'mcp:missing_capability',\n mcpInitialize: 'mcp:initialize',\n mcpPromptsGet: 'mcp:prompts/get',\n mcpPromptsList: 'mcp:prompts/list',\n mcpResourcesList: 'mcp:resources/list',\n mcpResourcesRead: 'mcp:resources/read',\n mcpToolsCall: 'mcp:tools/call',\n mcpToolsList: 'mcp:tools/list'\n};\nexport { MCPAnalyticsEventType };\n","import { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from \"./constants.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nconst BUILT_IN_EVENT_NAME_BY_TYPE = {\n [MCPAnalyticsEventType.custom]: PostHogMCPAnalyticsEvent.Custom,\n [MCPAnalyticsEventType.identify]: PostHogMCPAnalyticsEvent.Identify,\n [MCPAnalyticsEventType.mcpMissingCapability]: PostHogMCPAnalyticsEvent.MissingCapability,\n [MCPAnalyticsEventType.mcpInitialize]: PostHogMCPAnalyticsEvent.Initialize,\n [MCPAnalyticsEventType.mcpPromptsGet]: PostHogMCPAnalyticsEvent.PromptGet,\n [MCPAnalyticsEventType.mcpPromptsList]: PostHogMCPAnalyticsEvent.PromptsList,\n [MCPAnalyticsEventType.mcpResourcesList]: PostHogMCPAnalyticsEvent.ResourcesList,\n [MCPAnalyticsEventType.mcpResourcesRead]: PostHogMCPAnalyticsEvent.ResourceRead,\n [MCPAnalyticsEventType.mcpToolsCall]: PostHogMCPAnalyticsEvent.ToolCall,\n [MCPAnalyticsEventType.mcpToolsList]: PostHogMCPAnalyticsEvent.ToolsList\n};\nfunction getDistinctId(event) {\n return event.identifyActorGivenId || event.sessionId || 'anonymous';\n}\nfunction getTimestamp(event) {\n return event.timestamp ? event.timestamp.toISOString() : new Date().toISOString();\n}\nfunction buildPostHogCaptureEvents(event, options = {}) {\n const batch = [\n buildCaptureEvent(event)\n ];\n if (event.isError && event.error && false !== options.enableExceptionAutocapture) batch.push(buildExceptionEvent(event));\n return batch;\n}\nfunction buildCaptureEvent(event) {\n const distinctId = getDistinctId(event);\n const timestamp = getTimestamp(event);\n const properties = {\n [PostHogMCPAnalyticsProperty.Source]: POSTHOG_MCP_ANALYTICS_SOURCE\n };\n addSessionIdProperty(event, properties);\n addConversationIdProperty(event, properties);\n addPersonProcessingProperty(event, properties);\n addGroupsProperty(event, properties);\n addCommonEventProperties(event, properties);\n addCustomEventProperties(event, properties);\n return {\n event: event.eventName ?? BUILT_IN_EVENT_NAME_BY_TYPE[event.eventType],\n distinct_id: distinctId,\n properties,\n timestamp,\n type: 'capture'\n };\n}\nfunction addSessionIdProperty(event, properties) {\n if ('string' == typeof event.sessionId && event.sessionId.length > 0) properties[PostHogMCPAnalyticsProperty.SessionId] = event.sessionId;\n}\nfunction addConversationIdProperty(event, properties) {\n if (void 0 !== event.conversationId && '' !== event.conversationId) properties[PostHogMCPAnalyticsProperty.ConversationId] = event.conversationId;\n}\nfunction addGroupsProperty(event, properties) {\n if (event.groups && Object.keys(event.groups).length > 0) properties.$groups = event.groups;\n}\nfunction addPersonProcessingProperty(event, properties) {\n if (!event.identifyActorGivenId) properties.$process_person_profile = false;\n}\nfunction addCommonEventProperties(event, properties) {\n if (event.resourceName) {\n properties[PostHogMCPAnalyticsProperty.ResourceName] = event.resourceName;\n if (event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolName] = event.resourceName;\n }\n if (event.toolDescription && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolDescription] = event.toolDescription;\n if (event.toolCategory && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolCategory] = event.toolCategory;\n if (event.listedToolNames && event.listedToolNames.length > 0 && event.eventType === MCPAnalyticsEventType.mcpToolsList) properties[PostHogMCPAnalyticsProperty.ListedToolNames] = event.listedToolNames;\n if (void 0 !== event.duration) properties[PostHogMCPAnalyticsProperty.DurationMs] = event.duration;\n if (event.serverName) properties[PostHogMCPAnalyticsProperty.ServerName] = event.serverName;\n if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;\n if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;\n if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;\n if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;\n if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;\n if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;\n if (event.userIntent) properties[PostHogMCPAnalyticsProperty.Intent] = event.userIntent;\n if (event.userIntentSource) properties[PostHogMCPAnalyticsProperty.IntentSource] = event.userIntentSource;\n if (event.llmModel) properties[PostHogMCPAnalyticsProperty.LlmModel] = event.llmModel;\n if (event.llmModelSource) properties[PostHogMCPAnalyticsProperty.LlmModelSource] = event.llmModelSource;\n if (void 0 !== event.isError) properties[PostHogMCPAnalyticsProperty.IsError] = event.isError;\n if (event.isError) {\n const firstException = event.error?.$exception_list?.[0];\n const errorType = event.errorType ?? firstException?.type;\n if (errorType) properties[PostHogMCPAnalyticsProperty.ErrorType] = errorType;\n if (firstException?.value) properties[PostHogMCPAnalyticsProperty.ErrorMessage] = firstException.value;\n }\n if (void 0 !== event.parameters) properties[PostHogMCPAnalyticsProperty.Parameters] = event.parameters;\n if (void 0 !== event.response) properties[PostHogMCPAnalyticsProperty.Response] = event.response;\n if (event.identifyActorData && Object.keys(event.identifyActorData).length > 0) properties.$set = {\n ...event.identifyActorData\n };\n}\nfunction addCustomEventProperties(event, properties) {\n if (event.properties) for (const [key, value] of Object.entries(event.properties))properties[key] = value;\n}\nfunction buildExceptionEvent(event) {\n const distinctId = getDistinctId(event);\n const timestamp = getTimestamp(event);\n const properties = {};\n addSessionIdProperty(event, properties);\n addConversationIdProperty(event, properties);\n addPersonProcessingProperty(event, properties);\n addGroupsProperty(event, properties);\n if (event.error) Object.assign(properties, event.error);\n if (event.resourceName) {\n properties[PostHogMCPAnalyticsProperty.ResourceName] = event.resourceName;\n if (event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolName] = event.resourceName;\n }\n if (event.toolDescription && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolDescription] = event.toolDescription;\n if (event.toolCategory && event.eventType === MCPAnalyticsEventType.mcpToolsCall) properties[PostHogMCPAnalyticsProperty.ToolCategory] = event.toolCategory;\n if (event.serverName) properties[PostHogMCPAnalyticsProperty.ServerName] = event.serverName;\n if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;\n if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;\n if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;\n if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;\n if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;\n if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;\n addCustomEventProperties(event, properties);\n return {\n event: PostHogMCPAnalyticsEvent.Exception,\n distinct_id: distinctId,\n properties,\n timestamp,\n type: 'capture'\n };\n}\nexport { buildPostHogCaptureEvents };\n","import { uuidv7 } from \"@posthog/core\";\nfunction newPrefixedId(prefix) {\n return `${prefix}_${uuidv7()}`;\n}\nfunction deterministicPrefixedId(prefix, input) {\n return `${prefix}_${fnv1aHex(input)}${fnv1aHex(`${input}::salt`)}`;\n}\nfunction fnv1aHex(input) {\n let h1 = 0x84222325;\n let h2 = 0xcbf29ce4;\n for(let i = 0; i < input.length; i++){\n const c = input.charCodeAt(i);\n h1 = Math.imul(h1 ^ c, 0x000001b3);\n h2 = Math.imul(h2 ^ c, 0x00000193);\n }\n return (h1 >>> 0).toString(16).padStart(8, '0') + (h2 >>> 0).toString(16).padStart(8, '0');\n}\nexport { deterministicPrefixedId, newPrefixedId };\n","const CONTEXT_ARGUMENT_NAME = 'context';\nconst REDACTED_VALUE = '[redacted]';\nconst BINARY_REDACTED_VALUE = '[binary data redacted - not supported by PostHog MCP analytics]';\nconst BASE64_PATTERN = /^[A-Za-z0-9+/\\n\\r]+=*$/;\nconst BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;\nconst BASE64URL_SPECIFIC_CHAR_PATTERN = /[-_]/;\nconst BASE64_DATA_URL_PREFIX_PATTERN = /^data:[^,\\s]*;base64,/i;\nconst BASE64_DATA_URL_PAYLOAD_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;\nconst SIZE_GATE = 10240;\nconst POSTHOG_TOKEN_PATTERN = /\\bph[a-z]_[A-Za-z0-9_-]{20,}\\b/g;\nconst SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;\nfunction isRecord(value) {\n return !!value && 'object' == typeof value && !Array.isArray(value);\n}\nfunction shouldRedactKey(key) {\n return SENSITIVE_KEY_PATTERN.test(key);\n}\nfunction isBase64DataUrl(value) {\n const prefix = BASE64_DATA_URL_PREFIX_PATTERN.exec(value);\n if (!prefix) return false;\n let payload;\n try {\n payload = decodeURIComponent(value.slice(prefix[0].length));\n } catch {\n return false;\n }\n return BASE64_DATA_URL_PAYLOAD_PATTERN.test(payload.replace(/[\\r\\n]/g, ''));\n}\nfunction sanitizeString(value) {\n if (value.length >= SIZE_GATE && (BASE64_PATTERN.test(value) || isBase64DataUrl(value) || BASE64URL_SPECIFIC_CHAR_PATTERN.test(value) && BASE64URL_PATTERN.test(value))) return BINARY_REDACTED_VALUE;\n return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);\n}\nfunction sanitizeCapturedValue(value) {\n if (null == value) return value;\n if ('string' == typeof value) return sanitizeString(value);\n if (Array.isArray(value)) return value.map(sanitizeCapturedValue);\n if (value instanceof Date) return value;\n if ('object' != typeof value) return value;\n const result = {};\n for (const [key, nestedValue] of Object.entries(value))result[key] = shouldRedactKey(key) ? REDACTED_VALUE : sanitizeCapturedValue(nestedValue);\n return result;\n}\nfunction buildCapturedMcpArguments(argumentsValue) {\n if (!isRecord(argumentsValue)) return sanitizeCapturedValue(argumentsValue);\n const capturedArguments = {};\n for (const [key, value] of Object.entries(argumentsValue))if (key !== CONTEXT_ARGUMENT_NAME) capturedArguments[key] = sanitizeCapturedValue(value);\n return capturedArguments;\n}\nfunction buildCapturedMcpParams(params) {\n if (!isRecord(params)) return sanitizeCapturedValue(params);\n const capturedParams = {};\n for (const [key, value] of Object.entries(params))capturedParams[key] = 'arguments' === key ? buildCapturedMcpArguments(value) : sanitizeCapturedValue(value);\n return capturedParams;\n}\nfunction buildCapturedMcpParameters(request) {\n if (!isRecord(request)) return {\n request: sanitizeCapturedValue(request)\n };\n const capturedRequest = {};\n for (const key of [\n 'id',\n 'jsonrpc',\n 'method'\n ])if (key in request) capturedRequest[key] = sanitizeCapturedValue(request[key]);\n if ('params' in request) capturedRequest.params = buildCapturedMcpParams(request.params);\n return {\n request: capturedRequest\n };\n}\nexport { buildCapturedMcpParameters, sanitizeCapturedValue };\n","import { sanitizeCapturedValue } from \"./mcp-payloads.mjs\";\nfunction isRecord(value) {\n return !!value && 'object' == typeof value && !Array.isArray(value);\n}\nfunction sanitizeEvent(event) {\n const result = {\n ...event\n };\n if (null != result.response) result.response = sanitizeResponse(result.response);\n if (null != result.parameters) result.parameters = sanitizeParameters(result.parameters);\n if (null != result.userIntent) result.userIntent = sanitizeCapturedValue(result.userIntent);\n if (null != result.error) result.error = sanitizeExceptionValues(result.error);\n return result;\n}\nfunction sanitizeExceptionValues(error) {\n if (!Array.isArray(error.$exception_list)) return error;\n return {\n ...error,\n $exception_list: error.$exception_list.map((exception)=>({\n ...exception,\n value: sanitizeCapturedValue(exception.value)\n }))\n };\n}\nfunction sanitizeResponse(response) {\n if (null == response || 'object' != typeof response) return sanitizeCapturedValue(response);\n const sanitized = sanitizeCapturedValue(response);\n if (!isRecord(sanitized)) return sanitized;\n const result = {\n ...sanitized\n };\n const content = result.content;\n if (Array.isArray(content)) result.content = content.map(sanitizeContentBlock);\n if (null != result.structuredContent && 'object' == typeof result.structuredContent) result.structuredContent = sanitizeCapturedValue(result.structuredContent);\n return result;\n}\nfunction sanitizeContentBlock(block) {\n if (null == block || 'object' != typeof block) return block;\n if (!isRecord(block)) return block;\n switch(block.type){\n case 'text':\n return sanitizeCapturedValue(block);\n case 'image':\n return {\n type: 'text',\n text: '[image content redacted - not supported by PostHog MCP analytics]'\n };\n case 'audio':\n return {\n type: 'text',\n text: '[audio content redacted - not supported by PostHog MCP analytics]'\n };\n case 'resource':\n return sanitizeResourceBlock(block);\n case 'resource_link':\n return sanitizeCapturedValue(block);\n default:\n return {\n type: 'text',\n text: `[unsupported content type \"${block.type}\" redacted - not supported by PostHog MCP analytics]`\n };\n }\n}\nfunction sanitizeResourceBlock(block) {\n if (isRecord(block.resource) && 'blob' in block.resource) return {\n type: 'text',\n text: '[binary resource content redacted - not supported by PostHog MCP analytics]'\n };\n return sanitizeCapturedValue(block);\n}\nfunction sanitizeParameters(obj) {\n return sanitizeCapturedValue(obj);\n}\nexport { sanitizeEvent };\n","const MAX_DEPTH = 10;\nconst MAX_BREADTH = 100;\nconst MAX_STRING_LENGTH = 32768;\nconst MAX_EVENT_BYTES = 102400;\nconst MAX_USER_INTENT_LENGTH = 2048;\nconst MAX_ERROR_MESSAGE_LENGTH = 2048;\nconst MAX_RESOURCE_NAME_LENGTH = 256;\nconst MAX_METADATA_LENGTH = 256;\nconst MAX_STACK_FRAMES = 50;\nconst MAX_CONTENT_TEXT_LENGTH = 32768;\nconst TRUNCATION_SUFFIX = '...';\nfunction normalize(input, depth = MAX_DEPTH, maxBreadth = MAX_BREADTH, maxStringLength = MAX_STRING_LENGTH) {\n const memo = new WeakSet();\n return visit(input, depth, maxBreadth, maxStringLength, memo);\n}\nfunction visit(value, remainingDepth, maxBreadth, maxStringLength, memo) {\n if (null === value) return null;\n if (void 0 === value) return '[undefined]';\n if ('boolean' == typeof value) return value;\n if ('number' == typeof value) {\n if (Number.isNaN(value)) return '[NaN]';\n if (!Number.isFinite(value)) return value > 0 ? '[Infinity]' : '[-Infinity]';\n return value;\n }\n if ('bigint' == typeof value) return `[BigInt: ${value}]`;\n if ('string' == typeof value) {\n if (value.length > maxStringLength) return value.slice(0, maxStringLength) + TRUNCATION_SUFFIX;\n return value;\n }\n if ('symbol' == typeof value) {\n const desc = value.description;\n return desc ? `[Symbol(${desc})]` : '[Symbol()]';\n }\n if ('function' == typeof value) {\n const name = value.name || '<anonymous>';\n return `[Function: ${name}]`;\n }\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? '[Invalid Date]' : value.toISOString();\n if ('object' == typeof value) {\n if (memo.has(value)) return '[Circular ~]';\n if (remainingDepth <= 0) return Array.isArray(value) ? '[Array]' : '[Object]';\n memo.add(value);\n let result;\n result = Array.isArray(value) ? visitArray(value, remainingDepth - 1, maxBreadth, maxStringLength, memo) : visitObject(value, remainingDepth - 1, maxBreadth, maxStringLength, memo);\n memo.delete(value);\n return result;\n }\n return String(value);\n}\nfunction visitArray(arr, remainingDepth, maxBreadth, maxStringLength, memo) {\n const result = [];\n for(let i = 0; i < arr.length; i++){\n if (i >= maxBreadth) {\n result.push('[MaxProperties ~]');\n break;\n }\n result.push(visit(arr[i], remainingDepth, maxBreadth, maxStringLength, memo));\n }\n return result;\n}\nfunction visitObject(obj, remainingDepth, maxBreadth, maxStringLength, memo) {\n const result = {};\n const keys = Object.keys(obj);\n let count = 0;\n for (const key of keys){\n if (count >= maxBreadth) {\n result['...'] = '[MaxProperties ~]';\n break;\n }\n if (void 0 !== obj[key]) {\n result[key] = visit(obj[key], remainingDepth, maxBreadth, maxStringLength, memo);\n count++;\n }\n }\n return result;\n}\nfunction truncateString(str, maxLength) {\n if (null == str) return str;\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength) + TRUNCATION_SUFFIX;\n}\nfunction truncateStackFrames(frames) {\n if (!frames || frames.length <= MAX_STACK_FRAMES) return frames;\n const half = Math.floor(MAX_STACK_FRAMES / 2);\n return [\n ...frames.slice(0, half),\n ...frames.slice(-half)\n ];\n}\nfunction truncateExceptionList(error) {\n if (!Array.isArray(error.$exception_list)) return error;\n return {\n ...error,\n $exception_list: error.$exception_list.map((exception)=>{\n const next = {\n ...exception\n };\n if ('string' == typeof next.value) next.value = truncateString(next.value, MAX_ERROR_MESSAGE_LENGTH);\n if (next.stacktrace?.frames) next.stacktrace = {\n ...next.stacktrace,\n frames: truncateStackFrames(next.stacktrace.frames)\n };\n return next;\n })\n };\n}\nfunction truncateResponseContent(response) {\n if (null == response || 'object' != typeof response) return response;\n const result = {\n ...response\n };\n if (Array.isArray(result.content)) result.content = result.content.map((block)=>{\n if (null != block && 'object' == typeof block && 'type' in block && 'text' in block && block?.type === 'text' && 'string' == typeof block.text && block.text.length > MAX_CONTENT_TEXT_LENGTH) return {\n ...block,\n text: block.text.slice(0, MAX_CONTENT_TEXT_LENGTH) + TRUNCATION_SUFFIX\n };\n return block;\n });\n return result;\n}\nconst textEncoder = new TextEncoder();\nfunction jsonByteSize(value) {\n return textEncoder.encode(JSON.stringify(value)).length;\n}\nfunction truncateLargestFields(obj, maxBytes) {\n const result = structuredClone(obj);\n for(let attempt = 0; attempt < 10; attempt++){\n const currentSize = jsonByteSize(result);\n if (currentSize <= maxBytes) break;\n const excess = currentSize - maxBytes;\n const stringPaths = [];\n collectStringPaths(result, [], stringPaths);\n stringPaths.sort((a, b)=>b.length - a.length);\n if (0 === stringPaths.length) break;\n let remaining = excess + 200;\n let truncated = false;\n for (const { path, length } of stringPaths){\n if (remaining <= 0) break;\n const reduction = Math.min(remaining, Math.floor(0.5 * length));\n if (reduction < 10) continue;\n const newLength = length - reduction;\n const currentValue = getNestedValue(result, path);\n if ('string' == typeof currentValue) {\n setNestedValue(result, path, currentValue.slice(0, newLength) + TRUNCATION_SUFFIX);\n remaining -= reduction;\n truncated = true;\n }\n }\n if (!truncated) break;\n }\n return result;\n}\nfunction collectStringPaths(obj, currentPath, results) {\n if ('string' == typeof obj && obj.length > 100) return void results.push({\n path: [\n ...currentPath\n ],\n length: obj.length\n });\n if (Array.isArray(obj)) {\n for (const [i, item] of obj.entries())collectStringPaths(item, [\n ...currentPath,\n String(i)\n ], results);\n return;\n }\n if (null != obj && 'object' == typeof obj) for (const [key, value] of Object.entries(obj))collectStringPaths(value, [\n ...currentPath,\n key\n ], results);\n}\nfunction getNestedValue(obj, path) {\n let current = obj;\n for (const key of path){\n if (null == current || 'object' != typeof current) return;\n current = current[key];\n }\n return current;\n}\nfunction setNestedValue(obj, path, value) {\n let current = obj;\n for(let i = 0; i < path.length - 1; i++){\n if (null == current || 'object' != typeof current) return;\n current = current[path[i]];\n }\n const finalKey = path.at(-1);\n if (void 0 !== finalKey && null != current && 'object' == typeof current) current[finalKey] = value;\n}\nfunction truncateToSize(event) {\n if (jsonByteSize(event) <= MAX_EVENT_BYTES) return event;\n for(let depth = MAX_DEPTH - 1; depth >= 1; depth--){\n const reduced = {\n ...event\n };\n if (null != reduced.parameters) reduced.parameters = normalize(reduced.parameters, depth);\n if (null != reduced.response) reduced.response = normalize(reduced.response, depth);\n if (null != reduced.identifyActorData) reduced.identifyActorData = normalize(reduced.identifyActorData, depth);\n if (null != reduced.error) reduced.error = normalize(reduced.error, depth);\n if (jsonByteSize(reduced) <= MAX_EVENT_BYTES) return reduced;\n }\n const minimal = {\n ...event\n };\n if (null != minimal.parameters) minimal.parameters = normalize(minimal.parameters, 1);\n if (null != minimal.response) minimal.response = normalize(minimal.response, 1);\n if (null != minimal.identifyActorData) minimal.identifyActorData = normalize(minimal.identifyActorData, 1);\n if (null != minimal.error) minimal.error = normalize(minimal.error, 1);\n return truncateLargestFields(minimal, MAX_EVENT_BYTES);\n}\nfunction truncateEvent(event) {\n const result = {\n ...event\n };\n result.userIntent = truncateString(result.userIntent, MAX_USER_INTENT_LENGTH);\n result.resourceName = truncateString(result.resourceName, MAX_RESOURCE_NAME_LENGTH);\n result.serverName = truncateString(result.serverName, MAX_METADATA_LENGTH);\n result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);\n result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);\n result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);\n result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);\n result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);\n result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);\n result.llmModel = truncateString(result.llmModel, MAX_METADATA_LENGTH);\n if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);\n result.response = truncateResponseContent(result.response);\n if (null != result.parameters) result.parameters = normalize(result.parameters);\n if (null != result.response) result.response = normalize(result.response);\n if (null != result.identifyActorData) result.identifyActorData = normalize(result.identifyActorData);\n if (null != result.error) result.error = normalize(result.error);\n return truncateToSize(result);\n}\nexport { MAX_BREADTH, MAX_DEPTH, MAX_EVENT_BYTES, MAX_STRING_LENGTH, normalize, truncateEvent };\n","import { uuidv7 } from \"@posthog/core\";\nimport { log } from \"./logger.mjs\";\nimport { buildPostHogCaptureEvents } from \"./posthog-events.mjs\";\nimport { newPrefixedId } from \"./ids.mjs\";\nimport { sanitizeEvent } from \"./sanitization.mjs\";\nimport { truncateEvent } from \"./truncation.mjs\";\nasync function processMcpEvent(event, options, logger = log) {\n let processed = event;\n try {\n processed = sanitizeEvent(processed);\n } catch (err) {\n logger(`Failed to sanitize event: ${err}`);\n return null;\n }\n try {\n processed = truncateEvent(processed);\n } catch (err) {\n logger(`Failed to truncate event: ${err}`);\n return null;\n }\n processed.id = processed.id || newPrefixedId('evt');\n const fullEvent = processed;\n const built = buildPostHogCaptureEvents(fullEvent, {\n enableExceptionAutocapture: options.enableExceptionAutocapture\n });\n const captures = await applyBeforeSend(built, options.beforeSend, logger);\n return {\n event: fullEvent,\n captures\n };\n}\nasync function applyBeforeSend(captures, beforeSend, logger) {\n if (!beforeSend) return captures;\n const kept = [];\n for (const capture of captures)try {\n const result = await beforeSend(capture);\n if (result) kept.push(result);\n } catch (err) {\n logger(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);\n }\n return kept;\n}\nclass McpEventSink {\n constructor(posthog, logger = log){\n this.posthog = posthog;\n this.logger = logger;\n }\n async capture(event, options) {\n const result = await processMcpEvent(event, options, this.logger);\n if (!result) return;\n const { event: fullEvent, captures } = result;\n try {\n for (const captureEvent of captures){\n const groups = captureEvent.properties.$groups;\n this.posthog.capture({\n distinctId: captureEvent.distinct_id,\n event: captureEvent.event,\n properties: captureEvent.properties,\n ...groups ? {\n groups\n } : {},\n timestamp: new Date(captureEvent.timestamp),\n uuid: uuidv7()\n });\n }\n this.logger(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId ? 'identified' : 'anonymous'}`);\n } catch (err) {\n this.logger(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);\n }\n }\n}\nexport { McpEventSink, processMcpEvent };\n","const version = '0.12.0';\nexport { version };\n","function readHeaderValue(headers, name) {\n if (!headers || 'object' != typeof headers) return;\n const record = headers;\n let value = record[name];\n if (void 0 === value) {\n const key = Object.keys(record).find((k)=>k.toLowerCase() === name);\n value = void 0 === key ? void 0 : record[key];\n }\n return normalizeHeaderString(value);\n}\nfunction normalizeHeaderString(value) {\n const first = Array.isArray(value) ? value[0] : value;\n if ('string' != typeof first) return;\n const trimmed = first.trim();\n return trimmed.length > 0 ? trimmed : void 0;\n}\nexport { normalizeHeaderString, readHeaderValue };\n","function getRequestHeaders(extra) {\n if (!extra || 'object' != typeof extra) return;\n const record = extra;\n const http = record.http;\n const requestInfo = record.requestInfo;\n const source = http?.req?.headers ?? requestInfo?.headers;\n if (!source || 'object' != typeof source) return;\n return toHeaderBag(source);\n}\nfunction toHeaderBag(source) {\n try {\n const entries = isHeadersLike(source) ? [\n ...source.entries()\n ] : Object.entries(source);\n const bag = {};\n for (const [key, value] of entries)if ('string' == typeof key && null != value) {\n if ('string' == typeof value || Array.isArray(value)) bag[key.toLowerCase()] = value;\n }\n return bag;\n } catch {\n return;\n }\n}\nfunction isHeadersLike(source) {\n const candidate = source;\n return 'function' == typeof candidate.entries && 'function' == typeof candidate.get;\n}\nexport { getRequestHeaders };\n","import { hasClientVersionAccessor, hasNegotiatedProtocolVersionAccessor } from \"./detect.mjs\";\nimport { readHeaderValue } from \"./headers.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nconst META_CLIENT_INFO_KEY = 'io.modelcontextprotocol/clientInfo';\nconst META_PROTOCOL_VERSION_KEY = 'io.modelcontextprotocol/protocolVersion';\nconst PROTOCOL_VERSION_HEADER = 'mcp-protocol-version';\nconst MAX_PROTOCOL_VERSION_LENGTH = 64;\nfunction nonEmptyString(value) {\n return 'string' == typeof value && value.length > 0 ? value : void 0;\n}\nfunction readClientInfoValue(value) {\n if (!value || 'object' != typeof value) return;\n const { name, version } = value;\n const result = {};\n const clientName = nonEmptyString(name);\n const clientVersion = nonEmptyString(version);\n if (clientName) result.clientName = clientName;\n if (clientVersion) result.clientVersion = clientVersion;\n return result.clientName || result.clientVersion ? result : void 0;\n}\nfunction readReservedKeys(bag) {\n if (!bag || 'object' != typeof bag) return;\n const record = bag;\n const result = {\n ...readClientInfoValue(record[META_CLIENT_INFO_KEY])\n };\n const protocolVersion = nonEmptyString(record[META_PROTOCOL_VERSION_KEY]);\n if (protocolVersion) result.protocolVersion = protocolVersion;\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction readMetaClientInfo(request) {\n return readReservedKeys(request.params?._meta);\n}\nfunction readEnvelopeClientInfo(extra) {\n return readReservedKeys(extra?.mcpReq?.envelope);\n}\nfunction readHeaderProtocolVersion(extra) {\n const protocolVersion = readHeaderValue(getRequestHeaders(extra), PROTOCOL_VERSION_HEADER);\n if (!protocolVersion || protocolVersion.length > MAX_PROTOCOL_VERSION_LENGTH) return;\n return {\n protocolVersion\n };\n}\nfunction readServerClientIdentity(server) {\n if (!server) return;\n const result = {};\n try {\n if (hasClientVersionAccessor(server)) Object.assign(result, readClientInfoValue(server.getClientVersion()));\n if (hasNegotiatedProtocolVersionAccessor(server)) {\n const negotiated = server.getNegotiatedProtocolVersion();\n const protocolVersion = nonEmptyString(negotiated);\n if (protocolVersion) result.protocolVersion = protocolVersion;\n }\n } catch {}\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction resolveClientIdentity({ request, extra, server }) {\n const chain = [\n readEnvelopeClientInfo(extra),\n readMetaClientInfo(request),\n readHeaderProtocolVersion(extra),\n readServerClientIdentity(server)\n ];\n const result = {};\n for (const source of chain)if (source) {\n result.clientName ??= source.clientName;\n result.clientVersion ??= source.clientVersion;\n result.protocolVersion ??= source.protocolVersion;\n }\n return result.clientName || result.clientVersion || result.protocolVersion ? result : void 0;\n}\nfunction stampClientIdentity(event, request, extra, server) {\n const info = resolveClientIdentity({\n request,\n extra,\n server\n });\n if (!info) return;\n if (info.clientName) event.clientName = info.clientName;\n if (info.clientVersion) event.clientVersion = info.clientVersion;\n if (info.protocolVersion) event.protocolVersion = info.protocolVersion;\n}\nexport { META_CLIENT_INFO_KEY, META_PROTOCOL_VERSION_KEY, PROTOCOL_VERSION_HEADER, readEnvelopeClientInfo, readHeaderProtocolVersion, readMetaClientInfo, readServerClientIdentity, resolveClientIdentity, stampClientIdentity };\n","import { readHeaderValue } from \"./headers.mjs\";\nconst MCP_SESSION_HEADER = 'mcp-session-id';\nconst MAX_TOKEN_LENGTH = 4096;\nconst MAX_SESSION_ID_LENGTH = 128;\nconst MAX_CLIENT_FIELD_LENGTH = 200;\nconst BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;\nfunction encodeSessionId(payload) {\n if (!payload || 'string' != typeof payload.sessionId || 0 === payload.sessionId.length) throw new Error('encodeSessionId requires a non-empty `sessionId` (use newSessionId())');\n const wire = {\n sid: payload.sessionId\n };\n if ('string' == typeof payload.clientName && payload.clientName.length > 0) wire.cn = payload.clientName.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof payload.clientVersion && payload.clientVersion.length > 0) wire.cv = payload.clientVersion.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof payload.protocolVersion && payload.protocolVersion.length > 0) wire.pv = payload.protocolVersion.slice(0, MAX_CLIENT_FIELD_LENGTH);\n return utf8ToBase64Url(JSON.stringify(wire));\n}\nfunction decodeSessionId(value) {\n if ('string' != typeof value || 0 === value.length || value.length > MAX_TOKEN_LENGTH) return null;\n if (!BASE64URL_PATTERN.test(value)) return null;\n let parsed;\n try {\n parsed = JSON.parse(base64UrlToUtf8(value));\n } catch {\n return null;\n }\n if (!parsed || 'object' != typeof parsed || Array.isArray(parsed)) return null;\n const wire = parsed;\n if ('string' != typeof wire.sid || 0 === wire.sid.length || wire.sid.length > MAX_SESSION_ID_LENGTH) return null;\n const payload = {\n sessionId: wire.sid\n };\n if ('string' == typeof wire.cn && wire.cn.length > 0) payload.clientName = wire.cn.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof wire.cv && wire.cv.length > 0) payload.clientVersion = wire.cv.slice(0, MAX_CLIENT_FIELD_LENGTH);\n if ('string' == typeof wire.pv && wire.pv.length > 0) payload.protocolVersion = wire.pv.slice(0, MAX_CLIENT_FIELD_LENGTH);\n return payload;\n}\nfunction readMcpSessionHeader(headers) {\n return readHeaderValue(headers, MCP_SESSION_HEADER);\n}\nfunction writeSessionIdToTransport(transport, token) {\n if (!transport || 'object' != typeof transport) return false;\n const outer = transport;\n try {\n outer.sessionId = token;\n } catch {}\n if (outer.sessionId === token) return true;\n const inner = outer._webStandardTransport;\n if (inner && 'object' == typeof inner) try {\n inner.sessionId = token;\n } catch {}\n return outer.sessionId === token;\n}\nfunction utf8ToBase64Url(input) {\n if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');\n const bytes = new TextEncoder().encode(input);\n let binary = '';\n for(let i = 0; i < bytes.length; i++)binary += String.fromCharCode(bytes[i]);\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nfunction base64UrlToUtf8(input) {\n const normalized = input.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');\n const padded = normalized + '='.repeat((4 - normalized.length % 4) % 4);\n if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for(let i = 0; i < binary.length; i++)bytes[i] = binary.charCodeAt(i);\n return new TextDecoder().decode(bytes);\n}\nexport { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport };\n","import { version as external_version_mjs_version } from \"../version.mjs\";\nimport { INACTIVITY_TIMEOUT_IN_MINUTES } from \"./constants.mjs\";\nimport { deterministicPrefixedId, newPrefixedId } from \"./ids.mjs\";\nimport { resolveClientIdentity } from \"./client-identity.mjs\";\nimport { getServerTrackingData, setServerTrackingData } from \"./internal.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nimport { decodeSessionId, readMcpSessionHeader } from \"./session-token.mjs\";\nconst MODERN_PROTOCOL_REVISION = '2026-07-28';\nconst REVISION_SHAPE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst DRAFT_REVISION = 'draft';\nfunction isModernEraRequest(request, extra, server) {\n const requested = request.params?.protocolVersion;\n const version = ('string' == typeof requested && requested.length > 0 ? requested : void 0) ?? resolveClientIdentity({\n request,\n extra,\n server\n })?.protocolVersion;\n if (!version) return false;\n if (version === DRAFT_REVISION) return true;\n return REVISION_SHAPE.test(version) && version >= MODERN_PROTOCOL_REVISION;\n}\nfunction newSessionId() {\n return newPrefixedId('ses');\n}\nfunction deriveSessionIdFromMCPSession(mcpSessionId) {\n return deterministicPrefixedId('ses', mcpSessionId);\n}\nfunction deriveSessionIdFromConversation(conversationId) {\n return deterministicPrefixedId('ses', conversationId);\n}\nfunction getSessionId(server, extra, conversationId) {\n const data = getServerTrackingData(server);\n if (!data) throw new Error('Server tracking data not found');\n if (conversationId) {\n applyTokenClientIdentity(data, extra);\n return deriveSessionIdFromConversation(conversationId);\n }\n const carriedByRequest = readSessionIdFromRequest(data, extra);\n const sessionId = carriedByRequest ?? getSessionIdFromMemory(data);\n data.sessionId = sessionId;\n data.lastActivity = new Date();\n setServerTrackingData(server, data);\n return sessionId;\n}\nfunction applyTokenClientIdentity(data, extra) {\n const token = decodeSessionId(readMcpSessionHeader(getRequestHeaders(extra)));\n if (!token) return;\n data.sessionInfo.clientName = token.clientName;\n data.sessionInfo.clientVersion = token.clientVersion;\n data.sessionInfo.protocolVersion = token.protocolVersion;\n return token;\n}\nfunction readSessionIdFromRequest(data, extra) {\n const token = applyTokenClientIdentity(data, extra);\n if (token) {\n data.sessionSource = 'token';\n return token.sessionId;\n }\n if (extra?.sessionId) {\n data.sessionSource = 'mcp';\n return deriveSessionIdFromMCPSession(extra.sessionId);\n }\n}\nfunction getSessionIdFromMemory(data) {\n const timeoutMs = 60 * INACTIVITY_TIMEOUT_IN_MINUTES * 1000;\n const isStale = Date.now() - data.lastActivity.getTime() > timeoutMs;\n if ('generated' === data.sessionSource && isStale) return newSessionId();\n return data.sessionId;\n}\nfunction getSessionInfo(server, data, sessionId) {\n let clientInfo;\n clientInfo = data?.sessionInfo.clientName ? {\n name: data.sessionInfo.clientName,\n version: data.sessionInfo.clientVersion\n } : server.getClientVersion();\n const actorInfo = data?.identifiedSessions.get(sessionId ?? data.sessionId);\n const sessionInfo = {\n ipAddress: void 0,\n sdkLanguage: 'TypeScript',\n sdkVersion: external_version_mjs_version,\n serverName: server._serverInfo?.name,\n serverVersion: server._serverInfo?.version,\n clientName: clientInfo?.name,\n clientVersion: clientInfo?.version,\n protocolVersion: data?.sessionInfo.protocolVersion,\n identifyActorGivenId: actorInfo?.distinctId,\n identifyActorData: actorInfo?.properties || {},\n identifyActorGroups: actorInfo?.groups\n };\n if (!data) return sessionInfo;\n data.sessionInfo = sessionInfo;\n setServerTrackingData(server, data);\n return {\n ...sessionInfo\n };\n}\nexport { MODERN_PROTOCOL_REVISION, deriveSessionIdFromConversation, deriveSessionIdFromMCPSession, getSessionId, getSessionInfo, isModernEraRequest, newSessionId };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { getSessionInfo } from \"./session.mjs\";\nfunction captureEvent(server, eventInput, logger, requestAttribution) {\n const data = getServerTrackingData(server);\n if (!data) return void logger('Warning: Server tracking data not found. Event will not be published.');\n const sink = data.sink;\n if (!sink) return;\n const sessionInfo = requestAttribution ?? getSessionInfo(server, data, eventInput.sessionId);\n const duration = eventInput.duration || (eventInput.timestamp ? Date.now() - eventInput.timestamp.getTime() : void 0);\n const fullEvent = {\n id: eventInput.id || '',\n sessionId: eventInput.sessionId || data.sessionId,\n eventType: eventInput.eventType || MCPAnalyticsEventType.custom,\n eventName: eventInput.eventName,\n timestamp: eventInput.timestamp || new Date(),\n duration,\n ipAddress: sessionInfo.ipAddress,\n sdkLanguage: sessionInfo.sdkLanguage,\n sdkVersion: sessionInfo.sdkVersion,\n serverName: sessionInfo.serverName,\n serverVersion: sessionInfo.serverVersion,\n clientName: eventInput.clientName ?? sessionInfo.clientName,\n clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,\n clientUserAgent: eventInput.clientUserAgent,\n vendorClient: eventInput.vendorClient,\n identifyActorGivenId: sessionInfo.identifyActorGivenId,\n identifyActorData: sessionInfo.identifyActorData,\n groups: sessionInfo.identifyActorGroups,\n resourceName: eventInput.resourceName,\n protocolVersion: eventInput.protocolVersion ?? sessionInfo.protocolVersion,\n toolCategory: eventInput.toolCategory,\n toolDescription: eventInput.toolDescription,\n listedToolNames: eventInput.listedToolNames,\n parameters: eventInput.parameters,\n response: eventInput.response,\n userIntent: eventInput.userIntent,\n userIntentSource: eventInput.userIntentSource,\n llmModel: eventInput.llmModel,\n llmModelSource: eventInput.llmModelSource,\n isError: eventInput.isError,\n error: eventInput.error,\n errorType: eventInput.errorType,\n conversationId: eventInput.conversationId,\n properties: eventInput.properties\n };\n return sink.capture(fullEvent, {\n enableExceptionAutocapture: data.options.enableExceptionAutocapture ?? true,\n beforeSend: data.options.beforeSend\n });\n}\nexport { captureEvent };\n","import { readHeaderValue } from \"./headers.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nconst CLIENT_USER_AGENT_HEADER = 'user-agent';\nconst VENDOR_CLIENT_HEADER = 'x-anthropic-client';\nfunction readTransportIdentity(extra) {\n const headers = getRequestHeaders(extra);\n if (!headers) return;\n const result = {};\n const clientUserAgent = readHeaderValue(headers, CLIENT_USER_AGENT_HEADER);\n if (clientUserAgent) result.clientUserAgent = clientUserAgent;\n const vendorClient = readHeaderValue(headers, VENDOR_CLIENT_HEADER);\n if (vendorClient) result.vendorClient = vendorClient;\n return result.clientUserAgent || result.vendorClient ? result : void 0;\n}\nfunction stampTransportIdentity(event, extra) {\n const identity = readTransportIdentity(extra);\n if (!identity) return;\n if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;\n if (identity.vendorClient) event.vendorClient = identity.vendorClient;\n}\nexport { CLIENT_USER_AGENT_HEADER, VENDOR_CLIENT_HEADER, readTransportIdentity, stampTransportIdentity };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { captureEvent } from \"./capture.mjs\";\nimport { stampClientIdentity } from \"./client-identity.mjs\";\nimport { stampTransportIdentity } from \"./transport-identity.mjs\";\nclass IdentityCache {\n constructor(maxSize = 1000){\n this._cache = new Map();\n this._maxSize = maxSize;\n }\n get(sessionId) {\n const identity = this._cache.get(sessionId);\n if (void 0 === identity) return;\n this._cache.delete(sessionId);\n this._cache.set(sessionId, identity);\n return identity;\n }\n set(sessionId, identity) {\n this._cache.delete(sessionId);\n if (this._cache.size >= this._maxSize) {\n const oldestKey = this._cache.keys().next().value;\n if (void 0 !== oldestKey) this._cache.delete(oldestKey);\n }\n this._cache.set(sessionId, identity);\n }\n has(sessionId) {\n return this._cache.has(sessionId);\n }\n size() {\n return this._cache.size;\n }\n}\nconst _serverTracking = new WeakMap();\nfunction getServerTrackingData(server) {\n return _serverTracking.get(server);\n}\nfunction setServerTrackingData(server, data) {\n _serverTracking.set(server, data);\n}\nfunction areIdentitiesEqual(a, b) {\n if (a.distinctId !== b.distinctId) return false;\n if (JSON.stringify(a.groups ?? {}) !== JSON.stringify(b.groups ?? {})) return false;\n const aProps = a.properties || {};\n const bProps = b.properties || {};\n const aKeys = Object.keys(aProps);\n const bKeys = Object.keys(bProps);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys){\n if (!(key in bProps)) return false;\n if (JSON.stringify(aProps[key]) !== JSON.stringify(bProps[key])) return false;\n }\n return true;\n}\nfunction mergeIdentities(previous, next) {\n if (!previous) return next;\n return {\n distinctId: next.distinctId,\n properties: {\n ...previous.properties || {},\n ...next.properties || {}\n },\n groups: next.groups ?? previous.groups\n };\n}\nasync function handleIdentify(server, data, sessionId, request, requestAttribution, extra, sessionFromConversation = false) {\n const identityBeforeRequest = data.identifiedSessions.get(sessionId);\n const sessionSourceBeforeIdentify = data.sessionSource;\n if (!data.options.identify) return identityBeforeRequest;\n const identifyEvent = {\n sessionId,\n resourceName: getRequestResourceName(request),\n eventType: MCPAnalyticsEventType.identify,\n parameters: {\n request,\n extra\n },\n timestamp: new Date()\n };\n stampClientIdentity(identifyEvent, request, extra, server);\n stampTransportIdentity(identifyEvent, extra);\n try {\n const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;\n if (identityResult) {\n const previousIdentity = data.identifiedSessions.get(sessionId);\n const mergedIdentity = mergeIdentities(previousIdentity, identityResult);\n const changed = void 0 !== previousIdentity && !areIdentitiesEqual(previousIdentity, mergedIdentity);\n const firstSeen = void 0 === previousIdentity;\n const announcedAtInitialize = !sessionFromConversation && 'token' === sessionSourceBeforeIdentify && 'initialize' !== request.method;\n const shouldPublish = changed || firstSeen && !announcedAtInitialize;\n data.identifiedSessions.set(sessionId, mergedIdentity);\n if (shouldPublish) {\n data.logger(`Identified session ${sessionId}`);\n captureEvent(server, identifyEvent, data.logger, withIdentity(requestAttribution, mergedIdentity));\n }\n return mergedIdentity;\n }\n data.logger(`Warning: Supplied identify function returned null for session ${sessionId}`);\n } catch (error) {\n data.logger(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);\n }\n return identityBeforeRequest;\n}\nfunction withIdentity(sessionInfo, identity) {\n return {\n ...sessionInfo,\n identifyActorGivenId: identity?.distinctId,\n identifyActorData: identity?.properties || {},\n identifyActorGroups: identity?.groups\n };\n}\nasync function resolveEventProperties(data, request, extra) {\n if (!data.options.eventProperties) return null;\n try {\n return await data.options.eventProperties(request, extra) ?? null;\n } catch (e) {\n data.logger(`eventProperties callback error: ${e}`);\n return null;\n }\n}\nfunction getRequestResourceName(request) {\n if (!request || 'object' != typeof request || !('params' in request)) return 'Unknown';\n const params = request.params;\n if (!params || 'object' != typeof params || !('name' in params)) return 'Unknown';\n return 'string' == typeof params.name ? params.name : 'Unknown';\n}\nexport { IdentityCache, areIdentitiesEqual, getServerTrackingData, handleIdentify, mergeIdentities, resolveEventProperties, setServerTrackingData, withIdentity };\n","import { version } from \"../version.mjs\";\nimport { POSTHOG_MCP_LIB_NAME } from \"./constants.mjs\";\nfunction applyMcpLibIdentity(client) {\n client.getLibraryId = ()=>POSTHOG_MCP_LIB_NAME;\n client.getLibraryVersion = ()=>version;\n}\nexport { applyMcpLibIdentity };\n","import { log } from \"./logger.mjs\";\nconst GET_MORE_TOOLS_NAME = 'get_more_tools';\nfunction resolveMissingCapabilityToolName(options) {\n return options?.missingCapabilityToolName ?? GET_MORE_TOOLS_NAME;\n}\nfunction getReportMissingToolDescriptor(name = GET_MORE_TOOLS_NAME) {\n return {\n name,\n description: 'Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.',\n inputSchema: {\n type: 'object',\n properties: {\n context: {\n type: 'string',\n description: \"A description of your goal and what kind of tool would help accomplish it.\"\n }\n },\n required: [\n 'context'\n ]\n },\n annotations: {\n title: 'Get More Tools',\n readOnlyHint: true,\n openWorldHint: true,\n idempotentHint: true,\n destructiveHint: false\n }\n };\n}\nfunction getMoreToolsResult() {\n return {\n content: [\n {\n type: 'text',\n text: 'Unfortunately, we have shown you the full tool list. We have noted your feedback and will work to improve the tool list in the future.'\n }\n ]\n };\n}\nfunction handleReportMissing(args, logger = log) {\n logger(`Missing tool reported: ${JSON.stringify(args)}`);\n return getMoreToolsResult();\n}\nexport { GET_MORE_TOOLS_NAME, getMoreToolsResult, getReportMissingToolDescriptor, handleReportMissing, resolveMissingCapabilityToolName };\n","function getToolFunction(tool) {\n if ('handler' in tool && 'function' == typeof tool.handler) return tool.handler;\n if ('callback' in tool && 'function' == typeof tool.callback) return tool.callback;\n throw new Error('Tool has neither callback nor handler property');\n}\nfunction getToolFunctionKey(tool) {\n if ('handler' in tool && 'function' == typeof tool.handler) return 'handler';\n return 'callback';\n}\nfunction hasToolFunction(tool) {\n if (!tool || 'object' != typeof tool) return false;\n const t = tool;\n return 'handler' in t && 'function' == typeof t.handler || 'callback' in t && 'function' == typeof t.callback;\n}\nfunction createWrappedTool(originalTool, wrappedFunction) {\n const key = getToolFunctionKey(originalTool);\n return {\n ...originalTool,\n [key]: wrappedFunction\n };\n}\nfunction isZ4Schema(schema) {\n if (!schema || 'object' != typeof schema) return false;\n return !!schema._zod;\n}\nfunction isZodTypeLike(value) {\n return !!value && 'object' == typeof value && 'parse' in value && 'function' == typeof value.parse && 'safeParse' in value && 'function' == typeof value.safeParse;\n}\nfunction isZodRawShapeCompat(schema) {\n return !!schema && 'object' == typeof schema && Object.values(schema).some(isZodTypeLike);\n}\nfunction getObjectShape(schema) {\n if (!schema || 'object' != typeof schema) return;\n let rawShape;\n if (isZ4Schema(schema)) {\n const v4Schema = schema;\n rawShape = v4Schema._zod?.def?.shape;\n } else {\n const v3Schema = schema;\n rawShape = v3Schema.shape ?? v3Schema._def?.shape;\n }\n if (!rawShape) return;\n if ('function' == typeof rawShape) try {\n return rawShape();\n } catch {\n return;\n }\n return rawShape;\n}\nfunction readRequestHandlerMethod(requestSchema) {\n if ('string' == typeof requestSchema) return requestSchema;\n const shape = getObjectShape(requestSchema);\n const method = shape?.method ? getLiteralValue(shape.method) : void 0;\n return 'string' == typeof method ? method : void 0;\n}\nfunction getLiteralValue(schema) {\n if (!schema || 'object' != typeof schema) return;\n if (isZ4Schema(schema)) {\n const v4Schema = schema;\n const def = v4Schema._zod?.def;\n if (def?.value !== void 0) return def.value;\n if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];\n } else {\n const v3Schema = schema;\n const def = v3Schema._def;\n if (def?.value !== void 0) return def.value;\n if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];\n }\n const directValue = schema.value;\n if (void 0 !== directValue) return directValue;\n}\nexport { createWrappedTool, getLiteralValue, getObjectShape, getToolFunction, getToolFunctionKey, hasToolFunction, isZ4Schema, isZodRawShapeCompat, readRequestHandlerMethod };\n","import { log } from \"./logger.mjs\";\nconst MCP_INSTRUCTIONS_KEY = '_mcp_instructions';\nconst INSTRUCTIONS_FIELD_DESCRIPTION = 'Server-issued metadata for this conversation.';\nconst CONVERSATION_ID_FIELD_DESCRIPTION = 'The server-issued conversation identifier.';\nfunction canDeclareOutputInstructions(outputSchema) {\n if (!outputSchema || 'object' != typeof outputSchema) return false;\n if (isSchemaObjectLike(outputSchema)) return false;\n const schema = outputSchema;\n if (schema.$ref || schema.oneOf || schema.allOf || schema.anyOf) return false;\n const { properties } = schema;\n if (void 0 !== properties && ('object' != typeof properties || null === properties || Array.isArray(properties))) return false;\n return !properties || !Object.prototype.hasOwnProperty.call(properties, MCP_INSTRUCTIONS_KEY);\n}\nfunction isZodLike(entry) {\n return !!entry && 'object' == typeof entry && ('_def' in entry || '_zod' in entry || '~standard' in entry);\n}\nfunction looksLikeJsonSchema(candidate) {\n if ('string' == typeof candidate.type || 'string' == typeof candidate.$ref) return true;\n if (Array.isArray(candidate.oneOf) || Array.isArray(candidate.allOf) || Array.isArray(candidate.anyOf)) return true;\n const { properties } = candidate;\n return !!properties && 'object' == typeof properties && !isZodLike(properties);\n}\nfunction isSchemaObjectLike(value) {\n const candidate = value;\n if (isZodLike(candidate)) return true;\n if (looksLikeJsonSchema(candidate)) return false;\n return Object.values(candidate).some(isZodLike);\n}\nfunction addInstructionsToOutputSchema(tool, logger = log) {\n const toolName = tool.name || 'unknown';\n const original = tool.outputSchema;\n if (!original || 'object' != typeof original) return tool;\n if (!canDeclareOutputInstructions(original)) {\n const schema = original;\n logger(schema.properties && Object.prototype.hasOwnProperty.call(schema.properties, MCP_INSTRUCTIONS_KEY) ? `WARN: Tool \"${toolName}\" already declares '${MCP_INSTRUCTIONS_KEY}' in its output schema. Leaving it alone.` : `WARN: Tool \"${toolName}\" has a complex output schema (oneOf/allOf/anyOf/$ref). Skipping '${MCP_INSTRUCTIONS_KEY}' declaration; its session handle stays content-only.`);\n return tool;\n }\n const modifiedTool = {\n ...tool\n };\n const outputSchema = JSON.parse(JSON.stringify(original));\n if (!outputSchema.properties) outputSchema.properties = {};\n outputSchema.properties[MCP_INSTRUCTIONS_KEY] = {\n type: 'object',\n description: INSTRUCTIONS_FIELD_DESCRIPTION,\n properties: {\n conversation_id: {\n type: 'string',\n description: CONVERSATION_ID_FIELD_DESCRIPTION\n }\n }\n };\n modifiedTool.outputSchema = outputSchema;\n return modifiedTool;\n}\nfunction addInstructionsToOutputSchemas(tools, logger = log) {\n return tools.map((tool)=>addInstructionsToOutputSchema(tool, logger));\n}\nfunction buildConversationInstructions(conversationId) {\n return {\n conversation_id: conversationId\n };\n}\nfunction mirrorInstructionsIntoStructuredContent(result, conversationId) {\n if (!result || 'object' != typeof result) return result;\n const structuredContent = result.structuredContent;\n if (!structuredContent || 'object' != typeof structuredContent || Array.isArray(structuredContent)) return result;\n if (Object.prototype.hasOwnProperty.call(structuredContent, MCP_INSTRUCTIONS_KEY)) return result;\n return {\n ...result,\n structuredContent: {\n ...structuredContent,\n [MCP_INSTRUCTIONS_KEY]: buildConversationInstructions(conversationId)\n }\n };\n}\nexport { MCP_INSTRUCTIONS_KEY, addInstructionsToOutputSchema, addInstructionsToOutputSchemas, buildConversationInstructions, canDeclareOutputInstructions, mirrorInstructionsIntoStructuredContent };\n","import { log } from \"./logger.mjs\";\nimport { getObjectShape, isZodRawShapeCompat } from \"./mcp-sdk-compat.mjs\";\nimport { canDeclareOutputInstructions } from \"./output-instructions.mjs\";\nconst JSON_SCHEMA_KEYWORDS = [\n '$defs',\n '$ref',\n 'additionalProperties',\n 'allOf',\n 'anyOf',\n 'definitions',\n 'oneOf',\n 'properties',\n 'required',\n 'type'\n];\nfunction hasAnalyticsParameter(schema, parameterName) {\n return !!schema?.properties && Object.prototype.hasOwnProperty.call(schema.properties, parameterName);\n}\nfunction canInjectAnalyticsParameter(schema, parameterName) {\n return !hasAnalyticsParameter(schema, parameterName) && !schema?.$ref && !schema?.oneOf && !schema?.allOf && !schema?.anyOf;\n}\nfunction addAnalyticsParameterToTool(tool, parameterName, description, injectionLabel, logger = log) {\n const modifiedTool = {\n ...tool\n };\n const toolName = tool.name || 'unknown';\n const schema = modifiedTool.inputSchema;\n if (!canInjectAnalyticsParameter(schema, parameterName)) {\n logger(hasAnalyticsParameter(schema, parameterName) ? `WARN: Tool \"${toolName}\" already has '${parameterName}' parameter. Skipping ${injectionLabel} injection.` : `WARN: Tool \"${toolName}\" has complex schema (oneOf/allOf/anyOf/$ref). Skipping ${injectionLabel} injection.`);\n return modifiedTool;\n }\n if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {\n type: 'object',\n properties: {},\n required: []\n };\n modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));\n const inputSchema = modifiedTool.inputSchema;\n if (!inputSchema.properties) inputSchema.properties = {};\n if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;\n inputSchema.properties[parameterName] = {\n type: 'string',\n description\n };\n if (Array.isArray(inputSchema.required)) {\n if (!inputSchema.required.includes(parameterName)) inputSchema.required.push(parameterName);\n } else inputSchema.required = [\n parameterName\n ];\n return modifiedTool;\n}\nfunction analyticsOwnsParameter(inputSchema, parameterName) {\n if (!inputSchema || 'object' != typeof inputSchema) return canInjectAnalyticsParameter(void 0, parameterName);\n if (isZodRawShapeCompat(inputSchema)) return canInjectAnalyticsParameter({\n properties: inputSchema\n }, parameterName);\n const shape = getObjectShape(inputSchema);\n if (shape) return canInjectAnalyticsParameter({\n properties: shape\n }, parameterName);\n const schema = inputSchema;\n if (JSON_SCHEMA_KEYWORDS.some((keyword)=>Object.prototype.hasOwnProperty.call(schema, keyword))) return canInjectAnalyticsParameter(schema, parameterName);\n if ('_def' in schema || '_zod' in schema || '~standard' in schema) return canInjectAnalyticsParameter(void 0, parameterName);\n return canInjectAnalyticsParameter(schema, parameterName);\n}\nfunction getAnalyticsParameterOwnership(inputSchema, outputSchema) {\n return {\n context: analyticsOwnsParameter(inputSchema, 'context'),\n conversationId: analyticsOwnsParameter(inputSchema, 'conversation_id'),\n llmModel: analyticsOwnsParameter(inputSchema, 'llm_model'),\n outputInstructions: canDeclareOutputInstructions(outputSchema)\n };\n}\nfunction stripOwnedAnalyticsArguments(args, ownership) {\n let cleanedArgs = args;\n if (ownership.context && cleanedArgs && 'object' == typeof cleanedArgs && 'context' in cleanedArgs) {\n const { context: _context, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n if (ownership.conversationId && cleanedArgs && 'object' == typeof cleanedArgs && 'conversation_id' in cleanedArgs) {\n const { conversation_id: _conversationId, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n if (ownership.llmModel && cleanedArgs && 'object' == typeof cleanedArgs && 'llm_model' in cleanedArgs) {\n const { llm_model: _llmModel, ...rest } = cleanedArgs;\n cleanedArgs = rest;\n }\n return cleanedArgs;\n}\nexport { addAnalyticsParameterToTool, analyticsOwnsParameter, canInjectAnalyticsParameter, getAnalyticsParameterOwnership, hasAnalyticsParameter, stripOwnedAnalyticsArguments };\n","import { addAnalyticsParameterToTool } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nfunction isContextEnabled(context) {\n return false !== context;\n}\nfunction getContextDescription(context) {\n return 'object' == typeof context ? context.description : void 0;\n}\nfunction addContextParameterToTool(tool, contextDescriptionOverride, logger = log) {\n return addAnalyticsParameterToTool(tool, 'context', contextDescriptionOverride || DEFAULT_CONTEXT_PARAMETER_DESCRIPTION, 'context', logger);\n}\nfunction addContextParameterToTools(tools, contextDescriptionOverride, logger = log) {\n return tools.map((tool)=>addContextParameterToTool(tool, contextDescriptionOverride, logger));\n}\nexport { addContextParameterToTool, addContextParameterToTools, getContextDescription, isContextEnabled };\n","import { addAnalyticsParameterToTool } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_MODEL_PARAMETER_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nfunction isCaptureModelEnabled(captureModel) {\n return true === captureModel || 'object' == typeof captureModel && null !== captureModel;\n}\nfunction getModelDescription(captureModel) {\n return 'object' == typeof captureModel && null !== captureModel ? captureModel.description : void 0;\n}\nfunction addModelParameterToTool(tool, modelDescriptionOverride, logger = log) {\n return addAnalyticsParameterToTool(tool, 'llm_model', modelDescriptionOverride || DEFAULT_MODEL_PARAMETER_DESCRIPTION, 'model', logger);\n}\nfunction addModelParameterToTools(tools, modelDescriptionOverride, logger = log) {\n return tools.map((tool)=>addModelParameterToTool(tool, modelDescriptionOverride, logger));\n}\nfunction getModelArgument(request) {\n const model = request.params?.arguments?.llm_model;\n if ('string' != typeof model) return;\n const trimmed = model.trim();\n if (!trimmed || 'unknown' === trimmed.toLowerCase()) return;\n return trimmed;\n}\nfunction setEventModel(event, model) {\n if (!model) return;\n event.llmModel = model;\n event.llmModelSource = 'self_reported';\n}\nexport { addModelParameterToTool, addModelParameterToTools, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel };\n","import { uuidv7 } from \"@posthog/core\";\nimport { canInjectAnalyticsParameter, hasAnalyticsParameter } from \"./analytics-parameters.mjs\";\nimport { DEFAULT_CONVERSATION_ID_DESCRIPTION } from \"./constants.mjs\";\nimport { log } from \"./logger.mjs\";\nconst CONVERSATION_ID_PARAM_NAME = 'conversation_id';\nfunction addConversationIdToTool(tool, logger = log) {\n const modifiedTool = {\n ...tool\n };\n const toolName = tool.name || 'unknown';\n const schema = modifiedTool.inputSchema;\n if (!canInjectAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME)) {\n logger(hasAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME) ? `WARN: Tool \"${toolName}\" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.` : `WARN: Tool \"${toolName}\" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);\n return modifiedTool;\n }\n if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {\n type: 'object',\n properties: {},\n required: []\n };\n modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));\n const inputSchema = modifiedTool.inputSchema;\n if (!inputSchema.properties) inputSchema.properties = {};\n if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;\n inputSchema.properties[CONVERSATION_ID_PARAM_NAME] = {\n type: 'string',\n description: DEFAULT_CONVERSATION_ID_DESCRIPTION\n };\n return modifiedTool;\n}\nfunction addConversationIdToTools(tools, logger = log) {\n return tools.map((tool)=>addConversationIdToTool(tool, logger));\n}\nconst MINTED_CONVERSATION_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nfunction resolveConversationId(enabled, args) {\n if (!enabled) return {\n minted: false,\n conversationId: void 0\n };\n const supplied = extractConversationId(args);\n if (supplied && MINTED_CONVERSATION_ID.test(supplied)) return {\n minted: false,\n conversationId: supplied.toLowerCase()\n };\n return {\n minted: true,\n conversationId: uuidv7()\n };\n}\nfunction canInjectConversationIdPromptBack(result) {\n if (!(result && 'object' == typeof result)) return false;\n return Array.isArray(result.content);\n}\nfunction extractConversationId(args) {\n if (!(args && 'object' == typeof args)) return;\n const value = args[CONVERSATION_ID_PARAM_NAME];\n if ('string' != typeof value) return;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : void 0;\n}\nfunction stripConversationId(args) {\n if (!args || 'object' != typeof args || !(CONVERSATION_ID_PARAM_NAME in args)) return args;\n const { [CONVERSATION_ID_PARAM_NAME]: _omit, ...rest } = args;\n return rest;\n}\nfunction buildConversationIdPromptBack(conversationId) {\n return {\n type: 'text',\n text: JSON.stringify({\n conversation_id: conversationId\n })\n };\n}\nfunction injectConversationIdPromptBack(result, conversationId) {\n if (!canInjectConversationIdPromptBack(result)) return result;\n const resultObj = result;\n return {\n ...resultObj,\n content: [\n ...resultObj.content,\n buildConversationIdPromptBack(conversationId)\n ]\n };\n}\nexport { CONVERSATION_ID_PARAM_NAME, addConversationIdToTool, addConversationIdToTools, buildConversationIdPromptBack, canInjectConversationIdPromptBack, extractConversationId, injectConversationIdPromptBack, resolveConversationId, stripConversationId };\n","import { ErrorTracking } from \"@posthog/core\";\nconst errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([\n new ErrorTracking.EventCoercer(),\n new ErrorTracking.ErrorCoercer(),\n new ErrorTracking.ObjectCoercer(),\n new ErrorTracking.StringCoercer(),\n new ErrorTracking.PrimitiveCoercer()\n], ErrorTracking.createStackParser(\"node:javascript\", ErrorTracking.nodeStackLineParser));\nfunction captureException(error) {\n const normalized = isCallToolResult(error) ? extractCallToolResultMessage(error) : error;\n return errorPropertiesBuilder.buildFromUnknown(normalized);\n}\nfunction isCallToolResult(value) {\n return null !== value && 'object' == typeof value && 'isError' in value && 'content' in value && Array.isArray(value.content);\n}\nfunction isTextContentPart(value) {\n if (null === value || 'object' != typeof value) return false;\n const contentPart = value;\n return 'text' === contentPart.type && 'string' == typeof contentPart.text;\n}\nfunction extractCallToolResultMessage(result) {\n return result.content.filter(isTextContentPart).map((contentPart)=>contentPart.text).join(' ').trim() || 'Unknown error';\n}\nexport { captureException };\n","import { isContextEnabled } from \"./context-parameters.mjs\";\nfunction getContextArgument(request) {\n const context = request.params?.arguments?.context;\n return 'string' == typeof context && context.trim() ? context : void 0;\n}\nfunction normalizeIntent(intent) {\n if ('string' != typeof intent) return null;\n const trimmed = intent.trim();\n return trimmed ? trimmed : null;\n}\nasync function runIntentFallback(data, request, extra) {\n if (!data.options.intentFallback) return null;\n try {\n const intent = normalizeIntent(await data.options.intentFallback(request, extra));\n return intent ? {\n intent,\n source: 'inferred'\n } : null;\n } catch (error) {\n data.logger(`intentFallback callback error: ${error}`);\n return null;\n }\n}\nasync function resolveToolCallIntent(data, request, canCaptureContext, extra) {\n const contextArgument = getContextArgument(request);\n if (canCaptureContext && isContextEnabled(data.options.context) && contextArgument) return {\n intent: contextArgument,\n source: 'context_parameter'\n };\n return await runIntentFallback(data, request, extra);\n}\nfunction setEventIntent(event, resolvedIntent) {\n if (!resolvedIntent) return;\n event.userIntent = resolvedIntent.intent;\n event.userIntentSource = resolvedIntent.source;\n}\nfunction setExplicitContextIntent(event, context) {\n const intent = normalizeIntent(context);\n if (!intent) return;\n event.userIntent = intent;\n event.userIntentSource = 'context_parameter';\n}\nexport { resolveToolCallIntent, setEventIntent, setExplicitContextIntent };\n","import { resolveEventProperties } from \"./internal.mjs\";\nfunction isToolResultError(result) {\n return !!result && 'object' == typeof result && 'isError' in result && true === result.isError;\n}\nasync function applyResolvedMetadata(event, data, request, extra) {\n const resolvedProperties = await resolveEventProperties(data, request, extra);\n if (resolvedProperties) event.properties = resolvedProperties;\n}\nfunction getContextArgument(request) {\n const context = request.params?.arguments?.context;\n return 'string' == typeof context ? context : void 0;\n}\nfunction getEventDuration(event) {\n return event.timestamp ? Date.now() - event.timestamp.getTime() : 0;\n}\nexport { applyResolvedMetadata, getContextArgument, getEventDuration, isToolResultError };\n","import { getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from \"./analytics-parameters.mjs\";\nimport { addContextParameterToTools, getContextDescription, isContextEnabled } from \"./context-parameters.mjs\";\nimport { addModelParameterToTools, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel } from \"./model-parameters.mjs\";\nimport { addConversationIdToTools, canInjectConversationIdPromptBack, injectConversationIdPromptBack, resolveConversationId } from \"./conversation-id.mjs\";\nimport { stampClientIdentity } from \"./client-identity.mjs\";\nimport { stampTransportIdentity } from \"./transport-identity.mjs\";\nimport { addInstructionsToOutputSchemas, mirrorInstructionsIntoStructuredContent } from \"./output-instructions.mjs\";\nimport { captureEvent } from \"./capture.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { captureException } from \"./exceptions.mjs\";\nimport { resolveToolCallIntent, setEventIntent, setExplicitContextIntent } from \"./intent.mjs\";\nimport { getServerTrackingData, handleIdentify, setServerTrackingData, withIdentity } from \"./internal.mjs\";\nimport { buildCapturedMcpParameters } from \"./mcp-payloads.mjs\";\nimport { readRequestHandlerMethod } from \"./mcp-sdk-compat.mjs\";\nimport { getRequestHeaders } from \"./request-headers.mjs\";\nimport { getSessionId, getSessionInfo, isModernEraRequest, newSessionId } from \"./session.mjs\";\nimport { encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport } from \"./session-token.mjs\";\nimport { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { applyResolvedMetadata, isToolResultError } from \"./tracing-helpers.mjs\";\nasync function captureToolCall(params) {\n const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;\n const resolvedEventType = eventType ?? MCPAnalyticsEventType.mcpToolsCall;\n const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership, resolvedEventType === MCPAnalyticsEventType.mcpMissingCapability);\n const canCaptureContextIntent = resolvedEventType !== MCPAnalyticsEventType.mcpMissingCapability && isContextEnabled(data.options.context) && (ownership.context || !ownership.contextOwnershipKnown);\n const conversation = resolveConversationId(ownership.conversationId, request.params?.arguments);\n const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);\n const startTime = new Date();\n const preparedEvent = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, resolvedEventType, canCaptureContextIntent);\n if (preparedEvent && explicitContextIntent) setExplicitContextIntent(preparedEvent.event, explicitContextIntent);\n let result;\n try {\n result = await execute(downstreamRequest);\n } catch (error) {\n publishFailedToolEvent(server, preparedEvent, error, startTime, conversation, data.logger);\n throw error;\n }\n const finalResult = applyConversationInstructions(preparedEvent?.event ?? null, result, conversation, ownership);\n publishSuccessfulToolEvent(server, preparedEvent, finalResult, startTime, data.logger, takeCapturedError, result);\n return finalResult;\n}\nfunction getActiveAnalyticsParameterOwnership(data, toolName, override, isMissingCapabilityTool) {\n const listed = toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0;\n const ownership = override ?? listed;\n return {\n contextOwnershipKnown: void 0 !== ownership,\n context: !isMissingCapabilityTool && isContextEnabled(data.options.context) && ownership?.context === true,\n conversationId: true === data.options.enableConversationId && ownership?.conversationId === true,\n llmModel: isCaptureModelEnabled(data.options.captureModel) && ownership?.llmModel === true,\n outputInstructions: true === data.options.enableConversationId && listed?.outputInstructions === true\n };\n}\nfunction cloneRequestWithoutOwnedAnalyticsArguments(request, ownership) {\n const args = request.params?.arguments;\n const cleanedArgs = stripOwnedAnalyticsArguments(args, ownership);\n if (cleanedArgs === args || !request.params) return request;\n return {\n ...request,\n params: {\n ...request.params,\n arguments: cleanedArgs\n }\n };\n}\nasync function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType, canCaptureContextIntent) {\n try {\n const sessionId = getSessionId(server, extra, conversation.conversationId);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const toolName = request.params?.name;\n const event = {\n sessionId,\n conversationId: conversation.conversationId,\n resourceName: toolName || 'Unknown Tool Name',\n parameters: buildCapturedMcpParameters(downstreamRequest),\n eventType,\n timestamp: startTime,\n toolCategory: toolName ? data.toolCategories.get(toolName) : void 0,\n toolDescription: toolName ? data.toolDescriptions.get(toolName) : void 0\n };\n stampClientIdentity(event, request, extra, server);\n stampTransportIdentity(event, extra);\n const identity = await handleIdentify(server, data, sessionId, request, sessionInfo, extra, !!conversation.conversationId);\n const requestAttribution = withIdentity(sessionInfo, identity);\n await applyResolvedMetadata(event, data, request, extra);\n setEventIntent(event, await resolveToolCallIntent(data, request, canCaptureContextIntent, extra));\n if (ownership.llmModel) setEventModel(event, getModelArgument(request));\n return {\n event,\n requestAttribution\n };\n } catch (error) {\n data.logger(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);\n return null;\n }\n}\nfunction applyConversationInstructions(event, result, conversation, ownership) {\n const conversationId = conversation.conversationId;\n if (!conversationId) return result;\n let updated = result;\n let delivered = false;\n if (ownership.outputInstructions) {\n const mirrored = mirrorInstructionsIntoStructuredContent(updated, conversationId);\n delivered = mirrored !== updated;\n updated = mirrored;\n }\n if (conversation.minted && canInjectConversationIdPromptBack(updated)) {\n updated = injectConversationIdPromptBack(updated, conversationId);\n delivered = true;\n }\n if (!delivered && conversation.minted && event) event.conversationId = void 0;\n return updated;\n}\nfunction publishSuccessfulToolEvent(server, preparedEvent, result, startTime, logger, takeCapturedError, resultBeforeInstructions) {\n if (!preparedEvent) return;\n const { event, requestAttribution } = preparedEvent;\n try {\n if (isToolResultError(result)) {\n event.isError = true;\n const capturedError = takeCapturedError?.();\n event.error = captureException(capturedError ?? resultBeforeInstructions ?? result);\n } else event.isError = false;\n event.response = result;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, logger, requestAttribution);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);\n }\n}\nfunction publishFailedToolEvent(server, preparedEvent, error, startTime, conversation, logger) {\n if (!preparedEvent) return;\n const { event, requestAttribution } = preparedEvent;\n try {\n if (conversation.minted) event.conversationId = void 0;\n event.isError = true;\n event.error = captureException(error);\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, logger, requestAttribution);\n } catch (publishError) {\n logger(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);\n }\n}\nconst originalRequestHandlers = new WeakMap();\nfunction rememberOriginalRequestHandler(server, handlerName, originalHandler) {\n let handlers = originalRequestHandlers.get(server);\n if (!handlers) {\n handlers = new Map();\n originalRequestHandlers.set(server, handlers);\n }\n handlers.set(handlerName, originalHandler);\n}\nfunction registerFallbackRequestHandler(server, handlerName, fallbackHandler, patch) {\n rememberOriginalRequestHandler(server, handlerName, fallbackHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, fallbackHandler, request, extra));\n}\nfunction patchRequestHandlers(server, patches) {\n for (const [handlerName, patch] of Object.entries(patches)){\n const originalHandler = server._requestHandlers.get(handlerName);\n if (originalHandler) {\n rememberOriginalRequestHandler(server, handlerName, originalHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));\n }\n }\n const originalSetRequestHandler = server.setRequestHandler.bind(server);\n server.setRequestHandler = (...args)=>{\n const handlerName = readRequestHandlerMethod(args[0]);\n const patch = void 0 !== handlerName && Object.prototype.hasOwnProperty.call(patches, handlerName) ? patches[handlerName] : void 0;\n if (void 0 === handlerName || !patch) return originalSetRequestHandler(...args);\n const result = originalSetRequestHandler(...args);\n const registeredHandler = server._requestHandlers.get(handlerName);\n if (registeredHandler) {\n rememberOriginalRequestHandler(server, handlerName, registeredHandler);\n server._requestHandlers.set(handlerName, (request, extra)=>patch(server, registeredHandler, request, extra));\n }\n return result;\n };\n}\nfunction getVirtualToolParameterOwnership(data, toolName) {\n return {\n ...getAnalyticsParameterOwnership(getReportMissingToolDescriptor(toolName).inputSchema),\n conversationId: data.toolAnalyticsParameterOwnership.get(toolName)?.conversationId === true\n };\n}\nasync function isToolAdvertised(server, toolName, extra, logger) {\n const listHandler = originalRequestHandlers.get(server)?.get('tools/list');\n if (!listHandler || !server._requestHandlers.has('tools/list')) return;\n try {\n const response = await listHandler({\n method: 'tools/list',\n params: {}\n }, extra);\n if (!response || !Array.isArray(response.tools)) return;\n return response.tools.some((tool)=>tool?.name === toolName);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics could not determine whether \"${toolName}\" is advertised; delegating to the server - ${error}`);\n return;\n }\n}\nasync function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n const startTime = new Date();\n const sessionId = getSessionId(server, extra);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const event = {\n sessionId,\n parameters: buildCapturedMcpParameters(request),\n eventType: MCPAnalyticsEventType.mcpToolsList,\n timestamp: startTime\n };\n stampClientIdentity(event, request, extra, server);\n stampTransportIdentity(event, extra);\n const identity = data ? await handleIdentify(server, data, sessionId, request, sessionInfo, extra) : void 0;\n const requestAttribution = withIdentity(sessionInfo, identity);\n if (data) await applyResolvedMetadata(event, data, request, extra);\n const response = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);\n const tools = response.tools;\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return response;\n }\n if (0 === tools.length) {\n data.logger('Warning: No tools found in the original list. This is likely due to the tools not being registered before PostHog MCP analytics.instrument().');\n event.error = captureException('No tools were sent to MCP client.');\n event.isError = true;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, data.logger, requestAttribution);\n return response;\n }\n event.response = response;\n event.listedToolNames = collectListedToolNames(tools);\n event.isError = false;\n event.duration = Date.now() - startTime.getTime();\n captureEvent(server, event, data.logger, requestAttribution);\n return response;\n}\nfunction cacheToolAnalyticsParameterOwnership(cache, tools) {\n for (const tool of tools)if (tool?.name) cache.set(tool.name, getAnalyticsParameterOwnership(tool.inputSchema, tool.outputSchema));\n}\nfunction collectListedToolNames(tools) {\n if (!tools || 0 === tools.length) return;\n const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);\n return names.length > 0 ? names : void 0;\n}\nasync function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution) {\n try {\n const data = getServerTrackingData(server);\n const originalResponse = await originalListToolsHandler(request, extra);\n let tools = [\n ...originalResponse.tools || []\n ];\n if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);\n if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context), data.logger);\n if (data) {\n const missingToolName = resolveMissingCapabilityToolName(data.options);\n if (data.options.reportMissing) {\n const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);\n if (alreadyPresent) data.logger(`Warning: Cannot inject missing-capability tool \"${missingToolName}\" because a real tool already uses that name. The real tool will not be intercepted.`);\n else {\n const virtualTool = getReportMissingToolDescriptor(missingToolName);\n tools.push(virtualTool);\n cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, [\n virtualTool\n ]);\n }\n }\n if (isCaptureModelEnabled(data.options.captureModel)) tools = addModelParameterToTools(tools, getModelDescription(data.options.captureModel), data.logger);\n if (data.options.enableConversationId) {\n tools = addConversationIdToTools(tools, data.logger);\n tools = addInstructionsToOutputSchemas(tools, data.logger);\n }\n }\n if (data) {\n cacheToolDescriptions(data.toolDescriptions, tools);\n cacheToolCategories(data.toolCategories, tools);\n }\n return {\n ...originalResponse,\n tools\n };\n } catch (error) {\n logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);\n event.error = captureException(error);\n event.isError = true;\n event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;\n captureEvent(server, event, logger, requestAttribution);\n throw error;\n }\n}\nfunction cacheToolDescriptions(cache, tools) {\n if (!tools) return;\n for (const tool of tools)if (tool?.name && 'string' == typeof tool.description) cache.set(tool.name, tool.description);\n}\nfunction readToolMetaCategory(meta) {\n const category = meta?.category;\n return 'string' == typeof category && category.length > 0 ? category : void 0;\n}\nfunction cacheToolCategories(cache, tools) {\n if (!tools) return;\n for (const tool of tools){\n const category = tool?.name ? readToolMetaCategory(tool._meta) : void 0;\n if (category) cache.set(tool.name, category);\n }\n}\nfunction mintStatelessSessionOnInitialize(server, data, request, extra) {\n try {\n const headers = getRequestHeaders(extra);\n if (!headers) return;\n if (isModernEraRequest(request, extra, server)) return;\n if (readMcpSessionHeader(headers)) return;\n const transport = server.transport;\n if (!transport || extra?.sessionId || transport.sessionId) return;\n const sessionId = newSessionId();\n const clientInfo = readInitializeClientInfo(request);\n const requestedProtocolVersion = readProtocolVersion(void 0, request);\n const token = encodeSessionId({\n sessionId,\n clientName: clientInfo?.name,\n clientVersion: clientInfo?.version,\n protocolVersion: requestedProtocolVersion\n });\n if (!writeSessionIdToTransport(transport, token)) return;\n data.sessionId = sessionId;\n data.sessionSource = 'token';\n data.sessionInfo.clientName = clientInfo?.name;\n data.sessionInfo.clientVersion = clientInfo?.version;\n data.sessionInfo.protocolVersion = requestedProtocolVersion;\n data.lastActivity = new Date();\n setServerTrackingData(server, data);\n return sessionId;\n } catch (error) {\n data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);\n return;\n }\n}\nfunction upgradeMintedTokenToNegotiated(server, mintedSessionId, sessionInfo, negotiatedProtocolVersion, logger) {\n try {\n const transport = server.transport;\n if (!transport) return;\n const token = encodeSessionId({\n sessionId: mintedSessionId,\n clientName: sessionInfo.clientName,\n clientVersion: sessionInfo.clientVersion,\n protocolVersion: negotiatedProtocolVersion\n });\n writeSessionIdToTransport(transport, token);\n } catch (error) {\n logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);\n }\n}\nfunction readInitializeClientInfo(request) {\n const clientInfo = request.params?.clientInfo;\n if (!clientInfo || 'object' != typeof clientInfo) return;\n const { name, version } = clientInfo;\n return {\n name: 'string' == typeof name ? name : void 0,\n version: 'string' == typeof version ? version : void 0\n };\n}\nasync function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalInitializeHandler(request, extra);\n }\n const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);\n const sessionId = getSessionId(server, extra);\n const sessionInfo = getSessionInfo(server, data, sessionId);\n const initializeClientInfo = readInitializeClientInfo(request);\n const requestSessionInfo = {\n ...sessionInfo,\n clientName: initializeClientInfo?.name ?? sessionInfo.clientName,\n clientVersion: initializeClientInfo?.version ?? sessionInfo.clientVersion\n };\n const event = {\n sessionId,\n resourceName: request.params?.name || 'Unknown Tool Name',\n eventType: MCPAnalyticsEventType.mcpInitialize,\n parameters: buildCapturedMcpParameters(request),\n timestamp: new Date()\n };\n stampClientIdentity(event, request, extra, server);\n if (initializeClientInfo?.name) event.clientName = initializeClientInfo.name;\n if (initializeClientInfo?.version) event.clientVersion = initializeClientInfo.version;\n stampTransportIdentity(event, extra);\n const identity = await handleIdentify(server, data, sessionId, request, requestSessionInfo, extra);\n const requestAttribution = withIdentity(requestSessionInfo, identity);\n await applyResolvedMetadata(event, data, request, extra);\n const result = await originalInitializeHandler(request, extra);\n event.response = result;\n const negotiatedProtocolVersion = readProtocolVersion(result, request);\n event.protocolVersion = negotiatedProtocolVersion;\n if (data.sessionId === sessionId) {\n data.sessionInfo = {\n ...data.sessionInfo,\n protocolVersion: negotiatedProtocolVersion\n };\n setServerTrackingData(server, data);\n }\n if (mintedSessionId) upgradeMintedTokenToNegotiated(server, mintedSessionId, requestSessionInfo, negotiatedProtocolVersion, data.logger);\n captureEvent(server, event, data.logger, {\n ...requestAttribution,\n protocolVersion: negotiatedProtocolVersion\n });\n return result;\n}\nfunction readProtocolVersion(result, request) {\n const negotiated = result?.protocolVersion;\n if ('string' == typeof negotiated && negotiated.length > 0) return negotiated;\n const requested = request.params?.protocolVersion;\n return 'string' == typeof requested && requested.length > 0 ? requested : void 0;\n}\nexport { cacheToolCategories, cacheToolDescriptions, captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory, registerFallbackRequestHandler };\n","import { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { handleReportMissing, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, registerFallbackRequestHandler } from \"./instrumentation.mjs\";\nimport { getContextArgument } from \"./tracing-helpers.mjs\";\nfunction instrumentLowLevelServer(server, logger) {\n try {\n const hadCallToolHandler = server._requestHandlers.has('tools/call');\n const traceToolCall = (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger);\n const handlers = {\n initialize: (server, originalHandler, request, extra)=>handleInitializeRequest(server, originalHandler, request, extra, logger),\n 'tools/list': (server, originalHandler, request, extra)=>handleListToolsRequest(server, originalHandler, request, extra, logger),\n 'tools/call': traceToolCall\n };\n patchRequestHandlers(server, handlers);\n if (!hadCallToolHandler) registerFallbackRequestHandler(server, 'tools/call', unknownToolHandler, traceToolCall);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n throw error;\n }\n}\nasync function unknownToolHandler(request) {\n throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);\n}\nasync function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalCallToolHandler?.(request, extra);\n }\n const toolName = request.params?.name;\n const isMissingCapabilityCandidate = data.options.reportMissing && toolName === resolveMissingCapabilityToolName(data.options);\n if (isMissingCapabilityCandidate && await isToolAdvertised(server, toolName, extra, data.logger) === false) {\n const context = getContextArgument(request) || '';\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n eventType: MCPAnalyticsEventType.mcpMissingCapability,\n explicitContextIntent: context,\n parameterOwnership: getVirtualToolParameterOwnership(data, toolName),\n execute: async ()=>handleReportMissing({\n context\n }, data.logger)\n });\n }\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n execute: (downstreamRequest)=>runOriginalToolHandler(originalCallToolHandler, downstreamRequest, extra)\n });\n}\nfunction runOriginalToolHandler(handler, request, extra) {\n if (!handler) throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);\n return handler(request, extra);\n}\nexport { instrumentLowLevelServer };\n","import { analyticsOwnsParameter, getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from \"./analytics-parameters.mjs\";\nimport { isContextEnabled } from \"./context-parameters.mjs\";\nimport { isCaptureModelEnabled } from \"./model-parameters.mjs\";\nimport { MCPAnalyticsEventType } from \"./event-types.mjs\";\nimport { getServerTrackingData } from \"./internal.mjs\";\nimport { createWrappedTool, getToolFunction, hasToolFunction } from \"./mcp-sdk-compat.mjs\";\nimport { handleReportMissing, resolveMissingCapabilityToolName } from \"./tools.mjs\";\nimport { captureToolCall, getVirtualToolParameterOwnership, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory } from \"./instrumentation.mjs\";\nimport { getContextArgument } from \"./tracing-helpers.mjs\";\nconst wrappedCallbacks = new WeakMap();\nconst MCP_ANALYTICS_PROCESSED = Symbol('__posthog_mcp_analytics_processed__');\nfunction isCallbackUpdate(value) {\n return !!value && 'object' == typeof value && 'callback' in value && 'function' == typeof value.callback;\n}\nfunction addTracingToToolRegistry(tools, server, logger) {\n return Object.fromEntries(Object.entries(tools).map(([name, tool])=>[\n name,\n addTracingToToolCallbackInternal(tool, name, server, ()=>tool.inputSchema, logger)\n ]));\n}\nfunction setupListenerToRegisteredTools(server, logger) {\n try {\n const data = getServerTrackingData(server.server);\n if (!data) return void logger('Warning: Cannot setup listener - no tracking data found');\n const handler = {\n set (target, property, value) {\n try {\n if ('string' == typeof property && value && 'object' == typeof value && hasToolFunction(value)) {\n if ('string' == typeof value.description) data.toolDescriptions.set(property, value.description);\n if (value[MCP_ANALYTICS_PROCESSED]) {\n logger(`Tool ${String(property)} already processed, skipping proxy wrapping`);\n return Reflect.set(target, property, value);\n }\n if (wrappedCallbacks.has(getToolFunction(value))) {\n logger(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);\n return Reflect.set(target, property, value);\n }\n const getCurrentInputSchema = ()=>value.inputSchema;\n const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema, logger);\n if ('function' == typeof nextValue.update) {\n const originalUpdate = nextValue.update;\n nextValue.update = function(...updateArgs) {\n if (updateArgs[0]) {\n const updateObj = updateArgs[0];\n if (isCallbackUpdate(updateObj)) {\n const wrappedTool = addTracingToToolCallbackInternal({\n callback: updateObj.callback\n }, property, server, getCurrentInputSchema, logger);\n updateObj.callback = getToolFunction(wrappedTool);\n }\n }\n return originalUpdate.apply(this, updateArgs);\n };\n }\n return Reflect.set(target, property, nextValue);\n }\n return Reflect.set(target, property, value);\n } catch (error) {\n logger(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);\n return Reflect.set(target, property, value);\n }\n },\n get (target, property) {\n return Reflect.get(target, property);\n },\n deleteProperty (target, property) {\n return Reflect.deleteProperty(target, property);\n },\n has (target, property) {\n return Reflect.has(target, property);\n }\n };\n const originalTools = server._registeredTools || {};\n server._registeredTools = new Proxy(originalTools, handler);\n logger('Successfully set up listener for new tool registrations');\n } catch (error) {\n logger(`Warning: Failed to setup listener for registered tools - ${error}`);\n }\n}\nfunction addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema, logger) {\n const originalCallback = getToolFunction(tool);\n const options = getServerTrackingData(server.server)?.options;\n if (wrappedCallbacks.has(originalCallback)) {\n logger(`Tool ${toolName} callback already wrapped, skipping re-wrap`);\n return tool;\n }\n if (tool[MCP_ANALYTICS_PROCESSED]) {\n logger(`Tool ${toolName} already processed, skipping re-wrap`);\n return tool;\n }\n const wrappedCallback = async (...params)=>{\n let args;\n let extra;\n if (2 === params.length) {\n args = params[0];\n extra = params[1];\n } else {\n args = void 0;\n extra = params[0];\n }\n const inputSchema = getCurrentInputSchema();\n const cleanedArgs = stripOwnedAnalyticsArguments(args, {\n context: isContextEnabled(options?.context) && analyticsOwnsParameter(inputSchema, 'context'),\n conversationId: options?.enableConversationId === true && analyticsOwnsParameter(inputSchema, 'conversation_id'),\n llmModel: isCaptureModelEnabled(options?.captureModel) && analyticsOwnsParameter(inputSchema, 'llm_model')\n });\n try {\n if (void 0 === cleanedArgs) {\n const handler = originalCallback;\n return await handler(extra);\n }\n const handler = originalCallback;\n return await handler(cleanedArgs, extra);\n } catch (error) {\n if (error instanceof Error) extra.__mcp_analytics_error = error;\n throw error;\n }\n };\n wrappedCallbacks.set(originalCallback, true);\n wrappedCallbacks.set(wrappedCallback, true);\n const wrappedTool = createWrappedTool(tool, wrappedCallback);\n wrappedTool[MCP_ANALYTICS_PROCESSED] = true;\n return wrappedTool;\n}\nasync function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra, logger) {\n const data = getServerTrackingData(server);\n if (!data) {\n logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');\n return await originalCallToolHandler(request, extra);\n }\n const toolName = request.params?.name;\n const isMissingCapabilityCandidate = data.options.reportMissing && toolName === resolveMissingCapabilityToolName(data.options);\n if (isMissingCapabilityCandidate && await isToolAdvertised(server, toolName, extra, data.logger) === false) {\n const context = getContextArgument(request) || '';\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n eventType: MCPAnalyticsEventType.mcpMissingCapability,\n explicitContextIntent: context,\n parameterOwnership: getVirtualToolParameterOwnership(data, toolName),\n execute: async ()=>handleReportMissing({\n context\n }, data.logger)\n });\n }\n const registeredTool = toolName ? highLevelServer._registeredTools[toolName] : void 0;\n return await captureToolCall({\n server,\n data,\n request,\n extra,\n execute: (downstreamRequest)=>originalCallToolHandler(downstreamRequest, extra),\n parameterOwnership: registeredTool ? getAnalyticsParameterOwnership(registeredTool.inputSchema, registeredTool.outputSchema) : void 0,\n takeCapturedError: ()=>{\n const captured = extra?.__mcp_analytics_error;\n if (extra) extra.__mcp_analytics_error = void 0;\n return captured;\n }\n });\n}\nfunction instrumentHighLevelServer(server, logger) {\n try {\n const lowLevelServer = server.server;\n const mcpAnalyticsData = getServerTrackingData(lowLevelServer);\n const handlers = {\n initialize: (trackedServer, originalHandler, request, extra)=>handleInitializeRequest(trackedServer, originalHandler, request, extra, logger),\n 'tools/list': (trackedServer, originalHandler, request, extra)=>handleListToolsRequest(trackedServer, originalHandler, request, extra, logger),\n 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra, logger)\n };\n patchRequestHandlers(lowLevelServer, handlers);\n server._registeredTools = addTracingToToolRegistry(server._registeredTools, server, logger);\n if (mcpAnalyticsData) {\n seedToolDescriptionsFromRegistry(mcpAnalyticsData.toolDescriptions, server._registeredTools);\n seedToolCategoriesFromRegistry(mcpAnalyticsData.toolCategories, server._registeredTools);\n }\n setupListenerToRegisteredTools(server, logger);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n }\n}\nfunction seedToolDescriptionsFromRegistry(cache, tools) {\n for (const [name, tool] of Object.entries(tools))if ('string' == typeof tool?.description) cache.set(name, tool.description);\n}\nfunction seedToolCategoriesFromRegistry(cache, tools) {\n for (const [name, tool] of Object.entries(tools)){\n const category = readToolMetaCategory(tool?._meta);\n if (category) cache.set(name, category);\n }\n}\nexport { instrumentHighLevelServer };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nconst flagDetailsToResults = (flagDetails)=>Object.values(flagDetails).map((detail)=>{\n const value = detail.variant ?? detail.enabled;\n const rawPayload = detail.metadata?.payload;\n return {\n key: detail.key,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value),\n payload: void 0 !== rawPayload ? parsePayload(rawPayload) : null\n };\n });\nconst MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gad_source',\n 'mc_cid',\n 'gclid',\n 'gclsrc',\n 'dclid',\n 'gbraid',\n 'wbraid',\n 'fbclid',\n 'msclkid',\n 'twclid',\n 'li_fat_id',\n 'igshid',\n 'ttclid',\n 'rdt_cid',\n 'epik',\n 'qclid',\n 'sccid',\n 'irclid',\n '_kx'\n];\nconst MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [\n '$feature_flag',\n '$feature_flag_response',\n '$feature_flag_has_experiment',\n '$feature_flag_id',\n '$feature_flag_version',\n '$feature_flag_reason',\n '$feature_flag_request_id',\n '$feature_flag_evaluated_at',\n '$feature_flag_error',\n 'locally_evaluated',\n '$groups',\n '$process_person_profile',\n '$geoip_disable',\n '$current_url',\n '$pathname',\n '$referring_domain',\n ...MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES,\n '$session_id',\n '$window_id',\n '$lib',\n '$lib_version',\n '$device_id',\n '$is_server'\n];\nconst minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{\n const minimal = {};\n const copyKey = (key)=>{\n if (void 0 !== properties[key]) minimal[key] = properties[key];\n };\n MINIMAL_FLAG_CALLED_EVENT_PROPERTIES.forEach(copyKey);\n transportKeys.forEach(copyKey);\n return minimal;\n};\nexport { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, MINIMAL_FLAG_CALLED_EVENT_PROPERTIES, createFlagsResponseFromFlagsAndPayloads, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, minimizeFlagCalledEventProperties, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","const MAX_JSON_SAFE_VALUE_DEPTH = 20;\nconst MAX_JSON_SAFE_VALUE_ITEMS = 1000;\nconst MAX_JSON_SAFE_VALUE_NODES = 10000;\nconst CIRCULAR_VALUE = '[Circular]';\nconst TRUNCATED_VALUE = '[Truncated]';\nconst UNSERIALIZABLE_VALUE = '[Unserializable]';\nconst FUNCTION_VALUE = '[Function]';\nconst dateGetTime = Date.prototype.getTime;\nconst dateToISOString = Date.prototype.toISOString;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction sanitizeString(value) {\n let output = '';\n for(let index = 0; index < value.length; index++){\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (nextCodeUnit >= 0xdc00 && nextCodeUnit <= 0xdfff) {\n output += value[index] + value[index + 1];\n index++;\n } else output += '\\ufffd';\n } else output += codeUnit >= 0xdc00 && codeUnit <= 0xdfff ? '\\ufffd' : value[index];\n }\n return output;\n}\nfunction toJsonSafeValue(value) {\n const state = {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n const convert = (current, depth)=>{\n if (state.remainingNodes <= 0) return TRUNCATED_VALUE;\n state.remainingNodes--;\n try {\n if (null == current || 'boolean' == typeof current) return current;\n if ('string' == typeof current) return sanitizeString(current);\n if ('number' == typeof current) return Number.isFinite(current) ? current : null;\n if ('bigint' == typeof current) return current.toString();\n if ('function' == typeof current) return FUNCTION_VALUE;\n if ('symbol' == typeof current) return current.description ? `Symbol(${current.description})` : 'Symbol()';\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return TRUNCATED_VALUE;\n if (state.ancestors.has(current)) return CIRCULAR_VALUE;\n state.ancestors.add(current);\n try {\n if (current instanceof Date) return Number.isFinite(dateGetTime.call(current)) ? dateToISOString.call(current) : null;\n let hasToJSONResult = false;\n let toJSONResult;\n try {\n const toJSON = current.toJSON;\n if ('function' == typeof toJSON) {\n toJSONResult = toJSON.call(current);\n hasToJSONResult = true;\n }\n } catch {\n hasToJSONResult = false;\n }\n if (hasToJSONResult) return convert(toJSONResult, depth + 1);\n if (Array.isArray(current)) {\n const itemCount = Math.min(current.length, MAX_JSON_SAFE_VALUE_ITEMS);\n const output = [];\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)output.push(convert(current[index], depth + 1));\n if (current.length > index) output.push(TRUNCATED_VALUE);\n return output;\n }\n const output = {};\n let itemCount = 0;\n let truncated = false;\n for(const key in current){\n if (!propertyIsEnumerable.call(current, key)) break;\n if (itemCount >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n truncated = true;\n break;\n }\n const converted = convert(current[key], depth + 1);\n Object.defineProperty(output, key, {\n value: converted,\n enumerable: true,\n configurable: true,\n writable: true\n });\n itemCount++;\n }\n if (truncated) output[TRUNCATED_VALUE] = 'Additional properties omitted';\n return output;\n } finally{\n state.ancestors.delete(current);\n }\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n };\n return convert(value, 0);\n}\nexport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString, toJsonSafeValue };\n","function includes(str, needle) {\n return -1 !== str.indexOf(needle);\n}\nconst trim = function(str) {\n return str.trim();\n};\nconst stripLeadingDollar = function(s) {\n return s.replace(/^\\$/, '');\n};\nfunction isDistinctIdStringLike(value) {\n return [\n 'distinct_id',\n 'distinctid'\n ].includes(value.toLowerCase());\n}\nfunction safeJsonStringify(value) {\n const ancestors = [];\n return JSON.stringify(value, function(_key, replacementValue) {\n if ('bigint' == typeof replacementValue) return replacementValue.toString();\n if ('function' == typeof replacementValue || 'symbol' == typeof replacementValue) return;\n if (replacementValue instanceof Error) return {\n name: replacementValue.name,\n message: replacementValue.message,\n stack: replacementValue.stack\n };\n if (replacementValue && 'object' == typeof replacementValue) {\n while(ancestors.length > 0 && ancestors[ancestors.length - 1] !== this)ancestors.pop();\n if (ancestors.includes(replacementValue)) return '[Circular]';\n ancestors.push(replacementValue);\n }\n return replacementValue;\n }) ?? 'null';\n}\nfunction deepSortKeys(value) {\n if (null === value || 'object' != typeof value) return value;\n if (Array.isArray(value)) return value.map(deepSortKeys);\n return Object.keys(value).sort().reduce((acc, key)=>{\n acc[key] = deepSortKeys(value[key]);\n return acc;\n }, {});\n}\nfunction getPersonPropertiesHash(distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {\n return JSON.stringify({\n distinct_id,\n userPropertiesToSet: userPropertiesToSet ? deepSortKeys(userPropertiesToSet) : void 0,\n userPropertiesToSetOnce: userPropertiesToSetOnce ? deepSortKeys(userPropertiesToSetOnce) : void 0\n });\n}\nexport { getPersonPropertiesHash, includes, isDistinctIdStringLike, safeJsonStringify, stripLeadingDollar, trim };\n","import { knownUnsafeEditableEvent, knownUnsafeEditableEventProperty } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x) && x === x;\nconst isPositiveNumber = (value)=>isNumber(value) && value > 0;\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nconst isKnownUnsafeEditableEventProperty = (x)=>includes(knownUnsafeEditableEventProperty, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return 'undefined' != typeof Event && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isKnownUnsafeEditableEventProperty, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPositiveNumber, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst OCULUS_BROWSER = 'Oculus Browser';\nconst VIVALDI = 'Vivaldi';\nconst YANDEX = 'Yandex';\nconst WHALE = 'Whale';\nconst DUCKDUCKGO = 'DuckDuckGo';\nconst PALE_MOON = 'Pale Moon';\nconst WATERFOX = 'Waterfox';\nconst BRAVE = 'Brave';\nconst GOOGLE_SEARCH_APP = 'Google Search App';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nfunction browserFromHints(hints) {\n if (hints?.brave) return BRAVE;\n return null;\n}\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor, hints, options) {\n vendor = vendor || '';\n const fromHints = browserFromHints(hints);\n if (fromHints) return fromHints;\n if (options?.detectGoogleSearchApp && includes(user_agent, 'GSA/')) return GOOGLE_SEARCH_APP;\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, 'OculusBrowser')) return OCULUS_BROWSER;\n else if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, VIVALDI + '/')) return VIVALDI;\n else if (includes(user_agent, 'YaBrowser/')) return YANDEX;\n else if (includes(user_agent, WHALE + '/')) return WHALE;\n else if (includes(user_agent, DUCKDUCKGO + '/') || includes(user_agent, 'Ddg/')) return DUCKDUCKGO;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (includes(user_agent, BRAVE + '/')) return BRAVE;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, 'PaleMoon/')) return PALE_MOON;\n else if (includes(user_agent, WATERFOX + '/')) return WATERFOX;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [OCULUS_BROWSER]: [\n new RegExp('OculusBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [VIVALDI]: [\n new RegExp(VIVALDI + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [YANDEX]: [\n new RegExp('YaBrowser\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WHALE]: [\n new RegExp(WHALE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [BRAVE]: [\n new RegExp(BRAVE + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [DUCKDUCKGO]: [\n new RegExp('(DuckDuckGo|Ddg)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [PALE_MOON]: [\n new RegExp('PaleMoon\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [WATERFOX]: [\n new RegExp(WATERFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [GOOGLE_SEARCH_APP]: [\n new RegExp('GSA\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor, hints, options) {\n const browser = detectBrowser(userAgent, vendor, hints, options);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent, options) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n if (options?.userAgentDataPlatform === 'Android' && (options?.maxTouchPoints ?? 0) > 0) {\n const shortSide = Math.min(options?.screenWidth ?? 0, options?.screenHeight ?? 0);\n const shortSideDp = shortSide / (options?.devicePixelRatio ?? 1);\n return shortSideDp >= 600 ? TABLET : MOBILE;\n }\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","import { isArray, isBoolean, isNull, isNullish, isUndefined } from \"../utils/index.mjs\";\nimport { CIRCULAR_VALUE, FUNCTION_VALUE, MAX_JSON_SAFE_VALUE_DEPTH, MAX_JSON_SAFE_VALUE_ITEMS, MAX_JSON_SAFE_VALUE_NODES, TRUNCATED_VALUE, UNSERIALIZABLE_VALUE, sanitizeString } from \"../utils/json-utils.mjs\";\nconst OTLP_SEVERITY_MAP = {\n trace: {\n text: 'TRACE',\n number: 1\n },\n debug: {\n text: 'DEBUG',\n number: 5\n },\n info: {\n text: 'INFO',\n number: 9\n },\n warn: {\n text: 'WARN',\n number: 13\n },\n error: {\n text: 'ERROR',\n number: 17\n },\n fatal: {\n text: 'FATAL',\n number: 21\n }\n};\nconst DEFAULT_OTLP_SEVERITY = OTLP_SEVERITY_MAP.info;\nfunction getOtlpSeverityText(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).text;\n}\nfunction getOtlpSeverityNumber(level) {\n return (OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY).number;\n}\nconst INT64_RANGE_LIMIT = 9223372036854775808;\nconst propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction newState() {\n return {\n ancestors: new WeakSet(),\n remainingNodes: MAX_JSON_SAFE_VALUE_NODES\n };\n}\nfunction toOtlpAnyValue(value, logger) {\n try {\n return encodeAnyValue(value, logger, newState(), 0);\n } catch {\n return {\n stringValue: UNSERIALIZABLE_VALUE\n };\n }\n}\nfunction toOtlpKeyValueList(attrs, logger) {\n try {\n return encodeKeyValueList(attrs, logger, newState(), 0);\n } catch {\n return [];\n }\n}\nfunction encodeAnyValue(value, logger, state, depth) {\n if (state.remainingNodes <= 0) return {\n stringValue: TRUNCATED_VALUE\n };\n state.remainingNodes--;\n if (isBoolean(value)) return {\n boolValue: value\n };\n if ('number' == typeof value) {\n if (!Number.isFinite(value)) return {\n stringValue: String(value)\n };\n if (Number.isInteger(value)) {\n if (Number.isSafeInteger(value)) return {\n intValue: String(value)\n };\n if ('undefined' == typeof BigInt) return {\n stringValue: String(value)\n };\n const decimal = BigInt(value).toString();\n if (value >= INT64_RANGE_LIMIT || value < -INT64_RANGE_LIMIT) {\n logger?.debug(`Attribute ${decimal} is outside the int64 range; encoding it as a string`);\n return {\n stringValue: decimal\n };\n }\n return {\n intValue: decimal\n };\n }\n return {\n doubleValue: value\n };\n }\n if ('string' == typeof value) return {\n stringValue: sanitizeString(value)\n };\n if ('function' == typeof value) return {\n stringValue: FUNCTION_VALUE\n };\n if ('symbol' == typeof value) return {\n stringValue: String(value)\n };\n if ('object' == typeof value && null !== value) {\n if (state.ancestors.has(value)) return {\n stringValue: CIRCULAR_VALUE\n };\n if (depth >= MAX_JSON_SAFE_VALUE_DEPTH) return {\n stringValue: TRUNCATED_VALUE\n };\n if (value instanceof Date) {\n const time = value.getTime();\n const iso = Number.isFinite(time) ? value.toISOString() : String(value);\n return {\n stringValue: 'string' == typeof iso ? sanitizeString(iso) : String(iso)\n };\n }\n state.ancestors.add(value);\n try {\n try {\n const toJSON = value.toJSON;\n if ('function' == typeof toJSON) return encodeAnyValue(toJSON.call(value), logger, state, depth + 1);\n } catch {}\n if (isArray(value)) return {\n arrayValue: {\n values: encodeArrayValues(value, logger, state, depth + 1)\n }\n };\n return {\n kvlistValue: {\n values: encodeKeyValueList(value, logger, state, depth + 1)\n }\n };\n } finally{\n state.ancestors.delete(value);\n }\n }\n return {\n stringValue: sanitizeString(String(value))\n };\n}\nfunction encodeArrayValues(values, logger, state, depth) {\n const result = [];\n const itemCount = Math.min(values.length, MAX_JSON_SAFE_VALUE_ITEMS);\n let index = 0;\n for(; index < itemCount && state.remainingNodes > 0; index++)try {\n const element = index in values ? values[index] : void 0;\n if (isNullish(element)) continue;\n result.push(encodeAnyValue(element, logger, state, depth));\n } catch {\n result.push({\n stringValue: UNSERIALIZABLE_VALUE\n });\n }\n if (values.length > index) result.push({\n stringValue: TRUNCATED_VALUE\n });\n return result;\n}\nfunction encodeKeyValueList(attrs, logger, state, depth) {\n const result = [];\n for(const key in attrs)if (propertyIsEnumerable.call(attrs, key)) {\n if (result.length >= MAX_JSON_SAFE_VALUE_ITEMS || state.remainingNodes <= 0) {\n logger?.debug('Attributes truncated: the value exceeds the OTLP encoder budget');\n break;\n }\n try {\n const value = attrs[key];\n if (isNull(value) || isUndefined(value)) continue;\n result.push({\n key: sanitizeString(key),\n value: encodeAnyValue(value, logger, state, depth)\n });\n } catch {\n result.push({\n key: sanitizeString(key),\n value: {\n stringValue: UNSERIALIZABLE_VALUE\n }\n });\n }\n }\n return result;\n}\nfunction timestampToUnixNano() {\n return String(Date.now()) + '000000';\n}\nfunction encodeBody(body) {\n try {\n return sanitizeString(String(body));\n } catch {\n return UNSERIALIZABLE_VALUE;\n }\n}\nfunction buildOtlpLogRecord(options, sdkContext, logger) {\n const level = options.level || 'info';\n const { text: severityText, number: severityNumber } = OTLP_SEVERITY_MAP[level] || DEFAULT_OTLP_SEVERITY;\n const now = timestampToUnixNano();\n const autoAttributes = {};\n if (sdkContext.distinctId) autoAttributes.posthogDistinctId = sdkContext.distinctId;\n if (sdkContext.sessionId) autoAttributes.sessionId = sdkContext.sessionId;\n if (sdkContext.windowId) autoAttributes['window.id'] = sdkContext.windowId;\n if (!isNullish(sdkContext.sessionStartTimestamp)) autoAttributes.sessionStartTimestamp = String(sdkContext.sessionStartTimestamp);\n if (!isNullish(sdkContext.lastActivityTimestamp)) autoAttributes.lastActivityTimestamp = String(sdkContext.lastActivityTimestamp);\n if (sdkContext.currentUrl) autoAttributes['url.full'] = sdkContext.currentUrl;\n if (sdkContext.screenName) autoAttributes['screen.name'] = sdkContext.screenName;\n if (sdkContext.appState) autoAttributes['app.state'] = sdkContext.appState;\n if (sdkContext.activeFeatureFlags && sdkContext.activeFeatureFlags.length > 0) autoAttributes.feature_flags = sdkContext.activeFeatureFlags;\n const mergedAttributes = {\n ...autoAttributes\n };\n const userAttributes = options.attributes;\n if (userAttributes) {\n let keys = [];\n try {\n keys = Object.keys(userAttributes);\n } catch {\n keys = [];\n }\n for (const key of keys){\n let value;\n try {\n value = userAttributes[key];\n } catch {\n value = UNSERIALIZABLE_VALUE;\n }\n Object.defineProperty(mergedAttributes, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true\n });\n }\n }\n const record = {\n timeUnixNano: now,\n observedTimeUnixNano: now,\n severityNumber,\n severityText,\n body: {\n stringValue: encodeBody(options.body)\n },\n attributes: toOtlpKeyValueList(mergedAttributes, logger)\n };\n if (options.trace_id) record.traceId = options.trace_id;\n if (options.span_id) record.spanId = options.span_id;\n if (!isUndefined(options.trace_flags)) record.flags = options.trace_flags;\n return record;\n}\nfunction buildResourceAttributes(config, sdkName, sdkVersion) {\n return {\n ...config.resourceAttributes,\n 'service.name': config.serviceName || 'unknown_service',\n ...config.environment && {\n 'deployment.environment': config.environment\n },\n ...config.serviceVersion && {\n 'service.version': config.serviceVersion\n },\n 'telemetry.sdk.name': sdkName,\n 'telemetry.sdk.version': sdkVersion\n };\n}\nfunction buildOtlpLogsPayload(logRecords, resourceAttributes, scopeName, scopeVersion) {\n return {\n resourceLogs: [\n {\n resource: {\n attributes: toOtlpKeyValueList(resourceAttributes)\n },\n scopeLogs: [\n {\n scope: {\n name: scopeName,\n version: scopeVersion\n },\n logRecords\n }\n ]\n }\n ]\n };\n}\nexport { buildOtlpLogRecord, buildOtlpLogsPayload, buildResourceAttributes, getOtlpSeverityNumber, getOtlpSeverityText, toOtlpAnyValue, toOtlpKeyValueList };\n","export * from \"./error-properties-builder.mjs\";\nexport * from \"./parsers/index.mjs\";\nexport * from \"./coercers/index.mjs\";\nexport * from \"./utils.mjs\";\nexport * from \"./exception-steps.mjs\";\nexport * from \"./release.mjs\";\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext(hint);\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? ctx.skipFirstLines : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext(hint) {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser),\n skipFirstLines: hint.skipFirstLines ?? 1\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { isUndefined } from \"../../utils/index.mjs\";\nconst UNKNOWN_FUNCTION = '?';\nconst MASKED_URL_PREFIX = 'webkit-masked-url://';\nconst ANONYMOUS_FILENAME = '<anonymous>';\nfunction createFrame(platform, filename, func, lineno, colno) {\n const frame = {\n platform,\n filename,\n function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,\n in_app: !filename?.startsWith(MASKED_URL_PREFIX) && filename !== ANONYMOUS_FILENAME\n };\n if (!isUndefined(lineno)) frame.lineno = lineno;\n if (!isUndefined(colno)) frame.colno = colno;\n return frame;\n}\nexport { UNKNOWN_FUNCTION, createFrame };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst extractSafariExtensionDetails = (func, filename)=>{\n const isSafariExtension = -1 !== func.indexOf('safari-extension');\n const isSafariWebExtension = -1 !== func.indexOf('safari-web-extension');\n return isSafariExtension || isSafariWebExtension ? [\n -1 !== func.indexOf('@') ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`\n ] : [\n func,\n filename\n ];\n};\nexport { extractSafariExtensionDetails };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\nconst chromeRegex = /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nconst chromeStackLineParser = (line, platform)=>{\n const noFnParts = chromeRegexNoFnName.exec(line);\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);\n }\n const parts = chromeRegex.exec(line);\n if (parts) {\n const isEval = parts[2] && 0 === parts[2].indexOf('eval');\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n if (subMatch) {\n parts[2] = subMatch[1];\n parts[3] = subMatch[2];\n parts[4] = subMatch[3];\n }\n }\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);\n }\n};\nexport { chromeStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nimport { extractSafariExtensionDetails } from \"./safari.mjs\";\nconst geckoREgex = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst geckoStackLineParser = (line, platform)=>{\n const parts = geckoREgex.exec(line);\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n if (subMatch) {\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = '';\n }\n }\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);\n }\n};\nexport { geckoStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst winjsStackLineParser = (line, platform)=>{\n const parts = winjsRegex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;\n};\nexport { winjsStackLineParser };\n","import { UNKNOWN_FUNCTION, createFrame } from \"./base.mjs\";\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\nconst opera10StackLineParser = (line, platform)=>{\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;\n};\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\nconst opera11StackLineParser = (line, platform)=>{\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;\n};\nexport { opera10StackLineParser, opera11StackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst PROMISE_COMBINATOR = /^Promise\\.(?:all|any)$/;\nconst PROMISE_INDEX = /^index \\d+$/;\nconst PROMISE_FRAME_FILENAME = 'node:internal/promise';\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isBuiltin, isString } from \"../../utils/index.mjs\";\nclass DOMExceptionCoercer {\n match(err) {\n return this.isDOMException(err) || this.isDOMError(err);\n }\n coerce(err, ctx) {\n const hasStack = isString(err.stack);\n return {\n type: this.getType(err),\n value: this.getValue(err),\n stack: hasStack ? err.stack : void 0,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(candidate) {\n return this.isDOMError(candidate) ? 'DOMError' : 'DOMException';\n }\n getValue(err) {\n const name = err.name || (this.isDOMError(err) ? 'DOMError' : 'DOMException');\n const message = err.message ? `${name}: ${err.message}` : name;\n return message;\n }\n isDOMException(err) {\n return isBuiltin(err, 'DOMException');\n }\n isDOMError(err) {\n return isBuiltin(err, 'DOMError');\n }\n}\nexport { DOMExceptionCoercer };\n","import { isError } from \"../../utils/type-utils.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isError(err);\n }\n coerce(err, ctx) {\n const stack = this.getStack(err);\n const synthetic = void 0 === stack;\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: stack ?? ctx.syntheticException?.stack,\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","import { isErrorEvent, isString } from \"../../utils/index.mjs\";\nclass ErrorEventCoercer {\n constructor(){}\n match(err) {\n if (!isErrorEvent(err)) return false;\n const errorEvent = err;\n return void 0 != errorEvent.error || this._hasUsableMessage(errorEvent);\n }\n coerce(err, ctx) {\n if (void 0 != err.error) return ctx.apply(err.error);\n const exceptionLike = ctx.apply(err.message);\n return {\n ...exceptionLike,\n stack: this._buildLocationStack(err) ?? exceptionLike.stack,\n synthetic: true\n };\n }\n _hasUsableMessage(err) {\n return isString(err.message) && err.message.length > 0;\n }\n _buildLocationStack(err) {\n const location = err;\n const lineno = location.lineno ?? 0;\n const colno = location.colno ?? 0;\n if (!isString(location.filename) || 0 === location.filename.length) return;\n if (0 === lineno) return;\n return `Error\\n at ${location.filename}:${lineno}:${colno}`;\n }\n}\nexport { ErrorEventCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: this.getStack(candidate) ?? ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n if (isEvent(err)) return err.constructor.name;\n const name = 'name' in err ? err.name : void 0;\n return isString(name) && !isEmptyString(name) ? name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getStack(candidate) {\n try {\n if (isString(candidate.stacktrace) && candidate.stacktrace.length > 0) return candidate.stacktrace;\n return isString(candidate.stack) && candidate.stack.length > 0 ? candidate.stack : void 0;\n } catch {\n return;\n }\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","import { isBuiltin, isEvent, isPrimitive } from \"../../utils/index.mjs\";\nclass PromiseRejectionEventCoercer {\n match(err) {\n return isBuiltin(err, 'PromiseRejectionEvent') || this.isCustomEventWrappingRejection(err);\n }\n isCustomEventWrappingRejection(err) {\n if (!isEvent(err)) return false;\n try {\n const detail = err.detail;\n return null != detail && 'object' == typeof detail && 'reason' in detail;\n } catch {\n return false;\n }\n }\n coerce(err, ctx) {\n const reason = this.getUnhandledRejectionReason(err);\n if (isPrimitive(reason)) return {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n return ctx.apply(reason);\n }\n getUnhandledRejectionReason(error) {\n try {\n if ('reason' in error) return error.reason;\n if ('detail' in error && null != error.detail && 'object' == typeof error.detail && 'reason' in error.detail) return error.detail.reason;\n } catch {}\n return error;\n }\n}\nexport { PromiseRejectionEventCoercer };\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","import { isNumber, isObject, isString, safeJsonStringify } from \"../utils/index.mjs\";\nconst EXCEPTION_STEP_INTERNAL_FIELDS = {\n MESSAGE: '$message',\n TIMESTAMP: '$timestamp'\n};\nconst RESERVED_EXCEPTION_STEP_KEYS = new Set([\n EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE,\n EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP\n]);\nconst DEFAULT_EXCEPTION_STEPS_CONFIG = {\n enabled: true,\n max_bytes: 32768\n};\nfunction resolveExceptionStepsConfig(config) {\n if (!config) return {\n ...DEFAULT_EXCEPTION_STEPS_CONFIG\n };\n return {\n enabled: config.enabled ?? DEFAULT_EXCEPTION_STEPS_CONFIG.enabled,\n max_bytes: normalizePositiveInteger(config.max_bytes, DEFAULT_EXCEPTION_STEPS_CONFIG.max_bytes)\n };\n}\nfunction stripReservedExceptionStepFields(properties) {\n if (!properties) return {\n sanitizedProperties: {},\n droppedKeys: []\n };\n const droppedKeys = [];\n const sanitizedProperties = Object.keys(properties).reduce((acc, key)=>{\n if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {\n droppedKeys.push(key);\n return acc;\n }\n acc[key] = properties[key];\n return acc;\n }, {});\n return {\n sanitizedProperties,\n droppedKeys\n };\n}\nclass ExceptionStepsBuffer {\n constructor(config){\n this._entries = [];\n this._totalBytes = 0;\n this._config = resolveExceptionStepsConfig(config);\n }\n setConfig(config) {\n this._config = resolveExceptionStepsConfig(config);\n this._trimToMaxBytes();\n }\n add(step) {\n const serialized = normalizeAndSerializeStep(step);\n if (!serialized) return;\n const bytes = getUtf8ByteLength(serialized.json);\n if (bytes > this._config.max_bytes) return;\n this._entries.push({\n step: serialized.step,\n bytes\n });\n this._totalBytes += bytes;\n this._trimToMaxBytes();\n }\n getAttachable() {\n return this._entries.map((e)=>e.step);\n }\n clear() {\n this._entries = [];\n this._totalBytes = 0;\n }\n size() {\n return this._entries.length;\n }\n _trimToMaxBytes() {\n while(this._totalBytes > this._config.max_bytes && this._entries.length > 0){\n const evicted = this._entries.shift();\n if (evicted) this._totalBytes -= evicted.bytes;\n }\n }\n}\nfunction normalizePositiveInteger(input, fallback) {\n if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;\n const normalized = Math.floor(input);\n if (normalized < 0) return fallback;\n return normalized;\n}\nfunction normalizeAndSerializeStep(step) {\n let json;\n try {\n json = safeJsonStringify(step);\n } catch {\n return;\n }\n try {\n const parsed = JSON.parse(json);\n if (!isObject(parsed)) return;\n const parsedStep = parsed;\n const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];\n const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];\n if (!isString(message) || 0 === message.trim().length) return;\n if (!isString(timestamp) && !isNumber(timestamp)) return;\n return {\n step: parsedStep,\n json\n };\n } catch {\n return;\n }\n}\nfunction getUtf8ByteLength(value) {\n if ('undefined' != typeof TextEncoder) return new TextEncoder().encode(value).length;\n const encoded = encodeURIComponent(value);\n let byteLength = 0;\n for(let i = 0; i < encoded.length; i++)if ('%' === encoded[i]) {\n byteLength += 1;\n i += 2;\n } else byteLength += 1;\n return byteLength;\n}\nexport { DEFAULT_EXCEPTION_STEPS_CONFIG, EXCEPTION_STEP_INTERNAL_FIELDS, ExceptionStepsBuffer, getUtf8ByteLength, resolveExceptionStepsConfig, stripReservedExceptionStepFields };\n","function getInjectedReleaseId() {\n const injected = globalThis._posthogReleaseId;\n return 'string' == typeof injected && injected.length > 0 ? injected : void 0;\n}\nexport { getInjectedReleaseId };\n","import { ErrorTracking } from \"@posthog/core\";\nimport { constants } from \"node:fs\";\nimport { open as promises_open } from \"node:fs/promises\";\nimport { isAbsolute } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nconst LRU_FILE_CONTENTS_CACHE = new ErrorTracking.ReduceableCache(25);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new ErrorTracking.ReduceableCache(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\nconst MAX_CONTEXTLINES_FILE_SIZE = 10485760;\nasync function addSourceContext(frames, openSourceFile = promises_open, logger) {\n const filesToLines = {};\n let basePath;\n try {\n basePath = process.cwd();\n } catch {}\n for(let i = frames.length - 1; i >= 0; i--){\n const frame = frames[i];\n const filename = frame?.filename;\n if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;\n if (!isAbsolute(filename) && void 0 === basePath) continue;\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n filesToLines[filename].push(frame.lineno);\n }\n const files = Object.keys(filesToLines);\n if (0 == files.length) return frames;\n const readlinePromises = [];\n for (const file of files){\n const cacheKey = makeSourceCacheKey(file, basePath);\n if (void 0 === cacheKey) continue;\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(cacheKey)) continue;\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) continue;\n filesToLineRanges.sort((a, b)=>a - b);\n const ranges = makeLineReaderRanges(filesToLineRanges);\n if (ranges.every((r)=>rangeExistsInContentCache(cacheKey, r))) continue;\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, cacheKey, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache, cacheKey, openSourceFile, logger));\n }\n await Promise.all(readlinePromises).catch(()=>{});\n if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE, basePath);\n LRU_FILE_CONTENTS_CACHE.reduce();\n return frames;\n}\nasync function openRegularSourceFile(path, openSourceFile, logger) {\n let fileHandle;\n let isValid = false;\n try {\n fileHandle = await openSourceFile(path, constants.O_RDONLY | constants.O_NONBLOCK);\n const fileStat = await fileHandle.stat();\n if (!fileStat.isFile()) return;\n if (fileStat.size > MAX_CONTEXTLINES_FILE_SIZE) return void logger?.debug(`Skipping source context for oversized file ${path}: ${fileStat.size} bytes exceeds ${MAX_CONTEXTLINES_FILE_SIZE}`);\n isValid = true;\n return fileHandle;\n } catch {\n return;\n } finally{\n if (fileHandle && !isValid) await fileHandle.close().catch(()=>{});\n }\n}\nasync function getContextLinesFromFile(path, ranges, output, cacheKey, openSourceFile, logger) {\n const fileHandle = await openRegularSourceFile(path, openSourceFile, logger);\n if (void 0 === fileHandle) return void LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n const openedFileHandle = fileHandle;\n return new Promise((resolve)=>{\n let finished = false;\n function destroyStreamAndResolve(stream) {\n if (finished) return;\n finished = true;\n stream?.destroy();\n openedFileHandle.close().then(resolve, resolve);\n }\n let stream;\n try {\n stream = openedFileHandle.createReadStream({\n autoClose: false,\n start: 0,\n end: MAX_CONTEXTLINES_FILE_SIZE - 1\n });\n } catch {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n destroyStreamAndResolve();\n return;\n }\n let lineReaded;\n try {\n lineReaded = createInterface({\n input: stream\n });\n } catch {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n destroyStreamAndResolve(stream);\n return;\n }\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) return void destroyStreamAndResolve(stream);\n let rangeStart = range[0];\n let rangeEnd = range[1];\n function onStreamError() {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(cacheKey, 1);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve(stream);\n }\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', ()=>destroyStreamAndResolve(stream));\n lineReaded.on('line', (line)=>{\n lineNumber++;\n if (lineNumber < rangeStart) return;\n output[lineNumber] = snipLine(line, 0);\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\nfunction addSourceContextToFrames(frames, cache, basePath) {\n for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {\n const cacheKey = makeSourceCacheKey(frame.filename, basePath);\n const contents = void 0 === cacheKey ? void 0 : cache.get(cacheKey);\n if (void 0 === contents) continue;\n addContextToFrame(frame.lineno, frame, contents);\n }\n}\nfunction addContextToFrame(lineno, frame, contents) {\n if (void 0 === frame.lineno || void 0 === contents) return;\n frame.pre_context = [];\n for(let i = makeRangeStart(lineno); i < lineno; i++){\n const line = contents[i];\n if (void 0 === line) return void clearLineContext(frame);\n frame.pre_context.push(line);\n }\n if (void 0 === contents[lineno]) return void clearLineContext(frame);\n frame.context_line = contents[lineno];\n const end = makeRangeEnd(lineno);\n frame.post_context = [];\n for(let i = lineno + 1; i <= end; i++){\n const line = contents[i];\n if (void 0 === line) break;\n frame.post_context.push(line);\n }\n}\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\nfunction shouldSkipContextLinesForFile(path) {\n return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');\n}\nfunction shouldSkipContextLinesForFrame(frame) {\n if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\nfunction makeSourceCacheKey(path, basePath) {\n if (isAbsolute(path)) return JSON.stringify([\n null,\n path\n ]);\n return void 0 === basePath ? void 0 : JSON.stringify([\n basePath,\n path\n ]);\n}\nfunction rangeExistsInContentCache(cacheKey, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(cacheKey);\n if (void 0 === contents) return false;\n for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;\n return true;\n}\nfunction makeLineReaderRanges(lines) {\n if (!lines.length) return [];\n let i = 0;\n const line = lines[0];\n if ('number' != typeof line) return [];\n let current = makeContextRange(line);\n const out = [];\n while(true){\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n const next = lines[i + 1];\n if ('number' != typeof next) break;\n if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;\n else {\n out.push(current);\n current = makeContextRange(next);\n }\n i++;\n }\n return out;\n}\nfunction makeContextRange(line) {\n return [\n makeRangeStart(line),\n makeRangeEnd(line)\n ];\n}\nfunction makeRangeStart(line) {\n return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);\n}\nfunction makeRangeEnd(line) {\n return line + DEFAULT_LINES_OF_CONTEXT;\n}\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n if (void 0 === value) {\n map.set(key, contents);\n return contents;\n }\n return value;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) return newLine;\n if (colno > lineLength) colno = lineLength;\n let start = Math.max(colno - 60, 0);\n if (start < 5) start = 0;\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) end = lineLength;\n if (end === lineLength) start = Math.max(end - 140, 0);\n newLine = newLine.slice(start, end);\n if (start > 0) newLine = `...${newLine}`;\n if (end < lineLength) newLine += '...';\n return newLine;\n}\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_FILE_SIZE, MAX_CONTEXTLINES_LINENO, addSourceContext };\n","const UNHANDLED_REJECTION_OPTION_NAMES = [\n '--unhandled-rejections',\n '--unhandled_rejections'\n];\nconst UNHANDLED_REJECTION_MODES = new Set([\n 'throw',\n 'strict',\n 'warn',\n 'warn-with-error-code',\n 'none'\n]);\nconst STARTUP_EXEC_ARGV = [\n ...globalThis.process?.execArgv ?? []\n];\nconst STARTUP_NODE_OPTIONS = globalThis.process?.env?.NODE_OPTIONS;\nfunction splitNodeOptions(nodeOptions) {\n const args = [];\n let current = '';\n let isInString = false;\n for(let index = 0; index < nodeOptions.length; index++){\n const character = nodeOptions[index];\n if ('\\\\' === character && isInString && index + 1 < nodeOptions.length) current += nodeOptions[++index];\n else if (' ' !== character || isInString) if ('\"' === character) isInString = !isInString;\n else current += character;\n else if (current) {\n args.push(current);\n current = '';\n }\n }\n if (current) args.push(current);\n return args;\n}\nfunction findUnhandledRejectionMode(args) {\n let mode;\n for(let index = 0; index < args.length; index++){\n const argument = args[index];\n const optionName = UNHANDLED_REJECTION_OPTION_NAMES.find((name)=>argument === name || argument.startsWith(`${name}=`));\n if (!optionName) continue;\n const value = argument === optionName ? args[++index] : argument.slice(optionName.length + 1);\n if (UNHANDLED_REJECTION_MODES.has(value)) mode = value;\n }\n return mode;\n}\nfunction getUnhandledRejectionMode(execArgv = STARTUP_EXEC_ARGV, nodeOptions = STARTUP_NODE_OPTIONS) {\n return findUnhandledRejectionMode(execArgv) ?? findUnhandledRejectionMode(splitNodeOptions(nodeOptions ?? '')) ?? 'throw';\n}\nconst STARTUP_UNHANDLED_REJECTION_MODE = getUnhandledRejectionMode();\nfunction captureUncaughtException(captureFn, error, origin) {\n captureFn(error, {\n mechanism: {\n type: 'unhandledRejection' === origin ? 'onunhandledrejection' : 'onuncaughtexception',\n handled: false\n }\n });\n}\nfunction makeUncaughtExceptionHandler(captureFn, onFatalFn) {\n let calledFatalError = false;\n return Object.assign((error, origin)=>{\n const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;\n captureUncaughtException(captureFn, error, origin);\n if (!calledFatalError && 0 === userProvidedListenersCount) {\n calledFatalError = true;\n onFatalFn(error);\n }\n }, {\n _posthogErrorHandler: true\n });\n}\nfunction addUncaughtExceptionListener(captureFn, onFatalFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {\n const process = globalThis.process;\n if (!process) return;\n if ('strict' === mode) return void process.on('uncaughtExceptionMonitor', (error, origin)=>captureUncaughtException(captureFn, error, origin));\n process.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));\n}\nfunction addUnhandledRejectionListener(captureFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {\n const process = globalThis.process;\n if (!process || 'throw' === mode || 'strict' === mode || 'warn-with-error-code' === mode) return;\n process.on('unhandledRejection', (reason)=>{\n captureFn(reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n });\n });\n}\nexport { addUncaughtExceptionListener, addUnhandledRejectionListener, getUnhandledRejectionMode };\n","import { safeJsonStringify } from \"@posthog/core\";\nimport { AI_BATCH_TARGET_BYTES, AI_MAX_EVENT_BYTES } from \"./routing.mjs\";\nconst encoder = new TextEncoder();\nfunction eventByteSize(message) {\n return encoder.encode(safeJsonStringify(message)).length;\n}\nfunction partitionAiBatch(messages, maxEventBytes = AI_MAX_EVENT_BYTES, targetBatchBytes = AI_BATCH_TARGET_BYTES) {\n const batches = [];\n const dropped = [];\n let current = [];\n let currentBytes = 0;\n for (const message of messages){\n if (void 0 === message) continue;\n const bytes = eventByteSize(message);\n if (bytes > maxEventBytes) {\n dropped.push({\n event: 'string' == typeof message.event ? message.event : 'unknown',\n bytes\n });\n continue;\n }\n if (current.length > 0 && currentBytes + bytes > targetBatchBytes) {\n batches.push(current);\n current = [];\n currentBytes = 0;\n }\n current.push(message);\n currentBytes += bytes;\n }\n if (current.length > 0) batches.push(current);\n return {\n batches,\n dropped\n };\n}\nexport { eventByteSize, partitionAiBatch };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nclass PostHogContext {\n constructor(){\n this.storage = new AsyncLocalStorage();\n }\n get() {\n return this.storage.getStore();\n }\n run(context, fn, options) {\n return this.storage.run(this.resolve(context, options), fn);\n }\n enter(context, options) {\n this.storage.enterWith(this.resolve(context, options));\n }\n resolve(context, options) {\n if (options?.fresh === true) return context;\n const current = this.get() || {};\n return {\n distinctId: context.distinctId ?? current.distinctId,\n sessionId: context.sessionId ?? current.sessionId,\n properties: {\n ...current.properties || {},\n ...context.properties || {}\n }\n };\n }\n}\nexport { PostHogContext };\n","import { gzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nconst gzipAsync = promisify(gzip);\nasync function gzipCompress(input, isDebug = true) {\n try {\n const compressed = await gzipAsync(input);\n return new Uint8Array(compressed);\n } catch (error) {\n if (isDebug) console.error('Failed to gzip compress data', error);\n return null;\n }\n}\nexport { gzipCompress };\n","import { ErrorTracking } from \"@posthog/core\";\nconst NAME = 'posthog-node';\nfunction createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [\n 'error'\n], sendExceptionsToPostHog = true } = {}) {\n return (event)=>{\n const shouldProcessLevel = '*' === severityAllowList || severityAllowList.includes(event.level);\n if (!shouldProcessLevel) return event;\n if (!event.tags) event.tags = {};\n const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];\n if (void 0 === userId) return event;\n const uiHost = _posthog.options.host ?? 'https://us.i.posthog.com';\n const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();\n event.tags['PostHog Person URL'] = personUrl;\n const exceptions = event.exception?.values || [];\n const exceptionList = exceptions.map((exception)=>({\n ...exception,\n stacktrace: exception.stacktrace ? {\n ...exception.stacktrace,\n type: 'raw',\n frames: (exception.stacktrace.frames || []).map((frame)=>({\n ...frame,\n platform: \"node:javascript\"\n }))\n } : void 0\n }));\n const properties = {\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_level: event.level,\n $exception_list: exceptionList,\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags\n };\n const injectedReleaseId = ErrorTracking.getInjectedReleaseId();\n if (injectedReleaseId) properties.$release_id = injectedReleaseId;\n if (organization && projectId) properties['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n if (sendExceptionsToPostHog) _posthog.capture({\n event: '$exception',\n distinctId: userId,\n properties\n });\n return event;\n };\n}\nfunction sentryIntegration(_posthog, options) {\n const processor = createEventProcessor(_posthog, options);\n return {\n name: NAME,\n processEvent (event) {\n return processor(event);\n }\n };\n}\nclass PostHogSentryIntegration {\n static #_ = this.POSTHOG_ID_TAG = 'posthog_distinct_id';\n constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog){\n this.name = NAME;\n this.name = NAME;\n this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {\n const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;\n addGlobalEventProcessor(createEventProcessor(_posthog, {\n organization,\n projectId,\n prefix,\n severityAllowList,\n sendExceptionsToPostHog: sendExceptionsToPostHog ?? true\n }));\n };\n }\n}\nexport { PostHogSentryIntegration, createEventProcessor, sentryIntegration };\n","import { isCompatibleServerType, isHighLevelServer } from \"./extensions/compatibility.mjs\";\nimport { McpEventSink } from \"./extensions/sink.mjs\";\nimport { MCPAnalyticsEventType } from \"./extensions/event-types.mjs\";\nimport { IdentityCache, getServerTrackingData, setServerTrackingData } from \"./extensions/internal.mjs\";\nimport { createLogger, setLogger } from \"./extensions/logger.mjs\";\nimport { captureEvent } from \"./extensions/capture.mjs\";\nimport { applyMcpLibIdentity } from \"./extensions/lib-identity.mjs\";\nimport { deriveSessionIdFromMCPSession, getSessionInfo, newSessionId } from \"./extensions/session.mjs\";\nimport { instrumentLowLevelServer } from \"./extensions/instrument-lowlevel.mjs\";\nimport { instrumentHighLevelServer } from \"./extensions/instrument-highlevel.mjs\";\nimport { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId } from \"./extensions/session-token.mjs\";\nimport { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from \"./extensions/constants.mjs\";\nimport { getRequestHeaders } from \"./extensions/request-headers.mjs\";\nimport { PostHogMCP } from \"./extensions/posthog-mcp.mjs\";\nimport { getMoreToolsResult } from \"./extensions/tools.mjs\";\nimport { PostHog } from \"posthog-node\";\nfunction instrument(server, posthog, options = {}) {\n const logger = createLogger(options?.logger);\n try {\n if (!posthog) logger('Warning: No PostHog client passed to instrument(). Events will not be sent anywhere.');\n const validatedServer = isCompatibleServerType(server, logger);\n const lowLevelServer = getLowLevelServer(validatedServer);\n const existingData = getServerTrackingData(lowLevelServer);\n if (existingData) {\n existingData.logger('instrument() - Server already instrumented, skipping initialization');\n return createAnalyticsHandle(lowLevelServer);\n }\n if (posthog) applyMcpLibIdentity(posthog);\n const sink = posthog ? new McpEventSink(posthog, logger) : void 0;\n const mcpAnalyticsData = buildTrackingData(lowLevelServer, options, sink, logger);\n setServerTrackingData(lowLevelServer, mcpAnalyticsData);\n setupTrackedServer(validatedServer, lowLevelServer, logger);\n return createAnalyticsHandle(lowLevelServer);\n } catch (error) {\n logger(`Warning: Failed to instrument server - ${error}`);\n return {\n capture: async ()=>void 0\n };\n }\n}\nfunction instrumentMutator(posthog, options) {\n return (server)=>{\n instrument(server, posthog, options);\n return server;\n };\n}\nfunction createAnalyticsHandle(lowLevelServer) {\n return {\n capture: (eventData)=>captureCustomEvent(lowLevelServer, eventData)\n };\n}\nfunction getLowLevelServer(server) {\n return isHighLevelServer(server) ? server.server : server;\n}\nconst DEFAULT_OPTIONS = {\n reportMissing: false,\n enableConversationId: false\n};\nfunction buildTrackingData(lowLevelServer, options, sink, logger) {\n return {\n sink,\n logger,\n sessionId: newSessionId(),\n lastActivity: new Date(),\n identifiedSessions: new IdentityCache(),\n toolAnalyticsParameterOwnership: new Map(),\n toolCategories: new Map(),\n toolDescriptions: new Map(),\n sessionInfo: getSessionInfo(lowLevelServer, void 0),\n options: {\n ...DEFAULT_OPTIONS,\n ...options\n },\n sessionSource: 'generated'\n };\n}\nfunction setupTrackedServer(validatedServer, lowLevelServer, logger) {\n if (isHighLevelServer(validatedServer)) {\n const highLevelServer = validatedServer;\n instrumentHighLevelServer(highLevelServer, logger);\n return;\n }\n try {\n instrumentLowLevelServer(lowLevelServer, logger);\n } catch (error) {\n logger(`Warning: Failed to setup tool call instrumentation - ${error}`);\n }\n}\nasync function captureCustomEvent(lowLevelServer, eventData) {\n if (!eventData || 'string' != typeof eventData.event || 0 === eventData.event.length) throw new Error('`capture` requires an `event` name, e.g. analytics.capture({ event: \"feedback_submitted\" })');\n const trackingData = getServerTrackingData(lowLevelServer);\n if (!trackingData) return;\n const event = {\n sessionId: trackingData.sessionId,\n eventType: MCPAnalyticsEventType.custom,\n eventName: eventData.event,\n timestamp: new Date(),\n properties: eventData.properties\n };\n await captureEvent(lowLevelServer, event, trackingData.logger);\n trackingData.logger(`Captured event \"${eventData.event}\" for session ${trackingData.sessionId}`);\n}\nexport { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, getRequestHeaders, instrument, instrumentMutator, newSessionId, setLogger };\n","import { instrument, PostHogMCPAnalyticsProperty, type MCPAnalyticsOptions } from \"@posthog/mcp\";\n\n/** The PostHog client shape `instrument()` itself expects. */\ntype McpAnalyticsClient = Parameters<typeof instrument>[1];\n\n/**\n * #3432 phase 2: the installed-client seam for the in-process lane, mirroring\n * `telemetry.ts`'s `customReporter`. The HTTP lane (apps/api's mcp/handler.ts)\n * never uses this - it passes its own request-scoped PostHog client + mcpAuth\n * straight into `instrumentServer` below. This seam exists so an in-process\n * consumer (packages/mcp-client) can call `instrumentServer` without every\n * caller having to thread its own PostHog client through: the host installs\n * one client once at boot (apps/api/src/index.ts's `setMcpAnalyticsClient`),\n * and every in-process tool call picks it up via `getMcpAnalyticsClient()`.\n */\nlet installedClient: McpAnalyticsClient | null = null;\n\nexport function setMcpAnalyticsClient(client: McpAnalyticsClient | null): void {\n installedClient = client;\n}\n\nexport function getMcpAnalyticsClient(): McpAnalyticsClient | null {\n return installedClient;\n}\n\n/**\n * #3408: options for the `@posthog/mcp` `instrument()` wrap around the\n * per-request server. Additive alongside (never a replacement for) the\n * hand-rolled `mcp_request`/`$exception` capture in apps/api's mcp/handler.ts -\n * see the mcp-miner skill for why both stay live during the parity window.\n * Pulled out so the options object is unit-testable without standing up the\n * raw-HTTP handler.\n */\nexport interface InstrumentServerOptions {\n /**\n * Inject PostHog's `get_more_tools` virtual tool (default true). Off for\n * the Claude Connectors Directory surface (#3681): the reviewer's tool\n * scan sees every listed tool, and a third-party virtual tool whose\n * description nudges the model to call it - and whose only input is a\n * free-text description of the user's goal - reads as both a\n * prompt-injection pattern and conversation-data collection under the\n * directory policy. The bare endpoint keeps it for the mcp-miner sweep.\n */\n reportMissing?: boolean;\n}\n\nexport function buildInstrumentOptions(\n mcpAuth: { user_id?: string } | null,\n opts: InstrumentServerOptions = {}\n): MCPAnalyticsOptions {\n return {\n context: {\n description: \"Describe the user's underlying goal in one sentence - not the tool you're calling.\",\n },\n intentFallback: (req) => (req.params?.name ? `Invoking ${req.params.name}` : null),\n // Static identity: a fresh server + instrument() call happens once per\n // stateless request, so mcpAuth is already resolved by call time. Matches\n // the mcp_request/$exception distinctId below so all three lines join.\n identify: { distinctId: mcpAuth?.user_id || \"anonymous\" },\n // PRIVACY PASS (non-negotiable, #797/#3200): tool params/responses carry\n // form content, share ids, and workspace data - ship intent + tool name +\n // timing + error flag ONLY, never the payloads.\n beforeSend: (event) => {\n delete event.properties[PostHogMCPAnalyticsProperty.Parameters];\n delete event.properties[PostHogMCPAnalyticsProperty.Response];\n return event;\n },\n // We already emit `$exception` with `$exception_source: \"mcp-server\"` via\n // onToolError below, which the miner's error query depends on - letting\n // the wrapper also emit `$exception` would double-count and lose that\n // source tag.\n enableExceptionAutocapture: false,\n // Enables the `get_more_tools` virtual tool so agents can report an ask no\n // tool covers. Injected by the wrapper only - never touches\n // packages/mcp-server's own catalog, so it does not trip the MCP\n // parity/catalog tests.\n reportMissing: opts.reportMissing ?? true,\n };\n}\n\n/**\n * Wraps the per-request/per-connection server with PostHog MCP analytics\n * (#3408, extended in-process #3432), additively - `mcp_request`/`$exception`\n * in apps/api's mcp/handler.ts are untouched. Never throws into the request\n * path: no-ops when `posthogClient` is unset (dev, or no client installed via\n * `setMcpAnalyticsClient`) and swallows any wrapper failure so a PostHog-side\n * bug can never break a tool call.\n */\nexport function instrumentServer(\n server: unknown,\n posthogClient: McpAnalyticsClient | null,\n mcpAuth: { user_id?: string } | null,\n opts: InstrumentServerOptions = {}\n): void {\n if (!posthogClient) return;\n try {\n instrument(server, posthogClient, buildInstrumentOptions(mcpAuth, opts));\n } catch (err) {\n console.error(\"[mcp] Failed to instrument server for PostHog MCP analytics:\", err);\n }\n}\n"],"mappings":"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","names":["version","depth","line","createLogger","sanitizeString","isRecord","captureEvent","version","BASE64URL_PATTERN","version","getContextArgument","version","server","getContextArgument","handler","handleToolCallRequest","getContextArgument","MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES","MINIMAL_FLAG_CALLED_EVENT_PROPERTIES","dateGetTime","dateToISOString","safeJsonStringify","nativeIsArray","ObjProto","type_utils_hasOwnProperty","type_utils_toString","isArray","isObject","isArray","isUndefined","isString","type_utils_toString","isEmptyString","isNumber","type_utils_toString","isPrimitive","isBuiltin","isError","isInstanceOf","isErrorEvent","isEvent","isInstanceOf","MOBILE","IOS","ANDROID","TABLET","ANDROID_TABLET","APPLE","APPLE_WATCH","SAFARI","BLACKBERRY","SAMSUNG","SAMSUNG_BROWSER","SAMSUNG_INTERNET","CHROME","CHROME_OS","CHROME_IOS","IOS","INTERNET_EXPLORER","INTERNET_EXPLORER_MOBILE","MOBILE","OPERA","OPERA_MINI","EDGE","MICROSOFT_EDGE","FIREFOX","FIREFOX_IOS","NINTENDO","PLAYSTATION","XBOX","ANDROID_MOBILE","ANDROID","MOBILE_SAFARI","WINDOWS","WINDOWS_PHONE","GENERIC","GENERIC_MOBILE","MOBILE","GENERIC_TABLET","TABLET","KONQUEROR","OCULUS_BROWSER","VIVALDI","YANDEX","WHALE","DUCKDUCKGO","PALE_MOON","WATERFOX","BRAVE","GOOGLE_SEARCH_APP","BROWSER_VERSION_REGEX_SUFFIX","DEFAULT_BROWSER_VERSION_REGEX","XBOX_REGEX","XBOX","PLAYSTATION_REGEX","PLAYSTATION","NINTENDO_REGEX","NINTENDO","BLACKBERRY_REGEX","BLACKBERRY","windowsVersionMap","versionRegexes","INTERNET_EXPLORER_MOBILE","BROWSER_VERSION_REGEX_SUFFIX","MICROSOFT_EDGE","EDGE","CHROME","CHROME_IOS","SAFARI","DEFAULT_BROWSER_VERSION_REGEX","MOBILE_SAFARI","OPERA","FIREFOX","FIREFOX_IOS","KONQUEROR","BLACKBERRY","ANDROID_MOBILE","SAMSUNG_INTERNET","SAMSUNG_BROWSER","OCULUS_BROWSER","VIVALDI","YANDEX","WHALE","BRAVE","DUCKDUCKGO","PALE_MOON","WATERFOX","GOOGLE_SEARCH_APP","INTERNET_EXPLORER","osMatchers","XBOX","NINTENDO","PLAYSTATION","BLACKBERRY_REGEX","BLACKBERRY","WINDOWS","WINDOWS_PHONE","MOBILE","version","windowsVersionMap","IOS","isUndefined","ANDROID","CHROME_OS","OTLP_SEVERITY_MAP","DEFAULT_OTLP_SEVERITY","error_tracking_exports","DEFAULT_EXCEPTION_STEPS_CONFIG","DOMExceptionCoercer","EXCEPTION_STEP_INTERNAL_FIELDS","ErrorCoercer","ErrorEventCoercer","ErrorPropertiesBuilder","EventCoercer","ExceptionStepsBuffer","ObjectCoercer","PrimitiveCoercer","PromiseRejectionEventCoercer","ReduceableCache","StringCoercer","chromeStackLineParser","createDefaultStackParser","createStackParser","geckoStackLineParser","getInjectedReleaseId","getUtf8ByteLength","nodeStackLineParser","opera10StackLineParser","opera11StackLineParser","resolveExceptionStepsConfig","reverseAndStripFrames","stripReservedExceptionStepFields","winjsStackLineParser","parsedStackResults","lastKeysCount","cachedFilenameChunkIds","getFilenameToChunkIdMap","MAX_CAUSE_RECURSION","ErrorPropertiesBuilder","isArray","getFilenameToChunkIdMap","depth","UNKNOWN_FUNCTION","MASKED_URL_PREFIX","ANONYMOUS_FILENAME","createFrame","isUndefined","extractSafariExtensionDetails","UNKNOWN_FUNCTION","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","chromeStackLineParser","line","createFrame","UNKNOWN_FUNCTION","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","geckoStackLineParser","UNKNOWN_FUNCTION","extractSafariExtensionDetails","createFrame","winjsRegex","winjsStackLineParser","createFrame","UNKNOWN_FUNCTION","opera10Regex","opera10StackLineParser","createFrame","UNKNOWN_FUNCTION","opera11Regex","opera11StackLineParser","FILENAME_MATCH","FULL_MATCH","PROMISE_COMBINATOR","PROMISE_INDEX","PROMISE_FRAME_FILENAME","nodeStackLineParser","UNKNOWN_FUNCTION","_parseIntOrUndefined","filenameIsInApp","WEBPACK_ERROR_REGEXP","STACKTRACE_FRAME_LIMIT","reverseAndStripFrames","getLastStackFrame","UNKNOWN_FUNCTION","createDefaultStackParser","createStackParser","chromeStackLineParser","geckoStackLineParser","DOMExceptionCoercer","isString","isBuiltin","ErrorCoercer","isError","ErrorEventCoercer","isErrorEvent","isString","ERROR_TYPES_PATTERN","StringCoercer","severityLevels","extractExceptionKeysForMessage","ObjectCoercer","isEvent","isString","isEmptyString","extractExceptionKeysForMessage","severityLevels","isError","EventCoercer","isEvent","extractExceptionKeysForMessage","PrimitiveCoercer","isPrimitive","PromiseRejectionEventCoercer","isBuiltin","isEvent","isPrimitive","ReduceableCache","EXCEPTION_STEP_INTERNAL_FIELDS","RESERVED_EXCEPTION_STEP_KEYS","DEFAULT_EXCEPTION_STEPS_CONFIG","resolveExceptionStepsConfig","normalizePositiveInteger","stripReservedExceptionStepFields","ExceptionStepsBuffer","normalizeAndSerializeStep","getUtf8ByteLength","isNumber","safeJsonStringify","isObject","isString","getInjectedReleaseId","error_tracking_exports","error_tracking_exports","createLogger"]}