@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.
Files changed (70) hide show
  1. package/README.md +30 -2
  2. package/dist/extensions/analytics-parameters.js +14 -10
  3. package/dist/extensions/capture.js +12 -8
  4. package/dist/extensions/client-identity.js +18 -14
  5. package/dist/extensions/compatibility.js +16 -12
  6. package/dist/extensions/constants.d.ts +1 -1
  7. package/dist/extensions/constants.d.ts.map +1 -1
  8. package/dist/extensions/constants.js +25 -21
  9. package/dist/extensions/constants.mjs +3 -3
  10. package/dist/extensions/context-parameters.js +13 -9
  11. package/dist/extensions/conversation-id.js +18 -14
  12. package/dist/extensions/detect.js +23 -19
  13. package/dist/extensions/event-types.js +15 -11
  14. package/dist/extensions/exceptions.js +12 -8
  15. package/dist/extensions/headers.js +16 -12
  16. package/dist/extensions/ids.js +12 -8
  17. package/dist/extensions/instrument-highlevel.js +12 -8
  18. package/dist/extensions/instrument-lowlevel.js +12 -8
  19. package/dist/extensions/instrumentation.js +19 -15
  20. package/dist/extensions/intent.js +14 -10
  21. package/dist/extensions/internal.js +17 -13
  22. package/dist/extensions/lib-identity.js +12 -8
  23. package/dist/extensions/logger.js +17 -13
  24. package/dist/extensions/mcp-payloads.d.ts +10 -0
  25. package/dist/extensions/mcp-payloads.d.ts.map +1 -1
  26. package/dist/extensions/mcp-payloads.js +80 -12
  27. package/dist/extensions/mcp-payloads.mjs +62 -1
  28. package/dist/extensions/mcp-sdk-compat.js +23 -19
  29. package/dist/extensions/model-parameters.d.ts.map +1 -1
  30. package/dist/extensions/model-parameters.js +21 -14
  31. package/dist/extensions/model-parameters.mjs +6 -3
  32. package/dist/extensions/output-instructions.js +15 -11
  33. package/dist/extensions/posthog-events.js +12 -8
  34. package/dist/extensions/posthog-mcp.d.ts +23 -12
  35. package/dist/extensions/posthog-mcp.d.ts.map +1 -1
  36. package/dist/extensions/posthog-mcp.js +49 -11
  37. package/dist/extensions/posthog-mcp.mjs +37 -3
  38. package/dist/extensions/request-headers.js +15 -11
  39. package/dist/extensions/sanitization.d.ts +2 -2
  40. package/dist/extensions/sanitization.d.ts.map +1 -1
  41. package/dist/extensions/sanitization.js +14 -9
  42. package/dist/extensions/sanitization.mjs +3 -2
  43. package/dist/extensions/session-token.js +17 -13
  44. package/dist/extensions/session-token.mjs +2 -2
  45. package/dist/extensions/session.js +16 -12
  46. package/dist/extensions/sink.js +14 -10
  47. package/dist/extensions/tools.js +15 -11
  48. package/dist/extensions/tracing-helpers.js +15 -11
  49. package/dist/extensions/transport-identity.js +15 -11
  50. package/dist/extensions/truncation.js +21 -16
  51. package/dist/index.d.ts +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +22 -18
  54. package/dist/index.mjs +7 -7
  55. package/dist/types.d.ts +28 -4
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js +2 -2
  58. package/dist/types.mjs +1 -0
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +15 -11
  61. package/dist/version.mjs +1 -1
  62. package/package.json +12 -12
  63. package/src/extensions/constants.ts +1 -1
  64. package/src/extensions/mcp-payloads.ts +129 -0
  65. package/src/extensions/model-parameters.ts +7 -3
  66. package/src/extensions/posthog-mcp.ts +84 -12
  67. package/src/extensions/sanitization.ts +14 -7
  68. package/src/index.ts +1 -0
  69. package/src/types.ts +27 -4
  70. 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 }) // no injection, no capture
140
+ instrument(server, posthog, { context: false }) // no injection, no capture
141
141
 
142
- instrument(server, posthog, { // keep it, drop the property
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,14 @@ 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
+ Whatever the agent narrates, the SDK redacts structured personal identifiers — email addresses, phone
154
+ numbers, IPv4/IPv6 addresses, Luhn-valid card numbers, and US SSNs — from `$mcp_intent` before it is
155
+ sent. This is always on and needs no configuration. It is best-effort for those well-defined shapes,
156
+ not for free-form personal data such as names or postal addresses, which a regex cannot catch without
157
+ over-redacting ordinary prose. It also applies only to `$mcp_intent`: structured tool `arguments` and
158
+ results are left as-is, because the same shapes are often legitimate data there. If you need a stronger
159
+ guarantee, `context: false` and the `beforeSend` hook above remain the ways to drop the field entirely.
160
+
152
161
  ### What `$mcp_llm_model` records, and when it stays empty
153
162
 
154
163
  `captureModel` is **off** by default. Turn it on and the SDK adds a required `llm_model` parameter to
@@ -178,6 +187,25 @@ As with `context`, what matters is instance lifetime rather than statelessness:
178
187
  server (`sessionIdGenerator: undefined`) that keeps one long-lived server object learns ownership
179
188
  from the first `tools/list` and keeps it.
180
189
 
190
+ For a custom dispatcher, enable the same option on `PostHogMCP`. Its `prepareToolList()` helper
191
+ injects the field and records ownership by tool name; `prepareToolCall()` returns `llmModel` and
192
+ `llmModelSource` while removing the SDK-owned argument before dispatch. Pass both fields to
193
+ `captureToolCall()`. Pass the original tool descriptor on each call so this also works when
194
+ `tools/list` and `tools/call` reach different server replicas:
195
+
196
+ ```ts
197
+ const posthog = new PostHogMCP(process.env.POSTHOG_PROJECT_TOKEN, { captureModel: true })
198
+
199
+ const tools = posthog.prepareToolList(serverTools)
200
+ const originalTool = serverTools.find((tool) => tool.name === toolName)
201
+ const { args, llmModel, llmModelSource } = posthog.prepareToolCall(toolName, rawArgs, { originalTool })
202
+ const result = await dispatch(toolName, args)
203
+
204
+ posthog.captureToolCall({ toolName, llmModel, llmModelSource, isError: false })
205
+ ```
206
+
207
+ A persistent single-process dispatcher can omit `originalTool` after it has prepared its tool list.
208
+
181
209
  ### If you switched to `instrument(server.server)`
182
210
 
183
211
  Before v2 support landed, the compatibility gate rejected high-level v2 servers, and the usual
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
21
  value: 'Module'
18
22
  });
19
23
  Object.defineProperty(exports1, '__esModule', {
@@ -25,10 +29,10 @@ var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
30
  __webpack_require__.d(__webpack_exports__, {
27
31
  addAnalyticsParameterToTool: ()=>addAnalyticsParameterToTool,
28
- hasAnalyticsParameter: ()=>hasAnalyticsParameter,
29
32
  analyticsOwnsParameter: ()=>analyticsOwnsParameter,
30
- getAnalyticsParameterOwnership: ()=>getAnalyticsParameterOwnership,
31
33
  canInjectAnalyticsParameter: ()=>canInjectAnalyticsParameter,
34
+ getAnalyticsParameterOwnership: ()=>getAnalyticsParameterOwnership,
35
+ hasAnalyticsParameter: ()=>hasAnalyticsParameter,
32
36
  stripOwnedAnalyticsArguments: ()=>stripOwnedAnalyticsArguments
33
37
  });
34
38
  const external_logger_js_namespaceObject = require("./logger.js");
@@ -126,14 +130,14 @@ exports.canInjectAnalyticsParameter = __webpack_exports__.canInjectAnalyticsPara
126
130
  exports.getAnalyticsParameterOwnership = __webpack_exports__.getAnalyticsParameterOwnership;
127
131
  exports.hasAnalyticsParameter = __webpack_exports__.hasAnalyticsParameter;
128
132
  exports.stripOwnedAnalyticsArguments = __webpack_exports__.stripOwnedAnalyticsArguments;
129
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
133
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
130
134
  "addAnalyticsParameterToTool",
131
135
  "analyticsOwnsParameter",
132
136
  "canInjectAnalyticsParameter",
133
137
  "getAnalyticsParameterOwnership",
134
138
  "hasAnalyticsParameter",
135
139
  "stripOwnedAnalyticsArguments"
136
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
140
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
137
141
  Object.defineProperty(exports, '__esModule', {
138
142
  value: true
139
143
  });
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
21
  value: 'Module'
18
22
  });
19
23
  Object.defineProperty(exports1, '__esModule', {
@@ -78,9 +82,9 @@ function captureEvent(server, eventInput, logger, requestAttribution) {
78
82
  });
79
83
  }
80
84
  exports.captureEvent = __webpack_exports__.captureEvent;
81
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
85
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
82
86
  "captureEvent"
83
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
87
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
84
88
  Object.defineProperty(exports, '__esModule', {
85
89
  value: true
86
90
  });
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
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
- readMetaClientInfo: ()=>readMetaClientInfo,
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
- META_CLIENT_INFO_KEY: ()=>META_CLIENT_INFO_KEY
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 __webpack_i__ in __webpack_exports__)if (-1 === [
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(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
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, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
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
- isLowLevelServer: ()=>isLowLevelServer,
28
- isHighLevelServer: ()=>isHighLevelServer,
29
- logCompatibilityWarning: ()=>logCompatibilityWarning,
31
+ getMCPCompatibleErrorMessage: ()=>getMCPCompatibleErrorMessage,
30
32
  isCompatibleServerType: ()=>isCompatibleServerType,
31
- getMCPCompatibleErrorMessage: ()=>getMCPCompatibleErrorMessage
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 __webpack_i__ in __webpack_exports__)if (-1 === [
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(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
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,5 @@
1
1
  export declare const INACTIVITY_TIMEOUT_IN_MINUTES = 30;
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.\"";
2
+ export declare const DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"";
3
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.";
4
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.";
5
5
  export declare const POSTHOG_MCP_ANALYTICS_SOURCE = "posthog_mcp_analytics";
@@ -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,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
+ {"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,onBAA4mB,CAAA;AAE9pB,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, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
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,20 +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
- DEFAULT_MODEL_PARAMETER_DESCRIPTION: ()=>DEFAULT_MODEL_PARAMETER_DESCRIPTION,
30
- INACTIVITY_TIMEOUT_IN_MINUTES: ()=>INACTIVITY_TIMEOUT_IN_MINUTES,
31
- POSTHOG_MCP_ANALYTICS_SOURCE: ()=>POSTHOG_MCP_ANALYTICS_SOURCE,
32
- POSTHOG_MCP_LIB_NAME: ()=>POSTHOG_MCP_LIB_NAME,
33
- PostHogMCPAnalyticsEvent: ()=>PostHogMCPAnalyticsEvent,
34
- PostHogMCPAnalyticsProperty: ()=>PostHogMCPAnalyticsProperty
35
- });
36
30
  const INACTIVITY_TIMEOUT_IN_MINUTES = 30;
37
- 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.\"";
38
- 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" \u{2014} never guess.`;
39
- 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.";
31
+ const DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = 'Explain in 15-25 words, in third person, why this tool is called and how it supports the user\'s goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer\'s recent orders to investigate a billing issue and help support determine the appropriate resolution."';
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.";
40
34
  const POSTHOG_MCP_ANALYTICS_SOURCE = 'posthog_mcp_analytics';
41
35
  const POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp';
42
36
  const PostHogMCPAnalyticsEvent = {
@@ -79,6 +73,16 @@ const PostHogMCPAnalyticsProperty = {
79
73
  ToolName: '$mcp_tool_name',
80
74
  VendorClient: '$mcp_vendor_client'
81
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
+ });
82
86
  exports.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = __webpack_exports__.DEFAULT_CONTEXT_PARAMETER_DESCRIPTION;
83
87
  exports.DEFAULT_CONVERSATION_ID_DESCRIPTION = __webpack_exports__.DEFAULT_CONVERSATION_ID_DESCRIPTION;
84
88
  exports.DEFAULT_MODEL_PARAMETER_DESCRIPTION = __webpack_exports__.DEFAULT_MODEL_PARAMETER_DESCRIPTION;
@@ -87,7 +91,7 @@ exports.POSTHOG_MCP_ANALYTICS_SOURCE = __webpack_exports__.POSTHOG_MCP_ANALYTICS
87
91
  exports.POSTHOG_MCP_LIB_NAME = __webpack_exports__.POSTHOG_MCP_LIB_NAME;
88
92
  exports.PostHogMCPAnalyticsEvent = __webpack_exports__.PostHogMCPAnalyticsEvent;
89
93
  exports.PostHogMCPAnalyticsProperty = __webpack_exports__.PostHogMCPAnalyticsProperty;
90
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
94
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
91
95
  "DEFAULT_CONTEXT_PARAMETER_DESCRIPTION",
92
96
  "DEFAULT_CONVERSATION_ID_DESCRIPTION",
93
97
  "DEFAULT_MODEL_PARAMETER_DESCRIPTION",
@@ -96,7 +100,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
96
100
  "POSTHOG_MCP_LIB_NAME",
97
101
  "PostHogMCPAnalyticsEvent",
98
102
  "PostHogMCPAnalyticsProperty"
99
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
103
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
100
104
  Object.defineProperty(exports, '__esModule', {
101
105
  value: true
102
106
  });
@@ -1,7 +1,7 @@
1
1
  const INACTIVITY_TIMEOUT_IN_MINUTES = 30;
2
- 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
- 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" \u{2014} never guess.`;
4
- 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.";
2
+ const DEFAULT_CONTEXT_PARAMETER_DESCRIPTION = 'Explain in 15-25 words, in third person, why this tool is called and how it supports the user\'s goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer\'s recent orders to investigate a billing issue and help support determine the appropriate resolution."';
3
+ 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.';
4
+ 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.";
5
5
  const POSTHOG_MCP_ANALYTICS_SOURCE = 'posthog_mcp_analytics';
6
6
  const POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp';
7
7
  const PostHogMCPAnalyticsEvent = {
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
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,8 +28,8 @@ var __webpack_require__ = {};
24
28
  var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
30
  __webpack_require__.d(__webpack_exports__, {
27
- addContextParameterToTools: ()=>addContextParameterToTools,
28
31
  addContextParameterToTool: ()=>addContextParameterToTool,
32
+ addContextParameterToTools: ()=>addContextParameterToTools,
29
33
  getContextDescription: ()=>getContextDescription,
30
34
  isContextEnabled: ()=>isContextEnabled
31
35
  });
@@ -48,12 +52,12 @@ exports.addContextParameterToTool = __webpack_exports__.addContextParameterToToo
48
52
  exports.addContextParameterToTools = __webpack_exports__.addContextParameterToTools;
49
53
  exports.getContextDescription = __webpack_exports__.getContextDescription;
50
54
  exports.isContextEnabled = __webpack_exports__.isContextEnabled;
51
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
55
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
52
56
  "addContextParameterToTool",
53
57
  "addContextParameterToTools",
54
58
  "getContextDescription",
55
59
  "isContextEnabled"
56
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
60
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
57
61
  Object.defineProperty(exports, '__esModule', {
58
62
  value: true
59
63
  });
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
21
  value: 'Module'
18
22
  });
19
23
  Object.defineProperty(exports1, '__esModule', {
@@ -25,14 +29,14 @@ var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
30
  __webpack_require__.d(__webpack_exports__, {
27
31
  CONVERSATION_ID_PARAM_NAME: ()=>CONVERSATION_ID_PARAM_NAME,
28
- resolveConversationId: ()=>resolveConversationId,
29
- buildConversationIdPromptBack: ()=>buildConversationIdPromptBack,
30
- injectConversationIdPromptBack: ()=>injectConversationIdPromptBack,
32
+ addConversationIdToTool: ()=>addConversationIdToTool,
31
33
  addConversationIdToTools: ()=>addConversationIdToTools,
34
+ buildConversationIdPromptBack: ()=>buildConversationIdPromptBack,
35
+ canInjectConversationIdPromptBack: ()=>canInjectConversationIdPromptBack,
32
36
  extractConversationId: ()=>extractConversationId,
33
- addConversationIdToTool: ()=>addConversationIdToTool,
34
- stripConversationId: ()=>stripConversationId,
35
- canInjectConversationIdPromptBack: ()=>canInjectConversationIdPromptBack
37
+ injectConversationIdPromptBack: ()=>injectConversationIdPromptBack,
38
+ resolveConversationId: ()=>resolveConversationId,
39
+ stripConversationId: ()=>stripConversationId
36
40
  });
37
41
  const core_namespaceObject = require("@posthog/core");
38
42
  const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
@@ -127,7 +131,7 @@ exports.extractConversationId = __webpack_exports__.extractConversationId;
127
131
  exports.injectConversationIdPromptBack = __webpack_exports__.injectConversationIdPromptBack;
128
132
  exports.resolveConversationId = __webpack_exports__.resolveConversationId;
129
133
  exports.stripConversationId = __webpack_exports__.stripConversationId;
130
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
134
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
131
135
  "CONVERSATION_ID_PARAM_NAME",
132
136
  "addConversationIdToTool",
133
137
  "addConversationIdToTools",
@@ -137,7 +141,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
137
141
  "injectConversationIdPromptBack",
138
142
  "resolveConversationId",
139
143
  "stripConversationId"
140
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
144
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
141
145
  Object.defineProperty(exports, '__esModule', {
142
146
  value: true
143
147
  });
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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 ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
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
- canRegisterTools: ()=>canRegisterTools,
28
- canSetRequestHandler: ()=>canSetRequestHandler,
29
- hasClientVersionAccessor: ()=>hasClientVersionAccessor,
30
- hasNegotiatedProtocolVersionAccessor: ()=>hasNegotiatedProtocolVersionAccessor,
31
- hasNestedLowLevelServer: ()=>hasNestedLowLevelServer,
32
- hasRequestHandlerMap: ()=>hasRequestHandlerMap,
33
- hasServerInfo: ()=>hasServerInfo,
34
- hasToolRegistry: ()=>hasToolRegistry,
35
- isBareServerShape: ()=>isBareServerShape
36
- });
37
30
  function asRecord(value) {
38
31
  return value && 'object' == typeof value ? value : void 0;
39
32
  }
@@ -71,6 +64,17 @@ function hasServerInfo(server) {
71
64
  const info = asRecord(asRecord(server)?._serverInfo);
72
65
  return !!info && 'name' in info;
73
66
  }
67
+ __webpack_require__.d(__webpack_exports__, {
68
+ canRegisterTools: ()=>canRegisterTools,
69
+ canSetRequestHandler: ()=>canSetRequestHandler,
70
+ hasClientVersionAccessor: ()=>hasClientVersionAccessor,
71
+ hasNegotiatedProtocolVersionAccessor: ()=>hasNegotiatedProtocolVersionAccessor,
72
+ hasNestedLowLevelServer: ()=>hasNestedLowLevelServer,
73
+ hasRequestHandlerMap: ()=>hasRequestHandlerMap,
74
+ hasServerInfo: ()=>hasServerInfo,
75
+ hasToolRegistry: ()=>hasToolRegistry,
76
+ isBareServerShape: ()=>isBareServerShape
77
+ });
74
78
  exports.canRegisterTools = __webpack_exports__.canRegisterTools;
75
79
  exports.canSetRequestHandler = __webpack_exports__.canSetRequestHandler;
76
80
  exports.hasClientVersionAccessor = __webpack_exports__.hasClientVersionAccessor;
@@ -80,7 +84,7 @@ exports.hasRequestHandlerMap = __webpack_exports__.hasRequestHandlerMap;
80
84
  exports.hasServerInfo = __webpack_exports__.hasServerInfo;
81
85
  exports.hasToolRegistry = __webpack_exports__.hasToolRegistry;
82
86
  exports.isBareServerShape = __webpack_exports__.isBareServerShape;
83
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
87
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
84
88
  "canRegisterTools",
85
89
  "canSetRequestHandler",
86
90
  "hasClientVersionAccessor",
@@ -90,7 +94,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
90
94
  "hasServerInfo",
91
95
  "hasToolRegistry",
92
96
  "isBareServerShape"
93
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
97
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
94
98
  Object.defineProperty(exports, '__esModule', {
95
99
  value: true
96
100
  });