@morscherlab/mint-sdk 1.1.13 → 1.1.14

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 (42) hide show
  1. package/dist/{SettingsModal-D7LFUokT.js → SettingsModal-Brvcqz4a.js} +3 -3
  2. package/dist/{SettingsModal-D7LFUokT.js.map → SettingsModal-Brvcqz4a.js.map} +1 -1
  3. package/dist/__tests__/components/RuntimeUpdateNotice.test.d.ts +1 -0
  4. package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +1 -0
  5. package/dist/components/RuntimeUpdateNotice.vue.d.ts +9 -0
  6. package/dist/components/index.d.ts +1 -0
  7. package/dist/components/index.js +4 -4
  8. package/dist/{components-DjJsjKqe.js → components-DIciVip2.js} +87 -23
  9. package/dist/components-DIciVip2.js.map +1 -0
  10. package/dist/composables/index.d.ts +2 -1
  11. package/dist/composables/index.js +6 -6
  12. package/dist/composables/usePlatformContext.d.ts +3 -0
  13. package/dist/composables/usePresenceHeartbeat.d.ts +5 -0
  14. package/dist/composables/useRuntimeAlignment.d.ts +44 -0
  15. package/dist/{composables-CRR_JxQD.js → composables-CPv3k1Yh.js} +3 -3
  16. package/dist/{composables-CRR_JxQD.js.map → composables-CPv3k1Yh.js.map} +1 -1
  17. package/dist/index.js +8 -8
  18. package/dist/install.js +3 -3
  19. package/dist/styles.css +27 -0
  20. package/dist/templates/index.js +2 -2
  21. package/dist/{templates-Cr-48-u2.js → templates-Dyyjr6wD.js} +2 -2
  22. package/dist/{templates-Cr-48-u2.js.map → templates-Dyyjr6wD.js.map} +1 -1
  23. package/dist/types/platform.d.ts +2 -0
  24. package/dist/{useControlSchema-BMVb2XIQ.js → useControlSchema-B6-PO0F6.js} +13 -14
  25. package/dist/{useControlSchema-BMVb2XIQ.js.map → useControlSchema-B6-PO0F6.js.map} +1 -1
  26. package/dist/{useFormBuilder-DG3HOFGA.js → useFormBuilder-Pgb9Td6h.js} +2 -2
  27. package/dist/{useFormBuilder-DG3HOFGA.js.map → useFormBuilder-Pgb9Td6h.js.map} +1 -1
  28. package/dist/{useProtocolTemplates-CIzDGj2R.js → useProtocolTemplates-CYCnwGtY.js} +112 -5
  29. package/dist/useProtocolTemplates-CYCnwGtY.js.map +1 -0
  30. package/package.json +1 -1
  31. package/src/__tests__/components/RuntimeUpdateNotice.test.ts +14 -0
  32. package/src/__tests__/composables/usePresenceHeartbeat.test.ts +17 -0
  33. package/src/__tests__/composables/useRuntimeAlignment.test.ts +145 -0
  34. package/src/components/AppTopBar.vue +14 -0
  35. package/src/components/RuntimeUpdateNotice.vue +51 -0
  36. package/src/components/index.ts +1 -0
  37. package/src/composables/index.ts +8 -0
  38. package/src/composables/usePresenceHeartbeat.ts +8 -1
  39. package/src/composables/useRuntimeAlignment.ts +184 -0
  40. package/src/types/platform.ts +2 -0
  41. package/dist/components-DjJsjKqe.js.map +0 -1
  42. package/dist/useProtocolTemplates-CIzDGj2R.js.map +0 -1
@@ -5,7 +5,8 @@ export { useTheme } from './useTheme';
5
5
  export { useToast } from './useToast';
6
6
  export { usePlatformContext } from './usePlatformContext';
7
7
  export { resolvePluginFrontendBase } from './pluginFrontendBase';
8
- export { getPresenceClientId, usePresenceHeartbeat, type PresenceHeartbeatOptions, type PresenceHeartbeatPayload, type UsePresenceHeartbeatReturn, } from './usePresenceHeartbeat';
8
+ export { getPresenceClientId, usePresenceHeartbeat, type PresenceHeartbeatOptions, type PresenceHeartbeatPayload, type PresenceHeartbeatResponse, type UsePresenceHeartbeatReturn, } from './usePresenceHeartbeat';
9
+ export { getInjectedFrontendRevision, useRuntimeAlignment, type RuntimeAlignmentOptions, type RuntimeRevisionResponse, type UseRuntimeAlignmentReturn, } from './useRuntimeAlignment';
9
10
  export { useForm, type ValidationRule, type FieldRules, type FieldState, type UseFormReturn, } from './useForm';
10
11
  export { useAsync, useAsyncBatch, type AsyncError, type AsyncState, type UseAsyncReturn, type UseAsyncOptions, } from './useAsync';
11
12
  export { useWellPlateEditor, type UseWellPlateEditorOptions, type UseWellPlateEditorReturn, } from './useWellPlateEditor';
@@ -1,11 +1,11 @@
1
1
  import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useEventListener, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "../experiment-utils-CLnzPPq5.js";
2
2
  import { r as useRequestSyncState } from "../EmptyState-p90quq8Z.js";
3
- import { A as useConcentrationUnits, B as useAnalysisArtifacts, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, Et as useSelectionLimit, F as ATOMIC_WEIGHTS, G as resolveCurrentPluginId, I as useChemicalFormula, J as usePluginJobs, K as createGeneratedAnalysisTransport, N as useSequenceUtils, S as controlsToTopBarSettingsConfig, St as useTimeUtils, T as getDefaultControlView, Tt as useListSelection, _ as controlsToFormSchema, _t as isTimeInRange, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, bt as snapToSlot, c as defineWellPlateDoseComponentBindings, ct as compareTime, d as defineControlModel, dt as findNearestTimeSlotIndex, ft as formatDuration, gt as generateTimeSlots, h as controlValuesToComponentProps, ht as fromMinutes, i as useControlSchema, l as defineWellPlateDoseControlProps, lt as durationMinutes, m as controlValuesToComponentBindingsById, mt as formatTimeSlot, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, pt as formatTime, q as useGeneratedAnalysis, r as getControlDefaults, s as defineWellPlateControlProps, st as addMinutes, t as defineControlComponentBindings, u as useControlWorkspace, ut as findAvailableSlots, v as controlsToSectionFormSchema, vt as parseTime, w as controlsToViewItems, x as controlsToSidebarPanels, xt as toMinutes, y as controlsToSectionFormSchemas, yt as rangesOverlap } from "../useControlSchema-BMVb2XIQ.js";
4
- import { $ as normalizeSearchQuery, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as getPresenceClientId, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as candidateMatchesSearch, R as DEFAULT_COLORS, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as useTheme, Y as usePresenceHeartbeat, Z as useToast, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useTextSearch, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as useSortedItems, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, tt as compareSortValues, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "../useProtocolTemplates-CIzDGj2R.js";
3
+ import { A as useConcentrationUnits, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, Et as useSelectionLimit, F as ATOMIC_WEIGHTS, G as createGeneratedAnalysisTransport, I as useChemicalFormula, K as useGeneratedAnalysis, N as useSequenceUtils, S as controlsToTopBarSettingsConfig, St as useTimeUtils, T as getDefaultControlView, Tt as useListSelection, W as resolveCurrentPluginId, _ as controlsToFormSchema, _t as isTimeInRange, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, bt as snapToSlot, c as defineWellPlateDoseComponentBindings, ct as compareTime, d as defineControlModel, dt as findNearestTimeSlotIndex, ft as formatDuration, gt as generateTimeSlots, h as controlValuesToComponentProps, ht as fromMinutes, i as useControlSchema, l as defineWellPlateDoseControlProps, lt as durationMinutes, m as controlValuesToComponentBindingsById, mt as formatTimeSlot, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, pt as formatTime, q as usePluginJobs, r as getControlDefaults, s as defineWellPlateControlProps, st as addMinutes, t as defineControlComponentBindings, u as useControlWorkspace, ut as findAvailableSlots, v as controlsToSectionFormSchema, vt as parseTime, w as controlsToViewItems, x as controlsToSidebarPanels, xt as toMinutes, y as controlsToSectionFormSchemas, yt as rangesOverlap, z as useAnalysisArtifacts } from "../useControlSchema-B6-PO0F6.js";
4
+ import { $ as useToast, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as getInjectedFrontendRevision, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as useTheme, R as DEFAULT_COLORS, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as getPresenceClientId, Y as useRuntimeAlignment, Z as usePresenceHeartbeat, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as candidateMatchesSearch, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, it as useSortedItems, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as useTextSearch, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, rt as compareSortValues, s as useRackEditor, t as useProtocolTemplates, tt as normalizeSearchQuery, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "../useProtocolTemplates-CYCnwGtY.js";
5
5
  import { r as useApi, t as AuthenticationRequiredError } from "../useApi-CDBq6z23.js";
6
- import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-DG3HOFGA.js";
6
+ import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-Pgb9Td6h.js";
7
7
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-DQ0MjwHZ.js";
8
- import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-Cr-48-u2.js";
8
+ import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-Dyyjr6wD.js";
9
9
  import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-D0pjj9WH.js";
10
- import { A as useAsync, C as createPluginResourceClient, D as buildAnalysisArtifactTargetQuery, E as useCommandHistory, M as resolvePluginFrontendBase, N as usePasskey, O as parseAnalysisArtifactTarget, P as useAuth, S as wellIdsInRectangle, T as useOptimisticMutation, _ as createWellPlateWells, a as pluginFormDataFromPayload, b as useWellPainting, c as usePluginClient, d as buildPluginEndpointUrl, f as resolvePluginBaseUrl, g as createRowConditions, h as createColumnConditions, i as getPluginPageSelectorItems, j as useAsyncBatch, k as usePluginConfig, l as usePluginEventStream, m as useWellPlateValidation, n as downloadBlob, o as uploadPluginEndpoint, p as runWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as usePluginSettings, v as useWellPlateAdapter, w as useResourceCrud, x as wellIdToCoordinate, y as coordinateToWellId } from "../composables-CRR_JxQD.js";
11
- export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileImport, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
10
+ import { A as useAsync, C as createPluginResourceClient, D as buildAnalysisArtifactTargetQuery, E as useCommandHistory, M as resolvePluginFrontendBase, N as usePasskey, O as parseAnalysisArtifactTarget, P as useAuth, S as wellIdsInRectangle, T as useOptimisticMutation, _ as createWellPlateWells, a as pluginFormDataFromPayload, b as useWellPainting, c as usePluginClient, d as buildPluginEndpointUrl, f as resolvePluginBaseUrl, g as createRowConditions, h as createColumnConditions, i as getPluginPageSelectorItems, j as useAsyncBatch, k as usePluginConfig, l as usePluginEventStream, m as useWellPlateValidation, n as downloadBlob, o as uploadPluginEndpoint, p as runWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as usePluginSettings, v as useWellPlateAdapter, w as useResourceCrud, x as wellIdToCoordinate, y as coordinateToWellId } from "../composables-CPv3k1Yh.js";
11
+ export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileImport, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
@@ -39,6 +39,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
39
39
  route_prefix: string;
40
40
  api_prefix: string;
41
41
  settings_api?: "plugin" | "platform" | undefined;
42
+ frontend_revision?: string | undefined;
42
43
  nav_items?: {
43
44
  id?: string | undefined;
44
45
  label: string;
@@ -100,6 +101,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
100
101
  route_prefix: string;
101
102
  api_prefix: string;
102
103
  settings_api?: "plugin" | "platform" | undefined;
104
+ frontend_revision?: string | undefined;
103
105
  nav_items?: {
104
106
  id?: string | undefined;
105
107
  label: string;
@@ -161,6 +163,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
161
163
  route_prefix: string;
162
164
  api_prefix: string;
163
165
  settings_api?: "plugin" | "platform" | undefined;
166
+ frontend_revision?: string | undefined;
164
167
  nav_items?: {
165
168
  id?: string | undefined;
166
169
  label: string;
@@ -3,6 +3,9 @@ export interface PresenceHeartbeatPayload {
3
3
  client_id: string;
4
4
  scope: string;
5
5
  }
6
+ export interface PresenceHeartbeatResponse {
7
+ frontend_revision?: string | null;
8
+ }
6
9
  interface PresenceDocument {
7
10
  readonly visibilityState: DocumentVisibilityState;
8
11
  addEventListener(type: 'visibilitychange', listener: EventListener): void;
@@ -27,6 +30,8 @@ export interface PresenceHeartbeatOptions {
27
30
  createClientId?: () => string;
28
31
  /** Test or custom transport seam. Defaults to authenticated POST /api/presence/heartbeat. */
29
32
  send?: (payload: PresenceHeartbeatPayload) => Promise<unknown> | unknown;
33
+ /** Observe the authenticated response without adding another poller. */
34
+ onResponse?: (response: PresenceHeartbeatResponse | unknown) => void;
30
35
  /** Test timing seam. Defaults to the browser scheduler. */
31
36
  setInterval?: (callback: () => void, intervalMs: number) => unknown;
32
37
  /** Test timing seam. Defaults to the browser scheduler. */
@@ -0,0 +1,44 @@
1
+ import { MaybeRefOrGetter, Ref } from 'vue';
2
+ interface RuntimeStorage {
3
+ getItem(key: string): string | null;
4
+ setItem(key: string, value: string): void;
5
+ }
6
+ interface RuntimeEventTarget {
7
+ addEventListener(type: 'vite:preloadError', listener: EventListener): void;
8
+ removeEventListener(type: 'vite:preloadError', listener: EventListener): void;
9
+ }
10
+ interface RuntimeVisibilityTarget {
11
+ addEventListener(type: 'visibilitychange', listener: EventListener): void;
12
+ removeEventListener(type: 'visibilitychange', listener: EventListener): void;
13
+ }
14
+ export interface RuntimeRevisionResponse {
15
+ frontend_revision?: string | null;
16
+ }
17
+ export interface RuntimeAlignmentOptions {
18
+ /** Revision embedded in the HTML that booted this tab. */
19
+ currentRevision?: MaybeRefOrGetter<string | null | undefined>;
20
+ /** Browser visibility seam. */
21
+ visibility?: () => DocumentVisibilityState;
22
+ /** Current location seam. */
23
+ currentUrl?: () => string;
24
+ /** Location replacement seam. */
25
+ replace?: (url: string) => void;
26
+ /** Per-tab recovery guard storage. */
27
+ storage?: RuntimeStorage | null;
28
+ /** Vite preload error source. */
29
+ eventTarget?: RuntimeEventTarget | null;
30
+ /** Browser visibility event source. */
31
+ visibilityTarget?: RuntimeVisibilityTarget | null;
32
+ }
33
+ export interface UseRuntimeAlignmentReturn {
34
+ updateAvailable: Readonly<Ref<boolean>>;
35
+ nextRevision: Readonly<Ref<string | null>>;
36
+ observe: (response: RuntimeRevisionResponse | unknown) => void;
37
+ reload: () => void;
38
+ recoverMissingChunk: () => void;
39
+ }
40
+ /** Keep a loaded MINT frontend aligned with the backend revision serving its scope. */
41
+ export declare function useRuntimeAlignment(options?: RuntimeAlignmentOptions): UseRuntimeAlignmentReturn;
42
+ /** Read the revision injected into the HTML that started this browser tab. */
43
+ export declare function getInjectedFrontendRevision(): string | null;
44
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { r as useRequestSyncState } from "./EmptyState-p90quq8Z.js";
2
- import { H as getInjectedPlatformContext, V as currentExperimentFromContext, W as resolveCurrentExperimentId } from "./useControlSchema-BMVb2XIQ.js";
2
+ import { B as currentExperimentFromContext, U as resolveCurrentExperimentId, V as getInjectedPlatformContext } from "./useControlSchema-B6-PO0F6.js";
3
3
  import { i as useAuthStore, n as authenticationRequiredError, o as useSettingsStore, r as useApi, t as AuthenticationRequiredError } from "./useApi-CDBq6z23.js";
4
- import { i as usePlatformContext } from "./useFormBuilder-DG3HOFGA.js";
4
+ import { i as usePlatformContext } from "./useFormBuilder-Pgb9Td6h.js";
5
5
  import { computed, getCurrentInstance, onMounted, onUnmounted, ref, shallowRef, toValue, watch } from "vue";
6
6
  import axios from "axios";
7
7
  //#region src/composables/useAuth.ts
@@ -2041,4 +2041,4 @@ function useCurrentExperiment(options = {}) {
2041
2041
  //#endregion
2042
2042
  export { useAsync as A, createPluginResourceClient as C, buildAnalysisArtifactTargetQuery as D, useCommandHistory as E, resolvePluginFrontendBase as M, usePasskey as N, parseAnalysisArtifactTarget as O, useAuth as P, wellIdsInRectangle as S, useOptimisticMutation as T, createWellPlateWells as _, pluginFormDataFromPayload as a, useWellPainting as b, usePluginClient as c, buildPluginEndpointUrl as d, resolvePluginBaseUrl as f, createRowConditions as g, createColumnConditions as h, getPluginPageSelectorItems as i, useAsyncBatch as j, usePluginConfig as k, usePluginEventStream as l, useWellPlateValidation as m, downloadBlob as n, uploadPluginEndpoint as o, runWellPlateValidation as p, downloadPluginEndpoint as r, useCurrentExperiment as s, createPluginClient as t, usePluginSettings as u, useWellPlateAdapter as v, useResourceCrud as w, wellIdToCoordinate as x, coordinateToWellId as y };
2043
2043
 
2044
- //# sourceMappingURL=composables-CRR_JxQD.js.map
2044
+ //# sourceMappingURL=composables-CPv3k1Yh.js.map