@camstack/types 1.2.339 → 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.
@@ -1340,20 +1340,232 @@ export declare const RetrainFrameListSchema: z.ZodObject<{
1340
1340
  autoPickMediaId: z.ZodOptional<z.ZodNumber>;
1341
1341
  }, z.core.$strip>;
1342
1342
  export type RetrainFrameList = z.infer<typeof RetrainFrameListSchema>;
1343
+ /** Exclusive partition of a corpus copy's annotation progress (design §4.2). */
1344
+ export declare const RetrainFrameWorkStateSchema: z.ZodEnum<{
1345
+ annotated: "annotated";
1346
+ complete: "complete";
1347
+ unannotated: "unannotated";
1348
+ }>;
1349
+ export type RetrainFrameWorkState = z.infer<typeof RetrainFrameWorkStateSchema>;
1350
+ /**
1351
+ * Filters for paginated corpus list, KPI, and matching export (design §4.4).
1352
+ * Every narrowing field is ANDed; omitted fields impose no constraint.
1353
+ */
1354
+ export declare const RetrainCorpusFilterSchema: z.ZodObject<{
1355
+ workState: z.ZodOptional<z.ZodEnum<{
1356
+ annotated: "annotated";
1357
+ complete: "complete";
1358
+ unannotated: "unannotated";
1359
+ }>>;
1360
+ deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1361
+ collectionId: z.ZodOptional<z.ZodString>;
1362
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1363
+ animal: "animal";
1364
+ face: "face";
1365
+ package: "package";
1366
+ person: "person";
1367
+ plate: "plate";
1368
+ vehicle: "vehicle";
1369
+ }>>>;
1370
+ page: z.ZodDefault<z.ZodNumber>;
1371
+ pageSize: z.ZodDefault<z.ZodNumber>;
1372
+ }, z.core.$strip>;
1373
+ export type RetrainCorpusFilter = z.infer<typeof RetrainCorpusFilterSchema>;
1374
+ /**
1375
+ * One row on the Frames corpus grid: a wire frame plus its exclusive work
1376
+ * state (`workStateOf`), so the UI can badge To do / In progress / Complete
1377
+ * when the filter is All (annotation counts are not otherwise on the wire).
1378
+ */
1379
+ export declare const RetrainCorpusPageFrameSchema: z.ZodObject<{
1380
+ frameId: z.ZodString;
1381
+ deviceId: z.ZodNumber;
1382
+ origin: z.ZodEnum<{
1383
+ recording: "recording";
1384
+ track: "track";
1385
+ }>;
1386
+ trackId: z.ZodOptional<z.ZodString>;
1387
+ sourceMediaId: z.ZodOptional<z.ZodNumber>;
1388
+ epochMs: z.ZodOptional<z.ZodNumber>;
1389
+ sourceKind: z.ZodEnum<{
1390
+ confirmationCrop: "confirmationCrop";
1391
+ crop: "crop";
1392
+ debugCrop: "debugCrop";
1393
+ faceCrop: "faceCrop";
1394
+ firstFrame: "firstFrame";
1395
+ fullFrame: "fullFrame";
1396
+ fullFrameBoxed: "fullFrameBoxed";
1397
+ keyFrame: "keyFrame";
1398
+ keyFrameSmall: "keyFrameSmall";
1399
+ lastFrame: "lastFrame";
1400
+ lastSceneFrame: "lastSceneFrame";
1401
+ plateCrop: "plateCrop";
1402
+ sceneFrame: "sceneFrame";
1403
+ snapshot: "snapshot";
1404
+ thumbnail: "thumbnail";
1405
+ thumbnailSmall: "thumbnailSmall";
1406
+ }>;
1407
+ sizeBytes: z.ZodNumber;
1408
+ width: z.ZodNumber;
1409
+ height: z.ZodNumber;
1410
+ copiedAt: z.ZodNumber;
1411
+ capturedAt: z.ZodOptional<z.ZodNumber>;
1412
+ complete: z.ZodBoolean;
1413
+ pipelineBoxes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
1414
+ bbox: z.ZodObject<{
1415
+ x: z.ZodNumber;
1416
+ y: z.ZodNumber;
1417
+ w: z.ZodNumber;
1418
+ h: z.ZodNumber;
1419
+ }, z.core.$strip>;
1420
+ macroClass: z.ZodEnum<{
1421
+ animal: "animal";
1422
+ face: "face";
1423
+ package: "package";
1424
+ person: "person";
1425
+ plate: "plate";
1426
+ vehicle: "vehicle";
1427
+ }>;
1428
+ label: z.ZodOptional<z.ZodString>;
1429
+ subLabel: z.ZodOptional<z.ZodString>;
1430
+ score: z.ZodOptional<z.ZodNumber>;
1431
+ modelId: z.ZodOptional<z.ZodString>;
1432
+ trackId: z.ZodString;
1433
+ basis: z.ZodEnum<{
1434
+ position: "position";
1435
+ "subject-box": "subject-box";
1436
+ }>;
1437
+ deltaMs: z.ZodNumber;
1438
+ }, z.core.$strip>>>>;
1439
+ collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
1440
+ workState: z.ZodEnum<{
1441
+ annotated: "annotated";
1442
+ complete: "complete";
1443
+ unannotated: "unannotated";
1444
+ }>;
1445
+ }, z.core.$strip>;
1446
+ export type RetrainCorpusPageFrame = z.infer<typeof RetrainCorpusPageFrameSchema>;
1447
+ export declare const RetrainCorpusPageSchema: z.ZodObject<{
1448
+ frames: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1449
+ frameId: z.ZodString;
1450
+ deviceId: z.ZodNumber;
1451
+ origin: z.ZodEnum<{
1452
+ recording: "recording";
1453
+ track: "track";
1454
+ }>;
1455
+ trackId: z.ZodOptional<z.ZodString>;
1456
+ sourceMediaId: z.ZodOptional<z.ZodNumber>;
1457
+ epochMs: z.ZodOptional<z.ZodNumber>;
1458
+ sourceKind: z.ZodEnum<{
1459
+ confirmationCrop: "confirmationCrop";
1460
+ crop: "crop";
1461
+ debugCrop: "debugCrop";
1462
+ faceCrop: "faceCrop";
1463
+ firstFrame: "firstFrame";
1464
+ fullFrame: "fullFrame";
1465
+ fullFrameBoxed: "fullFrameBoxed";
1466
+ keyFrame: "keyFrame";
1467
+ keyFrameSmall: "keyFrameSmall";
1468
+ lastFrame: "lastFrame";
1469
+ lastSceneFrame: "lastSceneFrame";
1470
+ plateCrop: "plateCrop";
1471
+ sceneFrame: "sceneFrame";
1472
+ snapshot: "snapshot";
1473
+ thumbnail: "thumbnail";
1474
+ thumbnailSmall: "thumbnailSmall";
1475
+ }>;
1476
+ sizeBytes: z.ZodNumber;
1477
+ width: z.ZodNumber;
1478
+ height: z.ZodNumber;
1479
+ copiedAt: z.ZodNumber;
1480
+ capturedAt: z.ZodOptional<z.ZodNumber>;
1481
+ complete: z.ZodBoolean;
1482
+ pipelineBoxes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
1483
+ bbox: z.ZodObject<{
1484
+ x: z.ZodNumber;
1485
+ y: z.ZodNumber;
1486
+ w: z.ZodNumber;
1487
+ h: z.ZodNumber;
1488
+ }, z.core.$strip>;
1489
+ macroClass: z.ZodEnum<{
1490
+ animal: "animal";
1491
+ face: "face";
1492
+ package: "package";
1493
+ person: "person";
1494
+ plate: "plate";
1495
+ vehicle: "vehicle";
1496
+ }>;
1497
+ label: z.ZodOptional<z.ZodString>;
1498
+ subLabel: z.ZodOptional<z.ZodString>;
1499
+ score: z.ZodOptional<z.ZodNumber>;
1500
+ modelId: z.ZodOptional<z.ZodString>;
1501
+ trackId: z.ZodString;
1502
+ basis: z.ZodEnum<{
1503
+ position: "position";
1504
+ "subject-box": "subject-box";
1505
+ }>;
1506
+ deltaMs: z.ZodNumber;
1507
+ }, z.core.$strip>>>>;
1508
+ collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
1509
+ workState: z.ZodEnum<{
1510
+ annotated: "annotated";
1511
+ complete: "complete";
1512
+ unannotated: "unannotated";
1513
+ }>;
1514
+ }, z.core.$strip>>>;
1515
+ total: z.ZodNumber;
1516
+ page: z.ZodNumber;
1517
+ pageSize: z.ZodNumber;
1518
+ }, z.core.$strip>;
1519
+ export type RetrainCorpusPage = z.infer<typeof RetrainCorpusPageSchema>;
1520
+ export declare const RetrainCorpusKpiCameraRowSchema: z.ZodObject<{
1521
+ deviceId: z.ZodNumber;
1522
+ unannotated: z.ZodNumber;
1523
+ annotated: z.ZodNumber;
1524
+ complete: z.ZodNumber;
1525
+ pctOfCorpus: z.ZodNullable<z.ZodNumber>;
1526
+ }, z.core.$strip>;
1527
+ export type RetrainCorpusKpiCameraRow = z.infer<typeof RetrainCorpusKpiCameraRowSchema>;
1528
+ export declare const RetrainCorpusKpiSchema: z.ZodObject<{
1529
+ total: z.ZodNumber;
1530
+ unannotated: z.ZodNumber;
1531
+ annotated: z.ZodNumber;
1532
+ complete: z.ZodNumber;
1533
+ cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1534
+ deviceId: z.ZodNumber;
1535
+ unannotated: z.ZodNumber;
1536
+ annotated: z.ZodNumber;
1537
+ complete: z.ZodNumber;
1538
+ pctOfCorpus: z.ZodNullable<z.ZodNumber>;
1539
+ }, z.core.$strip>>>;
1540
+ }, z.core.$strip>;
1541
+ export type RetrainCorpusKpi = z.infer<typeof RetrainCorpusKpiSchema>;
1343
1542
  /**
1344
1543
  * Which frames an annotated export carries. Every field narrows; an empty
1345
- * filter is every annotated copy. A dataset VERSION is a frozen `frameIds`
1346
- * list owned by whoever trains (the training orchestrator), so `frameIds` is
1347
- * the primitive a version export uses; `batchId` re-selects what an earlier
1348
- * export carried (`exportedInBatch`).
1544
+ * filter is every annotated copy. `frameIds` is the primitive a job or
1545
+ * download uses; `batchId` re-selects what an earlier export carried
1546
+ * (`exportedInBatch`). Frozen dataset versions were removed — live selection
1547
+ * resolves to `frameIds` at plan/start.
1349
1548
  */
1350
1549
  export declare const RetrainExportFilterSchema: z.ZodObject<{
1351
1550
  deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1352
1551
  frameIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1353
1552
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1354
- datasetVersionId: z.ZodOptional<z.ZodString>;
1553
+ collectionId: z.ZodOptional<z.ZodString>;
1355
1554
  batchId: z.ZodOptional<z.ZodString>;
1356
1555
  completeOnly: z.ZodOptional<z.ZodBoolean>;
1556
+ workState: z.ZodOptional<z.ZodEnum<{
1557
+ annotated: "annotated";
1558
+ complete: "complete";
1559
+ unannotated: "unannotated";
1560
+ }>>;
1561
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1562
+ animal: "animal";
1563
+ face: "face";
1564
+ package: "package";
1565
+ person: "person";
1566
+ plate: "plate";
1567
+ vehicle: "vehicle";
1568
+ }>>>;
1357
1569
  }, z.core.$strip>;
1358
1570
  export type RetrainExportFilter = z.infer<typeof RetrainExportFilterSchema>;
1359
1571
  /**
@@ -1750,7 +1962,10 @@ export declare const RetrainDatasetStatsSchema: z.ZodObject<{
1750
1962
  }, z.core.$strip>>>;
1751
1963
  }, z.core.$strip>;
1752
1964
  export type RetrainDatasetStats = z.infer<typeof RetrainDatasetStatsSchema>;
1753
- /** An immutable dataset version, without its frame list. */
1965
+ /**
1966
+ * Shape of a historically frozen dataset version (stats + selection). Kept for
1967
+ * typed stats/selection helpers and any leftover rows; no public freeze API.
1968
+ */
1754
1969
  export declare const RetrainDatasetVersionSchema: z.ZodObject<{
1755
1970
  id: z.ZodString;
1756
1971
  name: z.ZodString;
@@ -1794,59 +2009,61 @@ export declare const RetrainDatasetVersionSchema: z.ZodObject<{
1794
2009
  }, z.core.$strip>;
1795
2010
  }, z.core.$strip>;
1796
2011
  export type RetrainDatasetVersion = z.infer<typeof RetrainDatasetVersionSchema>;
1797
- export declare const CreateRetrainDatasetVersionResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1798
- kind: z.ZodLiteral<"created">;
1799
- version: z.ZodObject<{
1800
- id: z.ZodString;
1801
- name: z.ZodString;
1802
- createdAt: z.ZodNumber;
1803
- selection: z.ZodObject<{
1804
- deviceIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
1805
- collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
1806
- frameIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
1807
- }, z.core.$strip>;
1808
- layout: z.ZodEnum<{
1809
- crops: "crops";
1810
- frames: "frames";
1811
- }>;
1812
- completeOnly: z.ZodBoolean;
1813
- frameCount: z.ZodNumber;
1814
- annotationHash: z.ZodString;
1815
- manifestSchema: z.ZodString;
1816
- stats: z.ZodObject<{
2012
+ /**
2013
+ * Live training corpus criteria — same shape as `TrainingCorpusSelection` on
2014
+ * the training cap. Resolved here so plan/start and the annotated export share
2015
+ * one definition of "the frames" (`buildRetrainExportPlan`).
2016
+ */
2017
+ export declare const RetrainTrainingCorpusSelectionSchema: z.ZodObject<{
2018
+ collectionIds: z.ZodArray<z.ZodString>;
2019
+ workState: z.ZodDefault<z.ZodEnum<{
2020
+ annotated_or_complete: "annotated_or_complete";
2021
+ any_annotated: "any_annotated";
2022
+ complete: "complete";
2023
+ }>>;
2024
+ }, z.core.$strip>;
2025
+ export type RetrainTrainingCorpusSelection = z.infer<typeof RetrainTrainingCorpusSelectionSchema>;
2026
+ export declare const RetrainTrainingCorpusResolveResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2027
+ kind: z.ZodLiteral<"resolved">;
2028
+ frameIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
2029
+ stats: z.ZodObject<{
2030
+ frames: z.ZodNumber;
2031
+ completeFrames: z.ZodNumber;
2032
+ completeness: z.ZodNumber;
2033
+ subjects: z.ZodNumber;
2034
+ modelErrors: z.ZodNumber;
2035
+ hardNegatives: z.ZodNumber;
2036
+ cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
2037
+ macroClass: z.ZodString;
2038
+ deviceId: z.ZodNumber;
2039
+ lighting: z.ZodEnum<{
2040
+ day: "day";
2041
+ night: "night";
2042
+ unknown: "unknown";
2043
+ }>;
2044
+ subjects: z.ZodNumber;
2045
+ frames: z.ZodNumber;
2046
+ }, z.core.$strip>>>;
2047
+ cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
2048
+ deviceId: z.ZodNumber;
1817
2049
  frames: z.ZodNumber;
1818
2050
  completeFrames: z.ZodNumber;
1819
- completeness: z.ZodNumber;
1820
- subjects: z.ZodNumber;
1821
- modelErrors: z.ZodNumber;
1822
- hardNegatives: z.ZodNumber;
1823
- cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1824
- macroClass: z.ZodString;
1825
- deviceId: z.ZodNumber;
1826
- lighting: z.ZodEnum<{
1827
- day: "day";
1828
- night: "night";
1829
- unknown: "unknown";
1830
- }>;
1831
- subjects: z.ZodNumber;
1832
- frames: z.ZodNumber;
1833
- }, z.core.$strip>>>;
1834
- cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1835
- deviceId: z.ZodNumber;
1836
- frames: z.ZodNumber;
1837
- completeFrames: z.ZodNumber;
1838
- }, z.core.$strip>>>;
1839
- }, z.core.$strip>;
2051
+ }, z.core.$strip>>>;
1840
2052
  }, z.core.$strip>;
2053
+ annotationHash: z.ZodString;
2054
+ layout: z.ZodEnum<{
2055
+ crops: "crops";
2056
+ frames: "frames";
2057
+ }>;
1841
2058
  }, z.core.$strip>, z.ZodObject<{
1842
2059
  kind: z.ZodLiteral<"refused">;
1843
2060
  reason: z.ZodEnum<{
1844
- "duplicate-name": "duplicate-name";
1845
- "empty-name": "empty-name";
1846
2061
  "no-frames": "no-frames";
2062
+ "unknown-collection": "unknown-collection";
1847
2063
  }>;
2064
+ detail: z.ZodString;
1848
2065
  }, z.core.$strip>], "kind">;
1849
- export type CreateRetrainDatasetVersionResult = z.infer<typeof CreateRetrainDatasetVersionResultSchema>;
2066
+ export type RetrainTrainingCorpusResolveResult = z.infer<typeof RetrainTrainingCorpusResolveResultSchema>;
1850
2067
  /** The outcome of a lifecycle move owned by the retrain page. */
1851
2068
  export declare const RetrainTransitionResultSchema: z.ZodObject<{
1852
2069
  trackId: z.ZodString;
@@ -4245,6 +4462,121 @@ export declare const pipelineAnalyticsCapability: {
4245
4462
  frameCount: z.ZodNumber;
4246
4463
  annotationCount: z.ZodNumber;
4247
4464
  }, z.core.$strip>>>, "query">;
4465
+ /**
4466
+ * Paginated corpus copies for the Frames grid — index reads only.
4467
+ *
4468
+ * Filters AND (`workState`, cameras, one collection, annotated classes).
4469
+ * An answered empty match is `{ frames: [], total: 0, … }` (D315), never a
4470
+ * pending masquerade. Classification uses `workStateOf` (annotation count
4471
+ * wins over a stray `complete` flag).
4472
+ */
4473
+ readonly listRetrainCorpusPage: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
4474
+ workState: z.ZodOptional<z.ZodEnum<{
4475
+ annotated: "annotated";
4476
+ complete: "complete";
4477
+ unannotated: "unannotated";
4478
+ }>>;
4479
+ deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
4480
+ collectionId: z.ZodOptional<z.ZodString>;
4481
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
4482
+ animal: "animal";
4483
+ face: "face";
4484
+ package: "package";
4485
+ person: "person";
4486
+ plate: "plate";
4487
+ vehicle: "vehicle";
4488
+ }>>>;
4489
+ page: z.ZodDefault<z.ZodNumber>;
4490
+ pageSize: z.ZodDefault<z.ZodNumber>;
4491
+ }, z.core.$strip>, z.ZodObject<{
4492
+ frames: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4493
+ frameId: z.ZodString;
4494
+ deviceId: z.ZodNumber;
4495
+ origin: z.ZodEnum<{
4496
+ recording: "recording";
4497
+ track: "track";
4498
+ }>;
4499
+ trackId: z.ZodOptional<z.ZodString>;
4500
+ sourceMediaId: z.ZodOptional<z.ZodNumber>;
4501
+ epochMs: z.ZodOptional<z.ZodNumber>;
4502
+ sourceKind: z.ZodEnum<{
4503
+ confirmationCrop: "confirmationCrop";
4504
+ crop: "crop";
4505
+ debugCrop: "debugCrop";
4506
+ faceCrop: "faceCrop";
4507
+ firstFrame: "firstFrame";
4508
+ fullFrame: "fullFrame";
4509
+ fullFrameBoxed: "fullFrameBoxed";
4510
+ keyFrame: "keyFrame";
4511
+ keyFrameSmall: "keyFrameSmall";
4512
+ lastFrame: "lastFrame";
4513
+ lastSceneFrame: "lastSceneFrame";
4514
+ plateCrop: "plateCrop";
4515
+ sceneFrame: "sceneFrame";
4516
+ snapshot: "snapshot";
4517
+ thumbnail: "thumbnail";
4518
+ thumbnailSmall: "thumbnailSmall";
4519
+ }>;
4520
+ sizeBytes: z.ZodNumber;
4521
+ width: z.ZodNumber;
4522
+ height: z.ZodNumber;
4523
+ copiedAt: z.ZodNumber;
4524
+ capturedAt: z.ZodOptional<z.ZodNumber>;
4525
+ complete: z.ZodBoolean;
4526
+ pipelineBoxes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
4527
+ bbox: z.ZodObject<{
4528
+ x: z.ZodNumber;
4529
+ y: z.ZodNumber;
4530
+ w: z.ZodNumber;
4531
+ h: z.ZodNumber;
4532
+ }, z.core.$strip>;
4533
+ macroClass: z.ZodEnum<{
4534
+ animal: "animal";
4535
+ face: "face";
4536
+ package: "package";
4537
+ person: "person";
4538
+ plate: "plate";
4539
+ vehicle: "vehicle";
4540
+ }>;
4541
+ label: z.ZodOptional<z.ZodString>;
4542
+ subLabel: z.ZodOptional<z.ZodString>;
4543
+ score: z.ZodOptional<z.ZodNumber>;
4544
+ modelId: z.ZodOptional<z.ZodString>;
4545
+ trackId: z.ZodString;
4546
+ basis: z.ZodEnum<{
4547
+ position: "position";
4548
+ "subject-box": "subject-box";
4549
+ }>;
4550
+ deltaMs: z.ZodNumber;
4551
+ }, z.core.$strip>>>>;
4552
+ collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4553
+ workState: z.ZodEnum<{
4554
+ annotated: "annotated";
4555
+ complete: "complete";
4556
+ unannotated: "unannotated";
4557
+ }>;
4558
+ }, z.core.$strip>>>;
4559
+ total: z.ZodNumber;
4560
+ page: z.ZodNumber;
4561
+ pageSize: z.ZodNumber;
4562
+ }, z.core.$strip>, "query">;
4563
+ /**
4564
+ * Global + per-camera corpus KPI. Unfiltered totals; `%` on a camera row is
4565
+ * `complete(camera) / corpus total`, or `null` when the corpus is empty.
4566
+ */
4567
+ readonly getRetrainCorpusKpi: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
4568
+ total: z.ZodNumber;
4569
+ unannotated: z.ZodNumber;
4570
+ annotated: z.ZodNumber;
4571
+ complete: z.ZodNumber;
4572
+ cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4573
+ deviceId: z.ZodNumber;
4574
+ unannotated: z.ZodNumber;
4575
+ annotated: z.ZodNumber;
4576
+ complete: z.ZodNumber;
4577
+ pctOfCorpus: z.ZodNullable<z.ZodNumber>;
4578
+ }, z.core.$strip>>>;
4579
+ }, z.core.$strip>, "query">;
4248
4580
  /**
4249
4581
  * What a track can contribute, and what it already has.
4250
4582
  *
@@ -4736,9 +5068,22 @@ export declare const pipelineAnalyticsCapability: {
4736
5068
  deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
4737
5069
  frameIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4738
5070
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4739
- datasetVersionId: z.ZodOptional<z.ZodString>;
5071
+ collectionId: z.ZodOptional<z.ZodString>;
4740
5072
  batchId: z.ZodOptional<z.ZodString>;
4741
5073
  completeOnly: z.ZodOptional<z.ZodBoolean>;
5074
+ workState: z.ZodOptional<z.ZodEnum<{
5075
+ annotated: "annotated";
5076
+ complete: "complete";
5077
+ unannotated: "unannotated";
5078
+ }>>;
5079
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5080
+ animal: "animal";
5081
+ face: "face";
5082
+ package: "package";
5083
+ person: "person";
5084
+ plate: "plate";
5085
+ vehicle: "vehicle";
5086
+ }>>>;
4742
5087
  layout: z.ZodOptional<z.ZodEnum<{
4743
5088
  crops: "crops";
4744
5089
  frames: "frames";
@@ -4830,9 +5175,22 @@ export declare const pipelineAnalyticsCapability: {
4830
5175
  deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
4831
5176
  frameIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4832
5177
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4833
- datasetVersionId: z.ZodOptional<z.ZodString>;
5178
+ collectionId: z.ZodOptional<z.ZodString>;
4834
5179
  batchId: z.ZodOptional<z.ZodString>;
4835
5180
  completeOnly: z.ZodOptional<z.ZodBoolean>;
5181
+ workState: z.ZodOptional<z.ZodEnum<{
5182
+ annotated: "annotated";
5183
+ complete: "complete";
5184
+ unannotated: "unannotated";
5185
+ }>>;
5186
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5187
+ animal: "animal";
5188
+ face: "face";
5189
+ package: "package";
5190
+ person: "person";
5191
+ plate: "plate";
5192
+ vehicle: "vehicle";
5193
+ }>>>;
4836
5194
  }, z.core.$strip>;
4837
5195
  layout: z.ZodEnum<{
4838
5196
  crops: "crops";
@@ -4870,9 +5228,22 @@ export declare const pipelineAnalyticsCapability: {
4870
5228
  deviceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
4871
5229
  frameIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4872
5230
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
4873
- datasetVersionId: z.ZodOptional<z.ZodString>;
5231
+ collectionId: z.ZodOptional<z.ZodString>;
4874
5232
  batchId: z.ZodOptional<z.ZodString>;
4875
5233
  completeOnly: z.ZodOptional<z.ZodBoolean>;
5234
+ workState: z.ZodOptional<z.ZodEnum<{
5235
+ annotated: "annotated";
5236
+ complete: "complete";
5237
+ unannotated: "unannotated";
5238
+ }>>;
5239
+ classes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5240
+ animal: "animal";
5241
+ face: "face";
5242
+ package: "package";
5243
+ person: "person";
5244
+ plate: "plate";
5245
+ vehicle: "vehicle";
5246
+ }>>>;
4876
5247
  }, z.core.$strip>;
4877
5248
  layout: z.ZodEnum<{
4878
5249
  crops: "crops";
@@ -4888,168 +5259,6 @@ export declare const pipelineAnalyticsCapability: {
4888
5259
  frames: z.ZodNumber;
4889
5260
  annotations: z.ZodNumber;
4890
5261
  }, z.core.$strip>, "mutation">;
4891
- /** The counts a selection would freeze — class × camera × day/night,
4892
- * completeness — without freezing anything. Index reads only. */
4893
- readonly previewRetrainDataset: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
4894
- selection: z.ZodObject<{
4895
- deviceIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
4896
- collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4897
- frameIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4898
- }, z.core.$strip>;
4899
- completeOnly: z.ZodOptional<z.ZodBoolean>;
4900
- }, z.core.$strip>, z.ZodObject<{
4901
- frames: z.ZodNumber;
4902
- completeFrames: z.ZodNumber;
4903
- completeness: z.ZodNumber;
4904
- subjects: z.ZodNumber;
4905
- modelErrors: z.ZodNumber;
4906
- hardNegatives: z.ZodNumber;
4907
- cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4908
- macroClass: z.ZodString;
4909
- deviceId: z.ZodNumber;
4910
- lighting: z.ZodEnum<{
4911
- day: "day";
4912
- night: "night";
4913
- unknown: "unknown";
4914
- }>;
4915
- subjects: z.ZodNumber;
4916
- frames: z.ZodNumber;
4917
- }, z.core.$strip>>>;
4918
- cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4919
- deviceId: z.ZodNumber;
4920
- frames: z.ZodNumber;
4921
- completeFrames: z.ZodNumber;
4922
- }, z.core.$strip>>>;
4923
- }, z.core.$strip>, "query">;
4924
- /**
4925
- * Freeze a dataset version: the frames the selection yields (the same plan
4926
- * the annotated export builds), the hash of what they teach, the export
4927
- * parameters and the counts. Immutable — a different selection is a new
4928
- * version. Export it with `getRetrainExportUrl({ datasetVersionId })`.
4929
- */
4930
- readonly createRetrainDatasetVersion: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
4931
- name: z.ZodString;
4932
- selection: z.ZodObject<{
4933
- deviceIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
4934
- collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4935
- frameIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4936
- }, z.core.$strip>;
4937
- layout: z.ZodEnum<{
4938
- crops: "crops";
4939
- frames: "frames";
4940
- }>;
4941
- completeOnly: z.ZodBoolean;
4942
- }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
4943
- kind: z.ZodLiteral<"created">;
4944
- version: z.ZodObject<{
4945
- id: z.ZodString;
4946
- name: z.ZodString;
4947
- createdAt: z.ZodNumber;
4948
- selection: z.ZodObject<{
4949
- deviceIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
4950
- collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4951
- frameIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
4952
- }, z.core.$strip>;
4953
- layout: z.ZodEnum<{
4954
- crops: "crops";
4955
- frames: "frames";
4956
- }>;
4957
- completeOnly: z.ZodBoolean;
4958
- frameCount: z.ZodNumber;
4959
- annotationHash: z.ZodString;
4960
- manifestSchema: z.ZodString;
4961
- stats: z.ZodObject<{
4962
- frames: z.ZodNumber;
4963
- completeFrames: z.ZodNumber;
4964
- completeness: z.ZodNumber;
4965
- subjects: z.ZodNumber;
4966
- modelErrors: z.ZodNumber;
4967
- hardNegatives: z.ZodNumber;
4968
- cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4969
- macroClass: z.ZodString;
4970
- deviceId: z.ZodNumber;
4971
- lighting: z.ZodEnum<{
4972
- day: "day";
4973
- night: "night";
4974
- unknown: "unknown";
4975
- }>;
4976
- subjects: z.ZodNumber;
4977
- frames: z.ZodNumber;
4978
- }, z.core.$strip>>>;
4979
- cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
4980
- deviceId: z.ZodNumber;
4981
- frames: z.ZodNumber;
4982
- completeFrames: z.ZodNumber;
4983
- }, z.core.$strip>>>;
4984
- }, z.core.$strip>;
4985
- }, z.core.$strip>;
4986
- }, z.core.$strip>, z.ZodObject<{
4987
- kind: z.ZodLiteral<"refused">;
4988
- reason: z.ZodEnum<{
4989
- "duplicate-name": "duplicate-name";
4990
- "empty-name": "empty-name";
4991
- "no-frames": "no-frames";
4992
- }>;
4993
- }, z.core.$strip>], "kind">, "mutation">;
4994
- /** Every dataset version, newest first. */
4995
- readonly listRetrainDatasetVersions: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
4996
- id: z.ZodString;
4997
- name: z.ZodString;
4998
- createdAt: z.ZodNumber;
4999
- selection: z.ZodObject<{
5000
- deviceIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodNumber>>>;
5001
- collectionIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
5002
- frameIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
5003
- }, z.core.$strip>;
5004
- layout: z.ZodEnum<{
5005
- crops: "crops";
5006
- frames: "frames";
5007
- }>;
5008
- completeOnly: z.ZodBoolean;
5009
- frameCount: z.ZodNumber;
5010
- annotationHash: z.ZodString;
5011
- manifestSchema: z.ZodString;
5012
- stats: z.ZodObject<{
5013
- frames: z.ZodNumber;
5014
- completeFrames: z.ZodNumber;
5015
- completeness: z.ZodNumber;
5016
- subjects: z.ZodNumber;
5017
- modelErrors: z.ZodNumber;
5018
- hardNegatives: z.ZodNumber;
5019
- cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
5020
- macroClass: z.ZodString;
5021
- deviceId: z.ZodNumber;
5022
- lighting: z.ZodEnum<{
5023
- day: "day";
5024
- night: "night";
5025
- unknown: "unknown";
5026
- }>;
5027
- subjects: z.ZodNumber;
5028
- frames: z.ZodNumber;
5029
- }, z.core.$strip>>>;
5030
- cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
5031
- deviceId: z.ZodNumber;
5032
- frames: z.ZodNumber;
5033
- completeFrames: z.ZodNumber;
5034
- }, z.core.$strip>>>;
5035
- }, z.core.$strip>;
5036
- }, z.core.$strip>>>, "query">;
5037
- /** Delete a version. Its frames stay in the dataset. */
5038
- readonly deleteRetrainDatasetVersion: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
5039
- id: z.ZodString;
5040
- }, z.core.$strip>, z.ZodObject<{
5041
- deleted: z.ZodBoolean;
5042
- }, z.core.$strip>, "mutation">;
5043
- /** Does the corpus still teach what the version froze? `missingFrames`
5044
- * counts frames that left the dataset (or lost every box and tick). */
5045
- readonly verifyRetrainDatasetVersion: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
5046
- id: z.ZodString;
5047
- }, z.core.$strip>, z.ZodObject<{
5048
- found: z.ZodBoolean;
5049
- annotationHash: z.ZodString;
5050
- matches: z.ZodBoolean;
5051
- missingFrames: z.ZodNumber;
5052
- }, z.core.$strip>, "query">;
5053
5262
  /** The enabled, vision-capable LLM profiles, each saying whether a frame
5054
5263
  * sent to it leaves the house. */
5055
5264
  readonly listRetrainAssistProfiles: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
@@ -5197,6 +5406,58 @@ export declare const pipelineAnalyticsCapability: {
5197
5406
  createdAt: z.ZodNumber;
5198
5407
  frameCount: z.ZodNumber;
5199
5408
  }, z.core.$strip>>>, "query">;
5409
+ /**
5410
+ * Resolve a live training corpus selection to frame ids + stats (index
5411
+ * reads only). Same plan the annotated export builds — training plan/start
5412
+ * calls this instead of a frozen dataset version.
5413
+ */
5414
+ readonly resolveRetrainTrainingCorpus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
5415
+ collectionIds: z.ZodArray<z.ZodString>;
5416
+ workState: z.ZodDefault<z.ZodEnum<{
5417
+ annotated_or_complete: "annotated_or_complete";
5418
+ any_annotated: "any_annotated";
5419
+ complete: "complete";
5420
+ }>>;
5421
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
5422
+ kind: z.ZodLiteral<"resolved">;
5423
+ frameIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
5424
+ stats: z.ZodObject<{
5425
+ frames: z.ZodNumber;
5426
+ completeFrames: z.ZodNumber;
5427
+ completeness: z.ZodNumber;
5428
+ subjects: z.ZodNumber;
5429
+ modelErrors: z.ZodNumber;
5430
+ hardNegatives: z.ZodNumber;
5431
+ cells: z.ZodReadonly<z.ZodArray<z.ZodObject<{
5432
+ macroClass: z.ZodString;
5433
+ deviceId: z.ZodNumber;
5434
+ lighting: z.ZodEnum<{
5435
+ day: "day";
5436
+ night: "night";
5437
+ unknown: "unknown";
5438
+ }>;
5439
+ subjects: z.ZodNumber;
5440
+ frames: z.ZodNumber;
5441
+ }, z.core.$strip>>>;
5442
+ cameras: z.ZodReadonly<z.ZodArray<z.ZodObject<{
5443
+ deviceId: z.ZodNumber;
5444
+ frames: z.ZodNumber;
5445
+ completeFrames: z.ZodNumber;
5446
+ }, z.core.$strip>>>;
5447
+ }, z.core.$strip>;
5448
+ annotationHash: z.ZodString;
5449
+ layout: z.ZodEnum<{
5450
+ crops: "crops";
5451
+ frames: "frames";
5452
+ }>;
5453
+ }, z.core.$strip>, z.ZodObject<{
5454
+ kind: z.ZodLiteral<"refused">;
5455
+ reason: z.ZodEnum<{
5456
+ "no-frames": "no-frames";
5457
+ "unknown-collection": "unknown-collection";
5458
+ }>;
5459
+ detail: z.ZodString;
5460
+ }, z.core.$strip>], "kind">, "query">;
5200
5461
  readonly renameRetrainCollection: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
5201
5462
  id: z.ZodString;
5202
5463
  name: z.ZodString;