@camstack/addon-agent-ui 1.2.202 → 1.2.204
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/addon.js +247 -132
- package/dist/assets/{MotionZonesSettings-C8nVBY74.js → MotionZonesSettings-CXEf83_t.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-PZVnhyyk.js → PrivacyMaskSettings-ClfVY5Wg.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-rM-oZEqk.js → SceneMonitorEditor-BhWlvYtJ.js} +1 -1
- package/dist/assets/index-BfM2DeRA.css +2 -0
- package/dist/assets/index-CyLl9jp3.js +112 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/index-C1ReELdO.css +0 -2
- package/dist/assets/index-CEqtHYfi.js +0 -112
package/dist/addon.js
CHANGED
|
@@ -5378,7 +5378,7 @@ var ZodIssueCode = {
|
|
|
5378
5378
|
var ZodFirstPartyTypeKind;
|
|
5379
5379
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5380
5380
|
//#endregion
|
|
5381
|
-
//#region ../types/dist/sleep-
|
|
5381
|
+
//#region ../types/dist/sleep-CI0n5D44.mjs
|
|
5382
5382
|
/**
|
|
5383
5383
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5384
5384
|
* window to float samples (D455).
|
|
@@ -9325,6 +9325,16 @@ var CompositionSchema = object({
|
|
|
9325
9325
|
seen.add(feature.cap);
|
|
9326
9326
|
});
|
|
9327
9327
|
});
|
|
9328
|
+
var NodeColorIdSchema = _enum([
|
|
9329
|
+
"node-a",
|
|
9330
|
+
"node-b",
|
|
9331
|
+
"node-c",
|
|
9332
|
+
"node-d",
|
|
9333
|
+
"node-e",
|
|
9334
|
+
"node-f",
|
|
9335
|
+
"node-g",
|
|
9336
|
+
"node-h"
|
|
9337
|
+
]);
|
|
9328
9338
|
new Set([
|
|
9329
9339
|
"track",
|
|
9330
9340
|
"face",
|
|
@@ -23884,24 +23894,69 @@ var RetrainFrameListSchema = object({
|
|
|
23884
23894
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
23885
23895
|
autoPickMediaId: number().int().optional()
|
|
23886
23896
|
});
|
|
23897
|
+
/** Exclusive partition of a corpus copy's annotation progress (design §4.2). */
|
|
23898
|
+
var RetrainFrameWorkStateSchema = _enum([
|
|
23899
|
+
"unannotated",
|
|
23900
|
+
"annotated",
|
|
23901
|
+
"complete"
|
|
23902
|
+
]);
|
|
23903
|
+
/**
|
|
23904
|
+
* Filters for paginated corpus list, KPI, and matching export (design §4.4).
|
|
23905
|
+
* Every narrowing field is ANDed; omitted fields impose no constraint.
|
|
23906
|
+
*/
|
|
23907
|
+
var RetrainCorpusFilterSchema = object({
|
|
23908
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
23909
|
+
deviceIds: array(number()).max(500).optional(),
|
|
23910
|
+
/** When set, only frames in this named collection. */
|
|
23911
|
+
collectionId: string().optional(),
|
|
23912
|
+
/** Frames that carry at least one saved annotation in one of these classes. */
|
|
23913
|
+
classes: array(RetrainMacroClassSchema).optional(),
|
|
23914
|
+
page: number().int().positive().default(1),
|
|
23915
|
+
pageSize: number().int().positive().max(100).default(50)
|
|
23916
|
+
});
|
|
23917
|
+
var RetrainCorpusPageSchema = object({
|
|
23918
|
+
frames: array(RetrainFrameSchema.extend({ workState: RetrainFrameWorkStateSchema })).readonly(),
|
|
23919
|
+
total: number().int().nonnegative(),
|
|
23920
|
+
page: number().int().positive(),
|
|
23921
|
+
pageSize: number().int().positive()
|
|
23922
|
+
});
|
|
23923
|
+
var RetrainCorpusKpiCameraRowSchema = object({
|
|
23924
|
+
deviceId: number(),
|
|
23925
|
+
unannotated: number().int().nonnegative(),
|
|
23926
|
+
annotated: number().int().nonnegative(),
|
|
23927
|
+
complete: number().int().nonnegative(),
|
|
23928
|
+
/** This camera's `complete` count divided by corpus `total`, in `[0,1]`.
|
|
23929
|
+
* `null` when the corpus is empty (no ratio). */
|
|
23930
|
+
pctOfCorpus: number().min(0).max(1).nullable()
|
|
23931
|
+
});
|
|
23932
|
+
var RetrainCorpusKpiSchema = object({
|
|
23933
|
+
total: number().int().nonnegative(),
|
|
23934
|
+
unannotated: number().int().nonnegative(),
|
|
23935
|
+
annotated: number().int().nonnegative(),
|
|
23936
|
+
complete: number().int().nonnegative(),
|
|
23937
|
+
cameras: array(RetrainCorpusKpiCameraRowSchema).readonly()
|
|
23938
|
+
});
|
|
23887
23939
|
/**
|
|
23888
23940
|
* Which frames an annotated export carries. Every field narrows; an empty
|
|
23889
|
-
* filter is every annotated copy.
|
|
23890
|
-
*
|
|
23891
|
-
*
|
|
23892
|
-
*
|
|
23941
|
+
* filter is every annotated copy. `frameIds` is the primitive a job or
|
|
23942
|
+
* download uses; `batchId` re-selects what an earlier export carried
|
|
23943
|
+
* (`exportedInBatch`). Frozen dataset versions were removed — live selection
|
|
23944
|
+
* resolves to `frameIds` at plan/start.
|
|
23893
23945
|
*/
|
|
23894
23946
|
var RetrainExportFilterSchema = object({
|
|
23895
23947
|
deviceIds: array(number()).optional(),
|
|
23896
23948
|
frameIds: array(string()).max(2e4).optional(),
|
|
23897
23949
|
/** Only frames in at least one of these named collections. */
|
|
23898
23950
|
collectionIds: array(string()).max(200).optional(),
|
|
23899
|
-
/**
|
|
23900
|
-
|
|
23901
|
-
datasetVersionId: string().optional(),
|
|
23951
|
+
/** Single collection (Frames filter bar). ANDed with `collectionIds` when both set. */
|
|
23952
|
+
collectionId: string().optional(),
|
|
23902
23953
|
batchId: string().optional(),
|
|
23903
23954
|
/** Only frames the operator marked complete (all subjects boxed). */
|
|
23904
|
-
completeOnly: boolean().optional()
|
|
23955
|
+
completeOnly: boolean().optional(),
|
|
23956
|
+
/** Exclusive work-state partition (`workStateOf`); same as the corpus list. */
|
|
23957
|
+
workState: RetrainFrameWorkStateSchema.optional(),
|
|
23958
|
+
/** Frames with at least one saved annotation in one of these classes. */
|
|
23959
|
+
classes: array(RetrainMacroClassSchema).optional()
|
|
23905
23960
|
});
|
|
23906
23961
|
/**
|
|
23907
23962
|
* `frames`: the full frame copies, boxes in `annotations.json`.
|
|
@@ -24101,8 +24156,7 @@ var RetrainDatasetStatsSchema = object({
|
|
|
24101
24156
|
completeFrames: number().int()
|
|
24102
24157
|
})).readonly()
|
|
24103
24158
|
});
|
|
24104
|
-
|
|
24105
|
-
var RetrainDatasetVersionSchema = object({
|
|
24159
|
+
object({
|
|
24106
24160
|
id: string(),
|
|
24107
24161
|
name: string(),
|
|
24108
24162
|
createdAt: number(),
|
|
@@ -24110,22 +24164,33 @@ var RetrainDatasetVersionSchema = object({
|
|
|
24110
24164
|
layout: RetrainExportLayoutSchema,
|
|
24111
24165
|
completeOnly: boolean(),
|
|
24112
24166
|
frameCount: number().int(),
|
|
24113
|
-
/** sha256 of what the frames taught when the version was frozen. */
|
|
24114
24167
|
annotationHash: string(),
|
|
24115
|
-
/** The export manifest schema the version was cut under. */
|
|
24116
24168
|
manifestSchema: string(),
|
|
24117
24169
|
stats: RetrainDatasetStatsSchema
|
|
24118
24170
|
});
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24171
|
+
/**
|
|
24172
|
+
* Live training corpus criteria — same shape as `TrainingCorpusSelection` on
|
|
24173
|
+
* the training cap. Resolved here so plan/start and the annotated export share
|
|
24174
|
+
* one definition of "the frames" (`buildRetrainExportPlan`).
|
|
24175
|
+
*/
|
|
24176
|
+
var RetrainTrainingCorpusSelectionSchema = object({
|
|
24177
|
+
collectionIds: array(string()).min(1),
|
|
24178
|
+
workState: _enum([
|
|
24179
|
+
"complete",
|
|
24180
|
+
"annotated_or_complete",
|
|
24181
|
+
"any_annotated"
|
|
24182
|
+
]).default("complete")
|
|
24183
|
+
});
|
|
24184
|
+
var RetrainTrainingCorpusResolveResultSchema = discriminatedUnion("kind", [object({
|
|
24185
|
+
kind: literal("resolved"),
|
|
24186
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
24187
|
+
stats: RetrainDatasetStatsSchema,
|
|
24188
|
+
annotationHash: string(),
|
|
24189
|
+
layout: RetrainExportLayoutSchema
|
|
24122
24190
|
}), object({
|
|
24123
24191
|
kind: literal("refused"),
|
|
24124
|
-
reason: _enum([
|
|
24125
|
-
|
|
24126
|
-
"duplicate-name",
|
|
24127
|
-
"no-frames"
|
|
24128
|
-
])
|
|
24192
|
+
reason: _enum(["unknown-collection", "no-frames"]),
|
|
24193
|
+
detail: string()
|
|
24129
24194
|
})]);
|
|
24130
24195
|
/** The outcome of a lifecycle move owned by the retrain page. */
|
|
24131
24196
|
var RetrainTransitionResultSchema = object({
|
|
@@ -24832,6 +24897,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
24832
24897
|
}), array(RetrainTrackSchema).readonly(), {
|
|
24833
24898
|
kind: "query",
|
|
24834
24899
|
auth: "admin"
|
|
24900
|
+
}), method(RetrainCorpusFilterSchema, RetrainCorpusPageSchema, {
|
|
24901
|
+
kind: "query",
|
|
24902
|
+
auth: "admin"
|
|
24903
|
+
}), method(object({}), RetrainCorpusKpiSchema, {
|
|
24904
|
+
kind: "query",
|
|
24905
|
+
auth: "admin"
|
|
24835
24906
|
}), method(object({ trackId: string() }), RetrainFrameListSchema, {
|
|
24836
24907
|
kind: "query",
|
|
24837
24908
|
auth: "admin"
|
|
@@ -24927,36 +24998,6 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
24927
24998
|
kind: "mutation",
|
|
24928
24999
|
auth: "admin",
|
|
24929
25000
|
timeoutMs: 12e4
|
|
24930
|
-
}), method(object({
|
|
24931
|
-
selection: RetrainDatasetSelectionSchema,
|
|
24932
|
-
completeOnly: boolean().optional()
|
|
24933
|
-
}), RetrainDatasetStatsSchema, {
|
|
24934
|
-
kind: "query",
|
|
24935
|
-
auth: "admin"
|
|
24936
|
-
}), method(object({
|
|
24937
|
-
name: string().max(120),
|
|
24938
|
-
selection: RetrainDatasetSelectionSchema,
|
|
24939
|
-
layout: RetrainExportLayoutSchema,
|
|
24940
|
-
completeOnly: boolean()
|
|
24941
|
-
}), CreateRetrainDatasetVersionResultSchema, {
|
|
24942
|
-
kind: "mutation",
|
|
24943
|
-
auth: "admin",
|
|
24944
|
-
timeoutMs: 12e4
|
|
24945
|
-
}), method(object({}), array(RetrainDatasetVersionSchema).readonly(), {
|
|
24946
|
-
kind: "query",
|
|
24947
|
-
auth: "admin"
|
|
24948
|
-
}), method(object({ id: string() }), object({ deleted: boolean() }), {
|
|
24949
|
-
kind: "mutation",
|
|
24950
|
-
auth: "admin"
|
|
24951
|
-
}), method(object({ id: string() }), object({
|
|
24952
|
-
found: boolean(),
|
|
24953
|
-
annotationHash: string(),
|
|
24954
|
-
matches: boolean(),
|
|
24955
|
-
missingFrames: number().int()
|
|
24956
|
-
}), {
|
|
24957
|
-
kind: "query",
|
|
24958
|
-
auth: "admin",
|
|
24959
|
-
timeoutMs: 12e4
|
|
24960
25001
|
}), method(object({}), array(RetrainAssistProfileSchema).readonly(), {
|
|
24961
25002
|
kind: "query",
|
|
24962
25003
|
auth: "admin"
|
|
@@ -24983,6 +25024,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
24983
25024
|
}), method(object({}), array(RetrainCollectionSchema).readonly(), {
|
|
24984
25025
|
kind: "query",
|
|
24985
25026
|
auth: "admin"
|
|
25027
|
+
}), method(RetrainTrainingCorpusSelectionSchema, RetrainTrainingCorpusResolveResultSchema, {
|
|
25028
|
+
kind: "query",
|
|
25029
|
+
auth: "admin",
|
|
25030
|
+
timeoutMs: 6e4
|
|
24986
25031
|
}), method(object({
|
|
24987
25032
|
id: string(),
|
|
24988
25033
|
name: string().max(120)
|
|
@@ -27496,6 +27541,8 @@ var AgentPipelineSettingsSchema = object({
|
|
|
27496
27541
|
* address is wrong (multi-homed host, NAT, custom interface).
|
|
27497
27542
|
*/
|
|
27498
27543
|
reachableHost: string().optional(),
|
|
27544
|
+
/** Hub-persisted UI colour (`--color-node-*` theme tokens). */
|
|
27545
|
+
color: NodeColorIdSchema.optional(),
|
|
27499
27546
|
/**
|
|
27500
27547
|
* Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
|
|
27501
27548
|
* weight, steps}. Absent / all-disabled ⇒ the node's single default
|
|
@@ -28045,8 +28092,9 @@ method(object({
|
|
|
28045
28092
|
auth: "admin"
|
|
28046
28093
|
}), method(object({
|
|
28047
28094
|
agentNodeId: string(),
|
|
28048
|
-
reachableHost: string().nullable()
|
|
28049
|
-
|
|
28095
|
+
reachableHost: string().nullable().optional(),
|
|
28096
|
+
color: NodeColorIdSchema.nullable().optional()
|
|
28097
|
+
}).refine((v) => v.reachableHost !== void 0 || v.color !== void 0, { message: "reachableHost or color required" }), object({ success: literal(true) }), {
|
|
28050
28098
|
kind: "mutation",
|
|
28051
28099
|
auth: "admin"
|
|
28052
28100
|
}), method(object({
|
|
@@ -39262,9 +39310,11 @@ DeviceType.Camera, method(object({
|
|
|
39262
39310
|
* once is what makes a second provider (RunPod, a local NVIDIA node) a new
|
|
39263
39311
|
* manifest entry and nothing else.
|
|
39264
39312
|
*
|
|
39265
|
-
* Collection
|
|
39266
|
-
*
|
|
39267
|
-
*
|
|
39313
|
+
* Collection of provider **types** (addons). Each addon owns zero or more
|
|
39314
|
+
* **entries** (credentials + defaults). Concat-fans: `describe`,
|
|
39315
|
+
* `describeTypes`, `listEntries`, `listJobs`. Single-row work is keyed by
|
|
39316
|
+
* `entryId`; callers also pass the owning `addonId` as the collection
|
|
39317
|
+
* selector (broker posture). Every method is `admin`: these spend money.
|
|
39268
39318
|
*
|
|
39269
39319
|
* Every cloud object a provider creates is tagged with the orchestrator's
|
|
39270
39320
|
* `jobKey`, so a retried submit finds the job it already started instead of
|
|
@@ -39288,8 +39338,8 @@ var TrainingRegionOptionSchema = object({
|
|
|
39288
39338
|
priceMultiplier: number().positive()
|
|
39289
39339
|
});
|
|
39290
39340
|
/**
|
|
39291
|
-
* The provider's per-
|
|
39292
|
-
* live
|
|
39341
|
+
* The provider's per-entry settings, as the orchestrator reads them. They
|
|
39342
|
+
* live on the PROVIDER addon's entry (operator decision 2026-10-08: they
|
|
39293
39343
|
* depend on the user's account), never hard-coded in the orchestrator.
|
|
39294
39344
|
*/
|
|
39295
39345
|
var TrainingProviderDefaultsSchema = object({
|
|
@@ -39300,9 +39350,32 @@ var TrainingProviderDefaultsSchema = object({
|
|
|
39300
39350
|
/** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
|
|
39301
39351
|
failedDatasetGraceHours: number().nonnegative()
|
|
39302
39352
|
});
|
|
39353
|
+
/** One creatable provider type, for the Add-entry dialog. */
|
|
39354
|
+
var TrainingProviderTypeSchema = object({
|
|
39355
|
+
typeId: string(),
|
|
39356
|
+
label: string(),
|
|
39357
|
+
/** Path under the addon package (e.g. `assets/training-modal/icon.svg`). */
|
|
39358
|
+
iconAsset: string(),
|
|
39359
|
+
/** Owning `training-provider` addon — collection selector for createEntry. */
|
|
39360
|
+
addonId: string()
|
|
39361
|
+
});
|
|
39362
|
+
/** One configured account / workspace under a provider type. */
|
|
39363
|
+
var TrainingProviderEntrySchema = object({
|
|
39364
|
+
entryId: string(),
|
|
39365
|
+
typeId: string(),
|
|
39366
|
+
name: string(),
|
|
39367
|
+
addonId: string(),
|
|
39368
|
+
/** Credentials are present — never the values. */
|
|
39369
|
+
configured: boolean()
|
|
39370
|
+
});
|
|
39303
39371
|
var TrainingProviderDescriptorSchema = object({
|
|
39304
39372
|
addonId: string(),
|
|
39305
|
-
|
|
39373
|
+
entryId: string(),
|
|
39374
|
+
typeId: string(),
|
|
39375
|
+
/** Operator-chosen entry name. */
|
|
39376
|
+
name: string(),
|
|
39377
|
+
iconAsset: string(),
|
|
39378
|
+
/** `modal`, `runpod`, `fake`, … — same as typeId for current providers. */
|
|
39306
39379
|
kind: string(),
|
|
39307
39380
|
label: string(),
|
|
39308
39381
|
gpuTypes: array(TrainingGpuOptionSchema).readonly(),
|
|
@@ -39366,20 +39439,30 @@ var TrainerSourceRefSchema = object({
|
|
|
39366
39439
|
/** A commit sha (never a branch) — the job must be reproducible. */
|
|
39367
39440
|
revision: string().regex(/^[0-9a-f]{7,64}$/)
|
|
39368
39441
|
});
|
|
39442
|
+
/** Cloud job identity — route with the owning addon's `addonId` selector. */
|
|
39369
39443
|
var JobRef = {
|
|
39370
|
-
|
|
39444
|
+
entryId: string().min(1),
|
|
39371
39445
|
jobKey: string().uuid()
|
|
39372
39446
|
};
|
|
39373
39447
|
var TrainingLogLineSchema = object({
|
|
39374
39448
|
ts: number(),
|
|
39375
39449
|
text: string()
|
|
39376
39450
|
});
|
|
39377
|
-
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({
|
|
39451
|
+
method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderTypeSchema).readonly(), { auth: "admin" }), method(object({}), array(TrainingProviderEntrySchema).readonly(), { auth: "admin" }), method(object({
|
|
39452
|
+
typeId: string().min(1),
|
|
39453
|
+
name: string().min(1)
|
|
39454
|
+
}), object({ entryId: string() }), {
|
|
39455
|
+
kind: "mutation",
|
|
39456
|
+
auth: "admin"
|
|
39457
|
+
}), method(object({ entryId: string().min(1) }), object({ ok: literal(true) }), {
|
|
39458
|
+
kind: "mutation",
|
|
39459
|
+
auth: "admin"
|
|
39460
|
+
}), method(object({ entryId: string().min(1) }), TrainingCredentialCheckSchema, {
|
|
39378
39461
|
kind: "mutation",
|
|
39379
39462
|
auth: "admin",
|
|
39380
39463
|
timeoutMs: 3e4
|
|
39381
39464
|
}), method(object({
|
|
39382
|
-
|
|
39465
|
+
entryId: string().min(1),
|
|
39383
39466
|
gpuType: string(),
|
|
39384
39467
|
region: string(),
|
|
39385
39468
|
datasetBytes: number().int().nonnegative(),
|
|
@@ -39445,7 +39528,7 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
39445
39528
|
kind: "mutation",
|
|
39446
39529
|
auth: "admin",
|
|
39447
39530
|
timeoutMs: 5 * 6e4
|
|
39448
|
-
}), method(object({
|
|
39531
|
+
}), method(object({ entryId: string().min(1).optional() }), array(ProviderJobStatusSchema).readonly(), {
|
|
39449
39532
|
auth: "admin",
|
|
39450
39533
|
timeoutMs: 2 * 6e4
|
|
39451
39534
|
});
|
|
@@ -39455,20 +39538,31 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
|
|
|
39455
39538
|
*
|
|
39456
39539
|
* It owns what every provider must agree on, written once:
|
|
39457
39540
|
*
|
|
39458
|
-
* - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
|
|
39459
|
-
* live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
|
|
39460
|
-
* the export plan) and reaches this store through the five row methods
|
|
39461
|
-
* below, so the Retrain page and the export did not change.
|
|
39462
39541
|
* - **Jobs.** A persisted state machine, a reconcile loop against the
|
|
39463
39542
|
* provider, a cost guard, a daily orphan sweep and the retention rules.
|
|
39464
39543
|
* - **The return flow.** Verified artefacts → Model Studio
|
|
39465
39544
|
* (`custom-model-registry.importModelBundle`) → canary on cameras →
|
|
39466
39545
|
* rollback. Nothing is ever registered automatically.
|
|
39467
39546
|
*
|
|
39547
|
+
* Plan/start takes a live {@link TrainingCorpusSelection} (collections +
|
|
39548
|
+
* work-state rule); frame ids are resolved via pipeline-analytics at that
|
|
39549
|
+
* moment and snapshotted on the job. No frozen dataset version.
|
|
39550
|
+
*
|
|
39468
39551
|
* Every method is `admin`.
|
|
39469
39552
|
*/
|
|
39470
|
-
/**
|
|
39471
|
-
|
|
39553
|
+
/**
|
|
39554
|
+
* Live corpus criteria for plan/start (design §5.2). Default is complete-only.
|
|
39555
|
+
* Frame ids are resolved at plan/start — never a frozen version id.
|
|
39556
|
+
*/
|
|
39557
|
+
var TrainingCorpusSelectionSchema = object({
|
|
39558
|
+
collectionIds: array(string()).min(1),
|
|
39559
|
+
/** Default complete-only for v1 */
|
|
39560
|
+
workState: _enum([
|
|
39561
|
+
"complete",
|
|
39562
|
+
"annotated_or_complete",
|
|
39563
|
+
"any_annotated"
|
|
39564
|
+
]).default("complete")
|
|
39565
|
+
});
|
|
39472
39566
|
/** A base model a detector job can fine-tune, and the baseline it is judged against. */
|
|
39473
39567
|
var TrainingBaseModelSchema = object({
|
|
39474
39568
|
modelId: string(),
|
|
@@ -39486,9 +39580,13 @@ var TrainingPresetSchema = _enum([
|
|
|
39486
39580
|
"thorough"
|
|
39487
39581
|
]);
|
|
39488
39582
|
var TrainingJobRequestSchema = object({
|
|
39489
|
-
|
|
39490
|
-
|
|
39491
|
-
|
|
39583
|
+
/** Live collection + work-state criteria; resolved at plan/start. */
|
|
39584
|
+
selection: TrainingCorpusSelectionSchema,
|
|
39585
|
+
/**
|
|
39586
|
+
* The provider **entry** that runs it (credentials + defaults).
|
|
39587
|
+
* Resolve to an owning addon via `training-provider.describe` / `listEntries`.
|
|
39588
|
+
*/
|
|
39589
|
+
entryId: string().min(1),
|
|
39492
39590
|
gpuType: string().min(1),
|
|
39493
39591
|
region: string(),
|
|
39494
39592
|
baseModelId: string().min(1),
|
|
@@ -39547,6 +39645,7 @@ var TrainingJobPlanSchema = object({
|
|
|
39547
39645
|
* result lives after the operator acted on it.
|
|
39548
39646
|
*/
|
|
39549
39647
|
var TrainingJobStateSchema = _enum([
|
|
39648
|
+
"queued",
|
|
39550
39649
|
"uploading",
|
|
39551
39650
|
"submitted",
|
|
39552
39651
|
"starting",
|
|
@@ -39600,6 +39699,11 @@ var TrainingJobSchema = object({
|
|
|
39600
39699
|
createdAt: number(),
|
|
39601
39700
|
updatedAt: number(),
|
|
39602
39701
|
state: TrainingJobStateSchema,
|
|
39702
|
+
/**
|
|
39703
|
+
* Shared by every job enqueued together via `startJobBatch`.
|
|
39704
|
+
* `null` for a lone `startJob`. The engine advances queued siblings by this id.
|
|
39705
|
+
*/
|
|
39706
|
+
batchId: string().nullable().default(null),
|
|
39603
39707
|
stage: TrainingStageSchema.nullable(),
|
|
39604
39708
|
failure: object({
|
|
39605
39709
|
reason: TrainingFailureReasonSchema,
|
|
@@ -39611,6 +39715,12 @@ var TrainingJobSchema = object({
|
|
|
39611
39715
|
maxRuntimeSec: number().int().positive(),
|
|
39612
39716
|
trainer: TrainerSourceRefSchema,
|
|
39613
39717
|
datasetLayout: RetrainExportLayoutSchema,
|
|
39718
|
+
/** Frame count snapshotted when the job started (audit; equals `frameIds.length`). */
|
|
39719
|
+
frameCount: number().int().nonnegative(),
|
|
39720
|
+
/** Resolved frame ids at start — the archive ships exactly these. */
|
|
39721
|
+
frameIds: array(string()).max(2e4).readonly(),
|
|
39722
|
+
/** Hash of what those frames taught at start (trainer `dataset.annotationHash`). */
|
|
39723
|
+
annotationHash: string(),
|
|
39614
39724
|
dataset: object({
|
|
39615
39725
|
bytes: number().int(),
|
|
39616
39726
|
sha256: string(),
|
|
@@ -39652,13 +39762,7 @@ var TrainingJobSchema = object({
|
|
|
39652
39762
|
canary: TrainingCanarySchema.nullable()
|
|
39653
39763
|
});
|
|
39654
39764
|
var IdInput = object({ id: string().min(1) });
|
|
39655
|
-
method(
|
|
39656
|
-
kind: "mutation",
|
|
39657
|
-
auth: "admin"
|
|
39658
|
-
}), 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() }), {
|
|
39659
|
-
kind: "mutation",
|
|
39660
|
-
auth: "admin"
|
|
39661
|
-
}), method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
39765
|
+
method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
|
|
39662
39766
|
auth: "admin",
|
|
39663
39767
|
timeoutMs: 6e4
|
|
39664
39768
|
}), method(TrainingJobRequestSchema.extend({
|
|
@@ -39677,6 +39781,24 @@ method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
|
|
|
39677
39781
|
kind: "mutation",
|
|
39678
39782
|
auth: "admin",
|
|
39679
39783
|
timeoutMs: 12e4
|
|
39784
|
+
}), method(TrainingJobRequestSchema.omit({ baseModelId: true }).extend({
|
|
39785
|
+
baseModelIds: array(string().min(1)).min(1),
|
|
39786
|
+
name: string().min(1).max(120),
|
|
39787
|
+
maxCostUsd: number().positive(),
|
|
39788
|
+
maxRuntimeSec: number().int().positive(),
|
|
39789
|
+
idempotencyKey: string().min(8).max(80)
|
|
39790
|
+
}), discriminatedUnion("kind", [object({
|
|
39791
|
+
kind: literal("started"),
|
|
39792
|
+
batchId: string(),
|
|
39793
|
+
jobs: array(TrainingJobSchema).min(1).readonly()
|
|
39794
|
+
}), object({
|
|
39795
|
+
kind: literal("refused"),
|
|
39796
|
+
reason: TrainingRefusalReasonSchema,
|
|
39797
|
+
detail: string()
|
|
39798
|
+
})]), {
|
|
39799
|
+
kind: "mutation",
|
|
39800
|
+
auth: "admin",
|
|
39801
|
+
timeoutMs: 12e4
|
|
39680
39802
|
}), method(object({}), array(TrainingJobSchema).readonly(), { auth: "admin" }), method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }), method(IdInput, TrainingJobSchema, {
|
|
39681
39803
|
kind: "mutation",
|
|
39682
39804
|
auth: "admin",
|
|
@@ -43920,12 +44042,6 @@ Object.freeze({
|
|
|
43920
44042
|
addonId: null,
|
|
43921
44043
|
access: "create"
|
|
43922
44044
|
},
|
|
43923
|
-
"pipelineAnalytics.createRetrainDatasetVersion": {
|
|
43924
|
-
capName: "pipeline-analytics",
|
|
43925
|
-
capScope: "device",
|
|
43926
|
-
addonId: null,
|
|
43927
|
-
access: "create"
|
|
43928
|
-
},
|
|
43929
44045
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
43930
44046
|
capName: "pipeline-analytics",
|
|
43931
44047
|
capScope: "device",
|
|
@@ -43938,12 +44054,6 @@ Object.freeze({
|
|
|
43938
44054
|
addonId: null,
|
|
43939
44055
|
access: "delete"
|
|
43940
44056
|
},
|
|
43941
|
-
"pipelineAnalytics.deleteRetrainDatasetVersion": {
|
|
43942
|
-
capName: "pipeline-analytics",
|
|
43943
|
-
capScope: "device",
|
|
43944
|
-
addonId: null,
|
|
43945
|
-
access: "delete"
|
|
43946
|
-
},
|
|
43947
44057
|
"pipelineAnalytics.deleteTracks": {
|
|
43948
44058
|
capName: "pipeline-analytics",
|
|
43949
44059
|
capScope: "device",
|
|
@@ -44046,6 +44156,12 @@ Object.freeze({
|
|
|
44046
44156
|
addonId: null,
|
|
44047
44157
|
access: "view"
|
|
44048
44158
|
},
|
|
44159
|
+
"pipelineAnalytics.getRetrainCorpusKpi": {
|
|
44160
|
+
capName: "pipeline-analytics",
|
|
44161
|
+
capScope: "device",
|
|
44162
|
+
addonId: null,
|
|
44163
|
+
access: "view"
|
|
44164
|
+
},
|
|
44049
44165
|
"pipelineAnalytics.getRetrainExportUrl": {
|
|
44050
44166
|
capName: "pipeline-analytics",
|
|
44051
44167
|
capScope: "device",
|
|
@@ -44166,7 +44282,7 @@ Object.freeze({
|
|
|
44166
44282
|
addonId: null,
|
|
44167
44283
|
access: "view"
|
|
44168
44284
|
},
|
|
44169
|
-
"pipelineAnalytics.
|
|
44285
|
+
"pipelineAnalytics.listRetrainCorpusPage": {
|
|
44170
44286
|
capName: "pipeline-analytics",
|
|
44171
44287
|
capScope: "device",
|
|
44172
44288
|
addonId: null,
|
|
@@ -44220,12 +44336,6 @@ Object.freeze({
|
|
|
44220
44336
|
addonId: null,
|
|
44221
44337
|
access: "create"
|
|
44222
44338
|
},
|
|
44223
|
-
"pipelineAnalytics.previewRetrainDataset": {
|
|
44224
|
-
capName: "pipeline-analytics",
|
|
44225
|
-
capScope: "device",
|
|
44226
|
-
addonId: null,
|
|
44227
|
-
access: "view"
|
|
44228
|
-
},
|
|
44229
44339
|
"pipelineAnalytics.proposeRetrainAnnotations": {
|
|
44230
44340
|
capName: "pipeline-analytics",
|
|
44231
44341
|
capScope: "device",
|
|
@@ -44304,6 +44414,12 @@ Object.freeze({
|
|
|
44304
44414
|
addonId: null,
|
|
44305
44415
|
access: "create"
|
|
44306
44416
|
},
|
|
44417
|
+
"pipelineAnalytics.resolveRetrainTrainingCorpus": {
|
|
44418
|
+
capName: "pipeline-analytics",
|
|
44419
|
+
capScope: "device",
|
|
44420
|
+
addonId: null,
|
|
44421
|
+
access: "view"
|
|
44422
|
+
},
|
|
44307
44423
|
"pipelineAnalytics.restageRetrainTrack": {
|
|
44308
44424
|
capName: "pipeline-analytics",
|
|
44309
44425
|
capScope: "device",
|
|
@@ -44364,12 +44480,6 @@ Object.freeze({
|
|
|
44364
44480
|
addonId: null,
|
|
44365
44481
|
access: "create"
|
|
44366
44482
|
},
|
|
44367
|
-
"pipelineAnalytics.verifyRetrainDatasetVersion": {
|
|
44368
|
-
capName: "pipeline-analytics",
|
|
44369
|
-
capScope: "device",
|
|
44370
|
-
addonId: null,
|
|
44371
|
-
access: "view"
|
|
44372
|
-
},
|
|
44373
44483
|
"pipelineAnalytics.wipeAllAnalytics": {
|
|
44374
44484
|
capName: "pipeline-analytics",
|
|
44375
44485
|
capScope: "device",
|
|
@@ -46764,18 +46874,6 @@ Object.freeze({
|
|
|
46764
46874
|
addonId: null,
|
|
46765
46875
|
access: "create"
|
|
46766
46876
|
},
|
|
46767
|
-
"training.findDatasetVersionIdByName": {
|
|
46768
|
-
capName: "training",
|
|
46769
|
-
capScope: "system",
|
|
46770
|
-
addonId: null,
|
|
46771
|
-
access: "view"
|
|
46772
|
-
},
|
|
46773
|
-
"training.getDatasetVersion": {
|
|
46774
|
-
capName: "training",
|
|
46775
|
-
capScope: "system",
|
|
46776
|
-
addonId: null,
|
|
46777
|
-
access: "view"
|
|
46778
|
-
},
|
|
46779
46877
|
"training.getJob": {
|
|
46780
46878
|
capName: "training",
|
|
46781
46879
|
capScope: "system",
|
|
@@ -46794,12 +46892,6 @@ Object.freeze({
|
|
|
46794
46892
|
addonId: null,
|
|
46795
46893
|
access: "view"
|
|
46796
46894
|
},
|
|
46797
|
-
"training.listDatasetVersions": {
|
|
46798
|
-
capName: "training",
|
|
46799
|
-
capScope: "system",
|
|
46800
|
-
addonId: null,
|
|
46801
|
-
access: "view"
|
|
46802
|
-
},
|
|
46803
46895
|
"training.listJobs": {
|
|
46804
46896
|
capName: "training",
|
|
46805
46897
|
capScope: "system",
|
|
@@ -46812,54 +46904,66 @@ Object.freeze({
|
|
|
46812
46904
|
addonId: null,
|
|
46813
46905
|
access: "view"
|
|
46814
46906
|
},
|
|
46815
|
-
"training.
|
|
46907
|
+
"training.registerResult": {
|
|
46816
46908
|
capName: "training",
|
|
46817
46909
|
capScope: "system",
|
|
46818
46910
|
addonId: null,
|
|
46819
46911
|
access: "create"
|
|
46820
46912
|
},
|
|
46821
|
-
"training.
|
|
46913
|
+
"training.rollbackCanary": {
|
|
46822
46914
|
capName: "training",
|
|
46823
46915
|
capScope: "system",
|
|
46824
46916
|
addonId: null,
|
|
46825
46917
|
access: "create"
|
|
46826
46918
|
},
|
|
46827
|
-
"training.
|
|
46919
|
+
"training.startJob": {
|
|
46828
46920
|
capName: "training",
|
|
46829
46921
|
capScope: "system",
|
|
46830
46922
|
addonId: null,
|
|
46831
|
-
access: "
|
|
46923
|
+
access: "create"
|
|
46832
46924
|
},
|
|
46833
|
-
"training.
|
|
46925
|
+
"training.startJobBatch": {
|
|
46834
46926
|
capName: "training",
|
|
46835
46927
|
capScope: "system",
|
|
46836
46928
|
addonId: null,
|
|
46837
46929
|
access: "create"
|
|
46838
46930
|
},
|
|
46839
|
-
"
|
|
46840
|
-
capName: "training",
|
|
46931
|
+
"trainingProvider.cancelJob": {
|
|
46932
|
+
capName: "training-provider",
|
|
46841
46933
|
capScope: "system",
|
|
46842
46934
|
addonId: null,
|
|
46843
46935
|
access: "create"
|
|
46844
46936
|
},
|
|
46845
|
-
"trainingProvider.
|
|
46937
|
+
"trainingProvider.cleanupJob": {
|
|
46846
46938
|
capName: "training-provider",
|
|
46847
46939
|
capScope: "system",
|
|
46848
46940
|
addonId: null,
|
|
46849
46941
|
access: "create"
|
|
46850
46942
|
},
|
|
46851
|
-
"trainingProvider.
|
|
46943
|
+
"trainingProvider.createEntry": {
|
|
46852
46944
|
capName: "training-provider",
|
|
46853
46945
|
capScope: "system",
|
|
46854
46946
|
addonId: null,
|
|
46855
46947
|
access: "create"
|
|
46856
46948
|
},
|
|
46949
|
+
"trainingProvider.deleteEntry": {
|
|
46950
|
+
capName: "training-provider",
|
|
46951
|
+
capScope: "system",
|
|
46952
|
+
addonId: null,
|
|
46953
|
+
access: "delete"
|
|
46954
|
+
},
|
|
46857
46955
|
"trainingProvider.describe": {
|
|
46858
46956
|
capName: "training-provider",
|
|
46859
46957
|
capScope: "system",
|
|
46860
46958
|
addonId: null,
|
|
46861
46959
|
access: "view"
|
|
46862
46960
|
},
|
|
46961
|
+
"trainingProvider.describeTypes": {
|
|
46962
|
+
capName: "training-provider",
|
|
46963
|
+
capScope: "system",
|
|
46964
|
+
addonId: null,
|
|
46965
|
+
access: "view"
|
|
46966
|
+
},
|
|
46863
46967
|
"trainingProvider.estimateJob": {
|
|
46864
46968
|
capName: "training-provider",
|
|
46865
46969
|
capScope: "system",
|
|
@@ -46872,6 +46976,12 @@ Object.freeze({
|
|
|
46872
46976
|
addonId: null,
|
|
46873
46977
|
access: "view"
|
|
46874
46978
|
},
|
|
46979
|
+
"trainingProvider.listEntries": {
|
|
46980
|
+
capName: "training-provider",
|
|
46981
|
+
capScope: "system",
|
|
46982
|
+
addonId: null,
|
|
46983
|
+
access: "view"
|
|
46984
|
+
},
|
|
46875
46985
|
"trainingProvider.listJobEvents": {
|
|
46876
46986
|
capName: "training-provider",
|
|
46877
46987
|
capScope: "system",
|
|
@@ -50328,6 +50438,11 @@ Object.freeze({
|
|
|
50328
50438
|
form: "array",
|
|
50329
50439
|
optional: false
|
|
50330
50440
|
}],
|
|
50441
|
+
"pipelineAnalytics.listRetrainCorpusPage": [{
|
|
50442
|
+
name: "deviceIds",
|
|
50443
|
+
form: "array",
|
|
50444
|
+
optional: true
|
|
50445
|
+
}],
|
|
50331
50446
|
"pipelineAnalytics.listRetrainStaging": [{
|
|
50332
50447
|
name: "deviceIds",
|
|
50333
50448
|
form: "array",
|
|
@@ -52496,7 +52611,7 @@ var AgentUIAddon = class extends BaseAddon {
|
|
|
52496
52611
|
capability: adminUiCapability,
|
|
52497
52612
|
provider: {
|
|
52498
52613
|
getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
|
|
52499
|
-
getVersion: async () => ({ version: "1.2.
|
|
52614
|
+
getVersion: async () => ({ version: "1.2.204" })
|
|
52500
52615
|
}
|
|
52501
52616
|
}];
|
|
52502
52617
|
}
|