@camstack/addon-pipeline 1.2.340 → 1.2.342

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 (35) hide show
  1. package/dist/audio-analyzer/index.js +3 -3
  2. package/dist/audio-analyzer/index.mjs +3 -3
  3. package/dist/{custom-model-catalog-BOnN63HU.mjs → custom-model-catalog-BjPZrWX3.mjs} +2 -2
  4. package/dist/{custom-model-catalog-Cjbll1Sf.js → custom-model-catalog-DPBG06HE.js} +2 -2
  5. package/dist/detection-pipeline/index.js +9 -123
  6. package/dist/detection-pipeline/index.mjs +9 -123
  7. package/dist/{dist-CsA6fY6I.mjs → dist-BWzBHFEB.mjs} +276 -188
  8. package/dist/{dist-BWigCRRN.js → dist-w_gA9z8W.js} +275 -193
  9. package/dist/{model-catalogs-D7JXV0_i.mjs → model-catalogs-Dseq1bmN.mjs} +1 -1
  10. package/dist/{model-catalogs-BFBf8sHb.js → model-catalogs-ll-ggTUb.js} +1 -1
  11. package/dist/motion-wasm/index.js +1 -1
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/{node-BZ29vHq2.mjs → node-B7gAWBnv.mjs} +1 -1
  14. package/dist/{node-D52HHrVZ.js → node-BTsWSPyQ.js} +1 -1
  15. package/dist/pipeline-runner/index.js +3 -3
  16. package/dist/pipeline-runner/index.mjs +3 -3
  17. package/dist/{process-memory-DOEeg2pL.mjs → process-memory-BYs3sxnT.mjs} +1 -1
  18. package/dist/{process-memory-C9U6dKxS.js → process-memory-Nq3qwp-q.js} +1 -1
  19. package/dist/recorder/index.js +19 -4
  20. package/dist/recorder/index.mjs +19 -4
  21. package/dist/{segment-demux-js-DDgwrz-e.mjs → segment-demux-js-C7Bk1l_R.mjs} +1 -1
  22. package/dist/{segment-demux-js-CMZSmwMp.js → segment-demux-js-D4kTUDck.js} +1 -1
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-6JIjr_ur.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-By8a97Br.mjs} +3 -3
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B204qFeL.mjs +26 -0
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Czhfk3hD.mjs +26 -0
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-Ck1wQfKk.mjs → hostInit-BU65uPCY.mjs} +3 -3
  30. package/dist/stream-broker/index.js +3 -3
  31. package/dist/stream-broker/index.mjs +3 -3
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js--yC-aoPc.mjs +0 -26
  35. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B-hhg2sP.mjs +0 -26
@@ -5379,7 +5379,7 @@ var ZodIssueCode = {
5379
5379
  var ZodFirstPartyTypeKind;
5380
5380
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5381
5381
  //#endregion
5382
- //#region ../types/dist/sleep-C16NCZR2.mjs
5382
+ //#region ../types/dist/sleep-DAJ9Er57.mjs
5383
5383
  /**
5384
5384
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5385
5385
  * window to float samples (D455).
@@ -7356,26 +7356,6 @@ var BOOT_RECOVERY_BACKOFF_MS = [
7356
7356
  90 * 6e4
7357
7357
  ];
7358
7358
  /**
7359
- * Type-safe JSON parsing helpers.
7360
- *
7361
- * `JSON.parse` is typed as `any` in lib.es5.d.ts, which triggers
7362
- * `no-unsafe-*` ESLint rules and destroys downstream inference. These
7363
- * wrappers return `unknown` — callers narrow structurally via type
7364
- * guards, `typeof` checks, or helpers like `asRecord`/`asString`.
7365
- */
7366
- /**
7367
- * Parse JSON and return it as `unknown` — the only entry point for untrusted JSON.
7368
- *
7369
- * The optional generic overload `parseJsonUnknown<T>(text)` returns `T` for
7370
- * call sites that know the shape at parse time (e.g. MQTT payloads with a
7371
- * known protocol schema). This is a **type-level bridge only** — no runtime
7372
- * validation is performed. Callers that need runtime validation should parse
7373
- * as `unknown` and narrow via Zod or structural guards.
7374
- */
7375
- function parseJsonUnknown(text) {
7376
- return JSON.parse(text);
7377
- }
7378
- /**
7379
7359
  * Promise-based timer helpers — used everywhere the codebase needs to
7380
7360
  * wait, back off, or schedule a retry. Before these helpers landed, each
7381
7361
  * call site re-implemented `new Promise(r => setTimeout(r, ms))` inline,
@@ -26630,21 +26610,6 @@ var PipelineDefaultStepSchema = lazy(() => object({
26630
26610
  group: string().optional(),
26631
26611
  settings: record(string(), unknown()).optional()
26632
26612
  }));
26633
- var PipelineTemplateStepSchema = lazy(() => object({
26634
- addonId: string(),
26635
- enabled: boolean(),
26636
- modelId: string(),
26637
- children: array(PipelineTemplateStepSchema).readonly(),
26638
- settings: record(string(), unknown()).optional()
26639
- }));
26640
- var PipelineTemplateSchema$1 = object({
26641
- id: string(),
26642
- name: string(),
26643
- createdAt: string(),
26644
- updatedAt: string(),
26645
- engine: PipelineEngineChoiceSchema,
26646
- steps: array(PipelineTemplateStepSchema).readonly()
26647
- });
26648
26613
  var PipelineModelOptionSchema = object({
26649
26614
  id: string(),
26650
26615
  name: string(),
@@ -26863,7 +26828,7 @@ var pipelineExecutorCapability = {
26863
26828
  auth: "admin"
26864
26829
  }),
26865
26830
  /**
26866
- * Best settings (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
26831
+ * Auto tune (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
26867
26832
  * the object-detection root, and their binding keys) stored in THIS node's
26868
26833
  * per-camera detector settings — and, unless `dryRun`, remove them so the
26869
26834
  * running model's own defaults apply. Every other key of a camera's store
@@ -26966,18 +26931,6 @@ var pipelineExecutorCapability = {
26966
26931
  steps: array(PipelineStepInputSchema),
26967
26932
  deviceKey: string().optional()
26968
26933
  }), PipelineValidationResultSchema),
26969
- listTemplates: method(_void(), array(PipelineTemplateSchema$1).readonly()),
26970
- saveTemplate: method(object({
26971
- name: string(),
26972
- steps: array(PipelineTemplateStepSchema).readonly(),
26973
- engine: PipelineEngineChoiceSchema
26974
- }), PipelineTemplateSchema$1, { kind: "mutation" }),
26975
- updateTemplate: method(object({
26976
- id: string(),
26977
- name: string().optional(),
26978
- steps: array(PipelineTemplateStepSchema).readonly().optional()
26979
- }), PipelineTemplateSchema$1, { kind: "mutation" }),
26980
- deleteTemplate: method(object({ id: string() }), _void(), { kind: "mutation" }),
26981
26934
  getCapabilities: method(_void(), InferenceCapabilitiesBridge),
26982
26935
  getAddonModels: method(object({ addonId: string() }), ModelAvailabilityListBridge),
26983
26936
  downloadModel: method(object({
@@ -27235,12 +27188,17 @@ var pipelineExecutorCapability = {
27235
27188
  }
27236
27189
  };
27237
27190
  /**
27238
- * The wire shapes of the Best settings plan and apply (D745), used by the
27191
+ * The wire shapes of the Auto tune plan and apply (D745), used by the
27239
27192
  * `pipeline-orchestrator` cap. The recommender's own types
27240
- * (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
27193
+ * (`recommend.ts`) are the TS face of the same data; these
27241
27194
  * schemas are what crosses the cap boundary.
27242
27195
  */
27243
27196
  var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
27197
+ /** The operator's range for it. */
27198
+ var MIN_SESSIONS_PER_DEVICE_RANGE = {
27199
+ min: 1,
27200
+ max: 8
27201
+ };
27244
27202
  var HardwareClassIdSchema = _enum([
27245
27203
  "intel-core-ultra",
27246
27204
  "intel-n-series",
@@ -27258,8 +27216,9 @@ var AcceleratorKindSchema = _enum([
27258
27216
  ]);
27259
27217
  var RecommendationReasonSchema = discriminatedUnion("kind", [
27260
27218
  object({
27261
- kind: literal("fits"),
27262
- utilisation: number()
27219
+ kind: literal("capacity"),
27220
+ sessions: number(),
27221
+ minSessions: number()
27263
27222
  }),
27264
27223
  object({
27265
27224
  kind: literal("tie-faster"),
@@ -27274,16 +27233,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
27274
27233
  }),
27275
27234
  object({
27276
27235
  kind: literal("no-fit-lightest"),
27277
- utilisation: number()
27236
+ sessions: number(),
27237
+ minSessions: number()
27278
27238
  }),
27279
27239
  object({
27280
27240
  kind: literal("derived-latency"),
27281
27241
  modelId: string()
27282
27242
  }),
27283
- object({
27284
- kind: literal("estimated-load"),
27285
- observedForMs: number().nullable()
27286
- }),
27287
27243
  object({ kind: literal("cpu-device") }),
27288
27244
  object({ kind: literal("coral-untouched") }),
27289
27245
  object({ kind: literal("device-disabled") }),
@@ -27299,26 +27255,13 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
27299
27255
  format: ModelFormatSchema$1
27300
27256
  })
27301
27257
  ]);
27302
- var DeviceDemandSchema = object({
27303
- nodeId: string(),
27304
- deviceKey: string(),
27305
- demandFps: number(),
27306
- maxCameraFps: number(),
27307
- alwaysOnCameras: number(),
27308
- onMotionSessions: number(),
27309
- onMotionSource: _enum([
27310
- "observed-24h",
27311
- "estimate",
27312
- "none"
27313
- ]),
27314
- observedForMs: number().nullable()
27315
- });
27316
27258
  var DeviceModelChoiceSchema = object({
27317
27259
  modelId: string(),
27318
27260
  p50Ms: number(),
27319
27261
  fps: number(),
27320
27262
  measured: boolean(),
27321
- utilisation: number(),
27263
+ /** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
27264
+ capacitySessions: number(),
27322
27265
  personRecall: number()
27323
27266
  });
27324
27267
  var DeviceRecommendationSchema = object({
@@ -27326,7 +27269,6 @@ var DeviceRecommendationSchema = object({
27326
27269
  accelerator: AcceleratorKindSchema.nullable(),
27327
27270
  enabled: boolean(),
27328
27271
  available: boolean(),
27329
- demand: DeviceDemandSchema.nullable(),
27330
27272
  chosen: DeviceModelChoiceSchema.nullable(),
27331
27273
  reasons: array(RecommendationReasonSchema).readonly()
27332
27274
  });
@@ -27368,7 +27310,7 @@ var DetectorStoreClearSchema = object({
27368
27310
  deviceId: number(),
27369
27311
  keys: array(string()).readonly()
27370
27312
  });
27371
- var BestSettingsWarningSchema = discriminatedUnion("kind", [
27313
+ var AutoTuneWarningSchema = discriminatedUnion("kind", [
27372
27314
  object({
27373
27315
  kind: literal("detector-store-cluster-wide"),
27374
27316
  skippedNodes: array(string()).readonly()
@@ -27383,26 +27325,37 @@ var BestSettingsWarningSchema = discriminatedUnion("kind", [
27383
27325
  deviceKey: string()
27384
27326
  })
27385
27327
  ]);
27386
- var BestSettingsOptionsSchema = object({
27387
- /** Share of each accelerator's throughput kept free (0.3–0.5). */
27388
- headroom: number().min(.3).max(.5).default(.4) });
27389
- var BestSettingsPlanSchema = object({
27328
+ var AutoTuneOptionsSchema = object({
27329
+ /** Share of each accelerator's throughput kept free (0.3–0.5). */
27330
+ headroom: number().min(.3).max(.5).default(.4),
27331
+ /**
27332
+ * The least number of parallel sessions every device must sustain at the
27333
+ * camera rate with the headroom kept free (D755). The most accurate model
27334
+ * that reaches it wins.
27335
+ */
27336
+ minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
27337
+ });
27338
+ var AutoTunePlanSchema = object({
27390
27339
  /** Hash of everything the apply will write — the apply refuses a different one. */
27391
27340
  planHash: string(),
27392
27341
  family: literal("yolov9"),
27393
27342
  headroom: number(),
27343
+ minSessionsPerDevice: number(),
27344
+ /** The detection rate a session is counted at (the fastest camera running the pipeline root). */
27345
+ cameraFps: number(),
27394
27346
  generatedAt: number(),
27395
27347
  nodes: array(NodeRecommendationSchema).readonly(),
27396
27348
  nodeChanges: array(NodeDeviceChangeSchema).readonly(),
27397
27349
  cameraClears: array(CameraOverrideClearSchema).readonly(),
27398
27350
  detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
27399
- warnings: array(BestSettingsWarningSchema).readonly()
27351
+ warnings: array(AutoTuneWarningSchema).readonly()
27400
27352
  });
27401
- var BestSettingsApplyInputSchema = object({
27353
+ var AutoTuneApplyInputSchema = object({
27402
27354
  planHash: string(),
27403
- headroom: number().min(.3).max(.5).default(.4)
27355
+ headroom: number().min(.3).max(.5).default(.4),
27356
+ minSessionsPerDevice: number().int().min(MIN_SESSIONS_PER_DEVICE_RANGE.min).max(MIN_SESSIONS_PER_DEVICE_RANGE.max).default(2)
27404
27357
  });
27405
- var BestSettingsPhaseResultSchema = object({
27358
+ var AutoTunePhaseResultSchema = object({
27406
27359
  phase: _enum([
27407
27360
  "download",
27408
27361
  "camera-overrides",
@@ -27413,25 +27366,196 @@ var BestSettingsPhaseResultSchema = object({
27413
27366
  ok: boolean(),
27414
27367
  detail: string()
27415
27368
  });
27416
- var BestSettingsApplyResultSchema = discriminatedUnion("kind", [
27369
+ var AutoTuneApplyResultSchema = discriminatedUnion("kind", [
27417
27370
  object({
27418
27371
  kind: literal("applied"),
27419
27372
  planHash: string(),
27420
- phases: array(BestSettingsPhaseResultSchema).readonly()
27373
+ phases: array(AutoTunePhaseResultSchema).readonly()
27421
27374
  }),
27422
27375
  object({
27423
27376
  kind: literal("aborted"),
27424
- phases: array(BestSettingsPhaseResultSchema).readonly()
27377
+ phases: array(AutoTunePhaseResultSchema).readonly()
27425
27378
  }),
27426
27379
  object({
27427
27380
  kind: literal("stale"),
27428
- plan: BestSettingsPlanSchema
27381
+ plan: AutoTunePlanSchema
27429
27382
  }),
27430
27383
  object({
27431
27384
  kind: literal("refused"),
27432
27385
  reason: _enum(["apply-in-progress"])
27433
27386
  })
27434
27387
  ]);
27388
+ /**
27389
+ * Wire shapes of the Load balancing surface (D748): the session placement
27390
+ * policy, the atomic share write, the observed placement statistics, the
27391
+ * hardware share suggestion and the stale device pins.
27392
+ */
27393
+ /**
27394
+ * How a new detection session picks its node and device.
27395
+ * - `least-loaded` — the historical rule: lowest `attached / weight`, a
27396
+ * constant node order at a tie (D37). An idle node always ties at 0, so a
27397
+ * weight only bites once a node already holds a session.
27398
+ * - `share` — the share of PARALLEL sessions is held to the weights, and a
27399
+ * full or drowning node yields to a free one (D748).
27400
+ */
27401
+ var SessionPlacementPolicySchema = _enum(["least-loaded", "share"]);
27402
+ var LoadBalancingSharesInputSchema = object({
27403
+ /** nodeId → share (> 0). A node left out keeps its weight. */
27404
+ nodes: record(string(), number().positive()).default({}),
27405
+ /** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
27406
+ devices: record(string(), record(string(), number().positive())).default({})
27407
+ });
27408
+ var PlacementStatsInputSchema = object({
27409
+ /** Window the observed shares are averaged over (default 1 h, max 24 h). */
27410
+ windowMs: number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
27411
+ var PlacementDeviceStatsSchema = object({
27412
+ deviceKey: string(),
27413
+ /** Sessions running on this device now. */
27414
+ sessionsNow: number(),
27415
+ /** Sessions started on this device inside the window. */
27416
+ sessionsStarted: number(),
27417
+ /** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
27418
+ observedShare: number().nullable()
27419
+ });
27420
+ var PlacementNodeStatsSchema = object({
27421
+ nodeId: string(),
27422
+ sessionsNow: number(),
27423
+ sessionsStarted: number(),
27424
+ /** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
27425
+ observedShare: number().nullable(),
27426
+ /** Most sessions this node ran at once inside the window. */
27427
+ peakSessions: number(),
27428
+ /** Sessions a share election handed elsewhere because this node was full or drowning. */
27429
+ yieldsAway: number(),
27430
+ devices: array(PlacementDeviceStatsSchema).readonly()
27431
+ });
27432
+ /** A camera's device pin that the session path cannot honour. */
27433
+ var StaleDevicePinSchema = object({
27434
+ deviceId: number(),
27435
+ deviceKey: string(),
27436
+ /** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
27437
+ reason: _enum(["disabled", "absent"])
27438
+ });
27439
+ var PlacementStatsSchema = object({
27440
+ policy: SessionPlacementPolicySchema,
27441
+ windowMs: number(),
27442
+ /** How much of the window was actually observed (the hub keeps it in memory). */
27443
+ observedForMs: number(),
27444
+ sessionsNow: number(),
27445
+ /** Most parallel sessions across the cluster inside the window. */
27446
+ clusterPeakSessions: number(),
27447
+ nodes: array(PlacementNodeStatsSchema).readonly(),
27448
+ stalePins: array(StaleDevicePinSchema).readonly()
27449
+ });
27450
+ /**
27451
+ * Where an automatic share's capacity comes from (D755).
27452
+ * - `hardware` — the static capacity of each device at its Auto tune model:
27453
+ * the measured latency table for the node's hardware class.
27454
+ * - `benchmark` — the node's own measured capacity (node benchmark results).
27455
+ * A node with no results falls back to `hardware`, and says so.
27456
+ */
27457
+ var CapacitySourceSchema = _enum(["hardware", "benchmark"]);
27458
+ /** Why a node under the `benchmark` source was sized from hardware instead. */
27459
+ var CapacityFallbackSchema = _enum(["no-benchmark-results", "partial-benchmark-results"]);
27460
+ var SuggestSharesInputSchema = object({
27461
+ headroom: number().min(.3).max(.5).default(.4),
27462
+ /** Default `hardware`. */
27463
+ source: CapacitySourceSchema.default("hardware")
27464
+ });
27465
+ var SuggestedDeviceShareSchema = object({
27466
+ deviceKey: string(),
27467
+ /** Share of the node (0–100, rounded). */
27468
+ share: number(),
27469
+ modelId: string().nullable(),
27470
+ /** Inferences per second at that model, from the measured table; null when sized by a benchmark. */
27471
+ fps: number().nullable(),
27472
+ /** False for a table cell derived from another chip; true for a measured cell or a benchmark. */
27473
+ measured: boolean(),
27474
+ /**
27475
+ * Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋ from the table,
27476
+ * or the benchmark's measured max sessions. Never enforced.
27477
+ */
27478
+ suggestedMaxSessions: number().nullable()
27479
+ });
27480
+ var SuggestedNodeShareSchema = object({
27481
+ nodeId: string(),
27482
+ /** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
27483
+ share: number().nullable(),
27484
+ /** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
27485
+ capacitySessions: number(),
27486
+ devices: array(SuggestedDeviceShareSchema).readonly(),
27487
+ skippedReason: string().nullable(),
27488
+ /** What this node's capacity was read from; null when the node is skipped. */
27489
+ capacitySource: CapacitySourceSchema.nullable(),
27490
+ /** Set when the `benchmark` source was asked for and this node used `hardware`. */
27491
+ capacityFallback: CapacityFallbackSchema.nullable()
27492
+ });
27493
+ var SuggestSharesResultSchema = object({
27494
+ headroom: number(),
27495
+ /** The source asked for; each node says what it actually used. */
27496
+ source: CapacitySourceSchema,
27497
+ /** Camera detection rate the capacity is counted in (the fastest camera's fps). */
27498
+ cameraFps: number(),
27499
+ /** The Auto tune capacity floor the models were picked at. */
27500
+ minSessionsPerDevice: number(),
27501
+ nodes: array(SuggestedNodeShareSchema).readonly()
27502
+ });
27503
+ /**
27504
+ * Where the node and device shares come from (D750, D755).
27505
+ * - `hardware` (default) — computed by the system from each node's static
27506
+ * capacity (its accelerators at their Auto tune models, from the measured
27507
+ * latency table), recomputed whenever a node or device joins, leaves, is
27508
+ * switched on or off, or changes model. No load input.
27509
+ * - `benchmark` — the same, from each node's measured capacity (node
27510
+ * benchmark results); a node without results falls back to `hardware`.
27511
+ * - `manual` — the operator's stored sliders.
27512
+ * Either way a node or device that cannot take sessions gives its share to
27513
+ * the others in proportion; the stored values are never rewritten for that.
27514
+ */
27515
+ var ShareSourceSchema = _enum([
27516
+ "hardware",
27517
+ "benchmark",
27518
+ "manual"
27519
+ ]);
27520
+ var SetShareSourceInputSchema = object({ source: ShareSourceSchema });
27521
+ object({
27522
+ nodes: record(string(), number()),
27523
+ devices: record(string(), record(string(), number()))
27524
+ });
27525
+ var EffectiveDeviceShareSchema = object({
27526
+ deviceKey: string(),
27527
+ /** Can take sessions now (enabled, available, can run the root). */
27528
+ eligible: boolean(),
27529
+ /** The share the source assigns, as a percentage of the node's devices. */
27530
+ configuredPct: number(),
27531
+ /** The share actually used, after an ineligible device's share went to the others. */
27532
+ effectivePct: number()
27533
+ });
27534
+ var EffectiveNodeShareSchema = object({
27535
+ nodeId: string(),
27536
+ eligible: boolean(),
27537
+ configuredPct: number(),
27538
+ effectivePct: number(),
27539
+ /** Automatic sources: what this node's share was computed from; null under `manual` or before the first answer. */
27540
+ capacitySource: CapacitySourceSchema.nullable(),
27541
+ /** Automatic `benchmark`: why this node used `hardware` instead. */
27542
+ capacityFallback: CapacityFallbackSchema.nullable(),
27543
+ devices: array(EffectiveDeviceShareSchema).readonly()
27544
+ });
27545
+ var EffectiveSharesSchema = object({
27546
+ source: ShareSourceSchema,
27547
+ policy: SessionPlacementPolicySchema,
27548
+ /** An automatic source with no computed answer yet: the stored sliders are used meanwhile. */
27549
+ autoPending: boolean(),
27550
+ /** When the automatic shares were last computed (ms epoch); null = never. */
27551
+ computedAt: number().nullable(),
27552
+ /** What made the system recompute them last. */
27553
+ trigger: string().nullable(),
27554
+ nodes: array(EffectiveNodeShareSchema).readonly(),
27555
+ /** The relative weights the election reads (before eligibility). */
27556
+ nodeWeights: record(string(), number()),
27557
+ deviceWeights: record(string(), record(string(), number()))
27558
+ });
27435
27559
  object({
27436
27560
  activeCameras: number(),
27437
27561
  throttledCameras: number(),
@@ -28722,14 +28846,6 @@ var CameraPipelineConfigSchema = object({
28722
28846
  settings: record(string(), unknown()).readonly().optional()
28723
28847
  }).nullable().optional()
28724
28848
  });
28725
- var PipelineTemplateSchema = object({
28726
- id: string(),
28727
- name: string(),
28728
- description: string().optional(),
28729
- config: CameraPipelineConfigSchema,
28730
- createdAt: string(),
28731
- updatedAt: string()
28732
- });
28733
28849
  var DeviceStepConfigSchema = object({
28734
28850
  modelId: string().optional(),
28735
28851
  settings: record(string(), unknown()).optional(),
@@ -28803,9 +28919,10 @@ var CameraStepOverridePatchSchema = object({
28803
28919
  modelId: string().optional(),
28804
28920
  settings: record(string(), unknown()).readonly().optional()
28805
28921
  });
28922
+ var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
28806
28923
  var CameraPipelineSettingsSchema = object({
28807
- pinnedAgentNodeId: string().optional(),
28808
28924
  stepToggles: record(string(), boolean()).optional(),
28925
+ stepSettings: CameraStepSettingsSchema.optional(),
28809
28926
  stepOverridesByDevice: record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).optional(),
28810
28927
  pipelineByAgent: record(string(), CameraPipelineForAgentSchema).optional()
28811
28928
  });
@@ -28933,20 +29050,15 @@ var CameraBrokerStatusSchema = object({
28933
29050
  webrtcSessions: number(),
28934
29051
  rtspRestream: boolean()
28935
29052
  });
28936
- /** Shared-memory ring statistics within the decoder block. */
28937
- var CameraDecoderShmSchema = object({
28938
- framesWritten: number(),
28939
- getFrameHits: number(),
28940
- getFrameMisses: number(),
28941
- budgetMb: number()
28942
- });
28943
- /** Decoder block — null when the decoder stage is unreachable or inactive. */
28944
- var CameraDecoderStatusSchema = object({
28945
- nodeId: string(),
28946
- formats: array(string()).readonly(),
28947
- sessionCount: number(),
28948
- shm: CameraDecoderShmSchema
28949
- });
29053
+ /**
29054
+ * Decoder block — WHERE decode runs (co-located with the detection node by
29055
+ * construction); null when the camera has no detection node. It carries no
29056
+ * frame counter: the shared-memory plane whose counters it used to serve is
29057
+ * gone, and those fields read 0 forever. Whether frames actually flow is read
29058
+ * from `detection.actualFps` (frames delivered to and processed by the
29059
+ * detector), never from a counter nothing feeds.
29060
+ */
29061
+ var CameraDecoderStatusSchema = object({ nodeId: string() });
28950
29062
  /** Motion block — null when motion detection is not active for this device. */
28951
29063
  var CameraMotionStatusSchema = object({
28952
29064
  enabled: boolean(),
@@ -29303,12 +29415,6 @@ method(object({
29303
29415
  }), object({ success: literal(true) }), {
29304
29416
  kind: "mutation",
29305
29417
  auth: "admin"
29306
- }), method(object({
29307
- agentNodeId: string(),
29308
- detectWeight: number().positive().nullable()
29309
- }), object({ success: literal(true) }), {
29310
- kind: "mutation",
29311
- auth: "admin"
29312
29418
  }), method(object({
29313
29419
  agentNodeId: string(),
29314
29420
  detect: boolean().nullable().optional(),
@@ -29350,7 +29456,13 @@ method(object({
29350
29456
  }), {
29351
29457
  kind: "mutation",
29352
29458
  auth: "admin"
29353
- }), method(BestSettingsOptionsSchema, BestSettingsPlanSchema, { auth: "admin" }), method(BestSettingsApplyInputSchema, BestSettingsApplyResultSchema, {
29459
+ }), method(AutoTuneOptionsSchema, AutoTunePlanSchema, { auth: "admin" }), method(AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, {
29460
+ kind: "mutation",
29461
+ auth: "admin"
29462
+ }), method(LoadBalancingSharesInputSchema, object({ success: literal(true) }), {
29463
+ kind: "mutation",
29464
+ auth: "admin"
29465
+ }), method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }), method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }), method(_void(), EffectiveSharesSchema, { auth: "admin" }), method(SetShareSourceInputSchema, object({ success: literal(true) }), {
29354
29466
  kind: "mutation",
29355
29467
  auth: "admin"
29356
29468
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
@@ -29369,6 +29481,13 @@ method(object({
29369
29481
  }), object({ success: literal(true) }), {
29370
29482
  kind: "mutation",
29371
29483
  auth: "admin"
29484
+ }), method(object({
29485
+ deviceId: number(),
29486
+ addonId: string(),
29487
+ settings: record(string(), unknown()).nullable()
29488
+ }), object({ success: literal(true) }), {
29489
+ kind: "mutation",
29490
+ auth: "admin"
29372
29491
  }), method(object({
29373
29492
  deviceId: number(),
29374
29493
  agentNodeId: string(),
@@ -29392,25 +29511,7 @@ method(object({
29392
29511
  }), method(_void(), DiskReconcileJobSchema, {
29393
29512
  kind: "mutation",
29394
29513
  auth: "admin"
29395
- }), method(_void(), DiskReconcileJobSchema, { auth: "admin" }), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
29396
- name: string(),
29397
- description: string().optional(),
29398
- config: CameraPipelineConfigSchema
29399
- }), PipelineTemplateSchema, {
29400
- kind: "mutation",
29401
- auth: "admin"
29402
- }), method(object({
29403
- id: string(),
29404
- name: string().optional(),
29405
- description: string().optional(),
29406
- config: CameraPipelineConfigSchema.optional()
29407
- }), PipelineTemplateSchema, {
29408
- kind: "mutation",
29409
- auth: "admin"
29410
- }), method(object({ id: string() }), object({ success: literal(true) }), {
29411
- kind: "mutation",
29412
- auth: "admin"
29413
- });
29514
+ }), method(_void(), DiskReconcileJobSchema, { auth: "admin" });
29414
29515
  /**
29415
29516
  * Cap → event-kind mapping for the SENSOR / CONTROL cap families — the table
29416
29517
  * `pipeline-analytics.listEventKinds` uses to turn a linked device's bound
@@ -45976,12 +46077,6 @@ Object.freeze({
45976
46077
  addonId: null,
45977
46078
  access: "delete"
45978
46079
  },
45979
- "pipelineExecutor.deleteTemplate": {
45980
- capName: "pipeline-executor",
45981
- capScope: "system",
45982
- addonId: null,
45983
- access: "delete"
45984
- },
45985
46080
  "pipelineExecutor.downloadModel": {
45986
46081
  capName: "pipeline-executor",
45987
46082
  capScope: "system",
@@ -46120,12 +46215,6 @@ Object.freeze({
46120
46215
  addonId: null,
46121
46216
  access: "view"
46122
46217
  },
46123
- "pipelineExecutor.listTemplates": {
46124
- capName: "pipeline-executor",
46125
- capScope: "system",
46126
- addonId: null,
46127
- access: "view"
46128
- },
46129
46218
  "pipelineExecutor.rearmInferenceDevice": {
46130
46219
  capName: "pipeline-executor",
46131
46220
  capScope: "system",
@@ -46150,12 +46239,6 @@ Object.freeze({
46150
46239
  addonId: null,
46151
46240
  access: "create"
46152
46241
  },
46153
- "pipelineExecutor.saveTemplate": {
46154
- capName: "pipeline-executor",
46155
- capScope: "system",
46156
- addonId: null,
46157
- access: "create"
46158
- },
46159
46242
  "pipelineExecutor.setVideoPipelineSteps": {
46160
46243
  capName: "pipeline-executor",
46161
46244
  capScope: "system",
@@ -46174,19 +46257,13 @@ Object.freeze({
46174
46257
  addonId: null,
46175
46258
  access: "create"
46176
46259
  },
46177
- "pipelineExecutor.updateTemplate": {
46178
- capName: "pipeline-executor",
46179
- capScope: "system",
46180
- addonId: null,
46181
- access: "create"
46182
- },
46183
46260
  "pipelineExecutor.validatePipeline": {
46184
46261
  capName: "pipeline-executor",
46185
46262
  capScope: "system",
46186
46263
  addonId: null,
46187
46264
  access: "view"
46188
46265
  },
46189
- "pipelineOrchestrator.applyBestSettings": {
46266
+ "pipelineOrchestrator.applyAutoTune": {
46190
46267
  capName: "pipeline-orchestrator",
46191
46268
  capScope: "system",
46192
46269
  addonId: null,
@@ -46210,12 +46287,6 @@ Object.freeze({
46210
46287
  addonId: null,
46211
46288
  access: "create"
46212
46289
  },
46213
- "pipelineOrchestrator.deleteTemplate": {
46214
- capName: "pipeline-orchestrator",
46215
- capScope: "system",
46216
- addonId: null,
46217
- access: "delete"
46218
- },
46219
46290
  "pipelineOrchestrator.getAgentLoad": {
46220
46291
  capName: "pipeline-orchestrator",
46221
46292
  capScope: "system",
@@ -46306,6 +46377,12 @@ Object.freeze({
46306
46377
  addonId: null,
46307
46378
  access: "view"
46308
46379
  },
46380
+ "pipelineOrchestrator.getEffectiveShares": {
46381
+ capName: "pipeline-orchestrator",
46382
+ capScope: "system",
46383
+ addonId: null,
46384
+ access: "view"
46385
+ },
46309
46386
  "pipelineOrchestrator.getGlobalMetrics": {
46310
46387
  capName: "pipeline-orchestrator",
46311
46388
  capScope: "system",
@@ -46342,19 +46419,19 @@ Object.freeze({
46342
46419
  addonId: null,
46343
46420
  access: "view"
46344
46421
  },
46345
- "pipelineOrchestrator.getReconcileFromDiskStatus": {
46422
+ "pipelineOrchestrator.getPlacementStats": {
46346
46423
  capName: "pipeline-orchestrator",
46347
46424
  capScope: "system",
46348
46425
  addonId: null,
46349
46426
  access: "view"
46350
46427
  },
46351
- "pipelineOrchestrator.listAgentSettings": {
46428
+ "pipelineOrchestrator.getReconcileFromDiskStatus": {
46352
46429
  capName: "pipeline-orchestrator",
46353
46430
  capScope: "system",
46354
46431
  addonId: null,
46355
46432
  access: "view"
46356
46433
  },
46357
- "pipelineOrchestrator.listTemplates": {
46434
+ "pipelineOrchestrator.listAgentSettings": {
46358
46435
  capName: "pipeline-orchestrator",
46359
46436
  capScope: "system",
46360
46437
  addonId: null,
@@ -46366,7 +46443,7 @@ Object.freeze({
46366
46443
  addonId: null,
46367
46444
  access: "create"
46368
46445
  },
46369
- "pipelineOrchestrator.planBestSettings": {
46446
+ "pipelineOrchestrator.planAutoTune": {
46370
46447
  capName: "pipeline-orchestrator",
46371
46448
  capScope: "system",
46372
46449
  addonId: null,
@@ -46414,12 +46491,6 @@ Object.freeze({
46414
46491
  addonId: null,
46415
46492
  access: "create"
46416
46493
  },
46417
- "pipelineOrchestrator.saveTemplate": {
46418
- capName: "pipeline-orchestrator",
46419
- capScope: "system",
46420
- addonId: null,
46421
- access: "create"
46422
- },
46423
46494
  "pipelineOrchestrator.setAgentCapabilities": {
46424
46495
  capName: "pipeline-orchestrator",
46425
46496
  capScope: "system",
@@ -46432,12 +46503,6 @@ Object.freeze({
46432
46503
  addonId: null,
46433
46504
  access: "create"
46434
46505
  },
46435
- "pipelineOrchestrator.setAgentDetectWeight": {
46436
- capName: "pipeline-orchestrator",
46437
- capScope: "system",
46438
- addonId: null,
46439
- access: "create"
46440
- },
46441
46506
  "pipelineOrchestrator.setAgentInferenceDevices": {
46442
46507
  capName: "pipeline-orchestrator",
46443
46508
  capScope: "system",
@@ -46474,6 +46539,12 @@ Object.freeze({
46474
46539
  addonId: null,
46475
46540
  access: "create"
46476
46541
  },
46542
+ "pipelineOrchestrator.setCameraStepSettings": {
46543
+ capName: "pipeline-orchestrator",
46544
+ capScope: "system",
46545
+ addonId: null,
46546
+ access: "create"
46547
+ },
46477
46548
  "pipelineOrchestrator.setCameraStepToggle": {
46478
46549
  capName: "pipeline-orchestrator",
46479
46550
  capScope: "system",
@@ -46492,25 +46563,37 @@ Object.freeze({
46492
46563
  addonId: null,
46493
46564
  access: "create"
46494
46565
  },
46566
+ "pipelineOrchestrator.setLoadBalancingShares": {
46567
+ capName: "pipeline-orchestrator",
46568
+ capScope: "system",
46569
+ addonId: null,
46570
+ access: "create"
46571
+ },
46495
46572
  "pipelineOrchestrator.setPipelineDevicePin": {
46496
46573
  capName: "pipeline-orchestrator",
46497
46574
  capScope: "system",
46498
46575
  addonId: null,
46499
46576
  access: "create"
46500
46577
  },
46501
- "pipelineOrchestrator.unassignAudio": {
46578
+ "pipelineOrchestrator.setShareSource": {
46502
46579
  capName: "pipeline-orchestrator",
46503
46580
  capScope: "system",
46504
46581
  addonId: null,
46505
46582
  access: "create"
46506
46583
  },
46507
- "pipelineOrchestrator.unassignPipeline": {
46584
+ "pipelineOrchestrator.suggestShares": {
46585
+ capName: "pipeline-orchestrator",
46586
+ capScope: "system",
46587
+ addonId: null,
46588
+ access: "view"
46589
+ },
46590
+ "pipelineOrchestrator.unassignAudio": {
46508
46591
  capName: "pipeline-orchestrator",
46509
46592
  capScope: "system",
46510
46593
  addonId: null,
46511
46594
  access: "create"
46512
46595
  },
46513
- "pipelineOrchestrator.updateTemplate": {
46596
+ "pipelineOrchestrator.unassignPipeline": {
46514
46597
  capName: "pipeline-orchestrator",
46515
46598
  capScope: "system",
46516
46599
  addonId: null,
@@ -51904,6 +51987,11 @@ Object.freeze({
51904
51987
  form: "single",
51905
51988
  optional: false
51906
51989
  }],
51990
+ "pipelineOrchestrator.setCameraStepSettings": [{
51991
+ name: "deviceId",
51992
+ form: "single",
51993
+ optional: false
51994
+ }],
51907
51995
  "pipelineOrchestrator.setCameraStepToggle": [{
51908
51996
  name: "deviceId",
51909
51997
  form: "single",
@@ -53767,7 +53855,7 @@ function applyModelBoundSettings(settings, boundKeys, runningModelId) {
53767
53855
  /**
53768
53856
  * The keys of every `bindsToModel` field of a step's config schema, groups
53769
53857
  * flattened (D738). One definition for the runner (which applies the binding)
53770
- * and the orchestrator's Best settings (which clears those overrides, D745).
53858
+ * and the orchestrator's Auto tune (which clears those overrides, D745).
53771
53859
  */
53772
53860
  function collectModelBoundKeys(fields) {
53773
53861
  return fields.flatMap((field) => {
@@ -55767,12 +55855,6 @@ Object.defineProperty(exports, "overlayClusterStepSettings", {
55767
55855
  return overlayClusterStepSettings;
55768
55856
  }
55769
55857
  });
55770
- Object.defineProperty(exports, "parseJsonUnknown", {
55771
- enumerable: true,
55772
- get: function() {
55773
- return parseJsonUnknown;
55774
- }
55775
- });
55776
55858
  Object.defineProperty(exports, "parseProcStatus", {
55777
55859
  enumerable: true,
55778
55860
  get: function() {