@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.
- package/dist/{clip-model-registry-DCztUu1G.mjs → clip-model-registry-BtY4fS3d.mjs} +439 -47
- package/dist/{clip-model-registry-hTbsQ-z7.js → clip-model-registry-CQIBimj5.js} +648 -46
- package/dist/embedding-encoder/index.js +26 -7
- package/dist/embedding-encoder/index.mjs +26 -7
- package/dist/pipeline-analytics/_stub.js +2 -2
- 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
- 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
- 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
- package/dist/pipeline-analytics/{hostInit-D9z3Da9D.mjs → hostInit-D2uBFmPA.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +8283 -1039
- package/dist/pipeline-analytics/index.mjs +8272 -1044
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +3 -2
- 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
- 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-
|
|
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-
|
|
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(
|
|
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 {
|
|
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 };
|