@camstack/addon-post-analysis 1.2.304 → 1.2.306
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--qJe8fTH.js → clip-model-registry-C67UM_q_.js} +234 -8
- package/dist/{clip-model-registry-DBKCbXPJ.mjs → clip-model-registry-C9Aw4qkh.mjs} +193 -9
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-sLPWG5v8.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-QE0Juzwb.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-MwQBD526.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 → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B8qeS8Da.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-D23-Tde_.mjs → hostInit-DzNrV8y8.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +6617 -2793
- package/dist/pipeline-analytics/index.mjs +6657 -2836
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CMq-UvYj.mjs +0 -26
|
@@ -11267,6 +11267,28 @@ var FailureCounters = class {
|
|
|
11267
11267
|
this.counters.clear();
|
|
11268
11268
|
}
|
|
11269
11269
|
};
|
|
11270
|
+
var APPEARANCE_BIN_COUNT = 96;
|
|
11271
|
+
var APPEARANCE_BLOCKS = {
|
|
11272
|
+
upperHs: [0, 32],
|
|
11273
|
+
upperV: [32, 40],
|
|
11274
|
+
upperGrad: [40, 48],
|
|
11275
|
+
lowerHs: [48, 80],
|
|
11276
|
+
lowerV: [80, 88],
|
|
11277
|
+
lowerGrad: [88, 96]
|
|
11278
|
+
};
|
|
11279
|
+
/**
|
|
11280
|
+
* Whether appearance may influence anything at all (D683 §3.2, fix round 1
|
|
11281
|
+
* ruling 2026-09-30 on the Task 10 cost-bench STOP): OFF until the
|
|
11282
|
+
* descriptor is calibrated on tapes that carry it (Task 23, review M9).
|
|
11283
|
+
*
|
|
11284
|
+
* This is the ONE authority both addons read — never two settings that
|
|
11285
|
+
* could disagree (CLAUDE.md D62). The tracker's `TrackerV2Config.appearanceResolvesAmbiguity`
|
|
11286
|
+
* default reads it (`addon-post-analysis/pipeline/tracker-v2/types.ts`); the
|
|
11287
|
+
* runner's cost gate reads it too (`addon-pipeline/pipeline-runner/appearance-attach.ts`),
|
|
11288
|
+
* short-circuiting BEFORE any crop, resample or descriptor is computed, so a
|
|
11289
|
+
* disabled camera costs nothing extra per frame.
|
|
11290
|
+
*/
|
|
11291
|
+
var APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = false;
|
|
11270
11292
|
var ClipModelMetaSchema = object({
|
|
11271
11293
|
/** The paired text encoder's catalog id (the embedding-encoder's text catalog). */
|
|
11272
11294
|
textModelId: string().min(1),
|
|
@@ -20214,10 +20236,12 @@ var NcMediaPolicySchema = object({
|
|
|
20214
20236
|
/**
|
|
20215
20237
|
* Cooldown GRANULARITY over the subject's class — how much a fired
|
|
20216
20238
|
* notification suppresses.
|
|
20217
|
-
* - `
|
|
20218
|
-
*
|
|
20219
|
-
*
|
|
20220
|
-
*
|
|
20239
|
+
* - `per-class` (default, and the absent value since 2026-10-01 — D36) — an
|
|
20240
|
+
* independent window per detected class: cat→dog fires at once, cat→cat
|
|
20241
|
+
* still waits.
|
|
20242
|
+
* - `shared` — one window for the whole rule/scope: a cat silences the next
|
|
20243
|
+
* dog for `cooldownSec`. Only written when an operator picks it; it is no
|
|
20244
|
+
* longer what an unset rule means.
|
|
20221
20245
|
*
|
|
20222
20246
|
* AUDIO subjects are ALWAYS per-class regardless of this setting: a scream
|
|
20223
20247
|
* must not be swallowed by a bark's window (the precedent this generalizes —
|
|
@@ -20232,8 +20256,11 @@ var NcThrottleSchema = object({
|
|
|
20232
20256
|
/**
|
|
20233
20257
|
* Class granularity of the cooldown key. Optional rather than defaulted:
|
|
20234
20258
|
* a Zod default does NOT run on the addon→addon cap path, so a persisted
|
|
20235
|
-
* rule authored before this field simply carries none
|
|
20236
|
-
*
|
|
20259
|
+
* rule authored before this field simply carries none. The engine used to
|
|
20260
|
+
* read absent as `shared` (D36); since 2026-10-01 it reads absent as
|
|
20261
|
+
* `per-class` — the operator's default — and only an explicit `shared`
|
|
20262
|
+
* still means `shared`. See `cooldownKey` / `keysPerClass` in the rule
|
|
20263
|
+
* engine, and D36's dated note.
|
|
20237
20264
|
*/
|
|
20238
20265
|
granularity: NcThrottleGranularitySchema.optional()
|
|
20239
20266
|
});
|
|
@@ -24492,13 +24519,19 @@ var pipelineAnalyticsCapability = {
|
|
|
24492
24519
|
*
|
|
24493
24520
|
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
24494
24521
|
* the same widened track-deletion cascade (design §5.2).
|
|
24522
|
+
*
|
|
24523
|
+
* `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
|
|
24524
|
+
* live stationary entry vouches for them (its key frame, owned by a track
|
|
24525
|
+
* that moved and was kept). Released when the entry retires. Optional:
|
|
24526
|
+
* absent from a provider that predates it.
|
|
24495
24527
|
*/
|
|
24496
24528
|
deleteTracks: method(object({
|
|
24497
24529
|
deviceId: number(),
|
|
24498
24530
|
trackIds: array(string()).min(1)
|
|
24499
24531
|
}), object({
|
|
24500
24532
|
deleted: number().int(),
|
|
24501
|
-
failed: array(string()).readonly()
|
|
24533
|
+
failed: array(string()).readonly(),
|
|
24534
|
+
sparedMediaIds: array(number().int()).readonly().optional()
|
|
24502
24535
|
}), {
|
|
24503
24536
|
kind: "mutation",
|
|
24504
24537
|
auth: "admin"
|
|
@@ -27208,7 +27241,42 @@ var SetCameraSensorsInputSchema = object({
|
|
|
27208
27241
|
/** `null` removes the attachment: the camera goes back to `not-configured`. */
|
|
27209
27242
|
config: CameraSensorsConfigSchema.nullable()
|
|
27210
27243
|
});
|
|
27211
|
-
|
|
27244
|
+
/**
|
|
27245
|
+
* Why an early occupancy look (D691) was not scheduled.
|
|
27246
|
+
*
|
|
27247
|
+
* - `unknown-camera` — no session was ever dispatched for it, so there is no
|
|
27248
|
+
* node and no config to attach a burst with.
|
|
27249
|
+
* - `out-of-range` — the ask is negative or further out than the orchestrator
|
|
27250
|
+
* will hold a timer for; the parked-object cadence is the answer there.
|
|
27251
|
+
* - `no-burst-producer` — this build has no burst producer at all.
|
|
27252
|
+
* - `already-looked` — this camera's ONE early look since its last session has
|
|
27253
|
+
* been spent. A look's own burst can re-arm a flickering flip, and a look
|
|
27254
|
+
* per arm would chain a burst every ~30 s forever (review H2); the next
|
|
27255
|
+
* real session re-arms the budget.
|
|
27256
|
+
*/
|
|
27257
|
+
var OccupancyLookRefusalSchema = _enum([
|
|
27258
|
+
"unknown-camera",
|
|
27259
|
+
"out-of-range",
|
|
27260
|
+
"no-burst-producer",
|
|
27261
|
+
"already-looked"
|
|
27262
|
+
]);
|
|
27263
|
+
method(object({
|
|
27264
|
+
deviceId: number().int().nonnegative(),
|
|
27265
|
+
/** How long from NOW until the pending flip's sustain window ends. RELATIVE,
|
|
27266
|
+
* so the caller's clock and the orchestrator's never have to agree. */
|
|
27267
|
+
afterMs: number().finite(),
|
|
27268
|
+
/** Why, for the log. */
|
|
27269
|
+
reason: string()
|
|
27270
|
+
}), object({
|
|
27271
|
+
scheduled: boolean(),
|
|
27272
|
+
/** When `scheduled`: how long until the burst is dialled. */
|
|
27273
|
+
dueInMs: number().optional(),
|
|
27274
|
+
/** When not `scheduled`: why. */
|
|
27275
|
+
refusedBecause: OccupancyLookRefusalSchema.optional()
|
|
27276
|
+
}), {
|
|
27277
|
+
kind: "mutation",
|
|
27278
|
+
auth: "admin"
|
|
27279
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
27212
27280
|
kind: "mutation",
|
|
27213
27281
|
auth: "admin"
|
|
27214
27282
|
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
@@ -27462,6 +27530,8 @@ function buildDescriptor(capName, kind) {
|
|
|
27462
27530
|
* contributes one entry per bound cap present in this map.
|
|
27463
27531
|
*/
|
|
27464
27532
|
var EVENT_KIND_BY_CAP = Object.freeze(Object.fromEntries(Object.entries(CAP_TO_KIND).map(([capName, kind]) => [capName, buildDescriptor(capName, kind)])));
|
|
27533
|
+
/** The cap names covered by the taxonomy (for the anti-drift guard). */
|
|
27534
|
+
var EVENTFUL_CAP_NAMES = Object.keys(CAP_TO_KIND);
|
|
27465
27535
|
/**
|
|
27466
27536
|
* Build a full `EventKindDescriptor` for a taxonomy `kind`, stamping the
|
|
27467
27537
|
* per-device `source`. Returns null when `kind` is not in the taxonomy.
|
|
@@ -48370,6 +48440,12 @@ Object.freeze({
|
|
|
48370
48440
|
addonId: null,
|
|
48371
48441
|
access: "delete"
|
|
48372
48442
|
},
|
|
48443
|
+
"pipelineOrchestrator.requestOccupancyLook": {
|
|
48444
|
+
capName: "pipeline-orchestrator",
|
|
48445
|
+
capScope: "system",
|
|
48446
|
+
addonId: null,
|
|
48447
|
+
access: "create"
|
|
48448
|
+
},
|
|
48373
48449
|
"pipelineOrchestrator.resetNodePipelineDefaults": {
|
|
48374
48450
|
capName: "pipeline-orchestrator",
|
|
48375
48451
|
capScope: "system",
|
|
@@ -52162,6 +52238,11 @@ Object.freeze({
|
|
|
52162
52238
|
form: "single",
|
|
52163
52239
|
optional: false
|
|
52164
52240
|
}],
|
|
52241
|
+
"pipelineOrchestrator.requestOccupancyLook": [{
|
|
52242
|
+
name: "deviceId",
|
|
52243
|
+
form: "single",
|
|
52244
|
+
optional: false
|
|
52245
|
+
}],
|
|
52165
52246
|
"pipelineOrchestrator.resolvePipeline": [{
|
|
52166
52247
|
name: "deviceId",
|
|
52167
52248
|
form: "single",
|
|
@@ -53240,6 +53321,13 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
53240
53321
|
function systemEventKindsOfFamily(family) {
|
|
53241
53322
|
return NC_SYSTEM_EVENT_KIND_GROUP_SPECS.filter((g) => g.family === family).flatMap((g) => g.kinds);
|
|
53242
53323
|
}
|
|
53324
|
+
/** The kind names on an UNTYPED condition, or `undefined` when it has none. */
|
|
53325
|
+
function systemEventKindNamesOf(condition) {
|
|
53326
|
+
if (typeof condition !== "object" || condition === null || !("kinds" in condition)) return void 0;
|
|
53327
|
+
const kinds = condition.kinds;
|
|
53328
|
+
if (!Array.isArray(kinds)) return void 0;
|
|
53329
|
+
return kinds.filter((kind) => typeof kind === "string");
|
|
53330
|
+
}
|
|
53243
53331
|
/**
|
|
53244
53332
|
* One family, or `mixed`. Mixed covers kinds that span families, a legacy kind,
|
|
53245
53333
|
* a kind this build does not know (it fails toward read-only and never toward
|
|
@@ -53324,6 +53412,102 @@ var NC_SYSTEM_DELIVERY = "system-event";
|
|
|
53324
53412
|
function isSystemDelivery(delivery) {
|
|
53325
53413
|
return delivery === NC_SYSTEM_DELIVERY;
|
|
53326
53414
|
}
|
|
53415
|
+
/**
|
|
53416
|
+
* Which capability a device must carry to be OFFERED on a rule of this kind's
|
|
53417
|
+
* device-scope picker (operator ruling, 2026-10-01). `null` means "no
|
|
53418
|
+
* capability filter for this kind" — either every device applies (the system
|
|
53419
|
+
* families, each already a separate concern; see
|
|
53420
|
+
* `docs/architecture/notifications.md`'s D637 `deviceIds` table) or `mixed`,
|
|
53421
|
+
* which authors nothing.
|
|
53422
|
+
*
|
|
53423
|
+
* DERIVED, never a hand-picked list:
|
|
53424
|
+
* - `sensor` reads `EVENTFUL_CAP_NAMES` — the SAME cap table the engine
|
|
53425
|
+
* itself turns a linked device's bound caps into sensor event kinds with
|
|
53426
|
+
* (`EVENT_KIND_BY_CAP`). A device this picker offers for a sensor rule is
|
|
53427
|
+
* exactly a device the rule's `sensorKinds` condition could ever name.
|
|
53428
|
+
* - `detection` (which a package-event rule is — there is no separate
|
|
53429
|
+
* `package` kind, D637) / `occupancy` read the one pipeline cap a camera
|
|
53430
|
+
* needs to produce the detections / counts / parcels those kinds match on.
|
|
53431
|
+
* - `sound` reads the one cap a device needs to produce the audio metrics a
|
|
53432
|
+
* sound rule's sampling window is built from.
|
|
53433
|
+
* - `device-events` / `system` / `alarm` / `mixed` are `null`: a device
|
|
53434
|
+
* event rule's `deviceIds` legitimately spans every device type (liveness,
|
|
53435
|
+
* battery, consumable, `detection-blind`), a system rule has no device
|
|
53436
|
+
* scope at all (dropped from the editor's tabs), and `alarm`'s `deviceIds`
|
|
53437
|
+
* is a reference to whichever camera's rule set it off — not a scope this
|
|
53438
|
+
* picker authors.
|
|
53439
|
+
*
|
|
53440
|
+
* Callers resolve the ids via `deviceManager.listDeviceIdsByCaps` (max 16
|
|
53441
|
+
* names — `EVENTFUL_CAP_NAMES` is exactly 16) and must treat an unanswered
|
|
53442
|
+
* read as "unknown", never as "no devices" (D315): this function only names
|
|
53443
|
+
* WHICH caps to ask for, not what to show while the answer is pending.
|
|
53444
|
+
*/
|
|
53445
|
+
function ruleDeviceCompatCapNames(kind) {
|
|
53446
|
+
switch (kind) {
|
|
53447
|
+
case "sensor": return EVENTFUL_CAP_NAMES;
|
|
53448
|
+
case "detection":
|
|
53449
|
+
case "occupancy": return ["detection-pipeline"];
|
|
53450
|
+
case "sound": return ["audio-metrics"];
|
|
53451
|
+
case "device-events":
|
|
53452
|
+
case "system":
|
|
53453
|
+
case "alarm":
|
|
53454
|
+
case "mixed": return null;
|
|
53455
|
+
}
|
|
53456
|
+
}
|
|
53457
|
+
/**
|
|
53458
|
+
* The capability every CAMERA carries: `camera-streams` is a `defaultActive`
|
|
53459
|
+
* wrapper bound to every `Camera`-type device (`camera-streams.cap.ts`).
|
|
53460
|
+
* Named once, because a sensor rule's compatible set needs it (below).
|
|
53461
|
+
*/
|
|
53462
|
+
var NC_CAMERA_SCOPE_CAP_NAME = "camera-streams";
|
|
53463
|
+
/**
|
|
53464
|
+
* Every capability QUERY whose union is the set of devices a rule of this kind
|
|
53465
|
+
* may be SCOPED to (`conditions.devices`) — what the save-time guard and the
|
|
53466
|
+
* admin's Devices tab ask `deviceManager.listDeviceIdsByCaps`, one call per
|
|
53467
|
+
* entry. `null` exactly where {@link ruleDeviceCompatCapNames} is `null`.
|
|
53468
|
+
*
|
|
53469
|
+
* Several queries rather than one list because `listDeviceIdsByCaps` takes at
|
|
53470
|
+
* most 16 names and `EVENTFUL_CAP_NAMES` is already exactly 16.
|
|
53471
|
+
*
|
|
53472
|
+
* A `sensor` rule's set is the eventful devices PLUS every camera (fix round
|
|
53473
|
+
* 1, 2026-10-01): the engine matches a sensor rule scoped to a CAMERA — a
|
|
53474
|
+
* per-camera row carries the camera's id, and a linked set matches on
|
|
53475
|
+
* `rowCameraIds` (D630 §6) — so a camera-scoped sensor rule is legitimate and
|
|
53476
|
+
* a guard that refused it would make every such stored rule un-editable.
|
|
53477
|
+
*/
|
|
53478
|
+
function ruleDeviceCompatCapQueries(kind) {
|
|
53479
|
+
const primary = ruleDeviceCompatCapNames(kind);
|
|
53480
|
+
if (primary === null) return null;
|
|
53481
|
+
return kind === "sensor" ? [primary, [NC_CAMERA_SCOPE_CAP_NAME]] : [primary];
|
|
53482
|
+
}
|
|
53483
|
+
/**
|
|
53484
|
+
* Which kind of rule is this?
|
|
53485
|
+
*
|
|
53486
|
+
* The CONDITION wins over the delivery wherever the engine says it does, and
|
|
53487
|
+
* the order below is the engine's own: `evaluateRule` checks the system branch
|
|
53488
|
+
* first, then the occupancy and audio gates. Takes a plain `delivery` string so
|
|
53489
|
+
* a trigger this build does not know still classifies (as `detection`, which is
|
|
53490
|
+
* the read-only path's own fallback). A system rule classifies by the FAMILY of
|
|
53491
|
+
* its event kinds (D637) — see {@link systemRuleKindOf}.
|
|
53492
|
+
*/
|
|
53493
|
+
function ruleKindOf(rule) {
|
|
53494
|
+
if (isSystemDelivery(rule.delivery)) return systemRuleKindOf(rule.conditions.systemEvent);
|
|
53495
|
+
if (rule.conditions.occupancy !== void 0 && rule.delivery === "device-event") return "occupancy";
|
|
53496
|
+
if (rule.conditions.audio !== void 0 && rule.delivery === "immediate") return "sound";
|
|
53497
|
+
if (rule.delivery === "device-event") return "sensor";
|
|
53498
|
+
return "detection";
|
|
53499
|
+
}
|
|
53500
|
+
/**
|
|
53501
|
+
* A system rule's kind: its one family, or `mixed` (D637).
|
|
53502
|
+
*
|
|
53503
|
+
* Takes the UNTYPED condition for the same reason {@link NcRuleConditionsSubject}
|
|
53504
|
+
* is structural. `mixed` covers kinds across families, a legacy or unknown kind,
|
|
53505
|
+
* and no kinds at all — it fails toward read-only, never toward editable.
|
|
53506
|
+
*/
|
|
53507
|
+
function systemRuleKindOf(condition) {
|
|
53508
|
+
const verdict = systemEventFamilyOf(systemEventKindNamesOf(condition) ?? []);
|
|
53509
|
+
return verdict.kind === "family" ? verdict.family : "mixed";
|
|
53510
|
+
}
|
|
53327
53511
|
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
53328
53512
|
var WEEKDAY_TO_DAY = {
|
|
53329
53513
|
Sun: 0,
|
|
@@ -55812,6 +55996,24 @@ function buildClipModelRegistry(entries) {
|
|
|
55812
55996
|
/** The built-in catalog's registry. */
|
|
55813
55997
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
55814
55998
|
//#endregion
|
|
55999
|
+
Object.defineProperty(exports, "APPEARANCE_BIN_COUNT", {
|
|
56000
|
+
enumerable: true,
|
|
56001
|
+
get: function() {
|
|
56002
|
+
return APPEARANCE_BIN_COUNT;
|
|
56003
|
+
}
|
|
56004
|
+
});
|
|
56005
|
+
Object.defineProperty(exports, "APPEARANCE_BLOCKS", {
|
|
56006
|
+
enumerable: true,
|
|
56007
|
+
get: function() {
|
|
56008
|
+
return APPEARANCE_BLOCKS;
|
|
56009
|
+
}
|
|
56010
|
+
});
|
|
56011
|
+
Object.defineProperty(exports, "APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT", {
|
|
56012
|
+
enumerable: true,
|
|
56013
|
+
get: function() {
|
|
56014
|
+
return APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT;
|
|
56015
|
+
}
|
|
56016
|
+
});
|
|
55815
56017
|
Object.defineProperty(exports, "ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT", {
|
|
55816
56018
|
enumerable: true,
|
|
55817
56019
|
get: function() {
|
|
@@ -56496,6 +56698,12 @@ Object.defineProperty(exports, "TrackSourceSchema", {
|
|
|
56496
56698
|
return TrackSourceSchema;
|
|
56497
56699
|
}
|
|
56498
56700
|
});
|
|
56701
|
+
Object.defineProperty(exports, "ZodObject", {
|
|
56702
|
+
enumerable: true,
|
|
56703
|
+
get: function() {
|
|
56704
|
+
return ZodObject;
|
|
56705
|
+
}
|
|
56706
|
+
});
|
|
56499
56707
|
Object.defineProperty(exports, "__exportAll", {
|
|
56500
56708
|
enumerable: true,
|
|
56501
56709
|
get: function() {
|
|
@@ -56784,6 +56992,12 @@ Object.defineProperty(exports, "literal", {
|
|
|
56784
56992
|
return literal;
|
|
56785
56993
|
}
|
|
56786
56994
|
});
|
|
56995
|
+
Object.defineProperty(exports, "looseObject", {
|
|
56996
|
+
enumerable: true,
|
|
56997
|
+
get: function() {
|
|
56998
|
+
return looseObject;
|
|
56999
|
+
}
|
|
57000
|
+
});
|
|
56787
57001
|
Object.defineProperty(exports, "mayWriteToLocation", {
|
|
56788
57002
|
enumerable: true,
|
|
56789
57003
|
get: function() {
|
|
@@ -56916,6 +57130,18 @@ Object.defineProperty(exports, "ruleBelongsToAlarm", {
|
|
|
56916
57130
|
return ruleBelongsToAlarm;
|
|
56917
57131
|
}
|
|
56918
57132
|
});
|
|
57133
|
+
Object.defineProperty(exports, "ruleDeviceCompatCapQueries", {
|
|
57134
|
+
enumerable: true,
|
|
57135
|
+
get: function() {
|
|
57136
|
+
return ruleDeviceCompatCapQueries;
|
|
57137
|
+
}
|
|
57138
|
+
});
|
|
57139
|
+
Object.defineProperty(exports, "ruleKindOf", {
|
|
57140
|
+
enumerable: true,
|
|
57141
|
+
get: function() {
|
|
57142
|
+
return ruleKindOf;
|
|
57143
|
+
}
|
|
57144
|
+
});
|
|
56919
57145
|
Object.defineProperty(exports, "sceneMonitorCapability", {
|
|
56920
57146
|
enumerable: true,
|
|
56921
57147
|
get: function() {
|
|
@@ -11236,6 +11236,28 @@ var FailureCounters = class {
|
|
|
11236
11236
|
this.counters.clear();
|
|
11237
11237
|
}
|
|
11238
11238
|
};
|
|
11239
|
+
var APPEARANCE_BIN_COUNT = 96;
|
|
11240
|
+
var APPEARANCE_BLOCKS = {
|
|
11241
|
+
upperHs: [0, 32],
|
|
11242
|
+
upperV: [32, 40],
|
|
11243
|
+
upperGrad: [40, 48],
|
|
11244
|
+
lowerHs: [48, 80],
|
|
11245
|
+
lowerV: [80, 88],
|
|
11246
|
+
lowerGrad: [88, 96]
|
|
11247
|
+
};
|
|
11248
|
+
/**
|
|
11249
|
+
* Whether appearance may influence anything at all (D683 §3.2, fix round 1
|
|
11250
|
+
* ruling 2026-09-30 on the Task 10 cost-bench STOP): OFF until the
|
|
11251
|
+
* descriptor is calibrated on tapes that carry it (Task 23, review M9).
|
|
11252
|
+
*
|
|
11253
|
+
* This is the ONE authority both addons read — never two settings that
|
|
11254
|
+
* could disagree (CLAUDE.md D62). The tracker's `TrackerV2Config.appearanceResolvesAmbiguity`
|
|
11255
|
+
* default reads it (`addon-post-analysis/pipeline/tracker-v2/types.ts`); the
|
|
11256
|
+
* runner's cost gate reads it too (`addon-pipeline/pipeline-runner/appearance-attach.ts`),
|
|
11257
|
+
* short-circuiting BEFORE any crop, resample or descriptor is computed, so a
|
|
11258
|
+
* disabled camera costs nothing extra per frame.
|
|
11259
|
+
*/
|
|
11260
|
+
var APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = false;
|
|
11239
11261
|
var ClipModelMetaSchema = object({
|
|
11240
11262
|
/** The paired text encoder's catalog id (the embedding-encoder's text catalog). */
|
|
11241
11263
|
textModelId: string().min(1),
|
|
@@ -20183,10 +20205,12 @@ var NcMediaPolicySchema = object({
|
|
|
20183
20205
|
/**
|
|
20184
20206
|
* Cooldown GRANULARITY over the subject's class — how much a fired
|
|
20185
20207
|
* notification suppresses.
|
|
20186
|
-
* - `
|
|
20187
|
-
*
|
|
20188
|
-
*
|
|
20189
|
-
*
|
|
20208
|
+
* - `per-class` (default, and the absent value since 2026-10-01 — D36) — an
|
|
20209
|
+
* independent window per detected class: cat→dog fires at once, cat→cat
|
|
20210
|
+
* still waits.
|
|
20211
|
+
* - `shared` — one window for the whole rule/scope: a cat silences the next
|
|
20212
|
+
* dog for `cooldownSec`. Only written when an operator picks it; it is no
|
|
20213
|
+
* longer what an unset rule means.
|
|
20190
20214
|
*
|
|
20191
20215
|
* AUDIO subjects are ALWAYS per-class regardless of this setting: a scream
|
|
20192
20216
|
* must not be swallowed by a bark's window (the precedent this generalizes —
|
|
@@ -20201,8 +20225,11 @@ var NcThrottleSchema = object({
|
|
|
20201
20225
|
/**
|
|
20202
20226
|
* Class granularity of the cooldown key. Optional rather than defaulted:
|
|
20203
20227
|
* a Zod default does NOT run on the addon→addon cap path, so a persisted
|
|
20204
|
-
* rule authored before this field simply carries none
|
|
20205
|
-
*
|
|
20228
|
+
* rule authored before this field simply carries none. The engine used to
|
|
20229
|
+
* read absent as `shared` (D36); since 2026-10-01 it reads absent as
|
|
20230
|
+
* `per-class` — the operator's default — and only an explicit `shared`
|
|
20231
|
+
* still means `shared`. See `cooldownKey` / `keysPerClass` in the rule
|
|
20232
|
+
* engine, and D36's dated note.
|
|
20206
20233
|
*/
|
|
20207
20234
|
granularity: NcThrottleGranularitySchema.optional()
|
|
20208
20235
|
});
|
|
@@ -24461,13 +24488,19 @@ var pipelineAnalyticsCapability = {
|
|
|
24461
24488
|
*
|
|
24462
24489
|
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
24463
24490
|
* the same widened track-deletion cascade (design §5.2).
|
|
24491
|
+
*
|
|
24492
|
+
* `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
|
|
24493
|
+
* live stationary entry vouches for them (its key frame, owned by a track
|
|
24494
|
+
* that moved and was kept). Released when the entry retires. Optional:
|
|
24495
|
+
* absent from a provider that predates it.
|
|
24464
24496
|
*/
|
|
24465
24497
|
deleteTracks: method(object({
|
|
24466
24498
|
deviceId: number(),
|
|
24467
24499
|
trackIds: array(string()).min(1)
|
|
24468
24500
|
}), object({
|
|
24469
24501
|
deleted: number().int(),
|
|
24470
|
-
failed: array(string()).readonly()
|
|
24502
|
+
failed: array(string()).readonly(),
|
|
24503
|
+
sparedMediaIds: array(number().int()).readonly().optional()
|
|
24471
24504
|
}), {
|
|
24472
24505
|
kind: "mutation",
|
|
24473
24506
|
auth: "admin"
|
|
@@ -27177,7 +27210,42 @@ var SetCameraSensorsInputSchema = object({
|
|
|
27177
27210
|
/** `null` removes the attachment: the camera goes back to `not-configured`. */
|
|
27178
27211
|
config: CameraSensorsConfigSchema.nullable()
|
|
27179
27212
|
});
|
|
27180
|
-
|
|
27213
|
+
/**
|
|
27214
|
+
* Why an early occupancy look (D691) was not scheduled.
|
|
27215
|
+
*
|
|
27216
|
+
* - `unknown-camera` — no session was ever dispatched for it, so there is no
|
|
27217
|
+
* node and no config to attach a burst with.
|
|
27218
|
+
* - `out-of-range` — the ask is negative or further out than the orchestrator
|
|
27219
|
+
* will hold a timer for; the parked-object cadence is the answer there.
|
|
27220
|
+
* - `no-burst-producer` — this build has no burst producer at all.
|
|
27221
|
+
* - `already-looked` — this camera's ONE early look since its last session has
|
|
27222
|
+
* been spent. A look's own burst can re-arm a flickering flip, and a look
|
|
27223
|
+
* per arm would chain a burst every ~30 s forever (review H2); the next
|
|
27224
|
+
* real session re-arms the budget.
|
|
27225
|
+
*/
|
|
27226
|
+
var OccupancyLookRefusalSchema = _enum([
|
|
27227
|
+
"unknown-camera",
|
|
27228
|
+
"out-of-range",
|
|
27229
|
+
"no-burst-producer",
|
|
27230
|
+
"already-looked"
|
|
27231
|
+
]);
|
|
27232
|
+
method(object({
|
|
27233
|
+
deviceId: number().int().nonnegative(),
|
|
27234
|
+
/** How long from NOW until the pending flip's sustain window ends. RELATIVE,
|
|
27235
|
+
* so the caller's clock and the orchestrator's never have to agree. */
|
|
27236
|
+
afterMs: number().finite(),
|
|
27237
|
+
/** Why, for the log. */
|
|
27238
|
+
reason: string()
|
|
27239
|
+
}), object({
|
|
27240
|
+
scheduled: boolean(),
|
|
27241
|
+
/** When `scheduled`: how long until the burst is dialled. */
|
|
27242
|
+
dueInMs: number().optional(),
|
|
27243
|
+
/** When not `scheduled`: why. */
|
|
27244
|
+
refusedBecause: OccupancyLookRefusalSchema.optional()
|
|
27245
|
+
}), {
|
|
27246
|
+
kind: "mutation",
|
|
27247
|
+
auth: "admin"
|
|
27248
|
+
}), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
|
|
27181
27249
|
kind: "mutation",
|
|
27182
27250
|
auth: "admin"
|
|
27183
27251
|
}), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
|
|
@@ -27431,6 +27499,8 @@ function buildDescriptor(capName, kind) {
|
|
|
27431
27499
|
* contributes one entry per bound cap present in this map.
|
|
27432
27500
|
*/
|
|
27433
27501
|
var EVENT_KIND_BY_CAP = Object.freeze(Object.fromEntries(Object.entries(CAP_TO_KIND).map(([capName, kind]) => [capName, buildDescriptor(capName, kind)])));
|
|
27502
|
+
/** The cap names covered by the taxonomy (for the anti-drift guard). */
|
|
27503
|
+
var EVENTFUL_CAP_NAMES = Object.keys(CAP_TO_KIND);
|
|
27434
27504
|
/**
|
|
27435
27505
|
* Build a full `EventKindDescriptor` for a taxonomy `kind`, stamping the
|
|
27436
27506
|
* per-device `source`. Returns null when `kind` is not in the taxonomy.
|
|
@@ -48339,6 +48409,12 @@ Object.freeze({
|
|
|
48339
48409
|
addonId: null,
|
|
48340
48410
|
access: "delete"
|
|
48341
48411
|
},
|
|
48412
|
+
"pipelineOrchestrator.requestOccupancyLook": {
|
|
48413
|
+
capName: "pipeline-orchestrator",
|
|
48414
|
+
capScope: "system",
|
|
48415
|
+
addonId: null,
|
|
48416
|
+
access: "create"
|
|
48417
|
+
},
|
|
48342
48418
|
"pipelineOrchestrator.resetNodePipelineDefaults": {
|
|
48343
48419
|
capName: "pipeline-orchestrator",
|
|
48344
48420
|
capScope: "system",
|
|
@@ -52131,6 +52207,11 @@ Object.freeze({
|
|
|
52131
52207
|
form: "single",
|
|
52132
52208
|
optional: false
|
|
52133
52209
|
}],
|
|
52210
|
+
"pipelineOrchestrator.requestOccupancyLook": [{
|
|
52211
|
+
name: "deviceId",
|
|
52212
|
+
form: "single",
|
|
52213
|
+
optional: false
|
|
52214
|
+
}],
|
|
52134
52215
|
"pipelineOrchestrator.resolvePipeline": [{
|
|
52135
52216
|
name: "deviceId",
|
|
52136
52217
|
form: "single",
|
|
@@ -53209,6 +53290,13 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
53209
53290
|
function systemEventKindsOfFamily(family) {
|
|
53210
53291
|
return NC_SYSTEM_EVENT_KIND_GROUP_SPECS.filter((g) => g.family === family).flatMap((g) => g.kinds);
|
|
53211
53292
|
}
|
|
53293
|
+
/** The kind names on an UNTYPED condition, or `undefined` when it has none. */
|
|
53294
|
+
function systemEventKindNamesOf(condition) {
|
|
53295
|
+
if (typeof condition !== "object" || condition === null || !("kinds" in condition)) return void 0;
|
|
53296
|
+
const kinds = condition.kinds;
|
|
53297
|
+
if (!Array.isArray(kinds)) return void 0;
|
|
53298
|
+
return kinds.filter((kind) => typeof kind === "string");
|
|
53299
|
+
}
|
|
53212
53300
|
/**
|
|
53213
53301
|
* One family, or `mixed`. Mixed covers kinds that span families, a legacy kind,
|
|
53214
53302
|
* a kind this build does not know (it fails toward read-only and never toward
|
|
@@ -53293,6 +53381,102 @@ var NC_SYSTEM_DELIVERY = "system-event";
|
|
|
53293
53381
|
function isSystemDelivery(delivery) {
|
|
53294
53382
|
return delivery === NC_SYSTEM_DELIVERY;
|
|
53295
53383
|
}
|
|
53384
|
+
/**
|
|
53385
|
+
* Which capability a device must carry to be OFFERED on a rule of this kind's
|
|
53386
|
+
* device-scope picker (operator ruling, 2026-10-01). `null` means "no
|
|
53387
|
+
* capability filter for this kind" — either every device applies (the system
|
|
53388
|
+
* families, each already a separate concern; see
|
|
53389
|
+
* `docs/architecture/notifications.md`'s D637 `deviceIds` table) or `mixed`,
|
|
53390
|
+
* which authors nothing.
|
|
53391
|
+
*
|
|
53392
|
+
* DERIVED, never a hand-picked list:
|
|
53393
|
+
* - `sensor` reads `EVENTFUL_CAP_NAMES` — the SAME cap table the engine
|
|
53394
|
+
* itself turns a linked device's bound caps into sensor event kinds with
|
|
53395
|
+
* (`EVENT_KIND_BY_CAP`). A device this picker offers for a sensor rule is
|
|
53396
|
+
* exactly a device the rule's `sensorKinds` condition could ever name.
|
|
53397
|
+
* - `detection` (which a package-event rule is — there is no separate
|
|
53398
|
+
* `package` kind, D637) / `occupancy` read the one pipeline cap a camera
|
|
53399
|
+
* needs to produce the detections / counts / parcels those kinds match on.
|
|
53400
|
+
* - `sound` reads the one cap a device needs to produce the audio metrics a
|
|
53401
|
+
* sound rule's sampling window is built from.
|
|
53402
|
+
* - `device-events` / `system` / `alarm` / `mixed` are `null`: a device
|
|
53403
|
+
* event rule's `deviceIds` legitimately spans every device type (liveness,
|
|
53404
|
+
* battery, consumable, `detection-blind`), a system rule has no device
|
|
53405
|
+
* scope at all (dropped from the editor's tabs), and `alarm`'s `deviceIds`
|
|
53406
|
+
* is a reference to whichever camera's rule set it off — not a scope this
|
|
53407
|
+
* picker authors.
|
|
53408
|
+
*
|
|
53409
|
+
* Callers resolve the ids via `deviceManager.listDeviceIdsByCaps` (max 16
|
|
53410
|
+
* names — `EVENTFUL_CAP_NAMES` is exactly 16) and must treat an unanswered
|
|
53411
|
+
* read as "unknown", never as "no devices" (D315): this function only names
|
|
53412
|
+
* WHICH caps to ask for, not what to show while the answer is pending.
|
|
53413
|
+
*/
|
|
53414
|
+
function ruleDeviceCompatCapNames(kind) {
|
|
53415
|
+
switch (kind) {
|
|
53416
|
+
case "sensor": return EVENTFUL_CAP_NAMES;
|
|
53417
|
+
case "detection":
|
|
53418
|
+
case "occupancy": return ["detection-pipeline"];
|
|
53419
|
+
case "sound": return ["audio-metrics"];
|
|
53420
|
+
case "device-events":
|
|
53421
|
+
case "system":
|
|
53422
|
+
case "alarm":
|
|
53423
|
+
case "mixed": return null;
|
|
53424
|
+
}
|
|
53425
|
+
}
|
|
53426
|
+
/**
|
|
53427
|
+
* The capability every CAMERA carries: `camera-streams` is a `defaultActive`
|
|
53428
|
+
* wrapper bound to every `Camera`-type device (`camera-streams.cap.ts`).
|
|
53429
|
+
* Named once, because a sensor rule's compatible set needs it (below).
|
|
53430
|
+
*/
|
|
53431
|
+
var NC_CAMERA_SCOPE_CAP_NAME = "camera-streams";
|
|
53432
|
+
/**
|
|
53433
|
+
* Every capability QUERY whose union is the set of devices a rule of this kind
|
|
53434
|
+
* may be SCOPED to (`conditions.devices`) — what the save-time guard and the
|
|
53435
|
+
* admin's Devices tab ask `deviceManager.listDeviceIdsByCaps`, one call per
|
|
53436
|
+
* entry. `null` exactly where {@link ruleDeviceCompatCapNames} is `null`.
|
|
53437
|
+
*
|
|
53438
|
+
* Several queries rather than one list because `listDeviceIdsByCaps` takes at
|
|
53439
|
+
* most 16 names and `EVENTFUL_CAP_NAMES` is already exactly 16.
|
|
53440
|
+
*
|
|
53441
|
+
* A `sensor` rule's set is the eventful devices PLUS every camera (fix round
|
|
53442
|
+
* 1, 2026-10-01): the engine matches a sensor rule scoped to a CAMERA — a
|
|
53443
|
+
* per-camera row carries the camera's id, and a linked set matches on
|
|
53444
|
+
* `rowCameraIds` (D630 §6) — so a camera-scoped sensor rule is legitimate and
|
|
53445
|
+
* a guard that refused it would make every such stored rule un-editable.
|
|
53446
|
+
*/
|
|
53447
|
+
function ruleDeviceCompatCapQueries(kind) {
|
|
53448
|
+
const primary = ruleDeviceCompatCapNames(kind);
|
|
53449
|
+
if (primary === null) return null;
|
|
53450
|
+
return kind === "sensor" ? [primary, [NC_CAMERA_SCOPE_CAP_NAME]] : [primary];
|
|
53451
|
+
}
|
|
53452
|
+
/**
|
|
53453
|
+
* Which kind of rule is this?
|
|
53454
|
+
*
|
|
53455
|
+
* The CONDITION wins over the delivery wherever the engine says it does, and
|
|
53456
|
+
* the order below is the engine's own: `evaluateRule` checks the system branch
|
|
53457
|
+
* first, then the occupancy and audio gates. Takes a plain `delivery` string so
|
|
53458
|
+
* a trigger this build does not know still classifies (as `detection`, which is
|
|
53459
|
+
* the read-only path's own fallback). A system rule classifies by the FAMILY of
|
|
53460
|
+
* its event kinds (D637) — see {@link systemRuleKindOf}.
|
|
53461
|
+
*/
|
|
53462
|
+
function ruleKindOf(rule) {
|
|
53463
|
+
if (isSystemDelivery(rule.delivery)) return systemRuleKindOf(rule.conditions.systemEvent);
|
|
53464
|
+
if (rule.conditions.occupancy !== void 0 && rule.delivery === "device-event") return "occupancy";
|
|
53465
|
+
if (rule.conditions.audio !== void 0 && rule.delivery === "immediate") return "sound";
|
|
53466
|
+
if (rule.delivery === "device-event") return "sensor";
|
|
53467
|
+
return "detection";
|
|
53468
|
+
}
|
|
53469
|
+
/**
|
|
53470
|
+
* A system rule's kind: its one family, or `mixed` (D637).
|
|
53471
|
+
*
|
|
53472
|
+
* Takes the UNTYPED condition for the same reason {@link NcRuleConditionsSubject}
|
|
53473
|
+
* is structural. `mixed` covers kinds across families, a legacy or unknown kind,
|
|
53474
|
+
* and no kinds at all — it fails toward read-only, never toward editable.
|
|
53475
|
+
*/
|
|
53476
|
+
function systemRuleKindOf(condition) {
|
|
53477
|
+
const verdict = systemEventFamilyOf(systemEventKindNamesOf(condition) ?? []);
|
|
53478
|
+
return verdict.kind === "family" ? verdict.family : "mixed";
|
|
53479
|
+
}
|
|
53296
53480
|
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
53297
53481
|
var WEEKDAY_TO_DAY = {
|
|
53298
53482
|
Sun: 0,
|
|
@@ -55781,4 +55965,4 @@ function buildClipModelRegistry(entries) {
|
|
|
55781
55965
|
/** The built-in catalog's registry. */
|
|
55782
55966
|
var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
|
|
55783
55967
|
//#endregion
|
|
55784
|
-
export {
|
|
55968
|
+
export { NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as $, ruleDeviceCompatCapQueries as $n, TimelapseRuleInputSchema as $t, EMBEDDING_REQUIREMENTS_FAILED as A, isDetectionMacroClass as An, ZodObject as Ar, NcTemplateVarDescriptorSchema as At, ListTrackRelationsInputSchema as B, memoizePinnedFfmpeg as Bn, record as Br, SCENE_DEFAULT_ANCHOR_THRESHOLD as Bt, DEFAULT_EVENT_COLOR as C, encodeVectorBase64 as Cn, customAction as Cr, NcSnoozeInputSchema as Ct, DeclaredDevices as D, gifDeriveSpeed as Dn, nodePin as Dr, NcTaxonomySchema as Dt, DETECTION_PIPELINE_CAP_NAME as E, failureContributionCapability as En, isDeviceScopedCap as Er, NcSystemEventKindSchema as Et, EXPORT_DENSE_MAX_RANGES as F, isSystemDelivery as Fn, literal as Fr, RECORDING_SOURCE_CAMSTACK_ADDON as Ft, MAX_BIRTH_LATENCY_PROXY_MS as G, plateGalleryCapability as Gn, unknown as Gr, SCENE_DIVERGED as Gt, LockStateSchema as H, occupancyScope as Hn, string as Hr, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as Ht, FIRST_LEVEL_MACRO_CLASSES as I, isSystemEventSummaryRule as In, looseObject as Ir, RebuildObjectEmbeddingsRefusalSchema as It, MOTION_CLOSE_AFTER_MS as J, readTimelapseGeneratedAt as Jn, SetTrackPurityInputSchema as Jt, MAX_TRACK_PURITIES as K, readDeviceStateFrom as Kn, EventCategory as Kr, SCENE_RESET_RECAPTURES as Kt, FULL_IMAGE_BBOX as L, isVectorIndexDimConflict as Ln, number as Lr, RetrainStatusSchema as Lt, EVENT_DENSITY_BATCH_MAX as M, isKnownTemplateVar as Mn, array as Mr, OpsLogEntrySchema as Mt, EVENT_KIND_BY_CAP as N, isMediaOwnerType as Nn, boolean as Nr, PoolMemoryWatchdog as Nt, DetectionSourceSchema as O, gifFromMp4Args as On, normalizeNodeId as Or, NcTemplatePreviewInputSchema as Ot, EVENT_OWNER_TYPES as P, isScheduleActive as Pn, discriminatedUnion as Pr, RECORDING_EXPORT_MAX_READ_BYTES as Pt, NC_AUDIO_CONFIRM_HITS_DEFAULT as Q, ruleBelongsToAlarm as Qn, TRACK_RELATIONS_DEFAULT_LIMIT as Qt, FailureCounters as R, kebabToCamel as Rn, object as Rr, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as Rt, CoverStateSchema as S, embeddingRequirementsUnavailableError as Sn, createEvent as Sr, NcScheduleSchema as St, DETECTION_MACRO_CLASSES as T, faceGalleryCapability as Tn, hydrateSchema as Tr, NcSnoozeSuppressedSchema as Tt, MAX_ARCHIVED_DEBUG_NOTES as U, parseProcStatus as Un, tuple as Ur, SCENE_DEFAULT_QUIET_SECONDS as Ut, ListTrackRelationsResultSchema as V, notificationRulesCapability as Vn, strictObject as Vr, SCENE_DEFAULT_CHECK_INTERVAL_SEC as Vt, MAX_BIRTH_DECISION_RECORDS as W, pipelineAnalyticsCapability as Wn, union as Wr, SCENE_DEFAULT_UNCOVERED_POLICY as Wt, MotionTriggeredBySchema as X, resolveLocationMode as Xn, SetTrackRelationInputSchema as Xt, MediaFileKindEnum as Y, resolveClipSearchMinScore as Yn, SetTrackPurityResultSchema as Yt, NC_ALARM_SYSTEM_EVENT_KINDS as Z, resolvePoolMemoryPolicy as Zn, TIMELAPSE_DENSE_FLOOR_SEC as Zt, BaseDevice as _, describeSystemEventFamilyProblem as _n, isSourceCap as _r, NcRuleInputSchema as _t, CLIP_EMBEDDING_STEP_ID as a, TrackSideSchema as an, subKindsOf as ar, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as at, ClearTrackRelationInputSchema as b, embeddingRefusalOf as bn, BaseAddon as br, NcRuleTargetSchema as bt, resolveClusterModelPin as c, alarmPanelCapability as cn, systemEventFilterApplies as cr, NC_SNOOZE_MAX_MINUTES as ct, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as d, audioModeOf as dn, templateVarsFor as dr, NC_TAXONOMY as dt, TimelapseRulePatchSchema as en, ruleKindOf as er, NC_CLIP_POST_ROLL_DEFAULT_SEC as et, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as f, buildEventKindDescriptor as fn, vectorDimFromBase64 as fr, NC_TEMPLATE_VARS as ft, BIRTH_DECISION_DEFAULT_LIMIT as g, describeSystemEventDeliveryProblem as gn, evaluateSensorEdge as gr, NcConditionsSchema as gt, ArchivedDebugNoteSchema as h, deriveRecordingMode as hn, canonicalHash as hr, NcConditionDescriptorSchema as ht, CLIP_TEXT_MODELS as i, TrackRelationSchema as in, storageOccupancyCapability as ir, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as it, EMBEDDING_REQUIREMENTS_UNAVAILABLE as j, isEventOwnerType as jn, _enum as jr, OPS_LOG_DEFAULT_LIMIT as jt, EMBEDDING_MODEL_FAILED as k, isAudioClassName as kn, sleep as kr, NcTemplatePreviewSchema as kt, APPEARANCE_BIN_COUNT as l, assertTimelapseCadences as ln, systemEventSummaryScheduleOf as lr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as lt, AlarmArmModeSchema as m, cosineSimilarity as mn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as mr, NcAlarmSettingsPatchSchema as mt, DEFAULT_CLIP_MODEL as n, TrackPuritySchema as nn, sensorRaisedOf as nr, NC_CLIP_RETENTION_MAX_SEC as nt, FACE_EMBEDDING_STEP_ID as o, TrackSourceSchema as on, systemEventDeliveryProblems as or, NC_DEFAULT_SNOOZE_MINUTES as ot, AUDIO_MACRO_LABELS as p, consumableLowPercentOf as pn, zoneAnalyticsCapability as pr, NcAlarmConfigSchema as pt, MAX_TRACK_RELATIONS as q, readMotionTriggeredBy as qn, SceneMonitorSchema as qt, CLIP_IMAGE_MODELS as r, TrackRelationKindSchema as rn, servedTemplateVars as rr, NC_CONDITION_CATALOG as rt, readClusterModelPinStrict as s, addonWidgetsSourceCapability as sn, systemEventFamilyProblems as sr, NC_SENSOR_TRANSITION_KINDS as st, BUILTIN_CLIP_MODELS as t, TimelapseRuleSchema as tn, sceneMonitorCapability as tr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as tt, APPEARANCE_BLOCKS as u, audioMetricsCapability as un, templateCarriesSummary as ur, NC_TANK_SYSTEM_EVENT_KINDS as ut, BirthDecisionRecordSchema as v, embeddingEncoderCapability as vn, DeviceType as vr, NcRulePatchSchema as vt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as w, evictionPolicyOfLocation as wn, defineCustomActions as wr, NcSnoozeSchema as wt, ClearTrackRelationResultSchema as x, embeddingRequirementsFailedError as xn, CamProfileSchema as xr, NcRuleUpdateInputSchema as xt, COCO_TO_MACRO as y, embeddingModelFailedError as yn, errMsg as yr, NcRuleSchema as yt, LabelAttributionSchema as z, mayWriteToLocation as zn, partialRecord as zr, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as zt };
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-C67UM_q_.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Nt as PoolMemoryWatchdog, Or as normalizeNodeId, Sn as embeddingRequirementsUnavailableError, Un as parseProcStatus, Zn as resolvePoolMemoryPolicy, a as CLIP_EMBEDDING_STEP_ID, br as BaseAddon, c as resolveClusterModelPin, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, vn as embeddingEncoderCapability, xn as embeddingRequirementsFailedError, yn as embeddingModelFailedError } from "../clip-model-registry-C9Aw4qkh.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|