@morscherlab/mint-sdk 1.0.0-beta.7 → 1.0.0-rc.2

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 (163) hide show
  1. package/README.md +9 -1
  2. package/dist/__tests__/components/LcmsSequenceTable.test.d.ts +1 -0
  3. package/dist/__tests__/components/ProgressBar.test.d.ts +1 -0
  4. package/dist/__tests__/components/RackEditor.test.d.ts +1 -0
  5. package/dist/__tests__/components/SequenceProgressBar.test.d.ts +1 -0
  6. package/dist/__tests__/composables/useExperimentSamples.test.d.ts +1 -0
  7. package/dist/__tests__/composables/useProtocolTemplates.test.d.ts +1 -0
  8. package/dist/__tests__/stores/settings.test.d.ts +1 -0
  9. package/dist/__tests__/utils/instrument.test.d.ts +1 -0
  10. package/dist/__tests__/utils/lcms.test.d.ts +1 -0
  11. package/dist/__tests__/utils/permissions.test.d.ts +1 -0
  12. package/dist/__tests__/utils/rack.test.d.ts +1 -0
  13. package/dist/{auth-QQj2kkze.js → auth-B7g4J4ZF.js} +148 -24
  14. package/dist/auth-B7g4J4ZF.js.map +1 -0
  15. package/dist/components/AutoGroupModal.vue.d.ts +1 -1
  16. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  17. package/dist/components/BaseToggle.vue.d.ts +2 -2
  18. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +1 -1
  19. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +1 -1
  20. package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +1 -1
  21. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +1 -1
  22. package/dist/components/FormulaInput.vue.d.ts +1 -1
  23. package/dist/components/InstrumentAlertLog.vue.d.ts +22 -0
  24. package/dist/components/InstrumentStateBadge.vue.d.ts +11 -0
  25. package/dist/components/InstrumentStatusCard.vue.d.ts +13 -0
  26. package/dist/components/LcmsSequenceTable.vue.d.ts +26 -0
  27. package/dist/components/ProgressBar.vue.d.ts +1 -0
  28. package/dist/components/RackEditor.vue.d.ts +41 -3
  29. package/dist/components/ReagentList.vue.d.ts +1 -1
  30. package/dist/components/SampleSelector.vue.d.ts +5 -2
  31. package/dist/components/SegmentedControl.vue.d.ts +2 -0
  32. package/dist/components/SequenceInput.vue.d.ts +1 -1
  33. package/dist/components/SequenceProgressBar.vue.d.ts +15 -0
  34. package/dist/components/SettingsModal.vue.d.ts +8 -1
  35. package/dist/components/TagsInput.vue.d.ts +1 -1
  36. package/dist/components/WellPlate.vue.d.ts +42 -3
  37. package/dist/components/index.d.ts +5 -0
  38. package/dist/components/index.js +3 -3
  39. package/dist/{components-DihbSJjU.js → components-BhK-dW99.js} +2135 -1075
  40. package/dist/components-BhK-dW99.js.map +1 -0
  41. package/dist/composables/experimentDesignData.d.ts +17 -0
  42. package/dist/composables/index.d.ts +2 -0
  43. package/dist/composables/index.js +4 -4
  44. package/dist/composables/useControlSchema.d.ts +11 -0
  45. package/dist/composables/useExperimentData.d.ts +11 -3
  46. package/dist/composables/useExperimentSamples.d.ts +42 -0
  47. package/dist/composables/usePlatformContext.d.ts +54 -0
  48. package/dist/{composables-BcgZ6diz.js → composables-Bg7CFuNz.js} +5 -3
  49. package/dist/composables-Bg7CFuNz.js.map +1 -0
  50. package/dist/index.d.ts +4 -0
  51. package/dist/index.js +168 -6
  52. package/dist/index.js.map +1 -0
  53. package/dist/install.js +2 -2
  54. package/dist/instrument.d.ts +7 -0
  55. package/dist/lcms.d.ts +27 -0
  56. package/dist/permissions.d.ts +46 -0
  57. package/dist/stores/auth.d.ts +74 -2
  58. package/dist/stores/index.js +1 -1
  59. package/dist/styles.css +3186 -1070
  60. package/dist/templates/builders.d.ts +7 -3
  61. package/dist/templates/index.d.ts +2 -2
  62. package/dist/templates/index.js +2 -2
  63. package/dist/templates/presets.d.ts +12 -0
  64. package/dist/templates/types.d.ts +16 -1
  65. package/dist/{templates-Cyt0Suwf.js → templates-BorLR_7p.js} +324 -10
  66. package/dist/templates-BorLR_7p.js.map +1 -0
  67. package/dist/types/auth.d.ts +2 -0
  68. package/dist/types/components.d.ts +32 -3
  69. package/dist/types/form-builder.d.ts +2 -1
  70. package/dist/types/index.d.ts +4 -1
  71. package/dist/types/instrument.d.ts +56 -0
  72. package/dist/types/platform.d.ts +3 -0
  73. package/dist/{useExperimentData-CM6Y0u5L.js → useProtocolTemplates-n6AJqSqv.js} +627 -380
  74. package/dist/useProtocolTemplates-n6AJqSqv.js.map +1 -0
  75. package/dist/utils/rack.d.ts +47 -0
  76. package/package.json +1 -1
  77. package/src/__tests__/components/AppTopBar.test.ts +15 -0
  78. package/src/__tests__/components/BaseTabs.test.ts +15 -0
  79. package/src/__tests__/components/GroupAssigner.test.ts +18 -0
  80. package/src/__tests__/components/LcmsSequenceTable.test.ts +57 -0
  81. package/src/__tests__/components/ProgressBar.test.ts +18 -0
  82. package/src/__tests__/components/RackEditor.test.ts +125 -0
  83. package/src/__tests__/components/SampleSelector.test.ts +25 -0
  84. package/src/__tests__/components/SegmentedControl.test.ts +45 -0
  85. package/src/__tests__/components/SequenceProgressBar.test.ts +39 -0
  86. package/src/__tests__/components/SettingsModal.test.ts +83 -2
  87. package/src/__tests__/composables/useApi.test.ts +45 -0
  88. package/src/__tests__/composables/useAuth.test.ts +20 -0
  89. package/src/__tests__/composables/useControlSchema.test.ts +4 -0
  90. package/src/__tests__/composables/useExperimentData.test.ts +23 -0
  91. package/src/__tests__/composables/useExperimentSamples.test.ts +91 -0
  92. package/src/__tests__/composables/useProtocolTemplates.test.ts +64 -0
  93. package/src/__tests__/stores/settings.test.ts +78 -0
  94. package/src/__tests__/templates/templates.test.ts +86 -0
  95. package/src/__tests__/utils/instrument.test.ts +47 -0
  96. package/src/__tests__/utils/lcms.test.ts +73 -0
  97. package/src/__tests__/utils/permissions.test.ts +50 -0
  98. package/src/__tests__/utils/rack.test.ts +120 -0
  99. package/src/components/AppAvatarMenu.vue +6 -3
  100. package/src/components/AppTopBar.vue +16 -10
  101. package/src/components/AuditTrail.vue +1 -1
  102. package/src/components/BaseTabs.vue +22 -1
  103. package/src/components/Calendar.vue +6 -2
  104. package/src/components/ConcentrationInput.vue +3 -2
  105. package/src/components/GroupAssigner.vue +8 -3
  106. package/src/components/InstrumentAlertLog.vue +191 -0
  107. package/src/components/InstrumentStateBadge.vue +50 -0
  108. package/src/components/InstrumentStatusCard.vue +188 -0
  109. package/src/components/LcmsSequenceTable.vue +191 -0
  110. package/src/components/NumberInput.vue +5 -3
  111. package/src/components/ProgressBar.vue +3 -0
  112. package/src/components/RackEditor.vue +73 -2
  113. package/src/components/SampleHierarchyTree.vue +3 -2
  114. package/src/components/SampleSelector.vue +28 -9
  115. package/src/components/SegmentedControl.story.vue +17 -0
  116. package/src/components/SegmentedControl.vue +14 -3
  117. package/src/components/SequenceProgressBar.vue +71 -0
  118. package/src/components/SettingsModal.vue +49 -2
  119. package/src/components/UnitInput.vue +6 -2
  120. package/src/components/WellPlate.vue +145 -24
  121. package/src/components/index.ts +5 -0
  122. package/src/components/internal/WellEditPopupInternal.vue +1 -0
  123. package/src/composables/experimentDesignData.ts +182 -0
  124. package/src/composables/index.ts +14 -0
  125. package/src/composables/useApi.ts +113 -16
  126. package/src/composables/useAuth.ts +4 -0
  127. package/src/composables/useAutoGroup.ts +18 -9
  128. package/src/composables/useControlSchema.ts +21 -0
  129. package/src/composables/useExperimentData.ts +57 -16
  130. package/src/composables/useExperimentSamples.ts +142 -0
  131. package/src/composables/useProtocolTemplates.ts +13 -1
  132. package/src/composables/useRackEditor.ts +3 -2
  133. package/src/index.ts +27 -0
  134. package/src/instrument.ts +90 -0
  135. package/src/lcms.ts +108 -0
  136. package/src/permissions.ts +143 -0
  137. package/src/stores/auth.ts +79 -26
  138. package/src/stores/settings.ts +10 -0
  139. package/src/styles/components/instrument-monitor.css +478 -0
  140. package/src/styles/components/lcms-sequence-table.css +189 -0
  141. package/src/styles/components/sequence-progress-bar.css +63 -0
  142. package/src/styles/components/settings-modal.css +9 -0
  143. package/src/styles/components/tabs.css +9 -0
  144. package/src/styles/components/well-edit-popup.css +7 -1
  145. package/src/styles/components/well-plate.css +5 -0
  146. package/src/styles/index.css +3 -0
  147. package/src/templates/builders.ts +201 -0
  148. package/src/templates/controlSchemas.ts +68 -0
  149. package/src/templates/index.ts +2 -0
  150. package/src/templates/presets.ts +23 -0
  151. package/src/templates/types.ts +17 -0
  152. package/src/types/auth.ts +3 -0
  153. package/src/types/components.ts +45 -3
  154. package/src/types/form-builder.ts +2 -1
  155. package/src/types/index.ts +35 -0
  156. package/src/types/instrument.ts +61 -0
  157. package/src/types/platform.ts +4 -0
  158. package/src/utils/rack.ts +209 -0
  159. package/dist/auth-QQj2kkze.js.map +0 -1
  160. package/dist/components-DihbSJjU.js.map +0 -1
  161. package/dist/composables-BcgZ6diz.js.map +0 -1
  162. package/dist/templates-Cyt0Suwf.js.map +0 -1
  163. package/dist/useExperimentData-CM6Y0u5L.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { RoleInfo } from '../permissions';
1
2
  export interface AuthConfig {
2
3
  authRequired: boolean;
3
4
  passkeyEnabled: boolean;
@@ -11,6 +12,7 @@ export interface UserInfo {
11
12
  shortname: string | null;
12
13
  email: string | null;
13
14
  role: string;
15
+ roleObj?: RoleInfo | null;
14
16
  isActive: boolean;
15
17
  }
16
18
  export interface LoginResponse {
@@ -1,4 +1,5 @@
1
1
  import { UserSummary } from './platform';
2
+ import { AccessControlled, AccessAudience, AccessAudienceInput } from '../permissions';
2
3
  export type ContainerDirection = 'row' | 'column';
3
4
  export type ButtonVariant = 'primary' | 'secondary' | 'cta' | 'danger' | 'success' | 'ghost';
4
5
  export type ButtonSize = 'sm' | 'md' | 'lg';
@@ -15,7 +16,7 @@ export interface Toast {
15
16
  export interface TabItem {
16
17
  id: string;
17
18
  label: string;
18
- icon?: string;
19
+ icon?: string | string[];
19
20
  disabled?: boolean;
20
21
  badge?: string | number;
21
22
  }
@@ -85,6 +86,8 @@ export interface TopBarSettingsConfig {
85
86
  values?: Record<string, unknown>;
86
87
  /** Dynamic enhancements (validators, dynamic options, callbacks). Forwarded to SettingsModal. */
87
88
  enhancements?: import('./form-builder').FormEnhancements;
89
+ /** Optional user type override for permission-filtered settings content. Defaults to SDK auth/platform context. */
90
+ userType?: SettingsUserType;
88
91
  }
89
92
  export interface PillNavItem {
90
93
  id: string;
@@ -171,6 +174,22 @@ export interface WellEditData {
171
174
  customMethod: string;
172
175
  }
173
176
  export type WellEditField = 'label' | 'sampleType' | 'injectionVolume' | 'injectionCount' | 'customMethod';
177
+ export interface WellSampleDropData {
178
+ id?: string;
179
+ sampleName?: string;
180
+ label?: string;
181
+ sampleType?: string;
182
+ injectionVolume?: number;
183
+ injectionCount?: number;
184
+ customMethod?: string | null;
185
+ metadata?: Record<string, unknown>;
186
+ raw?: unknown;
187
+ }
188
+ export interface WellSampleDropContext {
189
+ wellId: string;
190
+ event: DragEvent;
191
+ }
192
+ export type WellSampleDropParser = (event: DragEvent, context: WellSampleDropContext) => WellSampleDropData | null | undefined;
174
193
  export interface WellLegendItem {
175
194
  type: string;
176
195
  label: string;
@@ -196,6 +215,13 @@ export interface Rack {
196
215
  injectionVolume: number;
197
216
  wells: Record<string, Partial<Well>>;
198
217
  }
218
+ export interface RackSampleDropContext {
219
+ rack: Rack;
220
+ rackId: string;
221
+ wellId: string;
222
+ event: DragEvent;
223
+ }
224
+ export type RackSampleDropMapper = (data: WellSampleDropData, context: RackSampleDropContext) => WellEditData | null | undefined;
199
225
  export interface SampleType {
200
226
  id: string;
201
227
  name: string;
@@ -381,7 +407,7 @@ export interface BreadcrumbItem {
381
407
  export type BreadcrumbItemInput = BreadcrumbItem | string;
382
408
  export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
383
409
  export type ConfirmVariant = 'danger' | 'warning' | 'info';
384
- export interface SettingsTab {
410
+ export interface SettingsTab extends AccessControlled {
385
411
  id: string;
386
412
  label: string;
387
413
  /**
@@ -400,7 +426,7 @@ export type SettingsModalLayout = 'horizontal' | 'vertical';
400
426
  * SDK form components (BaseInput / BaseSelect / NumberInput / Toggle / …)
401
427
  * via the same registry that powers FormBuilder.
402
428
  */
403
- export interface SettingsGroup {
429
+ export interface SettingsGroup extends AccessControlled {
404
430
  id: string;
405
431
  label: string;
406
432
  description?: string;
@@ -419,6 +445,9 @@ export interface SettingsGroup {
419
445
  export interface SettingsModalSchema {
420
446
  groups: SettingsGroup[];
421
447
  }
448
+ export type SettingsUserType = Exclude<AccessAudience, 'all'>;
449
+ export type SettingsAudience = AccessAudience;
450
+ export type SettingsAudienceInput = AccessAudienceInput;
422
451
  export type NumberNotation = 'auto' | 'scientific' | 'engineering' | 'compact';
423
452
  export interface UnitOption {
424
453
  value: string;
@@ -1,5 +1,6 @@
1
1
  import { FieldRules } from '../composables/useForm';
2
2
  import { OptionPrimitive, SelectOption } from './components';
3
+ import { AccessControlled } from '../permissions';
3
4
  /** All supported field types that map to SDK components. */
4
5
  export type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'textarea' | 'select' | 'multiselect' | 'checkbox' | 'toggle' | 'radio' | 'slider' | 'tags' | 'date' | 'time' | 'datetime' | 'file' | 'formula' | 'sequence' | 'molecule' | 'concentration' | 'unit';
5
6
  export type FieldCondition = {
@@ -67,7 +68,7 @@ export interface FieldValidation {
67
68
  };
68
69
  email?: boolean | string;
69
70
  }
70
- export interface FormFieldSchema {
71
+ export interface FormFieldSchema extends AccessControlled {
71
72
  name: string;
72
73
  label: string;
73
74
  type: FormFieldType;
@@ -1,4 +1,7 @@
1
- export type { ContainerDirection, ButtonVariant, ButtonSize, InputType, ModalSize, ModalVariant, AlertType, Toast, TabItem, TabItemInput, OptionPrimitive, SelectOption, SelectOptionInput, RadioOption, RadioOptionInput, FormFieldProps, SidebarToolSection, CollapsibleState, TopBarVariant, TopBarSettingsConfig, PillNavOption, PillNavOptionInput, PillNavItem, PillNavItemInput, PageSelectorItem, PageSelectorItemInput, PluginSwitcherPlugin, PluginSwitcherInfo, AccountMenuItem, WellPlateFormat, WellState, WellPlateSelectionMode, WellPlateSize, WellShape, Well, HeatmapColorScale, HeatmapConfig, SlotPosition, WellExtendedData, WellEditData, WellEditField, WellLegendItem, PlateCondition, ColumnCondition, RowCondition, Rack, SampleType, PlateMap, PlateMapEditorState, ProtocolStepType, ProtocolStepStatus, ProtocolStep, SampleGroup, GroupItem, FileUploaderMode, SegmentedOption, SegmentedOptionInput, SegmentedControlVariant, SegmentedControlSize, MultiSelectOption, MultiSelectOptionInput, MultiSelectSize, PillVariant, PillColor, PillSize, CalendarSelectionMode, CalendarMarker, CalendarDayContext, SortDirection, SortState, DataFrameColumn, PaginationState, SpinnerSize, SpinnerVariant, DividerSpacing, StatusType, ProgressVariant, ProgressSize, AvatarSize, EmptyStateColor, EmptyStateSize, BreadcrumbItem, BreadcrumbItemInput, TooltipPosition, ConfirmVariant, SettingsTab, SettingsTabInput, SettingsModalLayout, SettingsGroup, SettingsModalSchema, NumberNotation, UnitOption, WizardStep, WizardStepState, AuditEntryType, AuditEntry, BatchItemStatus, BatchItem, BatchSummary, TimePickerFormat, TimeRange, ScheduleView, ScheduleEventStatus, ScheduleEvent, ScheduleBlockedSlot, ScheduleSlotContext, ScheduleEventCreateContext, ScheduleEventUpdateContext, SummarySectionItem, SummarySection, SummaryData, ResourceStatus, ResourceSpec, MoleculeData, ExperimentStatus, DatePreset, ExperimentSortField, ExperimentTypeOption, ExperimentSummary, ExperimentListResponse, ExperimentFilters, FitState, FitResultSummary, StorageCondition, ReagentColumn, Reagent, TreeNodeType, BadgeVariant, TreeNode, } from './components';
1
+ export type { ContainerDirection, ButtonVariant, ButtonSize, InputType, ModalSize, ModalVariant, AlertType, Toast, TabItem, TabItemInput, OptionPrimitive, SelectOption, SelectOptionInput, RadioOption, RadioOptionInput, FormFieldProps, SidebarToolSection, CollapsibleState, TopBarVariant, TopBarSettingsConfig, PillNavOption, PillNavOptionInput, PillNavItem, PillNavItemInput, PageSelectorItem, PageSelectorItemInput, PluginSwitcherPlugin, PluginSwitcherInfo, AccountMenuItem, WellPlateFormat, WellState, WellPlateSelectionMode, WellPlateSize, WellShape, Well, HeatmapColorScale, HeatmapConfig, SlotPosition, WellExtendedData, WellEditData, WellEditField, WellSampleDropData, WellSampleDropContext, WellSampleDropParser, WellLegendItem, PlateCondition, ColumnCondition, RowCondition, Rack, RackSampleDropContext, RackSampleDropMapper, SampleType, PlateMap, PlateMapEditorState, ProtocolStepType, ProtocolStepStatus, ProtocolStep, SampleGroup, GroupItem, FileUploaderMode, SegmentedOption, SegmentedOptionInput, SegmentedControlVariant, SegmentedControlSize, MultiSelectOption, MultiSelectOptionInput, MultiSelectSize, PillVariant, PillColor, PillSize, CalendarSelectionMode, CalendarMarker, CalendarDayContext, SortDirection, SortState, DataFrameColumn, PaginationState, SpinnerSize, SpinnerVariant, DividerSpacing, StatusType, ProgressVariant, ProgressSize, AvatarSize, EmptyStateColor, EmptyStateSize, BreadcrumbItem, BreadcrumbItemInput, TooltipPosition, ConfirmVariant, SettingsTab, SettingsTabInput, SettingsModalLayout, SettingsGroup, SettingsModalSchema, SettingsUserType, SettingsAudience, SettingsAudienceInput, NumberNotation, UnitOption, WizardStep, WizardStepState, AuditEntryType, AuditEntry, BatchItemStatus, BatchItem, BatchSummary, TimePickerFormat, TimeRange, ScheduleView, ScheduleEventStatus, ScheduleEvent, ScheduleBlockedSlot, ScheduleSlotContext, ScheduleEventCreateContext, ScheduleEventUpdateContext, SummarySectionItem, SummarySection, SummaryData, ResourceStatus, ResourceSpec, MoleculeData, ExperimentStatus, DatePreset, ExperimentSortField, ExperimentTypeOption, ExperimentSummary, ExperimentListResponse, ExperimentFilters, FitState, FitResultSummary, StorageCondition, ReagentColumn, Reagent, TreeNodeType, BadgeVariant, TreeNode, } from './components';
2
+ export type { InstrumentAlert, InstrumentAlertBody, InstrumentAlertLevel, InstrumentState, InstrumentStatus, SampleInfo, SampleInfo as InstrumentSampleInfo, SequenceProgress, } from './instrument';
3
+ export type { LcmsContainerType, LcmsPolarity, LcmsSequenceItem, LcmsSequenceTableColumn, } from '../lcms';
4
+ export type { AccessAudience, AccessAudienceInput, AccessPolicy, AccessControlled, PermissionUser, RoleInfo, } from '../permissions';
2
5
  export type { FormFieldType, FieldCondition, FieldValidation, FormFieldSchema, FormOptionInput, FormSectionSchema, FormStepSchema, FormSchema, FieldEnhancement, FormEnhancements, UseFormBuilderReturn, } from './form-builder';
3
6
  export type { OutlierAction, InputMode, OutlierInfo, ColumnInfo, MetadataRow, AutoGroupResult, ParsedCsvData, } from './auto-group';
4
7
  export type { AuthConfig, UserInfo, LoginResponse, TokenVerifyResponse, RegisterRequest, UpdateProfileRequest, CredentialInfo, } from './auth';
@@ -0,0 +1,56 @@
1
+ export type InstrumentState = 'idle' | 'running' | 'standby' | 'connected' | 'disconnected' | 'error';
2
+ export type InstrumentAlertLevel = 'info' | 'warning' | 'critical';
3
+ export interface SampleInfo {
4
+ file_name: string;
5
+ sample_id?: string | null;
6
+ sample_name?: string | null;
7
+ vial_position?: string | null;
8
+ injection_volume?: number | null;
9
+ }
10
+ export interface SequenceProgress {
11
+ sequence_name?: string | null;
12
+ current_sample: number;
13
+ total_samples: number;
14
+ elapsed_seconds?: number;
15
+ estimated_remaining_seconds?: number | null;
16
+ avg_sample_seconds?: number | null;
17
+ current_sample_name?: string | null;
18
+ current_method?: string | null;
19
+ estimated_finish_time?: string | Date | null;
20
+ sample_durations?: readonly number[];
21
+ }
22
+ export interface InstrumentStatus {
23
+ instrument_id: string;
24
+ instrument_name?: string | null;
25
+ monitor_id?: string | null;
26
+ state: InstrumentState;
27
+ active_method?: string | null;
28
+ current_sample?: SampleInfo | null;
29
+ sequence_progress?: SequenceProgress | null;
30
+ timestamp?: string | Date;
31
+ last_seen?: string | Date | null;
32
+ connected?: boolean;
33
+ sequence_file?: string | null;
34
+ sequence_row_index?: number | null;
35
+ current_raw_file?: string | null;
36
+ method_elapsed_pct?: number | null;
37
+ }
38
+ export interface InstrumentAlertBody {
39
+ source?: string | null;
40
+ event?: string | null;
41
+ detail: string;
42
+ code?: number | null;
43
+ raw_file?: string | null;
44
+ }
45
+ export interface InstrumentAlert {
46
+ id?: string;
47
+ instrument_id: string;
48
+ instrument_name?: string | null;
49
+ level: InstrumentAlertLevel;
50
+ rule?: string;
51
+ message?: string | null;
52
+ body?: InstrumentAlertBody | null;
53
+ context?: Record<string, unknown>;
54
+ timestamp?: string | Date;
55
+ acknowledged?: boolean;
56
+ }
@@ -1,3 +1,4 @@
1
+ import { RoleInfo } from '../permissions';
1
2
  export interface PluginInfo {
2
3
  id: string;
3
4
  name: string;
@@ -56,6 +57,8 @@ export interface PlatformContext {
56
57
  id: string;
57
58
  username: string;
58
59
  role: string;
60
+ role_obj?: RoleInfo | null;
61
+ roleObj?: RoleInfo | null;
59
62
  shortname?: string;
60
63
  };
61
64
  theme: 'light' | 'dark' | 'system';