@posthog/mcp 0.12.0 → 0.13.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/README.md +30 -2
- package/dist/extensions/analytics-parameters.js +14 -10
- package/dist/extensions/capture.js +12 -8
- package/dist/extensions/client-identity.js +18 -14
- package/dist/extensions/compatibility.js +16 -12
- package/dist/extensions/constants.d.ts +1 -1
- package/dist/extensions/constants.d.ts.map +1 -1
- package/dist/extensions/constants.js +25 -21
- package/dist/extensions/constants.mjs +3 -3
- package/dist/extensions/context-parameters.js +13 -9
- package/dist/extensions/conversation-id.js +18 -14
- package/dist/extensions/detect.js +23 -19
- package/dist/extensions/event-types.js +15 -11
- package/dist/extensions/exceptions.js +12 -8
- package/dist/extensions/headers.js +16 -12
- package/dist/extensions/ids.js +12 -8
- package/dist/extensions/instrument-highlevel.js +12 -8
- package/dist/extensions/instrument-lowlevel.js +12 -8
- package/dist/extensions/instrumentation.js +19 -15
- package/dist/extensions/intent.js +14 -10
- package/dist/extensions/internal.js +17 -13
- package/dist/extensions/lib-identity.js +12 -8
- package/dist/extensions/logger.js +17 -13
- package/dist/extensions/mcp-payloads.d.ts +10 -0
- package/dist/extensions/mcp-payloads.d.ts.map +1 -1
- package/dist/extensions/mcp-payloads.js +80 -12
- package/dist/extensions/mcp-payloads.mjs +62 -1
- package/dist/extensions/mcp-sdk-compat.js +23 -19
- package/dist/extensions/model-parameters.d.ts.map +1 -1
- package/dist/extensions/model-parameters.js +21 -14
- package/dist/extensions/model-parameters.mjs +6 -3
- package/dist/extensions/output-instructions.js +15 -11
- package/dist/extensions/posthog-events.js +12 -8
- package/dist/extensions/posthog-mcp.d.ts +23 -12
- package/dist/extensions/posthog-mcp.d.ts.map +1 -1
- package/dist/extensions/posthog-mcp.js +49 -11
- package/dist/extensions/posthog-mcp.mjs +37 -3
- package/dist/extensions/request-headers.js +15 -11
- package/dist/extensions/sanitization.d.ts +2 -2
- package/dist/extensions/sanitization.d.ts.map +1 -1
- package/dist/extensions/sanitization.js +14 -9
- package/dist/extensions/sanitization.mjs +3 -2
- package/dist/extensions/session-token.js +17 -13
- package/dist/extensions/session-token.mjs +2 -2
- package/dist/extensions/session.js +16 -12
- package/dist/extensions/sink.js +14 -10
- package/dist/extensions/tools.js +15 -11
- package/dist/extensions/tracing-helpers.js +15 -11
- package/dist/extensions/transport-identity.js +15 -11
- package/dist/extensions/truncation.js +21 -16
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -18
- package/dist/index.mjs +7 -7
- package/dist/types.d.ts +28 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.mjs +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +15 -11
- package/dist/version.mjs +1 -1
- package/package.json +12 -12
- package/src/extensions/constants.ts +1 -1
- package/src/extensions/mcp-payloads.ts +129 -0
- package/src/extensions/model-parameters.ts +7 -3
- package/src/extensions/posthog-mcp.ts +84 -12
- package/src/extensions/sanitization.ts +14 -7
- package/src/index.ts +1 -0
- package/src/types.ts +27 -4
- package/src/version.ts +1 -1
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -13,7 +17,7 @@ var __webpack_require__ = {};
|
|
|
13
17
|
})();
|
|
14
18
|
(()=>{
|
|
15
19
|
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if (
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
21
|
value: 'Module'
|
|
18
22
|
});
|
|
19
23
|
Object.defineProperty(exports1, '__esModule', {
|
|
@@ -23,10 +27,6 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
buildCapturedMcpParameters: ()=>buildCapturedMcpParameters,
|
|
28
|
-
sanitizeCapturedValue: ()=>sanitizeCapturedValue
|
|
29
|
-
});
|
|
30
30
|
const CONTEXT_ARGUMENT_NAME = 'context';
|
|
31
31
|
const REDACTED_VALUE = '[redacted]';
|
|
32
32
|
const BINARY_REDACTED_VALUE = '[binary data redacted - not supported by PostHog MCP analytics]';
|
|
@@ -38,6 +38,15 @@ const BASE64_DATA_URL_PAYLOAD_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;
|
|
|
38
38
|
const SIZE_GATE = 10240;
|
|
39
39
|
const POSTHOG_TOKEN_PATTERN = /\bph[a-z]_[A-Za-z0-9_-]{20,}\b/g;
|
|
40
40
|
const SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;
|
|
41
|
+
const UNICODE_SPACE_PATTERN = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
42
|
+
const EMAIL_PATTERN = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,255}\.[A-Za-z]{2,24}/g;
|
|
43
|
+
const IPV4_PATTERN = /\b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b/g;
|
|
44
|
+
const IPV6_PATTERN = /\b(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b|(?<![\w:])(?:[0-9A-Fa-f]{1,4}:){1,7}:(?![\w:])|(?<![\w:])(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,5}(?![\w])|(?<![\w:])::(?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6})(?![\w])/g;
|
|
45
|
+
const US_SSN_PATTERN = /\b\d{3}[ .-]\d{2}[ .-]\d{4}\b/g;
|
|
46
|
+
const CREDIT_CARD_CANDIDATE_PATTERN = /\b\d(?:[ ./-]?\d){12,}\b/g;
|
|
47
|
+
const DIGIT_GROUP_PATTERN = /\d+/g;
|
|
48
|
+
const PHONE_NANP_PATTERN = /(?<![\w+])(?:\+?1[ ./-]?)?(?:\(\d{3}\)[ ./-]?|\d{3}[ ./-])\d{3}[ ./-]\d{4}(?![\w])/g;
|
|
49
|
+
const PHONE_INTL_PATTERN = /(?<!\w)\+\d{1,3}(?:[ ./()-]{0,2}\d){7,13}(?![\w])/g;
|
|
41
50
|
function isRecord(value) {
|
|
42
51
|
return !!value && 'object' == typeof value && !Array.isArray(value);
|
|
43
52
|
}
|
|
@@ -59,6 +68,58 @@ function sanitizeString(value) {
|
|
|
59
68
|
if (value.length >= SIZE_GATE && (BASE64_PATTERN.test(value) || isBase64DataUrl(value) || BASE64URL_SPECIFIC_CHAR_PATTERN.test(value) && BASE64URL_PATTERN.test(value))) return BINARY_REDACTED_VALUE;
|
|
60
69
|
return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);
|
|
61
70
|
}
|
|
71
|
+
function passesLuhn(digits) {
|
|
72
|
+
let sum = 0;
|
|
73
|
+
let double = false;
|
|
74
|
+
for(let index = digits.length - 1; index >= 0; index--){
|
|
75
|
+
let digit = digits.charCodeAt(index) - 48;
|
|
76
|
+
if (digit < 0 || digit > 9) return false;
|
|
77
|
+
if (double) {
|
|
78
|
+
digit *= 2;
|
|
79
|
+
if (digit > 9) digit -= 9;
|
|
80
|
+
}
|
|
81
|
+
sum += digit;
|
|
82
|
+
double = !double;
|
|
83
|
+
}
|
|
84
|
+
return sum % 10 === 0;
|
|
85
|
+
}
|
|
86
|
+
function redactCardInMatch(match) {
|
|
87
|
+
const groups = [];
|
|
88
|
+
for(let m = DIGIT_GROUP_PATTERN.exec(match); null !== m; m = DIGIT_GROUP_PATTERN.exec(match))groups.push({
|
|
89
|
+
digits: m[0],
|
|
90
|
+
start: m.index,
|
|
91
|
+
end: m.index + m[0].length
|
|
92
|
+
});
|
|
93
|
+
let output = '';
|
|
94
|
+
let cursor = 0;
|
|
95
|
+
let first = 0;
|
|
96
|
+
while(first < groups.length){
|
|
97
|
+
let digits = '';
|
|
98
|
+
let matchedLast = -1;
|
|
99
|
+
for(let last = first; last < groups.length; last++){
|
|
100
|
+
digits += groups[last].digits;
|
|
101
|
+
if (digits.length > 19) break;
|
|
102
|
+
if (digits.length >= 13 && passesLuhn(digits)) matchedLast = last;
|
|
103
|
+
}
|
|
104
|
+
if (matchedLast >= 0) {
|
|
105
|
+
output += match.slice(cursor, groups[first].start) + REDACTED_VALUE;
|
|
106
|
+
cursor = groups[matchedLast].end;
|
|
107
|
+
first = matchedLast + 1;
|
|
108
|
+
} else first++;
|
|
109
|
+
}
|
|
110
|
+
return output + match.slice(cursor);
|
|
111
|
+
}
|
|
112
|
+
function redactPii(value) {
|
|
113
|
+
let result = value.replace(UNICODE_SPACE_PATTERN, ' ');
|
|
114
|
+
result = result.replace(EMAIL_PATTERN, REDACTED_VALUE);
|
|
115
|
+
result = result.replace(IPV4_PATTERN, REDACTED_VALUE);
|
|
116
|
+
result = result.replace(IPV6_PATTERN, REDACTED_VALUE);
|
|
117
|
+
result = result.replace(CREDIT_CARD_CANDIDATE_PATTERN, redactCardInMatch);
|
|
118
|
+
result = result.replace(US_SSN_PATTERN, REDACTED_VALUE);
|
|
119
|
+
result = result.replace(PHONE_NANP_PATTERN, REDACTED_VALUE);
|
|
120
|
+
result = result.replace(PHONE_INTL_PATTERN, REDACTED_VALUE);
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
62
123
|
function sanitizeCapturedValue(value) {
|
|
63
124
|
if (null == value) return value;
|
|
64
125
|
if ('string' == typeof value) return sanitizeString(value);
|
|
@@ -96,12 +157,19 @@ function buildCapturedMcpParameters(request) {
|
|
|
96
157
|
request: capturedRequest
|
|
97
158
|
};
|
|
98
159
|
}
|
|
160
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
161
|
+
buildCapturedMcpParameters: ()=>buildCapturedMcpParameters,
|
|
162
|
+
redactPii: ()=>redactPii,
|
|
163
|
+
sanitizeCapturedValue: ()=>sanitizeCapturedValue
|
|
164
|
+
});
|
|
99
165
|
exports.buildCapturedMcpParameters = __webpack_exports__.buildCapturedMcpParameters;
|
|
166
|
+
exports.redactPii = __webpack_exports__.redactPii;
|
|
100
167
|
exports.sanitizeCapturedValue = __webpack_exports__.sanitizeCapturedValue;
|
|
101
|
-
for(var
|
|
168
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
102
169
|
"buildCapturedMcpParameters",
|
|
170
|
+
"redactPii",
|
|
103
171
|
"sanitizeCapturedValue"
|
|
104
|
-
].indexOf(
|
|
172
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
105
173
|
Object.defineProperty(exports, '__esModule', {
|
|
106
174
|
value: true
|
|
107
175
|
});
|
|
@@ -9,6 +9,15 @@ const BASE64_DATA_URL_PAYLOAD_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;
|
|
|
9
9
|
const SIZE_GATE = 10240;
|
|
10
10
|
const POSTHOG_TOKEN_PATTERN = /\bph[a-z]_[A-Za-z0-9_-]{20,}\b/g;
|
|
11
11
|
const SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;
|
|
12
|
+
const UNICODE_SPACE_PATTERN = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
13
|
+
const EMAIL_PATTERN = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,255}\.[A-Za-z]{2,24}/g;
|
|
14
|
+
const IPV4_PATTERN = /\b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b/g;
|
|
15
|
+
const IPV6_PATTERN = /\b(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b|(?<![\w:])(?:[0-9A-Fa-f]{1,4}:){1,7}:(?![\w:])|(?<![\w:])(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,5}(?![\w])|(?<![\w:])::(?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6})(?![\w])/g;
|
|
16
|
+
const US_SSN_PATTERN = /\b\d{3}[ .-]\d{2}[ .-]\d{4}\b/g;
|
|
17
|
+
const CREDIT_CARD_CANDIDATE_PATTERN = /\b\d(?:[ ./-]?\d){12,}\b/g;
|
|
18
|
+
const DIGIT_GROUP_PATTERN = /\d+/g;
|
|
19
|
+
const PHONE_NANP_PATTERN = /(?<![\w+])(?:\+?1[ ./-]?)?(?:\(\d{3}\)[ ./-]?|\d{3}[ ./-])\d{3}[ ./-]\d{4}(?![\w])/g;
|
|
20
|
+
const PHONE_INTL_PATTERN = /(?<!\w)\+\d{1,3}(?:[ ./()-]{0,2}\d){7,13}(?![\w])/g;
|
|
12
21
|
function isRecord(value) {
|
|
13
22
|
return !!value && 'object' == typeof value && !Array.isArray(value);
|
|
14
23
|
}
|
|
@@ -30,6 +39,58 @@ function sanitizeString(value) {
|
|
|
30
39
|
if (value.length >= SIZE_GATE && (BASE64_PATTERN.test(value) || isBase64DataUrl(value) || BASE64URL_SPECIFIC_CHAR_PATTERN.test(value) && BASE64URL_PATTERN.test(value))) return BINARY_REDACTED_VALUE;
|
|
31
40
|
return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);
|
|
32
41
|
}
|
|
42
|
+
function passesLuhn(digits) {
|
|
43
|
+
let sum = 0;
|
|
44
|
+
let double = false;
|
|
45
|
+
for(let index = digits.length - 1; index >= 0; index--){
|
|
46
|
+
let digit = digits.charCodeAt(index) - 48;
|
|
47
|
+
if (digit < 0 || digit > 9) return false;
|
|
48
|
+
if (double) {
|
|
49
|
+
digit *= 2;
|
|
50
|
+
if (digit > 9) digit -= 9;
|
|
51
|
+
}
|
|
52
|
+
sum += digit;
|
|
53
|
+
double = !double;
|
|
54
|
+
}
|
|
55
|
+
return sum % 10 === 0;
|
|
56
|
+
}
|
|
57
|
+
function redactCardInMatch(match) {
|
|
58
|
+
const groups = [];
|
|
59
|
+
for(let m = DIGIT_GROUP_PATTERN.exec(match); null !== m; m = DIGIT_GROUP_PATTERN.exec(match))groups.push({
|
|
60
|
+
digits: m[0],
|
|
61
|
+
start: m.index,
|
|
62
|
+
end: m.index + m[0].length
|
|
63
|
+
});
|
|
64
|
+
let output = '';
|
|
65
|
+
let cursor = 0;
|
|
66
|
+
let first = 0;
|
|
67
|
+
while(first < groups.length){
|
|
68
|
+
let digits = '';
|
|
69
|
+
let matchedLast = -1;
|
|
70
|
+
for(let last = first; last < groups.length; last++){
|
|
71
|
+
digits += groups[last].digits;
|
|
72
|
+
if (digits.length > 19) break;
|
|
73
|
+
if (digits.length >= 13 && passesLuhn(digits)) matchedLast = last;
|
|
74
|
+
}
|
|
75
|
+
if (matchedLast >= 0) {
|
|
76
|
+
output += match.slice(cursor, groups[first].start) + REDACTED_VALUE;
|
|
77
|
+
cursor = groups[matchedLast].end;
|
|
78
|
+
first = matchedLast + 1;
|
|
79
|
+
} else first++;
|
|
80
|
+
}
|
|
81
|
+
return output + match.slice(cursor);
|
|
82
|
+
}
|
|
83
|
+
function redactPii(value) {
|
|
84
|
+
let result = value.replace(UNICODE_SPACE_PATTERN, ' ');
|
|
85
|
+
result = result.replace(EMAIL_PATTERN, REDACTED_VALUE);
|
|
86
|
+
result = result.replace(IPV4_PATTERN, REDACTED_VALUE);
|
|
87
|
+
result = result.replace(IPV6_PATTERN, REDACTED_VALUE);
|
|
88
|
+
result = result.replace(CREDIT_CARD_CANDIDATE_PATTERN, redactCardInMatch);
|
|
89
|
+
result = result.replace(US_SSN_PATTERN, REDACTED_VALUE);
|
|
90
|
+
result = result.replace(PHONE_NANP_PATTERN, REDACTED_VALUE);
|
|
91
|
+
result = result.replace(PHONE_INTL_PATTERN, REDACTED_VALUE);
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
33
94
|
function sanitizeCapturedValue(value) {
|
|
34
95
|
if (null == value) return value;
|
|
35
96
|
if ('string' == typeof value) return sanitizeString(value);
|
|
@@ -67,4 +128,4 @@ function buildCapturedMcpParameters(request) {
|
|
|
67
128
|
request: capturedRequest
|
|
68
129
|
};
|
|
69
130
|
}
|
|
70
|
-
export { buildCapturedMcpParameters, sanitizeCapturedValue };
|
|
131
|
+
export { buildCapturedMcpParameters, redactPii, sanitizeCapturedValue };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -13,7 +17,7 @@ var __webpack_require__ = {};
|
|
|
13
17
|
})();
|
|
14
18
|
(()=>{
|
|
15
19
|
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if (
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
21
|
value: 'Module'
|
|
18
22
|
});
|
|
19
23
|
Object.defineProperty(exports1, '__esModule', {
|
|
@@ -23,17 +27,6 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
createWrappedTool: ()=>createWrappedTool,
|
|
28
|
-
getLiteralValue: ()=>getLiteralValue,
|
|
29
|
-
getObjectShape: ()=>getObjectShape,
|
|
30
|
-
getToolFunction: ()=>getToolFunction,
|
|
31
|
-
getToolFunctionKey: ()=>getToolFunctionKey,
|
|
32
|
-
hasToolFunction: ()=>hasToolFunction,
|
|
33
|
-
isZ4Schema: ()=>isZ4Schema,
|
|
34
|
-
isZodRawShapeCompat: ()=>isZodRawShapeCompat,
|
|
35
|
-
readRequestHandlerMethod: ()=>readRequestHandlerMethod
|
|
36
|
-
});
|
|
37
30
|
function getToolFunction(tool) {
|
|
38
31
|
if ('handler' in tool && 'function' == typeof tool.handler) return tool.handler;
|
|
39
32
|
if ('callback' in tool && 'function' == typeof tool.callback) return tool.callback;
|
|
@@ -105,6 +98,17 @@ function getLiteralValue(schema) {
|
|
|
105
98
|
const directValue = schema.value;
|
|
106
99
|
if (void 0 !== directValue) return directValue;
|
|
107
100
|
}
|
|
101
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
102
|
+
createWrappedTool: ()=>createWrappedTool,
|
|
103
|
+
getLiteralValue: ()=>getLiteralValue,
|
|
104
|
+
getObjectShape: ()=>getObjectShape,
|
|
105
|
+
getToolFunction: ()=>getToolFunction,
|
|
106
|
+
getToolFunctionKey: ()=>getToolFunctionKey,
|
|
107
|
+
hasToolFunction: ()=>hasToolFunction,
|
|
108
|
+
isZ4Schema: ()=>isZ4Schema,
|
|
109
|
+
isZodRawShapeCompat: ()=>isZodRawShapeCompat,
|
|
110
|
+
readRequestHandlerMethod: ()=>readRequestHandlerMethod
|
|
111
|
+
});
|
|
108
112
|
exports.createWrappedTool = __webpack_exports__.createWrappedTool;
|
|
109
113
|
exports.getLiteralValue = __webpack_exports__.getLiteralValue;
|
|
110
114
|
exports.getObjectShape = __webpack_exports__.getObjectShape;
|
|
@@ -114,7 +118,7 @@ exports.hasToolFunction = __webpack_exports__.hasToolFunction;
|
|
|
114
118
|
exports.isZ4Schema = __webpack_exports__.isZ4Schema;
|
|
115
119
|
exports.isZodRawShapeCompat = __webpack_exports__.isZodRawShapeCompat;
|
|
116
120
|
exports.readRequestHandlerMethod = __webpack_exports__.readRequestHandlerMethod;
|
|
117
|
-
for(var
|
|
121
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
118
122
|
"createWrappedTool",
|
|
119
123
|
"getLiteralValue",
|
|
120
124
|
"getObjectShape",
|
|
@@ -124,7 +128,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
124
128
|
"isZ4Schema",
|
|
125
129
|
"isZodRawShapeCompat",
|
|
126
130
|
"readRequestHandlerMethod"
|
|
127
|
-
].indexOf(
|
|
131
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
128
132
|
Object.defineProperty(exports, '__esModule', {
|
|
129
133
|
value: true
|
|
130
134
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/model-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7E,OAAO,EAA+B,KAAK,6BAA6B,EAAE,MAAM,wBAAwB,CAAA;AAExG,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,OAAO,CAEhG;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,SAAS,CAEzG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,mBAAmB,EACvE,IAAI,EAAE,KAAK,EACX,wBAAwB,CAAC,EAAE,MAAM,EACjC,MAAM,GAAE,QAAc,GACrB,KAAK,CAQP;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,mBAAmB,EACxE,KAAK,EAAE,KAAK,EAAE,EACd,wBAAwB,CAAC,EAAE,MAAM,EACjC,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"model-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/model-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7E,OAAO,EAA+B,KAAK,6BAA6B,EAAE,MAAM,wBAAwB,CAAA;AAExG,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,OAAO,CAEhG;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,SAAS,CAEzG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,mBAAmB,EACvE,IAAI,EAAE,KAAK,EACX,wBAAwB,CAAC,EAAE,MAAM,EACjC,MAAM,GAAE,QAAc,GACrB,KAAK,CAQP;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,mBAAmB,EACxE,KAAK,EAAE,KAAK,EAAE,EACd,wBAAwB,CAAC,EAAE,MAAM,EACjC,MAAM,GAAE,QAAc,GACrB,KAAK,EAAE,CAET;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAE5E;AAaD,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAO9E"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -13,7 +17,7 @@ var __webpack_require__ = {};
|
|
|
13
17
|
})();
|
|
14
18
|
(()=>{
|
|
15
19
|
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if (
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
21
|
value: 'Module'
|
|
18
22
|
});
|
|
19
23
|
Object.defineProperty(exports1, '__esModule', {
|
|
@@ -24,12 +28,12 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
setEventModel: ()=>setEventModel,
|
|
28
31
|
addModelParameterToTool: ()=>addModelParameterToTool,
|
|
32
|
+
addModelParameterToTools: ()=>addModelParameterToTools,
|
|
29
33
|
getModelArgument: ()=>getModelArgument,
|
|
30
34
|
getModelDescription: ()=>getModelDescription,
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
isCaptureModelEnabled: ()=>isCaptureModelEnabled,
|
|
36
|
+
setEventModel: ()=>setEventModel
|
|
33
37
|
});
|
|
34
38
|
const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
|
|
35
39
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
@@ -47,15 +51,18 @@ function addModelParameterToTools(tools, modelDescriptionOverride, logger = exte
|
|
|
47
51
|
return tools.map((tool)=>addModelParameterToTool(tool, modelDescriptionOverride, logger));
|
|
48
52
|
}
|
|
49
53
|
function getModelArgument(request) {
|
|
50
|
-
|
|
54
|
+
return normalizeModel(request.params?.arguments?.llm_model);
|
|
55
|
+
}
|
|
56
|
+
function normalizeModel(model) {
|
|
51
57
|
if ('string' != typeof model) return;
|
|
52
58
|
const trimmed = model.trim();
|
|
53
59
|
if (!trimmed || 'unknown' === trimmed.toLowerCase()) return;
|
|
54
60
|
return trimmed;
|
|
55
61
|
}
|
|
56
62
|
function setEventModel(event, model) {
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
const normalizedModel = normalizeModel(model);
|
|
64
|
+
if (!normalizedModel) return;
|
|
65
|
+
event.llmModel = normalizedModel;
|
|
59
66
|
event.llmModelSource = 'self_reported';
|
|
60
67
|
}
|
|
61
68
|
exports.addModelParameterToTool = __webpack_exports__.addModelParameterToTool;
|
|
@@ -64,14 +71,14 @@ exports.getModelArgument = __webpack_exports__.getModelArgument;
|
|
|
64
71
|
exports.getModelDescription = __webpack_exports__.getModelDescription;
|
|
65
72
|
exports.isCaptureModelEnabled = __webpack_exports__.isCaptureModelEnabled;
|
|
66
73
|
exports.setEventModel = __webpack_exports__.setEventModel;
|
|
67
|
-
for(var
|
|
74
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
68
75
|
"addModelParameterToTool",
|
|
69
76
|
"addModelParameterToTools",
|
|
70
77
|
"getModelArgument",
|
|
71
78
|
"getModelDescription",
|
|
72
79
|
"isCaptureModelEnabled",
|
|
73
80
|
"setEventModel"
|
|
74
|
-
].indexOf(
|
|
81
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
75
82
|
Object.defineProperty(exports, '__esModule', {
|
|
76
83
|
value: true
|
|
77
84
|
});
|
|
@@ -14,15 +14,18 @@ function addModelParameterToTools(tools, modelDescriptionOverride, logger = log)
|
|
|
14
14
|
return tools.map((tool)=>addModelParameterToTool(tool, modelDescriptionOverride, logger));
|
|
15
15
|
}
|
|
16
16
|
function getModelArgument(request) {
|
|
17
|
-
|
|
17
|
+
return normalizeModel(request.params?.arguments?.llm_model);
|
|
18
|
+
}
|
|
19
|
+
function normalizeModel(model) {
|
|
18
20
|
if ('string' != typeof model) return;
|
|
19
21
|
const trimmed = model.trim();
|
|
20
22
|
if (!trimmed || 'unknown' === trimmed.toLowerCase()) return;
|
|
21
23
|
return trimmed;
|
|
22
24
|
}
|
|
23
25
|
function setEventModel(event, model) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
const normalizedModel = normalizeModel(model);
|
|
27
|
+
if (!normalizedModel) return;
|
|
28
|
+
event.llmModel = normalizedModel;
|
|
26
29
|
event.llmModelSource = 'self_reported';
|
|
27
30
|
}
|
|
28
31
|
export { addModelParameterToTool, addModelParameterToTools, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -13,7 +17,7 @@ var __webpack_require__ = {};
|
|
|
13
17
|
})();
|
|
14
18
|
(()=>{
|
|
15
19
|
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if (
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
21
|
value: 'Module'
|
|
18
22
|
});
|
|
19
23
|
Object.defineProperty(exports1, '__esModule', {
|
|
@@ -24,12 +28,12 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
31
|
+
MCP_INSTRUCTIONS_KEY: ()=>MCP_INSTRUCTIONS_KEY,
|
|
28
32
|
addInstructionsToOutputSchema: ()=>addInstructionsToOutputSchema,
|
|
29
33
|
addInstructionsToOutputSchemas: ()=>addInstructionsToOutputSchemas,
|
|
30
|
-
MCP_INSTRUCTIONS_KEY: ()=>MCP_INSTRUCTIONS_KEY,
|
|
31
34
|
buildConversationInstructions: ()=>buildConversationInstructions,
|
|
32
|
-
canDeclareOutputInstructions: ()=>canDeclareOutputInstructions
|
|
35
|
+
canDeclareOutputInstructions: ()=>canDeclareOutputInstructions,
|
|
36
|
+
mirrorInstructionsIntoStructuredContent: ()=>mirrorInstructionsIntoStructuredContent
|
|
33
37
|
});
|
|
34
38
|
const external_logger_js_namespaceObject = require("./logger.js");
|
|
35
39
|
const MCP_INSTRUCTIONS_KEY = '_mcp_instructions';
|
|
@@ -113,14 +117,14 @@ exports.addInstructionsToOutputSchemas = __webpack_exports__.addInstructionsToOu
|
|
|
113
117
|
exports.buildConversationInstructions = __webpack_exports__.buildConversationInstructions;
|
|
114
118
|
exports.canDeclareOutputInstructions = __webpack_exports__.canDeclareOutputInstructions;
|
|
115
119
|
exports.mirrorInstructionsIntoStructuredContent = __webpack_exports__.mirrorInstructionsIntoStructuredContent;
|
|
116
|
-
for(var
|
|
120
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
117
121
|
"MCP_INSTRUCTIONS_KEY",
|
|
118
122
|
"addInstructionsToOutputSchema",
|
|
119
123
|
"addInstructionsToOutputSchemas",
|
|
120
124
|
"buildConversationInstructions",
|
|
121
125
|
"canDeclareOutputInstructions",
|
|
122
126
|
"mirrorInstructionsIntoStructuredContent"
|
|
123
|
-
].indexOf(
|
|
127
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
124
128
|
Object.defineProperty(exports, '__esModule', {
|
|
125
129
|
value: true
|
|
126
130
|
});
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -13,7 +17,7 @@ var __webpack_require__ = {};
|
|
|
13
17
|
})();
|
|
14
18
|
(()=>{
|
|
15
19
|
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if (
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
21
|
value: 'Module'
|
|
18
22
|
});
|
|
19
23
|
Object.defineProperty(exports1, '__esModule', {
|
|
@@ -153,9 +157,9 @@ function buildExceptionEvent(event) {
|
|
|
153
157
|
};
|
|
154
158
|
}
|
|
155
159
|
exports.buildPostHogCaptureEvents = __webpack_exports__.buildPostHogCaptureEvents;
|
|
156
|
-
for(var
|
|
160
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
157
161
|
"buildPostHogCaptureEvents"
|
|
158
|
-
].indexOf(
|
|
162
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
159
163
|
Object.defineProperty(exports, '__esModule', {
|
|
160
164
|
value: true
|
|
161
165
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PostHog, type PostHogOptions } from 'posthog-node';
|
|
2
|
-
import type { InitializeCaptureData, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolListOptions, ToolCallCaptureData, ToolsListCaptureData } from '../types';
|
|
2
|
+
import type { InitializeCaptureData, MCPAnalyticsOptions, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolCallOptions, PrepareToolListOptions, ToolCallCaptureData, ToolsListCaptureData } from '../types';
|
|
3
3
|
import { type ContextInjectableTool } from './context-parameters';
|
|
4
4
|
/**
|
|
5
5
|
* Options for {@link PostHogMCP}. A superset of `posthog-node`'s options, plus
|
|
@@ -13,6 +13,11 @@ export interface PostHogMCPOptions extends PostHogOptions {
|
|
|
13
13
|
* can't drift. Defaults to `get_more_tools`.
|
|
14
14
|
*/
|
|
15
15
|
missingCapabilityToolName?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Inject a required `llm_model` argument into advertised tools and capture
|
|
18
|
+
* the agent's self-reported value. Off by default.
|
|
19
|
+
*/
|
|
20
|
+
captureModel?: MCPAnalyticsOptions['captureModel'];
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* A `posthog-node` client with first-class MCP analytics. Use this when there is
|
|
@@ -32,7 +37,10 @@ export interface PostHogMCPOptions extends PostHogOptions {
|
|
|
32
37
|
* ```ts
|
|
33
38
|
* import { PostHogMCP } from "@posthog/mcp"
|
|
34
39
|
*
|
|
35
|
-
* const posthog = new PostHogMCP("phc_your_project_token", {
|
|
40
|
+
* const posthog = new PostHogMCP("phc_your_project_token", {
|
|
41
|
+
* host: "https://us.i.posthog.com",
|
|
42
|
+
* captureModel: true,
|
|
43
|
+
* })
|
|
36
44
|
*
|
|
37
45
|
* posthog.captureToolCall({
|
|
38
46
|
* toolName: "search_docs",
|
|
@@ -64,9 +72,9 @@ export declare class PostHogMCP extends PostHog {
|
|
|
64
72
|
/**
|
|
65
73
|
* Decorate your `tools/list` response with PostHog's analytics affordances:
|
|
66
74
|
* injects the `context` argument into every tool (so agents state their intent,
|
|
67
|
-
* captured as `$mcp_intent`)
|
|
68
|
-
* `
|
|
69
|
-
*
|
|
75
|
+
* captured as `$mcp_intent`), injects `llm_model` when the constructor's
|
|
76
|
+
* `captureModel` option is enabled, and appends `get_more_tools` when
|
|
77
|
+
* `reportMissing` is on. Returns a new array; your tools are untouched.
|
|
70
78
|
*
|
|
71
79
|
* The appended `get_more_tools` descriptor carries only the base MCP tool fields
|
|
72
80
|
* (name, description, input schema) — not any framework-specific fields your
|
|
@@ -85,14 +93,16 @@ export declare class PostHogMCP extends PostHog {
|
|
|
85
93
|
*/
|
|
86
94
|
prepareToolList<TTool extends ContextInjectableTool>(tools: TTool[], options?: PrepareToolListOptions): TTool[];
|
|
87
95
|
/**
|
|
88
|
-
* Read an incoming `tools/call` before you dispatch it: pulls
|
|
89
|
-
*
|
|
90
|
-
* arguments (so your handler and its schema validation never see it), and flags
|
|
96
|
+
* Read an incoming `tools/call` before you dispatch it: pulls analytics values
|
|
97
|
+
* from SDK-owned arguments, strips those arguments before validation, and flags
|
|
91
98
|
* whether the call targeted the `get_more_tools` virtual tool.
|
|
92
99
|
*
|
|
93
|
-
* Pass the returned
|
|
100
|
+
* Pass the returned intent and model fields to {@link captureToolCall}, and
|
|
94
101
|
* dispatch the returned `args` to your tool.
|
|
95
102
|
*
|
|
103
|
+
* On stateless or multi-replica servers, pass the original tool descriptor
|
|
104
|
+
* so ownership does not depend on which process served `tools/list`.
|
|
105
|
+
*
|
|
96
106
|
* This only extracts the explicit `context` argument (`intentSource:
|
|
97
107
|
* 'context_parameter'`); it does not infer intent. If you run your own
|
|
98
108
|
* inference, pass that string with `intentSource: 'inferred'` straight to
|
|
@@ -101,16 +111,17 @@ export declare class PostHogMCP extends PostHog {
|
|
|
101
111
|
*
|
|
102
112
|
* @example
|
|
103
113
|
* ```ts
|
|
104
|
-
* const { intent, intentSource, args, isMissingCapability } =
|
|
114
|
+
* const { intent, intentSource, llmModel, llmModelSource, args, isMissingCapability } =
|
|
115
|
+
* posthog.prepareToolCall(name, rawArgs)
|
|
105
116
|
* if (isMissingCapability) {
|
|
106
|
-
* posthog.captureMissingCapability({ context: intent, ...identity })
|
|
117
|
+
* posthog.captureMissingCapability({ context: intent, llmModel, llmModelSource, ...identity })
|
|
107
118
|
* return getMoreToolsResult()
|
|
108
119
|
* }
|
|
109
120
|
* const result = await runTool(name, args)
|
|
110
121
|
* posthog.captureToolCall({ toolName: name, intent, intentSource, ...identity })
|
|
111
122
|
* ```
|
|
112
123
|
*/
|
|
113
|
-
prepareToolCall(name: string, args?: Record<string, unknown
|
|
124
|
+
prepareToolCall(name: string, args?: Record<string, unknown>, options?: PrepareToolCallOptions): PreparedToolCall;
|
|
114
125
|
/**
|
|
115
126
|
* Capture a `get_more_tools` call as a missing-capability report. Emits
|
|
116
127
|
* `$mcp_missing_capability` with the agent's description as `$mcp_intent`. Reply
|
|
@@ -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,
|
|
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,EAErB,mBAAmB,EAGnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAA;AAgB7B;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAA;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,UAAW,SAAQ,OAAO;;gBASzB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAO3D,8FAA8F;IAC9F,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAqBhD,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;IAiCnH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,sBAA2B,GACnC,gBAAgB;IA0BnB;;;;OAIG;IACH,wBAAwB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI;CAsBnE"}
|