@camstack/addon-agent-ui 1.2.201 → 1.2.203

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 CHANGED
@@ -5378,7 +5378,7 @@ var ZodIssueCode = {
5378
5378
  var ZodFirstPartyTypeKind;
5379
5379
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5380
5380
  //#endregion
5381
- //#region ../types/dist/sleep-r3RWkGVx.mjs
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. A dataset VERSION is a frozen `frameIds`
23890
- * list owned by whoever trains (the training orchestrator), so `frameIds` is
23891
- * the primitive a version export uses; `batchId` re-selects what an earlier
23892
- * export carried (`exportedInBatch`).
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
- /** Exactly the frames of this dataset version (and its completeOnly). An
23900
- * unknown id selects nothing. */
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
- /** An immutable dataset version, without its frame list. */
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
- var CreateRetrainDatasetVersionResultSchema = discriminatedUnion("kind", [object({
24120
- kind: literal("created"),
24121
- version: RetrainDatasetVersionSchema
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
- "empty-name",
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)
@@ -25599,11 +25644,14 @@ var HardwareClassIdSchema = _enum([
25599
25644
  "intel-n-series",
25600
25645
  "apple-m-base",
25601
25646
  "apple-m-pro",
25647
+ "amd-phoenix",
25602
25648
  "unknown"
25603
25649
  ]);
25604
25650
  var AcceleratorKindSchema = _enum([
25605
25651
  "intel-npu",
25606
25652
  "intel-igpu",
25653
+ "amd-igpu",
25654
+ "amd-npu",
25607
25655
  "x86-cpu",
25608
25656
  "arm-cpu",
25609
25657
  "apple-ane",
@@ -27493,6 +27541,8 @@ var AgentPipelineSettingsSchema = object({
27493
27541
  * address is wrong (multi-homed host, NAT, custom interface).
27494
27542
  */
27495
27543
  reachableHost: string().optional(),
27544
+ /** Hub-persisted UI colour (`--color-node-*` theme tokens). */
27545
+ color: NodeColorIdSchema.optional(),
27496
27546
  /**
27497
27547
  * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
27498
27548
  * weight, steps}. Absent / all-disabled ⇒ the node's single default
@@ -28042,8 +28092,9 @@ method(object({
28042
28092
  auth: "admin"
28043
28093
  }), method(object({
28044
28094
  agentNodeId: string(),
28045
- reachableHost: string().nullable()
28046
- }), object({ success: literal(true) }), {
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) }), {
28047
28098
  kind: "mutation",
28048
28099
  auth: "admin"
28049
28100
  }), method(object({
@@ -35489,7 +35540,15 @@ var GpuInfoSchema = object({
35489
35540
  name: string(),
35490
35541
  memoryMB: number().optional()
35491
35542
  });
35492
- var NpuInfoSchema = object({ type: _enum(["apple-ane", "intel-npu"]) });
35543
+ var NpuInfoSchema = object({
35544
+ type: _enum([
35545
+ "apple-ane",
35546
+ "intel-npu",
35547
+ "amd-xdna"
35548
+ ]),
35549
+ name: string().optional(),
35550
+ generation: _enum(["xdna1", "xdna2"]).optional()
35551
+ });
35493
35552
  var CoralInfoSchema = object({
35494
35553
  type: literal("coral-edgetpu"),
35495
35554
  bus: string().optional()
@@ -39251,9 +39310,11 @@ DeviceType.Camera, method(object({
39251
39310
  * once is what makes a second provider (RunPod, a local NVIDIA node) a new
39252
39311
  * manifest entry and nothing else.
39253
39312
  *
39254
- * Collection, routed by the `addonId` in every single-row input (the `llm` /
39255
- * `notification-output` posture); `describe` concat-fans across providers.
39256
- * Every method is `admin`: these spend money.
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.
39257
39318
  *
39258
39319
  * Every cloud object a provider creates is tagged with the orchestrator's
39259
39320
  * `jobKey`, so a retried submit finds the job it already started instead of
@@ -39277,8 +39338,8 @@ var TrainingRegionOptionSchema = object({
39277
39338
  priceMultiplier: number().positive()
39278
39339
  });
39279
39340
  /**
39280
- * The provider's per-account settings, as the orchestrator reads them. They
39281
- * live in the PROVIDER addon's settings (operator decision 2026-10-08: they
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
39282
39343
  * depend on the user's account), never hard-coded in the orchestrator.
39283
39344
  */
39284
39345
  var TrainingProviderDefaultsSchema = object({
@@ -39289,9 +39350,32 @@ var TrainingProviderDefaultsSchema = object({
39289
39350
  /** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
39290
39351
  failedDatasetGraceHours: number().nonnegative()
39291
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
+ });
39292
39371
  var TrainingProviderDescriptorSchema = object({
39293
39372
  addonId: string(),
39294
- /** `modal`, `runpod`, `fake`, … */
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. */
39295
39379
  kind: string(),
39296
39380
  label: string(),
39297
39381
  gpuTypes: array(TrainingGpuOptionSchema).readonly(),
@@ -39355,20 +39439,30 @@ var TrainerSourceRefSchema = object({
39355
39439
  /** A commit sha (never a branch) — the job must be reproducible. */
39356
39440
  revision: string().regex(/^[0-9a-f]{7,64}$/)
39357
39441
  });
39442
+ /** Cloud job identity — route with the owning addon's `addonId` selector. */
39358
39443
  var JobRef = {
39359
- addonId: string(),
39444
+ entryId: string().min(1),
39360
39445
  jobKey: string().uuid()
39361
39446
  };
39362
39447
  var TrainingLogLineSchema = object({
39363
39448
  ts: number(),
39364
39449
  text: string()
39365
39450
  });
39366
- method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }), method(object({ addonId: string() }), TrainingCredentialCheckSchema, {
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, {
39367
39461
  kind: "mutation",
39368
39462
  auth: "admin",
39369
39463
  timeoutMs: 3e4
39370
39464
  }), method(object({
39371
- addonId: string(),
39465
+ entryId: string().min(1),
39372
39466
  gpuType: string(),
39373
39467
  region: string(),
39374
39468
  datasetBytes: number().int().nonnegative(),
@@ -39434,7 +39528,7 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
39434
39528
  kind: "mutation",
39435
39529
  auth: "admin",
39436
39530
  timeoutMs: 5 * 6e4
39437
- }), method(object({ addonId: string() }), array(ProviderJobStatusSchema).readonly(), {
39531
+ }), method(object({ entryId: string().min(1).optional() }), array(ProviderJobStatusSchema).readonly(), {
39438
39532
  auth: "admin",
39439
39533
  timeoutMs: 2 * 6e4
39440
39534
  });
@@ -39444,20 +39538,31 @@ method(object({}), array(TrainingProviderDescriptorSchema).readonly(), { auth: "
39444
39538
  *
39445
39539
  * It owns what every provider must agree on, written once:
39446
39540
  *
39447
- * - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
39448
- * live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
39449
- * the export plan) and reaches this store through the five row methods
39450
- * below, so the Retrain page and the export did not change.
39451
39541
  * - **Jobs.** A persisted state machine, a reconcile loop against the
39452
39542
  * provider, a cost guard, a daily orphan sweep and the retention rules.
39453
39543
  * - **The return flow.** Verified artefacts → Model Studio
39454
39544
  * (`custom-model-registry.importModelBundle`) → canary on cameras →
39455
39545
  * rollback. Nothing is ever registered automatically.
39456
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
+ *
39457
39551
  * Every method is `admin`.
39458
39552
  */
39459
- /** A version WITH its frame list — what the export and a job read. */
39460
- var TrainingDatasetVersionRowSchema = RetrainDatasetVersionSchema.omit({ frameCount: true }).extend({ frameIds: array(string()).max(2e4).readonly() });
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
+ });
39461
39566
  /** A base model a detector job can fine-tune, and the baseline it is judged against. */
39462
39567
  var TrainingBaseModelSchema = object({
39463
39568
  modelId: string(),
@@ -39475,9 +39580,13 @@ var TrainingPresetSchema = _enum([
39475
39580
  "thorough"
39476
39581
  ]);
39477
39582
  var TrainingJobRequestSchema = object({
39478
- datasetVersionId: string().min(1),
39479
- /** The `training-provider` addon that runs it. */
39480
- addonId: string().min(1),
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),
39481
39590
  gpuType: string().min(1),
39482
39591
  region: string(),
39483
39592
  baseModelId: string().min(1),
@@ -39536,6 +39645,7 @@ var TrainingJobPlanSchema = object({
39536
39645
  * result lives after the operator acted on it.
39537
39646
  */
39538
39647
  var TrainingJobStateSchema = _enum([
39648
+ "queued",
39539
39649
  "uploading",
39540
39650
  "submitted",
39541
39651
  "starting",
@@ -39589,6 +39699,11 @@ var TrainingJobSchema = object({
39589
39699
  createdAt: number(),
39590
39700
  updatedAt: number(),
39591
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),
39592
39707
  stage: TrainingStageSchema.nullable(),
39593
39708
  failure: object({
39594
39709
  reason: TrainingFailureReasonSchema,
@@ -39600,6 +39715,12 @@ var TrainingJobSchema = object({
39600
39715
  maxRuntimeSec: number().int().positive(),
39601
39716
  trainer: TrainerSourceRefSchema,
39602
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(),
39603
39724
  dataset: object({
39604
39725
  bytes: number().int(),
39605
39726
  sha256: string(),
@@ -39641,13 +39762,7 @@ var TrainingJobSchema = object({
39641
39762
  canary: TrainingCanarySchema.nullable()
39642
39763
  });
39643
39764
  var IdInput = object({ id: string().min(1) });
39644
- method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
39645
- kind: "mutation",
39646
- auth: "admin"
39647
- }), 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() }), {
39648
- kind: "mutation",
39649
- auth: "admin"
39650
- }), method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
39765
+ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" }), method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
39651
39766
  auth: "admin",
39652
39767
  timeoutMs: 6e4
39653
39768
  }), method(TrainingJobRequestSchema.extend({
@@ -39666,6 +39781,24 @@ method(TrainingDatasetVersionRowSchema, object({ stored: boolean() }), {
39666
39781
  kind: "mutation",
39667
39782
  auth: "admin",
39668
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
39669
39802
  }), method(object({}), array(TrainingJobSchema).readonly(), { auth: "admin" }), method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }), method(IdInput, TrainingJobSchema, {
39670
39803
  kind: "mutation",
39671
39804
  auth: "admin",
@@ -43909,12 +44042,6 @@ Object.freeze({
43909
44042
  addonId: null,
43910
44043
  access: "create"
43911
44044
  },
43912
- "pipelineAnalytics.createRetrainDatasetVersion": {
43913
- capName: "pipeline-analytics",
43914
- capScope: "device",
43915
- addonId: null,
43916
- access: "create"
43917
- },
43918
44045
  "pipelineAnalytics.deleteDeviceEvents": {
43919
44046
  capName: "pipeline-analytics",
43920
44047
  capScope: "device",
@@ -43927,12 +44054,6 @@ Object.freeze({
43927
44054
  addonId: null,
43928
44055
  access: "delete"
43929
44056
  },
43930
- "pipelineAnalytics.deleteRetrainDatasetVersion": {
43931
- capName: "pipeline-analytics",
43932
- capScope: "device",
43933
- addonId: null,
43934
- access: "delete"
43935
- },
43936
44057
  "pipelineAnalytics.deleteTracks": {
43937
44058
  capName: "pipeline-analytics",
43938
44059
  capScope: "device",
@@ -44035,6 +44156,12 @@ Object.freeze({
44035
44156
  addonId: null,
44036
44157
  access: "view"
44037
44158
  },
44159
+ "pipelineAnalytics.getRetrainCorpusKpi": {
44160
+ capName: "pipeline-analytics",
44161
+ capScope: "device",
44162
+ addonId: null,
44163
+ access: "view"
44164
+ },
44038
44165
  "pipelineAnalytics.getRetrainExportUrl": {
44039
44166
  capName: "pipeline-analytics",
44040
44167
  capScope: "device",
@@ -44155,7 +44282,7 @@ Object.freeze({
44155
44282
  addonId: null,
44156
44283
  access: "view"
44157
44284
  },
44158
- "pipelineAnalytics.listRetrainDatasetVersions": {
44285
+ "pipelineAnalytics.listRetrainCorpusPage": {
44159
44286
  capName: "pipeline-analytics",
44160
44287
  capScope: "device",
44161
44288
  addonId: null,
@@ -44209,12 +44336,6 @@ Object.freeze({
44209
44336
  addonId: null,
44210
44337
  access: "create"
44211
44338
  },
44212
- "pipelineAnalytics.previewRetrainDataset": {
44213
- capName: "pipeline-analytics",
44214
- capScope: "device",
44215
- addonId: null,
44216
- access: "view"
44217
- },
44218
44339
  "pipelineAnalytics.proposeRetrainAnnotations": {
44219
44340
  capName: "pipeline-analytics",
44220
44341
  capScope: "device",
@@ -44293,6 +44414,12 @@ Object.freeze({
44293
44414
  addonId: null,
44294
44415
  access: "create"
44295
44416
  },
44417
+ "pipelineAnalytics.resolveRetrainTrainingCorpus": {
44418
+ capName: "pipeline-analytics",
44419
+ capScope: "device",
44420
+ addonId: null,
44421
+ access: "view"
44422
+ },
44296
44423
  "pipelineAnalytics.restageRetrainTrack": {
44297
44424
  capName: "pipeline-analytics",
44298
44425
  capScope: "device",
@@ -44353,12 +44480,6 @@ Object.freeze({
44353
44480
  addonId: null,
44354
44481
  access: "create"
44355
44482
  },
44356
- "pipelineAnalytics.verifyRetrainDatasetVersion": {
44357
- capName: "pipeline-analytics",
44358
- capScope: "device",
44359
- addonId: null,
44360
- access: "view"
44361
- },
44362
44483
  "pipelineAnalytics.wipeAllAnalytics": {
44363
44484
  capName: "pipeline-analytics",
44364
44485
  capScope: "device",
@@ -46753,18 +46874,6 @@ Object.freeze({
46753
46874
  addonId: null,
46754
46875
  access: "create"
46755
46876
  },
46756
- "training.findDatasetVersionIdByName": {
46757
- capName: "training",
46758
- capScope: "system",
46759
- addonId: null,
46760
- access: "view"
46761
- },
46762
- "training.getDatasetVersion": {
46763
- capName: "training",
46764
- capScope: "system",
46765
- addonId: null,
46766
- access: "view"
46767
- },
46768
46877
  "training.getJob": {
46769
46878
  capName: "training",
46770
46879
  capScope: "system",
@@ -46783,12 +46892,6 @@ Object.freeze({
46783
46892
  addonId: null,
46784
46893
  access: "view"
46785
46894
  },
46786
- "training.listDatasetVersions": {
46787
- capName: "training",
46788
- capScope: "system",
46789
- addonId: null,
46790
- access: "view"
46791
- },
46792
46895
  "training.listJobs": {
46793
46896
  capName: "training",
46794
46897
  capScope: "system",
@@ -46801,54 +46904,66 @@ Object.freeze({
46801
46904
  addonId: null,
46802
46905
  access: "view"
46803
46906
  },
46804
- "training.putDatasetVersion": {
46907
+ "training.registerResult": {
46805
46908
  capName: "training",
46806
46909
  capScope: "system",
46807
46910
  addonId: null,
46808
46911
  access: "create"
46809
46912
  },
46810
- "training.registerResult": {
46913
+ "training.rollbackCanary": {
46811
46914
  capName: "training",
46812
46915
  capScope: "system",
46813
46916
  addonId: null,
46814
46917
  access: "create"
46815
46918
  },
46816
- "training.removeDatasetVersion": {
46919
+ "training.startJob": {
46817
46920
  capName: "training",
46818
46921
  capScope: "system",
46819
46922
  addonId: null,
46820
- access: "delete"
46923
+ access: "create"
46821
46924
  },
46822
- "training.rollbackCanary": {
46925
+ "training.startJobBatch": {
46823
46926
  capName: "training",
46824
46927
  capScope: "system",
46825
46928
  addonId: null,
46826
46929
  access: "create"
46827
46930
  },
46828
- "training.startJob": {
46829
- capName: "training",
46931
+ "trainingProvider.cancelJob": {
46932
+ capName: "training-provider",
46830
46933
  capScope: "system",
46831
46934
  addonId: null,
46832
46935
  access: "create"
46833
46936
  },
46834
- "trainingProvider.cancelJob": {
46937
+ "trainingProvider.cleanupJob": {
46835
46938
  capName: "training-provider",
46836
46939
  capScope: "system",
46837
46940
  addonId: null,
46838
46941
  access: "create"
46839
46942
  },
46840
- "trainingProvider.cleanupJob": {
46943
+ "trainingProvider.createEntry": {
46841
46944
  capName: "training-provider",
46842
46945
  capScope: "system",
46843
46946
  addonId: null,
46844
46947
  access: "create"
46845
46948
  },
46949
+ "trainingProvider.deleteEntry": {
46950
+ capName: "training-provider",
46951
+ capScope: "system",
46952
+ addonId: null,
46953
+ access: "delete"
46954
+ },
46846
46955
  "trainingProvider.describe": {
46847
46956
  capName: "training-provider",
46848
46957
  capScope: "system",
46849
46958
  addonId: null,
46850
46959
  access: "view"
46851
46960
  },
46961
+ "trainingProvider.describeTypes": {
46962
+ capName: "training-provider",
46963
+ capScope: "system",
46964
+ addonId: null,
46965
+ access: "view"
46966
+ },
46852
46967
  "trainingProvider.estimateJob": {
46853
46968
  capName: "training-provider",
46854
46969
  capScope: "system",
@@ -46861,6 +46976,12 @@ Object.freeze({
46861
46976
  addonId: null,
46862
46977
  access: "view"
46863
46978
  },
46979
+ "trainingProvider.listEntries": {
46980
+ capName: "training-provider",
46981
+ capScope: "system",
46982
+ addonId: null,
46983
+ access: "view"
46984
+ },
46864
46985
  "trainingProvider.listJobEvents": {
46865
46986
  capName: "training-provider",
46866
46987
  capScope: "system",
@@ -50317,6 +50438,11 @@ Object.freeze({
50317
50438
  form: "array",
50318
50439
  optional: false
50319
50440
  }],
50441
+ "pipelineAnalytics.listRetrainCorpusPage": [{
50442
+ name: "deviceIds",
50443
+ form: "array",
50444
+ optional: true
50445
+ }],
50320
50446
  "pipelineAnalytics.listRetrainStaging": [{
50321
50447
  name: "deviceIds",
50322
50448
  form: "array",
@@ -52485,7 +52611,7 @@ var AgentUIAddon = class extends BaseAddon {
52485
52611
  capability: adminUiCapability,
52486
52612
  provider: {
52487
52613
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
52488
- getVersion: async () => ({ version: "1.2.201" })
52614
+ getVersion: async () => ({ version: "1.2.203" })
52489
52615
  }
52490
52616
  }];
52491
52617
  }