@finos/legend-application-studio 28.21.45 → 28.21.47

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 (209) hide show
  1. package/lib/__lib__/LegendStudioEvent.d.ts +63 -1
  2. package/lib/__lib__/LegendStudioEvent.d.ts.map +1 -1
  3. package/lib/__lib__/LegendStudioEvent.js +90 -0
  4. package/lib/__lib__/LegendStudioEvent.js.map +1 -1
  5. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts +655 -1
  6. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts.map +1 -1
  7. package/lib/__lib__/LegendStudioTelemetryHelper.js +709 -1
  8. package/lib/__lib__/LegendStudioTelemetryHelper.js.map +1 -1
  9. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.d.ts +30 -0
  10. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.d.ts.map +1 -0
  11. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.js +43 -0
  12. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.js.map +1 -0
  13. package/lib/components/editor/editor-group/RuntimeEditor.d.ts +4 -3
  14. package/lib/components/editor/editor-group/RuntimeEditor.d.ts.map +1 -1
  15. package/lib/components/editor/editor-group/RuntimeEditor.js +90 -36
  16. package/lib/components/editor/editor-group/RuntimeEditor.js.map +1 -1
  17. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
  18. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +154 -35
  19. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
  20. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.d.ts.map +1 -1
  21. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.js +4 -6
  22. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.js.map +1 -1
  23. package/lib/components/editor/editor-group/service-editor/ServiceEditor.d.ts.map +1 -1
  24. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js +31 -7
  25. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js.map +1 -1
  26. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.d.ts.map +1 -1
  27. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.js +4 -8
  28. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.js.map +1 -1
  29. package/lib/components/editor/side-bar/WorkflowManager.d.ts.map +1 -1
  30. package/lib/components/editor/side-bar/WorkflowManager.js +15 -0
  31. package/lib/components/editor/side-bar/WorkflowManager.js.map +1 -1
  32. package/lib/index.css +1 -1
  33. package/lib/index.d.ts +3 -1
  34. package/lib/index.d.ts.map +1 -1
  35. package/lib/index.js +3 -1
  36. package/lib/index.js.map +1 -1
  37. package/lib/package.json +1 -1
  38. package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
  39. package/lib/stores/editor/EditorGraphState.js +17 -1
  40. package/lib/stores/editor/EditorGraphState.js.map +1 -1
  41. package/lib/stores/editor/EditorStore.d.ts +2 -0
  42. package/lib/stores/editor/EditorStore.d.ts.map +1 -1
  43. package/lib/stores/editor/EditorStore.js +12 -0
  44. package/lib/stores/editor/EditorStore.js.map +1 -1
  45. package/lib/stores/editor/EditorTabManagerState.d.ts +18 -1
  46. package/lib/stores/editor/EditorTabManagerState.d.ts.map +1 -1
  47. package/lib/stores/editor/EditorTabManagerState.js +90 -1
  48. package/lib/stores/editor/EditorTabManagerState.js.map +1 -1
  49. package/lib/stores/editor/EditorTabTelemetryHelper.d.ts +31 -0
  50. package/lib/stores/editor/EditorTabTelemetryHelper.d.ts.map +1 -0
  51. package/lib/stores/editor/EditorTabTelemetryHelper.js +55 -0
  52. package/lib/stores/editor/EditorTabTelemetryHelper.js.map +1 -0
  53. package/lib/stores/editor/GraphEditFormModeState.d.ts.map +1 -1
  54. package/lib/stores/editor/GraphEditFormModeState.js +22 -1
  55. package/lib/stores/editor/GraphEditFormModeState.js.map +1 -1
  56. package/lib/stores/editor/LegendAISuggestTelemetry.d.ts +143 -0
  57. package/lib/stores/editor/LegendAISuggestTelemetry.d.ts.map +1 -0
  58. package/lib/stores/editor/LegendAISuggestTelemetry.js +376 -0
  59. package/lib/stores/editor/LegendAISuggestTelemetry.js.map +1 -0
  60. package/lib/stores/editor/LegendSQLStudioPlaygroundState.js +3 -3
  61. package/lib/stores/editor/LegendSQLStudioPlaygroundState.js.map +1 -1
  62. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts +14 -3
  63. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts.map +1 -1
  64. package/lib/stores/editor/editor-state/GraphGenerationState.js +42 -5
  65. package/lib/stores/editor/editor-state/GraphGenerationState.js.map +1 -1
  66. package/lib/stores/editor/editor-state/ModelImporterState.d.ts.map +1 -1
  67. package/lib/stores/editor/editor-state/ModelImporterState.js +2 -1
  68. package/lib/stores/editor/editor-state/ModelImporterState.js.map +1 -1
  69. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.d.ts.map +1 -1
  70. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.js +14 -0
  71. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.js.map +1 -1
  72. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.d.ts +35 -6
  73. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.d.ts.map +1 -1
  74. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.js +74 -29
  75. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.js.map +1 -1
  76. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.d.ts +5 -0
  77. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.d.ts.map +1 -1
  78. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.js +13 -0
  79. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.js.map +1 -1
  80. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.d.ts +1 -0
  81. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.d.ts.map +1 -1
  82. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.js +5 -5
  83. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.js.map +1 -1
  84. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +12 -0
  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 +60 -14
  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/dataProduct/testable/DataProductTestableState.d.ts +5 -0
  89. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.d.ts.map +1 -1
  90. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js +13 -0
  91. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js.map +1 -1
  92. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts +7 -0
  93. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts.map +1 -1
  94. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js +21 -2
  95. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js.map +1 -1
  96. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.d.ts +5 -0
  97. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.d.ts.map +1 -1
  98. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.js +13 -0
  99. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.js.map +1 -1
  100. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.d.ts +7 -0
  101. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.d.ts.map +1 -1
  102. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.js +34 -0
  103. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.js.map +1 -1
  104. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.d.ts.map +1 -1
  105. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.js +48 -0
  106. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.js.map +1 -1
  107. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.d.ts +1 -1
  108. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.d.ts.map +1 -1
  109. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js +5 -11
  110. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js.map +1 -1
  111. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.d.ts +3 -0
  112. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.d.ts.map +1 -1
  113. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js +7 -0
  114. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js.map +1 -1
  115. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.d.ts.map +1 -1
  116. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.js +46 -17
  117. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.js.map +1 -1
  118. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.d.ts +7 -0
  119. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.d.ts.map +1 -1
  120. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.js +110 -16
  121. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.js.map +1 -1
  122. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.d.ts +2 -1
  123. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.d.ts.map +1 -1
  124. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js +10 -4
  125. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js.map +1 -1
  126. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.d.ts.map +1 -1
  127. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.js +40 -1
  128. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.js.map +1 -1
  129. package/lib/stores/editor/sidebar-state/LocalChangesState.d.ts.map +1 -1
  130. package/lib/stores/editor/sidebar-state/LocalChangesState.js +1 -0
  131. package/lib/stores/editor/sidebar-state/LocalChangesState.js.map +1 -1
  132. package/lib/stores/editor/sidebar-state/ProjectOverviewState.d.ts.map +1 -1
  133. package/lib/stores/editor/sidebar-state/ProjectOverviewState.js +51 -0
  134. package/lib/stores/editor/sidebar-state/ProjectOverviewState.js.map +1 -1
  135. package/lib/stores/editor/sidebar-state/WorkflowManagerState.d.ts +14 -0
  136. package/lib/stores/editor/sidebar-state/WorkflowManagerState.d.ts.map +1 -1
  137. package/lib/stores/editor/sidebar-state/WorkflowManagerState.js +132 -27
  138. package/lib/stores/editor/sidebar-state/WorkflowManagerState.js.map +1 -1
  139. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.d.ts.map +1 -1
  140. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.js +41 -0
  141. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.js.map +1 -1
  142. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.d.ts.map +1 -1
  143. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.js +71 -9
  144. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.js.map +1 -1
  145. package/lib/stores/editor/utils/MockDataUtils.d.ts +12 -2
  146. package/lib/stores/editor/utils/MockDataUtils.d.ts.map +1 -1
  147. package/lib/stores/editor/utils/MockDataUtils.js +28 -28
  148. package/lib/stores/editor/utils/MockDataUtils.js.map +1 -1
  149. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +2 -0
  150. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -1
  151. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +13 -0
  152. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -1
  153. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.d.ts +20 -2
  154. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.d.ts.map +1 -1
  155. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.js +38 -4
  156. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.js.map +1 -1
  157. package/lib/stores/project-reviewer/ProjectReviewerStore.d.ts.map +1 -1
  158. package/lib/stores/project-reviewer/ProjectReviewerStore.js +45 -0
  159. package/lib/stores/project-reviewer/ProjectReviewerStore.js.map +1 -1
  160. package/lib/stores/workspace-setup/WorkspaceSetupStore.d.ts.map +1 -1
  161. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +48 -4
  162. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  163. package/package.json +9 -9
  164. package/src/__lib__/LegendStudioEvent.ts +102 -0
  165. package/src/__lib__/LegendStudioTelemetryHelper.ts +1769 -311
  166. package/src/components/editor/editor-group/LegendAISuggestTelemetryHooks.ts +57 -0
  167. package/src/components/editor/editor-group/RuntimeEditor.tsx +282 -132
  168. package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +293 -106
  169. package/src/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.ts +3 -13
  170. package/src/components/editor/editor-group/service-editor/ServiceEditor.tsx +41 -23
  171. package/src/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.tsx +5 -11
  172. package/src/components/editor/side-bar/WorkflowManager.tsx +24 -0
  173. package/src/index.ts +17 -1
  174. package/src/stores/editor/EditorGraphState.ts +30 -1
  175. package/src/stores/editor/EditorStore.ts +22 -0
  176. package/src/stores/editor/EditorTabManagerState.ts +128 -1
  177. package/src/stores/editor/EditorTabTelemetryHelper.ts +70 -0
  178. package/src/stores/editor/GraphEditFormModeState.ts +35 -1
  179. package/src/stores/editor/LegendAISuggestTelemetry.ts +592 -0
  180. package/src/stores/editor/LegendSQLStudioPlaygroundState.ts +3 -3
  181. package/src/stores/editor/editor-state/GraphGenerationState.ts +68 -9
  182. package/src/stores/editor/editor-state/ModelImporterState.ts +2 -0
  183. package/src/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.ts +30 -0
  184. package/src/stores/editor/editor-state/element-editor-state/RuntimeEditorState.ts +92 -31
  185. package/src/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.ts +17 -0
  186. package/src/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.ts +6 -6
  187. package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +75 -17
  188. package/src/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.ts +17 -0
  189. package/src/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.ts +27 -2
  190. package/src/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.ts +17 -0
  191. package/src/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.ts +57 -0
  192. package/src/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.ts +74 -0
  193. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.ts +22 -21
  194. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.ts +9 -0
  195. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.ts +78 -21
  196. package/src/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.ts +205 -18
  197. package/src/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.ts +38 -3
  198. package/src/stores/editor/sidebar-state/BulkServiceRegistrationState.ts +71 -1
  199. package/src/stores/editor/sidebar-state/LocalChangesState.ts +4 -0
  200. package/src/stores/editor/sidebar-state/ProjectOverviewState.ts +114 -0
  201. package/src/stores/editor/sidebar-state/WorkflowManagerState.ts +250 -29
  202. package/src/stores/editor/sidebar-state/WorkspaceReviewState.ts +84 -0
  203. package/src/stores/editor/sidebar-state/testable/GlobalTestRunnerState.ts +124 -17
  204. package/src/stores/editor/utils/MockDataUtils.ts +33 -32
  205. package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +18 -0
  206. package/src/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.ts +62 -7
  207. package/src/stores/project-reviewer/ProjectReviewerStore.ts +97 -0
  208. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +87 -4
  209. package/tsconfig.json +3 -0
@@ -45,6 +45,11 @@ import {
45
45
  ReviewApproval,
46
46
  } from '@finos/legend-server-sdlc';
47
47
  import { LEGEND_STUDIO_APP_EVENT } from '../../__lib__/LegendStudioEvent.js';
48
+ import {
49
+ LegendStudioTelemetryHelper,
50
+ SDLC_REVIEW_ACTION,
51
+ SDLC_REVIEW_ROLE,
52
+ } from '../../__lib__/LegendStudioTelemetryHelper.js';
48
53
  import { LegendStudioUserDataHelper } from '../../__lib__/LegendStudioUserDataHelper.js';
49
54
  import { DEFAULT_TAB_SIZE } from '@finos/legend-application';
50
55
  import type { Entity } from '@finos/legend-storage';
@@ -431,6 +436,19 @@ export class ProjectReviewerStore {
431
436
 
432
437
  *approveReview(): GeneratorFn<void> {
433
438
  this.approveState.inProgress();
439
+ const startTime = Date.now();
440
+ const identity = {
441
+ action: SDLC_REVIEW_ACTION.APPROVE,
442
+ role: SDLC_REVIEW_ROLE.REVIEWER,
443
+ projectId: this.projectId,
444
+ patchReleaseVersionId: this.patchReleaseVersionId,
445
+ reviewId: this.review.id,
446
+ };
447
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionLaunched(
448
+ this.editorStore.applicationStore.telemetryService,
449
+ undefined,
450
+ identity,
451
+ );
434
452
  try {
435
453
  this.currentReview = Review.serialization.fromJson(
436
454
  (yield this.editorStore.sdlcServerClient.approveReview(
@@ -439,12 +457,22 @@ export class ProjectReviewerStore {
439
457
  this.review.id,
440
458
  )) as PlainObject<Review>,
441
459
  );
460
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionSucceeded(
461
+ this.editorStore.applicationStore.telemetryService,
462
+ undefined,
463
+ { ...identity, durationMs: Date.now() - startTime },
464
+ );
442
465
  } catch (error) {
443
466
  assertErrorThrown(error);
444
467
  this.editorStore.applicationStore.logService.error(
445
468
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.SDLC_MANAGER_FAILURE),
446
469
  error,
447
470
  );
471
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionFailure(
472
+ this.editorStore.applicationStore.telemetryService,
473
+ undefined,
474
+ { ...identity, errorMessage: error.message },
475
+ );
448
476
  this.editorStore.applicationStore.notificationService.notifyError(error);
449
477
  } finally {
450
478
  this.approveState.complete();
@@ -453,6 +481,19 @@ export class ProjectReviewerStore {
453
481
 
454
482
  *commitReview(): GeneratorFn<void> {
455
483
  this.commitState.inProgress();
484
+ const startTime = Date.now();
485
+ const identity = {
486
+ action: SDLC_REVIEW_ACTION.COMMIT,
487
+ role: SDLC_REVIEW_ROLE.REVIEWER,
488
+ projectId: this.projectId,
489
+ patchReleaseVersionId: this.patchReleaseVersionId,
490
+ reviewId: this.review.id,
491
+ };
492
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionLaunched(
493
+ this.editorStore.applicationStore.telemetryService,
494
+ undefined,
495
+ identity,
496
+ );
456
497
  try {
457
498
  this.currentReview = Review.serialization.fromJson(
458
499
  (yield this.editorStore.sdlcServerClient.commitReview(
@@ -462,6 +503,11 @@ export class ProjectReviewerStore {
462
503
  { message: `${this.review.title} [review]` },
463
504
  )) as PlainObject<Review>,
464
505
  );
506
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionSucceeded(
507
+ this.editorStore.applicationStore.telemetryService,
508
+ undefined,
509
+ { ...identity, durationMs: Date.now() - startTime },
510
+ );
465
511
  // Committing a review deletes its workspace on SDLC. Drop the
466
512
  // matching entry from the local recents cache (no-op if it wasn't
467
513
  // there, e.g., the reviewer isn't the workspace author). Patch
@@ -482,6 +528,11 @@ export class ProjectReviewerStore {
482
528
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.SDLC_MANAGER_FAILURE),
483
529
  error,
484
530
  );
531
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionFailure(
532
+ this.editorStore.applicationStore.telemetryService,
533
+ undefined,
534
+ { ...identity, errorMessage: error.message },
535
+ );
485
536
  this.editorStore.applicationStore.notificationService.notifyError(error);
486
537
  } finally {
487
538
  this.commitState.complete();
@@ -490,6 +541,19 @@ export class ProjectReviewerStore {
490
541
 
491
542
  *reOpenReview(): GeneratorFn<void> {
492
543
  this.reOpenState.inProgress();
544
+ const startTime = Date.now();
545
+ const identity = {
546
+ action: SDLC_REVIEW_ACTION.REOPEN,
547
+ role: SDLC_REVIEW_ROLE.REVIEWER,
548
+ projectId: this.projectId,
549
+ patchReleaseVersionId: this.patchReleaseVersionId,
550
+ reviewId: this.review.id,
551
+ };
552
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionLaunched(
553
+ this.editorStore.applicationStore.telemetryService,
554
+ undefined,
555
+ identity,
556
+ );
493
557
  try {
494
558
  this.currentReview = Review.serialization.fromJson(
495
559
  (yield this.editorStore.sdlcServerClient.reopenReview(
@@ -498,12 +562,22 @@ export class ProjectReviewerStore {
498
562
  this.review.id,
499
563
  )) as PlainObject<Review>,
500
564
  );
565
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionSucceeded(
566
+ this.editorStore.applicationStore.telemetryService,
567
+ undefined,
568
+ { ...identity, durationMs: Date.now() - startTime },
569
+ );
501
570
  } catch (error) {
502
571
  assertErrorThrown(error);
503
572
  this.editorStore.applicationStore.logService.error(
504
573
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.SDLC_MANAGER_FAILURE),
505
574
  error,
506
575
  );
576
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionFailure(
577
+ this.editorStore.applicationStore.telemetryService,
578
+ undefined,
579
+ { ...identity, errorMessage: error.message },
580
+ );
507
581
  this.editorStore.applicationStore.notificationService.notifyError(error);
508
582
  } finally {
509
583
  this.reOpenState.complete();
@@ -512,6 +586,19 @@ export class ProjectReviewerStore {
512
586
 
513
587
  *closeReview(): GeneratorFn<void> {
514
588
  this.closeState.inProgress();
589
+ const startTime = Date.now();
590
+ const identity = {
591
+ action: SDLC_REVIEW_ACTION.CLOSE,
592
+ role: SDLC_REVIEW_ROLE.REVIEWER,
593
+ projectId: this.projectId,
594
+ patchReleaseVersionId: this.patchReleaseVersionId,
595
+ reviewId: this.review.id,
596
+ };
597
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionLaunched(
598
+ this.editorStore.applicationStore.telemetryService,
599
+ undefined,
600
+ identity,
601
+ );
515
602
  try {
516
603
  this.currentReview = Review.serialization.fromJson(
517
604
  (yield this.editorStore.sdlcServerClient.closeReview(
@@ -520,12 +607,22 @@ export class ProjectReviewerStore {
520
607
  this.review.id,
521
608
  )) as PlainObject<Review>,
522
609
  );
610
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionSucceeded(
611
+ this.editorStore.applicationStore.telemetryService,
612
+ undefined,
613
+ { ...identity, durationMs: Date.now() - startTime },
614
+ );
523
615
  } catch (error) {
524
616
  assertErrorThrown(error);
525
617
  this.editorStore.applicationStore.logService.error(
526
618
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.SDLC_MANAGER_FAILURE),
527
619
  error,
528
620
  );
621
+ LegendStudioTelemetryHelper.logEvent_SdlcReviewActionFailure(
622
+ this.editorStore.applicationStore.telemetryService,
623
+ undefined,
624
+ { ...identity, errorMessage: error.message },
625
+ );
529
626
  this.editorStore.applicationStore.notificationService.notifyError(error);
530
627
  } finally {
531
628
  this.closeState.complete();
@@ -16,6 +16,10 @@
16
16
 
17
17
  import { observable, action, flowResult, makeObservable, flow } from 'mobx';
18
18
  import { LEGEND_STUDIO_APP_EVENT } from '../../__lib__/LegendStudioEvent.js';
19
+ import {
20
+ LegendStudioTelemetryHelper,
21
+ SETUP_ACTION,
22
+ } from '../../__lib__/LegendStudioTelemetryHelper.js';
19
23
  import {
20
24
  type GeneratorFn,
21
25
  type PlainObject,
@@ -305,11 +309,16 @@ export class WorkspaceSetupStore {
305
309
  }
306
310
 
307
311
  *createSandboxProject(): GeneratorFn<void> {
312
+ if (!this.hasSandboxAccess) {
313
+ this.setSandboxModal(true);
314
+ return;
315
+ }
316
+ const startTime = Date.now();
317
+ LegendStudioTelemetryHelper.logEvent_SetupActionLaunched(
318
+ this.applicationStore.telemetryService,
319
+ { action: SETUP_ACTION.CREATE_SANDBOX_PROJECT },
320
+ );
308
321
  try {
309
- if (!this.hasSandboxAccess) {
310
- this.setSandboxModal(true);
311
- return;
312
- }
313
322
  // create sandbox project and pilot workspace
314
323
  this.applicationStore.alertService.setBlockingAlert({
315
324
  message: 'Creating sandbox project...',
@@ -355,12 +364,27 @@ export class WorkspaceSetupStore {
355
364
  this.applicationStore.notificationService.notifySuccess(
356
365
  `Sandbox project with workspace created`,
357
366
  );
367
+ LegendStudioTelemetryHelper.logEvent_SetupActionSucceeded(
368
+ this.applicationStore.telemetryService,
369
+ {
370
+ action: SETUP_ACTION.CREATE_SANDBOX_PROJECT,
371
+ projectId: sandbox.projectId,
372
+ durationMs: Date.now() - startTime,
373
+ },
374
+ );
358
375
  } catch (error) {
359
376
  assertErrorThrown(error);
360
377
  this.applicationStore.logService.error(
361
378
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.ENGINE_MANAGER_FAILURE),
362
379
  error,
363
380
  );
381
+ LegendStudioTelemetryHelper.logEvent_SetupActionFailure(
382
+ this.applicationStore.telemetryService,
383
+ {
384
+ action: SETUP_ACTION.CREATE_SANDBOX_PROJECT,
385
+ errorMessage: error.message,
386
+ },
387
+ );
364
388
  this.applicationStore.notificationService.notifyError(error);
365
389
  } finally {
366
390
  this.applicationStore.alertService.setBlockingAlert(undefined);
@@ -843,6 +867,11 @@ export class WorkspaceSetupStore {
843
867
  tags: string[] = [],
844
868
  ): GeneratorFn<void> {
845
869
  this.createOrImportProjectState.inProgress();
870
+ const startTime = Date.now();
871
+ LegendStudioTelemetryHelper.logEvent_SetupActionLaunched(
872
+ this.applicationStore.telemetryService,
873
+ { action: SETUP_ACTION.CREATE_PROJECT },
874
+ );
846
875
  try {
847
876
  const createdProject = Project.serialization.fromJson(
848
877
  (yield this.sdlcServerClient.createProject({
@@ -862,8 +891,23 @@ export class WorkspaceSetupStore {
862
891
  yield flowResult(this.changeProject(createdProject));
863
892
 
864
893
  this.setShowCreateProjectModal(false);
894
+ LegendStudioTelemetryHelper.logEvent_SetupActionSucceeded(
895
+ this.applicationStore.telemetryService,
896
+ {
897
+ action: SETUP_ACTION.CREATE_PROJECT,
898
+ projectId: createdProject.projectId,
899
+ durationMs: Date.now() - startTime,
900
+ },
901
+ );
865
902
  } catch (error) {
866
903
  assertErrorThrown(error);
904
+ LegendStudioTelemetryHelper.logEvent_SetupActionFailure(
905
+ this.applicationStore.telemetryService,
906
+ {
907
+ action: SETUP_ACTION.CREATE_PROJECT,
908
+ errorMessage: error.message,
909
+ },
910
+ );
867
911
  this.applicationStore.notificationService.notifyError(error);
868
912
  } finally {
869
913
  this.createOrImportProjectState.reset();
@@ -876,6 +920,11 @@ export class WorkspaceSetupStore {
876
920
  artifactId: string,
877
921
  ): GeneratorFn<void> {
878
922
  this.createOrImportProjectState.inProgress();
923
+ const startTime = Date.now();
924
+ LegendStudioTelemetryHelper.logEvent_SetupActionLaunched(
925
+ this.applicationStore.telemetryService,
926
+ { action: SETUP_ACTION.IMPORT_PROJECT },
927
+ );
879
928
  try {
880
929
  const report = ImportReport.serialization.fromJson(
881
930
  (yield this.sdlcServerClient.importProject({
@@ -900,8 +949,23 @@ export class WorkspaceSetupStore {
900
949
  this.searchCache.clear();
901
950
 
902
951
  yield flowResult(this.changeProject(report.project));
952
+ LegendStudioTelemetryHelper.logEvent_SetupActionSucceeded(
953
+ this.applicationStore.telemetryService,
954
+ {
955
+ action: SETUP_ACTION.IMPORT_PROJECT,
956
+ projectId: report.project.projectId,
957
+ durationMs: Date.now() - startTime,
958
+ },
959
+ );
903
960
  } catch (error) {
904
961
  assertErrorThrown(error);
962
+ LegendStudioTelemetryHelper.logEvent_SetupActionFailure(
963
+ this.applicationStore.telemetryService,
964
+ {
965
+ action: SETUP_ACTION.IMPORT_PROJECT,
966
+ errorMessage: error.message,
967
+ },
968
+ );
905
969
  this.applicationStore.notificationService.notifyError(error);
906
970
  } finally {
907
971
  this.createOrImportProjectState.reset();
@@ -915,6 +979,17 @@ export class WorkspaceSetupStore {
915
979
  workspaceType: WorkspaceType,
916
980
  ): GeneratorFn<void> {
917
981
  this.createWorkspaceState.inProgress();
982
+ const startTime = Date.now();
983
+ const identity = {
984
+ action: SETUP_ACTION.CREATE_WORKSPACE,
985
+ projectId,
986
+ workspaceType,
987
+ hasPatchReleaseVersion: patchReleaseVersionId !== undefined,
988
+ };
989
+ LegendStudioTelemetryHelper.logEvent_SetupActionLaunched(
990
+ this.applicationStore.telemetryService,
991
+ identity,
992
+ );
918
993
  try {
919
994
  const newWorkspace = Workspace.serialization.fromJson(
920
995
  (yield this.sdlcServerClient.createWorkspace(
@@ -944,12 +1019,20 @@ export class WorkspaceSetupStore {
944
1019
  if (!matchingWorkspace) {
945
1020
  this.workspaces.push(newWorkspace);
946
1021
  }
1022
+ LegendStudioTelemetryHelper.logEvent_SetupActionSucceeded(
1023
+ this.applicationStore.telemetryService,
1024
+ { ...identity, durationMs: Date.now() - startTime },
1025
+ );
947
1026
  } catch (error) {
948
1027
  assertErrorThrown(error);
949
1028
  this.applicationStore.logService.error(
950
1029
  LogEvent.create(LEGEND_STUDIO_APP_EVENT.WORKSPACE_SETUP_FAILURE),
951
1030
  error,
952
1031
  );
1032
+ LegendStudioTelemetryHelper.logEvent_SetupActionFailure(
1033
+ this.applicationStore.telemetryService,
1034
+ { ...identity, errorMessage: error.message },
1035
+ );
953
1036
  this.applicationStore.notificationService.notifyError(error);
954
1037
  } finally {
955
1038
  this.createWorkspaceState.reset();
package/tsconfig.json CHANGED
@@ -72,6 +72,7 @@
72
72
  "./src/application/LegendStudioApplicationConfig.ts",
73
73
  "./src/application/LegendStudioPluginManager.ts",
74
74
  "./src/components/__test-utils__/EmbeddedQueryBuilderTestUtils.ts",
75
+ "./src/components/editor/editor-group/LegendAISuggestTelemetryHooks.ts",
75
76
  "./src/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.ts",
76
77
  "./src/components/editor/editor-group/database-editor/DatabaseDiagramHelper.ts",
77
78
  "./src/components/shared/StudioSDLCErrors.ts",
@@ -88,11 +89,13 @@
88
89
  "./src/stores/editor/EditorSDLCState.ts",
89
90
  "./src/stores/editor/EditorStore.ts",
90
91
  "./src/stores/editor/EditorTabManagerState.ts",
92
+ "./src/stores/editor/EditorTabTelemetryHelper.ts",
91
93
  "./src/stores/editor/EmbeddedQueryBuilderState.ts",
92
94
  "./src/stores/editor/ExplorerTreeState.ts",
93
95
  "./src/stores/editor/GraphEditFormModeState.ts",
94
96
  "./src/stores/editor/GraphEditGrammarModeState.ts",
95
97
  "./src/stores/editor/GraphEditorMode.ts",
98
+ "./src/stores/editor/LegendAISuggestTelemetry.ts",
96
99
  "./src/stores/editor/LegendSQLStudioPlaygroundState.ts",
97
100
  "./src/stores/editor/NewElementState.ts",
98
101
  "./src/stores/editor/QuickInputState.ts",