@camstack/types 1.2.317 → 1.2.319

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.js CHANGED
@@ -16,7 +16,7 @@ const require_err_msg = require("./err-msg-Dx2Kor0g.js");
16
16
  * Plain data, zero Zod: a forked runner must not import the schema barrel
17
17
  * (~144MB RSS per runner — D28).
18
18
  *
19
- * Coverage: 25 caps, 60 methods with defaults.
19
+ * Coverage: 25 caps, 63 methods with defaults.
20
20
  */
21
21
  var CAP_INPUT_DEFAULTS = Object.freeze({
22
22
  "addons": { "getLogs": { "limit": 100 } },
@@ -156,8 +156,14 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
156
156
  "searchObjectEvents": { "limit": 50 }
157
157
  },
158
158
  "pipeline-orchestrator": {
159
- "applyBestSettings": { "headroom": .4 },
160
- "planBestSettings": { "headroom": .4 }
159
+ "applyAutoTune": { "headroom": .4 },
160
+ "getPlacementStats": { "windowMs": 36e5 },
161
+ "planAutoTune": { "headroom": .4 },
162
+ "setLoadBalancingShares": {
163
+ "nodes": {},
164
+ "devices": {}
165
+ },
166
+ "suggestShares": { "headroom": .4 }
161
167
  },
162
168
  "pipeline-runner": {
163
169
  "attachCamera": {
package/dist/addon.mjs CHANGED
@@ -15,7 +15,7 @@ import { a as DeviceType, t as errMsg } from "./err-msg-DX6i_MY4.mjs";
15
15
  * Plain data, zero Zod: a forked runner must not import the schema barrel
16
16
  * (~144MB RSS per runner — D28).
17
17
  *
18
- * Coverage: 25 caps, 60 methods with defaults.
18
+ * Coverage: 25 caps, 63 methods with defaults.
19
19
  */
20
20
  var CAP_INPUT_DEFAULTS = Object.freeze({
21
21
  "addons": { "getLogs": { "limit": 100 } },
@@ -155,8 +155,14 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
155
155
  "searchObjectEvents": { "limit": 50 }
156
156
  },
157
157
  "pipeline-orchestrator": {
158
- "applyBestSettings": { "headroom": .4 },
159
- "planBestSettings": { "headroom": .4 }
158
+ "applyAutoTune": { "headroom": .4 },
159
+ "getPlacementStats": { "windowMs": 36e5 },
160
+ "planAutoTune": { "headroom": .4 },
161
+ "setLoadBalancingShares": {
162
+ "nodes": {},
163
+ "devices": {}
164
+ },
165
+ "suggestShares": { "headroom": .4 }
160
166
  },
161
167
  "pipeline-runner": {
162
168
  "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
@@ -1175,17 +1175,6 @@ export declare const pipelineOrchestratorCapability: {
1175
1175
  }, z.core.$strip>, z.ZodObject<{
1176
1176
  success: z.ZodLiteral<true>;
1177
1177
  }, z.core.$strip>, "mutation">;
1178
- /**
1179
- * Set a node's detection WEIGHT (relative share for the quota balancer).
1180
- * `null` clears it (back to the implicit weight 1). Unpinned cameras
1181
- * distribute proportionally to weight; `maxCameras` still clamps on top.
1182
- */
1183
- readonly setAgentDetectWeight: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1184
- agentNodeId: z.ZodString;
1185
- detectWeight: z.ZodNullable<z.ZodNumber>;
1186
- }, z.core.$strip>, z.ZodObject<{
1187
- success: z.ZodLiteral<true>;
1188
- }, z.core.$strip>, "mutation">;
1189
1178
  /**
1190
1179
  * Set one node's placement CAPABILITIES — the per-node record that
1191
1180
  * replaced the four flat orchestrator lists (`enabledNodes`,
@@ -1337,7 +1326,7 @@ export declare const pipelineOrchestratorCapability: {
1337
1326
  clearedCameraOverrides: z.ZodNumber;
1338
1327
  }, z.core.$strip>, "mutation">;
1339
1328
  /**
1340
- * Best settings (D745) — DRY RUN. Recommends ONE detector family (YOLOv9)
1329
+ * Auto tune (D745) — DRY RUN. Recommends ONE detector family (YOLOv9)
1341
1330
  * for the whole cluster from each node's static hardware class, the
1342
1331
  * measured latency table and the detection demand, and lists every write
1343
1332
  * the apply would make: the node model pins set, the enrichment pins and
@@ -1346,12 +1335,17 @@ export declare const pipelineOrchestratorCapability: {
1346
1335
  * enablement, device enablement, pins, recording, notifications, zones and
1347
1336
  * rules are never part of it. `planHash` names exactly this diff.
1348
1337
  */
1349
- readonly planBestSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1338
+ readonly planAutoTune: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1350
1339
  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>>;
1351
1344
  }, z.core.$strip>, z.ZodObject<{
1352
1345
  planHash: z.ZodString;
1353
1346
  family: z.ZodLiteral<"yolov9">;
1354
1347
  headroom: z.ZodNumber;
1348
+ whatIf: z.ZodBoolean;
1355
1349
  generatedAt: z.ZodNumber;
1356
1350
  nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1357
1351
  nodeId: z.ZodString;
@@ -1391,6 +1385,10 @@ export declare const pipelineOrchestratorCapability: {
1391
1385
  estimate: "estimate";
1392
1386
  }>;
1393
1387
  observedForMs: z.ZodNullable<z.ZodNumber>;
1388
+ placement: z.ZodEnum<{
1389
+ "least-loaded": "least-loaded";
1390
+ share: "share";
1391
+ }>;
1394
1392
  }, z.core.$strip>>;
1395
1393
  chosen: z.ZodNullable<z.ZodObject<{
1396
1394
  modelId: z.ZodString;
@@ -1551,12 +1549,12 @@ export declare const pipelineOrchestratorCapability: {
1551
1549
  }, z.core.$strip>], "kind">>>;
1552
1550
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1553
1551
  /**
1554
- * Best settings (D745) — APPLY the plan the operator confirmed. Recomputes
1552
+ * Auto tune (D745) — APPLY the plan the operator confirmed. Recomputes
1555
1553
  * the plan and refuses (`stale`, with the fresh plan) when its hash is not
1556
1554
  * `planHash`, so what is written is exactly the confirmed diff. Offline
1557
1555
  * nodes are skipped; there is no undo.
1558
1556
  */
1559
- readonly applyBestSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1557
+ readonly applyAutoTune: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1560
1558
  planHash: z.ZodString;
1561
1559
  headroom: z.ZodDefault<z.ZodNumber>;
1562
1560
  }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -1592,6 +1590,7 @@ export declare const pipelineOrchestratorCapability: {
1592
1590
  planHash: z.ZodString;
1593
1591
  family: z.ZodLiteral<"yolov9">;
1594
1592
  headroom: z.ZodNumber;
1593
+ whatIf: z.ZodBoolean;
1595
1594
  generatedAt: z.ZodNumber;
1596
1595
  nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1597
1596
  nodeId: z.ZodString;
@@ -1631,6 +1630,10 @@ export declare const pipelineOrchestratorCapability: {
1631
1630
  estimate: "estimate";
1632
1631
  }>;
1633
1632
  observedForMs: z.ZodNullable<z.ZodNumber>;
1633
+ placement: z.ZodEnum<{
1634
+ "least-loaded": "least-loaded";
1635
+ share: "share";
1636
+ }>;
1634
1637
  }, z.core.$strip>>;
1635
1638
  chosen: z.ZodNullable<z.ZodObject<{
1636
1639
  modelId: z.ZodString;
@@ -1796,11 +1799,138 @@ export declare const pipelineOrchestratorCapability: {
1796
1799
  "apply-in-progress": "apply-in-progress";
1797
1800
  }>;
1798
1801
  }, z.core.$strip>], "kind">, "mutation">;
1802
+ /**
1803
+ * Load balancing (D748) — write node shares (`detectWeight`) and per-node
1804
+ * device shares (inference-device `weight`) in ONE atomic read-modify-write
1805
+ * of the agent settings — the only writer of node shares (the per-node
1806
+ * `setAgentDetectWeight` it replaced raced its siblings, one RMW each).
1807
+ * A node or device left out keeps its weight. Never changes the
1808
+ * `sessionPlacement` policy.
1809
+ */
1810
+ readonly setLoadBalancingShares: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1811
+ nodes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1812
+ devices: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>>;
1813
+ }, z.core.$strip>, z.ZodObject<{
1814
+ success: z.ZodLiteral<true>;
1815
+ }, z.core.$strip>, "mutation">;
1816
+ /**
1817
+ * Load balancing (D748) — what placement actually did: per node and
1818
+ * device, sessions now, sessions started and the time-weighted share of
1819
+ * PARALLEL sessions over `windowMs`; the cluster's parallel peak; yields
1820
+ * a share election made; and every device pin the session path cannot
1821
+ * honour. In memory on the hub — a restart starts a new window.
1822
+ */
1823
+ readonly getPlacementStats: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1824
+ windowMs: z.ZodDefault<z.ZodNumber>;
1825
+ }, z.core.$strip>, z.ZodObject<{
1826
+ policy: z.ZodEnum<{
1827
+ "least-loaded": "least-loaded";
1828
+ share: "share";
1829
+ }>;
1830
+ windowMs: z.ZodNumber;
1831
+ observedForMs: z.ZodNumber;
1832
+ sessionsNow: z.ZodNumber;
1833
+ clusterPeakSessions: z.ZodNumber;
1834
+ nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1835
+ nodeId: z.ZodString;
1836
+ sessionsNow: z.ZodNumber;
1837
+ sessionsStarted: z.ZodNumber;
1838
+ observedShare: z.ZodNullable<z.ZodNumber>;
1839
+ peakSessions: z.ZodNumber;
1840
+ yieldsAway: z.ZodNumber;
1841
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1842
+ deviceKey: z.ZodString;
1843
+ sessionsNow: z.ZodNumber;
1844
+ sessionsStarted: z.ZodNumber;
1845
+ observedShare: z.ZodNullable<z.ZodNumber>;
1846
+ }, z.core.$strip>>>;
1847
+ }, z.core.$strip>>>;
1848
+ stalePins: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1849
+ deviceId: z.ZodNumber;
1850
+ deviceKey: z.ZodString;
1851
+ reason: z.ZodEnum<{
1852
+ absent: "absent";
1853
+ disabled: "disabled";
1854
+ }>;
1855
+ }, z.core.$strip>>>;
1856
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1857
+ /**
1858
+ * Load balancing (D748) — shares proportional to each node's measured
1859
+ * capacity at the models Auto tune would pick, iterated (≤ 3 rounds)
1860
+ * until the shares stop moving; per device, an ADVISORY session cap.
1861
+ * Writes nothing.
1862
+ */
1863
+ readonly suggestShares: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1864
+ headroom: z.ZodDefault<z.ZodNumber>;
1865
+ }, z.core.$strip>, z.ZodObject<{
1866
+ headroom: z.ZodNumber;
1867
+ cameraFps: z.ZodNumber;
1868
+ iterations: z.ZodNumber;
1869
+ nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1870
+ nodeId: z.ZodString;
1871
+ share: z.ZodNullable<z.ZodNumber>;
1872
+ capacitySessions: z.ZodNumber;
1873
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1874
+ deviceKey: z.ZodString;
1875
+ share: z.ZodNumber;
1876
+ modelId: z.ZodNullable<z.ZodString>;
1877
+ fps: z.ZodNullable<z.ZodNumber>;
1878
+ measured: z.ZodBoolean;
1879
+ suggestedMaxSessions: z.ZodNullable<z.ZodNumber>;
1880
+ }, z.core.$strip>>>;
1881
+ skippedReason: z.ZodNullable<z.ZodString>;
1882
+ }, z.core.$strip>>>;
1883
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1884
+ /**
1885
+ * Load balancing (D750) — the shares placement reads now: the source
1886
+ * (automatic capacity shares or the operator's sliders), each node's and
1887
+ * device's configured share, and the effective share after a node or
1888
+ * device that cannot take sessions gave its share to the others.
1889
+ */
1890
+ readonly getEffectiveShares: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
1891
+ source: z.ZodEnum<{
1892
+ manual: "manual";
1893
+ auto: "auto";
1894
+ }>;
1895
+ policy: z.ZodEnum<{
1896
+ "least-loaded": "least-loaded";
1897
+ share: "share";
1898
+ }>;
1899
+ autoPending: z.ZodBoolean;
1900
+ computedAt: z.ZodNullable<z.ZodNumber>;
1901
+ trigger: z.ZodNullable<z.ZodString>;
1902
+ nodes: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1903
+ nodeId: z.ZodString;
1904
+ eligible: z.ZodBoolean;
1905
+ configuredPct: z.ZodNumber;
1906
+ effectivePct: z.ZodNumber;
1907
+ devices: z.ZodReadonly<z.ZodArray<z.ZodObject<{
1908
+ deviceKey: z.ZodString;
1909
+ eligible: z.ZodBoolean;
1910
+ configuredPct: z.ZodNumber;
1911
+ effectivePct: z.ZodNumber;
1912
+ }, z.core.$strip>>>;
1913
+ }, z.core.$strip>>>;
1914
+ nodeWeights: z.ZodRecord<z.ZodString, z.ZodNumber>;
1915
+ deviceWeights: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>;
1916
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
1917
+ /**
1918
+ * Load balancing (D750) — switch between automatic and manual shares.
1919
+ * Going manual seeds the sliders with the current automatic shares (one
1920
+ * atomic write), so nothing jumps; going automatic recomputes at once.
1921
+ */
1922
+ readonly setShareSource: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1923
+ source: z.ZodEnum<{
1924
+ manual: "manual";
1925
+ auto: "auto";
1926
+ }>;
1927
+ }, z.core.$strip>, z.ZodObject<{
1928
+ success: z.ZodLiteral<true>;
1929
+ }, z.core.$strip>, "mutation">;
1799
1930
  /** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
1800
1931
  readonly getCameraSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
1801
1932
  deviceId: z.ZodNumber;
1802
1933
  }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
1803
- pinnedAgentNodeId: z.ZodOptional<z.ZodString>;
1804
1934
  stepToggles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1805
1935
  stepOverridesByDevice: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
1806
1936
  modelId: z.ZodOptional<z.ZodString>;
package/dist/client.js CHANGED
@@ -7493,15 +7493,19 @@ function createSystemProxy(api) {
7493
7493
  listAgentSettings: (input) => dispatch("pipelineOrchestrator", "listAgentSettings", "query", input),
7494
7494
  removeAgentSettings: (input) => dispatch("pipelineOrchestrator", "removeAgentSettings", "mutation", input),
7495
7495
  setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
7496
- setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
7497
7496
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
7498
7497
  setAgentDecodeLimits: (input) => dispatch("pipelineOrchestrator", "setAgentDecodeLimits", "mutation", input),
7499
7498
  setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
7500
7499
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
7501
7500
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
7502
7501
  resetNodePipelineDefaults: (input) => dispatch("pipelineOrchestrator", "resetNodePipelineDefaults", "mutation", input),
7503
- planBestSettings: (input) => dispatch("pipelineOrchestrator", "planBestSettings", "query", input),
7504
- applyBestSettings: (input) => dispatch("pipelineOrchestrator", "applyBestSettings", "mutation", input),
7502
+ planAutoTune: (input) => dispatch("pipelineOrchestrator", "planAutoTune", "query", input),
7503
+ applyAutoTune: (input) => dispatch("pipelineOrchestrator", "applyAutoTune", "mutation", input),
7504
+ setLoadBalancingShares: (input) => dispatch("pipelineOrchestrator", "setLoadBalancingShares", "mutation", input),
7505
+ getPlacementStats: (input) => dispatch("pipelineOrchestrator", "getPlacementStats", "query", input),
7506
+ suggestShares: (input) => dispatch("pipelineOrchestrator", "suggestShares", "query", input),
7507
+ getEffectiveShares: (input) => dispatch("pipelineOrchestrator", "getEffectiveShares", "query", input),
7508
+ setShareSource: (input) => dispatch("pipelineOrchestrator", "setShareSource", "mutation", input),
7505
7509
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
7506
7510
  setCameraSensors: (input) => dispatch("pipelineOrchestrator", "setCameraSensors", "mutation", input),
7507
7511
  reconcileFromDisk: (input) => dispatch("pipelineOrchestrator", "reconcileFromDisk", "mutation", input),
package/dist/client.mjs CHANGED
@@ -7492,15 +7492,19 @@ function createSystemProxy(api) {
7492
7492
  listAgentSettings: (input) => dispatch("pipelineOrchestrator", "listAgentSettings", "query", input),
7493
7493
  removeAgentSettings: (input) => dispatch("pipelineOrchestrator", "removeAgentSettings", "mutation", input),
7494
7494
  setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
7495
- setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
7496
7495
  setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
7497
7496
  setAgentDecodeLimits: (input) => dispatch("pipelineOrchestrator", "setAgentDecodeLimits", "mutation", input),
7498
7497
  setAgentReachableHost: (input) => dispatch("pipelineOrchestrator", "setAgentReachableHost", "mutation", input),
7499
7498
  setAgentInferenceDevices: (input) => dispatch("pipelineOrchestrator", "setAgentInferenceDevices", "mutation", input),
7500
7499
  getNodeInferenceDevices: (input) => dispatch("pipelineOrchestrator", "getNodeInferenceDevices", "query", input),
7501
7500
  resetNodePipelineDefaults: (input) => dispatch("pipelineOrchestrator", "resetNodePipelineDefaults", "mutation", input),
7502
- planBestSettings: (input) => dispatch("pipelineOrchestrator", "planBestSettings", "query", input),
7503
- applyBestSettings: (input) => dispatch("pipelineOrchestrator", "applyBestSettings", "mutation", input),
7501
+ planAutoTune: (input) => dispatch("pipelineOrchestrator", "planAutoTune", "query", input),
7502
+ applyAutoTune: (input) => dispatch("pipelineOrchestrator", "applyAutoTune", "mutation", input),
7503
+ setLoadBalancingShares: (input) => dispatch("pipelineOrchestrator", "setLoadBalancingShares", "mutation", input),
7504
+ getPlacementStats: (input) => dispatch("pipelineOrchestrator", "getPlacementStats", "query", input),
7505
+ suggestShares: (input) => dispatch("pipelineOrchestrator", "suggestShares", "query", input),
7506
+ getEffectiveShares: (input) => dispatch("pipelineOrchestrator", "getEffectiveShares", "query", input),
7507
+ setShareSource: (input) => dispatch("pipelineOrchestrator", "setShareSource", "mutation", input),
7504
7508
  getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
7505
7509
  setCameraSensors: (input) => dispatch("pipelineOrchestrator", "setCameraSensors", "mutation", input),
7506
7510
  reconcileFromDisk: (input) => dispatch("pipelineOrchestrator", "reconcileFromDisk", "mutation", input),
@@ -6553,13 +6553,6 @@ export type AppRouter = TrpcCoreRouter<{
6553
6553
  output: z.infer<typeof pipelineOrchestratorCapability.methods.setAgentMaxCameras.output>;
6554
6554
  meta: object;
6555
6555
  }>;
6556
- setAgentDetectWeight: TRPCMutationProcedure<{
6557
- input: {
6558
- [x: string]: unknown;
6559
- } & z.input<typeof pipelineOrchestratorCapability.methods.setAgentDetectWeight.input>;
6560
- output: z.infer<typeof pipelineOrchestratorCapability.methods.setAgentDetectWeight.output>;
6561
- meta: object;
6562
- }>;
6563
6556
  setAgentCapabilities: TRPCMutationProcedure<{
6564
6557
  input: {
6565
6558
  [x: string]: unknown;
@@ -6602,18 +6595,53 @@ export type AppRouter = TrpcCoreRouter<{
6602
6595
  output: z.infer<typeof pipelineOrchestratorCapability.methods.resetNodePipelineDefaults.output>;
6603
6596
  meta: object;
6604
6597
  }>;
6605
- planBestSettings: TRPCQueryProcedure<{
6598
+ planAutoTune: TRPCQueryProcedure<{
6606
6599
  input: {
6607
6600
  [x: string]: unknown;
6608
- } & z.input<typeof pipelineOrchestratorCapability.methods.planBestSettings.input>;
6609
- 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
+ meta: object;
6604
+ }>;
6605
+ applyAutoTune: TRPCMutationProcedure<{
6606
+ input: {
6607
+ [x: string]: unknown;
6608
+ } & z.input<typeof pipelineOrchestratorCapability.methods.applyAutoTune.input>;
6609
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.applyAutoTune.output>;
6610
+ meta: object;
6611
+ }>;
6612
+ setLoadBalancingShares: TRPCMutationProcedure<{
6613
+ input: {
6614
+ [x: string]: unknown;
6615
+ } & z.input<typeof pipelineOrchestratorCapability.methods.setLoadBalancingShares.input>;
6616
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.setLoadBalancingShares.output>;
6617
+ meta: object;
6618
+ }>;
6619
+ getPlacementStats: TRPCQueryProcedure<{
6620
+ input: {
6621
+ [x: string]: unknown;
6622
+ } & z.input<typeof pipelineOrchestratorCapability.methods.getPlacementStats.input>;
6623
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.getPlacementStats.output>;
6624
+ meta: object;
6625
+ }>;
6626
+ suggestShares: TRPCQueryProcedure<{
6627
+ input: {
6628
+ [x: string]: unknown;
6629
+ } & z.input<typeof pipelineOrchestratorCapability.methods.suggestShares.input>;
6630
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.suggestShares.output>;
6631
+ meta: object;
6632
+ }>;
6633
+ getEffectiveShares: TRPCQueryProcedure<{
6634
+ input: {
6635
+ nodeId?: string | undefined;
6636
+ } | undefined;
6637
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.getEffectiveShares.output>;
6610
6638
  meta: object;
6611
6639
  }>;
6612
- applyBestSettings: TRPCMutationProcedure<{
6640
+ setShareSource: TRPCMutationProcedure<{
6613
6641
  input: {
6614
6642
  [x: string]: unknown;
6615
- } & z.input<typeof pipelineOrchestratorCapability.methods.applyBestSettings.input>;
6616
- output: z.infer<typeof pipelineOrchestratorCapability.methods.applyBestSettings.output>;
6643
+ } & z.input<typeof pipelineOrchestratorCapability.methods.setShareSource.input>;
6644
+ output: z.infer<typeof pipelineOrchestratorCapability.methods.setShareSource.output>;
6617
6645
  meta: object;
6618
6646
  }>;
6619
6647
  getCameraSettings: TRPCQueryProcedure<{
@@ -11,7 +11,7 @@
11
11
  * Plain data, zero Zod: a forked runner must not import the schema barrel
12
12
  * (~144MB RSS per runner — D28).
13
13
  *
14
- * Coverage: 25 caps, 60 methods with defaults.
14
+ * Coverage: 25 caps, 63 methods with defaults.
15
15
  */
16
16
  export declare const CAP_INPUT_DEFAULTS: Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, unknown>>>>>>;
17
17
  /**
@@ -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: 1230 method paths across 165 capabilities.
9
+ * Coverage: 1234 method paths across 165 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -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' | 'setAgentDetectWeight' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'getNodeInferenceDevices' | 'resetNodePipelineDefaults' | 'planBestSettings' | 'applyBestSettings' | '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 * from './pipeline/auto-tune/index.js';
272
+ export * from './pipeline/load-balancing/index.js';
272
273
  export { deriveRootFaceRefineRect, ROOT_FACE_REFINE_INPUT_PX, ROOT_FACE_REFINE_SCALE, } from './pipeline/root-face-crop.js';
273
274
  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';
274
275
  export { DEFAULT_NATIVE_LEASE_SETTINGS, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SCENE_BUDGET_FIELD, NATIVE_LEASE_SCENE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, type NativeLeaseAdmission, NativeLeaseAdmissionSchema, type NativeLeaseKnob, type NativeLeaseNumberKnob, type NativeLeaseSettings, type NativeLeaseSettingsOverride, NativeLeaseSettingsSchema, pickNativeLeaseOverride, readNativeLeaseOverride, } from './pipeline/native-lease.js';