@camstack/addon-pipeline 1.2.338 → 1.2.340

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/audio-analyzer/index.js +22 -30
  2. package/dist/audio-analyzer/index.mjs +23 -31
  3. package/dist/{custom-model-catalog-CN6WPGB8.mjs → custom-model-catalog-BOnN63HU.mjs} +5 -1448
  4. package/dist/{custom-model-catalog-BYJyfhgj.js → custom-model-catalog-Cjbll1Sf.js} +18 -1461
  5. package/dist/detection-pipeline/index.js +208 -17
  6. package/dist/detection-pipeline/index.mjs +232 -41
  7. package/dist/{dist-WIL4yeyi.js → dist-BWigCRRN.js} +324 -51
  8. package/dist/{dist-CdmlJu1J.mjs → dist-CsA6fY6I.mjs} +311 -50
  9. package/dist/model-catalogs-BFBf8sHb.js +1522 -0
  10. package/dist/model-catalogs-D7JXV0_i.mjs +1445 -0
  11. package/dist/motion-wasm/index.js +1 -1
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/{node-CEtew1DU.mjs → node-BZ29vHq2.mjs} +1 -1
  14. package/dist/{node-DCFClFJ1.js → node-D52HHrVZ.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-Bsj_b---.js → process-memory-C9U6dKxS.js} +1 -1
  18. package/dist/{process-memory-maZfOnev.mjs → process-memory-DOEeg2pL.mjs} +1 -1
  19. package/dist/recorder/index.js +6 -2
  20. package/dist/recorder/index.mjs +6 -2
  21. package/dist/{segment-demux-js-CXmBf_nf.js → segment-demux-js-CMZSmwMp.js} +1 -1
  22. package/dist/{segment-demux-js-DnPcYYbc.mjs → segment-demux-js-DDgwrz-e.mjs} +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-BdsJXZcP.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-6JIjr_ur.mjs} +2 -2
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js--yC-aoPc.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-Bt8aa0wk.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B-hhg2sP.mjs} +1 -1
  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-BU5SBy0i.mjs → hostInit-Ck1wQfKk.mjs} +2 -2
  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-1Y-WK-Zy.mjs +0 -26
@@ -12930,16 +12930,53 @@ var ModelFormatEntrySchema = object({
12930
12930
  /** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
12931
12931
  runtimes: array(_enum(["python"])).readonly().optional(),
12932
12932
  /**
12933
- * Content revision of the hosted artefact. Set it, or change it, whenever
12934
- * the bytes at `url` are replaced in place (same path, new content). A node
12935
- * records the revision it downloaded next to the file
12933
+ * Content revision of the artefact, for one hosted OFF the CamStack mirror.
12934
+ * A format on the mirror leaves it unset: its revision (the sha256 of its
12935
+ * weight file) comes from the downloader's generated table, kept in step
12936
+ * with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
12937
+ * node records the revision it downloaded next to the file
12936
12938
  * (`<file>.revision`); a copy with no record or a different one is stale
12937
- * and is downloaded again, the old copy serving until the new one is
12938
- * complete. Omitted ⇒ a file on disk is current, whatever it holds (D743).
12939
+ * unless its weight file hashes to the revision, and a stale copy is
12940
+ * downloaded again, the old one serving until the new one is complete. No
12941
+ * revision at all ⇒ a file on disk is current, whatever it holds (D743).
12939
12942
  */
12940
12943
  revision: string().min(1).optional()
12941
12944
  });
12942
12945
  /**
12946
+ * What a node holds for one (model, format) (D746). `current` is a complete
12947
+ * copy at its catalog revision — exactly what `downloaded: true` means.
12948
+ * `stale` is bytes on disk that are not (yet) proven current under D743/D744:
12949
+ * no or a different revision record, or a missing sibling. `missing` is no
12950
+ * copy. `downloaded` alone folds `stale` into "not downloaded", which hid
12951
+ * reclaimable bytes and a copy about to be replaced.
12952
+ */
12953
+ var ModelOnDiskStateSchema = _enum([
12954
+ "current",
12955
+ "stale",
12956
+ "missing"
12957
+ ]);
12958
+ /**
12959
+ * The numeric precision of one format's BUILD (D746) — reported only when the
12960
+ * build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
12961
+ * CamStack Core ML export). Absent means "not stated", never "fp32".
12962
+ */
12963
+ var ModelFormatPrecisionSchema = _enum([
12964
+ "fp32",
12965
+ "fp16",
12966
+ "int8"
12967
+ ]);
12968
+ /**
12969
+ * One format of one model as a node's `pipelineExecutor.getSchema` reports it.
12970
+ * `onDisk` / `precision` are optional for version skew: a runner that predates
12971
+ * them omits them, and a reader falls back to `downloaded`.
12972
+ */
12973
+ var PipelineModelFormatStatusSchema = object({
12974
+ downloaded: boolean(),
12975
+ sizeMB: number(),
12976
+ onDisk: ModelOnDiskStateSchema.optional(),
12977
+ precision: ModelFormatPrecisionSchema.optional()
12978
+ });
12979
+ /**
12943
12980
  * Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
12944
12981
  * The downloader fetches from `url` and saves to `{modelsDir}/{filename}`.
12945
12982
  */
@@ -26536,7 +26573,7 @@ var FrameRefSchema = object({
26536
26573
  timestamp: number(),
26537
26574
  capturedAt: number().optional()
26538
26575
  });
26539
- var ModelFormatSchema$1 = _enum([
26576
+ var ModelFormatSchema$2 = _enum([
26540
26577
  "onnx",
26541
26578
  "coreml",
26542
26579
  "openvino",
@@ -26554,7 +26591,7 @@ var PipelineSlotSchema = _enum([
26554
26591
  var PipelineEngineChoiceSchema = object({
26555
26592
  runtime: literal("python"),
26556
26593
  backend: string(),
26557
- format: ModelFormatSchema$1,
26594
+ format: ModelFormatSchema$2,
26558
26595
  device: string().optional()
26559
26596
  });
26560
26597
  /**
@@ -26611,10 +26648,7 @@ var PipelineTemplateSchema$1 = object({
26611
26648
  var PipelineModelOptionSchema = object({
26612
26649
  id: string(),
26613
26650
  name: string(),
26614
- formats: record(string(), object({
26615
- downloaded: boolean(),
26616
- sizeMB: number()
26617
- })),
26651
+ formats: record(string(), PipelineModelFormatStatusSchema),
26618
26652
  group: ModelVariantGroupSchema.optional(),
26619
26653
  legacy: boolean().optional(),
26620
26654
  provider: ModelProviderIdSchema.optional(),
@@ -26829,6 +26863,32 @@ var pipelineExecutorCapability = {
26829
26863
  auth: "admin"
26830
26864
  }),
26831
26865
  /**
26866
+ * Best settings (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
26867
+ * the object-detection root, and their binding keys) stored in THIS node's
26868
+ * per-camera detector settings — and, unless `dryRun`, remove them so the
26869
+ * running model's own defaults apply. Every other key of a camera's store
26870
+ * is kept. `nodeId` is the ROUTING key. `deviceIds` absent ⇒ every camera
26871
+ * with a store. A camera whose store could not be read is `refused`, never
26872
+ * reported as clean.
26873
+ */
26874
+ clearModelBoundDeviceOverrides: method(object({
26875
+ nodeId: string(),
26876
+ deviceIds: array(number()).readonly().optional(),
26877
+ dryRun: boolean()
26878
+ }), object({
26879
+ entries: array(object({
26880
+ deviceId: number(),
26881
+ keys: array(string()).readonly()
26882
+ })).readonly(),
26883
+ refused: array(object({
26884
+ deviceId: number(),
26885
+ reason: string()
26886
+ })).readonly()
26887
+ }), {
26888
+ kind: "mutation",
26889
+ auth: "admin"
26890
+ }),
26891
+ /**
26832
26892
  * Which of THIS node's inference devices the executor currently refuses,
26833
26893
  * and why. `nodeId` is the ROUTING key (stripped by the generated router).
26834
26894
  *
@@ -26923,12 +26983,12 @@ var pipelineExecutorCapability = {
26923
26983
  downloadModel: method(object({
26924
26984
  addonId: string(),
26925
26985
  modelId: string(),
26926
- format: ModelFormatSchema$1
26986
+ format: ModelFormatSchema$2
26927
26987
  }), DownloadModelResultSchema, { kind: "mutation" }),
26928
26988
  deleteModel: method(object({
26929
26989
  addonId: string(),
26930
26990
  modelId: string(),
26931
- format: ModelFormatSchema$1
26991
+ format: ModelFormatSchema$2
26932
26992
  }), object({ success: literal(true) }), { kind: "mutation" }),
26933
26993
  /**
26934
26994
  * Stateless single-frame execution. Callers (runner, benchmark) pass
@@ -27174,6 +27234,204 @@ var pipelineExecutorCapability = {
27174
27234
  getDetectionConfigSchema: method(_void(), ConfigUISchemaNullableBridge)
27175
27235
  }
27176
27236
  };
27237
+ /**
27238
+ * The wire shapes of the Best settings plan and apply (D745), used by the
27239
+ * `pipeline-orchestrator` cap. The recommender's own types
27240
+ * (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
27241
+ * schemas are what crosses the cap boundary.
27242
+ */
27243
+ var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
27244
+ var HardwareClassIdSchema = _enum([
27245
+ "intel-core-ultra",
27246
+ "intel-n-series",
27247
+ "apple-m-base",
27248
+ "apple-m-pro",
27249
+ "unknown"
27250
+ ]);
27251
+ var AcceleratorKindSchema = _enum([
27252
+ "intel-npu",
27253
+ "intel-igpu",
27254
+ "x86-cpu",
27255
+ "arm-cpu",
27256
+ "apple-ane",
27257
+ "coral"
27258
+ ]);
27259
+ var RecommendationReasonSchema = discriminatedUnion("kind", [
27260
+ object({
27261
+ kind: literal("fits"),
27262
+ utilisation: number()
27263
+ }),
27264
+ object({
27265
+ kind: literal("tie-faster"),
27266
+ over: string(),
27267
+ recallDelta: number()
27268
+ }),
27269
+ object({
27270
+ kind: literal("stepped-down"),
27271
+ from: string(),
27272
+ to: string(),
27273
+ limitedBy: string()
27274
+ }),
27275
+ object({
27276
+ kind: literal("no-fit-lightest"),
27277
+ utilisation: number()
27278
+ }),
27279
+ object({
27280
+ kind: literal("derived-latency"),
27281
+ modelId: string()
27282
+ }),
27283
+ object({
27284
+ kind: literal("estimated-load"),
27285
+ observedForMs: number().nullable()
27286
+ }),
27287
+ object({ kind: literal("cpu-device") }),
27288
+ object({ kind: literal("coral-untouched") }),
27289
+ object({ kind: literal("device-disabled") }),
27290
+ object({ kind: literal("device-unavailable") }),
27291
+ object({ kind: literal("node-offline") }),
27292
+ object({ kind: literal("no-hardware-facts") }),
27293
+ object({
27294
+ kind: literal("no-measured-data"),
27295
+ hardwareClass: HardwareClassIdSchema
27296
+ }),
27297
+ object({
27298
+ kind: literal("no-family-build"),
27299
+ format: ModelFormatSchema$1
27300
+ })
27301
+ ]);
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
+ var DeviceModelChoiceSchema = object({
27317
+ modelId: string(),
27318
+ p50Ms: number(),
27319
+ fps: number(),
27320
+ measured: boolean(),
27321
+ utilisation: number(),
27322
+ personRecall: number()
27323
+ });
27324
+ var DeviceRecommendationSchema = object({
27325
+ deviceKey: string(),
27326
+ accelerator: AcceleratorKindSchema.nullable(),
27327
+ enabled: boolean(),
27328
+ available: boolean(),
27329
+ demand: DeviceDemandSchema.nullable(),
27330
+ chosen: DeviceModelChoiceSchema.nullable(),
27331
+ reasons: array(RecommendationReasonSchema).readonly()
27332
+ });
27333
+ var NodeRecommendationSchema = object({
27334
+ nodeId: string(),
27335
+ reachable: boolean(),
27336
+ hardwareClass: HardwareClassIdSchema.nullable(),
27337
+ cpuModel: string().nullable(),
27338
+ skipped: boolean(),
27339
+ acceleratorModelId: string().nullable(),
27340
+ devices: array(DeviceRecommendationSchema).readonly(),
27341
+ reasons: array(RecommendationReasonSchema).readonly()
27342
+ });
27343
+ var ModelPinChangeSchema = object({
27344
+ stepId: string(),
27345
+ before: string().nullable(),
27346
+ after: string().nullable()
27347
+ });
27348
+ var NodeDeviceChangeSchema = object({
27349
+ nodeId: string(),
27350
+ deviceKey: string(),
27351
+ madeExplicit: boolean(),
27352
+ modelPins: array(ModelPinChangeSchema).readonly(),
27353
+ thresholds: array(object({
27354
+ stepId: string(),
27355
+ keys: array(string()).readonly()
27356
+ })).readonly()
27357
+ });
27358
+ var CameraOverrideClearSchema = object({
27359
+ deviceId: number(),
27360
+ source: _enum(["step-override", "wholesale"]),
27361
+ nodeId: string(),
27362
+ deviceKey: string().nullable(),
27363
+ stepId: string(),
27364
+ modelIdBefore: string().nullable(),
27365
+ keys: array(string()).readonly()
27366
+ });
27367
+ var DetectorStoreClearSchema = object({
27368
+ deviceId: number(),
27369
+ keys: array(string()).readonly()
27370
+ });
27371
+ var BestSettingsWarningSchema = discriminatedUnion("kind", [
27372
+ object({
27373
+ kind: literal("detector-store-cluster-wide"),
27374
+ skippedNodes: array(string()).readonly()
27375
+ }),
27376
+ object({
27377
+ kind: literal("detector-store-unreadable"),
27378
+ error: string()
27379
+ }),
27380
+ object({
27381
+ kind: literal("coral-enabled"),
27382
+ nodeId: string(),
27383
+ deviceKey: string()
27384
+ })
27385
+ ]);
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({
27390
+ /** Hash of everything the apply will write — the apply refuses a different one. */
27391
+ planHash: string(),
27392
+ family: literal("yolov9"),
27393
+ headroom: number(),
27394
+ generatedAt: number(),
27395
+ nodes: array(NodeRecommendationSchema).readonly(),
27396
+ nodeChanges: array(NodeDeviceChangeSchema).readonly(),
27397
+ cameraClears: array(CameraOverrideClearSchema).readonly(),
27398
+ detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
27399
+ warnings: array(BestSettingsWarningSchema).readonly()
27400
+ });
27401
+ var BestSettingsApplyInputSchema = object({
27402
+ planHash: string(),
27403
+ headroom: number().min(.3).max(.5).default(.4)
27404
+ });
27405
+ var BestSettingsPhaseResultSchema = object({
27406
+ phase: _enum([
27407
+ "download",
27408
+ "camera-overrides",
27409
+ "detector-thresholds",
27410
+ "node-models",
27411
+ "redispatch"
27412
+ ]),
27413
+ ok: boolean(),
27414
+ detail: string()
27415
+ });
27416
+ var BestSettingsApplyResultSchema = discriminatedUnion("kind", [
27417
+ object({
27418
+ kind: literal("applied"),
27419
+ planHash: string(),
27420
+ phases: array(BestSettingsPhaseResultSchema).readonly()
27421
+ }),
27422
+ object({
27423
+ kind: literal("aborted"),
27424
+ phases: array(BestSettingsPhaseResultSchema).readonly()
27425
+ }),
27426
+ object({
27427
+ kind: literal("stale"),
27428
+ plan: BestSettingsPlanSchema
27429
+ }),
27430
+ object({
27431
+ kind: literal("refused"),
27432
+ reason: _enum(["apply-in-progress"])
27433
+ })
27434
+ ]);
27177
27435
  object({
27178
27436
  activeCameras: number(),
27179
27437
  throttledCameras: number(),
@@ -29092,6 +29350,9 @@ method(object({
29092
29350
  }), {
29093
29351
  kind: "mutation",
29094
29352
  auth: "admin"
29353
+ }), method(BestSettingsOptionsSchema, BestSettingsPlanSchema, { auth: "admin" }), method(BestSettingsApplyInputSchema, BestSettingsApplyResultSchema, {
29354
+ kind: "mutation",
29355
+ auth: "admin"
29095
29356
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
29096
29357
  deviceId: number(),
29097
29358
  addonId: string(),
@@ -41165,7 +41426,8 @@ Object.freeze({
41165
41426
  vehicle: .65,
41166
41427
  animal: .65
41167
41428
  });
41168
- var HF_BASE_URL = `https://huggingface.co/camstack/camstack-models/resolve/main`;
41429
+ var HF_REPO = "camstack/camstack-models";
41430
+ `${HF_REPO}`;
41169
41431
  /**
41170
41432
  * Accessory device helpers — shared across drivers.
41171
41433
  *
@@ -45702,6 +45964,12 @@ Object.freeze({
45702
45964
  addonId: null,
45703
45965
  access: "delete"
45704
45966
  },
45967
+ "pipelineExecutor.clearModelBoundDeviceOverrides": {
45968
+ capName: "pipeline-executor",
45969
+ capScope: "system",
45970
+ addonId: null,
45971
+ access: "delete"
45972
+ },
45705
45973
  "pipelineExecutor.deleteModel": {
45706
45974
  capName: "pipeline-executor",
45707
45975
  capScope: "system",
@@ -45918,6 +46186,12 @@ Object.freeze({
45918
46186
  addonId: null,
45919
46187
  access: "view"
45920
46188
  },
46189
+ "pipelineOrchestrator.applyBestSettings": {
46190
+ capName: "pipeline-orchestrator",
46191
+ capScope: "system",
46192
+ addonId: null,
46193
+ access: "create"
46194
+ },
45921
46195
  "pipelineOrchestrator.applyDeviceSettingsPatch": {
45922
46196
  capName: "pipeline-orchestrator",
45923
46197
  capScope: "system",
@@ -46092,6 +46366,12 @@ Object.freeze({
46092
46366
  addonId: null,
46093
46367
  access: "create"
46094
46368
  },
46369
+ "pipelineOrchestrator.planBestSettings": {
46370
+ capName: "pipeline-orchestrator",
46371
+ capScope: "system",
46372
+ addonId: null,
46373
+ access: "view"
46374
+ },
46095
46375
  "pipelineOrchestrator.rebalance": {
46096
46376
  capName: "pipeline-orchestrator",
46097
46377
  capScope: "system",
@@ -51514,6 +51794,11 @@ Object.freeze({
51514
51794
  form: "single",
51515
51795
  optional: false
51516
51796
  }],
51797
+ "pipelineExecutor.clearModelBoundDeviceOverrides": [{
51798
+ name: "deviceIds",
51799
+ form: "array",
51800
+ optional: true
51801
+ }],
51517
51802
  "pipelineExecutor.runPipeline": [{
51518
51803
  name: "deviceId",
51519
51804
  form: "single",
@@ -53420,41 +53705,6 @@ function stepModelRunsOnFormat(models, modelId, format) {
53420
53705
  }
53421
53706
  return models.some((m) => m.legacy !== true && hasBuild(m, format));
53422
53707
  }
53423
- /**
53424
- * Model-bound step settings (D738): an operator value that is only meaningful
53425
- * for ONE model, stored together with that model's id.
53426
- *
53427
- * The per-class confidence floors are the case it exists for. A score is a
53428
- * property of one detector's output scale — on this hub the median score of a
53429
- * correct person was 0.78 on `yolov9m-320-int8`, 0.68 on `yolo26s-320-int8`,
53430
- * 0.40 on `yolo26n-320-int8` and 0.89 on `yolo26s` (640) — so a floor tuned on
53431
- * one model is wrong on the next. The DEFAULT of such a field belongs to the
53432
- * model (the catalog entry); an operator OVERRIDE belongs to the model it was
53433
- * made for.
53434
- *
53435
- * The binding is checked at READ time against the model that RUNS, never
53436
- * enforced by a write on the model-change path: a model can change without any
53437
- * operator write at all (an unpinned root follows the elected device's
53438
- * hardware-aware default, D736), and an event-driven reset could be dropped
53439
- * (events are telemetry, D8/D11). So:
53440
- *
53441
- * effective = override when the stored binding names the running model
53442
- * | override when no binding is stored (a legacy / programmatic
53443
- * value — it applies to whatever runs, as before D738)
53444
- * | the running model's default, when it declares one
53445
- * | the field's global default.
53446
- *
53447
- * Storage shape: the value stays a plain number under its own key (every
53448
- * reader of the raw settings bag keeps working), and the binding is a SIBLING
53449
- * key, {@link modelBindingKey}. Both are flat so the shallow per-key merges of
53450
- * the settings layers (node fold, camera override) carry a value and its
53451
- * binding together whenever one layer writes both — which every writer here
53452
- * does.
53453
- *
53454
- * Lives in the bare `@camstack/types` entry, which every addon bundles, so the
53455
- * runner (`addon-pipeline`) and the editors (`ui-library`, `addon-admin-ui`)
53456
- * apply the same rule.
53457
- */
53458
53708
  /** Suffix of the sibling key that names the model a stored value was made for. */
53459
53709
  var MODEL_BINDING_SUFFIX = "ModelId";
53460
53710
  /** `minConfidencePerson` → `minConfidencePersonModelId`. */
@@ -53514,6 +53764,17 @@ function applyModelBoundSettings(settings, boundKeys, runningModelId) {
53514
53764
  }
53515
53765
  return out;
53516
53766
  }
53767
+ /**
53768
+ * The keys of every `bindsToModel` field of a step's config schema, groups
53769
+ * flattened (D738). One definition for the runner (which applies the binding)
53770
+ * and the orchestrator's Best settings (which clears those overrides, D745).
53771
+ */
53772
+ function collectModelBoundKeys(fields) {
53773
+ return fields.flatMap((field) => {
53774
+ if (field.type === "group") return collectModelBoundKeys(field.fields);
53775
+ return "key" in field && "bindsToModel" in field && field.bindsToModel === true ? [field.key] : [];
53776
+ });
53777
+ }
53517
53778
  /** Side of the square, as a multiple of the face box's longer side. */
53518
53779
  var ROOT_FACE_REFINE_SCALE = 1.6;
53519
53780
  /**
@@ -54732,4 +54993,4 @@ function enumerateInferenceDevices(hw) {
54732
54993
  return out;
54733
54994
  }
54734
54995
  //#endregion
54735
- export { cameraOwnsMotionViaSensor as $, record as $n, resolveCreateExportSubject as $t, NativeLeaseAdmissionSchema as A, audioChunkBytesPerSample as An, loadContributionCapability as At, RecordingConfigSchema as B, parseJsonUnknown as Bn, overlayClusterStepSettings as Bt, EncodeProfileSchema as C, DeviceFeature as Cn, gifDeriveSpeed as Ct, HF_BASE_URL as D, BaseAddon as Dn, isFirstLevelMacroClass as Dt, G711_SCALE_CORRECTION_DB as E, BOOT_RECOVERY_BACKOFF_MS as En, inferModelProvider as Et, RATE_CONTROL_TIGHT as F, hydrateSchema as Fn, mayWriteToLocation as Ft, YAMNET_TO_MACRO as G, array as Gn, pipelineExecutorCapability as Gt, RingBuffer as H, selectAssignedProfileSlots as Hn, pickClusterStepSettings as Ht, RECORDING_EXPORT_MAX_READ_BYTES as I, isEvent as In, memoizePinnedFfmpeg as It, applyModelBoundSettings as J, lazy as Jn, recordingArchiveCapability as Jt, addonWidgetsSourceCapability as K, boolean as Kn, pipelineRunnerCapability as Kt, RECORDING_SOURCE_CAMSTACK as L, makeProfileBrokerId as Ln, migrateLegacyDeviceSignalConfig as Lt, OpsLogEntrySchema as M, customAction as Mn, mapAudioLabelToMacro as Mt, PoolMemoryWatchdog as N, defineCustomActions as Nn, maskUrlCredentials as Nt, LABEL_SUPPLY_MACRO as O, CAM_PROFILE_ORDER as On, linkedLabelStepId as Ot, RATE_CONTROL_RELAXED as P, expandAudioChunkToF32le as Pn, mayReadLocation as Pt, batteryCapability as Q, preprocess as Qn, resolveClusterStepModelId as Qt, RECORDING_SOURCE_CAMSTACK_ADDON as R, makeSourceBrokerId as Rn, modeMayWrite as Rt, EVENT_PAD_MS as S, isSoftwareDecode as Sn, gbToBytes as St, FailureCounters as T, errMsg as Tn, hfModelUrl as Tt, VIDEOCLIPS_MAX_OFFER_BYTES as U, sleep as Un, pickDetailCropConvention as Ut, RecordingSignalStatusSchema as V, parseProfileBrokerId as Vn, parseProcStatus as Vt, VISIT_MERGE_GAP_MS as W, _enum as Wn, pickNativeLeaseOverride as Wt, audioAnalyzerCapability as X, number as Xn, recordingExportCapability as Xt, audioAnalysisCapability as Y, literal as Yn, recordingCapability as Yt, audioKindId as Z, object as Zn, recordingSignalCapability as Zt, DEFAULT_DETAIL_CROP_CONVENTION as _, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as _n, evictionPolicyForMode as _t, BackgroundRunRegistry as a, resolveRootSupply as an, createLogChannelsProvider as at, DEVICE_BACKEND_TO_FORMAT as b, evaluateSensorEdge as bn, failureContributionCapability as bt, CLIP_STILL_REASON_CODE_HEADER as c, stepModelRunsOnFormat as cn, deriveBatteryPresence as ct, CLUSTER_MODEL_SCOPED_STEPS as d, streamBrokerCapability as dn, deriveRootFaceRefineRect as dt, resolveEgressDecodeHwAccel as en, string as er, cameraStreamsCapability as et, COCO_80_LABELS as f, stripRetiredBandPreBufferSec as fn, detectionPipelineCapability as ft, DEFAULT_CLUSTER_STEP_SETTINGS as g, AUDIO_PRESETS as gn, evaluateZoneRules as gt, DEFAULT_AUDIO_ANALYZER_CONFIG as h, webrtcSessionCapability as hn, enumerateInferenceDevices as ht, AUDIO_MACRO_LABELS as i, resolveRecordingProfiles as in, createHwAccelCache as it, NativeLeaseSettingsSchema as j, createEvent as jn, logChannelsCapability as jt, LABEL_SUPPLY_VOCABULARIES as k, CamProfileSchema as kn, linkedStepOf as kt, CLIP_STILL_REASON_HEADER as l, storageEvictableCapability as ln, deriveDetailCropRect as lt, CROP_SUPPLY_SOURCES as m, videoclipsCapability as mn, egressTransportFromRequest as mt, APPLE_SA_TO_MACRO as n, resolveModelBoundSetting as nn, EventCategory as nr, clipExportFailureOf as nt, BatteryStatusSchema as o, rootSuppliesOf as on, declareLogChannel as ot, COCO_TO_MACRO as p, supportedRuntimes as pn, egressTranscodeSharingKey as pt, allowedSuppliedEffect as q, discriminatedUnion as qn, rankStreams as qt, AUDIO_BACKEND_CHOICES as r, resolvePoolMemoryPolicy as rn, containingParentIndex as rt, CLIP_BROKER_PACED_RATES as s, runtimeDevices as sn, defaultDeviceFor as st, APPEARANCE_BLOCKS as t, resolveLocationMode as tn, union as tr, clipExportFailure as tt, CLIP_STREAM_TRANSPORT_HEADER as u, storageOccupancyCapability as un, deriveRecordingMode as ut, DEFAULT_EVENTS_BAND_BUFFER_SEC as v, Fmp4BoxSplitter as vn, evictionPolicyOfLocation as vt, ExportRecordSchema as w, DeviceType as wn, gifFromMp4Args as wt, EVENT_OWNER_TYPES as x, invocationFromEncodeProfile as xn, ffmpegRate as xt, DEFAULT_NATIVE_LEASE_SETTINGS as y, buildFfmpegArgs as yn, exportSubjectOf as yt, ROOT_SUPPLIABLE_STEP_IDS as z, nodePin as zn, motionDetectionCapability as zt };
54996
+ export { cameraOwnsMotionViaSensor as $, object as $n, recordingSignalCapability as $t, NativeLeaseAdmissionSchema as A, CAM_PROFILE_ORDER as An, linkedStepOf as At, RecordingConfigSchema as B, makeSourceBrokerId as Bn, modelBindingKey as Bt, EncodeProfileSchema as C, invocationFromEncodeProfile as Cn, gbToBytes as Ct, HF_REPO as D, errMsg as Dn, inferModelProvider as Dt, G711_SCALE_CORRECTION_DB as E, DeviceType as En, hfModelUrl as Et, RATE_CONTROL_TIGHT as F, defineCustomActions as Fn, mayReadLocation as Ft, YAMNET_TO_MACRO as G, sleep as Gn, pickDetailCropConvention as Gt, RingBuffer as H, parseJsonUnknown as Hn, overlayClusterStepSettings as Ht, RECORDING_EXPORT_MAX_READ_BYTES as I, expandAudioChunkToF32le as In, mayWriteToLocation as It, applyModelBoundSettings as J, boolean as Jn, pipelineRunnerCapability as Jt, addonWidgetsSourceCapability as K, _enum as Kn, pickNativeLeaseOverride as Kt, RECORDING_SOURCE_CAMSTACK as L, hydrateSchema as Ln, memoizePinnedFfmpeg as Lt, OpsLogEntrySchema as M, audioChunkBytesPerSample as Mn, logChannelsCapability as Mt, PoolMemoryWatchdog as N, createEvent as Nn, mapAudioLabelToMacro as Nt, LABEL_SUPPLY_MACRO as O, BOOT_RECOVERY_BACKOFF_MS as On, isFirstLevelMacroClass as Ot, RATE_CONTROL_RELAXED as P, customAction as Pn, maskUrlCredentials as Pt, batteryCapability as Q, number as Qn, recordingExportCapability as Qt, RECORDING_SOURCE_CAMSTACK_ADDON as R, isEvent as Rn, migrateLegacyDeviceSignalConfig as Rt, EVENT_PAD_MS as S, evaluateSensorEdge as Sn, ffmpegRate as St, FailureCounters as T, DeviceFeature as Tn, gifFromMp4Args as Tt, VIDEOCLIPS_MAX_OFFER_BYTES as U, parseProfileBrokerId as Un, parseProcStatus as Ut, RecordingSignalStatusSchema as V, nodePin as Vn, motionDetectionCapability as Vt, VISIT_MERGE_GAP_MS as W, selectAssignedProfileSlots as Wn, pickClusterStepSettings as Wt, audioAnalyzerCapability as X, lazy as Xn, recordingArchiveCapability as Xt, audioAnalysisCapability as Y, discriminatedUnion as Yn, rankStreams as Yt, audioKindId as Z, literal as Zn, recordingCapability as Zt, DEFAULT_DETAIL_CROP_CONVENTION as _, webrtcSessionCapability as _n, evaluateZoneRules as _t, BackgroundRunRegistry as a, resolvePoolMemoryPolicy as an, createHwAccelCache as at, DEVICE_BACKEND_TO_FORMAT as b, Fmp4BoxSplitter as bn, exportSubjectOf as bt, CLIP_STILL_REASON_CODE_HEADER as c, rootSuppliesOf as cn, defaultDeviceFor as ct, CLUSTER_MODEL_SCOPED_STEPS as d, storageEvictableCapability as dn, deriveRecordingMode as dt, resolveClusterStepModelId as en, preprocess as er, cameraStreamsCapability as et, COCO_80_LABELS as f, storageOccupancyCapability as fn, deriveRootFaceRefineRect as ft, DEFAULT_CLUSTER_STEP_SETTINGS as g, videoclipsCapability as gn, enumerateInferenceDevices as gt, DEFAULT_AUDIO_ANALYZER_CONFIG as h, supportedRuntimes as hn, egressTransportFromRequest as ht, AUDIO_MACRO_LABELS as i, resolveModelBoundSetting as in, EventCategory as ir, containingParentIndex as it, NativeLeaseSettingsSchema as j, CamProfileSchema as jn, loadContributionCapability as jt, LABEL_SUPPLY_VOCABULARIES as k, BaseAddon as kn, linkedLabelStepId as kt, CLIP_STILL_REASON_HEADER as l, runtimeDevices as ln, deriveBatteryPresence as lt, CROP_SUPPLY_SOURCES as m, stripRetiredBandPreBufferSec as mn, egressTranscodeSharingKey as mt, APPLE_SA_TO_MACRO as n, resolveEgressDecodeHwAccel as nn, string as nr, clipExportFailureOf as nt, BatteryStatusSchema as o, resolveRecordingProfiles as on, createLogChannelsProvider as ot, COCO_TO_MACRO as p, streamBrokerCapability as pn, detectionPipelineCapability as pt, allowedSuppliedEffect as q, array as qn, pipelineExecutorCapability as qt, AUDIO_BACKEND_CHOICES as r, resolveLocationMode as rn, union as rr, collectModelBoundKeys as rt, CLIP_BROKER_PACED_RATES as s, resolveRootSupply as sn, declareLogChannel as st, APPEARANCE_BLOCKS as t, resolveCreateExportSubject as tn, record as tr, clipExportFailure as tt, CLIP_STREAM_TRANSPORT_HEADER as u, stepModelRunsOnFormat as un, deriveDetailCropRect as ut, DEFAULT_EVENTS_BAND_BUFFER_SEC as v, AUDIO_PRESETS as vn, evictionPolicyForMode as vt, ExportRecordSchema as w, isSoftwareDecode as wn, gifDeriveSpeed as wt, EVENT_OWNER_TYPES as x, buildFfmpegArgs as xn, failureContributionCapability as xt, DEFAULT_NATIVE_LEASE_SETTINGS as y, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as yn, evictionPolicyOfLocation as yt, ROOT_SUPPLIABLE_STEP_IDS as z, makeProfileBrokerId as zn, modeMayWrite as zt };