@morscherlab/mint-sdk 1.4.0-beta.16 → 1.4.0-beta.18

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 (78) hide show
  1. package/README.md +14 -3
  2. package/dist/{AlertBox-SnsbVow-.js → AlertBox-CzLg0UaL.js} +2 -2
  3. package/dist/{AlertBox-SnsbVow-.js.map → AlertBox-CzLg0UaL.js.map} +1 -1
  4. package/dist/{AppSidebar-CB0-RQ4m.js → AppSidebar-6oTT-gPO.js} +43 -13
  5. package/dist/AppSidebar-6oTT-gPO.js.map +1 -0
  6. package/dist/{ExperimentPopover-ChKCrklH.js → ExperimentPopover-9l4QZlvQ.js} +2 -2
  7. package/dist/{ExperimentPopover-ChKCrklH.js.map → ExperimentPopover-9l4QZlvQ.js.map} +1 -1
  8. package/dist/{ExperimentSelectorModal-BqifjNaN.js → ExperimentSelectorModal-pR5fK3pA.js} +3 -3
  9. package/dist/{ExperimentSelectorModal-BqifjNaN.js.map → ExperimentSelectorModal-pR5fK3pA.js.map} +1 -1
  10. package/dist/{SegmentedControl-hOgBVdju.js → SegmentedControl-CJ7EAmOq.js} +2 -2
  11. package/dist/{SegmentedControl-hOgBVdju.js.map → SegmentedControl-CJ7EAmOq.js.map} +1 -1
  12. package/dist/{SettingsModal-CoZK3EDN.js → SettingsModal-Dyitgzfp.js} +6 -6
  13. package/dist/{SettingsModal-CoZK3EDN.js.map → SettingsModal-Dyitgzfp.js.map} +1 -1
  14. package/dist/components/AppTopBar.vue.d.ts +7 -0
  15. package/dist/components/JobsStatusTray.vue.d.ts +11 -4
  16. package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
  17. package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
  18. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
  19. package/dist/composables/useJobCenter.d.ts +11 -3
  20. package/dist/{controlSchemaModel-CIH5Hqpw.js → controlSchemaModel-DCUOx8ll.js} +2 -2
  21. package/dist/{controlSchemaModel-CIH5Hqpw.js.map → controlSchemaModel-DCUOx8ll.js.map} +1 -1
  22. package/dist/{data-OZ94DhVC.js → data-BIiV4kKw.js} +9 -9
  23. package/dist/{data-OZ94DhVC.js.map → data-BIiV4kKw.js.map} +1 -1
  24. package/dist/data.js +7 -7
  25. package/dist/index.js +16 -16
  26. package/dist/{install-BKgb5qZw.js → install-Dg-Z6ze5.js} +13 -13
  27. package/dist/{install-BKgb5qZw.js.map → install-Dg-Z6ze5.js.map} +1 -1
  28. package/dist/install.js +1 -1
  29. package/dist/{lab-ZDKlx1Oo.js → lab-BHVT1qN2.js} +9 -9
  30. package/dist/{lab-ZDKlx1Oo.js.map → lab-BHVT1qN2.js.map} +1 -1
  31. package/dist/lab.js +4 -4
  32. package/dist/{records-B4yl2oIu.js → records-CR_pYzIP.js} +62 -62
  33. package/dist/{records-B4yl2oIu.js.map → records-CR_pYzIP.js.map} +1 -1
  34. package/dist/{runtime-Cz1GJa_O.js → runtime-cHv1phcc.js} +379 -31
  35. package/dist/runtime-cHv1phcc.js.map +1 -0
  36. package/dist/runtime.d.ts +1 -1
  37. package/dist/runtime.js +6 -6
  38. package/dist/{shell-kq9p4VsX.js → shell-BDuZf2zb.js} +4 -4
  39. package/dist/{shell-kq9p4VsX.js.map → shell-BDuZf2zb.js.map} +1 -1
  40. package/dist/shell.js +4 -4
  41. package/dist/styles.css +163 -307
  42. package/dist/types/components.d.ts +2 -0
  43. package/dist/{useExperimentSamples-BLx29CkM.js → useExperimentSamples-Dno1fFMq.js} +3 -3
  44. package/dist/{useExperimentSamples-BLx29CkM.js.map → useExperimentSamples-Dno1fFMq.js.map} +1 -1
  45. package/dist/{useListReorder-C_8RYeVP.js → useListReorder-CQ9OCScc.js} +76 -76
  46. package/dist/useListReorder-CQ9OCScc.js.map +1 -0
  47. package/dist/{useRackEditor-BhYlXKFM.js → useRackEditor-wL3kPrRT.js} +6 -6
  48. package/dist/{useRackEditor-BhYlXKFM.js.map → useRackEditor-wL3kPrRT.js.map} +1 -1
  49. package/dist/useRealtime-BW02xy4Z.js +398 -0
  50. package/dist/useRealtime-BW02xy4Z.js.map +1 -0
  51. package/dist/{useRequest-C9uwM79q.js → useRequest-CDkrXNU7.js} +2 -2
  52. package/dist/{useRequest-C9uwM79q.js.map → useRequest-CDkrXNU7.js.map} +1 -1
  53. package/package.json +1 -1
  54. package/src/__tests__/components/AppTopBar.test.ts +33 -2
  55. package/src/__tests__/components/GeneratedPluginView.test.ts +1 -1
  56. package/src/__tests__/components/JobsStatusTray.test.ts +137 -71
  57. package/src/__tests__/components/PluginWorkspaceView.test.ts +56 -1
  58. package/src/__tests__/composables/useJobCenter.test.ts +223 -3
  59. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  60. package/src/__tests__/styles/v2AuditRules.test.ts +8 -0
  61. package/src/components/AppTopBar.vue +14 -0
  62. package/src/components/GeneratedPluginView.vue +4 -9
  63. package/src/components/JobsStatusTray.story.vue +78 -43
  64. package/src/components/JobsStatusTray.vue +171 -279
  65. package/src/components/PluginWorkspaceView.props.ts +3 -0
  66. package/src/components/PluginWorkspaceView.vue +17 -0
  67. package/src/components/internal/WorkspaceShellInternal.vue +12 -0
  68. package/src/composables/useJobCenter.ts +127 -6
  69. package/src/runtime.ts +0 -1
  70. package/src/styles/components/app-top-bar.css +7 -0
  71. package/src/styles/components/jobs-status-tray.css +129 -296
  72. package/src/styles/variables.css +16 -0
  73. package/src/types/components.ts +2 -0
  74. package/dist/AppSidebar-CB0-RQ4m.js.map +0 -1
  75. package/dist/runtime-Cz1GJa_O.js.map +0 -1
  76. package/dist/useListReorder-C_8RYeVP.js.map +0 -1
  77. package/dist/useRealtime-CUMbW_ln.js +0 -699
  78. package/dist/useRealtime-CUMbW_ln.js.map +0 -1
package/dist/lab.js CHANGED
@@ -1,5 +1,5 @@
1
- import { P as time_exports } from "./records-B4yl2oIu.js";
2
- import { C as useSequenceUtils, L as definePlateEditor, S as SequenceInput_default, T as formula_exports, a as StepWizard_default, b as useConcentrationUnits, w as FormulaInput_default, x as MoleculeInput_default, y as ConcentrationInput_default, z as defineWellPlate } from "./useListReorder-C_8RYeVP.js";
3
- import { C as defineWellPlateControlProps, S as defineDoseDesignControlModel, T as defineWellPlateDoseControlProps, _ as SampleSelector_default, a as useReagentSeries, c as InstrumentStatusPanels_default, d as ChemicalFormula_default, f as AdductText_default, g as SampleHierarchyTree_default, h as useProtocolTemplates, i as generateDilutionSeries, l as InstrumentStateBadge_default, m as ProtocolStepEditor_default, n as DEFAULT_PRESETS, o as ResourceCard_default, p as ScientificNumber_default, r as DEFAULT_UNITS, s as TimeRangeInput_default, u as SequenceProgressBar_default, v as useSampleGroups, w as defineWellPlateDoseComponentBindings, x as defineDoseCalculatorControlProps } from "./lab-ZDKlx1Oo.js";
4
- import { C as hexToHsl, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, y as dose_exports } from "./useRackEditor-BhYlXKFM.js";
1
+ import { P as time_exports } from "./records-CR_pYzIP.js";
2
+ import { C as FormulaInput_default, L as definePlateEditor, S as useSequenceUtils, a as StepWizard_default, b as MoleculeInput_default, v as ConcentrationInput_default, w as formula_exports, x as SequenceInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-CQ9OCScc.js";
3
+ import { C as defineWellPlateControlProps, S as defineDoseDesignControlModel, T as defineWellPlateDoseControlProps, _ as SampleSelector_default, a as useReagentSeries, c as InstrumentStatusPanels_default, d as ChemicalFormula_default, f as AdductText_default, g as SampleHierarchyTree_default, h as useProtocolTemplates, i as generateDilutionSeries, l as InstrumentStateBadge_default, m as ProtocolStepEditor_default, n as DEFAULT_PRESETS, o as ResourceCard_default, p as ScientificNumber_default, r as DEFAULT_UNITS, s as TimeRangeInput_default, u as SequenceProgressBar_default, v as useSampleGroups, w as defineWellPlateDoseComponentBindings, x as defineDoseCalculatorControlProps } from "./lab-BHVT1qN2.js";
4
+ import { C as hexToHsl, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, y as dose_exports } from "./useRackEditor-wL3kPrRT.js";
5
5
  export { AdductText_default as AdductText, ChartContainer_default as ChartContainer, ChemicalFormula_default as ChemicalFormula, ConcentrationInput_default as ConcentrationInput, DEFAULT_PRESETS, DEFAULT_UNITS, DoseCalculator_default as DoseCalculator, FormulaInput_default as FormulaInput, InstrumentStateBadge_default as InstrumentStateBadge, InstrumentStatusPanels_default as InstrumentStatusPanels, MoleculeInput_default as MoleculeInput, PlateEditor_default as PlateEditor, PlotlyChart_default as PlotlyChart, ProtocolStepEditor_default as ProtocolStepEditor, ResourceCard_default as ResourceCard, SampleHierarchyTree_default as SampleHierarchyTree, SampleSelector_default as SampleSelector, ScheduleCalendar_default as ScheduleCalendar, ScientificNumber_default as ScientificNumber, SequenceInput_default as SequenceInput, SequenceProgressBar_default as SequenceProgressBar, StepWizard_default as StepWizard, TimeRangeInput_default as TimeRangeInput, WellPlate_default as WellPlate, defineDoseCalculatorControlProps, defineDoseDesignControlModel, definePlateEditor, defineWellPlate, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, deriveShade, dose_exports as dose, formula_exports as formula, generateDilutionSeries, hexToHsl, hslToHex, mintPlotlyTemplate, sampleTypeMarker, time_exports as time, useConcentrationUnits, useProtocolTemplates, useRackEditor, useReagentSeries, useSampleGroups, useScheduleDrag, useSequenceUtils };
@@ -2493,6 +2493,66 @@ function useAppExperiment(options = {}) {
2493
2493
  };
2494
2494
  }
2495
2495
  //#endregion
2496
+ //#region src/jobs.ts
2497
+ var ACTIVE_JOB_STATUSES = /* @__PURE__ */ new Set([
2498
+ "awaiting_input",
2499
+ "queued",
2500
+ "running"
2501
+ ]);
2502
+ var TERMINAL_JOB_STATUSES = /* @__PURE__ */ new Set([
2503
+ "completed",
2504
+ "failed",
2505
+ "cancelled"
2506
+ ]);
2507
+ /** Resolve action support while retaining one-cycle legacy status inference. */
2508
+ function resolveJobCapabilities(job) {
2509
+ const legacyCanCancel = job.status === "queued" || job.status === "running";
2510
+ const legacyCanDelete = TERMINAL_JOB_STATUSES.has(job.status);
2511
+ return {
2512
+ can_cancel: typeof job.can_cancel === "boolean" ? job.can_cancel : legacyCanCancel,
2513
+ can_delete: typeof job.can_delete === "boolean" ? job.can_delete : legacyCanDelete
2514
+ };
2515
+ }
2516
+ /** Clamp invalid or out-of-range progress values for safe display. */
2517
+ function normalizeJobPercent(value) {
2518
+ if (!Number.isFinite(value)) return 0;
2519
+ return Math.min(100, Math.max(0, value));
2520
+ }
2521
+ /** Create a detached canonical state without changing the transport input. */
2522
+ function normalizeJobState(job) {
2523
+ const capabilities = resolveJobCapabilities(job);
2524
+ return {
2525
+ ...job,
2526
+ definition_id: job.definition_id ?? (typeof job.metadata.definition_id === "string" ? job.metadata.definition_id : null),
2527
+ result_status: job.result_status ?? (job.status === "completed" && job.metadata.has_result === true ? "available" : "none"),
2528
+ result_expires_at: job.result_expires_at ?? null,
2529
+ progress: {
2530
+ ...job.progress,
2531
+ percent: normalizeJobPercent(job.progress.percent)
2532
+ },
2533
+ warnings: [...job.warnings],
2534
+ folders: [...job.folders],
2535
+ metadata: { ...job.metadata },
2536
+ ...capabilities
2537
+ };
2538
+ }
2539
+ function isActiveJobStatus(status) {
2540
+ return ACTIVE_JOB_STATUSES.has(status);
2541
+ }
2542
+ function isTerminalJobStatus(status) {
2543
+ return TERMINAL_JOB_STATUSES.has(status);
2544
+ }
2545
+ function jobStatusLabel(status) {
2546
+ return {
2547
+ awaiting_input: "Waiting for input",
2548
+ queued: "Queued",
2549
+ running: "Running",
2550
+ completed: "Completed",
2551
+ failed: "Failed",
2552
+ cancelled: "Cancelled"
2553
+ }[status];
2554
+ }
2555
+ //#endregion
2496
2556
  //#region src/utils/pluginSecrets.ts
2497
2557
  var pluginSecrets_exports = /* @__PURE__ */ __exportAll({
2498
2558
  FORMAT_KEY: () => FORMAT_KEY,
@@ -2959,66 +3019,6 @@ var TagsInput_default = /* @__PURE__ */ defineComponent({
2959
3019
  }
2960
3020
  });
2961
3021
  //#endregion
2962
- //#region src/jobs.ts
2963
- var ACTIVE_JOB_STATUSES = /* @__PURE__ */ new Set([
2964
- "awaiting_input",
2965
- "queued",
2966
- "running"
2967
- ]);
2968
- var TERMINAL_JOB_STATUSES = /* @__PURE__ */ new Set([
2969
- "completed",
2970
- "failed",
2971
- "cancelled"
2972
- ]);
2973
- /** Resolve action support while retaining one-cycle legacy status inference. */
2974
- function resolveJobCapabilities(job) {
2975
- const legacyCanCancel = job.status === "queued" || job.status === "running";
2976
- const legacyCanDelete = TERMINAL_JOB_STATUSES.has(job.status);
2977
- return {
2978
- can_cancel: typeof job.can_cancel === "boolean" ? job.can_cancel : legacyCanCancel,
2979
- can_delete: typeof job.can_delete === "boolean" ? job.can_delete : legacyCanDelete
2980
- };
2981
- }
2982
- /** Clamp invalid or out-of-range progress values for safe display. */
2983
- function normalizeJobPercent(value) {
2984
- if (!Number.isFinite(value)) return 0;
2985
- return Math.min(100, Math.max(0, value));
2986
- }
2987
- /** Create a detached canonical state without changing the transport input. */
2988
- function normalizeJobState(job) {
2989
- const capabilities = resolveJobCapabilities(job);
2990
- return {
2991
- ...job,
2992
- definition_id: job.definition_id ?? (typeof job.metadata.definition_id === "string" ? job.metadata.definition_id : null),
2993
- result_status: job.result_status ?? (job.status === "completed" && job.metadata.has_result === true ? "available" : "none"),
2994
- result_expires_at: job.result_expires_at ?? null,
2995
- progress: {
2996
- ...job.progress,
2997
- percent: normalizeJobPercent(job.progress.percent)
2998
- },
2999
- warnings: [...job.warnings],
3000
- folders: [...job.folders],
3001
- metadata: { ...job.metadata },
3002
- ...capabilities
3003
- };
3004
- }
3005
- function isActiveJobStatus(status) {
3006
- return ACTIVE_JOB_STATUSES.has(status);
3007
- }
3008
- function isTerminalJobStatus(status) {
3009
- return TERMINAL_JOB_STATUSES.has(status);
3010
- }
3011
- function jobStatusLabel(status) {
3012
- return {
3013
- awaiting_input: "Waiting for input",
3014
- queued: "Queued",
3015
- running: "Running",
3016
- completed: "Completed",
3017
- failed: "Failed",
3018
- cancelled: "Cancelled"
3019
- }[status];
3020
- }
3021
- //#endregion
3022
3022
  //#region src/composables/platformContextHelpers.ts
3023
3023
  function getInjectedPlatformContext() {
3024
3024
  if (typeof window === "undefined") return void 0;
@@ -3263,6 +3263,6 @@ function isRecord(value) {
3263
3263
  return typeof value === "object" && value !== null && !Array.isArray(value);
3264
3264
  }
3265
3265
  //#endregion
3266
- export { formatRelativeTime as A, Tooltip_default as B, formatExperimentDate as C, compareTime as D, useMenuKeyboard as E, toMinutes as F, BaseInput_default as G, useListSelection as H, FormField_default as I, EmptyState_default as L, formatTimeSlot as M, generateTimeSlots as N, durationMinutes as O, time_exports as P, useRovingFocus as R, experimentIdFromRoute as S, FileUploader_default as T, useSelectionLimit as U, BaseSelect_default as V, normalizeOptionInput as W, APP_EXPERIMENT_KEY as _, parseExperimentId as a, SORT_OPTIONS as b, isTerminalJobStatus as c, normalizeJobState as d, resolveJobCapabilities as f, pluginSecrets_exports as g, FORMAT_KEY as h, getInjectedPlatformContext as i, formatTime as j, findNearestTimeSlotIndex as k, jobStatusLabel as l, SecretInput_default as m, ResourcePickerListInternal_default as n, resolveCurrentPluginId as o, TagsInput_default as p, Skeleton_default as r, isActiveJobStatus as s, isRecord as t, normalizeJobPercent as u, useAppExperiment as v, resolveExperimentCode as w, datePresetToISO as x, DATE_PRESET_OPTIONS as y, BaseCheckbox_default as z };
3266
+ export { formatRelativeTime as A, Tooltip_default as B, formatExperimentDate as C, compareTime as D, useMenuKeyboard as E, toMinutes as F, BaseInput_default as G, useListSelection as H, FormField_default as I, EmptyState_default as L, formatTimeSlot as M, generateTimeSlots as N, durationMinutes as O, time_exports as P, useRovingFocus as R, experimentIdFromRoute as S, FileUploader_default as T, useSelectionLimit as U, BaseSelect_default as V, normalizeOptionInput as W, APP_EXPERIMENT_KEY as _, parseExperimentId as a, SORT_OPTIONS as b, SecretInput_default as c, isActiveJobStatus as d, isTerminalJobStatus as f, resolveJobCapabilities as g, normalizeJobState as h, getInjectedPlatformContext as i, formatTime as j, findNearestTimeSlotIndex as k, FORMAT_KEY as l, normalizeJobPercent as m, ResourcePickerListInternal_default as n, resolveCurrentPluginId as o, jobStatusLabel as p, Skeleton_default as r, TagsInput_default as s, isRecord as t, pluginSecrets_exports as u, useAppExperiment as v, resolveExperimentCode as w, datePresetToISO as x, DATE_PRESET_OPTIONS as y, BaseCheckbox_default as z };
3267
3267
 
3268
- //# sourceMappingURL=records-B4yl2oIu.js.map
3268
+ //# sourceMappingURL=records-CR_pYzIP.js.map