@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.
- package/dist/extensions/capture.d.ts.map +1 -1
- package/dist/extensions/capture.js +2 -0
- package/dist/extensions/capture.mjs +2 -0
- package/dist/extensions/compatibility.d.ts.map +1 -1
- package/dist/extensions/constants.d.ts +2 -0
- package/dist/extensions/constants.d.ts.map +1 -1
- package/dist/extensions/constants.js +3 -1
- package/dist/extensions/constants.mjs +3 -1
- package/dist/extensions/context-parameters.d.ts.map +1 -1
- package/dist/extensions/conversation-id.d.ts +2 -13
- package/dist/extensions/conversation-id.d.ts.map +1 -1
- package/dist/extensions/headers.d.ts +33 -0
- package/dist/extensions/headers.d.ts.map +1 -0
- package/dist/extensions/headers.js +54 -0
- package/dist/extensions/headers.mjs +17 -0
- package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
- package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
- package/dist/extensions/instrumentation.d.ts +7 -0
- package/dist/extensions/instrumentation.d.ts.map +1 -1
- package/dist/extensions/instrumentation.js +4 -0
- package/dist/extensions/instrumentation.mjs +4 -0
- package/dist/extensions/internal.d.ts.map +1 -1
- package/dist/extensions/internal.js +2 -0
- package/dist/extensions/internal.mjs +2 -0
- package/dist/extensions/output-instructions.d.ts +6 -8
- package/dist/extensions/output-instructions.d.ts.map +1 -1
- package/dist/extensions/posthog-events.js +4 -0
- package/dist/extensions/posthog-events.mjs +4 -0
- package/dist/extensions/posthog-mcp.d.ts.map +1 -1
- package/dist/extensions/posthog-mcp.js +3 -0
- package/dist/extensions/posthog-mcp.mjs +3 -0
- package/dist/extensions/session-token.d.ts.map +1 -1
- package/dist/extensions/session-token.js +5 -14
- package/dist/extensions/session-token.mjs +2 -11
- package/dist/extensions/session.d.ts +4 -3
- package/dist/extensions/session.d.ts.map +1 -1
- package/dist/extensions/sink.d.ts +4 -6
- package/dist/extensions/sink.d.ts.map +1 -1
- package/dist/extensions/tools.d.ts.map +1 -1
- package/dist/extensions/transport-identity.d.ts +59 -0
- package/dist/extensions/transport-identity.d.ts.map +1 -0
- package/dist/extensions/transport-identity.js +63 -0
- package/dist/extensions/transport-identity.mjs +20 -0
- package/dist/extensions/truncation.d.ts.map +1 -1
- package/dist/extensions/truncation.js +2 -0
- package/dist/extensions/truncation.mjs +2 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +1 -1
- package/src/extensions/capture.ts +6 -0
- package/src/extensions/compatibility.ts +0 -9
- package/src/extensions/constants.ts +2 -0
- package/src/extensions/context-parameters.ts +3 -11
- package/src/extensions/conversation-id.ts +5 -17
- package/src/extensions/headers.ts +52 -0
- package/src/extensions/instrument-highlevel.ts +0 -1
- package/src/extensions/instrument-lowlevel.ts +0 -1
- package/src/extensions/instrumentation.ts +29 -37
- package/src/extensions/internal.ts +6 -5
- package/src/extensions/output-instructions.ts +6 -8
- package/src/extensions/posthog-events.ts +14 -0
- package/src/extensions/posthog-mcp.ts +7 -5
- package/src/extensions/session-token.ts +3 -15
- package/src/extensions/session.ts +21 -35
- package/src/extensions/sink.ts +4 -6
- package/src/extensions/tools.ts +3 -6
- package/src/extensions/transport-identity.ts +94 -0
- package/src/extensions/truncation.ts +4 -0
- package/src/types.ts +33 -0
- 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,
|
|
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;
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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;
|
|
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;
|
|
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
|
-
*
|
|
4
|
-
*
|
|
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
|
|
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;
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
10
|
-
* and unsalted on purpose: two pods that never met must agree on
|
|
11
|
-
* the 2026-07-28 revision leaves them no shared state to agree
|
|
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
|
|
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"}
|