@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
@@ -5022,6 +5022,14 @@ function object(shape, params) {
5022
5022
  ...normalizeParams(params)
5023
5023
  });
5024
5024
  }
5025
+ function strictObject(shape, params) {
5026
+ return new ZodObject({
5027
+ type: "object",
5028
+ shape,
5029
+ catchall: never(),
5030
+ ...normalizeParams(params)
5031
+ });
5032
+ }
5025
5033
  function looseObject(shape, params) {
5026
5034
  return new ZodObject({
5027
5035
  type: "object",
@@ -5401,7 +5409,7 @@ var ZodIssueCode = {
5401
5409
  var ZodFirstPartyTypeKind;
5402
5410
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5403
5411
  //#endregion
5404
- //#region ../types/dist/sleep-C-v96WpE.mjs
5412
+ //#region ../types/dist/sleep-gU6hqv4_.mjs
5405
5413
  /**
5406
5414
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5407
5415
  * window to float samples (D455).
@@ -7660,7 +7668,7 @@ function errMsg(err) {
7660
7668
  return String(err);
7661
7669
  }
7662
7670
  //#endregion
7663
- //#region ../types/dist/composition-BK-GTFYb.mjs
7671
+ //#region ../types/dist/composition-Dq42XWp0.mjs
7664
7672
  /**
7665
7673
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
7666
7674
  * canonical form sorts object keys alphabetically at every depth so two
@@ -7693,6 +7701,58 @@ function replaceWithSortedKeys(_key, value) {
7693
7701
  return value;
7694
7702
  }
7695
7703
  /**
7704
+ * The ffmpeg build every CamStack node downloads, per platform and arch.
7705
+ *
7706
+ * ## Why a download, on every node, including the container
7707
+ *
7708
+ * The version of ffmpeg used to be CODE: baked into the image, changeable only
7709
+ * by rebuilding and rolling it. Now it is DATA — this file states the release,
7710
+ * and a node that boots with a different one downloads it. Changing ffmpeg is a
7711
+ * framework bump, not an image rebuild.
7712
+ *
7713
+ * It also settles the licence question by removing it. FFmpeg's licence is
7714
+ * chosen at compile time: the core is LGPL 2.1+, `--enable-gpl` makes it GPL
7715
+ * (for x264/x265), `--enable-version3` makes that v3, and `--enable-nonfree`
7716
+ * makes the result undistributable. These are GPL v3 builds, and we do not
7717
+ * distribute them: the user's own node fetches the archive from the project
7718
+ * that publishes it, so we convey no GPL work and inherit none of the
7719
+ * obligations that come with conveying one. That is the whole reason the image
7720
+ * no longer installs ffmpeg at all — not a technical preference.
7721
+ *
7722
+ * ## Why jellyfin-ffmpeg
7723
+ *
7724
+ * One vendor covering linux-amd64, linux-arm64, darwin-arm64 and darwin-x64
7725
+ * from one release, with the widest hardware surface of anything maintained:
7726
+ * VAAPI, QSV, NVENC/NVDEC, AMF, Vulkan, OpenCL and DRM on amd64, plus Rockchip
7727
+ * MPP on arm64. It reaches the vendor libraries through dlopen trampolines,
7728
+ * so the binary is not linked against a driver stack it may not find.
7729
+ *
7730
+ * **What it still needs from the host, measured 2026-09-19.** On the Unraid
7731
+ * HOST, which has no libva, `-vaapi_device` aborts the process outright —
7732
+ * `implib-gen: libva-drm.so.2: failed to load library ... Assertion '0 &&
7733
+ * "Assertion in generated code"' failed`. Inside our container, which installs
7734
+ * libva plus the iHD driver, the same command encodes: verified end to end with
7735
+ * `testsrc → format=nv12,hwupload → h264_vaapi`. So the image drops ffmpeg and
7736
+ * KEEPS the Intel media stack; the drivers are the part a binary cannot bring.
7737
+ *
7738
+ * ## Why each artifact carries a checksum and a claim
7739
+ *
7740
+ * The download is now the only source, so `sha256` is verified before anything
7741
+ * is extracted — jellyfin publishes no checksums on its release assets, so
7742
+ * these are ours, taken at the version bump. And `expectedHwaccels` is what the
7743
+ * build is supposed to be able to do: a binary that probes short of its own
7744
+ * claim is a source that changed under us, which is precisely what went
7745
+ * unnoticed for months when a static build turned out to carry no VAAPI at all
7746
+ * (D536).
7747
+ */
7748
+ /** The pinned jellyfin-ffmpeg release. Changing this is the version change. */
7749
+ var FFMPEG_RELEASE = "8.1.2-5";
7750
+ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFMPEG_RELEASE}`;
7751
+ function portable(target) {
7752
+ return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
7753
+ }
7754
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
7755
+ /**
7696
7756
  * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
7697
7757
  * valutatore puro del suo FRONTE.
7698
7758
  *
@@ -8865,6 +8925,26 @@ function gifFromMp4Args(input) {
8865
8925
  ];
8866
8926
  }
8867
8927
  /**
8928
+ * Memoize `ensure` on SUCCESS only.
8929
+ *
8930
+ * A failure is not remembered: the next caller asks again, so a node whose
8931
+ * first download failed (no network at boot) recovers on the next spawn that
8932
+ * needs it — with no timer and no retry loop, because the ask is driven by
8933
+ * work that actually wants the binary.
8934
+ */
8935
+ function memoizePinnedFfmpeg(ensure) {
8936
+ let pending = null;
8937
+ return () => {
8938
+ if (pending !== null) return pending;
8939
+ const attempt = ensure();
8940
+ pending = attempt;
8941
+ attempt.catch(() => {
8942
+ if (pending === attempt) pending = null;
8943
+ });
8944
+ return attempt;
8945
+ };
8946
+ }
8947
+ /**
8868
8948
  * Deep wiring healthcheck — snapshot of active reachability probes across
8869
8949
  * every declared capability + widget of every installed plugin, on every
8870
8950
  * node. Produced by the backend `WiringHealthService` and surfaced via
@@ -9279,6 +9359,8 @@ var DETECTION_PIPELINE_CAP_NAME = "detection-pipeline";
9279
9359
  * oldest-first on append.
9280
9360
  */
9281
9361
  var MAX_BIRTH_DECISION_RECORDS = 3e4;
9362
+ /** Default page size for `listBirthDecisions` when the caller omits one. */
9363
+ var BIRTH_DECISION_DEFAULT_LIMIT = 500;
9282
9364
  /**
9283
9365
  * How stale a motion onset may be and still be offered as the birth-latency
9284
9366
  * proxy. Beyond this the row records `null`, never a large number.
@@ -9491,6 +9573,8 @@ var BirthDecisionQueryInputSchema = object({
9491
9573
  * `tracks` table measured at 4.6 MB for a single 501-row page.
9492
9574
  */
9493
9575
  var MAX_ARCHIVED_DEBUG_NOTES = 5e3;
9576
+ /** Default page size for `listArchivedDebugNotes` when the caller omits one. */
9577
+ var ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT = 200;
9494
9578
  /** One archived note — the operator's words plus enough context to find what
9495
9579
  * they were looking at, after the track itself is gone. */
9496
9580
  var ArchivedDebugNoteSchema = object({
@@ -9521,6 +9605,96 @@ var ArchivedDebugNoteQueryInputSchema = object({
9521
9605
  limit: number().int().min(1).max(1e3).optional()
9522
9606
  });
9523
9607
  /**
9608
+ * Ground truth for the tracking bench, as debug marks (D681, spec §4).
9609
+ *
9610
+ * Identity over live tracks, not boxes: "A and B are the same subject",
9611
+ * "A and B are different subjects", and one track's purity ("mixed" — two
9612
+ * subjects, optionally switching at an instant — or "not a subject"). Rows
9613
+ * reference tracks as PROVENANCE: they outlive the tracks by design.
9614
+ *
9615
+ * Bounded by COUNT, never by age (the D405 argument): ground truth is most
9616
+ * valuable when it is old enough for the pattern to have repeated.
9617
+ */
9618
+ var MAX_TRACK_RELATIONS = 2e4;
9619
+ var MAX_TRACK_PURITIES = 5e3;
9620
+ var TRACK_RELATIONS_DEFAULT_LIMIT = 500;
9621
+ var TrackRelationKindSchema = _enum(["same-subject", "different-subjects"]);
9622
+ var TrackSideSchema = _enum(["before", "after"]);
9623
+ var TrackPurityValueSchema = _enum(["mixed", "not-a-subject"]);
9624
+ var TrackRelationSchema = object({
9625
+ id: string(),
9626
+ deviceId: number().int(),
9627
+ leftTrackId: string(),
9628
+ rightTrackId: string(),
9629
+ leftSide: TrackSideSchema.nullable(),
9630
+ rightSide: TrackSideSchema.nullable(),
9631
+ relation: TrackRelationKindSchema,
9632
+ presence: literal("continuous").nullable(),
9633
+ leftStartedAt: number().int().nullable(),
9634
+ rightStartedAt: number().int().nullable(),
9635
+ createdAt: number().int(),
9636
+ updatedAt: number().int(),
9637
+ author: string().nullable()
9638
+ });
9639
+ var TrackPuritySchema = object({
9640
+ id: string(),
9641
+ deviceId: number().int(),
9642
+ sourceTrackId: string(),
9643
+ purity: TrackPurityValueSchema,
9644
+ switchAtMs: number().int().nullable(),
9645
+ startedAt: number().int().nullable(),
9646
+ createdAt: number().int(),
9647
+ updatedAt: number().int(),
9648
+ author: string().nullable()
9649
+ });
9650
+ var SetTrackRelationInputSchema = object({
9651
+ deviceId: number().int(),
9652
+ trackId: string().min(1),
9653
+ otherTrackId: string().min(1),
9654
+ relation: TrackRelationKindSchema,
9655
+ presence: literal("continuous").optional(),
9656
+ trackSide: TrackSideSchema.optional(),
9657
+ otherSide: TrackSideSchema.optional()
9658
+ });
9659
+ var ClearTrackRelationInputSchema = object({
9660
+ deviceId: number().int(),
9661
+ trackId: string().min(1),
9662
+ otherTrackId: string().min(1)
9663
+ });
9664
+ var ClearTrackRelationResultSchema = object({ cleared: boolean() });
9665
+ var SetTrackPurityInputSchema = object({
9666
+ deviceId: number().int(),
9667
+ trackId: string().min(1),
9668
+ purity: _enum([
9669
+ "pure",
9670
+ "mixed",
9671
+ "not-a-subject"
9672
+ ]),
9673
+ switchAtMs: number().int().optional()
9674
+ });
9675
+ /** `null` when `pure` cleared the row. */
9676
+ var SetTrackPurityResultSchema = object({ purity: TrackPuritySchema.nullable() });
9677
+ var ListTrackRelationsInputSchema = object({
9678
+ deviceId: number().int(),
9679
+ trackId: string().optional(),
9680
+ since: number().int().optional(),
9681
+ until: number().int().optional(),
9682
+ limit: number().int().min(1).max(5e3).optional()
9683
+ });
9684
+ var ListTrackRelationsResultSchema = object({
9685
+ relations: array(TrackRelationSchema).readonly(),
9686
+ purities: array(TrackPuritySchema).readonly(),
9687
+ truncated: boolean()
9688
+ });
9689
+ _enum([
9690
+ "unknown-track",
9691
+ "cross-device",
9692
+ "self-relation",
9693
+ "contradiction",
9694
+ "switch-outside-track",
9695
+ "switch-needs-mixed"
9696
+ ]);
9697
+ /**
9524
9698
  * Ops-log — the durable, append-only operations audit shared by the
9525
9699
  * recordings and events management surfaces.
9526
9700
  *
@@ -9580,6 +9754,8 @@ var OpsLogQueryInputSchema = object({
9580
9754
  /** Max rows returned, newest-first. */
9581
9755
  limit: number().int().min(1).max(1e3).optional()
9582
9756
  });
9757
+ /** Default page size for a `listOpsLog` query when the caller omits `limit`. */
9758
+ var OPS_LOG_DEFAULT_LIMIT = 200;
9583
9759
  var LabelDefinitionSchema = object({
9584
9760
  id: string(),
9585
9761
  name: string(),
@@ -13952,6 +14128,70 @@ var CompositionBlockStateSchema = object({
13952
14128
  reason: string().optional(),
13953
14129
  fields: array(CompositionFieldStateSchema)
13954
14130
  });
14131
+ var NUMBER = {
14132
+ kind: "fixed",
14133
+ result: ["number"]
14134
+ };
14135
+ var BOOLEAN = {
14136
+ kind: "fixed",
14137
+ result: ["boolean"]
14138
+ };
14139
+ Object.freeze({
14140
+ min: NUMBER,
14141
+ max: NUMBER,
14142
+ abs: NUMBER,
14143
+ floor: NUMBER,
14144
+ ceil: NUMBER,
14145
+ sqrt: NUMBER,
14146
+ round: NUMBER,
14147
+ pow: NUMBER,
14148
+ clamp: NUMBER,
14149
+ avg: NUMBER,
14150
+ sum: NUMBER,
14151
+ age: NUMBER,
14152
+ convert: NUMBER,
14153
+ coalesce: { kind: "coalesce" },
14154
+ any: BOOLEAN,
14155
+ all: BOOLEAN,
14156
+ within: BOOLEAN,
14157
+ latest: {
14158
+ kind: "fixed",
14159
+ result: ["number", "null"]
14160
+ },
14161
+ number: {
14162
+ kind: "fixed",
14163
+ result: ["number", "null"]
14164
+ },
14165
+ rose: {
14166
+ kind: "fixed",
14167
+ result: ["number", "null"]
14168
+ },
14169
+ count: NUMBER
14170
+ });
14171
+ `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
14172
+ /**
14173
+ * What a composition may BUILD on a device type (G2, D676): the caps a new
14174
+ * device of that type, or an existing one that lacks them, can be given. The
14175
+ * blockers are the validator's own refusal codes, and a spec compares this
14176
+ * listing with `planComposition` for every capability — the editor can never
14177
+ * offer a feature the save would refuse for the same reason.
14178
+ */
14179
+ var ComposableFieldSchema = object({
14180
+ path: string(),
14181
+ kind: CompositionFieldKindSchema,
14182
+ nullable: boolean(),
14183
+ required: boolean(),
14184
+ enumValues: array(string()).optional()
14185
+ });
14186
+ var ComposableCapabilitiesSchema = object({ caps: array(object({
14187
+ cap: string(),
14188
+ fields: array(ComposableFieldSchema),
14189
+ /** Present for an item-array cap (`consumables.items`). */
14190
+ itemArray: object({
14191
+ path: string(),
14192
+ keyField: string()
14193
+ }).optional()
14194
+ })) });
13955
14195
  /** Where a block runs. The operator chooses — a block driving a device on an
13956
14196
  * agent is the reason placement is not fixed to the hub. */
13957
14197
  var CoreBlockPlacementSchema = union([literal("hub"), string().min(1)]);
@@ -14116,7 +14356,7 @@ method(object({}), object({ blocks: array(CoreBlockSchema) }), { auth: "admin" }
14116
14356
  }), method(object({ blockId: string() }), CompositionGetReadSchema, { auth: "admin" }), method(object({}), CompositionListReadSchema, { auth: "admin" }), method(object({
14117
14357
  addonId: string().min(1),
14118
14358
  stableId: string().min(1)
14119
- }), CompositionCustomizationReadSchema, { auth: "admin" }), method(object({
14359
+ }), CompositionCustomizationReadSchema, { auth: "admin" }), method(object({ deviceType: _enum(DeviceType) }), ComposableCapabilitiesSchema, { auth: "admin" }), method(object({
14120
14360
  composition: CompositionSchema,
14121
14361
  blockId: string().optional()
14122
14362
  }), CompositionValidationSchema, {
@@ -19195,6 +19435,12 @@ var NC_TANK_SYSTEM_EVENT_KINDS = [
19195
19435
  "device-tank-normal"
19196
19436
  ];
19197
19437
  /**
19438
+ * The consumable threshold a rule that does not state one judges at (D642).
19439
+ * The operator's number ("default 15 %, configurable on the rule"), and the
19440
+ * value the cluster-wide setting it replaces shipped with.
19441
+ */
19442
+ var NC_CONSUMABLE_LOW_PERCENT_DEFAULT = 15;
19443
+ /**
19198
19444
  * One coherent system-event condition. `kinds` is the required opt-in safety
19199
19445
  * gate; the remaining lists are optional narrowing filters relevant to the
19200
19446
  * selected kinds.
@@ -19887,6 +20133,24 @@ var NcMediaFrameSchema = _enum([
19887
20133
  * sensor linked to one camera ships that camera's plain snapshot either way.
19888
20134
  */
19889
20135
  var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
20136
+ /**
20137
+ * The clip window a rule gets when it stores no `clipPreRollSec` /
20138
+ * `clipPostRollSec` (D654): 4 s before the moment, 6 s after.
20139
+ *
20140
+ * THE one owner. The Notification Center resolves an absent roll to these at
20141
+ * dispatch and sizes the broker's clip ring from them (`clip-retention-ask`).
20142
+ * The admin editor does not author the roll; the viewer editor still keeps its
20143
+ * own 3 / 7 until it imports these (viewer follow-up). A second copy is how the
20144
+ * viewer came to display 3 / 7 — copied from a stale comment on the schema
20145
+ * below — while the hub cut 4 / 6, and to prune a typed 3 back to "absent",
20146
+ * which the hub then read as 4.
20147
+ *
20148
+ * A product decision of the notification, not the broker's history window
20149
+ * (D381/D382): the clip is cut from the broker's per-camera clip ring, which
20150
+ * the rules size, not from a pre-roll dial.
20151
+ */
20152
+ var NC_CLIP_PRE_ROLL_DEFAULT_SEC = 4;
20153
+ var NC_CLIP_POST_ROLL_DEFAULT_SEC = 6;
19890
20154
  var NcMediaPolicySchema = object({
19891
20155
  attach: _enum([
19892
20156
  "best",
@@ -21419,6 +21683,24 @@ var NcAlarmConfigSchema = object({
21419
21683
  live: NcAlarmLiveSchema.optional()
21420
21684
  });
21421
21685
  /**
21686
+ * The most seconds of footage any notification rule may ask a camera to retain.
21687
+ *
21688
+ * Sixty, and it is the OCCUPANCY number. An occupancy edge is confirmed by an
21689
+ * independent read that lands long after the fact (D279) plus the condition's
21690
+ * own `sustainSeconds` (29 s on this hub), so its clip is anchored well in the
21691
+ * past — and the other source, the recordings, cannot cover a recent moment:
21692
+ * measured against `recording.getAvailability` for a 10 s window at several
21693
+ * anchors, full coverage arrived at −18 s on device 590 and −26 s on 615 and
21694
+ * 617. That edge is a PHASE of the 10-second segment cycle, not a number. The
21695
+ * ring therefore has to hold the moment until the recordings can take it over:
21696
+ * the worst measured phase (26 s) plus the confirmation lag (29 s) is 55 s, and
21697
+ * 60 is the round number above it.
21698
+ *
21699
+ * It is a ceiling, not a default. Every other rule kind asks for its own window
21700
+ * plus the dispatch margin, which is roughly a third of this.
21701
+ */
21702
+ var NC_CLIP_RETENTION_MAX_SEC = 60;
21703
+ /**
21422
21704
  * ONE rule's demand on ONE camera's clip ring.
21423
21705
  *
21424
21706
  * A rule, not a camera: the broker takes the MAX over the asks that reach a
@@ -22034,7 +22316,7 @@ function cameraSensorRefKey(ref) {
22034
22316
  }
22035
22317
  /** CS-1 accepts exactly one mode; CS-2 (D673) widens it to confirm / replace. */
22036
22318
  var CameraSensorsModeSchema = _enum(["in-addition"]);
22037
- object({
22319
+ var CameraSensorsConfigSchema = object({
22038
22320
  mode: CameraSensorsModeSchema,
22039
22321
  sensors: array(CameraSensorRefSchema).min(1).max(8)
22040
22322
  }).superRefine((value, ctx) => {
@@ -23526,6 +23808,21 @@ var EventDensityBucketSchema = object({
23526
23808
  audioDbfs: number().optional()
23527
23809
  });
23528
23810
  /**
23811
+ * Most cameras one `getEventDensityBatch` may name.
23812
+ *
23813
+ * The same ceiling the sibling batches on this cap already carry
23814
+ * (`listEventKindsBatch`, `getKeyEventsBatch`): a tablet grid is tens of
23815
+ * cameras, never hundreds, and one call's answer is N × (window / bucketMs)
23816
+ * buckets crossing a process boundary.
23817
+ *
23818
+ * The ceiling is on the SCHEMA, not only on the caller. An over-eager ask is
23819
+ * REFUSED — never truncated to the first {@link EVENT_DENSITY_BATCH_MAX} ids,
23820
+ * because that answer is indistinguishable from a complete one and the caller
23821
+ * would never learn it asked too much. A caller with more cameras sends
23822
+ * ⌈n/max⌉ calls.
23823
+ */
23824
+ var EVENT_DENSITY_BATCH_MAX = 200;
23825
+ /**
23529
23826
  * One camera's row in a `getEventDensityBatch` answer.
23530
23827
  *
23531
23828
  * TWO facts, and the timeline draws them differently:
@@ -24283,6 +24580,25 @@ var pipelineAnalyticsCapability = {
24283
24580
  */
24284
24581
  listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
24285
24582
  /**
24583
+ * Tracking-bench ground truth (D681): "this track and that one are the
24584
+ * same subject" / "different subjects". One row per unordered pair —
24585
+ * re-marking replaces it — and a mark that contradicts an existing chain
24586
+ * is REFUSED with the chain named. Writing a mark also sets `debug` on
24587
+ * both tracks. `protected`, matching `setTrackFlags`: marking is done from
24588
+ * the viewer's track detail by an authenticated non-admin session.
24589
+ */
24590
+ setTrackRelation: method(SetTrackRelationInputSchema, TrackRelationSchema, { kind: "mutation" }),
24591
+ /** Remove the mark between two tracks. */
24592
+ clearTrackRelation: method(ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, { kind: "mutation" }),
24593
+ /**
24594
+ * A track that is not ONE subject: `mixed` (two subjects, optionally
24595
+ * switching at `switchAtMs`) or `not-a-subject`. `pure` clears the mark
24596
+ * and answers `{ purity: null }` (D681).
24597
+ */
24598
+ setTrackPurity: method(SetTrackPurityInputSchema, SetTrackPurityResultSchema, { kind: "mutation" }),
24599
+ /** A camera's marks, optionally one track's, windowed by track start. */
24600
+ listTrackRelations: method(ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, { kind: "query" }),
24601
+ /**
24286
24602
  * Birth decisions — one row per resolved confirmation-gate verdict (D409).
24287
24603
  *
24288
24604
  * The READ half of a measurement, and only that: it gates nothing and no
@@ -26869,6 +27185,28 @@ var NodeInferenceDevicesSchema = object({
26869
27185
  reachable: boolean(),
26870
27186
  devices: array(NodeInferenceDeviceSchema).readonly()
26871
27187
  });
27188
+ /**
27189
+ * Pipeline Orchestrator capability — global load balancer + camera dispatcher.
27190
+ *
27191
+ * Lives on the hub. Tracks the camera-to-agent assignment map, listens to
27192
+ * device lifecycle events, queries each runner's capacity + hardware
27193
+ * profile, and dispatches `attachCamera` / `detachCamera` cap calls to the
27194
+ * appropriate runner instances. Persists assignments via the multi-level
27195
+ * settings store so they survive hub restarts.
27196
+ *
27197
+ * Strictly the control plane: never sees a frame, never calls inference,
27198
+ * never drains queues. The runner does that work locally on each agent.
27199
+ */
27200
+ /**
27201
+ * The input of `setCameraSensors` (G5, D676): the ONE typed write path of a
27202
+ * camera's attached sensors (D672). `config: null` removes the attachment —
27203
+ * the camera reads `not-configured` again, never `unreadable`.
27204
+ */
27205
+ var SetCameraSensorsInputSchema = object({
27206
+ deviceId: number().int().nonnegative(),
27207
+ /** `null` removes the attachment: the camera goes back to `not-configured`. */
27208
+ config: CameraSensorsConfigSchema.nullable()
27209
+ });
26872
27210
  method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
26873
27211
  kind: "mutation",
26874
27212
  auth: "admin"
@@ -27023,7 +27361,10 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
27023
27361
  }), CameraSwitchGroupSchema, {
27024
27362
  kind: "mutation",
27025
27363
  auth: "admin"
27026
- }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), DiskReconcileJobSchema, {
27364
+ }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(SetCameraSensorsInputSchema, object({ success: literal(true) }), {
27365
+ kind: "mutation",
27366
+ auth: "admin"
27367
+ }), method(_void(), DiskReconcileJobSchema, {
27027
27368
  kind: "mutation",
27028
27369
  auth: "admin"
27029
27370
  }), method(_void(), DiskReconcileJobSchema, { auth: "admin" }), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
@@ -37674,6 +38015,16 @@ var ExportDenseRangeSchema = object({
37674
38015
  toSec: number().nonnegative()
37675
38016
  }).refine((r) => r.toSec > r.fromSec, { message: "dense range must have toSec > fromSec" });
37676
38017
  /**
38018
+ * Hard ceiling on dense ranges in ONE render.
38019
+ *
38020
+ * The ranges become terms of a single ffmpeg `select` expression, so the count
38021
+ * is the length of a command-line argument. The producer (the timelapse
38022
+ * scheduler) coalesces and then falls back to the base cadence alone rather
38023
+ * than trimming — a truncated range list is a video that quietly omits the
38024
+ * evening.
38025
+ */
38026
+ var EXPORT_DENSE_MAX_RANGES = 200;
38027
+ /**
37677
38028
  * Dense-interval overlay for a timelapse: sample at `dense.everyMs` INSIDE the
37678
38029
  * listed ranges and at the base `everyMs` everywhere else.
37679
38030
  *
@@ -38495,11 +38846,23 @@ var SceneCheckSchema = discriminatedUnion("mode", [object({
38495
38846
  profileId: string().optional(),
38496
38847
  hysteresisCount: number().int().positive()
38497
38848
  })]);
38849
+ /** Defaults, as CONSTANTS rather than only as Zod `.default()`. A Zod default
38850
+ * does NOT run on the addon→addon cap path, so every runtime seam reads these
38851
+ * as absent-with-a-constant (the `NcConfirmSchema` lesson, three production
38852
+ * failures in one day). The schema defaults and these values are the same
38853
+ * numbers on purpose. */
38854
+ var SCENE_DEFAULT_QUIET_SECONDS = 60;
38855
+ var SCENE_DEFAULT_OBSERVATION_SPACING_SEC = 120;
38856
+ var SCENE_DEFAULT_CHECK_INTERVAL_SEC = 60;
38498
38857
  var SCENE_DEFAULT_ANCHOR_THRESHOLD = .85;
38499
38858
  /** Night is OPTIONAL. A scene with only a daylight reference sits the IR hours
38500
38859
  * out in silence rather than reporting a fault every night. */
38501
38860
  var SCENE_DEFAULT_UNCOVERED_POLICY = "skip";
38502
38861
  var SCENE_CONFIRM_DEFAULT_TIMEOUT_MS = 8e3;
38862
+ var SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX = 448;
38863
+ /** `resetScene({ recapture })` absent means TRUE — the operator decision. Read
38864
+ * at the seam, because a Zod `.optional()` carries no default at all. */
38865
+ var SCENE_RESET_RECAPTURES = true;
38503
38866
  /**
38504
38867
  * Vision-model adjudication of a candidate flip. Field names deliberately
38505
38868
  * mirror `NcConfirmSchema` so an operator meets one vocabulary, not two.
@@ -40836,47 +41199,6 @@ var zoneRulesCapability = {
40836
41199
  */
40837
41200
  durability: "restored"
40838
41201
  };
40839
- var NUMBER = {
40840
- kind: "fixed",
40841
- result: ["number"]
40842
- };
40843
- var BOOLEAN = {
40844
- kind: "fixed",
40845
- result: ["boolean"]
40846
- };
40847
- Object.freeze({
40848
- min: NUMBER,
40849
- max: NUMBER,
40850
- abs: NUMBER,
40851
- floor: NUMBER,
40852
- ceil: NUMBER,
40853
- sqrt: NUMBER,
40854
- round: NUMBER,
40855
- pow: NUMBER,
40856
- clamp: NUMBER,
40857
- avg: NUMBER,
40858
- sum: NUMBER,
40859
- age: NUMBER,
40860
- convert: NUMBER,
40861
- coalesce: { kind: "coalesce" },
40862
- any: BOOLEAN,
40863
- all: BOOLEAN,
40864
- within: BOOLEAN,
40865
- latest: {
40866
- kind: "fixed",
40867
- result: ["number", "null"]
40868
- },
40869
- number: {
40870
- kind: "fixed",
40871
- result: ["number", "null"]
40872
- },
40873
- rose: {
40874
- kind: "fixed",
40875
- result: ["number", "null"]
40876
- },
40877
- count: NUMBER
40878
- });
40879
- `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
40880
41202
  /**
40881
41203
  * Most specific first. Extending this list is how a new device kind becomes
40882
41204
  * gateable; nothing else needs to change.
@@ -44399,6 +44721,12 @@ Object.freeze({
44399
44721
  addonId: null,
44400
44722
  access: "view"
44401
44723
  },
44724
+ "coreBlocks.listComposableCaps": {
44725
+ capName: "core-blocks",
44726
+ capScope: "system",
44727
+ addonId: null,
44728
+ access: "view"
44729
+ },
44402
44730
  "coreBlocks.listCompositions": {
44403
44731
  capName: "core-blocks",
44404
44732
  capScope: "system",
@@ -47213,6 +47541,12 @@ Object.freeze({
47213
47541
  addonId: null,
47214
47542
  access: "create"
47215
47543
  },
47544
+ "pipelineAnalytics.clearTrackRelation": {
47545
+ capName: "pipeline-analytics",
47546
+ capScope: "device",
47547
+ addonId: null,
47548
+ access: "delete"
47549
+ },
47216
47550
  "pipelineAnalytics.clearTracks": {
47217
47551
  capName: "pipeline-analytics",
47218
47552
  capScope: "device",
@@ -47465,6 +47799,12 @@ Object.freeze({
47465
47799
  addonId: null,
47466
47800
  access: "view"
47467
47801
  },
47802
+ "pipelineAnalytics.listTrackRelations": {
47803
+ capName: "pipeline-analytics",
47804
+ capScope: "device",
47805
+ addonId: null,
47806
+ access: "view"
47807
+ },
47468
47808
  "pipelineAnalytics.listTracks": {
47469
47809
  capName: "pipeline-analytics",
47470
47810
  capScope: "device",
@@ -47579,6 +47919,18 @@ Object.freeze({
47579
47919
  addonId: null,
47580
47920
  access: "create"
47581
47921
  },
47922
+ "pipelineAnalytics.setTrackPurity": {
47923
+ capName: "pipeline-analytics",
47924
+ capScope: "device",
47925
+ addonId: null,
47926
+ access: "create"
47927
+ },
47928
+ "pipelineAnalytics.setTrackRelation": {
47929
+ capName: "pipeline-analytics",
47930
+ capScope: "device",
47931
+ addonId: null,
47932
+ access: "create"
47933
+ },
47582
47934
  "pipelineAnalytics.startStorageMigrationMove": {
47583
47935
  capName: "pipeline-analytics",
47584
47936
  capScope: "device",
@@ -48083,6 +48435,12 @@ Object.freeze({
48083
48435
  addonId: null,
48084
48436
  access: "create"
48085
48437
  },
48438
+ "pipelineOrchestrator.setCameraSensors": {
48439
+ capName: "pipeline-orchestrator",
48440
+ capScope: "system",
48441
+ addonId: null,
48442
+ access: "create"
48443
+ },
48086
48444
  "pipelineOrchestrator.setCameraStepOverride": {
48087
48445
  capName: "pipeline-orchestrator",
48088
48446
  capScope: "system",
@@ -51493,6 +51851,11 @@ Object.freeze({
51493
51851
  form: "single",
51494
51852
  optional: false
51495
51853
  }],
51854
+ "pipelineAnalytics.clearTrackRelation": [{
51855
+ name: "deviceId",
51856
+ form: "single",
51857
+ optional: false
51858
+ }],
51496
51859
  "pipelineAnalytics.clearTracks": [{
51497
51860
  name: "deviceId",
51498
51861
  form: "single",
@@ -51643,6 +52006,11 @@ Object.freeze({
51643
52006
  form: "single",
51644
52007
  optional: false
51645
52008
  }],
52009
+ "pipelineAnalytics.listTrackRelations": [{
52010
+ name: "deviceId",
52011
+ form: "single",
52012
+ optional: false
52013
+ }],
51646
52014
  "pipelineAnalytics.listTracks": [{
51647
52015
  name: "deviceId",
51648
52016
  form: "single",
@@ -51713,6 +52081,16 @@ Object.freeze({
51713
52081
  form: "single",
51714
52082
  optional: false
51715
52083
  }],
52084
+ "pipelineAnalytics.setTrackPurity": [{
52085
+ name: "deviceId",
52086
+ form: "single",
52087
+ optional: false
52088
+ }],
52089
+ "pipelineAnalytics.setTrackRelation": [{
52090
+ name: "deviceId",
52091
+ form: "single",
52092
+ optional: false
52093
+ }],
51716
52094
  "pipelineAnalytics.wipeAllAnalytics": [{
51717
52095
  name: "deviceId",
51718
52096
  form: "single",
@@ -51793,6 +52171,11 @@ Object.freeze({
51793
52171
  form: "single",
51794
52172
  optional: false
51795
52173
  }],
52174
+ "pipelineOrchestrator.setCameraSensors": [{
52175
+ name: "deviceId",
52176
+ form: "single",
52177
+ optional: false
52178
+ }],
51796
52179
  "pipelineOrchestrator.setCameraStepOverride": [{
51797
52180
  name: "deviceId",
51798
52181
  form: "single",
@@ -52575,6 +52958,15 @@ function ituDbfsFromPreEpoch(law, authoredDbfs) {
52575
52958
  return authoredDbfs + G711_SCALE_CORRECTION_DB[law];
52576
52959
  }
52577
52960
  Math.round(ituDbfsFromPreEpoch("PCMU", -55));
52961
+ /**
52962
+ * LABEL-mode confirm-count defaults. Chosen against the live "Pianti" rule
52963
+ * (2026-08-23): 15 notifies in 12 h, each a single YAMNet `crying` frame,
52964
+ * nobody actually crying. Two labelled frames in 5 s drops the single-frame
52965
+ * false positives and still catches a real episode (YAMNet labels 2–3
52966
+ * frames of a genuine cry).
52967
+ */
52968
+ var NC_AUDIO_CONFIRM_HITS_DEFAULT = 2;
52969
+ var NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT = 5;
52578
52970
  /** Schema defaults — an untouched sub-field must author exactly these. */
52579
52971
  var NC_AUDIO_DEFAULTS = {
52580
52972
  hitPercent: 60,
@@ -55382,6 +55774,12 @@ function buildClipModelRegistry(entries) {
55382
55774
  /** The built-in catalog's registry. */
55383
55775
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
55384
55776
  //#endregion
55777
+ Object.defineProperty(exports, "ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT", {
55778
+ enumerable: true,
55779
+ get: function() {
55780
+ return ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT;
55781
+ }
55782
+ });
55385
55783
  Object.defineProperty(exports, "AUDIO_MACRO_LABELS", {
55386
55784
  enumerable: true,
55387
55785
  get: function() {
@@ -55400,6 +55798,12 @@ Object.defineProperty(exports, "ArchivedDebugNoteSchema", {
55400
55798
  return ArchivedDebugNoteSchema;
55401
55799
  }
55402
55800
  });
55801
+ Object.defineProperty(exports, "BIRTH_DECISION_DEFAULT_LIMIT", {
55802
+ enumerable: true,
55803
+ get: function() {
55804
+ return BIRTH_DECISION_DEFAULT_LIMIT;
55805
+ }
55806
+ });
55403
55807
  Object.defineProperty(exports, "BUILTIN_CLIP_MODELS", {
55404
55808
  enumerable: true,
55405
55809
  get: function() {
@@ -55454,6 +55858,18 @@ Object.defineProperty(exports, "CamProfileSchema", {
55454
55858
  return CamProfileSchema;
55455
55859
  }
55456
55860
  });
55861
+ Object.defineProperty(exports, "ClearTrackRelationInputSchema", {
55862
+ enumerable: true,
55863
+ get: function() {
55864
+ return ClearTrackRelationInputSchema;
55865
+ }
55866
+ });
55867
+ Object.defineProperty(exports, "ClearTrackRelationResultSchema", {
55868
+ enumerable: true,
55869
+ get: function() {
55870
+ return ClearTrackRelationResultSchema;
55871
+ }
55872
+ });
55457
55873
  Object.defineProperty(exports, "CoverStateSchema", {
55458
55874
  enumerable: true,
55459
55875
  get: function() {
@@ -55502,6 +55918,12 @@ Object.defineProperty(exports, "DeclaredDevices", {
55502
55918
  return DeclaredDevices;
55503
55919
  }
55504
55920
  });
55921
+ Object.defineProperty(exports, "DetectionSourceSchema", {
55922
+ enumerable: true,
55923
+ get: function() {
55924
+ return DetectionSourceSchema;
55925
+ }
55926
+ });
55505
55927
  Object.defineProperty(exports, "DeviceType", {
55506
55928
  enumerable: true,
55507
55929
  get: function() {
@@ -55526,6 +55948,12 @@ Object.defineProperty(exports, "EMBEDDING_REQUIREMENTS_UNAVAILABLE", {
55526
55948
  return EMBEDDING_REQUIREMENTS_UNAVAILABLE;
55527
55949
  }
55528
55950
  });
55951
+ Object.defineProperty(exports, "EVENT_DENSITY_BATCH_MAX", {
55952
+ enumerable: true,
55953
+ get: function() {
55954
+ return EVENT_DENSITY_BATCH_MAX;
55955
+ }
55956
+ });
55529
55957
  Object.defineProperty(exports, "EVENT_KIND_BY_CAP", {
55530
55958
  enumerable: true,
55531
55959
  get: function() {
@@ -55538,6 +55966,12 @@ Object.defineProperty(exports, "EVENT_OWNER_TYPES", {
55538
55966
  return EVENT_OWNER_TYPES;
55539
55967
  }
55540
55968
  });
55969
+ Object.defineProperty(exports, "EXPORT_DENSE_MAX_RANGES", {
55970
+ enumerable: true,
55971
+ get: function() {
55972
+ return EXPORT_DENSE_MAX_RANGES;
55973
+ }
55974
+ });
55541
55975
  Object.defineProperty(exports, "EventCategory", {
55542
55976
  enumerable: true,
55543
55977
  get: function() {
@@ -55574,6 +56008,18 @@ Object.defineProperty(exports, "LabelAttributionSchema", {
55574
56008
  return LabelAttributionSchema;
55575
56009
  }
55576
56010
  });
56011
+ Object.defineProperty(exports, "ListTrackRelationsInputSchema", {
56012
+ enumerable: true,
56013
+ get: function() {
56014
+ return ListTrackRelationsInputSchema;
56015
+ }
56016
+ });
56017
+ Object.defineProperty(exports, "ListTrackRelationsResultSchema", {
56018
+ enumerable: true,
56019
+ get: function() {
56020
+ return ListTrackRelationsResultSchema;
56021
+ }
56022
+ });
55577
56023
  Object.defineProperty(exports, "LockStateSchema", {
55578
56024
  enumerable: true,
55579
56025
  get: function() {
@@ -55598,6 +56044,18 @@ Object.defineProperty(exports, "MAX_BIRTH_LATENCY_PROXY_MS", {
55598
56044
  return MAX_BIRTH_LATENCY_PROXY_MS;
55599
56045
  }
55600
56046
  });
56047
+ Object.defineProperty(exports, "MAX_TRACK_PURITIES", {
56048
+ enumerable: true,
56049
+ get: function() {
56050
+ return MAX_TRACK_PURITIES;
56051
+ }
56052
+ });
56053
+ Object.defineProperty(exports, "MAX_TRACK_RELATIONS", {
56054
+ enumerable: true,
56055
+ get: function() {
56056
+ return MAX_TRACK_RELATIONS;
56057
+ }
56058
+ });
55601
56059
  Object.defineProperty(exports, "MOTION_CLOSE_AFTER_MS", {
55602
56060
  enumerable: true,
55603
56061
  get: function() {
@@ -55622,12 +56080,48 @@ Object.defineProperty(exports, "NC_ALARM_SYSTEM_EVENT_KINDS", {
55622
56080
  return NC_ALARM_SYSTEM_EVENT_KINDS;
55623
56081
  }
55624
56082
  });
56083
+ Object.defineProperty(exports, "NC_AUDIO_CONFIRM_HITS_DEFAULT", {
56084
+ enumerable: true,
56085
+ get: function() {
56086
+ return NC_AUDIO_CONFIRM_HITS_DEFAULT;
56087
+ }
56088
+ });
56089
+ Object.defineProperty(exports, "NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT", {
56090
+ enumerable: true,
56091
+ get: function() {
56092
+ return NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT;
56093
+ }
56094
+ });
56095
+ Object.defineProperty(exports, "NC_CLIP_POST_ROLL_DEFAULT_SEC", {
56096
+ enumerable: true,
56097
+ get: function() {
56098
+ return NC_CLIP_POST_ROLL_DEFAULT_SEC;
56099
+ }
56100
+ });
56101
+ Object.defineProperty(exports, "NC_CLIP_PRE_ROLL_DEFAULT_SEC", {
56102
+ enumerable: true,
56103
+ get: function() {
56104
+ return NC_CLIP_PRE_ROLL_DEFAULT_SEC;
56105
+ }
56106
+ });
56107
+ Object.defineProperty(exports, "NC_CLIP_RETENTION_MAX_SEC", {
56108
+ enumerable: true,
56109
+ get: function() {
56110
+ return NC_CLIP_RETENTION_MAX_SEC;
56111
+ }
56112
+ });
55625
56113
  Object.defineProperty(exports, "NC_CONDITION_CATALOG", {
55626
56114
  enumerable: true,
55627
56115
  get: function() {
55628
56116
  return NC_CONDITION_CATALOG;
55629
56117
  }
55630
56118
  });
56119
+ Object.defineProperty(exports, "NC_CONSUMABLE_LOW_PERCENT_DEFAULT", {
56120
+ enumerable: true,
56121
+ get: function() {
56122
+ return NC_CONSUMABLE_LOW_PERCENT_DEFAULT;
56123
+ }
56124
+ });
55631
56125
  Object.defineProperty(exports, "NC_CONSUMABLE_SYSTEM_EVENT_KINDS", {
55632
56126
  enumerable: true,
55633
56127
  get: function() {
@@ -55784,6 +56278,12 @@ Object.defineProperty(exports, "NcTemplateVarDescriptorSchema", {
55784
56278
  return NcTemplateVarDescriptorSchema;
55785
56279
  }
55786
56280
  });
56281
+ Object.defineProperty(exports, "OPS_LOG_DEFAULT_LIMIT", {
56282
+ enumerable: true,
56283
+ get: function() {
56284
+ return OPS_LOG_DEFAULT_LIMIT;
56285
+ }
56286
+ });
55787
56287
  Object.defineProperty(exports, "OpsLogEntrySchema", {
55788
56288
  enumerable: true,
55789
56289
  get: function() {
@@ -55820,6 +56320,12 @@ Object.defineProperty(exports, "RetrainStatusSchema", {
55820
56320
  return RetrainStatusSchema;
55821
56321
  }
55822
56322
  });
56323
+ Object.defineProperty(exports, "SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX", {
56324
+ enumerable: true,
56325
+ get: function() {
56326
+ return SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX;
56327
+ }
56328
+ });
55823
56329
  Object.defineProperty(exports, "SCENE_CONFIRM_DEFAULT_TIMEOUT_MS", {
55824
56330
  enumerable: true,
55825
56331
  get: function() {
@@ -55832,6 +56338,24 @@ Object.defineProperty(exports, "SCENE_DEFAULT_ANCHOR_THRESHOLD", {
55832
56338
  return SCENE_DEFAULT_ANCHOR_THRESHOLD;
55833
56339
  }
55834
56340
  });
56341
+ Object.defineProperty(exports, "SCENE_DEFAULT_CHECK_INTERVAL_SEC", {
56342
+ enumerable: true,
56343
+ get: function() {
56344
+ return SCENE_DEFAULT_CHECK_INTERVAL_SEC;
56345
+ }
56346
+ });
56347
+ Object.defineProperty(exports, "SCENE_DEFAULT_OBSERVATION_SPACING_SEC", {
56348
+ enumerable: true,
56349
+ get: function() {
56350
+ return SCENE_DEFAULT_OBSERVATION_SPACING_SEC;
56351
+ }
56352
+ });
56353
+ Object.defineProperty(exports, "SCENE_DEFAULT_QUIET_SECONDS", {
56354
+ enumerable: true,
56355
+ get: function() {
56356
+ return SCENE_DEFAULT_QUIET_SECONDS;
56357
+ }
56358
+ });
55835
56359
  Object.defineProperty(exports, "SCENE_DEFAULT_UNCOVERED_POLICY", {
55836
56360
  enumerable: true,
55837
56361
  get: function() {
@@ -55844,18 +56368,48 @@ Object.defineProperty(exports, "SCENE_DIVERGED", {
55844
56368
  return SCENE_DIVERGED;
55845
56369
  }
55846
56370
  });
56371
+ Object.defineProperty(exports, "SCENE_RESET_RECAPTURES", {
56372
+ enumerable: true,
56373
+ get: function() {
56374
+ return SCENE_RESET_RECAPTURES;
56375
+ }
56376
+ });
55847
56377
  Object.defineProperty(exports, "SceneMonitorSchema", {
55848
56378
  enumerable: true,
55849
56379
  get: function() {
55850
56380
  return SceneMonitorSchema;
55851
56381
  }
55852
56382
  });
56383
+ Object.defineProperty(exports, "SetTrackPurityInputSchema", {
56384
+ enumerable: true,
56385
+ get: function() {
56386
+ return SetTrackPurityInputSchema;
56387
+ }
56388
+ });
56389
+ Object.defineProperty(exports, "SetTrackPurityResultSchema", {
56390
+ enumerable: true,
56391
+ get: function() {
56392
+ return SetTrackPurityResultSchema;
56393
+ }
56394
+ });
56395
+ Object.defineProperty(exports, "SetTrackRelationInputSchema", {
56396
+ enumerable: true,
56397
+ get: function() {
56398
+ return SetTrackRelationInputSchema;
56399
+ }
56400
+ });
55853
56401
  Object.defineProperty(exports, "TIMELAPSE_DENSE_FLOOR_SEC", {
55854
56402
  enumerable: true,
55855
56403
  get: function() {
55856
56404
  return TIMELAPSE_DENSE_FLOOR_SEC;
55857
56405
  }
55858
56406
  });
56407
+ Object.defineProperty(exports, "TRACK_RELATIONS_DEFAULT_LIMIT", {
56408
+ enumerable: true,
56409
+ get: function() {
56410
+ return TRACK_RELATIONS_DEFAULT_LIMIT;
56411
+ }
56412
+ });
55859
56413
  Object.defineProperty(exports, "TimelapseRuleInputSchema", {
55860
56414
  enumerable: true,
55861
56415
  get: function() {
@@ -55874,6 +56428,30 @@ Object.defineProperty(exports, "TimelapseRuleSchema", {
55874
56428
  return TimelapseRuleSchema;
55875
56429
  }
55876
56430
  });
56431
+ Object.defineProperty(exports, "TrackPuritySchema", {
56432
+ enumerable: true,
56433
+ get: function() {
56434
+ return TrackPuritySchema;
56435
+ }
56436
+ });
56437
+ Object.defineProperty(exports, "TrackRelationKindSchema", {
56438
+ enumerable: true,
56439
+ get: function() {
56440
+ return TrackRelationKindSchema;
56441
+ }
56442
+ });
56443
+ Object.defineProperty(exports, "TrackRelationSchema", {
56444
+ enumerable: true,
56445
+ get: function() {
56446
+ return TrackRelationSchema;
56447
+ }
56448
+ });
56449
+ Object.defineProperty(exports, "TrackSideSchema", {
56450
+ enumerable: true,
56451
+ get: function() {
56452
+ return TrackSideSchema;
56453
+ }
56454
+ });
55877
56455
  Object.defineProperty(exports, "TrackSourceSchema", {
55878
56456
  enumerable: true,
55879
56457
  get: function() {
@@ -56168,6 +56746,12 @@ Object.defineProperty(exports, "mayWriteToLocation", {
56168
56746
  return mayWriteToLocation;
56169
56747
  }
56170
56748
  });
56749
+ Object.defineProperty(exports, "memoizePinnedFfmpeg", {
56750
+ enumerable: true,
56751
+ get: function() {
56752
+ return memoizePinnedFfmpeg;
56753
+ }
56754
+ });
56171
56755
  Object.defineProperty(exports, "nodePin", {
56172
56756
  enumerable: true,
56173
56757
  get: function() {
@@ -56318,6 +56902,12 @@ Object.defineProperty(exports, "storageOccupancyCapability", {
56318
56902
  return storageOccupancyCapability;
56319
56903
  }
56320
56904
  });
56905
+ Object.defineProperty(exports, "strictObject", {
56906
+ enumerable: true,
56907
+ get: function() {
56908
+ return strictObject;
56909
+ }
56910
+ });
56321
56911
  Object.defineProperty(exports, "string", {
56322
56912
  enumerable: true,
56323
56913
  get: function() {
@@ -56366,6 +56956,18 @@ Object.defineProperty(exports, "templateVarsFor", {
56366
56956
  return templateVarsFor;
56367
56957
  }
56368
56958
  });
56959
+ Object.defineProperty(exports, "tuple", {
56960
+ enumerable: true,
56961
+ get: function() {
56962
+ return tuple;
56963
+ }
56964
+ });
56965
+ Object.defineProperty(exports, "union", {
56966
+ enumerable: true,
56967
+ get: function() {
56968
+ return union;
56969
+ }
56970
+ });
56369
56971
  Object.defineProperty(exports, "unknown", {
56370
56972
  enumerable: true,
56371
56973
  get: function() {