@camstack/addon-model-studio 1.1.228 → 1.1.230
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/dist/{MotionZonesSettings-AwjU_jds.mjs → MotionZonesSettings-9DNvDBRb.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-BxJyOTIX.mjs → PrivacyMaskSettings-B8wVIjmI.mjs} +4 -4
- package/dist/{SceneMonitorEditor-CvsWahwh.mjs → SceneMonitorEditor-DUiiMwds.mjs} +3 -3
- package/dist/_stub.js +4366 -4318
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BCzo8Ivn.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C2gOmMPj.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CvAZq56a.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-gQy4GGXk.mjs → hostInit-DiDfmJ3W.mjs} +2 -2
- package/dist/model-studio.addon.js +258 -132
- package/dist/model-studio.addon.mjs +258 -132
- package/dist/{player-overlays-DUpfuxPB.mjs → player-overlays-DZe7hnQ4.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BHoVd25G.mjs → responsive-yCZZZ6gV.mjs} +1 -1
- package/dist/{scene-monitor-copy-DGpr-uDO.mjs → scene-monitor-copy-Cl7b4sC4.mjs} +1 -1
- package/dist/{square-CeBzl9Ag.mjs → square-CMKCu9Lr.mjs} +1 -1
- package/dist/{trash-2-Bl3EnWCS.mjs → trash-2-Dc4vbOgo.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DYKjkHm-.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-DVFLaMDL.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DTZ_Cxlt.mjs +0 -26
|
@@ -5746,7 +5746,7 @@ var ZodIssueCode = {
|
|
|
5746
5746
|
var ZodFirstPartyTypeKind;
|
|
5747
5747
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5748
5748
|
//#endregion
|
|
5749
|
-
//#region ../types/dist/sleep-
|
|
5749
|
+
//#region ../types/dist/sleep-CI0n5D44.mjs
|
|
5750
5750
|
/**
|
|
5751
5751
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5752
5752
|
* window to float samples (D455).
|
|
@@ -9756,6 +9756,16 @@ var CompositionSchema = object({
|
|
|
9756
9756
|
seen.add(feature.cap);
|
|
9757
9757
|
});
|
|
9758
9758
|
});
|
|
9759
|
+
var NodeColorIdSchema = _enum([
|
|
9760
|
+
"node-a",
|
|
9761
|
+
"node-b",
|
|
9762
|
+
"node-c",
|
|
9763
|
+
"node-d",
|
|
9764
|
+
"node-e",
|
|
9765
|
+
"node-f",
|
|
9766
|
+
"node-g",
|
|
9767
|
+
"node-h"
|
|
9768
|
+
]);
|
|
9759
9769
|
new Set([
|
|
9760
9770
|
"track",
|
|
9761
9771
|
"face",
|
|
@@ -24505,24 +24515,69 @@ var RetrainFrameListSchema = object({
|
|
|
24505
24515
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
24506
24516
|
autoPickMediaId: number().int().optional()
|
|
24507
24517
|
});
|
|
24518
|
+
/** Exclusive partition of a corpus copy's annotation progress (design §4.2). */
|
|
24519
|
+
var RetrainFrameWorkStateSchema = _enum([
|
|
24520
|
+
"unannotated",
|
|
24521
|
+
"annotated",
|
|
24522
|
+
"complete"
|
|
24523
|
+
]);
|
|
24524
|
+
/**
|
|
24525
|
+
* Filters for paginated corpus list, KPI, and matching export (design §4.4).
|
|
24526
|
+
* Every narrowing field is ANDed; omitted fields impose no constraint.
|
|
24527
|
+
*/
|
|
24528
|
+
var RetrainCorpusFilterSchema = object({
|
|
24529
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
24530
|
+
deviceIds: array(number()).max(500).optional(),
|
|
24531
|
+
/** When set, only frames in this named collection. */
|
|
24532
|
+
collectionId: string().optional(),
|
|
24533
|
+
/** Frames that carry at least one saved annotation in one of these classes. */
|
|
24534
|
+
classes: array(RetrainMacroClassSchema).optional(),
|
|
24535
|
+
page: number().int().positive().default(1),
|
|
24536
|
+
pageSize: number().int().positive().max(100).default(50)
|
|
24537
|
+
});
|
|
24538
|
+
var RetrainCorpusPageSchema = object({
|
|
24539
|
+
frames: array(RetrainFrameSchema.extend({ workState: RetrainFrameWorkStateSchema })).readonly(),
|
|
24540
|
+
total: number().int().nonnegative(),
|
|
24541
|
+
page: number().int().positive(),
|
|
24542
|
+
pageSize: number().int().positive()
|
|
24543
|
+
});
|
|
24544
|
+
var RetrainCorpusKpiCameraRowSchema = object({
|
|
24545
|
+
deviceId: number(),
|
|
24546
|
+
unannotated: number().int().nonnegative(),
|
|
24547
|
+
annotated: number().int().nonnegative(),
|
|
24548
|
+
complete: number().int().nonnegative(),
|
|
24549
|
+
/** This camera's `complete` count divided by corpus `total`, in `[0,1]`.
|
|
24550
|
+
* `null` when the corpus is empty (no ratio). */
|
|
24551
|
+
pctOfCorpus: number().min(0).max(1).nullable()
|
|
24552
|
+
});
|
|
24553
|
+
var RetrainCorpusKpiSchema = object({
|
|
24554
|
+
total: number().int().nonnegative(),
|
|
24555
|
+
unannotated: number().int().nonnegative(),
|
|
24556
|
+
annotated: number().int().nonnegative(),
|
|
24557
|
+
complete: number().int().nonnegative(),
|
|
24558
|
+
cameras: array(RetrainCorpusKpiCameraRowSchema).readonly()
|
|
24559
|
+
});
|
|
24508
24560
|
/**
|
|
24509
24561
|
* Which frames an annotated export carries. Every field narrows; an empty
|
|
24510
|
-
* filter is every annotated copy.
|
|
24511
|
-
*
|
|
24512
|
-
*
|
|
24513
|
-
*
|
|
24562
|
+
* filter is every annotated copy. `frameIds` is the primitive a job or
|
|
24563
|
+
* download uses; `batchId` re-selects what an earlier export carried
|
|
24564
|
+
* (`exportedInBatch`). Frozen dataset versions were removed — live selection
|
|
24565
|
+
* resolves to `frameIds` at plan/start.
|
|
24514
24566
|
*/
|
|
24515
24567
|
var RetrainExportFilterSchema = object({
|
|
24516
24568
|
deviceIds: array(number()).optional(),
|
|
24517
24569
|
frameIds: array(string()).max(2e4).optional(),
|
|
24518
24570
|
/** Only frames in at least one of these named collections. */
|
|
24519
24571
|
collectionIds: array(string()).max(200).optional(),
|
|
24520
|
-
/**
|
|
24521
|
-
|
|
24522
|
-
datasetVersionId: string().optional(),
|
|
24572
|
+
/** Single collection (Frames filter bar). ANDed with `collectionIds` when both set. */
|
|
24573
|
+
collectionId: string().optional(),
|
|
24523
24574
|
batchId: string().optional(),
|
|
24524
24575
|
/** Only frames the operator marked complete (all subjects boxed). */
|
|
24525
|
-
completeOnly: boolean().optional()
|
|
24576
|
+
completeOnly: boolean().optional(),
|
|
24577
|
+
/** Exclusive work-state partition (`workStateOf`); same as the corpus list. */
|
|
24578
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
24579
|
+
/** Frames with at least one saved annotation in one of these classes. */
|
|
24580
|
+
classes: array(RetrainMacroClassSchema).optional()
|
|
24526
24581
|
});
|
|
24527
24582
|
/**
|
|
24528
24583
|
* `frames`: the full frame copies, boxes in `annotations.json`.
|
|
@@ -24722,8 +24777,7 @@ var RetrainDatasetStatsSchema = object({
|
|
|
24722
24777
|
completeFrames: number().int()
|
|
24723
24778
|
})).readonly()
|
|
24724
24779
|
});
|
|
24725
|
-
|
|
24726
|
-
var RetrainDatasetVersionSchema = object({
|
|
24780
|
+
object({
|
|
24727
24781
|
id: string(),
|
|
24728
24782
|
name: string(),
|
|
24729
24783
|
createdAt: number(),
|
|
@@ -24731,22 +24785,33 @@ var RetrainDatasetVersionSchema = object({
|
|
|
24731
24785
|
layout: RetrainExportLayoutSchema,
|
|
24732
24786
|
completeOnly: boolean(),
|
|
24733
24787
|
frameCount: number().int(),
|
|
24734
|
-
/** sha256 of what the frames taught when the version was frozen. */
|
|
24735
24788
|
annotationHash: string(),
|
|
24736
|
-
/** The export manifest schema the version was cut under. */
|
|
24737
24789
|
manifestSchema: string(),
|
|
24738
24790
|
stats: RetrainDatasetStatsSchema
|
|
24739
24791
|
});
|
|
24740
|
-
|
|
24741
|
-
|
|
24742
|
-
|
|
24792
|
+
/**
|
|
24793
|
+
* Live training corpus criteria — same shape as `TrainingCorpusSelection` on
|
|
24794
|
+
* the training cap. Resolved here so plan/start and the annotated export share
|
|
24795
|
+
* one definition of "the frames" (`buildRetrainExportPlan`).
|
|
24796
|
+
*/
|
|
24797
|
+
var RetrainTrainingCorpusSelectionSchema = object({
|
|
24798
|
+
collectionIds: array(string()).min(1),
|
|
24799
|
+
workState: _enum([
|
|
24800
|
+
"complete",
|
|
24801
|
+
"annotated_or_complete",
|
|
24802
|
+
"any_annotated"
|
|
24803
|
+
]).default("complete")
|
|
24804
|
+
});
|
|
24805
|
+
var RetrainTrainingCorpusResolveResultSchema = discriminatedUnion("kind", [object({
|
|
24806
|
+
kind: literal("resolved"),
|
|
24807
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
24808
|
+
stats: RetrainDatasetStatsSchema,
|
|
24809
|
+
annotationHash: string(),
|
|
24810
|
+
layout: RetrainExportLayoutSchema
|
|
24743
24811
|
}), object({
|
|
24744
24812
|
kind: literal("refused"),
|
|
24745
|
-
reason: _enum([
|
|
24746
|
-
|
|
24747
|
-
"duplicate-name",
|
|
24748
|
-
"no-frames"
|
|
24749
|
-
])
|
|
24813
|
+
reason: _enum(["unknown-collection", "no-frames"]),
|
|
24814
|
+
detail: string()
|
|
24750
24815
|
})]);
|
|
24751
24816
|
/** The outcome of a lifecycle move owned by the retrain page. */
|
|
24752
24817
|
var RetrainTransitionResultSchema = object({
|
|
@@ -25453,6 +25518,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25453
25518
|
}), array(RetrainTrackSchema).readonly(), {
|
|
25454
25519
|
kind: "query",
|
|
25455
25520
|
auth: "admin"
|
|
25521
|
+
}), method(RetrainCorpusFilterSchema, RetrainCorpusPageSchema, {
|
|
25522
|
+
kind: "query",
|
|
25523
|
+
auth: "admin"
|
|
25524
|
+
}), method(object({}), RetrainCorpusKpiSchema, {
|
|
25525
|
+
kind: "query",
|
|
25526
|
+
auth: "admin"
|
|
25456
25527
|
}), method(object({ trackId: string() }), RetrainFrameListSchema, {
|
|
25457
25528
|
kind: "query",
|
|
25458
25529
|
auth: "admin"
|
|
@@ -25548,36 +25619,6 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25548
25619
|
kind: "mutation",
|
|
25549
25620
|
auth: "admin",
|
|
25550
25621
|
timeoutMs: 12e4
|
|
25551
|
-
}), method(object({
|
|
25552
|
-
selection: RetrainDatasetSelectionSchema,
|
|
25553
|
-
completeOnly: boolean().optional()
|
|
25554
|
-
}), RetrainDatasetStatsSchema, {
|
|
25555
|
-
kind: "query",
|
|
25556
|
-
auth: "admin"
|
|
25557
|
-
}), method(object({
|
|
25558
|
-
name: string().max(120),
|
|
25559
|
-
selection: RetrainDatasetSelectionSchema,
|
|
25560
|
-
layout: RetrainExportLayoutSchema,
|
|
25561
|
-
completeOnly: boolean()
|
|
25562
|
-
}), CreateRetrainDatasetVersionResultSchema, {
|
|
25563
|
-
kind: "mutation",
|
|
25564
|
-
auth: "admin",
|
|
25565
|
-
timeoutMs: 12e4
|
|
25566
|
-
}), method(object({}), array(RetrainDatasetVersionSchema).readonly(), {
|
|
25567
|
-
kind: "query",
|
|
25568
|
-
auth: "admin"
|
|
25569
|
-
}), method(object({ id: string() }), object({ deleted: boolean() }), {
|
|
25570
|
-
kind: "mutation",
|
|
25571
|
-
auth: "admin"
|
|
25572
|
-
}), method(object({ id: string() }), object({
|
|
25573
|
-
found: boolean(),
|
|
25574
|
-
annotationHash: string(),
|
|
25575
|
-
matches: boolean(),
|
|
25576
|
-
missingFrames: number().int()
|
|
25577
|
-
}), {
|
|
25578
|
-
kind: "query",
|
|
25579
|
-
auth: "admin",
|
|
25580
|
-
timeoutMs: 12e4
|
|
25581
25622
|
}), method(object({}), array(RetrainAssistProfileSchema).readonly(), {
|
|
25582
25623
|
kind: "query",
|
|
25583
25624
|
auth: "admin"
|
|
@@ -25604,6 +25645,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25604
25645
|
}), method(object({}), array(RetrainCollectionSchema).readonly(), {
|
|
25605
25646
|
kind: "query",
|
|
25606
25647
|
auth: "admin"
|
|
25648
|
+
}), method(RetrainTrainingCorpusSelectionSchema, RetrainTrainingCorpusResolveResultSchema, {
|
|
25649
|
+
kind: "query",
|
|
25650
|
+
auth: "admin",
|
|
25651
|
+
timeoutMs: 6e4
|
|
25607
25652
|
}), method(object({
|
|
25608
25653
|
id: string(),
|
|
25609
25654
|
name: string().max(120)
|
|
@@ -26220,11 +26265,14 @@ var HardwareClassIdSchema = _enum([
|
|
|
26220
26265
|
"intel-n-series",
|
|
26221
26266
|
"apple-m-base",
|
|
26222
26267
|
"apple-m-pro",
|
|
26268
|
+
"amd-phoenix",
|
|
26223
26269
|
"unknown"
|
|
26224
26270
|
]);
|
|
26225
26271
|
var AcceleratorKindSchema = _enum([
|
|
26226
26272
|
"intel-npu",
|
|
26227
26273
|
"intel-igpu",
|
|
26274
|
+
"amd-igpu",
|
|
26275
|
+
"amd-npu",
|
|
26228
26276
|
"x86-cpu",
|
|
26229
26277
|
"arm-cpu",
|
|
26230
26278
|
"apple-ane",
|
|
@@ -28114,6 +28162,8 @@ var AgentPipelineSettingsSchema = object({
|
|
|
28114
28162
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
28115
28163
|
*/
|
|
28116
28164
|
reachableHost: string().optional(),
|
|
28165
|
+
/** Hub-persisted UI colour (`--color-node-*` theme tokens). */
|
|
28166
|
+
color: NodeColorIdSchema.optional(),
|
|
28117
28167
|
/**
|
|
28118
28168
|
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
28119
28169
|
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
@@ -28663,8 +28713,9 @@ method(object({
|
|
|
28663
28713
|
auth: "admin"
|
|
28664
28714
|
}), method(object({
|
|
28665
28715
|
agentNodeId: string(),
|
|
28666
|
-
reachableHost: string().nullable()
|
|
28667
|
-
|
|
28716
|
+
reachableHost: string().nullable().optional(),
|
|
28717
|
+
color: NodeColorIdSchema.nullable().optional()
|
|
28718
|
+
}).refine((v) => v.reachableHost !== void 0 || v.color !== void 0, { message: "reachableHost or color required" }), object({ success: literal(true) }), {
|
|
28668
28719
|
kind: "mutation",
|
|
28669
28720
|
auth: "admin"
|
|
28670
28721
|
}), method(object({
|
|
@@ -36110,7 +36161,15 @@ var GpuInfoSchema = object({
|
|
|
36110
36161
|
name: string(),
|
|
36111
36162
|
memoryMB: number().optional()
|
|
36112
36163
|
});
|
|
36113
|
-
var NpuInfoSchema = object({
|
|
36164
|
+
var NpuInfoSchema = object({
|
|
36165
|
+
type: _enum([
|
|
36166
|
+
"apple-ane",
|
|
36167
|
+
"intel-npu",
|
|
36168
|
+
"amd-xdna"
|
|
36169
|
+
]),
|
|
36170
|
+
name: string().optional(),
|
|
36171
|
+
generation: _enum(["xdna1", "xdna2"]).optional()
|
|
36172
|
+
});
|
|
36114
36173
|
var CoralInfoSchema = object({
|
|
36115
36174
|
type: literal("coral-edgetpu"),
|
|
36116
36175
|
bus: string().optional()
|
|
@@ -39872,9 +39931,11 @@ DeviceType.Camera, method(object({
|
|
|
39872
39931
|
* once is what makes a second provider (RunPod, a local NVIDIA node) a new
|
|
39873
39932
|
* manifest entry and nothing else.
|
|
39874
39933
|
*
|
|
39875
|
-
* Collection
|
|
39876
|
-
*
|
|
39877
|
-
*
|
|
39934
|
+
* Collection of provider **types** (addons). Each addon owns zero or more
|
|
39935
|
+
* **entries** (credentials + defaults). Concat-fans: `describe`,
|
|
39936
|
+
* `describeTypes`, `listEntries`, `listJobs`. Single-row work is keyed by
|
|
39937
|
+
* `entryId`; callers also pass the owning `addonId` as the collection
|
|
39938
|
+
* selector (broker posture). Every method is `admin`: these spend money.
|
|
39878
39939
|
*
|
|
39879
39940
|
* Every cloud object a provider creates is tagged with the orchestrator's
|
|
39880
39941
|
* `jobKey`, so a retried submit finds the job it already started instead of
|
|
@@ -39898,8 +39959,8 @@ var TrainingRegionOptionSchema = object({
|
|
|
39898
39959
|
priceMultiplier: number().positive()
|
|
39899
39960
|
});
|
|
39900
39961
|
/**
|
|
39901
|
-
* The provider's per-
|
|
39902
|
-
* live
|
|
39962
|
+
* The provider's per-entry settings, as the orchestrator reads them. They
|
|
39963
|
+
* live on the PROVIDER addon's entry (operator decision 2026-10-08: they
|
|
39903
39964
|
* depend on the user's account), never hard-coded in the orchestrator.
|
|
39904
39965
|
*/
|
|
39905
39966
|
var TrainingProviderDefaultsSchema = object({
|
|
@@ -39910,9 +39971,32 @@ var TrainingProviderDefaultsSchema = object({
|
|
|
39910
39971
|
/** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
|
|
39911
39972
|
failedDatasetGraceHours: number().nonnegative()
|
|
39912
39973
|
});
|
|
39974
|
+
/** One creatable provider type, for the Add-entry dialog. */
|
|
39975
|
+
var TrainingProviderTypeSchema = object({
|
|
39976
|
+
typeId: string(),
|
|
39977
|
+
label: string(),
|
|
39978
|
+
/** Path under the addon package (e.g. `assets/training-modal/icon.svg`). */
|
|
39979
|
+
iconAsset: string(),
|
|
39980
|
+
/** Owning `training-provider` addon — collection selector for createEntry. */
|
|
39981
|
+
addonId: string()
|
|
39982
|
+
});
|
|
39983
|
+
/** One configured account / workspace under a provider type. */
|
|
39984
|
+
var TrainingProviderEntrySchema = object({
|
|
39985
|
+
entryId: string(),
|
|
39986
|
+
typeId: string(),
|
|
39987
|
+
name: string(),
|
|
39988
|
+
addonId: string(),
|
|
39989
|
+
/** Credentials are present — never the values. */
|
|
39990
|
+
configured: boolean()
|
|
39991
|
+
});
|
|
39913
39992
|
var TrainingProviderDescriptorSchema = object({
|
|
39914
39993
|
addonId: string(),
|
|
39915
|
-
|
|
39994
|
+
entryId: string(),
|
|
39995
|
+
typeId: string(),
|
|
39996
|
+
/** Operator-chosen entry name. */
|
|
39997
|
+
name: string(),
|
|
39998
|
+
iconAsset: string(),
|
|
39999
|
+
/** `modal`, `runpod`, `fake`, … — same as typeId for current providers. */
|
|
39916
40000
|
kind: string(),
|
|
39917
40001
|
label: string(),
|
|
39918
40002
|
gpuTypes: array(TrainingGpuOptionSchema).readonly(),
|
|
@@ -39976,20 +40060,30 @@ var TrainerSourceRefSchema = object({
|
|
|
39976
40060
|
/** A commit sha (never a branch) — the job must be reproducible. */
|
|
39977
40061
|
revision: string().regex(/^[0-9a-f]{7,64}$/)
|
|
39978
40062
|
});
|
|
40063
|
+
/** Cloud job identity — route with the owning addon's `addonId` selector. */
|
|
39979
40064
|
var JobRef = {
|
|
39980
|
-
|
|
40065
|
+
entryId: string().min(1),
|
|
39981
40066
|
jobKey: string().uuid()
|
|
39982
40067
|
};
|
|
39983
40068
|
var TrainingLogLineSchema = object({
|
|
39984
40069
|
ts: number(),
|
|
39985
40070
|
text: string()
|
|
39986
40071
|
});
|
|
39987
|
-
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({
|
|
40072
|
+
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderTypeSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderEntrySchema).readonly(), { auth: "admin" }), method(object({
|
|
40073
|
+
typeId: string().min(1),
|
|
40074
|
+
name: string().min(1)
|
|
40075
|
+
}), object({ entryId: string() }), {
|
|
40076
|
+
kind: "mutation",
|
|
40077
|
+
auth: "admin"
|
|
40078
|
+
}), method(object({ entryId: string().min(1) }), object({ ok: literal(true) }), {
|
|
40079
|
+
kind: "mutation",
|
|
40080
|
+
auth: "admin"
|
|
40081
|
+
}), method(object({ entryId: string().min(1) }), TrainingCredentialCheckSchema, {
|
|
39988
40082
|
kind: "mutation",
|
|
39989
40083
|
auth: "admin",
|
|
39990
40084
|
timeoutMs: 3e4
|
|
39991
40085
|
}), method(object({
|
|
39992
|
-
|
|
40086
|
+
entryId: string().min(1),
|
|
39993
40087
|
gpuType: string(),
|
|
39994
40088
|
region: string(),
|
|
39995
40089
|
datasetBytes: number().int().nonnegative(),
|
|
@@ -40055,7 +40149,7 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40055
40149
|
kind: "mutation",
|
|
40056
40150
|
auth: "admin",
|
|
40057
40151
|
timeoutMs: 5 * 6e4
|
|
40058
|
-
}), method(object({
|
|
40152
|
+
}), method(object({ entryId: string().min(1).optional() }), array(ProviderJobStatusSchema).readonly(), {
|
|
40059
40153
|
auth: "admin",
|
|
40060
40154
|
timeoutMs: 2 * 6e4
|
|
40061
40155
|
});
|
|
@@ -40065,20 +40159,31 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40065
40159
|
*
|
|
40066
40160
|
* It owns what every provider must agree on, written once:
|
|
40067
40161
|
*
|
|
40068
|
-
* - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
|
|
40069
|
-
* live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
|
|
40070
|
-
* the export plan) and reaches this store through the five row methods
|
|
40071
|
-
* below, so the Retrain page and the export did not change.
|
|
40072
40162
|
* - **Jobs.** A persisted state machine, a reconcile loop against the
|
|
40073
40163
|
* provider, a cost guard, a daily orphan sweep and the retention rules.
|
|
40074
40164
|
* - **The return flow.** Verified artefacts → Model Studio
|
|
40075
40165
|
* (`custom-model-registry.importModelBundle`) → canary on cameras →
|
|
40076
40166
|
* rollback. Nothing is ever registered automatically.
|
|
40077
40167
|
*
|
|
40168
|
+
* Plan/start takes a live {@link TrainingCorpusSelection} (collections +
|
|
40169
|
+
* work-state rule); frame ids are resolved via pipeline-analytics at that
|
|
40170
|
+
* moment and snapshotted on the job. No frozen dataset version.
|
|
40171
|
+
*
|
|
40078
40172
|
* Every method is `admin`.
|
|
40079
40173
|
*/
|
|
40080
|
-
/**
|
|
40081
|
-
|
|
40174
|
+
/**
|
|
40175
|
+
* Live corpus criteria for plan/start (design §5.2). Default is complete-only.
|
|
40176
|
+
* Frame ids are resolved at plan/start — never a frozen version id.
|
|
40177
|
+
*/
|
|
40178
|
+
var TrainingCorpusSelectionSchema = object({
|
|
40179
|
+
collectionIds: array(string()).min(1),
|
|
40180
|
+
/** Default complete-only for v1 */
|
|
40181
|
+
workState: _enum([
|
|
40182
|
+
"complete",
|
|
40183
|
+
"annotated_or_complete",
|
|
40184
|
+
"any_annotated"
|
|
40185
|
+
]).default("complete")
|
|
40186
|
+
});
|
|
40082
40187
|
/** A base model a detector job can fine-tune, and the baseline it is judged against. */
|
|
40083
40188
|
var TrainingBaseModelSchema = object({
|
|
40084
40189
|
modelId: string(),
|
|
@@ -40096,9 +40201,13 @@ var TrainingPresetSchema = _enum([
|
|
|
40096
40201
|
"thorough"
|
|
40097
40202
|
]);
|
|
40098
40203
|
var TrainingJobRequestSchema = object({
|
|
40099
|
-
|
|
40100
|
-
|
|
40101
|
-
|
|
40204
|
+
/** Live collection + work-state criteria; resolved at plan/start. */
|
|
40205
|
+
selection: TrainingCorpusSelectionSchema,
|
|
40206
|
+
/**
|
|
40207
|
+
* The provider **entry** that runs it (credentials + defaults).
|
|
40208
|
+
* Resolve to an owning addon via `training-provider.describe` / `listEntries`.
|
|
40209
|
+
*/
|
|
40210
|
+
entryId: string().min(1),
|
|
40102
40211
|
gpuType: string().min(1),
|
|
40103
40212
|
region: string(),
|
|
40104
40213
|
baseModelId: string().min(1),
|
|
@@ -40157,6 +40266,7 @@ var TrainingJobPlanSchema = object({
|
|
|
40157
40266
|
* result lives after the operator acted on it.
|
|
40158
40267
|
*/
|
|
40159
40268
|
var TrainingJobStateSchema = _enum([
|
|
40269
|
+
"queued",
|
|
40160
40270
|
"uploading",
|
|
40161
40271
|
"submitted",
|
|
40162
40272
|
"starting",
|
|
@@ -40210,6 +40320,11 @@ var TrainingJobSchema = object({
|
|
|
40210
40320
|
createdAt: number(),
|
|
40211
40321
|
updatedAt: number(),
|
|
40212
40322
|
state: TrainingJobStateSchema,
|
|
40323
|
+
/**
|
|
40324
|
+
* Shared by every job enqueued together via `startJobBatch`.
|
|
40325
|
+
* `null` for a lone `startJob`. The engine advances queued siblings by this id.
|
|
40326
|
+
*/
|
|
40327
|
+
batchId: string().nullable().default(null),
|
|
40213
40328
|
stage: TrainingStageSchema.nullable(),
|
|
40214
40329
|
failure: object({
|
|
40215
40330
|
reason: TrainingFailureReasonSchema,
|
|
@@ -40221,6 +40336,12 @@ var TrainingJobSchema = object({
|
|
|
40221
40336
|
maxRuntimeSec: number().int().positive(),
|
|
40222
40337
|
trainer: TrainerSourceRefSchema,
|
|
40223
40338
|
datasetLayout: RetrainExportLayoutSchema,
|
|
40339
|
+
/** Frame count snapshotted when the job started (audit; equals `frameIds.length`). */
|
|
40340
|
+
frameCount: number().int().nonnegative(),
|
|
40341
|
+
/** Resolved frame ids at start — the archive ships exactly these. */
|
|
40342
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
40343
|
+
/** Hash of what those frames taught at start (trainer `dataset.annotationHash`). */
|
|
40344
|
+
annotationHash: string(),
|
|
40224
40345
|
dataset: object({
|
|
40225
40346
|
bytes: number().int(),
|
|
40226
40347
|
sha256: string(),
|
|
@@ -40262,13 +40383,7 @@ var TrainingJobSchema = object({
|
|
|
40262
40383
|
canary: TrainingCanarySchema.nullable()
|
|
40263
40384
|
});
|
|
40264
40385
|
var IdInput = object({ id: string().min(1) });
|
|
40265
|
-
method(
|
|
40266
|
-
kind: "mutation",
|
|
40267
|
-
auth: "admin"
|
|
40268
|
-
}), method(IdInput, TrainingDatasetVersionRowSchema.nullable(), { auth: "admin" }), method(object({}), array(RetrainDatasetVersionSchema).readonly(), { auth: "admin" }), method(object({ name: string() }), object({ id: string().nullable() }), { auth: "admin" }), method(IdInput, object({ removed: boolean() }), {
|
|
40269
|
-
kind: "mutation",
|
|
40270
|
-
auth: "admin"
|
|
40271
|
-
}), method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40386
|
+
method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40272
40387
|
auth: "admin",
|
|
40273
40388
|
timeoutMs: 6e4
|
|
40274
40389
|
}), method(TrainingJobRequestSchema.extend({
|
|
@@ -40287,6 +40402,24 @@ method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
|
|
|
40287
40402
|
kind: "mutation",
|
|
40288
40403
|
auth: "admin",
|
|
40289
40404
|
timeoutMs: 12e4
|
|
40405
|
+
}), method(TrainingJobRequestSchema.omit({ baseModelId: true }).extend({
|
|
40406
|
+
baseModelIds: array(string().min(1)).min(1),
|
|
40407
|
+
name: string().min(1).max(120),
|
|
40408
|
+
maxCostUsd: number().positive(),
|
|
40409
|
+
maxRuntimeSec: number().int().positive(),
|
|
40410
|
+
idempotencyKey: string().min(8).max(80)
|
|
40411
|
+
}), discriminatedUnion("kind", [object({
|
|
40412
|
+
kind: literal("started"),
|
|
40413
|
+
batchId: string(),
|
|
40414
|
+
jobs: array(TrainingJobSchema).min(1).readonly()
|
|
40415
|
+
}), object({
|
|
40416
|
+
kind: literal("refused"),
|
|
40417
|
+
reason: TrainingRefusalReasonSchema,
|
|
40418
|
+
detail: string()
|
|
40419
|
+
})]), {
|
|
40420
|
+
kind: "mutation",
|
|
40421
|
+
auth: "admin",
|
|
40422
|
+
timeoutMs: 12e4
|
|
40290
40423
|
}), method(object({}), array(TrainingJobSchema).readonly(), { auth: "admin" }), method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }), method(IdInput, TrainingJobSchema, {
|
|
40291
40424
|
kind: "mutation",
|
|
40292
40425
|
auth: "admin",
|
|
@@ -44628,12 +44761,6 @@ Object.freeze({
|
|
|
44628
44761
|
addonId: null,
|
|
44629
44762
|
access: "create"
|
|
44630
44763
|
},
|
|
44631
|
-
"pipelineAnalytics.createRetrainDatasetVersion": {
|
|
44632
|
-
capName: "pipeline-analytics",
|
|
44633
|
-
capScope: "device",
|
|
44634
|
-
addonId: null,
|
|
44635
|
-
access: "create"
|
|
44636
|
-
},
|
|
44637
44764
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
44638
44765
|
capName: "pipeline-analytics",
|
|
44639
44766
|
capScope: "device",
|
|
@@ -44646,12 +44773,6 @@ Object.freeze({
|
|
|
44646
44773
|
addonId: null,
|
|
44647
44774
|
access: "delete"
|
|
44648
44775
|
},
|
|
44649
|
-
"pipelineAnalytics.deleteRetrainDatasetVersion": {
|
|
44650
|
-
capName: "pipeline-analytics",
|
|
44651
|
-
capScope: "device",
|
|
44652
|
-
addonId: null,
|
|
44653
|
-
access: "delete"
|
|
44654
|
-
},
|
|
44655
44776
|
"pipelineAnalytics.deleteTracks": {
|
|
44656
44777
|
capName: "pipeline-analytics",
|
|
44657
44778
|
capScope: "device",
|
|
@@ -44754,6 +44875,12 @@ Object.freeze({
|
|
|
44754
44875
|
addonId: null,
|
|
44755
44876
|
access: "view"
|
|
44756
44877
|
},
|
|
44878
|
+
"pipelineAnalytics.getRetrainCorpusKpi": {
|
|
44879
|
+
capName: "pipeline-analytics",
|
|
44880
|
+
capScope: "device",
|
|
44881
|
+
addonId: null,
|
|
44882
|
+
access: "view"
|
|
44883
|
+
},
|
|
44757
44884
|
"pipelineAnalytics.getRetrainExportUrl": {
|
|
44758
44885
|
capName: "pipeline-analytics",
|
|
44759
44886
|
capScope: "device",
|
|
@@ -44874,7 +45001,7 @@ Object.freeze({
|
|
|
44874
45001
|
addonId: null,
|
|
44875
45002
|
access: "view"
|
|
44876
45003
|
},
|
|
44877
|
-
"pipelineAnalytics.
|
|
45004
|
+
"pipelineAnalytics.listRetrainCorpusPage": {
|
|
44878
45005
|
capName: "pipeline-analytics",
|
|
44879
45006
|
capScope: "device",
|
|
44880
45007
|
addonId: null,
|
|
@@ -44928,12 +45055,6 @@ Object.freeze({
|
|
|
44928
45055
|
addonId: null,
|
|
44929
45056
|
access: "create"
|
|
44930
45057
|
},
|
|
44931
|
-
"pipelineAnalytics.previewRetrainDataset": {
|
|
44932
|
-
capName: "pipeline-analytics",
|
|
44933
|
-
capScope: "device",
|
|
44934
|
-
addonId: null,
|
|
44935
|
-
access: "view"
|
|
44936
|
-
},
|
|
44937
45058
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
44938
45059
|
capName: "pipeline-analytics",
|
|
44939
45060
|
capScope: "device",
|
|
@@ -45012,6 +45133,12 @@ Object.freeze({
|
|
|
45012
45133
|
addonId: null,
|
|
45013
45134
|
access: "create"
|
|
45014
45135
|
},
|
|
45136
|
+
"pipelineAnalytics.resolveRetrainTrainingCorpus": {
|
|
45137
|
+
capName: "pipeline-analytics",
|
|
45138
|
+
capScope: "device",
|
|
45139
|
+
addonId: null,
|
|
45140
|
+
access: "view"
|
|
45141
|
+
},
|
|
45015
45142
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
45016
45143
|
capName: "pipeline-analytics",
|
|
45017
45144
|
capScope: "device",
|
|
@@ -45072,12 +45199,6 @@ Object.freeze({
|
|
|
45072
45199
|
addonId: null,
|
|
45073
45200
|
access: "create"
|
|
45074
45201
|
},
|
|
45075
|
-
"pipelineAnalytics.verifyRetrainDatasetVersion": {
|
|
45076
|
-
capName: "pipeline-analytics",
|
|
45077
|
-
capScope: "device",
|
|
45078
|
-
addonId: null,
|
|
45079
|
-
access: "view"
|
|
45080
|
-
},
|
|
45081
45202
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
45082
45203
|
capName: "pipeline-analytics",
|
|
45083
45204
|
capScope: "device",
|
|
@@ -47472,18 +47593,6 @@ Object.freeze({
|
|
|
47472
47593
|
addonId: null,
|
|
47473
47594
|
access: "create"
|
|
47474
47595
|
},
|
|
47475
|
-
"training.findDatasetVersionIdByName": {
|
|
47476
|
-
capName: "training",
|
|
47477
|
-
capScope: "system",
|
|
47478
|
-
addonId: null,
|
|
47479
|
-
access: "view"
|
|
47480
|
-
},
|
|
47481
|
-
"training.getDatasetVersion": {
|
|
47482
|
-
capName: "training",
|
|
47483
|
-
capScope: "system",
|
|
47484
|
-
addonId: null,
|
|
47485
|
-
access: "view"
|
|
47486
|
-
},
|
|
47487
47596
|
"training.getJob": {
|
|
47488
47597
|
capName: "training",
|
|
47489
47598
|
capScope: "system",
|
|
@@ -47502,12 +47611,6 @@ Object.freeze({
|
|
|
47502
47611
|
addonId: null,
|
|
47503
47612
|
access: "view"
|
|
47504
47613
|
},
|
|
47505
|
-
"training.listDatasetVersions": {
|
|
47506
|
-
capName: "training",
|
|
47507
|
-
capScope: "system",
|
|
47508
|
-
addonId: null,
|
|
47509
|
-
access: "view"
|
|
47510
|
-
},
|
|
47511
47614
|
"training.listJobs": {
|
|
47512
47615
|
capName: "training",
|
|
47513
47616
|
capScope: "system",
|
|
@@ -47520,54 +47623,66 @@ Object.freeze({
|
|
|
47520
47623
|
addonId: null,
|
|
47521
47624
|
access: "view"
|
|
47522
47625
|
},
|
|
47523
|
-
"training.
|
|
47626
|
+
"training.registerResult": {
|
|
47524
47627
|
capName: "training",
|
|
47525
47628
|
capScope: "system",
|
|
47526
47629
|
addonId: null,
|
|
47527
47630
|
access: "create"
|
|
47528
47631
|
},
|
|
47529
|
-
"training.
|
|
47632
|
+
"training.rollbackCanary": {
|
|
47530
47633
|
capName: "training",
|
|
47531
47634
|
capScope: "system",
|
|
47532
47635
|
addonId: null,
|
|
47533
47636
|
access: "create"
|
|
47534
47637
|
},
|
|
47535
|
-
"training.
|
|
47638
|
+
"training.startJob": {
|
|
47536
47639
|
capName: "training",
|
|
47537
47640
|
capScope: "system",
|
|
47538
47641
|
addonId: null,
|
|
47539
|
-
access: "
|
|
47642
|
+
access: "create"
|
|
47540
47643
|
},
|
|
47541
|
-
"training.
|
|
47644
|
+
"training.startJobBatch": {
|
|
47542
47645
|
capName: "training",
|
|
47543
47646
|
capScope: "system",
|
|
47544
47647
|
addonId: null,
|
|
47545
47648
|
access: "create"
|
|
47546
47649
|
},
|
|
47547
|
-
"
|
|
47548
|
-
capName: "training",
|
|
47650
|
+
"trainingProvider.cancelJob": {
|
|
47651
|
+
capName: "training-provider",
|
|
47549
47652
|
capScope: "system",
|
|
47550
47653
|
addonId: null,
|
|
47551
47654
|
access: "create"
|
|
47552
47655
|
},
|
|
47553
|
-
"trainingProvider.
|
|
47656
|
+
"trainingProvider.cleanupJob": {
|
|
47554
47657
|
capName: "training-provider",
|
|
47555
47658
|
capScope: "system",
|
|
47556
47659
|
addonId: null,
|
|
47557
47660
|
access: "create"
|
|
47558
47661
|
},
|
|
47559
|
-
"trainingProvider.
|
|
47662
|
+
"trainingProvider.createEntry": {
|
|
47560
47663
|
capName: "training-provider",
|
|
47561
47664
|
capScope: "system",
|
|
47562
47665
|
addonId: null,
|
|
47563
47666
|
access: "create"
|
|
47564
47667
|
},
|
|
47668
|
+
"trainingProvider.deleteEntry": {
|
|
47669
|
+
capName: "training-provider",
|
|
47670
|
+
capScope: "system",
|
|
47671
|
+
addonId: null,
|
|
47672
|
+
access: "delete"
|
|
47673
|
+
},
|
|
47565
47674
|
"trainingProvider.describe": {
|
|
47566
47675
|
capName: "training-provider",
|
|
47567
47676
|
capScope: "system",
|
|
47568
47677
|
addonId: null,
|
|
47569
47678
|
access: "view"
|
|
47570
47679
|
},
|
|
47680
|
+
"trainingProvider.describeTypes": {
|
|
47681
|
+
capName: "training-provider",
|
|
47682
|
+
capScope: "system",
|
|
47683
|
+
addonId: null,
|
|
47684
|
+
access: "view"
|
|
47685
|
+
},
|
|
47571
47686
|
"trainingProvider.estimateJob": {
|
|
47572
47687
|
capName: "training-provider",
|
|
47573
47688
|
capScope: "system",
|
|
@@ -47580,6 +47695,12 @@ Object.freeze({
|
|
|
47580
47695
|
addonId: null,
|
|
47581
47696
|
access: "view"
|
|
47582
47697
|
},
|
|
47698
|
+
"trainingProvider.listEntries": {
|
|
47699
|
+
capName: "training-provider",
|
|
47700
|
+
capScope: "system",
|
|
47701
|
+
addonId: null,
|
|
47702
|
+
access: "view"
|
|
47703
|
+
},
|
|
47583
47704
|
"trainingProvider.listJobEvents": {
|
|
47584
47705
|
capName: "training-provider",
|
|
47585
47706
|
capScope: "system",
|
|
@@ -51036,6 +51157,11 @@ Object.freeze({
|
|
|
51036
51157
|
form: "array",
|
|
51037
51158
|
optional: false
|
|
51038
51159
|
}],
|
|
51160
|
+
"pipelineAnalytics.listRetrainCorpusPage": [{
|
|
51161
|
+
name: "deviceIds",
|
|
51162
|
+
form: "array",
|
|
51163
|
+
optional: true
|
|
51164
|
+
}],
|
|
51039
51165
|
"pipelineAnalytics.listRetrainStaging": [{
|
|
51040
51166
|
name: "deviceIds",
|
|
51041
51167
|
form: "array",
|