@n8n/telemetry 1.9.0 → 1.10.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.
Files changed (40) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/catalog.js +18 -16
  3. package/dist/catalog.js.map +1 -1
  4. package/dist/events/agents.d.ts +90 -0
  5. package/dist/events/agents.js +65 -0
  6. package/dist/events/agents.js.map +1 -1
  7. package/dist/events/context.d.ts +81 -5
  8. package/dist/events/context.js +73 -19
  9. package/dist/events/context.js.map +1 -1
  10. package/dist/events/credentials.d.ts +32 -3
  11. package/dist/events/credentials.js +15 -2
  12. package/dist/events/credentials.js.map +1 -1
  13. package/dist/events/instance-ai.d.ts +307 -1
  14. package/dist/events/instance-ai.js +241 -2
  15. package/dist/events/instance-ai.js.map +1 -1
  16. package/dist/events/mcp.d.ts +1 -0
  17. package/dist/events/mcp.js +1 -1
  18. package/dist/events/mcp.js.map +1 -1
  19. package/dist/events/{node-type-policies.d.ts → type-availability-policies.d.ts} +9 -9
  20. package/dist/events/{node-type-policies.js → type-availability-policies.js} +16 -16
  21. package/dist/events/type-availability-policies.js.map +1 -0
  22. package/dist/events/workflow.d.ts +186 -0
  23. package/dist/events/workflow.js +123 -0
  24. package/dist/events/workflow.js.map +1 -1
  25. package/dist/index.d.ts +3 -2
  26. package/dist/index.js +5 -3
  27. package/dist/index.js.map +1 -1
  28. package/dist/registry-checks.js +3 -2
  29. package/dist/registry-checks.js.map +1 -1
  30. package/dist/schemas.d.ts +5 -0
  31. package/dist/schemas.js +8 -0
  32. package/dist/schemas.js.map +1 -0
  33. package/dist/setup-properties.d.ts +22 -0
  34. package/dist/setup-properties.js +18 -0
  35. package/dist/setup-properties.js.map +1 -0
  36. package/dist/telemetry-events.d.ts +705 -18
  37. package/dist/telemetry-events.js +2 -2
  38. package/dist/telemetry-events.js.map +1 -1
  39. package/package.json +8 -8
  40. package/dist/events/node-type-policies.js.map +0 -1
@@ -1,12 +1,198 @@
1
1
  import { z } from 'zod/v4';
2
2
  export declare const WORKFLOW_TELEMETRY: {
3
+ readonly USER_GROUPED_NODES: {
4
+ readonly name: "User grouped nodes";
5
+ readonly description: "The user created a node group on the workflow canvas. Empty groups report no node ids because their internal anchor is excluded.";
6
+ readonly properties: z.ZodObject<{
7
+ workflow_id: z.ZodString;
8
+ group_id: z.ZodString;
9
+ node_ids: z.ZodArray<z.ZodString>;
10
+ node_count: z.ZodNumber;
11
+ group_title: z.ZodString;
12
+ source: z.ZodEnum<{
13
+ "context-menu": "context-menu";
14
+ "group-header": "group-header";
15
+ "group-toolbar": "group-toolbar";
16
+ "keyboard-shortcut": "keyboard-shortcut";
17
+ "node-creator": "node-creator";
18
+ "sub-workflow-extraction": "sub-workflow-extraction";
19
+ "update-blocked-toast": "update-blocked-toast";
20
+ }>;
21
+ push_ref: z.ZodString;
22
+ is_empty: z.ZodOptional<z.ZodBoolean>;
23
+ node_creator_open_source: z.ZodOptional<z.ZodEnum<{
24
+ add_evaluation_node_button: "add_evaluation_node_button";
25
+ add_input_endpoint: "add_input_endpoint";
26
+ add_node_button: "add_node_button";
27
+ context_menu: "context_menu";
28
+ instance_ai: "instance_ai";
29
+ no_trigger_execution_tooltip: "no_trigger_execution_tooltip";
30
+ node_connection_action: "node_connection_action";
31
+ node_connection_drop: "node_connection_drop";
32
+ node_shortcut: "node_shortcut";
33
+ notice_error_message: "notice_error_message";
34
+ plus_endpoint: "plus_endpoint";
35
+ replace_node_action: "replace_node_action";
36
+ templates_callout: "templates_callout";
37
+ trigger_placeholder_button: "trigger_placeholder_button";
38
+ }>>;
39
+ }, z.core.$strip>;
40
+ } & import("../define").TelemetryEventInput & {
41
+ readonly getValidationError: (properties: unknown) => string | null;
42
+ };
43
+ readonly USER_FILLED_EMPTY_GROUP: {
44
+ readonly name: "User filled empty group";
45
+ readonly description: "The user added the first real node or node batch to a group that contained only its internal empty-group anchor.";
46
+ readonly properties: z.ZodObject<{
47
+ workflow_id: z.ZodString;
48
+ group_id: z.ZodString;
49
+ push_ref: z.ZodString;
50
+ node_count_after: z.ZodNumber;
51
+ connection_count_before_fill: z.ZodNumber;
52
+ }, z.core.$strip>;
53
+ } & import("../define").TelemetryEventInput & {
54
+ readonly getValidationError: (properties: unknown) => string | null;
55
+ };
56
+ readonly USER_DELETED_LAST_NODE_FROM_GROUP: {
57
+ readonly name: "User deleted last node from group";
58
+ readonly description: "The user deleted the last real node from a group and the editor replaced it with an internal empty-group anchor.";
59
+ readonly properties: z.ZodObject<{
60
+ workflow_id: z.ZodString;
61
+ group_id: z.ZodString;
62
+ push_ref: z.ZodString;
63
+ }, z.core.$strip>;
64
+ } & import("../define").TelemetryEventInput & {
65
+ readonly getValidationError: (properties: unknown) => string | null;
66
+ };
67
+ readonly USER_DELETED_GROUP: {
68
+ readonly name: "User deleted group";
69
+ readonly description: "The user deleted the final member of a group, which removed the group from the workflow.";
70
+ readonly properties: z.ZodObject<{
71
+ workflow_id: z.ZodString;
72
+ group_id: z.ZodString;
73
+ push_ref: z.ZodString;
74
+ was_empty: z.ZodBoolean;
75
+ }, z.core.$strip>;
76
+ } & import("../define").TelemetryEventInput & {
77
+ readonly getValidationError: (properties: unknown) => string | null;
78
+ };
79
+ readonly USER_CONNECTED_EMPTY_GROUP: {
80
+ readonly name: "User connected empty group";
81
+ readonly description: "The user added a connection whose source or target was a group that still contained only its internal empty-group anchor.";
82
+ readonly properties: z.ZodObject<{
83
+ workflow_id: z.ZodString;
84
+ group_id: z.ZodString;
85
+ push_ref: z.ZodString;
86
+ was_first_connection: z.ZodBoolean;
87
+ }, z.core.$strip>;
88
+ } & import("../define").TelemetryEventInput & {
89
+ readonly getValidationError: (properties: unknown) => string | null;
90
+ };
91
+ readonly USER_ACTIVATED_WORKFLOW: {
92
+ readonly name: "User activated workflow";
93
+ readonly description: "A workflow version became active. The empty-group count is calculated from that published version, not from the current draft.";
94
+ readonly properties: z.ZodObject<{
95
+ user_id: z.ZodString;
96
+ workflow_id: z.ZodString;
97
+ public_api: z.ZodBoolean;
98
+ source: z.ZodEnum<{
99
+ api: "api";
100
+ import: "import";
101
+ "n8n-ai": "n8n-ai";
102
+ "n8n-mcp": "n8n-mcp";
103
+ "review-approval": "review-approval";
104
+ ui: "ui";
105
+ }>;
106
+ private_credentials_count: z.ZodNumber;
107
+ private_credential_types: z.ZodArray<z.ZodString>;
108
+ empty_group_count: z.ZodOptional<z.ZodNumber>;
109
+ }, z.core.$strip>;
110
+ } & import("../define").TelemetryEventInput & {
111
+ readonly getValidationError: (properties: unknown) => string | null;
112
+ };
3
113
  readonly USER_REQUESTED_WORKFLOW_TEST: {
4
114
  readonly name: "User requested workflow test";
5
115
  readonly description: "The user started a manual workflow test from the AI Assistant setup panel. This event does not report execution success.";
6
116
  readonly properties: z.ZodObject<{
117
+ session_id: z.ZodOptional<z.ZodString>;
118
+ variant: z.ZodOptional<z.ZodEnum<{
119
+ control: "control";
120
+ variant: "variant";
121
+ }>>;
122
+ '$feature/118_instance_ai_setup_overhaul': z.ZodOptional<z.ZodEnum<{
123
+ control: "control";
124
+ variant: "variant";
125
+ }>>;
7
126
  source: z.ZodLiteral<"instance_ai_setup_panel">;
8
127
  workflow_id: z.ZodString;
9
128
  thread_id: z.ZodOptional<z.ZodString>;
129
+ test_request_id: z.ZodOptional<z.ZodString>;
130
+ }, z.core.$strip>;
131
+ } & import("../define").TelemetryEventInput & {
132
+ readonly getValidationError: (properties: unknown) => string | null;
133
+ };
134
+ readonly SETUP_TEST_FINISHED: {
135
+ readonly name: "AI Assistant setup test finished";
136
+ readonly description: "The setup panel observed a terminal test result or a failed run request. A failed request does not prove that execution did not start. Leaving setup before the result can omit this event.";
137
+ readonly properties: z.ZodObject<{
138
+ session_id: z.ZodOptional<z.ZodString>;
139
+ variant: z.ZodOptional<z.ZodEnum<{
140
+ control: "control";
141
+ variant: "variant";
142
+ }>>;
143
+ '$feature/118_instance_ai_setup_overhaul': z.ZodOptional<z.ZodEnum<{
144
+ control: "control";
145
+ variant: "variant";
146
+ }>>;
147
+ source: z.ZodLiteral<"instance_ai_setup_panel">;
148
+ workflow_id: z.ZodString;
149
+ thread_id: z.ZodString;
150
+ test_request_id: z.ZodString;
151
+ execution_id: z.ZodOptional<z.ZodString>;
152
+ status: z.ZodEnum<{
153
+ canceled: "canceled";
154
+ crashed: "crashed";
155
+ error: "error";
156
+ request_failed: "request_failed";
157
+ success: "success";
158
+ }>;
159
+ }, z.core.$strip>;
160
+ } & import("../define").TelemetryEventInput & {
161
+ readonly getValidationError: (properties: unknown) => string | null;
162
+ };
163
+ readonly SETUP_SAVED: {
164
+ readonly name: "AI Assistant workflow setup saved";
165
+ readonly description: "A setup surface observed saved requirements after applying changes. Completion covers the observed setup requirements, not credential validity or edits made while setup is closed.";
166
+ readonly properties: z.ZodObject<{
167
+ session_id: z.ZodOptional<z.ZodString>;
168
+ variant: z.ZodOptional<z.ZodEnum<{
169
+ control: "control";
170
+ variant: "variant";
171
+ }>>;
172
+ '$feature/118_instance_ai_setup_overhaul': z.ZodOptional<z.ZodEnum<{
173
+ control: "control";
174
+ variant: "variant";
175
+ }>>;
176
+ instance_id: z.ZodString;
177
+ workflow_id: z.ZodString;
178
+ thread_id: z.ZodString;
179
+ source: z.ZodEnum<{
180
+ instance_ai_setup_panel: "instance_ai_setup_panel";
181
+ instance_ai_setup_wizard: "instance_ai_setup_wizard";
182
+ }>;
183
+ request_id: z.ZodOptional<z.ZodString>;
184
+ items: z.ZodArray<z.ZodObject<{
185
+ node_id: z.ZodString;
186
+ node_type: z.ZodOptional<z.ZodString>;
187
+ kind: z.ZodEnum<{
188
+ credential: "credential";
189
+ parameter: "parameter";
190
+ }>;
191
+ credential_type: z.ZodOptional<z.ZodString>;
192
+ parameter_name: z.ZodOptional<z.ZodString>;
193
+ completed: z.ZodBoolean;
194
+ }, z.core.$strip>>;
195
+ setup_complete: z.ZodBoolean;
10
196
  }, z.core.$strip>;
11
197
  } & import("../define").TelemetryEventInput & {
12
198
  readonly getValidationError: (properties: unknown) => string | null;
@@ -3,14 +3,137 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WORKFLOW_TELEMETRY = void 0;
4
4
  const v4_1 = require("zod/v4");
5
5
  const define_1 = require("../define");
6
+ const setup_properties_1 = require("../setup-properties");
6
7
  exports.WORKFLOW_TELEMETRY = (0, define_1.defineTelemetryEvents)({
8
+ USER_GROUPED_NODES: {
9
+ name: 'User grouped nodes',
10
+ description: 'The user created a node group on the workflow canvas. Empty groups report no node ids because their internal anchor is excluded.',
11
+ properties: v4_1.z.object({
12
+ workflow_id: v4_1.z.string(),
13
+ group_id: v4_1.z.string(),
14
+ node_ids: v4_1.z.array(v4_1.z.string()),
15
+ node_count: v4_1.z.number(),
16
+ group_title: v4_1.z.string(),
17
+ source: v4_1.z.enum([
18
+ 'group-toolbar',
19
+ 'group-header',
20
+ 'keyboard-shortcut',
21
+ 'context-menu',
22
+ 'update-blocked-toast',
23
+ 'sub-workflow-extraction',
24
+ 'node-creator',
25
+ ]),
26
+ push_ref: v4_1.z.string(),
27
+ is_empty: v4_1.z.boolean().optional(),
28
+ node_creator_open_source: v4_1.z
29
+ .enum([
30
+ 'context_menu',
31
+ 'no_trigger_execution_tooltip',
32
+ 'plus_endpoint',
33
+ 'add_input_endpoint',
34
+ 'trigger_placeholder_button',
35
+ 'node_shortcut',
36
+ 'replace_node_action',
37
+ 'node_connection_action',
38
+ 'node_connection_drop',
39
+ 'notice_error_message',
40
+ 'add_node_button',
41
+ 'add_evaluation_node_button',
42
+ 'templates_callout',
43
+ 'instance_ai',
44
+ ])
45
+ .optional(),
46
+ }),
47
+ },
48
+ USER_FILLED_EMPTY_GROUP: {
49
+ name: 'User filled empty group',
50
+ description: 'The user added the first real node or node batch to a group that contained only its internal empty-group anchor.',
51
+ properties: v4_1.z.object({
52
+ workflow_id: v4_1.z.string(),
53
+ group_id: v4_1.z.string(),
54
+ push_ref: v4_1.z.string(),
55
+ node_count_after: v4_1.z.number(),
56
+ connection_count_before_fill: v4_1.z.number(),
57
+ }),
58
+ },
59
+ USER_DELETED_LAST_NODE_FROM_GROUP: {
60
+ name: 'User deleted last node from group',
61
+ description: 'The user deleted the last real node from a group and the editor replaced it with an internal empty-group anchor.',
62
+ properties: v4_1.z.object({
63
+ workflow_id: v4_1.z.string(),
64
+ group_id: v4_1.z.string(),
65
+ push_ref: v4_1.z.string(),
66
+ }),
67
+ },
68
+ USER_DELETED_GROUP: {
69
+ name: 'User deleted group',
70
+ description: 'The user deleted the final member of a group, which removed the group from the workflow.',
71
+ properties: v4_1.z.object({
72
+ workflow_id: v4_1.z.string(),
73
+ group_id: v4_1.z.string(),
74
+ push_ref: v4_1.z.string(),
75
+ was_empty: v4_1.z.boolean(),
76
+ }),
77
+ },
78
+ USER_CONNECTED_EMPTY_GROUP: {
79
+ name: 'User connected empty group',
80
+ description: 'The user added a connection whose source or target was a group that still contained only its internal empty-group anchor.',
81
+ properties: v4_1.z.object({
82
+ workflow_id: v4_1.z.string(),
83
+ group_id: v4_1.z.string(),
84
+ push_ref: v4_1.z.string(),
85
+ was_first_connection: v4_1.z.boolean(),
86
+ }),
87
+ },
88
+ USER_ACTIVATED_WORKFLOW: {
89
+ name: 'User activated workflow',
90
+ description: 'A workflow version became active. The empty-group count is calculated from that published version, not from the current draft.',
91
+ properties: v4_1.z.object({
92
+ user_id: v4_1.z.string(),
93
+ workflow_id: v4_1.z.string(),
94
+ public_api: v4_1.z.boolean(),
95
+ source: v4_1.z.enum(['ui', 'api', 'n8n-mcp', 'n8n-ai', 'import', 'review-approval']),
96
+ private_credentials_count: v4_1.z.number(),
97
+ private_credential_types: v4_1.z.array(v4_1.z.string()),
98
+ empty_group_count: v4_1.z.number().optional(),
99
+ }),
100
+ },
7
101
  USER_REQUESTED_WORKFLOW_TEST: {
8
102
  name: 'User requested workflow test',
9
103
  description: 'The user started a manual workflow test from the AI Assistant setup panel. This event does not report execution success.',
10
104
  properties: v4_1.z.object({
105
+ ...setup_properties_1.setupTelemetryProperties,
11
106
  source: v4_1.z.literal('instance_ai_setup_panel'),
12
107
  workflow_id: v4_1.z.string(),
13
108
  thread_id: v4_1.z.string().optional(),
109
+ test_request_id: v4_1.z.string().optional(),
110
+ }),
111
+ },
112
+ SETUP_TEST_FINISHED: {
113
+ name: 'AI Assistant setup test finished',
114
+ description: 'The setup panel observed a terminal test result or a failed run request. A failed request does not prove that execution did not start. Leaving setup before the result can omit this event.',
115
+ properties: v4_1.z.object({
116
+ ...setup_properties_1.setupTelemetryProperties,
117
+ source: v4_1.z.literal('instance_ai_setup_panel'),
118
+ workflow_id: v4_1.z.string(),
119
+ thread_id: v4_1.z.string(),
120
+ test_request_id: v4_1.z.string(),
121
+ execution_id: v4_1.z.string().optional(),
122
+ status: v4_1.z.enum(['success', 'error', 'crashed', 'canceled', 'request_failed']),
123
+ }),
124
+ },
125
+ SETUP_SAVED: {
126
+ name: 'AI Assistant workflow setup saved',
127
+ description: 'A setup surface observed saved requirements after applying changes. Completion covers the observed setup requirements, not credential validity or edits made while setup is closed.',
128
+ properties: v4_1.z.object({
129
+ ...setup_properties_1.setupTelemetryProperties,
130
+ instance_id: v4_1.z.string(),
131
+ workflow_id: v4_1.z.string(),
132
+ thread_id: v4_1.z.string(),
133
+ source: v4_1.z.enum(['instance_ai_setup_wizard', 'instance_ai_setup_panel']),
134
+ request_id: v4_1.z.string().optional(),
135
+ items: v4_1.z.array(v4_1.z.object({ ...setup_properties_1.setupItemProperties, completed: v4_1.z.boolean() })),
136
+ setup_complete: v4_1.z.boolean(),
14
137
  }),
15
138
  },
16
139
  MULTIPLE_NODES_SELECTED: {
@@ -1 +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,4BAA4B,EAAE;QAC7B,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACV,0HAA0H;QAC3H,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,MAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;YAC5C,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,SAAS,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAChC,CAAC;KACF;IACD,uBAAuB,EAAE;QACxB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACV,yRAAyR;QAC1R,UAAU,EAAE,MAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE;YACvB,UAAU,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YACtF,QAAQ,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SACrF,CAAC;KACF;IACD,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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/events/workflow.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,9 @@ 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 { POLICY_KINDS } from './events/node-type-policies';
7
- export type { PolicyKind } from './events/node-type-policies';
6
+ export { ASSISTANT_MENTION_QUERY_TEXT_MAX_LENGTH } from './events/instance-ai';
7
+ export { POLICY_KINDS } from './events/type-availability-policies';
8
+ export type { PolicyKind } from './events/type-availability-policies';
8
9
  export { redactTelemetryProperties, redactTelemetryText } from './redaction';
9
10
  export type { TelemetryTextOptions } from './redaction';
10
11
  export { collectDuplicateNames, validateEntrySchemas } from './registry-checks';
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.redactTelemetryText = exports.redactTelemetryProperties = exports.POLICY_KINDS = 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.POLICY_KINDS = exports.ASSISTANT_MENTION_QUERY_TEXT_MAX_LENGTH = 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,8 +8,10 @@ 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 node_type_policies_1 = require("./events/node-type-policies");
12
- Object.defineProperty(exports, "POLICY_KINDS", { enumerable: true, get: function () { return node_type_policies_1.POLICY_KINDS; } });
11
+ var instance_ai_1 = require("./events/instance-ai");
12
+ Object.defineProperty(exports, "ASSISTANT_MENTION_QUERY_TEXT_MAX_LENGTH", { enumerable: true, get: function () { return instance_ai_1.ASSISTANT_MENTION_QUERY_TEXT_MAX_LENGTH; } });
13
+ var type_availability_policies_1 = require("./events/type-availability-policies");
14
+ Object.defineProperty(exports, "POLICY_KINDS", { enumerable: true, get: function () { return type_availability_policies_1.POLICY_KINDS; } });
13
15
  var redaction_1 = require("./redaction");
14
16
  Object.defineProperty(exports, "redactTelemetryProperties", { enumerable: true, get: function () { return redaction_1.redactTelemetryProperties; } });
15
17
  Object.defineProperty(exports, "redactTelemetryText", { enumerable: true, get: function () { return redaction_1.redactTelemetryText; } });
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,kEAA2D;AAAlD,kHAAA,YAAY,OAAA;AAErB,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"}
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,oDAA+E;AAAtE,sIAAA,uCAAuC,OAAA;AAChD,kFAAmE;AAA1D,0HAAA,YAAY,OAAA;AAErB,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"}
@@ -24,8 +24,9 @@ function validateEntrySchemas(registry) {
24
24
  if (!entry.description.trim()) {
25
25
  errors.push(`${id}: description must not be empty`);
26
26
  }
27
- if (!(entry.properties instanceof v4_1.z.ZodObject)) {
28
- errors.push(`${id}: properties must be a zod object schema`);
27
+ const schemas = entry.properties instanceof v4_1.z.ZodUnion ? entry.properties.options : [entry.properties];
28
+ if (!schemas.every((schema) => schema instanceof v4_1.z.ZodObject)) {
29
+ errors.push(`${id}: properties must be a zod object schema or a union of object schemas`);
29
30
  continue;
30
31
  }
31
32
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"registry-checks.js","sourceRoot":"","sources":["../src/registry-checks.ts"],"names":[],"mappings":";;;;AAAA,+BAA2B;AAI3B,+BAAsC,QAAgC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACxB,CAAC;AAED,8BAAqC,QAAgC;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,QAAQ,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,YAAY,MAAC,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;gBAC7D,SAAS;YACV,CAAC;YACD,IAAI,CAAC;gBACJ,MAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,mDAAmD,MAAM,EAAE,CAAC,CAAC;YAC/E,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"registry-checks.js","sourceRoot":"","sources":["../src/registry-checks.ts"],"names":[],"mappings":";;;;AAAA,+BAA2B;AAI3B,+BAAsC,QAAgC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACxB,CAAC;AAED,8BAAqC,QAAgC;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,QAAQ,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,OAAO,GACZ,KAAK,CAAC,UAAU,YAAY,MAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,YAAY,MAAC,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,uEAAuE,CAAC,CAAC;gBAC1F,SAAS;YACV,CAAC;YACD,IAAI,CAAC;gBACJ,MAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,mDAAmD,MAAM,EAAE,CAAC,CAAC;YAC/E,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const assistantSurfaceSchema: z.ZodEnum<{
3
+ aia: "aia";
4
+ mcp: "mcp";
5
+ }>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assistantSurfaceSchema = void 0;
4
+ const v4_1 = require("zod/v4");
5
+ exports.assistantSurfaceSchema = v4_1.z
6
+ .enum(['aia', 'mcp'])
7
+ .describe('Assistant surface that acted. The settings area cannot fire this event');
8
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAEd,QAAA,sBAAsB,GAAG,MAAC;KACrC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACpB,QAAQ,CAAC,wEAAwE,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const setupTelemetryProperties: {
3
+ session_id: z.ZodOptional<z.ZodString>;
4
+ variant: z.ZodOptional<z.ZodEnum<{
5
+ control: "control";
6
+ variant: "variant";
7
+ }>>;
8
+ '$feature/118_instance_ai_setup_overhaul': z.ZodOptional<z.ZodEnum<{
9
+ control: "control";
10
+ variant: "variant";
11
+ }>>;
12
+ };
13
+ export declare const setupItemProperties: {
14
+ node_id: z.ZodString;
15
+ node_type: z.ZodOptional<z.ZodString>;
16
+ kind: z.ZodEnum<{
17
+ credential: "credential";
18
+ parameter: "parameter";
19
+ }>;
20
+ credential_type: z.ZodOptional<z.ZodString>;
21
+ parameter_name: z.ZodOptional<z.ZodString>;
22
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupItemProperties = exports.setupTelemetryProperties = void 0;
4
+ const v4_1 = require("zod/v4");
5
+ const setupVariant = v4_1.z.enum(['control', 'variant']).optional();
6
+ exports.setupTelemetryProperties = {
7
+ session_id: v4_1.z.string().optional(),
8
+ variant: setupVariant,
9
+ '$feature/118_instance_ai_setup_overhaul': setupVariant,
10
+ };
11
+ exports.setupItemProperties = {
12
+ node_id: v4_1.z.string(),
13
+ node_type: v4_1.z.string().optional(),
14
+ kind: v4_1.z.enum(['credential', 'parameter']),
15
+ credential_type: v4_1.z.string().optional(),
16
+ parameter_name: v4_1.z.string().optional(),
17
+ };
18
+ //# sourceMappingURL=setup-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-properties.js","sourceRoot":"","sources":["../src/setup-properties.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAE3B,MAAM,YAAY,GAAG,MAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAElD,QAAA,wBAAwB,GAAG;IACvC,UAAU,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,YAAY;IACrB,yCAAyC,EAAE,YAAY;CACvD,CAAC;AAGW,QAAA,mBAAmB,GAAG;IAClC,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,MAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACzC,eAAe,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC"}