@n8n/telemetry 1.6.1 → 1.8.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/dist/build.tsbuildinfo +1 -1
- package/dist/events/agents.d.ts +3 -1
- package/dist/events/agents.js +6 -1
- package/dist/events/agents.js.map +1 -1
- package/dist/events/context.d.ts +52 -0
- package/dist/events/context.js +49 -0
- package/dist/events/context.js.map +1 -0
- package/dist/events/instance-ai.d.ts +69 -12
- package/dist/events/instance-ai.js +57 -12
- package/dist/events/instance-ai.js.map +1 -1
- package/dist/events/mcp.d.ts +75 -0
- package/dist/events/mcp.js +38 -0
- package/dist/events/mcp.js.map +1 -1
- package/dist/events/node-type-policies.d.ts +93 -0
- package/dist/events/node-type-policies.js +94 -0
- package/dist/events/node-type-policies.js.map +1 -0
- package/dist/events/workflow.d.ts +11 -0
- package/dist/events/workflow.js +9 -0
- package/dist/events/workflow.js.map +1 -1
- package/dist/telemetry-events.d.ts +301 -13
- package/dist/telemetry-events.js +4 -0
- package/dist/telemetry-events.js.map +1 -1
- package/package.json +7 -7
|
@@ -80,7 +80,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
80
80
|
};
|
|
81
81
|
readonly AGENT_SESSION_METRICS: {
|
|
82
82
|
readonly name: "Agent session metrics";
|
|
83
|
-
readonly description: "Six-hourly pulse of agent session and turn metrics, bucketed by agent, run type, turn status and configuration. Two token numbers exist across the agent events and they measure different things: token_count_sum here covers only the recorded turns, from the same usage as cost_sum so the two reconcile, while token_count on \"Agent execution count\" additionally covers LLM calls belonging to no turn (title generation, observational/episodic memory, embeddings) and so runs higher.";
|
|
83
|
+
readonly description: "Six-hourly pulse of agent session and turn metrics, bucketed by agent, optional user, run type, turn status and configuration. Two token numbers exist across the agent events and they measure different things: token_count_sum here covers only the recorded turns, from the same usage as cost_sum so the two reconcile, while token_count on \"Agent execution count\" additionally covers LLM calls belonging to no turn (title generation, observational/episodic memory, embeddings) and so runs higher.";
|
|
84
84
|
readonly properties: import("zod/v4").ZodObject<{
|
|
85
85
|
model: import("zod/v4").ZodNullable<import("zod/v4").ZodString>;
|
|
86
86
|
channels: import("zod/v4").ZodArray<import("zod/v4").ZodString>;
|
|
@@ -96,6 +96,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
96
96
|
}>;
|
|
97
97
|
event_version: import("zod/v4").ZodLiteral<"1">;
|
|
98
98
|
agent_id: import("zod/v4").ZodString;
|
|
99
|
+
user_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
99
100
|
agent_type: import("zod/v4").ZodOptional<import("zod/v4").ZodLiteral<"inline">>;
|
|
100
101
|
run_type: import("zod/v4").ZodEnum<{
|
|
101
102
|
production: "production";
|
|
@@ -702,6 +703,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
702
703
|
dropdown: "dropdown";
|
|
703
704
|
}>;
|
|
704
705
|
agent_id: import("zod/v4").ZodString;
|
|
706
|
+
manual: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
705
707
|
session_id: import("zod/v4").ZodString;
|
|
706
708
|
}, import("zod/v4/core").$strip>;
|
|
707
709
|
} & import("./define").TelemetryEventInput & {
|
|
@@ -891,6 +893,57 @@ export declare const TELEMETRY_EVENT: {
|
|
|
891
893
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
892
894
|
};
|
|
893
895
|
};
|
|
896
|
+
CONTEXT: {
|
|
897
|
+
readonly USER_CREATED_PREFERENCE: {
|
|
898
|
+
readonly name: "User created preference";
|
|
899
|
+
readonly description: "A user saved a new preference from the Context settings area. Fires once the save succeeds, so opening the modal and cancelling reports nothing.";
|
|
900
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
901
|
+
scope_type: import("zod/v4").ZodEnum<{
|
|
902
|
+
instance: "instance";
|
|
903
|
+
project: "project";
|
|
904
|
+
user: "user";
|
|
905
|
+
}>;
|
|
906
|
+
text_length: import("zod/v4").ZodNumber;
|
|
907
|
+
project_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
908
|
+
}, import("zod/v4/core").$strip>;
|
|
909
|
+
} & import("./define").TelemetryEventInput & {
|
|
910
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
911
|
+
};
|
|
912
|
+
readonly USER_UPDATED_PREFERENCE: {
|
|
913
|
+
readonly name: "User updated preference";
|
|
914
|
+
readonly description: "A user saved an edit to an existing preference. Fires once the save succeeds. Reports the resulting scope, not the prior one; `scope_changed` tells them apart.";
|
|
915
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
916
|
+
scope_type: import("zod/v4").ZodEnum<{
|
|
917
|
+
instance: "instance";
|
|
918
|
+
project: "project";
|
|
919
|
+
user: "user";
|
|
920
|
+
}>;
|
|
921
|
+
text_length: import("zod/v4").ZodNumber;
|
|
922
|
+
scope_changed: import("zod/v4").ZodBoolean;
|
|
923
|
+
project_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
924
|
+
}, import("zod/v4/core").$strip>;
|
|
925
|
+
} & import("./define").TelemetryEventInput & {
|
|
926
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
927
|
+
};
|
|
928
|
+
readonly USER_DELETED_PREFERENCES: {
|
|
929
|
+
readonly name: "User deleted preferences";
|
|
930
|
+
readonly description: "A user deleted one or more preferences. One event covers a single row action and a bulk delete; `source` tells them apart and `count` carries how many went. Fires after the delete succeeds and the confirmation was accepted.";
|
|
931
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
932
|
+
count: import("zod/v4").ZodNumber;
|
|
933
|
+
source: import("zod/v4").ZodEnum<{
|
|
934
|
+
bulk: "bulk";
|
|
935
|
+
row: "row";
|
|
936
|
+
}>;
|
|
937
|
+
scope_types: import("zod/v4").ZodArray<import("zod/v4").ZodEnum<{
|
|
938
|
+
instance: "instance";
|
|
939
|
+
project: "project";
|
|
940
|
+
user: "user";
|
|
941
|
+
}>>;
|
|
942
|
+
}, import("zod/v4/core").$strip>;
|
|
943
|
+
} & import("./define").TelemetryEventInput & {
|
|
944
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
945
|
+
};
|
|
946
|
+
};
|
|
894
947
|
INSTANCE: {
|
|
895
948
|
readonly INSTANCE_STARTED: {
|
|
896
949
|
readonly name: "Instance started";
|
|
@@ -998,7 +1051,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
998
1051
|
INSTANCE_AI: {
|
|
999
1052
|
readonly USER_CLICKED_AI_CREDIT_BALANCE: {
|
|
1000
1053
|
readonly name: "User clicked AI credit balance";
|
|
1001
|
-
readonly description: "The user clicked the
|
|
1054
|
+
readonly description: "The user clicked the n8n Assistant credit balance button to open or close the balance dropdown.";
|
|
1002
1055
|
readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
1003
1056
|
} & import("./define").TelemetryEventInput & {
|
|
1004
1057
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
@@ -1039,7 +1092,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1039
1092
|
};
|
|
1040
1093
|
readonly OPEN_BY_DEFAULT_NOTIFICATION_SHOWN: {
|
|
1041
1094
|
readonly name: "Open in assistant notification shown";
|
|
1042
|
-
readonly description: "The open-by-default experiment notification rendered after a workflow list card auto-opened in the
|
|
1095
|
+
readonly description: "The open-by-default experiment notification rendered after a workflow list card auto-opened in the n8n Assistant.";
|
|
1043
1096
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1044
1097
|
workflow_id: import("zod/v4").ZodNullable<import("zod/v4").ZodString>;
|
|
1045
1098
|
variant: import("zod/v4").ZodEnum<{
|
|
@@ -1078,7 +1131,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1078
1131
|
};
|
|
1079
1132
|
readonly DEFAULT_EDITOR_PREFERENCE_CHANGED: {
|
|
1080
1133
|
readonly name: "Default editor preference changed";
|
|
1081
|
-
readonly description: "The user saved the default-editor preference on the
|
|
1134
|
+
readonly description: "The user saved the default-editor preference on the n8n Assistant settings page.";
|
|
1082
1135
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1083
1136
|
value: import("zod/v4").ZodEnum<{
|
|
1084
1137
|
assistant: "assistant";
|
|
@@ -1116,14 +1169,14 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1116
1169
|
};
|
|
1117
1170
|
readonly USER_CLICKED_AI_ASSISTANT_INPUT_PLUS_BUTTON: {
|
|
1118
1171
|
readonly name: "User clicked AI Assistant input plus button";
|
|
1119
|
-
readonly description: "The user clicked the plus button in the
|
|
1172
|
+
readonly description: "The user clicked the plus button in the n8n Assistant input.";
|
|
1120
1173
|
readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
1121
1174
|
} & import("./define").TelemetryEventInput & {
|
|
1122
1175
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
1123
1176
|
};
|
|
1124
1177
|
readonly TOOLS_LIST_OPENED: {
|
|
1125
1178
|
readonly name: "Instance AI tools list opened";
|
|
1126
|
-
readonly description: "The user opened the
|
|
1179
|
+
readonly description: "The user opened the n8n Assistant tools connection modal.";
|
|
1127
1180
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1128
1181
|
source: import("zod/v4").ZodEnum<{
|
|
1129
1182
|
input_menu: "input_menu";
|
|
@@ -1135,7 +1188,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1135
1188
|
};
|
|
1136
1189
|
readonly MCP_SETTINGS_OPENED: {
|
|
1137
1190
|
readonly name: "Instance AI mcp settings opened";
|
|
1138
|
-
readonly description: "The user opened settings for an MCP connection in the
|
|
1191
|
+
readonly description: "The user opened settings for an MCP connection in the n8n Assistant.";
|
|
1139
1192
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1140
1193
|
server_slug: import("zod/v4").ZodString;
|
|
1141
1194
|
source: import("zod/v4").ZodEnum<{
|
|
@@ -1226,7 +1279,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1226
1279
|
};
|
|
1227
1280
|
readonly BROWSER_USE_DIRECT_CONNECT_REQUESTED: {
|
|
1228
1281
|
readonly name: "Instance AI Browser Use direct connect requested";
|
|
1229
|
-
readonly description: "The
|
|
1282
|
+
readonly description: "The n8n Assistant requested a direct connection through the Browser Use extension.";
|
|
1230
1283
|
readonly properties: import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
1231
1284
|
} & import("./define").TelemetryEventInput & {
|
|
1232
1285
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
@@ -1275,7 +1328,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1275
1328
|
};
|
|
1276
1329
|
readonly USER_VIEWED_AI_ASSISTANT_SETUP_PAGE: {
|
|
1277
1330
|
readonly name: "User viewed AI Assistant setup page";
|
|
1278
|
-
readonly description: "The user landed on a self-hosted
|
|
1331
|
+
readonly description: "The user landed on a self-hosted n8n Assistant setup surface: the onboarding takeover on /assistant, or the settings page on /settings/assistant. Carries the configuration snapshot at view time, so joined with \"AI Assistant setup completed\" it measures setup drop-off. Not emitted on cloud or proxy deployments, where setup is managed.";
|
|
1279
1332
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1280
1333
|
model_source: import("zod/v4").ZodEnum<{
|
|
1281
1334
|
env: "env";
|
|
@@ -1313,7 +1366,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1313
1366
|
};
|
|
1314
1367
|
readonly USER_CONFIGURED_AI_ASSISTANT_MODEL: {
|
|
1315
1368
|
readonly name: "User configured AI Assistant model";
|
|
1316
|
-
readonly description: "An admin saved an
|
|
1369
|
+
readonly description: "An admin saved an n8n Assistant model connection (PUT /instance-ai/settings), covering the first connect, later changes, and same-provider key rotations: first connects are rows where previous_provider is absent. The event marks a saved configuration, not a verified one — the setup wizard verifies before saving, but a direct API save can skip verification. Env-var model config never emits this; it is visible on \"Instance started\" and on the snapshot events instead.";
|
|
1317
1370
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1318
1371
|
provider: import("zod/v4").ZodString;
|
|
1319
1372
|
model: import("zod/v4").ZodString;
|
|
@@ -1325,7 +1378,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1325
1378
|
};
|
|
1326
1379
|
readonly USER_CONFIGURED_AI_ASSISTANT_SANDBOX: {
|
|
1327
1380
|
readonly name: "User configured AI Assistant sandbox";
|
|
1328
|
-
readonly description: "An admin saved an
|
|
1381
|
+
readonly description: "An admin saved an n8n Assistant sandbox connection (PUT /instance-ai/settings), covering the first connect, later changes, and same-provider key rotations: first connects are rows where previous_sandbox_type is absent. Env-var sandbox config never emits this.";
|
|
1329
1382
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1330
1383
|
sandbox_type: import("zod/v4").ZodEnum<{
|
|
1331
1384
|
daytona: "daytona";
|
|
@@ -1341,7 +1394,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1341
1394
|
};
|
|
1342
1395
|
readonly USER_CONFIGURED_AI_ASSISTANT_WEB_SEARCH: {
|
|
1343
1396
|
readonly name: "User configured AI Assistant web search";
|
|
1344
|
-
readonly description: "An admin saved an
|
|
1397
|
+
readonly description: "An admin saved an n8n Assistant web search connection (PUT /instance-ai/settings), covering the first connect, later changes, and same-provider key rotations: first connects are rows where previous_provider is absent. Explicitly disabling web search does not emit this; that decision is visible as web_search_source \"disabled\" on the snapshot events.";
|
|
1345
1398
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1346
1399
|
provider: import("zod/v4").ZodEnum<{
|
|
1347
1400
|
brave: "brave";
|
|
@@ -1382,7 +1435,7 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1382
1435
|
};
|
|
1383
1436
|
readonly AI_ASSISTANT_SETUP_COMPLETED: {
|
|
1384
1437
|
readonly name: "AI Assistant setup completed";
|
|
1385
|
-
readonly description: "A self-hosted instance reached a complete
|
|
1438
|
+
readonly description: "A self-hosted instance reached a complete n8n Assistant setup for the first time: model configured, sandbox configured, and web search decided (configured or explicitly disabled) — the same predicate that unlocks the assistant UI. Fires at most once per instance, guarded by a persisted settings key, regardless of how the last piece was set: emitted from the settings save path, with a boot-time check so an env-var finish is also counted. No \"User\" prefix because the last piece can land via env vars with no acting user.";
|
|
1386
1439
|
readonly properties: import("zod/v4").ZodObject<{
|
|
1387
1440
|
model_source: import("zod/v4").ZodEnum<{
|
|
1388
1441
|
env: "env";
|
|
@@ -1414,8 +1467,140 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1414
1467
|
} & import("./define").TelemetryEventInput & {
|
|
1415
1468
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
1416
1469
|
};
|
|
1470
|
+
readonly USER_ADDED_NODES_TO_CHAT: {
|
|
1471
|
+
readonly name: "User added nodes to chat";
|
|
1472
|
+
readonly description: "The user attached one or more canvas nodes as context to the Instance AI chat. Fires once per add action, after the attachment is built — so node_count reflects the nodes actually attached (unresolved ids dropped, capped at the per-set maximum), not the raw selection.";
|
|
1473
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1474
|
+
source: import("zod/v4").ZodEnum<{
|
|
1475
|
+
context_menu: "context_menu";
|
|
1476
|
+
group_title_bar: "group_title_bar";
|
|
1477
|
+
keyboard: "keyboard";
|
|
1478
|
+
node_toolbar: "node_toolbar";
|
|
1479
|
+
selection_toolbar: "selection_toolbar";
|
|
1480
|
+
}>;
|
|
1481
|
+
node_count: import("zod/v4").ZodNumber;
|
|
1482
|
+
}, import("zod/v4/core").$strip>;
|
|
1483
|
+
} & import("./define").TelemetryEventInput & {
|
|
1484
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1485
|
+
};
|
|
1486
|
+
readonly USER_SENT_CHAT_MESSAGE_WITH_NODES: {
|
|
1487
|
+
readonly name: "User sent chat message with nodes";
|
|
1488
|
+
readonly description: "The user sent an Instance AI chat message that carried node context. Fires only when the submitted message includes at least one node attachment; node_count is the total nodes across every attached set in the message.";
|
|
1489
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1490
|
+
node_count: import("zod/v4").ZodNumber;
|
|
1491
|
+
}, import("zod/v4/core").$strip>;
|
|
1492
|
+
} & import("./define").TelemetryEventInput & {
|
|
1493
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1494
|
+
};
|
|
1495
|
+
readonly BUILDER_LISTED_WORKFLOWS: {
|
|
1496
|
+
readonly name: "Builder listed workflows";
|
|
1497
|
+
readonly description: "Instance AI called workflows(action=\"list\"). Emitted on every list call, in both arms of the folder-exploration rollout, so folder-scoped calls have a denominator. Carries no folder names.";
|
|
1498
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1499
|
+
user_id: import("zod/v4").ZodString;
|
|
1500
|
+
thread_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1501
|
+
folder_exploration_enabled: import("zod/v4").ZodBoolean;
|
|
1502
|
+
folder_scope: import("zod/v4").ZodEnum<{
|
|
1503
|
+
id: "id";
|
|
1504
|
+
none: "none";
|
|
1505
|
+
path: "path";
|
|
1506
|
+
}>;
|
|
1507
|
+
recursive: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
|
|
1508
|
+
folder_resolution: import("zod/v4").ZodOptional<import("zod/v4").ZodEnum<{
|
|
1509
|
+
ambiguous: "ambiguous";
|
|
1510
|
+
not_found: "not_found";
|
|
1511
|
+
resolved: "resolved";
|
|
1512
|
+
scope_too_wide: "scope_too_wide";
|
|
1513
|
+
unsupported: "unsupported";
|
|
1514
|
+
}>>;
|
|
1515
|
+
candidate_count: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
|
|
1516
|
+
scope: import("zod/v4").ZodEnum<{
|
|
1517
|
+
instance: "instance";
|
|
1518
|
+
project: "project";
|
|
1519
|
+
}>;
|
|
1520
|
+
has_query: import("zod/v4").ZodBoolean;
|
|
1521
|
+
result_count: import("zod/v4").ZodNumber;
|
|
1522
|
+
total: import("zod/v4").ZodNumber;
|
|
1523
|
+
}, import("zod/v4/core").$strip>;
|
|
1524
|
+
} & import("./define").TelemetryEventInput & {
|
|
1525
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1526
|
+
};
|
|
1417
1527
|
};
|
|
1418
1528
|
MCP: {
|
|
1529
|
+
readonly MCP_NUDGE_VIEWED: {
|
|
1530
|
+
readonly name: "User viewed MCP nudge";
|
|
1531
|
+
readonly description: "The MCP nudge modal opened after the user exported a workflow as JSON, imported one from a file or URL, copied nodes, or pasted workflow JSON onto the canvas. Fires only when the modal opens, so a trigger that the flag, the two-impression cap, an opt-out, or instance-level MCP access suppresses emits nothing. Each fire consumes one impression.";
|
|
1532
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1533
|
+
surface: import("zod/v4").ZodEnum<{
|
|
1534
|
+
copy: "copy";
|
|
1535
|
+
export: "export";
|
|
1536
|
+
import_file: "import_file";
|
|
1537
|
+
import_url: "import_url";
|
|
1538
|
+
paste: "paste";
|
|
1539
|
+
}>;
|
|
1540
|
+
}, import("zod/v4/core").$strip>;
|
|
1541
|
+
} & import("./define").TelemetryEventInput & {
|
|
1542
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1543
|
+
};
|
|
1544
|
+
readonly MCP_NUDGE_CONNECT_CLICKED: {
|
|
1545
|
+
readonly name: "User clicked connect in MCP nudge";
|
|
1546
|
+
readonly description: "The user clicked \"Connect n8n\" in the MCP nudge. The app navigates to the MCP settings page and abandons the export or import that opened the nudge. Kept separate from the skip and dismiss events so the connect-to-export click ratio stays computable.";
|
|
1547
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1548
|
+
surface: import("zod/v4").ZodEnum<{
|
|
1549
|
+
copy: "copy";
|
|
1550
|
+
export: "export";
|
|
1551
|
+
import_file: "import_file";
|
|
1552
|
+
import_url: "import_url";
|
|
1553
|
+
paste: "paste";
|
|
1554
|
+
}>;
|
|
1555
|
+
}, import("zod/v4/core").$strip>;
|
|
1556
|
+
} & import("./define").TelemetryEventInput & {
|
|
1557
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1558
|
+
};
|
|
1559
|
+
readonly MCP_NUDGE_SKIPPED: {
|
|
1560
|
+
readonly name: "User skipped MCP nudge";
|
|
1561
|
+
readonly description: "The user clicked \"Skip\" in the MCP nudge. The export or import that opened the nudge completes unchanged. Closing with × or Escape is \"User dismissed MCP nudge\" instead.";
|
|
1562
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1563
|
+
surface: import("zod/v4").ZodEnum<{
|
|
1564
|
+
copy: "copy";
|
|
1565
|
+
export: "export";
|
|
1566
|
+
import_file: "import_file";
|
|
1567
|
+
import_url: "import_url";
|
|
1568
|
+
paste: "paste";
|
|
1569
|
+
}>;
|
|
1570
|
+
}, import("zod/v4/core").$strip>;
|
|
1571
|
+
} & import("./define").TelemetryEventInput & {
|
|
1572
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1573
|
+
};
|
|
1574
|
+
readonly MCP_NUDGE_DISMISSED: {
|
|
1575
|
+
readonly name: "User dismissed MCP nudge";
|
|
1576
|
+
readonly description: "The user closed the MCP nudge with × or Escape without choosing an action. The export or import that opened the nudge completes unchanged.";
|
|
1577
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1578
|
+
surface: import("zod/v4").ZodEnum<{
|
|
1579
|
+
copy: "copy";
|
|
1580
|
+
export: "export";
|
|
1581
|
+
import_file: "import_file";
|
|
1582
|
+
import_url: "import_url";
|
|
1583
|
+
paste: "paste";
|
|
1584
|
+
}>;
|
|
1585
|
+
}, import("zod/v4/core").$strip>;
|
|
1586
|
+
} & import("./define").TelemetryEventInput & {
|
|
1587
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1588
|
+
};
|
|
1589
|
+
readonly MCP_NUDGE_OPTED_OUT: {
|
|
1590
|
+
readonly name: "User opted out of MCP nudge";
|
|
1591
|
+
readonly description: "The user checked \"Don't show this again\" in the MCP nudge. Fires when the checkbox is checked, independent of which button later closes the modal. The nudge never shows again for this user.";
|
|
1592
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1593
|
+
surface: import("zod/v4").ZodEnum<{
|
|
1594
|
+
copy: "copy";
|
|
1595
|
+
export: "export";
|
|
1596
|
+
import_file: "import_file";
|
|
1597
|
+
import_url: "import_url";
|
|
1598
|
+
paste: "paste";
|
|
1599
|
+
}>;
|
|
1600
|
+
}, import("zod/v4/core").$strip>;
|
|
1601
|
+
} & import("./define").TelemetryEventInput & {
|
|
1602
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1603
|
+
};
|
|
1419
1604
|
readonly USER_GAVE_MCP_ACCESS_TO_WORKFLOW: {
|
|
1420
1605
|
readonly name: "User gave MCP access to workflow";
|
|
1421
1606
|
readonly description: "A workflow was exposed over MCP.";
|
|
@@ -1488,7 +1673,110 @@ export declare const TELEMETRY_EVENT: {
|
|
|
1488
1673
|
readonly getValidationError: (properties: unknown) => string | null;
|
|
1489
1674
|
};
|
|
1490
1675
|
};
|
|
1676
|
+
NODE_TYPE_POLICIES: {
|
|
1677
|
+
readonly USER_SAVED_NODE_TYPE_POLICY: {
|
|
1678
|
+
readonly name: "User saved node type policy";
|
|
1679
|
+
readonly description: "A node type availability policy was saved for one scope through the composed write that the policy UI uses. One event per save, covering both the scope default action and its rules. Rule-level edits through the advanced document and attachment APIs report separately. The type counts and list report what this scope decides on its own, so at project scope they are the project layer before it composes with the instance policy.";
|
|
1680
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1681
|
+
rule_count: import("zod/v4").ZodNumber;
|
|
1682
|
+
allow_rule_count: import("zod/v4").ZodNumber;
|
|
1683
|
+
deny_rule_count: import("zod/v4").ZodNumber;
|
|
1684
|
+
delegate_rule_count: import("zod/v4").ZodNumber;
|
|
1685
|
+
user_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1686
|
+
source: import("zod/v4").ZodEnum<{
|
|
1687
|
+
environment: "environment";
|
|
1688
|
+
user: "user";
|
|
1689
|
+
}>;
|
|
1690
|
+
scope: import("zod/v4").ZodEnum<{
|
|
1691
|
+
instance: "instance";
|
|
1692
|
+
project: "project";
|
|
1693
|
+
}>;
|
|
1694
|
+
project_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1695
|
+
default_action: import("zod/v4").ZodEnum<{
|
|
1696
|
+
allow: "allow";
|
|
1697
|
+
delegate: "delegate";
|
|
1698
|
+
deny: "deny";
|
|
1699
|
+
}>;
|
|
1700
|
+
previous_default_action: import("zod/v4").ZodNullable<import("zod/v4").ZodEnum<{
|
|
1701
|
+
allow: "allow";
|
|
1702
|
+
delegate: "delegate";
|
|
1703
|
+
deny: "deny";
|
|
1704
|
+
}>>;
|
|
1705
|
+
is_first_write: import("zod/v4").ZodBoolean;
|
|
1706
|
+
name_selector_count: import("zod/v4").ZodNumber;
|
|
1707
|
+
package_selector_count: import("zod/v4").ZodNumber;
|
|
1708
|
+
evaluated_type_count: import("zod/v4").ZodNumber;
|
|
1709
|
+
blocked_type_count: import("zod/v4").ZodNumber;
|
|
1710
|
+
allowed_type_count: import("zod/v4").ZodNumber;
|
|
1711
|
+
delegated_type_count: import("zod/v4").ZodNumber;
|
|
1712
|
+
blocked_types: import("zod/v4").ZodArray<import("zod/v4").ZodString>;
|
|
1713
|
+
allowed_types: import("zod/v4").ZodArray<import("zod/v4").ZodString>;
|
|
1714
|
+
previous_rule_count: import("zod/v4").ZodNullable<import("zod/v4").ZodNumber>;
|
|
1715
|
+
shadow_warning_count: import("zod/v4").ZodNumber;
|
|
1716
|
+
version: import("zod/v4").ZodNumber;
|
|
1717
|
+
}, import("zod/v4/core").$strip>;
|
|
1718
|
+
} & import("./define").TelemetryEventInput & {
|
|
1719
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1720
|
+
};
|
|
1721
|
+
readonly USER_UPDATED_NODE_TYPE_POLICY_DOCUMENT: {
|
|
1722
|
+
readonly name: "User updated node type policy document";
|
|
1723
|
+
readonly description: "A policy document was created, edited, or deleted through the advanced instance-only document API. The composed save that the policy UI uses reports as \"User saved node type policy\" instead. Rule counts describe the document after the operation, so a delete reports 0 and carries the deleted size in previous_rule_count.";
|
|
1724
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1725
|
+
rule_count: import("zod/v4").ZodNumber;
|
|
1726
|
+
allow_rule_count: import("zod/v4").ZodNumber;
|
|
1727
|
+
deny_rule_count: import("zod/v4").ZodNumber;
|
|
1728
|
+
delegate_rule_count: import("zod/v4").ZodNumber;
|
|
1729
|
+
user_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1730
|
+
source: import("zod/v4").ZodEnum<{
|
|
1731
|
+
environment: "environment";
|
|
1732
|
+
user: "user";
|
|
1733
|
+
}>;
|
|
1734
|
+
operation: import("zod/v4").ZodEnum<{
|
|
1735
|
+
created: "created";
|
|
1736
|
+
deleted: "deleted";
|
|
1737
|
+
updated: "updated";
|
|
1738
|
+
}>;
|
|
1739
|
+
policy_id: import("zod/v4").ZodString;
|
|
1740
|
+
previous_rule_count: import("zod/v4").ZodNullable<import("zod/v4").ZodNumber>;
|
|
1741
|
+
}, import("zod/v4/core").$strip>;
|
|
1742
|
+
} & import("./define").TelemetryEventInput & {
|
|
1743
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1744
|
+
};
|
|
1745
|
+
readonly USER_UPDATED_NODE_TYPE_POLICY_ATTACHMENTS: {
|
|
1746
|
+
readonly name: "User updated node type policy attachments";
|
|
1747
|
+
readonly description: "The set of policy documents attached to one scope was replaced through the advanced instance-only attachment API. Reports the resulting set, not the individual add or remove.";
|
|
1748
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1749
|
+
user_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1750
|
+
source: import("zod/v4").ZodEnum<{
|
|
1751
|
+
environment: "environment";
|
|
1752
|
+
user: "user";
|
|
1753
|
+
}>;
|
|
1754
|
+
scope: import("zod/v4").ZodEnum<{
|
|
1755
|
+
instance: "instance";
|
|
1756
|
+
project: "project";
|
|
1757
|
+
}>;
|
|
1758
|
+
project_id: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
1759
|
+
scope_id: import("zod/v4").ZodString;
|
|
1760
|
+
attachment_count: import("zod/v4").ZodNumber;
|
|
1761
|
+
floor_attachment_count: import("zod/v4").ZodNumber;
|
|
1762
|
+
previous_attachment_count: import("zod/v4").ZodNumber;
|
|
1763
|
+
}, import("zod/v4/core").$strip>;
|
|
1764
|
+
} & import("./define").TelemetryEventInput & {
|
|
1765
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1766
|
+
};
|
|
1767
|
+
};
|
|
1491
1768
|
WORKFLOW: {
|
|
1769
|
+
readonly MULTIPLE_NODES_SELECTED: {
|
|
1770
|
+
readonly name: "User selected multiple nodes";
|
|
1771
|
+
readonly description: "The user has two or more nodes selected on the workflow canvas. Fires once the selection settles (debounced), covering all selection paths — rubber-band drag, shift-click, and select-all — so intermediate states during a drag are not reported. Groups are excluded from the count.";
|
|
1772
|
+
readonly properties: import("zod/v4").ZodObject<{
|
|
1773
|
+
workflow_id: import("zod/v4").ZodString;
|
|
1774
|
+
node_count: import("zod/v4").ZodNumber;
|
|
1775
|
+
push_ref: import("zod/v4").ZodString;
|
|
1776
|
+
}, import("zod/v4/core").$strip>;
|
|
1777
|
+
} & import("./define").TelemetryEventInput & {
|
|
1778
|
+
readonly getValidationError: (properties: unknown) => string | null;
|
|
1779
|
+
};
|
|
1492
1780
|
readonly NODE_IDS_HEALED: {
|
|
1493
1781
|
readonly name: "Workflow node ids healed";
|
|
1494
1782
|
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.";
|
package/dist/telemetry-events.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TELEMETRY_EVENT = void 0;
|
|
4
4
|
const agents_1 = require("./events/agents");
|
|
5
|
+
const context_1 = require("./events/context");
|
|
5
6
|
const credentials_1 = require("./events/credentials");
|
|
6
7
|
const instance_1 = require("./events/instance");
|
|
7
8
|
const instance_ai_1 = require("./events/instance-ai");
|
|
8
9
|
const mcp_1 = require("./events/mcp");
|
|
10
|
+
const node_type_policies_1 = require("./events/node-type-policies");
|
|
9
11
|
const platform_1 = require("./events/platform");
|
|
10
12
|
const workflow_1 = require("./events/workflow");
|
|
11
13
|
const workflow_reviews_1 = require("./events/workflow-reviews");
|
|
@@ -13,9 +15,11 @@ exports.TELEMETRY_EVENT = {
|
|
|
13
15
|
PLATFORM: platform_1.PLATFORM_TELEMETRY,
|
|
14
16
|
AGENTS: agents_1.AGENTS_TELEMETRY,
|
|
15
17
|
CREDENTIALS: credentials_1.CREDENTIALS_TELEMETRY,
|
|
18
|
+
CONTEXT: context_1.CONTEXT_TELEMETRY,
|
|
16
19
|
INSTANCE: instance_1.INSTANCE_TELEMETRY,
|
|
17
20
|
INSTANCE_AI: instance_ai_1.INSTANCE_AI_TELEMETRY,
|
|
18
21
|
MCP: mcp_1.MCP_TELEMETRY,
|
|
22
|
+
NODE_TYPE_POLICIES: node_type_policies_1.NODE_TYPE_POLICIES_TELEMETRY,
|
|
19
23
|
WORKFLOW: workflow_1.WORKFLOW_TELEMETRY,
|
|
20
24
|
WORKFLOW_REVIEWS: workflow_reviews_1.WORKFLOW_REVIEWS_TELEMETRY,
|
|
21
25
|
};
|
|
@@ -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,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"}
|
|
1
|
+
{"version":3,"file":"telemetry-events.js","sourceRoot":"","sources":["../src/telemetry-events.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AACnD,8CAAqD;AACrD,sDAA6D;AAC7D,gDAAuD;AACvD,sDAA6D;AAC7D,sCAA6C;AAC7C,oEAA2E;AAC3E,gDAAuD;AACvD,gDAAuD;AACvD,gEAAuE;AAE1D,QAAA,eAAe,GAAG;IAC9B,QAAQ,EAAE,6BAAkB;IAC5B,MAAM,EAAE,yBAAgB;IACxB,WAAW,EAAE,mCAAqB;IAClC,OAAO,EAAE,2BAAiB;IAC1B,QAAQ,EAAE,6BAAkB;IAC5B,WAAW,EAAE,mCAAqB;IAClC,GAAG,EAAE,mBAAa;IAClB,kBAAkB,EAAE,iDAA4B;IAChD,QAAQ,EAAE,6BAAkB;IAC5B,gBAAgB,EAAE,6CAA0B;CACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/telemetry",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
"LICENSE_EE.md"
|
|
11
11
|
],
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"
|
|
14
|
-
"
|
|
13
|
+
"@n8n/utils": "1.48.0",
|
|
14
|
+
"zod": "3.25.76"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
+
"@n8n/eslint-config": "0.0.1",
|
|
18
|
+
"@n8n/typescript-config": "1.12.0",
|
|
19
|
+
"@n8n/vitest-config": "1.22.0",
|
|
17
20
|
"@types/node": "24.10.1",
|
|
18
21
|
"@vitest/coverage-v8": "4.1.9",
|
|
19
22
|
"eslint": "9.29.0",
|
|
20
23
|
"typescript": "7.0.2",
|
|
21
24
|
"vite": "^8.0.2",
|
|
22
|
-
"vitest": "^4.1.9"
|
|
23
|
-
"@n8n/eslint-config": "0.0.1",
|
|
24
|
-
"@n8n/vitest-config": "1.21.0",
|
|
25
|
-
"@n8n/typescript-config": "1.11.0"
|
|
25
|
+
"vitest": "^4.1.9"
|
|
26
26
|
},
|
|
27
27
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
28
28
|
"homepage": "https://n8n.io",
|