@morscherlab/mint-sdk 1.0.63 → 1.1.0-beta.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.
- package/README.md +101 -2
- package/dist/EmptyState-D1c4RdC7.js +638 -0
- package/dist/EmptyState-D1c4RdC7.js.map +1 -0
- package/dist/{ExperimentPopover-BbPkIFsI.js → ExperimentPopover-BFw3QX8L.js} +10 -9
- package/dist/{ExperimentPopover-BbPkIFsI.js.map → ExperimentPopover-BFw3QX8L.js.map} +1 -1
- package/dist/{ExperimentSelectorModal-DZeSd-yr.js → ExperimentSelectorModal-B7w6k3Y8.js} +12 -216
- package/dist/ExperimentSelectorModal-B7w6k3Y8.js.map +1 -0
- package/dist/{SettingsModal-CJgLadsN.js → SettingsModal-DPDwCbXK.js} +12 -9
- package/dist/{SettingsModal-CJgLadsN.js.map → SettingsModal-DPDwCbXK.js.map} +1 -1
- package/dist/__tests__/components/GeneratedPlotlyResult.test.d.ts +1 -0
- package/dist/__tests__/components/GeneratedPluginView.test.d.ts +1 -0
- package/dist/__tests__/components/GeneratedResultRenderer.test.d.ts +1 -0
- package/dist/__tests__/components/InstrumentAlertLog.test.d.ts +1 -0
- package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +1 -0
- package/dist/__tests__/generatedUi.test.d.ts +1 -0
- package/dist/{analysisArtifactTypes-Cu40dzSG.js → analysisArtifactTypes-ejqR8MX3.js} +1 -1
- package/dist/analysisArtifactTypes-ejqR8MX3.js.map +1 -0
- package/dist/{auth-DZAwEeis.js → auth-B87xM--s.js} +1 -1
- package/dist/{auth-DZAwEeis.js.map → auth-B87xM--s.js.map} +1 -1
- package/dist/chunk-BoAXSpZd.js +33 -0
- package/dist/components/AppSidebar.vue.d.ts +1 -1
- package/dist/components/AutoGroupModal.vue.d.ts +2 -2
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
- package/dist/components/CollapsibleCard.vue.d.ts +1 -1
- package/dist/components/ComponentBindingRenderer.vue.d.ts +1 -1
- package/dist/components/ConfirmDialog.vue.d.ts +1 -1
- package/dist/components/ExperimentDataViewer.vue.d.ts +1 -1
- package/dist/components/ExperimentTimeline.vue.d.ts +1 -1
- package/dist/components/FileUploader.vue.d.ts +4 -2
- package/dist/components/FitPanel.vue.d.ts +1 -1
- package/dist/components/FormActions.vue.d.ts +1 -1
- package/dist/components/FormBuilder.vue.d.ts +1 -1
- package/dist/components/GeneratedPathInput.vue.d.ts +12 -0
- package/dist/components/GeneratedPlotlyResult.vue.d.ts +11 -0
- package/dist/components/GeneratedPluginView.vue.d.ts +10 -0
- package/dist/components/GeneratedResultRenderer.vue.d.ts +6 -0
- package/dist/components/JobsStatusTray.vue.d.ts +5 -1
- package/dist/components/LcmsSequenceTable.vue.d.ts +1 -1
- package/dist/components/SampleLegend.vue.d.ts +1 -1
- package/dist/components/SampleSelector.vue.d.ts +2 -2
- package/dist/components/SettingsModal.vue.d.ts +1 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -2
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +8 -9
- package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +2 -2
- package/dist/{components-DdzHh3a_.js → components-UfkPN1bK.js} +2255 -2303
- package/dist/components-UfkPN1bK.js.map +1 -0
- package/dist/composables/index.d.ts +2 -3
- package/dist/composables/index.js +10 -11
- package/dist/composables/platformContextHelpers.d.ts +0 -2
- package/dist/composables/useAnalysisArtifacts.d.ts +1 -3
- package/dist/composables/useGeneratedAnalysis.d.ts +62 -0
- package/dist/composables/useJobsStatusTray.d.ts +48 -4
- package/dist/composables/usePlatformContext.d.ts +3 -0
- package/dist/composables/usePluginClient.d.ts +6 -3
- package/dist/{composables-BUUphBqg.js → composables-B512bWJP.js} +155 -74
- package/dist/composables-B512bWJP.js.map +1 -0
- package/dist/experiment-utils-CxkruZ3G.js +392 -0
- package/dist/experiment-utils-CxkruZ3G.js.map +1 -0
- package/dist/generated/schema.d.ts +7 -0
- package/dist/generated-ui/main.d.ts +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -18
- package/dist/index.js.map +1 -1
- package/dist/install.js +7 -8
- package/dist/install.js.map +1 -1
- package/dist/plotly.min-BR53hja4.js +180634 -0
- package/dist/plotly.min-BR53hja4.js.map +1 -0
- package/dist/stores/auth.d.ts +2 -2
- package/dist/stores/index.js +1 -1
- package/dist/styles.css +10543 -10404
- package/dist/templates/index.js +4 -3
- package/dist/templates/packs.d.ts +0 -1
- package/dist/{templates-CNbPQNID.js → templates-Cttbjbyc.js} +2 -4
- package/dist/templates-Cttbjbyc.js.map +1 -0
- package/dist/types/analysisArtifactTypes.d.ts +0 -8
- package/dist/types/form-builder.d.ts +1 -1
- package/dist/types/generated-ui.d.ts +170 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +1 -1
- package/dist/types/instrument.d.ts +1 -0
- package/dist/types/jobs.d.ts +7 -1
- package/dist/types/platform.d.ts +2 -0
- package/dist/{useControlSchema-BZNdalmL.js → useControlSchema-Dallso-L.js} +1852 -171
- package/dist/useControlSchema-Dallso-L.js.map +1 -0
- package/dist/{useDropdownState-Bb-c_PeE.js → useDropdownState-gVaMXtwW.js} +2 -2
- package/dist/{useDropdownState-Bb-c_PeE.js.map → useDropdownState-gVaMXtwW.js.map} +1 -1
- package/dist/{useExperimentSelector-DRbj6vse.js → useExperimentSelector-BMjzNcf2.js} +4 -255
- package/dist/useExperimentSelector-BMjzNcf2.js.map +1 -0
- package/dist/{useFormBuilder-DKekvXRs.js → useFormBuilder-BXaaDI41.js} +2 -2
- package/dist/{useFormBuilder-DKekvXRs.js.map → useFormBuilder-BXaaDI41.js.map} +1 -1
- package/dist/{useAnalysisArtifacts-C3l0a0vu.js → useProtocolTemplates-BP7_4RGQ.js} +307 -475
- package/dist/useProtocolTemplates-BP7_4RGQ.js.map +1 -0
- package/package.json +7 -3
- package/src/__tests__/components/GeneratedPathInput.test.ts +132 -0
- package/src/__tests__/components/GeneratedPlotlyResult.test.ts +117 -0
- package/src/__tests__/components/GeneratedPluginView.test.ts +230 -0
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +93 -0
- package/src/__tests__/components/InstrumentAlertLog.test.ts +59 -0
- package/src/__tests__/composables/formBuilderRegistry.test.ts +5 -1
- package/src/__tests__/composables/useAnalysisArtifacts.test.ts +1 -74
- package/src/__tests__/composables/useApi.test.ts +8 -0
- package/src/__tests__/composables/useGeneratedAnalysis.test.ts +1740 -0
- package/src/__tests__/composables/useJobsStatusTray.test.ts +179 -1
- package/src/__tests__/composables/usePlatformContext.test.ts +28 -0
- package/src/__tests__/composables/usePluginClient.test.ts +366 -20
- package/src/__tests__/composables/usePluginConfig.test.ts +323 -7
- package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -1
- package/src/__tests__/generatedUi.test.ts +119 -0
- package/src/__tests__/templates/templates.test.ts +1 -1
- package/src/components/FileUploader.vue +49 -11
- package/src/components/GeneratedPathInput.vue +218 -0
- package/src/components/GeneratedPlotlyResult.vue +87 -0
- package/src/components/GeneratedPluginView.vue +279 -0
- package/src/components/GeneratedResultRenderer.vue +137 -0
- package/src/components/InstrumentAlertLog.vue +2 -2
- package/src/components/JobsStatusTray.vue +14 -8
- package/src/components/index.ts +4 -0
- package/src/composables/formBuilderRegistry.ts +2 -0
- package/src/composables/index.ts +18 -5
- package/src/composables/platformContextHelpers.ts +3 -10
- package/src/composables/useAnalysisArtifacts.ts +0 -48
- package/src/composables/useApi.ts +1 -0
- package/src/composables/useGeneratedAnalysis.ts +1252 -0
- package/src/composables/useJobsStatusTray.ts +234 -45
- package/src/composables/usePluginClient.ts +152 -25
- package/src/composables/usePluginConfig.ts +156 -20
- package/src/generated/schema.ts +130 -0
- package/src/generated-ui/main.ts +21 -0
- package/src/index.ts +3 -0
- package/src/jobs.ts +5 -0
- package/src/plotly-dist.d.ts +3 -0
- package/src/templates/packs.ts +0 -3
- package/src/types/analysisArtifactTypes.ts +0 -9
- package/src/types/form-builder.ts +1 -0
- package/src/types/generated-ui.ts +176 -0
- package/src/types/index.ts +2 -1
- package/src/types/instrument.ts +1 -0
- package/src/types/jobs.ts +10 -1
- package/src/types/platform.ts +2 -0
- package/dist/BaseButton-Dgqrze41.js +0 -74
- package/dist/BaseButton-Dgqrze41.js.map +0 -1
- package/dist/BaseModal-B9UA8Y_I.js +0 -165
- package/dist/BaseModal-B9UA8Y_I.js.map +0 -1
- package/dist/BaseSelect-ekgr9fDo.js +0 -179
- package/dist/BaseSelect-ekgr9fDo.js.map +0 -1
- package/dist/ExperimentPopover-Ryusjrhv.js +0 -4
- package/dist/ExperimentSelectorModal-Cg4-LXBD.js +0 -5
- package/dist/ExperimentSelectorModal-DZeSd-yr.js.map +0 -1
- package/dist/SettingsModal-Bl_9w2Y3.js +0 -5
- package/dist/analysisArtifactTypes-Cu40dzSG.js.map +0 -1
- package/dist/components-DdzHh3a_.js.map +0 -1
- package/dist/composables/analysisArtifactTarget.d.ts +0 -5
- package/dist/composables-BUUphBqg.js.map +0 -1
- package/dist/experiment-utils-Bfa7CwPU.js +0 -108
- package/dist/experiment-utils-Bfa7CwPU.js.map +0 -1
- package/dist/templates-CNbPQNID.js.map +0 -1
- package/dist/useAnalysisArtifacts-C3l0a0vu.js.map +0 -1
- package/dist/useControlSchema-BZNdalmL.js.map +0 -1
- package/dist/useEventListener-CfVkP9Xz.js +0 -57
- package/dist/useEventListener-CfVkP9Xz.js.map +0 -1
- package/dist/useExperimentSelector-DRbj6vse.js.map +0 -1
- package/src/__tests__/composables/analysisArtifactTarget.test.ts +0 -77
- package/src/composables/analysisArtifactTarget.ts +0 -53
- /package/dist/__tests__/{composables/analysisArtifactTarget.test.d.ts → components/GeneratedPathInput.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -105,8 +105,8 @@ const result = await pluginClient.analyze(
|
|
|
105
105
|
)
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
Generated files also expose typed plugin settings when the backend declares
|
|
109
|
-
|
|
108
|
+
Generated files also expose typed plugin settings when the backend declares
|
|
109
|
+
`@mint_plugin(config=PluginConfig)`:
|
|
110
110
|
|
|
111
111
|
```typescript
|
|
112
112
|
import { useGeneratedPluginSettings } from './generated/mint-plugin'
|
|
@@ -115,6 +115,11 @@ const { settings } = useGeneratedPluginSettings()
|
|
|
115
115
|
const threshold = settings.value?.threshold
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
+
When `.env`, process-environment, or startup values override a field, saving
|
|
119
|
+
still updates its backing value. The effective override remains active, while
|
|
120
|
+
the saved value is returned in `stored_settings` and marked `inactive` until
|
|
121
|
+
that higher-priority override is removed.
|
|
122
|
+
|
|
118
123
|
The generated client is built from backend plugin metadata, FastAPI routes, and Pydantic schemas, and uses the frontend SDK to resolve the API prefix automatically.
|
|
119
124
|
FastAPI request or response content declared as standard
|
|
120
125
|
`application/octet-stream` is generated as a raw binary transport: request
|
|
@@ -345,6 +350,100 @@ replacement path.
|
|
|
345
350
|
|
|
346
351
|
## Composables
|
|
347
352
|
|
|
353
|
+
### `usePluginJobs(options)`
|
|
354
|
+
|
|
355
|
+
Generated plugin contracts wrap this composable with definition-specific
|
|
356
|
+
input, job, and output types. For a component dedicated to one generated job,
|
|
357
|
+
bind the definition once with `forDefinition()`:
|
|
358
|
+
|
|
359
|
+
```typescript
|
|
360
|
+
import { usePluginJobs } from './generated/mint-plugin'
|
|
361
|
+
|
|
362
|
+
const jobs = usePluginJobs()
|
|
363
|
+
await jobs.ready()
|
|
364
|
+
|
|
365
|
+
const analyzeJobs = jobs.forDefinition('analyze')
|
|
366
|
+
const job = await analyzeJobs.submit({
|
|
367
|
+
source: new File(['peak\n1'], 'peaks.csv'),
|
|
368
|
+
threshold: 0.1,
|
|
369
|
+
})
|
|
370
|
+
const result = await analyzeJobs.loadResult(job)
|
|
371
|
+
const canonicalJob = await analyzeJobs.getJob(job.job_id)
|
|
372
|
+
const completedJob = await analyzeJobs.waitForJob(canonicalJob, {
|
|
373
|
+
signal: abortController.signal,
|
|
374
|
+
rejectOnFailure: true,
|
|
375
|
+
})
|
|
376
|
+
|
|
377
|
+
await analyzeJobs.cancelJob(canonicalJob)
|
|
378
|
+
|
|
379
|
+
// Releases only finished `analyze` jobs and their retained results.
|
|
380
|
+
await analyzeJobs.clearFinishedJobs()
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
The returned scope exposes a typed `jobs` getter, `isJob()` type guard,
|
|
384
|
+
`submit()`, `getJob()`, `waitForJob()`, `loadResult()`, `cancelJob()`, `deleteJob()`, and
|
|
385
|
+
definition-scoped `clearFinishedJobs()`. It also exposes the generated
|
|
386
|
+
`lifecycle` and `profile` literals for that definition without adding runtime
|
|
387
|
+
requests. Passing a job from another definition
|
|
388
|
+
fails instead of crossing the scope. Capability fields are presentation hints;
|
|
389
|
+
the server remains authoritative when scoped cancel/delete methods are called.
|
|
390
|
+
The root wrapper still supports dynamic definition IDs through `submit()` and
|
|
391
|
+
`jobsFor()`. Its no-argument `clearFinishedJobs()` intentionally clears
|
|
392
|
+
terminal jobs across every definition.
|
|
393
|
+
|
|
394
|
+
The underlying frontend composable accepts an optional definition ID in
|
|
395
|
+
`clearFinishedJobs(definitionId)`; generated clients expose the scoped method
|
|
396
|
+
so static definition IDs retain their generated input, job, and output types.
|
|
397
|
+
`getJob()` fetches one fresh canonical job without refreshing the list.
|
|
398
|
+
`waitForJob()` settles from the same SSE/poll-backed canonical source and
|
|
399
|
+
cleans up on abort, deletion, or disposal, so callers do not need a second
|
|
400
|
+
event stream or Promise registry. A call made while the runtime is paused
|
|
401
|
+
rejects immediately. Waiting on a known active job tolerates a transient direct
|
|
402
|
+
lookup failure and continues through SSE/poll updates; pausing an existing wait
|
|
403
|
+
suspends those updates until `resume()`.
|
|
404
|
+
`cancelJob()` updates active work, while `deleteJob()` releases one terminal
|
|
405
|
+
job and its retained result. Background work can be `pause()`d and `resume()`d,
|
|
406
|
+
while `dispose()` is idempotent and also runs automatically with the owning Vue
|
|
407
|
+
effect scope.
|
|
408
|
+
|
|
409
|
+
Both ordinary `uploadPath({ ..., signal })` and a staged scope's
|
|
410
|
+
`uploadPart(job, { ..., signal })` forward the supplied `AbortSignal` to the
|
|
411
|
+
authenticated multipart request. Abort stops the client-side transfer, but the
|
|
412
|
+
caller should refresh job/staging state before retrying because the server may
|
|
413
|
+
already have committed the upload.
|
|
414
|
+
|
|
415
|
+
`cancelJob()` and `deleteJob()` accept either a canonical job object or its ID.
|
|
416
|
+
|
|
417
|
+
Pass the runtime's canonical source directly to standard job UI. The job center
|
|
418
|
+
derives its groups from the same jobs ref and does not mirror it with a watcher:
|
|
419
|
+
|
|
420
|
+
```vue
|
|
421
|
+
<script setup lang="ts">
|
|
422
|
+
import { JobsStatusTray } from '@morscherlab/mint-sdk'
|
|
423
|
+
import { usePluginJobs } from './generated/mint-plugin'
|
|
424
|
+
|
|
425
|
+
const jobs = usePluginJobs()
|
|
426
|
+
</script>
|
|
427
|
+
|
|
428
|
+
<template>
|
|
429
|
+
<JobsStatusTray :source="jobs" />
|
|
430
|
+
</template>
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
The older `jobs` plus `adapter` tray inputs remain available for compatibility.
|
|
434
|
+
New integrations should pass the runtime itself so polling, SSE updates, and
|
|
435
|
+
job actions continue to have exactly one state owner.
|
|
436
|
+
|
|
437
|
+
When an incremental migration temporarily has more than one owner, use
|
|
438
|
+
`combinePluginJobSources([sdkJobs, legacyJobs])`. It preserves each source's
|
|
439
|
+
live jobs getter, fans out refresh/clear operations, routes per-job actions to
|
|
440
|
+
the owning source, and rejects duplicate IDs instead of guessing.
|
|
441
|
+
|
|
442
|
+
Job state exposes `definition_id`, `result_status`, and `result_expires_at`.
|
|
443
|
+
Managed file results carry a short-lived, result-scoped `download_url` instead
|
|
444
|
+
of embedded base64 data or the user's bearer token, so regular browser
|
|
445
|
+
downloads work through an integrated plugin proxy.
|
|
446
|
+
|
|
348
447
|
### `useApi(options?)`
|
|
349
448
|
Generic API client with auth interceptor.
|
|
350
449
|
|