@camstack/addon-model-studio 1.1.229 → 1.1.231
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 +29 -21
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DQJCw6s8.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-cZw6pjOH.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-D05xasL9.mjs → hostInit-DiGZOGzc.mjs} +2 -2
- package/dist/model-studio.addon.js +246 -131
- package/dist/model-studio.addon.mjs +246 -131
- 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-C9qRdjcf.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CH1IZO8J.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)
|
|
@@ -28117,6 +28162,8 @@ var AgentPipelineSettingsSchema = object({
|
|
|
28117
28162
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
28118
28163
|
*/
|
|
28119
28164
|
reachableHost: string().optional(),
|
|
28165
|
+
/** Hub-persisted UI colour (`--color-node-*` theme tokens). */
|
|
28166
|
+
color: NodeColorIdSchema.optional(),
|
|
28120
28167
|
/**
|
|
28121
28168
|
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
28122
28169
|
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
@@ -28666,8 +28713,9 @@ method(object({
|
|
|
28666
28713
|
auth: "admin"
|
|
28667
28714
|
}), method(object({
|
|
28668
28715
|
agentNodeId: string(),
|
|
28669
|
-
reachableHost: string().nullable()
|
|
28670
|
-
|
|
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) }), {
|
|
28671
28719
|
kind: "mutation",
|
|
28672
28720
|
auth: "admin"
|
|
28673
28721
|
}), method(object({
|
|
@@ -39883,9 +39931,11 @@ DeviceType.Camera, method(object({
|
|
|
39883
39931
|
* once is what makes a second provider (RunPod, a local NVIDIA node) a new
|
|
39884
39932
|
* manifest entry and nothing else.
|
|
39885
39933
|
*
|
|
39886
|
-
* Collection
|
|
39887
|
-
*
|
|
39888
|
-
*
|
|
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.
|
|
39889
39939
|
*
|
|
39890
39940
|
* Every cloud object a provider creates is tagged with the orchestrator's
|
|
39891
39941
|
* `jobKey`, so a retried submit finds the job it already started instead of
|
|
@@ -39909,8 +39959,8 @@ var TrainingRegionOptionSchema = object({
|
|
|
39909
39959
|
priceMultiplier: number().positive()
|
|
39910
39960
|
});
|
|
39911
39961
|
/**
|
|
39912
|
-
* The provider's per-
|
|
39913
|
-
* 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
|
|
39914
39964
|
* depend on the user's account), never hard-coded in the orchestrator.
|
|
39915
39965
|
*/
|
|
39916
39966
|
var TrainingProviderDefaultsSchema = object({
|
|
@@ -39921,9 +39971,32 @@ var TrainingProviderDefaultsSchema = object({
|
|
|
39921
39971
|
/** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
|
|
39922
39972
|
failedDatasetGraceHours: number().nonnegative()
|
|
39923
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
|
+
});
|
|
39924
39992
|
var TrainingProviderDescriptorSchema = object({
|
|
39925
39993
|
addonId: string(),
|
|
39926
|
-
|
|
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. */
|
|
39927
40000
|
kind: string(),
|
|
39928
40001
|
label: string(),
|
|
39929
40002
|
gpuTypes: array(TrainingGpuOptionSchema).readonly(),
|
|
@@ -39987,20 +40060,30 @@ var TrainerSourceRefSchema = object({
|
|
|
39987
40060
|
/** A commit sha (never a branch) — the job must be reproducible. */
|
|
39988
40061
|
revision: string().regex(/^[0-9a-f]{7,64}$/)
|
|
39989
40062
|
});
|
|
40063
|
+
/** Cloud job identity — route with the owning addon's `addonId` selector. */
|
|
39990
40064
|
var JobRef = {
|
|
39991
|
-
|
|
40065
|
+
entryId: string().min(1),
|
|
39992
40066
|
jobKey: string().uuid()
|
|
39993
40067
|
};
|
|
39994
40068
|
var TrainingLogLineSchema = object({
|
|
39995
40069
|
ts: number(),
|
|
39996
40070
|
text: string()
|
|
39997
40071
|
});
|
|
39998
|
-
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, {
|
|
39999
40082
|
kind: "mutation",
|
|
40000
40083
|
auth: "admin",
|
|
40001
40084
|
timeoutMs: 3e4
|
|
40002
40085
|
}), method(object({
|
|
40003
|
-
|
|
40086
|
+
entryId: string().min(1),
|
|
40004
40087
|
gpuType: string(),
|
|
40005
40088
|
region: string(),
|
|
40006
40089
|
datasetBytes: number().int().nonnegative(),
|
|
@@ -40066,7 +40149,7 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40066
40149
|
kind: "mutation",
|
|
40067
40150
|
auth: "admin",
|
|
40068
40151
|
timeoutMs: 5 * 6e4
|
|
40069
|
-
}), method(object({
|
|
40152
|
+
}), method(object({ entryId: string().min(1).optional() }), array(ProviderJobStatusSchema).readonly(), {
|
|
40070
40153
|
auth: "admin",
|
|
40071
40154
|
timeoutMs: 2 * 6e4
|
|
40072
40155
|
});
|
|
@@ -40076,20 +40159,31 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
40076
40159
|
*
|
|
40077
40160
|
* It owns what every provider must agree on, written once:
|
|
40078
40161
|
*
|
|
40079
|
-
* - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
|
|
40080
|
-
* live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
|
|
40081
|
-
* the export plan) and reaches this store through the five row methods
|
|
40082
|
-
* below, so the Retrain page and the export did not change.
|
|
40083
40162
|
* - **Jobs.** A persisted state machine, a reconcile loop against the
|
|
40084
40163
|
* provider, a cost guard, a daily orphan sweep and the retention rules.
|
|
40085
40164
|
* - **The return flow.** Verified artefacts → Model Studio
|
|
40086
40165
|
* (`custom-model-registry.importModelBundle`) → canary on cameras →
|
|
40087
40166
|
* rollback. Nothing is ever registered automatically.
|
|
40088
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
|
+
*
|
|
40089
40172
|
* Every method is `admin`.
|
|
40090
40173
|
*/
|
|
40091
|
-
/**
|
|
40092
|
-
|
|
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
|
+
});
|
|
40093
40187
|
/** A base model a detector job can fine-tune, and the baseline it is judged against. */
|
|
40094
40188
|
var TrainingBaseModelSchema = object({
|
|
40095
40189
|
modelId: string(),
|
|
@@ -40107,9 +40201,13 @@ var TrainingPresetSchema = _enum([
|
|
|
40107
40201
|
"thorough"
|
|
40108
40202
|
]);
|
|
40109
40203
|
var TrainingJobRequestSchema = object({
|
|
40110
|
-
|
|
40111
|
-
|
|
40112
|
-
|
|
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),
|
|
40113
40211
|
gpuType: string().min(1),
|
|
40114
40212
|
region: string(),
|
|
40115
40213
|
baseModelId: string().min(1),
|
|
@@ -40168,6 +40266,7 @@ var TrainingJobPlanSchema = object({
|
|
|
40168
40266
|
* result lives after the operator acted on it.
|
|
40169
40267
|
*/
|
|
40170
40268
|
var TrainingJobStateSchema = _enum([
|
|
40269
|
+
"queued",
|
|
40171
40270
|
"uploading",
|
|
40172
40271
|
"submitted",
|
|
40173
40272
|
"starting",
|
|
@@ -40221,6 +40320,11 @@ var TrainingJobSchema = object({
|
|
|
40221
40320
|
createdAt: number(),
|
|
40222
40321
|
updatedAt: number(),
|
|
40223
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),
|
|
40224
40328
|
stage: TrainingStageSchema.nullable(),
|
|
40225
40329
|
failure: object({
|
|
40226
40330
|
reason: TrainingFailureReasonSchema,
|
|
@@ -40232,6 +40336,12 @@ var TrainingJobSchema = object({
|
|
|
40232
40336
|
maxRuntimeSec: number().int().positive(),
|
|
40233
40337
|
trainer: TrainerSourceRefSchema,
|
|
40234
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(),
|
|
40235
40345
|
dataset: object({
|
|
40236
40346
|
bytes: number().int(),
|
|
40237
40347
|
sha256: string(),
|
|
@@ -40273,13 +40383,7 @@ var TrainingJobSchema = object({
|
|
|
40273
40383
|
canary: TrainingCanarySchema.nullable()
|
|
40274
40384
|
});
|
|
40275
40385
|
var IdInput = object({ id: string().min(1) });
|
|
40276
|
-
method(
|
|
40277
|
-
kind: "mutation",
|
|
40278
|
-
auth: "admin"
|
|
40279
|
-
}), 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() }), {
|
|
40280
|
-
kind: "mutation",
|
|
40281
|
-
auth: "admin"
|
|
40282
|
-
}), method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40386
|
+
method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
40283
40387
|
auth: "admin",
|
|
40284
40388
|
timeoutMs: 6e4
|
|
40285
40389
|
}), method(TrainingJobRequestSchema.extend({
|
|
@@ -40298,6 +40402,24 @@ method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
|
|
|
40298
40402
|
kind: "mutation",
|
|
40299
40403
|
auth: "admin",
|
|
40300
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
|
|
40301
40423
|
}), method(object({}), array(TrainingJobSchema).readonly(), { auth: "admin" }), method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }), method(IdInput, TrainingJobSchema, {
|
|
40302
40424
|
kind: "mutation",
|
|
40303
40425
|
auth: "admin",
|
|
@@ -44639,12 +44761,6 @@ Object.freeze({
|
|
|
44639
44761
|
addonId: null,
|
|
44640
44762
|
access: "create"
|
|
44641
44763
|
},
|
|
44642
|
-
"pipelineAnalytics.createRetrainDatasetVersion": {
|
|
44643
|
-
capName: "pipeline-analytics",
|
|
44644
|
-
capScope: "device",
|
|
44645
|
-
addonId: null,
|
|
44646
|
-
access: "create"
|
|
44647
|
-
},
|
|
44648
44764
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
44649
44765
|
capName: "pipeline-analytics",
|
|
44650
44766
|
capScope: "device",
|
|
@@ -44657,12 +44773,6 @@ Object.freeze({
|
|
|
44657
44773
|
addonId: null,
|
|
44658
44774
|
access: "delete"
|
|
44659
44775
|
},
|
|
44660
|
-
"pipelineAnalytics.deleteRetrainDatasetVersion": {
|
|
44661
|
-
capName: "pipeline-analytics",
|
|
44662
|
-
capScope: "device",
|
|
44663
|
-
addonId: null,
|
|
44664
|
-
access: "delete"
|
|
44665
|
-
},
|
|
44666
44776
|
"pipelineAnalytics.deleteTracks": {
|
|
44667
44777
|
capName: "pipeline-analytics",
|
|
44668
44778
|
capScope: "device",
|
|
@@ -44765,6 +44875,12 @@ Object.freeze({
|
|
|
44765
44875
|
addonId: null,
|
|
44766
44876
|
access: "view"
|
|
44767
44877
|
},
|
|
44878
|
+
"pipelineAnalytics.getRetrainCorpusKpi": {
|
|
44879
|
+
capName: "pipeline-analytics",
|
|
44880
|
+
capScope: "device",
|
|
44881
|
+
addonId: null,
|
|
44882
|
+
access: "view"
|
|
44883
|
+
},
|
|
44768
44884
|
"pipelineAnalytics.getRetrainExportUrl": {
|
|
44769
44885
|
capName: "pipeline-analytics",
|
|
44770
44886
|
capScope: "device",
|
|
@@ -44885,7 +45001,7 @@ Object.freeze({
|
|
|
44885
45001
|
addonId: null,
|
|
44886
45002
|
access: "view"
|
|
44887
45003
|
},
|
|
44888
|
-
"pipelineAnalytics.
|
|
45004
|
+
"pipelineAnalytics.listRetrainCorpusPage": {
|
|
44889
45005
|
capName: "pipeline-analytics",
|
|
44890
45006
|
capScope: "device",
|
|
44891
45007
|
addonId: null,
|
|
@@ -44939,12 +45055,6 @@ Object.freeze({
|
|
|
44939
45055
|
addonId: null,
|
|
44940
45056
|
access: "create"
|
|
44941
45057
|
},
|
|
44942
|
-
"pipelineAnalytics.previewRetrainDataset": {
|
|
44943
|
-
capName: "pipeline-analytics",
|
|
44944
|
-
capScope: "device",
|
|
44945
|
-
addonId: null,
|
|
44946
|
-
access: "view"
|
|
44947
|
-
},
|
|
44948
45058
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
44949
45059
|
capName: "pipeline-analytics",
|
|
44950
45060
|
capScope: "device",
|
|
@@ -45023,6 +45133,12 @@ Object.freeze({
|
|
|
45023
45133
|
addonId: null,
|
|
45024
45134
|
access: "create"
|
|
45025
45135
|
},
|
|
45136
|
+
"pipelineAnalytics.resolveRetrainTrainingCorpus": {
|
|
45137
|
+
capName: "pipeline-analytics",
|
|
45138
|
+
capScope: "device",
|
|
45139
|
+
addonId: null,
|
|
45140
|
+
access: "view"
|
|
45141
|
+
},
|
|
45026
45142
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
45027
45143
|
capName: "pipeline-analytics",
|
|
45028
45144
|
capScope: "device",
|
|
@@ -45083,12 +45199,6 @@ Object.freeze({
|
|
|
45083
45199
|
addonId: null,
|
|
45084
45200
|
access: "create"
|
|
45085
45201
|
},
|
|
45086
|
-
"pipelineAnalytics.verifyRetrainDatasetVersion": {
|
|
45087
|
-
capName: "pipeline-analytics",
|
|
45088
|
-
capScope: "device",
|
|
45089
|
-
addonId: null,
|
|
45090
|
-
access: "view"
|
|
45091
|
-
},
|
|
45092
45202
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
45093
45203
|
capName: "pipeline-analytics",
|
|
45094
45204
|
capScope: "device",
|
|
@@ -47483,18 +47593,6 @@ Object.freeze({
|
|
|
47483
47593
|
addonId: null,
|
|
47484
47594
|
access: "create"
|
|
47485
47595
|
},
|
|
47486
|
-
"training.findDatasetVersionIdByName": {
|
|
47487
|
-
capName: "training",
|
|
47488
|
-
capScope: "system",
|
|
47489
|
-
addonId: null,
|
|
47490
|
-
access: "view"
|
|
47491
|
-
},
|
|
47492
|
-
"training.getDatasetVersion": {
|
|
47493
|
-
capName: "training",
|
|
47494
|
-
capScope: "system",
|
|
47495
|
-
addonId: null,
|
|
47496
|
-
access: "view"
|
|
47497
|
-
},
|
|
47498
47596
|
"training.getJob": {
|
|
47499
47597
|
capName: "training",
|
|
47500
47598
|
capScope: "system",
|
|
@@ -47513,12 +47611,6 @@ Object.freeze({
|
|
|
47513
47611
|
addonId: null,
|
|
47514
47612
|
access: "view"
|
|
47515
47613
|
},
|
|
47516
|
-
"training.listDatasetVersions": {
|
|
47517
|
-
capName: "training",
|
|
47518
|
-
capScope: "system",
|
|
47519
|
-
addonId: null,
|
|
47520
|
-
access: "view"
|
|
47521
|
-
},
|
|
47522
47614
|
"training.listJobs": {
|
|
47523
47615
|
capName: "training",
|
|
47524
47616
|
capScope: "system",
|
|
@@ -47531,54 +47623,66 @@ Object.freeze({
|
|
|
47531
47623
|
addonId: null,
|
|
47532
47624
|
access: "view"
|
|
47533
47625
|
},
|
|
47534
|
-
"training.
|
|
47626
|
+
"training.registerResult": {
|
|
47535
47627
|
capName: "training",
|
|
47536
47628
|
capScope: "system",
|
|
47537
47629
|
addonId: null,
|
|
47538
47630
|
access: "create"
|
|
47539
47631
|
},
|
|
47540
|
-
"training.
|
|
47632
|
+
"training.rollbackCanary": {
|
|
47541
47633
|
capName: "training",
|
|
47542
47634
|
capScope: "system",
|
|
47543
47635
|
addonId: null,
|
|
47544
47636
|
access: "create"
|
|
47545
47637
|
},
|
|
47546
|
-
"training.
|
|
47638
|
+
"training.startJob": {
|
|
47547
47639
|
capName: "training",
|
|
47548
47640
|
capScope: "system",
|
|
47549
47641
|
addonId: null,
|
|
47550
|
-
access: "
|
|
47642
|
+
access: "create"
|
|
47551
47643
|
},
|
|
47552
|
-
"training.
|
|
47644
|
+
"training.startJobBatch": {
|
|
47553
47645
|
capName: "training",
|
|
47554
47646
|
capScope: "system",
|
|
47555
47647
|
addonId: null,
|
|
47556
47648
|
access: "create"
|
|
47557
47649
|
},
|
|
47558
|
-
"
|
|
47559
|
-
capName: "training",
|
|
47650
|
+
"trainingProvider.cancelJob": {
|
|
47651
|
+
capName: "training-provider",
|
|
47560
47652
|
capScope: "system",
|
|
47561
47653
|
addonId: null,
|
|
47562
47654
|
access: "create"
|
|
47563
47655
|
},
|
|
47564
|
-
"trainingProvider.
|
|
47656
|
+
"trainingProvider.cleanupJob": {
|
|
47565
47657
|
capName: "training-provider",
|
|
47566
47658
|
capScope: "system",
|
|
47567
47659
|
addonId: null,
|
|
47568
47660
|
access: "create"
|
|
47569
47661
|
},
|
|
47570
|
-
"trainingProvider.
|
|
47662
|
+
"trainingProvider.createEntry": {
|
|
47571
47663
|
capName: "training-provider",
|
|
47572
47664
|
capScope: "system",
|
|
47573
47665
|
addonId: null,
|
|
47574
47666
|
access: "create"
|
|
47575
47667
|
},
|
|
47668
|
+
"trainingProvider.deleteEntry": {
|
|
47669
|
+
capName: "training-provider",
|
|
47670
|
+
capScope: "system",
|
|
47671
|
+
addonId: null,
|
|
47672
|
+
access: "delete"
|
|
47673
|
+
},
|
|
47576
47674
|
"trainingProvider.describe": {
|
|
47577
47675
|
capName: "training-provider",
|
|
47578
47676
|
capScope: "system",
|
|
47579
47677
|
addonId: null,
|
|
47580
47678
|
access: "view"
|
|
47581
47679
|
},
|
|
47680
|
+
"trainingProvider.describeTypes": {
|
|
47681
|
+
capName: "training-provider",
|
|
47682
|
+
capScope: "system",
|
|
47683
|
+
addonId: null,
|
|
47684
|
+
access: "view"
|
|
47685
|
+
},
|
|
47582
47686
|
"trainingProvider.estimateJob": {
|
|
47583
47687
|
capName: "training-provider",
|
|
47584
47688
|
capScope: "system",
|
|
@@ -47591,6 +47695,12 @@ Object.freeze({
|
|
|
47591
47695
|
addonId: null,
|
|
47592
47696
|
access: "view"
|
|
47593
47697
|
},
|
|
47698
|
+
"trainingProvider.listEntries": {
|
|
47699
|
+
capName: "training-provider",
|
|
47700
|
+
capScope: "system",
|
|
47701
|
+
addonId: null,
|
|
47702
|
+
access: "view"
|
|
47703
|
+
},
|
|
47594
47704
|
"trainingProvider.listJobEvents": {
|
|
47595
47705
|
capName: "training-provider",
|
|
47596
47706
|
capScope: "system",
|
|
@@ -51047,6 +51157,11 @@ Object.freeze({
|
|
|
51047
51157
|
form: "array",
|
|
51048
51158
|
optional: false
|
|
51049
51159
|
}],
|
|
51160
|
+
"pipelineAnalytics.listRetrainCorpusPage": [{
|
|
51161
|
+
name: "deviceIds",
|
|
51162
|
+
form: "array",
|
|
51163
|
+
optional: true
|
|
51164
|
+
}],
|
|
51050
51165
|
"pipelineAnalytics.listRetrainStaging": [{
|
|
51051
51166
|
name: "deviceIds",
|
|
51052
51167
|
form: "array",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { b as e, g as t, l as n, u as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-CHL8loOl.mjs";
|
|
2
|
-
import { b as i, y as a } from "./responsive-
|
|
2
|
+
import { b as i, y as a } from "./responsive-yCZZZ6gV.mjs";
|
|
3
3
|
import { n as o, r as s, t as c } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
4
4
|
var l = i("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|