@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
@@ -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', {
@@ -27,20 +31,25 @@ __webpack_require__.d(__webpack_exports__, {
27
31
  PostHogMCP: ()=>PostHogMCP
28
32
  });
29
33
  const external_posthog_node_namespaceObject = require("posthog-node");
34
+ const external_analytics_parameters_js_namespaceObject = require("./analytics-parameters.js");
30
35
  const external_context_parameters_js_namespaceObject = require("./context-parameters.js");
31
36
  const external_event_types_js_namespaceObject = require("./event-types.js");
32
37
  const external_exceptions_js_namespaceObject = require("./exceptions.js");
33
38
  const external_headers_js_namespaceObject = require("./headers.js");
34
39
  const external_lib_identity_js_namespaceObject = require("./lib-identity.js");
35
40
  const external_logger_js_namespaceObject = require("./logger.js");
41
+ const external_model_parameters_js_namespaceObject = require("./model-parameters.js");
36
42
  const external_sink_js_namespaceObject = require("./sink.js");
37
43
  const external_tools_js_namespaceObject = require("./tools.js");
38
44
  class PostHogMCP extends external_posthog_node_namespaceObject.PostHog {
39
45
  #sink;
40
46
  #missingCapabilityToolName;
47
+ #captureModel;
48
+ #modelParameterOwnership;
41
49
  constructor(apiKey, options = {}){
42
- super(apiKey, options), this.#sink = new external_sink_js_namespaceObject.McpEventSink(this);
50
+ super(apiKey, options), this.#sink = new external_sink_js_namespaceObject.McpEventSink(this), this.#modelParameterOwnership = new Map();
43
51
  this.#missingCapabilityToolName = options.missingCapabilityToolName ?? external_tools_js_namespaceObject.GET_MORE_TOOLS_NAME;
52
+ this.#captureModel = options.captureModel;
44
53
  (0, external_lib_identity_js_namespaceObject.applyMcpLibIdentity)(this);
45
54
  }
46
55
  captureToolCall(data) {
@@ -54,6 +63,8 @@ class PostHogMCP extends external_posthog_node_namespaceObject.PostHog {
54
63
  event.isError = data.isError;
55
64
  event.errorType = data.errorType;
56
65
  applyIntent(event, data.intent, data.intentSource);
66
+ (0, external_model_parameters_js_namespaceObject.setEventModel)(event, data.llmModel);
67
+ if (event.llmModel && data.llmModelSource) event.llmModelSource = data.llmModelSource;
57
68
  if (data.isError) event.error = (0, external_exceptions_js_namespaceObject.captureException)(data.error ?? `Tool ${data.toolName} returned an error`);
58
69
  this.#emit(event);
59
70
  }
@@ -86,15 +97,40 @@ class PostHogMCP extends external_posthog_node_namespaceObject.PostHog {
86
97
  ...prepared,
87
98
  (0, external_tools_js_namespaceObject.getReportMissingToolDescriptor)(this.#missingCapabilityToolName)
88
99
  ];
100
+ if ((0, external_model_parameters_js_namespaceObject.isCaptureModelEnabled)(this.#captureModel)) {
101
+ this.#modelParameterOwnership.clear();
102
+ const ownershipByName = new Map();
103
+ for (const tool of prepared){
104
+ if ('string' != typeof tool.name) continue;
105
+ const ownsModel = (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(tool.inputSchema, 'llm_model');
106
+ ownershipByName.set(tool.name, (ownershipByName.get(tool.name) ?? true) && ownsModel);
107
+ }
108
+ for (const [toolName, ownsModel] of ownershipByName)this.#modelParameterOwnership.set(toolName, ownsModel);
109
+ const modelDescription = (0, external_model_parameters_js_namespaceObject.getModelDescription)(this.#captureModel);
110
+ prepared = prepared.map((tool)=>'string' == typeof tool.name && false === ownershipByName.get(tool.name) ? tool : (0, external_model_parameters_js_namespaceObject.addModelParameterToTool)(tool, modelDescription));
111
+ }
89
112
  return prepared;
90
113
  }
91
- prepareToolCall(name, args) {
114
+ prepareToolCall(name, args, options = {}) {
92
115
  const rawContext = args?.context;
93
116
  const intent = 'string' == typeof rawContext && rawContext.trim() ? rawContext.trim() : void 0;
117
+ const ownsModel = (0, external_model_parameters_js_namespaceObject.isCaptureModelEnabled)(this.#captureModel) && (options.originalTool ? (0, external_analytics_parameters_js_namespaceObject.analyticsOwnsParameter)(options.originalTool.inputSchema, 'llm_model') : true === this.#modelParameterOwnership.get(name));
118
+ const llmModel = ownsModel ? (0, external_model_parameters_js_namespaceObject.getModelArgument)({
119
+ params: {
120
+ arguments: args
121
+ }
122
+ }) : void 0;
123
+ const strippedArgs = stripContext(args);
94
124
  return {
95
125
  intent,
96
126
  intentSource: intent ? 'context_parameter' : void 0,
97
- args: stripContext(args),
127
+ llmModel,
128
+ llmModelSource: llmModel ? 'self_reported' : void 0,
129
+ args: ownsModel ? (0, external_analytics_parameters_js_namespaceObject.stripOwnedAnalyticsArguments)(strippedArgs, {
130
+ context: false,
131
+ conversationId: false,
132
+ llmModel: true
133
+ }) : strippedArgs,
98
134
  isMissingCapability: name === this.#missingCapabilityToolName
99
135
  };
100
136
  }
@@ -103,6 +139,8 @@ class PostHogMCP extends external_posthog_node_namespaceObject.PostHog {
103
139
  event.resourceName = this.#missingCapabilityToolName;
104
140
  event.parameters = data.parameters;
105
141
  applyIntent(event, data.context, 'context_parameter');
142
+ (0, external_model_parameters_js_namespaceObject.setEventModel)(event, data.llmModel);
143
+ if (event.llmModel && data.llmModelSource) event.llmModelSource = data.llmModelSource;
106
144
  this.#emit(event);
107
145
  }
108
146
  #emit(event) {
@@ -138,9 +176,9 @@ function stripContext(args) {
138
176
  return rest;
139
177
  }
140
178
  exports.PostHogMCP = __webpack_exports__.PostHogMCP;
141
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
179
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
142
180
  "PostHogMCP"
143
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
181
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
144
182
  Object.defineProperty(exports, '__esModule', {
145
183
  value: true
146
184
  });
@@ -1,18 +1,23 @@
1
1
  import { PostHog } from "posthog-node";
2
+ import { analyticsOwnsParameter, stripOwnedAnalyticsArguments } from "./analytics-parameters.mjs";
2
3
  import { addContextParameterToTools, getContextDescription, isContextEnabled } from "./context-parameters.mjs";
3
4
  import { MCPAnalyticsEventType } from "./event-types.mjs";
4
5
  import { captureException } from "./exceptions.mjs";
5
6
  import { normalizeHeaderString } from "./headers.mjs";
6
7
  import { applyMcpLibIdentity } from "./lib-identity.mjs";
7
8
  import { log } from "./logger.mjs";
9
+ import { addModelParameterToTool, getModelArgument, getModelDescription, isCaptureModelEnabled, setEventModel } from "./model-parameters.mjs";
8
10
  import { McpEventSink } from "./sink.mjs";
9
11
  import { GET_MORE_TOOLS_NAME, getReportMissingToolDescriptor } from "./tools.mjs";
10
12
  class PostHogMCP extends PostHog {
11
13
  #sink;
12
14
  #missingCapabilityToolName;
15
+ #captureModel;
16
+ #modelParameterOwnership;
13
17
  constructor(apiKey, options = {}){
14
- super(apiKey, options), this.#sink = new McpEventSink(this);
18
+ super(apiKey, options), this.#sink = new McpEventSink(this), this.#modelParameterOwnership = new Map();
15
19
  this.#missingCapabilityToolName = options.missingCapabilityToolName ?? GET_MORE_TOOLS_NAME;
20
+ this.#captureModel = options.captureModel;
16
21
  applyMcpLibIdentity(this);
17
22
  }
18
23
  captureToolCall(data) {
@@ -26,6 +31,8 @@ class PostHogMCP extends PostHog {
26
31
  event.isError = data.isError;
27
32
  event.errorType = data.errorType;
28
33
  applyIntent(event, data.intent, data.intentSource);
34
+ setEventModel(event, data.llmModel);
35
+ if (event.llmModel && data.llmModelSource) event.llmModelSource = data.llmModelSource;
29
36
  if (data.isError) event.error = captureException(data.error ?? `Tool ${data.toolName} returned an error`);
30
37
  this.#emit(event);
31
38
  }
@@ -58,15 +65,40 @@ class PostHogMCP extends PostHog {
58
65
  ...prepared,
59
66
  getReportMissingToolDescriptor(this.#missingCapabilityToolName)
60
67
  ];
68
+ if (isCaptureModelEnabled(this.#captureModel)) {
69
+ this.#modelParameterOwnership.clear();
70
+ const ownershipByName = new Map();
71
+ for (const tool of prepared){
72
+ if ('string' != typeof tool.name) continue;
73
+ const ownsModel = analyticsOwnsParameter(tool.inputSchema, 'llm_model');
74
+ ownershipByName.set(tool.name, (ownershipByName.get(tool.name) ?? true) && ownsModel);
75
+ }
76
+ for (const [toolName, ownsModel] of ownershipByName)this.#modelParameterOwnership.set(toolName, ownsModel);
77
+ const modelDescription = getModelDescription(this.#captureModel);
78
+ prepared = prepared.map((tool)=>'string' == typeof tool.name && false === ownershipByName.get(tool.name) ? tool : addModelParameterToTool(tool, modelDescription));
79
+ }
61
80
  return prepared;
62
81
  }
63
- prepareToolCall(name, args) {
82
+ prepareToolCall(name, args, options = {}) {
64
83
  const rawContext = args?.context;
65
84
  const intent = 'string' == typeof rawContext && rawContext.trim() ? rawContext.trim() : void 0;
85
+ const ownsModel = isCaptureModelEnabled(this.#captureModel) && (options.originalTool ? analyticsOwnsParameter(options.originalTool.inputSchema, 'llm_model') : true === this.#modelParameterOwnership.get(name));
86
+ const llmModel = ownsModel ? getModelArgument({
87
+ params: {
88
+ arguments: args
89
+ }
90
+ }) : void 0;
91
+ const strippedArgs = stripContext(args);
66
92
  return {
67
93
  intent,
68
94
  intentSource: intent ? 'context_parameter' : void 0,
69
- args: stripContext(args),
95
+ llmModel,
96
+ llmModelSource: llmModel ? 'self_reported' : void 0,
97
+ args: ownsModel ? stripOwnedAnalyticsArguments(strippedArgs, {
98
+ context: false,
99
+ conversationId: false,
100
+ llmModel: true
101
+ }) : strippedArgs,
70
102
  isMissingCapability: name === this.#missingCapabilityToolName
71
103
  };
72
104
  }
@@ -75,6 +107,8 @@ class PostHogMCP extends PostHog {
75
107
  event.resourceName = this.#missingCapabilityToolName;
76
108
  event.parameters = data.parameters;
77
109
  applyIntent(event, data.context, 'context_parameter');
110
+ setEventModel(event, data.llmModel);
111
+ if (event.llmModel && data.llmModelSource) event.llmModelSource = data.llmModelSource;
78
112
  this.#emit(event);
79
113
  }
80
114
  #emit(event) {
@@ -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,9 +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
- getRequestHeaders: ()=>getRequestHeaders
28
- });
29
30
  function getRequestHeaders(extra) {
30
31
  if (!extra || 'object' != typeof extra) return;
31
32
  const record = extra;
@@ -53,10 +54,13 @@ function isHeadersLike(source) {
53
54
  const candidate = source;
54
55
  return 'function' == typeof candidate.entries && 'function' == typeof candidate.get;
55
56
  }
57
+ __webpack_require__.d(__webpack_exports__, {
58
+ getRequestHeaders: ()=>getRequestHeaders
59
+ });
56
60
  exports.getRequestHeaders = __webpack_exports__.getRequestHeaders;
57
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
61
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
58
62
  "getRequestHeaders"
59
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
63
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
60
64
  Object.defineProperty(exports, '__esModule', {
61
65
  value: true
62
66
  });
@@ -2,8 +2,8 @@ import type { Event, McpEvent } from '../types';
2
2
  /**
3
3
  * Sanitizes an event by redacting non-text content blocks from responses
4
4
  * and large base64-encoded strings from parameters, and applying the same
5
- * string redaction (PostHog tokens, base64 blobs, sensitive keys) to the
6
- * agent-supplied intent.
5
+ * string redaction (PostHog tokens, base64 blobs, sensitive keys) to values
6
+ * supplied by the agent.
7
7
  *
8
8
  * This is a synchronous operation that returns a new object without mutating the original.
9
9
  * It should run after customer redaction in the event pipeline.
@@ -1 +1 @@
1
- {"version":3,"file":"sanitization.d.ts","sourceRoot":"","sources":["../../src/extensions/sanitization.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAShE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAuBrE"}
1
+ {"version":3,"file":"sanitization.d.ts","sourceRoot":"","sources":["../../src/extensions/sanitization.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAShE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA8BrE"}
@@ -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', {
@@ -36,7 +40,8 @@ function sanitizeEvent(event) {
36
40
  };
37
41
  if (null != result.response) result.response = sanitizeResponse(result.response);
38
42
  if (null != result.parameters) result.parameters = sanitizeParameters(result.parameters);
39
- if (null != result.userIntent) result.userIntent = (0, external_mcp_payloads_js_namespaceObject.sanitizeCapturedValue)(result.userIntent);
43
+ if (null != result.userIntent) result.userIntent = (0, external_mcp_payloads_js_namespaceObject.redactPii)((0, external_mcp_payloads_js_namespaceObject.sanitizeCapturedValue)(result.userIntent));
44
+ if (null != result.llmModel) result.llmModel = (0, external_mcp_payloads_js_namespaceObject.sanitizeCapturedValue)(result.llmModel);
40
45
  if (null != result.error) result.error = sanitizeExceptionValues(result.error);
41
46
  return result;
42
47
  }
@@ -100,9 +105,9 @@ function sanitizeParameters(obj) {
100
105
  return (0, external_mcp_payloads_js_namespaceObject.sanitizeCapturedValue)(obj);
101
106
  }
102
107
  exports.sanitizeEvent = __webpack_exports__.sanitizeEvent;
103
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
108
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
104
109
  "sanitizeEvent"
105
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
110
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
106
111
  Object.defineProperty(exports, '__esModule', {
107
112
  value: true
108
113
  });
@@ -1,4 +1,4 @@
1
- import { sanitizeCapturedValue } from "./mcp-payloads.mjs";
1
+ import { redactPii, sanitizeCapturedValue } from "./mcp-payloads.mjs";
2
2
  function isRecord(value) {
3
3
  return !!value && 'object' == typeof value && !Array.isArray(value);
4
4
  }
@@ -8,7 +8,8 @@ function sanitizeEvent(event) {
8
8
  };
9
9
  if (null != result.response) result.response = sanitizeResponse(result.response);
10
10
  if (null != result.parameters) result.parameters = sanitizeParameters(result.parameters);
11
- if (null != result.userIntent) result.userIntent = sanitizeCapturedValue(result.userIntent);
11
+ if (null != result.userIntent) result.userIntent = redactPii(sanitizeCapturedValue(result.userIntent));
12
+ if (null != result.llmModel) result.llmModel = sanitizeCapturedValue(result.llmModel);
12
13
  if (null != result.error) result.error = sanitizeExceptionValues(result.error);
13
14
  return result;
14
15
  }
@@ -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
- decodeSessionId: ()=>decodeSessionId,
28
- writeSessionIdToTransport: ()=>writeSessionIdToTransport,
29
31
  MCP_SESSION_HEADER: ()=>MCP_SESSION_HEADER,
32
+ decodeSessionId: ()=>decodeSessionId,
30
33
  encodeSessionId: ()=>encodeSessionId,
31
- readMcpSessionHeader: ()=>readMcpSessionHeader
34
+ readMcpSessionHeader: ()=>readMcpSessionHeader,
35
+ writeSessionIdToTransport: ()=>writeSessionIdToTransport
32
36
  });
33
37
  const external_headers_js_namespaceObject = require("./headers.js");
34
38
  const MCP_SESSION_HEADER = 'mcp-session-id';
@@ -83,7 +87,7 @@ function writeSessionIdToTransport(transport, token) {
83
87
  return outer.sessionId === token;
84
88
  }
85
89
  function utf8ToBase64Url(input) {
86
- if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');
90
+ if ("u" > typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');
87
91
  const bytes = new TextEncoder().encode(input);
88
92
  let binary = '';
89
93
  for(let i = 0; i < bytes.length; i++)binary += String.fromCharCode(bytes[i]);
@@ -92,7 +96,7 @@ function utf8ToBase64Url(input) {
92
96
  function base64UrlToUtf8(input) {
93
97
  const normalized = input.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');
94
98
  const padded = normalized + '='.repeat((4 - normalized.length % 4) % 4);
95
- if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');
99
+ if ("u" > typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');
96
100
  const binary = atob(padded);
97
101
  const bytes = new Uint8Array(binary.length);
98
102
  for(let i = 0; i < binary.length; i++)bytes[i] = binary.charCodeAt(i);
@@ -103,13 +107,13 @@ exports.decodeSessionId = __webpack_exports__.decodeSessionId;
103
107
  exports.encodeSessionId = __webpack_exports__.encodeSessionId;
104
108
  exports.readMcpSessionHeader = __webpack_exports__.readMcpSessionHeader;
105
109
  exports.writeSessionIdToTransport = __webpack_exports__.writeSessionIdToTransport;
106
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
110
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
107
111
  "MCP_SESSION_HEADER",
108
112
  "decodeSessionId",
109
113
  "encodeSessionId",
110
114
  "readMcpSessionHeader",
111
115
  "writeSessionIdToTransport"
112
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
116
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
113
117
  Object.defineProperty(exports, '__esModule', {
114
118
  value: true
115
119
  });
@@ -51,7 +51,7 @@ function writeSessionIdToTransport(transport, token) {
51
51
  return outer.sessionId === token;
52
52
  }
53
53
  function utf8ToBase64Url(input) {
54
- if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');
54
+ if ("u" > typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(input, 'utf8').toString('base64url');
55
55
  const bytes = new TextEncoder().encode(input);
56
56
  let binary = '';
57
57
  for(let i = 0; i < bytes.length; i++)binary += String.fromCharCode(bytes[i]);
@@ -60,7 +60,7 @@ function utf8ToBase64Url(input) {
60
60
  function base64UrlToUtf8(input) {
61
61
  const normalized = input.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');
62
62
  const padded = normalized + '='.repeat((4 - normalized.length % 4) % 4);
63
- if ('undefined' != typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');
63
+ if ("u" > typeof Buffer && 'function' == typeof Buffer.from) return Buffer.from(padded, 'base64').toString('utf8');
64
64
  const binary = atob(padded);
65
65
  const bytes = new Uint8Array(binary.length);
66
66
  for(let i = 0; i < binary.length; i++)bytes[i] = binary.charCodeAt(i);
@@ -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,13 +28,13 @@ var __webpack_require__ = {};
24
28
  var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
30
  __webpack_require__.d(__webpack_exports__, {
27
- isModernEraRequest: ()=>isModernEraRequest,
28
- deriveSessionIdFromConversation: ()=>deriveSessionIdFromConversation,
29
- newSessionId: ()=>newSessionId,
30
31
  MODERN_PROTOCOL_REVISION: ()=>MODERN_PROTOCOL_REVISION,
32
+ deriveSessionIdFromConversation: ()=>deriveSessionIdFromConversation,
31
33
  deriveSessionIdFromMCPSession: ()=>deriveSessionIdFromMCPSession,
32
34
  getSessionId: ()=>getSessionId,
33
- getSessionInfo: ()=>getSessionInfo
35
+ getSessionInfo: ()=>getSessionInfo,
36
+ isModernEraRequest: ()=>isModernEraRequest,
37
+ newSessionId: ()=>newSessionId
34
38
  });
35
39
  const external_version_js_namespaceObject = require("../version.js");
36
40
  const external_constants_js_namespaceObject = require("./constants.js");
@@ -135,7 +139,7 @@ exports.getSessionId = __webpack_exports__.getSessionId;
135
139
  exports.getSessionInfo = __webpack_exports__.getSessionInfo;
136
140
  exports.isModernEraRequest = __webpack_exports__.isModernEraRequest;
137
141
  exports.newSessionId = __webpack_exports__.newSessionId;
138
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
142
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
139
143
  "MODERN_PROTOCOL_REVISION",
140
144
  "deriveSessionIdFromConversation",
141
145
  "deriveSessionIdFromMCPSession",
@@ -143,7 +147,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
143
147
  "getSessionInfo",
144
148
  "isModernEraRequest",
145
149
  "newSessionId"
146
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
150
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
147
151
  Object.defineProperty(exports, '__esModule', {
148
152
  value: true
149
153
  });
@@ -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
- processMcpEvent: ()=>processMcpEvent,
28
- McpEventSink: ()=>McpEventSink
31
+ McpEventSink: ()=>McpEventSink,
32
+ processMcpEvent: ()=>processMcpEvent
29
33
  });
30
34
  const core_namespaceObject = require("@posthog/core");
31
35
  const external_logger_js_namespaceObject = require("./logger.js");
@@ -100,10 +104,10 @@ class McpEventSink {
100
104
  }
101
105
  exports.McpEventSink = __webpack_exports__.McpEventSink;
102
106
  exports.processMcpEvent = __webpack_exports__.processMcpEvent;
103
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
107
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
104
108
  "McpEventSink",
105
109
  "processMcpEvent"
106
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
110
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
107
111
  Object.defineProperty(exports, '__esModule', {
108
112
  value: true
109
113
  });
@@ -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
- getReportMissingToolDescriptor: ()=>getReportMissingToolDescriptor,
28
31
  GET_MORE_TOOLS_NAME: ()=>GET_MORE_TOOLS_NAME,
32
+ getMoreToolsResult: ()=>getMoreToolsResult,
33
+ getReportMissingToolDescriptor: ()=>getReportMissingToolDescriptor,
29
34
  handleReportMissing: ()=>handleReportMissing,
30
- resolveMissingCapabilityToolName: ()=>resolveMissingCapabilityToolName,
31
- getMoreToolsResult: ()=>getMoreToolsResult
35
+ resolveMissingCapabilityToolName: ()=>resolveMissingCapabilityToolName
32
36
  });
33
37
  const external_logger_js_namespaceObject = require("./logger.js");
34
38
  const GET_MORE_TOOLS_NAME = 'get_more_tools';
@@ -79,13 +83,13 @@ exports.getMoreToolsResult = __webpack_exports__.getMoreToolsResult;
79
83
  exports.getReportMissingToolDescriptor = __webpack_exports__.getReportMissingToolDescriptor;
80
84
  exports.handleReportMissing = __webpack_exports__.handleReportMissing;
81
85
  exports.resolveMissingCapabilityToolName = __webpack_exports__.resolveMissingCapabilityToolName;
82
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
86
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
83
87
  "GET_MORE_TOOLS_NAME",
84
88
  "getMoreToolsResult",
85
89
  "getReportMissingToolDescriptor",
86
90
  "handleReportMissing",
87
91
  "resolveMissingCapabilityToolName"
88
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
92
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
89
93
  Object.defineProperty(exports, '__esModule', {
90
94
  value: true
91
95
  });