@camstack/types 1.2.318 → 1.2.320

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.
Files changed (31) hide show
  1. package/dist/addon.js +13 -4
  2. package/dist/addon.mjs +13 -4
  3. package/dist/capabilities/pipeline-executor.cap.d.ts +1 -1
  4. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +133 -79
  5. package/dist/client.js +5 -2
  6. package/dist/client.mjs +5 -2
  7. package/dist/generated/addon-api.d.ts +27 -6
  8. package/dist/generated/device-proxy.d.ts +1 -1
  9. package/dist/generated/method-access-map.d.ts +1 -1
  10. package/dist/generated/method-device-selectors.d.ts +2 -2
  11. package/dist/generated/system-proxy.d.ts +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.js +734 -346
  14. package/dist/index.mjs +697 -335
  15. package/dist/pipeline/{best-settings → auto-tune}/hardware-class.d.ts +1 -1
  16. package/dist/pipeline/auto-tune/index.d.ts +9 -0
  17. package/dist/pipeline/{best-settings → auto-tune}/plan-schemas.d.ts +74 -166
  18. package/dist/pipeline/{best-settings → auto-tune}/recommend.d.ts +23 -13
  19. package/dist/pipeline/load-balancing/capacity-shares.d.ts +37 -0
  20. package/dist/pipeline/load-balancing/effective-shares.d.ts +33 -0
  21. package/dist/pipeline/load-balancing/index.d.ts +5 -2
  22. package/dist/pipeline/load-balancing/schemas.d.ts +157 -2
  23. package/dist/pipeline/model-bound-settings.d.ts +1 -1
  24. package/dist/pipeline/step-settings-layers.d.ts +69 -0
  25. package/dist/{sleep-DyF95STh.js → sleep-AalHiRYL.js} +1 -0
  26. package/dist/{sleep-C16NCZR2.mjs → sleep-DAJ9Er57.mjs} +1 -0
  27. package/dist/types/agent-pipeline-settings.d.ts +11 -0
  28. package/package.json +1 -1
  29. package/dist/pipeline/best-settings/demand.d.ts +0 -75
  30. package/dist/pipeline/best-settings/index.d.ts +0 -10
  31. /package/dist/pipeline/{best-settings → auto-tune}/detector-performance.d.ts +0 -0
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DyF95STh.js");
2
+ const require_sleep = require("./sleep-AalHiRYL.js");
3
3
  const require_event_category = require("./event-category-DmS_tLsU.js");
4
4
  const require_err_msg = require("./err-msg-Dx2Kor0g.js");
5
5
  //#region src/generated/cap-input-defaults.ts
@@ -156,14 +156,23 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
156
156
  "searchObjectEvents": { "limit": 50 }
157
157
  },
158
158
  "pipeline-orchestrator": {
159
- "applyBestSettings": { "headroom": .4 },
159
+ "applyAutoTune": {
160
+ "headroom": .4,
161
+ "minSessionsPerDevice": 2
162
+ },
160
163
  "getPlacementStats": { "windowMs": 36e5 },
161
- "planBestSettings": { "headroom": .4 },
164
+ "planAutoTune": {
165
+ "headroom": .4,
166
+ "minSessionsPerDevice": 2
167
+ },
162
168
  "setLoadBalancingShares": {
163
169
  "nodes": {},
164
170
  "devices": {}
165
171
  },
166
- "suggestShares": { "headroom": .4 }
172
+ "suggestShares": {
173
+ "headroom": .4,
174
+ "source": "hardware"
175
+ }
167
176
  },
168
177
  "pipeline-runner": {
169
178
  "attachCamera": {
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { At as normalizeAddonInitResult, B as nodePin, Ct as PEER_BYTES_STALL_MS, D as adminUiCapability, Et as DATAPLANE_SECRET_HEADER, N as expandCapMethods, Ot as DisposerChain, Pt as emitReadiness, S as DEVICE_CHILDREN_BATCH_MAX, St as PEER_BYTES_MAX_OUTSTANDING, T as describeCustomActions, U as ReadinessRegistry, V as readNodePin, W as ReadinessTimeoutError, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, kt as BaseAddon, m as createDeviceProxy, p as isDeviceScopedCap, q as scopeKey, s as asString, t as sleep, u as parseJsonUnknown, wt as PEER_BYTES_TICKET_TTL_MS, x as viewerUiCapability, xt as PEER_BYTES_CHUNK_BYTES } from "./sleep-C16NCZR2.mjs";
1
+ import { At as normalizeAddonInitResult, B as nodePin, Ct as PEER_BYTES_STALL_MS, D as adminUiCapability, Et as DATAPLANE_SECRET_HEADER, N as expandCapMethods, Ot as DisposerChain, Pt as emitReadiness, S as DEVICE_CHILDREN_BATCH_MAX, St as PEER_BYTES_MAX_OUTSTANDING, T as describeCustomActions, U as ReadinessRegistry, V as readNodePin, W as ReadinessTimeoutError, a as asJsonObject, b as deviceOpsCapability, d as BOOT_RECOVERY_BACKOFF_MS, f as DEVICE_SCOPED_CAPS, h as createEventBusSliceSource, kt as BaseAddon, m as createDeviceProxy, p as isDeviceScopedCap, q as scopeKey, s as asString, t as sleep, u as parseJsonUnknown, wt as PEER_BYTES_TICKET_TTL_MS, x as viewerUiCapability, xt as PEER_BYTES_CHUNK_BYTES } from "./sleep-DAJ9Er57.mjs";
2
2
  import { t as EventCategory } from "./event-category-BGmz_oxW.mjs";
3
3
  import { a as DeviceType, t as errMsg } from "./err-msg-DX6i_MY4.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -155,14 +155,23 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
155
155
  "searchObjectEvents": { "limit": 50 }
156
156
  },
157
157
  "pipeline-orchestrator": {
158
- "applyBestSettings": { "headroom": .4 },
158
+ "applyAutoTune": {
159
+ "headroom": .4,
160
+ "minSessionsPerDevice": 2
161
+ },
159
162
  "getPlacementStats": { "windowMs": 36e5 },
160
- "planBestSettings": { "headroom": .4 },
163
+ "planAutoTune": {
164
+ "headroom": .4,
165
+ "minSessionsPerDevice": 2
166
+ },
161
167
  "setLoadBalancingShares": {
162
168
  "nodes": {},
163
169
  "devices": {}
164
170
  },
165
- "suggestShares": { "headroom": .4 }
171
+ "suggestShares": {
172
+ "headroom": .4,
173
+ "source": "hardware"
174
+ }
166
175
  },
167
176
  "pipeline-runner": {
168
177
  "attachCamera": {
@@ -822,7 +822,7 @@ export declare const pipelineExecutorCapability: {
822
822
  clearedDevices: z.ZodNumber;
823
823
  }, z.core.$strip>, "mutation">;
824
824
  /**
825
- * Best settings (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
825
+ * Auto tune (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
826
826
  * the object-detection root, and their binding keys) stored in THIS node's
827
827
  * per-camera detector settings — and, unless `dryRun`, remove them so the
828
828
  * running model's own defaults apply. Every other key of a camera's store
@@ -1326,26 +1326,26 @@ export declare const pipelineOrchestratorCapability: {
1326
1326
  clearedCameraOverrides: z.ZodNumber;
1327
1327
  }, z.core.$strip>, "mutation">;
1328
1328
  /**
1329
- * Best settings (D745) — DRY RUN. Recommends ONE detector family (YOLOv9)
1330
- * for the whole cluster from each node's static hardware class, the
1331
- * measured latency table and the detection demand, and lists every write
1329
+ * Auto tune (D745, D755) — DRY RUN. Recommends ONE detector family
1330
+ * (YOLOv9) for the whole cluster from each node's static hardware class
1331
+ * and the measured latency table: per device, the most accurate model
1332
+ * that sustains at least `minSessionsPerDevice` parallel sessions at the
1333
+ * camera rate with the headroom kept free (no load input), and lists every write
1332
1334
  * the apply would make: the node model pins set, the enrichment pins and
1333
1335
  * model-bound thresholds removed (node level and per camera), and the
1334
1336
  * per-camera detector thresholds cleared. Writes nothing. Step
1335
1337
  * enablement, device enablement, pins, recording, notifications, zones and
1336
1338
  * rules are never part of it. `planHash` names exactly this diff.
1337
1339
  */
1338
- readonly planBestSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1340
+ readonly planAutoTune: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1339
1341
  headroom: z.ZodDefault<z.ZodNumber>;
1340
- shares: z.ZodOptional<z.ZodObject<{
1341
- nodes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1342
- devices: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>>;
1343
- }, z.core.$strip>>;
1342
+ minSessionsPerDevice: z.ZodDefault<z.ZodNumber>;
1344
1343
  }, z.core.$strip>, z.ZodObject<{
1345
1344
  planHash: z.ZodString;
1346
1345
  family: z.ZodLiteral<"yolov9">;
1347
1346
  headroom: z.ZodNumber;
1348
- whatIf: z.ZodBoolean;
1347
+ minSessionsPerDevice: z.ZodNumber;
1348
+ cameraFps: z.ZodNumber;
1349
1349
  generatedAt: z.ZodNumber;
1350
1350
  nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1351
1351
  nodeId: z.ZodString;
@@ -1372,35 +1372,18 @@ export declare const pipelineOrchestratorCapability: {
1372
1372
  }>>;
1373
1373
  enabled: z.ZodBoolean;
1374
1374
  available: z.ZodBoolean;
1375
- demand: z.ZodNullable<z.ZodObject<{
1376
- nodeId: z.ZodString;
1377
- deviceKey: z.ZodString;
1378
- demandFps: z.ZodNumber;
1379
- maxCameraFps: z.ZodNumber;
1380
- alwaysOnCameras: z.ZodNumber;
1381
- onMotionSessions: z.ZodNumber;
1382
- onMotionSource: z.ZodEnum<{
1383
- none: "none";
1384
- "observed-24h": "observed-24h";
1385
- estimate: "estimate";
1386
- }>;
1387
- observedForMs: z.ZodNullable<z.ZodNumber>;
1388
- placement: z.ZodEnum<{
1389
- "least-loaded": "least-loaded";
1390
- share: "share";
1391
- }>;
1392
- }, z.core.$strip>>;
1393
1375
  chosen: z.ZodNullable<z.ZodObject<{
1394
1376
  modelId: z.ZodString;
1395
1377
  p50Ms: z.ZodNumber;
1396
1378
  fps: z.ZodNumber;
1397
1379
  measured: z.ZodBoolean;
1398
- utilisation: z.ZodNumber;
1380
+ capacitySessions: z.ZodNumber;
1399
1381
  personRecall: z.ZodNumber;
1400
1382
  }, z.core.$strip>>;
1401
1383
  reasons: z.ZodReadonly<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1402
- kind: z.ZodLiteral<"fits">;
1403
- utilisation: z.ZodNumber;
1384
+ kind: z.ZodLiteral<"capacity">;
1385
+ sessions: z.ZodNumber;
1386
+ minSessions: z.ZodNumber;
1404
1387
  }, z.core.$strip>, z.ZodObject<{
1405
1388
  kind: z.ZodLiteral<"tie-faster">;
1406
1389
  over: z.ZodString;
@@ -1412,13 +1395,11 @@ export declare const pipelineOrchestratorCapability: {
1412
1395
  limitedBy: z.ZodString;
1413
1396
  }, z.core.$strip>, z.ZodObject<{
1414
1397
  kind: z.ZodLiteral<"no-fit-lightest">;
1415
- utilisation: z.ZodNumber;
1398
+ sessions: z.ZodNumber;
1399
+ minSessions: z.ZodNumber;
1416
1400
  }, z.core.$strip>, z.ZodObject<{
1417
1401
  kind: z.ZodLiteral<"derived-latency">;
1418
1402
  modelId: z.ZodString;
1419
- }, z.core.$strip>, z.ZodObject<{
1420
- kind: z.ZodLiteral<"estimated-load">;
1421
- observedForMs: z.ZodNullable<z.ZodNumber>;
1422
1403
  }, z.core.$strip>, z.ZodObject<{
1423
1404
  kind: z.ZodLiteral<"cpu-device">;
1424
1405
  }, z.core.$strip>, z.ZodObject<{
@@ -1453,8 +1434,9 @@ export declare const pipelineOrchestratorCapability: {
1453
1434
  }, z.core.$strip>], "kind">>>;
1454
1435
  }, z.core.$strip>>>;
1455
1436
  reasons: z.ZodReadonly<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1456
- kind: z.ZodLiteral<"fits">;
1457
- utilisation: z.ZodNumber;
1437
+ kind: z.ZodLiteral<"capacity">;
1438
+ sessions: z.ZodNumber;
1439
+ minSessions: z.ZodNumber;
1458
1440
  }, z.core.$strip>, z.ZodObject<{
1459
1441
  kind: z.ZodLiteral<"tie-faster">;
1460
1442
  over: z.ZodString;
@@ -1466,13 +1448,11 @@ export declare const pipelineOrchestratorCapability: {
1466
1448
  limitedBy: z.ZodString;
1467
1449
  }, z.core.$strip>, z.ZodObject<{
1468
1450
  kind: z.ZodLiteral<"no-fit-lightest">;
1469
- utilisation: z.ZodNumber;
1451
+ sessions: z.ZodNumber;
1452
+ minSessions: z.ZodNumber;
1470
1453
  }, z.core.$strip>, z.ZodObject<{
1471
1454
  kind: z.ZodLiteral<"derived-latency">;
1472
1455
  modelId: z.ZodString;
1473
- }, z.core.$strip>, z.ZodObject<{
1474
- kind: z.ZodLiteral<"estimated-load">;
1475
- observedForMs: z.ZodNullable<z.ZodNumber>;
1476
1456
  }, z.core.$strip>, z.ZodObject<{
1477
1457
  kind: z.ZodLiteral<"cpu-device">;
1478
1458
  }, z.core.$strip>, z.ZodObject<{
@@ -1549,14 +1529,15 @@ export declare const pipelineOrchestratorCapability: {
1549
1529
  }, z.core.$strip>], "kind">>>;
1550
1530
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1551
1531
  /**
1552
- * Best settings (D745) — APPLY the plan the operator confirmed. Recomputes
1532
+ * Auto tune (D745) — APPLY the plan the operator confirmed. Recomputes
1553
1533
  * the plan and refuses (`stale`, with the fresh plan) when its hash is not
1554
1534
  * `planHash`, so what is written is exactly the confirmed diff. Offline
1555
1535
  * nodes are skipped; there is no undo.
1556
1536
  */
1557
- readonly applyBestSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1537
+ readonly applyAutoTune: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1558
1538
  planHash: z.ZodString;
1559
1539
  headroom: z.ZodDefault<z.ZodNumber>;
1540
+ minSessionsPerDevice: z.ZodDefault<z.ZodNumber>;
1560
1541
  }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
1561
1542
  kind: z.ZodLiteral<"applied">;
1562
1543
  planHash: z.ZodString;
@@ -1590,7 +1571,8 @@ export declare const pipelineOrchestratorCapability: {
1590
1571
  planHash: z.ZodString;
1591
1572
  family: z.ZodLiteral<"yolov9">;
1592
1573
  headroom: z.ZodNumber;
1593
- whatIf: z.ZodBoolean;
1574
+ minSessionsPerDevice: z.ZodNumber;
1575
+ cameraFps: z.ZodNumber;
1594
1576
  generatedAt: z.ZodNumber;
1595
1577
  nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1596
1578
  nodeId: z.ZodString;
@@ -1617,35 +1599,18 @@ export declare const pipelineOrchestratorCapability: {
1617
1599
  }>>;
1618
1600
  enabled: z.ZodBoolean;
1619
1601
  available: z.ZodBoolean;
1620
- demand: z.ZodNullable<z.ZodObject<{
1621
- nodeId: z.ZodString;
1622
- deviceKey: z.ZodString;
1623
- demandFps: z.ZodNumber;
1624
- maxCameraFps: z.ZodNumber;
1625
- alwaysOnCameras: z.ZodNumber;
1626
- onMotionSessions: z.ZodNumber;
1627
- onMotionSource: z.ZodEnum<{
1628
- none: "none";
1629
- "observed-24h": "observed-24h";
1630
- estimate: "estimate";
1631
- }>;
1632
- observedForMs: z.ZodNullable<z.ZodNumber>;
1633
- placement: z.ZodEnum<{
1634
- "least-loaded": "least-loaded";
1635
- share: "share";
1636
- }>;
1637
- }, z.core.$strip>>;
1638
1602
  chosen: z.ZodNullable<z.ZodObject<{
1639
1603
  modelId: z.ZodString;
1640
1604
  p50Ms: z.ZodNumber;
1641
1605
  fps: z.ZodNumber;
1642
1606
  measured: z.ZodBoolean;
1643
- utilisation: z.ZodNumber;
1607
+ capacitySessions: z.ZodNumber;
1644
1608
  personRecall: z.ZodNumber;
1645
1609
  }, z.core.$strip>>;
1646
1610
  reasons: z.ZodReadonly<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1647
- kind: z.ZodLiteral<"fits">;
1648
- utilisation: z.ZodNumber;
1611
+ kind: z.ZodLiteral<"capacity">;
1612
+ sessions: z.ZodNumber;
1613
+ minSessions: z.ZodNumber;
1649
1614
  }, z.core.$strip>, z.ZodObject<{
1650
1615
  kind: z.ZodLiteral<"tie-faster">;
1651
1616
  over: z.ZodString;
@@ -1657,13 +1622,11 @@ export declare const pipelineOrchestratorCapability: {
1657
1622
  limitedBy: z.ZodString;
1658
1623
  }, z.core.$strip>, z.ZodObject<{
1659
1624
  kind: z.ZodLiteral<"no-fit-lightest">;
1660
- utilisation: z.ZodNumber;
1625
+ sessions: z.ZodNumber;
1626
+ minSessions: z.ZodNumber;
1661
1627
  }, z.core.$strip>, z.ZodObject<{
1662
1628
  kind: z.ZodLiteral<"derived-latency">;
1663
1629
  modelId: z.ZodString;
1664
- }, z.core.$strip>, z.ZodObject<{
1665
- kind: z.ZodLiteral<"estimated-load">;
1666
- observedForMs: z.ZodNullable<z.ZodNumber>;
1667
1630
  }, z.core.$strip>, z.ZodObject<{
1668
1631
  kind: z.ZodLiteral<"cpu-device">;
1669
1632
  }, z.core.$strip>, z.ZodObject<{
@@ -1698,8 +1661,9 @@ export declare const pipelineOrchestratorCapability: {
1698
1661
  }, z.core.$strip>], "kind">>>;
1699
1662
  }, z.core.$strip>>>;
1700
1663
  reasons: z.ZodReadonly<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1701
- kind: z.ZodLiteral<"fits">;
1702
- utilisation: z.ZodNumber;
1664
+ kind: z.ZodLiteral<"capacity">;
1665
+ sessions: z.ZodNumber;
1666
+ minSessions: z.ZodNumber;
1703
1667
  }, z.core.$strip>, z.ZodObject<{
1704
1668
  kind: z.ZodLiteral<"tie-faster">;
1705
1669
  over: z.ZodString;
@@ -1711,13 +1675,11 @@ export declare const pipelineOrchestratorCapability: {
1711
1675
  limitedBy: z.ZodString;
1712
1676
  }, z.core.$strip>, z.ZodObject<{
1713
1677
  kind: z.ZodLiteral<"no-fit-lightest">;
1714
- utilisation: z.ZodNumber;
1678
+ sessions: z.ZodNumber;
1679
+ minSessions: z.ZodNumber;
1715
1680
  }, z.core.$strip>, z.ZodObject<{
1716
1681
  kind: z.ZodLiteral<"derived-latency">;
1717
1682
  modelId: z.ZodString;
1718
- }, z.core.$strip>, z.ZodObject<{
1719
- kind: z.ZodLiteral<"estimated-load">;
1720
- observedForMs: z.ZodNullable<z.ZodNumber>;
1721
1683
  }, z.core.$strip>, z.ZodObject<{
1722
1684
  kind: z.ZodLiteral<"cpu-device">;
1723
1685
  }, z.core.$strip>, z.ZodObject<{
@@ -1855,17 +1817,27 @@ export declare const pipelineOrchestratorCapability: {
1855
1817
  }, z.core.$strip>>>;
1856
1818
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1857
1819
  /**
1858
- * Load balancing (D748) — shares proportional to each node's measured
1859
- * capacity at the models Best settings would pick, iterated (≤ 3 rounds)
1860
- * until the shares stop moving; per device, an ADVISORY session cap.
1861
- * Writes nothing.
1820
+ * Load balancing (D748, D755) — shares proportional to each node's
1821
+ * capacity in parallel sessions: from the latency table at the models
1822
+ * Auto tune picks (`hardware`), or from node benchmark results
1823
+ * (`benchmark`, each node without results falling back to `hardware` and
1824
+ * saying so). The automatic shares are exactly this answer. Per device,
1825
+ * an ADVISORY session cap. Writes nothing.
1862
1826
  */
1863
1827
  readonly suggestShares: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1864
1828
  headroom: z.ZodDefault<z.ZodNumber>;
1829
+ source: z.ZodDefault<z.ZodEnum<{
1830
+ hardware: "hardware";
1831
+ benchmark: "benchmark";
1832
+ }>>;
1865
1833
  }, z.core.$strip>, z.ZodObject<{
1866
1834
  headroom: z.ZodNumber;
1835
+ source: z.ZodEnum<{
1836
+ hardware: "hardware";
1837
+ benchmark: "benchmark";
1838
+ }>;
1867
1839
  cameraFps: z.ZodNumber;
1868
- iterations: z.ZodNumber;
1840
+ minSessionsPerDevice: z.ZodNumber;
1869
1841
  nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1870
1842
  nodeId: z.ZodString;
1871
1843
  share: z.ZodNullable<z.ZodNumber>;
@@ -1879,13 +1851,80 @@ export declare const pipelineOrchestratorCapability: {
1879
1851
  suggestedMaxSessions: z.ZodNullable<z.ZodNumber>;
1880
1852
  }, z.core.$strip>>>;
1881
1853
  skippedReason: z.ZodNullable<z.ZodString>;
1854
+ capacitySource: z.ZodNullable<z.ZodEnum<{
1855
+ hardware: "hardware";
1856
+ benchmark: "benchmark";
1857
+ }>>;
1858
+ capacityFallback: z.ZodNullable<z.ZodEnum<{
1859
+ "no-benchmark-results": "no-benchmark-results";
1860
+ "partial-benchmark-results": "partial-benchmark-results";
1861
+ }>>;
1862
+ }, z.core.$strip>>>;
1863
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1864
+ /**
1865
+ * Load balancing (D750) — the shares placement reads now: the source
1866
+ * (automatic capacity shares or the operator's sliders), each node's and
1867
+ * device's configured share, and the effective share after a node or
1868
+ * device that cannot take sessions gave its share to the others.
1869
+ */
1870
+ readonly getEffectiveShares: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
1871
+ source: z.ZodEnum<{
1872
+ manual: "manual";
1873
+ hardware: "hardware";
1874
+ benchmark: "benchmark";
1875
+ }>;
1876
+ policy: z.ZodEnum<{
1877
+ "least-loaded": "least-loaded";
1878
+ share: "share";
1879
+ }>;
1880
+ autoPending: z.ZodBoolean;
1881
+ computedAt: z.ZodNullable<z.ZodNumber>;
1882
+ trigger: z.ZodNullable<z.ZodString>;
1883
+ nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1884
+ nodeId: z.ZodString;
1885
+ eligible: z.ZodBoolean;
1886
+ configuredPct: z.ZodNumber;
1887
+ effectivePct: z.ZodNumber;
1888
+ capacitySource: z.ZodNullable<z.ZodEnum<{
1889
+ hardware: "hardware";
1890
+ benchmark: "benchmark";
1891
+ }>>;
1892
+ capacityFallback: z.ZodNullable<z.ZodEnum<{
1893
+ "no-benchmark-results": "no-benchmark-results";
1894
+ "partial-benchmark-results": "partial-benchmark-results";
1895
+ }>>;
1896
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1897
+ deviceKey: z.ZodString;
1898
+ eligible: z.ZodBoolean;
1899
+ configuredPct: z.ZodNumber;
1900
+ effectivePct: z.ZodNumber;
1901
+ }, z.core.$strip>>>;
1882
1902
  }, z.core.$strip>>>;
1903
+ nodeWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
1904
+ deviceWeights: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>;
1883
1905
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1906
+ /**
1907
+ * Load balancing (D750, D755) — switch the share source: `hardware`
1908
+ * (automatic, from static capacity), `benchmark` (automatic, from node
1909
+ * benchmark results) or `manual`. Going manual seeds the sliders with the
1910
+ * current automatic shares (one atomic write), so nothing jumps; going
1911
+ * to an automatic source recomputes at once.
1912
+ */
1913
+ readonly setShareSource: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1914
+ source: z.ZodEnum<{
1915
+ manual: "manual";
1916
+ hardware: "hardware";
1917
+ benchmark: "benchmark";
1918
+ }>;
1919
+ }, z.core.$strip>, z.ZodObject<{
1920
+ success: z.ZodLiteral<true>;
1921
+ }, z.core.$strip>, "mutation">;
1884
1922
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
1885
1923
  readonly getCameraSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1886
1924
  deviceId: z.ZodNumber;
1887
1925
  }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
1888
1926
  stepToggles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1927
+ stepSettings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
1889
1928
  stepOverridesByDevice: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
1890
1929
  modelId: z.ZodOptional<z.ZodString>;
1891
1930
  settings: z.ZodOptional<z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
@@ -1931,6 +1970,21 @@ export declare const pipelineOrchestratorCapability: {
1931
1970
  }, z.core.$strip>, z.ZodObject<{
1932
1971
  success: z.ZodLiteral<true>;
1933
1972
  }, z.core.$strip>, "mutation">;
1973
+ /**
1974
+ * Write or clear one step's CAMERA-WIDE settings (D754) — the fields this
1975
+ * camera overrides on every accelerator it runs on. `settings` is the
1976
+ * whole field-level bag for that step (only the overridden keys; a
1977
+ * model-bound field travels with its binding key); `null` or `{}` clears
1978
+ * it. Merged at dispatch between the node base and the per-(node,device)
1979
+ * override, key by key.
1980
+ */
1981
+ readonly setCameraStepSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1982
+ deviceId: z.ZodNumber;
1983
+ addonId: z.ZodString;
1984
+ settings: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1985
+ }, z.core.$strip>, z.ZodObject<{
1986
+ success: z.ZodLiteral<true>;
1987
+ }, z.core.$strip>, "mutation">;
1934
1988
  /** Write or clear the wholesale per-agent pipeline override. Pass `pipeline: null` to drop the override. */
1935
1989
  readonly setCameraPipelineForAgent: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1936
1990
  deviceId: z.ZodNumber;
package/dist/client.js CHANGED
@@ -6082,6 +6082,7 @@ function createDeviceProxy(api, binding, opts) {
6082
6082
  setCameraStepToggle: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepToggle", "mutation", input),
6083
6083
  getCameraStepOverrides: (input) => dispatchSystem("pipelineOrchestrator", "getCameraStepOverrides", "query", input),
6084
6084
  setCameraStepOverride: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepOverride", "mutation", input),
6085
+ setCameraStepSettings: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepSettings", "mutation", input),
6085
6086
  setCameraPipelineForAgent: (input) => dispatchSystem("pipelineOrchestrator", "setCameraPipelineForAgent", "mutation", input),
6086
6087
  resolvePipeline: (input) => dispatchSystem("pipelineOrchestrator", "resolvePipeline", "query", input),
6087
6088
  getCameraSwitches: (input) => dispatchSystem("pipelineOrchestrator", "getCameraSwitches", "query", input),
@@ -7499,11 +7500,13 @@ function createSystemProxy(api) {
7499
7500
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
7500
7501
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
7501
7502
  resetNodePipelineDefaults: (input) => dispatch("pipelineOrchestrator", "resetNodePipelineDefaults", "mutation", input),
7502
- planBestSettings: (input) => dispatch("pipelineOrchestrator", "planBestSettings", "query", input),
7503
- applyBestSettings: (input) => dispatch("pipelineOrchestrator", "applyBestSettings", "mutation", input),
7503
+ planAutoTune: (input) => dispatch("pipelineOrchestrator", "planAutoTune", "query", input),
7504
+ applyAutoTune: (input) => dispatch("pipelineOrchestrator", "applyAutoTune", "mutation", input),
7504
7505
  setLoadBalancingShares: (input) => dispatch("pipelineOrchestrator", "setLoadBalancingShares", "mutation", input),
7505
7506
  getPlacementStats: (input) => dispatch("pipelineOrchestrator", "getPlacementStats", "query", input),
7506
7507
  suggestShares: (input) => dispatch("pipelineOrchestrator", "suggestShares", "query", input),
7508
+ getEffectiveShares: (input) => dispatch("pipelineOrchestrator", "getEffectiveShares", "query", input),
7509
+ setShareSource: (input) => dispatch("pipelineOrchestrator", "setShareSource", "mutation", input),
7507
7510
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
7508
7511
  setCameraSensors: (input) => dispatch("pipelineOrchestrator", "setCameraSensors", "mutation", input),
7509
7512
  reconcileFromDisk: (input) => dispatch("pipelineOrchestrator", "reconcileFromDisk", "mutation", input),
package/dist/client.mjs CHANGED
@@ -6081,6 +6081,7 @@ function createDeviceProxy(api, binding, opts) {
6081
6081
  setCameraStepToggle: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepToggle", "mutation", input),
6082
6082
  getCameraStepOverrides: (input) => dispatchSystem("pipelineOrchestrator", "getCameraStepOverrides", "query", input),
6083
6083
  setCameraStepOverride: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepOverride", "mutation", input),
6084
+ setCameraStepSettings: (input) => dispatchSystem("pipelineOrchestrator", "setCameraStepSettings", "mutation", input),
6084
6085
  setCameraPipelineForAgent: (input) => dispatchSystem("pipelineOrchestrator", "setCameraPipelineForAgent", "mutation", input),
6085
6086
  resolvePipeline: (input) => dispatchSystem("pipelineOrchestrator", "resolvePipeline", "query", input),
6086
6087
  getCameraSwitches: (input) => dispatchSystem("pipelineOrchestrator", "getCameraSwitches", "query", input),
@@ -7498,11 +7499,13 @@ function createSystemProxy(api) {
7498
7499
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
7499
7500
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
7500
7501
  resetNodePipelineDefaults: (input) => dispatch("pipelineOrchestrator", "resetNodePipelineDefaults", "mutation", input),
7501
- planBestSettings: (input) => dispatch("pipelineOrchestrator", "planBestSettings", "query", input),
7502
- applyBestSettings: (input) => dispatch("pipelineOrchestrator", "applyBestSettings", "mutation", input),
7502
+ planAutoTune: (input) => dispatch("pipelineOrchestrator", "planAutoTune", "query", input),
7503
+ applyAutoTune: (input) => dispatch("pipelineOrchestrator", "applyAutoTune", "mutation", input),
7503
7504
  setLoadBalancingShares: (input) => dispatch("pipelineOrchestrator", "setLoadBalancingShares", "mutation", input),
7504
7505
  getPlacementStats: (input) => dispatch("pipelineOrchestrator", "getPlacementStats", "query", input),
7505
7506
  suggestShares: (input) => dispatch("pipelineOrchestrator", "suggestShares", "query", input),
7507
+ getEffectiveShares: (input) => dispatch("pipelineOrchestrator", "getEffectiveShares", "query", input),
7508
+ setShareSource: (input) => dispatch("pipelineOrchestrator", "setShareSource", "mutation", input),
7506
7509
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
7507
7510
  setCameraSensors: (input) => dispatch("pipelineOrchestrator", "setCameraSensors", "mutation", input),
7508
7511
  reconcileFromDisk: (input) => dispatch("pipelineOrchestrator", "reconcileFromDisk", "mutation", input),
@@ -6595,18 +6595,18 @@ export type AppRouter = TrpcCoreRouter<{
6595
6595
  output: z.infer<typeof pipelineOrchestratorCapability.methods.resetNodePipelineDefaults.output>;
6596
6596
  meta: object;
6597
6597
  }>;
6598
- planBestSettings: TRPCQueryProcedure<{
6598
+ planAutoTune: TRPCQueryProcedure<{
6599
6599
  input: {
6600
6600
  [x: string]: unknown;
6601
- } & z.input<typeof pipelineOrchestratorCapability.methods.planBestSettings.input>;
6602
- output: z.infer<typeof pipelineOrchestratorCapability.methods.planBestSettings.output>;
6601
+ } & z.input<typeof pipelineOrchestratorCapability.methods.planAutoTune.input>;
6602
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.planAutoTune.output>;
6603
6603
  meta: object;
6604
6604
  }>;
6605
- applyBestSettings: TRPCMutationProcedure<{
6605
+ applyAutoTune: TRPCMutationProcedure<{
6606
6606
  input: {
6607
6607
  [x: string]: unknown;
6608
- } & z.input<typeof pipelineOrchestratorCapability.methods.applyBestSettings.input>;
6609
- output: z.infer<typeof pipelineOrchestratorCapability.methods.applyBestSettings.output>;
6608
+ } & z.input<typeof pipelineOrchestratorCapability.methods.applyAutoTune.input>;
6609
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.applyAutoTune.output>;
6610
6610
  meta: object;
6611
6611
  }>;
6612
6612
  setLoadBalancingShares: TRPCMutationProcedure<{
@@ -6630,6 +6630,20 @@ export type AppRouter = TrpcCoreRouter<{
6630
6630
  output: z.infer<typeof pipelineOrchestratorCapability.methods.suggestShares.output>;
6631
6631
  meta: object;
6632
6632
  }>;
6633
+ getEffectiveShares: TRPCQueryProcedure<{
6634
+ input: {
6635
+ nodeId?: string | undefined;
6636
+ } | undefined;
6637
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.getEffectiveShares.output>;
6638
+ meta: object;
6639
+ }>;
6640
+ setShareSource: TRPCMutationProcedure<{
6641
+ input: {
6642
+ [x: string]: unknown;
6643
+ } & z.input<typeof pipelineOrchestratorCapability.methods.setShareSource.input>;
6644
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.setShareSource.output>;
6645
+ meta: object;
6646
+ }>;
6633
6647
  getCameraSettings: TRPCQueryProcedure<{
6634
6648
  input: {
6635
6649
  [x: string]: unknown;
@@ -6658,6 +6672,13 @@ export type AppRouter = TrpcCoreRouter<{
6658
6672
  output: z.infer<typeof pipelineOrchestratorCapability.methods.setCameraStepOverride.output>;
6659
6673
  meta: object;
6660
6674
  }>;
6675
+ setCameraStepSettings: TRPCMutationProcedure<{
6676
+ input: {
6677
+ [x: string]: unknown;
6678
+ } & z.input<typeof pipelineOrchestratorCapability.methods.setCameraStepSettings.input>;
6679
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.setCameraStepSettings.output>;
6680
+ meta: object;
6681
+ }>;
6661
6682
  setCameraPipelineForAgent: TRPCMutationProcedure<{
6662
6683
  input: {
6663
6684
  [x: string]: unknown;
@@ -300,7 +300,7 @@ export interface DeviceProxy {
300
300
  readonly notificationRules: Pick<InferDeviceProxyCap<typeof notificationRulesCapability>, 'setDeviceMuted'>;
301
301
  readonly osdManager: Pick<InferDeviceProxyCap<typeof osdManagerCapability>, 'getDeviceOsd' | 'getSourceCatalog' | 'setSlotBinding' | 'clearSlotBinding' | 'previewSlot' | 'renderDevice'>;
302
302
  readonly pipelineExecutor: Pick<InferDeviceProxyCap<typeof pipelineExecutorCapability>, 'runPipeline' | 'runPipelineBatch'>;
303
- readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'setPipelineDevicePin' | 'getPipelineDevicePin' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | 'getCameraSettings' | 'setCameraStepToggle' | 'getCameraStepOverrides' | 'setCameraStepOverride' | 'setCameraPipelineForAgent' | 'resolvePipeline' | 'getCameraSwitches' | 'setCameraSwitch' | 'getCameraStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
303
+ readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'setPipelineDevicePin' | 'getPipelineDevicePin' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | 'getCameraSettings' | 'setCameraStepToggle' | 'getCameraStepOverrides' | 'setCameraStepOverride' | 'setCameraStepSettings' | 'setCameraPipelineForAgent' | 'resolvePipeline' | 'getCameraSwitches' | 'setCameraSwitch' | 'getCameraStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
304
304
  readonly pipelineRunner: Pick<InferDeviceProxyCap<typeof pipelineRunnerCapability>, 'detachCamera' | 'getCameraMetrics' | 'requestOccupancyBurst' | 'runDetailSubtree' | 'parkTrackFrame' | 'getParkedTrackFrame' | 'releaseParkedTrackFrames'>;
305
305
  readonly plateGallery: Pick<InferDeviceProxyCap<typeof plateGalleryCapability>, 'listPlates' | 'getPlateByTrack'>;
306
306
  readonly recordingArchive: Pick<InferDeviceProxyCap<typeof recordingArchiveCapability>, 'getDeviceConfig' | 'locateSegment' | 'readSegmentBytes' | 'readGopBytes' | 'readWindowBytes' | 'setDeviceConfig' | 'rescanStorage' | 'pruneFootage' | 'deleteFootprint' | 'renderGif' | 'renderClip' | 'getStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1232 method paths across 165 capabilities.
9
+ * Coverage: 1235 method paths across 165 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,8 +6,8 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 511 methods carry a device reference, of which
10
- * 161 are on SYSTEM-scope caps.
9
+ * Coverage: 512 methods carry a device reference, of which
10
+ * 162 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
13
13
  * a numeric device field (targets[].deviceId) are all mapped; the matcher
@@ -88,7 +88,7 @@ export interface SystemProxy {
88
88
  readonly notificationRules: Pick<InferProvider<typeof notificationRulesCapability>, 'listRules' | 'getRule' | 'createRule' | 'updateRule' | 'deleteRule' | 'setRuleEnabled' | 'listSequences' | 'getSequence' | 'createSequence' | 'updateSequence' | 'deleteSequence' | 'getClipRetentionAsks' | 'listDeviceMutes' | 'testRule' | 'previewStateSummary' | 'getConditionCatalog' | 'getTemplateCatalog' | 'previewTemplate' | 'getHistory' | 'getRuleLastRuns' | 'resolveArtifactUrl' | 'listSnoozes' | 'createSnooze' | 'cancelSnooze' | 'getAlarmConfig' | 'setAlarmConfig' | 'createAlarmProfile' | 'renameAlarmProfile' | 'deleteAlarmProfile' | 'activateAlarmProfile' | 'getAlarmSensors'>;
89
89
  readonly osdManager: Pick<InferProvider<typeof osdManagerCapability>, 'getConditionSupport' | 'copyDeviceConfiguration' | 'listTemplates' | 'upsertTemplate' | 'deleteTemplate'>;
90
90
  readonly pipelineExecutor: Pick<InferProvider<typeof pipelineExecutorCapability>, 'getAvailableEngines' | 'getSelectedEngine' | 'getDefaultSteps' | 'getEngineProvisioning' | 'getVideoPipelineSteps' | 'setVideoPipelineSteps' | 'clearDeviceOverrides' | 'clearModelBoundDeviceOverrides' | 'getInferenceDeviceHealth' | 'rearmInferenceDevice' | 'getSchema' | 'getGlobalSteps' | 'getGlobalPipelineConfig' | 'getOrchestratorConfigSchema' | 'validatePipeline' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate' | 'getCapabilities' | 'getAddonModels' | 'downloadModel' | 'deleteModel' | 'cacheFrameInPool' | 'inferCached' | 'uncacheFrame' | 'getEffectiveTuning' | 'listLoadedEngines' | 'spinEngine' | 'killEngine' | 'listReferenceImages' | 'getReferenceImage' | 'getReferenceAudioFiles' | 'getReferenceAudio' | 'getAudioCapabilities' | 'runAudioTest' | 'getDetectionConfigSchema'>;
91
- readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'requestOccupancyLook' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getClusterModelChoice' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAudioAssignments' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'planBestSettings' | 'applyBestSettings' | 'setLoadBalancingShares' | 'getPlacementStats' | 'suggestShares' | 'getCameraStatuses' | 'setCameraSensors' | 'reconcileFromDisk' | 'getReconcileFromDiskStatus' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
91
+ readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'requestOccupancyLook' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getClusterModelChoice' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAudioAssignments' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'planAutoTune' | 'applyAutoTune' | 'setLoadBalancingShares' | 'getPlacementStats' | 'suggestShares' | 'getEffectiveShares' | 'setShareSource' | 'getCameraStatuses' | 'setCameraSensors' | 'reconcileFromDisk' | 'getReconcileFromDiskStatus' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
92
92
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras' | 'getNativeCrop' | 'runStatelessStep'>;
93
93
  readonly plateGallery: Pick<InferProvider<typeof plateGalleryCapability>, 'getPlateMedia' | 'searchPlates' | 'suggestPlateClusters' | 'correctPlateText' | 'deletePlate' | 'listVehicles' | 'createVehicle' | 'renameVehicle' | 'deleteVehicle' | 'listVehicleSamples' | 'removeVehicleSample' | 'assignPlate' | 'unassignPlate' | 'assignPlates' | 'unassignPlates'>;
94
94
  readonly recordingArchive: Pick<InferProvider<typeof recordingArchiveCapability>, 'getAvailabilityBatch' | 'getDaysWithRecordingsBatch' | 'getStorageUsage' | 'listOpsLog' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'refreshStorageLocationsForMigration' | 'startStorageMigrationMove' | 'getStorageMigrationMoveStatus' | 'cancelStorageMigrationMove' | 'relocateFootage' | 'listRelocateJobs' | 'getRelocateResidue' | 'reconcileLedgerAgainstDisk' | 'cancelRelocateJob' | 'planStorageRebalance' | 'startStorageRebalance' | 'getPlacement' | 'setDevicePlacement'>;
package/dist/index.d.ts CHANGED
@@ -268,7 +268,8 @@ export { type ProviderMotionData, ProviderMotionDataSchema, providerMotionEvent,
268
268
  export { type FormatRunnableModel, stepModelRunsOnFormat, } from './pipeline/step-format-runnable.js';
269
269
  export { isRemovedModelId, REMOVED_MODEL_IDS } from './pipeline/removed-model-ids.js';
270
270
  export { applyModelBoundSettings, clearModelBoundOverrides, clearModelBoundSetting, collectModelBoundKeys, hasModelBoundOverrides, type InapplicableModelBoundOverride, modelBindingKey, type ModelBoundSettingsBag, type ModelBoundSettingSource, type ModelBoundSettingState, resolveModelBoundSetting, writeModelBoundSetting, } from './pipeline/model-bound-settings.js';
271
- export * from './pipeline/best-settings/index.js';
271
+ export { diffStepSettings, effectiveStepSettings, fieldsPinnedAtValueBelow, fieldUnitKeys, mergeSettingsBags, settingsBelow, settingValuesEqual, type StepSettingSource, type StepSettingsBag, type StepSettingsLayers, stepSettingSource, withFieldFrom, withoutField, } from './pipeline/step-settings-layers.js';
272
+ export * from './pipeline/auto-tune/index.js';
272
273
  export * from './pipeline/load-balancing/index.js';
273
274
  export { deriveRootFaceRefineRect, ROOT_FACE_REFINE_INPUT_PX, ROOT_FACE_REFINE_SCALE, } from './pipeline/root-face-crop.js';
274
275
  export { DEFAULT_DETAIL_CROP_CONVENTION, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, type DetailCropConvention, DetailCropConventionSchema, type DetailCropRect, deriveDetailCropRect, FULL_IMAGE_BBOX, type HydratedSettingsSection, type HydratedSettingsView, pickDetailCropConvention, readDetailCropConvention, } from './pipeline/detail-crop.js';