@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
@@ -1,4 +1,5 @@
1
1
  import type { MCPServerLike, McpEvent } from '../types';
2
+ import type { LoggerFn } from './logger';
2
3
  /**
3
4
  * Materializes an `McpEvent` against the server's tracking data + session info,
4
5
  * then hands it to the `McpEventSink` (wrapping the user's posthog-node client) for the
@@ -9,5 +10,5 @@ import type { MCPServerLike, McpEvent } from '../types';
9
10
  * Auto-capture callers (tool calls, listings, identify) intentionally ignore the
10
11
  * return value, keeping the tool path isolated from analytics latency/errors.
11
12
  */
12
- export declare function captureEvent(server: MCPServerLike, eventInput: McpEvent): Promise<void> | undefined;
13
+ export declare function captureEvent(server: MCPServerLike, eventInput: McpEvent, logger: LoggerFn): Promise<void> | undefined;
13
14
  //# sourceMappingURL=capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/extensions/capture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAMvD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAkEnG"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/extensions/capture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAkErH"}
@@ -28,11 +28,10 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const external_event_types_js_namespaceObject = require("./event-types.js");
30
30
  const external_internal_js_namespaceObject = require("./internal.js");
31
- const external_logger_js_namespaceObject = require("./logger.js");
32
31
  const external_session_js_namespaceObject = require("./session.js");
33
- function captureEvent(server, eventInput) {
32
+ function captureEvent(server, eventInput, logger) {
34
33
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
35
- if (!data) return void (0, external_logger_js_namespaceObject.log)('Warning: Server tracking data not found. Event will not be published.');
34
+ if (!data) return void logger('Warning: Server tracking data not found. Event will not be published.');
36
35
  const sink = data.sink;
37
36
  if (!sink) return;
38
37
  const sessionInfo = (0, external_session_js_namespaceObject.getSessionInfo)(server, data, eventInput.sessionId);
@@ -1,10 +1,9 @@
1
1
  import { MCPAnalyticsEventType } from "./event-types.mjs";
2
2
  import { getServerTrackingData } from "./internal.mjs";
3
- import { log } from "./logger.mjs";
4
3
  import { getSessionInfo } from "./session.mjs";
5
- function captureEvent(server, eventInput) {
4
+ function captureEvent(server, eventInput, logger) {
6
5
  const data = getServerTrackingData(server);
7
- if (!data) return void log('Warning: Server tracking data not found. Event will not be published.');
6
+ if (!data) return void logger('Warning: Server tracking data not found. Event will not be published.');
8
7
  const sink = data.sink;
9
8
  if (!sink) return;
10
9
  const sessionInfo = getSessionInfo(server, data, eventInput.sessionId);
@@ -1,4 +1,5 @@
1
1
  import type { HighLevelMCPServerLike, MCPServerLike } from '../types';
2
+ import type { LoggerFn } from './logger';
2
3
  type ServerRecord = Record<string, unknown>;
3
4
  /**
4
5
  * PostHog MCP analytics Compatibility Module
@@ -12,12 +13,12 @@ type ServerRecord = Record<string, unknown>;
12
13
  * - Client version detection
13
14
  * - Server info structure
14
15
  */
15
- export declare function logCompatibilityWarning(): void;
16
+ export declare function logCompatibilityWarning(logger: LoggerFn): void;
16
17
  export declare function isHighLevelServer(server: unknown): server is ServerRecord & {
17
18
  server: ServerRecord;
18
19
  };
19
20
  export declare function isLowLevelServer(server: unknown): server is ServerRecord;
20
- export declare function isCompatibleServerType(server: unknown): MCPServerLike | HighLevelMCPServerLike;
21
+ export declare function isCompatibleServerType(server: unknown, logger: LoggerFn): MCPServerLike | HighLevelMCPServerLike;
21
22
  export declare function getMCPCompatibleErrorMessage(error: unknown): string;
22
23
  export {};
23
24
  //# sourceMappingURL=compatibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/extensions/compatibility.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGrE,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3C;;;;;;;;;;;GAWG;AAGH,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAIpG;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAExE;AAGD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,GAAG,sBAAsB,CAgC9F;AAsDD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAanE"}
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/extensions/compatibility.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3C;;;;;;;;;;;GAWG;AAGH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAI9D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAIpG;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAExE;AAGD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,sBAAsB,CAgChH;AAsDD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAanE"}
@@ -24,15 +24,14 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- isLowLevelServer: ()=>isLowLevelServer,
28
- isHighLevelServer: ()=>isHighLevelServer,
29
- logCompatibilityWarning: ()=>logCompatibilityWarning,
27
+ getMCPCompatibleErrorMessage: ()=>getMCPCompatibleErrorMessage,
30
28
  isCompatibleServerType: ()=>isCompatibleServerType,
31
- getMCPCompatibleErrorMessage: ()=>getMCPCompatibleErrorMessage
29
+ isHighLevelServer: ()=>isHighLevelServer,
30
+ isLowLevelServer: ()=>isLowLevelServer,
31
+ logCompatibilityWarning: ()=>logCompatibilityWarning
32
32
  });
33
- const external_logger_js_namespaceObject = require("./logger.js");
34
- function logCompatibilityWarning() {
35
- (0, external_logger_js_namespaceObject.log)('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');
33
+ function logCompatibilityWarning(logger) {
34
+ logger('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');
36
35
  }
37
36
  function isHighLevelServer(server) {
38
37
  return !!server && 'object' == typeof server && 'server' in server && !!server.server && 'object' == typeof server.server;
@@ -40,51 +39,51 @@ function isHighLevelServer(server) {
40
39
  function isLowLevelServer(server) {
41
40
  return !!server && 'object' == typeof server && !('server' in server);
42
41
  }
43
- function isCompatibleServerType(server) {
42
+ function isCompatibleServerType(server, logger) {
44
43
  if (!server || 'object' != typeof server) {
45
- logCompatibilityWarning();
44
+ logCompatibilityWarning(logger);
46
45
  throw new Error("PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.");
47
46
  }
48
47
  if (isHighLevelServer(server)) {
49
48
  if (!server._registeredTools || 'object' != typeof server._registeredTools) {
50
- logCompatibilityWarning();
49
+ logCompatibilityWarning(logger);
51
50
  throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.');
52
51
  }
53
52
  if ('function' != typeof server.tool) {
54
- logCompatibilityWarning();
53
+ logCompatibilityWarning(logger);
55
54
  throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have tool() method. This requires MCP SDK v1.11 or higher.');
56
55
  }
57
56
  const targetServer = server.server;
58
- validateLowLevelServer(targetServer);
57
+ validateLowLevelServer(targetServer, logger);
59
58
  return server;
60
59
  }
61
- validateLowLevelServer(server);
60
+ validateLowLevelServer(server, logger);
62
61
  return server;
63
62
  }
64
- function validateLowLevelServer(server) {
63
+ function validateLowLevelServer(server, logger) {
65
64
  if (!server || 'object' != typeof server) {
66
- logCompatibilityWarning();
65
+ logCompatibilityWarning(logger);
67
66
  throw new Error("PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.");
68
67
  }
69
68
  const serverRecord = server;
70
69
  if ('function' != typeof serverRecord.setRequestHandler) {
71
- logCompatibilityWarning();
70
+ logCompatibilityWarning(logger);
72
71
  throw new Error('PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.');
73
72
  }
74
73
  if (!(serverRecord._requestHandlers && serverRecord._requestHandlers instanceof Map)) {
75
- logCompatibilityWarning();
74
+ logCompatibilityWarning(logger);
76
75
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.');
77
76
  }
78
77
  if ('function' != typeof serverRecord._requestHandlers.get) {
79
- logCompatibilityWarning();
78
+ logCompatibilityWarning(logger);
80
79
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers must be a Map with a get method. This requires MCP SDK v1.11 or higher.');
81
80
  }
82
81
  if ('function' != typeof serverRecord.getClientVersion) {
83
- logCompatibilityWarning();
82
+ logCompatibilityWarning(logger);
84
83
  throw new Error('PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.');
85
84
  }
86
85
  if (!serverRecord._serverInfo || 'object' != typeof serverRecord._serverInfo || !('name' in serverRecord._serverInfo)) {
87
- logCompatibilityWarning();
86
+ logCompatibilityWarning(logger);
88
87
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.');
89
88
  }
90
89
  }
@@ -1,6 +1,5 @@
1
- import { log } from "./logger.mjs";
2
- function logCompatibilityWarning() {
3
- log('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');
1
+ function logCompatibilityWarning(logger) {
2
+ logger('PostHog MCP analytics SDK Compatibility: This version only supports Model Context Protocol TypeScript SDK v1.11 and above. Please upgrade if using an older version.');
4
3
  }
5
4
  function isHighLevelServer(server) {
6
5
  return !!server && 'object' == typeof server && 'server' in server && !!server.server && 'object' == typeof server.server;
@@ -8,51 +7,51 @@ function isHighLevelServer(server) {
8
7
  function isLowLevelServer(server) {
9
8
  return !!server && 'object' == typeof server && !('server' in server);
10
9
  }
11
- function isCompatibleServerType(server) {
10
+ function isCompatibleServerType(server, logger) {
12
11
  if (!server || 'object' != typeof server) {
13
- logCompatibilityWarning();
12
+ logCompatibilityWarning(logger);
14
13
  throw new Error("PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.");
15
14
  }
16
15
  if (isHighLevelServer(server)) {
17
16
  if (!server._registeredTools || 'object' != typeof server._registeredTools) {
18
- logCompatibilityWarning();
17
+ logCompatibilityWarning(logger);
19
18
  throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.');
20
19
  }
21
20
  if ('function' != typeof server.tool) {
22
- logCompatibilityWarning();
21
+ logCompatibilityWarning(logger);
23
22
  throw new Error('PostHog MCP analytics SDK compatibility error: High-level server must have tool() method. This requires MCP SDK v1.11 or higher.');
24
23
  }
25
24
  const targetServer = server.server;
26
- validateLowLevelServer(targetServer);
25
+ validateLowLevelServer(targetServer, logger);
27
26
  return server;
28
27
  }
29
- validateLowLevelServer(server);
28
+ validateLowLevelServer(server, logger);
30
29
  return server;
31
30
  }
32
- function validateLowLevelServer(server) {
31
+ function validateLowLevelServer(server, logger) {
33
32
  if (!server || 'object' != typeof server) {
34
- logCompatibilityWarning();
33
+ logCompatibilityWarning(logger);
35
34
  throw new Error("PostHog MCP analytics SDK compatibility error: Server must be an object. Ensure you're using MCP SDK v1.11 or higher.");
36
35
  }
37
36
  const serverRecord = server;
38
37
  if ('function' != typeof serverRecord.setRequestHandler) {
39
- logCompatibilityWarning();
38
+ logCompatibilityWarning(logger);
40
39
  throw new Error('PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.');
41
40
  }
42
41
  if (!(serverRecord._requestHandlers && serverRecord._requestHandlers instanceof Map)) {
43
- logCompatibilityWarning();
42
+ logCompatibilityWarning(logger);
44
43
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.');
45
44
  }
46
45
  if ('function' != typeof serverRecord._requestHandlers.get) {
47
- logCompatibilityWarning();
46
+ logCompatibilityWarning(logger);
48
47
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._requestHandlers must be a Map with a get method. This requires MCP SDK v1.11 or higher.');
49
48
  }
50
49
  if ('function' != typeof serverRecord.getClientVersion) {
51
- logCompatibilityWarning();
50
+ logCompatibilityWarning(logger);
52
51
  throw new Error('PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.');
53
52
  }
54
53
  if (!serverRecord._serverInfo || 'object' != typeof serverRecord._serverInfo || !('name' in serverRecord._serverInfo)) {
55
- logCompatibilityWarning();
54
+ logCompatibilityWarning(logger);
56
55
  throw new Error('PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.');
57
56
  }
58
57
  }
@@ -1,5 +1,6 @@
1
1
  import type { MCPAnalyticsOptions } from '../types';
2
2
  import { type AnalyticsInjectableJsonSchema } from './analytics-parameters';
3
+ import { type LoggerFn } from './logger';
3
4
  export interface ContextInjectableTool {
4
5
  inputSchema?: AnalyticsInjectableJsonSchema;
5
6
  name?: string;
@@ -17,6 +18,6 @@ export declare function getContextDescription(context: MCPAnalyticsOptions['cont
17
18
  * - Complex schemas (oneOf/allOf/anyOf/$ref) that can't safely have properties added
18
19
  * - Schemas with additionalProperties: false
19
20
  */
20
- export declare function addContextParameterToTool<TTool extends ContextInjectableTool>(tool: TTool, contextDescriptionOverride?: string): TTool;
21
- export declare function addContextParameterToTools<TTool extends ContextInjectableTool>(tools: TTool[], contextDescriptionOverride?: string): TTool[];
21
+ export declare function addContextParameterToTool<TTool extends ContextInjectableTool>(tool: TTool, contextDescriptionOverride?: string, logger?: LoggerFn): TTool;
22
+ export declare function addContextParameterToTools<TTool extends ContextInjectableTool>(tools: TTool[], contextDescriptionOverride?: string, logger?: LoggerFn): TTool[];
22
23
  //# sourceMappingURL=context-parameters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/context-parameters.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAA;AAI/B,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,qBAAqB,EAC3E,IAAI,EAAE,KAAK,EACX,0BAA0B,CAAC,EAAE,MAAM,GAClC,KAAK,CA6DP;AAED,wBAAgB,0BAA0B,CAAC,KAAK,SAAS,qBAAqB,EAC5E,KAAK,EAAE,KAAK,EAAE,EACd,0BAA0B,CAAC,EAAE,MAAM,GAClC,KAAK,EAAE,CAQT"}
1
+ {"version":3,"file":"context-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/context-parameters.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,qBAAqB,EAC3E,IAAI,EAAE,KAAK,EACX,0BAA0B,CAAC,EAAE,MAAM,EACnC,MAAM,GAAE,QAAc,GACrB,KAAK,CA6DP;AAED,wBAAgB,0BAA0B,CAAC,KAAK,SAAS,qBAAqB,EAC5E,KAAK,EAAE,KAAK,EAAE,EACd,0BAA0B,CAAC,EAAE,MAAM,EACnC,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET"}
@@ -38,15 +38,14 @@ function isContextEnabled(context) {
38
38
  function getContextDescription(context) {
39
39
  return 'object' == typeof context ? context.description : void 0;
40
40
  }
41
- function addContextParameterToTool(tool, contextDescriptionOverride) {
41
+ function addContextParameterToTool(tool, contextDescriptionOverride, logger = external_logger_js_namespaceObject.log) {
42
42
  const modifiedTool = {
43
43
  ...tool
44
44
  };
45
45
  const toolName = tool.name || 'unknown';
46
46
  const schema = modifiedTool.inputSchema;
47
47
  if (!(0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)(schema, 'context')) {
48
- if ((0, external_analytics_parameters_js_namespaceObject.hasAnalyticsParameter)(schema, 'context')) (0, external_logger_js_namespaceObject.log)(`WARN: Tool "${toolName}" already has 'context' parameter. Skipping context injection.`);
49
- else (0, external_logger_js_namespaceObject.log)(`WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping context injection.`);
48
+ logger((0, external_analytics_parameters_js_namespaceObject.hasAnalyticsParameter)(schema, 'context') ? `WARN: Tool "${toolName}" already has 'context' parameter. Skipping context injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping context injection.`);
50
49
  return modifiedTool;
51
50
  }
52
51
  if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
@@ -70,11 +69,8 @@ function addContextParameterToTool(tool, contextDescriptionOverride) {
70
69
  ];
71
70
  return modifiedTool;
72
71
  }
73
- function addContextParameterToTools(tools, contextDescriptionOverride) {
74
- return tools.map((tool)=>{
75
- if ('get_more_tools' === tool.name) return tool;
76
- return addContextParameterToTool(tool, contextDescriptionOverride);
77
- });
72
+ function addContextParameterToTools(tools, contextDescriptionOverride, logger = external_logger_js_namespaceObject.log) {
73
+ return tools.map((tool)=>addContextParameterToTool(tool, contextDescriptionOverride, logger));
78
74
  }
79
75
  exports.addContextParameterToTool = __webpack_exports__.addContextParameterToTool;
80
76
  exports.addContextParameterToTools = __webpack_exports__.addContextParameterToTools;
@@ -7,14 +7,14 @@ function isContextEnabled(context) {
7
7
  function getContextDescription(context) {
8
8
  return 'object' == typeof context ? context.description : void 0;
9
9
  }
10
- function addContextParameterToTool(tool, contextDescriptionOverride) {
10
+ function addContextParameterToTool(tool, contextDescriptionOverride, logger = log) {
11
11
  const modifiedTool = {
12
12
  ...tool
13
13
  };
14
14
  const toolName = tool.name || 'unknown';
15
15
  const schema = modifiedTool.inputSchema;
16
16
  if (!canInjectAnalyticsParameter(schema, 'context')) {
17
- hasAnalyticsParameter(schema, 'context') ? log(`WARN: Tool "${toolName}" already has 'context' parameter. Skipping context injection.`) : log(`WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping context injection.`);
17
+ logger(hasAnalyticsParameter(schema, 'context') ? `WARN: Tool "${toolName}" already has 'context' parameter. Skipping context injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping context injection.`);
18
18
  return modifiedTool;
19
19
  }
20
20
  if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
@@ -38,10 +38,7 @@ function addContextParameterToTool(tool, contextDescriptionOverride) {
38
38
  ];
39
39
  return modifiedTool;
40
40
  }
41
- function addContextParameterToTools(tools, contextDescriptionOverride) {
42
- return tools.map((tool)=>{
43
- if ('get_more_tools' === tool.name) return tool;
44
- return addContextParameterToTool(tool, contextDescriptionOverride);
45
- });
41
+ function addContextParameterToTools(tools, contextDescriptionOverride, logger = log) {
42
+ return tools.map((tool)=>addContextParameterToTool(tool, contextDescriptionOverride, logger));
46
43
  }
47
44
  export { addContextParameterToTool, addContextParameterToTools, getContextDescription, isContextEnabled };
@@ -1,12 +1,13 @@
1
1
  import { type AnalyticsInjectableJsonSchema } from './analytics-parameters';
2
+ import { type LoggerFn } from './logger';
2
3
  export declare const CONVERSATION_ID_PARAM_NAME = "conversation_id";
3
4
  export interface ConversationIdInjectableTool {
4
5
  inputSchema?: AnalyticsInjectableJsonSchema;
5
6
  name?: string;
6
7
  [key: string]: unknown;
7
8
  }
8
- export declare function addConversationIdToTool<TTool extends ConversationIdInjectableTool>(tool: TTool): TTool;
9
- export declare function addConversationIdToTools<TTool extends ConversationIdInjectableTool>(tools: TTool[], missingCapabilityToolName?: string): TTool[];
9
+ export declare function addConversationIdToTool<TTool extends ConversationIdInjectableTool>(tool: TTool, logger?: LoggerFn): TTool;
10
+ export declare function addConversationIdToTools<TTool extends ConversationIdInjectableTool>(tools: TTool[], missingCapabilityToolName?: string, skipMissingCapabilityTool?: boolean, logger?: LoggerFn): TTool[];
10
11
  export type ConversationIdResolution = {
11
12
  minted: false;
12
13
  conversationId: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-id.d.ts","sourceRoot":"","sources":["../../src/extensions/conversation-id.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAA;AAK/B,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,4BAA4B,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CA0CtG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,4BAA4B,EACjF,KAAK,EAAE,KAAK,EAAE,EACd,yBAAyB,GAAE,MAA4B,GACtD,KAAK,EAAE,CAOT;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,yBAAyB,GAAE,MAA4B,GACtD,wBAAwB,CAS1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAS1E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAM1D;AAED,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAKA;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAS/F"}
1
+ {"version":3,"file":"conversation-id.d.ts","sourceRoot":"","sources":["../../src/extensions/conversation-id.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAG7C,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,4BAA4B,EAChF,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,QAAc,GACrB,KAAK,CA4CP;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,4BAA4B,EACjF,KAAK,EAAE,KAAK,EAAE,EACd,yBAAyB,GAAE,MAA4B,EACvD,yBAAyB,UAAO,EAChC,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAOT;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,yBAAyB,GAAE,MAA4B,GACtD,wBAAwB,CAS1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAS1E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAM1D;AAED,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAKA;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAS/F"}
@@ -40,15 +40,14 @@ const external_constants_js_namespaceObject = require("./constants.js");
40
40
  const external_logger_js_namespaceObject = require("./logger.js");
41
41
  const external_tools_js_namespaceObject = require("./tools.js");
42
42
  const CONVERSATION_ID_PARAM_NAME = 'conversation_id';
43
- function addConversationIdToTool(tool) {
43
+ function addConversationIdToTool(tool, logger = external_logger_js_namespaceObject.log) {
44
44
  const modifiedTool = {
45
45
  ...tool
46
46
  };
47
47
  const toolName = tool.name || 'unknown';
48
48
  const schema = modifiedTool.inputSchema;
49
49
  if (!(0, external_analytics_parameters_js_namespaceObject.canInjectAnalyticsParameter)(schema, CONVERSATION_ID_PARAM_NAME)) {
50
- if ((0, external_analytics_parameters_js_namespaceObject.hasAnalyticsParameter)(schema, CONVERSATION_ID_PARAM_NAME)) (0, external_logger_js_namespaceObject.log)(`WARN: Tool "${toolName}" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.`);
51
- else (0, external_logger_js_namespaceObject.log)(`WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);
50
+ logger((0, external_analytics_parameters_js_namespaceObject.hasAnalyticsParameter)(schema, CONVERSATION_ID_PARAM_NAME) ? `WARN: Tool "${toolName}" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);
52
51
  return modifiedTool;
53
52
  }
54
53
  if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
@@ -66,10 +65,10 @@ function addConversationIdToTool(tool) {
66
65
  };
67
66
  return modifiedTool;
68
67
  }
69
- function addConversationIdToTools(tools, missingCapabilityToolName = external_tools_js_namespaceObject.GET_MORE_TOOLS_NAME) {
68
+ function addConversationIdToTools(tools, missingCapabilityToolName = external_tools_js_namespaceObject.GET_MORE_TOOLS_NAME, skipMissingCapabilityTool = true, logger = external_logger_js_namespaceObject.log) {
70
69
  return tools.map((tool)=>{
71
- if (tool.name === missingCapabilityToolName) return tool;
72
- return addConversationIdToTool(tool);
70
+ if (skipMissingCapabilityTool && tool.name === missingCapabilityToolName) return tool;
71
+ return addConversationIdToTool(tool, logger);
73
72
  });
74
73
  }
75
74
  function resolveConversationId(enabled, args, toolName, missingCapabilityToolName = external_tools_js_namespaceObject.GET_MORE_TOOLS_NAME) {
@@ -4,14 +4,14 @@ import { DEFAULT_CONVERSATION_ID_DESCRIPTION } from "./constants.mjs";
4
4
  import { log } from "./logger.mjs";
5
5
  import { GET_MORE_TOOLS_NAME } from "./tools.mjs";
6
6
  const CONVERSATION_ID_PARAM_NAME = 'conversation_id';
7
- function addConversationIdToTool(tool) {
7
+ function addConversationIdToTool(tool, logger = log) {
8
8
  const modifiedTool = {
9
9
  ...tool
10
10
  };
11
11
  const toolName = tool.name || 'unknown';
12
12
  const schema = modifiedTool.inputSchema;
13
13
  if (!canInjectAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME)) {
14
- hasAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME) ? log(`WARN: Tool "${toolName}" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.`) : log(`WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);
14
+ logger(hasAnalyticsParameter(schema, CONVERSATION_ID_PARAM_NAME) ? `WARN: Tool "${toolName}" already has '${CONVERSATION_ID_PARAM_NAME}' parameter. Skipping conversation_id injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping conversation_id injection.`);
15
15
  return modifiedTool;
16
16
  }
17
17
  if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
@@ -29,10 +29,10 @@ function addConversationIdToTool(tool) {
29
29
  };
30
30
  return modifiedTool;
31
31
  }
32
- function addConversationIdToTools(tools, missingCapabilityToolName = GET_MORE_TOOLS_NAME) {
32
+ function addConversationIdToTools(tools, missingCapabilityToolName = GET_MORE_TOOLS_NAME, skipMissingCapabilityTool = true, logger = log) {
33
33
  return tools.map((tool)=>{
34
- if (tool.name === missingCapabilityToolName) return tool;
35
- return addConversationIdToTool(tool);
34
+ if (skipMissingCapabilityTool && tool.name === missingCapabilityToolName) return tool;
35
+ return addConversationIdToTool(tool, logger);
36
36
  });
37
37
  }
38
38
  function resolveConversationId(enabled, args, toolName, missingCapabilityToolName = GET_MORE_TOOLS_NAME) {
@@ -1,3 +1,4 @@
1
1
  import type { HighLevelMCPServerLike } from '../types';
2
- export declare function instrumentHighLevelServer(server: HighLevelMCPServerLike): void;
2
+ import type { LoggerFn } from './logger';
3
+ export declare function instrumentHighLevelServer(server: HighLevelMCPServerLike, logger: LoggerFn): void;
3
4
  //# sourceMappingURL=instrument-highlevel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-highlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-highlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,sBAAsB,EAIvB,MAAM,UAAU,CAAA;AAoQjB,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CA6B9E"}
1
+ {"version":3,"file":"instrument-highlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-highlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,sBAAsB,EAIvB,MAAM,UAAU,CAAA;AASjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AA8PxC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CA2BhG"}
@@ -30,7 +30,6 @@ const external_analytics_parameters_js_namespaceObject = require("./analytics-pa
30
30
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
31
31
  const external_event_types_js_namespaceObject = require("./event-types.js");
32
32
  const external_internal_js_namespaceObject = require("./internal.js");
33
- const external_logger_js_namespaceObject = require("./logger.js");
34
33
  const external_mcp_sdk_compat_js_namespaceObject = require("./mcp-sdk-compat.js");
35
34
  const external_tools_js_namespaceObject = require("./tools.js");
36
35
  const external_instrumentation_js_namespaceObject = require("./instrumentation.js");
@@ -40,31 +39,31 @@ const MCP_ANALYTICS_PROCESSED = Symbol('__posthog_mcp_analytics_processed__');
40
39
  function isCallbackUpdate(value) {
41
40
  return !!value && 'object' == typeof value && 'callback' in value && 'function' == typeof value.callback;
42
41
  }
43
- function addTracingToToolRegistry(tools, server) {
42
+ function addTracingToToolRegistry(tools, server, logger) {
44
43
  return Object.fromEntries(Object.entries(tools).map(([name, tool])=>[
45
44
  name,
46
- addTracingToToolCallbackInternal(tool, name, server)
45
+ addTracingToToolCallbackInternal(tool, name, server, ()=>tool.inputSchema, logger)
47
46
  ]));
48
47
  }
49
- function setupListenerToRegisteredTools(server) {
48
+ function setupListenerToRegisteredTools(server, logger) {
50
49
  try {
51
50
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server.server);
52
- if (!data) return void (0, external_logger_js_namespaceObject.log)('Warning: Cannot setup listener - no tracking data found');
51
+ if (!data) return void logger('Warning: Cannot setup listener - no tracking data found');
53
52
  const handler = {
54
53
  set (target, property, value) {
55
54
  try {
56
55
  if ('string' == typeof property && value && 'object' == typeof value && (0, external_mcp_sdk_compat_js_namespaceObject.hasToolFunction)(value)) {
57
56
  if ('string' == typeof value.description) data.toolDescriptions.set(property, value.description);
58
57
  if (value[MCP_ANALYTICS_PROCESSED]) {
59
- (0, external_logger_js_namespaceObject.log)(`Tool ${String(property)} already processed, skipping proxy wrapping`);
58
+ logger(`Tool ${String(property)} already processed, skipping proxy wrapping`);
60
59
  return Reflect.set(target, property, value);
61
60
  }
62
61
  if (wrappedCallbacks.has((0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(value))) {
63
- (0, external_logger_js_namespaceObject.log)(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
62
+ logger(`Tool ${String(property)} callback already wrapped, skipping proxy wrapping`);
64
63
  return Reflect.set(target, property, value);
65
64
  }
66
65
  const getCurrentInputSchema = ()=>value.inputSchema;
67
- const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema);
66
+ const nextValue = addTracingToToolCallbackInternal(value, property, server, getCurrentInputSchema, logger);
68
67
  if ('function' == typeof nextValue.update) {
69
68
  const originalUpdate = nextValue.update;
70
69
  nextValue.update = function(...updateArgs) {
@@ -73,7 +72,7 @@ function setupListenerToRegisteredTools(server) {
73
72
  if (isCallbackUpdate(updateObj)) {
74
73
  const wrappedTool = addTracingToToolCallbackInternal({
75
74
  callback: updateObj.callback
76
- }, property, server, getCurrentInputSchema);
75
+ }, property, server, getCurrentInputSchema, logger);
77
76
  updateObj.callback = (0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(wrappedTool);
78
77
  }
79
78
  }
@@ -84,7 +83,7 @@ function setupListenerToRegisteredTools(server) {
84
83
  }
85
84
  return Reflect.set(target, property, value);
86
85
  } catch (error) {
87
- (0, external_logger_js_namespaceObject.log)(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
86
+ logger(`Warning: Error in proxy set handler for tool ${String(property)} - ${error}`);
88
87
  return Reflect.set(target, property, value);
89
88
  }
90
89
  },
@@ -100,21 +99,20 @@ function setupListenerToRegisteredTools(server) {
100
99
  };
101
100
  const originalTools = server._registeredTools || {};
102
101
  server._registeredTools = new Proxy(originalTools, handler);
103
- (0, external_logger_js_namespaceObject.log)('Successfully set up listener for new tool registrations');
102
+ logger('Successfully set up listener for new tool registrations');
104
103
  } catch (error) {
105
- (0, external_logger_js_namespaceObject.log)(`Warning: Failed to setup listener for registered tools - ${error}`);
104
+ logger(`Warning: Failed to setup listener for registered tools - ${error}`);
106
105
  }
107
106
  }
108
- function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema = ()=>tool.inputSchema) {
107
+ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInputSchema, logger) {
109
108
  const originalCallback = (0, external_mcp_sdk_compat_js_namespaceObject.getToolFunction)(tool);
110
109
  const options = (0, external_internal_js_namespaceObject.getServerTrackingData)(server.server)?.options;
111
- const missingToolName = (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(options);
112
110
  if (wrappedCallbacks.has(originalCallback)) {
113
- (0, external_logger_js_namespaceObject.log)(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
111
+ logger(`Tool ${toolName} callback already wrapped, skipping re-wrap`);
114
112
  return tool;
115
113
  }
116
114
  if (tool[MCP_ANALYTICS_PROCESSED]) {
117
- (0, external_logger_js_namespaceObject.log)(`Tool ${toolName} already processed, skipping re-wrap`);
115
+ logger(`Tool ${toolName} already processed, skipping re-wrap`);
118
116
  return tool;
119
117
  }
120
118
  const wrappedCallback = async (...params)=>{
@@ -129,8 +127,8 @@ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInpu
129
127
  }
130
128
  const inputSchema = getCurrentInputSchema();
131
129
  const cleanedArgs = (0, external_analytics_parameters_js_namespaceObject.stripOwnedAnalyticsArguments)(args, {
132
- context: toolName !== missingToolName && (0, external_context_parameters_js_namespaceObject.isContextEnabled)(options?.context) && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'context'),
133
- conversationId: toolName !== missingToolName && options?.enableConversationId === true && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'conversation_id')
130
+ context: (0, external_context_parameters_js_namespaceObject.isContextEnabled)(options?.context) && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'context'),
131
+ conversationId: options?.enableConversationId === true && (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(inputSchema, 'conversation_id')
134
132
  });
135
133
  try {
136
134
  if (void 0 === cleanedArgs) {
@@ -150,13 +148,15 @@ function addTracingToToolCallbackInternal(tool, toolName, server, getCurrentInpu
150
148
  wrappedTool[MCP_ANALYTICS_PROCESSED] = true;
151
149
  return wrappedTool;
152
150
  }
153
- async function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra) {
151
+ async function handleToolCallRequest(highLevelServer, server, originalCallToolHandler, request, extra, logger) {
154
152
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
155
153
  if (!data) {
156
- (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.');
154
+ logger('Warning: PostHog MCP analytics is unable to find server tracking data. Please ensure you have called instrument(server, options) before using tool calls.');
157
155
  return await originalCallToolHandler(request, extra);
158
156
  }
159
- if (request.params?.name === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options)) {
157
+ const toolName = request.params?.name;
158
+ const isMissingCapabilityCandidate = data.options.reportMissing && toolName === (0, external_tools_js_namespaceObject.resolveMissingCapabilityToolName)(data.options);
159
+ if (isMissingCapabilityCandidate && await (0, external_instrumentation_js_namespaceObject.isToolAdvertised)(server, toolName, extra, data.logger) === false) {
160
160
  const context = (0, external_tracing_helpers_js_namespaceObject.getContextArgument)(request) || '';
161
161
  return await (0, external_instrumentation_js_namespaceObject.captureToolCall)({
162
162
  server,
@@ -167,10 +167,9 @@ async function handleToolCallRequest(highLevelServer, server, originalCallToolHa
167
167
  explicitContextIntent: context,
168
168
  execute: async ()=>(0, external_tools_js_namespaceObject.handleReportMissing)({
169
169
  context
170
- })
170
+ }, data.logger)
171
171
  });
172
172
  }
173
- const toolName = request.params?.name;
174
173
  const registeredTool = toolName ? highLevelServer._registeredTools[toolName] : void 0;
175
174
  return await (0, external_instrumentation_js_namespaceObject.captureToolCall)({
176
175
  server,
@@ -186,24 +185,24 @@ async function handleToolCallRequest(highLevelServer, server, originalCallToolHa
186
185
  }
187
186
  });
188
187
  }
189
- function instrumentHighLevelServer(server) {
188
+ function instrumentHighLevelServer(server, logger) {
190
189
  try {
191
190
  const lowLevelServer = server.server;
192
191
  const mcpAnalyticsData = (0, external_internal_js_namespaceObject.getServerTrackingData)(lowLevelServer);
193
192
  const handlers = {
194
- initialize: external_instrumentation_js_namespaceObject.handleInitializeRequest,
195
- 'tools/list': external_instrumentation_js_namespaceObject.handleListToolsRequest,
196
- 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra)
193
+ initialize: (trackedServer, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleInitializeRequest)(trackedServer, originalHandler, request, extra, logger),
194
+ 'tools/list': (trackedServer, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleListToolsRequest)(trackedServer, originalHandler, request, extra, logger),
195
+ 'tools/call': (trackedServer, originalHandler, request, extra)=>handleToolCallRequest(server, trackedServer, originalHandler, request, extra, logger)
197
196
  };
198
197
  (0, external_instrumentation_js_namespaceObject.patchRequestHandlers)(lowLevelServer, handlers);
199
- server._registeredTools = addTracingToToolRegistry(server._registeredTools, server);
198
+ server._registeredTools = addTracingToToolRegistry(server._registeredTools, server, logger);
200
199
  if (mcpAnalyticsData) {
201
200
  seedToolDescriptionsFromRegistry(mcpAnalyticsData.toolDescriptions, server._registeredTools);
202
201
  seedToolCategoriesFromRegistry(mcpAnalyticsData.toolCategories, server._registeredTools);
203
202
  }
204
- setupListenerToRegisteredTools(server);
203
+ setupListenerToRegisteredTools(server, logger);
205
204
  } catch (error) {
206
- (0, external_logger_js_namespaceObject.log)(`Warning: Failed to setup tool call instrumentation - ${error}`);
205
+ logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
207
206
  }
208
207
  }
209
208
  function seedToolDescriptionsFromRegistry(cache, tools) {