@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
|
@@ -5772,7 +5772,7 @@ var ZodIssueCode = {
|
|
|
5772
5772
|
var ZodFirstPartyTypeKind;
|
|
5773
5773
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5774
5774
|
//#endregion
|
|
5775
|
-
//#region ../types/dist/sleep-
|
|
5775
|
+
//#region ../types/dist/sleep-CI0n5D44.mjs
|
|
5776
5776
|
/**
|
|
5777
5777
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5778
5778
|
* window to float samples (D455).
|
|
@@ -9782,6 +9782,16 @@ var CompositionSchema = object({
|
|
|
9782
9782
|
seen.add(feature.cap);
|
|
9783
9783
|
});
|
|
9784
9784
|
});
|
|
9785
|
+
var NodeColorIdSchema = _enum([
|
|
9786
|
+
"node-a",
|
|
9787
|
+
"node-b",
|
|
9788
|
+
"node-c",
|
|
9789
|
+
"node-d",
|
|
9790
|
+
"node-e",
|
|
9791
|
+
"node-f",
|
|
9792
|
+
"node-g",
|
|
9793
|
+
"node-h"
|
|
9794
|
+
]);
|
|
9785
9795
|
new Set([
|
|
9786
9796
|
"track",
|
|
9787
9797
|
"face",
|
|
@@ -24531,24 +24541,69 @@ var RetrainFrameListSchema = object({
|
|
|
24531
24541
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
24532
24542
|
autoPickMediaId: number().int().optional()
|
|
24533
24543
|
});
|
|
24544
|
+
/** Exclusive partition of a corpus copy's annotation progress (design §4.2). */
|
|
24545
|
+
var RetrainFrameWorkStateSchema = _enum([
|
|
24546
|
+
"unannotated",
|
|
24547
|
+
"annotated",
|
|
24548
|
+
"complete"
|
|
24549
|
+
]);
|
|
24550
|
+
/**
|
|
24551
|
+
* Filters for paginated corpus list, KPI, and matching export (design §4.4).
|
|
24552
|
+
* Every narrowing field is ANDed; omitted fields impose no constraint.
|
|
24553
|
+
*/
|
|
24554
|
+
var RetrainCorpusFilterSchema = object({
|
|
24555
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
24556
|
+
deviceIds: array(number()).max(500).optional(),
|
|
24557
|
+
/** When set, only frames in this named collection. */
|
|
24558
|
+
collectionId: string().optional(),
|
|
24559
|
+
/** Frames that carry at least one saved annotation in one of these classes. */
|
|
24560
|
+
classes: array(RetrainMacroClassSchema).optional(),
|
|
24561
|
+
page: number().int().positive().default(1),
|
|
24562
|
+
pageSize: number().int().positive().max(100).default(50)
|
|
24563
|
+
});
|
|
24564
|
+
var RetrainCorpusPageSchema = object({
|
|
24565
|
+
frames: array(RetrainFrameSchema.extend({ workState: RetrainFrameWorkStateSchema })).readonly(),
|
|
24566
|
+
total: number().int().nonnegative(),
|
|
24567
|
+
page: number().int().positive(),
|
|
24568
|
+
pageSize: number().int().positive()
|
|
24569
|
+
});
|
|
24570
|
+
var RetrainCorpusKpiCameraRowSchema = object({
|
|
24571
|
+
deviceId: number(),
|
|
24572
|
+
unannotated: number().int().nonnegative(),
|
|
24573
|
+
annotated: number().int().nonnegative(),
|
|
24574
|
+
complete: number().int().nonnegative(),
|
|
24575
|
+
/** This camera's `complete` count divided by corpus `total`, in `[0,1]`.
|
|
24576
|
+
* `null` when the corpus is empty (no ratio). */
|
|
24577
|
+
pctOfCorpus: number().min(0).max(1).nullable()
|
|
24578
|
+
});
|
|
24579
|
+
var RetrainCorpusKpiSchema = object({
|
|
24580
|
+
total: number().int().nonnegative(),
|
|
24581
|
+
unannotated: number().int().nonnegative(),
|
|
24582
|
+
annotated: number().int().nonnegative(),
|
|
24583
|
+
complete: number().int().nonnegative(),
|
|
24584
|
+
cameras: array(RetrainCorpusKpiCameraRowSchema).readonly()
|
|
24585
|
+
});
|
|
24534
24586
|
/**
|
|
24535
24587
|
* Which frames an annotated export carries. Every field narrows; an empty
|
|
24536
|
-
* filter is every annotated copy.
|
|
24537
|
-
*
|
|
24538
|
-
*
|
|
24539
|
-
*
|
|
24588
|
+
* filter is every annotated copy. `frameIds` is the primitive a job or
|
|
24589
|
+
* download uses; `batchId` re-selects what an earlier export carried
|
|
24590
|
+
* (`exportedInBatch`). Frozen dataset versions were removed — live selection
|
|
24591
|
+
* resolves to `frameIds` at plan/start.
|
|
24540
24592
|
*/
|
|
24541
24593
|
var RetrainExportFilterSchema = object({
|
|
24542
24594
|
deviceIds: array(number()).optional(),
|
|
24543
24595
|
frameIds: array(string()).max(2e4).optional(),
|
|
24544
24596
|
/** Only frames in at least one of these named collections. */
|
|
24545
24597
|
collectionIds: array(string()).max(200).optional(),
|
|
24546
|
-
/**
|
|
24547
|
-
|
|
24548
|
-
datasetVersionId: string().optional(),
|
|
24598
|
+
/** Single collection (Frames filter bar). ANDed with `collectionIds` when both set. */
|
|
24599
|
+
collectionId: string().optional(),
|
|
24549
24600
|
batchId: string().optional(),
|
|
24550
24601
|
/** Only frames the operator marked complete (all subjects boxed). */
|
|
24551
|
-
completeOnly: boolean().optional()
|
|
24602
|
+
completeOnly: boolean().optional(),
|
|
24603
|
+
/** Exclusive work-state partition (`workStateOf`); same as the corpus list. */
|
|
24604
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
24605
|
+
/** Frames with at least one saved annotation in one of these classes. */
|
|
24606
|
+
classes: array(RetrainMacroClassSchema).optional()
|
|
24552
24607
|
});
|
|
24553
24608
|
/**
|
|
24554
24609
|
* `frames`: the full frame copies, boxes in `annotations.json`.
|
|
@@ -24748,8 +24803,7 @@ var RetrainDatasetStatsSchema = object({
|
|
|
24748
24803
|
completeFrames: number().int()
|
|
24749
24804
|
})).readonly()
|
|
24750
24805
|
});
|
|
24751
|
-
|
|
24752
|
-
var RetrainDatasetVersionSchema = object({
|
|
24806
|
+
object({
|
|
24753
24807
|
id: string(),
|
|
24754
24808
|
name: string(),
|
|
24755
24809
|
createdAt: number(),
|
|
@@ -24757,22 +24811,33 @@ var RetrainDatasetVersionSchema = object({
|
|
|
24757
24811
|
layout: RetrainExportLayoutSchema,
|
|
24758
24812
|
completeOnly: boolean(),
|
|
24759
24813
|
frameCount: number().int(),
|
|
24760
|
-
/** sha256 of what the frames taught when the version was frozen. */
|
|
24761
24814
|
annotationHash: string(),
|
|
24762
|
-
/** The export manifest schema the version was cut under. */
|
|
24763
24815
|
manifestSchema: string(),
|
|
24764
24816
|
stats: RetrainDatasetStatsSchema
|
|
24765
24817
|
});
|
|
24766
|
-
|
|
24767
|
-
|
|
24768
|
-
|
|
24818
|
+
/**
|
|
24819
|
+
* Live training corpus criteria — same shape as `TrainingCorpusSelection` on
|
|
24820
|
+
* the training cap. Resolved here so plan/start and the annotated export share
|
|
24821
|
+
* one definition of "the frames" (`buildRetrainExportPlan`).
|
|
24822
|
+
*/
|
|
24823
|
+
var RetrainTrainingCorpusSelectionSchema = object({
|
|
24824
|
+
collectionIds: array(string()).min(1),
|
|
24825
|
+
workState: _enum([
|
|
24826
|
+
"complete",
|
|
24827
|
+
"annotated_or_complete",
|
|
24828
|
+
"any_annotated"
|
|
24829
|
+
]).default("complete")
|
|
24830
|
+
});
|
|
24831
|
+
var RetrainTrainingCorpusResolveResultSchema = discriminatedUnion("kind", [object({
|
|
24832
|
+
kind: literal("resolved"),
|
|
24833
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
24834
|
+
stats: RetrainDatasetStatsSchema,
|
|
24835
|
+
annotationHash: string(),
|
|
24836
|
+
layout: RetrainExportLayoutSchema
|
|
24769
24837
|
}), object({
|
|
24770
24838
|
kind: literal("refused"),
|
|
24771
|
-
reason: _enum([
|
|
24772
|
-
|
|
24773
|
-
"duplicate-name",
|
|
24774
|
-
"no-frames"
|
|
24775
|
-
])
|
|
24839
|
+
reason: _enum(["unknown-collection", "no-frames"]),
|
|
24840
|
+
detail: string()
|
|
24776
24841
|
})]);
|
|
24777
24842
|
/** The outcome of a lifecycle move owned by the retrain page. */
|
|
24778
24843
|
var RetrainTransitionResultSchema = object({
|
|
@@ -25479,6 +25544,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25479
25544
|
}), array(RetrainTrackSchema).readonly(), {
|
|
25480
25545
|
kind: "query",
|
|
25481
25546
|
auth: "admin"
|
|
25547
|
+
}), method(RetrainCorpusFilterSchema, RetrainCorpusPageSchema, {
|
|
25548
|
+
kind: "query",
|
|
25549
|
+
auth: "admin"
|
|
25550
|
+
}), method(object({}), RetrainCorpusKpiSchema, {
|
|
25551
|
+
kind: "query",
|
|
25552
|
+
auth: "admin"
|
|
25482
25553
|
}), method(object({ trackId: string() }), RetrainFrameListSchema, {
|
|
25483
25554
|
kind: "query",
|
|
25484
25555
|
auth: "admin"
|
|
@@ -25574,36 +25645,6 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25574
25645
|
kind: "mutation",
|
|
25575
25646
|
auth: "admin",
|
|
25576
25647
|
timeoutMs: 12e4
|
|
25577
|
-
}), method(object({
|
|
25578
|
-
selection: RetrainDatasetSelectionSchema,
|
|
25579
|
-
completeOnly: boolean().optional()
|
|
25580
|
-
}), RetrainDatasetStatsSchema, {
|
|
25581
|
-
kind: "query",
|
|
25582
|
-
auth: "admin"
|
|
25583
|
-
}), method(object({
|
|
25584
|
-
name: string().max(120),
|
|
25585
|
-
selection: RetrainDatasetSelectionSchema,
|
|
25586
|
-
layout: RetrainExportLayoutSchema,
|
|
25587
|
-
completeOnly: boolean()
|
|
25588
|
-
}), CreateRetrainDatasetVersionResultSchema, {
|
|
25589
|
-
kind: "mutation",
|
|
25590
|
-
auth: "admin",
|
|
25591
|
-
timeoutMs: 12e4
|
|
25592
|
-
}), method(object({}), array(RetrainDatasetVersionSchema).readonly(), {
|
|
25593
|
-
kind: "query",
|
|
25594
|
-
auth: "admin"
|
|
25595
|
-
}), method(object({ id: string() }), object({ deleted: boolean() }), {
|
|
25596
|
-
kind: "mutation",
|
|
25597
|
-
auth: "admin"
|
|
25598
|
-
}), method(object({ id: string() }), object({
|
|
25599
|
-
found: boolean(),
|
|
25600
|
-
annotationHash: string(),
|
|
25601
|
-
matches: boolean(),
|
|
25602
|
-
missingFrames: number().int()
|
|
25603
|
-
}), {
|
|
25604
|
-
kind: "query",
|
|
25605
|
-
auth: "admin",
|
|
25606
|
-
timeoutMs: 12e4
|
|
25607
25648
|
}), method(object({}), array(RetrainAssistProfileSchema).readonly(), {
|
|
25608
25649
|
kind: "query",
|
|
25609
25650
|
auth: "admin"
|
|
@@ -25630,6 +25671,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25630
25671
|
}), method(object({}), array(RetrainCollectionSchema).readonly(), {
|
|
25631
25672
|
kind: "query",
|
|
25632
25673
|
auth: "admin"
|
|
25674
|
+
}), method(RetrainTrainingCorpusSelectionSchema, RetrainTrainingCorpusResolveResultSchema, {
|
|
25675
|
+
kind: "query",
|
|
25676
|
+
auth: "admin",
|
|
25677
|
+
timeoutMs: 6e4
|
|
25633
25678
|
}), method(object({
|
|
25634
25679
|
id: string(),
|
|
25635
25680
|
name: string().max(120)
|
|
@@ -26246,11 +26291,14 @@ var HardwareClassIdSchema = _enum([
|
|
|
26246
26291
|
"intel-n-series",
|
|
26247
26292
|
"apple-m-base",
|
|
26248
26293
|
"apple-m-pro",
|
|
26294
|
+
"amd-phoenix",
|
|
26249
26295
|
"unknown"
|
|
26250
26296
|
]);
|
|
26251
26297
|
var AcceleratorKindSchema = _enum([
|
|
26252
26298
|
"intel-npu",
|
|
26253
26299
|
"intel-igpu",
|
|
26300
|
+
"amd-igpu",
|
|
26301
|
+
"amd-npu",
|
|
26254
26302
|
"x86-cpu",
|
|
26255
26303
|
"arm-cpu",
|
|
26256
26304
|
"apple-ane",
|
|
@@ -28140,6 +28188,8 @@ var AgentPipelineSettingsSchema = object({
|
|
|
28140
28188
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
28141
28189
|
*/
|
|
28142
28190
|
reachableHost: string().optional(),
|
|
28191
|
+
/** Hub-persisted UI colour (`--color-node-*` theme tokens). */
|
|
28192
|
+
color: NodeColorIdSchema.optional(),
|
|
28143
28193
|
/**
|
|
28144
28194
|
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
28145
28195
|
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
@@ -28689,8 +28739,9 @@ method(object({
|
|
|
28689
28739
|
auth: "admin"
|
|
28690
28740
|
}), method(object({
|
|
28691
28741
|
agentNodeId: string(),
|
|
28692
|
-
reachableHost: string().nullable()
|
|
28693
|
-
|
|
28742
|
+
reachableHost: string().nullable().optional(),
|
|
28743
|
+
color: NodeColorIdSchema.nullable().optional()
|
|
28744
|
+
}).refine((v) => v.reachableHost !== void 0 || v.color !== void 0, { message: "reachableHost or color required" }), object({ success: literal(true) }), {
|
|
28694
28745
|
kind: "mutation",
|
|
28695
28746
|
auth: "admin"
|
|
28696
28747
|
}), method(object({
|
|
@@ -36136,7 +36187,15 @@ var GpuInfoSchema = object({
|
|
|
36136
36187
|
name: string(),
|
|
36137
36188
|
memoryMB: number().optional()
|
|
36138
36189
|
});
|
|
36139
|
-
var NpuInfoSchema = object({
|
|
36190
|
+
var NpuInfoSchema = object({
|
|
36191
|
+
type: _enum([
|
|
36192
|
+
"apple-ane",
|
|
36193
|
+
"intel-npu",
|
|
36194
|
+
"amd-xdna"
|
|
36195
|
+
]),
|
|
36196
|
+
name: string().optional(),
|
|
36197
|
+
generation: _enum(["xdna1", "xdna2"]).optional()
|
|
36198
|
+
});
|
|
36140
36199
|
var CoralInfoSchema = object({
|
|
36141
36200
|
type: literal("coral-edgetpu"),
|
|
36142
36201
|
bus: string().optional()
|
|
@@ -39898,9 +39957,11 @@ DeviceType.Camera, method(object({
|
|
|
39898
39957
|
* once is what makes a second provider (RunPod, a local NVIDIA node) a new
|
|
39899
39958
|
* manifest entry and nothing else.
|
|
39900
39959
|
*
|
|
39901
|
-
* Collection
|
|
39902
|
-
*
|
|
39903
|
-
*
|
|
39960
|
+
* Collection of provider **types** (addons). Each addon owns zero or more
|
|
39961
|
+
* **entries** (credentials + defaults). Concat-fans: `describe`,
|
|
39962
|
+
* `describeTypes`, `listEntries`, `listJobs`. Single-row work is keyed by
|
|
39963
|
+
* `entryId`; callers also pass the owning `addonId` as the collection
|
|
39964
|
+
* selector (broker posture). Every method is `admin`: these spend money.
|
|
39904
39965
|
*
|
|
39905
39966
|
* Every cloud object a provider creates is tagged with the orchestrator's
|
|
39906
39967
|
* `jobKey`, so a retried submit finds the job it already started instead of
|
|
@@ -39924,8 +39985,8 @@ var TrainingRegionOptionSchema = object({
|
|
|
39924
39985
|
priceMultiplier: number().positive()
|
|
39925
39986
|
});
|
|
39926
39987
|
/**
|
|
39927
|
-
* The provider's per-
|
|
39928
|
-
* live
|
|
39988
|
+
* The provider's per-entry settings, as the orchestrator reads them. They
|
|
39989
|
+
* live on the PROVIDER addon's entry (operator decision 2026-10-08: they
|
|
39929
39990
|
* depend on the user's account), never hard-coded in the orchestrator.
|
|
39930
39991
|
*/
|
|
39931
39992
|
var TrainingProviderDefaultsSchema = object({
|
|
@@ -39936,9 +39997,32 @@ var TrainingProviderDefaultsSchema = object({
|
|
|
39936
39997
|
/** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
|
|
39937
39998
|
failedDatasetGraceHours: number().nonnegative()
|
|
39938
39999
|
});
|
|
40000
|
+
/** One creatable provider type, for the Add-entry dialog. */
|
|
40001
|
+
var TrainingProviderTypeSchema = object({
|
|
40002
|
+
typeId: string(),
|
|
40003
|
+
label: string(),
|
|
40004
|
+
/** Path under the addon package (e.g. `assets/training-modal/icon.svg`). */
|
|
40005
|
+
iconAsset: string(),
|
|
40006
|
+
/** Owning `training-provider` addon — collection selector for createEntry. */
|
|
40007
|
+
addonId: string()
|
|
40008
|
+
});
|
|
40009
|
+
/** One configured account / workspace under a provider type. */
|
|
40010
|
+
var TrainingProviderEntrySchema = object({
|
|
40011
|
+
entryId: string(),
|
|
40012
|
+
typeId: string(),
|
|
40013
|
+
name: string(),
|
|
40014
|
+
addonId: string(),
|
|
40015
|
+
/** Credentials are present — never the values. */
|
|
40016
|
+
configured: boolean()
|
|
40017
|
+
});
|
|
39939
40018
|
var TrainingProviderDescriptorSchema = object({
|
|
39940
40019
|
addonId: string(),
|
|
39941
|
-
|
|
40020
|
+
entryId: string(),
|
|
40021
|
+
typeId: string(),
|
|
40022
|
+
/** Operator-chosen entry name. */
|
|
40023
|
+
name: string(),
|
|
40024
|
+
iconAsset: string(),
|
|
40025
|
+
/** `modal`, `runpod`, `fake`, … — same as typeId for current providers. */
|
|
39942
40026
|
kind: string(),
|
|
39943
40027
|
label: string(),
|
|
39944
40028
|
gpuTypes: array(TrainingGpuOptionSchema).readonly(),
|
|
@@ -40002,20 +40086,30 @@ var TrainerSourceRefSchema = object({
|
|
|
40002
40086
|
/** A commit sha (never a branch) — the job must be reproducible. */
|
|
40003
40087
|
revision: string().regex(/^[0-9a-f]{7,64}$/)
|
|
40004
40088
|
});
|
|
40089
|
+
/** Cloud job identity — route with the owning addon's `addonId` selector. */
|
|
40005
40090
|
var JobRef = {
|
|
40006
|
-
|
|
40091
|
+
entryId: string().min(1),
|
|
40007
40092
|
jobKey: string().uuid()
|
|
40008
40093
|
};
|
|
40009
40094
|
var TrainingLogLineSchema = object({
|
|
40010
40095
|
ts: number(),
|
|
40011
40096
|
text: string()
|
|
40012
40097
|
});
|
|
40013
|
-
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({
|
|
40098
|
+
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderTypeSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderEntrySchema).readonly(), { auth: "admin" }), method(object({
|
|
40099
|
+
typeId: string().min(1),
|
|
40100
|
+
name: string().min(1)
|
|
40101
|
+
}), object({ entryId: string() }), {
|
|
40102
|
+
kind: "mutation",
|
|
40103
|
+
auth: "admin"
|
|
40104
|
+
}), method(object({ entryId: string().min(1) }), object({ ok: literal(true) }), {
|
|
40105
|
+
kind: "mutation",
|
|
40106
|
+
auth: "admin"
|
|
40107
|
+
}), method(object({ entryId: string().min(1) }), TrainingCredentialCheckSchema, {
|
|
40014
40108
|
kind: "mutation",
|
|
40015
40109
|
auth: "admin",
|
|
40016
40110
|
timeoutMs: 3e4
|
|
40017
40111
|
}), method(object({
|
|
40018
|
-
|
|
40112
|
+
entryId: string().min(1),
|
|
40019
40113
|
gpuType: string(),
|
|
40020
40114
|
region: string(),
|
|
40021
40115
|
datasetBytes: number().int().nonnegative(),
|
|
@@ -40081,7 +40175,7 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40081
40175
|
kind: "mutation",
|
|
40082
40176
|
auth: "admin",
|
|
40083
40177
|
timeoutMs: 5 * 6e4
|
|
40084
|
-
}), method(object({
|
|
40178
|
+
}), method(object({ entryId: string().min(1).optional() }), array(ProviderJobStatusSchema).readonly(), {
|
|
40085
40179
|
auth: "admin",
|
|
40086
40180
|
timeoutMs: 2 * 6e4
|
|
40087
40181
|
});
|
|
@@ -40091,20 +40185,31 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40091
40185
|
*
|
|
40092
40186
|
* It owns what every provider must agree on, written once:
|
|
40093
40187
|
*
|
|
40094
|
-
* - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
|
|
40095
|
-
* live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
|
|
40096
|
-
* the export plan) and reaches this store through the five row methods
|
|
40097
|
-
* below, so the Retrain page and the export did not change.
|
|
40098
40188
|
* - **Jobs.** A persisted state machine, a reconcile loop against the
|
|
40099
40189
|
* provider, a cost guard, a daily orphan sweep and the retention rules.
|
|
40100
40190
|
* - **The return flow.** Verified artefacts → Model Studio
|
|
40101
40191
|
* (`custom-model-registry.importModelBundle`) → canary on cameras →
|
|
40102
40192
|
* rollback. Nothing is ever registered automatically.
|
|
40103
40193
|
*
|
|
40194
|
+
* Plan/start takes a live {@link TrainingCorpusSelection} (collections +
|
|
40195
|
+
* work-state rule); frame ids are resolved via pipeline-analytics at that
|
|
40196
|
+
* moment and snapshotted on the job. No frozen dataset version.
|
|
40197
|
+
*
|
|
40104
40198
|
* Every method is `admin`.
|
|
40105
40199
|
*/
|
|
40106
|
-
/**
|
|
40107
|
-
|
|
40200
|
+
/**
|
|
40201
|
+
* Live corpus criteria for plan/start (design §5.2). Default is complete-only.
|
|
40202
|
+
* Frame ids are resolved at plan/start — never a frozen version id.
|
|
40203
|
+
*/
|
|
40204
|
+
var TrainingCorpusSelectionSchema = object({
|
|
40205
|
+
collectionIds: array(string()).min(1),
|
|
40206
|
+
/** Default complete-only for v1 */
|
|
40207
|
+
workState: _enum([
|
|
40208
|
+
"complete",
|
|
40209
|
+
"annotated_or_complete",
|
|
40210
|
+
"any_annotated"
|
|
40211
|
+
]).default("complete")
|
|
40212
|
+
});
|
|
40108
40213
|
/** A base model a detector job can fine-tune, and the baseline it is judged against. */
|
|
40109
40214
|
var TrainingBaseModelSchema = object({
|
|
40110
40215
|
modelId: string(),
|
|
@@ -40122,9 +40227,13 @@ var TrainingPresetSchema = _enum([
|
|
|
40122
40227
|
"thorough"
|
|
40123
40228
|
]);
|
|
40124
40229
|
var TrainingJobRequestSchema = object({
|
|
40125
|
-
|
|
40126
|
-
|
|
40127
|
-
|
|
40230
|
+
/** Live collection + work-state criteria; resolved at plan/start. */
|
|
40231
|
+
selection: TrainingCorpusSelectionSchema,
|
|
40232
|
+
/**
|
|
40233
|
+
* The provider **entry** that runs it (credentials + defaults).
|
|
40234
|
+
* Resolve to an owning addon via `training-provider.describe` / `listEntries`.
|
|
40235
|
+
*/
|
|
40236
|
+
entryId: string().min(1),
|
|
40128
40237
|
gpuType: string().min(1),
|
|
40129
40238
|
region: string(),
|
|
40130
40239
|
baseModelId: string().min(1),
|
|
@@ -40183,6 +40292,7 @@ var TrainingJobPlanSchema = object({
|
|
|
40183
40292
|
* result lives after the operator acted on it.
|
|
40184
40293
|
*/
|
|
40185
40294
|
var TrainingJobStateSchema = _enum([
|
|
40295
|
+
"queued",
|
|
40186
40296
|
"uploading",
|
|
40187
40297
|
"submitted",
|
|
40188
40298
|
"starting",
|
|
@@ -40236,6 +40346,11 @@ var TrainingJobSchema = object({
|
|
|
40236
40346
|
createdAt: number(),
|
|
40237
40347
|
updatedAt: number(),
|
|
40238
40348
|
state: TrainingJobStateSchema,
|
|
40349
|
+
/**
|
|
40350
|
+
* Shared by every job enqueued together via `startJobBatch`.
|
|
40351
|
+
* `null` for a lone `startJob`. The engine advances queued siblings by this id.
|
|
40352
|
+
*/
|
|
40353
|
+
batchId: string().nullable().default(null),
|
|
40239
40354
|
stage: TrainingStageSchema.nullable(),
|
|
40240
40355
|
failure: object({
|
|
40241
40356
|
reason: TrainingFailureReasonSchema,
|
|
@@ -40247,6 +40362,12 @@ var TrainingJobSchema = object({
|
|
|
40247
40362
|
maxRuntimeSec: number().int().positive(),
|
|
40248
40363
|
trainer: TrainerSourceRefSchema,
|
|
40249
40364
|
datasetLayout: RetrainExportLayoutSchema,
|
|
40365
|
+
/** Frame count snapshotted when the job started (audit; equals `frameIds.length`). */
|
|
40366
|
+
frameCount: number().int().nonnegative(),
|
|
40367
|
+
/** Resolved frame ids at start — the archive ships exactly these. */
|
|
40368
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
40369
|
+
/** Hash of what those frames taught at start (trainer `dataset.annotationHash`). */
|
|
40370
|
+
annotationHash: string(),
|
|
40250
40371
|
dataset: object({
|
|
40251
40372
|
bytes: number().int(),
|
|
40252
40373
|
sha256: string(),
|
|
@@ -40288,13 +40409,7 @@ var TrainingJobSchema = object({
|
|
|
40288
40409
|
canary: TrainingCanarySchema.nullable()
|
|
40289
40410
|
});
|
|
40290
40411
|
var IdInput = object({ id: string().min(1) });
|
|
40291
|
-
method(
|
|
40292
|
-
kind: "mutation",
|
|
40293
|
-
auth: "admin"
|
|
40294
|
-
}), 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() }), {
|
|
40295
|
-
kind: "mutation",
|
|
40296
|
-
auth: "admin"
|
|
40297
|
-
}), method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40412
|
+
method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40298
40413
|
auth: "admin",
|
|
40299
40414
|
timeoutMs: 6e4
|
|
40300
40415
|
}), method(TrainingJobRequestSchema.extend({
|
|
@@ -40313,6 +40428,24 @@ method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
|
|
|
40313
40428
|
kind: "mutation",
|
|
40314
40429
|
auth: "admin",
|
|
40315
40430
|
timeoutMs: 12e4
|
|
40431
|
+
}), method(TrainingJobRequestSchema.omit({ baseModelId: true }).extend({
|
|
40432
|
+
baseModelIds: array(string().min(1)).min(1),
|
|
40433
|
+
name: string().min(1).max(120),
|
|
40434
|
+
maxCostUsd: number().positive(),
|
|
40435
|
+
maxRuntimeSec: number().int().positive(),
|
|
40436
|
+
idempotencyKey: string().min(8).max(80)
|
|
40437
|
+
}), discriminatedUnion("kind", [object({
|
|
40438
|
+
kind: literal("started"),
|
|
40439
|
+
batchId: string(),
|
|
40440
|
+
jobs: array(TrainingJobSchema).min(1).readonly()
|
|
40441
|
+
}), object({
|
|
40442
|
+
kind: literal("refused"),
|
|
40443
|
+
reason: TrainingRefusalReasonSchema,
|
|
40444
|
+
detail: string()
|
|
40445
|
+
})]), {
|
|
40446
|
+
kind: "mutation",
|
|
40447
|
+
auth: "admin",
|
|
40448
|
+
timeoutMs: 12e4
|
|
40316
40449
|
}), method(object({}), array(TrainingJobSchema).readonly(), { auth: "admin" }), method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }), method(IdInput, TrainingJobSchema, {
|
|
40317
40450
|
kind: "mutation",
|
|
40318
40451
|
auth: "admin",
|
|
@@ -44654,12 +44787,6 @@ Object.freeze({
|
|
|
44654
44787
|
addonId: null,
|
|
44655
44788
|
access: "create"
|
|
44656
44789
|
},
|
|
44657
|
-
"pipelineAnalytics.createRetrainDatasetVersion": {
|
|
44658
|
-
capName: "pipeline-analytics",
|
|
44659
|
-
capScope: "device",
|
|
44660
|
-
addonId: null,
|
|
44661
|
-
access: "create"
|
|
44662
|
-
},
|
|
44663
44790
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
44664
44791
|
capName: "pipeline-analytics",
|
|
44665
44792
|
capScope: "device",
|
|
@@ -44672,12 +44799,6 @@ Object.freeze({
|
|
|
44672
44799
|
addonId: null,
|
|
44673
44800
|
access: "delete"
|
|
44674
44801
|
},
|
|
44675
|
-
"pipelineAnalytics.deleteRetrainDatasetVersion": {
|
|
44676
|
-
capName: "pipeline-analytics",
|
|
44677
|
-
capScope: "device",
|
|
44678
|
-
addonId: null,
|
|
44679
|
-
access: "delete"
|
|
44680
|
-
},
|
|
44681
44802
|
"pipelineAnalytics.deleteTracks": {
|
|
44682
44803
|
capName: "pipeline-analytics",
|
|
44683
44804
|
capScope: "device",
|
|
@@ -44780,6 +44901,12 @@ Object.freeze({
|
|
|
44780
44901
|
addonId: null,
|
|
44781
44902
|
access: "view"
|
|
44782
44903
|
},
|
|
44904
|
+
"pipelineAnalytics.getRetrainCorpusKpi": {
|
|
44905
|
+
capName: "pipeline-analytics",
|
|
44906
|
+
capScope: "device",
|
|
44907
|
+
addonId: null,
|
|
44908
|
+
access: "view"
|
|
44909
|
+
},
|
|
44783
44910
|
"pipelineAnalytics.getRetrainExportUrl": {
|
|
44784
44911
|
capName: "pipeline-analytics",
|
|
44785
44912
|
capScope: "device",
|
|
@@ -44900,7 +45027,7 @@ Object.freeze({
|
|
|
44900
45027
|
addonId: null,
|
|
44901
45028
|
access: "view"
|
|
44902
45029
|
},
|
|
44903
|
-
"pipelineAnalytics.
|
|
45030
|
+
"pipelineAnalytics.listRetrainCorpusPage": {
|
|
44904
45031
|
capName: "pipeline-analytics",
|
|
44905
45032
|
capScope: "device",
|
|
44906
45033
|
addonId: null,
|
|
@@ -44954,12 +45081,6 @@ Object.freeze({
|
|
|
44954
45081
|
addonId: null,
|
|
44955
45082
|
access: "create"
|
|
44956
45083
|
},
|
|
44957
|
-
"pipelineAnalytics.previewRetrainDataset": {
|
|
44958
|
-
capName: "pipeline-analytics",
|
|
44959
|
-
capScope: "device",
|
|
44960
|
-
addonId: null,
|
|
44961
|
-
access: "view"
|
|
44962
|
-
},
|
|
44963
45084
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
44964
45085
|
capName: "pipeline-analytics",
|
|
44965
45086
|
capScope: "device",
|
|
@@ -45038,6 +45159,12 @@ Object.freeze({
|
|
|
45038
45159
|
addonId: null,
|
|
45039
45160
|
access: "create"
|
|
45040
45161
|
},
|
|
45162
|
+
"pipelineAnalytics.resolveRetrainTrainingCorpus": {
|
|
45163
|
+
capName: "pipeline-analytics",
|
|
45164
|
+
capScope: "device",
|
|
45165
|
+
addonId: null,
|
|
45166
|
+
access: "view"
|
|
45167
|
+
},
|
|
45041
45168
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
45042
45169
|
capName: "pipeline-analytics",
|
|
45043
45170
|
capScope: "device",
|
|
@@ -45098,12 +45225,6 @@ Object.freeze({
|
|
|
45098
45225
|
addonId: null,
|
|
45099
45226
|
access: "create"
|
|
45100
45227
|
},
|
|
45101
|
-
"pipelineAnalytics.verifyRetrainDatasetVersion": {
|
|
45102
|
-
capName: "pipeline-analytics",
|
|
45103
|
-
capScope: "device",
|
|
45104
|
-
addonId: null,
|
|
45105
|
-
access: "view"
|
|
45106
|
-
},
|
|
45107
45228
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
45108
45229
|
capName: "pipeline-analytics",
|
|
45109
45230
|
capScope: "device",
|
|
@@ -47498,18 +47619,6 @@ Object.freeze({
|
|
|
47498
47619
|
addonId: null,
|
|
47499
47620
|
access: "create"
|
|
47500
47621
|
},
|
|
47501
|
-
"training.findDatasetVersionIdByName": {
|
|
47502
|
-
capName: "training",
|
|
47503
|
-
capScope: "system",
|
|
47504
|
-
addonId: null,
|
|
47505
|
-
access: "view"
|
|
47506
|
-
},
|
|
47507
|
-
"training.getDatasetVersion": {
|
|
47508
|
-
capName: "training",
|
|
47509
|
-
capScope: "system",
|
|
47510
|
-
addonId: null,
|
|
47511
|
-
access: "view"
|
|
47512
|
-
},
|
|
47513
47622
|
"training.getJob": {
|
|
47514
47623
|
capName: "training",
|
|
47515
47624
|
capScope: "system",
|
|
@@ -47528,12 +47637,6 @@ Object.freeze({
|
|
|
47528
47637
|
addonId: null,
|
|
47529
47638
|
access: "view"
|
|
47530
47639
|
},
|
|
47531
|
-
"training.listDatasetVersions": {
|
|
47532
|
-
capName: "training",
|
|
47533
|
-
capScope: "system",
|
|
47534
|
-
addonId: null,
|
|
47535
|
-
access: "view"
|
|
47536
|
-
},
|
|
47537
47640
|
"training.listJobs": {
|
|
47538
47641
|
capName: "training",
|
|
47539
47642
|
capScope: "system",
|
|
@@ -47546,54 +47649,66 @@ Object.freeze({
|
|
|
47546
47649
|
addonId: null,
|
|
47547
47650
|
access: "view"
|
|
47548
47651
|
},
|
|
47549
|
-
"training.
|
|
47652
|
+
"training.registerResult": {
|
|
47550
47653
|
capName: "training",
|
|
47551
47654
|
capScope: "system",
|
|
47552
47655
|
addonId: null,
|
|
47553
47656
|
access: "create"
|
|
47554
47657
|
},
|
|
47555
|
-
"training.
|
|
47658
|
+
"training.rollbackCanary": {
|
|
47556
47659
|
capName: "training",
|
|
47557
47660
|
capScope: "system",
|
|
47558
47661
|
addonId: null,
|
|
47559
47662
|
access: "create"
|
|
47560
47663
|
},
|
|
47561
|
-
"training.
|
|
47664
|
+
"training.startJob": {
|
|
47562
47665
|
capName: "training",
|
|
47563
47666
|
capScope: "system",
|
|
47564
47667
|
addonId: null,
|
|
47565
|
-
access: "
|
|
47668
|
+
access: "create"
|
|
47566
47669
|
},
|
|
47567
|
-
"training.
|
|
47670
|
+
"training.startJobBatch": {
|
|
47568
47671
|
capName: "training",
|
|
47569
47672
|
capScope: "system",
|
|
47570
47673
|
addonId: null,
|
|
47571
47674
|
access: "create"
|
|
47572
47675
|
},
|
|
47573
|
-
"
|
|
47574
|
-
capName: "training",
|
|
47676
|
+
"trainingProvider.cancelJob": {
|
|
47677
|
+
capName: "training-provider",
|
|
47575
47678
|
capScope: "system",
|
|
47576
47679
|
addonId: null,
|
|
47577
47680
|
access: "create"
|
|
47578
47681
|
},
|
|
47579
|
-
"trainingProvider.
|
|
47682
|
+
"trainingProvider.cleanupJob": {
|
|
47580
47683
|
capName: "training-provider",
|
|
47581
47684
|
capScope: "system",
|
|
47582
47685
|
addonId: null,
|
|
47583
47686
|
access: "create"
|
|
47584
47687
|
},
|
|
47585
|
-
"trainingProvider.
|
|
47688
|
+
"trainingProvider.createEntry": {
|
|
47586
47689
|
capName: "training-provider",
|
|
47587
47690
|
capScope: "system",
|
|
47588
47691
|
addonId: null,
|
|
47589
47692
|
access: "create"
|
|
47590
47693
|
},
|
|
47694
|
+
"trainingProvider.deleteEntry": {
|
|
47695
|
+
capName: "training-provider",
|
|
47696
|
+
capScope: "system",
|
|
47697
|
+
addonId: null,
|
|
47698
|
+
access: "delete"
|
|
47699
|
+
},
|
|
47591
47700
|
"trainingProvider.describe": {
|
|
47592
47701
|
capName: "training-provider",
|
|
47593
47702
|
capScope: "system",
|
|
47594
47703
|
addonId: null,
|
|
47595
47704
|
access: "view"
|
|
47596
47705
|
},
|
|
47706
|
+
"trainingProvider.describeTypes": {
|
|
47707
|
+
capName: "training-provider",
|
|
47708
|
+
capScope: "system",
|
|
47709
|
+
addonId: null,
|
|
47710
|
+
access: "view"
|
|
47711
|
+
},
|
|
47597
47712
|
"trainingProvider.estimateJob": {
|
|
47598
47713
|
capName: "training-provider",
|
|
47599
47714
|
capScope: "system",
|
|
@@ -47606,6 +47721,12 @@ Object.freeze({
|
|
|
47606
47721
|
addonId: null,
|
|
47607
47722
|
access: "view"
|
|
47608
47723
|
},
|
|
47724
|
+
"trainingProvider.listEntries": {
|
|
47725
|
+
capName: "training-provider",
|
|
47726
|
+
capScope: "system",
|
|
47727
|
+
addonId: null,
|
|
47728
|
+
access: "view"
|
|
47729
|
+
},
|
|
47609
47730
|
"trainingProvider.listJobEvents": {
|
|
47610
47731
|
capName: "training-provider",
|
|
47611
47732
|
capScope: "system",
|
|
@@ -51062,6 +51183,11 @@ Object.freeze({
|
|
|
51062
51183
|
form: "array",
|
|
51063
51184
|
optional: false
|
|
51064
51185
|
}],
|
|
51186
|
+
"pipelineAnalytics.listRetrainCorpusPage": [{
|
|
51187
|
+
name: "deviceIds",
|
|
51188
|
+
form: "array",
|
|
51189
|
+
optional: true
|
|
51190
|
+
}],
|
|
51065
51191
|
"pipelineAnalytics.listRetrainStaging": [{
|
|
51066
51192
|
name: "deviceIds",
|
|
51067
51193
|
form: "array",
|