@posthog/mcp 0.10.9 → 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 (73) 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/instrumentation.d.ts +7 -0
  19. package/dist/extensions/instrumentation.d.ts.map +1 -1
  20. package/dist/extensions/instrumentation.js +4 -0
  21. package/dist/extensions/instrumentation.mjs +4 -0
  22. package/dist/extensions/internal.d.ts.map +1 -1
  23. package/dist/extensions/internal.js +2 -0
  24. package/dist/extensions/internal.mjs +2 -0
  25. package/dist/extensions/output-instructions.d.ts +6 -8
  26. package/dist/extensions/output-instructions.d.ts.map +1 -1
  27. package/dist/extensions/posthog-events.js +4 -0
  28. package/dist/extensions/posthog-events.mjs +4 -0
  29. package/dist/extensions/posthog-mcp.d.ts.map +1 -1
  30. package/dist/extensions/posthog-mcp.js +3 -0
  31. package/dist/extensions/posthog-mcp.mjs +3 -0
  32. package/dist/extensions/session-token.d.ts.map +1 -1
  33. package/dist/extensions/session-token.js +5 -14
  34. package/dist/extensions/session-token.mjs +2 -11
  35. package/dist/extensions/session.d.ts +4 -3
  36. package/dist/extensions/session.d.ts.map +1 -1
  37. package/dist/extensions/sink.d.ts +4 -6
  38. package/dist/extensions/sink.d.ts.map +1 -1
  39. package/dist/extensions/tools.d.ts.map +1 -1
  40. package/dist/extensions/transport-identity.d.ts +59 -0
  41. package/dist/extensions/transport-identity.d.ts.map +1 -0
  42. package/dist/extensions/transport-identity.js +63 -0
  43. package/dist/extensions/transport-identity.mjs +20 -0
  44. package/dist/extensions/truncation.d.ts.map +1 -1
  45. package/dist/extensions/truncation.js +2 -0
  46. package/dist/extensions/truncation.mjs +2 -0
  47. package/dist/types.d.ts +33 -0
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/dist/version.mjs +1 -1
  52. package/package.json +1 -1
  53. package/src/extensions/capture.ts +6 -0
  54. package/src/extensions/compatibility.ts +0 -9
  55. package/src/extensions/constants.ts +2 -0
  56. package/src/extensions/context-parameters.ts +3 -11
  57. package/src/extensions/conversation-id.ts +5 -17
  58. package/src/extensions/headers.ts +52 -0
  59. package/src/extensions/instrument-highlevel.ts +0 -1
  60. package/src/extensions/instrument-lowlevel.ts +0 -1
  61. package/src/extensions/instrumentation.ts +29 -37
  62. package/src/extensions/internal.ts +6 -5
  63. package/src/extensions/output-instructions.ts +6 -8
  64. package/src/extensions/posthog-events.ts +14 -0
  65. package/src/extensions/posthog-mcp.ts +7 -5
  66. package/src/extensions/session-token.ts +3 -15
  67. package/src/extensions/session.ts +21 -35
  68. package/src/extensions/sink.ts +4 -6
  69. package/src/extensions/tools.ts +3 -6
  70. package/src/extensions/transport-identity.ts +94 -0
  71. package/src/extensions/truncation.ts +4 -0
  72. package/src/types.ts +33 -0
  73. 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":"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,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"}
@@ -77,6 +77,13 @@ export type HandlerPatch = (server: MCPServerLike, originalHandler: MCPRequestHa
77
77
  * the shipped bundle.
78
78
  */
79
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
+ */
80
87
  export declare function patchRequestHandlers(server: MCPServerLike, patches: Record<string, HandlerPatch>): void;
81
88
  /**
82
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":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,aAAa,EAId,MAAM,UAAU,CAAA;AAajB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAIrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAQxC;;;;;;GAMG;AAEH,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7G,2EAA2E;AAC3E,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3E,UAAU,mBAAmB;IAC3B,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,6BAA6B,CAAA;IACrC,OAAO,EAAE,YAAY,CAAA;IACrB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAA;CAClC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmDnF;AAqND;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,iBAAiB,EAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,KAC7C,OAAO,CAAC,OAAO,CAAC,CAAA;AAwBrB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,iBAAiB,EAClC,KAAK,EAAE,YAAY,GAClB,IAAI,CAGN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CA2CvG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAoB9B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,wBAAwB,EAAE,iBAAiB,EAC3C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAqD9C;AAqFD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CASnH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAUjH;AA+GD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,aAAa,EACrB,yBAAyB,EAAE,iBAAiB,EAC5C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,6BAA6B,GAAG,SAAS,EAChD,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC,CA2DlB"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/extensions/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ const external_analytics_parameters_js_namespaceObject = require("./analytics-pa
38
38
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
39
39
  const external_conversation_id_js_namespaceObject = require("./conversation-id.js");
40
40
  const external_client_identity_js_namespaceObject = require("./client-identity.js");
41
+ const external_transport_identity_js_namespaceObject = require("./transport-identity.js");
41
42
  const external_output_instructions_js_namespaceObject = require("./output-instructions.js");
42
43
  const external_capture_js_namespaceObject = require("./capture.js");
43
44
  const external_event_types_js_namespaceObject = require("./event-types.js");
@@ -109,6 +110,7 @@ async function prepareToolCallEvent(server, data, request, downstreamRequest, ex
109
110
  toolDescription: toolName ? data.toolDescriptions.get(toolName) : void 0
110
111
  };
111
112
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
113
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
112
114
  await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
113
115
  (0, external_intent_js_namespaceObject.setEventIntent)(event, await (0, external_intent_js_namespaceObject.resolveToolCallIntent)(data, request, ownership.context, extra));
114
116
  return {
@@ -228,6 +230,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
228
230
  timestamp: startTime
229
231
  };
230
232
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
233
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
231
234
  if (data) await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
232
235
  const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);
233
236
  if (!data) {
@@ -400,6 +403,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
400
403
  timestamp: new Date()
401
404
  };
402
405
  (0, external_client_identity_js_namespaceObject.stampMetaClientInfo)(event, request);
406
+ (0, external_transport_identity_js_namespaceObject.stampTransportIdentity)(event, extra);
403
407
  await (0, external_tracing_helpers_js_namespaceObject.applyResolvedMetadata)(event, data, request, extra);
404
408
  const result = await originalInitializeHandler(request, extra);
405
409
  event.response = result;
@@ -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";
@@ -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 {
@@ -192,6 +194,7 @@ async function handleListToolsRequest(server, originalListToolsHandler, request,
192
194
  timestamp: startTime
193
195
  };
194
196
  stampMetaClientInfo(event, request);
197
+ stampTransportIdentity(event, extra);
195
198
  if (data) await applyResolvedMetadata(event, data, request, extra);
196
199
  const tools = await getTracedToolsList(server, originalListToolsHandler, request, extra, event, logger, requestAttribution);
197
200
  if (!data) {
@@ -364,6 +367,7 @@ async function handleInitializeRequest(server, originalInitializeHandler, reques
364
367
  timestamp: new Date()
365
368
  };
366
369
  stampMetaClientInfo(event, request);
370
+ stampTransportIdentity(event, extra);
367
371
  await applyResolvedMetadata(event, data, request, extra);
368
372
  const result = await originalInitializeHandler(request, extra);
369
373
  event.response = result;
@@ -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) {
@@ -1,17 +1,15 @@
1
1
  import type { LoggerFn } from './logger';
2
2
  /**
3
- * The `conversation_id` session handle reaches the agent as a text block appended to the
4
- * tool result. That block is invisible to any client that reads
5
- * `structuredContent` instead of `content` — which is what clients do whenever a
6
- * tool declares an `outputSchema`. Measured against Claude Code, correlation for
7
- * such tools drops to zero.
8
- *
9
- * The fix is to mirror the session handle into `structuredContent` as well, which this
10
- * module does in two halves that must stay in that order:
3
+ * Mirrors the `conversation_id` session handle into `structuredContent`, in two
4
+ * halves that must stay in that order:
11
5
  *
12
6
  * 1. declare `_mcp_instructions` on the tool's advertised `outputSchema`
13
7
  * 2. write it into the result's `structuredContent`
14
8
  *
9
+ * Needed because clients that read `structuredContent` — which they do whenever
10
+ * a tool declares an `outputSchema` — never see the `content` text block that
11
+ * carries the handle (ADR-0004).
12
+ *
15
13
  * The declaration is what makes the write safe. The MCP client ajv-validates
16
14
  * `structuredContent` against the schema from `tools/list`, and
17
15
  * `zod-to-json-schema` emits `additionalProperties: false` for a plain
@@ -1 +1 @@
1
- {"version":3,"file":"output-instructions.d.ts","sourceRoot":"","sources":["../../src/extensions/output-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAIxC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,sBAAsB,CAAA;AAQvD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAgC3E;AAwCD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,SAAS,gCAAgC,EAC1F,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,QAAc,GACrB,KAAK,CA8CP;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,SAAS,gCAAgC,EAC3F,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB;AAID,uFAAuF;AACvF,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG,wBAAwB,CAE9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAkBxG"}
1
+ {"version":3,"file":"output-instructions.d.ts","sourceRoot":"","sources":["../../src/extensions/output-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAIxC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,sBAAsB,CAAA;AAQvD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAgC3E;AAwCD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,SAAS,gCAAgC,EAC1F,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,QAAc,GACrB,KAAK,CA8CP;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,SAAS,gCAAgC,EAC3F,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB;AAID,uFAAuF;AACvF,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG,wBAAwB,CAE9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAkBxG"}
@@ -98,6 +98,8 @@ function addCommonEventProperties(event, properties) {
98
98
  if (event.serverVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;
99
99
  if (event.clientName) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientName] = event.clientName;
100
100
  if (event.clientVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;
101
+ if (event.clientUserAgent) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;
102
+ if (event.vendorClient) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;
101
103
  if (event.protocolVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;
102
104
  if (event.userIntent) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.Intent] = event.userIntent;
103
105
  if (event.userIntentSource) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.IntentSource] = event.userIntentSource;
@@ -136,6 +138,8 @@ function buildExceptionEvent(event) {
136
138
  if (event.serverVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;
137
139
  if (event.clientName) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientName] = event.clientName;
138
140
  if (event.clientVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;
141
+ if (event.clientUserAgent) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;
142
+ if (event.vendorClient) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;
139
143
  if (event.protocolVersion) properties[external_constants_js_namespaceObject.PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;
140
144
  addCustomEventProperties(event, properties);
141
145
  return {
@@ -70,6 +70,8 @@ function addCommonEventProperties(event, properties) {
70
70
  if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;
71
71
  if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;
72
72
  if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;
73
+ if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;
74
+ if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;
73
75
  if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;
74
76
  if (event.userIntent) properties[PostHogMCPAnalyticsProperty.Intent] = event.userIntent;
75
77
  if (event.userIntentSource) properties[PostHogMCPAnalyticsProperty.IntentSource] = event.userIntentSource;
@@ -108,6 +110,8 @@ function buildExceptionEvent(event) {
108
110
  if (event.serverVersion) properties[PostHogMCPAnalyticsProperty.ServerVersion] = event.serverVersion;
109
111
  if (event.clientName) properties[PostHogMCPAnalyticsProperty.ClientName] = event.clientName;
110
112
  if (event.clientVersion) properties[PostHogMCPAnalyticsProperty.ClientVersion] = event.clientVersion;
113
+ if (event.clientUserAgent) properties[PostHogMCPAnalyticsProperty.ClientUserAgent] = event.clientUserAgent;
114
+ if (event.vendorClient) properties[PostHogMCPAnalyticsProperty.VendorClient] = event.vendorClient;
111
115
  if (event.protocolVersion) properties[PostHogMCPAnalyticsProperty.ProtocolVersion] = event.protocolVersion;
112
116
  addCustomEventProperties(event, properties);
113
117
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"posthog-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/posthog-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,KAAK,EACV,qBAAqB,EAIrB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAA;AACjB,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAA;AAQ7B;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,UAAW,SAAQ,OAAO;;gBAWzB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAO3D,8FAA8F;IAC9F,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAiBhD,iEAAiE;IACjE,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAUpD;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAclD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,CAAC,KAAK,SAAS,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,sBAA2B,GAAG,KAAK,EAAE;IAYnH;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IAW/E;;;;OAIG;IACH,wBAAwB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI;CAkBnE"}
1
+ {"version":3,"file":"posthog-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/posthog-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,KAAK,EACV,qBAAqB,EAIrB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAA;AACjB,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAA;AAS7B;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,UAAW,SAAQ,OAAO;;gBAOzB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAM3D,8FAA8F;IAC9F,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAiBhD,iEAAiE;IACjE,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAUpD;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAclD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,CAAC,KAAK,SAAS,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,sBAA2B,GAAG,KAAK,EAAE;IAYnH;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IAW/E;;;;OAIG;IACH,wBAAwB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI;CAkBnE"}
@@ -30,6 +30,7 @@ const external_posthog_node_namespaceObject = require("posthog-node");
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_exceptions_js_namespaceObject = require("./exceptions.js");
33
+ const external_headers_js_namespaceObject = require("./headers.js");
33
34
  const external_lib_identity_js_namespaceObject = require("./lib-identity.js");
34
35
  const external_logger_js_namespaceObject = require("./logger.js");
35
36
  const external_sink_js_namespaceObject = require("./sink.js");
@@ -115,6 +116,8 @@ function baseEvent(eventType, common) {
115
116
  eventType,
116
117
  sessionId: common.sessionId,
117
118
  protocolVersion: common.protocolVersion,
119
+ clientUserAgent: (0, external_headers_js_namespaceObject.normalizeHeaderString)(common.clientUserAgent),
120
+ vendorClient: (0, external_headers_js_namespaceObject.normalizeHeaderString)(common.vendorClient),
118
121
  timestamp: common.timestamp ?? new Date(),
119
122
  properties: common.properties,
120
123
  groups: common.groups
@@ -2,6 +2,7 @@ import { PostHog } from "posthog-node";
2
2
  import { addContextParameterToTools, getContextDescription, isContextEnabled } from "./context-parameters.mjs";
3
3
  import { MCPAnalyticsEventType } from "./event-types.mjs";
4
4
  import { captureException } from "./exceptions.mjs";
5
+ import { normalizeHeaderString } from "./headers.mjs";
5
6
  import { applyMcpLibIdentity } from "./lib-identity.mjs";
6
7
  import { log } from "./logger.mjs";
7
8
  import { McpEventSink } from "./sink.mjs";
@@ -87,6 +88,8 @@ function baseEvent(eventType, common) {
87
88
  eventType,
88
89
  sessionId: common.sessionId,
89
90
  protocolVersion: common.protocolVersion,
91
+ clientUserAgent: normalizeHeaderString(common.clientUserAgent),
92
+ vendorClient: normalizeHeaderString(common.vendorClient),
90
93
  timestamp: common.timestamp ?? new Date(),
91
94
  properties: common.properties,
92
95
  groups: common.groups
@@ -1 +1 @@
1
- {"version":3,"file":"session-token.d.ts","sourceRoot":"","sources":["../../src/extensions/session-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,kBAAkB,mBAAmB,CAAA;AAElD,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAWD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAepE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAiC1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBzE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAsBpF"}
1
+ {"version":3,"file":"session-token.d.ts","sourceRoot":"","sources":["../../src/extensions/session-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,kBAAkB,mBAAmB,CAAA;AAElD,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAWD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAepE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAiC1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAsBpF"}
@@ -24,12 +24,13 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- MCP_SESSION_HEADER: ()=>MCP_SESSION_HEADER,
28
27
  decodeSessionId: ()=>decodeSessionId,
28
+ writeSessionIdToTransport: ()=>writeSessionIdToTransport,
29
+ MCP_SESSION_HEADER: ()=>MCP_SESSION_HEADER,
29
30
  encodeSessionId: ()=>encodeSessionId,
30
- readMcpSessionHeader: ()=>readMcpSessionHeader,
31
- writeSessionIdToTransport: ()=>writeSessionIdToTransport
31
+ readMcpSessionHeader: ()=>readMcpSessionHeader
32
32
  });
33
+ const external_headers_js_namespaceObject = require("./headers.js");
33
34
  const MCP_SESSION_HEADER = 'mcp-session-id';
34
35
  const MAX_TOKEN_LENGTH = 4096;
35
36
  const MAX_SESSION_ID_LENGTH = 128;
@@ -66,17 +67,7 @@ function decodeSessionId(value) {
66
67
  return payload;
67
68
  }
68
69
  function readMcpSessionHeader(headers) {
69
- if (!headers || 'object' != typeof headers) return;
70
- const record = headers;
71
- let value = record[MCP_SESSION_HEADER];
72
- if (void 0 === value) {
73
- const key = Object.keys(record).find((k)=>k.toLowerCase() === MCP_SESSION_HEADER);
74
- value = void 0 === key ? void 0 : record[key];
75
- }
76
- const first = Array.isArray(value) ? value[0] : value;
77
- if ('string' != typeof first) return;
78
- const trimmed = first.trim();
79
- return trimmed.length > 0 ? trimmed : void 0;
70
+ return (0, external_headers_js_namespaceObject.readHeaderValue)(headers, MCP_SESSION_HEADER);
80
71
  }
81
72
  function writeSessionIdToTransport(transport, token) {
82
73
  if (!transport || 'object' != typeof transport) return false;
@@ -1,3 +1,4 @@
1
+ import { readHeaderValue } from "./headers.mjs";
1
2
  const MCP_SESSION_HEADER = 'mcp-session-id';
2
3
  const MAX_TOKEN_LENGTH = 4096;
3
4
  const MAX_SESSION_ID_LENGTH = 128;
@@ -34,17 +35,7 @@ function decodeSessionId(value) {
34
35
  return payload;
35
36
  }
36
37
  function readMcpSessionHeader(headers) {
37
- if (!headers || 'object' != typeof headers) return;
38
- const record = headers;
39
- let value = record[MCP_SESSION_HEADER];
40
- if (void 0 === value) {
41
- const key = Object.keys(record).find((k)=>k.toLowerCase() === MCP_SESSION_HEADER);
42
- value = void 0 === key ? void 0 : record[key];
43
- }
44
- const first = Array.isArray(value) ? value[0] : value;
45
- if ('string' != typeof first) return;
46
- const trimmed = first.trim();
47
- return trimmed.length > 0 ? trimmed : void 0;
38
+ return readHeaderValue(headers, MCP_SESSION_HEADER);
48
39
  }
49
40
  function writeSessionIdToTransport(transport, token) {
50
41
  if (!transport || 'object' != typeof transport) return false;
@@ -6,9 +6,10 @@ export declare function newSessionId(): string;
6
6
  */
7
7
  export declare function deriveSessionIdFromMCPSession(mcpSessionId: string): string;
8
8
  /**
9
- * Derives the SDK session id from the agent's conversation handle. Deterministic
10
- * and unsalted on purpose: two pods that never met must agree on the session, and
11
- * the 2026-07-28 revision leaves them no shared state to agree through.
9
+ * Derives the SDK session id from the agent's conversation handle (ADR-0004).
10
+ * Deterministic and unsalted on purpose: two pods that never met must agree on
11
+ * the session, and the 2026-07-28 revision leaves them no shared state to agree
12
+ * through.
12
13
  *
13
14
  * Hashed rather than used verbatim so an MCP session can never collide with a
14
15
  * Session Replay id — a bare uuidv7 would render a "View recording" button that
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/extensions/session.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,aAAa,EAEb,WAAW,EACZ,MAAM,UAAU,CAAA;AAOjB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,6BAA6B,EACrC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CA0CR;AA4ED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CAmCb"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/extensions/session.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,aAAa,EAEb,WAAW,EACZ,MAAM,UAAU,CAAA;AAOjB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,6BAA6B,EACrC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAgCR;AAuED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CAmCb"}