@camstack/types 1.2.338 → 1.2.340

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/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DiQYrfm9.js");
2
+ const require_sleep = require("./sleep-CO06DNd_.js");
3
3
  const require_event_category = require("./event-category-CHduMGvg.js");
4
4
  const require_composition = require("./composition-BLWAivB2.js");
5
+ const require_node_color = require("./node-color.js");
5
6
  const require_err_msg = require("./err-msg-Dx2Kor0g.js");
6
7
  const require_enums = require("./enums.js");
7
8
  let zod = require("zod");
@@ -25652,24 +25653,75 @@ var RetrainFrameListSchema = zod.z.object({
25652
25653
  /** What the page pre-selects — the native key frame when one survives. */
25653
25654
  autoPickMediaId: zod.z.number().int().optional()
25654
25655
  });
25656
+ /** Exclusive partition of a corpus copy's annotation progress (design §4.2). */
25657
+ var RetrainFrameWorkStateSchema = zod.z.enum([
25658
+ "unannotated",
25659
+ "annotated",
25660
+ "complete"
25661
+ ]);
25662
+ /**
25663
+ * Filters for paginated corpus list, KPI, and matching export (design §4.4).
25664
+ * Every narrowing field is ANDed; omitted fields impose no constraint.
25665
+ */
25666
+ var RetrainCorpusFilterSchema = zod.z.object({
25667
+ workState: RetrainFrameWorkStateSchema.optional(),
25668
+ deviceIds: zod.z.array(zod.z.number()).max(500).optional(),
25669
+ /** When set, only frames in this named collection. */
25670
+ collectionId: zod.z.string().optional(),
25671
+ /** Frames that carry at least one saved annotation in one of these classes. */
25672
+ classes: zod.z.array(RetrainMacroClassSchema).optional(),
25673
+ page: zod.z.number().int().positive().default(1),
25674
+ pageSize: zod.z.number().int().positive().max(100).default(50)
25675
+ });
25676
+ /**
25677
+ * One row on the Frames corpus grid: a wire frame plus its exclusive work
25678
+ * state (`workStateOf`), so the UI can badge To do / In progress / Complete
25679
+ * when the filter is All (annotation counts are not otherwise on the wire).
25680
+ */
25681
+ var RetrainCorpusPageFrameSchema = RetrainFrameSchema.extend({ workState: RetrainFrameWorkStateSchema });
25682
+ var RetrainCorpusPageSchema = zod.z.object({
25683
+ frames: zod.z.array(RetrainCorpusPageFrameSchema).readonly(),
25684
+ total: zod.z.number().int().nonnegative(),
25685
+ page: zod.z.number().int().positive(),
25686
+ pageSize: zod.z.number().int().positive()
25687
+ });
25688
+ var RetrainCorpusKpiCameraRowSchema = zod.z.object({
25689
+ deviceId: zod.z.number(),
25690
+ unannotated: zod.z.number().int().nonnegative(),
25691
+ annotated: zod.z.number().int().nonnegative(),
25692
+ complete: zod.z.number().int().nonnegative(),
25693
+ /** This camera's `complete` count divided by corpus `total`, in `[0,1]`.
25694
+ * `null` when the corpus is empty (no ratio). */
25695
+ pctOfCorpus: zod.z.number().min(0).max(1).nullable()
25696
+ });
25697
+ var RetrainCorpusKpiSchema = zod.z.object({
25698
+ total: zod.z.number().int().nonnegative(),
25699
+ unannotated: zod.z.number().int().nonnegative(),
25700
+ annotated: zod.z.number().int().nonnegative(),
25701
+ complete: zod.z.number().int().nonnegative(),
25702
+ cameras: zod.z.array(RetrainCorpusKpiCameraRowSchema).readonly()
25703
+ });
25655
25704
  /**
25656
25705
  * Which frames an annotated export carries. Every field narrows; an empty
25657
- * filter is every annotated copy. A dataset VERSION is a frozen `frameIds`
25658
- * list owned by whoever trains (the training orchestrator), so `frameIds` is
25659
- * the primitive a version export uses; `batchId` re-selects what an earlier
25660
- * export carried (`exportedInBatch`).
25706
+ * filter is every annotated copy. `frameIds` is the primitive a job or
25707
+ * download uses; `batchId` re-selects what an earlier export carried
25708
+ * (`exportedInBatch`). Frozen dataset versions were removed — live selection
25709
+ * resolves to `frameIds` at plan/start.
25661
25710
  */
25662
25711
  var RetrainExportFilterSchema = zod.z.object({
25663
25712
  deviceIds: zod.z.array(zod.z.number()).optional(),
25664
25713
  frameIds: zod.z.array(zod.z.string()).max(2e4).optional(),
25665
25714
  /** Only frames in at least one of these named collections. */
25666
25715
  collectionIds: zod.z.array(zod.z.string()).max(200).optional(),
25667
- /** Exactly the frames of this dataset version (and its completeOnly). An
25668
- * unknown id selects nothing. */
25669
- datasetVersionId: zod.z.string().optional(),
25716
+ /** Single collection (Frames filter bar). ANDed with `collectionIds` when both set. */
25717
+ collectionId: zod.z.string().optional(),
25670
25718
  batchId: zod.z.string().optional(),
25671
25719
  /** Only frames the operator marked complete (all subjects boxed). */
25672
- completeOnly: zod.z.boolean().optional()
25720
+ completeOnly: zod.z.boolean().optional(),
25721
+ /** Exclusive work-state partition (`workStateOf`); same as the corpus list. */
25722
+ workState: RetrainFrameWorkStateSchema.optional(),
25723
+ /** Frames with at least one saved annotation in one of these classes. */
25724
+ classes: zod.z.array(RetrainMacroClassSchema).optional()
25673
25725
  });
25674
25726
  /**
25675
25727
  * `frames`: the full frame copies, boxes in `annotations.json`.
@@ -25869,7 +25921,10 @@ var RetrainDatasetStatsSchema = zod.z.object({
25869
25921
  completeFrames: zod.z.number().int()
25870
25922
  })).readonly()
25871
25923
  });
25872
- /** An immutable dataset version, without its frame list. */
25924
+ /**
25925
+ * Shape of a historically frozen dataset version (stats + selection). Kept for
25926
+ * typed stats/selection helpers and any leftover rows; no public freeze API.
25927
+ */
25873
25928
  var RetrainDatasetVersionSchema = zod.z.object({
25874
25929
  id: zod.z.string(),
25875
25930
  name: zod.z.string(),
@@ -25878,22 +25933,33 @@ var RetrainDatasetVersionSchema = zod.z.object({
25878
25933
  layout: RetrainExportLayoutSchema,
25879
25934
  completeOnly: zod.z.boolean(),
25880
25935
  frameCount: zod.z.number().int(),
25881
- /** sha256 of what the frames taught when the version was frozen. */
25882
25936
  annotationHash: zod.z.string(),
25883
- /** The export manifest schema the version was cut under. */
25884
25937
  manifestSchema: zod.z.string(),
25885
25938
  stats: RetrainDatasetStatsSchema
25886
25939
  });
25887
- var CreateRetrainDatasetVersionResultSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
25888
- kind: zod.z.literal("created"),
25889
- version: RetrainDatasetVersionSchema
25940
+ /**
25941
+ * Live training corpus criteria — same shape as `TrainingCorpusSelection` on
25942
+ * the training cap. Resolved here so plan/start and the annotated export share
25943
+ * one definition of "the frames" (`buildRetrainExportPlan`).
25944
+ */
25945
+ var RetrainTrainingCorpusSelectionSchema = zod.z.object({
25946
+ collectionIds: zod.z.array(zod.z.string()).min(1),
25947
+ workState: zod.z.enum([
25948
+ "complete",
25949
+ "annotated_or_complete",
25950
+ "any_annotated"
25951
+ ]).default("complete")
25952
+ });
25953
+ var RetrainTrainingCorpusResolveResultSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
25954
+ kind: zod.z.literal("resolved"),
25955
+ frameIds: zod.z.array(zod.z.string()).max(2e4).readonly(),
25956
+ stats: RetrainDatasetStatsSchema,
25957
+ annotationHash: zod.z.string(),
25958
+ layout: RetrainExportLayoutSchema
25890
25959
  }), zod.z.object({
25891
25960
  kind: zod.z.literal("refused"),
25892
- reason: zod.z.enum([
25893
- "empty-name",
25894
- "duplicate-name",
25895
- "no-frames"
25896
- ])
25961
+ reason: zod.z.enum(["unknown-collection", "no-frames"]),
25962
+ detail: zod.z.string()
25897
25963
  })]);
25898
25964
  /** The outcome of a lifecycle move owned by the retrain page. */
25899
25965
  var RetrainTransitionResultSchema = zod.z.object({
@@ -27088,6 +27154,26 @@ var pipelineAnalyticsCapability = {
27088
27154
  auth: "admin"
27089
27155
  }),
27090
27156
  /**
27157
+ * Paginated corpus copies for the Frames grid — index reads only.
27158
+ *
27159
+ * Filters AND (`workState`, cameras, one collection, annotated classes).
27160
+ * An answered empty match is `{ frames: [], total: 0, … }` (D315), never a
27161
+ * pending masquerade. Classification uses `workStateOf` (annotation count
27162
+ * wins over a stray `complete` flag).
27163
+ */
27164
+ listRetrainCorpusPage: require_sleep.method(RetrainCorpusFilterSchema, RetrainCorpusPageSchema, {
27165
+ kind: "query",
27166
+ auth: "admin"
27167
+ }),
27168
+ /**
27169
+ * Global + per-camera corpus KPI. Unfiltered totals; `%` on a camera row is
27170
+ * `complete(camera) / corpus total`, or `null` when the corpus is empty.
27171
+ */
27172
+ getRetrainCorpusKpi: require_sleep.method(zod.z.object({}), RetrainCorpusKpiSchema, {
27173
+ kind: "query",
27174
+ auth: "admin"
27175
+ }),
27176
+ /**
27091
27177
  * What a track can contribute, and what it already has.
27092
27178
  *
27093
27179
  * `candidates` are the track's whole, unannotated frames — index rows only,
@@ -27314,53 +27400,6 @@ var pipelineAnalyticsCapability = {
27314
27400
  auth: "admin",
27315
27401
  timeoutMs: 12e4
27316
27402
  }),
27317
- /** The counts a selection would freeze — class × camera × day/night,
27318
- * completeness — without freezing anything. Index reads only. */
27319
- previewRetrainDataset: require_sleep.method(zod.z.object({
27320
- selection: RetrainDatasetSelectionSchema,
27321
- completeOnly: zod.z.boolean().optional()
27322
- }), RetrainDatasetStatsSchema, {
27323
- kind: "query",
27324
- auth: "admin"
27325
- }),
27326
- /**
27327
- * Freeze a dataset version: the frames the selection yields (the same plan
27328
- * the annotated export builds), the hash of what they teach, the export
27329
- * parameters and the counts. Immutable — a different selection is a new
27330
- * version. Export it with `getRetrainExportUrl({ datasetVersionId })`.
27331
- */
27332
- createRetrainDatasetVersion: require_sleep.method(zod.z.object({
27333
- name: zod.z.string().max(120),
27334
- selection: RetrainDatasetSelectionSchema,
27335
- layout: RetrainExportLayoutSchema,
27336
- completeOnly: zod.z.boolean()
27337
- }), CreateRetrainDatasetVersionResultSchema, {
27338
- kind: "mutation",
27339
- auth: "admin",
27340
- timeoutMs: 12e4
27341
- }),
27342
- /** Every dataset version, newest first. */
27343
- listRetrainDatasetVersions: require_sleep.method(zod.z.object({}), zod.z.array(RetrainDatasetVersionSchema).readonly(), {
27344
- kind: "query",
27345
- auth: "admin"
27346
- }),
27347
- /** Delete a version. Its frames stay in the dataset. */
27348
- deleteRetrainDatasetVersion: require_sleep.method(zod.z.object({ id: zod.z.string() }), zod.z.object({ deleted: zod.z.boolean() }), {
27349
- kind: "mutation",
27350
- auth: "admin"
27351
- }),
27352
- /** Does the corpus still teach what the version froze? `missingFrames`
27353
- * counts frames that left the dataset (or lost every box and tick). */
27354
- verifyRetrainDatasetVersion: require_sleep.method(zod.z.object({ id: zod.z.string() }), zod.z.object({
27355
- found: zod.z.boolean(),
27356
- annotationHash: zod.z.string(),
27357
- matches: zod.z.boolean(),
27358
- missingFrames: zod.z.number().int()
27359
- }), {
27360
- kind: "query",
27361
- auth: "admin",
27362
- timeoutMs: 12e4
27363
- }),
27364
27403
  /** The enabled, vision-capable LLM profiles, each saying whether a frame
27365
27404
  * sent to it leaves the house. */
27366
27405
  listRetrainAssistProfiles: require_sleep.method(zod.z.object({}), zod.z.array(RetrainAssistProfileSchema).readonly(), {
@@ -27407,6 +27446,16 @@ var pipelineAnalyticsCapability = {
27407
27446
  kind: "query",
27408
27447
  auth: "admin"
27409
27448
  }),
27449
+ /**
27450
+ * Resolve a live training corpus selection to frame ids + stats (index
27451
+ * reads only). Same plan the annotated export builds — training plan/start
27452
+ * calls this instead of a frozen dataset version.
27453
+ */
27454
+ resolveRetrainTrainingCorpus: require_sleep.method(RetrainTrainingCorpusSelectionSchema, RetrainTrainingCorpusResolveResultSchema, {
27455
+ kind: "query",
27456
+ auth: "admin",
27457
+ timeoutMs: 6e4
27458
+ }),
27410
27459
  renameRetrainCollection: require_sleep.method(zod.z.object({
27411
27460
  id: zod.z.string(),
27412
27461
  name: zod.z.string().max(120)
@@ -30754,6 +30803,8 @@ var AgentPipelineSettingsSchema = zod.z.object({
30754
30803
  * address is wrong (multi-homed host, NAT, custom interface).
30755
30804
  */
30756
30805
  reachableHost: zod.z.string().optional(),
30806
+ /** Hub-persisted UI colour (`--color-node-*` theme tokens). */
30807
+ color: require_node_color.NodeColorIdSchema.optional(),
30757
30808
  /**
30758
30809
  * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
30759
30810
  * weight, steps}. Absent / all-disabled ⇒ the node's single default
@@ -31526,8 +31577,9 @@ var pipelineOrchestratorCapability = {
31526
31577
  */
31527
31578
  setAgentReachableHost: require_sleep.method(zod.z.object({
31528
31579
  agentNodeId: zod.z.string(),
31529
- reachableHost: zod.z.string().nullable()
31530
- }), zod.z.object({ success: zod.z.literal(true) }), {
31580
+ reachableHost: zod.z.string().nullable().optional(),
31581
+ color: require_node_color.NodeColorIdSchema.nullable().optional()
31582
+ }).refine((v) => v.reachableHost !== void 0 || v.color !== void 0, { message: "reachableHost or color required" }), zod.z.object({ success: zod.z.literal(true) }), {
31531
31583
  kind: "mutation",
31532
31584
  auth: "admin"
31533
31585
  }),
@@ -49860,9 +49912,11 @@ var zoneRulesCapability = {
49860
49912
  * once is what makes a second provider (RunPod, a local NVIDIA node) a new
49861
49913
  * manifest entry and nothing else.
49862
49914
  *
49863
- * Collection, routed by the `addonId` in every single-row input (the `llm` /
49864
- * `notification-output` posture); `describe` concat-fans across providers.
49865
- * Every method is `admin`: these spend money.
49915
+ * Collection of provider **types** (addons). Each addon owns zero or more
49916
+ * **entries** (credentials + defaults). Concat-fans: `describe`,
49917
+ * `describeTypes`, `listEntries`, `listJobs`. Single-row work is keyed by
49918
+ * `entryId`; callers also pass the owning `addonId` as the collection
49919
+ * selector (broker posture). Every method is `admin`: these spend money.
49866
49920
  *
49867
49921
  * Every cloud object a provider creates is tagged with the orchestrator's
49868
49922
  * `jobKey`, so a retried submit finds the job it already started instead of
@@ -49886,8 +49940,8 @@ var TrainingRegionOptionSchema = zod.z.object({
49886
49940
  priceMultiplier: zod.z.number().positive()
49887
49941
  });
49888
49942
  /**
49889
- * The provider's per-account settings, as the orchestrator reads them. They
49890
- * live in the PROVIDER addon's settings (operator decision 2026-10-08: they
49943
+ * The provider's per-entry settings, as the orchestrator reads them. They
49944
+ * live on the PROVIDER addon's entry (operator decision 2026-10-08: they
49891
49945
  * depend on the user's account), never hard-coded in the orchestrator.
49892
49946
  */
49893
49947
  var TrainingProviderDefaultsSchema = zod.z.object({
@@ -49898,9 +49952,32 @@ var TrainingProviderDefaultsSchema = zod.z.object({
49898
49952
  /** Hours a FAILED job's cloud dataset is kept for debugging; 0 = delete at once. */
49899
49953
  failedDatasetGraceHours: zod.z.number().nonnegative()
49900
49954
  });
49955
+ /** One creatable provider type, for the Add-entry dialog. */
49956
+ var TrainingProviderTypeSchema = zod.z.object({
49957
+ typeId: zod.z.string(),
49958
+ label: zod.z.string(),
49959
+ /** Path under the addon package (e.g. `assets/training-modal/icon.svg`). */
49960
+ iconAsset: zod.z.string(),
49961
+ /** Owning `training-provider` addon — collection selector for createEntry. */
49962
+ addonId: zod.z.string()
49963
+ });
49964
+ /** One configured account / workspace under a provider type. */
49965
+ var TrainingProviderEntrySchema = zod.z.object({
49966
+ entryId: zod.z.string(),
49967
+ typeId: zod.z.string(),
49968
+ name: zod.z.string(),
49969
+ addonId: zod.z.string(),
49970
+ /** Credentials are present — never the values. */
49971
+ configured: zod.z.boolean()
49972
+ });
49901
49973
  var TrainingProviderDescriptorSchema = zod.z.object({
49902
49974
  addonId: zod.z.string(),
49903
- /** `modal`, `runpod`, `fake`, … */
49975
+ entryId: zod.z.string(),
49976
+ typeId: zod.z.string(),
49977
+ /** Operator-chosen entry name. */
49978
+ name: zod.z.string(),
49979
+ iconAsset: zod.z.string(),
49980
+ /** `modal`, `runpod`, `fake`, … — same as typeId for current providers. */
49904
49981
  kind: zod.z.string(),
49905
49982
  label: zod.z.string(),
49906
49983
  gpuTypes: zod.z.array(TrainingGpuOptionSchema).readonly(),
@@ -49964,8 +50041,9 @@ var TrainerSourceRefSchema = zod.z.object({
49964
50041
  /** A commit sha (never a branch) — the job must be reproducible. */
49965
50042
  revision: zod.z.string().regex(/^[0-9a-f]{7,64}$/)
49966
50043
  });
50044
+ /** Cloud job identity — route with the owning addon's `addonId` selector. */
49967
50045
  var JobRef = {
49968
- addonId: zod.z.string(),
50046
+ entryId: zod.z.string().min(1),
49969
50047
  jobKey: zod.z.string().uuid()
49970
50048
  };
49971
50049
  var TrainingLogLineSchema = zod.z.object({
@@ -49978,17 +50056,37 @@ var trainingProviderCapability = {
49978
50056
  mode: "collection",
49979
50057
  internal: true,
49980
50058
  methods: {
49981
- /** Every provider's offer and settings. Concat-fans across providers. */
50059
+ /** Every entry's offer and settings. Concat-fans across providers. */
49982
50060
  describe: require_sleep.method(zod.z.object({}), zod.z.array(TrainingProviderDescriptorSchema).readonly(), { auth: "admin" }),
49983
- /** Call the provider with the stored credentials. Never returns them. */
49984
- validateCredentials: require_sleep.method(zod.z.object({ addonId: zod.z.string() }), TrainingCredentialCheckSchema, {
50061
+ /** Creatable types for the Add-entry dialog. Concat-fans. */
50062
+ describeTypes: require_sleep.method(zod.z.object({}), zod.z.array(TrainingProviderTypeSchema).readonly(), { auth: "admin" }),
50063
+ /** Configured entries (pills). Concat-fans. */
50064
+ listEntries: require_sleep.method(zod.z.object({}), zod.z.array(TrainingProviderEntrySchema).readonly(), { auth: "admin" }),
50065
+ /**
50066
+ * Create an entry under this provider type. Pin with `{ addonId }` of the
50067
+ * type's owning addon (from describeTypes).
50068
+ */
50069
+ createEntry: require_sleep.method(zod.z.object({
50070
+ typeId: zod.z.string().min(1),
50071
+ name: zod.z.string().min(1)
50072
+ }), zod.z.object({ entryId: zod.z.string() }), {
50073
+ kind: "mutation",
50074
+ auth: "admin"
50075
+ }),
50076
+ /** Delete an entry. Pin with the owning `{ addonId }`. */
50077
+ deleteEntry: require_sleep.method(zod.z.object({ entryId: zod.z.string().min(1) }), zod.z.object({ ok: zod.z.literal(true) }), {
50078
+ kind: "mutation",
50079
+ auth: "admin"
50080
+ }),
50081
+ /** Call the provider with the entry's stored credentials. Never returns them. */
50082
+ validateCredentials: require_sleep.method(zod.z.object({ entryId: zod.z.string().min(1) }), TrainingCredentialCheckSchema, {
49985
50083
  kind: "mutation",
49986
50084
  auth: "admin",
49987
50085
  timeoutMs: 3e4
49988
50086
  }),
49989
50087
  /** USD range for a run of `gpuSeconds` on `gpuType` in `region`. */
49990
50088
  estimateJob: require_sleep.method(zod.z.object({
49991
- addonId: zod.z.string(),
50089
+ entryId: zod.z.string().min(1),
49992
50090
  gpuType: zod.z.string(),
49993
50091
  region: zod.z.string(),
49994
50092
  datasetBytes: zod.z.number().int().nonnegative(),
@@ -50084,8 +50182,11 @@ var trainingProviderCapability = {
50084
50182
  auth: "admin",
50085
50183
  timeoutMs: 5 * 6e4
50086
50184
  }),
50087
- /** Every job the provider can still see — the orphan sweep diffs it against our records. */
50088
- listJobs: require_sleep.method(zod.z.object({ addonId: zod.z.string() }), zod.z.array(ProviderJobStatusSchema).readonly(), {
50185
+ /**
50186
+ * Jobs this provider can still see. Optional `entryId` filters; omit to
50187
+ * list every entry (orphan sweep). Pin with `{ addonId }`.
50188
+ */
50189
+ listJobs: require_sleep.method(zod.z.object({ entryId: zod.z.string().min(1).optional() }), zod.z.array(ProviderJobStatusSchema).readonly(), {
50089
50190
  auth: "admin",
50090
50191
  timeoutMs: 2 * 6e4
50091
50192
  })
@@ -50099,20 +50200,31 @@ var trainingProviderCapability = {
50099
50200
  *
50100
50201
  * It owns what every provider must agree on, written once:
50101
50202
  *
50102
- * - **Dataset versions.** Taken over from pipeline-analytics (D796): the rows
50103
- * live here (D808); pipeline-analytics still CUTS a version (it owns the corpus and
50104
- * the export plan) and reaches this store through the five row methods
50105
- * below, so the Retrain page and the export did not change.
50106
50203
  * - **Jobs.** A persisted state machine, a reconcile loop against the
50107
50204
  * provider, a cost guard, a daily orphan sweep and the retention rules.
50108
50205
  * - **The return flow.** Verified artefacts → Model Studio
50109
50206
  * (`custom-model-registry.importModelBundle`) → canary on cameras →
50110
50207
  * rollback. Nothing is ever registered automatically.
50111
50208
  *
50209
+ * Plan/start takes a live {@link TrainingCorpusSelection} (collections +
50210
+ * work-state rule); frame ids are resolved via pipeline-analytics at that
50211
+ * moment and snapshotted on the job. No frozen dataset version.
50212
+ *
50112
50213
  * Every method is `admin`.
50113
50214
  */
50114
- /** A version WITH its frame list — what the export and a job read. */
50115
- var TrainingDatasetVersionRowSchema = RetrainDatasetVersionSchema.omit({ frameCount: true }).extend({ frameIds: zod.z.array(zod.z.string()).max(2e4).readonly() });
50215
+ /**
50216
+ * Live corpus criteria for plan/start (design §5.2). Default is complete-only.
50217
+ * Frame ids are resolved at plan/start — never a frozen version id.
50218
+ */
50219
+ var TrainingCorpusSelectionSchema = zod.z.object({
50220
+ collectionIds: zod.z.array(zod.z.string()).min(1),
50221
+ /** Default complete-only for v1 */
50222
+ workState: zod.z.enum([
50223
+ "complete",
50224
+ "annotated_or_complete",
50225
+ "any_annotated"
50226
+ ]).default("complete")
50227
+ });
50116
50228
  /** A base model a detector job can fine-tune, and the baseline it is judged against. */
50117
50229
  var TrainingBaseModelSchema = zod.z.object({
50118
50230
  modelId: zod.z.string(),
@@ -50130,9 +50242,13 @@ var TrainingPresetSchema = zod.z.enum([
50130
50242
  "thorough"
50131
50243
  ]);
50132
50244
  var TrainingJobRequestSchema = zod.z.object({
50133
- datasetVersionId: zod.z.string().min(1),
50134
- /** The `training-provider` addon that runs it. */
50135
- addonId: zod.z.string().min(1),
50245
+ /** Live collection + work-state criteria; resolved at plan/start. */
50246
+ selection: TrainingCorpusSelectionSchema,
50247
+ /**
50248
+ * The provider **entry** that runs it (credentials + defaults).
50249
+ * Resolve to an owning addon via `training-provider.describe` / `listEntries`.
50250
+ */
50251
+ entryId: zod.z.string().min(1),
50136
50252
  gpuType: zod.z.string().min(1),
50137
50253
  region: zod.z.string(),
50138
50254
  baseModelId: zod.z.string().min(1),
@@ -50191,6 +50307,7 @@ var TrainingJobPlanSchema = zod.z.object({
50191
50307
  * result lives after the operator acted on it.
50192
50308
  */
50193
50309
  var TrainingJobStateSchema = zod.z.enum([
50310
+ "queued",
50194
50311
  "uploading",
50195
50312
  "submitted",
50196
50313
  "starting",
@@ -50244,6 +50361,11 @@ var TrainingJobSchema = zod.z.object({
50244
50361
  createdAt: zod.z.number(),
50245
50362
  updatedAt: zod.z.number(),
50246
50363
  state: TrainingJobStateSchema,
50364
+ /**
50365
+ * Shared by every job enqueued together via `startJobBatch`.
50366
+ * `null` for a lone `startJob`. The engine advances queued siblings by this id.
50367
+ */
50368
+ batchId: zod.z.string().nullable().default(null),
50247
50369
  stage: TrainingStageSchema.nullable(),
50248
50370
  failure: zod.z.object({
50249
50371
  reason: TrainingFailureReasonSchema,
@@ -50255,6 +50377,12 @@ var TrainingJobSchema = zod.z.object({
50255
50377
  maxRuntimeSec: zod.z.number().int().positive(),
50256
50378
  trainer: TrainerSourceRefSchema,
50257
50379
  datasetLayout: RetrainExportLayoutSchema,
50380
+ /** Frame count snapshotted when the job started (audit; equals `frameIds.length`). */
50381
+ frameCount: zod.z.number().int().nonnegative(),
50382
+ /** Resolved frame ids at start — the archive ships exactly these. */
50383
+ frameIds: zod.z.array(zod.z.string()).max(2e4).readonly(),
50384
+ /** Hash of what those frames taught at start (trainer `dataset.annotationHash`). */
50385
+ annotationHash: zod.z.string(),
50258
50386
  dataset: zod.z.object({
50259
50387
  bytes: zod.z.number().int(),
50260
50388
  sha256: zod.z.string(),
@@ -50302,19 +50430,6 @@ var trainingCapability = {
50302
50430
  mode: "singleton",
50303
50431
  mount: { kind: "hub-only" },
50304
50432
  methods: {
50305
- /** Store a version once. `stored: false` = that id already exists (immutable). */
50306
- putDatasetVersion: require_sleep.method(TrainingDatasetVersionRowSchema, zod.z.object({ stored: zod.z.boolean() }), {
50307
- kind: "mutation",
50308
- auth: "admin"
50309
- }),
50310
- getDatasetVersion: require_sleep.method(IdInput, TrainingDatasetVersionRowSchema.nullable(), { auth: "admin" }),
50311
- /** Every version without its frame list, newest first. */
50312
- listDatasetVersions: require_sleep.method(zod.z.object({}), zod.z.array(RetrainDatasetVersionSchema).readonly(), { auth: "admin" }),
50313
- findDatasetVersionIdByName: require_sleep.method(zod.z.object({ name: zod.z.string() }), zod.z.object({ id: zod.z.string().nullable() }), { auth: "admin" }),
50314
- removeDatasetVersion: require_sleep.method(IdInput, zod.z.object({ removed: zod.z.boolean() }), {
50315
- kind: "mutation",
50316
- auth: "admin"
50317
- }),
50318
50433
  listBaseModels: require_sleep.method(zod.z.object({}), zod.z.array(TrainingBaseModelSchema).readonly(), { auth: "admin" }),
50319
50434
  /** Split, estimate, defaults and any named refusal — nothing is started. */
50320
50435
  planJob: require_sleep.method(TrainingJobRequestSchema, TrainingJobPlanSchema, {
@@ -50343,6 +50458,32 @@ var trainingCapability = {
50343
50458
  auth: "admin",
50344
50459
  timeoutMs: 12e4
50345
50460
  }),
50461
+ /**
50462
+ * Enqueue one job per base model (same selection, entry, caps). The first
50463
+ * becomes `uploading`; the rest stay `queued` until the prior job settles.
50464
+ * One ACTIVE job at a time — a parallel `startJob` still gets
50465
+ * `job-already-running`. The same `idempotencyKey` returns the batch it
50466
+ * already started.
50467
+ */
50468
+ startJobBatch: require_sleep.method(TrainingJobRequestSchema.omit({ baseModelId: true }).extend({
50469
+ baseModelIds: zod.z.array(zod.z.string().min(1)).min(1),
50470
+ name: zod.z.string().min(1).max(120),
50471
+ maxCostUsd: zod.z.number().positive(),
50472
+ maxRuntimeSec: zod.z.number().int().positive(),
50473
+ idempotencyKey: zod.z.string().min(8).max(80)
50474
+ }), zod.z.discriminatedUnion("kind", [zod.z.object({
50475
+ kind: zod.z.literal("started"),
50476
+ batchId: zod.z.string(),
50477
+ jobs: zod.z.array(TrainingJobSchema).min(1).readonly()
50478
+ }), zod.z.object({
50479
+ kind: zod.z.literal("refused"),
50480
+ reason: TrainingRefusalReasonSchema,
50481
+ detail: zod.z.string()
50482
+ })]), {
50483
+ kind: "mutation",
50484
+ auth: "admin",
50485
+ timeoutMs: 12e4
50486
+ }),
50346
50487
  listJobs: require_sleep.method(zod.z.object({}), zod.z.array(TrainingJobSchema).readonly(), { auth: "admin" }),
50347
50488
  getJob: require_sleep.method(IdInput, TrainingJobSchema.nullable(), { auth: "admin" }),
50348
50489
  cancelJob: require_sleep.method(IdInput, TrainingJobSchema, {
@@ -58150,12 +58291,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
58150
58291
  addonId: null,
58151
58292
  access: "create"
58152
58293
  },
58153
- "pipelineAnalytics.createRetrainDatasetVersion": {
58154
- capName: "pipeline-analytics",
58155
- capScope: "device",
58156
- addonId: null,
58157
- access: "create"
58158
- },
58159
58294
  "pipelineAnalytics.deleteDeviceEvents": {
58160
58295
  capName: "pipeline-analytics",
58161
58296
  capScope: "device",
@@ -58168,12 +58303,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
58168
58303
  addonId: null,
58169
58304
  access: "delete"
58170
58305
  },
58171
- "pipelineAnalytics.deleteRetrainDatasetVersion": {
58172
- capName: "pipeline-analytics",
58173
- capScope: "device",
58174
- addonId: null,
58175
- access: "delete"
58176
- },
58177
58306
  "pipelineAnalytics.deleteTracks": {
58178
58307
  capName: "pipeline-analytics",
58179
58308
  capScope: "device",
@@ -58276,6 +58405,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
58276
58405
  addonId: null,
58277
58406
  access: "view"
58278
58407
  },
58408
+ "pipelineAnalytics.getRetrainCorpusKpi": {
58409
+ capName: "pipeline-analytics",
58410
+ capScope: "device",
58411
+ addonId: null,
58412
+ access: "view"
58413
+ },
58279
58414
  "pipelineAnalytics.getRetrainExportUrl": {
58280
58415
  capName: "pipeline-analytics",
58281
58416
  capScope: "device",
@@ -58396,7 +58531,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
58396
58531
  addonId: null,
58397
58532
  access: "view"
58398
58533
  },
58399
- "pipelineAnalytics.listRetrainDatasetVersions": {
58534
+ "pipelineAnalytics.listRetrainCorpusPage": {
58400
58535
  capName: "pipeline-analytics",
58401
58536
  capScope: "device",
58402
58537
  addonId: null,
@@ -58450,12 +58585,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
58450
58585
  addonId: null,
58451
58586
  access: "create"
58452
58587
  },
58453
- "pipelineAnalytics.previewRetrainDataset": {
58454
- capName: "pipeline-analytics",
58455
- capScope: "device",
58456
- addonId: null,
58457
- access: "view"
58458
- },
58459
58588
  "pipelineAnalytics.proposeRetrainAnnotations": {
58460
58589
  capName: "pipeline-analytics",
58461
58590
  capScope: "device",
@@ -58534,6 +58663,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
58534
58663
  addonId: null,
58535
58664
  access: "create"
58536
58665
  },
58666
+ "pipelineAnalytics.resolveRetrainTrainingCorpus": {
58667
+ capName: "pipeline-analytics",
58668
+ capScope: "device",
58669
+ addonId: null,
58670
+ access: "view"
58671
+ },
58537
58672
  "pipelineAnalytics.restageRetrainTrack": {
58538
58673
  capName: "pipeline-analytics",
58539
58674
  capScope: "device",
@@ -58594,12 +58729,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
58594
58729
  addonId: null,
58595
58730
  access: "create"
58596
58731
  },
58597
- "pipelineAnalytics.verifyRetrainDatasetVersion": {
58598
- capName: "pipeline-analytics",
58599
- capScope: "device",
58600
- addonId: null,
58601
- access: "view"
58602
- },
58603
58732
  "pipelineAnalytics.wipeAllAnalytics": {
58604
58733
  capName: "pipeline-analytics",
58605
58734
  capScope: "device",
@@ -60994,18 +61123,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
60994
61123
  addonId: null,
60995
61124
  access: "create"
60996
61125
  },
60997
- "training.findDatasetVersionIdByName": {
60998
- capName: "training",
60999
- capScope: "system",
61000
- addonId: null,
61001
- access: "view"
61002
- },
61003
- "training.getDatasetVersion": {
61004
- capName: "training",
61005
- capScope: "system",
61006
- addonId: null,
61007
- access: "view"
61008
- },
61009
61126
  "training.getJob": {
61010
61127
  capName: "training",
61011
61128
  capScope: "system",
@@ -61024,12 +61141,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
61024
61141
  addonId: null,
61025
61142
  access: "view"
61026
61143
  },
61027
- "training.listDatasetVersions": {
61028
- capName: "training",
61029
- capScope: "system",
61030
- addonId: null,
61031
- access: "view"
61032
- },
61033
61144
  "training.listJobs": {
61034
61145
  capName: "training",
61035
61146
  capScope: "system",
@@ -61042,54 +61153,66 @@ var METHOD_ACCESS_MAP = Object.freeze({
61042
61153
  addonId: null,
61043
61154
  access: "view"
61044
61155
  },
61045
- "training.putDatasetVersion": {
61156
+ "training.registerResult": {
61046
61157
  capName: "training",
61047
61158
  capScope: "system",
61048
61159
  addonId: null,
61049
61160
  access: "create"
61050
61161
  },
61051
- "training.registerResult": {
61162
+ "training.rollbackCanary": {
61052
61163
  capName: "training",
61053
61164
  capScope: "system",
61054
61165
  addonId: null,
61055
61166
  access: "create"
61056
61167
  },
61057
- "training.removeDatasetVersion": {
61168
+ "training.startJob": {
61058
61169
  capName: "training",
61059
61170
  capScope: "system",
61060
61171
  addonId: null,
61061
- access: "delete"
61172
+ access: "create"
61062
61173
  },
61063
- "training.rollbackCanary": {
61174
+ "training.startJobBatch": {
61064
61175
  capName: "training",
61065
61176
  capScope: "system",
61066
61177
  addonId: null,
61067
61178
  access: "create"
61068
61179
  },
61069
- "training.startJob": {
61070
- capName: "training",
61180
+ "trainingProvider.cancelJob": {
61181
+ capName: "training-provider",
61071
61182
  capScope: "system",
61072
61183
  addonId: null,
61073
61184
  access: "create"
61074
61185
  },
61075
- "trainingProvider.cancelJob": {
61186
+ "trainingProvider.cleanupJob": {
61076
61187
  capName: "training-provider",
61077
61188
  capScope: "system",
61078
61189
  addonId: null,
61079
61190
  access: "create"
61080
61191
  },
61081
- "trainingProvider.cleanupJob": {
61192
+ "trainingProvider.createEntry": {
61082
61193
  capName: "training-provider",
61083
61194
  capScope: "system",
61084
61195
  addonId: null,
61085
61196
  access: "create"
61086
61197
  },
61198
+ "trainingProvider.deleteEntry": {
61199
+ capName: "training-provider",
61200
+ capScope: "system",
61201
+ addonId: null,
61202
+ access: "delete"
61203
+ },
61087
61204
  "trainingProvider.describe": {
61088
61205
  capName: "training-provider",
61089
61206
  capScope: "system",
61090
61207
  addonId: null,
61091
61208
  access: "view"
61092
61209
  },
61210
+ "trainingProvider.describeTypes": {
61211
+ capName: "training-provider",
61212
+ capScope: "system",
61213
+ addonId: null,
61214
+ access: "view"
61215
+ },
61093
61216
  "trainingProvider.estimateJob": {
61094
61217
  capName: "training-provider",
61095
61218
  capScope: "system",
@@ -61102,6 +61225,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
61102
61225
  addonId: null,
61103
61226
  access: "view"
61104
61227
  },
61228
+ "trainingProvider.listEntries": {
61229
+ capName: "training-provider",
61230
+ capScope: "system",
61231
+ addonId: null,
61232
+ access: "view"
61233
+ },
61105
61234
  "trainingProvider.listJobEvents": {
61106
61235
  capName: "training-provider",
61107
61236
  capScope: "system",
@@ -67960,6 +68089,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
67960
68089
  form: "array",
67961
68090
  optional: false
67962
68091
  }],
68092
+ "pipelineAnalytics.listRetrainCorpusPage": [{
68093
+ name: "deviceIds",
68094
+ form: "array",
68095
+ optional: true
68096
+ }],
67963
68097
  "pipelineAnalytics.listRetrainStaging": [{
67964
68098
  name: "deviceIds",
67965
68099
  form: "array",
@@ -70395,14 +70529,10 @@ function createSystemProxy(api) {
70395
70529
  },
70396
70530
  toast: { onToast: (input, push) => dispatch("toast", "onToast", "subscription", input, push) },
70397
70531
  training: {
70398
- putDatasetVersion: (input) => dispatch("training", "putDatasetVersion", "mutation", input),
70399
- getDatasetVersion: (input) => dispatch("training", "getDatasetVersion", "query", input),
70400
- listDatasetVersions: (input) => dispatch("training", "listDatasetVersions", "query", input),
70401
- findDatasetVersionIdByName: (input) => dispatch("training", "findDatasetVersionIdByName", "query", input),
70402
- removeDatasetVersion: (input) => dispatch("training", "removeDatasetVersion", "mutation", input),
70403
70532
  listBaseModels: (input) => dispatch("training", "listBaseModels", "query", input),
70404
70533
  planJob: (input) => dispatch("training", "planJob", "query", input),
70405
70534
  startJob: (input) => dispatch("training", "startJob", "mutation", input),
70535
+ startJobBatch: (input) => dispatch("training", "startJobBatch", "mutation", input),
70406
70536
  listJobs: (input) => dispatch("training", "listJobs", "query", input),
70407
70537
  getJob: (input) => dispatch("training", "getJob", "query", input),
70408
70538
  cancelJob: (input) => dispatch("training", "cancelJob", "mutation", input),
@@ -75726,68 +75856,97 @@ var DETECTOR_PERF = {
75726
75856
  }
75727
75857
  }
75728
75858
  },
75729
- "amd-phoenix": { "x86-cpu": {
75730
- "yolov9t-320": {
75731
- p50Ms: 6.9,
75732
- fps: 145,
75733
- measured: false
75734
- },
75735
- "yolov9t-320-int8": {
75736
- p50Ms: 2.7,
75737
- fps: 405,
75738
- measured: false
75739
- },
75740
- "yolov9t-640": {
75741
- p50Ms: 23,
75742
- fps: 44,
75743
- measured: false
75744
- },
75745
- "yolov9t-640-int8": {
75746
- p50Ms: 8.8,
75747
- fps: 124,
75748
- measured: false
75749
- },
75750
- "yolov9s-320": {
75751
- p50Ms: 15.8,
75752
- fps: 63,
75753
- measured: false
75754
- },
75755
- "yolov9s-320-int8": {
75756
- p50Ms: 6.5,
75757
- fps: 180,
75758
- measured: false
75759
- },
75760
- "yolov9s-640": {
75761
- p50Ms: 58.2,
75762
- fps: 17,
75763
- measured: false
75764
- },
75765
- "yolov9s-640-int8": {
75766
- p50Ms: 20.1,
75767
- fps: 52,
75768
- measured: false
75769
- },
75770
- "yolov9m-320": {
75771
- p50Ms: 40,
75772
- fps: 25,
75773
- measured: false
75774
- },
75775
- "yolov9m-320-int8": {
75776
- p50Ms: 14.2,
75777
- fps: 74,
75778
- measured: false
75779
- },
75780
- "yolov9m-640": {
75781
- p50Ms: 155.8,
75782
- fps: 6,
75783
- measured: false
75859
+ "amd-phoenix": {
75860
+ "x86-cpu": {
75861
+ "yolov9t-320": {
75862
+ p50Ms: 24,
75863
+ fps: 42,
75864
+ measured: true
75865
+ },
75866
+ "yolov9t-320-int8": {
75867
+ p50Ms: 12,
75868
+ fps: 83,
75869
+ measured: true
75870
+ },
75871
+ "yolov9t-640": {
75872
+ p50Ms: 50,
75873
+ fps: 20,
75874
+ measured: true
75875
+ },
75876
+ "yolov9t-640-int8": {
75877
+ p50Ms: 20,
75878
+ fps: 50,
75879
+ measured: true
75880
+ },
75881
+ "yolov9s-320": {
75882
+ p50Ms: 30,
75883
+ fps: 33,
75884
+ measured: true
75885
+ },
75886
+ "yolov9s-320-int8": {
75887
+ p50Ms: 15,
75888
+ fps: 67,
75889
+ measured: true
75890
+ },
75891
+ "yolov9s-640": {
75892
+ p50Ms: 92,
75893
+ fps: 11,
75894
+ measured: true
75895
+ },
75896
+ "yolov9s-640-int8": {
75897
+ p50Ms: 27,
75898
+ fps: 37,
75899
+ measured: true
75900
+ },
75901
+ "yolov9m-320": {
75902
+ p50Ms: 67,
75903
+ fps: 15,
75904
+ measured: true
75905
+ },
75906
+ "yolov9m-320-int8": {
75907
+ p50Ms: 21,
75908
+ fps: 48,
75909
+ measured: true
75910
+ },
75911
+ "yolov9m-640": {
75912
+ p50Ms: 229,
75913
+ fps: 4,
75914
+ measured: true
75915
+ },
75916
+ "yolov9m-640-int8": {
75917
+ p50Ms: 48,
75918
+ fps: 21,
75919
+ measured: true
75920
+ }
75784
75921
  },
75785
- "yolov9m-640-int8": {
75786
- p50Ms: 52.4,
75787
- fps: 19,
75788
- measured: false
75922
+ "amd-igpu": {
75923
+ "yolov9t-320": {
75924
+ p50Ms: 188,
75925
+ fps: 5,
75926
+ measured: true
75927
+ },
75928
+ "yolov9t-640": {
75929
+ p50Ms: 671,
75930
+ fps: 1,
75931
+ measured: true
75932
+ },
75933
+ "yolov9s-320": {
75934
+ p50Ms: 401,
75935
+ fps: 2,
75936
+ measured: true
75937
+ },
75938
+ "yolov9s-640": {
75939
+ p50Ms: 1434,
75940
+ fps: 1,
75941
+ measured: true
75942
+ },
75943
+ "yolov9m-320": {
75944
+ p50Ms: 1076,
75945
+ fps: 1,
75946
+ measured: true
75947
+ }
75789
75948
  }
75790
- } },
75949
+ },
75791
75950
  "apple-m-pro": { "apple-ane": {
75792
75951
  "yolov9t-320": {
75793
75952
  p50Ms: 1.1,
@@ -79220,7 +79379,6 @@ exports.CoreBlockStatusSchema = CoreBlockStatusSchema;
79220
79379
  exports.CoverStateSchema = CoverStateSchema;
79221
79380
  exports.CoverStatusSchema = CoverStatusSchema;
79222
79381
  exports.CreateIntegrationInputSchema = CreateIntegrationInputSchema;
79223
- exports.CreateRetrainDatasetVersionResultSchema = CreateRetrainDatasetVersionResultSchema;
79224
79382
  exports.CreateScopedTokenInputSchema = CreateScopedTokenInputSchema;
79225
79383
  exports.CreateScopedTokenResultSchema = CreateScopedTokenResultSchema;
79226
79384
  exports.CreateUserInputSchema = CreateUserInputSchema;
@@ -79803,6 +79961,7 @@ exports.NC_UPDATE_EVENT_PACKAGE_NAMES = NC_UPDATE_EVENT_PACKAGE_NAMES;
79803
79961
  exports.NETWORK_LINK_TYPES = NETWORK_LINK_TYPES;
79804
79962
  exports.NETWORK_LINK_UNKNOWN = NETWORK_LINK_UNKNOWN;
79805
79963
  exports.NODE_BENCHMARK_DEFAULTS = NODE_BENCHMARK_DEFAULTS;
79964
+ exports.NODE_COLOR_IDS = require_node_color.NODE_COLOR_IDS;
79806
79965
  exports.NO_MEASURED_CAPACITY = NO_MEASURED_CAPACITY;
79807
79966
  exports.NativeCropBboxSchema = NativeCropBboxSchema;
79808
79967
  exports.NativeCropRefSchema = NativeCropRefSchema;
@@ -79951,6 +80110,7 @@ exports.NodeBenchmarkRunSchema = NodeBenchmarkRunSchema;
79951
80110
  exports.NodeBenchmarkStateSchema = NodeBenchmarkStateSchema;
79952
80111
  exports.NodeBenchmarkStatusSchema = NodeBenchmarkStatusSchema;
79953
80112
  exports.NodeBenchmarkStayingCameraSchema = NodeBenchmarkStayingCameraSchema;
80113
+ exports.NodeColorIdSchema = require_node_color.NodeColorIdSchema;
79954
80114
  exports.NodeDeviceChangeSchema = NodeDeviceChangeSchema;
79955
80115
  exports.NodeDirectoryEntrySchema = NodeDirectoryEntrySchema;
79956
80116
  exports.NodeDirectorySchema = NodeDirectorySchema;
@@ -80186,6 +80346,11 @@ exports.RetrainCollectionCreateResultSchema = RetrainCollectionCreateResultSchem
80186
80346
  exports.RetrainCollectionRenameResultSchema = RetrainCollectionRenameResultSchema;
80187
80347
  exports.RetrainCollectionSchema = RetrainCollectionSchema;
80188
80348
  exports.RetrainCopyRefusalSchema = RetrainCopyRefusalSchema;
80349
+ exports.RetrainCorpusFilterSchema = RetrainCorpusFilterSchema;
80350
+ exports.RetrainCorpusKpiCameraRowSchema = RetrainCorpusKpiCameraRowSchema;
80351
+ exports.RetrainCorpusKpiSchema = RetrainCorpusKpiSchema;
80352
+ exports.RetrainCorpusPageFrameSchema = RetrainCorpusPageFrameSchema;
80353
+ exports.RetrainCorpusPageSchema = RetrainCorpusPageSchema;
80189
80354
  exports.RetrainDatasetSelectionSchema = RetrainDatasetSelectionSchema;
80190
80355
  exports.RetrainDatasetStatsSchema = RetrainDatasetStatsSchema;
80191
80356
  exports.RetrainDatasetVersionSchema = RetrainDatasetVersionSchema;
@@ -80196,6 +80361,7 @@ exports.RetrainFrameListSchema = RetrainFrameListSchema;
80196
80361
  exports.RetrainFrameOriginSchema = RetrainFrameOriginSchema;
80197
80362
  exports.RetrainFrameSchema = RetrainFrameSchema;
80198
80363
  exports.RetrainFrameSelectionSchema = RetrainFrameSelectionSchema;
80364
+ exports.RetrainFrameWorkStateSchema = RetrainFrameWorkStateSchema;
80199
80365
  exports.RetrainLlmAssistResultSchema = RetrainLlmAssistResultSchema;
80200
80366
  exports.RetrainLlmProposalSchema = RetrainLlmProposalSchema;
80201
80367
  exports.RetrainLlmReviewSchema = RetrainLlmReviewSchema;
@@ -80203,6 +80369,8 @@ exports.RetrainMacroClassSchema = RetrainMacroClassSchema;
80203
80369
  exports.RetrainPipelineBoxSchema = RetrainPipelineBoxSchema;
80204
80370
  exports.RetrainStatusSchema = RetrainStatusSchema;
80205
80371
  exports.RetrainTrackSchema = RetrainTrackSchema;
80372
+ exports.RetrainTrainingCorpusResolveResultSchema = RetrainTrainingCorpusResolveResultSchema;
80373
+ exports.RetrainTrainingCorpusSelectionSchema = RetrainTrainingCorpusSelectionSchema;
80206
80374
  exports.RetrainTransitionResultSchema = RetrainTransitionResultSchema;
80207
80375
  exports.RingBuffer = RingBuffer;
80208
80376
  exports.RootStepSupplySchema = RootStepSupplySchema;
@@ -80429,8 +80597,8 @@ exports.TrainerSourceRefSchema = TrainerSourceRefSchema;
80429
80597
  exports.TrainingBaseModelSchema = TrainingBaseModelSchema;
80430
80598
  exports.TrainingCanarySchema = TrainingCanarySchema;
80431
80599
  exports.TrainingCatalogDraftSchema = TrainingCatalogDraftSchema;
80600
+ exports.TrainingCorpusSelectionSchema = TrainingCorpusSelectionSchema;
80432
80601
  exports.TrainingCredentialCheckSchema = TrainingCredentialCheckSchema;
80433
- exports.TrainingDatasetVersionRowSchema = TrainingDatasetVersionRowSchema;
80434
80602
  exports.TrainingEvalClassSchema = TrainingEvalClassSchema;
80435
80603
  exports.TrainingEvalReportSchema = TrainingEvalReportSchema;
80436
80604
  exports.TrainingEventSchema = TrainingEventSchema;
@@ -80449,6 +80617,8 @@ exports.TrainingPresetSchema = TrainingPresetSchema;
80449
80617
  exports.TrainingProgressPointSchema = TrainingProgressPointSchema;
80450
80618
  exports.TrainingProviderDefaultsSchema = TrainingProviderDefaultsSchema;
80451
80619
  exports.TrainingProviderDescriptorSchema = TrainingProviderDescriptorSchema;
80620
+ exports.TrainingProviderEntrySchema = TrainingProviderEntrySchema;
80621
+ exports.TrainingProviderTypeSchema = TrainingProviderTypeSchema;
80452
80622
  exports.TrainingRefusalReasonSchema = TrainingRefusalReasonSchema;
80453
80623
  exports.TrainingRegionOptionSchema = TrainingRegionOptionSchema;
80454
80624
  exports.TrainingResultFileSchema = TrainingResultFileSchema;
@@ -80575,6 +80745,7 @@ exports.asJsonObject = require_sleep.asJsonObject;
80575
80745
  exports.asNumber = require_sleep.asNumber;
80576
80746
  exports.asString = require_sleep.asString;
80577
80747
  exports.assertTimelapseCadences = assertTimelapseCadences;
80748
+ exports.assignNodeColorId = require_node_color.assignNodeColorId;
80578
80749
  exports.audioAnalysisCapability = audioAnalysisCapability;
80579
80750
  exports.audioAnalyzerCapability = audioAnalyzerCapability;
80580
80751
  exports.audioChunkBytesPerSample = require_sleep.audioChunkBytesPerSample;