@posthog/mcp 0.10.4 → 0.10.6

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 -8
  12. package/dist/extensions/context-parameters.mjs +4 -7
  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 +5 -6
  16. package/dist/extensions/conversation-id.mjs +5 -5
  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 +29 -30
  20. package/dist/extensions/instrument-highlevel.mjs +30 -31
  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 +15 -11
  24. package/dist/extensions/instrument-lowlevel.mjs +16 -12
  25. package/dist/extensions/instrumentation.d.ts +9 -8
  26. package/dist/extensions/instrumentation.d.ts.map +1 -1
  27. package/dist/extensions/instrumentation.js +84 -40
  28. package/dist/extensions/instrumentation.mjs +80 -39
  29. package/dist/extensions/intent.d.ts.map +1 -1
  30. package/dist/extensions/intent.js +2 -3
  31. package/dist/extensions/intent.mjs +2 -3
  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 +3 -3
  56. package/src/extensions/capture.ts +3 -3
  57. package/src/extensions/compatibility.ts +16 -16
  58. package/src/extensions/context-parameters.ts +8 -12
  59. package/src/extensions/conversation-id.ts +14 -7
  60. package/src/extensions/instrument-highlevel.ts +45 -44
  61. package/src/extensions/instrument-lowlevel.ts +30 -15
  62. package/src/extensions/instrumentation.ts +119 -42
  63. package/src/extensions/intent.ts +2 -8
  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
@@ -24,11 +24,12 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- readToolMetaCategory: ()=>readToolMetaCategory,
27
+ isToolAdvertised: ()=>isToolAdvertised,
28
28
  cacheToolDescriptions: ()=>cacheToolDescriptions,
29
- cacheToolCategories: ()=>cacheToolCategories,
30
29
  handleInitializeRequest: ()=>handleInitializeRequest,
31
30
  captureToolCall: ()=>captureToolCall,
31
+ readToolMetaCategory: ()=>readToolMetaCategory,
32
+ cacheToolCategories: ()=>cacheToolCategories,
32
33
  handleListToolsRequest: ()=>handleListToolsRequest,
33
34
  patchRequestHandlers: ()=>patchRequestHandlers
34
35
  });
@@ -41,7 +42,6 @@ const external_event_types_js_namespaceObject = require("./event-types.js");
41
42
  const external_exceptions_js_namespaceObject = require("./exceptions.js");
42
43
  const external_intent_js_namespaceObject = require("./intent.js");
43
44
  const external_internal_js_namespaceObject = require("./internal.js");
44
- const external_logger_js_namespaceObject = require("./logger.js");
45
45
  const external_mcp_payloads_js_namespaceObject = require("./mcp-payloads.js");
46
46
  const external_mcp_sdk_compat_js_namespaceObject = require("./mcp-sdk-compat.js");
47
47
  const external_session_js_namespaceObject = require("./session.js");
@@ -50,26 +50,26 @@ const external_tools_js_namespaceObject = require("./tools.js");
50
50
  const external_tracing_helpers_js_namespaceObject = require("./tracing-helpers.js");
51
51
  async function captureToolCall(params) {
52
52
  const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;
53
- const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership);
54
- 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));
53
+ const resolvedEventType = eventType ?? external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpToolsCall;
54
+ const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership, resolvedEventType === external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpMissingCapability);
55
+ const conversation = (0, external_conversation_id_js_namespaceObject.resolveConversationId)(ownership.conversationId, request.params?.arguments, request.params?.name, resolvedEventType === external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpMissingCapability ? (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options) : '');
55
56
  const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);
56
57
  const startTime = new Date();
57
- const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType ?? external_event_types_js_namespaceObject.MCPAnalyticsEventType.mcpToolsCall);
58
+ const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, resolvedEventType);
58
59
  if (event && explicitContextIntent) (0, external_intent_js_namespaceObject.setExplicitContextIntent)(event, explicitContextIntent);
59
60
  let result;
60
61
  try {
61
62
  result = await execute(downstreamRequest);
62
63
  } catch (error) {
63
- publishFailedToolEvent(server, event, error, startTime, conversation);
64
+ publishFailedToolEvent(server, event, error, startTime, conversation, data.logger);
64
65
  throw error;
65
66
  }
66
67
  const finalResult = applyConversationPromptBack(event, result, conversation);
67
- publishSuccessfulToolEvent(server, event, finalResult, startTime, takeCapturedError);
68
+ publishSuccessfulToolEvent(server, event, finalResult, startTime, data.logger, takeCapturedError);
68
69
  return finalResult;
69
70
  }
70
- function getActiveAnalyticsParameterOwnership(data, toolName, override) {
71
+ function getActiveAnalyticsParameterOwnership(data, toolName, override, isMissingCapabilityTool) {
71
72
  const ownership = override ?? (toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0);
72
- const isMissingCapabilityTool = toolName === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options);
73
73
  return {
74
74
  context: !isMissingCapabilityTool && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(data.options.context) && ownership?.context === true,
75
75
  conversationId: !isMissingCapabilityTool && true === data.options.enableConversationId && ownership?.conversationId === true
@@ -107,7 +107,7 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
107
107
  (0, external_intent_js_namespaceObject.setEventIntent)(event, await (0, external_intent_js_namespaceObject.resolveToolCallIntent)(data, request, ownership.context, extra));
108
108
  return event;
109
109
  } catch (error) {
110
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
110
+ data.logger(`Warning: PostHog MCP analytics instrumentation failed for tool ${request.params?.name}, the tool will still run - ${error}`);
111
111
  return null;
112
112
  }
113
113
  }
@@ -117,7 +117,7 @@ function applyConversationPromptBack(event, result, conversation) {
117
117
  if (event) event.conversationId = void 0;
118
118
  return result;
119
119
  }
120
- function publishSuccessfulToolEvent(server, event, result, startTime, takeCapturedError) {
120
+ function publishSuccessfulToolEvent(server, event, result, startTime, logger, takeCapturedError) {
121
121
  if (!event) return;
122
122
  try {
123
123
  if ((0, external_tracing_helpers_js_namespaceObject.isToolResultError)(result)) {
@@ -127,38 +127,71 @@ function publishSuccessfulToolEvent(server, event, result, startTime, takeCaptur
127
127
  } else event.isError = false;
128
128
  event.response = result;
129
129
  event.duration = Date.now() - startTime.getTime();
130
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
130
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
131
131
  } catch (error) {
132
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
132
+ logger(`Warning: PostHog MCP analytics failed to publish tool event - ${error}`);
133
133
  }
134
134
  }
135
- function publishFailedToolEvent(server, event, error, startTime, conversation) {
135
+ function publishFailedToolEvent(server, event, error, startTime, conversation, logger) {
136
136
  if (!event) return;
137
137
  try {
138
138
  if (conversation.minted) event.conversationId = void 0;
139
139
  event.isError = true;
140
140
  event.error = (0, external_exceptions_js_namespaceObject.captureException)(error);
141
141
  event.duration = Date.now() - startTime.getTime();
142
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
142
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
143
143
  } catch (publishError) {
144
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
144
+ logger(`Warning: PostHog MCP analytics failed to publish failed tool event - ${publishError}`);
145
145
  }
146
146
  }
147
+ const originalRequestHandlers = new WeakMap();
148
+ function rememberOriginalRequestHandler(server, handlerName, originalHandler) {
149
+ let handlers = originalRequestHandlers.get(server);
150
+ if (!handlers) {
151
+ handlers = new Map();
152
+ originalRequestHandlers.set(server, handlers);
153
+ }
154
+ handlers.set(handlerName, originalHandler);
155
+ }
147
156
  function patchRequestHandlers(server, patches) {
148
157
  for (const [handlerName, patch] of Object.entries(patches)){
149
158
  const originalHandler = server._requestHandlers.get(handlerName);
150
- if (originalHandler) server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));
159
+ if (originalHandler) {
160
+ rememberOriginalRequestHandler(server, handlerName, originalHandler);
161
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));
162
+ }
151
163
  }
152
164
  const originalSetRequestHandler = server.setRequestHandler.bind(server);
153
165
  server.setRequestHandler = (requestSchema, originalHandler)=>{
154
166
  const shape = (0, external_mcp_sdk_compat_js_namespaceObject.getObjectShape)(requestSchema);
155
167
  const handlerName = shape?.method ? (0, external_mcp_sdk_compat_js_namespaceObject.getLiteralValue)(shape.method) : void 0;
156
168
  const patch = 'string' == typeof handlerName ? patches[handlerName] : void 0;
157
- if (!patch) return originalSetRequestHandler(requestSchema, originalHandler);
158
- return originalSetRequestHandler(requestSchema, (request, extra)=>patch(server, originalHandler, request, extra));
169
+ if (!patch || 'string' != typeof handlerName) return originalSetRequestHandler(requestSchema, originalHandler);
170
+ const result = originalSetRequestHandler(requestSchema, originalHandler);
171
+ const registeredHandler = server._requestHandlers.get(handlerName);
172
+ if (registeredHandler) {
173
+ rememberOriginalRequestHandler(server, handlerName, registeredHandler);
174
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, registeredHandler, request, extra));
175
+ }
176
+ return result;
159
177
  };
160
178
  }
161
- async function handleListToolsRequest(server, originalListToolsHandler, request, extra) {
179
+ async function isToolAdvertised(server, toolName, extra, logger) {
180
+ const listHandler = originalRequestHandlers.get(server)?.get('tools/list');
181
+ if (!listHandler || !server._requestHandlers.has('tools/list')) return;
182
+ try {
183
+ const response = await listHandler({
184
+ method: 'tools/list',
185
+ params: {}
186
+ }, extra);
187
+ if (!response || !Array.isArray(response.tools)) return;
188
+ return response.tools.some((tool)=>tool?.name === toolName);
189
+ } catch (error) {
190
+ logger(`Warning: PostHog MCP analytics could not determine whether "${toolName}" is advertised; delegating to the server - ${error}`);
191
+ return;
192
+ }
193
+ }
194
+ async function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {
162
195
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
163
196
  const startTime = new Date();
164
197
  const event = {
@@ -169,19 +202,19 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
169
202
  };
170
203
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
171
204
  if (data) await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
172
- const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event);
205
+ const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger);
173
206
  if (!data) {
174
- (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.');
207
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
175
208
  return {
176
209
  tools
177
210
  };
178
211
  }
179
212
  if (0 === tools.length) {
180
- (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().');
213
+ 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().');
181
214
  event.error = (0, external_exceptions_js_namespaceObject.captureException)('No tools were sent to MCP client.');
182
215
  event.isError = true;
183
216
  event.duration = Date.now() - startTime.getTime();
184
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
217
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
185
218
  return {
186
219
  tools
187
220
  };
@@ -192,7 +225,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
192
225
  event.listedToolNames = collectListedToolNames(tools);
193
226
  event.isError = false;
194
227
  event.duration = Date.now() - startTime.getTime();
195
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
228
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
196
229
  return {
197
230
  tools
198
231
  };
@@ -205,18 +238,27 @@ function collectListedToolNames(tools) {
205
238
  const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);
206
239
  return names.length > 0 ? names : void 0;
207
240
  }
208
- async function getTracedToolsList(server, originalListToolsHandler, request, extra, event) {
241
+ async function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger) {
209
242
  try {
210
243
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
211
244
  const originalResponse = await originalListToolsHandler(request, extra);
212
- let tools = originalResponse.tools || [];
245
+ let tools = [
246
+ ...originalResponse.tools || []
247
+ ];
213
248
  if (data) cacheToolAnalyticsParameterOwnership(data.toolAnalyticsParameterOwnership, tools);
214
- 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));
215
- if (data?.options.enableConversationId) tools = (0, external_conversation_id_js_namespaceObject.addConversationIdToTools)(tools, (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options));
216
- if (data?.options.reportMissing) {
249
+ 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);
250
+ if (data) {
217
251
  const missingToolName = (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options);
218
- const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
219
- if (!alreadyPresent) tools.push((0, external_tools_js_namespaceObject.getReportMissingToolDescriptor)(missingToolName));
252
+ let injectedMissingCapabilityTool = false;
253
+ if (data.options.reportMissing) {
254
+ const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
255
+ if (alreadyPresent) data.logger(`Warning: Cannot inject missing-capability tool "${missingToolName}" because a real tool already uses that name. The real tool will not be intercepted.`);
256
+ else {
257
+ tools.push((0, external_tools_js_namespaceObject.getReportMissingToolDescriptor)(missingToolName));
258
+ injectedMissingCapabilityTool = true;
259
+ }
260
+ }
261
+ if (data.options.enableConversationId) tools = (0, external_conversation_id_js_namespaceObject.addConversationIdToTools)(tools, missingToolName, injectedMissingCapabilityTool, data.logger);
220
262
  }
221
263
  if (data) {
222
264
  cacheToolDescriptions(data.toolDescriptions, tools);
@@ -224,11 +266,11 @@ async function getTracedToolsList(server, originalListToolsHandler, request, ext
224
266
  }
225
267
  return tools;
226
268
  } catch (error) {
227
- (0, external_logger_js_namespaceObject.log)(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
269
+ logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
228
270
  event.error = (0, external_exceptions_js_namespaceObject.captureException)(error);
229
271
  event.isError = true;
230
272
  event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;
231
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
273
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, logger);
232
274
  throw error;
233
275
  }
234
276
  }
@@ -273,7 +315,7 @@ function mintStatelessSessionOnInitialize(server, data, request, extra) {
273
315
  (0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
274
316
  return sessionId;
275
317
  } catch (error) {
276
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
318
+ data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
277
319
  return;
278
320
  }
279
321
  }
@@ -289,7 +331,7 @@ function upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiate
289
331
  });
290
332
  (0, external_session_token_js_namespaceObject.writeSessionIdToTransport)(transport, token);
291
333
  } catch (error) {
292
- (0, external_logger_js_namespaceObject.log)(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
334
+ data.logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
293
335
  }
294
336
  }
295
337
  function readInitializeClientInfo(request) {
@@ -301,10 +343,10 @@ function readInitializeClientInfo(request) {
301
343
  version: 'string' == typeof version ? version : void 0
302
344
  };
303
345
  }
304
- async function handleInitializeRequest(server, originalInitializeHandler, request, extra) {
346
+ async function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {
305
347
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
306
348
  if (!data) {
307
- (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.');
349
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
308
350
  return await originalInitializeHandler(request, extra);
309
351
  }
310
352
  const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);
@@ -326,7 +368,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
326
368
  data.sessionInfo.protocolVersion = negotiatedProtocolVersion;
327
369
  (0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
328
370
  if (mintedSessionId) upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiatedProtocolVersion);
329
- (0, external_capture_js_namespaceObject.captureEvent)(server, event);
371
+ (0, external_capture_js_namespaceObject.captureEvent)(server, event, data.logger);
330
372
  return result;
331
373
  }
332
374
  function readProtocolVersion(result, request) {
@@ -340,6 +382,7 @@ exports.cacheToolDescriptions = __webpack_exports__.cacheToolDescriptions;
340
382
  exports.captureToolCall = __webpack_exports__.captureToolCall;
341
383
  exports.handleInitializeRequest = __webpack_exports__.handleInitializeRequest;
342
384
  exports.handleListToolsRequest = __webpack_exports__.handleListToolsRequest;
385
+ exports.isToolAdvertised = __webpack_exports__.isToolAdvertised;
343
386
  exports.patchRequestHandlers = __webpack_exports__.patchRequestHandlers;
344
387
  exports.readToolMetaCategory = __webpack_exports__.readToolMetaCategory;
345
388
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -348,6 +391,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
348
391
  "captureToolCall",
349
392
  "handleInitializeRequest",
350
393
  "handleListToolsRequest",
394
+ "isToolAdvertised",
351
395
  "patchRequestHandlers",
352
396
  "readToolMetaCategory"
353
397
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
@@ -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";
@@ -16,26 +15,26 @@ import { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from
16
15
  import { applyResolvedMetadata, isToolResultError } from "./tracing-helpers.mjs";
17
16
  async function captureToolCall(params) {
18
17
  const { server, data, request, extra, execute, parameterOwnership, eventType, explicitContextIntent, takeCapturedError } = params;
19
- const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership);
20
- const conversation = resolveConversationId(ownership.conversationId, request.params?.arguments, request.params?.name, resolveMissingCapabilityToolName(data.options));
18
+ const resolvedEventType = eventType ?? MCPAnalyticsEventType.mcpToolsCall;
19
+ const ownership = getActiveAnalyticsParameterOwnership(data, request.params?.name, parameterOwnership, resolvedEventType === MCPAnalyticsEventType.mcpMissingCapability);
20
+ const conversation = resolveConversationId(ownership.conversationId, request.params?.arguments, request.params?.name, resolvedEventType === MCPAnalyticsEventType.mcpMissingCapability ? resolveMissingCapabilityToolName(data.options) : '');
21
21
  const downstreamRequest = cloneRequestWithoutOwnedAnalyticsArguments(request, ownership);
22
22
  const startTime = new Date();
23
- const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, eventType ?? MCPAnalyticsEventType.mcpToolsCall);
23
+ const event = await prepareToolCallEvent(server, data, request, downstreamRequest, extra, startTime, conversation, ownership, resolvedEventType);
24
24
  if (event && explicitContextIntent) setExplicitContextIntent(event, explicitContextIntent);
25
25
  let result;
26
26
  try {
27
27
  result = await execute(downstreamRequest);
28
28
  } catch (error) {
29
- publishFailedToolEvent(server, event, error, startTime, conversation);
29
+ publishFailedToolEvent(server, event, error, startTime, conversation, data.logger);
30
30
  throw error;
31
31
  }
32
32
  const finalResult = applyConversationPromptBack(event, result, conversation);
33
- publishSuccessfulToolEvent(server, event, finalResult, startTime, takeCapturedError);
33
+ publishSuccessfulToolEvent(server, event, finalResult, startTime, data.logger, takeCapturedError);
34
34
  return finalResult;
35
35
  }
36
- function getActiveAnalyticsParameterOwnership(data, toolName, override) {
36
+ function getActiveAnalyticsParameterOwnership(data, toolName, override, isMissingCapabilityTool) {
37
37
  const ownership = override ?? (toolName ? data.toolAnalyticsParameterOwnership.get(toolName) : void 0);
38
- const isMissingCapabilityTool = toolName === resolveMissingCapabilityToolName(data.options);
39
38
  return {
40
39
  context: !isMissingCapabilityTool && isContextEnabled(data.options.context) && ownership?.context === true,
41
40
  conversationId: !isMissingCapabilityTool && true === data.options.enableConversationId && ownership?.conversationId === true
@@ -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,38 +92,71 @@ 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
  }
112
+ const originalRequestHandlers = new WeakMap();
113
+ function rememberOriginalRequestHandler(server, handlerName, originalHandler) {
114
+ let handlers = originalRequestHandlers.get(server);
115
+ if (!handlers) {
116
+ handlers = new Map();
117
+ originalRequestHandlers.set(server, handlers);
118
+ }
119
+ handlers.set(handlerName, originalHandler);
120
+ }
113
121
  function patchRequestHandlers(server, patches) {
114
122
  for (const [handlerName, patch] of Object.entries(patches)){
115
123
  const originalHandler = server._requestHandlers.get(handlerName);
116
- if (originalHandler) server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));
124
+ if (originalHandler) {
125
+ rememberOriginalRequestHandler(server, handlerName, originalHandler);
126
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, originalHandler, request, extra));
127
+ }
117
128
  }
118
129
  const originalSetRequestHandler = server.setRequestHandler.bind(server);
119
130
  server.setRequestHandler = (requestSchema, originalHandler)=>{
120
131
  const shape = getObjectShape(requestSchema);
121
132
  const handlerName = shape?.method ? getLiteralValue(shape.method) : void 0;
122
133
  const patch = 'string' == typeof handlerName ? patches[handlerName] : void 0;
123
- if (!patch) return originalSetRequestHandler(requestSchema, originalHandler);
124
- return originalSetRequestHandler(requestSchema, (request, extra)=>patch(server, originalHandler, request, extra));
134
+ if (!patch || 'string' != typeof handlerName) return originalSetRequestHandler(requestSchema, originalHandler);
135
+ const result = originalSetRequestHandler(requestSchema, originalHandler);
136
+ const registeredHandler = server._requestHandlers.get(handlerName);
137
+ if (registeredHandler) {
138
+ rememberOriginalRequestHandler(server, handlerName, registeredHandler);
139
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, registeredHandler, request, extra));
140
+ }
141
+ return result;
125
142
  };
126
143
  }
127
- async function handleListToolsRequest(server, originalListToolsHandler, request, extra) {
144
+ async function isToolAdvertised(server, toolName, extra, logger) {
145
+ const listHandler = originalRequestHandlers.get(server)?.get('tools/list');
146
+ if (!listHandler || !server._requestHandlers.has('tools/list')) return;
147
+ try {
148
+ const response = await listHandler({
149
+ method: 'tools/list',
150
+ params: {}
151
+ }, extra);
152
+ if (!response || !Array.isArray(response.tools)) return;
153
+ return response.tools.some((tool)=>tool?.name === toolName);
154
+ } catch (error) {
155
+ logger(`Warning: PostHog MCP analytics could not determine whether "${toolName}" is advertised; delegating to the server - ${error}`);
156
+ return;
157
+ }
158
+ }
159
+ async function handleListToolsRequest(server, originalListToolsHandler, request, extra, logger) {
128
160
  const data = getServerTrackingData(server);
129
161
  const startTime = new Date();
130
162
  const event = {
@@ -135,19 +167,19 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
135
167
  };
136
168
  stampMetaClientInfo(event, request);
137
169
  if (data) await applyResolvedMetadata(event, data, request, extra);
138
- const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event);
170
+ const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger);
139
171
  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.');
172
+ 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
173
  return {
142
174
  tools
143
175
  };
144
176
  }
145
177
  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().');
178
+ 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
179
  event.error = captureException('No tools were sent to MCP client.');
148
180
  event.isError = true;
149
181
  event.duration = Date.now() - startTime.getTime();
150
- captureEvent(server, event);
182
+ captureEvent(server, event, data.logger);
151
183
  return {
152
184
  tools
153
185
  };
@@ -158,7 +190,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
158
190
  event.listedToolNames = collectListedToolNames(tools);
159
191
  event.isError = false;
160
192
  event.duration = Date.now() - startTime.getTime();
161
- captureEvent(server, event);
193
+ captureEvent(server, event, data.logger);
162
194
  return {
163
195
  tools
164
196
  };
@@ -171,18 +203,27 @@ function collectListedToolNames(tools) {
171
203
  const names = tools.map((tool)=>tool?.name).filter((name)=>'string' == typeof name);
172
204
  return names.length > 0 ? names : void 0;
173
205
  }
174
- async function getTracedToolsList(server, originalListToolsHandler, request, extra, event) {
206
+ async function getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger) {
175
207
  try {
176
208
  const data = getServerTrackingData(server);
177
209
  const originalResponse = await originalListToolsHandler(request, extra);
178
- let tools = originalResponse.tools || [];
210
+ let tools = [
211
+ ...originalResponse.tools || []
212
+ ];
179
213
  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));
182
- if (data?.options.reportMissing) {
214
+ if (data && isContextEnabled(data.options.context)) tools = addContextParameterToTools(tools, getContextDescription(data.options.context), data.logger);
215
+ if (data) {
183
216
  const missingToolName = resolveMissingCapabilityToolName(data.options);
184
- const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
185
- if (!alreadyPresent) tools.push(getReportMissingToolDescriptor(missingToolName));
217
+ let injectedMissingCapabilityTool = false;
218
+ if (data.options.reportMissing) {
219
+ const alreadyPresent = tools.some((tool)=>tool?.name === missingToolName);
220
+ if (alreadyPresent) data.logger(`Warning: Cannot inject missing-capability tool "${missingToolName}" because a real tool already uses that name. The real tool will not be intercepted.`);
221
+ else {
222
+ tools.push(getReportMissingToolDescriptor(missingToolName));
223
+ injectedMissingCapabilityTool = true;
224
+ }
225
+ }
226
+ if (data.options.enableConversationId) tools = addConversationIdToTools(tools, missingToolName, injectedMissingCapabilityTool, data.logger);
186
227
  }
187
228
  if (data) {
188
229
  cacheToolDescriptions(data.toolDescriptions, tools);
@@ -190,11 +231,11 @@ async function getTracedToolsList(server, originalListToolsHandler, request, ext
190
231
  }
191
232
  return tools;
192
233
  } catch (error) {
193
- log(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
234
+ logger(`Warning: Original list tools handler failed, this suggests an error PostHog MCP analytics did not cause - ${error}`);
194
235
  event.error = captureException(error);
195
236
  event.isError = true;
196
237
  event.duration = event.timestamp ? Date.now() - event.timestamp.getTime() : 0;
197
- captureEvent(server, event);
238
+ captureEvent(server, event, logger);
198
239
  throw error;
199
240
  }
200
241
  }
@@ -239,7 +280,7 @@ function mintStatelessSessionOnInitialize(server, data, request, extra) {
239
280
  setServerTrackingData(server, data);
240
281
  return sessionId;
241
282
  } catch (error) {
242
- log(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
283
+ data.logger(`Warning: PostHog MCP analytics failed to mint a stateless session id - ${error}`);
243
284
  return;
244
285
  }
245
286
  }
@@ -255,7 +296,7 @@ function upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiate
255
296
  });
256
297
  writeSessionIdToTransport(transport, token);
257
298
  } catch (error) {
258
- log(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
299
+ data.logger(`Warning: PostHog MCP analytics failed to upgrade the stateless session token - ${error}`);
259
300
  }
260
301
  }
261
302
  function readInitializeClientInfo(request) {
@@ -267,10 +308,10 @@ function readInitializeClientInfo(request) {
267
308
  version: 'string' == typeof version ? version : void 0
268
309
  };
269
310
  }
270
- async function handleInitializeRequest(server, originalInitializeHandler, request, extra) {
311
+ async function handleInitializeRequest(server, originalInitializeHandler, request, extra, logger) {
271
312
  const data = getServerTrackingData(server);
272
313
  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.');
314
+ 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
315
  return await originalInitializeHandler(request, extra);
275
316
  }
276
317
  const mintedSessionId = mintStatelessSessionOnInitialize(server, data, request, extra);
@@ -292,7 +333,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
292
333
  data.sessionInfo.protocolVersion = negotiatedProtocolVersion;
293
334
  setServerTrackingData(server, data);
294
335
  if (mintedSessionId) upgradeMintedTokenToNegotiated(server, data, mintedSessionId, negotiatedProtocolVersion);
295
- captureEvent(server, event);
336
+ captureEvent(server, event, data.logger);
296
337
  return result;
297
338
  }
298
339
  function readProtocolVersion(result, request) {
@@ -301,4 +342,4 @@ function readProtocolVersion(result, request) {
301
342
  const requested = request.params?.protocolVersion;
302
343
  return 'string' == typeof requested && requested.length > 0 ? requested : void 0;
303
344
  }
304
- export { cacheToolCategories, cacheToolDescriptions, captureToolCall, handleInitializeRequest, handleListToolsRequest, patchRequestHandlers, readToolMetaCategory };
345
+ export { cacheToolCategories, cacheToolDescriptions, captureToolCall, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory };
@@ -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,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"}
@@ -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
54
  async function resolveToolCallIntent(data, request, analyticsOwnsContext, extra) {
56
55
  const contextArgument = getContextArgument(request);
57
- if (analyticsOwnsContext && (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) && 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
24
  async function resolveToolCallIntent(data, request, analyticsOwnsContext, extra) {
26
25
  const contextArgument = getContextArgument(request);
27
- if (analyticsOwnsContext && isContextEnabled(data.options.context) && request.params?.name !== 'get_more_tools' && contextArgument) return {
26
+ if (analyticsOwnsContext && isContextEnabled(data.options.context) && 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"}