@posthog/mcp 0.10.3 → 0.10.5

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.
Files changed (76) hide show
  1. package/dist/extensions/analytics-parameters.d.ts +5 -0
  2. package/dist/extensions/analytics-parameters.d.ts.map +1 -1
  3. package/dist/extensions/analytics-parameters.js +57 -3
  4. package/dist/extensions/analytics-parameters.mjs +47 -2
  5. package/dist/extensions/capture.d.ts +2 -1
  6. package/dist/extensions/capture.d.ts.map +1 -1
  7. package/dist/extensions/capture.js +2 -3
  8. package/dist/extensions/capture.mjs +2 -3
  9. package/dist/extensions/compatibility.d.ts +3 -2
  10. package/dist/extensions/compatibility.d.ts.map +1 -1
  11. package/dist/extensions/compatibility.js +19 -20
  12. package/dist/extensions/compatibility.mjs +15 -16
  13. package/dist/extensions/context-parameters.d.ts +4 -3
  14. package/dist/extensions/context-parameters.d.ts.map +1 -1
  15. package/dist/extensions/context-parameters.js +4 -5
  16. package/dist/extensions/context-parameters.mjs +4 -4
  17. package/dist/extensions/conversation-id.d.ts +3 -8
  18. package/dist/extensions/conversation-id.d.ts.map +1 -1
  19. package/dist/extensions/conversation-id.js +6 -22
  20. package/dist/extensions/conversation-id.mjs +5 -17
  21. package/dist/extensions/instrument-highlevel.d.ts +2 -1
  22. package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
  23. package/dist/extensions/instrument-highlevel.js +31 -51
  24. package/dist/extensions/instrument-highlevel.mjs +30 -50
  25. package/dist/extensions/instrument-lowlevel.d.ts +2 -1
  26. package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
  27. package/dist/extensions/instrument-lowlevel.js +8 -9
  28. package/dist/extensions/instrument-lowlevel.mjs +8 -9
  29. package/dist/extensions/instrumentation.d.ts +7 -8
  30. package/dist/extensions/instrumentation.d.ts.map +1 -1
  31. package/dist/extensions/instrumentation.js +57 -32
  32. package/dist/extensions/instrumentation.mjs +58 -33
  33. package/dist/extensions/intent.d.ts +1 -1
  34. package/dist/extensions/intent.d.ts.map +1 -1
  35. package/dist/extensions/intent.js +3 -4
  36. package/dist/extensions/intent.mjs +3 -4
  37. package/dist/extensions/internal.d.ts.map +1 -1
  38. package/dist/extensions/internal.js +5 -6
  39. package/dist/extensions/internal.mjs +5 -6
  40. package/dist/extensions/logger.d.ts +12 -4
  41. package/dist/extensions/logger.d.ts.map +1 -1
  42. package/dist/extensions/logger.js +12 -3
  43. package/dist/extensions/logger.mjs +10 -4
  44. package/dist/extensions/sink.d.ts +4 -2
  45. package/dist/extensions/sink.d.ts.map +1 -1
  46. package/dist/extensions/sink.js +11 -10
  47. package/dist/extensions/sink.mjs +11 -10
  48. package/dist/extensions/tools.d.ts +2 -1
  49. package/dist/extensions/tools.d.ts.map +1 -1
  50. package/dist/extensions/tools.js +2 -2
  51. package/dist/extensions/tools.mjs +2 -2
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +19 -16
  54. package/dist/index.mjs +20 -17
  55. package/dist/types.d.ts +7 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/version.d.ts +1 -1
  58. package/dist/version.js +1 -1
  59. package/dist/version.mjs +1 -1
  60. package/package.json +4 -4
  61. package/src/extensions/analytics-parameters.ts +67 -1
  62. package/src/extensions/capture.ts +3 -3
  63. package/src/extensions/compatibility.ts +16 -16
  64. package/src/extensions/context-parameters.ts +9 -7
  65. package/src/extensions/conversation-id.ts +12 -25
  66. package/src/extensions/instrument-highlevel.ts +52 -75
  67. package/src/extensions/instrument-lowlevel.ts +14 -10
  68. package/src/extensions/instrumentation.ts +101 -36
  69. package/src/extensions/intent.ts +8 -3
  70. package/src/extensions/internal.ts +7 -6
  71. package/src/extensions/logger.ts +22 -7
  72. package/src/extensions/sink.ts +17 -12
  73. package/src/extensions/tools.ts +3 -3
  74. package/src/index.ts +22 -19
  75. package/src/types.ts +8 -0
  76. package/src/version.ts +1 -1
@@ -4,14 +4,14 @@ import { DEFAULT_CONVERSATION_ID_DESCRIPTION } from "./constants.mjs";
4
4
  import { log } from "./logger.mjs";
5
5
  import { GET_MORE_TOOLS_NAME } from "./tools.mjs";
6
6
  const CONVERSATION_ID_PARAM_NAME = 'conversation_id';
7
- function addConversationIdToTool(tool) {
7
+ function addConversationIdToTool(tool, logger = log) {
8
8
  const modifiedTool = {
9
9
  ...tool
10
10
  };
11
11
  const toolName = tool.name || 'unknown';
12
12
  const schema = modifiedTool.inputSchema;
13
13
  if (!canInjectAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME)) {
14
- hasAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME) ? log(`WARN: Tool "${toolName}" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.`) : log(`WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf). Skipping conversation_id injection.`);
14
+ 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.`);
15
15
  return modifiedTool;
16
16
  }
17
17
  if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
@@ -29,10 +29,10 @@ function addConversationIdToTool(tool) {
29
29
  };
30
30
  return modifiedTool;
31
31
  }
32
- function addConversationIdToTools(tools, missingCapabilityToolName = GET_MORE_TOOLS_NAME) {
32
+ function addConversationIdToTools(tools, missingCapabilityToolName = GET_MORE_TOOLS_NAME, logger = log) {
33
33
  return tools.map((tool)=>{
34
34
  if (tool.name === missingCapabilityToolName) return tool;
35
- return addConversationIdToTool(tool);
35
+ return addConversationIdToTool(tool, logger);
36
36
  });
37
37
  }
38
38
  function resolveConversationId(enabled, args, toolName, missingCapabilityToolName = GET_MORE_TOOLS_NAME) {
@@ -63,18 +63,6 @@ function extractConversationId(args) {
63
63
  const trimmed = value.trim();
64
64
  return trimmed.length > 0 ? trimmed : void 0;
65
65
  }
66
- function cloneRequestWithoutConversationId(request) {
67
- if (!request.params || 'object' != typeof request.params) return request;
68
- const args = request.params.arguments;
69
- if (!(args && 'object' == typeof args)) return request;
70
- return {
71
- ...request,
72
- params: {
73
- ...request.params,
74
- arguments: stripConversationId(args)
75
- }
76
- };
77
- }
78
66
  function stripConversationId(args) {
79
67
  if (!args || 'object' != typeof args || !(CONVERSATION_ID_PARAM_NAME in args)) return args;
80
68
  const { [CONVERSATION_ID_PARAM_NAME]: _omit, ...rest } = args;
@@ -97,4 +85,4 @@ function injectConversationIdPromptBack(result, conversationId) {
97
85
  ]
98
86
  };
99
87
  }
100
- export { CONVERSATION_ID_PARAM_NAME, addConversationIdToTool, addConversationIdToTools, buildConversationIdPromptBack, canInjectConversationIdPromptBack, cloneRequestWithoutConversationId, extractConversationId, injectConversationIdPromptBack, resolveConversationId, stripConversationId };
88
+ export { CONVERSATION_ID_PARAM_NAME, addConversationIdToTool, addConversationIdToTools, buildConversationIdPromptBack, canInjectConversationIdPromptBack, extractConversationId, injectConversationIdPromptBack, resolveConversationId, stripConversationId };
@@ -1,3 +1,4 @@
1
1
  import type { HighLevelMCPServerLike } from '../types';
2
- export declare function instrumentHighLevelServer(server: HighLevelMCPServerLike): void;
2
+ import type { LoggerFn } from './logger';
3
+ export declare function instrumentHighLevelServer(server: HighLevelMCPServerLike, logger: LoggerFn): void;
3
4
  //# sourceMappingURL=instrument-highlevel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-highlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-highlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,sBAAsB,EAIvB,MAAM,UAAU,CAAA;AAsSjB,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAwB9E"}
1
+ {"version":3,"file":"instrument-highlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-highlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,sBAAsB,EAIvB,MAAM,UAAU,CAAA;AASjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAmQxC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CA2BhG"}
@@ -27,11 +27,9 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  instrumentHighLevelServer: ()=>instrumentHighLevelServer
28
28
  });
29
29
  const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
30
- const external_conversation_id_js_namespaceObject = require("./conversation-id.js");
31
30
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
32
31
  const external_event_types_js_namespaceObject = require("./event-types.js");
33
32
  const external_internal_js_namespaceObject = require("./internal.js");
34
- const external_logger_js_namespaceObject = require("./logger.js");
35
33
  const external_mcp_sdk_compat_js_namespaceObject = require("./mcp-sdk-compat.js");
36
34
  const external_tools_js_namespaceObject = require("./tools.js");
37
35
  const external_instrumentation_js_namespaceObject = require("./instrumentation.js");
@@ -41,52 +39,31 @@ const MCP_ANALYTICS_PROCESSED = Symbol('__posthog_mcp_analytics_processed__');
41
39
  function isCallbackUpdate(value) {
42
40
  return !!value && 'object' == typeof value && 'callback' in value && 'function' == typeof value.callback;
43
41
  }
44
- function analyticsOwnsParameter(inputSchema, parameterName) {
45
- if (!inputSchema || 'object' != typeof inputSchema) return (0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)(void 0, parameterName);
46
- if ((0, external_mcp_sdk_compat_js_namespaceObject.isZodRawShapeCompat)(inputSchema)) return (0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)({
47
- properties: inputSchema
48
- }, parameterName);
49
- const shape = (0, external_mcp_sdk_compat_js_namespaceObject.getObjectShape)(inputSchema);
50
- if (shape) return (0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)({
51
- properties: shape
52
- }, parameterName);
53
- const schema = inputSchema;
54
- if ('_def' in schema || '_zod' in schema || '~standard' in schema) return (0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)(void 0, parameterName);
55
- return (0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)(schema, parameterName);
56
- }
57
- function stripOwnedAnalyticsArguments(args, ownership) {
58
- let cleanedArgs = args;
59
- if (ownership.context && cleanedArgs && 'object' == typeof cleanedArgs && 'context' in cleanedArgs) {
60
- const { context: _context, ...rest } = cleanedArgs;
61
- cleanedArgs = rest;
62
- }
63
- return ownership.conversationId ? (0, external_conversation_id_js_namespaceObject.stripConversationId)(cleanedArgs) : cleanedArgs;
64
- }
65
- function addTracingToToolRegistry(tools, server) {
42
+ function addTracingToToolRegistry(tools, server, logger) {
66
43
  return Object.fromEntries(Object.entries(tools).map(([name, tool])=>[
67
44
  name,
68
- addTracingToToolCallbackInternal(tool, name, server)
45
+ addTracingToToolCallbackInternal(tool, name, server, ()=>tool.inputSchema, logger)
69
46
  ]));
70
47
  }
71
- function setupListenerToRegisteredTools(server) {
48
+ function setupListenerToRegisteredTools(server, logger) {
72
49
  try {
73
50
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server.server);
74
- if (!data) return void (0, external_logger_js_namespaceObject.log)('Warning: Cannot setup listener - no tracking data found');
51
+ if (!data) return void logger('Warning: Cannot setup listener - no tracking data found');
75
52
  const handler = {
76
53
  set (target, property, value) {
77
54
  try {
78
55
  if ('string' == typeof property && value && 'object' == typeof value && (0, external_mcp_sdk_compat_js_namespaceObject.hasToolFunction)(value)) {
79
56
  if ('string' == typeof value.description) data.toolDescriptions.set(property, value.description);
80
57
  if (value[MCP_ANALYTICS_PROCESSED]) {
81
- (0, external_logger_js_namespaceObject.log)(`Tool ${String(property)} already processed, skipping proxy wrapping`);
58
+ logger(`Tool ${String(property)} already processed, skipping proxy wrapping`);
82
59
  return Reflect.set(target, property, value);
83
60
  }
84
61
  if (wrappedCallbacks.has((0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(value))) {
85
- (0, external_logger_js_namespaceObject.log)(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
62
+ logger(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
86
63
  return Reflect.set(target, property, value);
87
64
  }
88
65
  const getCurrentInputSchema = ()=>value.inputSchema;
89
- const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema);
66
+ const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema, logger);
90
67
  if ('function' == typeof nextValue.update) {
91
68
  const originalUpdate = nextValue.update;
92
69
  nextValue.update = function(...updateArgs) {
@@ -95,7 +72,7 @@ function setupListenerToRegisteredTools(server) {
95
72
  if (isCallbackUpdate(updateObj)) {
96
73
  const wrappedTool = addTracingToToolCallbackInternal({
97
74
  callback: updateObj.callback
98
- }, property, server, getCurrentInputSchema);
75
+ }, property, server, getCurrentInputSchema, logger);
99
76
  updateObj.callback = (0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(wrappedTool);
100
77
  }
101
78
  }
@@ -106,7 +83,7 @@ function setupListenerToRegisteredTools(server) {
106
83
  }
107
84
  return Reflect.set(target, property, value);
108
85
  } catch (error) {
109
- (0, external_logger_js_namespaceObject.log)(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
86
+ logger(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
110
87
  return Reflect.set(target, property, value);
111
88
  }
112
89
  },
@@ -122,21 +99,21 @@ function setupListenerToRegisteredTools(server) {
122
99
  };
123
100
  const originalTools = server._registeredTools || {};
124
101
  server._registeredTools = new Proxy(originalTools, handler);
125
- (0, external_logger_js_namespaceObject.log)('Successfully set up listener for new tool registrations');
102
+ logger('Successfully set up listener for new tool registrations');
126
103
  } catch (error) {
127
- (0, external_logger_js_namespaceObject.log)(`Warning: Failed to setup listener for registered tools - ${error}`);
104
+ logger(`Warning: Failed to setup listener for registered tools - ${error}`);
128
105
  }
129
106
  }
130
- function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema = ()=>tool.inputSchema) {
107
+ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema, logger) {
131
108
  const originalCallback = (0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(tool);
132
109
  const options = (0, external_internal_js_namespaceObject.getServerTrackingData)(server.server)?.options;
133
110
  const missingToolName = (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(options);
134
111
  if (wrappedCallbacks.has(originalCallback)) {
135
- (0, external_logger_js_namespaceObject.log)(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
112
+ logger(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
136
113
  return tool;
137
114
  }
138
115
  if (tool[MCP_ANALYTICS_PROCESSED]) {
139
- (0, external_logger_js_namespaceObject.log)(`Tool ${toolName} already processed, skipping re-wrap`);
116
+ logger(`Tool ${toolName} already processed, skipping re-wrap`);
140
117
  return tool;
141
118
  }
142
119
  const wrappedCallback = async (...params)=>{
@@ -150,9 +127,9 @@ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInpu
150
127
  extra = params[0];
151
128
  }
152
129
  const inputSchema = getCurrentInputSchema();
153
- const cleanedArgs = stripOwnedAnalyticsArguments(args, {
154
- context: toolName !== missingToolName && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(options?.context) && analyticsOwnsParameter(inputSchema, 'context'),
155
- conversationId: toolName !== missingToolName && options?.enableConversationId === true && analyticsOwnsParameter(inputSchema, 'conversation_id')
130
+ const cleanedArgs = (0, external_analytics_parameters_js_namespaceObject.stripOwnedAnalyticsArguments)(args, {
131
+ context: toolName !== missingToolName && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(options?.context) && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'context'),
132
+ conversationId: toolName !== missingToolName && options?.enableConversationId === true && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'conversation_id')
156
133
  });
157
134
  try {
158
135
  if (void 0 === cleanedArgs) {
@@ -172,10 +149,10 @@ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInpu
172
149
  wrappedTool[MCP_ANALYTICS_PROCESSED] = true;
173
150
  return wrappedTool;
174
151
  }
175
- async function handleToolCallRequest(server, originalCallToolHandler, request, extra) {
152
+ async function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra, logger) {
176
153
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
177
154
  if (!data) {
178
- (0, external_logger_js_namespaceObject.log)('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
155
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
179
156
  return await originalCallToolHandler(request, extra);
180
157
  }
181
158
  if (request.params?.name === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options)) {
@@ -189,15 +166,18 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
189
166
  explicitContextIntent: context,
190
167
  execute: async ()=>(0, external_tools_js_namespaceObject.handleReportMissing)({
191
168
  context
192
- })
169
+ }, data.logger)
193
170
  });
194
171
  }
172
+ const toolName = request.params?.name;
173
+ const registeredTool = toolName ? highLevelServer._registeredTools[toolName] : void 0;
195
174
  return await (0, external_instrumentation_js_namespaceObject.captureToolCall)({
196
175
  server,
197
176
  data,
198
177
  request,
199
178
  extra,
200
- execute: ()=>originalCallToolHandler(request, extra),
179
+ execute: (downstreamRequest)=>originalCallToolHandler(downstreamRequest, extra),
180
+ parameterOwnership: registeredTool ? (0, external_analytics_parameters_js_namespaceObject.getAnalyticsParameterOwnership)(registeredTool.inputSchema) : void 0,
201
181
  takeCapturedError: ()=>{
202
182
  const captured = extra?.__mcp_analytics_error;
203
183
  if (extra) extra.__mcp_analytics_error = void 0;
@@ -205,24 +185,24 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
205
185
  }
206
186
  });
207
187
  }
208
- function instrumentHighLevelServer(server) {
188
+ function instrumentHighLevelServer(server, logger) {
209
189
  try {
210
190
  const lowLevelServer = server.server;
211
191
  const mcpAnalyticsData = (0, external_internal_js_namespaceObject.getServerTrackingData)(lowLevelServer);
212
192
  const handlers = {
213
- initialize: external_instrumentation_js_namespaceObject.handleInitializeRequest,
214
- 'tools/list': external_instrumentation_js_namespaceObject.handleListToolsRequest,
215
- 'tools/call': handleToolCallRequest
193
+ initialize: (trackedServer, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleInitializeRequest)(trackedServer, originalHandler, request, extra, logger),
194
+ 'tools/list': (trackedServer, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleListToolsRequest)(trackedServer, originalHandler, request, extra, logger),
195
+ 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra, logger)
216
196
  };
217
197
  (0, external_instrumentation_js_namespaceObject.patchRequestHandlers)(lowLevelServer, handlers);
218
- server._registeredTools = addTracingToToolRegistry(server._registeredTools, server);
198
+ server._registeredTools = addTracingToToolRegistry(server._registeredTools, server, logger);
219
199
  if (mcpAnalyticsData) {
220
200
  seedToolDescriptionsFromRegistry(mcpAnalyticsData.toolDescriptions, server._registeredTools);
221
201
  seedToolCategoriesFromRegistry(mcpAnalyticsData.toolCategories, server._registeredTools);
222
202
  }
223
- setupListenerToRegisteredTools(server);
203
+ setupListenerToRegisteredTools(server, logger);
224
204
  } catch (error) {
225
- (0, external_logger_js_namespaceObject.log)(`Warning: Failed to setup tool call instrumentation - ${error}`);
205
+ logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
226
206
  }
227
207
  }
228
208
  function seedToolDescriptionsFromRegistry(cache, tools) {
@@ -1,10 +1,8 @@
1
- import { canInjectAnalyticsParameter } from "./analytics-parameters.mjs";
2
- import { stripConversationId } from "./conversation-id.mjs";
1
+ import { analyticsOwnsParameter, getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from "./analytics-parameters.mjs";
3
2
  import { isContextEnabled } from "./context-parameters.mjs";
4
3
  import { MCPAnalyticsEventType } from "./event-types.mjs";
5
4
  import { getServerTrackingData } from "./internal.mjs";
6
- import { log } from "./logger.mjs";
7
- import { createWrappedTool, getObjectShape, getToolFunction, hasToolFunction, isZodRawShapeCompat } from "./mcp-sdk-compat.mjs";
5
+ import { createWrappedTool, getToolFunction, hasToolFunction } from "./mcp-sdk-compat.mjs";
8
6
  import { handleReportMissing, resolveMissingCapabilityToolName } from "./tools.mjs";
9
7
  import { captureToolCall, handleInitializeRequest, handleListToolsRequest, patchRequestHandlers, readToolMetaCategory } from "./instrumentation.mjs";
10
8
  import { getContextArgument } from "./tracing-helpers.mjs";
@@ -13,52 +11,31 @@ const MCP_ANALYTICS_PROCESSED = Symbol('__posthog_mcp_analytics_processed__');
13
11
  function isCallbackUpdate(value) {
14
12
  return !!value && 'object' == typeof value && 'callback' in value && 'function' == typeof value.callback;
15
13
  }
16
- function analyticsOwnsParameter(inputSchema, parameterName) {
17
- if (!inputSchema || 'object' != typeof inputSchema) return canInjectAnalyticsParameter(void 0, parameterName);
18
- if (isZodRawShapeCompat(inputSchema)) return canInjectAnalyticsParameter({
19
- properties: inputSchema
20
- }, parameterName);
21
- const shape = getObjectShape(inputSchema);
22
- if (shape) return canInjectAnalyticsParameter({
23
- properties: shape
24
- }, parameterName);
25
- const schema = inputSchema;
26
- if ('_def' in schema || '_zod' in schema || '~standard' in schema) return canInjectAnalyticsParameter(void 0, parameterName);
27
- return canInjectAnalyticsParameter(schema, parameterName);
28
- }
29
- function stripOwnedAnalyticsArguments(args, ownership) {
30
- let cleanedArgs = args;
31
- if (ownership.context && cleanedArgs && 'object' == typeof cleanedArgs && 'context' in cleanedArgs) {
32
- const { context: _context, ...rest } = cleanedArgs;
33
- cleanedArgs = rest;
34
- }
35
- return ownership.conversationId ? stripConversationId(cleanedArgs) : cleanedArgs;
36
- }
37
- function addTracingToToolRegistry(tools, server) {
14
+ function addTracingToToolRegistry(tools, server, logger) {
38
15
  return Object.fromEntries(Object.entries(tools).map(([name, tool])=>[
39
16
  name,
40
- addTracingToToolCallbackInternal(tool, name, server)
17
+ addTracingToToolCallbackInternal(tool, name, server, ()=>tool.inputSchema, logger)
41
18
  ]));
42
19
  }
43
- function setupListenerToRegisteredTools(server) {
20
+ function setupListenerToRegisteredTools(server, logger) {
44
21
  try {
45
22
  const data = getServerTrackingData(server.server);
46
- if (!data) return void log('Warning: Cannot setup listener - no tracking data found');
23
+ if (!data) return void logger('Warning: Cannot setup listener - no tracking data found');
47
24
  const handler = {
48
25
  set (target, property, value) {
49
26
  try {
50
27
  if ('string' == typeof property && value && 'object' == typeof value && hasToolFunction(value)) {
51
28
  if ('string' == typeof value.description) data.toolDescriptions.set(property, value.description);
52
29
  if (value[MCP_ANALYTICS_PROCESSED]) {
53
- log(`Tool ${String(property)} already processed, skipping proxy wrapping`);
30
+ logger(`Tool ${String(property)} already processed, skipping proxy wrapping`);
54
31
  return Reflect.set(target, property, value);
55
32
  }
56
33
  if (wrappedCallbacks.has(getToolFunction(value))) {
57
- log(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
34
+ logger(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
58
35
  return Reflect.set(target, property, value);
59
36
  }
60
37
  const getCurrentInputSchema = ()=>value.inputSchema;
61
- const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema);
38
+ const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema, logger);
62
39
  if ('function' == typeof nextValue.update) {
63
40
  const originalUpdate = nextValue.update;
64
41
  nextValue.update = function(...updateArgs) {
@@ -67,7 +44,7 @@ function setupListenerToRegisteredTools(server) {
67
44
  if (isCallbackUpdate(updateObj)) {
68
45
  const wrappedTool = addTracingToToolCallbackInternal({
69
46
  callback: updateObj.callback
70
- }, property, server, getCurrentInputSchema);
47
+ }, property, server, getCurrentInputSchema, logger);
71
48
  updateObj.callback = getToolFunction(wrappedTool);
72
49
  }
73
50
  }
@@ -78,7 +55,7 @@ function setupListenerToRegisteredTools(server) {
78
55
  }
79
56
  return Reflect.set(target, property, value);
80
57
  } catch (error) {
81
- log(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
58
+ logger(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
82
59
  return Reflect.set(target, property, value);
83
60
  }
84
61
  },
@@ -94,21 +71,21 @@ function setupListenerToRegisteredTools(server) {
94
71
  };
95
72
  const originalTools = server._registeredTools || {};
96
73
  server._registeredTools = new Proxy(originalTools, handler);
97
- log('Successfully set up listener for new tool registrations');
74
+ logger('Successfully set up listener for new tool registrations');
98
75
  } catch (error) {
99
- log(`Warning: Failed to setup listener for registered tools - ${error}`);
76
+ logger(`Warning: Failed to setup listener for registered tools - ${error}`);
100
77
  }
101
78
  }
102
- function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema = ()=>tool.inputSchema) {
79
+ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema, logger) {
103
80
  const originalCallback = getToolFunction(tool);
104
81
  const options = getServerTrackingData(server.server)?.options;
105
82
  const missingToolName = resolveMissingCapabilityToolName(options);
106
83
  if (wrappedCallbacks.has(originalCallback)) {
107
- log(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
84
+ logger(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
108
85
  return tool;
109
86
  }
110
87
  if (tool[MCP_ANALYTICS_PROCESSED]) {
111
- log(`Tool ${toolName} already processed, skipping re-wrap`);
88
+ logger(`Tool ${toolName} already processed, skipping re-wrap`);
112
89
  return tool;
113
90
  }
114
91
  const wrappedCallback = async (...params)=>{
@@ -144,10 +121,10 @@ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInpu
144
121
  wrappedTool[MCP_ANALYTICS_PROCESSED] = true;
145
122
  return wrappedTool;
146
123
  }
147
- async function handleToolCallRequest(server, originalCallToolHandler, request, extra) {
124
+ async function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra, logger) {
148
125
  const data = getServerTrackingData(server);
149
126
  if (!data) {
150
- log('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
127
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
151
128
  return await originalCallToolHandler(request, extra);
152
129
  }
153
130
  if (request.params?.name === resolveMissingCapabilityToolName(data.options)) {
@@ -161,15 +138,18 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
161
138
  explicitContextIntent: context,
162
139
  execute: async ()=>handleReportMissing({
163
140
  context
164
- })
141
+ }, data.logger)
165
142
  });
166
143
  }
144
+ const toolName = request.params?.name;
145
+ const registeredTool = toolName ? highLevelServer._registeredTools[toolName] : void 0;
167
146
  return await captureToolCall({
168
147
  server,
169
148
  data,
170
149
  request,
171
150
  extra,
172
- execute: ()=>originalCallToolHandler(request, extra),
151
+ execute: (downstreamRequest)=>originalCallToolHandler(downstreamRequest, extra),
152
+ parameterOwnership: registeredTool ? getAnalyticsParameterOwnership(registeredTool.inputSchema) : void 0,
173
153
  takeCapturedError: ()=>{
174
154
  const captured = extra?.__mcp_analytics_error;
175
155
  if (extra) extra.__mcp_analytics_error = void 0;
@@ -177,24 +157,24 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
177
157
  }
178
158
  });
179
159
  }
180
- function instrumentHighLevelServer(server) {
160
+ function instrumentHighLevelServer(server, logger) {
181
161
  try {
182
162
  const lowLevelServer = server.server;
183
163
  const mcpAnalyticsData = getServerTrackingData(lowLevelServer);
184
164
  const handlers = {
185
- initialize: handleInitializeRequest,
186
- 'tools/list': handleListToolsRequest,
187
- 'tools/call': handleToolCallRequest
165
+ initialize: (trackedServer, originalHandler, request, extra)=>handleInitializeRequest(trackedServer, originalHandler, request, extra, logger),
166
+ 'tools/list': (trackedServer, originalHandler, request, extra)=>handleListToolsRequest(trackedServer, originalHandler, request, extra, logger),
167
+ 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra, logger)
188
168
  };
189
169
  patchRequestHandlers(lowLevelServer, handlers);
190
- server._registeredTools = addTracingToToolRegistry(server._registeredTools, server);
170
+ server._registeredTools = addTracingToToolRegistry(server._registeredTools, server, logger);
191
171
  if (mcpAnalyticsData) {
192
172
  seedToolDescriptionsFromRegistry(mcpAnalyticsData.toolDescriptions, server._registeredTools);
193
173
  seedToolCategoriesFromRegistry(mcpAnalyticsData.toolCategories, server._registeredTools);
194
174
  }
195
- setupListenerToRegisteredTools(server);
175
+ setupListenerToRegisteredTools(server, logger);
196
176
  } catch (error) {
197
- log(`Warning: Failed to setup tool call instrumentation - ${error}`);
177
+ logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
198
178
  }
199
179
  }
200
180
  function seedToolDescriptionsFromRegistry(cache, tools) {
@@ -1,8 +1,9 @@
1
1
  import type { MCPServerLike } from '../types';
2
+ import type { LoggerFn } from './logger';
2
3
  /**
3
4
  * Instruments a low-level `Server`: wraps `initialize`, `tools/list`, and
4
5
  * `tools/call`. The tool-call lifecycle is delegated to {@link captureToolCall},
5
6
  * shared with the high-level wrapper.
6
7
  */
7
- export declare function instrumentLowLevelServer(server: MCPServerLike): void;
8
+ export declare function instrumentLowLevelServer(server: MCPServerLike, logger: LoggerFn): void;
8
9
  //# sourceMappingURL=instrument-lowlevel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-lowlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-lowlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiD,aAAa,EAAE,MAAM,UAAU,CAAA;AAmB5F;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAkBpE"}
1
+ {"version":3,"file":"instrument-lowlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-lowlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiD,aAAa,EAAE,MAAM,UAAU,CAAA;AAG5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAiBxC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAoBtF"}
@@ -29,28 +29,27 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  const types_js_namespaceObject = require("@modelcontextprotocol/sdk/types.js");
30
30
  const external_event_types_js_namespaceObject = require("./event-types.js");
31
31
  const external_internal_js_namespaceObject = require("./internal.js");
32
- const external_logger_js_namespaceObject = require("./logger.js");
33
32
  const external_tools_js_namespaceObject = require("./tools.js");
34
33
  const external_instrumentation_js_namespaceObject = require("./instrumentation.js");
35
34
  const external_tracing_helpers_js_namespaceObject = require("./tracing-helpers.js");
36
- function instrumentLowLevelServer(server) {
35
+ function instrumentLowLevelServer(server, logger) {
37
36
  try {
38
37
  const handlers = {
39
- initialize: external_instrumentation_js_namespaceObject.handleInitializeRequest,
40
- 'tools/list': external_instrumentation_js_namespaceObject.handleListToolsRequest
38
+ initialize: (server, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleInitializeRequest)(server, originalHandler, request, extra, logger),
39
+ 'tools/list': (server, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleListToolsRequest)(server, originalHandler, request, extra, logger)
41
40
  };
42
41
  (0, external_instrumentation_js_namespaceObject.patchRequestHandlers)(server, handlers);
43
42
  const originalCallToolHandler = server._requestHandlers.get('tools/call');
44
- server.setRequestHandler(types_js_namespaceObject.CallToolRequestSchema, async (request, extra)=>await handleToolCallRequest(server, originalCallToolHandler, request, extra));
43
+ server.setRequestHandler(types_js_namespaceObject.CallToolRequestSchema, async (request, extra)=>await handleToolCallRequest(server, originalCallToolHandler, request, extra, logger));
45
44
  } catch (error) {
46
- (0, external_logger_js_namespaceObject.log)(`Warning: Failed to setup tool call instrumentation - ${error}`);
45
+ logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
47
46
  throw error;
48
47
  }
49
48
  }
50
- async function handleToolCallRequest(server, originalCallToolHandler, request, extra) {
49
+ async function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {
51
50
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
52
51
  if (!data) {
53
- (0, external_logger_js_namespaceObject.log)('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
52
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
54
53
  return await originalCallToolHandler?.(request, extra);
55
54
  }
56
55
  if (request.params?.name === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options)) {
@@ -64,7 +63,7 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
64
63
  explicitContextIntent: context,
65
64
  execute: async ()=>(0, external_tools_js_namespaceObject.handleReportMissing)({
66
65
  context
67
- })
66
+ }, data.logger)
68
67
  });
69
68
  }
70
69
  return await (0, external_instrumentation_js_namespaceObject.captureToolCall)({
@@ -1,28 +1,27 @@
1
1
  import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
2
2
  import { MCPAnalyticsEventType } from "./event-types.mjs";
3
3
  import { getServerTrackingData } from "./internal.mjs";
4
- import { log } from "./logger.mjs";
5
4
  import { handleReportMissing, resolveMissingCapabilityToolName } from "./tools.mjs";
6
5
  import { captureToolCall, handleInitializeRequest, handleListToolsRequest, patchRequestHandlers } from "./instrumentation.mjs";
7
6
  import { getContextArgument } from "./tracing-helpers.mjs";
8
- function instrumentLowLevelServer(server) {
7
+ function instrumentLowLevelServer(server, logger) {
9
8
  try {
10
9
  const handlers = {
11
- initialize: handleInitializeRequest,
12
- 'tools/list': handleListToolsRequest
10
+ initialize: (server, originalHandler, request, extra)=>handleInitializeRequest(server, originalHandler, request, extra, logger),
11
+ 'tools/list': (server, originalHandler, request, extra)=>handleListToolsRequest(server, originalHandler, request, extra, logger)
13
12
  };
14
13
  patchRequestHandlers(server, handlers);
15
14
  const originalCallToolHandler = server._requestHandlers.get('tools/call');
16
- server.setRequestHandler(CallToolRequestSchema, async (request, extra)=>await handleToolCallRequest(server, originalCallToolHandler, request, extra));
15
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra)=>await handleToolCallRequest(server, originalCallToolHandler, request, extra, logger));
17
16
  } catch (error) {
18
- log(`Warning: Failed to setup tool call instrumentation - ${error}`);
17
+ logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
19
18
  throw error;
20
19
  }
21
20
  }
22
- async function handleToolCallRequest(server, originalCallToolHandler, request, extra) {
21
+ async function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {
23
22
  const data = getServerTrackingData(server);
24
23
  if (!data) {
25
- log('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
24
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
26
25
  return await originalCallToolHandler?.(request, extra);
27
26
  }
28
27
  if (request.params?.name === resolveMissingCapabilityToolName(data.options)) {
@@ -36,7 +35,7 @@ async function handleToolCallRequest(server, originalCallToolHandler, request, e
36
35
  explicitContextIntent: context,
37
36
  execute: async ()=>handleReportMissing({
38
37
  context
39
- })
38
+ }, data.logger)
40
39
  });
41
40
  }
42
41
  return await captureToolCall({
@@ -1,6 +1,7 @@
1
1
  import type { ListToolsResult } from '@modelcontextprotocol/sdk/types.js';
2
- import type { CompatibleRequestHandlerExtra, MCPAnalyticsData, MCPRequestLike, MCPServerLike } from '../types';
2
+ import type { AnalyticsParameterOwnership, CompatibleRequestHandlerExtra, MCPAnalyticsData, MCPRequestLike, MCPServerLike } from '../types';
3
3
  import { MCPAnalyticsEventType } from './event-types';
4
+ import type { LoggerFn } from './logger';
4
5
  /**
5
6
  * Single instrumentation core shared by the low-level (`Server`) and high-level
6
7
  * (`McpServer`) wrappers. The two entrypoints differ only in how they reach the
@@ -9,11 +10,7 @@ import { MCPAnalyticsEventType } from './event-types';
9
10
  * attribution, and event capture are defined exactly once.
10
11
  */
11
12
  type MCPRequestHandler = (request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<unknown>;
12
- /**
13
- * Runs the underlying tool. Receives the request with the SDK-injected
14
- * `conversation_id` stripped; an adapter is free to ignore it (the high-level
15
- * path strips arguments inside the wrapped callback instead).
16
- */
13
+ /** Runs the underlying tool with SDK-owned analytics arguments removed. */
17
14
  type ToolExecutor = (downstreamRequest: MCPRequestLike) => Promise<unknown>;
18
15
  interface TraceToolCallParams {
19
16
  server: MCPServerLike;
@@ -21,6 +18,8 @@ interface TraceToolCallParams {
21
18
  request: MCPRequestLike;
22
19
  extra?: CompatibleRequestHandlerExtra;
23
20
  execute: ToolExecutor;
21
+ /** Optional schema-derived ownership override for adapters with direct registry access. */
22
+ parameterOwnership?: AnalyticsParameterOwnership;
24
23
  /**
25
24
  * Event type to capture. Defaults to a tool call; the `get_more_tools` virtual
26
25
  * tool passes `mcpMissingCapability` so it records a capability gap rather than
@@ -68,7 +67,7 @@ export declare function patchRequestHandlers(server: MCPServerLike, patches: Rec
68
67
  * Captures each `tools/list` and injects the SDK-managed tools (context
69
68
  * parameter, conversation id, `get_more_tools`) into the returned list.
70
69
  */
71
- export declare function handleListToolsRequest(server: MCPServerLike, originalListToolsHandler: MCPRequestHandler, request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra): Promise<{
70
+ export declare function handleListToolsRequest(server: MCPServerLike, originalListToolsHandler: MCPRequestHandler, request: MCPRequestLike, extra: CompatibleRequestHandlerExtra | undefined, logger: LoggerFn): Promise<{
72
71
  tools: ListToolsResult['tools'];
73
72
  }>;
74
73
  export declare function cacheToolDescriptions(cache: Map<string, string>, tools: ListToolsResult['tools'] | undefined): void;
@@ -83,6 +82,6 @@ export declare function cacheToolCategories(cache: Map<string, string>, tools: L
83
82
  * Captures the connection handshake (and resolves identity) on `initialize`
84
83
  * before the original handler runs.
85
84
  */
86
- export declare function handleInitializeRequest(server: MCPServerLike, originalInitializeHandler: MCPRequestHandler, request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra): Promise<unknown>;
85
+ export declare function handleInitializeRequest(server: MCPServerLike, originalInitializeHandler: MCPRequestHandler, request: MCPRequestLike, extra: CompatibleRequestHandlerExtra | undefined, logger: LoggerFn): Promise<unknown>;
87
86
  export {};
88
87
  //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/extensions/instrumentation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,aAAa,EAGd,MAAM,UAAU,CAAA;AAYjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAYrD;;;;;;GAMG;AAEH,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7G;;;;GAIG;AACH,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3E,UAAU,mBAAmB;IAC3B,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,6BAA6B,CAAA;IACrC,OAAO,EAAE,YAAY,CAAA;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAA;CAClC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCnF;AAoHD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,KAC7C,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAqBvG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,wBAAwB,EAAE,iBAAiB,EAC3C,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAyC9C;AAwDD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CASnH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAUjH;AA8GD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,aAAa,EACrB,yBAAyB,EAAE,iBAAiB,EAC5C,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,OAAO,CAAC,CA0ClB"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/extensions/instrumentation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,aAAa,EAGd,MAAM,UAAU,CAAA;AAYjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAIrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAQxC;;;;;;GAMG;AAEH,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7G,2EAA2E;AAC3E,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3E,UAAU,mBAAmB;IAC3B,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,6BAA6B,CAAA;IACrC,OAAO,EAAE,YAAY,CAAA;IACrB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAA;CAClC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmDnF;AAuJD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,KAC7C,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAqBvG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,wBAAwB,EAAE,iBAAiB,EAC3C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAyC9C;AAyED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CASnH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAUjH;AA8GD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,aAAa,EACrB,yBAAyB,EAAE,iBAAiB,EAC5C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC,CA0ClB"}