@extenshi/mcp 0.13.1 → 0.14.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 +5 -0
- package/dist/bff.d.ts +32 -0
- package/dist/bff.d.ts.map +1 -1
- package/dist/bff.js +5 -0
- package/dist/bff.js.map +1 -1
- package/dist/development-guide.d.ts +17 -17
- package/dist/development-guide.d.ts.map +1 -1
- package/dist/development-guide.js +6 -1
- package/dist/development-guide.js.map +1 -1
- package/dist/mcp-analytics.d.ts.map +1 -1
- package/dist/mcp-analytics.js +56 -7
- package/dist/mcp-analytics.js.map +1 -1
- package/dist/session-telemetry.d.ts +3 -0
- package/dist/session-telemetry.d.ts.map +1 -0
- package/dist/session-telemetry.js +13 -0
- package/dist/session-telemetry.js.map +1 -0
- package/dist/telemetry.d.ts +3 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +7 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/tools.d.ts +2 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +33 -29
- package/dist/tools.js.map +1 -1
- package/dist/uninstall-form-tools.d.ts +120 -0
- package/dist/uninstall-form-tools.d.ts.map +1 -0
- package/dist/uninstall-form-tools.js +184 -0
- package/dist/uninstall-form-tools.js.map +1 -0
- package/dist/update-check.d.ts +9 -0
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +18 -1
- package/dist/update-check.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp-analytics.js
CHANGED
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
*/
|
|
33
33
|
import { instrument } from '@posthog/mcp';
|
|
34
34
|
import { FastMCPSession } from 'fastmcp';
|
|
35
|
-
import {
|
|
35
|
+
import { bindSessionTelemetryGuard } from './session-telemetry.js';
|
|
36
|
+
import { telemetryAnonymousId, telemetryClient, telemetryEnabled } from './telemetry.js';
|
|
36
37
|
const DROPPED_PROPERTIES = [
|
|
37
38
|
'$mcp_parameters',
|
|
38
39
|
'$mcp_response',
|
|
@@ -40,8 +41,9 @@ const DROPPED_PROPERTIES = [
|
|
|
40
41
|
'$mcp_intent_source',
|
|
41
42
|
'$mcp_error_message',
|
|
42
43
|
];
|
|
43
|
-
|
|
44
|
-
const
|
|
44
|
+
// Auth is private in FastMCP; only validated updateAuth calls populate this map.
|
|
45
|
+
const actors = new WeakMap();
|
|
46
|
+
const AUTH_REVISION = '_extenshi_auth_revision';
|
|
45
47
|
let installed = false;
|
|
46
48
|
/** Call once per process, before `server.start()`. */
|
|
47
49
|
export function instrumentMcpAnalytics(opts) {
|
|
@@ -57,8 +59,32 @@ export function instrumentMcpAnalytics(opts) {
|
|
|
57
59
|
if (opts.perSessionConsent) {
|
|
58
60
|
const updateAuth = proto.updateAuth;
|
|
59
61
|
proto.updateAuth = function (...args) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
const auth = args[0];
|
|
63
|
+
const userId = typeof auth?.userId === 'string' && auth.userId.trim() ? auth.userId : undefined;
|
|
64
|
+
const previous = actors.get(this);
|
|
65
|
+
const allowed = userId !== undefined && auth?.telemetry === true;
|
|
66
|
+
const ambiguous = previous?.ambiguous === true || Boolean(previous?.userId && userId && previous.userId !== userId);
|
|
67
|
+
const changed = previous?.allowed !== allowed || (userId !== undefined && previous?.userId !== userId);
|
|
68
|
+
const snapshot = {
|
|
69
|
+
userId: previous?.userId ?? userId,
|
|
70
|
+
allowed,
|
|
71
|
+
revision: (previous?.revision ?? 0) + Number(changed),
|
|
72
|
+
ambiguous,
|
|
73
|
+
};
|
|
74
|
+
actors.set(this, snapshot);
|
|
75
|
+
// FastMCP reads mutable auth after async validation. Suppress custom
|
|
76
|
+
// telemetry too if this transport switches accounts; permissions and
|
|
77
|
+
// backend identity remain the validated auth's own values.
|
|
78
|
+
if (args[0]) {
|
|
79
|
+
args[0] = { ...args[0], ...(ambiguous ? { telemetry: false } : {}) };
|
|
80
|
+
bindSessionTelemetryGuard(args[0], () => {
|
|
81
|
+
const current = actors.get(this);
|
|
82
|
+
return (snapshot.allowed &&
|
|
83
|
+
current?.allowed === true &&
|
|
84
|
+
!current.ambiguous &&
|
|
85
|
+
current.revision === snapshot.revision);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
62
88
|
return updateAuth.apply(this, args);
|
|
63
89
|
};
|
|
64
90
|
}
|
|
@@ -73,11 +99,34 @@ function instrumentSession(session, opts) {
|
|
|
73
99
|
captureModel: false,
|
|
74
100
|
enableConversationId: false,
|
|
75
101
|
enableExceptionAutocapture: false,
|
|
76
|
-
eventProperties: () => ({
|
|
102
|
+
eventProperties: () => ({
|
|
103
|
+
surface: opts.surface,
|
|
104
|
+
...(session.sessionId ? { mcp_session_id: session.sessionId } : {}),
|
|
105
|
+
...(opts.perSessionConsent ? { [AUTH_REVISION]: actors.get(session)?.revision ?? 0 } : {}),
|
|
106
|
+
}),
|
|
77
107
|
beforeSend: (event) => {
|
|
78
|
-
if (
|
|
108
|
+
if (!telemetryEnabled())
|
|
79
109
|
return null;
|
|
80
110
|
const props = event.properties ?? {};
|
|
111
|
+
if (opts.perSessionConsent) {
|
|
112
|
+
const actor = actors.get(session);
|
|
113
|
+
// Snapshot the auth revision before the handler runs. Never attribute
|
|
114
|
+
// an in-flight completion to a later account/consent choice.
|
|
115
|
+
const revision = props[AUTH_REVISION];
|
|
116
|
+
delete props[AUTH_REVISION];
|
|
117
|
+
if (!actor?.allowed || !actor.userId || actor.ambiguous || revision !== actor.revision)
|
|
118
|
+
return null;
|
|
119
|
+
event.distinct_id = actor.userId;
|
|
120
|
+
props.$process_person_profile = true;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const anonymousId = telemetryAnonymousId();
|
|
124
|
+
if (!anonymousId)
|
|
125
|
+
return null;
|
|
126
|
+
event.distinct_id = anonymousId;
|
|
127
|
+
// The install stays anonymous, with no identify or alias to an account.
|
|
128
|
+
props.$process_person_profile = false;
|
|
129
|
+
}
|
|
81
130
|
for (const key of DROPPED_PROPERTIES)
|
|
82
131
|
delete props[key];
|
|
83
132
|
return event;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-analytics.js","sourceRoot":"","sources":["../src/mcp-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp-analytics.js","sourceRoot":"","sources":["../src/mcp-analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-telemetry.d.ts","sourceRoot":"","sources":["../src/session-telemetry.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI,CAEpF;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAIjE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Request-auth snapshots can outlive a session's current analytics consent. */
|
|
2
|
+
const guards = new WeakMap();
|
|
3
|
+
export function bindSessionTelemetryGuard(auth, allowed) {
|
|
4
|
+
guards.set(auth, allowed);
|
|
5
|
+
}
|
|
6
|
+
export function canCaptureSessionTelemetry(auth) {
|
|
7
|
+
if (!auth || typeof auth !== 'object')
|
|
8
|
+
return true; // Local stdio stays anonymous.
|
|
9
|
+
if (auth.telemetry === false)
|
|
10
|
+
return false;
|
|
11
|
+
return guards.get(auth)?.() ?? true;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=session-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-telemetry.js","sourceRoot":"","sources":["../src/session-telemetry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,MAAM,GAAG,IAAI,OAAO,EAAyB,CAAA;AAEnD,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,OAAsB;IAC7E,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA,CAAC,+BAA+B;IAClF,IAAK,IAAgC,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACvE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAA;AACpC,CAAC"}
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export declare function initTelemetry(opts: {
|
|
|
38
38
|
version: string;
|
|
39
39
|
}): void;
|
|
40
40
|
export declare function telemetryEnabled(): boolean;
|
|
41
|
+
/** The existing install identity, without identifying or aliasing an account. */
|
|
42
|
+
export declare function telemetryAnonymousId(): string | undefined;
|
|
41
43
|
/**
|
|
42
44
|
* The shared posthog-node client, or null when telemetry is disabled. Exposed so
|
|
43
45
|
* the MCP package's PostHog MCP Analytics instrumentation (mcp-analytics.ts)
|
|
@@ -75,7 +77,7 @@ export declare function flagsFromArgv(argv?: string[]): string[];
|
|
|
75
77
|
* database, see tools/extenshi-mcp-server/src/legal.ts).
|
|
76
78
|
*/
|
|
77
79
|
export declare function captureEvent(event: string, properties?: Record<string, unknown>, distinctId?: string): void;
|
|
78
|
-
export declare function captureError(err: unknown, context?: Record<string, unknown
|
|
80
|
+
export declare function captureError(err: unknown, context?: Record<string, unknown>, distinctId?: string): void;
|
|
79
81
|
/**
|
|
80
82
|
* Flush buffered events and close the client. Hard-capped so a slow/hung
|
|
81
83
|
* PostHog endpoint can never delay the command's exit. Safe to call when
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAyBtC,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAG9E;AAmCD,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAyBtC,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAG9E;AAmCD,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;AAeD,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAGzD;AAqBD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,GAAG,IAAI,CAEhD;AAaD,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C;AA6DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBlD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,MAAM,EAAE,CAM9E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,UAAU,CAAC,EAAE,MAAM,GACjB,IAAI,CAkBN;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ3G;AASD;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD"}
|
package/dist/telemetry.js
CHANGED
|
@@ -111,6 +111,11 @@ function anonId() {
|
|
|
111
111
|
mergeWriteConfig({ anonId: id });
|
|
112
112
|
return id;
|
|
113
113
|
}
|
|
114
|
+
/** The existing install identity, without identifying or aliasing an account. */
|
|
115
|
+
export function telemetryAnonymousId() {
|
|
116
|
+
// Do not create a config/identity when usage telemetry is disabled.
|
|
117
|
+
return telemetryEnabled() ? anonId() : undefined;
|
|
118
|
+
}
|
|
114
119
|
function getClient() {
|
|
115
120
|
// Fast path after the first call: never re-read the config file
|
|
116
121
|
// (telemetryEnabled does a sync read) on subsequent events — matters for the
|
|
@@ -304,12 +309,12 @@ export function captureEvent(event, properties = {}, distinctId) {
|
|
|
304
309
|
// Telemetry must never throw into the command path.
|
|
305
310
|
}
|
|
306
311
|
}
|
|
307
|
-
export function captureError(err, context = {}) {
|
|
312
|
+
export function captureError(err, context = {}, distinctId) {
|
|
308
313
|
const c = getClient();
|
|
309
314
|
if (!c)
|
|
310
315
|
return;
|
|
311
316
|
try {
|
|
312
|
-
c.captureException(sanitizeError(err), anonId(), { ...baseProps(), ...context });
|
|
317
|
+
c.captureException(sanitizeError(err), distinctId?.trim() || anonId(), { ...baseProps(), ...context });
|
|
313
318
|
}
|
|
314
319
|
catch {
|
|
315
320
|
// Swallow — see captureEvent.
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -81,6 +81,8 @@ export type Capability = 'read' | 'docs' | 'scan' | 'publish';
|
|
|
81
81
|
*/
|
|
82
82
|
export interface ToolCallContext {
|
|
83
83
|
session?: FastMCPSessionAuth;
|
|
84
|
+
/** Stable transport ID; independent of the per-request auth object. */
|
|
85
|
+
sessionId?: string;
|
|
84
86
|
}
|
|
85
87
|
export interface ToolDeps {
|
|
86
88
|
/** Base URLs for the BFF (reads), scan backend, and docs site. */
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AASH,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,SAAS,CAAA;AAG1G,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AASH,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,SAAS,CAAA;AAG1G,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAgEnC,eAAO,MAAM,QAAQ,sCAAsC,CAAA;AAC3D,eAAO,MAAM,WAAW,oCAAoC,CAAA;AAC5D,eAAO,MAAM,YAAY,qCAAqC,CAAA;AAC9D,eAAO,MAAM,iBAAiB,+EAA+E,CAAA;AAO7G,eAAO,MAAM,mBAAmB,QAWS,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEiE,CAAA;AAE/F;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,eAAO,MAAM,WAAW,aAAa,CAAA;AAErC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAYiD,CAAA;AAEjF,oFAAoF;AACpF,wBAAgB,qBAAqB,CACpC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,EACrC,IAAI,GAAE,OAAmB,GACvB,MAAM,CAYR;AAID,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,kEAAkE;IAClE,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,+BAA+B;IAC/B,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IACrC;;;;;OAKG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,GAAG,CAAA;IACrC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAA;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAA;IACxD;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAiFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,MAA2B,GAAG,OAAO,CAGxF;AA+tBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAwzDnE"}
|
package/dist/tools.js
CHANGED
|
@@ -52,10 +52,13 @@ import { amoCreateAllowed, PublishSetupError, publishArtifact, storeCredentialsF
|
|
|
52
52
|
import { checkPublishAccess } from './publish-access.js';
|
|
53
53
|
import { ScanError, scanArtifact } from './scan.js';
|
|
54
54
|
import { describeStoreConstraints, validateSearchFilters } from './search-filters.js';
|
|
55
|
+
import { canCaptureSessionTelemetry } from './session-telemetry.js';
|
|
55
56
|
import { DEFAULT_MARKET_TOP_N, MARKET_FACETS, MAX_MARKET_TOP_N, shapeExtension, shapeMarketOverview, shapeReviews, shapeSearch, shapeSecurity, shapeStoreRiskBatch, } from './shape.js';
|
|
56
57
|
import { captureError, captureEvent, classifyError } from './telemetry.js';
|
|
57
58
|
import { renderExtensionTemplates } from './templates.js';
|
|
59
|
+
import { registerUninstallFormTools } from './uninstall-form-tools.js';
|
|
58
60
|
import { renderCatalogPayload } from './untrusted.js';
|
|
61
|
+
import { knownUpdate } from './update-check.js';
|
|
59
62
|
import { renderWelcomeWorkflow } from './welcome-workflow.js';
|
|
60
63
|
// ── Public links (shared by tool bodies + server instructions) ──────────────
|
|
61
64
|
export const KEY_PAGE = 'https://dojo.extenshi.io/api-keys';
|
|
@@ -227,26 +230,15 @@ export function isExpectedError(err, kind = classifyError(err)) {
|
|
|
227
230
|
return err instanceof UserError && err.cause === undefined;
|
|
228
231
|
}
|
|
229
232
|
/**
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* Local stdio
|
|
233
|
-
* captureEvent falls back to the per-install anonymous id — unchanged behaviour.
|
|
234
|
-
* The hosted connector authenticates every request, so it supplies both: the
|
|
235
|
-
* account id becomes the PostHog distinct_id, and the connection id threads one
|
|
236
|
-
* client's calls together (see tools/extenshi-mcp-server/src/identity.ts, which
|
|
237
|
-
* mints it per `authenticate()` — i.e. per connection, NOT per cached token).
|
|
238
|
-
*
|
|
239
|
-
* Read defensively: `session` is FastMCP's opaque auth record, and a surface
|
|
240
|
-
* that carries neither field must degrade to the local behaviour rather than
|
|
241
|
-
* throw inside instrumentation.
|
|
233
|
+
* Account identity comes from validated auth; connection identity comes from
|
|
234
|
+
* FastMCP's server-owned transport, not the auth object refreshed on each POST.
|
|
235
|
+
* Local stdio keeps captureEvent's anonymous per-install identity.
|
|
242
236
|
*/
|
|
243
|
-
function attribution(session) {
|
|
244
|
-
|
|
245
|
-
return {};
|
|
246
|
-
const s = session;
|
|
237
|
+
function attribution(session, sessionId) {
|
|
238
|
+
const s = session && typeof session === 'object' ? session : {};
|
|
247
239
|
return {
|
|
248
240
|
userId: typeof s.userId === 'string' && s.userId ? s.userId : undefined,
|
|
249
|
-
sessionId: typeof
|
|
241
|
+
sessionId: typeof sessionId === 'string' && sessionId ? sessionId : undefined,
|
|
250
242
|
};
|
|
251
243
|
}
|
|
252
244
|
/**
|
|
@@ -285,15 +277,16 @@ function instrument(tool) {
|
|
|
285
277
|
execute: async (args, context) => {
|
|
286
278
|
// The hosted connector lets a user decline analytics on the consent
|
|
287
279
|
// screen; honour it for every event, including error reports.
|
|
288
|
-
if (context.session
|
|
280
|
+
if (!canCaptureSessionTelemetry(context.session))
|
|
289
281
|
return original(args, context);
|
|
290
282
|
const startedAt = Date.now();
|
|
291
|
-
const { userId, sessionId } = attribution(context.session);
|
|
283
|
+
const { userId, sessionId } = attribution(context.session, context.sessionId);
|
|
292
284
|
const props = { tool: name, ...(sessionId ? { mcp_session_id: sessionId } : {}) };
|
|
293
285
|
captureEvent('mcp_tool_called', props, userId);
|
|
294
286
|
try {
|
|
295
287
|
const result = await original(args, context);
|
|
296
|
-
|
|
288
|
+
if (canCaptureSessionTelemetry(context.session))
|
|
289
|
+
captureEvent('mcp_tool_succeeded', { ...props, duration_ms: Date.now() - startedAt }, userId);
|
|
297
290
|
return result;
|
|
298
291
|
}
|
|
299
292
|
catch (err) {
|
|
@@ -303,12 +296,14 @@ function instrument(tool) {
|
|
|
303
296
|
const kind = classifyError(err);
|
|
304
297
|
// The failure count is always tracked, so we keep visibility into
|
|
305
298
|
// how often callers hit each condition (incl. the billing gate).
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
299
|
+
if (canCaptureSessionTelemetry(context.session)) {
|
|
300
|
+
captureEvent('mcp_tool_failed', { ...props, error_kind: kind, duration_ms: Date.now() - startedAt }, userId);
|
|
301
|
+
// …but only genuine faults are shipped as exceptions. Expected
|
|
302
|
+
// user-facing conditions (a quota gate, a bad key, a message we
|
|
303
|
+
// authored) are not bugs and must not open error-tracking issues.
|
|
304
|
+
if (!isExpectedError(err, kind))
|
|
305
|
+
captureError(err, { tool: name }, userId);
|
|
306
|
+
}
|
|
312
307
|
throw err;
|
|
313
308
|
}
|
|
314
309
|
},
|
|
@@ -1110,7 +1105,7 @@ export function registerTools(server, deps) {
|
|
|
1110
1105
|
});
|
|
1111
1106
|
add({
|
|
1112
1107
|
name: 'connection_diagnostics',
|
|
1113
|
-
description: 'Verify authentication, granted scopes, supported workspace contracts and actual write permissions (incl. hosted.write, evidence uploads and, for a projectId, CI ingest configuration). Includes credit balances; credentials and secrets are not included. A failed sign-in returns an error that says how to sign in again.',
|
|
1108
|
+
description: 'Verify authentication, granted scopes, supported workspace contracts and actual write permissions (incl. hosted.write, evidence uploads and, for a projectId, CI ingest configuration) and the Pay scopes a key carries. Includes credit balances, the registered tools and, on the local server, `client` {version, latestVersion, updateAvailable}; credentials and secrets are not included. A failed sign-in returns an error that says how to sign in again.',
|
|
1114
1109
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
1115
1110
|
parameters: z.object({}),
|
|
1116
1111
|
execute: async (_args, context) => {
|
|
@@ -1120,7 +1115,13 @@ export function registerTools(server, deps) {
|
|
|
1120
1115
|
client.connectionDiagnostics(),
|
|
1121
1116
|
client.getApiCallerBalance(),
|
|
1122
1117
|
]);
|
|
1123
|
-
|
|
1118
|
+
const update = knownUpdate();
|
|
1119
|
+
return JSON.stringify({
|
|
1120
|
+
connection,
|
|
1121
|
+
balance,
|
|
1122
|
+
registeredTools: registeredTools.map((t) => t.name),
|
|
1123
|
+
...(update ? { client: update } : {}),
|
|
1124
|
+
});
|
|
1124
1125
|
}
|
|
1125
1126
|
catch (err) {
|
|
1126
1127
|
return readError(err, missingKeyMessage);
|
|
@@ -1540,7 +1541,7 @@ export function registerTools(server, deps) {
|
|
|
1540
1541
|
'Built-in text (buttons, reasons, footers) is translated by Extenshi into en, es, pt-BR, fr, de, ' +
|
|
1541
1542
|
'it, ru, ja, ko, zh-CN and ar and is not listed. A page is shown in the user’s browser language ' +
|
|
1542
1543
|
'when the project offers it, otherwise in defaultLocale; an untranslated or outdated field shows ' +
|
|
1543
|
-
'its original. Requires project.read.',
|
|
1544
|
+
'its original. Uninstall survey text itself is changed with update_uninstall_form. Requires project.read.',
|
|
1544
1545
|
parameters: z.object({ projectId: z.string().uuid() }),
|
|
1545
1546
|
execute: async (args, context) => {
|
|
1546
1547
|
try {
|
|
@@ -1566,6 +1567,7 @@ export function registerTools(server, deps) {
|
|
|
1566
1567
|
publicCode: z.string().max(40).describe('The page code, from get_page_translations.'),
|
|
1567
1568
|
locale: z.string().max(35).describe('BCP 47 tag or the _locales spelling (de, pt-BR, pt_BR).'),
|
|
1568
1569
|
translations: z.record(z.string().max(80), z.string().max(2000)),
|
|
1570
|
+
proposedBy: z.string().max(120).optional().describe('Your agent/tool name, shown to the owner.'),
|
|
1569
1571
|
}),
|
|
1570
1572
|
execute: async (args, context) => {
|
|
1571
1573
|
try {
|
|
@@ -1637,6 +1639,8 @@ export function registerTools(server, deps) {
|
|
|
1637
1639
|
});
|
|
1638
1640
|
// get_license_terms_questionnaire / draft_license_terms (project.read, read-only).
|
|
1639
1641
|
registerLicenseTermsTools(add, bff, (err) => readError(err, missingKeyMessage));
|
|
1642
|
+
// list/get/update/preview_uninstall_form + find_brand_mentions (project.read / hosted.write).
|
|
1643
|
+
registerUninstallFormTools(add, bff, (err) => readError(err, missingKeyMessage));
|
|
1640
1644
|
// A local filesystem exists only where local artifacts do (stdio).
|
|
1641
1645
|
const localFiles = caps.has('scan');
|
|
1642
1646
|
add({
|