@posthog/mcp 0.10.8 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/instrument-lowlevel.js +6 -5
- package/dist/extensions/instrument-lowlevel.mjs +7 -6
- package/dist/extensions/instrumentation.d.ts +29 -0
- package/dist/extensions/instrumentation.d.ts.map +1 -1
- package/dist/extensions/instrumentation.js +17 -7
- package/dist/extensions/instrumentation.mjs +15 -8
- 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/mcp-sdk-compat.d.ts +10 -0
- package/dist/extensions/mcp-sdk-compat.d.ts.map +1 -1
- package/dist/extensions/mcp-sdk-compat.js +11 -2
- package/dist/extensions/mcp-sdk-compat.mjs +7 -1
- 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 +14 -10
- package/src/extensions/instrumentation.ts +82 -46
- package/src/extensions/internal.ts +6 -5
- package/src/extensions/mcp-sdk-compat.ts +18 -0
- 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
|
@@ -31,7 +31,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
getToolFunctionKey: ()=>getToolFunctionKey,
|
|
32
32
|
hasToolFunction: ()=>hasToolFunction,
|
|
33
33
|
isZ4Schema: ()=>isZ4Schema,
|
|
34
|
-
isZodRawShapeCompat: ()=>isZodRawShapeCompat
|
|
34
|
+
isZodRawShapeCompat: ()=>isZodRawShapeCompat,
|
|
35
|
+
readRequestHandlerMethod: ()=>readRequestHandlerMethod
|
|
35
36
|
});
|
|
36
37
|
function getToolFunction(tool) {
|
|
37
38
|
if ('handler' in tool && 'function' == typeof tool.handler) return tool.handler;
|
|
@@ -82,6 +83,12 @@ function getObjectShape(schema) {
|
|
|
82
83
|
}
|
|
83
84
|
return rawShape;
|
|
84
85
|
}
|
|
86
|
+
function readRequestHandlerMethod(requestSchema) {
|
|
87
|
+
if ('string' == typeof requestSchema) return requestSchema;
|
|
88
|
+
const shape = getObjectShape(requestSchema);
|
|
89
|
+
const method = shape?.method ? getLiteralValue(shape.method) : void 0;
|
|
90
|
+
return 'string' == typeof method ? method : void 0;
|
|
91
|
+
}
|
|
85
92
|
function getLiteralValue(schema) {
|
|
86
93
|
if (!schema || 'object' != typeof schema) return;
|
|
87
94
|
if (isZ4Schema(schema)) {
|
|
@@ -106,6 +113,7 @@ exports.getToolFunctionKey = __webpack_exports__.getToolFunctionKey;
|
|
|
106
113
|
exports.hasToolFunction = __webpack_exports__.hasToolFunction;
|
|
107
114
|
exports.isZ4Schema = __webpack_exports__.isZ4Schema;
|
|
108
115
|
exports.isZodRawShapeCompat = __webpack_exports__.isZodRawShapeCompat;
|
|
116
|
+
exports.readRequestHandlerMethod = __webpack_exports__.readRequestHandlerMethod;
|
|
109
117
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
110
118
|
"createWrappedTool",
|
|
111
119
|
"getLiteralValue",
|
|
@@ -114,7 +122,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
114
122
|
"getToolFunctionKey",
|
|
115
123
|
"hasToolFunction",
|
|
116
124
|
"isZ4Schema",
|
|
117
|
-
"isZodRawShapeCompat"
|
|
125
|
+
"isZodRawShapeCompat",
|
|
126
|
+
"readRequestHandlerMethod"
|
|
118
127
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
119
128
|
Object.defineProperty(exports, '__esModule', {
|
|
120
129
|
value: true
|
|
@@ -47,6 +47,12 @@ function getObjectShape(schema) {
|
|
|
47
47
|
}
|
|
48
48
|
return rawShape;
|
|
49
49
|
}
|
|
50
|
+
function readRequestHandlerMethod(requestSchema) {
|
|
51
|
+
if ('string' == typeof requestSchema) return requestSchema;
|
|
52
|
+
const shape = getObjectShape(requestSchema);
|
|
53
|
+
const method = shape?.method ? getLiteralValue(shape.method) : void 0;
|
|
54
|
+
return 'string' == typeof method ? method : void 0;
|
|
55
|
+
}
|
|
50
56
|
function getLiteralValue(schema) {
|
|
51
57
|
if (!schema || 'object' != typeof schema) return;
|
|
52
58
|
if (isZ4Schema(schema)) {
|
|
@@ -63,4 +69,4 @@ function getLiteralValue(schema) {
|
|
|
63
69
|
const directValue = schema.value;
|
|
64
70
|
if (void 0 !== directValue) return directValue;
|
|
65
71
|
}
|
|
66
|
-
export { createWrappedTool, getLiteralValue, getObjectShape, getToolFunction, getToolFunctionKey, hasToolFunction, isZ4Schema, isZodRawShapeCompat };
|
|
72
|
+
export { createWrappedTool, getLiteralValue, getObjectShape, getToolFunction, getToolFunctionKey, hasToolFunction, isZ4Schema, isZodRawShapeCompat, readRequestHandlerMethod };
|
|
@@ -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"}
|
|
@@ -24,9 +24,8 @@ export declare function processMcpEvent(event: McpEvent, options: McpCaptureOpti
|
|
|
24
24
|
captures: PostHogCaptureEvent[];
|
|
25
25
|
} | null>;
|
|
26
26
|
/**
|
|
27
|
-
* Wraps a user-supplied `posthog-node` client
|
|
28
|
-
*
|
|
29
|
-
* events, applies `beforeSend`, and hands each to `posthog.capture()`.
|
|
27
|
+
* Wraps a user-supplied `posthog-node` client: runs every MCP event through
|
|
28
|
+
* {@link processMcpEvent} and hands each surviving payload to `posthog.capture()`.
|
|
30
29
|
*
|
|
31
30
|
* The SDK does not own the client lifecycle — the host application constructs
|
|
32
31
|
* the `PostHog` instance and is responsible for `shutdown()` (matching
|
|
@@ -37,9 +36,8 @@ export declare class McpEventSink {
|
|
|
37
36
|
private readonly logger;
|
|
38
37
|
constructor(posthog: PostHog, logger?: LoggerFn);
|
|
39
38
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* dropped, never re-thrown into tool code.
|
|
39
|
+
* Errors at any stage are logged and the event is dropped, never re-thrown
|
|
40
|
+
* into tool code.
|
|
43
41
|
*/
|
|
44
42
|
capture(event: McpEvent, options: McpCaptureOptions): Promise<void>;
|
|
45
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/extensions/sink.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,kBAAkB,CAAA;AAKtF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,0BAA0B,EAAE,OAAO,CAAA;IACnC,kFAAkF;IAClF,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,iBAAiB,EAC1B,MAAM,GAAE,QAAc,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BnE;AA6BD
|
|
1
|
+
{"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/extensions/sink.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,kBAAkB,CAAA;AAKtF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,0BAA0B,EAAE,OAAO,CAAA;IACnC,kFAAkF;IAClF,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,iBAAiB,EAC1B,MAAM,GAAE,QAAc,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BnE;AA6BD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,QAAc;IAGzC;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmC1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/extensions/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAC9F,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAE5D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEzG;AAED,KAAK,2BAA2B,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,wBAAgB,8BAA8B,CAAC,IAAI,GAAE,MAA4B,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/extensions/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAC9F,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAE5D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IAAE,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEzG;AAED,KAAK,2BAA2B,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,wBAAgB,8BAA8B,CAAC,IAAI,GAAE,MAA4B,GAAG,2BAA2B,CA0B9G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CASnD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,GAAE,QAAc,GAAG,cAAc,CAGrG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { CompatibleRequestHandlerExtra, McpEvent } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Transport-level client identity: the two request headers that say *which
|
|
4
|
+
* product* is calling, where `clientInfo` only says which client library is.
|
|
5
|
+
*
|
|
6
|
+
* MCP's own identity fields are too coarse to attribute usage to a surface. A
|
|
7
|
+
* vendor ships many products on one client: Anthropic reports
|
|
8
|
+
* `clientInfo.name = "claude-code"` from the CLI, the Agent SDK, the VS Code
|
|
9
|
+
* extension, the desktop app and more, so `$mcp_client_name` collapses all of
|
|
10
|
+
* them into one bucket. The distinguishing detail exists only in the User-Agent
|
|
11
|
+
* parenthetical — `claude-code/2.1.0 (cli)` vs `claude-code/2.1.0 (sdk-ts)` vs
|
|
12
|
+
* `claude-code/2.1.0 (claude-vscode)` — alongside vendor-specific headers like
|
|
13
|
+
* `x-anthropic-client`. Capturing them is the only way a server owner can tell
|
|
14
|
+
* their surfaces apart.
|
|
15
|
+
*
|
|
16
|
+
* We capture the raw strings and classify nothing. No vendor table, no product
|
|
17
|
+
* labels: friendly names are resolved at query time server-side, so labels can
|
|
18
|
+
* improve (and new surfaces can appear) without waiting on an SDK release, and
|
|
19
|
+
* there is exactly one resolver rather than one per installed SDK version.
|
|
20
|
+
*
|
|
21
|
+
* This is deliberately separate from `client-identity.ts`. That module reads the
|
|
22
|
+
* request body's `_meta` and therefore works on every transport, including stdio
|
|
23
|
+
* and in-memory. Headers exist only on HTTP transports, so everything here is a
|
|
24
|
+
* silent no-op elsewhere and those events stay byte-identical to before.
|
|
25
|
+
*/
|
|
26
|
+
/** Header carrying the client's product/surface, e.g. `claude-code/2.1.0 (cli)`. */
|
|
27
|
+
export declare const CLIENT_USER_AGENT_HEADER = "user-agent";
|
|
28
|
+
/**
|
|
29
|
+
* Vendor-specific client header. Anthropic's clients send it alongside the
|
|
30
|
+
* User-Agent; it is captured verbatim as a second, independent signal rather
|
|
31
|
+
* than merged into one, so a query-time resolver can prefer whichever the
|
|
32
|
+
* vendor keeps stable.
|
|
33
|
+
*/
|
|
34
|
+
export declare const VENDOR_CLIENT_HEADER = "x-anthropic-client";
|
|
35
|
+
export interface TransportIdentity {
|
|
36
|
+
clientUserAgent?: string;
|
|
37
|
+
vendorClient?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reads the transport identity headers off `extra.requestInfo.headers`. Returns
|
|
41
|
+
* `undefined` when the request carries neither — including every stdio and
|
|
42
|
+
* in-memory request, which has no `requestInfo` at all. Never throws.
|
|
43
|
+
*/
|
|
44
|
+
export declare function readTransportIdentity(extra: CompatibleRequestHandlerExtra | undefined): TransportIdentity | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Stamps the transport identity onto the event being built for *this* request,
|
|
47
|
+
* so it carries `$mcp_client_user_agent` and `$mcp_vendor_client`.
|
|
48
|
+
*
|
|
49
|
+
* Headers are per-request, so this writes to the event — a per-request object —
|
|
50
|
+
* and never to the server-wide `sessionInfo`. One instrumented server can
|
|
51
|
+
* multiplex concurrent requests from different clients, and caching a header
|
|
52
|
+
* into shared state would attribute one client's surface to another's event.
|
|
53
|
+
* `client-identity.ts` and `capture.ts` guard the same hazard.
|
|
54
|
+
*
|
|
55
|
+
* Values are capped downstream by `truncateEvent`, which runs on every capture
|
|
56
|
+
* path, so a hostile 1MB header cannot inflate an event.
|
|
57
|
+
*/
|
|
58
|
+
export declare function stampTransportIdentity(event: McpEvent, extra: CompatibleRequestHandlerExtra | undefined): void;
|
|
59
|
+
//# sourceMappingURL=transport-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-identity.d.ts","sourceRoot":"","sources":["../../src/extensions/transport-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGvE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,eAAe,CAAA;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAkBrH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,6BAA6B,GAAG,SAAS,GAAG,IAAI,CAW9G"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
VENDOR_CLIENT_HEADER: ()=>VENDOR_CLIENT_HEADER,
|
|
28
|
+
stampTransportIdentity: ()=>stampTransportIdentity,
|
|
29
|
+
CLIENT_USER_AGENT_HEADER: ()=>CLIENT_USER_AGENT_HEADER,
|
|
30
|
+
readTransportIdentity: ()=>readTransportIdentity
|
|
31
|
+
});
|
|
32
|
+
const external_headers_js_namespaceObject = require("./headers.js");
|
|
33
|
+
const CLIENT_USER_AGENT_HEADER = 'user-agent';
|
|
34
|
+
const VENDOR_CLIENT_HEADER = 'x-anthropic-client';
|
|
35
|
+
function readTransportIdentity(extra) {
|
|
36
|
+
const headers = extra?.requestInfo?.headers;
|
|
37
|
+
if (!headers) return;
|
|
38
|
+
const result = {};
|
|
39
|
+
const clientUserAgent = (0, external_headers_js_namespaceObject.readHeaderValue)(headers, CLIENT_USER_AGENT_HEADER);
|
|
40
|
+
if (clientUserAgent) result.clientUserAgent = clientUserAgent;
|
|
41
|
+
const vendorClient = (0, external_headers_js_namespaceObject.readHeaderValue)(headers, VENDOR_CLIENT_HEADER);
|
|
42
|
+
if (vendorClient) result.vendorClient = vendorClient;
|
|
43
|
+
return result.clientUserAgent || result.vendorClient ? result : void 0;
|
|
44
|
+
}
|
|
45
|
+
function stampTransportIdentity(event, extra) {
|
|
46
|
+
const identity = readTransportIdentity(extra);
|
|
47
|
+
if (!identity) return;
|
|
48
|
+
if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;
|
|
49
|
+
if (identity.vendorClient) event.vendorClient = identity.vendorClient;
|
|
50
|
+
}
|
|
51
|
+
exports.CLIENT_USER_AGENT_HEADER = __webpack_exports__.CLIENT_USER_AGENT_HEADER;
|
|
52
|
+
exports.VENDOR_CLIENT_HEADER = __webpack_exports__.VENDOR_CLIENT_HEADER;
|
|
53
|
+
exports.readTransportIdentity = __webpack_exports__.readTransportIdentity;
|
|
54
|
+
exports.stampTransportIdentity = __webpack_exports__.stampTransportIdentity;
|
|
55
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
56
|
+
"CLIENT_USER_AGENT_HEADER",
|
|
57
|
+
"VENDOR_CLIENT_HEADER",
|
|
58
|
+
"readTransportIdentity",
|
|
59
|
+
"stampTransportIdentity"
|
|
60
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
61
|
+
Object.defineProperty(exports, '__esModule', {
|
|
62
|
+
value: true
|
|
63
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { readHeaderValue } from "./headers.mjs";
|
|
2
|
+
const CLIENT_USER_AGENT_HEADER = 'user-agent';
|
|
3
|
+
const VENDOR_CLIENT_HEADER = 'x-anthropic-client';
|
|
4
|
+
function readTransportIdentity(extra) {
|
|
5
|
+
const headers = extra?.requestInfo?.headers;
|
|
6
|
+
if (!headers) return;
|
|
7
|
+
const result = {};
|
|
8
|
+
const clientUserAgent = readHeaderValue(headers, CLIENT_USER_AGENT_HEADER);
|
|
9
|
+
if (clientUserAgent) result.clientUserAgent = clientUserAgent;
|
|
10
|
+
const vendorClient = readHeaderValue(headers, VENDOR_CLIENT_HEADER);
|
|
11
|
+
if (vendorClient) result.vendorClient = vendorClient;
|
|
12
|
+
return result.clientUserAgent || result.vendorClient ? result : void 0;
|
|
13
|
+
}
|
|
14
|
+
function stampTransportIdentity(event, extra) {
|
|
15
|
+
const identity = readTransportIdentity(extra);
|
|
16
|
+
if (!identity) return;
|
|
17
|
+
if (identity.clientUserAgent) event.clientUserAgent = identity.clientUserAgent;
|
|
18
|
+
if (identity.vendorClient) event.vendorClient = identity.vendorClient;
|
|
19
|
+
}
|
|
20
|
+
export { CLIENT_USER_AGENT_HEADER, VENDOR_CLIENT_HEADER, readTransportIdentity, stampTransportIdentity };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../src/extensions/truncation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAc,QAAQ,EAAE,MAAM,UAAU,CAAA;AAG5E,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,WAAW,MAAM,CAAA;AAC9B,eAAO,MAAM,iBAAiB,QAAS,CAAA;AACvC,eAAO,MAAM,eAAe,SAAU,CAAA;AAgBtC;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,MAAkB,EACzB,UAAU,GAAE,MAAoB,EAChC,eAAe,GAAE,MAA0B,GAC1C,OAAO,CAGT;AAkXD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../src/extensions/truncation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAc,QAAQ,EAAE,MAAM,UAAU,CAAA;AAG5E,eAAO,MAAM,SAAS,KAAK,CAAA;AAC3B,eAAO,MAAM,WAAW,MAAM,CAAA;AAC9B,eAAO,MAAM,iBAAiB,QAAS,CAAA;AACvC,eAAO,MAAM,eAAe,SAAU,CAAA;AAgBtC;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,MAAkB,EACzB,UAAU,GAAE,MAAoB,EAChC,eAAe,GAAE,MAA0B,GAC1C,OAAO,CAGT;AAkXD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAwCrE"}
|
|
@@ -250,6 +250,8 @@ function truncateEvent(event) {
|
|
|
250
250
|
result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);
|
|
251
251
|
result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);
|
|
252
252
|
result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);
|
|
253
|
+
result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);
|
|
254
|
+
result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);
|
|
253
255
|
result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);
|
|
254
256
|
if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);
|
|
255
257
|
result.response = truncateResponseContent(result.response);
|
|
@@ -217,6 +217,8 @@ function truncateEvent(event) {
|
|
|
217
217
|
result.serverVersion = truncateString(result.serverVersion, MAX_METADATA_LENGTH);
|
|
218
218
|
result.clientName = truncateString(result.clientName, MAX_METADATA_LENGTH);
|
|
219
219
|
result.clientVersion = truncateString(result.clientVersion, MAX_METADATA_LENGTH);
|
|
220
|
+
result.clientUserAgent = truncateString(result.clientUserAgent, MAX_METADATA_LENGTH);
|
|
221
|
+
result.vendorClient = truncateString(result.vendorClient, MAX_METADATA_LENGTH);
|
|
220
222
|
result.errorType = truncateString(result.errorType, MAX_METADATA_LENGTH);
|
|
221
223
|
if (null != result.error && 'object' == typeof result.error) result.error = truncateExceptionList(result.error);
|
|
222
224
|
result.response = truncateResponseContent(result.response);
|
package/dist/types.d.ts
CHANGED
|
@@ -128,6 +128,15 @@ export type BeforeSendFn = (event: PostHogCaptureEvent) => MaybePromise<PostHogC
|
|
|
128
128
|
export interface Event {
|
|
129
129
|
actorId?: string;
|
|
130
130
|
clientName?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Raw `user-agent` request header → `$mcp_client_user_agent`. HTTP transports
|
|
133
|
+
* only. The only place a client's *surface* is distinguishable: one vendor
|
|
134
|
+
* ships many products under a single `clientName` (Anthropic's CLI, Agent SDK
|
|
135
|
+
* and VS Code extension all report `claude-code`), and only the User-Agent
|
|
136
|
+
* parenthetical tells them apart. Captured verbatim — surfaces are resolved to
|
|
137
|
+
* friendly labels at query time, never in this SDK.
|
|
138
|
+
*/
|
|
139
|
+
clientUserAgent?: string;
|
|
131
140
|
clientVersion?: string;
|
|
132
141
|
conversationId?: string;
|
|
133
142
|
duration?: number;
|
|
@@ -176,6 +185,12 @@ export interface Event {
|
|
|
176
185
|
toolDescription?: string;
|
|
177
186
|
userIntent?: string;
|
|
178
187
|
userIntentSource?: MCPAnalyticsIntentSource;
|
|
188
|
+
/**
|
|
189
|
+
* Raw vendor client header (`x-anthropic-client`) → `$mcp_vendor_client`. HTTP
|
|
190
|
+
* transports only. A second, independent surface signal alongside
|
|
191
|
+
* {@link Event.clientUserAgent}; captured verbatim, never classified.
|
|
192
|
+
*/
|
|
193
|
+
vendorClient?: string;
|
|
179
194
|
}
|
|
180
195
|
/** A partially-built MCP event as it flows through the SDK before capture. */
|
|
181
196
|
export type McpEvent = Partial<Event>;
|
|
@@ -310,6 +325,24 @@ export interface McpCaptureCommon {
|
|
|
310
325
|
* not just the initialize event — the `PostHogMCP` client holds no per-session state.
|
|
311
326
|
*/
|
|
312
327
|
protocolVersion?: string;
|
|
328
|
+
/**
|
|
329
|
+
* Raw `user-agent` request header → `$mcp_client_user_agent`. The
|
|
330
|
+
* `instrument()` path reads this off the transport automatically; a custom
|
|
331
|
+
* dispatcher has no `extra`, so pass `req.headers['user-agent']` yourself.
|
|
332
|
+
*
|
|
333
|
+
* Worth wiring up: it is the only signal that separates a vendor's surfaces
|
|
334
|
+
* (Anthropic's CLI, Agent SDK and VS Code extension all report
|
|
335
|
+
* `clientName: "claude-code"`, and only the User-Agent parenthetical —
|
|
336
|
+
* `(cli)` / `(sdk-ts)` / `(claude-vscode)` — tells them apart). Send it raw;
|
|
337
|
+
* PostHog resolves friendly product labels at query time.
|
|
338
|
+
*/
|
|
339
|
+
clientUserAgent?: string;
|
|
340
|
+
/**
|
|
341
|
+
* Raw vendor client header → `$mcp_vendor_client`. Anthropic's clients send
|
|
342
|
+
* `x-anthropic-client`; pass it as a second, independent surface signal
|
|
343
|
+
* alongside {@link McpCaptureCommon.clientUserAgent}. Sent verbatim.
|
|
344
|
+
*/
|
|
345
|
+
vendorClient?: string;
|
|
313
346
|
/** Person properties → `$set` (e.g. `{ name, email, plan }`). */
|
|
314
347
|
setProperties?: JsonRecord;
|
|
315
348
|
/** Group memberships → `$groups`. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.
|
|
1
|
+
export declare const version = "0.11.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -26,7 +26,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
version: ()=>version
|
|
28
28
|
});
|
|
29
|
-
const version = '0.
|
|
29
|
+
const version = '0.11.0';
|
|
30
30
|
exports.version = __webpack_exports__.version;
|
|
31
31
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
32
32
|
"version"
|
package/dist/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const version = '0.
|
|
1
|
+
const version = '0.11.0';
|
|
2
2
|
export { version };
|
package/package.json
CHANGED
|
@@ -60,6 +60,12 @@ export function captureEvent(
|
|
|
60
60
|
// over sessionInfo, so concurrent stateless requests stay isolated.
|
|
61
61
|
clientName: eventInput.clientName ?? sessionInfo.clientName,
|
|
62
62
|
clientVersion: eventInput.clientVersion ?? sessionInfo.clientVersion,
|
|
63
|
+
// Read from this request's headers only — there is deliberately no
|
|
64
|
+
// sessionInfo fallback to coalesce with. Headers ride every HTTP request, so
|
|
65
|
+
// a remembered value would just be a chance to attribute a sibling request's
|
|
66
|
+
// client surface to this event.
|
|
67
|
+
clientUserAgent: eventInput.clientUserAgent,
|
|
68
|
+
vendorClient: eventInput.vendorClient,
|
|
63
69
|
identifyActorGivenId: sessionInfo.identifyActorGivenId,
|
|
64
70
|
identifyActorData: sessionInfo.identifyActorData,
|
|
65
71
|
groups: sessionInfo.identifyActorGroups,
|