@posthog/mcp 0.11.7 → 0.13.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/README.md +51 -2
- package/dist/extensions/analytics-parameters.d.ts +22 -2
- package/dist/extensions/analytics-parameters.d.ts.map +1 -1
- package/dist/extensions/analytics-parameters.js +53 -10
- package/dist/extensions/analytics-parameters.mjs +37 -1
- package/dist/extensions/capture.d.ts.map +1 -1
- package/dist/extensions/capture.js +14 -8
- package/dist/extensions/capture.mjs +2 -0
- package/dist/extensions/client-identity.js +18 -14
- package/dist/extensions/compatibility.js +16 -12
- package/dist/extensions/constants.d.ts +3 -0
- package/dist/extensions/constants.d.ts.map +1 -1
- package/dist/extensions/constants.js +28 -18
- package/dist/extensions/constants.mjs +5 -2
- package/dist/extensions/context-parameters.d.ts +2 -2
- package/dist/extensions/context-parameters.d.ts.map +1 -1
- package/dist/extensions/context-parameters.js +14 -38
- package/dist/extensions/context-parameters.mjs +2 -30
- 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.d.ts.map +1 -1
- package/dist/extensions/instrument-highlevel.js +16 -9
- package/dist/extensions/instrument-highlevel.mjs +5 -2
- package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
- package/dist/extensions/instrument-lowlevel.js +13 -8
- package/dist/extensions/instrument-lowlevel.mjs +2 -1
- package/dist/extensions/instrumentation.d.ts +16 -0
- package/dist/extensions/instrumentation.d.ts.map +1 -1
- package/dist/extensions/instrumentation.js +31 -14
- package/dist/extensions/instrumentation.mjs +11 -1
- 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.js +16 -12
- package/dist/extensions/mcp-sdk-compat.js +23 -19
- package/dist/extensions/model-parameters.d.ts +48 -0
- package/dist/extensions/model-parameters.d.ts.map +1 -0
- package/dist/extensions/model-parameters.js +84 -0
- package/dist/extensions/model-parameters.mjs +31 -0
- package/dist/extensions/output-instructions.js +15 -11
- package/dist/extensions/posthog-events.js +14 -8
- package/dist/extensions/posthog-events.mjs +2 -0
- 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 +13 -8
- package/dist/extensions/sanitization.mjs +1 -0
- 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.d.ts.map +1 -1
- package/dist/extensions/truncation.js +22 -16
- package/dist/extensions/truncation.mjs +1 -0
- 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 +55 -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 +28 -11
- package/src/extensions/analytics-parameters.ts +88 -2
- package/src/extensions/capture.ts +4 -0
- package/src/extensions/constants.ts +4 -0
- package/src/extensions/context-parameters.ts +10 -59
- package/src/extensions/instrument-highlevel.ts +4 -0
- package/src/extensions/instrument-lowlevel.ts +2 -0
- package/src/extensions/instrumentation.ts +51 -0
- package/src/extensions/model-parameters.ts +98 -0
- package/src/extensions/posthog-events.ts +8 -0
- package/src/extensions/posthog-mcp.ts +84 -12
- package/src/extensions/sanitization.ts +6 -2
- package/src/extensions/truncation.ts +3 -0
- package/src/index.ts +3 -0
- package/src/types.ts +55 -4
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -137,9 +137,10 @@ cannot tell that it is yours, its value is recorded as `$mcp_intent`. It never l
|
|
|
137
137
|
and it is capped at 2048 characters. Two ways out, both one line:
|
|
138
138
|
|
|
139
139
|
```ts
|
|
140
|
-
instrument(server, posthog, { context: false })
|
|
140
|
+
instrument(server, posthog, { context: false }) // no injection, no capture
|
|
141
141
|
|
|
142
|
-
instrument(server, posthog, {
|
|
142
|
+
instrument(server, posthog, {
|
|
143
|
+
// keep it, drop the property
|
|
143
144
|
beforeSend: (event) => {
|
|
144
145
|
delete event.properties.$mcp_intent
|
|
145
146
|
return event
|
|
@@ -149,6 +150,54 @@ instrument(server, posthog, { // keep it, dr
|
|
|
149
150
|
|
|
150
151
|
`intentFallback` is the third option: supply the intent yourself when the agent did not send one.
|
|
151
152
|
|
|
153
|
+
### What `$mcp_llm_model` records, and when it stays empty
|
|
154
|
+
|
|
155
|
+
`captureModel` is **off** by default. Turn it on and the SDK adds a required `llm_model` parameter to
|
|
156
|
+
every tool it advertises — including the `get_more_tools` virtual tool — asks the agent which model
|
|
157
|
+
it runs as, and records the answer as `$mcp_llm_model` with `$mcp_llm_model_source = "self_reported"`.
|
|
158
|
+
|
|
159
|
+
The value is self-reported and unverified, exactly like `clientInfo` in the MCP spec. Use it to spot
|
|
160
|
+
degradation across models ("does our MCP get worse on model X?"), never for billing or access
|
|
161
|
+
control. An agent that answers `unknown` is recorded as nothing rather than as a model called
|
|
162
|
+
"unknown".
|
|
163
|
+
|
|
164
|
+
Unlike `context`, this option degrades to **silence** rather than to a kept argument. Both the strip
|
|
165
|
+
and the capture require the SDK to have confirmed the parameter is its own:
|
|
166
|
+
|
|
167
|
+
- `instrument(server)` on a high-level `McpServer` resolves ownership for your registered tools per
|
|
168
|
+
request from the live tool registry, so those work even on a fresh instance.
|
|
169
|
+
- The `get_more_tools` virtual tool works on any instance and on either server type: the SDK writes
|
|
170
|
+
that descriptor itself, so what it declares is known without a listing.
|
|
171
|
+
- Instrumenting a low-level `Server` learns ownership of **your** tools while serving `tools/list`.
|
|
172
|
+
On a server that builds a fresh instance per HTTP request — `createMcpHandler`, or
|
|
173
|
+
`@rekog/mcp-nest` in its stateless mode — the instance handling a `tools/call` never served one,
|
|
174
|
+
so for those tools it neither strips `llm_model` nor records `$mcp_llm_model`. Nothing breaks and
|
|
175
|
+
no wrong value is stored; the property is simply absent while agents still pay a token for the
|
|
176
|
+
extra field.
|
|
177
|
+
|
|
178
|
+
As with `context`, what matters is instance lifetime rather than statelessness: a transport-stateless
|
|
179
|
+
server (`sessionIdGenerator: undefined`) that keeps one long-lived server object learns ownership
|
|
180
|
+
from the first `tools/list` and keeps it.
|
|
181
|
+
|
|
182
|
+
For a custom dispatcher, enable the same option on `PostHogMCP`. Its `prepareToolList()` helper
|
|
183
|
+
injects the field and records ownership by tool name; `prepareToolCall()` returns `llmModel` and
|
|
184
|
+
`llmModelSource` while removing the SDK-owned argument before dispatch. Pass both fields to
|
|
185
|
+
`captureToolCall()`. Pass the original tool descriptor on each call so this also works when
|
|
186
|
+
`tools/list` and `tools/call` reach different server replicas:
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
const posthog = new PostHogMCP(process.env.POSTHOG_PROJECT_TOKEN, { captureModel: true })
|
|
190
|
+
|
|
191
|
+
const tools = posthog.prepareToolList(serverTools)
|
|
192
|
+
const originalTool = serverTools.find((tool) => tool.name === toolName)
|
|
193
|
+
const { args, llmModel, llmModelSource } = posthog.prepareToolCall(toolName, rawArgs, { originalTool })
|
|
194
|
+
const result = await dispatch(toolName, args)
|
|
195
|
+
|
|
196
|
+
posthog.captureToolCall({ toolName, llmModel, llmModelSource, isError: false })
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
A persistent single-process dispatcher can omit `originalTool` after it has prepared its tool list.
|
|
200
|
+
|
|
152
201
|
### If you switched to `instrument(server.server)`
|
|
153
202
|
|
|
154
203
|
Before v2 support landed, the compatibility gate rejected high-level v2 servers, and the usual
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnalyticsParameterOwnership } from '../types';
|
|
2
|
+
import { type LoggerFn } from './logger';
|
|
2
3
|
export interface AnalyticsInjectableJsonSchema {
|
|
3
4
|
$ref?: unknown;
|
|
4
5
|
additionalProperties?: boolean;
|
|
@@ -11,12 +12,31 @@ export interface AnalyticsInjectableJsonSchema {
|
|
|
11
12
|
}
|
|
12
13
|
export declare function hasAnalyticsParameter(schema: AnalyticsInjectableJsonSchema | undefined, parameterName: string): boolean;
|
|
13
14
|
export declare function canInjectAnalyticsParameter(schema: AnalyticsInjectableJsonSchema | undefined, parameterName: string): boolean;
|
|
15
|
+
export interface AnalyticsInjectableTool {
|
|
16
|
+
inputSchema?: AnalyticsInjectableJsonSchema;
|
|
17
|
+
name?: string;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Adds a required string parameter to a tool's JSON Schema. Called AFTER the MCP
|
|
22
|
+
* SDK has converted Zod schemas to JSON Schema, so only JSON Schema needs
|
|
23
|
+
* handling.
|
|
24
|
+
*
|
|
25
|
+
* Shared by every analytics parameter we inject (`context`, `llm_model`) so
|
|
26
|
+
* schema ownership, cloning, and required-field behavior cannot drift between
|
|
27
|
+
* them. `injectionLabel` only names the feature in the skip warnings.
|
|
28
|
+
*
|
|
29
|
+
* Skips injection (with a warning) for:
|
|
30
|
+
* - Tools that already declare the parameter — it is theirs, not ours
|
|
31
|
+
* - Complex schemas (oneOf/allOf/anyOf/$ref) that can't safely gain properties
|
|
32
|
+
*/
|
|
33
|
+
export declare function addAnalyticsParameterToTool<TTool extends AnalyticsInjectableTool>(tool: TTool, parameterName: string, description: string, injectionLabel: string, logger?: LoggerFn): TTool;
|
|
14
34
|
export declare function analyticsOwnsParameter(inputSchema: unknown, parameterName: string): boolean;
|
|
15
35
|
export declare function getAnalyticsParameterOwnership(inputSchema: unknown, outputSchema?: unknown): AnalyticsParameterOwnership;
|
|
16
36
|
/**
|
|
17
37
|
* Removes the arguments we injected, leaving the host's own. Input-side only, so
|
|
18
|
-
* it takes just those
|
|
38
|
+
* it takes just those flags rather than the whole ownership record — callers
|
|
19
39
|
* that have no output-schema context should not have to invent a value for it.
|
|
20
40
|
*/
|
|
21
|
-
export declare function stripOwnedAnalyticsArguments(args: unknown, ownership: Pick<AnalyticsParameterOwnership, 'context' | 'conversationId'>): unknown;
|
|
41
|
+
export declare function stripOwnedAnalyticsArguments(args: unknown, ownership: Pick<AnalyticsParameterOwnership, 'context' | 'conversationId' | 'llmModel'>): unknown;
|
|
22
42
|
//# sourceMappingURL=analytics-parameters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/analytics-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics-parameters.d.ts","sourceRoot":"","sources":["../../src/extensions/analytics-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAiB7C,MAAM,WAAW,6BAA6B;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,6BAA6B,GAAG,SAAS,EACjD,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,6BAA6B,GAAG,SAAS,EACjD,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,6BAA6B,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,SAAS,uBAAuB,EAC/E,IAAI,EAAE,KAAK,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,QAAc,GACrB,KAAK,CAqDP;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAyB3F;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,OAAO,GACrB,2BAA2B,CAO7B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,IAAI,CAAC,2BAA2B,EAAE,SAAS,GAAG,gBAAgB,GAAG,UAAU,CAAC,GACtF,OAAO,CAeT"}
|
|
@@ -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,14 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
31
|
+
addAnalyticsParameterToTool: ()=>addAnalyticsParameterToTool,
|
|
28
32
|
analyticsOwnsParameter: ()=>analyticsOwnsParameter,
|
|
29
|
-
getAnalyticsParameterOwnership: ()=>getAnalyticsParameterOwnership,
|
|
30
33
|
canInjectAnalyticsParameter: ()=>canInjectAnalyticsParameter,
|
|
34
|
+
getAnalyticsParameterOwnership: ()=>getAnalyticsParameterOwnership,
|
|
35
|
+
hasAnalyticsParameter: ()=>hasAnalyticsParameter,
|
|
31
36
|
stripOwnedAnalyticsArguments: ()=>stripOwnedAnalyticsArguments
|
|
32
37
|
});
|
|
38
|
+
const external_logger_js_namespaceObject = require("./logger.js");
|
|
33
39
|
const external_mcp_sdk_compat_js_namespaceObject = require("./mcp-sdk-compat.js");
|
|
34
40
|
const external_output_instructions_js_namespaceObject = require("./output-instructions.js");
|
|
35
41
|
const JSON_SCHEMA_KEYWORDS = [
|
|
@@ -50,6 +56,36 @@ function hasAnalyticsParameter(schema, parameterName) {
|
|
|
50
56
|
function canInjectAnalyticsParameter(schema, parameterName) {
|
|
51
57
|
return !hasAnalyticsParameter(schema, parameterName) && !schema?.$ref && !schema?.oneOf && !schema?.allOf && !schema?.anyOf;
|
|
52
58
|
}
|
|
59
|
+
function addAnalyticsParameterToTool(tool, parameterName, description, injectionLabel, logger = external_logger_js_namespaceObject.log) {
|
|
60
|
+
const modifiedTool = {
|
|
61
|
+
...tool
|
|
62
|
+
};
|
|
63
|
+
const toolName = tool.name || 'unknown';
|
|
64
|
+
const schema = modifiedTool.inputSchema;
|
|
65
|
+
if (!canInjectAnalyticsParameter(schema, parameterName)) {
|
|
66
|
+
logger(hasAnalyticsParameter(schema, parameterName) ? `WARN: Tool "${toolName}" already has '${parameterName}' parameter. Skipping ${injectionLabel} injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping ${injectionLabel} injection.`);
|
|
67
|
+
return modifiedTool;
|
|
68
|
+
}
|
|
69
|
+
if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
|
|
70
|
+
type: 'object',
|
|
71
|
+
properties: {},
|
|
72
|
+
required: []
|
|
73
|
+
};
|
|
74
|
+
modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));
|
|
75
|
+
const inputSchema = modifiedTool.inputSchema;
|
|
76
|
+
if (!inputSchema.properties) inputSchema.properties = {};
|
|
77
|
+
if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;
|
|
78
|
+
inputSchema.properties[parameterName] = {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description
|
|
81
|
+
};
|
|
82
|
+
if (Array.isArray(inputSchema.required)) {
|
|
83
|
+
if (!inputSchema.required.includes(parameterName)) inputSchema.required.push(parameterName);
|
|
84
|
+
} else inputSchema.required = [
|
|
85
|
+
parameterName
|
|
86
|
+
];
|
|
87
|
+
return modifiedTool;
|
|
88
|
+
}
|
|
53
89
|
function analyticsOwnsParameter(inputSchema, parameterName) {
|
|
54
90
|
if (!inputSchema || 'object' != typeof inputSchema) return canInjectAnalyticsParameter(void 0, parameterName);
|
|
55
91
|
if ((0, external_mcp_sdk_compat_js_namespaceObject.isZodRawShapeCompat)(inputSchema)) return canInjectAnalyticsParameter({
|
|
@@ -68,6 +104,7 @@ function getAnalyticsParameterOwnership(inputSchema, outputSchema) {
|
|
|
68
104
|
return {
|
|
69
105
|
context: analyticsOwnsParameter(inputSchema, 'context'),
|
|
70
106
|
conversationId: analyticsOwnsParameter(inputSchema, 'conversation_id'),
|
|
107
|
+
llmModel: analyticsOwnsParameter(inputSchema, 'llm_model'),
|
|
71
108
|
outputInstructions: (0, external_output_instructions_js_namespaceObject.canDeclareOutputInstructions)(outputSchema)
|
|
72
109
|
};
|
|
73
110
|
}
|
|
@@ -81,20 +118,26 @@ function stripOwnedAnalyticsArguments(args, ownership) {
|
|
|
81
118
|
const { conversation_id: _conversationId, ...rest } = cleanedArgs;
|
|
82
119
|
cleanedArgs = rest;
|
|
83
120
|
}
|
|
121
|
+
if (ownership.llmModel && cleanedArgs && 'object' == typeof cleanedArgs && 'llm_model' in cleanedArgs) {
|
|
122
|
+
const { llm_model: _llmModel, ...rest } = cleanedArgs;
|
|
123
|
+
cleanedArgs = rest;
|
|
124
|
+
}
|
|
84
125
|
return cleanedArgs;
|
|
85
126
|
}
|
|
127
|
+
exports.addAnalyticsParameterToTool = __webpack_exports__.addAnalyticsParameterToTool;
|
|
86
128
|
exports.analyticsOwnsParameter = __webpack_exports__.analyticsOwnsParameter;
|
|
87
129
|
exports.canInjectAnalyticsParameter = __webpack_exports__.canInjectAnalyticsParameter;
|
|
88
130
|
exports.getAnalyticsParameterOwnership = __webpack_exports__.getAnalyticsParameterOwnership;
|
|
89
131
|
exports.hasAnalyticsParameter = __webpack_exports__.hasAnalyticsParameter;
|
|
90
132
|
exports.stripOwnedAnalyticsArguments = __webpack_exports__.stripOwnedAnalyticsArguments;
|
|
91
|
-
for(var
|
|
133
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
134
|
+
"addAnalyticsParameterToTool",
|
|
92
135
|
"analyticsOwnsParameter",
|
|
93
136
|
"canInjectAnalyticsParameter",
|
|
94
137
|
"getAnalyticsParameterOwnership",
|
|
95
138
|
"hasAnalyticsParameter",
|
|
96
139
|
"stripOwnedAnalyticsArguments"
|
|
97
|
-
].indexOf(
|
|
140
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
98
141
|
Object.defineProperty(exports, '__esModule', {
|
|
99
142
|
value: true
|
|
100
143
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { log } from "./logger.mjs";
|
|
1
2
|
import { getObjectShape, isZodRawShapeCompat } from "./mcp-sdk-compat.mjs";
|
|
2
3
|
import { canDeclareOutputInstructions } from "./output-instructions.mjs";
|
|
3
4
|
const JSON_SCHEMA_KEYWORDS = [
|
|
@@ -18,6 +19,36 @@ function hasAnalyticsParameter(schema, parameterName) {
|
|
|
18
19
|
function canInjectAnalyticsParameter(schema, parameterName) {
|
|
19
20
|
return !hasAnalyticsParameter(schema, parameterName) && !schema?.$ref && !schema?.oneOf && !schema?.allOf && !schema?.anyOf;
|
|
20
21
|
}
|
|
22
|
+
function addAnalyticsParameterToTool(tool, parameterName, description, injectionLabel, logger = log) {
|
|
23
|
+
const modifiedTool = {
|
|
24
|
+
...tool
|
|
25
|
+
};
|
|
26
|
+
const toolName = tool.name || 'unknown';
|
|
27
|
+
const schema = modifiedTool.inputSchema;
|
|
28
|
+
if (!canInjectAnalyticsParameter(schema, parameterName)) {
|
|
29
|
+
logger(hasAnalyticsParameter(schema, parameterName) ? `WARN: Tool "${toolName}" already has '${parameterName}' parameter. Skipping ${injectionLabel} injection.` : `WARN: Tool "${toolName}" has complex schema (oneOf/allOf/anyOf/$ref). Skipping ${injectionLabel} injection.`);
|
|
30
|
+
return modifiedTool;
|
|
31
|
+
}
|
|
32
|
+
if (!modifiedTool.inputSchema) modifiedTool.inputSchema = {
|
|
33
|
+
type: 'object',
|
|
34
|
+
properties: {},
|
|
35
|
+
required: []
|
|
36
|
+
};
|
|
37
|
+
modifiedTool.inputSchema = JSON.parse(JSON.stringify(modifiedTool.inputSchema));
|
|
38
|
+
const inputSchema = modifiedTool.inputSchema;
|
|
39
|
+
if (!inputSchema.properties) inputSchema.properties = {};
|
|
40
|
+
if (false === inputSchema.additionalProperties) inputSchema.additionalProperties = void 0;
|
|
41
|
+
inputSchema.properties[parameterName] = {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description
|
|
44
|
+
};
|
|
45
|
+
if (Array.isArray(inputSchema.required)) {
|
|
46
|
+
if (!inputSchema.required.includes(parameterName)) inputSchema.required.push(parameterName);
|
|
47
|
+
} else inputSchema.required = [
|
|
48
|
+
parameterName
|
|
49
|
+
];
|
|
50
|
+
return modifiedTool;
|
|
51
|
+
}
|
|
21
52
|
function analyticsOwnsParameter(inputSchema, parameterName) {
|
|
22
53
|
if (!inputSchema || 'object' != typeof inputSchema) return canInjectAnalyticsParameter(void 0, parameterName);
|
|
23
54
|
if (isZodRawShapeCompat(inputSchema)) return canInjectAnalyticsParameter({
|
|
@@ -36,6 +67,7 @@ function getAnalyticsParameterOwnership(inputSchema, outputSchema) {
|
|
|
36
67
|
return {
|
|
37
68
|
context: analyticsOwnsParameter(inputSchema, 'context'),
|
|
38
69
|
conversationId: analyticsOwnsParameter(inputSchema, 'conversation_id'),
|
|
70
|
+
llmModel: analyticsOwnsParameter(inputSchema, 'llm_model'),
|
|
39
71
|
outputInstructions: canDeclareOutputInstructions(outputSchema)
|
|
40
72
|
};
|
|
41
73
|
}
|
|
@@ -49,6 +81,10 @@ function stripOwnedAnalyticsArguments(args, ownership) {
|
|
|
49
81
|
const { conversation_id: _conversationId, ...rest } = cleanedArgs;
|
|
50
82
|
cleanedArgs = rest;
|
|
51
83
|
}
|
|
84
|
+
if (ownership.llmModel && cleanedArgs && 'object' == typeof cleanedArgs && 'llm_model' in cleanedArgs) {
|
|
85
|
+
const { llm_model: _llmModel, ...rest } = cleanedArgs;
|
|
86
|
+
cleanedArgs = rest;
|
|
87
|
+
}
|
|
52
88
|
return cleanedArgs;
|
|
53
89
|
}
|
|
54
|
-
export { analyticsOwnsParameter, canInjectAnalyticsParameter, getAnalyticsParameterOwnership, hasAnalyticsParameter, stripOwnedAnalyticsArguments };
|
|
90
|
+
export { addAnalyticsParameterToTool, analyticsOwnsParameter, canInjectAnalyticsParameter, getAnalyticsParameterOwnership, hasAnalyticsParameter, stripOwnedAnalyticsArguments };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/extensions/capture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,QAAQ,EAChB,kBAAkB,CAAC,EAAE,WAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/extensions/capture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,QAAQ,EAChB,kBAAkB,CAAC,EAAE,WAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CA8E3B"}
|
|
@@ -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', {
|
|
@@ -64,6 +68,8 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
|
|
|
64
68
|
response: eventInput.response,
|
|
65
69
|
userIntent: eventInput.userIntent,
|
|
66
70
|
userIntentSource: eventInput.userIntentSource,
|
|
71
|
+
llmModel: eventInput.llmModel,
|
|
72
|
+
llmModelSource: eventInput.llmModelSource,
|
|
67
73
|
isError: eventInput.isError,
|
|
68
74
|
error: eventInput.error,
|
|
69
75
|
errorType: eventInput.errorType,
|
|
@@ -76,9 +82,9 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
|
|
|
76
82
|
});
|
|
77
83
|
}
|
|
78
84
|
exports.captureEvent = __webpack_exports__.captureEvent;
|
|
79
|
-
for(var
|
|
85
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
80
86
|
"captureEvent"
|
|
81
|
-
].indexOf(
|
|
87
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
82
88
|
Object.defineProperty(exports, '__esModule', {
|
|
83
89
|
value: true
|
|
84
90
|
});
|
|
@@ -36,6 +36,8 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
|
|
|
36
36
|
response: eventInput.response,
|
|
37
37
|
userIntent: eventInput.userIntent,
|
|
38
38
|
userIntentSource: eventInput.userIntentSource,
|
|
39
|
+
llmModel: eventInput.llmModel,
|
|
40
|
+
llmModelSource: eventInput.llmModelSource,
|
|
39
41
|
isError: eventInput.isError,
|
|
40
42
|
error: eventInput.error,
|
|
41
43
|
errorType: eventInput.errorType,
|
|
@@ -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,15 +28,15 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
readHeaderProtocolVersion: ()=>readHeaderProtocolVersion,
|
|
31
|
+
META_CLIENT_INFO_KEY: ()=>META_CLIENT_INFO_KEY,
|
|
29
32
|
META_PROTOCOL_VERSION_KEY: ()=>META_PROTOCOL_VERSION_KEY,
|
|
30
33
|
PROTOCOL_VERSION_HEADER: ()=>PROTOCOL_VERSION_HEADER,
|
|
31
|
-
stampClientIdentity: ()=>stampClientIdentity,
|
|
32
|
-
resolveClientIdentity: ()=>resolveClientIdentity,
|
|
33
|
-
readServerClientIdentity: ()=>readServerClientIdentity,
|
|
34
34
|
readEnvelopeClientInfo: ()=>readEnvelopeClientInfo,
|
|
35
|
-
|
|
35
|
+
readHeaderProtocolVersion: ()=>readHeaderProtocolVersion,
|
|
36
|
+
readMetaClientInfo: ()=>readMetaClientInfo,
|
|
37
|
+
readServerClientIdentity: ()=>readServerClientIdentity,
|
|
38
|
+
resolveClientIdentity: ()=>resolveClientIdentity,
|
|
39
|
+
stampClientIdentity: ()=>stampClientIdentity
|
|
36
40
|
});
|
|
37
41
|
const external_detect_js_namespaceObject = require("./detect.js");
|
|
38
42
|
const external_headers_js_namespaceObject = require("./headers.js");
|
|
@@ -125,7 +129,7 @@ exports.readMetaClientInfo = __webpack_exports__.readMetaClientInfo;
|
|
|
125
129
|
exports.readServerClientIdentity = __webpack_exports__.readServerClientIdentity;
|
|
126
130
|
exports.resolveClientIdentity = __webpack_exports__.resolveClientIdentity;
|
|
127
131
|
exports.stampClientIdentity = __webpack_exports__.stampClientIdentity;
|
|
128
|
-
for(var
|
|
132
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
129
133
|
"META_CLIENT_INFO_KEY",
|
|
130
134
|
"META_PROTOCOL_VERSION_KEY",
|
|
131
135
|
"PROTOCOL_VERSION_HEADER",
|
|
@@ -135,7 +139,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
135
139
|
"readServerClientIdentity",
|
|
136
140
|
"resolveClientIdentity",
|
|
137
141
|
"stampClientIdentity"
|
|
138
|
-
].indexOf(
|
|
142
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
139
143
|
Object.defineProperty(exports, '__esModule', {
|
|
140
144
|
value: true
|
|
141
145
|
});
|
|
@@ -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,11 +28,11 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
isHighLevelServer: ()=>isHighLevelServer,
|
|
29
|
-
logCompatibilityWarning: ()=>logCompatibilityWarning,
|
|
31
|
+
getMCPCompatibleErrorMessage: ()=>getMCPCompatibleErrorMessage,
|
|
30
32
|
isCompatibleServerType: ()=>isCompatibleServerType,
|
|
31
|
-
|
|
33
|
+
isHighLevelServer: ()=>isHighLevelServer,
|
|
34
|
+
isLowLevelServer: ()=>isLowLevelServer,
|
|
35
|
+
logCompatibilityWarning: ()=>logCompatibilityWarning
|
|
32
36
|
});
|
|
33
37
|
const external_detect_js_namespaceObject = require("./detect.js");
|
|
34
38
|
function logCompatibilityWarning(logger) {
|
|
@@ -96,13 +100,13 @@ exports.isCompatibleServerType = __webpack_exports__.isCompatibleServerType;
|
|
|
96
100
|
exports.isHighLevelServer = __webpack_exports__.isHighLevelServer;
|
|
97
101
|
exports.isLowLevelServer = __webpack_exports__.isLowLevelServer;
|
|
98
102
|
exports.logCompatibilityWarning = __webpack_exports__.logCompatibilityWarning;
|
|
99
|
-
for(var
|
|
103
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
100
104
|
"getMCPCompatibleErrorMessage",
|
|
101
105
|
"isCompatibleServerType",
|
|
102
106
|
"isHighLevelServer",
|
|
103
107
|
"isLowLevelServer",
|
|
104
108
|
"logCompatibilityWarning"
|
|
105
|
-
].indexOf(
|
|
109
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
106
110
|
Object.defineProperty(exports, '__esModule', {
|
|
107
111
|
value: true
|
|
108
112
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const INACTIVITY_TIMEOUT_IN_MINUTES = 30;
|
|
2
2
|
export declare const DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"";
|
|
3
|
+
export declare const DEFAULT_MODEL_PARAMETER_DESCRIPTION = "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" \u2014 never guess.";
|
|
3
4
|
export declare const DEFAULT_CONVERSATION_ID_DESCRIPTION = "Echo the conversation_id from the server's previous response. The server provides it on the first call \u2014 never invent one, and do not issue parallel tool calls until you have it.";
|
|
4
5
|
export declare const POSTHOG_MCP_ANALYTICS_SOURCE = "posthog_mcp_analytics";
|
|
5
6
|
export declare const POSTHOG_MCP_LIB_NAME = "posthog-node-mcp";
|
|
@@ -29,6 +30,8 @@ export declare const PostHogMCPAnalyticsProperty: {
|
|
|
29
30
|
readonly Intent: "$mcp_intent";
|
|
30
31
|
readonly IntentSource: "$mcp_intent_source";
|
|
31
32
|
readonly ListedToolNames: "$mcp_listed_tool_names";
|
|
33
|
+
readonly LlmModel: "$mcp_llm_model";
|
|
34
|
+
readonly LlmModelSource: "$mcp_llm_model_source";
|
|
32
35
|
readonly Parameters: "$mcp_parameters";
|
|
33
36
|
readonly ProtocolVersion: "$mcp_protocol_version";
|
|
34
37
|
readonly ResourceName: "$mcp_resource_name";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/extensions/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,eAAO,MAAM,qCAAqC,2hBAAyhB,CAAA;AAE3kB,eAAO,MAAM,mCAAmC,4LACsI,CAAA;AAEtL,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AAMnE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AAItD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;CAY3B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAE/G,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/extensions/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,eAAO,MAAM,qCAAqC,2hBAAyhB,CAAA;AAE3kB,eAAO,MAAM,mCAAmC,gRAAqQ,CAAA;AAErT,eAAO,MAAM,mCAAmC,4LACsI,CAAA;AAEtL,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AAMnE,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AAItD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;CAY3B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAE/G,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B9B,CAAA;AAEV,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAA"}
|
|
@@ -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,18 +27,10 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
DEFAULT_CONTEXT_PARAMETER_DESCRIPTION: ()=>DEFAULT_CONTEXT_PARAMETER_DESCRIPTION,
|
|
28
|
-
DEFAULT_CONVERSATION_ID_DESCRIPTION: ()=>DEFAULT_CONVERSATION_ID_DESCRIPTION,
|
|
29
|
-
INACTIVITY_TIMEOUT_IN_MINUTES: ()=>INACTIVITY_TIMEOUT_IN_MINUTES,
|
|
30
|
-
POSTHOG_MCP_ANALYTICS_SOURCE: ()=>POSTHOG_MCP_ANALYTICS_SOURCE,
|
|
31
|
-
POSTHOG_MCP_LIB_NAME: ()=>POSTHOG_MCP_LIB_NAME,
|
|
32
|
-
PostHogMCPAnalyticsEvent: ()=>PostHogMCPAnalyticsEvent,
|
|
33
|
-
PostHogMCPAnalyticsProperty: ()=>PostHogMCPAnalyticsProperty
|
|
34
|
-
});
|
|
35
30
|
const INACTIVITY_TIMEOUT_IN_MINUTES = 30;
|
|
36
31
|
const DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"";
|
|
37
|
-
const
|
|
32
|
+
const DEFAULT_MODEL_PARAMETER_DESCRIPTION = 'The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.';
|
|
33
|
+
const DEFAULT_CONVERSATION_ID_DESCRIPTION = "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.";
|
|
38
34
|
const POSTHOG_MCP_ANALYTICS_SOURCE = 'posthog_mcp_analytics';
|
|
39
35
|
const POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp';
|
|
40
36
|
const PostHogMCPAnalyticsEvent = {
|
|
@@ -62,6 +58,8 @@ const PostHogMCPAnalyticsProperty = {
|
|
|
62
58
|
Intent: '$mcp_intent',
|
|
63
59
|
IntentSource: '$mcp_intent_source',
|
|
64
60
|
ListedToolNames: '$mcp_listed_tool_names',
|
|
61
|
+
LlmModel: '$mcp_llm_model',
|
|
62
|
+
LlmModelSource: '$mcp_llm_model_source',
|
|
65
63
|
Parameters: '$mcp_parameters',
|
|
66
64
|
ProtocolVersion: '$mcp_protocol_version',
|
|
67
65
|
ResourceName: '$mcp_resource_name',
|
|
@@ -75,22 +73,34 @@ const PostHogMCPAnalyticsProperty = {
|
|
|
75
73
|
ToolName: '$mcp_tool_name',
|
|
76
74
|
VendorClient: '$mcp_vendor_client'
|
|
77
75
|
};
|
|
76
|
+
__webpack_require__.d(__webpack_exports__, {}, {
|
|
77
|
+
DEFAULT_CONTEXT_PARAMETER_DESCRIPTION: DEFAULT_CONTEXT_PARAMETER_DESCRIPTION,
|
|
78
|
+
DEFAULT_CONVERSATION_ID_DESCRIPTION: DEFAULT_CONVERSATION_ID_DESCRIPTION,
|
|
79
|
+
DEFAULT_MODEL_PARAMETER_DESCRIPTION: DEFAULT_MODEL_PARAMETER_DESCRIPTION,
|
|
80
|
+
INACTIVITY_TIMEOUT_IN_MINUTES: INACTIVITY_TIMEOUT_IN_MINUTES,
|
|
81
|
+
POSTHOG_MCP_ANALYTICS_SOURCE: POSTHOG_MCP_ANALYTICS_SOURCE,
|
|
82
|
+
POSTHOG_MCP_LIB_NAME: POSTHOG_MCP_LIB_NAME,
|
|
83
|
+
PostHogMCPAnalyticsEvent: PostHogMCPAnalyticsEvent,
|
|
84
|
+
PostHogMCPAnalyticsProperty: PostHogMCPAnalyticsProperty
|
|
85
|
+
});
|
|
78
86
|
exports.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = __webpack_exports__.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION;
|
|
79
87
|
exports.DEFAULT_CONVERSATION_ID_DESCRIPTION = __webpack_exports__.DEFAULT_CONVERSATION_ID_DESCRIPTION;
|
|
88
|
+
exports.DEFAULT_MODEL_PARAMETER_DESCRIPTION = __webpack_exports__.DEFAULT_MODEL_PARAMETER_DESCRIPTION;
|
|
80
89
|
exports.INACTIVITY_TIMEOUT_IN_MINUTES = __webpack_exports__.INACTIVITY_TIMEOUT_IN_MINUTES;
|
|
81
90
|
exports.POSTHOG_MCP_ANALYTICS_SOURCE = __webpack_exports__.POSTHOG_MCP_ANALYTICS_SOURCE;
|
|
82
91
|
exports.POSTHOG_MCP_LIB_NAME = __webpack_exports__.POSTHOG_MCP_LIB_NAME;
|
|
83
92
|
exports.PostHogMCPAnalyticsEvent = __webpack_exports__.PostHogMCPAnalyticsEvent;
|
|
84
93
|
exports.PostHogMCPAnalyticsProperty = __webpack_exports__.PostHogMCPAnalyticsProperty;
|
|
85
|
-
for(var
|
|
94
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
86
95
|
"DEFAULT_CONTEXT_PARAMETER_DESCRIPTION",
|
|
87
96
|
"DEFAULT_CONVERSATION_ID_DESCRIPTION",
|
|
97
|
+
"DEFAULT_MODEL_PARAMETER_DESCRIPTION",
|
|
88
98
|
"INACTIVITY_TIMEOUT_IN_MINUTES",
|
|
89
99
|
"POSTHOG_MCP_ANALYTICS_SOURCE",
|
|
90
100
|
"POSTHOG_MCP_LIB_NAME",
|
|
91
101
|
"PostHogMCPAnalyticsEvent",
|
|
92
102
|
"PostHogMCPAnalyticsProperty"
|
|
93
|
-
].indexOf(
|
|
103
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
94
104
|
Object.defineProperty(exports, '__esModule', {
|
|
95
105
|
value: true
|
|
96
106
|
});
|