@posthog/mcp 0.10.8 → 0.11.0

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 (80) hide show
  1. package/dist/extensions/capture.d.ts.map +1 -1
  2. package/dist/extensions/capture.js +2 -0
  3. package/dist/extensions/capture.mjs +2 -0
  4. package/dist/extensions/compatibility.d.ts.map +1 -1
  5. package/dist/extensions/constants.d.ts +2 -0
  6. package/dist/extensions/constants.d.ts.map +1 -1
  7. package/dist/extensions/constants.js +3 -1
  8. package/dist/extensions/constants.mjs +3 -1
  9. package/dist/extensions/context-parameters.d.ts.map +1 -1
  10. package/dist/extensions/conversation-id.d.ts +2 -13
  11. package/dist/extensions/conversation-id.d.ts.map +1 -1
  12. package/dist/extensions/headers.d.ts +33 -0
  13. package/dist/extensions/headers.d.ts.map +1 -0
  14. package/dist/extensions/headers.js +54 -0
  15. package/dist/extensions/headers.mjs +17 -0
  16. package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
  17. package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
  18. package/dist/extensions/instrument-lowlevel.js +6 -5
  19. package/dist/extensions/instrument-lowlevel.mjs +7 -6
  20. package/dist/extensions/instrumentation.d.ts +29 -0
  21. package/dist/extensions/instrumentation.d.ts.map +1 -1
  22. package/dist/extensions/instrumentation.js +17 -7
  23. package/dist/extensions/instrumentation.mjs +15 -8
  24. package/dist/extensions/internal.d.ts.map +1 -1
  25. package/dist/extensions/internal.js +2 -0
  26. package/dist/extensions/internal.mjs +2 -0
  27. package/dist/extensions/mcp-sdk-compat.d.ts +10 -0
  28. package/dist/extensions/mcp-sdk-compat.d.ts.map +1 -1
  29. package/dist/extensions/mcp-sdk-compat.js +11 -2
  30. package/dist/extensions/mcp-sdk-compat.mjs +7 -1
  31. package/dist/extensions/output-instructions.d.ts +6 -8
  32. package/dist/extensions/output-instructions.d.ts.map +1 -1
  33. package/dist/extensions/posthog-events.js +4 -0
  34. package/dist/extensions/posthog-events.mjs +4 -0
  35. package/dist/extensions/posthog-mcp.d.ts.map +1 -1
  36. package/dist/extensions/posthog-mcp.js +3 -0
  37. package/dist/extensions/posthog-mcp.mjs +3 -0
  38. package/dist/extensions/session-token.d.ts.map +1 -1
  39. package/dist/extensions/session-token.js +5 -14
  40. package/dist/extensions/session-token.mjs +2 -11
  41. package/dist/extensions/session.d.ts +4 -3
  42. package/dist/extensions/session.d.ts.map +1 -1
  43. package/dist/extensions/sink.d.ts +4 -6
  44. package/dist/extensions/sink.d.ts.map +1 -1
  45. package/dist/extensions/tools.d.ts.map +1 -1
  46. package/dist/extensions/transport-identity.d.ts +59 -0
  47. package/dist/extensions/transport-identity.d.ts.map +1 -0
  48. package/dist/extensions/transport-identity.js +63 -0
  49. package/dist/extensions/transport-identity.mjs +20 -0
  50. package/dist/extensions/truncation.d.ts.map +1 -1
  51. package/dist/extensions/truncation.js +2 -0
  52. package/dist/extensions/truncation.mjs +2 -0
  53. package/dist/types.d.ts +33 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/version.d.ts +1 -1
  56. package/dist/version.js +1 -1
  57. package/dist/version.mjs +1 -1
  58. package/package.json +1 -1
  59. package/src/extensions/capture.ts +6 -0
  60. package/src/extensions/compatibility.ts +0 -9
  61. package/src/extensions/constants.ts +2 -0
  62. package/src/extensions/context-parameters.ts +3 -11
  63. package/src/extensions/conversation-id.ts +5 -17
  64. package/src/extensions/headers.ts +52 -0
  65. package/src/extensions/instrument-highlevel.ts +0 -1
  66. package/src/extensions/instrument-lowlevel.ts +14 -10
  67. package/src/extensions/instrumentation.ts +82 -46
  68. package/src/extensions/internal.ts +6 -5
  69. package/src/extensions/mcp-sdk-compat.ts +18 -0
  70. package/src/extensions/output-instructions.ts +6 -8
  71. package/src/extensions/posthog-events.ts +14 -0
  72. package/src/extensions/posthog-mcp.ts +7 -5
  73. package/src/extensions/session-token.ts +3 -15
  74. package/src/extensions/session.ts +21 -35
  75. package/src/extensions/sink.ts +4 -6
  76. package/src/extensions/tools.ts +3 -6
  77. package/src/extensions/transport-identity.ts +94 -0
  78. package/src/extensions/truncation.ts +4 -0
  79. package/src/types.ts +33 -0
  80. package/src/version.ts +1 -1
@@ -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,WAAW,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,QAAQ,EAChB,kBAAkB,CAAC,EAAE,WAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAoE3B"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/extensions/capture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,QAAQ,EAChB,kBAAkB,CAAC,EAAE,WAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CA0E3B"}
@@ -50,6 +50,8 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
50
50
  serverVersion: sessionInfo.serverVersion,
51
51
  clientName: eventInput.clientName ?? sessionInfo.clientName,
52
52
  clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,
53
+ clientUserAgent: eventInput.clientUserAgent,
54
+ vendorClient: eventInput.vendorClient,
53
55
  identifyActorGivenId: sessionInfo.identifyActorGivenId,
54
56
  identifyActorData: sessionInfo.identifyActorData,
55
57
  groups: sessionInfo.identifyActorGroups,
@@ -22,6 +22,8 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
22
22
  serverVersion: sessionInfo.serverVersion,
23
23
  clientName: eventInput.clientName ?? sessionInfo.clientName,
24
24
  clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,
25
+ clientUserAgent: eventInput.clientUserAgent,
26
+ vendorClient: eventInput.vendorClient,
25
27
  identifyActorGivenId: sessionInfo.identifyActorGivenId,
26
28
  identifyActorData: sessionInfo.identifyActorData,
27
29
  groups: sessionInfo.identifyActorGroups,
@@ -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;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"}
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;AAEH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAI9D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAIpG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAExE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,sBAAsB,CA6BhH;AAoDD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAanE"}
@@ -19,6 +19,7 @@ export declare const PostHogMCPAnalyticsEvent: {
19
19
  export type PostHogMCPAnalyticsEvent = (typeof PostHogMCPAnalyticsEvent)[keyof typeof PostHogMCPAnalyticsEvent];
20
20
  export declare const PostHogMCPAnalyticsProperty: {
21
21
  readonly ClientName: "$mcp_client_name";
22
+ readonly ClientUserAgent: "$mcp_client_user_agent";
22
23
  readonly ClientVersion: "$mcp_client_version";
23
24
  readonly ConversationId: "$mcp_conversation_id";
24
25
  readonly DurationMs: "$mcp_duration_ms";
@@ -39,6 +40,7 @@ export declare const PostHogMCPAnalyticsProperty: {
39
40
  readonly ToolCategory: "$mcp_tool_category";
40
41
  readonly ToolDescription: "$mcp_tool_description";
41
42
  readonly ToolName: "$mcp_tool_name";
43
+ readonly VendorClient: "$mcp_vendor_client";
42
44
  };
43
45
  export type PostHogMCPAnalyticsProperty = (typeof PostHogMCPAnalyticsProperty)[keyof typeof PostHogMCPAnalyticsProperty];
44
46
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/extensions/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,eAAO,MAAM,qCAAqC,2hBAAyhB,CAAA;AAE3kB,eAAO,MAAM,mCAAmC,4LACsI,CAAA;AAEtL,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AAMnE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AAItD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;CAY3B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAE/G,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;CAsB9B,CAAA;AAEV,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/extensions/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,eAAO,MAAM,qCAAqC,2hBAAyhB,CAAA;AAE3kB,eAAO,MAAM,mCAAmC,4LACsI,CAAA;AAEtL,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AAMnE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AAItD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;CAY3B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAE/G,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;CAwB9B,CAAA;AAEV,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAA"}
@@ -52,6 +52,7 @@ const PostHogMCPAnalyticsEvent = {
52
52
  };
53
53
  const PostHogMCPAnalyticsProperty = {
54
54
  ClientName: '$mcp_client_name',
55
+ ClientUserAgent: '$mcp_client_user_agent',
55
56
  ClientVersion: '$mcp_client_version',
56
57
  ConversationId: '$mcp_conversation_id',
57
58
  DurationMs: '$mcp_duration_ms',
@@ -71,7 +72,8 @@ const PostHogMCPAnalyticsProperty = {
71
72
  Source: '$mcp_source',
72
73
  ToolCategory: '$mcp_tool_category',
73
74
  ToolDescription: "$mcp_tool_description",
74
- ToolName: '$mcp_tool_name'
75
+ ToolName: '$mcp_tool_name',
76
+ VendorClient: '$mcp_vendor_client'
75
77
  };
76
78
  exports.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = __webpack_exports__.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION;
77
79
  exports.DEFAULT_CONVERSATION_ID_DESCRIPTION = __webpack_exports__.DEFAULT_CONVERSATION_ID_DESCRIPTION;
@@ -18,6 +18,7 @@ const PostHogMCPAnalyticsEvent = {
18
18
  };
19
19
  const PostHogMCPAnalyticsProperty = {
20
20
  ClientName: '$mcp_client_name',
21
+ ClientUserAgent: '$mcp_client_user_agent',
21
22
  ClientVersion: '$mcp_client_version',
22
23
  ConversationId: '$mcp_conversation_id',
23
24
  DurationMs: '$mcp_duration_ms',
@@ -37,6 +38,7 @@ const PostHogMCPAnalyticsProperty = {
37
38
  Source: '$mcp_source',
38
39
  ToolCategory: '$mcp_tool_category',
39
40
  ToolDescription: "$mcp_tool_description",
40
- ToolName: '$mcp_tool_name'
41
+ ToolName: '$mcp_tool_name',
42
+ VendorClient: '$mcp_vendor_client'
41
43
  };
42
44
  export { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION, DEFAULT_CONVERSATION_ID_DESCRIPTION, INACTIVITY_TIMEOUT_IN_MINUTES, POSTHOG_MCP_ANALYTICS_SOURCE, POSTHOG_MCP_LIB_NAME, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty };
@@ -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;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"}
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,CAqDP;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"}
@@ -31,20 +31,9 @@ export type ConversationIdResolution = {
31
31
  * derivation is deterministic so that two pods agree — which also means two
32
32
  * *callers* sending the same string land in the same session. The strings agents
33
33
  * invent are not random (`conv-1`, `1`, `session`), so trusting them verbatim
34
- * would silently merge unrelated conversations, potentially across users.
35
- *
36
- * A compliant agent echoes the uuidv7 we minted and is unaffected. Anything else
37
- * is treated exactly as if the handle were absent: mint, and prompt back. Shape
34
+ * would silently merge unrelated conversations, potentially across users. Shape
38
35
  * rather than a registry of issued ids, because a per-request server has no
39
- * memory of what it minted.
40
- *
41
- * This narrows the problem, it does not prove provenance: a caller supplying a
42
- * well-formed uuidv7 is trusted, so two that pick the *same* one still merge. That
43
- * residue is far smaller than the case it replaces — an agent ignoring the
44
- * parameter description reaches for `conv-1` or `1`, not a conforming uuidv7 — and
45
- * closing it needs a signed handle, i.e. a secret shared by every pod. Worth doing
46
- * if this ever anchors something security-bearing; `$session_id` is an analytics
47
- * grouping key, so it does not today.
36
+ * memory of what it minted. Residual risk and why it's accepted: ADR-0004.
48
37
  */
49
38
  export declare function resolveConversationId(enabled: boolean, args: unknown): ConversationIdResolution;
50
39
  /**
@@ -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;AAE/B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,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;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,4BAA4B,EACjF,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAQD,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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAa/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAK1E;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;AAE7C,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;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,4BAA4B,EACjF,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAQD,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;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAY/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAK1E;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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The single place this package reads an HTTP request header.
3
+ *
4
+ * The MCP SDK hands us `IsomorphicHeaders` — a plain
5
+ * `Record<string, string | string[] | undefined>`, not a `Headers` instance — so
6
+ * values come out by bracket access rather than `.get()`. MCP SDK v2 plans to
7
+ * pass a real `Headers` object instead; funnelling every read through here keeps
8
+ * that migration a one-function change instead of a hunt for bracket lookups.
9
+ */
10
+ /**
11
+ * Reads one header value out of an `IsomorphicHeaders` bag. `name` must be
12
+ * lower-cased: the HTTP transports build the bag with
13
+ * `Object.fromEntries(req.headers.entries())` and the Fetch spec lower-cases
14
+ * header names. A hand-rolled transport can still hand us mixed-case keys, so a
15
+ * case-insensitive scan backs up the direct lookup.
16
+ *
17
+ * Repeated headers arrive as an array — we take the first entry, since every
18
+ * header we read is single-valued by definition. Returns `undefined` for a
19
+ * missing, non-string, or blank value, and never throws: a malformed header from
20
+ * an untrusted client must not break the request it rode in on.
21
+ */
22
+ export declare function readHeaderValue(headers: unknown, name: string): string | undefined;
23
+ /**
24
+ * Coerces one raw header value into a clean string, or `undefined`.
25
+ *
26
+ * Exported so the custom-dispatcher path can apply the same rules to values a host
27
+ * read off the request itself. Without it the two integration paths emit different
28
+ * properties for the *same* request: a whitespace-only header would survive as a junk
29
+ * value, and a repeated header would reach the wire as an array, because the
30
+ * downstream length cap passes non-strings through untouched.
31
+ */
32
+ export declare function normalizeHeaderString(value: unknown): string | undefined;
33
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/extensions/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOxE"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ normalizeHeaderString: ()=>normalizeHeaderString,
28
+ readHeaderValue: ()=>readHeaderValue
29
+ });
30
+ function readHeaderValue(headers, name) {
31
+ if (!headers || 'object' != typeof headers) return;
32
+ const record = headers;
33
+ let value = record[name];
34
+ if (void 0 === value) {
35
+ const key = Object.keys(record).find((k)=>k.toLowerCase() === name);
36
+ value = void 0 === key ? void 0 : record[key];
37
+ }
38
+ return normalizeHeaderString(value);
39
+ }
40
+ function normalizeHeaderString(value) {
41
+ const first = Array.isArray(value) ? value[0] : value;
42
+ if ('string' != typeof first) return;
43
+ const trimmed = first.trim();
44
+ return trimmed.length > 0 ? trimmed : void 0;
45
+ }
46
+ exports.normalizeHeaderString = __webpack_exports__.normalizeHeaderString;
47
+ exports.readHeaderValue = __webpack_exports__.readHeaderValue;
48
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
49
+ "normalizeHeaderString",
50
+ "readHeaderValue"
51
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
52
+ Object.defineProperty(exports, '__esModule', {
53
+ value: true
54
+ });
@@ -0,0 +1,17 @@
1
+ function readHeaderValue(headers, name) {
2
+ if (!headers || 'object' != typeof headers) return;
3
+ const record = headers;
4
+ let value = record[name];
5
+ if (void 0 === value) {
6
+ const key = Object.keys(record).find((k)=>k.toLowerCase() === name);
7
+ value = void 0 === key ? void 0 : record[key];
8
+ }
9
+ return normalizeHeaderString(value);
10
+ }
11
+ function normalizeHeaderString(value) {
12
+ const first = Array.isArray(value) ? value[0] : value;
13
+ if ('string' != typeof first) return;
14
+ const trimmed = first.trim();
15
+ return trimmed.length > 0 ? trimmed : void 0;
16
+ }
17
+ export { normalizeHeaderString, readHeaderValue };
@@ -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;AASjB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAgQxC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CA2BhG"}
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;AAgQxC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CA0BhG"}
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-lowlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-lowlevel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiD,aAAa,EAAE,MAAM,UAAU,CAAA;AAG5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAkBxC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CA0BtF"}
1
+ {"version":3,"file":"instrument-lowlevel.d.ts","sourceRoot":"","sources":["../../src/extensions/instrument-lowlevel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiD,aAAa,EAAE,MAAM,UAAU,CAAA;AAG5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAmBxC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAyBtF"}
@@ -26,7 +26,6 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  instrumentLowLevelServer: ()=>instrumentLowLevelServer
28
28
  });
29
- const types_js_namespaceObject = require("@modelcontextprotocol/sdk/types.js");
30
29
  const external_event_types_js_namespaceObject = require("./event-types.js");
31
30
  const external_internal_js_namespaceObject = require("./internal.js");
32
31
  const external_tools_js_namespaceObject = require("./tools.js");
@@ -35,20 +34,22 @@ const external_tracing_helpers_js_namespaceObject = require("./tracing-helpers.j
35
34
  function instrumentLowLevelServer(server, logger) {
36
35
  try {
37
36
  const hadCallToolHandler = server._requestHandlers.has('tools/call');
37
+ const traceToolCall = (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger);
38
38
  const handlers = {
39
39
  initialize: (server, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleInitializeRequest)(server, originalHandler, request, extra, logger),
40
40
  'tools/list': (server, originalHandler, request, extra)=>(0, external_instrumentation_js_namespaceObject.handleListToolsRequest)(server, originalHandler, request, extra, logger),
41
- 'tools/call': (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger)
41
+ 'tools/call': traceToolCall
42
42
  };
43
43
  (0, external_instrumentation_js_namespaceObject.patchRequestHandlers)(server, handlers);
44
- if (!hadCallToolHandler) server.setRequestHandler(types_js_namespaceObject.CallToolRequestSchema, async (request)=>{
45
- throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);
46
- });
44
+ if (!hadCallToolHandler) (0, external_instrumentation_js_namespaceObject.registerFallbackRequestHandler)(server, 'tools/call', unknownToolHandler, traceToolCall);
47
45
  } catch (error) {
48
46
  logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
49
47
  throw error;
50
48
  }
51
49
  }
50
+ async function unknownToolHandler(request) {
51
+ throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);
52
+ }
52
53
  async function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {
53
54
  const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
54
55
  if (!data) {
@@ -1,26 +1,27 @@
1
- import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
2
1
  import { MCPAnalyticsEventType } from "./event-types.mjs";
3
2
  import { getServerTrackingData } from "./internal.mjs";
4
3
  import { handleReportMissing, resolveMissingCapabilityToolName } from "./tools.mjs";
5
- import { captureToolCall, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers } from "./instrumentation.mjs";
4
+ import { captureToolCall, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, registerFallbackRequestHandler } from "./instrumentation.mjs";
6
5
  import { getContextArgument } from "./tracing-helpers.mjs";
7
6
  function instrumentLowLevelServer(server, logger) {
8
7
  try {
9
8
  const hadCallToolHandler = server._requestHandlers.has('tools/call');
9
+ const traceToolCall = (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger);
10
10
  const handlers = {
11
11
  initialize: (server, originalHandler, request, extra)=>handleInitializeRequest(server, originalHandler, request, extra, logger),
12
12
  'tools/list': (server, originalHandler, request, extra)=>handleListToolsRequest(server, originalHandler, request, extra, logger),
13
- 'tools/call': (server, originalHandler, request, extra)=>handleToolCallRequest(server, originalHandler, request, extra, logger)
13
+ 'tools/call': traceToolCall
14
14
  };
15
15
  patchRequestHandlers(server, handlers);
16
- if (!hadCallToolHandler) server.setRequestHandler(CallToolRequestSchema, async (request)=>{
17
- throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);
18
- });
16
+ if (!hadCallToolHandler) registerFallbackRequestHandler(server, 'tools/call', unknownToolHandler, traceToolCall);
19
17
  } catch (error) {
20
18
  logger(`Warning: Failed to setup tool call instrumentation - ${error}`);
21
19
  throw error;
22
20
  }
23
21
  }
22
+ async function unknownToolHandler(request) {
23
+ throw new Error(`Unknown tool: ${request.params?.name || 'unknown'}`);
24
+ }
24
25
  async function handleToolCallRequest(server, originalCallToolHandler, request, extra, logger) {
25
26
  const data = getServerTrackingData(server);
26
27
  if (!data) {
@@ -55,6 +55,35 @@ export declare function captureToolCall(params: TraceToolCallParams): Promise<un
55
55
  * supplies `request` and `extra` per call.
56
56
  */
57
57
  export type HandlerPatch = (server: MCPServerLike, originalHandler: MCPRequestHandler, request: MCPRequestLike, extra: CompatibleRequestHandlerExtra | undefined) => Promise<unknown>;
58
+ /**
59
+ * Registers a synthetic fallback handler for `handlerName`, already wrapped in
60
+ * `patch`, by writing straight into `_requestHandlers` instead of going through
61
+ * `setRequestHandler`.
62
+ *
63
+ * Bypassing the SDK setter is deliberate, on three counts:
64
+ *
65
+ * - **Capability assertion.** `setRequestHandler` refuses a method the server
66
+ * never declared a capability for, so instrumenting a low-level server built
67
+ * without `capabilities.tools` used to throw `Server does not support tools`
68
+ * and leave instrumentation half-applied. Our fallback is not a capability the
69
+ * server offers — it exists only so a call for a tool nobody claims is still
70
+ * captured — so the assertion has nothing to protect here.
71
+ * - **Schema validation.** The setter also wraps the handler in request/result
72
+ * parsing, which a handler that can only ever throw `Unknown tool` never needs.
73
+ * - **Portability.** The setter's first argument is a Zod schema on SDK v1 and a
74
+ * method string on v2; the map key is the same string on both, so this is the
75
+ * one registration form that does not need to know which major it is talking
76
+ * to — and it drops the last runtime `@modelcontextprotocol/sdk` import from
77
+ * the shipped bundle.
78
+ */
79
+ export declare function registerFallbackRequestHandler(server: MCPServerLike, handlerName: string, fallbackHandler: MCPRequestHandler, patch: HandlerPatch): void;
80
+ /**
81
+ * Applies the `patches` (keyed by method, e.g. `initialize`, `tools/list`) to the
82
+ * handlers already registered, and patches `setRequestHandler` so matching
83
+ * handlers registered later are patched too. The latter is what makes adapters
84
+ * that register handlers post-construction work — e.g. `@rekog/mcp-nest` hands a
85
+ * bare server to instrument() and only then registers its handlers.
86
+ */
58
87
  export declare function patchRequestHandlers(server: MCPServerLike, patches: Record<string, HandlerPatch>): void;
59
88
  /**
60
89
  * Checks the server's raw listing for a real owner of a candidate virtual tool.
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/extensions/instrumentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/extensions/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -31,12 +31,14 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  readToolMetaCategory: ()=>readToolMetaCategory,
32
32
  cacheToolCategories: ()=>cacheToolCategories,
33
33
  handleListToolsRequest: ()=>handleListToolsRequest,
34
+ registerFallbackRequestHandler: ()=>registerFallbackRequestHandler,
34
35
  patchRequestHandlers: ()=>patchRequestHandlers
35
36
  });
36
37
  const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
37
38
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
38
39
  const external_conversation_id_js_namespaceObject = require("./conversation-id.js");
39
40
  const external_client_identity_js_namespaceObject = require("./client-identity.js");
41
+ const external_transport_identity_js_namespaceObject = require("./transport-identity.js");
40
42
  const external_output_instructions_js_namespaceObject = require("./output-instructions.js");
41
43
  const external_capture_js_namespaceObject = require("./capture.js");
42
44
  const external_event_types_js_namespaceObject = require("./event-types.js");
@@ -108,6 +110,7 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
108
110
  toolDescription: toolName ? data.toolDescriptions.get(toolName) : void 0
109
111
  };
110
112
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
113
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
111
114
  await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
112
115
  (0, external_intent_js_namespaceObject.setEventIntent)(event, await (0, external_intent_js_namespaceObject.resolveToolCallIntent)(data, request, ownership.context, extra));
113
116
  return {
@@ -174,6 +177,10 @@ function rememberOriginalRequestHandler(server, handlerName, originalHandler) {
174
177
  }
175
178
  handlers.set(handlerName, originalHandler);
176
179
  }
180
+ function registerFallbackRequestHandler(server, handlerName, fallbackHandler, patch) {
181
+ rememberOriginalRequestHandler(server, handlerName, fallbackHandler);
182
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, fallbackHandler, request, extra));
183
+ }
177
184
  function patchRequestHandlers(server, patches) {
178
185
  for (const [handlerName, patch] of Object.entries(patches)){
179
186
  const originalHandler = server._requestHandlers.get(handlerName);
@@ -183,12 +190,11 @@ function patchRequestHandlers(server, patches) {
183
190
  }
184
191
  }
185
192
  const originalSetRequestHandler = server.setRequestHandler.bind(server);
186
- server.setRequestHandler = (requestSchema, originalHandler)=>{
187
- const shape = (0, external_mcp_sdk_compat_js_namespaceObject.getObjectShape)(requestSchema);
188
- const handlerName = shape?.method ? (0, external_mcp_sdk_compat_js_namespaceObject.getLiteralValue)(shape.method) : void 0;
189
- const patch = 'string' == typeof handlerName ? patches[handlerName] : void 0;
190
- if (!patch || 'string' != typeof handlerName) return originalSetRequestHandler(requestSchema, originalHandler);
191
- const result = originalSetRequestHandler(requestSchema, originalHandler);
193
+ server.setRequestHandler = (...args)=>{
194
+ const handlerName = (0, external_mcp_sdk_compat_js_namespaceObject.readRequestHandlerMethod)(args[0]);
195
+ const patch = void 0 !== handlerName && Object.prototype.hasOwnProperty.call(patches, handlerName) ? patches[handlerName] : void 0;
196
+ if (void 0 === handlerName || !patch) return originalSetRequestHandler(...args);
197
+ const result = originalSetRequestHandler(...args);
192
198
  const registeredHandler = server._requestHandlers.get(handlerName);
193
199
  if (registeredHandler) {
194
200
  rememberOriginalRequestHandler(server, handlerName, registeredHandler);
@@ -224,6 +230,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
224
230
  timestamp: startTime
225
231
  };
226
232
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
233
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
227
234
  if (data) await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
228
235
  const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);
229
236
  if (!data) {
@@ -396,6 +403,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
396
403
  timestamp: new Date()
397
404
  };
398
405
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
406
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
399
407
  await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
400
408
  const result = await originalInitializeHandler(request, extra);
401
409
  event.response = result;
@@ -429,6 +437,7 @@ exports.handleListToolsRequest = __webpack_exports__.handleListToolsRequest;
429
437
  exports.isToolAdvertised = __webpack_exports__.isToolAdvertised;
430
438
  exports.patchRequestHandlers = __webpack_exports__.patchRequestHandlers;
431
439
  exports.readToolMetaCategory = __webpack_exports__.readToolMetaCategory;
440
+ exports.registerFallbackRequestHandler = __webpack_exports__.registerFallbackRequestHandler;
432
441
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
433
442
  "cacheToolCategories",
434
443
  "cacheToolDescriptions",
@@ -437,7 +446,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
437
446
  "handleListToolsRequest",
438
447
  "isToolAdvertised",
439
448
  "patchRequestHandlers",
440
- "readToolMetaCategory"
449
+ "readToolMetaCategory",
450
+ "registerFallbackRequestHandler"
441
451
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
442
452
  Object.defineProperty(exports, '__esModule', {
443
453
  value: true
@@ -2,6 +2,7 @@ import { getAnalyticsParameterOwnership, stripOwnedAnalyticsArguments } from "./
2
2
  import { addContextParameterToTools, getContextDescription, isContextEnabled } from "./context-parameters.mjs";
3
3
  import { addConversationIdToTools, canInjectConversationIdPromptBack, injectConversationIdPromptBack, resolveConversationId } from "./conversation-id.mjs";
4
4
  import { stampMetaClientInfo } from "./client-identity.mjs";
5
+ import { stampTransportIdentity } from "./transport-identity.mjs";
5
6
  import { addInstructionsToOutputSchemas, mirrorInstructionsIntoStructuredContent } from "./output-instructions.mjs";
6
7
  import { captureEvent } from "./capture.mjs";
7
8
  import { MCPAnalyticsEventType } from "./event-types.mjs";
@@ -9,7 +10,7 @@ import { captureException } from "./exceptions.mjs";
9
10
  import { resolveToolCallIntent, setEventIntent, setExplicitContextIntent } from "./intent.mjs";
10
11
  import { getServerTrackingData, handleIdentify, setServerTrackingData, withIdentity } from "./internal.mjs";
11
12
  import { buildCapturedMcpParameters } from "./mcp-payloads.mjs";
12
- import { getLiteralValue, getObjectShape } from "./mcp-sdk-compat.mjs";
13
+ import { readRequestHandlerMethod } from "./mcp-sdk-compat.mjs";
13
14
  import { getSessionId, getSessionInfo, newSessionId } from "./session.mjs";
14
15
  import { encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport } from "./session-token.mjs";
15
16
  import { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from "./tools.mjs";
@@ -73,6 +74,7 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
73
74
  toolDescription: toolName ? data.toolDescriptions.get(toolName) : void 0
74
75
  };
75
76
  stampMetaClientInfo(event, request);
77
+ stampTransportIdentity(event, extra);
76
78
  await applyResolvedMetadata(event, data, request, extra);
77
79
  setEventIntent(event, await resolveToolCallIntent(data, request, ownership.context, extra));
78
80
  return {
@@ -139,6 +141,10 @@ function rememberOriginalRequestHandler(server, handlerName, originalHandler) {
139
141
  }
140
142
  handlers.set(handlerName, originalHandler);
141
143
  }
144
+ function registerFallbackRequestHandler(server, handlerName, fallbackHandler, patch) {
145
+ rememberOriginalRequestHandler(server, handlerName, fallbackHandler);
146
+ server._requestHandlers.set(handlerName, (request, extra)=>patch(server, fallbackHandler, request, extra));
147
+ }
142
148
  function patchRequestHandlers(server, patches) {
143
149
  for (const [handlerName, patch] of Object.entries(patches)){
144
150
  const originalHandler = server._requestHandlers.get(handlerName);
@@ -148,12 +154,11 @@ function patchRequestHandlers(server, patches) {
148
154
  }
149
155
  }
150
156
  const originalSetRequestHandler = server.setRequestHandler.bind(server);
151
- server.setRequestHandler = (requestSchema, originalHandler)=>{
152
- const shape = getObjectShape(requestSchema);
153
- const handlerName = shape?.method ? getLiteralValue(shape.method) : void 0;
154
- const patch = 'string' == typeof handlerName ? patches[handlerName] : void 0;
155
- if (!patch || 'string' != typeof handlerName) return originalSetRequestHandler(requestSchema, originalHandler);
156
- const result = originalSetRequestHandler(requestSchema, originalHandler);
157
+ server.setRequestHandler = (...args)=>{
158
+ const handlerName = readRequestHandlerMethod(args[0]);
159
+ const patch = void 0 !== handlerName && Object.prototype.hasOwnProperty.call(patches, handlerName) ? patches[handlerName] : void 0;
160
+ if (void 0 === handlerName || !patch) return originalSetRequestHandler(...args);
161
+ const result = originalSetRequestHandler(...args);
157
162
  const registeredHandler = server._requestHandlers.get(handlerName);
158
163
  if (registeredHandler) {
159
164
  rememberOriginalRequestHandler(server, handlerName, registeredHandler);
@@ -189,6 +194,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
189
194
  timestamp: startTime
190
195
  };
191
196
  stampMetaClientInfo(event, request);
197
+ stampTransportIdentity(event, extra);
192
198
  if (data) await applyResolvedMetadata(event, data, request, extra);
193
199
  const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);
194
200
  if (!data) {
@@ -361,6 +367,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
361
367
  timestamp: new Date()
362
368
  };
363
369
  stampMetaClientInfo(event, request);
370
+ stampTransportIdentity(event, extra);
364
371
  await applyResolvedMetadata(event, data, request, extra);
365
372
  const result = await originalInitializeHandler(request, extra);
366
373
  event.response = result;
@@ -386,4 +393,4 @@ function readProtocolVersion(result, request) {
386
393
  const requested = request.params?.protocolVersion;
387
394
  return 'string' == typeof requested && requested.length > 0 ? requested : void 0;
388
395
  }
389
- export { cacheToolCategories, cacheToolDescriptions, captureToolCall, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory };
396
+ export { cacheToolCategories, cacheToolDescriptions, captureToolCall, handleInitializeRequest, handleListToolsRequest, isToolAdvertised, patchRequestHandlers, readToolMetaCategory, registerFallbackRequestHandler };
@@ -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,WAAW,EACX,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,kBAAkB,EAAE,WAAW,EAC/B,KAAK,CAAC,EAAE,6BAA6B;AACrC;;;;;GAKG;AACH,uBAAuB,UAAQ,GAC9B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAuDnC;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,CAOtG;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,WAAW,EACX,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,kBAAkB,EAAE,WAAW,EAC/B,KAAK,CAAC,EAAE,6BAA6B;AACrC;;;;;GAKG;AACH,uBAAuB,UAAQ,GAC9B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAuDnC;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,CAOtG;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"}
@@ -36,6 +36,7 @@ __webpack_require__.d(__webpack_exports__, {
36
36
  const external_event_types_js_namespaceObject = require("./event-types.js");
37
37
  const external_capture_js_namespaceObject = require("./capture.js");
38
38
  const external_client_identity_js_namespaceObject = require("./client-identity.js");
39
+ const external_transport_identity_js_namespaceObject = require("./transport-identity.js");
39
40
  class IdentityCache {
40
41
  constructor(maxSize = 1000){
41
42
  this._cache = new Map();
@@ -110,6 +111,7 @@ async function handleIdentify(server, data, sessionId, request, requestAttributi
110
111
  timestamp: new Date()
111
112
  };
112
113
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(identifyEvent, request);
114
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(identifyEvent, extra);
113
115
  try {
114
116
  const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;
115
117
  if (identityResult) {
@@ -1,6 +1,7 @@
1
1
  import { MCPAnalyticsEventType } from "./event-types.mjs";
2
2
  import { captureEvent } from "./capture.mjs";
3
3
  import { stampMetaClientInfo } from "./client-identity.mjs";
4
+ import { stampTransportIdentity } from "./transport-identity.mjs";
4
5
  class IdentityCache {
5
6
  constructor(maxSize = 1000){
6
7
  this._cache = new Map();
@@ -75,6 +76,7 @@ async function handleIdentify(server, data, sessionId, request, requestAttributi
75
76
  timestamp: new Date()
76
77
  };
77
78
  stampMetaClientInfo(identifyEvent, request);
79
+ stampTransportIdentity(identifyEvent, extra);
78
80
  try {
79
81
  const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;
80
82
  if (identityResult) {
@@ -30,5 +30,15 @@ export declare function createWrappedTool(originalTool: RegisteredTool, wrappedF
30
30
  export declare function isZ4Schema(schema: unknown): boolean;
31
31
  export declare function isZodRawShapeCompat(schema: unknown): schema is Record<string, unknown>;
32
32
  export declare function getObjectShape(schema: unknown): Record<string, unknown> | undefined;
33
+ /**
34
+ * Reads the method name a `setRequestHandler` registration is for.
35
+ *
36
+ * The two SDK majors disagree on what the first argument is: v1 passes the Zod
37
+ * schema for the request and carries the method as a literal on its shape, v2
38
+ * passes the method string itself. A registration we cannot name is one we
39
+ * cannot match against a patch — which is how a handler registered after
40
+ * `instrument()` on v2 ends up replacing our wrapper instead of being wrapped.
41
+ */
42
+ export declare function readRequestHandlerMethod(requestSchema: unknown): string | undefined;
33
43
  export declare function getLiteralValue(schema: unknown): unknown;
34
44
  //# sourceMappingURL=mcp-sdk-compat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-sdk-compat.d.ts","sourceRoot":"","sources":["../../src/extensions/mcp-sdk-compat.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAA;AAEpD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAQlE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAKxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,cAAc,CAMrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,GAAG,cAAc,CAM7G;AAyBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAKnD;AAaD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA6BnF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAkCxD"}
1
+ {"version":3,"file":"mcp-sdk-compat.d.ts","sourceRoot":"","sources":["../../src/extensions/mcp-sdk-compat.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAA;AAEpD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAQlE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAKxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,cAAc,CAMrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,GAAG,cAAc,CAM7G;AAyBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAKnD;AAaD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA6BnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOnF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAkCxD"}