@n8n/telemetry 1.3.1 → 1.5.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.
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WORKFLOW_REVIEWS_TELEMETRY = void 0;
4
+ const v4_1 = require("zod/v4");
5
+ const define_1 = require("../define");
6
+ exports.WORKFLOW_REVIEWS_TELEMETRY = (0, define_1.defineTelemetryEvents)({
7
+ USER_REQUESTED_WORKFLOW_REVIEW: {
8
+ name: 'User requested workflow review',
9
+ description: 'A workflow was submitted for review, opening a review request. Fires once per opened review, not on a later re-pin.',
10
+ properties: v4_1.z.object({
11
+ user_id: v4_1.z.string(),
12
+ workflow_review_request_id: v4_1.z.string(),
13
+ project_id: v4_1.z.string().describe('Owning project when the review opened'),
14
+ workflow_id: v4_1.z.string(),
15
+ workflow_version_id: v4_1.z.string(),
16
+ reviewer_count: v4_1.z
17
+ .number()
18
+ .describe('Reviewers assigned when the review opened, not everyone eligible to review'),
19
+ }),
20
+ },
21
+ USER_UPDATED_WORKFLOW_VERSION_UNDER_REVIEW: {
22
+ name: 'User updated workflow version under review',
23
+ description: 'An open review was re-pinned to another version of the workflow it covers. Fires only on a real re-pin, not on a rename or a description edit.',
24
+ properties: v4_1.z.object({
25
+ user_id: v4_1.z.string(),
26
+ workflow_review_request_id: v4_1.z.string(),
27
+ workflow_id: v4_1.z.string(),
28
+ workflow_version_id: v4_1.z.string().describe('The newly pinned version, not the previous one'),
29
+ }),
30
+ },
31
+ USER_DECIDED_WORKFLOW_REVIEW: {
32
+ name: 'User decided workflow review',
33
+ description: 'A user approved a review or requested changes on it. Fires once per decision, so a review can appear several times.',
34
+ properties: v4_1.z.object({
35
+ user_id: v4_1.z.string(),
36
+ workflow_review_request_id: v4_1.z.string(),
37
+ workflow_id: v4_1.z.string(),
38
+ workflow_version_id: v4_1.z
39
+ .string()
40
+ .nullable()
41
+ .describe('Null when the pinned version was pruned before the decision'),
42
+ decision: v4_1.z.enum(['approved', 'changes_requested']),
43
+ decided_via: v4_1.z
44
+ .enum(['assigned-reviewer', 'admin-override'])
45
+ .describe("'assigned-reviewer' = the decider was assigned to this review; 'admin-override' = they decided through an instance or project admin role. Assignment wins when both apply"),
46
+ review_created_at: v4_1.z.string().describe('When the review was opened, ISO 8601'),
47
+ }),
48
+ },
49
+ WORKFLOW_REVIEW_CLOSED: {
50
+ name: 'Workflow review closed',
51
+ description: 'An open review was closed without a decision because no reviewable workflow was left on it. No user performs it.',
52
+ properties: v4_1.z.object({
53
+ workflow_review_request_id: v4_1.z.string(),
54
+ cause_trigger: v4_1.z
55
+ .enum(['workflow-archived', 'workflow-moved', 'workflow-deleted', 'unknown'])
56
+ .describe('What left the review without a reviewable workflow. "unknown" means the trigger went unrecorded and the review was swept up later, not that nothing triggered it'),
57
+ cause_actor_kind: v4_1.z
58
+ .enum(['user', 'system'])
59
+ .describe('Who caused the trigger, not who closed the review. "system" means no actor was recorded, not that automation acted'),
60
+ }),
61
+ },
62
+ USER_COMMENTED_ON_WORKFLOW_REVIEW: {
63
+ name: 'User commented on workflow review',
64
+ description: 'A comment was posted on an open review.',
65
+ properties: v4_1.z.object({
66
+ user_id: v4_1.z.string(),
67
+ workflow_review_request_id: v4_1.z.string(),
68
+ }),
69
+ },
70
+ });
71
+ //# sourceMappingURL=workflow-reviews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-reviews.js","sourceRoot":"","sources":["../../src/events/workflow-reviews.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAE3B,sCAAkD;AAErC,QAAA,0BAA0B,GAAG,IAAA,8BAAqB,EAAC;IAC/D,8BAA8B,EAAE;QAC/B,IAAI,EAAE,gCAAgC;QACtC,WAAW,EACV,qHAAqH;QACtH,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE;YACnB,0BAA0B,EAAE,MAAC,CAAC,MAAM,EAAE;YACtC,UAAU,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACxE,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,mBAAmB,EAAE,MAAC,CAAC,MAAM,EAAE;YAC/B,cAAc,EAAE,MAAC;iBACf,MAAM,EAAE;iBACR,QAAQ,CAAC,4EAA4E,CAAC;SACxF,CAAC;KACF;IACD,0CAA0C,EAAE;QAC3C,IAAI,EAAE,4CAA4C;QAClD,WAAW,EACV,gJAAgJ;QACjJ,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE;YACnB,0BAA0B,EAAE,MAAC,CAAC,MAAM,EAAE;YACtC,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,mBAAmB,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SAC1F,CAAC;KACF;IACD,4BAA4B,EAAE;QAC7B,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACV,qHAAqH;QACtH,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE;YACnB,0BAA0B,EAAE,MAAC,CAAC,MAAM,EAAE;YACtC,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,mBAAmB,EAAE,MAAC;iBACpB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;YACzE,QAAQ,EAAE,MAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;YACnD,WAAW,EAAE,MAAC;iBACZ,IAAI,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;iBAC7C,QAAQ,CACR,2KAA2K,CAC3K;YACF,iBAAiB,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SAC9E,CAAC;KACF;IACD,sBAAsB,EAAE;QACvB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACV,kHAAkH;QACnH,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,0BAA0B,EAAE,MAAC,CAAC,MAAM,EAAE;YACtC,aAAa,EAAE,MAAC;iBACd,IAAI,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;iBAC5E,QAAQ,CACR,kKAAkK,CAClK;YACF,gBAAgB,EAAE,MAAC;iBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBACxB,QAAQ,CACR,oHAAoH,CACpH;SACF,CAAC;KACF;IACD,iCAAiC,EAAE;QAClC,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE;YACnB,0BAA0B,EAAE,MAAC,CAAC,MAAM,EAAE;SACtC,CAAC;KACF;CACD,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const WORKFLOW_TELEMETRY: {
3
+ readonly NODE_IDS_HEALED: {
4
+ readonly name: "Workflow node ids healed";
5
+ readonly description: "A published version about to be activated carried duplicate or missing node ids, so a corrected system-authored version was published in its place. `superseded` means the corrected version lost against a concurrent publish or unpublish and was discarded.";
6
+ readonly properties: z.ZodObject<{
7
+ workflow_id: z.ZodString;
8
+ filled_count: z.ZodNumber;
9
+ reassigned_count: z.ZodNumber;
10
+ dropped_count: z.ZodNumber;
11
+ superseded: z.ZodBoolean;
12
+ }, z.core.$strip>;
13
+ } & import("../define").TelemetryEventInput & {
14
+ readonly getValidationError: (properties: unknown) => string | null;
15
+ };
16
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WORKFLOW_TELEMETRY = void 0;
4
+ const v4_1 = require("zod/v4");
5
+ const define_1 = require("../define");
6
+ exports.WORKFLOW_TELEMETRY = (0, define_1.defineTelemetryEvents)({
7
+ NODE_IDS_HEALED: {
8
+ name: 'Workflow node ids healed',
9
+ description: 'A published version about to be activated carried duplicate or missing node ids, so a corrected system-authored version was published in its place. `superseded` means the corrected version lost against a concurrent publish or unpublish and was discarded.',
10
+ properties: v4_1.z.object({
11
+ workflow_id: v4_1.z.string(),
12
+ filled_count: v4_1.z.number().describe('Nodes that had no id and received a fresh one'),
13
+ reassigned_count: v4_1.z
14
+ .number()
15
+ .describe('Nodes that shared their id with another node and received a fresh one'),
16
+ dropped_count: v4_1.z
17
+ .number()
18
+ .describe('Exact same-name duplicates removed in favor of their last occurrence'),
19
+ superseded: v4_1.z
20
+ .boolean()
21
+ .describe('Whether the corrected version lost the publish race and was discarded'),
22
+ }),
23
+ },
24
+ });
25
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/events/workflow.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAE3B,sCAAkD;AAErC,QAAA,kBAAkB,GAAG,IAAA,8BAAqB,EAAC;IACvD,eAAe,EAAE;QAChB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACV,gQAAgQ;QACjQ,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,YAAY,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAClF,gBAAgB,EAAE,MAAC;iBACjB,MAAM,EAAE;iBACR,QAAQ,CAAC,uEAAuE,CAAC;YACnF,aAAa,EAAE,MAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,CAAC,sEAAsE,CAAC;YAClF,UAAU,EAAE,MAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,CAAC,uEAAuE,CAAC;SACnF,CAAC;KACF;CACD,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,7 @@ export type { TelemetryCatalogEntry, TelemetryCatalogProperty } from './catalog'
3
3
  export { POSTHOG_EVENTS_BLACKLIST } from './constants';
4
4
  export { defineTelemetryEvents } from './define';
5
5
  export type { InferTelemetryProps, TelemetryEventDef, TelemetryEventInput, TelemetryEventRegistry, } from './define';
6
+ export { redactTelemetryProperties, redactTelemetryText } from './redaction';
7
+ export type { TelemetryTextOptions } from './redaction';
6
8
  export { collectDuplicateNames, validateEntrySchemas } from './registry-checks';
7
9
  export { TELEMETRY_EVENT } from './telemetry-events';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TELEMETRY_EVENT = exports.validateEntrySchemas = exports.collectDuplicateNames = exports.defineTelemetryEvents = exports.POSTHOG_EVENTS_BLACKLIST = exports.formatCatalog = exports.buildCatalog = void 0;
3
+ exports.TELEMETRY_EVENT = exports.validateEntrySchemas = exports.collectDuplicateNames = exports.redactTelemetryText = exports.redactTelemetryProperties = exports.defineTelemetryEvents = exports.POSTHOG_EVENTS_BLACKLIST = exports.formatCatalog = exports.buildCatalog = void 0;
4
4
  var catalog_1 = require("./catalog");
5
5
  Object.defineProperty(exports, "buildCatalog", { enumerable: true, get: function () { return catalog_1.buildCatalog; } });
6
6
  Object.defineProperty(exports, "formatCatalog", { enumerable: true, get: function () { return catalog_1.formatCatalog; } });
@@ -8,6 +8,9 @@ var constants_1 = require("./constants");
8
8
  Object.defineProperty(exports, "POSTHOG_EVENTS_BLACKLIST", { enumerable: true, get: function () { return constants_1.POSTHOG_EVENTS_BLACKLIST; } });
9
9
  var define_1 = require("./define");
10
10
  Object.defineProperty(exports, "defineTelemetryEvents", { enumerable: true, get: function () { return define_1.defineTelemetryEvents; } });
11
+ var redaction_1 = require("./redaction");
12
+ Object.defineProperty(exports, "redactTelemetryProperties", { enumerable: true, get: function () { return redaction_1.redactTelemetryProperties; } });
13
+ Object.defineProperty(exports, "redactTelemetryText", { enumerable: true, get: function () { return redaction_1.redactTelemetryText; } });
11
14
  var registry_checks_1 = require("./registry-checks");
12
15
  Object.defineProperty(exports, "collectDuplicateNames", { enumerable: true, get: function () { return registry_checks_1.collectDuplicateNames; } });
13
16
  Object.defineProperty(exports, "validateEntrySchemas", { enumerable: true, get: function () { return registry_checks_1.validateEntrySchemas; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAwD;AAA/C,uGAAA,YAAY,OAAA;AAAE,wGAAA,aAAa,OAAA;AAEpC,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AACjC,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAO9B,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AACpD,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAwD;AAA/C,uGAAA,YAAY,OAAA;AAAE,wGAAA,aAAa,OAAA;AAEpC,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AACjC,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAO9B,yCAA6E;AAApE,sHAAA,yBAAyB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAEvD,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AACpD,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
@@ -0,0 +1,7 @@
1
+ type TelemetryValue = string | number | boolean | object | null | undefined;
2
+ export interface TelemetryTextOptions {
3
+ maxLength?: number;
4
+ }
5
+ export declare function redactTelemetryText(value: string, opts?: TelemetryTextOptions): string;
6
+ export declare function redactTelemetryProperties<T extends Record<string, TelemetryValue>>(properties: T): Record<string, TelemetryValue>;
7
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redactTelemetryText = redactTelemetryText;
4
+ exports.redactTelemetryProperties = redactTelemetryProperties;
5
+ const pii_patterns_1 = require("@n8n/utils/redaction/pii-patterns");
6
+ const redact_text_1 = require("@n8n/utils/redaction/redact-text");
7
+ const TELEMETRY_REDACTION_OPTIONS = {
8
+ secrets: true,
9
+ detect: pii_patterns_1.SUPPORTED_PII_CATEGORIES,
10
+ preserveUrlStructure: true,
11
+ };
12
+ const MAX_TELEMETRY_TEXT_LENGTH = 8_000;
13
+ const IDENTIFIER_KEY_PATTERN = /(?:^|_)(?:id|ids|hash)$/;
14
+ const SECRET_KEY_PATTERN = /(?:^|_)(?:password|passwd|pwd|secret|token|api_?key|apikey|access_?token|refresh_?token|id_?token|session_?token|auth_?token|authorization|cookie|private_?key)$/i;
15
+ function toSnakeCase(key) {
16
+ return key.replace(/([a-z0-9])([A-Z])/g, '$1_$2').replace(/-/g, '_');
17
+ }
18
+ const MAX_PROPERTY_DEPTH = 5;
19
+ const OVER_DEPTH_MARKER = '[REDACTED_DEPTH]';
20
+ function redactTelemetryText(value, opts = {}) {
21
+ const maxLength = opts.maxLength ?? MAX_TELEMETRY_TEXT_LENGTH;
22
+ const redacted = (0, redact_text_1.redactText)(value, TELEMETRY_REDACTION_OPTIONS).text;
23
+ return redacted.length > maxLength ? `${redacted.slice(0, maxLength)}...` : redacted;
24
+ }
25
+ function isNonNullObject(value) {
26
+ return value !== null && typeof value === 'object';
27
+ }
28
+ function redactPropertyValue(key, value, depth) {
29
+ if (SECRET_KEY_PATTERN.test(toSnakeCase(key)) &&
30
+ (typeof value === 'string' || isNonNullObject(value))) {
31
+ return redact_text_1.DEFAULT_PLACEHOLDER;
32
+ }
33
+ if (typeof value === 'string') {
34
+ return IDENTIFIER_KEY_PATTERN.test(key) ? value : redactTelemetryText(value);
35
+ }
36
+ if (Array.isArray(value)) {
37
+ if (depth >= MAX_PROPERTY_DEPTH)
38
+ return OVER_DEPTH_MARKER;
39
+ return value.map((entry) => redactPropertyValue(key, entry, depth + 1));
40
+ }
41
+ if (isNonNullObject(value)) {
42
+ if (depth >= MAX_PROPERTY_DEPTH)
43
+ return OVER_DEPTH_MARKER;
44
+ const redacted = {};
45
+ for (const [nestedKey, nestedValue] of Object.entries(value)) {
46
+ redacted[nestedKey] = redactPropertyValue(nestedKey, nestedValue, depth + 1);
47
+ }
48
+ return redacted;
49
+ }
50
+ return value;
51
+ }
52
+ function redactTelemetryProperties(properties) {
53
+ const redacted = {};
54
+ for (const [key, value] of Object.entries(properties)) {
55
+ redacted[key] = redactPropertyValue(key, value, 0);
56
+ }
57
+ return redacted;
58
+ }
59
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"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"}
@@ -823,7 +823,7 @@ export declare const TELEMETRY_EVENT: {
823
823
  };
824
824
  readonly USER_STARTED_ADDING_AGENT_TOOL: {
825
825
  readonly name: "User started adding agent tool";
826
- readonly description: "The user clicked Connect on an available row in the tools modal, starting a new tool flow.";
826
+ readonly description: "The user started adding an available tool manually by connecting it or creating a workflow.";
827
827
  readonly properties: import("zod/v4").ZodObject<{
828
828
  tool_type: import("zod/v4").ZodEnum<{
829
829
  custom: "custom";
@@ -996,6 +996,190 @@ export declare const TELEMETRY_EVENT: {
996
996
  };
997
997
  };
998
998
  INSTANCE_AI: {
999
+ readonly USER_CLICKED_AI_CREDIT_BALANCE: {
1000
+ readonly name: "User clicked AI credit balance";
1001
+ readonly description: "The user clicked the AI Assistant credit balance button to open or close the balance dropdown.";
1002
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1003
+ } & import("./define").TelemetryEventInput & {
1004
+ readonly getValidationError: (properties: unknown) => string | null;
1005
+ };
1006
+ readonly FREE_NUDGE_EXPOSED: {
1007
+ readonly name: "Instance AI free nudge exposed";
1008
+ readonly description: "An eligible user reached the Instance AI empty state for the free-use nudge experiment, including the control variant.";
1009
+ readonly properties: import("zod/v4").ZodObject<{
1010
+ variant: import("zod/v4").ZodEnum<{
1011
+ control: "control";
1012
+ "variant-1": "variant-1";
1013
+ "variant-2": "variant-2";
1014
+ }>;
1015
+ '$feature/105_instance_ai_free_nudge': import("zod/v4").ZodEnum<{
1016
+ control: "control";
1017
+ "variant-1": "variant-1";
1018
+ "variant-2": "variant-2";
1019
+ }>;
1020
+ }, import("zod/v4/core").$strip>;
1021
+ } & import("./define").TelemetryEventInput & {
1022
+ readonly getValidationError: (properties: unknown) => string | null;
1023
+ };
1024
+ readonly FREE_NUDGE_DISMISSED: {
1025
+ readonly name: "Instance AI free nudge dismissed";
1026
+ readonly description: "The user dismissed a visible Instance AI free-use nudge.";
1027
+ readonly properties: import("zod/v4").ZodObject<{
1028
+ variant: import("zod/v4").ZodEnum<{
1029
+ "variant-1": "variant-1";
1030
+ "variant-2": "variant-2";
1031
+ }>;
1032
+ '$feature/105_instance_ai_free_nudge': import("zod/v4").ZodEnum<{
1033
+ "variant-1": "variant-1";
1034
+ "variant-2": "variant-2";
1035
+ }>;
1036
+ }, import("zod/v4/core").$strip>;
1037
+ } & import("./define").TelemetryEventInput & {
1038
+ readonly getValidationError: (properties: unknown) => string | null;
1039
+ };
1040
+ readonly USER_CLICKED_AI_ASSISTANT_INPUT_PLUS_BUTTON: {
1041
+ readonly name: "User clicked AI Assistant input plus button";
1042
+ readonly description: "The user clicked the plus button in the AI Assistant input.";
1043
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1044
+ } & import("./define").TelemetryEventInput & {
1045
+ readonly getValidationError: (properties: unknown) => string | null;
1046
+ };
1047
+ readonly TOOLS_LIST_OPENED: {
1048
+ readonly name: "Instance AI tools list opened";
1049
+ readonly description: "The user opened the AI Assistant tools connection modal.";
1050
+ readonly properties: import("zod/v4").ZodObject<{
1051
+ source: import("zod/v4").ZodEnum<{
1052
+ input_menu: "input_menu";
1053
+ mcp_connect_card: "mcp_connect_card";
1054
+ }>;
1055
+ }, import("zod/v4/core").$strip>;
1056
+ } & import("./define").TelemetryEventInput & {
1057
+ readonly getValidationError: (properties: unknown) => string | null;
1058
+ };
1059
+ readonly MCP_SETTINGS_OPENED: {
1060
+ readonly name: "Instance AI mcp settings opened";
1061
+ readonly description: "The user opened settings for an MCP connection in the AI Assistant.";
1062
+ readonly properties: import("zod/v4").ZodObject<{
1063
+ server_slug: import("zod/v4").ZodString;
1064
+ source: import("zod/v4").ZodEnum<{
1065
+ input_menu: "input_menu";
1066
+ mcp_connect_card: "mcp_connect_card";
1067
+ }>;
1068
+ }, import("zod/v4/core").$strip>;
1069
+ } & import("./define").TelemetryEventInput & {
1070
+ readonly getValidationError: (properties: unknown) => string | null;
1071
+ };
1072
+ readonly MCP_FIRST_CREDENTIAL_CONNECTION_STARTED: {
1073
+ readonly name: "Instance AI mcp first credential connection start";
1074
+ readonly description: "The user started connecting the first credential for an MCP server.";
1075
+ readonly properties: import("zod/v4").ZodObject<{
1076
+ server_slug: import("zod/v4").ZodString;
1077
+ }, import("zod/v4/core").$strip>;
1078
+ } & import("./define").TelemetryEventInput & {
1079
+ readonly getValidationError: (properties: unknown) => string | null;
1080
+ };
1081
+ readonly MCP_CREDENTIAL_DROPDOWN_OPENED: {
1082
+ readonly name: "Instance AI mcp credential dropdown opened";
1083
+ readonly description: "The user opened the credential dropdown for an MCP server.";
1084
+ readonly properties: import("zod/v4").ZodObject<{
1085
+ server_slug: import("zod/v4").ZodString;
1086
+ }, import("zod/v4/core").$strip>;
1087
+ } & import("./define").TelemetryEventInput & {
1088
+ readonly getValidationError: (properties: unknown) => string | null;
1089
+ };
1090
+ readonly MCP_EXISTING_CREDENTIAL_SELECTED: {
1091
+ readonly name: "Instance AI mcp existing credential selected";
1092
+ readonly description: "The user selected an existing credential for an MCP server.";
1093
+ readonly properties: import("zod/v4").ZodObject<{
1094
+ server_slug: import("zod/v4").ZodString;
1095
+ }, import("zod/v4/core").$strip>;
1096
+ } & import("./define").TelemetryEventInput & {
1097
+ readonly getValidationError: (properties: unknown) => string | null;
1098
+ };
1099
+ readonly MCP_NEW_CREDENTIAL_CONNECTION_STARTED: {
1100
+ readonly name: "Instance AI mcp new credential connection start";
1101
+ readonly description: "The user started connecting a new credential for an MCP server.";
1102
+ readonly properties: import("zod/v4").ZodObject<{
1103
+ server_slug: import("zod/v4").ZodString;
1104
+ }, import("zod/v4/core").$strip>;
1105
+ } & import("./define").TelemetryEventInput & {
1106
+ readonly getValidationError: (properties: unknown) => string | null;
1107
+ };
1108
+ readonly MCP_TOOL_FILTER_SETTINGS_UPDATED: {
1109
+ readonly name: "Instance AI mcp tool filter settings updated";
1110
+ readonly description: "The user updated which tools are enabled for an MCP server.";
1111
+ readonly properties: import("zod/v4").ZodObject<{
1112
+ server_slug: import("zod/v4").ZodString;
1113
+ inclusion_mode: import("zod/v4").ZodEnum<{
1114
+ all: "all";
1115
+ except: "except";
1116
+ selected: "selected";
1117
+ }>;
1118
+ }, import("zod/v4/core").$strip>;
1119
+ } & import("./define").TelemetryEventInput & {
1120
+ readonly getValidationError: (properties: unknown) => string | null;
1121
+ };
1122
+ readonly BROWSER_USE_MODAL_OPENED: {
1123
+ readonly name: "Instance AI Connect Browser Use modal opened";
1124
+ readonly description: "The user opened the Browser Use connection interface.";
1125
+ readonly properties: import("zod/v4").ZodObject<{
1126
+ browser_supported: import("zod/v4").ZodBoolean;
1127
+ source: import("zod/v4").ZodEnum<{
1128
+ credential_setup: "credential_setup";
1129
+ input_menu: "input_menu";
1130
+ tools_modal: "tools_modal";
1131
+ }>;
1132
+ }, import("zod/v4/core").$strip>;
1133
+ } & import("./define").TelemetryEventInput & {
1134
+ readonly getValidationError: (properties: unknown) => string | null;
1135
+ };
1136
+ readonly BROWSER_USE_INSTALL_EXTENSION_CLICKED: {
1137
+ readonly name: "Instance AI Install Chrome Browser Extension button clicked";
1138
+ readonly description: "The user clicked the button to install the Browser Use Chrome extension.";
1139
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1140
+ } & import("./define").TelemetryEventInput & {
1141
+ readonly getValidationError: (properties: unknown) => string | null;
1142
+ };
1143
+ readonly BROWSER_USE_OPEN_EXTENSION_CLICKED: {
1144
+ readonly name: "Instance AI Open Browser Use Extension button clicked";
1145
+ readonly description: "The user clicked the button to open the Browser Use extension.";
1146
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1147
+ } & import("./define").TelemetryEventInput & {
1148
+ readonly getValidationError: (properties: unknown) => string | null;
1149
+ };
1150
+ readonly BROWSER_USE_DIRECT_CONNECT_REQUESTED: {
1151
+ readonly name: "Instance AI Browser Use direct connect requested";
1152
+ readonly description: "The AI Assistant requested a direct connection through the Browser Use extension.";
1153
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1154
+ } & import("./define").TelemetryEventInput & {
1155
+ readonly getValidationError: (properties: unknown) => string | null;
1156
+ };
1157
+ readonly COMPUTER_USE_MODAL_OPENED: {
1158
+ readonly name: "User opened computer use connection modal";
1159
+ readonly description: "The user opened the Computer Use connection interface.";
1160
+ readonly properties: import("zod/v4").ZodObject<{
1161
+ is_connected: import("zod/v4").ZodBoolean;
1162
+ source: import("zod/v4").ZodEnum<{
1163
+ input_menu: "input_menu";
1164
+ tools_modal: "tools_modal";
1165
+ }>;
1166
+ }, import("zod/v4/core").$strip>;
1167
+ } & import("./define").TelemetryEventInput & {
1168
+ readonly getValidationError: (properties: unknown) => string | null;
1169
+ };
1170
+ readonly COMPUTER_USE_CONNECTION_COMMAND_COPIED: {
1171
+ readonly name: "User copied computer use connection command";
1172
+ readonly description: "The user copied the Computer Use connection command.";
1173
+ readonly properties: import("zod/v4").ZodObject<{
1174
+ os: import("zod/v4").ZodEnum<{
1175
+ linux: "linux";
1176
+ mac: "mac";
1177
+ windows: "windows";
1178
+ }>;
1179
+ }, import("zod/v4/core").$strip>;
1180
+ } & import("./define").TelemetryEventInput & {
1181
+ readonly getValidationError: (properties: unknown) => string | null;
1182
+ };
999
1183
  readonly BUILDER_SPECCED_TEMPLATED_CRED: {
1000
1184
  readonly name: "Builder specced templated cred";
1001
1185
  readonly description: "The Instance AI workflow builder composed a Simplified Custom Auth recipe (credentialHints) and suspended to show its setup card. Captures the recipe fields so template and link quality are observable in production — one event per recipe in the suspension. Contains no secrets by construction: recipes are agent-authored before any user input.";
@@ -1154,4 +1338,170 @@ export declare const TELEMETRY_EVENT: {
1154
1338
  readonly getValidationError: (properties: unknown) => string | null;
1155
1339
  };
1156
1340
  };
1341
+ MCP: {
1342
+ readonly USER_GAVE_MCP_ACCESS_TO_WORKFLOW: {
1343
+ readonly name: "User gave MCP access to workflow";
1344
+ readonly description: "A workflow was exposed over MCP.";
1345
+ readonly properties: import("zod/v4").ZodObject<{
1346
+ workflow_id: import("zod/v4").ZodString;
1347
+ }, import("zod/v4/core").$strip>;
1348
+ } & import("./define").TelemetryEventInput & {
1349
+ readonly getValidationError: (properties: unknown) => string | null;
1350
+ };
1351
+ readonly USER_TOGGLED_MCP_ACCESS: {
1352
+ readonly name: "User toggled MCP access";
1353
+ readonly description: "An admin turned instance-level MCP access on or off. Reports the resulting state.";
1354
+ readonly properties: import("zod/v4").ZodObject<{
1355
+ state: import("zod/v4").ZodBoolean;
1356
+ }, import("zod/v4/core").$strip>;
1357
+ } & import("./define").TelemetryEventInput & {
1358
+ readonly getValidationError: (properties: unknown) => string | null;
1359
+ };
1360
+ readonly USER_CLICKED_CONNECT_CLIENT: {
1361
+ readonly name: "User clicked connect MCP client";
1362
+ readonly description: "A user opened the connect-client dialog. Heads the client setup funnel: sessions carrying this event without a follow-up copy or token fetch are the ones abandoning the one-click setup.";
1363
+ readonly properties: import("zod/v4").ZodObject<{
1364
+ source: import("zod/v4").ZodEnum<{
1365
+ settings: "settings";
1366
+ }>;
1367
+ }, import("zod/v4/core").$strip>;
1368
+ } & import("./define").TelemetryEventInput & {
1369
+ readonly getValidationError: (properties: unknown) => string | null;
1370
+ };
1371
+ readonly USER_VIEWED_ALL_MCP_CLIENTS: {
1372
+ readonly name: "User viewed all MCP clients";
1373
+ readonly description: "An admin switched the connected-clients page from their own consents to the whole instance's. Only the switch is reported, so landing on the page emits nothing.";
1374
+ readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
1375
+ } & import("./define").TelemetryEventInput & {
1376
+ readonly getValidationError: (properties: unknown) => string | null;
1377
+ };
1378
+ readonly USER_REVOKED_MCP_CLIENT_ACCESS: {
1379
+ readonly name: "User revoked MCP client access";
1380
+ readonly description: "A connected client's MCP access was revoked from the connected-clients page. Fires once the revoke succeeds, so opening the confirmation dialog and cancelling emits nothing.";
1381
+ readonly properties: import("zod/v4").ZodObject<{
1382
+ client_id: import("zod/v4").ZodString;
1383
+ client_brand: import("zod/v4").ZodNullable<import("zod/v4").ZodEnum<{
1384
+ claude: "claude";
1385
+ cursor: "cursor";
1386
+ openai: "openai";
1387
+ vscode: "vscode";
1388
+ }>>;
1389
+ client_type: import("zod/v4").ZodNullable<import("zod/v4").ZodEnum<{
1390
+ assistant: "assistant";
1391
+ cli: "cli";
1392
+ editor: "editor";
1393
+ ide: "ide";
1394
+ }>>;
1395
+ revoked_for_other: import("zod/v4").ZodBoolean;
1396
+ }, import("zod/v4/core").$strip>;
1397
+ } & import("./define").TelemetryEventInput & {
1398
+ readonly getValidationError: (properties: unknown) => string | null;
1399
+ };
1400
+ readonly AUTO_EXPOSE_NEW_WORKFLOWS_TOGGLED: {
1401
+ readonly name: "User toggled auto-expose new workflows to MCP";
1402
+ readonly description: "An admin turned the \"Auto-expose new workflows\" MCP setting on or off. Reports the resulting state so enabling and disabling are distinguishable.";
1403
+ readonly properties: import("zod/v4").ZodObject<{
1404
+ enabled: import("zod/v4").ZodBoolean;
1405
+ source: import("zod/v4").ZodEnum<{
1406
+ expose_all: "expose_all";
1407
+ settings: "settings";
1408
+ }>;
1409
+ }, import("zod/v4/core").$strip>;
1410
+ } & import("./define").TelemetryEventInput & {
1411
+ readonly getValidationError: (properties: unknown) => string | null;
1412
+ };
1413
+ };
1414
+ WORKFLOW: {
1415
+ readonly NODE_IDS_HEALED: {
1416
+ readonly name: "Workflow node ids healed";
1417
+ readonly description: "A published version about to be activated carried duplicate or missing node ids, so a corrected system-authored version was published in its place. `superseded` means the corrected version lost against a concurrent publish or unpublish and was discarded.";
1418
+ readonly properties: import("zod/v4").ZodObject<{
1419
+ workflow_id: import("zod/v4").ZodString;
1420
+ filled_count: import("zod/v4").ZodNumber;
1421
+ reassigned_count: import("zod/v4").ZodNumber;
1422
+ dropped_count: import("zod/v4").ZodNumber;
1423
+ superseded: import("zod/v4").ZodBoolean;
1424
+ }, import("zod/v4/core").$strip>;
1425
+ } & import("./define").TelemetryEventInput & {
1426
+ readonly getValidationError: (properties: unknown) => string | null;
1427
+ };
1428
+ };
1429
+ WORKFLOW_REVIEWS: {
1430
+ readonly USER_REQUESTED_WORKFLOW_REVIEW: {
1431
+ readonly name: "User requested workflow review";
1432
+ readonly description: "A workflow was submitted for review, opening a review request. Fires once per opened review, not on a later re-pin.";
1433
+ readonly properties: import("zod/v4").ZodObject<{
1434
+ user_id: import("zod/v4").ZodString;
1435
+ workflow_review_request_id: import("zod/v4").ZodString;
1436
+ project_id: import("zod/v4").ZodString;
1437
+ workflow_id: import("zod/v4").ZodString;
1438
+ workflow_version_id: import("zod/v4").ZodString;
1439
+ reviewer_count: import("zod/v4").ZodNumber;
1440
+ }, import("zod/v4/core").$strip>;
1441
+ } & import("./define").TelemetryEventInput & {
1442
+ readonly getValidationError: (properties: unknown) => string | null;
1443
+ };
1444
+ readonly USER_UPDATED_WORKFLOW_VERSION_UNDER_REVIEW: {
1445
+ readonly name: "User updated workflow version under review";
1446
+ readonly description: "An open review was re-pinned to another version of the workflow it covers. Fires only on a real re-pin, not on a rename or a description edit.";
1447
+ readonly properties: import("zod/v4").ZodObject<{
1448
+ user_id: import("zod/v4").ZodString;
1449
+ workflow_review_request_id: import("zod/v4").ZodString;
1450
+ workflow_id: import("zod/v4").ZodString;
1451
+ workflow_version_id: import("zod/v4").ZodString;
1452
+ }, import("zod/v4/core").$strip>;
1453
+ } & import("./define").TelemetryEventInput & {
1454
+ readonly getValidationError: (properties: unknown) => string | null;
1455
+ };
1456
+ readonly USER_DECIDED_WORKFLOW_REVIEW: {
1457
+ readonly name: "User decided workflow review";
1458
+ readonly description: "A user approved a review or requested changes on it. Fires once per decision, so a review can appear several times.";
1459
+ readonly properties: import("zod/v4").ZodObject<{
1460
+ user_id: import("zod/v4").ZodString;
1461
+ workflow_review_request_id: import("zod/v4").ZodString;
1462
+ workflow_id: import("zod/v4").ZodString;
1463
+ workflow_version_id: import("zod/v4").ZodNullable<import("zod/v4").ZodString>;
1464
+ decision: import("zod/v4").ZodEnum<{
1465
+ approved: "approved";
1466
+ changes_requested: "changes_requested";
1467
+ }>;
1468
+ decided_via: import("zod/v4").ZodEnum<{
1469
+ "admin-override": "admin-override";
1470
+ "assigned-reviewer": "assigned-reviewer";
1471
+ }>;
1472
+ review_created_at: import("zod/v4").ZodString;
1473
+ }, import("zod/v4/core").$strip>;
1474
+ } & import("./define").TelemetryEventInput & {
1475
+ readonly getValidationError: (properties: unknown) => string | null;
1476
+ };
1477
+ readonly WORKFLOW_REVIEW_CLOSED: {
1478
+ readonly name: "Workflow review closed";
1479
+ readonly description: "An open review was closed without a decision because no reviewable workflow was left on it. No user performs it.";
1480
+ readonly properties: import("zod/v4").ZodObject<{
1481
+ workflow_review_request_id: import("zod/v4").ZodString;
1482
+ cause_trigger: import("zod/v4").ZodEnum<{
1483
+ unknown: "unknown";
1484
+ "workflow-archived": "workflow-archived";
1485
+ "workflow-deleted": "workflow-deleted";
1486
+ "workflow-moved": "workflow-moved";
1487
+ }>;
1488
+ cause_actor_kind: import("zod/v4").ZodEnum<{
1489
+ system: "system";
1490
+ user: "user";
1491
+ }>;
1492
+ }, import("zod/v4/core").$strip>;
1493
+ } & import("./define").TelemetryEventInput & {
1494
+ readonly getValidationError: (properties: unknown) => string | null;
1495
+ };
1496
+ readonly USER_COMMENTED_ON_WORKFLOW_REVIEW: {
1497
+ readonly name: "User commented on workflow review";
1498
+ readonly description: "A comment was posted on an open review.";
1499
+ readonly properties: import("zod/v4").ZodObject<{
1500
+ user_id: import("zod/v4").ZodString;
1501
+ workflow_review_request_id: import("zod/v4").ZodString;
1502
+ }, import("zod/v4/core").$strip>;
1503
+ } & import("./define").TelemetryEventInput & {
1504
+ readonly getValidationError: (properties: unknown) => string | null;
1505
+ };
1506
+ };
1157
1507
  };
@@ -5,12 +5,18 @@ const agents_1 = require("./events/agents");
5
5
  const credentials_1 = require("./events/credentials");
6
6
  const instance_1 = require("./events/instance");
7
7
  const instance_ai_1 = require("./events/instance-ai");
8
+ const mcp_1 = require("./events/mcp");
8
9
  const platform_1 = require("./events/platform");
10
+ const workflow_1 = require("./events/workflow");
11
+ const workflow_reviews_1 = require("./events/workflow-reviews");
9
12
  exports.TELEMETRY_EVENT = {
10
13
  PLATFORM: platform_1.PLATFORM_TELEMETRY,
11
14
  AGENTS: agents_1.AGENTS_TELEMETRY,
12
15
  CREDENTIALS: credentials_1.CREDENTIALS_TELEMETRY,
13
16
  INSTANCE: instance_1.INSTANCE_TELEMETRY,
14
17
  INSTANCE_AI: instance_ai_1.INSTANCE_AI_TELEMETRY,
18
+ MCP: mcp_1.MCP_TELEMETRY,
19
+ WORKFLOW: workflow_1.WORKFLOW_TELEMETRY,
20
+ WORKFLOW_REVIEWS: workflow_reviews_1.WORKFLOW_REVIEWS_TELEMETRY,
15
21
  };
16
22
  //# sourceMappingURL=telemetry-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-events.js","sourceRoot":"","sources":["../src/telemetry-events.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AACnD,sDAA6D;AAC7D,gDAAuD;AACvD,sDAA6D;AAC7D,gDAAuD;AAE1C,QAAA,eAAe,GAAG;IAC9B,QAAQ,EAAE,6BAAkB;IAC5B,MAAM,EAAE,yBAAgB;IACxB,WAAW,EAAE,mCAAqB;IAClC,QAAQ,EAAE,6BAAkB;IAC5B,WAAW,EAAE,mCAAqB;CACD,CAAC"}
1
+ {"version":3,"file":"telemetry-events.js","sourceRoot":"","sources":["../src/telemetry-events.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AACnD,sDAA6D;AAC7D,gDAAuD;AACvD,sDAA6D;AAC7D,sCAA6C;AAC7C,gDAAuD;AACvD,gDAAuD;AACvD,gEAAuE;AAE1D,QAAA,eAAe,GAAG;IAC9B,QAAQ,EAAE,6BAAkB;IAC5B,MAAM,EAAE,yBAAgB;IACxB,WAAW,EAAE,mCAAqB;IAClC,QAAQ,EAAE,6BAAkB;IAC5B,WAAW,EAAE,mCAAqB;IAClC,GAAG,EAAE,mBAAa;IAClB,QAAQ,EAAE,6BAAkB;IAC5B,gBAAgB,EAAE,6CAA0B;CACX,CAAC"}