@posthog/mcp 0.10.4 → 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 (70) hide show
  1. package/dist/extensions/capture.d.ts +2 -1
  2. package/dist/extensions/capture.d.ts.map +1 -1
  3. package/dist/extensions/capture.js +2 -3
  4. package/dist/extensions/capture.mjs +2 -3
  5. package/dist/extensions/compatibility.d.ts +3 -2
  6. package/dist/extensions/compatibility.d.ts.map +1 -1
  7. package/dist/extensions/compatibility.js +19 -20
  8. package/dist/extensions/compatibility.mjs +15 -16
  9. package/dist/extensions/context-parameters.d.ts +3 -2
  10. package/dist/extensions/context-parameters.d.ts.map +1 -1
  11. package/dist/extensions/context-parameters.js +4 -5
  12. package/dist/extensions/context-parameters.mjs +4 -4
  13. package/dist/extensions/conversation-id.d.ts +3 -2
  14. package/dist/extensions/conversation-id.d.ts.map +1 -1
  15. package/dist/extensions/conversation-id.js +4 -5
  16. package/dist/extensions/conversation-id.mjs +4 -4
  17. package/dist/extensions/instrument-highlevel.d.ts +2 -1
  18. package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
  19. package/dist/extensions/instrument-highlevel.js +24 -25
  20. package/dist/extensions/instrument-highlevel.mjs +24 -25
  21. package/dist/extensions/instrument-lowlevel.d.ts +2 -1
  22. package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
  23. package/dist/extensions/instrument-lowlevel.js +8 -9
  24. package/dist/extensions/instrument-lowlevel.mjs +8 -9
  25. package/dist/extensions/instrumentation.d.ts +3 -2
  26. package/dist/extensions/instrumentation.d.ts.map +1 -1
  27. package/dist/extensions/instrumentation.js +25 -26
  28. package/dist/extensions/instrumentation.mjs +25 -26
  29. package/dist/extensions/intent.d.ts.map +1 -1
  30. package/dist/extensions/intent.js +1 -2
  31. package/dist/extensions/intent.mjs +1 -2
  32. package/dist/extensions/internal.d.ts.map +1 -1
  33. package/dist/extensions/internal.js +5 -6
  34. package/dist/extensions/internal.mjs +5 -6
  35. package/dist/extensions/logger.d.ts +12 -4
  36. package/dist/extensions/logger.d.ts.map +1 -1
  37. package/dist/extensions/logger.js +12 -3
  38. package/dist/extensions/logger.mjs +10 -4
  39. package/dist/extensions/sink.d.ts +4 -2
  40. package/dist/extensions/sink.d.ts.map +1 -1
  41. package/dist/extensions/sink.js +11 -10
  42. package/dist/extensions/sink.mjs +11 -10
  43. package/dist/extensions/tools.d.ts +2 -1
  44. package/dist/extensions/tools.d.ts.map +1 -1
  45. package/dist/extensions/tools.js +2 -2
  46. package/dist/extensions/tools.mjs +2 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +18 -16
  49. package/dist/index.mjs +19 -17
  50. package/dist/types.d.ts +2 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/dist/version.mjs +1 -1
  55. package/package.json +1 -1
  56. package/src/extensions/capture.ts +3 -3
  57. package/src/extensions/compatibility.ts +16 -16
  58. package/src/extensions/context-parameters.ts +8 -6
  59. package/src/extensions/conversation-id.ts +12 -6
  60. package/src/extensions/instrument-highlevel.ts +37 -31
  61. package/src/extensions/instrument-lowlevel.ts +14 -10
  62. package/src/extensions/instrumentation.ts +30 -25
  63. package/src/extensions/intent.ts +1 -2
  64. package/src/extensions/internal.ts +7 -6
  65. package/src/extensions/logger.ts +22 -7
  66. package/src/extensions/sink.ts +17 -12
  67. package/src/extensions/tools.ts +3 -3
  68. package/src/index.ts +21 -19
  69. package/src/types.ts +2 -0
  70. package/src/version.ts +1 -1
@@ -7,7 +7,6 @@ import { MCPAnalyticsEventType } from "./event-types.mjs";
7
7
  import { captureException } from "./exceptions.mjs";
8
8
  import { resolveToolCallIntent, setEventIntent, setExplicitContextIntent } from "./intent.mjs";
9
9
  import { getServerTrackingData, handleIdentify, setServerTrackingData } from "./internal.mjs";
10
- import { log } from "./logger.mjs";
11
10
  import { buildCapturedMcpParameters } from "./mcp-payloads.mjs";
12
11
  import { getLiteralValue, getObjectShape } from "./mcp-sdk-compat.mjs";
13
12
  import { getSessionId, newSessionId } from "./session.mjs";
@@ -26,11 +25,11 @@ async function captureToolCall(params) {
26
25
  try {
27
26
  result = await execute(downstreamRequest);
28
27
  } catch (error) {
29
- publishFailedToolEvent(server, event, error, startTime, conversation);
28
+ publishFailedToolEvent(server, event, error, startTime, conversation, data.logger);
30
29
  throw error;
31
30
  }
32
31
  const finalResult = applyConversationPromptBack(event, result, conversation);
33
- publishSuccessfulToolEvent(server, event, finalResult, startTime, takeCapturedError);
32
+ publishSuccessfulToolEvent(server, event, finalResult, startTime, data.logger, takeCapturedError);
34
33
  return finalResult;
35
34
  }
36
35
  function getActiveAnalyticsParameterOwnership(data, toolName, override) {
@@ -73,7 +72,7 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
73
72
  setEventIntent(event, await resolveToolCallIntent(data, request, ownership.context, extra));
74
73
  return event;
75
74
  } catch (error) {
76
- 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}`);
77
76
  return null;
78
77
  }
79
78
  }
@@ -83,7 +82,7 @@ function applyConversationPromptBack(event, result, conversation) {
83
82
  if (event) event.conversationId = void 0;
84
83
  return result;
85
84
  }
86
- function publishSuccessfulToolEvent(server, event, result, startTime, takeCapturedError) {
85
+ function publishSuccessfulToolEvent(server, event, result, startTime, logger, takeCapturedError) {
87
86
  if (!event) return;
88
87
  try {
89
88
  if (isToolResultError(result)) {
@@ -93,21 +92,21 @@ function publishSuccessfulToolEvent(server, event, result, startTime, takeCaptur
93
92
  } else event.isError = false;
94
93
  event.response = result;
95
94
  event.duration = Date.now() - startTime.getTime();
96
- captureEvent(server, event);
95
+ captureEvent(server, event, logger);
97
96
  } catch (error) {
98
- log(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
97
+ logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
99
98
  }
100
99
  }
101
- function publishFailedToolEvent(server, event, error, startTime, conversation) {
100
+ function publishFailedToolEvent(server, event, error, startTime, conversation, logger) {
102
101
  if (!event) return;
103
102
  try {
104
103
  if (conversation.minted) event.conversationId = void 0;
105
104
  event.isError = true;
106
105
  event.error = captureException(error);
107
106
  event.duration = Date.now() - startTime.getTime();
108
- captureEvent(server, event);
107
+ captureEvent(server, event, logger);
109
108
  } catch (publishError) {
110
- 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}`);
111
110
  }
112
111
  }
113
112
  function patchRequestHandlers(server, patches) {
@@ -124,7 +123,7 @@ function patchRequestHandlers(server, patches) {
124
123
  return originalSetRequestHandler(requestSchema, (request, extra)=>patch(server, originalHandler, request, extra));
125
124
  };
126
125
  }
127
- async function handleListToolsRequest(server, originalListToolsHandler, request, extra) {
126
+ async function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {
128
127
  const data = getServerTrackingData(server);
129
128
  const startTime = new Date();
130
129
  const event = {
@@ -135,19 +134,19 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
135
134
  };
136
135
  stampMetaClientInfo(event, request);
137
136
  if (data) await applyResolvedMetadata(event, data, request, extra);
138
- const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event);
137
+ const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger);
139
138
  if (!data) {
140
- 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.');
141
140
  return {
142
141
  tools
143
142
  };
144
143
  }
145
144
  if (0 === tools.length) {
146
- 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().');
147
146
  event.error = captureException('No tools were sent to MCP client.');
148
147
  event.isError = true;
149
148
  event.duration = Date.now() - startTime.getTime();
150
- captureEvent(server, event);
149
+ captureEvent(server, event, data.logger);
151
150
  return {
152
151
  tools
153
152
  };
@@ -158,7 +157,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
158
157
  event.listedToolNames = collectListedToolNames(tools);
159
158
  event.isError = false;
160
159
  event.duration = Date.now() - startTime.getTime();
161
- captureEvent(server, event);
160
+ captureEvent(server, event, data.logger);
162
161
  return {
163
162
  tools
164
163
  };
@@ -171,14 +170,14 @@ function collectListedToolNames(tools) {
171
170
  const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);
172
171
  return names.length > 0 ? names : void 0;
173
172
  }
174
- async function getTracedToolsList(server, originalListToolsHandler, request, extra, event) {
173
+ async function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger) {
175
174
  try {
176
175
  const data = getServerTrackingData(server);
177
176
  const originalResponse = await originalListToolsHandler(request, extra);
178
177
  let tools = originalResponse.tools || [];
179
178
  if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);
180
- if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context));
181
- if (data?.options.enableConversationId) tools = addConversationIdToTools(tools, resolveMissingCapabilityToolName(data.options));
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);
182
181
  if (data?.options.reportMissing) {
183
182
  const missingToolName = resolveMissingCapabilityToolName(data.options);
184
183
  const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
@@ -190,11 +189,11 @@ async function getTracedToolsList(server, originalListToolsHandler, request, ext
190
189
  }
191
190
  return tools;
192
191
  } catch (error) {
193
- 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}`);
194
193
  event.error = captureException(error);
195
194
  event.isError = true;
196
195
  event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;
197
- captureEvent(server, event);
196
+ captureEvent(server, event, logger);
198
197
  throw error;
199
198
  }
200
199
  }
@@ -239,7 +238,7 @@ function mintStatelessSessionOnInitialize(server, data, request, extra) {
239
238
  setServerTrackingData(server, data);
240
239
  return sessionId;
241
240
  } catch (error) {
242
- 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}`);
243
242
  return;
244
243
  }
245
244
  }
@@ -255,7 +254,7 @@ function upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiate
255
254
  });
256
255
  writeSessionIdToTransport(transport, token);
257
256
  } catch (error) {
258
- 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}`);
259
258
  }
260
259
  }
261
260
  function readInitializeClientInfo(request) {
@@ -267,10 +266,10 @@ function readInitializeClientInfo(request) {
267
266
  version: 'string' == typeof version ? version : void 0
268
267
  };
269
268
  }
270
- async function handleInitializeRequest(server, originalInitializeHandler, request, extra) {
269
+ async function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {
271
270
  const data = getServerTrackingData(server);
272
271
  if (!data) {
273
- 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.');
274
273
  return await originalInitializeHandler(request, extra);
275
274
  }
276
275
  const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);
@@ -292,7 +291,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
292
291
  data.sessionInfo.protocolVersion = negotiatedProtocolVersion;
293
292
  setServerTrackingData(server, data);
294
293
  if (mintedSessionId) upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiatedProtocolVersion);
295
- captureEvent(server, event);
294
+ captureEvent(server, event, data.logger);
296
295
  return result;
297
296
  }
298
297
  function readProtocolVersion(result, request) {
@@ -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,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"}
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,7 +47,7 @@ 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
  }
@@ -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,7 +17,7 @@ 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
  }
@@ -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
  }
@@ -3,12 +3,20 @@
3
3
  *
4
4
  * MCP servers running over the STDIO transport use stdout/stderr to exchange
5
5
  * protocol messages, so we cannot use the default `console.log`. We accept a
6
- * `logger` option on the public API; when omitted, log calls are silently
7
- * dropped. Errors that affect tracking should still be observable in apps that
8
- * want them, so the consumer can plug in any function (e.g. `console.error`
9
- * for non-STDIO transports, a file logger, etc.).
6
+ * `logger` option on the public API or the legacy logger configured through
7
+ * `setLogger`; when neither is configured, log calls are silently dropped.
8
+ * Errors that affect tracking should still be observable in apps that want
9
+ * them, so the consumer can plug in any function (e.g. `console.error` for
10
+ * non-STDIO transports, a file logger, etc.).
10
11
  */
11
12
  export type LoggerFn = (message: string) => void;
12
13
  export declare function setLogger(logger: LoggerFn | undefined): void;
14
+ /**
15
+ * Creates a safe logger for one instrumented server. A server-specific logger
16
+ * remains isolated, while an omitted logger preserves the legacy `setLogger`
17
+ * fallback.
18
+ */
19
+ export declare function createLogger(logger: LoggerFn | undefined): LoggerFn;
20
+ /** Logs through the legacy module-level logger configured by {@link setLogger}. */
13
21
  export declare function log(message: string): void;
14
22
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/extensions/logger.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAIhD,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAE5D;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQzC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/extensions/logger.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAIhD,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAE5D;AAYD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAEnE;AAED,mFAAmF;AACnF,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC"}
@@ -24,6 +24,7 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
+ createLogger: ()=>createLogger,
27
28
  log: ()=>log,
28
29
  setLogger: ()=>setLogger
29
30
  });
@@ -31,14 +32,22 @@ let activeLogger;
31
32
  function setLogger(logger) {
32
33
  activeLogger = logger;
33
34
  }
34
- function log(message) {
35
- if (activeLogger) try {
36
- activeLogger(message);
35
+ function writeLog(logger, message) {
36
+ if (logger) try {
37
+ logger(message);
37
38
  } catch {}
38
39
  }
40
+ function createLogger(logger) {
41
+ return logger ? (message)=>writeLog(logger, message) : log;
42
+ }
43
+ function log(message) {
44
+ writeLog(activeLogger, message);
45
+ }
46
+ exports.createLogger = __webpack_exports__.createLogger;
39
47
  exports.log = __webpack_exports__.log;
40
48
  exports.setLogger = __webpack_exports__.setLogger;
41
49
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
50
+ "createLogger",
42
51
  "log",
43
52
  "setLogger"
44
53
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
@@ -2,9 +2,15 @@ let activeLogger;
2
2
  function setLogger(logger) {
3
3
  activeLogger = logger;
4
4
  }
5
- function log(message) {
6
- if (activeLogger) try {
7
- activeLogger(message);
5
+ function writeLog(logger, message) {
6
+ if (logger) try {
7
+ logger(message);
8
8
  } catch {}
9
9
  }
10
- export { log, setLogger };
10
+ function createLogger(logger) {
11
+ return logger ? (message)=>writeLog(logger, message) : log;
12
+ }
13
+ function log(message) {
14
+ writeLog(activeLogger, message);
15
+ }
16
+ export { createLogger, log, setLogger };
@@ -1,5 +1,6 @@
1
1
  import type { PostHog } from 'posthog-node';
2
2
  import type { BeforeSendFn, Event, McpEvent } from '../types';
3
+ import { type LoggerFn } from './logger';
3
4
  import { type PostHogCaptureEvent } from './posthog-events';
4
5
  /** Per-event toggles consulted by the sink when fanning out an event. */
5
6
  export interface McpCaptureOptions {
@@ -18,7 +19,7 @@ export interface McpCaptureOptions {
18
19
  * and the test harness call it, so tests assert on exactly the payloads that
19
20
  * reach `posthog.capture()`.
20
21
  */
21
- export declare function processMcpEvent(event: McpEvent, options: McpCaptureOptions): Promise<{
22
+ export declare function processMcpEvent(event: McpEvent, options: McpCaptureOptions, logger?: LoggerFn): Promise<{
22
23
  event: Event;
23
24
  captures: PostHogCaptureEvent[];
24
25
  } | null>;
@@ -33,7 +34,8 @@ export declare function processMcpEvent(event: McpEvent, options: McpCaptureOpti
33
34
  */
34
35
  export declare class McpEventSink {
35
36
  private readonly posthog;
36
- constructor(posthog: PostHog);
37
+ private readonly logger;
38
+ constructor(posthog: PostHog, logger?: LoggerFn);
37
39
  /**
38
40
  * Push an MCP event through the pipeline (sanitize → truncate → fan out →
39
41
  * beforeSend → capture). Errors at any stage are logged and the event is
@@ -1 +1 @@
1
- {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/extensions/sink.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7D,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,kBAAkB,CAAA;AAKtF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,0BAA0B,EAAE,OAAO,CAAA;IACnC,kFAAkF;IAClF,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BnE;AA4BD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAE7C;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmC1E"}
1
+ {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/extensions/sink.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,kBAAkB,CAAA;AAKtF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,0BAA0B,EAAE,OAAO,CAAA;IACnC,kFAAkF;IAClF,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,iBAAiB,EAC1B,MAAM,GAAE,QAAc,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BnE;AA6BD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,QAAc;IAGzC;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmC1E"}
@@ -33,18 +33,18 @@ const external_posthog_events_js_namespaceObject = require("./posthog-events.js"
33
33
  const external_ids_js_namespaceObject = require("./ids.js");
34
34
  const external_sanitization_js_namespaceObject = require("./sanitization.js");
35
35
  const external_truncation_js_namespaceObject = require("./truncation.js");
36
- async function processMcpEvent(event, options) {
36
+ async function processMcpEvent(event, options, logger = external_logger_js_namespaceObject.log) {
37
37
  let processed = event;
38
38
  try {
39
39
  processed = (0, external_sanitization_js_namespaceObject.sanitizeEvent)(processed);
40
40
  } catch (err) {
41
- (0, external_logger_js_namespaceObject.log)(`Failed to sanitize event: ${err}`);
41
+ logger(`Failed to sanitize event: ${err}`);
42
42
  return null;
43
43
  }
44
44
  try {
45
45
  processed = (0, external_truncation_js_namespaceObject.truncateEvent)(processed);
46
46
  } catch (err) {
47
- (0, external_logger_js_namespaceObject.log)(`Failed to truncate event: ${err}`);
47
+ logger(`Failed to truncate event: ${err}`);
48
48
  return null;
49
49
  }
50
50
  processed.id = processed.id || (0, external_ids_js_namespaceObject.newPrefixedId)('evt');
@@ -52,29 +52,30 @@ async function processMcpEvent(event, options) {
52
52
  const built = (0, external_posthog_events_js_namespaceObject.buildPostHogCaptureEvents)(fullEvent, {
53
53
  enableExceptionAutocapture: options.enableExceptionAutocapture
54
54
  });
55
- const captures = await applyBeforeSend(built, options.beforeSend);
55
+ const captures = await applyBeforeSend(built, options.beforeSend, logger);
56
56
  return {
57
57
  event: fullEvent,
58
58
  captures
59
59
  };
60
60
  }
61
- async function applyBeforeSend(captures, beforeSend) {
61
+ async function applyBeforeSend(captures, beforeSend, logger) {
62
62
  if (!beforeSend) return captures;
63
63
  const kept = [];
64
64
  for (const capture of captures)try {
65
65
  const result = await beforeSend(capture);
66
66
  if (result) kept.push(result);
67
67
  } catch (err) {
68
- (0, external_logger_js_namespaceObject.log)(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);
68
+ logger(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);
69
69
  }
70
70
  return kept;
71
71
  }
72
72
  class McpEventSink {
73
- constructor(posthog){
73
+ constructor(posthog, logger = external_logger_js_namespaceObject.log){
74
74
  this.posthog = posthog;
75
+ this.logger = logger;
75
76
  }
76
77
  async capture(event, options) {
77
- const result = await processMcpEvent(event, options);
78
+ const result = await processMcpEvent(event, options, this.logger);
78
79
  if (!result) return;
79
80
  const { event: fullEvent, captures } = result;
80
81
  try {
@@ -91,9 +92,9 @@ class McpEventSink {
91
92
  uuid: (0, core_namespaceObject.uuidv7)()
92
93
  });
93
94
  }
94
- (0, external_logger_js_namespaceObject.log)(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId || 'anonymous'}`);
95
+ this.logger(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId ? 'identified' : 'anonymous'}`);
95
96
  } catch (err) {
96
- (0, external_logger_js_namespaceObject.log)(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);
97
+ this.logger(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);
97
98
  }
98
99
  }
99
100
  }
@@ -4,18 +4,18 @@ import { buildPostHogCaptureEvents } from "./posthog-events.mjs";
4
4
  import { newPrefixedId } from "./ids.mjs";
5
5
  import { sanitizeEvent } from "./sanitization.mjs";
6
6
  import { truncateEvent } from "./truncation.mjs";
7
- async function processMcpEvent(event, options) {
7
+ async function processMcpEvent(event, options, logger = log) {
8
8
  let processed = event;
9
9
  try {
10
10
  processed = sanitizeEvent(processed);
11
11
  } catch (err) {
12
- log(`Failed to sanitize event: ${err}`);
12
+ logger(`Failed to sanitize event: ${err}`);
13
13
  return null;
14
14
  }
15
15
  try {
16
16
  processed = truncateEvent(processed);
17
17
  } catch (err) {
18
- log(`Failed to truncate event: ${err}`);
18
+ logger(`Failed to truncate event: ${err}`);
19
19
  return null;
20
20
  }
21
21
  processed.id = processed.id || newPrefixedId('evt');
@@ -23,29 +23,30 @@ async function processMcpEvent(event, options) {
23
23
  const built = buildPostHogCaptureEvents(fullEvent, {
24
24
  enableExceptionAutocapture: options.enableExceptionAutocapture
25
25
  });
26
- const captures = await applyBeforeSend(built, options.beforeSend);
26
+ const captures = await applyBeforeSend(built, options.beforeSend, logger);
27
27
  return {
28
28
  event: fullEvent,
29
29
  captures
30
30
  };
31
31
  }
32
- async function applyBeforeSend(captures, beforeSend) {
32
+ async function applyBeforeSend(captures, beforeSend, logger) {
33
33
  if (!beforeSend) return captures;
34
34
  const kept = [];
35
35
  for (const capture of captures)try {
36
36
  const result = await beforeSend(capture);
37
37
  if (result) kept.push(result);
38
38
  } catch (err) {
39
- log(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);
39
+ logger(`beforeSend threw for event ${capture.event}; dropping it: ${err}`);
40
40
  }
41
41
  return kept;
42
42
  }
43
43
  class McpEventSink {
44
- constructor(posthog){
44
+ constructor(posthog, logger = log){
45
45
  this.posthog = posthog;
46
+ this.logger = logger;
46
47
  }
47
48
  async capture(event, options) {
48
- const result = await processMcpEvent(event, options);
49
+ const result = await processMcpEvent(event, options, this.logger);
49
50
  if (!result) return;
50
51
  const { event: fullEvent, captures } = result;
51
52
  try {
@@ -62,9 +63,9 @@ class McpEventSink {
62
63
  uuid: uuidv7()
63
64
  });
64
65
  }
65
- log(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId || 'anonymous'}`);
66
+ this.logger(`Captured PostHog event ${fullEvent.id} | ${fullEvent.eventType} | ${fullEvent.duration} ms | ${fullEvent.identifyActorGivenId ? 'identified' : 'anonymous'}`);
66
67
  } catch (err) {
67
- log(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);
68
+ this.logger(`Failed to capture PostHog event ${fullEvent.id}: ${err}`);
68
69
  }
69
70
  }
70
71
  }
@@ -1,4 +1,5 @@
1
1
  import { type CallToolResult, type ListToolsResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { type LoggerFn } from './logger';
2
3
  export declare const GET_MORE_TOOLS_NAME: "get_more_tools";
3
4
  /**
4
5
  * The configured name of the `get_more_tools` virtual tool, falling back to the
@@ -19,6 +20,6 @@ export declare function getReportMissingToolDescriptor(name?: string): ReportMis
19
20
  export declare function getMoreToolsResult(): CallToolResult;
20
21
  export declare function handleReportMissing(args: {
21
22
  context: string;
22
- }): CallToolResult;
23
+ }, logger?: LoggerFn): CallToolResult;
23
24
  export {};
24
25
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/extensions/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAG9F,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAE5D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEzG;AAED,KAAK,2BAA2B,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,wBAAgB,8BAA8B,CAAC,IAAI,GAAE,MAA4B,GAAG,2BAA2B,CA6B9G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CASnD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAG7E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/extensions/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAC9F,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAE5D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEzG;AAED,KAAK,2BAA2B,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,wBAAgB,8BAA8B,CAAC,IAAI,GAAE,MAA4B,GAAG,2BAA2B,CA6B9G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CASnD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,GAAE,QAAc,GAAG,cAAc,CAGrG"}
@@ -70,8 +70,8 @@ function getMoreToolsResult() {
70
70
  ]
71
71
  };
72
72
  }
73
- function handleReportMissing(args) {
74
- (0, external_logger_js_namespaceObject.log)(`Missing tool reported: ${JSON.stringify(args)}`);
73
+ function handleReportMissing(args, logger = external_logger_js_namespaceObject.log) {
74
+ logger(`Missing tool reported: ${JSON.stringify(args)}`);
75
75
  return getMoreToolsResult();
76
76
  }
77
77
  exports.GET_MORE_TOOLS_NAME = __webpack_exports__.GET_MORE_TOOLS_NAME;
@@ -38,8 +38,8 @@ function getMoreToolsResult() {
38
38
  ]
39
39
  };
40
40
  }
41
- function handleReportMissing(args) {
42
- log(`Missing tool reported: ${JSON.stringify(args)}`);
41
+ function handleReportMissing(args, logger = log) {
42
+ logger(`Missing tool reported: ${JSON.stringify(args)}`);
43
43
  return getMoreToolsResult();
44
44
  }
45
45
  export { GET_MORE_TOOLS_NAME, getMoreToolsResult, getReportMissingToolDescriptor, handleReportMissing, resolveMissingCapabilityToolName };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAkCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAoFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAuFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}