@posthog/mcp 0.15.0 → 0.16.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 +64 -0
- package/dist/extensions/constants.d.ts +9 -0
- package/dist/extensions/constants.d.ts.map +1 -1
- package/dist/extensions/constants.js +9 -0
- package/dist/extensions/constants.mjs +9 -0
- package/dist/extensions/event-types.d.ts +1 -0
- package/dist/extensions/event-types.d.ts.map +1 -1
- package/dist/extensions/event-types.js +1 -0
- package/dist/extensions/event-types.mjs +1 -0
- package/dist/extensions/feedback.d.ts +41 -0
- package/dist/extensions/feedback.d.ts.map +1 -0
- package/dist/extensions/feedback.js +259 -0
- package/dist/extensions/feedback.mjs +200 -0
- package/dist/extensions/instrument-highlevel.d.ts.map +1 -1
- package/dist/extensions/instrument-highlevel.js +19 -1
- package/dist/extensions/instrument-highlevel.mjs +20 -2
- package/dist/extensions/instrument-lowlevel.d.ts.map +1 -1
- package/dist/extensions/instrument-lowlevel.js +19 -1
- package/dist/extensions/instrument-lowlevel.mjs +20 -2
- package/dist/extensions/instrumentation.d.ts +30 -13
- package/dist/extensions/instrumentation.d.ts.map +1 -1
- package/dist/extensions/instrumentation.js +27 -7
- package/dist/extensions/instrumentation.mjs +27 -7
- package/dist/extensions/mcp-payloads.d.ts +9 -3
- package/dist/extensions/mcp-payloads.d.ts.map +1 -1
- package/dist/extensions/mcp-payloads.js +16 -7
- package/dist/extensions/mcp-payloads.mjs +11 -5
- package/dist/extensions/posthog-events.d.ts.map +1 -1
- package/dist/extensions/posthog-events.js +1 -0
- package/dist/extensions/posthog-events.mjs +1 -0
- package/dist/extensions/posthog-mcp.d.ts +23 -3
- package/dist/extensions/posthog-mcp.d.ts.map +1 -1
- package/dist/extensions/posthog-mcp.js +27 -1
- package/dist/extensions/posthog-mcp.mjs +27 -1
- package/dist/extensions/sanitization.js +1 -1
- package/dist/extensions/sanitization.mjs +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.mjs +5 -1
- package/dist/types.d.ts +113 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +4 -4
- package/src/extensions/constants.ts +9 -0
- package/src/extensions/event-types.ts +1 -0
- package/src/extensions/feedback.ts +349 -0
- package/src/extensions/instrument-highlevel.ts +39 -2
- package/src/extensions/instrument-lowlevel.ts +39 -2
- package/src/extensions/instrumentation.ts +65 -17
- package/src/extensions/mcp-payloads.ts +19 -6
- package/src/extensions/posthog-events.ts +1 -0
- package/src/extensions/posthog-mcp.ts +74 -3
- package/src/extensions/sanitization.ts +3 -3
- package/src/index.ts +21 -0
- package/src/types.ts +119 -0
- package/src/version.ts +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -89,6 +89,20 @@ export interface MCPAnalyticsOptions {
|
|
|
89
89
|
logger?: LoggerFn;
|
|
90
90
|
/** Enable the `get_more_tools` virtual tool so agents can report missing functionality. */
|
|
91
91
|
reportMissing?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Inject the `send_feedback` virtual tool so agents can send feedback about
|
|
94
|
+
* this server to its developers — a missing capability (the priority
|
|
95
|
+
* category), a tool that failed or confused them, or praise. Calls to it emit
|
|
96
|
+
* `$mcp_feedback` (never a `$mcp_tool_call`). Off by default.
|
|
97
|
+
*
|
|
98
|
+
* `true` uses the defaults; the object form renames the tool, replaces its
|
|
99
|
+
* description, declares host-specific `extraProperties`, or wires an
|
|
100
|
+
* `onFeedback` handler that routes reports to a real backend.
|
|
101
|
+
*
|
|
102
|
+
* Covers what `reportMissing` covers (as `feedback_type: "missing_capability"`),
|
|
103
|
+
* so new integrations should enable only one of the two.
|
|
104
|
+
*/
|
|
105
|
+
collectFeedback?: CollectFeedbackConfig;
|
|
92
106
|
/**
|
|
93
107
|
* Rename the `get_more_tools` virtual tool (the `reportMissing` feature).
|
|
94
108
|
* Defaults to `get_more_tools`. Set once here so the tool is advertised and
|
|
@@ -163,6 +177,73 @@ export interface MCPAnalyticsOptions {
|
|
|
163
177
|
export interface MCPAnalyticsContextOptions {
|
|
164
178
|
description?: string;
|
|
165
179
|
}
|
|
180
|
+
export type FeedbackType = 'missing_capability' | 'issue' | 'praise' | 'other';
|
|
181
|
+
export type FeedbackSentiment = 'positive' | 'neutral' | 'negative' | 'mixed';
|
|
182
|
+
/** The `collectFeedback` option: `true` for the defaults, or the object form. */
|
|
183
|
+
export type CollectFeedbackConfig = boolean | CollectFeedbackOptions;
|
|
184
|
+
/**
|
|
185
|
+
* A host-declared input-schema fragment for one `send_feedback` extra property —
|
|
186
|
+
* plain JSON Schema, the same shape the MCP `tools/list` wire format uses.
|
|
187
|
+
*/
|
|
188
|
+
export interface FeedbackExtraPropertySchema {
|
|
189
|
+
type: string;
|
|
190
|
+
description?: string;
|
|
191
|
+
enum?: string[];
|
|
192
|
+
[key: string]: unknown;
|
|
193
|
+
}
|
|
194
|
+
/** Object form of {@link CollectFeedbackConfig}. */
|
|
195
|
+
export interface CollectFeedbackOptions {
|
|
196
|
+
/**
|
|
197
|
+
* Rename the `send_feedback` virtual tool. Set once so the tool is advertised
|
|
198
|
+
* and detected under the same name. Defaults to `send_feedback`.
|
|
199
|
+
*/
|
|
200
|
+
toolName?: string;
|
|
201
|
+
/** Replace the default tool description. */
|
|
202
|
+
description?: string;
|
|
203
|
+
/**
|
|
204
|
+
* Host-specific fields merged into the tool's advertised input schema. Each
|
|
205
|
+
* declared key is captured as a `$mcp_feedback_<key>` event property (through
|
|
206
|
+
* the standard sanitize/truncate pipeline); arguments the agent invents beyond
|
|
207
|
+
* the schema are never captured. A key that collides with a core field or an
|
|
208
|
+
* SDK-injected argument throws at configuration time.
|
|
209
|
+
*/
|
|
210
|
+
extraProperties?: Record<string, FeedbackExtraPropertySchema>;
|
|
211
|
+
/** Keys of `extraProperties` to advertise as required. */
|
|
212
|
+
extraRequired?: string[];
|
|
213
|
+
/**
|
|
214
|
+
* Route each report to a real backend (`instrument()` path only — a custom
|
|
215
|
+
* dispatcher routes reports itself, see {@link PreparedToolCall.isFeedback}).
|
|
216
|
+
* Return a string to replace the default acknowledgement text. A throw is
|
|
217
|
+
* logged and falls back to the default reply; the `$mcp_feedback` event is
|
|
218
|
+
* captured either way. The returned string is captured as `$mcp_response`
|
|
219
|
+
* through the generic sanitize pipeline only — unlike `$mcp_feedback_summary`
|
|
220
|
+
* / `details`, it does not get structured-PII redaction, so avoid echoing
|
|
221
|
+
* the agent's raw report text back in it.
|
|
222
|
+
*/
|
|
223
|
+
onFeedback?: (report: FeedbackReport) => MaybePromise<string | void>;
|
|
224
|
+
}
|
|
225
|
+
/** One parsed `send_feedback` call, as handed to `onFeedback` and the dispatcher. */
|
|
226
|
+
export interface FeedbackReport {
|
|
227
|
+
/** Invalid or missing values fall back to `other`. */
|
|
228
|
+
feedbackType: FeedbackType;
|
|
229
|
+
/** One-sentence summary; empty string when the agent omitted it. */
|
|
230
|
+
summary: string;
|
|
231
|
+
sentiment?: FeedbackSentiment;
|
|
232
|
+
frictionPoints?: string;
|
|
233
|
+
suggestedImprovement?: string;
|
|
234
|
+
details?: string;
|
|
235
|
+
/** The existing tool the feedback is about (`tool_name` argument). */
|
|
236
|
+
toolName?: string;
|
|
237
|
+
taskCompleted?: boolean;
|
|
238
|
+
/**
|
|
239
|
+
* Values of the declared `extraProperties` fields that match their declared
|
|
240
|
+
* `type`/`enum`. A value the agent sent with the wrong shape is left out
|
|
241
|
+
* (find it in `raw` if you need it), so these are safe to trust as declared.
|
|
242
|
+
*/
|
|
243
|
+
extras: JsonRecord;
|
|
244
|
+
/** The full raw arguments, for the handler only — never captured. */
|
|
245
|
+
raw: JsonRecord;
|
|
246
|
+
}
|
|
166
247
|
export interface MCPAnalyticsModelOptions {
|
|
167
248
|
description?: string;
|
|
168
249
|
}
|
|
@@ -551,6 +632,14 @@ export interface PrepareToolListOptions {
|
|
|
551
632
|
* {@link PostHogMCP.captureMissingCapability} and reply with `getMoreToolsResult()`.
|
|
552
633
|
*/
|
|
553
634
|
reportMissing?: boolean;
|
|
635
|
+
/**
|
|
636
|
+
* Append the `send_feedback` virtual tool so agents can send feedback.
|
|
637
|
+
* Defaults to `false`, and requires the `PostHogMCP` constructor's
|
|
638
|
+
* `collectFeedback` option (the enable switch that also gates detection).
|
|
639
|
+
* When the agent calls it, route the call to
|
|
640
|
+
* {@link PostHogMCP.captureFeedback} and reply with `sendFeedbackResult()`.
|
|
641
|
+
*/
|
|
642
|
+
collectFeedback?: boolean;
|
|
554
643
|
}
|
|
555
644
|
/** Options for {@link PostHogMCP.prepareToolCall}. */
|
|
556
645
|
export interface PrepareToolCallOptions {
|
|
@@ -582,6 +671,18 @@ export interface PreparedToolCall {
|
|
|
582
671
|
args?: Record<string, unknown>;
|
|
583
672
|
/** True when `name` is the `get_more_tools` virtual tool. */
|
|
584
673
|
isMissingCapability: boolean;
|
|
674
|
+
/**
|
|
675
|
+
* True when `name` is the `send_feedback` virtual tool AND the constructor's
|
|
676
|
+
* `collectFeedback` option is set. Always false without that opt-in, so a real
|
|
677
|
+
* tool that happens to use the name is never shadowed.
|
|
678
|
+
*/
|
|
679
|
+
isFeedback: boolean;
|
|
680
|
+
/**
|
|
681
|
+
* The parsed feedback report, set only when {@link PreparedToolCall.isFeedback}
|
|
682
|
+
* is true. Pass it to {@link PostHogMCP.captureFeedback} and to your own
|
|
683
|
+
* feedback backend, then reply with `sendFeedbackResult()` or a custom text.
|
|
684
|
+
*/
|
|
685
|
+
feedbackReport?: FeedbackReport;
|
|
585
686
|
}
|
|
586
687
|
/** Payload for {@link PostHogMCP.captureMissingCapability}. Emits `$mcp_missing_capability`. */
|
|
587
688
|
export interface MissingCapabilityCaptureData extends McpCaptureCommon {
|
|
@@ -597,4 +698,16 @@ export interface MissingCapabilityCaptureData extends McpCaptureCommon {
|
|
|
597
698
|
/** Captured call arguments → `$mcp_parameters` (sanitized + truncated). */
|
|
598
699
|
parameters?: unknown;
|
|
599
700
|
}
|
|
701
|
+
/** Payload for {@link PostHogMCP.captureFeedback}. Emits `$mcp_feedback`. */
|
|
702
|
+
export interface FeedbackCaptureData extends McpCaptureCommon {
|
|
703
|
+
/**
|
|
704
|
+
* The parsed report (from {@link PreparedToolCall.feedbackReport}) →
|
|
705
|
+
* `$mcp_feedback_*` properties, with the summary and details as `$mcp_intent`.
|
|
706
|
+
*/
|
|
707
|
+
report: FeedbackReport;
|
|
708
|
+
/** The calling model id -> `$mcp_llm_model`. */
|
|
709
|
+
llmModel?: string;
|
|
710
|
+
/** How the model id was obtained -> `$mcp_llm_model_source`. */
|
|
711
|
+
llmModelSource?: MCPAnalyticsModelSource;
|
|
712
|
+
}
|
|
600
713
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.
|
|
1
|
+
export declare const version = "0.16.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/dist/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const version = '0.
|
|
1
|
+
const version = '0.16.0';
|
|
2
2
|
export { version };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posthog/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"bugs": {
|
|
5
5
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
6
6
|
},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"module": "dist/index.mjs",
|
|
29
29
|
"types": "dist/index.d.ts",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@posthog/core": "^1.
|
|
31
|
+
"@posthog/core": "^1.53.2"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/preset-env": "^7.27.1",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"zod4": "npm:zod@^4.4.3",
|
|
53
53
|
"@vitest/coverage-v8": "^1.6.1",
|
|
54
54
|
"vitest": "^1.6.1",
|
|
55
|
-
"
|
|
56
|
-
"posthog-
|
|
55
|
+
"posthog-node": "^5.52.1",
|
|
56
|
+
"@posthog-tooling/tsconfig-base": "1.1.1"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"@modelcontextprotocol/sdk": ">=1.26.0",
|
|
@@ -25,6 +25,7 @@ export const POSTHOG_MCP_LIB_NAME = 'posthog-node-mcp'
|
|
|
25
25
|
export const PostHogMCPAnalyticsEvent = {
|
|
26
26
|
Custom: '$mcp_custom',
|
|
27
27
|
Exception: '$exception',
|
|
28
|
+
Feedback: '$mcp_feedback',
|
|
28
29
|
Identify: '$identify',
|
|
29
30
|
Initialize: '$mcp_initialize',
|
|
30
31
|
MissingCapability: '$mcp_missing_capability',
|
|
@@ -46,6 +47,14 @@ export const PostHogMCPAnalyticsProperty = {
|
|
|
46
47
|
DurationMs: '$mcp_duration_ms',
|
|
47
48
|
ErrorMessage: '$mcp_error_message',
|
|
48
49
|
ErrorType: '$mcp_error_type',
|
|
50
|
+
FeedbackDetails: '$mcp_feedback_details',
|
|
51
|
+
FeedbackFrictionPoints: '$mcp_feedback_friction_points',
|
|
52
|
+
FeedbackSentiment: '$mcp_feedback_sentiment',
|
|
53
|
+
FeedbackSuggestedImprovement: '$mcp_feedback_suggested_improvement',
|
|
54
|
+
FeedbackSummary: '$mcp_feedback_summary',
|
|
55
|
+
FeedbackTaskCompleted: '$mcp_feedback_task_completed',
|
|
56
|
+
FeedbackTool: '$mcp_feedback_tool',
|
|
57
|
+
FeedbackType: '$mcp_feedback_type',
|
|
49
58
|
IsError: '$mcp_is_error',
|
|
50
59
|
Intent: '$mcp_intent',
|
|
51
60
|
IntentSource: '$mcp_intent_source',
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CollectFeedbackOptions,
|
|
3
|
+
FeedbackExtraPropertySchema,
|
|
4
|
+
FeedbackReport,
|
|
5
|
+
FeedbackSentiment,
|
|
6
|
+
FeedbackType,
|
|
7
|
+
CollectFeedbackConfig,
|
|
8
|
+
CompatibleTextToolResult,
|
|
9
|
+
CompatibleToolsListLike,
|
|
10
|
+
JsonRecord,
|
|
11
|
+
} from '../types'
|
|
12
|
+
import { PostHogMCPAnalyticsProperty } from './constants'
|
|
13
|
+
import { log, type LoggerFn } from './logger'
|
|
14
|
+
import { sanitizeFreeText, sanitizeFreeTextValue } from './mcp-payloads'
|
|
15
|
+
|
|
16
|
+
export const SEND_FEEDBACK_TOOL_NAME = 'send_feedback' as const
|
|
17
|
+
|
|
18
|
+
const FEEDBACK_TYPES: readonly FeedbackType[] = ['missing_capability', 'issue', 'praise', 'other']
|
|
19
|
+
const SENTIMENTS: readonly FeedbackSentiment[] = ['positive', 'neutral', 'negative', 'mixed']
|
|
20
|
+
|
|
21
|
+
// Free-text fields are agent-narrated, like `$mcp_intent`; bound them the same way.
|
|
22
|
+
const MAX_FEEDBACK_TEXT_LENGTH = 2048
|
|
23
|
+
const MAX_FEEDBACK_TOOL_NAME_LENGTH = 256
|
|
24
|
+
const TRUNCATION_SUFFIX = '...'
|
|
25
|
+
|
|
26
|
+
const DEFAULT_FEEDBACK_DESCRIPTION =
|
|
27
|
+
'Send feedback about this server to its developers. Most important: report a missing capability whenever no ' +
|
|
28
|
+
'available tool fits your task, even if you can work around it (feedback_type "missing_capability"). Also ' +
|
|
29
|
+
'welcome: a tool that failed or confused you, an unhelpful error, or something that worked well. This records ' +
|
|
30
|
+
'the feedback; it does not add or change tools. Do not include user PII or sensitive content.'
|
|
31
|
+
|
|
32
|
+
const CORE_FEEDBACK_SCHEMA_PROPERTIES = {
|
|
33
|
+
feedback_type: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
enum: [...FEEDBACK_TYPES],
|
|
36
|
+
description:
|
|
37
|
+
"What kind of feedback this is. Use 'missing_capability' when the tool you needed does not exist in the " +
|
|
38
|
+
'tool list - nothing failed, the capability is absent (this is the most valuable report; send it even if ' +
|
|
39
|
+
"you found a workaround). Use 'issue' when an existing tool behaved badly: it failed, returned a confusing " +
|
|
40
|
+
"error, or its description or schema misled you. Use 'praise' when something worked notably well. Use " +
|
|
41
|
+
"'other' for anything else.",
|
|
42
|
+
},
|
|
43
|
+
summary: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
description:
|
|
46
|
+
"One self-contained sentence. For 'missing_capability': the capability you needed, e.g. 'No tool to " +
|
|
47
|
+
"delete multiple cohorts in one call.' For 'issue': the tool and the problem, e.g. 'query-trends rejects " +
|
|
48
|
+
"relative date ranges with an unclear error.'",
|
|
49
|
+
},
|
|
50
|
+
details: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
description:
|
|
53
|
+
'Optional longer context: what you tried, exact parameter values, the error text you saw, and any ' +
|
|
54
|
+
'workaround you used. Omit when the summary says it all.',
|
|
55
|
+
},
|
|
56
|
+
friction_points: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
description:
|
|
59
|
+
'Optional: the specific moments that slowed you down, as short bullet-like sentences, quoting exact tool ' +
|
|
60
|
+
'names, parameters, or error text.',
|
|
61
|
+
},
|
|
62
|
+
suggested_improvement: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description:
|
|
65
|
+
'Optional: the concrete change that would have helped, e.g. the tool to add, the description to reword, ' +
|
|
66
|
+
'or the error message to improve.',
|
|
67
|
+
},
|
|
68
|
+
tool_name: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
description:
|
|
71
|
+
"Optional: the existing tool this feedback is about (for 'issue' or 'praise'). Leave empty for " +
|
|
72
|
+
"'missing_capability' - the point is that no tool fits.",
|
|
73
|
+
},
|
|
74
|
+
sentiment: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
enum: [...SENTIMENTS],
|
|
77
|
+
description: 'Optional: how the experience felt overall.',
|
|
78
|
+
},
|
|
79
|
+
task_completed: {
|
|
80
|
+
type: 'boolean',
|
|
81
|
+
description: "Optional: whether you still completed the user's task despite the problem.",
|
|
82
|
+
},
|
|
83
|
+
} as const
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Extra-property names a host may not declare: the core fields themselves, the
|
|
87
|
+
* names whose `$mcp_feedback_<key>` property would collide with a core property
|
|
88
|
+
* (`type` → `$mcp_feedback_type`, `tool` → `$mcp_feedback_tool`), and the
|
|
89
|
+
* SDK-injected analytics arguments — the report is parsed from the raw
|
|
90
|
+
* arguments before those are stripped, so an extra by the same name would
|
|
91
|
+
* capture an SDK-owned value.
|
|
92
|
+
*/
|
|
93
|
+
const RESERVED_EXTRA_PROPERTY_KEYS = new Set([
|
|
94
|
+
...Object.keys(CORE_FEEDBACK_SCHEMA_PROPERTIES),
|
|
95
|
+
'type',
|
|
96
|
+
'tool',
|
|
97
|
+
'context',
|
|
98
|
+
'conversation_id',
|
|
99
|
+
'llm_model',
|
|
100
|
+
])
|
|
101
|
+
|
|
102
|
+
type FeedbackToolDescriptor = CompatibleToolsListLike['tools'][number]
|
|
103
|
+
|
|
104
|
+
/** `collectFeedback` normalized to its object form; `undefined` when the feature is off. */
|
|
105
|
+
export function resolveCollectFeedbackOptions(
|
|
106
|
+
config: CollectFeedbackConfig | undefined
|
|
107
|
+
): CollectFeedbackOptions | undefined {
|
|
108
|
+
if (!config) {
|
|
109
|
+
return undefined
|
|
110
|
+
}
|
|
111
|
+
return config === true ? {} : config
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The advertised descriptor: the core feedback schema plus the host's declared
|
|
116
|
+
* `extraProperties`. Throws on a config error (a reserved extra key, or an
|
|
117
|
+
* `extraRequired` entry that was never declared) so a bad setup fails at
|
|
118
|
+
* configuration time instead of silently corrupting the advertised schema.
|
|
119
|
+
*/
|
|
120
|
+
export function getFeedbackToolDescriptor(options: CollectFeedbackOptions = {}): FeedbackToolDescriptor {
|
|
121
|
+
const extraProperties = options.extraProperties ?? {}
|
|
122
|
+
const extraRequired = options.extraRequired ?? []
|
|
123
|
+
|
|
124
|
+
for (const key of Object.keys(extraProperties)) {
|
|
125
|
+
if (RESERVED_EXTRA_PROPERTY_KEYS.has(key)) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
`collectFeedback.extraProperties key "${key}" collides with a core or SDK-reserved send_feedback field. Rename it.`
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const key of extraRequired) {
|
|
132
|
+
if (!Object.prototype.hasOwnProperty.call(extraProperties, key)) {
|
|
133
|
+
throw new Error(`collectFeedback.extraRequired key "${key}" is not declared in extraProperties.`)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Deep copy: the host may reuse or mutate the fragments it handed us.
|
|
138
|
+
const copiedExtras =
|
|
139
|
+
Object.keys(extraProperties).length > 0
|
|
140
|
+
? (JSON.parse(JSON.stringify(extraProperties)) as Record<string, unknown>)
|
|
141
|
+
: undefined
|
|
142
|
+
|
|
143
|
+
return {
|
|
144
|
+
name: options.toolName ?? SEND_FEEDBACK_TOOL_NAME,
|
|
145
|
+
description: options.description ?? DEFAULT_FEEDBACK_DESCRIPTION,
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: {
|
|
149
|
+
...(JSON.parse(JSON.stringify(CORE_FEEDBACK_SCHEMA_PROPERTIES)) as Record<string, unknown>),
|
|
150
|
+
...copiedExtras,
|
|
151
|
+
},
|
|
152
|
+
required: ['feedback_type', 'summary', ...extraRequired],
|
|
153
|
+
},
|
|
154
|
+
annotations: {
|
|
155
|
+
title: 'Send feedback',
|
|
156
|
+
readOnlyHint: true,
|
|
157
|
+
// Interacts with an external entity: the report lands in analytics.
|
|
158
|
+
openWorldHint: true,
|
|
159
|
+
// Only records the feedback, so repeat calls are harmless — and advertising
|
|
160
|
+
// it as idempotent makes agents more willing to call it proactively.
|
|
161
|
+
idempotentHint: true,
|
|
162
|
+
destructiveHint: false,
|
|
163
|
+
},
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function readString(value: unknown): string | undefined {
|
|
168
|
+
return typeof value === 'string' && value.trim() ? value : undefined
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function parseFeedbackType(value: unknown): FeedbackType {
|
|
172
|
+
return FEEDBACK_TYPES.includes(value as FeedbackType) ? (value as FeedbackType) : 'other'
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function parseSentiment(value: unknown): FeedbackSentiment | undefined {
|
|
176
|
+
return SENTIMENTS.includes(value as FeedbackSentiment) ? (value as FeedbackSentiment) : undefined
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* True when the value conforms to the declared fragment's `type` and `enum` —
|
|
181
|
+
* the same advisory-schema enforcement the core fields get, so `extras` only
|
|
182
|
+
* ever holds schema-conforming values and a misbehaving agent shows up as
|
|
183
|
+
* absence rather than as an unexpected shape in the host's handler.
|
|
184
|
+
*/
|
|
185
|
+
function matchesExtraSchema(value: unknown, schema: FeedbackExtraPropertySchema): boolean {
|
|
186
|
+
const type = Array.isArray(value) ? 'array' : value === null ? 'null' : typeof value
|
|
187
|
+
if (schema.type !== type && !(schema.type === 'integer' && typeof value === 'number')) {
|
|
188
|
+
return false
|
|
189
|
+
}
|
|
190
|
+
return !Array.isArray(schema.enum) || schema.enum.includes(value as string)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Parses the raw `send_feedback` arguments into a typed report. Never throws:
|
|
195
|
+
* an invalid `feedback_type` falls back to `other`, missing fields stay
|
|
196
|
+
* undefined, and only **declared** extras whose values match their declared
|
|
197
|
+
* `type`/`enum` are lifted into `extras` — mismatches and anything the agent
|
|
198
|
+
* invented reach the handler via `raw` only and are never captured.
|
|
199
|
+
*/
|
|
200
|
+
export function parseFeedbackReport(
|
|
201
|
+
args: Record<string, unknown> | undefined,
|
|
202
|
+
options: CollectFeedbackOptions = {}
|
|
203
|
+
): FeedbackReport {
|
|
204
|
+
const raw = args ?? {}
|
|
205
|
+
const extras: JsonRecord = {}
|
|
206
|
+
for (const [key, schema] of Object.entries(options.extraProperties ?? {})) {
|
|
207
|
+
if (raw[key] !== undefined && matchesExtraSchema(raw[key], schema)) {
|
|
208
|
+
extras[key] = raw[key]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
feedbackType: parseFeedbackType(raw.feedback_type),
|
|
213
|
+
summary: readString(raw.summary) ?? '',
|
|
214
|
+
sentiment: parseSentiment(raw.sentiment),
|
|
215
|
+
frictionPoints: readString(raw.friction_points),
|
|
216
|
+
suggestedImprovement: readString(raw.suggested_improvement),
|
|
217
|
+
details: readString(raw.details),
|
|
218
|
+
toolName: readString(raw.tool_name),
|
|
219
|
+
taskCompleted: typeof raw.task_completed === 'boolean' ? raw.task_completed : undefined,
|
|
220
|
+
extras,
|
|
221
|
+
raw,
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/** The report's free text, used as the event's `$mcp_intent`. */
|
|
226
|
+
export function buildFeedbackIntent(report: FeedbackReport): string {
|
|
227
|
+
return [report.summary, report.details].filter(Boolean).join('\n\n')
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function truncateFeedbackText(value: string, maxLength: number): string {
|
|
231
|
+
return value.length > maxLength ? value.slice(0, maxLength) + TRUNCATION_SUFFIX : value
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Agent-narrated free text can contain a secret the LLM read aloud or personal
|
|
236
|
+
* data it narrated, so it gets exactly the `$mcp_intent` pass (`sanitizeFreeText`:
|
|
237
|
+
* credentials → structured PII → URLs — the order is load-bearing, the URL
|
|
238
|
+
* rewrite would percent-encode the `@` the email pattern anchors on), then a
|
|
239
|
+
* length bound. The event-level pipeline does not process `event.properties`,
|
|
240
|
+
* so this happens here.
|
|
241
|
+
*/
|
|
242
|
+
function captureFreeText(value: string): string {
|
|
243
|
+
return truncateFeedbackText(sanitizeFreeText(value), MAX_FEEDBACK_TEXT_LENGTH)
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* A declared extra is agent-supplied like the core free-text fields, so its
|
|
248
|
+
* string leaves get the same intent-grade pass (with the key-based redaction
|
|
249
|
+
* `sanitizeFreeTextValue` keeps for nested objects), then non-scalars are
|
|
250
|
+
* JSON-stringified and everything is bounded.
|
|
251
|
+
*/
|
|
252
|
+
function captureExtraValue(value: unknown): unknown {
|
|
253
|
+
const sanitized = sanitizeFreeTextValue(value)
|
|
254
|
+
if (typeof sanitized === 'string') {
|
|
255
|
+
return truncateFeedbackText(sanitized, MAX_FEEDBACK_TEXT_LENGTH)
|
|
256
|
+
}
|
|
257
|
+
if (sanitized == null || typeof sanitized === 'number' || typeof sanitized === 'boolean') {
|
|
258
|
+
return sanitized
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
return truncateFeedbackText(JSON.stringify(sanitized), MAX_FEEDBACK_TEXT_LENGTH)
|
|
262
|
+
} catch {
|
|
263
|
+
return undefined
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** The `$mcp_feedback_*` event properties for one report, declared extras included. */
|
|
268
|
+
export function buildFeedbackEventProperties(report: FeedbackReport): JsonRecord {
|
|
269
|
+
const properties: JsonRecord = {
|
|
270
|
+
[PostHogMCPAnalyticsProperty.FeedbackType]: report.feedbackType,
|
|
271
|
+
}
|
|
272
|
+
if (report.summary) {
|
|
273
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackSummary] = captureFreeText(report.summary)
|
|
274
|
+
}
|
|
275
|
+
if (report.sentiment) {
|
|
276
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackSentiment] = report.sentiment
|
|
277
|
+
}
|
|
278
|
+
if (report.frictionPoints) {
|
|
279
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackFrictionPoints] = captureFreeText(report.frictionPoints)
|
|
280
|
+
}
|
|
281
|
+
if (report.suggestedImprovement) {
|
|
282
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackSuggestedImprovement] = captureFreeText(report.suggestedImprovement)
|
|
283
|
+
}
|
|
284
|
+
if (report.details) {
|
|
285
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackDetails] = captureFreeText(report.details)
|
|
286
|
+
}
|
|
287
|
+
if (report.toolName) {
|
|
288
|
+
// Nominally an identifier, but the schema can't stop an agent from writing
|
|
289
|
+
// prose into it — so it gets the same intent-grade pass as the other free text.
|
|
290
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackTool] = truncateFeedbackText(
|
|
291
|
+
sanitizeFreeText(report.toolName),
|
|
292
|
+
MAX_FEEDBACK_TOOL_NAME_LENGTH
|
|
293
|
+
)
|
|
294
|
+
}
|
|
295
|
+
if (report.taskCompleted !== undefined) {
|
|
296
|
+
properties[PostHogMCPAnalyticsProperty.FeedbackTaskCompleted] = report.taskCompleted
|
|
297
|
+
}
|
|
298
|
+
for (const [key, value] of Object.entries(report.extras)) {
|
|
299
|
+
const captured = captureExtraValue(value)
|
|
300
|
+
if (captured !== undefined) {
|
|
301
|
+
properties[`$mcp_feedback_${key}`] = captured
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return properties
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* The default acknowledgement returned to the agent after it calls
|
|
309
|
+
* `send_feedback`. Reply with this from your dispatcher (custom dispatcher
|
|
310
|
+
* path); the `instrument()` path returns it automatically, or the string your
|
|
311
|
+
* `onFeedback` handler returned instead.
|
|
312
|
+
*/
|
|
313
|
+
export function sendFeedbackResult(): CompatibleTextToolResult {
|
|
314
|
+
return {
|
|
315
|
+
content: [
|
|
316
|
+
{
|
|
317
|
+
type: 'text' as const,
|
|
318
|
+
text: "Your feedback was recorded for the server's developers. No additional tools are available - continue with the tools already listed.",
|
|
319
|
+
},
|
|
320
|
+
],
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Runs the host's `onFeedback` handler (when configured) and builds the reply.
|
|
326
|
+
* A returned non-blank string replaces the default acknowledgement; a thrown
|
|
327
|
+
* handler is logged and falls back to it — feedback capture must never break
|
|
328
|
+
* the agent's turn.
|
|
329
|
+
*/
|
|
330
|
+
export async function handleFeedback(
|
|
331
|
+
report: FeedbackReport,
|
|
332
|
+
options: CollectFeedbackOptions = {},
|
|
333
|
+
logger: LoggerFn = log
|
|
334
|
+
): Promise<CompatibleTextToolResult> {
|
|
335
|
+
// Only the type: the summary is agent-narrated free text (possible PII,
|
|
336
|
+
// newlines for log forging, unbounded length) and does not belong in host logs.
|
|
337
|
+
logger(`Agent feedback reported (${report.feedbackType})`)
|
|
338
|
+
if (options.onFeedback) {
|
|
339
|
+
try {
|
|
340
|
+
const reply = await options.onFeedback(report)
|
|
341
|
+
if (typeof reply === 'string' && reply.trim()) {
|
|
342
|
+
return { content: [{ type: 'text' as const, text: reply }] }
|
|
343
|
+
}
|
|
344
|
+
} catch (error) {
|
|
345
|
+
logger(`Warning: onFeedback handler threw; returning the default acknowledgement - ${error}`)
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return sendFeedbackResult()
|
|
349
|
+
}
|