@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
@@ -32,6 +32,7 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  handleListToolsRequest: ()=>handleListToolsRequest,
33
33
  patchRequestHandlers: ()=>patchRequestHandlers
34
34
  });
35
+ const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
35
36
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
36
37
  const external_conversation_id_js_namespaceObject = require("./conversation-id.js");
37
38
  const external_client_identity_js_namespaceObject = require("./client-identity.js");
@@ -40,7 +41,6 @@ const external_event_types_js_namespaceObject = require("./event-types.js");
40
41
  const external_exceptions_js_namespaceObject = require("./exceptions.js");
41
42
  const external_intent_js_namespaceObject = require("./intent.js");
42
43
  const external_internal_js_namespaceObject = require("./internal.js");
43
- const external_logger_js_namespaceObject = require("./logger.js");
44
44
  const external_mcp_payloads_js_namespaceObject = require("./mcp-payloads.js");
45
45
  const external_mcp_sdk_compat_js_namespaceObject = require("./mcp-sdk-compat.js");
46
46
  const external_session_js_namespaceObject = require("./session.js");
@@ -48,24 +48,45 @@ const external_session_token_js_namespaceObject = require("./session-token.js");
48
48
  const external_tools_js_namespaceObject = require("./tools.js");
49
49
  const external_tracing_helpers_js_namespaceObject = require("./tracing-helpers.js");
50
50
  async function captureToolCall(params) {
51
- const { server, data, request, extra, execute, eventType, explicitContextIntent, takeCapturedError } = params;
52
- const conversation = (0, external_conversation_id_js_namespaceObject.resolveConversationId)(data.options.enableConversationId ?? false, request.params?.arguments, request.params?.name, (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options));
53
- const downstreamRequest = conversation.conversationId ? (0, external_conversation_id_js_namespaceObject.cloneRequestWithoutConversationId)(request) : request;
51
+ const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;
52
+ const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership);
53
+ const conversation = (0, external_conversation_id_js_namespaceObject.resolveConversationId)(ownership.conversationId, request.params?.arguments, request.params?.name, (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options));
54
+ const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);
54
55
  const startTime = new Date();
55
- const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, eventType ?? external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpToolsCall);
56
+ const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType ?? external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpToolsCall);
56
57
  if (event && explicitContextIntent) (0, external_intent_js_namespaceObject.setExplicitContextIntent)(event, explicitContextIntent);
57
58
  let result;
58
59
  try {
59
60
  result = await execute(downstreamRequest);
60
61
  } catch (error) {
61
- publishFailedToolEvent(server, event, error, startTime, conversation);
62
+ publishFailedToolEvent(server, event, error, startTime, conversation, data.logger);
62
63
  throw error;
63
64
  }
64
65
  const finalResult = applyConversationPromptBack(event, result, conversation);
65
- publishSuccessfulToolEvent(server, event, finalResult, startTime, takeCapturedError);
66
+ publishSuccessfulToolEvent(server, event, finalResult, startTime, data.logger, takeCapturedError);
66
67
  return finalResult;
67
68
  }
68
- async function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, eventType) {
69
+ function getActiveAnalyticsParameterOwnership(data, toolName, override) {
70
+ const ownership = override ?? (toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0);
71
+ const isMissingCapabilityTool = toolName === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options);
72
+ return {
73
+ context: !isMissingCapabilityTool && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context) && ownership?.context === true,
74
+ conversationId: !isMissingCapabilityTool && true === data.options.enableConversationId && ownership?.conversationId === true
75
+ };
76
+ }
77
+ function cloneRequestWithoutOwnedAnalyticsArguments(request, ownership) {
78
+ const args = request.params?.arguments;
79
+ const cleanedArgs = (0, external_analytics_parameters_js_namespaceObject.stripOwnedAnalyticsArguments)(args, ownership);
80
+ if (cleanedArgs === args || !request.params) return request;
81
+ return {
82
+ ...request,
83
+ params: {
84
+ ...request.params,
85
+ arguments: cleanedArgs
86
+ }
87
+ };
88
+ }
89
+ async function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType) {
69
90
  try {
70
91
  const sessionId = (0, external_session_js_namespaceObject.getSessionId)(server, extra);
71
92
  await (0, external_internal_js_namespaceObject.handleIdentify)(server, data, sessionId, request, extra);
@@ -82,10 +103,10 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
82
103
  };
83
104
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
84
105
  await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
85
- (0, external_intent_js_namespaceObject.setEventIntent)(event, await (0, external_intent_js_namespaceObject.resolveToolCallIntent)(data, request, extra));
106
+ (0, external_intent_js_namespaceObject.setEventIntent)(event, await (0, external_intent_js_namespaceObject.resolveToolCallIntent)(data, request, ownership.context, extra));
86
107
  return event;
87
108
  } catch (error) {
88
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
109
+ data.logger(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
89
110
  return null;
90
111
  }
91
112
  }
@@ -95,7 +116,7 @@ function applyConversationPromptBack(event, result, conversation) {
95
116
  if (event) event.conversationId = void 0;
96
117
  return result;
97
118
  }
98
- function publishSuccessfulToolEvent(server, event, result, startTime, takeCapturedError) {
119
+ function publishSuccessfulToolEvent(server, event, result, startTime, logger, takeCapturedError) {
99
120
  if (!event) return;
100
121
  try {
101
122
  if ((0, external_tracing_helpers_js_namespaceObject.isToolResultError)(result)) {
@@ -105,21 +126,21 @@ function publishSuccessfulToolEvent(server, event, result, startTime, takeCaptur
105
126
  } else event.isError = false;
106
127
  event.response = result;
107
128
  event.duration = Date.now() - startTime.getTime();
108
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
129
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
109
130
  } catch (error) {
110
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
131
+ logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
111
132
  }
112
133
  }
113
- function publishFailedToolEvent(server, event, error, startTime, conversation) {
134
+ function publishFailedToolEvent(server, event, error, startTime, conversation, logger) {
114
135
  if (!event) return;
115
136
  try {
116
137
  if (conversation.minted) event.conversationId = void 0;
117
138
  event.isError = true;
118
139
  event.error = (0, external_exceptions_js_namespaceObject.captureException)(error);
119
140
  event.duration = Date.now() - startTime.getTime();
120
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
141
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
121
142
  } catch (publishError) {
122
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
143
+ logger(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
123
144
  }
124
145
  }
125
146
  function patchRequestHandlers(server, patches) {
@@ -136,7 +157,7 @@ function patchRequestHandlers(server, patches) {
136
157
  return originalSetRequestHandler(requestSchema, (request, extra)=>patch(server, originalHandler, request, extra));
137
158
  };
138
159
  }
139
- async function handleListToolsRequest(server, originalListToolsHandler, request, extra) {
160
+ async function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {
140
161
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
141
162
  const startTime = new Date();
142
163
  const event = {
@@ -147,19 +168,19 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
147
168
  };
148
169
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
149
170
  if (data) await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
150
- const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event);
171
+ const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger);
151
172
  if (!data) {
152
- (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.');
173
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
153
174
  return {
154
175
  tools
155
176
  };
156
177
  }
157
178
  if (0 === tools.length) {
158
- (0, external_logger_js_namespaceObject.log)('Warning: No tools found in the original list. This is likely due to the tools not being registered before PostHog MCP analytics.instrument().');
179
+ 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().');
159
180
  event.error = (0, external_exceptions_js_namespaceObject.captureException)('No tools were sent to MCP client.');
160
181
  event.isError = true;
161
182
  event.duration = Date.now() - startTime.getTime();
162
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
183
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
163
184
  return {
164
185
  tools
165
186
  };
@@ -170,23 +191,27 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
170
191
  event.listedToolNames = collectListedToolNames(tools);
171
192
  event.isError = false;
172
193
  event.duration = Date.now() - startTime.getTime();
173
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
194
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
174
195
  return {
175
196
  tools
176
197
  };
177
198
  }
199
+ function cacheToolAnalyticsParameterOwnership(cache, tools) {
200
+ for (const tool of tools)if (tool?.name) cache.set(tool.name, (0, external_analytics_parameters_js_namespaceObject.getAnalyticsParameterOwnership)(tool.inputSchema));
201
+ }
178
202
  function collectListedToolNames(tools) {
179
203
  if (!tools || 0 === tools.length) return;
180
204
  const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);
181
205
  return names.length > 0 ? names : void 0;
182
206
  }
183
- async function getTracedToolsList(server, originalListToolsHandler, request, extra, event) {
207
+ async function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger) {
184
208
  try {
185
209
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
186
210
  const originalResponse = await originalListToolsHandler(request, extra);
187
211
  let tools = originalResponse.tools || [];
188
- if (data && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context)) tools = (0, external_context_parameters_js_namespaceObject.addContextParameterToTools)(tools, (0, external_context_parameters_js_namespaceObject.getContextDescription)(data.options.context));
189
- if (data?.options.enableConversationId) tools = (0, external_conversation_id_js_namespaceObject.addConversationIdToTools)(tools, (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options));
212
+ if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);
213
+ if (data && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context)) tools = (0, external_context_parameters_js_namespaceObject.addContextParameterToTools)(tools, (0, external_context_parameters_js_namespaceObject.getContextDescription)(data.options.context), data.logger);
214
+ if (data?.options.enableConversationId) tools = (0, external_conversation_id_js_namespaceObject.addConversationIdToTools)(tools, (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options), data.logger);
190
215
  if (data?.options.reportMissing) {
191
216
  const missingToolName = (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options);
192
217
  const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
@@ -198,11 +223,11 @@ async function getTracedToolsList(server, originalListToolsHandler, request, ext
198
223
  }
199
224
  return tools;
200
225
  } catch (error) {
201
- (0, external_logger_js_namespaceObject.log)(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
226
+ logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
202
227
  event.error = (0, external_exceptions_js_namespaceObject.captureException)(error);
203
228
  event.isError = true;
204
229
  event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;
205
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
230
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
206
231
  throw error;
207
232
  }
208
233
  }
@@ -247,7 +272,7 @@ function mintStatelessSessionOnInitialize(server, data, request, extra) {
247
272
  (0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
248
273
  return sessionId;
249
274
  } catch (error) {
250
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
275
+ data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
251
276
  return;
252
277
  }
253
278
  }
@@ -263,7 +288,7 @@ function upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiate
263
288
  });
264
289
  (0, external_session_token_js_namespaceObject.writeSessionIdToTransport)(transport, token);
265
290
  } catch (error) {
266
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
291
+ data.logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
267
292
  }
268
293
  }
269
294
  function readInitializeClientInfo(request) {
@@ -275,10 +300,10 @@ function readInitializeClientInfo(request) {
275
300
  version: 'string' == typeof version ? version : void 0
276
301
  };
277
302
  }
278
- async function handleInitializeRequest(server, originalInitializeHandler, request, extra) {
303
+ async function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {
279
304
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
280
305
  if (!data) {
281
- (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.');
306
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
282
307
  return await originalInitializeHandler(request, extra);
283
308
  }
284
309
  const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);
@@ -300,7 +325,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
300
325
  data.sessionInfo.protocolVersion = negotiatedProtocolVersion;
301
326
  (0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
302
327
  if (mintedSessionId) upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiatedProtocolVersion);
303
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
328
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
304
329
  return result;
305
330
  }
306
331
  function readProtocolVersion(result, request) {
@@ -1,12 +1,12 @@
1
+ import { getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from "./analytics-parameters.mjs";
1
2
  import { addContextParameterToTools, getContextDescription, isContextEnabled } from "./context-parameters.mjs";
2
- import { addConversationIdToTools, canInjectConversationIdPromptBack, cloneRequestWithoutConversationId, injectConversationIdPromptBack, resolveConversationId } from "./conversation-id.mjs";
3
+ import { addConversationIdToTools, canInjectConversationIdPromptBack, injectConversationIdPromptBack, resolveConversationId } from "./conversation-id.mjs";
3
4
  import { stampMetaClientInfo } from "./client-identity.mjs";
4
5
  import { captureEvent } from "./capture.mjs";
5
6
  import { MCPAnalyticsEventType } from "./event-types.mjs";
6
7
  import { captureException } from "./exceptions.mjs";
7
8
  import { resolveToolCallIntent, setEventIntent, setExplicitContextIntent } from "./intent.mjs";
8
9
  import { getServerTrackingData, handleIdentify, setServerTrackingData } from "./internal.mjs";
9
- import { log } from "./logger.mjs";
10
10
  import { buildCapturedMcpParameters } from "./mcp-payloads.mjs";
11
11
  import { getLiteralValue, getObjectShape } from "./mcp-sdk-compat.mjs";
12
12
  import { getSessionId, newSessionId } from "./session.mjs";
@@ -14,24 +14,45 @@ import { encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport } from
14
14
  import { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from "./tools.mjs";
15
15
  import { applyResolvedMetadata, isToolResultError } from "./tracing-helpers.mjs";
16
16
  async function captureToolCall(params) {
17
- const { server, data, request, extra, execute, eventType, explicitContextIntent, takeCapturedError } = params;
18
- const conversation = resolveConversationId(data.options.enableConversationId ?? false, request.params?.arguments, request.params?.name, resolveMissingCapabilityToolName(data.options));
19
- const downstreamRequest = conversation.conversationId ? cloneRequestWithoutConversationId(request) : request;
17
+ const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;
18
+ const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership);
19
+ const conversation = resolveConversationId(ownership.conversationId, request.params?.arguments, request.params?.name, resolveMissingCapabilityToolName(data.options));
20
+ const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);
20
21
  const startTime = new Date();
21
- const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, eventType ?? MCPAnalyticsEventType.mcpToolsCall);
22
+ const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType ?? MCPAnalyticsEventType.mcpToolsCall);
22
23
  if (event && explicitContextIntent) setExplicitContextIntent(event, explicitContextIntent);
23
24
  let result;
24
25
  try {
25
26
  result = await execute(downstreamRequest);
26
27
  } catch (error) {
27
- publishFailedToolEvent(server, event, error, startTime, conversation);
28
+ publishFailedToolEvent(server, event, error, startTime, conversation, data.logger);
28
29
  throw error;
29
30
  }
30
31
  const finalResult = applyConversationPromptBack(event, result, conversation);
31
- publishSuccessfulToolEvent(server, event, finalResult, startTime, takeCapturedError);
32
+ publishSuccessfulToolEvent(server, event, finalResult, startTime, data.logger, takeCapturedError);
32
33
  return finalResult;
33
34
  }
34
- async function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, eventType) {
35
+ function getActiveAnalyticsParameterOwnership(data, toolName, override) {
36
+ const ownership = override ?? (toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0);
37
+ const isMissingCapabilityTool = toolName === resolveMissingCapabilityToolName(data.options);
38
+ return {
39
+ context: !isMissingCapabilityTool && isContextEnabled(data.options.context) && ownership?.context === true,
40
+ conversationId: !isMissingCapabilityTool && true === data.options.enableConversationId && ownership?.conversationId === true
41
+ };
42
+ }
43
+ function cloneRequestWithoutOwnedAnalyticsArguments(request, ownership) {
44
+ const args = request.params?.arguments;
45
+ const cleanedArgs = stripOwnedAnalyticsArguments(args, ownership);
46
+ if (cleanedArgs === args || !request.params) return request;
47
+ return {
48
+ ...request,
49
+ params: {
50
+ ...request.params,
51
+ arguments: cleanedArgs
52
+ }
53
+ };
54
+ }
55
+ async function prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType) {
35
56
  try {
36
57
  const sessionId = getSessionId(server, extra);
37
58
  await handleIdentify(server, data, sessionId, request, extra);
@@ -48,10 +69,10 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
48
69
  };
49
70
  stampMetaClientInfo(event, request);
50
71
  await applyResolvedMetadata(event, data, request, extra);
51
- setEventIntent(event, await resolveToolCallIntent(data, request, extra));
72
+ setEventIntent(event, await resolveToolCallIntent(data, request, ownership.context, extra));
52
73
  return event;
53
74
  } catch (error) {
54
- log(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
75
+ data.logger(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
55
76
  return null;
56
77
  }
57
78
  }
@@ -61,7 +82,7 @@ function applyConversationPromptBack(event, result, conversation) {
61
82
  if (event) event.conversationId = void 0;
62
83
  return result;
63
84
  }
64
- function publishSuccessfulToolEvent(server, event, result, startTime, takeCapturedError) {
85
+ function publishSuccessfulToolEvent(server, event, result, startTime, logger, takeCapturedError) {
65
86
  if (!event) return;
66
87
  try {
67
88
  if (isToolResultError(result)) {
@@ -71,21 +92,21 @@ function publishSuccessfulToolEvent(server, event, result, startTime, takeCaptur
71
92
  } else event.isError = false;
72
93
  event.response = result;
73
94
  event.duration = Date.now() - startTime.getTime();
74
- captureEvent(server, event);
95
+ captureEvent(server, event, logger);
75
96
  } catch (error) {
76
- log(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
97
+ logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
77
98
  }
78
99
  }
79
- function publishFailedToolEvent(server, event, error, startTime, conversation) {
100
+ function publishFailedToolEvent(server, event, error, startTime, conversation, logger) {
80
101
  if (!event) return;
81
102
  try {
82
103
  if (conversation.minted) event.conversationId = void 0;
83
104
  event.isError = true;
84
105
  event.error = captureException(error);
85
106
  event.duration = Date.now() - startTime.getTime();
86
- captureEvent(server, event);
107
+ captureEvent(server, event, logger);
87
108
  } catch (publishError) {
88
- log(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
109
+ logger(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
89
110
  }
90
111
  }
91
112
  function patchRequestHandlers(server, patches) {
@@ -102,7 +123,7 @@ function patchRequestHandlers(server, patches) {
102
123
  return originalSetRequestHandler(requestSchema, (request, extra)=>patch(server, originalHandler, request, extra));
103
124
  };
104
125
  }
105
- async function handleListToolsRequest(server, originalListToolsHandler, request, extra) {
126
+ async function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {
106
127
  const data = getServerTrackingData(server);
107
128
  const startTime = new Date();
108
129
  const event = {
@@ -113,19 +134,19 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
113
134
  };
114
135
  stampMetaClientInfo(event, request);
115
136
  if (data) await applyResolvedMetadata(event, data, request, extra);
116
- const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event);
137
+ const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger);
117
138
  if (!data) {
118
- log('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
139
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
119
140
  return {
120
141
  tools
121
142
  };
122
143
  }
123
144
  if (0 === tools.length) {
124
- log('Warning: No tools found in the original list. This is likely due to the tools not being registered before PostHog MCP analytics.instrument().');
145
+ 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().');
125
146
  event.error = captureException('No tools were sent to MCP client.');
126
147
  event.isError = true;
127
148
  event.duration = Date.now() - startTime.getTime();
128
- captureEvent(server, event);
149
+ captureEvent(server, event, data.logger);
129
150
  return {
130
151
  tools
131
152
  };
@@ -136,23 +157,27 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
136
157
  event.listedToolNames = collectListedToolNames(tools);
137
158
  event.isError = false;
138
159
  event.duration = Date.now() - startTime.getTime();
139
- captureEvent(server, event);
160
+ captureEvent(server, event, data.logger);
140
161
  return {
141
162
  tools
142
163
  };
143
164
  }
165
+ function cacheToolAnalyticsParameterOwnership(cache, tools) {
166
+ for (const tool of tools)if (tool?.name) cache.set(tool.name, getAnalyticsParameterOwnership(tool.inputSchema));
167
+ }
144
168
  function collectListedToolNames(tools) {
145
169
  if (!tools || 0 === tools.length) return;
146
170
  const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);
147
171
  return names.length > 0 ? names : void 0;
148
172
  }
149
- async function getTracedToolsList(server, originalListToolsHandler, request, extra, event) {
173
+ async function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger) {
150
174
  try {
151
175
  const data = getServerTrackingData(server);
152
176
  const originalResponse = await originalListToolsHandler(request, extra);
153
177
  let tools = originalResponse.tools || [];
154
- if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context));
155
- if (data?.options.enableConversationId) tools = addConversationIdToTools(tools, resolveMissingCapabilityToolName(data.options));
178
+ if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);
179
+ if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context), data.logger);
180
+ if (data?.options.enableConversationId) tools = addConversationIdToTools(tools, resolveMissingCapabilityToolName(data.options), data.logger);
156
181
  if (data?.options.reportMissing) {
157
182
  const missingToolName = resolveMissingCapabilityToolName(data.options);
158
183
  const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
@@ -164,11 +189,11 @@ async function getTracedToolsList(server, originalListToolsHandler, request, ext
164
189
  }
165
190
  return tools;
166
191
  } catch (error) {
167
- log(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
192
+ logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
168
193
  event.error = captureException(error);
169
194
  event.isError = true;
170
195
  event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;
171
- captureEvent(server, event);
196
+ captureEvent(server, event, logger);
172
197
  throw error;
173
198
  }
174
199
  }
@@ -213,7 +238,7 @@ function mintStatelessSessionOnInitialize(server, data, request, extra) {
213
238
  setServerTrackingData(server, data);
214
239
  return sessionId;
215
240
  } catch (error) {
216
- log(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
241
+ data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
217
242
  return;
218
243
  }
219
244
  }
@@ -229,7 +254,7 @@ function upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiate
229
254
  });
230
255
  writeSessionIdToTransport(transport, token);
231
256
  } catch (error) {
232
- log(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
257
+ data.logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
233
258
  }
234
259
  }
235
260
  function readInitializeClientInfo(request) {
@@ -241,10 +266,10 @@ function readInitializeClientInfo(request) {
241
266
  version: 'string' == typeof version ? version : void 0
242
267
  };
243
268
  }
244
- async function handleInitializeRequest(server, originalInitializeHandler, request, extra) {
269
+ async function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {
245
270
  const data = getServerTrackingData(server);
246
271
  if (!data) {
247
- log('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
272
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
248
273
  return await originalInitializeHandler(request, extra);
249
274
  }
250
275
  const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);
@@ -266,7 +291,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
266
291
  data.sessionInfo.protocolVersion = negotiatedProtocolVersion;
267
292
  setServerTrackingData(server, data);
268
293
  if (mintedSessionId) upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiatedProtocolVersion);
269
- captureEvent(server, event);
294
+ captureEvent(server, event, data.logger);
270
295
  return result;
271
296
  }
272
297
  function readProtocolVersion(result, request) {
@@ -3,7 +3,7 @@ interface ResolvedIntent {
3
3
  intent: string;
4
4
  source: MCPAnalyticsIntentSource;
5
5
  }
6
- export declare function resolveToolCallIntent(data: MCPAnalyticsData, request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra): Promise<ResolvedIntent | null>;
6
+ export declare function resolveToolCallIntent(data: MCPAnalyticsData, request: MCPRequestLike, analyticsOwnsContext: boolean, extra?: CompatibleRequestHandlerExtra): Promise<ResolvedIntent | null>;
7
7
  export declare function setEventIntent(event: McpEvent, resolvedIntent: ResolvedIntent | null): void;
8
8
  export declare function setExplicitContextIntent(event: McpEvent, context: string): void;
9
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/extensions/intent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,QAAQ,EACT,MAAM,UAAU,CAAA;AAIjB,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,wBAAwB,CAAA;CACjC;AAkCD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAOhC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAO3F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ/E"}
1
+ {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/extensions/intent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,QAAQ,EACT,MAAM,UAAU,CAAA;AAGjB,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,wBAAwB,CAAA;CACjC;AAkCD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,cAAc,EACvB,oBAAoB,EAAE,OAAO,EAC7B,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYhC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAO3F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ/E"}
@@ -29,7 +29,6 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  setEventIntent: ()=>setEventIntent
30
30
  });
31
31
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
32
- const external_logger_js_namespaceObject = require("./logger.js");
33
32
  function getContextArgument(request) {
34
33
  const context = request.params?.arguments?.context;
35
34
  return 'string' == typeof context && context.trim() ? context : void 0;
@@ -48,13 +47,13 @@ async function runIntentFallback(data, request, extra) {
48
47
  source: 'inferred'
49
48
  } : null;
50
49
  } catch (error) {
51
- (0, external_logger_js_namespaceObject.log)(`intentFallback callback error: ${error}`);
50
+ data.logger(`intentFallback callback error: ${error}`);
52
51
  return null;
53
52
  }
54
53
  }
55
- async function resolveToolCallIntent(data, request, extra) {
54
+ async function resolveToolCallIntent(data, request, analyticsOwnsContext, extra) {
56
55
  const contextArgument = getContextArgument(request);
57
- if ((0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context) && request.params?.name !== 'get_more_tools' && contextArgument) return {
56
+ if (analyticsOwnsContext && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context) && request.params?.name !== 'get_more_tools' && contextArgument) return {
58
57
  intent: contextArgument,
59
58
  source: 'context_parameter'
60
59
  };
@@ -1,5 +1,4 @@
1
1
  import { isContextEnabled } from "./context-parameters.mjs";
2
- import { log } from "./logger.mjs";
3
2
  function getContextArgument(request) {
4
3
  const context = request.params?.arguments?.context;
5
4
  return 'string' == typeof context && context.trim() ? context : void 0;
@@ -18,13 +17,13 @@ async function runIntentFallback(data, request, extra) {
18
17
  source: 'inferred'
19
18
  } : null;
20
19
  } catch (error) {
21
- log(`intentFallback callback error: ${error}`);
20
+ data.logger(`intentFallback callback error: ${error}`);
22
21
  return null;
23
22
  }
24
23
  }
25
- async function resolveToolCallIntent(data, request, extra) {
24
+ async function resolveToolCallIntent(data, request, analyticsOwnsContext, extra) {
26
25
  const contextArgument = getContextArgument(request);
27
- if (isContextEnabled(data.options.context) && request.params?.name !== 'get_more_tools' && contextArgument) return {
26
+ if (analyticsOwnsContext && isContextEnabled(data.options.context) && request.params?.name !== 'get_more_tools' && contextArgument) return {
28
27
  intent: contextArgument,
29
28
  source: 'context_parameter'
30
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/extensions/internal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAMjB;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAErB,OAAO,SAAO;IAI1B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAWhD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAapD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,IAAI,IAAI,MAAM;CAGf;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAEzF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAEzF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CA4B5E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAapG;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAUzC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/extensions/internal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAKjB;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAErB,OAAO,SAAO;IAI1B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAWhD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAapD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,IAAI,IAAI,MAAM;CAGf;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAEzF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAEzF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CA4B5E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAapG;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAUzC"}
@@ -33,7 +33,6 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  setServerTrackingData: ()=>setServerTrackingData
34
34
  });
35
35
  const external_event_types_js_namespaceObject = require("./event-types.js");
36
- const external_logger_js_namespaceObject = require("./logger.js");
37
36
  const external_capture_js_namespaceObject = require("./capture.js");
38
37
  const external_client_identity_js_namespaceObject = require("./client-identity.js");
39
38
  class IdentityCache {
@@ -119,12 +118,12 @@ async function handleIdentify(server, data, sessionId, request, extra) {
119
118
  const shouldPublish = changed || firstSeen && !announcedAtInitialize;
120
119
  data.identifiedSessions.set(sessionId, mergedIdentity);
121
120
  if (shouldPublish) {
122
- (0, external_logger_js_namespaceObject.log)(`Identified session ${sessionId} with identity: ${JSON.stringify(mergedIdentity)}`);
123
- (0, external_capture_js_namespaceObject.captureEvent)(server, identifyEvent);
121
+ data.logger(`Identified session ${sessionId}`);
122
+ (0, external_capture_js_namespaceObject.captureEvent)(server, identifyEvent, data.logger);
124
123
  }
125
- } else (0, external_logger_js_namespaceObject.log)(`Warning: Supplied identify function returned null for session ${sessionId}`);
124
+ } else data.logger(`Warning: Supplied identify function returned null for session ${sessionId}`);
126
125
  } catch (error) {
127
- (0, external_logger_js_namespaceObject.log)(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
126
+ data.logger(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
128
127
  }
129
128
  }
130
129
  async function resolveEventProperties(data, request, extra) {
@@ -132,7 +131,7 @@ async function resolveEventProperties(data, request, extra) {
132
131
  try {
133
132
  return await data.options.eventProperties(request, extra) ?? null;
134
133
  } catch (e) {
135
- (0, external_logger_js_namespaceObject.log)(`eventProperties callback error: ${e}`);
134
+ data.logger(`eventProperties callback error: ${e}`);
136
135
  return null;
137
136
  }
138
137
  }
@@ -1,5 +1,4 @@
1
1
  import { MCPAnalyticsEventType } from "./event-types.mjs";
2
- import { log } from "./logger.mjs";
3
2
  import { captureEvent } from "./capture.mjs";
4
3
  import { stampMetaClientInfo } from "./client-identity.mjs";
5
4
  class IdentityCache {
@@ -85,12 +84,12 @@ async function handleIdentify(server, data, sessionId, request, extra) {
85
84
  const shouldPublish = changed || firstSeen && !announcedAtInitialize;
86
85
  data.identifiedSessions.set(sessionId, mergedIdentity);
87
86
  if (shouldPublish) {
88
- log(`Identified session ${sessionId} with identity: ${JSON.stringify(mergedIdentity)}`);
89
- captureEvent(server, identifyEvent);
87
+ data.logger(`Identified session ${sessionId}`);
88
+ captureEvent(server, identifyEvent, data.logger);
90
89
  }
91
- } else log(`Warning: Supplied identify function returned null for session ${sessionId}`);
90
+ } else data.logger(`Warning: Supplied identify function returned null for session ${sessionId}`);
92
91
  } catch (error) {
93
- log(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
92
+ data.logger(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
94
93
  }
95
94
  }
96
95
  async function resolveEventProperties(data, request, extra) {
@@ -98,7 +97,7 @@ async function resolveEventProperties(data, request, extra) {
98
97
  try {
99
98
  return await data.options.eventProperties(request, extra) ?? null;
100
99
  } catch (e) {
101
- log(`eventProperties callback error: ${e}`);
100
+ data.logger(`eventProperties callback error: ${e}`);
102
101
  return null;
103
102
  }
104
103
  }