@camstack/addon-post-analysis 1.2.299 → 1.2.301

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 (15) hide show
  1. package/dist/{clip-model-registry-DCztUu1G.mjs → clip-model-registry-BtY4fS3d.mjs} +439 -47
  2. package/dist/{clip-model-registry-hTbsQ-z7.js → clip-model-registry-CQIBimj5.js} +648 -46
  3. package/dist/embedding-encoder/index.js +26 -7
  4. package/dist/embedding-encoder/index.mjs +26 -7
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-thT_ff8Z.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BT-o174v.mjs} +2 -2
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-m9iqcykg.mjs +26 -0
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DJR5XsVb.mjs +26 -0
  9. package/dist/pipeline-analytics/{hostInit-D9z3Da9D.mjs → hostInit-D2uBFmPA.mjs} +2 -2
  10. package/dist/pipeline-analytics/index.js +8283 -1039
  11. package/dist/pipeline-analytics/index.mjs +8272 -1044
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +3 -2
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C3QGV7zb.mjs +0 -26
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Ckt8VrEv.mjs +0 -26
@@ -4991,6 +4991,14 @@ function object(shape, params) {
4991
4991
  ...normalizeParams(params)
4992
4992
  });
4993
4993
  }
4994
+ function strictObject(shape, params) {
4995
+ return new ZodObject({
4996
+ type: "object",
4997
+ shape,
4998
+ catchall: never(),
4999
+ ...normalizeParams(params)
5000
+ });
5001
+ }
4994
5002
  function looseObject(shape, params) {
4995
5003
  return new ZodObject({
4996
5004
  type: "object",
@@ -5370,7 +5378,7 @@ var ZodIssueCode = {
5370
5378
  var ZodFirstPartyTypeKind;
5371
5379
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5372
5380
  //#endregion
5373
- //#region ../types/dist/sleep-C-v96WpE.mjs
5381
+ //#region ../types/dist/sleep-gU6hqv4_.mjs
5374
5382
  /**
5375
5383
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5376
5384
  * window to float samples (D455).
@@ -7629,7 +7637,7 @@ function errMsg(err) {
7629
7637
  return String(err);
7630
7638
  }
7631
7639
  //#endregion
7632
- //#region ../types/dist/composition-BK-GTFYb.mjs
7640
+ //#region ../types/dist/composition-Dq42XWp0.mjs
7633
7641
  /**
7634
7642
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
7635
7643
  * canonical form sorts object keys alphabetically at every depth so two
@@ -7662,6 +7670,58 @@ function replaceWithSortedKeys(_key, value) {
7662
7670
  return value;
7663
7671
  }
7664
7672
  /**
7673
+ * The ffmpeg build every CamStack node downloads, per platform and arch.
7674
+ *
7675
+ * ## Why a download, on every node, including the container
7676
+ *
7677
+ * The version of ffmpeg used to be CODE: baked into the image, changeable only
7678
+ * by rebuilding and rolling it. Now it is DATA — this file states the release,
7679
+ * and a node that boots with a different one downloads it. Changing ffmpeg is a
7680
+ * framework bump, not an image rebuild.
7681
+ *
7682
+ * It also settles the licence question by removing it. FFmpeg's licence is
7683
+ * chosen at compile time: the core is LGPL 2.1+, `--enable-gpl` makes it GPL
7684
+ * (for x264/x265), `--enable-version3` makes that v3, and `--enable-nonfree`
7685
+ * makes the result undistributable. These are GPL v3 builds, and we do not
7686
+ * distribute them: the user's own node fetches the archive from the project
7687
+ * that publishes it, so we convey no GPL work and inherit none of the
7688
+ * obligations that come with conveying one. That is the whole reason the image
7689
+ * no longer installs ffmpeg at all — not a technical preference.
7690
+ *
7691
+ * ## Why jellyfin-ffmpeg
7692
+ *
7693
+ * One vendor covering linux-amd64, linux-arm64, darwin-arm64 and darwin-x64
7694
+ * from one release, with the widest hardware surface of anything maintained:
7695
+ * VAAPI, QSV, NVENC/NVDEC, AMF, Vulkan, OpenCL and DRM on amd64, plus Rockchip
7696
+ * MPP on arm64. It reaches the vendor libraries through dlopen trampolines,
7697
+ * so the binary is not linked against a driver stack it may not find.
7698
+ *
7699
+ * **What it still needs from the host, measured 2026-09-19.** On the Unraid
7700
+ * HOST, which has no libva, `-vaapi_device` aborts the process outright —
7701
+ * `implib-gen: libva-drm.so.2: failed to load library ... Assertion '0 &&
7702
+ * "Assertion in generated code"' failed`. Inside our container, which installs
7703
+ * libva plus the iHD driver, the same command encodes: verified end to end with
7704
+ * `testsrc → format=nv12,hwupload → h264_vaapi`. So the image drops ffmpeg and
7705
+ * KEEPS the Intel media stack; the drivers are the part a binary cannot bring.
7706
+ *
7707
+ * ## Why each artifact carries a checksum and a claim
7708
+ *
7709
+ * The download is now the only source, so `sha256` is verified before anything
7710
+ * is extracted — jellyfin publishes no checksums on its release assets, so
7711
+ * these are ours, taken at the version bump. And `expectedHwaccels` is what the
7712
+ * build is supposed to be able to do: a binary that probes short of its own
7713
+ * claim is a source that changed under us, which is precisely what went
7714
+ * unnoticed for months when a static build turned out to carry no VAAPI at all
7715
+ * (D536).
7716
+ */
7717
+ /** The pinned jellyfin-ffmpeg release. Changing this is the version change. */
7718
+ var FFMPEG_RELEASE = "8.1.2-5";
7719
+ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFMPEG_RELEASE}`;
7720
+ function portable(target) {
7721
+ return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
7722
+ }
7723
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
7724
+ /**
7665
7725
  * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
7666
7726
  * valutatore puro del suo FRONTE.
7667
7727
  *
@@ -8834,6 +8894,26 @@ function gifFromMp4Args(input) {
8834
8894
  ];
8835
8895
  }
8836
8896
  /**
8897
+ * Memoize `ensure` on SUCCESS only.
8898
+ *
8899
+ * A failure is not remembered: the next caller asks again, so a node whose
8900
+ * first download failed (no network at boot) recovers on the next spawn that
8901
+ * needs it — with no timer and no retry loop, because the ask is driven by
8902
+ * work that actually wants the binary.
8903
+ */
8904
+ function memoizePinnedFfmpeg(ensure) {
8905
+ let pending = null;
8906
+ return () => {
8907
+ if (pending !== null) return pending;
8908
+ const attempt = ensure();
8909
+ pending = attempt;
8910
+ attempt.catch(() => {
8911
+ if (pending === attempt) pending = null;
8912
+ });
8913
+ return attempt;
8914
+ };
8915
+ }
8916
+ /**
8837
8917
  * Deep wiring healthcheck — snapshot of active reachability probes across
8838
8918
  * every declared capability + widget of every installed plugin, on every
8839
8919
  * node. Produced by the backend `WiringHealthService` and surfaced via
@@ -9248,6 +9328,8 @@ var DETECTION_PIPELINE_CAP_NAME = "detection-pipeline";
9248
9328
  * oldest-first on append.
9249
9329
  */
9250
9330
  var MAX_BIRTH_DECISION_RECORDS = 3e4;
9331
+ /** Default page size for `listBirthDecisions` when the caller omits one. */
9332
+ var BIRTH_DECISION_DEFAULT_LIMIT = 500;
9251
9333
  /**
9252
9334
  * How stale a motion onset may be and still be offered as the birth-latency
9253
9335
  * proxy. Beyond this the row records `null`, never a large number.
@@ -9460,6 +9542,8 @@ var BirthDecisionQueryInputSchema = object({
9460
9542
  * `tracks` table measured at 4.6 MB for a single 501-row page.
9461
9543
  */
9462
9544
  var MAX_ARCHIVED_DEBUG_NOTES = 5e3;
9545
+ /** Default page size for `listArchivedDebugNotes` when the caller omits one. */
9546
+ var ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT = 200;
9463
9547
  /** One archived note — the operator's words plus enough context to find what
9464
9548
  * they were looking at, after the track itself is gone. */
9465
9549
  var ArchivedDebugNoteSchema = object({
@@ -9490,6 +9574,96 @@ var ArchivedDebugNoteQueryInputSchema = object({
9490
9574
  limit: number().int().min(1).max(1e3).optional()
9491
9575
  });
9492
9576
  /**
9577
+ * Ground truth for the tracking bench, as debug marks (D681, spec §4).
9578
+ *
9579
+ * Identity over live tracks, not boxes: "A and B are the same subject",
9580
+ * "A and B are different subjects", and one track's purity ("mixed" — two
9581
+ * subjects, optionally switching at an instant — or "not a subject"). Rows
9582
+ * reference tracks as PROVENANCE: they outlive the tracks by design.
9583
+ *
9584
+ * Bounded by COUNT, never by age (the D405 argument): ground truth is most
9585
+ * valuable when it is old enough for the pattern to have repeated.
9586
+ */
9587
+ var MAX_TRACK_RELATIONS = 2e4;
9588
+ var MAX_TRACK_PURITIES = 5e3;
9589
+ var TRACK_RELATIONS_DEFAULT_LIMIT = 500;
9590
+ var TrackRelationKindSchema = _enum(["same-subject", "different-subjects"]);
9591
+ var TrackSideSchema = _enum(["before", "after"]);
9592
+ var TrackPurityValueSchema = _enum(["mixed", "not-a-subject"]);
9593
+ var TrackRelationSchema = object({
9594
+ id: string(),
9595
+ deviceId: number().int(),
9596
+ leftTrackId: string(),
9597
+ rightTrackId: string(),
9598
+ leftSide: TrackSideSchema.nullable(),
9599
+ rightSide: TrackSideSchema.nullable(),
9600
+ relation: TrackRelationKindSchema,
9601
+ presence: literal("continuous").nullable(),
9602
+ leftStartedAt: number().int().nullable(),
9603
+ rightStartedAt: number().int().nullable(),
9604
+ createdAt: number().int(),
9605
+ updatedAt: number().int(),
9606
+ author: string().nullable()
9607
+ });
9608
+ var TrackPuritySchema = object({
9609
+ id: string(),
9610
+ deviceId: number().int(),
9611
+ sourceTrackId: string(),
9612
+ purity: TrackPurityValueSchema,
9613
+ switchAtMs: number().int().nullable(),
9614
+ startedAt: number().int().nullable(),
9615
+ createdAt: number().int(),
9616
+ updatedAt: number().int(),
9617
+ author: string().nullable()
9618
+ });
9619
+ var SetTrackRelationInputSchema = object({
9620
+ deviceId: number().int(),
9621
+ trackId: string().min(1),
9622
+ otherTrackId: string().min(1),
9623
+ relation: TrackRelationKindSchema,
9624
+ presence: literal("continuous").optional(),
9625
+ trackSide: TrackSideSchema.optional(),
9626
+ otherSide: TrackSideSchema.optional()
9627
+ });
9628
+ var ClearTrackRelationInputSchema = object({
9629
+ deviceId: number().int(),
9630
+ trackId: string().min(1),
9631
+ otherTrackId: string().min(1)
9632
+ });
9633
+ var ClearTrackRelationResultSchema = object({ cleared: boolean() });
9634
+ var SetTrackPurityInputSchema = object({
9635
+ deviceId: number().int(),
9636
+ trackId: string().min(1),
9637
+ purity: _enum([
9638
+ "pure",
9639
+ "mixed",
9640
+ "not-a-subject"
9641
+ ]),
9642
+ switchAtMs: number().int().optional()
9643
+ });
9644
+ /** `null` when `pure` cleared the row. */
9645
+ var SetTrackPurityResultSchema = object({ purity: TrackPuritySchema.nullable() });
9646
+ var ListTrackRelationsInputSchema = object({
9647
+ deviceId: number().int(),
9648
+ trackId: string().optional(),
9649
+ since: number().int().optional(),
9650
+ until: number().int().optional(),
9651
+ limit: number().int().min(1).max(5e3).optional()
9652
+ });
9653
+ var ListTrackRelationsResultSchema = object({
9654
+ relations: array(TrackRelationSchema).readonly(),
9655
+ purities: array(TrackPuritySchema).readonly(),
9656
+ truncated: boolean()
9657
+ });
9658
+ _enum([
9659
+ "unknown-track",
9660
+ "cross-device",
9661
+ "self-relation",
9662
+ "contradiction",
9663
+ "switch-outside-track",
9664
+ "switch-needs-mixed"
9665
+ ]);
9666
+ /**
9493
9667
  * Ops-log — the durable, append-only operations audit shared by the
9494
9668
  * recordings and events management surfaces.
9495
9669
  *
@@ -9549,6 +9723,8 @@ var OpsLogQueryInputSchema = object({
9549
9723
  /** Max rows returned, newest-first. */
9550
9724
  limit: number().int().min(1).max(1e3).optional()
9551
9725
  });
9726
+ /** Default page size for a `listOpsLog` query when the caller omits `limit`. */
9727
+ var OPS_LOG_DEFAULT_LIMIT = 200;
9552
9728
  var LabelDefinitionSchema = object({
9553
9729
  id: string(),
9554
9730
  name: string(),
@@ -13921,6 +14097,70 @@ var CompositionBlockStateSchema = object({
13921
14097
  reason: string().optional(),
13922
14098
  fields: array(CompositionFieldStateSchema)
13923
14099
  });
14100
+ var NUMBER = {
14101
+ kind: "fixed",
14102
+ result: ["number"]
14103
+ };
14104
+ var BOOLEAN = {
14105
+ kind: "fixed",
14106
+ result: ["boolean"]
14107
+ };
14108
+ Object.freeze({
14109
+ min: NUMBER,
14110
+ max: NUMBER,
14111
+ abs: NUMBER,
14112
+ floor: NUMBER,
14113
+ ceil: NUMBER,
14114
+ sqrt: NUMBER,
14115
+ round: NUMBER,
14116
+ pow: NUMBER,
14117
+ clamp: NUMBER,
14118
+ avg: NUMBER,
14119
+ sum: NUMBER,
14120
+ age: NUMBER,
14121
+ convert: NUMBER,
14122
+ coalesce: { kind: "coalesce" },
14123
+ any: BOOLEAN,
14124
+ all: BOOLEAN,
14125
+ within: BOOLEAN,
14126
+ latest: {
14127
+ kind: "fixed",
14128
+ result: ["number", "null"]
14129
+ },
14130
+ number: {
14131
+ kind: "fixed",
14132
+ result: ["number", "null"]
14133
+ },
14134
+ rose: {
14135
+ kind: "fixed",
14136
+ result: ["number", "null"]
14137
+ },
14138
+ count: NUMBER
14139
+ });
14140
+ `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
14141
+ /**
14142
+ * What a composition may BUILD on a device type (G2, D676): the caps a new
14143
+ * device of that type, or an existing one that lacks them, can be given. The
14144
+ * blockers are the validator's own refusal codes, and a spec compares this
14145
+ * listing with `planComposition` for every capability — the editor can never
14146
+ * offer a feature the save would refuse for the same reason.
14147
+ */
14148
+ var ComposableFieldSchema = object({
14149
+ path: string(),
14150
+ kind: CompositionFieldKindSchema,
14151
+ nullable: boolean(),
14152
+ required: boolean(),
14153
+ enumValues: array(string()).optional()
14154
+ });
14155
+ var ComposableCapabilitiesSchema = object({ caps: array(object({
14156
+ cap: string(),
14157
+ fields: array(ComposableFieldSchema),
14158
+ /** Present for an item-array cap (`consumables.items`). */
14159
+ itemArray: object({
14160
+ path: string(),
14161
+ keyField: string()
14162
+ }).optional()
14163
+ })) });
13924
14164
  /** Where a block runs. The operator chooses — a block driving a device on an
13925
14165
  * agent is the reason placement is not fixed to the hub. */
13926
14166
  var CoreBlockPlacementSchema = union([literal("hub"), string().min(1)]);
@@ -14085,7 +14325,7 @@ method(object({}), object({ blocks: array(CoreBlockSchema) }), { auth: "admin" }
14085
14325
  }), method(object({ blockId: string() }), CompositionGetReadSchema, { auth: "admin" }), method(object({}), CompositionListReadSchema, { auth: "admin" }), method(object({
14086
14326
  addonId: string().min(1),
14087
14327
  stableId: string().min(1)
14088
- }), CompositionCustomizationReadSchema, { auth: "admin" }), method(object({
14328
+ }), CompositionCustomizationReadSchema, { auth: "admin" }), method(object({ deviceType: _enum(DeviceType) }), ComposableCapabilitiesSchema, { auth: "admin" }), method(object({
14089
14329
  composition: CompositionSchema,
14090
14330
  blockId: string().optional()
14091
14331
  }), CompositionValidationSchema, {
@@ -19164,6 +19404,12 @@ var NC_TANK_SYSTEM_EVENT_KINDS = [
19164
19404
  "device-tank-normal"
19165
19405
  ];
19166
19406
  /**
19407
+ * The consumable threshold a rule that does not state one judges at (D642).
19408
+ * The operator's number ("default 15 %, configurable on the rule"), and the
19409
+ * value the cluster-wide setting it replaces shipped with.
19410
+ */
19411
+ var NC_CONSUMABLE_LOW_PERCENT_DEFAULT = 15;
19412
+ /**
19167
19413
  * One coherent system-event condition. `kinds` is the required opt-in safety
19168
19414
  * gate; the remaining lists are optional narrowing filters relevant to the
19169
19415
  * selected kinds.
@@ -19856,6 +20102,24 @@ var NcMediaFrameSchema = _enum([
19856
20102
  * sensor linked to one camera ships that camera's plain snapshot either way.
19857
20103
  */
19858
20104
  var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
20105
+ /**
20106
+ * The clip window a rule gets when it stores no `clipPreRollSec` /
20107
+ * `clipPostRollSec` (D654): 4 s before the moment, 6 s after.
20108
+ *
20109
+ * THE one owner. The Notification Center resolves an absent roll to these at
20110
+ * dispatch and sizes the broker's clip ring from them (`clip-retention-ask`).
20111
+ * The admin editor does not author the roll; the viewer editor still keeps its
20112
+ * own 3 / 7 until it imports these (viewer follow-up). A second copy is how the
20113
+ * viewer came to display 3 / 7 — copied from a stale comment on the schema
20114
+ * below — while the hub cut 4 / 6, and to prune a typed 3 back to "absent",
20115
+ * which the hub then read as 4.
20116
+ *
20117
+ * A product decision of the notification, not the broker's history window
20118
+ * (D381/D382): the clip is cut from the broker's per-camera clip ring, which
20119
+ * the rules size, not from a pre-roll dial.
20120
+ */
20121
+ var NC_CLIP_PRE_ROLL_DEFAULT_SEC = 4;
20122
+ var NC_CLIP_POST_ROLL_DEFAULT_SEC = 6;
19859
20123
  var NcMediaPolicySchema = object({
19860
20124
  attach: _enum([
19861
20125
  "best",
@@ -21388,6 +21652,24 @@ var NcAlarmConfigSchema = object({
21388
21652
  live: NcAlarmLiveSchema.optional()
21389
21653
  });
21390
21654
  /**
21655
+ * The most seconds of footage any notification rule may ask a camera to retain.
21656
+ *
21657
+ * Sixty, and it is the OCCUPANCY number. An occupancy edge is confirmed by an
21658
+ * independent read that lands long after the fact (D279) plus the condition's
21659
+ * own `sustainSeconds` (29 s on this hub), so its clip is anchored well in the
21660
+ * past — and the other source, the recordings, cannot cover a recent moment:
21661
+ * measured against `recording.getAvailability` for a 10 s window at several
21662
+ * anchors, full coverage arrived at −18 s on device 590 and −26 s on 615 and
21663
+ * 617. That edge is a PHASE of the 10-second segment cycle, not a number. The
21664
+ * ring therefore has to hold the moment until the recordings can take it over:
21665
+ * the worst measured phase (26 s) plus the confirmation lag (29 s) is 55 s, and
21666
+ * 60 is the round number above it.
21667
+ *
21668
+ * It is a ceiling, not a default. Every other rule kind asks for its own window
21669
+ * plus the dispatch margin, which is roughly a third of this.
21670
+ */
21671
+ var NC_CLIP_RETENTION_MAX_SEC = 60;
21672
+ /**
21391
21673
  * ONE rule's demand on ONE camera's clip ring.
21392
21674
  *
21393
21675
  * A rule, not a camera: the broker takes the MAX over the asks that reach a
@@ -22003,7 +22285,7 @@ function cameraSensorRefKey(ref) {
22003
22285
  }
22004
22286
  /** CS-1 accepts exactly one mode; CS-2 (D673) widens it to confirm / replace. */
22005
22287
  var CameraSensorsModeSchema = _enum(["in-addition"]);
22006
- object({
22288
+ var CameraSensorsConfigSchema = object({
22007
22289
  mode: CameraSensorsModeSchema,
22008
22290
  sensors: array(CameraSensorRefSchema).min(1).max(8)
22009
22291
  }).superRefine((value, ctx) => {
@@ -23495,6 +23777,21 @@ var EventDensityBucketSchema = object({
23495
23777
  audioDbfs: number().optional()
23496
23778
  });
23497
23779
  /**
23780
+ * Most cameras one `getEventDensityBatch` may name.
23781
+ *
23782
+ * The same ceiling the sibling batches on this cap already carry
23783
+ * (`listEventKindsBatch`, `getKeyEventsBatch`): a tablet grid is tens of
23784
+ * cameras, never hundreds, and one call's answer is N × (window / bucketMs)
23785
+ * buckets crossing a process boundary.
23786
+ *
23787
+ * The ceiling is on the SCHEMA, not only on the caller. An over-eager ask is
23788
+ * REFUSED — never truncated to the first {@link EVENT_DENSITY_BATCH_MAX} ids,
23789
+ * because that answer is indistinguishable from a complete one and the caller
23790
+ * would never learn it asked too much. A caller with more cameras sends
23791
+ * ⌈n/max⌉ calls.
23792
+ */
23793
+ var EVENT_DENSITY_BATCH_MAX = 200;
23794
+ /**
23498
23795
  * One camera's row in a `getEventDensityBatch` answer.
23499
23796
  *
23500
23797
  * TWO facts, and the timeline draws them differently:
@@ -24252,6 +24549,25 @@ var pipelineAnalyticsCapability = {
24252
24549
  */
24253
24550
  listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
24254
24551
  /**
24552
+ * Tracking-bench ground truth (D681): "this track and that one are the
24553
+ * same subject" / "different subjects". One row per unordered pair —
24554
+ * re-marking replaces it — and a mark that contradicts an existing chain
24555
+ * is REFUSED with the chain named. Writing a mark also sets `debug` on
24556
+ * both tracks. `protected`, matching `setTrackFlags`: marking is done from
24557
+ * the viewer's track detail by an authenticated non-admin session.
24558
+ */
24559
+ setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
24560
+ /** Remove the mark between two tracks. */
24561
+ clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
24562
+ /**
24563
+ * A track that is not ONE subject: `mixed` (two subjects, optionally
24564
+ * switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
24565
+ * and answers `{ purity: null }` (D681).
24566
+ */
24567
+ setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
24568
+ /** A camera's marks, optionally one track's, windowed by track start. */
24569
+ listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
24570
+ /**
24255
24571
  * Birth decisions — one row per resolved confirmation-gate verdict (D409).
24256
24572
  *
24257
24573
  * The READ half of a measurement, and only that: it gates nothing and no
@@ -26838,6 +27154,28 @@ var NodeInferenceDevicesSchema = object({
26838
27154
  reachable: boolean(),
26839
27155
  devices: array(NodeInferenceDeviceSchema).readonly()
26840
27156
  });
27157
+ /**
27158
+ * Pipeline Orchestrator capability — global load balancer + camera dispatcher.
27159
+ *
27160
+ * Lives on the hub. Tracks the camera-to-agent assignment map, listens to
27161
+ * device lifecycle events, queries each runner's capacity + hardware
27162
+ * profile, and dispatches `attachCamera` / `detachCamera` cap calls to the
27163
+ * appropriate runner instances. Persists assignments via the multi-level
27164
+ * settings store so they survive hub restarts.
27165
+ *
27166
+ * Strictly the control plane: never sees a frame, never calls inference,
27167
+ * never drains queues. The runner does that work locally on each agent.
27168
+ */
27169
+ /**
27170
+ * The input of `setCameraSensors` (G5, D676): the ONE typed write path of a
27171
+ * camera's attached sensors (D672). `config: null` removes the attachment —
27172
+ * the camera reads `not-configured` again, never `unreadable`.
27173
+ */
27174
+ var SetCameraSensorsInputSchema = object({
27175
+ deviceId: number().int().nonnegative(),
27176
+ /** `null` removes the attachment: the camera goes back to `not-configured`. */
27177
+ config: CameraSensorsConfigSchema.nullable()
27178
+ });
26841
27179
  method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
26842
27180
  kind: "mutation",
26843
27181
  auth: "admin"
@@ -26992,7 +27330,10 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
26992
27330
  }), CameraSwitchGroupSchema, {
26993
27331
  kind: "mutation",
26994
27332
  auth: "admin"
26995
- }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), DiskReconcileJobSchema, {
27333
+ }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(SetCameraSensorsInputSchema, object({ success: literal(true) }), {
27334
+ kind: "mutation",
27335
+ auth: "admin"
27336
+ }), method(_void(), DiskReconcileJobSchema, {
26996
27337
  kind: "mutation",
26997
27338
  auth: "admin"
26998
27339
  }), method(_void(), DiskReconcileJobSchema, { auth: "admin" }), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
@@ -37643,6 +37984,16 @@ var ExportDenseRangeSchema = object({
37643
37984
  toSec: number().nonnegative()
37644
37985
  }).refine((r) => r.toSec > r.fromSec, { message: "dense range must have toSec > fromSec" });
37645
37986
  /**
37987
+ * Hard ceiling on dense ranges in ONE render.
37988
+ *
37989
+ * The ranges become terms of a single ffmpeg `select` expression, so the count
37990
+ * is the length of a command-line argument. The producer (the timelapse
37991
+ * scheduler) coalesces and then falls back to the base cadence alone rather
37992
+ * than trimming — a truncated range list is a video that quietly omits the
37993
+ * evening.
37994
+ */
37995
+ var EXPORT_DENSE_MAX_RANGES = 200;
37996
+ /**
37646
37997
  * Dense-interval overlay for a timelapse: sample at `dense.everyMs` INSIDE the
37647
37998
  * listed ranges and at the base `everyMs` everywhere else.
37648
37999
  *
@@ -38464,11 +38815,23 @@ var SceneCheckSchema = discriminatedUnion("mode", [object({
38464
38815
  profileId: string().optional(),
38465
38816
  hysteresisCount: number().int().positive()
38466
38817
  })]);
38818
+ /** Defaults, as CONSTANTS rather than only as Zod `.default()`. A Zod default
38819
+ * does NOT run on the addon→addon cap path, so every runtime seam reads these
38820
+ * as absent-with-a-constant (the `NcConfirmSchema` lesson, three production
38821
+ * failures in one day). The schema defaults and these values are the same
38822
+ * numbers on purpose. */
38823
+ var SCENE_DEFAULT_QUIET_SECONDS = 60;
38824
+ var SCENE_DEFAULT_OBSERVATION_SPACING_SEC = 120;
38825
+ var SCENE_DEFAULT_CHECK_INTERVAL_SEC = 60;
38467
38826
  var SCENE_DEFAULT_ANCHOR_THRESHOLD = .85;
38468
38827
  /** Night is OPTIONAL. A scene with only a daylight reference sits the IR hours
38469
38828
  * out in silence rather than reporting a fault every night. */
38470
38829
  var SCENE_DEFAULT_UNCOVERED_POLICY = "skip";
38471
38830
  var SCENE_CONFIRM_DEFAULT_TIMEOUT_MS = 8e3;
38831
+ var SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX = 448;
38832
+ /** `resetScene({ recapture })` absent means TRUE — the operator decision. Read
38833
+ * at the seam, because a Zod `.optional()` carries no default at all. */
38834
+ var SCENE_RESET_RECAPTURES = true;
38472
38835
  /**
38473
38836
  * Vision-model adjudication of a candidate flip. Field names deliberately
38474
38837
  * mirror `NcConfirmSchema` so an operator meets one vocabulary, not two.
@@ -40805,47 +41168,6 @@ var zoneRulesCapability = {
40805
41168
  */
40806
41169
  durability: "restored"
40807
41170
  };
40808
- var NUMBER = {
40809
- kind: "fixed",
40810
- result: ["number"]
40811
- };
40812
- var BOOLEAN = {
40813
- kind: "fixed",
40814
- result: ["boolean"]
40815
- };
40816
- Object.freeze({
40817
- min: NUMBER,
40818
- max: NUMBER,
40819
- abs: NUMBER,
40820
- floor: NUMBER,
40821
- ceil: NUMBER,
40822
- sqrt: NUMBER,
40823
- round: NUMBER,
40824
- pow: NUMBER,
40825
- clamp: NUMBER,
40826
- avg: NUMBER,
40827
- sum: NUMBER,
40828
- age: NUMBER,
40829
- convert: NUMBER,
40830
- coalesce: { kind: "coalesce" },
40831
- any: BOOLEAN,
40832
- all: BOOLEAN,
40833
- within: BOOLEAN,
40834
- latest: {
40835
- kind: "fixed",
40836
- result: ["number", "null"]
40837
- },
40838
- number: {
40839
- kind: "fixed",
40840
- result: ["number", "null"]
40841
- },
40842
- rose: {
40843
- kind: "fixed",
40844
- result: ["number", "null"]
40845
- },
40846
- count: NUMBER
40847
- });
40848
- `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
40849
41171
  /**
40850
41172
  * Most specific first. Extending this list is how a new device kind becomes
40851
41173
  * gateable; nothing else needs to change.
@@ -44368,6 +44690,12 @@ Object.freeze({
44368
44690
  addonId: null,
44369
44691
  access: "view"
44370
44692
  },
44693
+ "coreBlocks.listComposableCaps": {
44694
+ capName: "core-blocks",
44695
+ capScope: "system",
44696
+ addonId: null,
44697
+ access: "view"
44698
+ },
44371
44699
  "coreBlocks.listCompositions": {
44372
44700
  capName: "core-blocks",
44373
44701
  capScope: "system",
@@ -47182,6 +47510,12 @@ Object.freeze({
47182
47510
  addonId: null,
47183
47511
  access: "create"
47184
47512
  },
47513
+ "pipelineAnalytics.clearTrackRelation": {
47514
+ capName: "pipeline-analytics",
47515
+ capScope: "device",
47516
+ addonId: null,
47517
+ access: "delete"
47518
+ },
47185
47519
  "pipelineAnalytics.clearTracks": {
47186
47520
  capName: "pipeline-analytics",
47187
47521
  capScope: "device",
@@ -47434,6 +47768,12 @@ Object.freeze({
47434
47768
  addonId: null,
47435
47769
  access: "view"
47436
47770
  },
47771
+ "pipelineAnalytics.listTrackRelations": {
47772
+ capName: "pipeline-analytics",
47773
+ capScope: "device",
47774
+ addonId: null,
47775
+ access: "view"
47776
+ },
47437
47777
  "pipelineAnalytics.listTracks": {
47438
47778
  capName: "pipeline-analytics",
47439
47779
  capScope: "device",
@@ -47548,6 +47888,18 @@ Object.freeze({
47548
47888
  addonId: null,
47549
47889
  access: "create"
47550
47890
  },
47891
+ "pipelineAnalytics.setTrackPurity": {
47892
+ capName: "pipeline-analytics",
47893
+ capScope: "device",
47894
+ addonId: null,
47895
+ access: "create"
47896
+ },
47897
+ "pipelineAnalytics.setTrackRelation": {
47898
+ capName: "pipeline-analytics",
47899
+ capScope: "device",
47900
+ addonId: null,
47901
+ access: "create"
47902
+ },
47551
47903
  "pipelineAnalytics.startStorageMigrationMove": {
47552
47904
  capName: "pipeline-analytics",
47553
47905
  capScope: "device",
@@ -48052,6 +48404,12 @@ Object.freeze({
48052
48404
  addonId: null,
48053
48405
  access: "create"
48054
48406
  },
48407
+ "pipelineOrchestrator.setCameraSensors": {
48408
+ capName: "pipeline-orchestrator",
48409
+ capScope: "system",
48410
+ addonId: null,
48411
+ access: "create"
48412
+ },
48055
48413
  "pipelineOrchestrator.setCameraStepOverride": {
48056
48414
  capName: "pipeline-orchestrator",
48057
48415
  capScope: "system",
@@ -51462,6 +51820,11 @@ Object.freeze({
51462
51820
  form: "single",
51463
51821
  optional: false
51464
51822
  }],
51823
+ "pipelineAnalytics.clearTrackRelation": [{
51824
+ name: "deviceId",
51825
+ form: "single",
51826
+ optional: false
51827
+ }],
51465
51828
  "pipelineAnalytics.clearTracks": [{
51466
51829
  name: "deviceId",
51467
51830
  form: "single",
@@ -51612,6 +51975,11 @@ Object.freeze({
51612
51975
  form: "single",
51613
51976
  optional: false
51614
51977
  }],
51978
+ "pipelineAnalytics.listTrackRelations": [{
51979
+ name: "deviceId",
51980
+ form: "single",
51981
+ optional: false
51982
+ }],
51615
51983
  "pipelineAnalytics.listTracks": [{
51616
51984
  name: "deviceId",
51617
51985
  form: "single",
@@ -51682,6 +52050,16 @@ Object.freeze({
51682
52050
  form: "single",
51683
52051
  optional: false
51684
52052
  }],
52053
+ "pipelineAnalytics.setTrackPurity": [{
52054
+ name: "deviceId",
52055
+ form: "single",
52056
+ optional: false
52057
+ }],
52058
+ "pipelineAnalytics.setTrackRelation": [{
52059
+ name: "deviceId",
52060
+ form: "single",
52061
+ optional: false
52062
+ }],
51685
52063
  "pipelineAnalytics.wipeAllAnalytics": [{
51686
52064
  name: "deviceId",
51687
52065
  form: "single",
@@ -51762,6 +52140,11 @@ Object.freeze({
51762
52140
  form: "single",
51763
52141
  optional: false
51764
52142
  }],
52143
+ "pipelineOrchestrator.setCameraSensors": [{
52144
+ name: "deviceId",
52145
+ form: "single",
52146
+ optional: false
52147
+ }],
51765
52148
  "pipelineOrchestrator.setCameraStepOverride": [{
51766
52149
  name: "deviceId",
51767
52150
  form: "single",
@@ -52544,6 +52927,15 @@ function ituDbfsFromPreEpoch(law, authoredDbfs) {
52544
52927
  return authoredDbfs + G711_SCALE_CORRECTION_DB[law];
52545
52928
  }
52546
52929
  Math.round(ituDbfsFromPreEpoch("PCMU", -55));
52930
+ /**
52931
+ * LABEL-mode confirm-count defaults. Chosen against the live "Pianti" rule
52932
+ * (2026-08-23): 15 notifies in 12 h, each a single YAMNet `crying` frame,
52933
+ * nobody actually crying. Two labelled frames in 5 s drops the single-frame
52934
+ * false positives and still catches a real episode (YAMNet labels 2–3
52935
+ * frames of a genuine cry).
52936
+ */
52937
+ var NC_AUDIO_CONFIRM_HITS_DEFAULT = 2;
52938
+ var NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT = 5;
52547
52939
  /** Schema defaults — an untouched sub-field must author exactly these. */
52548
52940
  var NC_AUDIO_DEFAULTS = {
52549
52941
  hitPercent: 60,
@@ -55351,4 +55743,4 @@ function buildClipModelRegistry(entries) {
55351
55743
  /** The built-in catalog's registry. */
55352
55744
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
55353
55745
  //#endregion
55354
- export { NcRuleSchema as $, partialRecord as $n, isScheduleActive as $t, LockStateSchema as A, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as An, audioMetricsCapability as At, NC_DEFAULT_SNOOZE_MINUTES as B, defineCustomActions as Bn, embeddingRefusalOf as Bt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as C, systemEventFamilyProblems as Cn, TimelapseRuleInputSchema as Ct, FULL_IMAGE_BBOX as D, templateVarsFor as Dn, addonWidgetsSourceCapability as Dt, FIRST_LEVEL_MACRO_CLASSES as E, templateCarriesSummary as En, TrackSourceSchema as Et, MediaFileKindEnum as F, errMsg as Fn, deriveRecordingMode as Ft, NC_TAXONOMY as G, sleep as Gn, faceGalleryCapability as Gt, NC_SNOOZE_MAX_MINUTES as H, isDeviceScopedCap as Hn, embeddingRequirementsUnavailableError as Ht, MotionTriggeredBySchema as I, BaseAddon as In, describeSystemEventDeliveryProblem as It, NcAlarmSettingsPatchSchema as J, boolean as Jn, gifFromMp4Args as Jt, NC_TEMPLATE_VARS as K, _enum as Kn, failureContributionCapability as Kt, NC_ALARM_SYSTEM_EVENT_KINDS as L, CamProfileSchema as Ln, describeSystemEventFamilyProblem as Lt, MAX_BIRTH_DECISION_RECORDS as M, evaluateSensorEdge as Mn, buildEventKindDescriptor as Mt, MAX_BIRTH_LATENCY_PROXY_MS as N, isSourceCap as Nn, consumableLowPercentOf as Nt, FailureCounters as O, vectorDimFromBase64 as On, alarmPanelCapability as Ot, MOTION_CLOSE_AFTER_MS as P, DeviceType as Pn, cosineSimilarity as Pt, NcRulePatchSchema as Q, object as Qn, isMediaOwnerType as Qt, NC_CONDITION_CATALOG as R, createEvent as Rn, embeddingEncoderCapability as Rt, EMBEDDING_REQUIREMENTS_FAILED as S, systemEventDeliveryProblems as Sn, TIMELAPSE_DENSE_FLOOR_SEC as St, EVENT_OWNER_TYPES as T, systemEventSummaryScheduleOf as Tn, TimelapseRuleSchema as Tt, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as U, nodePin as Un, encodeVectorBase64 as Ut, NC_SENSOR_TRANSITION_KINDS as V, hydrateSchema as Vn, embeddingRequirementsFailedError as Vt, NC_TANK_SYSTEM_EVENT_KINDS as W, normalizeNodeId as Wn, evictionPolicyOfLocation as Wt, NcConditionsSchema as X, literal as Xn, isEventOwnerType as Xt, NcConditionDescriptorSchema as Y, discriminatedUnion as Yn, isDetectionMacroClass as Yt, NcRuleInputSchema as Z, number as Zn, isKnownTemplateVar as Zt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as _, sceneMonitorCapability as _n, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as _t, CLIP_EMBEDDING_STEP_ID as a, notificationRulesCapability as an, NcSnoozeSuppressedSchema as at, DeclaredDevices as b, storageOccupancyCapability as bn, SCENE_DIVERGED as bt, resolveClusterModelPin as c, pipelineAnalyticsCapability as cn, NcTemplatePreviewInputSchema as ct, ArchivedDebugNoteSchema as d, readMotionTriggeredBy as dn, OpsLogEntrySchema as dt, isSystemDelivery as en, record as er, NcRuleTargetSchema as et, BaseDevice as f, readTimelapseGeneratedAt as fn, PoolMemoryWatchdog as ft, DEFAULT_EVENT_COLOR as g, ruleBelongsToAlarm as gn, RetrainStatusSchema as gt, CoverStateSchema as h, resolvePoolMemoryPolicy as hn, RebuildObjectEmbeddingsRefusalSchema as ht, CLIP_TEXT_MODELS as i, mayWriteToLocation as in, NcSnoozeSchema as it, MAX_ARCHIVED_DEBUG_NOTES as j, canonicalHash as jn, audioModeOf as jt, LabelAttributionSchema as k, zoneAnalyticsCapability as kn, assertTimelapseCadences as kt, AUDIO_MACRO_LABELS as l, plateGalleryCapability as ln, NcTemplatePreviewSchema as lt, COCO_TO_MACRO as m, resolveLocationMode as mn, RECORDING_SOURCE_CAMSTACK_ADDON as mt, DEFAULT_CLIP_MODEL as n, isVectorIndexDimConflict as nn, unknown as nr, NcScheduleSchema as nt, FACE_EMBEDDING_STEP_ID as o, occupancyScope as on, NcSystemEventKindSchema as ot, BirthDecisionRecordSchema as p, resolveClipSearchMinScore as pn, RECORDING_EXPORT_MAX_READ_BYTES as pt, NcAlarmConfigSchema as q, array as qn, gifDeriveSpeed as qt, CLIP_IMAGE_MODELS as r, kebabToCamel as rn, EventCategory as rr, NcSnoozeInputSchema as rt, readClusterModelPinStrict as s, parseProcStatus as sn, NcTaxonomySchema as st, BUILTIN_CLIP_MODELS as t, isSystemEventSummaryRule as tn, string as tr, NcRuleUpdateInputSchema as tt, AlarmArmModeSchema as u, readDeviceStateFrom as un, NcTemplateVarDescriptorSchema as ut, DETECTION_MACRO_CLASSES as v, sensorRaisedOf as vn, SCENE_DEFAULT_ANCHOR_THRESHOLD as vt, EVENT_KIND_BY_CAP as w, systemEventFilterApplies as wn, TimelapseRulePatchSchema as wt, EMBEDDING_MODEL_FAILED as x, subKindsOf as xn, SceneMonitorSchema as xt, DETECTION_PIPELINE_CAP_NAME as y, servedTemplateVars as yn, SCENE_DEFAULT_UNCOVERED_POLICY as yt, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as z, customAction as zn, embeddingModelFailedError as zt };
55746
+ export { NC_CLIP_RETENTION_MAX_SEC as $, subKindsOf as $n, TrackPuritySchema as $t, EVENT_KIND_BY_CAP as A, isScheduleActive as An, object as Ar, PoolMemoryWatchdog as At, MAX_ARCHIVED_DEBUG_NOTES as B, pipelineAnalyticsCapability as Bn, SCENE_DEFAULT_QUIET_SECONDS as Bt, DETECTION_PIPELINE_CAP_NAME as C, failureContributionCapability as Cn, sleep as Cr, NcSystemEventKindSchema as Ct, EMBEDDING_REQUIREMENTS_FAILED as D, isEventOwnerType as Dn, discriminatedUnion as Dr, NcTemplateVarDescriptorSchema as Dt, EMBEDDING_MODEL_FAILED as E, isDetectionMacroClass as En, boolean as Er, NcTemplatePreviewSchema as Et, FailureCounters as F, mayWriteToLocation as Fn, tuple as Fr, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as Ft, MOTION_CLOSE_AFTER_MS as G, resolveClipSearchMinScore as Gn, SetTrackPurityInputSchema as Gt, MAX_BIRTH_LATENCY_PROXY_MS as H, readDeviceStateFrom as Hn, SCENE_DIVERGED as Ht, LabelAttributionSchema as I, memoizePinnedFfmpeg as In, union as Ir, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as It, NC_ALARM_SYSTEM_EVENT_KINDS as J, ruleBelongsToAlarm as Jn, TIMELAPSE_DENSE_FLOOR_SEC as Jt, MediaFileKindEnum as K, resolveLocationMode as Kn, SetTrackPurityResultSchema as Kt, ListTrackRelationsInputSchema as L, notificationRulesCapability as Ln, unknown as Lr, SCENE_DEFAULT_ANCHOR_THRESHOLD as Lt, EXPORT_DENSE_MAX_RANGES as M, isSystemEventSummaryRule as Mn, record as Mr, RECORDING_SOURCE_CAMSTACK_ADDON as Mt, FIRST_LEVEL_MACRO_CLASSES as N, isVectorIndexDimConflict as Nn, strictObject as Nr, RebuildObjectEmbeddingsRefusalSchema as Nt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as O, isKnownTemplateVar as On, literal as Or, OPS_LOG_DEFAULT_LIMIT as Ot, FULL_IMAGE_BBOX as P, kebabToCamel as Pn, string as Pr, RetrainStatusSchema as Pt, NC_CLIP_PRE_ROLL_DEFAULT_SEC as Q, storageOccupancyCapability as Qn, TimelapseRuleSchema as Qt, ListTrackRelationsResultSchema as R, occupancyScope as Rn, EventCategory as Rr, SCENE_DEFAULT_CHECK_INTERVAL_SEC as Rt, DETECTION_MACRO_CLASSES as S, faceGalleryCapability as Sn, normalizeNodeId as Sr, NcSnoozeSuppressedSchema as St, DetectionSourceSchema as T, gifFromMp4Args as Tn, array as Tr, NcTemplatePreviewInputSchema as Tt, MAX_TRACK_PURITIES as U, readMotionTriggeredBy as Un, SCENE_RESET_RECAPTURES as Ut, MAX_BIRTH_DECISION_RECORDS as V, plateGalleryCapability as Vn, SCENE_DEFAULT_UNCOVERED_POLICY as Vt, MAX_TRACK_RELATIONS as W, readTimelapseGeneratedAt as Wn, SceneMonitorSchema as Wt, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as X, sensorRaisedOf as Xn, TimelapseRuleInputSchema as Xt, NC_AUDIO_CONFIRM_HITS_DEFAULT as Y, sceneMonitorCapability as Yn, TRACK_RELATIONS_DEFAULT_LIMIT as Yt, NC_CLIP_POST_ROLL_DEFAULT_SEC as Z, servedTemplateVars as Zn, TimelapseRulePatchSchema as Zt, ClearTrackRelationInputSchema as _, embeddingRefusalOf as _n, customAction as _r, NcRuleTargetSchema as _t, CLIP_EMBEDDING_STEP_ID as a, alarmPanelCapability as an, templateVarsFor as ar, NC_SNOOZE_MAX_MINUTES as at, DEFAULT_EVENT_COLOR as b, encodeVectorBase64 as bn, isDeviceScopedCap as br, NcSnoozeInputSchema as bt, resolveClusterModelPin as c, audioModeOf as cn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as cr, NC_TAXONOMY as ct, AlarmArmModeSchema as d, cosineSimilarity as dn, isSourceCap as dr, NcAlarmSettingsPatchSchema as dt, TrackRelationKindSchema as en, systemEventDeliveryProblems as er, NC_CONDITION_CATALOG as et, ArchivedDebugNoteSchema as f, deriveRecordingMode as fn, DeviceType as fr, NcConditionDescriptorSchema as ft, COCO_TO_MACRO as g, embeddingModelFailedError as gn, createEvent as gr, NcRuleSchema as gt, BirthDecisionRecordSchema as h, embeddingEncoderCapability as hn, CamProfileSchema as hr, NcRulePatchSchema as ht, CLIP_TEXT_MODELS as i, addonWidgetsSourceCapability as in, templateCarriesSummary as ir, NC_SENSOR_TRANSITION_KINDS as it, EVENT_OWNER_TYPES as j, isSystemDelivery as jn, partialRecord as jr, RECORDING_EXPORT_MAX_READ_BYTES as jt, EVENT_DENSITY_BATCH_MAX as k, isMediaOwnerType as kn, number as kr, OpsLogEntrySchema as kt, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as l, buildEventKindDescriptor as ln, canonicalHash as lr, NC_TEMPLATE_VARS as lt, BaseDevice as m, describeSystemEventFamilyProblem as mn, BaseAddon as mr, NcRuleInputSchema as mt, DEFAULT_CLIP_MODEL as n, TrackSideSchema as nn, systemEventFilterApplies as nr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as nt, FACE_EMBEDDING_STEP_ID as o, assertTimelapseCadences as on, vectorDimFromBase64 as or, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as ot, BIRTH_DECISION_DEFAULT_LIMIT as p, describeSystemEventDeliveryProblem as pn, errMsg as pr, NcConditionsSchema as pt, MotionTriggeredBySchema as q, resolvePoolMemoryPolicy as qn, SetTrackRelationInputSchema as qt, CLIP_IMAGE_MODELS as r, TrackSourceSchema as rn, systemEventSummaryScheduleOf as rr, NC_DEFAULT_SNOOZE_MINUTES as rt, readClusterModelPinStrict as s, audioMetricsCapability as sn, zoneAnalyticsCapability as sr, NC_TANK_SYSTEM_EVENT_KINDS as st, BUILTIN_CLIP_MODELS as t, TrackRelationSchema as tn, systemEventFamilyProblems as tr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as tt, AUDIO_MACRO_LABELS as u, consumableLowPercentOf as un, evaluateSensorEdge as ur, NcAlarmConfigSchema as ut, ClearTrackRelationResultSchema as v, embeddingRequirementsFailedError as vn, defineCustomActions as vr, NcRuleUpdateInputSchema as vt, DeclaredDevices as w, gifDeriveSpeed as wn, _enum as wr, NcTaxonomySchema as wt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as x, evictionPolicyOfLocation as xn, nodePin as xr, NcSnoozeSchema as xt, CoverStateSchema as y, embeddingRequirementsUnavailableError as yn, hydrateSchema as yr, NcScheduleSchema as yt, LockStateSchema as z, parseProcStatus as zn, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as zt };