@morscherlab/mint-sdk 1.0.63 → 1.1.0-beta.10

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 (181) hide show
  1. package/README.md +119 -6
  2. package/dist/EmptyState-DgBRoYAy.js +647 -0
  3. package/dist/EmptyState-DgBRoYAy.js.map +1 -0
  4. package/dist/{ExperimentPopover-BbPkIFsI.js → ExperimentPopover-BFw3QX8L.js} +10 -9
  5. package/dist/{ExperimentPopover-BbPkIFsI.js.map → ExperimentPopover-BFw3QX8L.js.map} +1 -1
  6. package/dist/{ExperimentSelectorModal-DZeSd-yr.js → ExperimentSelectorModal-BBWXC7KW.js} +12 -216
  7. package/dist/ExperimentSelectorModal-BBWXC7KW.js.map +1 -0
  8. package/dist/{SettingsModal-CJgLadsN.js → SettingsModal-Dpg-X1OM.js} +12 -9
  9. package/dist/{SettingsModal-CJgLadsN.js.map → SettingsModal-Dpg-X1OM.js.map} +1 -1
  10. package/dist/__tests__/components/BaseToggle.test.d.ts +1 -0
  11. package/dist/__tests__/components/GeneratedPathInput.test.d.ts +1 -0
  12. package/dist/__tests__/components/GeneratedPlotlyResult.test.d.ts +1 -0
  13. package/dist/__tests__/components/GeneratedPluginView.test.d.ts +1 -0
  14. package/dist/__tests__/components/GeneratedResultRenderer.test.d.ts +1 -0
  15. package/dist/__tests__/components/InstrumentAlertLog.test.d.ts +1 -0
  16. package/dist/__tests__/components/SectionCard.test.d.ts +1 -0
  17. package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +1 -0
  18. package/dist/__tests__/generatedUi.test.d.ts +1 -0
  19. package/dist/__tests__/types/GeneratedJsonSchema.test.d.ts +1 -0
  20. package/dist/{analysisArtifactTypes-Cu40dzSG.js → analysisArtifactTypes-ejqR8MX3.js} +1 -1
  21. package/dist/{analysisArtifactTypes-Cu40dzSG.js.map → analysisArtifactTypes-ejqR8MX3.js.map} +1 -1
  22. package/dist/{auth-DZAwEeis.js → auth-B87xM--s.js} +1 -1
  23. package/dist/{auth-DZAwEeis.js.map → auth-B87xM--s.js.map} +1 -1
  24. package/dist/chunk-BoAXSpZd.js +33 -0
  25. package/dist/components/AppSidebar.vue.d.ts +1 -1
  26. package/dist/components/AutoGroupModal.vue.d.ts +2 -2
  27. package/dist/components/BaseSelect.vue.d.ts +1 -1
  28. package/dist/components/BaseToggle.vue.d.ts +2 -0
  29. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  30. package/dist/components/CollapsibleCard.vue.d.ts +1 -1
  31. package/dist/components/ComponentBindingRenderer.vue.d.ts +1 -1
  32. package/dist/components/ConfirmDialog.vue.d.ts +1 -1
  33. package/dist/components/ExperimentDataViewer.vue.d.ts +1 -1
  34. package/dist/components/ExperimentTimeline.vue.d.ts +1 -1
  35. package/dist/components/FileUploader.vue.d.ts +4 -2
  36. package/dist/components/FitPanel.vue.d.ts +2 -2
  37. package/dist/components/FormActions.vue.d.ts +1 -1
  38. package/dist/components/FormBuilder.vue.d.ts +1 -1
  39. package/dist/components/GeneratedPathInput.vue.d.ts +12 -0
  40. package/dist/components/GeneratedPlotlyResult.vue.d.ts +11 -0
  41. package/dist/components/GeneratedPluginView.vue.d.ts +10 -0
  42. package/dist/components/GeneratedResultRenderer.vue.d.ts +6 -0
  43. package/dist/components/JobsStatusTray.vue.d.ts +5 -1
  44. package/dist/components/LcmsSequenceTable.vue.d.ts +1 -1
  45. package/dist/components/PluginWorkspaceView.props.d.ts +1 -1
  46. package/dist/components/SampleLegend.vue.d.ts +1 -1
  47. package/dist/components/SampleSelector.vue.d.ts +2 -2
  48. package/dist/components/SectionCard.vue.d.ts +47 -0
  49. package/dist/components/SettingsModal.vue.d.ts +1 -1
  50. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -2
  51. package/dist/components/index.d.ts +5 -0
  52. package/dist/components/index.js +8 -9
  53. package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +2 -2
  54. package/dist/{components-DdzHh3a_.js → components-Ci_BTx00.js} +2322 -2292
  55. package/dist/components-Ci_BTx00.js.map +1 -0
  56. package/dist/composables/index.d.ts +3 -2
  57. package/dist/composables/index.js +10 -11
  58. package/dist/composables/useGeneratedAnalysis.d.ts +62 -0
  59. package/dist/composables/useJobsStatusTray.d.ts +48 -4
  60. package/dist/composables/usePlatformContext.d.ts +3 -0
  61. package/dist/composables/usePluginClient.d.ts +17 -8
  62. package/dist/{composables-BUUphBqg.js → composables-C0VEJ73O.js} +154 -38
  63. package/dist/composables-C0VEJ73O.js.map +1 -0
  64. package/dist/experiment-utils-CxkruZ3G.js +392 -0
  65. package/dist/experiment-utils-CxkruZ3G.js.map +1 -0
  66. package/dist/generated/schema.d.ts +7 -0
  67. package/dist/generated-ui/main.d.ts +0 -0
  68. package/dist/index.d.ts +1 -0
  69. package/dist/index.js +15 -18
  70. package/dist/index.js.map +1 -1
  71. package/dist/install.js +7 -8
  72. package/dist/install.js.map +1 -1
  73. package/dist/plotly.min-BR53hja4.js +180634 -0
  74. package/dist/plotly.min-BR53hja4.js.map +1 -0
  75. package/dist/stores/auth.d.ts +2 -2
  76. package/dist/stores/index.js +1 -1
  77. package/dist/styles.css +8657 -8217
  78. package/dist/tailwind.preset.d.ts +5 -0
  79. package/dist/tailwind.preset.js +7 -2
  80. package/dist/tailwind.preset.js.map +1 -1
  81. package/dist/templates/index.js +4 -3
  82. package/dist/templates/packs.d.ts +0 -1
  83. package/dist/{templates-CNbPQNID.js → templates-Cdj93S9C.js} +2 -4
  84. package/dist/templates-Cdj93S9C.js.map +1 -0
  85. package/dist/types/components.d.ts +2 -0
  86. package/dist/types/form-builder.d.ts +1 -1
  87. package/dist/types/generated-ui.d.ts +183 -0
  88. package/dist/types/index.d.ts +2 -1
  89. package/dist/types/index.js +1 -1
  90. package/dist/types/instrument.d.ts +1 -0
  91. package/dist/types/jobs.d.ts +7 -1
  92. package/dist/types/platform.d.ts +2 -0
  93. package/dist/{useControlSchema-BZNdalmL.js → useControlSchema-B_qgU4rW.js} +1882 -172
  94. package/dist/useControlSchema-B_qgU4rW.js.map +1 -0
  95. package/dist/{useDropdownState-Bb-c_PeE.js → useDropdownState-gVaMXtwW.js} +2 -2
  96. package/dist/{useDropdownState-Bb-c_PeE.js.map → useDropdownState-gVaMXtwW.js.map} +1 -1
  97. package/dist/{useExperimentSelector-DRbj6vse.js → useExperimentSelector-BuQZRgMt.js} +4 -255
  98. package/dist/useExperimentSelector-BuQZRgMt.js.map +1 -0
  99. package/dist/{useFormBuilder-DKekvXRs.js → useFormBuilder-D1G5J5Z5.js} +2 -2
  100. package/dist/{useFormBuilder-DKekvXRs.js.map → useFormBuilder-D1G5J5Z5.js.map} +1 -1
  101. package/dist/{useAnalysisArtifacts-C3l0a0vu.js → useProtocolTemplates-DeaOmMaw.js} +307 -475
  102. package/dist/useProtocolTemplates-DeaOmMaw.js.map +1 -0
  103. package/package.json +7 -3
  104. package/src/__tests__/components/BaseSelect.test.ts +52 -0
  105. package/src/__tests__/components/BaseToggle.test.ts +40 -0
  106. package/src/__tests__/components/GeneratedPathInput.test.ts +132 -0
  107. package/src/__tests__/components/GeneratedPlotlyResult.test.ts +117 -0
  108. package/src/__tests__/components/GeneratedPluginView.test.ts +240 -0
  109. package/src/__tests__/components/GeneratedResultRenderer.test.ts +93 -0
  110. package/src/__tests__/components/InstrumentAlertLog.test.ts +59 -0
  111. package/src/__tests__/components/PluginWorkspaceView.test.ts +68 -14
  112. package/src/__tests__/components/SectionCard.test.ts +181 -0
  113. package/src/__tests__/composables/formBuilderRegistry.test.ts +5 -1
  114. package/src/__tests__/composables/useApi.test.ts +8 -0
  115. package/src/__tests__/composables/useGeneratedAnalysis.test.ts +1742 -0
  116. package/src/__tests__/composables/useJobsStatusTray.test.ts +179 -1
  117. package/src/__tests__/composables/usePlatformContext.test.ts +28 -0
  118. package/src/__tests__/composables/usePluginClient.test.ts +402 -21
  119. package/src/__tests__/composables/usePluginConfig.test.ts +323 -7
  120. package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -1
  121. package/src/__tests__/generatedUi.test.ts +119 -0
  122. package/src/__tests__/templates/templates.test.ts +1 -1
  123. package/src/__tests__/types/GeneratedJsonSchema.test.ts +62 -0
  124. package/src/components/BaseSelect.vue +16 -2
  125. package/src/components/BaseToggle.vue +3 -1
  126. package/src/components/FileUploader.vue +49 -11
  127. package/src/components/GeneratedPathInput.vue +218 -0
  128. package/src/components/GeneratedPlotlyResult.vue +87 -0
  129. package/src/components/GeneratedPluginView.vue +279 -0
  130. package/src/components/GeneratedResultRenderer.vue +137 -0
  131. package/src/components/InstrumentAlertLog.vue +2 -2
  132. package/src/components/JobsStatusTray.vue +14 -8
  133. package/src/components/PluginWorkspaceView.props.ts +1 -1
  134. package/src/components/PluginWorkspaceView.vue +1 -5
  135. package/src/components/SectionCard.story.vue +163 -0
  136. package/src/components/SectionCard.vue +98 -0
  137. package/src/components/index.ts +5 -0
  138. package/src/composables/formBuilderRegistry.ts +2 -0
  139. package/src/composables/index.ts +19 -0
  140. package/src/composables/useApi.ts +1 -0
  141. package/src/composables/useGeneratedAnalysis.ts +1270 -0
  142. package/src/composables/useJobsStatusTray.ts +234 -45
  143. package/src/composables/usePluginClient.ts +164 -30
  144. package/src/composables/usePluginConfig.ts +156 -20
  145. package/src/generated/schema.ts +130 -0
  146. package/src/generated-ui/main.ts +21 -0
  147. package/src/index.ts +3 -0
  148. package/src/jobs.ts +5 -0
  149. package/src/plotly-dist.d.ts +3 -0
  150. package/src/styles/components/section-card.css +161 -0
  151. package/src/styles/index.css +1 -0
  152. package/src/styles/variables.css +25 -0
  153. package/src/tailwind.preset.ts +5 -0
  154. package/src/templates/packs.ts +0 -3
  155. package/src/types/components.ts +12 -0
  156. package/src/types/form-builder.ts +1 -0
  157. package/src/types/generated-ui.ts +189 -0
  158. package/src/types/index.ts +4 -0
  159. package/src/types/instrument.ts +1 -0
  160. package/src/types/jobs.ts +10 -1
  161. package/src/types/platform.ts +2 -0
  162. package/dist/BaseButton-Dgqrze41.js +0 -74
  163. package/dist/BaseButton-Dgqrze41.js.map +0 -1
  164. package/dist/BaseModal-B9UA8Y_I.js +0 -165
  165. package/dist/BaseModal-B9UA8Y_I.js.map +0 -1
  166. package/dist/BaseSelect-ekgr9fDo.js +0 -179
  167. package/dist/BaseSelect-ekgr9fDo.js.map +0 -1
  168. package/dist/ExperimentPopover-Ryusjrhv.js +0 -4
  169. package/dist/ExperimentSelectorModal-Cg4-LXBD.js +0 -5
  170. package/dist/ExperimentSelectorModal-DZeSd-yr.js.map +0 -1
  171. package/dist/SettingsModal-Bl_9w2Y3.js +0 -5
  172. package/dist/components-DdzHh3a_.js.map +0 -1
  173. package/dist/composables-BUUphBqg.js.map +0 -1
  174. package/dist/experiment-utils-Bfa7CwPU.js +0 -108
  175. package/dist/experiment-utils-Bfa7CwPU.js.map +0 -1
  176. package/dist/templates-CNbPQNID.js.map +0 -1
  177. package/dist/useAnalysisArtifacts-C3l0a0vu.js.map +0 -1
  178. package/dist/useControlSchema-BZNdalmL.js.map +0 -1
  179. package/dist/useEventListener-CfVkP9Xz.js +0 -57
  180. package/dist/useEventListener-CfVkP9Xz.js.map +0 -1
  181. package/dist/useExperimentSelector-DRbj6vse.js.map +0 -1
@@ -20,6 +20,7 @@ export { useEventListener, type EventListenerEnabled, type EventFor, type EventL
20
20
  export { DEFAULT_MOBILE_VIEWPORT_QUERY, useMobileSupportGate, type MobileSupportSource, type MobileViewportQuerySource, type UseMobileSupportGateOptions, type UseMobileSupportGateReturn, } from './useMobileSupportGate';
21
21
  export { useDebouncedWatch, type DebouncedWatchCallback, type DebouncedWatchCleanup, type DebouncedWatchSource, type UseDebouncedWatchOptions, type UseDebouncedWatchReturn, } from './useDebouncedWatch';
22
22
  export { useFormBuilder, evaluateCondition } from './useFormBuilder';
23
+ export { createGeneratedAnalysisTransport, useGeneratedAnalysis, usePluginJobs, type GeneratedAnalysisTransport, type GeneratedAnalysisOptions, type PluginJobRequestOptions, type PluginJobWaitOptions, type UsePluginJobsOptions, type UsePluginJobsReturn, type UseGeneratedAnalysisReturn, } from './useGeneratedAnalysis';
23
24
  export { useAutoGroup, DEFAULT_COLORS, extractSamplesFromDesignData } from './useAutoGroup';
24
25
  export { useReagentSeries, generateDilutionSeries, DEFAULT_PRESETS, DEFAULT_UNITS, type LevelEntry, type DilutionPreset, type UseReagentSeriesReturn, } from './useReagentSeries';
25
26
  export { usePluginConfig, type UsePluginConfigReturn } from './usePluginConfig';
@@ -56,5 +57,5 @@ export { getBioTemplateComponentProps, getBioTemplateComponentBindings, toBioTem
56
57
  export { useBioTemplateWorkspace, type BioTemplateRendererBinding, type BioTemplateWorkspaceBindings, type BioTemplateWorkspaceTarget, type UseBioTemplateWorkspaceReturn, } from './useBioTemplateWorkspace';
57
58
  export { useBioTemplatePresetWorkspace, type BioTemplatePresetWorkspaceBindings, type UseBioTemplatePresetWorkspaceOptions, type UseBioTemplatePresetWorkspaceReturn, } from './useBioTemplatePresetWorkspace';
58
59
  export { useBioTemplatePackWorkspace, type UseBioTemplatePackWorkspaceOptions, type UseBioTemplatePackWorkspaceReturn, } from './useBioTemplatePackWorkspace';
59
- export { buildPluginEndpointUrl, createPluginClient, downloadBlob, downloadPluginEndpoint, getPluginPageSelectorItems, pluginFormDataFromPayload, resolvePluginBaseUrl, uploadPluginEndpoint, usePluginClient, usePluginEventStream, usePluginSettings, useCurrentExperiment, type BuildPluginEndpointUrlOptions, type DownloadBlobOptions, type DownloadPluginEndpointOptions, type PluginContract, type PluginClientRequestOptions, type PluginEndpointContract, type PluginEndpointDefinition, type PluginHttpMethod, type PluginNavItemContract, type PluginEndpointRequestOptions, type PluginEventStreamMessage, type PluginEventStreamOptions, type PluginFormDataPayload, type PluginFormDataValue, type CreatePluginClientOptions, type UseCurrentExperimentOptions, type UseCurrentExperimentReturn, type UsePluginEventStreamReturn, type UsePluginSettingsOptions, type UsePluginSettingsReturn, } from './usePluginClient';
60
- export { useJobsStatusTray, type JobsStatusTrayAdapter, type JobsStatusTrayTab, type JobStreamMessage, type UseJobsStatusTrayOptions, type UseJobsStatusTrayReturn, } from './useJobsStatusTray';
60
+ export { buildPluginEndpointUrl, createPluginClient, downloadBlob, downloadPluginEndpoint, getPluginPageSelectorItems, pluginFormDataFromPayload, resolvePluginBaseUrl, uploadPluginEndpoint, usePluginClient, usePluginEventStream, usePluginSettings, useCurrentExperiment, type BuildPluginEndpointUrlOptions, type DownloadBlobOptions, type DownloadPluginEndpointOptions, type PluginContract, type PluginContractSettings, type PluginClientRequestOptions, type PluginEndpointContract, type PluginEndpointDefinition, type PluginHttpMethod, type PluginNavItemContract, type PluginEndpointRequestOptions, type PluginEventStreamMessage, type PluginEventStreamOptions, type PluginFormDataPayload, type PluginFormDataValue, type CreatePluginClientOptions, type UseCurrentExperimentOptions, type UseCurrentExperimentReturn, type UsePluginEventStreamReturn, type UsePluginSettingsOptions, type UsePluginSettingsReturn, } from './usePluginClient';
61
+ export { combinePluginJobSources, usePluginJobCenter, useJobsStatusTray, type CombinedPluginJobCenterSource, type PluginJobCenterSource, type JobsStatusTrayAdapter, type JobsStatusTrayTab, type JobStreamMessage, type UsePluginJobCenterOptions, type UsePluginJobCenterReturn, type UseJobsStatusTrayOptions, type UseJobsStatusTrayReturn, } from './useJobsStatusTray';
@@ -1,11 +1,10 @@
1
- import "../BaseSelect-ekgr9fDo.js";
2
- import { $ as parseTime, A as useConcentrationUnits, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, F as ATOMIC_WEIGHTS, G as findAvailableSlots, H as addMinutes, I as useChemicalFormula, J as formatTime, K as findNearestTimeSlotIndex, N as useSequenceUtils, Q as isTimeInRange, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, U as compareTime, W as durationMinutes, X as fromMinutes, Y as formatTimeSlot, Z as generateTimeSlots, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, et as rangesOverlap, h as controlValuesToComponentProps, i as useControlSchema, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, nt as toMinutes, o as defineDoseDesignControlModel, ot as useListSelection, p as controlValuesToComponentBindings, q as formatDuration, r as getControlDefaults, rt as useTimeUtils, s as defineWellPlateControlProps, st as useSelectionLimit, t as defineControlComponentBindings, tt as snapToSlot, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "../useControlSchema-BZNdalmL.js";
3
- import { t as useEventListener } from "../useEventListener-CfVkP9Xz.js";
4
- import { $ as APP_EXPERIMENT_KEY, B as useFileImport, C as useTemplateCollection, D as useExperimentData, E as useExperimentSamples, G as extractSampleNamesFromDesignData, H as extractSamplesFromDesignData, J as DEFAULT_COLORS, K as extractSampleOptionsFromDesignData, L as detectDelimiter, M as useExpansionSet, N as useSampleGroups, Q as useMobileSupportGate, R as parseDelimitedText, S as useBioTemplateControls, T as useScheduleDrag, U as useAutoGroup, V as validateImportFile, X as useDoseCalculator, Y as useWellPlateEditor, Z as DEFAULT_MOBILE_VIEWPORT_QUERY, _ as useBioTemplatePackWorkspace, at as useTextSearch, b as toBioTemplateComponentPropsByComponent, d as DEFAULT_UNITS, et as useAppExperiment, f as generateDilutionSeries, g as useBioTemplatePresetWorkspace, h as useRackEditor, it as normalizeSearchQuery, j as resolveCurrentPluginId, l as useProtocolTemplates, m as useGroupAssignment, n as useJobsStatusTray, nt as useToast, ot as compareSortValues, p as useReagentSeries, q as unwrapExperimentDesignData, rt as candidateMatchesSearch, st as useSortedItems, t as useAnalysisArtifacts, tt as useTheme, u as DEFAULT_PRESETS, v as useBioTemplateWorkspace, w as useExperimentSave, x as useBioTemplateComponents, y as getBioTemplateComponentProps, z as readFileAsText } from "../useAnalysisArtifacts-C3l0a0vu.js";
5
- import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-DKekvXRs.js";
6
- import { a as SORT_OPTIONS, c as formatExperimentStatus, i as EXPERIMENT_STATUS_VARIANT_MAP, l as getExperimentStatusVariant, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, r as EXPERIMENT_STATUS_OPTIONS, s as formatExperimentDate, t as DATE_PRESET_OPTIONS, u as resolveExperimentCode } from "../experiment-utils-Bfa7CwPU.js";
7
- import { i as AuthenticationRequiredError, n as useDebouncedWatch, o as useApi, r as useRequestSyncState, t as useExperimentSelector } from "../useExperimentSelector-DRbj6vse.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-CNbPQNID.js";
9
- import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-Cu40dzSG.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-BUUphBqg.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, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getPluginPageSelectorItems, 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, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginSettings, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
1
+ import { a as SORT_OPTIONS, c as formatExperimentStatus, f as useEventListener, i as EXPERIMENT_STATUS_VARIANT_MAP, l as getExperimentStatusVariant, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, r as EXPERIMENT_STATUS_OPTIONS, s as formatExperimentDate, t as DATE_PRESET_OPTIONS, u as resolveExperimentCode } from "../experiment-utils-CxkruZ3G.js";
2
+ import { i as AuthenticationRequiredError, o as useApi, r as useRequestSyncState } from "../EmptyState-DgBRoYAy.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-B_qgU4rW.js";
4
+ import { A as extractSamplesFromDesignData, B as useJobsStatusTray, D as readFileAsText, E as parseDelimitedText, F as unwrapExperimentDesignData, G as useAppExperiment, H as DEFAULT_MOBILE_VIEWPORT_QUERY, I as DEFAULT_COLORS, J as candidateMatchesSearch, K as useTheme, L as useWellPlateEditor, N as extractSampleNamesFromDesignData, O as useFileImport, P as extractSampleOptionsFromDesignData, Q as useSortedItems, R as useDoseCalculator, T as detectDelimiter, U as useMobileSupportGate, V as usePluginJobCenter, W as APP_EXPERIMENT_KEY, X as useTextSearch, Y as normalizeSearchQuery, Z as compareSortValues, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as useAutoGroup, k as validateImportFile, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as useToast, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as combinePluginJobSources } from "../useProtocolTemplates-DeaOmMaw.js";
5
+ import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-D1G5J5Z5.js";
6
+ import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-ejqR8MX3.js";
7
+ import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-Cdj93S9C.js";
8
+ import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-BuQZRgMt.js";
9
+ 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-C0VEJ73O.js";
10
+ 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, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getPluginPageSelectorItems, 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, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
@@ -0,0 +1,62 @@
1
+ import { ComputedRef, Ref, ShallowRef } from 'vue';
2
+ import { JobsStatusTrayAdapter, PluginJobCenterSource } from './useJobsStatusTray';
3
+ import { GeneratedAnalysisJob, GeneratedAnalysisResult, GeneratedSession, GeneratedAnalysisManifest, PluginJobPathInput, PluginJobPathUpload, PluginJobStagedPartInput, PluginJobStagedPartUploadResult, PluginJobStaging, PluginJobStagingPagination } from '../types/generated-ui';
4
+ export type GeneratedAnalysisTransport = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
5
+ export interface GeneratedAnalysisTransportOptions {
6
+ fetcher?: typeof fetch;
7
+ getAccessToken?: () => string | null | undefined;
8
+ }
9
+ export interface UsePluginJobsOptions {
10
+ baseUrl: string;
11
+ transport?: GeneratedAnalysisTransport;
12
+ storage?: Storage;
13
+ createId?: () => string;
14
+ pollInterval?: number;
15
+ stream?: boolean;
16
+ streamReconnectDelay?: number;
17
+ immediate?: boolean;
18
+ }
19
+ export type GeneratedAnalysisOptions = UsePluginJobsOptions;
20
+ export interface PluginJobWaitOptions {
21
+ signal?: AbortSignal;
22
+ rejectOnFailure?: boolean;
23
+ }
24
+ export interface PluginJobRequestOptions {
25
+ signal?: AbortSignal;
26
+ }
27
+ export interface UsePluginJobsReturn extends PluginJobCenterSource {
28
+ manifest: ShallowRef<GeneratedAnalysisManifest | null>;
29
+ session: ShallowRef<GeneratedSession | null>;
30
+ jobs: ShallowRef<GeneratedAnalysisJob[]>;
31
+ latestResult: ComputedRef<GeneratedAnalysisResult | null>;
32
+ isLoading: Ref<boolean>;
33
+ isSubmitting: Ref<boolean>;
34
+ error: ShallowRef<string | null>;
35
+ status: ShallowRef<'idle' | 'initializing' | 'ready' | 'paused' | 'error' | 'disposed'>;
36
+ initialize: () => Promise<void>;
37
+ ready: () => Promise<void>;
38
+ uploadPath: (input: PluginJobPathInput, definitionId?: string) => Promise<PluginJobPathUpload>;
39
+ uploadStagedPart: <Metadata>(input: PluginJobStagedPartInput<Metadata>) => Promise<PluginJobStagedPartUploadResult<Metadata>>;
40
+ getJobStaging: <Metadata = unknown>(job: GeneratedAnalysisJob | string, pagination?: PluginJobStagingPagination) => Promise<PluginJobStaging<Metadata>>;
41
+ sealJob: (job: GeneratedAnalysisJob | string) => Promise<GeneratedAnalysisJob>;
42
+ submit: (definitionId: string, inputs: Record<string, unknown>) => Promise<GeneratedAnalysisJob>;
43
+ loadResult: (job: GeneratedAnalysisJob) => Promise<GeneratedAnalysisResult | null>;
44
+ resultForJob: (jobId: string) => GeneratedAnalysisResult | null;
45
+ refreshJobs: () => Promise<GeneratedAnalysisJob[]>;
46
+ refresh: () => Promise<GeneratedAnalysisJob[]>;
47
+ getJob: (jobId: string, options?: PluginJobRequestOptions) => Promise<GeneratedAnalysisJob>;
48
+ waitForJob: (job: GeneratedAnalysisJob | string, options?: PluginJobWaitOptions) => Promise<GeneratedAnalysisJob>;
49
+ jobsFor: (definitionId: string) => GeneratedAnalysisJob[];
50
+ cancelJob: (job: GeneratedAnalysisJob | string) => Promise<GeneratedAnalysisJob>;
51
+ deleteJob: (job: GeneratedAnalysisJob | string) => Promise<boolean>;
52
+ clearFinishedJobs: (definitionId?: string) => Promise<number>;
53
+ pause: () => void;
54
+ resume: () => void;
55
+ dispose: () => void;
56
+ /** @deprecated Pass the runtime itself to SDK job UI as its source. */
57
+ jobsAdapter: JobsStatusTrayAdapter;
58
+ }
59
+ export type UseGeneratedAnalysisReturn = UsePluginJobsReturn;
60
+ export declare function createGeneratedAnalysisTransport(options?: GeneratedAnalysisTransportOptions): GeneratedAnalysisTransport;
61
+ export declare function useGeneratedAnalysis(options: GeneratedAnalysisOptions): UseGeneratedAnalysisReturn;
62
+ export declare function usePluginJobs(options: UsePluginJobsOptions): UsePluginJobsReturn;
@@ -2,28 +2,64 @@ import { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
2
2
  import { JobListPayload, JobState, JobStateInput, JobStreamData } from '../types/jobs';
3
3
  import { UsePluginEventStreamReturn } from './usePluginClient';
4
4
  export type JobsStatusTrayTab = 'active' | 'history';
5
+ /**
6
+ * The canonical owner of a collection of plugin jobs.
7
+ *
8
+ * Sources, rather than job-center UI, own polling, event streams, and all job
9
+ * mutations. This keeps components and consumers on one reactive job graph.
10
+ */
11
+ export interface PluginJobCenterSource {
12
+ jobs: MaybeRefOrGetter<readonly JobStateInput[]>;
13
+ refreshJobs?: () => Promise<JobListPayload | readonly JobStateInput[] | void>;
14
+ cancelJob?: (jobId: string) => Promise<JobStateInput | void>;
15
+ deleteJob?: (jobId: string) => Promise<boolean | void>;
16
+ clearFinishedJobs?: () => Promise<number | void>;
17
+ dispose?: () => void;
18
+ }
19
+ export interface CombinedPluginJobCenterSource extends PluginJobCenterSource {
20
+ jobs: ComputedRef<readonly JobStateInput[]>;
21
+ }
22
+ /**
23
+ * Combines independent job runtimes without copying their reactive state.
24
+ *
25
+ * Job ids must be globally unique across the sources. A duplicate id throws
26
+ * when jobs are read or an id-routed action is requested, rather than silently
27
+ * dispatching a mutation to the wrong owner.
28
+ */
29
+ export declare function combinePluginJobSources(sources: readonly PluginJobCenterSource[]): CombinedPluginJobCenterSource;
30
+ /** @deprecated Prefer a {@link PluginJobCenterSource}. */
5
31
  export interface JobsStatusTrayAdapter {
6
32
  listJobs?: () => Promise<JobListPayload | readonly JobStateInput[]>;
7
33
  cancelJob?: (job: JobState) => Promise<JobStateInput | void>;
8
34
  deleteJob?: (job: JobState) => Promise<boolean | void>;
9
35
  clearFinishedJobs?: (jobs: readonly JobState[]) => Promise<number | void>;
10
36
  }
11
- export interface UseJobsStatusTrayOptions {
37
+ export interface UsePluginJobCenterOptions {
38
+ source?: MaybeRefOrGetter<PluginJobCenterSource | undefined>;
39
+ /** @deprecated Pass a source with its canonical jobs ref. */
12
40
  jobs?: MaybeRefOrGetter<readonly JobStateInput[] | undefined>;
41
+ /** @deprecated Pass source actions instead. */
13
42
  adapter?: MaybeRefOrGetter<JobsStatusTrayAdapter | undefined>;
43
+ /** @deprecated Event handling belongs to the source runtime. */
14
44
  eventStream?: MaybeRefOrGetter<UsePluginEventStreamReturn<JobStreamData> | undefined>;
15
45
  loadOnMount?: boolean;
16
46
  }
47
+ export interface UseJobsStatusTrayOptions extends UsePluginJobCenterOptions {
48
+ }
17
49
  export interface JobStreamMessage {
18
50
  event: string;
19
51
  data: JobStreamData;
20
52
  }
21
- export interface UseJobsStatusTrayReturn {
22
- jobs: ShallowRef<JobState[]>;
53
+ export interface UsePluginJobCenterReturn {
54
+ jobs: ComputedRef<JobState[]>;
23
55
  activeJobs: ComputedRef<JobState[]>;
24
56
  historyJobs: ComputedRef<JobState[]>;
25
57
  deletableJobs: ComputedRef<JobState[]>;
26
58
  featuredJob: ComputedRef<JobState | null>;
59
+ canRefresh: ComputedRef<boolean>;
60
+ canCancel: ComputedRef<boolean>;
61
+ canDelete: ComputedRef<boolean>;
62
+ canClearFinished: ComputedRef<boolean>;
27
63
  isOpen: Ref<boolean>;
28
64
  activeTab: Ref<JobsStatusTrayTab>;
29
65
  isLoading: Ref<boolean>;
@@ -39,5 +75,13 @@ export interface UseJobsStatusTrayReturn {
39
75
  clearFinished: () => Promise<boolean>;
40
76
  isPending: (job: JobState) => boolean;
41
77
  }
42
- /** Headless state and action controller for the standard SDK jobs tray. */
78
+ export type UseJobsStatusTrayReturn = UsePluginJobCenterReturn;
79
+ /**
80
+ * Headless controller for plugin job presentation and actions.
81
+ *
82
+ * When a source is supplied, every job list is derived directly from that
83
+ * source. The controller never mirrors source jobs into another ref.
84
+ */
85
+ export declare function usePluginJobCenter(options?: UsePluginJobCenterOptions): UsePluginJobCenterReturn;
86
+ /** Backward-compatible name for the plugin job-center controller. */
43
87
  export declare function useJobsStatusTray(options?: UseJobsStatusTrayOptions): UseJobsStatusTrayReturn;
@@ -37,6 +37,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
37
37
  color?: string | undefined;
38
38
  route_prefix: string;
39
39
  api_prefix: string;
40
+ settings_api?: "plugin" | "platform" | undefined;
40
41
  nav_items?: {
41
42
  id?: string | undefined;
42
43
  label: string;
@@ -96,6 +97,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
96
97
  color?: string | undefined;
97
98
  route_prefix: string;
98
99
  api_prefix: string;
100
+ settings_api?: "plugin" | "platform" | undefined;
99
101
  nav_items?: {
100
102
  id?: string | undefined;
101
103
  label: string;
@@ -155,6 +157,7 @@ export declare function usePlatformContext(options?: PlatformContextOptions): {
155
157
  color?: string | undefined;
156
158
  route_prefix: string;
157
159
  api_prefix: string;
160
+ settings_api?: "plugin" | "platform" | undefined;
158
161
  nav_items?: {
159
162
  id?: string | undefined;
160
163
  label: string;
@@ -1,11 +1,13 @@
1
1
  import { ComputedRef, Ref } from 'vue';
2
- import { ExperimentSummary, PageSelectorItem, SettingsModalSchema, TopBarSettingsConfig } from '../types';
2
+ import { ExperimentSummary, GeneratedJobDefinition, PageSelectorItem, SettingsModalSchema, TopBarSettingsConfig } from '../types';
3
3
  export { buildPluginEndpointUrl, resolvePluginBaseUrl, } from './pluginEndpointBuilder';
4
4
  export type PluginHttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
5
5
  export interface PluginEndpointContract {
6
6
  name: string;
7
+ operationId?: string;
7
8
  method: PluginHttpMethod;
8
9
  path: string;
10
+ requiresAuth?: boolean;
9
11
  pathParams?: PluginEndpointParamContract[];
10
12
  queryParams?: PluginEndpointParamContract[];
11
13
  requestType?: string | null;
@@ -30,8 +32,15 @@ export interface PluginNavItemContract {
30
32
  requiresAdmin?: boolean;
31
33
  requiresFeature?: string;
32
34
  }
35
+ export interface PluginContractSettings {
36
+ modelName: string | null;
37
+ /** Pydantic JSON Schema used to generate typed settings values. */
38
+ valueSchema: Record<string, unknown> | null;
39
+ /** SDK SettingsModal schema used to render the settings form. */
40
+ formSchema: SettingsModalSchema | null;
41
+ }
33
42
  export interface PluginContract {
34
- schemaVersion: number;
43
+ schemaVersion: 2;
35
44
  plugin: {
36
45
  name?: string;
37
46
  packageName?: string;
@@ -47,16 +56,16 @@ export interface PluginContract {
47
56
  analysisResultReaders?: string[];
48
57
  capabilities?: Record<string, unknown>;
49
58
  };
50
- settings?: {
51
- modelName?: string | null;
52
- schema?: SettingsModalSchema | null;
53
- };
59
+ settings: PluginContractSettings;
54
60
  endpoints: PluginEndpointContract[];
61
+ schemas?: Record<string, Record<string, unknown>>;
62
+ jobs?: GeneratedJobDefinition[];
55
63
  hash: string;
56
64
  }
57
65
  export interface PluginEndpointDefinition {
58
66
  method: PluginHttpMethod;
59
67
  path: string;
68
+ requiresAuth?: boolean;
60
69
  pathParams?: PluginEndpointParamDefinition[];
61
70
  queryParams?: PluginEndpointParamDefinition[];
62
71
  hasBody?: boolean;
@@ -109,7 +118,7 @@ export interface UsePluginSettingsOptions {
109
118
  apiBaseUrl?: string;
110
119
  /** Platform API base URL for /plugins/{name}/config. Defaults to the injected platform API URL. */
111
120
  platformApiBaseUrl?: string;
112
- /** SettingsModal schema generated from the backend settings_model. */
121
+ /** SettingsModal schema generated from the backend plugin config model. */
113
122
  schema?: SettingsModalSchema | null;
114
123
  /** SettingsModal title when using settingsConfig. */
115
124
  title?: string;
@@ -205,7 +214,7 @@ export type GeneratedPluginClient = Record<string, (...args: any[]) => Promise<a
205
214
  export declare function pluginFormDataFromPayload(payload: unknown): FormData;
206
215
  /** Trigger a browser download for an already-created Blob. */
207
216
  export declare function downloadBlob(blob: Blob, filename: string, options?: DownloadBlobOptions): void;
208
- /** Convert PluginMetadata.nav_items into AppTopBar pageSelector items for topbar page switches and homepage PluginCards. */
217
+ /** Convert resolved @mint_plugin nav_items into page selectors for the topbar and homepage PluginCards. */
209
218
  export declare function getPluginPageSelectorItems(contract: PluginContract): PageSelectorItem[];
210
219
  /** Create a typed plugin API client from a generated MINT plugin contract. */
211
220
  export declare function createPluginClient<TClient extends object = GeneratedPluginClient>(contract: PluginContract, options: CreatePluginClientOptions): TClient;