@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.
@@ -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 AI Assistant credit balance button to open or close the balance dropdown.";
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 AI Assistant.";
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 AI Assistant settings page.";
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 AI Assistant input.";
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 AI Assistant tools connection modal.";
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 AI Assistant.";
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 AI Assistant requested a direct connection through the Browser Use extension.";
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 AI 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.";
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 AI 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.";
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 AI 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.";
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 AI 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.";
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 AI 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.";
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.";
@@ -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.6.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
- "zod": "3.25.76",
14
- "@n8n/utils": "1.46.1"
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",