@posthog/mcp 0.8.0 → 0.9.1
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/LICENSE +2 -2
- package/README.md +59 -0
- package/dist/extensions/capture.d.ts.map +1 -1
- package/dist/extensions/compatibility.d.ts.map +1 -1
- package/dist/extensions/constants.d.ts.map +1 -1
- package/dist/extensions/context-parameters.d.ts.map +1 -1
- package/dist/extensions/conversation-id.d.ts.map +1 -1
- package/dist/extensions/event-types.d.ts.map +1 -1
- package/dist/extensions/exceptions.d.ts.map +1 -1
- package/dist/extensions/ids.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/extensions/instrumentation.js +39 -3
- package/dist/extensions/instrumentation.mjs +41 -5
- package/dist/extensions/intent.d.ts.map +1 -1
- package/dist/extensions/internal.d.ts +4 -2
- package/dist/extensions/internal.d.ts.map +1 -1
- package/dist/extensions/internal.js +5 -2
- package/dist/extensions/internal.mjs +5 -2
- package/dist/extensions/logger.d.ts.map +1 -1
- package/dist/extensions/mcp-payloads.d.ts.map +1 -1
- package/dist/extensions/mcp-sdk-compat.d.ts.map +1 -1
- package/dist/extensions/posthog-events.d.ts.map +1 -1
- package/dist/extensions/sanitization.d.ts.map +1 -1
- package/dist/extensions/session-token.d.ts +46 -0
- package/dist/extensions/session-token.d.ts.map +1 -0
- package/dist/extensions/session-token.js +122 -0
- package/dist/extensions/session-token.mjs +76 -0
- package/dist/extensions/session.d.ts +5 -4
- package/dist/extensions/session.d.ts.map +1 -1
- package/dist/extensions/session.js +25 -33
- package/dist/extensions/session.mjs +22 -27
- package/dist/extensions/sink.d.ts.map +1 -1
- package/dist/extensions/tools.d.ts.map +1 -1
- package/dist/extensions/tracing-helpers.d.ts.map +1 -1
- package/dist/extensions/truncation.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.mjs +2 -1
- package/dist/types.d.ts +18 -2
- 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 +3 -3
- package/src/extensions/capture.ts +4 -3
- package/src/extensions/compatibility.ts +4 -3
- package/src/extensions/constants.ts +4 -3
- package/src/extensions/context-parameters.ts +4 -3
- package/src/extensions/conversation-id.ts +4 -3
- package/src/extensions/event-types.ts +4 -3
- package/src/extensions/exceptions.ts +4 -3
- package/src/extensions/ids.ts +4 -3
- package/src/extensions/instrument-highlevel.ts +4 -3
- package/src/extensions/instrument-lowlevel.ts +4 -3
- package/src/extensions/instrumentation.ts +85 -9
- package/src/extensions/intent.ts +4 -3
- package/src/extensions/internal.ts +23 -7
- package/src/extensions/logger.ts +4 -3
- package/src/extensions/mcp-payloads.ts +4 -3
- package/src/extensions/mcp-sdk-compat.ts +4 -3
- package/src/extensions/posthog-events.ts +4 -3
- package/src/extensions/sanitization.ts +4 -3
- package/src/extensions/session-token.ts +168 -0
- package/src/extensions/session.ts +42 -40
- package/src/extensions/sink.ts +4 -3
- package/src/extensions/tools.ts +4 -3
- package/src/extensions/tracing-helpers.ts +4 -3
- package/src/extensions/truncation.ts +4 -3
- package/src/index.ts +14 -4
- package/src/types.ts +24 -5
- package/src/version.ts +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const MCP_SESSION_HEADER = 'mcp-session-id';
|
|
2
|
+
const MAX_TOKEN_LENGTH = 4096;
|
|
3
|
+
const MAX_SESSION_ID_LENGTH = 128;
|
|
4
|
+
const MAX_CLIENT_FIELD_LENGTH = 200;
|
|
5
|
+
const BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;
|
|
6
|
+
function encodeSessionId(payload) {
|
|
7
|
+
if (!payload || 'string' != typeof payload.sessionId || 0 === payload.sessionId.length) throw new Error('encodeSessionId requires a non-empty `sessionId` (use newSessionId())');
|
|
8
|
+
const wire = {
|
|
9
|
+
sid: payload.sessionId
|
|
10
|
+
};
|
|
11
|
+
if ('string' == typeof payload.clientName && payload.clientName.length > 0) wire.cn = payload.clientName.slice(0, MAX_CLIENT_FIELD_LENGTH);
|
|
12
|
+
if ('string' == typeof payload.clientVersion && payload.clientVersion.length > 0) wire.cv = payload.clientVersion.slice(0, MAX_CLIENT_FIELD_LENGTH);
|
|
13
|
+
return utf8ToBase64Url(JSON.stringify(wire));
|
|
14
|
+
}
|
|
15
|
+
function decodeSessionId(value) {
|
|
16
|
+
if ('string' != typeof value || 0 === value.length || value.length > MAX_TOKEN_LENGTH) return null;
|
|
17
|
+
if (!BASE64URL_PATTERN.test(value)) return null;
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = JSON.parse(base64UrlToUtf8(value));
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (!parsed || 'object' != typeof parsed || Array.isArray(parsed)) return null;
|
|
25
|
+
const wire = parsed;
|
|
26
|
+
if ('string' != typeof wire.sid || 0 === wire.sid.length || wire.sid.length > MAX_SESSION_ID_LENGTH) return null;
|
|
27
|
+
const payload = {
|
|
28
|
+
sessionId: wire.sid
|
|
29
|
+
};
|
|
30
|
+
if ('string' == typeof wire.cn && wire.cn.length > 0) payload.clientName = wire.cn.slice(0, MAX_CLIENT_FIELD_LENGTH);
|
|
31
|
+
if ('string' == typeof wire.cv && wire.cv.length > 0) payload.clientVersion = wire.cv.slice(0, MAX_CLIENT_FIELD_LENGTH);
|
|
32
|
+
return payload;
|
|
33
|
+
}
|
|
34
|
+
function readMcpSessionHeader(headers) {
|
|
35
|
+
if (!headers || 'object' != typeof headers) return;
|
|
36
|
+
const record = headers;
|
|
37
|
+
let value = record[MCP_SESSION_HEADER];
|
|
38
|
+
if (void 0 === value) {
|
|
39
|
+
const key = Object.keys(record).find((k)=>k.toLowerCase() === MCP_SESSION_HEADER);
|
|
40
|
+
value = void 0 === key ? void 0 : record[key];
|
|
41
|
+
}
|
|
42
|
+
const first = Array.isArray(value) ? value[0] : value;
|
|
43
|
+
if ('string' != typeof first) return;
|
|
44
|
+
const trimmed = first.trim();
|
|
45
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
46
|
+
}
|
|
47
|
+
function writeSessionIdToTransport(transport, token) {
|
|
48
|
+
if (!transport || 'object' != typeof transport) return false;
|
|
49
|
+
const outer = transport;
|
|
50
|
+
try {
|
|
51
|
+
outer.sessionId = token;
|
|
52
|
+
} catch {}
|
|
53
|
+
if (outer.sessionId === token) return true;
|
|
54
|
+
const inner = outer._webStandardTransport;
|
|
55
|
+
if (inner && 'object' == typeof inner) try {
|
|
56
|
+
inner.sessionId = token;
|
|
57
|
+
} catch {}
|
|
58
|
+
return outer.sessionId === token;
|
|
59
|
+
}
|
|
60
|
+
function utf8ToBase64Url(input) {
|
|
61
|
+
if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');
|
|
62
|
+
const bytes = new TextEncoder().encode(input);
|
|
63
|
+
let binary = '';
|
|
64
|
+
for(let i = 0; i < bytes.length; i++)binary += String.fromCharCode(bytes[i]);
|
|
65
|
+
return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
66
|
+
}
|
|
67
|
+
function base64UrlToUtf8(input) {
|
|
68
|
+
const normalized = input.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');
|
|
69
|
+
const padded = normalized + '='.repeat((4 - normalized.length % 4) % 4);
|
|
70
|
+
if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');
|
|
71
|
+
const binary = atob(padded);
|
|
72
|
+
const bytes = new Uint8Array(binary.length);
|
|
73
|
+
for(let i = 0; i < binary.length; i++)bytes[i] = binary.charCodeAt(i);
|
|
74
|
+
return new TextDecoder().decode(bytes);
|
|
75
|
+
}
|
|
76
|
+
export { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport };
|
|
@@ -6,11 +6,12 @@ export declare function newSessionId(): string;
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function deriveSessionIdFromMCPSession(mcpSessionId: string): string;
|
|
8
8
|
/**
|
|
9
|
-
* Resolves the session id for a request
|
|
10
|
-
*
|
|
9
|
+
* Resolves the session id for a request: from the replayed session token, from
|
|
10
|
+
* the transport's MCP session id, or — when the request carries nothing — from
|
|
11
|
+
* this instance's memory. Also saves the token's client name/version so events
|
|
12
|
+
* built later in the request can use them (see getSessionInfo).
|
|
11
13
|
*/
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function setLastActivity(server: MCPServerLike): void;
|
|
14
|
+
export declare function getSessionId(server: MCPServerLike, extra?: CompatibleRequestHandlerExtra): string;
|
|
14
15
|
/**
|
|
15
16
|
* Builds the session metadata stamped onto an event. The caller passes the
|
|
16
17
|
* session id resolved for *this* request so identity attribution can't be
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/extensions/session.ts"],"names":[],"mappings":"
|
|
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;AAMjB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,6BAA6B,GAAG,MAAM,CA+BjG;AAgBD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CAgCb"}
|
|
@@ -24,8 +24,7 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
getServerSessionId: ()=>getServerSessionId,
|
|
27
|
+
getSessionId: ()=>getSessionId,
|
|
29
28
|
deriveSessionIdFromMCPSession: ()=>deriveSessionIdFromMCPSession,
|
|
30
29
|
getSessionInfo: ()=>getSessionInfo,
|
|
31
30
|
newSessionId: ()=>newSessionId
|
|
@@ -34,43 +33,38 @@ const external_version_js_namespaceObject = require("../version.js");
|
|
|
34
33
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
35
34
|
const external_ids_js_namespaceObject = require("./ids.js");
|
|
36
35
|
const external_internal_js_namespaceObject = require("./internal.js");
|
|
36
|
+
const external_session_token_js_namespaceObject = require("./session-token.js");
|
|
37
37
|
function newSessionId() {
|
|
38
38
|
return (0, external_ids_js_namespaceObject.newPrefixedId)('ses');
|
|
39
39
|
}
|
|
40
40
|
function deriveSessionIdFromMCPSession(mcpSessionId) {
|
|
41
41
|
return (0, external_ids_js_namespaceObject.deterministicPrefixedId)('ses', mcpSessionId);
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
function getSessionId(server, extra) {
|
|
44
44
|
const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
|
|
45
45
|
if (!data) throw new Error('Server tracking data not found');
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
const sessionHeader = (0, external_session_token_js_namespaceObject.readMcpSessionHeader)(extra?.requestInfo?.headers);
|
|
47
|
+
const token = (0, external_session_token_js_namespaceObject.decodeSessionId)(sessionHeader);
|
|
48
|
+
let sessionId;
|
|
49
|
+
if (token) {
|
|
50
|
+
data.sessionSource = 'token';
|
|
51
|
+
data.sessionInfo.clientName = token.clientName;
|
|
52
|
+
data.sessionInfo.clientVersion = token.clientVersion;
|
|
53
|
+
sessionId = token.sessionId;
|
|
54
|
+
} else if (extra?.sessionId) {
|
|
50
55
|
data.sessionSource = 'mcp';
|
|
51
|
-
(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
if ('mcp' === data.sessionSource && data.lastMcpSessionId) {
|
|
56
|
-
setLastActivity(server);
|
|
57
|
-
return data.sessionId;
|
|
58
|
-
}
|
|
59
|
-
const now = Date.now();
|
|
60
|
-
const timeoutMs = 60 * external_constants_js_namespaceObject.INACTIVITY_TIMEOUT_IN_MINUTES * 1000;
|
|
61
|
-
if (now - data.lastActivity.getTime() > timeoutMs) {
|
|
62
|
-
data.sessionId = newSessionId();
|
|
63
|
-
data.sessionSource = 'generated';
|
|
64
|
-
(0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
|
|
65
|
-
}
|
|
66
|
-
setLastActivity(server);
|
|
67
|
-
return data.sessionId;
|
|
68
|
-
}
|
|
69
|
-
function setLastActivity(server) {
|
|
70
|
-
const data = (0, external_internal_js_namespaceObject.getServerTrackingData)(server);
|
|
71
|
-
if (!data) throw new Error('Server tracking data not found');
|
|
56
|
+
sessionId = deriveSessionIdFromMCPSession(extra.sessionId);
|
|
57
|
+
} else sessionId = getSessionIdFromMemory(data);
|
|
58
|
+
data.sessionId = sessionId;
|
|
72
59
|
data.lastActivity = new Date();
|
|
73
60
|
(0, external_internal_js_namespaceObject.setServerTrackingData)(server, data);
|
|
61
|
+
return sessionId;
|
|
62
|
+
}
|
|
63
|
+
function getSessionIdFromMemory(data) {
|
|
64
|
+
const timeoutMs = 60 * external_constants_js_namespaceObject.INACTIVITY_TIMEOUT_IN_MINUTES * 1000;
|
|
65
|
+
const isStale = Date.now() - data.lastActivity.getTime() > timeoutMs;
|
|
66
|
+
if ('generated' === data.sessionSource && isStale) return newSessionId();
|
|
67
|
+
return data.sessionId;
|
|
74
68
|
}
|
|
75
69
|
function getSessionInfo(server, data, sessionId) {
|
|
76
70
|
let clientInfo;
|
|
@@ -97,16 +91,14 @@ function getSessionInfo(server, data, sessionId) {
|
|
|
97
91
|
return data.sessionInfo;
|
|
98
92
|
}
|
|
99
93
|
exports.deriveSessionIdFromMCPSession = __webpack_exports__.deriveSessionIdFromMCPSession;
|
|
100
|
-
exports.
|
|
94
|
+
exports.getSessionId = __webpack_exports__.getSessionId;
|
|
101
95
|
exports.getSessionInfo = __webpack_exports__.getSessionInfo;
|
|
102
96
|
exports.newSessionId = __webpack_exports__.newSessionId;
|
|
103
|
-
exports.setLastActivity = __webpack_exports__.setLastActivity;
|
|
104
97
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
105
98
|
"deriveSessionIdFromMCPSession",
|
|
106
|
-
"
|
|
99
|
+
"getSessionId",
|
|
107
100
|
"getSessionInfo",
|
|
108
|
-
"newSessionId"
|
|
109
|
-
"setLastActivity"
|
|
101
|
+
"newSessionId"
|
|
110
102
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
111
103
|
Object.defineProperty(exports, '__esModule', {
|
|
112
104
|
value: true
|
|
@@ -2,43 +2,38 @@ import { version } from "../version.mjs";
|
|
|
2
2
|
import { INACTIVITY_TIMEOUT_IN_MINUTES } from "./constants.mjs";
|
|
3
3
|
import { deterministicPrefixedId, newPrefixedId } from "./ids.mjs";
|
|
4
4
|
import { getServerTrackingData, setServerTrackingData } from "./internal.mjs";
|
|
5
|
+
import { decodeSessionId, readMcpSessionHeader } from "./session-token.mjs";
|
|
5
6
|
function newSessionId() {
|
|
6
7
|
return newPrefixedId('ses');
|
|
7
8
|
}
|
|
8
9
|
function deriveSessionIdFromMCPSession(mcpSessionId) {
|
|
9
10
|
return deterministicPrefixedId('ses', mcpSessionId);
|
|
10
11
|
}
|
|
11
|
-
function
|
|
12
|
+
function getSessionId(server, extra) {
|
|
12
13
|
const data = getServerTrackingData(server);
|
|
13
14
|
if (!data) throw new Error('Server tracking data not found');
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const sessionHeader = readMcpSessionHeader(extra?.requestInfo?.headers);
|
|
16
|
+
const token = decodeSessionId(sessionHeader);
|
|
17
|
+
let sessionId;
|
|
18
|
+
if (token) {
|
|
19
|
+
data.sessionSource = 'token';
|
|
20
|
+
data.sessionInfo.clientName = token.clientName;
|
|
21
|
+
data.sessionInfo.clientVersion = token.clientVersion;
|
|
22
|
+
sessionId = token.sessionId;
|
|
23
|
+
} else if (extra?.sessionId) {
|
|
18
24
|
data.sessionSource = 'mcp';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
if ('mcp' === data.sessionSource && data.lastMcpSessionId) {
|
|
24
|
-
setLastActivity(server);
|
|
25
|
-
return data.sessionId;
|
|
26
|
-
}
|
|
27
|
-
const now = Date.now();
|
|
28
|
-
const timeoutMs = 60 * INACTIVITY_TIMEOUT_IN_MINUTES * 1000;
|
|
29
|
-
if (now - data.lastActivity.getTime() > timeoutMs) {
|
|
30
|
-
data.sessionId = newSessionId();
|
|
31
|
-
data.sessionSource = 'generated';
|
|
32
|
-
setServerTrackingData(server, data);
|
|
33
|
-
}
|
|
34
|
-
setLastActivity(server);
|
|
35
|
-
return data.sessionId;
|
|
36
|
-
}
|
|
37
|
-
function setLastActivity(server) {
|
|
38
|
-
const data = getServerTrackingData(server);
|
|
39
|
-
if (!data) throw new Error('Server tracking data not found');
|
|
25
|
+
sessionId = deriveSessionIdFromMCPSession(extra.sessionId);
|
|
26
|
+
} else sessionId = getSessionIdFromMemory(data);
|
|
27
|
+
data.sessionId = sessionId;
|
|
40
28
|
data.lastActivity = new Date();
|
|
41
29
|
setServerTrackingData(server, data);
|
|
30
|
+
return sessionId;
|
|
31
|
+
}
|
|
32
|
+
function getSessionIdFromMemory(data) {
|
|
33
|
+
const timeoutMs = 60 * INACTIVITY_TIMEOUT_IN_MINUTES * 1000;
|
|
34
|
+
const isStale = Date.now() - data.lastActivity.getTime() > timeoutMs;
|
|
35
|
+
if ('generated' === data.sessionSource && isStale) return newSessionId();
|
|
36
|
+
return data.sessionId;
|
|
42
37
|
}
|
|
43
38
|
function getSessionInfo(server, data, sessionId) {
|
|
44
39
|
let clientInfo;
|
|
@@ -64,4 +59,4 @@ function getSessionInfo(server, data, sessionId) {
|
|
|
64
59
|
setServerTrackingData(server, data);
|
|
65
60
|
return data.sessionInfo;
|
|
66
61
|
}
|
|
67
|
-
export { deriveSessionIdFromMCPSession,
|
|
62
|
+
export { deriveSessionIdFromMCPSession, getSessionId, getSessionInfo, newSessionId };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/extensions/sink.ts"],"names":[],"mappings":"
|
|
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;AAE7D,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,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BnE;AA4BD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAE7C;;;;OAIG;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":"
|
|
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;AAG9F,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,CA6B9G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CASnD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAG7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing-helpers.d.ts","sourceRoot":"","sources":["../../src/extensions/tracing-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tracing-helpers.d.ts","sourceRoot":"","sources":["../../src/extensions/tracing-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGzG;;;;;;GAMG;AAEH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,6BAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAExD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncation.d.ts","sourceRoot":"","sources":["../../src/extensions/truncation.ts"],"names":[],"mappings":"
|
|
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,CAoCrE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PostHog } from 'posthog-node';
|
|
2
|
-
import { deriveSessionIdFromMCPSession } from './extensions/session';
|
|
2
|
+
import { deriveSessionIdFromMCPSession, newSessionId } from './extensions/session';
|
|
3
3
|
import type { McpAnalytics, MCPAnalyticsOptions } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Instruments an MCP server so PostHog auto-captures tool calls, tool listings, initialize
|
|
@@ -47,7 +47,8 @@ declare function instrument(server: unknown, posthog: PostHog, options?: MCPAnal
|
|
|
47
47
|
* @returns A `(server) => server` mutator that instruments the server and returns it.
|
|
48
48
|
*/
|
|
49
49
|
declare function instrumentMutator<TServer>(posthog: PostHog, options?: MCPAnalyticsOptions): (server: TServer) => TServer;
|
|
50
|
-
export { deriveSessionIdFromMCPSession };
|
|
50
|
+
export { deriveSessionIdFromMCPSession, newSessionId };
|
|
51
|
+
export { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, type SessionTokenPayload, } from './extensions/session-token';
|
|
51
52
|
export { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, } from './extensions/constants';
|
|
52
53
|
export { PostHogMCP, type PostHogMCPOptions } from './extensions/posthog-mcp';
|
|
53
54
|
export { getMoreToolsResult } from './extensions/tools';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAkCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAmFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -24,14 +24,18 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
setLogger: ()=>logger_js_namespaceObject.setLogger,
|
|
27
28
|
PostHog: ()=>external_posthog_node_namespaceObject.PostHog,
|
|
28
29
|
PostHogMCP: ()=>posthog_mcp_js_namespaceObject.PostHogMCP,
|
|
29
|
-
deriveSessionIdFromMCPSession: ()=>session_js_namespaceObject.deriveSessionIdFromMCPSession,
|
|
30
30
|
POSTHOG_MCP_ANALYTICS_SOURCE: ()=>constants_js_namespaceObject.POSTHOG_MCP_ANALYTICS_SOURCE,
|
|
31
|
+
deriveSessionIdFromMCPSession: ()=>session_js_namespaceObject.deriveSessionIdFromMCPSession,
|
|
31
32
|
instrument: ()=>instrument,
|
|
33
|
+
decodeSessionId: ()=>session_token_js_namespaceObject.decodeSessionId,
|
|
34
|
+
newSessionId: ()=>session_js_namespaceObject.newSessionId,
|
|
35
|
+
MCP_SESSION_HEADER: ()=>session_token_js_namespaceObject.MCP_SESSION_HEADER,
|
|
32
36
|
instrumentMutator: ()=>instrumentMutator,
|
|
33
|
-
setLogger: ()=>logger_js_namespaceObject.setLogger,
|
|
34
37
|
PostHogMCPAnalyticsEvent: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsEvent,
|
|
38
|
+
encodeSessionId: ()=>session_token_js_namespaceObject.encodeSessionId,
|
|
35
39
|
getMoreToolsResult: ()=>tools_js_namespaceObject.getMoreToolsResult,
|
|
36
40
|
PostHogMCPAnalyticsProperty: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsProperty
|
|
37
41
|
});
|
|
@@ -45,6 +49,7 @@ const lib_identity_js_namespaceObject = require("./extensions/lib-identity.js");
|
|
|
45
49
|
const session_js_namespaceObject = require("./extensions/session.js");
|
|
46
50
|
const instrument_lowlevel_js_namespaceObject = require("./extensions/instrument-lowlevel.js");
|
|
47
51
|
const instrument_highlevel_js_namespaceObject = require("./extensions/instrument-highlevel.js");
|
|
52
|
+
const session_token_js_namespaceObject = require("./extensions/session-token.js");
|
|
48
53
|
const constants_js_namespaceObject = require("./extensions/constants.js");
|
|
49
54
|
const posthog_mcp_js_namespaceObject = require("./extensions/posthog-mcp.js");
|
|
50
55
|
const tools_js_namespaceObject = require("./extensions/tools.js");
|
|
@@ -132,26 +137,34 @@ async function captureCustomEvent(lowLevelServer, eventData) {
|
|
|
132
137
|
await (0, capture_js_namespaceObject.captureEvent)(lowLevelServer, event);
|
|
133
138
|
(0, logger_js_namespaceObject.log)(`Captured event "${eventData.event}" for session ${trackingData.sessionId}`);
|
|
134
139
|
}
|
|
140
|
+
exports.MCP_SESSION_HEADER = __webpack_exports__.MCP_SESSION_HEADER;
|
|
135
141
|
exports.POSTHOG_MCP_ANALYTICS_SOURCE = __webpack_exports__.POSTHOG_MCP_ANALYTICS_SOURCE;
|
|
136
142
|
exports.PostHog = __webpack_exports__.PostHog;
|
|
137
143
|
exports.PostHogMCP = __webpack_exports__.PostHogMCP;
|
|
138
144
|
exports.PostHogMCPAnalyticsEvent = __webpack_exports__.PostHogMCPAnalyticsEvent;
|
|
139
145
|
exports.PostHogMCPAnalyticsProperty = __webpack_exports__.PostHogMCPAnalyticsProperty;
|
|
146
|
+
exports.decodeSessionId = __webpack_exports__.decodeSessionId;
|
|
140
147
|
exports.deriveSessionIdFromMCPSession = __webpack_exports__.deriveSessionIdFromMCPSession;
|
|
148
|
+
exports.encodeSessionId = __webpack_exports__.encodeSessionId;
|
|
141
149
|
exports.getMoreToolsResult = __webpack_exports__.getMoreToolsResult;
|
|
142
150
|
exports.instrument = __webpack_exports__.instrument;
|
|
143
151
|
exports.instrumentMutator = __webpack_exports__.instrumentMutator;
|
|
152
|
+
exports.newSessionId = __webpack_exports__.newSessionId;
|
|
144
153
|
exports.setLogger = __webpack_exports__.setLogger;
|
|
145
154
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
155
|
+
"MCP_SESSION_HEADER",
|
|
146
156
|
"POSTHOG_MCP_ANALYTICS_SOURCE",
|
|
147
157
|
"PostHog",
|
|
148
158
|
"PostHogMCP",
|
|
149
159
|
"PostHogMCPAnalyticsEvent",
|
|
150
160
|
"PostHogMCPAnalyticsProperty",
|
|
161
|
+
"decodeSessionId",
|
|
151
162
|
"deriveSessionIdFromMCPSession",
|
|
163
|
+
"encodeSessionId",
|
|
152
164
|
"getMoreToolsResult",
|
|
153
165
|
"instrument",
|
|
154
166
|
"instrumentMutator",
|
|
167
|
+
"newSessionId",
|
|
155
168
|
"setLogger"
|
|
156
169
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
157
170
|
Object.defineProperty(exports, '__esModule', {
|
package/dist/index.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import { applyMcpLibIdentity } from "./extensions/lib-identity.mjs";
|
|
|
8
8
|
import { deriveSessionIdFromMCPSession, getSessionInfo, newSessionId } from "./extensions/session.mjs";
|
|
9
9
|
import { instrumentLowLevelServer } from "./extensions/instrument-lowlevel.mjs";
|
|
10
10
|
import { instrumentHighLevelServer } from "./extensions/instrument-highlevel.mjs";
|
|
11
|
+
import { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId } from "./extensions/session-token.mjs";
|
|
11
12
|
import { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from "./extensions/constants.mjs";
|
|
12
13
|
import { PostHogMCP } from "./extensions/posthog-mcp.mjs";
|
|
13
14
|
import { getMoreToolsResult } from "./extensions/tools.mjs";
|
|
@@ -95,4 +96,4 @@ async function captureCustomEvent(lowLevelServer, eventData) {
|
|
|
95
96
|
await captureEvent(lowLevelServer, event);
|
|
96
97
|
log(`Captured event "${eventData.event}" for session ${trackingData.sessionId}`);
|
|
97
98
|
}
|
|
98
|
-
export { POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, deriveSessionIdFromMCPSession, getMoreToolsResult, instrument, instrumentMutator, setLogger };
|
|
99
|
+
export { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, instrument, instrumentMutator, newSessionId, setLogger };
|
package/dist/types.d.ts
CHANGED
|
@@ -59,6 +59,8 @@ export interface MCPAnalyticsOptions {
|
|
|
59
59
|
/**
|
|
60
60
|
* Identify the calling user. Returning a non-null value sets `distinct_id` and `$set`
|
|
61
61
|
* on subsequent events for the session. Object form is treated as a static identity.
|
|
62
|
+
* A standalone `$identify` event is published once per session — at `initialize`, or
|
|
63
|
+
* when a long-lived server sees the identity appear or change — never per tool call.
|
|
62
64
|
*/
|
|
63
65
|
identify?: ((request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<UserIdentity | null>) | UserIdentity | null;
|
|
64
66
|
/**
|
|
@@ -155,9 +157,16 @@ export interface Event {
|
|
|
155
157
|
}
|
|
156
158
|
/** A partially-built MCP event as it flows through the SDK before capture. */
|
|
157
159
|
export type McpEvent = Partial<Event>;
|
|
160
|
+
/** HTTP request info the SDK's Streamable HTTP transports attach per request. */
|
|
161
|
+
export interface CompatibleRequestInfoLike {
|
|
162
|
+
headers?: Record<string, string | string[] | undefined>;
|
|
163
|
+
[key: string]: unknown;
|
|
164
|
+
}
|
|
158
165
|
export interface CompatibleRequestHandlerExtra {
|
|
159
166
|
headers?: Record<string, string | string[]>;
|
|
160
167
|
sessionId?: string;
|
|
168
|
+
/** Present on HTTP transports only — headers ride every request, unlike `clientInfo`. */
|
|
169
|
+
requestInfo?: CompatibleRequestInfoLike;
|
|
161
170
|
[key: string]: unknown;
|
|
162
171
|
}
|
|
163
172
|
export interface ServerClientInfoLike {
|
|
@@ -177,9 +186,16 @@ export interface HighLevelMCPServerLike {
|
|
|
177
186
|
tool?(name: string, paramsSchema: unknown, cb: ToolCallback): void;
|
|
178
187
|
tool?(name: string, description: string, paramsSchema: unknown, cb: ToolCallback): void;
|
|
179
188
|
}
|
|
189
|
+
/** The connected transport as exposed by the SDK's `Protocol.transport` getter. */
|
|
190
|
+
export interface CompatibleTransportLike {
|
|
191
|
+
sessionId?: string;
|
|
192
|
+
[key: string]: unknown;
|
|
193
|
+
}
|
|
180
194
|
export interface MCPServerLike {
|
|
181
195
|
_requestHandlers: Map<string, (request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<unknown>>;
|
|
182
196
|
_serverInfo?: ServerClientInfoLike;
|
|
197
|
+
/** Optional so older SDKs (and bare test doubles) still validate. */
|
|
198
|
+
transport?: CompatibleTransportLike;
|
|
183
199
|
getClientVersion(): ServerClientInfoLike | undefined;
|
|
184
200
|
setRequestHandler(schema: unknown, handler: (request: MCPRequestLike, extra?: CompatibleRequestHandlerExtra) => Promise<unknown>): void;
|
|
185
201
|
}
|
|
@@ -217,11 +233,11 @@ export interface MCPAnalyticsData {
|
|
|
217
233
|
sink: McpEventSink | undefined;
|
|
218
234
|
identifiedSessions: IdentityCache;
|
|
219
235
|
lastActivity: Date;
|
|
220
|
-
lastMcpSessionId?: string;
|
|
221
236
|
options: MCPAnalyticsOptions;
|
|
222
237
|
sessionId: string;
|
|
223
238
|
sessionInfo: SessionInfo;
|
|
224
|
-
|
|
239
|
+
/** `token` = recovered from a self-encoded `Mcp-Session-Id` token (see session-token.ts). */
|
|
240
|
+
sessionSource: 'generated' | 'mcp' | 'token';
|
|
225
241
|
toolCategories: Map<string, string>;
|
|
226
242
|
toolDescriptions: Map<string, string>;
|
|
227
243
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
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.9.1";
|
|
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.9.1';
|
|
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.9.1';
|
|
2
2
|
export { version };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posthog/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"bugs": {
|
|
5
5
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
6
6
|
},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"module": "dist/index.mjs",
|
|
29
29
|
"types": "dist/index.d.ts",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@posthog/core": "^1.
|
|
31
|
+
"@posthog/core": "^1.41.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/preset-env": "^7.27.1",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@types/node": "^20.0.0",
|
|
40
40
|
"jest": "29.7.0",
|
|
41
41
|
"zod": "^3.25.0",
|
|
42
|
-
"posthog-node": "^5.
|
|
42
|
+
"posthog-node": "^5.42.0",
|
|
43
43
|
"@posthog-tooling/tsconfig-base": "1.1.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
import type { MCPServerLike, McpEvent } from '../types'
|
|
6
7
|
import { MCPAnalyticsEventType } from './event-types'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
import type { HighLevelMCPServerLike, MCPServerLike } from '../types'
|
|
6
7
|
import { log } from './logger'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
export const INACTIVITY_TIMEOUT_IN_MINUTES = 30
|
|
6
7
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
import type { MCPAnalyticsOptions } from '../types'
|
|
6
7
|
import { DEFAULT_CONTEXT_PARAMETER_DESCRIPTION } from './constants'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
import { uuidv7 } from '@posthog/core'
|
|
6
7
|
import { DEFAULT_CONVERSATION_ID_DESCRIPTION } from './constants'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Portions of this file are derived from
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// Portions of this file are derived from agentcathq/agentcat-typescript-sdk
|
|
2
|
+
// (formerly MCPCat/mcpcat-typescript-sdk)
|
|
3
|
+
// Copyright (c) 2025 AgentCat, Inc. (formerly MCPcat)
|
|
4
|
+
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Internal SDK event vocabulary.
|