@finos/legend-application-studio 28.21.42 → 28.21.44

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 (164) hide show
  1. package/lib/__lib__/LegendStudioEvent.d.ts +18 -4
  2. package/lib/__lib__/LegendStudioEvent.d.ts.map +1 -1
  3. package/lib/__lib__/LegendStudioEvent.js +20 -5
  4. package/lib/__lib__/LegendStudioEvent.js.map +1 -1
  5. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts +177 -31
  6. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts.map +1 -1
  7. package/lib/__lib__/LegendStudioTelemetryHelper.js +229 -72
  8. package/lib/__lib__/LegendStudioTelemetryHelper.js.map +1 -1
  9. package/lib/__lib__/LegendStudioUserDataHelper.d.ts +18 -1
  10. package/lib/__lib__/LegendStudioUserDataHelper.d.ts.map +1 -1
  11. package/lib/__lib__/LegendStudioUserDataHelper.js +71 -0
  12. package/lib/__lib__/LegendStudioUserDataHelper.js.map +1 -1
  13. package/lib/application/LegendStudioApplicationConfig.d.ts +12 -0
  14. package/lib/application/LegendStudioApplicationConfig.d.ts.map +1 -1
  15. package/lib/application/LegendStudioApplicationConfig.js +6 -0
  16. package/lib/application/LegendStudioApplicationConfig.js.map +1 -1
  17. package/lib/components/LegendStudioWebApplication.d.ts.map +1 -1
  18. package/lib/components/LegendStudioWebApplication.js +5 -2
  19. package/lib/components/LegendStudioWebApplication.js.map +1 -1
  20. package/lib/components/ShowcaseManager.d.ts.map +1 -1
  21. package/lib/components/ShowcaseManager.js +6 -4
  22. package/lib/components/ShowcaseManager.js.map +1 -1
  23. package/lib/components/editor/ActivityBar.d.ts.map +1 -1
  24. package/lib/components/editor/ActivityBar.js +2 -1
  25. package/lib/components/editor/ActivityBar.js.map +1 -1
  26. package/lib/components/editor/editor-group/GrammarTextEditor.d.ts.map +1 -1
  27. package/lib/components/editor/editor-group/GrammarTextEditor.js +7 -1
  28. package/lib/components/editor/editor-group/GrammarTextEditor.js.map +1 -1
  29. package/lib/components/editor/editor-group/data-editor/RelationElementSampleValuesEditor.d.ts +37 -0
  30. package/lib/components/editor/editor-group/data-editor/RelationElementSampleValuesEditor.d.ts.map +1 -0
  31. package/lib/components/editor/editor-group/data-editor/RelationElementSampleValuesEditor.js +126 -0
  32. package/lib/components/editor/editor-group/data-editor/RelationElementSampleValuesEditor.js.map +1 -0
  33. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
  34. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +22 -127
  35. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
  36. package/lib/components/editor/editor-group/service-editor/ServiceEditor.d.ts.map +1 -1
  37. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js +4 -4
  38. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js.map +1 -1
  39. package/lib/components/showcase/ShowcaseFeedback.d.ts +36 -0
  40. package/lib/components/showcase/ShowcaseFeedback.d.ts.map +1 -0
  41. package/lib/components/showcase/ShowcaseFeedback.js +70 -0
  42. package/lib/components/showcase/ShowcaseFeedback.js.map +1 -0
  43. package/lib/components/showcase/ShowcaseViewer.d.ts.map +1 -1
  44. package/lib/components/showcase/ShowcaseViewer.js +3 -1
  45. package/lib/components/showcase/ShowcaseViewer.js.map +1 -1
  46. package/lib/components/workspace-setup/WorkspaceSetup.d.ts.map +1 -1
  47. package/lib/components/workspace-setup/WorkspaceSetup.js +2 -1
  48. package/lib/components/workspace-setup/WorkspaceSetup.js.map +1 -1
  49. package/lib/index.css +2 -2
  50. package/lib/index.css.map +1 -1
  51. package/lib/index.d.ts +2 -1
  52. package/lib/index.d.ts.map +1 -1
  53. package/lib/index.js +2 -1
  54. package/lib/index.js.map +1 -1
  55. package/lib/package.json +1 -1
  56. package/lib/stores/LegendStudioBaseStore.d.ts.map +1 -1
  57. package/lib/stores/LegendStudioBaseStore.js +1 -0
  58. package/lib/stores/LegendStudioBaseStore.js.map +1 -1
  59. package/lib/stores/ShowcaseManagerState.d.ts +5 -3
  60. package/lib/stores/ShowcaseManagerState.d.ts.map +1 -1
  61. package/lib/stores/ShowcaseManagerState.js +44 -11
  62. package/lib/stores/ShowcaseManagerState.js.map +1 -1
  63. package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
  64. package/lib/stores/editor/EditorGraphState.js +1 -1
  65. package/lib/stores/editor/EditorGraphState.js.map +1 -1
  66. package/lib/stores/editor/EditorStore.d.ts +2 -1
  67. package/lib/stores/editor/EditorStore.d.ts.map +1 -1
  68. package/lib/stores/editor/EditorStore.js +8 -2
  69. package/lib/stores/editor/EditorStore.js.map +1 -1
  70. package/lib/stores/editor/GraphEditFormModeState.d.ts.map +1 -1
  71. package/lib/stores/editor/GraphEditFormModeState.js +2 -2
  72. package/lib/stores/editor/GraphEditFormModeState.js.map +1 -1
  73. package/lib/stores/editor/GraphEditGrammarModeState.d.ts +19 -0
  74. package/lib/stores/editor/GraphEditGrammarModeState.d.ts.map +1 -1
  75. package/lib/stores/editor/GraphEditGrammarModeState.js +92 -4
  76. package/lib/stores/editor/GraphEditGrammarModeState.js.map +1 -1
  77. package/lib/stores/editor/GraphEditorMode.d.ts +1 -0
  78. package/lib/stores/editor/GraphEditorMode.d.ts.map +1 -1
  79. package/lib/stores/editor/GraphEditorMode.js.map +1 -1
  80. package/lib/stores/editor/StandardEditorMode.d.ts +16 -5
  81. package/lib/stores/editor/StandardEditorMode.d.ts.map +1 -1
  82. package/lib/stores/editor/StandardEditorMode.js +4 -2
  83. package/lib/stores/editor/StandardEditorMode.js.map +1 -1
  84. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +2 -14
  85. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -1
  86. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +5 -75
  87. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -1
  88. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.d.ts +0 -11
  89. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.d.ts.map +1 -1
  90. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.js +2 -77
  91. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.js.map +1 -1
  92. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.d.ts.map +1 -1
  93. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js +4 -4
  94. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js.map +1 -1
  95. package/lib/stores/editor/sidebar-state/LocalChangesState.d.ts +1 -0
  96. package/lib/stores/editor/sidebar-state/LocalChangesState.d.ts.map +1 -1
  97. package/lib/stores/editor/sidebar-state/LocalChangesState.js +27 -0
  98. package/lib/stores/editor/sidebar-state/LocalChangesState.js.map +1 -1
  99. package/lib/stores/editor/sidebar-state/WorkspaceUpdaterState.d.ts.map +1 -1
  100. package/lib/stores/editor/sidebar-state/WorkspaceUpdaterState.js +7 -0
  101. package/lib/stores/editor/sidebar-state/WorkspaceUpdaterState.js.map +1 -1
  102. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.d.ts.map +1 -1
  103. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.js +7 -2
  104. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.js.map +1 -1
  105. package/lib/stores/lazy-text-editor/LazyTextEditorStore.d.ts +1 -0
  106. package/lib/stores/lazy-text-editor/LazyTextEditorStore.d.ts.map +1 -1
  107. package/lib/stores/lazy-text-editor/LazyTextEditorStore.js +3 -0
  108. package/lib/stores/lazy-text-editor/LazyTextEditorStore.js.map +1 -1
  109. package/lib/stores/project-reviewer/ProjectReviewerStore.d.ts.map +1 -1
  110. package/lib/stores/project-reviewer/ProjectReviewerStore.js +2 -0
  111. package/lib/stores/project-reviewer/ProjectReviewerStore.js.map +1 -1
  112. package/lib/stores/project-view/ProjectViewerEditorMode.d.ts +2 -2
  113. package/lib/stores/project-view/ProjectViewerEditorMode.d.ts.map +1 -1
  114. package/lib/stores/project-view/ProjectViewerEditorMode.js +12 -0
  115. package/lib/stores/project-view/ProjectViewerEditorMode.js.map +1 -1
  116. package/lib/stores/project-view/ProjectViewerStore.d.ts.map +1 -1
  117. package/lib/stores/project-view/ProjectViewerStore.js +3 -1
  118. package/lib/stores/project-view/ProjectViewerStore.js.map +1 -1
  119. package/lib/stores/showcase/ShowcaseViewerEditorMode.d.ts.map +1 -1
  120. package/lib/stores/showcase/ShowcaseViewerEditorMode.js.map +1 -1
  121. package/lib/stores/showcase/ShowcaseViewerStore.d.ts.map +1 -1
  122. package/lib/stores/showcase/ShowcaseViewerStore.js +7 -3
  123. package/lib/stores/showcase/ShowcaseViewerStore.js.map +1 -1
  124. package/lib/stores/workspace-setup/WorkspaceSetupStore.d.ts.map +1 -1
  125. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +1 -0
  126. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  127. package/package.json +16 -16
  128. package/src/__lib__/LegendStudioEvent.ts +22 -6
  129. package/src/__lib__/LegendStudioTelemetryHelper.ts +425 -104
  130. package/src/__lib__/LegendStudioUserDataHelper.ts +115 -0
  131. package/src/application/LegendStudioApplicationConfig.ts +19 -0
  132. package/src/components/LegendStudioWebApplication.tsx +18 -2
  133. package/src/components/ShowcaseManager.tsx +24 -4
  134. package/src/components/editor/ActivityBar.tsx +5 -1
  135. package/src/components/editor/editor-group/GrammarTextEditor.tsx +18 -1
  136. package/src/components/editor/editor-group/data-editor/RelationElementSampleValuesEditor.tsx +285 -0
  137. package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +38 -323
  138. package/src/components/editor/editor-group/service-editor/ServiceEditor.tsx +4 -0
  139. package/src/components/showcase/ShowcaseFeedback.tsx +136 -0
  140. package/src/components/showcase/ShowcaseViewer.tsx +10 -0
  141. package/src/components/workspace-setup/WorkspaceSetup.tsx +6 -1
  142. package/src/index.ts +2 -0
  143. package/src/stores/LegendStudioBaseStore.ts +1 -0
  144. package/src/stores/ShowcaseManagerState.ts +67 -8
  145. package/src/stores/editor/EditorGraphState.ts +1 -0
  146. package/src/stores/editor/EditorStore.ts +26 -4
  147. package/src/stores/editor/GraphEditFormModeState.ts +2 -0
  148. package/src/stores/editor/GraphEditGrammarModeState.ts +139 -1
  149. package/src/stores/editor/GraphEditorMode.ts +1 -0
  150. package/src/stores/editor/StandardEditorMode.ts +21 -7
  151. package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +3 -119
  152. package/src/stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.ts +1 -136
  153. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.ts +4 -0
  154. package/src/stores/editor/sidebar-state/LocalChangesState.ts +47 -0
  155. package/src/stores/editor/sidebar-state/WorkspaceUpdaterState.ts +18 -0
  156. package/src/stores/editor/sidebar-state/dev-metadata/DevMetadataState.ts +7 -0
  157. package/src/stores/lazy-text-editor/LazyTextEditorStore.ts +4 -0
  158. package/src/stores/project-reviewer/ProjectReviewerStore.ts +4 -0
  159. package/src/stores/project-view/ProjectViewerEditorMode.ts +17 -4
  160. package/src/stores/project-view/ProjectViewerStore.ts +5 -0
  161. package/src/stores/showcase/ShowcaseViewerEditorMode.ts +4 -5
  162. package/src/stores/showcase/ShowcaseViewerStore.ts +12 -2
  163. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +2 -0
  164. package/tsconfig.json +2 -0
@@ -27,81 +27,207 @@ import {
27
27
  import { LEGEND_STUDIO_APP_EVENT } from './LegendStudioEvent.js';
28
28
  import type { LegendSourceInfo } from '@finos/legend-storage';
29
29
 
30
+ /**
31
+ * All Studio telemetry events consistently carry an optional `sourceInfo`
32
+ * so downstream analytics can slice by workspace edit vs project viewer vs
33
+ * GAV viewer vs showcase without inferring from URLs. Non-editor events
34
+ * (virtual assistant, showcase manager) do not attach `sourceInfo` because
35
+ * they may fire outside any editor context.
36
+ */
37
+ type WithSourceInfo = {
38
+ sourceInfo?: LegendSourceInfo | undefined;
39
+ };
40
+
30
41
  type Compilation_TelemetryData = GraphManagerOperationReport & {
31
42
  dependenciesCount: number;
32
- };
43
+ } & WithSourceInfo;
33
44
 
34
45
  type TestDataGeneration_TelemetryData = GraphManagerOperationReport & {
35
46
  dependenciesCount: number;
36
- };
47
+ } & WithSourceInfo;
37
48
 
38
49
  type ShowcaseSearchInitiated_TelemetryData = {
39
50
  searchText: string;
40
51
  };
41
52
 
53
+ export type ShowcaseSearchCompleted_TelemetryData = {
54
+ searchText: string;
55
+ resultCount: number;
56
+ showcaseMatchCount: number;
57
+ textMatchCount: number;
58
+ durationMs: number;
59
+ hadResults: boolean;
60
+ };
61
+
62
+ export enum SHOWCASE_MANAGER_ENTRY_POINT {
63
+ ACTIVITY_BAR = 'activity-bar',
64
+ WORKSPACE_SETUP = 'workspace-setup',
65
+ }
66
+
67
+ export enum SHOWCASE_LAUNCH_ENTRY_POINT {
68
+ EXPLORER = 'explorer',
69
+ SEARCH_SHOWCASE_MATCH = 'search-showcase-match',
70
+ SEARCH_CODE_MATCH = 'search-code-match',
71
+ DEEP_LINK = 'deep-link',
72
+ }
73
+
42
74
  export type ShowcaseMetadata_TelemetryData = {
43
75
  showcasesTotalCount: number;
44
76
  showcasesDevelopmentCount: number;
77
+ entryPoint: SHOWCASE_MANAGER_ENTRY_POINT;
45
78
  };
46
79
 
47
80
  export type ShowcaseProject_TelemetryData = {
48
81
  showcasePath: string;
82
+ title?: string | undefined;
83
+ isDevelopment?: boolean | undefined;
84
+ entryPoint?: SHOWCASE_LAUNCH_ENTRY_POINT | undefined;
85
+ lineNumber?: number | undefined;
49
86
  };
50
87
 
51
- export type IngestDefinitionDeployment_TelemetryData = {
52
- sourceInfo: LegendSourceInfo | undefined;
53
- ingestUrn: string;
54
- ingestDefinitionPath: string;
88
+ export type ShowcaseViewerClose_TelemetryData = {
89
+ showcasePath: string;
90
+ dwellMs: number;
55
91
  };
56
92
 
93
+ export enum SHOWCASE_FEEDBACK_VOTE {
94
+ UP = 'up',
95
+ DOWN = 'down',
96
+ }
97
+
98
+ export enum SHOWCASE_FEEDBACK_SURFACE {
99
+ DEEP_LINK_VIEWER = 'deep-link-viewer',
100
+ ASSISTANT_PANEL = 'assistant-panel',
101
+ }
102
+
103
+ export type ShowcaseFeedback_TelemetryData = {
104
+ showcasePath: string;
105
+ title?: string | undefined;
106
+ vote: SHOWCASE_FEEDBACK_VOTE;
107
+ surface: SHOWCASE_FEEDBACK_SURFACE;
108
+ };
109
+
110
+ export type ShowcaseFailure_TelemetryData = {
111
+ errorMessage: string;
112
+ showcasePath?: string | undefined;
113
+ searchText?: string | undefined;
114
+ };
115
+
116
+ export enum TEXT_MODE_ENTER_TRIGGER {
117
+ MANUAL_TOGGLE = 'manual-toggle',
118
+ FALLBACK_GRAPH_BUILD_FAILURE = 'fallback-graph-build-failure',
119
+ FALLBACK_FORM_COMPILATION_FAILURE = 'fallback-form-compilation-failure',
120
+ INITIAL_LAZY = 'initial-lazy',
121
+ }
122
+
123
+ export enum TEXT_MODE_LEAVE_OUTCOME {
124
+ COMPILED_AND_LEFT = 'compiled-and-left',
125
+ DISCARDED = 'discarded',
126
+ }
127
+
128
+ export enum TEXT_MODE_COMPILATION_ERROR_KIND {
129
+ PARSER = 'parser',
130
+ COMPILER = 'compiler',
131
+ OTHER = 'other',
132
+ }
133
+
134
+ export enum TEXT_MODE_TOGGLE_SOURCE {
135
+ BUTTON = 'button',
136
+ KEYBOARD_SHORTCUT = 'keyboard-shortcut',
137
+ CONTEXT_MENU = 'context-menu',
138
+ }
139
+
140
+ export enum TEXT_MODE_TOGGLE_DIRECTION {
141
+ TO_TEXT = 'to-text',
142
+ TO_FORM = 'to-form',
143
+ }
144
+
145
+ export enum TEXT_MODE_ACTION {
146
+ GO_TO_DEFINITION = 'go-to-definition',
147
+ }
148
+
149
+ export enum TEXT_MODE_ACTION_STATUS {
150
+ LAUNCH = 'launch',
151
+ SUCCESS = 'success',
152
+ ERROR = 'error',
153
+ }
154
+
155
+ export enum GRAPH_EDITOR_MODE_LABEL {
156
+ FORM = 'form',
157
+ TEXT = 'text',
158
+ STRICT_TEXT = 'strict-text',
159
+ }
160
+
57
161
  export class LegendStudioTelemetryHelper {
58
- static logEvent_GraphCompilationLaunched(service: TelemetryService): void {
59
- service.logEvent(LEGEND_STUDIO_APP_EVENT.COMPILE_GRAPH__LAUNCH, {});
162
+ static logEvent_GraphCompilationLaunched(
163
+ service: TelemetryService,
164
+ sourceInfo?: LegendSourceInfo | undefined,
165
+ ): void {
166
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.COMPILE_GRAPH__LAUNCH, {
167
+ sourceInfo,
168
+ });
60
169
  }
61
170
 
62
- static logEvent_TextCompilationLaunched(service: TelemetryService): void {
63
- service.logEvent(LEGEND_STUDIO_APP_EVENT.COMPILE_TEXT__LAUNCH, {});
171
+ static logEvent_TextCompilationLaunched(
172
+ service: TelemetryService,
173
+ sourceInfo?: LegendSourceInfo | undefined,
174
+ ): void {
175
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.COMPILE_TEXT__LAUNCH, {
176
+ sourceInfo,
177
+ });
64
178
  }
65
179
 
66
- static logEvent_TestDataGenerationLaunched(service: TelemetryService): void {
67
- service.logEvent(LEGEND_STUDIO_APP_EVENT.TEST_DATA_GENERATION__LAUNCH, {});
180
+ static logEvent_TestDataGenerationLaunched(
181
+ service: TelemetryService,
182
+ sourceInfo?: LegendSourceInfo | undefined,
183
+ ): void {
184
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEST_DATA_GENERATION__LAUNCH, {
185
+ sourceInfo,
186
+ });
68
187
  }
69
188
 
70
189
  static logEvent_GraphCompilationSucceeded(
71
190
  service: TelemetryService,
72
191
  data: Compilation_TelemetryData,
192
+ sourceInfo?: LegendSourceInfo | undefined,
73
193
  ): void {
74
- service.logEvent(
75
- LEGEND_STUDIO_APP_EVENT.FORM_MODE_COMPILATION__SUCCESS,
76
- data,
77
- );
194
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.FORM_MODE_COMPILATION__SUCCESS, {
195
+ ...data,
196
+ sourceInfo,
197
+ });
78
198
  }
79
199
 
80
200
  static logEvent_TextCompilationSucceeded(
81
201
  service: TelemetryService,
82
202
  data: Compilation_TelemetryData,
203
+ sourceInfo?: LegendSourceInfo | undefined,
83
204
  ): void {
84
- service.logEvent(
85
- LEGEND_STUDIO_APP_EVENT.TEXT_MODE_COMPILATION__SUCCESS,
86
- data,
87
- );
205
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE_COMPILATION__SUCCESS, {
206
+ ...data,
207
+ sourceInfo,
208
+ });
88
209
  }
89
210
 
90
211
  static logEvent_TestDataGenerationSucceeded(
91
212
  service: TelemetryService,
92
213
  data: TestDataGeneration_TelemetryData,
214
+ sourceInfo?: LegendSourceInfo | undefined,
93
215
  ): void {
94
- service.logEvent(
95
- LEGEND_STUDIO_APP_EVENT.TEST_DATA_GENERATION__SUCCESS,
96
- data,
97
- );
216
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEST_DATA_GENERATION__SUCCESS, {
217
+ ...data,
218
+ sourceInfo,
219
+ });
98
220
  }
99
221
 
100
222
  static logEvent_GraphInitializationSucceeded(
101
223
  service: TelemetryService,
102
224
  data: GraphInitializationReport,
225
+ sourceInfo?: LegendSourceInfo | undefined,
103
226
  ): void {
104
- service.logEvent(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS, data);
227
+ service.logEvent(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS, {
228
+ ...data,
229
+ sourceInfo,
230
+ });
105
231
  }
106
232
 
107
233
  // showcase manager
@@ -137,6 +263,63 @@ export class LegendStudioTelemetryHelper {
137
263
  );
138
264
  }
139
265
 
266
+ static logEvent_ShowcaseSearchCompleted(
267
+ service: TelemetryService,
268
+ data: ShowcaseSearchCompleted_TelemetryData,
269
+ ): void {
270
+ service.logEvent(
271
+ LEGEND_STUDIO_APP_EVENT.SHOWCASE_MANAGER_SEARCH__COMPLETED,
272
+ data,
273
+ );
274
+ }
275
+
276
+ static logEvent_ShowcaseViewerClose(
277
+ service: TelemetryService,
278
+ data: ShowcaseViewerClose_TelemetryData,
279
+ ): void {
280
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.SHOWCASE_VIEWER_CLOSE, data);
281
+ }
282
+
283
+ static logEvent_ShowcaseFeedbackSubmit(
284
+ service: TelemetryService,
285
+ data: ShowcaseFeedback_TelemetryData,
286
+ ): void {
287
+ service.logEvent(
288
+ LEGEND_STUDIO_APP_EVENT.SHOWCASE_VIEWER_FEEDBACK__SUBMIT,
289
+ data,
290
+ );
291
+ }
292
+
293
+ static logEvent_ShowcaseManagerInitFailure(
294
+ service: TelemetryService,
295
+ data: ShowcaseFailure_TelemetryData,
296
+ ): void {
297
+ service.logEvent(
298
+ LEGEND_STUDIO_APP_EVENT.SHOWCASE_MANAGER_INIT__FAILURE,
299
+ data,
300
+ );
301
+ }
302
+
303
+ static logEvent_ShowcaseManagerOpenFailure(
304
+ service: TelemetryService,
305
+ data: ShowcaseFailure_TelemetryData,
306
+ ): void {
307
+ service.logEvent(
308
+ LEGEND_STUDIO_APP_EVENT.SHOWCASE_MANAGER_OPEN__FAILURE,
309
+ data,
310
+ );
311
+ }
312
+
313
+ static logEvent_ShowcaseManagerSearchFailure(
314
+ service: TelemetryService,
315
+ data: ShowcaseFailure_TelemetryData,
316
+ ): void {
317
+ service.logEvent(
318
+ LEGEND_STUDIO_APP_EVENT.SHOWCASE_MANAGER_SEARCH__FAILURE,
319
+ data,
320
+ );
321
+ }
322
+
140
323
  // virtual assistant
141
324
  static logEvent_VirtualAssistantPanelOpened(service: TelemetryService): void {
142
325
  service.logEvent(APPLICATION_EVENT.VIRTUAL_ASSISTANT_PANEL__OPEN, {});
@@ -187,30 +370,33 @@ export class LegendStudioTelemetryHelper {
187
370
  static logEvent_ServiceLegendAISuggestLaunched(
188
371
  telemetryService: TelemetryService,
189
372
  servicePath: string,
373
+ sourceInfo?: LegendSourceInfo | undefined,
190
374
  ): void {
191
375
  telemetryService.logEvent(
192
376
  LEGEND_STUDIO_APP_EVENT.SERVICE_LEGENDAI_SUGGEST__LAUNCH,
193
- { servicePath },
377
+ { servicePath, sourceInfo },
194
378
  );
195
379
  }
196
380
 
197
381
  static logEvent_ServiceLegendAISuggestApplied(
198
382
  telemetryService: TelemetryService,
199
383
  servicePath: string,
384
+ sourceInfo?: LegendSourceInfo | undefined,
200
385
  ): void {
201
386
  telemetryService.logEvent(
202
387
  LEGEND_STUDIO_APP_EVENT.SERVICE_LEGENDAI_SUGGEST__APPLY,
203
- { servicePath },
388
+ { servicePath, sourceInfo },
204
389
  );
205
390
  }
206
391
 
207
392
  static logEvent_ServiceLegendAISuggestDiscarded(
208
393
  telemetryService: TelemetryService,
209
394
  servicePath: string,
395
+ sourceInfo?: LegendSourceInfo | undefined,
210
396
  ): void {
211
397
  telemetryService.logEvent(
212
398
  LEGEND_STUDIO_APP_EVENT.SERVICE_LEGENDAI_SUGGEST__DISCARD,
213
- { servicePath },
399
+ { servicePath, sourceInfo },
214
400
  );
215
401
  }
216
402
 
@@ -218,10 +404,11 @@ export class LegendStudioTelemetryHelper {
218
404
  telemetryService: TelemetryService,
219
405
  servicePath: string,
220
406
  errorMessage: string,
407
+ sourceInfo?: LegendSourceInfo | undefined,
221
408
  ): void {
222
409
  telemetryService.logEvent(
223
410
  LEGEND_STUDIO_APP_EVENT.SERVICE_LEGENDAI_SUGGEST__FAILURE,
224
- { servicePath, errorMessage },
411
+ { servicePath, errorMessage, sourceInfo },
225
412
  );
226
413
  }
227
414
 
@@ -229,30 +416,33 @@ export class LegendStudioTelemetryHelper {
229
416
  static logEvent_DataSpaceLegendAISuggestLaunched(
230
417
  telemetryService: TelemetryService,
231
418
  dataSpacePath: string,
419
+ sourceInfo?: LegendSourceInfo | undefined,
232
420
  ): void {
233
421
  telemetryService.logEvent(
234
422
  LEGEND_STUDIO_APP_EVENT.DATASPACE_LEGENDAI_SUGGEST__LAUNCH,
235
- { dataSpacePath },
423
+ { dataSpacePath, sourceInfo },
236
424
  );
237
425
  }
238
426
 
239
427
  static logEvent_DataSpaceLegendAISuggestApplied(
240
428
  telemetryService: TelemetryService,
241
429
  dataSpacePath: string,
430
+ sourceInfo?: LegendSourceInfo | undefined,
242
431
  ): void {
243
432
  telemetryService.logEvent(
244
433
  LEGEND_STUDIO_APP_EVENT.DATASPACE_LEGENDAI_SUGGEST__APPLY,
245
- { dataSpacePath },
434
+ { dataSpacePath, sourceInfo },
246
435
  );
247
436
  }
248
437
 
249
438
  static logEvent_DataSpaceLegendAISuggestDiscarded(
250
439
  telemetryService: TelemetryService,
251
440
  dataSpacePath: string,
441
+ sourceInfo?: LegendSourceInfo | undefined,
252
442
  ): void {
253
443
  telemetryService.logEvent(
254
444
  LEGEND_STUDIO_APP_EVENT.DATASPACE_LEGENDAI_SUGGEST__DISCARD,
255
- { dataSpacePath },
445
+ { dataSpacePath, sourceInfo },
256
446
  );
257
447
  }
258
448
 
@@ -260,40 +450,44 @@ export class LegendStudioTelemetryHelper {
260
450
  telemetryService: TelemetryService,
261
451
  dataSpacePath: string,
262
452
  errorMessage: string,
453
+ sourceInfo?: LegendSourceInfo | undefined,
263
454
  ): void {
264
455
  telemetryService.logEvent(
265
456
  LEGEND_STUDIO_APP_EVENT.DATASPACE_LEGENDAI_SUGGEST__FAILURE,
266
- { dataSpacePath, errorMessage },
457
+ { dataSpacePath, errorMessage, sourceInfo },
267
458
  );
268
459
  }
269
460
 
270
461
  static logEvent_DataProductLegendAISuggestLaunched(
271
462
  telemetryService: TelemetryService,
272
463
  dataProductPath: string,
464
+ sourceInfo?: LegendSourceInfo | undefined,
273
465
  ): void {
274
466
  telemetryService.logEvent(
275
467
  LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_LEGENDAI_SUGGEST__LAUNCH,
276
- { dataProductPath },
468
+ { dataProductPath, sourceInfo },
277
469
  );
278
470
  }
279
471
 
280
472
  static logEvent_DataProductLegendAISuggestApplied(
281
473
  telemetryService: TelemetryService,
282
474
  dataProductPath: string,
475
+ sourceInfo?: LegendSourceInfo | undefined,
283
476
  ): void {
284
477
  telemetryService.logEvent(
285
478
  LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_LEGENDAI_SUGGEST__APPLY,
286
- { dataProductPath },
479
+ { dataProductPath, sourceInfo },
287
480
  );
288
481
  }
289
482
 
290
483
  static logEvent_DataProductLegendAISuggestDiscarded(
291
484
  telemetryService: TelemetryService,
292
485
  dataProductPath: string,
486
+ sourceInfo?: LegendSourceInfo | undefined,
293
487
  ): void {
294
488
  telemetryService.logEvent(
295
489
  LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_LEGENDAI_SUGGEST__DISCARD,
296
- { dataProductPath },
490
+ { dataProductPath, sourceInfo },
297
491
  );
298
492
  }
299
493
 
@@ -301,77 +495,11 @@ export class LegendStudioTelemetryHelper {
301
495
  telemetryService: TelemetryService,
302
496
  dataProductPath: string,
303
497
  errorMessage: string,
498
+ sourceInfo?: LegendSourceInfo | undefined,
304
499
  ): void {
305
500
  telemetryService.logEvent(
306
501
  LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_LEGENDAI_SUGGEST__FAILURE,
307
- { dataProductPath, errorMessage },
308
- );
309
- }
310
-
311
- // Lakehouse
312
- static logEvent_LakehouseDeployIngest(
313
- service: TelemetryService,
314
- sourceInfo: LegendSourceInfo | undefined,
315
- ingestUrn: string,
316
- ingestDefinitionPath: string,
317
- ): void {
318
- const eventData: IngestDefinitionDeployment_TelemetryData = {
319
- sourceInfo,
320
- ingestUrn,
321
- ingestDefinitionPath,
322
- };
323
- service.logEvent(
324
- LEGEND_STUDIO_APP_EVENT.INGESTION_DEPLOY_SUCCESS_URN,
325
- eventData,
326
- );
327
- }
328
-
329
- static logEvent_LakehouseDeployIngestFailure(
330
- service: TelemetryService,
331
- sourceInfo: LegendSourceInfo | undefined,
332
- ingestDefinitionPath: string,
333
- errorMessage: string,
334
- ): void {
335
- const eventData = {
336
- sourceInfo,
337
- ingestDefinitionPath,
338
- errorMessage,
339
- };
340
- service.logEvent(
341
- LEGEND_STUDIO_APP_EVENT.INGESTION_DEPLOY_FAILURE,
342
- eventData,
343
- );
344
- }
345
-
346
- static logEvent_LakehouseDeployDataProduct(
347
- service: TelemetryService,
348
- sourceInfo: LegendSourceInfo | undefined,
349
- dataProductPath: string,
350
- ): void {
351
- const eventData = {
352
- sourceInfo,
353
- dataProductPath,
354
- };
355
- service.logEvent(
356
- LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_DEPLOY_SUCCESS,
357
- eventData,
358
- );
359
- }
360
-
361
- static logEvent_LakehouseDeployDataProductFailure(
362
- service: TelemetryService,
363
- sourceInfo: LegendSourceInfo | undefined,
364
- dataProductPath: string,
365
- errorMessage: string,
366
- ): void {
367
- const eventData = {
368
- sourceInfo,
369
- dataProductPath,
370
- errorMessage,
371
- };
372
- service.logEvent(
373
- LEGEND_STUDIO_APP_EVENT.DATA_PRODUCT_DEPLOY_FAILURE,
374
- eventData,
502
+ { dataProductPath, errorMessage, sourceInfo },
375
503
  );
376
504
  }
377
505
 
@@ -382,6 +510,10 @@ export class LegendStudioTelemetryHelper {
382
510
  groupId: string,
383
511
  artifactId: string,
384
512
  versionId: string | undefined,
513
+ lakehouseElementCounts: {
514
+ ingestCount: number;
515
+ dataProductCount: number;
516
+ },
385
517
  ): void {
386
518
  service.logEvent(
387
519
  LEGEND_STUDIO_APP_EVENT.METADATA_PUSH_TO_METADATA__LAUNCH,
@@ -390,6 +522,7 @@ export class LegendStudioTelemetryHelper {
390
522
  groupId,
391
523
  artifactId,
392
524
  versionId,
525
+ ...lakehouseElementCounts,
393
526
  },
394
527
  );
395
528
  }
@@ -401,6 +534,10 @@ export class LegendStudioTelemetryHelper {
401
534
  artifactId: string,
402
535
  versionId: string | undefined,
403
536
  status: string,
537
+ lakehouseElementCounts: {
538
+ ingestCount: number;
539
+ dataProductCount: number;
540
+ },
404
541
  ): void {
405
542
  service.logEvent(
406
543
  LEGEND_STUDIO_APP_EVENT.METADATA_PUSH_TO_METADATA__SUCCESS,
@@ -410,6 +547,7 @@ export class LegendStudioTelemetryHelper {
410
547
  artifactId,
411
548
  versionId,
412
549
  status,
550
+ ...lakehouseElementCounts,
413
551
  },
414
552
  );
415
553
  }
@@ -427,4 +565,187 @@ export class LegendStudioTelemetryHelper {
427
565
  },
428
566
  );
429
567
  }
568
+
569
+ // Text mode session
570
+ static logEvent_TextModeEntered(
571
+ service: TelemetryService,
572
+ sourceInfo: LegendSourceInfo | undefined,
573
+ data: {
574
+ trigger: TEXT_MODE_ENTER_TRIGGER;
575
+ strict: boolean;
576
+ elementPath?: string | undefined;
577
+ },
578
+ ): void {
579
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE__ENTER, {
580
+ sourceInfo,
581
+ ...data,
582
+ });
583
+ }
584
+
585
+ static logEvent_TextModeLeft(
586
+ service: TelemetryService,
587
+ sourceInfo: LegendSourceInfo | undefined,
588
+ data: {
589
+ outcome: TEXT_MODE_LEAVE_OUTCOME;
590
+ durationMs: number;
591
+ editCount: number;
592
+ compilationCount: number;
593
+ },
594
+ ): void {
595
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE__LEAVE, {
596
+ sourceInfo,
597
+ ...data,
598
+ });
599
+ }
600
+
601
+ static logEvent_TextModeFirstEdit(
602
+ service: TelemetryService,
603
+ sourceInfo: LegendSourceInfo | undefined,
604
+ timeToFirstEditMs: number,
605
+ ): void {
606
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE__FIRST_EDIT, {
607
+ sourceInfo,
608
+ timeToFirstEditMs,
609
+ });
610
+ }
611
+
612
+ // Push local changes (workspace save/commit)
613
+ static logEvent_PushLocalChangesLaunched(
614
+ service: TelemetryService,
615
+ sourceInfo: LegendSourceInfo | undefined,
616
+ data: { mode: GRAPH_EDITOR_MODE_LABEL; changeCount: number },
617
+ ): void {
618
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.PUSH_LOCAL_CHANGES__LAUNCH, {
619
+ sourceInfo,
620
+ ...data,
621
+ });
622
+ }
623
+
624
+ static logEvent_PushLocalChangesSucceeded(
625
+ service: TelemetryService,
626
+ sourceInfo: LegendSourceInfo | undefined,
627
+ data: {
628
+ mode: GRAPH_EDITOR_MODE_LABEL;
629
+ changeCount: number;
630
+ durationMs: number;
631
+ revisionId: string | undefined;
632
+ },
633
+ ): void {
634
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.PUSH_LOCAL_CHANGES__SUCCESS, {
635
+ sourceInfo,
636
+ ...data,
637
+ });
638
+ }
639
+
640
+ static logEvent_PushLocalChangesFailure(
641
+ service: TelemetryService,
642
+ sourceInfo: LegendSourceInfo | undefined,
643
+ data: {
644
+ mode: GRAPH_EDITOR_MODE_LABEL;
645
+ changeCount: number;
646
+ errorMessage: string;
647
+ },
648
+ ): void {
649
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.PUSH_LOCAL_CHANGES__FAILURE, {
650
+ sourceInfo,
651
+ ...data,
652
+ });
653
+ }
654
+
655
+ // Workspace update (pull)
656
+ static logEvent_WorkspaceUpdateLaunched(
657
+ service: TelemetryService,
658
+ sourceInfo: LegendSourceInfo | undefined,
659
+ ): void {
660
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.UPDATE_WORKSPACE__LAUNCH, {
661
+ sourceInfo,
662
+ });
663
+ }
664
+
665
+ static logEvent_WorkspaceUpdateSucceeded(
666
+ service: TelemetryService,
667
+ sourceInfo: LegendSourceInfo | undefined,
668
+ data: { status: string; durationMs: number },
669
+ ): void {
670
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.UPDATE_WORKSPACE__SUCCESS, {
671
+ sourceInfo,
672
+ ...data,
673
+ });
674
+ }
675
+
676
+ static logEvent_WorkspaceUpdateFailure(
677
+ service: TelemetryService,
678
+ sourceInfo: LegendSourceInfo | undefined,
679
+ errorMessage: string,
680
+ ): void {
681
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.UPDATE_WORKSPACE__FAILURE, {
682
+ sourceInfo,
683
+ errorMessage,
684
+ });
685
+ }
686
+
687
+ // Text mode - Phase 2
688
+ static logEvent_TextModeCompilationFailure(
689
+ service: TelemetryService,
690
+ sourceInfo: LegendSourceInfo | undefined,
691
+ data: {
692
+ errorKind: TEXT_MODE_COMPILATION_ERROR_KIND;
693
+ errorMessage: string;
694
+ },
695
+ ): void {
696
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE_COMPILATION__FAILURE, {
697
+ sourceInfo,
698
+ ...data,
699
+ });
700
+ }
701
+
702
+ static logEvent_TextModeStrictLaunch(
703
+ service: TelemetryService,
704
+ sourceInfo: LegendSourceInfo | undefined,
705
+ ): void {
706
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE__STRICT_LAUNCH, {
707
+ sourceInfo,
708
+ });
709
+ }
710
+
711
+ static logEvent_TextModeToggleShortcutInvoked(
712
+ service: TelemetryService,
713
+ sourceInfo: LegendSourceInfo | undefined,
714
+ data: {
715
+ source: TEXT_MODE_TOGGLE_SOURCE;
716
+ direction: TEXT_MODE_TOGGLE_DIRECTION;
717
+ },
718
+ ): void {
719
+ service.logEvent(
720
+ LEGEND_STUDIO_APP_EVENT.TEXT_MODE__TOGGLE_SHORTCUT_INVOKED,
721
+ { sourceInfo, ...data },
722
+ );
723
+ }
724
+
725
+ static logEvent_TextModeAction(
726
+ service: TelemetryService,
727
+ sourceInfo: LegendSourceInfo | undefined,
728
+ data: {
729
+ action: TEXT_MODE_ACTION;
730
+ status: TEXT_MODE_ACTION_STATUS;
731
+ errorMessage?: string | undefined;
732
+ },
733
+ ): void {
734
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.TEXT_MODE__ACTION, {
735
+ sourceInfo,
736
+ ...data,
737
+ });
738
+ }
739
+
740
+ // Push local changes - Phase 2
741
+ static logEvent_PushLocalChangesEmpty(
742
+ service: TelemetryService,
743
+ sourceInfo: LegendSourceInfo | undefined,
744
+ data: { mode: GRAPH_EDITOR_MODE_LABEL },
745
+ ): void {
746
+ service.logEvent(LEGEND_STUDIO_APP_EVENT.PUSH_LOCAL_CHANGES__EMPTY, {
747
+ sourceInfo,
748
+ ...data,
749
+ });
750
+ }
430
751
  }