camstack 1.2.130 → 1.2.133
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.
|
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
|
|
|
23633
23633
|
}
|
|
23634
23634
|
});
|
|
23635
23635
|
|
|
23636
|
-
// ../system/dist/dist-
|
|
23637
|
-
var
|
|
23638
|
-
"../system/dist/dist-
|
|
23636
|
+
// ../system/dist/dist-DYWqXngV.js
|
|
23637
|
+
var require_dist_DYWqXngV = __commonJS({
|
|
23638
|
+
"../system/dist/dist-DYWqXngV.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -23768,7 +23768,6 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
23768
23768
|
EventCategory2["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
|
|
23769
23769
|
EventCategory2["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
23770
23770
|
EventCategory2["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
23771
|
-
EventCategory2["FrigateLiveEvent"] = "frigate.live-event";
|
|
23772
23771
|
EventCategory2["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
23773
23772
|
EventCategory2["StreamOnline"] = "stream.online";
|
|
23774
23773
|
EventCategory2["StreamOffline"] = "stream.offline";
|
|
@@ -31042,7 +31041,7 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
31042
31041
|
var SourceInfoSchema = zod.z.object({
|
|
31043
31042
|
/** Live dispatch key — mutable when the source system allows rename. */
|
|
31044
31043
|
id: zod.z.string(),
|
|
31045
|
-
/** Source system tag — e.g. 'homeassistant' | 'reolink' | '
|
|
31044
|
+
/** Source system tag — e.g. 'homeassistant' | 'reolink' | 'onvif'. */
|
|
31046
31045
|
system: zod.z.string(),
|
|
31047
31046
|
/** Immutable upstream identifier when available (HA `unique_id`, … ).
|
|
31048
31047
|
* Used to detect rename when `id` changes. */
|
|
@@ -35642,7 +35641,7 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
35642
35641
|
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
35643
35642
|
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
35644
35643
|
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
35645
|
-
* 30 is
|
|
35644
|
+
* 30 s is a widely shipped value for the same decision.
|
|
35646
35645
|
*
|
|
35647
35646
|
* ### What it replaces
|
|
35648
35647
|
*
|
|
@@ -37499,6 +37498,12 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
37499
37498
|
/** Zone display name at crossing time (falls back to the id). */
|
|
37500
37499
|
zoneName: zod.z.string().optional()
|
|
37501
37500
|
});
|
|
37501
|
+
var ZoneOverlapSchema = zod.z.object({
|
|
37502
|
+
zoneId: zod.z.string(),
|
|
37503
|
+
zoneName: zod.z.string().optional(),
|
|
37504
|
+
/** Percentage of the BOX area inside the zone, 0–100. */
|
|
37505
|
+
overlapPct: zod.z.number()
|
|
37506
|
+
});
|
|
37502
37507
|
var ObjectEventSchema = zod.z.object({
|
|
37503
37508
|
...BaseEventFields,
|
|
37504
37509
|
kind: zod.z.literal("object"),
|
|
@@ -37523,6 +37528,35 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
37523
37528
|
bbox: BoundingBoxSchema.optional(),
|
|
37524
37529
|
/** Heavy JSON — omitted in slim projection. */
|
|
37525
37530
|
zones: zod.z.array(zod.z.string()).readonly().optional(),
|
|
37531
|
+
/**
|
|
37532
|
+
* How far inside each stamped zone the box actually was, as a percentage of
|
|
37533
|
+
* the BOX area.
|
|
37534
|
+
*
|
|
37535
|
+
* Membership alone cannot express "at least a third of it inside", which is
|
|
37536
|
+
* the bar an operator argues with — and the number already existed: the
|
|
37537
|
+
* engine computed it, the pipeline logged it, and then discarded it. It
|
|
37538
|
+
* matters most on the events that carry no track, where a rule has nothing
|
|
37539
|
+
* else to judge by.
|
|
37540
|
+
*/
|
|
37541
|
+
zoneOverlaps: zod.z.array(ZoneOverlapSchema).readonly().optional(),
|
|
37542
|
+
/**
|
|
37543
|
+
* Present when this event describes a detection the TRACKER refused, so it
|
|
37544
|
+
* has no track and never will.
|
|
37545
|
+
*
|
|
37546
|
+
* A zone-scoped immediate rule asks "is there an animal in the flowerbed
|
|
37547
|
+
* NOW?"; tracking answers a different question ("is this the same subject as
|
|
37548
|
+
* before?") whose confirmation threshold presumes continuity. On 2026-09-09 a
|
|
37549
|
+
* dog at 0.7729, 100% inside a watched zone, was refused three times in six
|
|
37550
|
+
* seconds with three different candidate ids — seven analysed frames in the
|
|
37551
|
+
* window, the subject in a handful of them, metres apart — and produced no
|
|
37552
|
+
* event at all.
|
|
37553
|
+
*
|
|
37554
|
+
* It is NAMED rather than merely implied by a missing `trackId`: an event
|
|
37555
|
+
* with no track and no reason is indistinguishable from a track whose media
|
|
37556
|
+
* went missing, and a consumer that asks this one for a best shot or a
|
|
37557
|
+
* history is asking for something that never existed.
|
|
37558
|
+
*/
|
|
37559
|
+
spawnRefused: zod.z.string().optional(),
|
|
37526
37560
|
/** Omitted in slim projection. */
|
|
37527
37561
|
state: TrackStateSchema.optional(),
|
|
37528
37562
|
/**
|
|
@@ -39001,6 +39035,35 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
39001
39035
|
*/
|
|
39002
39036
|
tier: zod.z.enum(["native", "ram-fullframe"]).optional()
|
|
39003
39037
|
});
|
|
39038
|
+
var ParkedFrameKindSchema = zod.z.enum(["keyFrame", "thumbnail"]);
|
|
39039
|
+
var ParkRefusalSchema = zod.z.enum(["handle-gone", "encode-failed"]);
|
|
39040
|
+
var ParkTrackFrameResultSchema = zod.z.discriminatedUnion("parked", [zod.z.object({
|
|
39041
|
+
parked: zod.z.literal(true),
|
|
39042
|
+
/** The node holding the parcel — what a later retrieval must be pinned to. */
|
|
39043
|
+
nodeId: zod.z.string(),
|
|
39044
|
+
width: zod.z.number().int().positive(),
|
|
39045
|
+
height: zod.z.number().int().positive(),
|
|
39046
|
+
/** JPEG bytes the parcel costs on the node. */
|
|
39047
|
+
bytes: zod.z.number().int().nonnegative(),
|
|
39048
|
+
/** Whether this park replaced a parcel already held for the key. */
|
|
39049
|
+
replaced: zod.z.boolean()
|
|
39050
|
+
}), zod.z.object({
|
|
39051
|
+
parked: zod.z.literal(false),
|
|
39052
|
+
nodeId: zod.z.string(),
|
|
39053
|
+
reason: ParkRefusalSchema,
|
|
39054
|
+
/** Age of the handle at the park, on the runner's clock; null if unknown. */
|
|
39055
|
+
handleAgeMs: zod.z.number().nullable(),
|
|
39056
|
+
detail: zod.z.string().optional()
|
|
39057
|
+
})]);
|
|
39058
|
+
var ParkedTrackFrameSchema = zod.z.object({
|
|
39059
|
+
jpeg: zod.z.string(),
|
|
39060
|
+
width: zod.z.number().int().positive(),
|
|
39061
|
+
height: zod.z.number().int().positive(),
|
|
39062
|
+
/** The frame instant the parcel shows (the caller's clock, echoed back). */
|
|
39063
|
+
timestamp: zod.z.number(),
|
|
39064
|
+
/** When the node stored it (the node's clock). */
|
|
39065
|
+
parkedAt: zod.z.number()
|
|
39066
|
+
});
|
|
39004
39067
|
var DetailParentSchema = zod.z.object({
|
|
39005
39068
|
bbox: NativeCropBboxSchema,
|
|
39006
39069
|
className: zod.z.string()
|
|
@@ -39246,7 +39309,7 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
39246
39309
|
* - `analyzer`: ML/frame-diff motion detection (motion-wasm or other
|
|
39247
39310
|
* analyzer providers) running on decoded frames in this runner.
|
|
39248
39311
|
* - `onboard`: camera-native motion pushes (Reolink Baichuan, ONVIF
|
|
39249
|
-
* analytics
|
|
39312
|
+
* analytics). The provider emits ProviderMotion
|
|
39250
39313
|
* events; the orchestrator forwards to `reportMotion`.
|
|
39251
39314
|
*/
|
|
39252
39315
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
@@ -39604,7 +39667,60 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
39604
39667
|
className: zod.z.string(),
|
|
39605
39668
|
/** Camera the pixels came from. Diagnostics + log tags ONLY — never routing. */
|
|
39606
39669
|
sourceDeviceId: zod.z.number()
|
|
39607
|
-
}), RunStatelessStepResultSchema, { kind: "mutation" })
|
|
39670
|
+
}), RunStatelessStepResultSchema, { kind: "mutation" }),
|
|
39671
|
+
/**
|
|
39672
|
+
* PARK a frame for a track at the instant it is judged to matter
|
|
39673
|
+
* ([D422](../../../docs/decisions/adr-0422-a-relevant-frame-is-parked-when-it-becomes-relevant.md)).
|
|
39674
|
+
*
|
|
39675
|
+
* The hub's `BestDetectionTracker` — the single "best per track" policy —
|
|
39676
|
+
* concludes a frame is a track's best and calls this on the node that
|
|
39677
|
+
* owns `handle` (`nodePin(handle.nodeId)`), while the handle is young. The
|
|
39678
|
+
* runner cuts `bbox` from the native surface it already holds (a full
|
|
39679
|
+
* frame for `keyFrame`, the caller's subject window for `thumbnail`),
|
|
39680
|
+
* encodes ONE JPEG, and keeps it under `(deviceId, trackId, kind)`. Every
|
|
39681
|
+
* later consumer retrieves by that key (`getParkedTrackFrame`) — a lookup
|
|
39682
|
+
* that cannot miss on age. D52 holds: the rectangle is cut by the runner,
|
|
39683
|
+
* never a pre-cut tile the caller decided. D9/D18 hold: one compressed
|
|
39684
|
+
* encode at a decision point, never a stream.
|
|
39685
|
+
*
|
|
39686
|
+
* Idempotent per `(trackId, kind)`: a later park replaces (the ranking is
|
|
39687
|
+
* the hub's; this adds no second opinion), an out-of-order older instant
|
|
39688
|
+
* is ignored. Bounded per device and per node on the runner
|
|
39689
|
+
* (`parked-frame-store.ts`), oldest-first eviction, never a refusal for
|
|
39690
|
+
* space. A refusal names its reason and is logged on the runner with the
|
|
39691
|
+
* handle's measured age — it is never retried into a loop.
|
|
39692
|
+
*/
|
|
39693
|
+
parkTrackFrame: method(zod.z.object({
|
|
39694
|
+
deviceId: zod.z.number(),
|
|
39695
|
+
/** Opaque to the runner — the hub's track id. */
|
|
39696
|
+
trackId: zod.z.string(),
|
|
39697
|
+
kind: ParkedFrameKindSchema,
|
|
39698
|
+
handle: FrameHandleSchema,
|
|
39699
|
+
/** Normalized [0,1] window to cut. `{0,0,1,1}` for a full frame. */
|
|
39700
|
+
bbox: NativeCropBboxSchema,
|
|
39701
|
+
/** Width cap for a full-frame park (the `keyFrame` native cap). */
|
|
39702
|
+
maxWidth: zod.z.number().int().positive().optional(),
|
|
39703
|
+
/** The frame instant (caller's clock) — orders parks for one key. */
|
|
39704
|
+
timestamp: zod.z.number()
|
|
39705
|
+
}), ParkTrackFrameResultSchema, { kind: "mutation" }),
|
|
39706
|
+
/**
|
|
39707
|
+
* Retrieve a parked parcel by `(deviceId, trackId, kind)`. Pinned to the
|
|
39708
|
+
* node that answered the park (`ParkTrackFrameResult.nodeId`). `null` means
|
|
39709
|
+
* nothing was parked under that key on this node — never "too old".
|
|
39710
|
+
*/
|
|
39711
|
+
getParkedTrackFrame: method(zod.z.object({
|
|
39712
|
+
deviceId: zod.z.number(),
|
|
39713
|
+
trackId: zod.z.string(),
|
|
39714
|
+
kind: ParkedFrameKindSchema
|
|
39715
|
+
}), ParkedTrackFrameSchema.nullable()),
|
|
39716
|
+
/**
|
|
39717
|
+
* Drop every parcel of a track — the hub closed it. Idempotent. A track
|
|
39718
|
+
* whose release is lost ages out on the runner under a hard ceiling.
|
|
39719
|
+
*/
|
|
39720
|
+
releaseParkedTrackFrames: method(zod.z.object({
|
|
39721
|
+
deviceId: zod.z.number(),
|
|
39722
|
+
trackId: zod.z.string()
|
|
39723
|
+
}), zod.z.object({ released: zod.z.number().int().nonnegative() }), { kind: "mutation" })
|
|
39608
39724
|
}
|
|
39609
39725
|
};
|
|
39610
39726
|
var CameraPipelineConfigSchema = zod.z.object({
|
|
@@ -43200,8 +43316,8 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
43200
43316
|
/**
|
|
43201
43317
|
* Runtime-state slice — every provider that registers this cap
|
|
43202
43318
|
* stores the same shape under `device.runtimeState[battery]`.
|
|
43203
|
-
* Cross-provider uniformity: a Reolink Argus, a
|
|
43204
|
-
*
|
|
43319
|
+
* Cross-provider uniformity: a Reolink Argus, a sensor proxy,
|
|
43320
|
+
* an ONVIF battery cam all read/write the same keys.
|
|
43205
43321
|
* Consumers (BatteryBadge, snapshot wrapper sleep gate) read once
|
|
43206
43322
|
* via `device.runtimeState.getCapState('battery')` regardless of
|
|
43207
43323
|
* the underlying driver.
|
|
@@ -45054,7 +45170,7 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
45054
45170
|
* Which integration-marker cap the addon declared, so the wizard can
|
|
45055
45171
|
* branch on CAP — never on addon name. `device-adoption` integrations
|
|
45056
45172
|
* (Home Assistant, …) route through the broker step (Approach A);
|
|
45057
|
-
* `device-provider` integrations (Reolink/
|
|
45173
|
+
* `device-provider` integrations (Reolink/ONVIF) keep the
|
|
45058
45174
|
* legacy config → discovery flow.
|
|
45059
45175
|
*/
|
|
45060
45176
|
kind: zod.z.enum(["device-adoption", "device-provider"]),
|
|
@@ -48306,9 +48422,11 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
48306
48422
|
});
|
|
48307
48423
|
var RecordingDeviceUsageSchema = zod.z.object({
|
|
48308
48424
|
deviceId: zod.z.number(),
|
|
48425
|
+
/** Bytes the ARCHIVE holds for this camera on this node's resolvable
|
|
48426
|
+
* recordings locations. */
|
|
48309
48427
|
usedBytes: zod.z.number(),
|
|
48310
48428
|
/**
|
|
48311
|
-
* Start of this camera's OLDEST
|
|
48429
|
+
* Start of this camera's OLDEST ARCHIVED segment, across every profile and
|
|
48312
48430
|
* location — the "Oldest footage" column in Recordings → Storage, and the
|
|
48313
48431
|
* only honest answer to "is retention actually holding?" per camera.
|
|
48314
48432
|
*
|
|
@@ -48318,7 +48436,24 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
48318
48436
|
* (types) and the addon ship on different trains, and the addon is usually
|
|
48319
48437
|
* the later of the two.
|
|
48320
48438
|
*/
|
|
48321
|
-
oldestMs: zod.z.number().nullable().optional()
|
|
48439
|
+
oldestMs: zod.z.number().nullable().optional(),
|
|
48440
|
+
/** Segments the archive holds for this camera — the "M" beside `usedBytes`.
|
|
48441
|
+
* OPTIONAL for the same train-skew reason as `oldestMs`. */
|
|
48442
|
+
segments: zod.z.number().optional(),
|
|
48443
|
+
/**
|
|
48444
|
+
* RESIDENCY, not the archive: bytes the recorder process currently holds in
|
|
48445
|
+
* its RAM index — the live tail plus the hours a reader hydrated.
|
|
48446
|
+
*
|
|
48447
|
+
* It answers "what can be served without touching the disk", never "how much
|
|
48448
|
+
* footage this camera has". A UI that renders it must label it as such, and
|
|
48449
|
+
* must never total it as storage. OPTIONAL: a recorder predating D418 omits
|
|
48450
|
+
* it, and so does a node whose ledger could not answer.
|
|
48451
|
+
*/
|
|
48452
|
+
residentBytes: zod.z.number().optional(),
|
|
48453
|
+
/** The residency counterpart of `oldestMs` — the oldest segment currently in
|
|
48454
|
+
* RAM, which on a healthy recorder is minutes ago and means nothing about
|
|
48455
|
+
* retention. `null` = nothing resident. */
|
|
48456
|
+
residentOldestMs: zod.z.number().nullable().optional()
|
|
48322
48457
|
});
|
|
48323
48458
|
var RecordingLocationUsageSchema = zod.z.object({
|
|
48324
48459
|
/** StorageLocation id; null for the legacy/degraded single-root fallback. */
|
|
@@ -48352,6 +48487,17 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
48352
48487
|
totalUsedBytes: zod.z.number(),
|
|
48353
48488
|
devices: zod.z.array(RecordingDeviceUsageSchema),
|
|
48354
48489
|
/**
|
|
48490
|
+
* WHERE `devices[]` came from, so an empty table is never mistaken for empty
|
|
48491
|
+
* disks (D418).
|
|
48492
|
+
*
|
|
48493
|
+
* `archive` = the durable hour ledger answered. `unavailable` = this node
|
|
48494
|
+
* declared no ledger and the recorder REFUSED rather than answering the
|
|
48495
|
+
* question with the resident index (D295 rule 3) — the rows are UNKNOWN, not
|
|
48496
|
+
* zero, and a UI must say so. OPTIONAL: a recorder predating D418 omits it,
|
|
48497
|
+
* and its rows are residency.
|
|
48498
|
+
*/
|
|
48499
|
+
devicesRead: zod.z.enum(["archive", "unavailable"]).optional(),
|
|
48500
|
+
/**
|
|
48355
48501
|
* Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
|
|
48356
48502
|
* of the payload without it: the hub serves this method through a BAKED
|
|
48357
48503
|
* router, so a hub whose framework train predates a change to this array
|
|
@@ -55949,6 +56095,24 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
55949
56095
|
addonId: null,
|
|
55950
56096
|
access: "view"
|
|
55951
56097
|
},
|
|
56098
|
+
"pipelineRunner.getParkedTrackFrame": {
|
|
56099
|
+
capName: "pipeline-runner",
|
|
56100
|
+
capScope: "system",
|
|
56101
|
+
addonId: null,
|
|
56102
|
+
access: "view"
|
|
56103
|
+
},
|
|
56104
|
+
"pipelineRunner.parkTrackFrame": {
|
|
56105
|
+
capName: "pipeline-runner",
|
|
56106
|
+
capScope: "system",
|
|
56107
|
+
addonId: null,
|
|
56108
|
+
access: "create"
|
|
56109
|
+
},
|
|
56110
|
+
"pipelineRunner.releaseParkedTrackFrames": {
|
|
56111
|
+
capName: "pipeline-runner",
|
|
56112
|
+
capScope: "system",
|
|
56113
|
+
addonId: null,
|
|
56114
|
+
access: "create"
|
|
56115
|
+
},
|
|
55952
56116
|
"pipelineRunner.reportMotion": {
|
|
55953
56117
|
capName: "pipeline-runner",
|
|
55954
56118
|
capScope: "system",
|
|
@@ -59226,6 +59390,21 @@ var require_dist_9GQQ9F3s = __commonJS({
|
|
|
59226
59390
|
form: "single",
|
|
59227
59391
|
optional: false
|
|
59228
59392
|
}],
|
|
59393
|
+
"pipelineRunner.getParkedTrackFrame": [{
|
|
59394
|
+
name: "deviceId",
|
|
59395
|
+
form: "single",
|
|
59396
|
+
optional: false
|
|
59397
|
+
}],
|
|
59398
|
+
"pipelineRunner.parkTrackFrame": [{
|
|
59399
|
+
name: "deviceId",
|
|
59400
|
+
form: "single",
|
|
59401
|
+
optional: false
|
|
59402
|
+
}],
|
|
59403
|
+
"pipelineRunner.releaseParkedTrackFrames": [{
|
|
59404
|
+
name: "deviceId",
|
|
59405
|
+
form: "single",
|
|
59406
|
+
optional: false
|
|
59407
|
+
}],
|
|
59229
59408
|
"pipelineRunner.reportMotion": [{
|
|
59230
59409
|
name: "deviceId",
|
|
59231
59410
|
form: "single",
|
|
@@ -61308,7 +61487,7 @@ var require_alerts_addon = __commonJS({
|
|
|
61308
61487
|
[Symbol.toStringTag]: { value: "Module" }
|
|
61309
61488
|
});
|
|
61310
61489
|
require_chunk_Cek0wNdY();
|
|
61311
|
-
var require_dist10 =
|
|
61490
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
61312
61491
|
function selectExpired(alerts, cutoffMs) {
|
|
61313
61492
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
61314
61493
|
}
|
|
@@ -62127,7 +62306,7 @@ var require_console_logging = __commonJS({
|
|
|
62127
62306
|
[Symbol.toStringTag]: { value: "Module" }
|
|
62128
62307
|
});
|
|
62129
62308
|
require_chunk_Cek0wNdY();
|
|
62130
|
-
var require_dist10 =
|
|
62309
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
62131
62310
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
62132
62311
|
var LEVEL_RANK = {
|
|
62133
62312
|
debug: 0,
|
|
@@ -62221,7 +62400,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
62221
62400
|
"use strict";
|
|
62222
62401
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
62223
62402
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
62224
|
-
var require_dist10 =
|
|
62403
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
62225
62404
|
var node_crypto = __require("crypto");
|
|
62226
62405
|
var node_fs_promises = __require("fs/promises");
|
|
62227
62406
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -63118,11 +63297,11 @@ var require_core_blocks = __commonJS({
|
|
|
63118
63297
|
}
|
|
63119
63298
|
});
|
|
63120
63299
|
|
|
63121
|
-
// ../system/dist/retired-settings-keys-
|
|
63122
|
-
var
|
|
63123
|
-
"../system/dist/retired-settings-keys-
|
|
63300
|
+
// ../system/dist/retired-settings-keys-CXLIB19R.js
|
|
63301
|
+
var require_retired_settings_keys_CXLIB19R = __commonJS({
|
|
63302
|
+
"../system/dist/retired-settings-keys-CXLIB19R.js"(exports) {
|
|
63124
63303
|
"use strict";
|
|
63125
|
-
var require_dist10 =
|
|
63304
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
63126
63305
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
63127
63306
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
63128
63307
|
return raw === "" || raw === "hub";
|
|
@@ -65357,8 +65536,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
65357
65536
|
[Symbol.toStringTag]: { value: "Module" }
|
|
65358
65537
|
});
|
|
65359
65538
|
require_chunk_Cek0wNdY();
|
|
65360
|
-
var require_dist10 =
|
|
65361
|
-
var require_retired_settings_keys =
|
|
65539
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
65540
|
+
var require_retired_settings_keys = require_retired_settings_keys_CXLIB19R();
|
|
65362
65541
|
var node_crypto = __require("crypto");
|
|
65363
65542
|
var _camstack_types_node = require_node();
|
|
65364
65543
|
var JOB_HISTORY = 20;
|
|
@@ -70983,7 +71162,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
70983
71162
|
[Symbol.toStringTag]: { value: "Module" }
|
|
70984
71163
|
});
|
|
70985
71164
|
require_chunk_Cek0wNdY();
|
|
70986
|
-
var require_dist10 =
|
|
71165
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
70987
71166
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
70988
71167
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
70989
71168
|
var HubForwarderDestination = class {
|
|
@@ -71120,7 +71299,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
71120
71299
|
"use strict";
|
|
71121
71300
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
71122
71301
|
require_chunk_Cek0wNdY();
|
|
71123
|
-
var require_dist10 =
|
|
71302
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
71124
71303
|
var NO_DEVICES = "liveness:no-devices";
|
|
71125
71304
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
71126
71305
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -71316,7 +71495,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
71316
71495
|
[Symbol.toStringTag]: { value: "Module" }
|
|
71317
71496
|
});
|
|
71318
71497
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
71319
|
-
var require_dist10 =
|
|
71498
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
71320
71499
|
var node_crypto = __require("crypto");
|
|
71321
71500
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
71322
71501
|
var crypto$1 = __require("crypto");
|
|
@@ -79129,7 +79308,7 @@ var require_loki_logging = __commonJS({
|
|
|
79129
79308
|
[Symbol.toStringTag]: { value: "Module" }
|
|
79130
79309
|
});
|
|
79131
79310
|
require_chunk_Cek0wNdY();
|
|
79132
|
-
var require_dist10 =
|
|
79311
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
79133
79312
|
function sanitizeLabelName(raw) {
|
|
79134
79313
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
79135
79314
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -79694,7 +79873,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
79694
79873
|
[Symbol.toStringTag]: { value: "Module" }
|
|
79695
79874
|
});
|
|
79696
79875
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
79697
|
-
var require_dist10 =
|
|
79876
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
79698
79877
|
var node_fs_promises = __require("fs/promises");
|
|
79699
79878
|
var node_child_process = __require("child_process");
|
|
79700
79879
|
var node_util = __require("util");
|
|
@@ -82278,7 +82457,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
82278
82457
|
[Symbol.toStringTag]: { value: "Module" }
|
|
82279
82458
|
});
|
|
82280
82459
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
82281
|
-
var require_dist10 =
|
|
82460
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
82282
82461
|
var node_crypto = __require("crypto");
|
|
82283
82462
|
var node_fs_promises = __require("fs/promises");
|
|
82284
82463
|
var node_path = __require("path");
|
|
@@ -83394,8 +83573,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
83394
83573
|
[Symbol.toStringTag]: { value: "Module" }
|
|
83395
83574
|
});
|
|
83396
83575
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
83397
|
-
var require_dist10 =
|
|
83398
|
-
var require_retired_settings_keys =
|
|
83576
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
83577
|
+
var require_retired_settings_keys = require_retired_settings_keys_CXLIB19R();
|
|
83399
83578
|
var node_crypto = __require("crypto");
|
|
83400
83579
|
var node_fs = __require("fs");
|
|
83401
83580
|
var node_module = __require("module");
|
|
@@ -85899,7 +86078,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
85899
86078
|
[Symbol.toStringTag]: { value: "Module" }
|
|
85900
86079
|
});
|
|
85901
86080
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
85902
|
-
var require_dist10 =
|
|
86081
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
85903
86082
|
var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
|
|
85904
86083
|
var zod = require_zod();
|
|
85905
86084
|
var node_crypto = __require("crypto");
|
|
@@ -89549,7 +89728,7 @@ var require_system_config_addon = __commonJS({
|
|
|
89549
89728
|
[Symbol.toStringTag]: { value: "Module" }
|
|
89550
89729
|
});
|
|
89551
89730
|
require_chunk_Cek0wNdY();
|
|
89552
|
-
var require_dist10 =
|
|
89731
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
89553
89732
|
var SECTION_TITLES = {
|
|
89554
89733
|
server: "Server",
|
|
89555
89734
|
auth: "Authentication"
|
|
@@ -107610,7 +107789,7 @@ var require_winston_logging = __commonJS({
|
|
|
107610
107789
|
[Symbol.toStringTag]: { value: "Module" }
|
|
107611
107790
|
});
|
|
107612
107791
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
107613
|
-
var require_dist10 =
|
|
107792
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
107614
107793
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
107615
107794
|
var node_path = __require("path");
|
|
107616
107795
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -107747,9 +107926,9 @@ var require_winston_logging = __commonJS({
|
|
|
107747
107926
|
}
|
|
107748
107927
|
});
|
|
107749
107928
|
|
|
107750
|
-
// ../system/dist/
|
|
107751
|
-
var
|
|
107752
|
-
"../system/dist/
|
|
107929
|
+
// ../system/dist/event-loop-stall-monitor-DM9OAzy8.js
|
|
107930
|
+
var require_event_loop_stall_monitor_DM9OAzy8 = __commonJS({
|
|
107931
|
+
"../system/dist/event-loop-stall-monitor-DM9OAzy8.js"(exports) {
|
|
107753
107932
|
"use strict";
|
|
107754
107933
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
107755
107934
|
var node_crypto = __require("crypto");
|
|
@@ -107760,6 +107939,7 @@ var require_file_data_plane_DO8KbxCe = __commonJS({
|
|
|
107760
107939
|
node_fs = require_chunk.__toESM(node_fs);
|
|
107761
107940
|
var node_http = __require("http");
|
|
107762
107941
|
var node_zlib = __require("zlib");
|
|
107942
|
+
var node_perf_hooks = __require("perf_hooks");
|
|
107763
107943
|
function isNonEmptyFile(filePath) {
|
|
107764
107944
|
return node_fs.existsSync(filePath) && node_fs.statSync(filePath).size > 0;
|
|
107765
107945
|
}
|
|
@@ -108547,12 +108727,98 @@ var require_file_data_plane_DO8KbxCe = __commonJS({
|
|
|
108547
108727
|
(0, node_fs.createReadStream)(absPath).pipe(res);
|
|
108548
108728
|
};
|
|
108549
108729
|
}
|
|
108730
|
+
var STALL_TICK_MS = 1e3;
|
|
108731
|
+
var STALL_REPORT_MS = 2e3;
|
|
108732
|
+
function attributeStall(stallMs, gcMs, gcCount, longestGcMs) {
|
|
108733
|
+
const share = stallMs > 0 ? gcMs / stallMs : 0;
|
|
108734
|
+
return {
|
|
108735
|
+
stallMs,
|
|
108736
|
+
gcMs,
|
|
108737
|
+
gcCount,
|
|
108738
|
+
longestGcMs,
|
|
108739
|
+
cause: share >= 0.7 ? "gc" : share <= 0.2 ? "synchronous-block" : "mixed"
|
|
108740
|
+
};
|
|
108741
|
+
}
|
|
108742
|
+
function startEventLoopStallMonitor(logger, reportThresholdMs = STALL_REPORT_MS) {
|
|
108743
|
+
let gc = {
|
|
108744
|
+
totalMs: 0,
|
|
108745
|
+
count: 0,
|
|
108746
|
+
longestMs: 0
|
|
108747
|
+
};
|
|
108748
|
+
let observer = null;
|
|
108749
|
+
try {
|
|
108750
|
+
observer = new node_perf_hooks.PerformanceObserver((list) => {
|
|
108751
|
+
for (const entry of list.getEntries()) {
|
|
108752
|
+
gc.totalMs += entry.duration;
|
|
108753
|
+
gc.count += 1;
|
|
108754
|
+
if (entry.duration > gc.longestMs) gc.longestMs = entry.duration;
|
|
108755
|
+
}
|
|
108756
|
+
});
|
|
108757
|
+
observer.observe({ entryTypes: ["gc"] });
|
|
108758
|
+
} catch {
|
|
108759
|
+
observer = null;
|
|
108760
|
+
}
|
|
108761
|
+
let expected = Date.now() + STALL_TICK_MS;
|
|
108762
|
+
const timer = setInterval(() => {
|
|
108763
|
+
const now = Date.now();
|
|
108764
|
+
const lateBy = now - expected;
|
|
108765
|
+
const window2 = gc;
|
|
108766
|
+
gc = {
|
|
108767
|
+
totalMs: 0,
|
|
108768
|
+
count: 0,
|
|
108769
|
+
longestMs: 0
|
|
108770
|
+
};
|
|
108771
|
+
expected = now + STALL_TICK_MS;
|
|
108772
|
+
if (lateBy < reportThresholdMs) return;
|
|
108773
|
+
const verdict = attributeStall(lateBy, Math.round(window2.totalMs), window2.count, Math.round(window2.longestMs));
|
|
108774
|
+
const mem = process.memoryUsage();
|
|
108775
|
+
logger.warn("event loop stalled", { meta: {
|
|
108776
|
+
stallMs: verdict.stallMs,
|
|
108777
|
+
cause: verdict.cause,
|
|
108778
|
+
gcMs: verdict.gcMs,
|
|
108779
|
+
gcCount: verdict.gcCount,
|
|
108780
|
+
longestGcMs: verdict.longestGcMs,
|
|
108781
|
+
gcObserved: observer !== null,
|
|
108782
|
+
heapUsedMb: Math.round(mem.heapUsed / 1e6),
|
|
108783
|
+
heapTotalMb: Math.round(mem.heapTotal / 1e6),
|
|
108784
|
+
rssMb: Math.round(mem.rss / 1e6),
|
|
108785
|
+
externalMb: Math.round(mem.external / 1e6),
|
|
108786
|
+
arrayBuffersMb: Math.round(mem.arrayBuffers / 1e6)
|
|
108787
|
+
} });
|
|
108788
|
+
}, STALL_TICK_MS);
|
|
108789
|
+
timer.unref?.();
|
|
108790
|
+
let stopped = false;
|
|
108791
|
+
return () => {
|
|
108792
|
+
if (stopped) return;
|
|
108793
|
+
stopped = true;
|
|
108794
|
+
clearInterval(timer);
|
|
108795
|
+
observer?.disconnect();
|
|
108796
|
+
};
|
|
108797
|
+
}
|
|
108550
108798
|
Object.defineProperty(exports, "ModelDownloadService", {
|
|
108551
108799
|
enumerable: true,
|
|
108552
108800
|
get: function() {
|
|
108553
108801
|
return ModelDownloadService;
|
|
108554
108802
|
}
|
|
108555
108803
|
});
|
|
108804
|
+
Object.defineProperty(exports, "STALL_REPORT_MS", {
|
|
108805
|
+
enumerable: true,
|
|
108806
|
+
get: function() {
|
|
108807
|
+
return STALL_REPORT_MS;
|
|
108808
|
+
}
|
|
108809
|
+
});
|
|
108810
|
+
Object.defineProperty(exports, "STALL_TICK_MS", {
|
|
108811
|
+
enumerable: true,
|
|
108812
|
+
get: function() {
|
|
108813
|
+
return STALL_TICK_MS;
|
|
108814
|
+
}
|
|
108815
|
+
});
|
|
108816
|
+
Object.defineProperty(exports, "attributeStall", {
|
|
108817
|
+
enumerable: true,
|
|
108818
|
+
get: function() {
|
|
108819
|
+
return attributeStall;
|
|
108820
|
+
}
|
|
108821
|
+
});
|
|
108556
108822
|
Object.defineProperty(exports, "collectModelFiles", {
|
|
108557
108823
|
enumerable: true,
|
|
108558
108824
|
get: function() {
|
|
@@ -108637,6 +108903,12 @@ var require_file_data_plane_DO8KbxCe = __commonJS({
|
|
|
108637
108903
|
return resolveFilePath;
|
|
108638
108904
|
}
|
|
108639
108905
|
});
|
|
108906
|
+
Object.defineProperty(exports, "startEventLoopStallMonitor", {
|
|
108907
|
+
enumerable: true,
|
|
108908
|
+
get: function() {
|
|
108909
|
+
return startEventLoopStallMonitor;
|
|
108910
|
+
}
|
|
108911
|
+
});
|
|
108640
108912
|
}
|
|
108641
108913
|
});
|
|
108642
108914
|
|
|
@@ -109386,9 +109658,9 @@ ${(0, node_fs.readFileSync)(ca.caCertPath, "utf-8").trimEnd()}
|
|
|
109386
109658
|
}
|
|
109387
109659
|
});
|
|
109388
109660
|
|
|
109389
|
-
// ../types/dist/event-category-
|
|
109390
|
-
var
|
|
109391
|
-
"../types/dist/event-category-
|
|
109661
|
+
// ../types/dist/event-category-BNJ9EE5B.js
|
|
109662
|
+
var require_event_category_BNJ9EE5B = __commonJS({
|
|
109663
|
+
"../types/dist/event-category-BNJ9EE5B.js"(exports) {
|
|
109392
109664
|
"use strict";
|
|
109393
109665
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
109394
109666
|
EventCategory2["SystemBoot"] = "system.boot";
|
|
@@ -109520,7 +109792,6 @@ var require_event_category_BVo6ta6 = __commonJS({
|
|
|
109520
109792
|
EventCategory2["PipelineAnalyticsPackagePickedUp"] = "pipeline-analytics.package-picked-up";
|
|
109521
109793
|
EventCategory2["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
109522
109794
|
EventCategory2["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
109523
|
-
EventCategory2["FrigateLiveEvent"] = "frigate.live-event";
|
|
109524
109795
|
EventCategory2["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
109525
109796
|
EventCategory2["StreamOnline"] = "stream.online";
|
|
109526
109797
|
EventCategory2["StreamOffline"] = "stream.offline";
|
|
@@ -109555,11 +109826,11 @@ var require_event_category_BVo6ta6 = __commonJS({
|
|
|
109555
109826
|
}
|
|
109556
109827
|
});
|
|
109557
109828
|
|
|
109558
|
-
// ../types/dist/sleep-
|
|
109559
|
-
var
|
|
109560
|
-
"../types/dist/sleep-
|
|
109829
|
+
// ../types/dist/sleep-CTHjJilA.js
|
|
109830
|
+
var require_sleep_CTHjJilA = __commonJS({
|
|
109831
|
+
"../types/dist/sleep-CTHjJilA.js"(exports) {
|
|
109561
109832
|
"use strict";
|
|
109562
|
-
var require_event_category =
|
|
109833
|
+
var require_event_category = require_event_category_BNJ9EE5B();
|
|
109563
109834
|
var zod = require_zod();
|
|
109564
109835
|
var WELL_KNOWN_TABS = [
|
|
109565
109836
|
{
|
|
@@ -112579,7 +112850,10 @@ var require_sleep_Bo9cUOXp = __commonJS({
|
|
|
112579
112850
|
pipelineRunner: {
|
|
112580
112851
|
detachCamera: (input) => dispatchSystem("pipelineRunner", "detachCamera", "mutation", input),
|
|
112581
112852
|
getCameraMetrics: (input) => dispatchSystem("pipelineRunner", "getCameraMetrics", "query", input),
|
|
112582
|
-
runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input)
|
|
112853
|
+
runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input),
|
|
112854
|
+
parkTrackFrame: (input) => dispatchSystem("pipelineRunner", "parkTrackFrame", "mutation", input),
|
|
112855
|
+
getParkedTrackFrame: (input) => dispatchSystem("pipelineRunner", "getParkedTrackFrame", "query", input),
|
|
112856
|
+
releaseParkedTrackFrames: (input) => dispatchSystem("pipelineRunner", "releaseParkedTrackFrames", "mutation", input)
|
|
112583
112857
|
},
|
|
112584
112858
|
plateGallery: {
|
|
112585
112859
|
listPlates: (input) => dispatchSystem("plateGallery", "listPlates", "query", input),
|
|
@@ -113290,8 +113564,8 @@ var require_addon = __commonJS({
|
|
|
113290
113564
|
"../types/dist/addon.js"(exports) {
|
|
113291
113565
|
"use strict";
|
|
113292
113566
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
113293
|
-
var require_event_category =
|
|
113294
|
-
var require_sleep =
|
|
113567
|
+
var require_event_category = require_event_category_BNJ9EE5B();
|
|
113568
|
+
var require_sleep = require_sleep_CTHjJilA();
|
|
113295
113569
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
113296
113570
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
113297
113571
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -132224,7 +132498,7 @@ var require_dist3 = __commonJS({
|
|
|
132224
132498
|
"use strict";
|
|
132225
132499
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
132226
132500
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
132227
|
-
var require_dist10 =
|
|
132501
|
+
var require_dist10 = require_dist_DYWqXngV();
|
|
132228
132502
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
132229
132503
|
require_alerts();
|
|
132230
132504
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -132249,7 +132523,7 @@ var require_dist3 = __commonJS({
|
|
|
132249
132523
|
var require_builtins_system_config_system_config_addon = require_system_config_addon();
|
|
132250
132524
|
require_system_config();
|
|
132251
132525
|
var require_builtins_winston_logging_index = require_winston_logging();
|
|
132252
|
-
var
|
|
132526
|
+
var require_event_loop_stall_monitor = require_event_loop_stall_monitor_DM9OAzy8();
|
|
132253
132527
|
var require_tls$1 = require_tls_BxQlomxd();
|
|
132254
132528
|
var require_manifest_system_deps = require_manifest_system_deps_DvY1bY_n();
|
|
132255
132529
|
var require_resource_monitor = require_resource_monitor_CdnzxBLP();
|
|
@@ -213019,7 +213293,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213019
213293
|
exports.LokiLoggingAddon = require_builtins_loki_logging_index.LokiLoggingAddon$1;
|
|
213020
213294
|
exports.MAX_LEAF_VALIDITY_DAYS = require_tls$1.MAX_LEAF_VALIDITY_DAYS;
|
|
213021
213295
|
exports.METHOD_ACCESS_MAP = require_dist10.METHOD_ACCESS_MAP;
|
|
213022
|
-
exports.ModelDownloadService =
|
|
213296
|
+
exports.ModelDownloadService = require_event_loop_stall_monitor.ModelDownloadService;
|
|
213023
213297
|
exports.NATIVE_PROVIDER_SERVICE_INFIX = require_manifest_system_deps.NATIVE_PROVIDER_SERVICE_INFIX;
|
|
213024
213298
|
exports.NATIVE_SCAN_DEPTH = NATIVE_SCAN_DEPTH;
|
|
213025
213299
|
exports.NativeMetricsAddon = require_builtins_native_metrics_native_metrics_addon.default;
|
|
@@ -213049,6 +213323,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213049
213323
|
exports.RingBuffer = RingBuffer;
|
|
213050
213324
|
exports.SERVER_AUTH_OID = require_tls$1.SERVER_AUTH_OID;
|
|
213051
213325
|
exports.SOCKET_PLANE_TOP_N = require_manifest_system_deps.SOCKET_PLANE_TOP_N;
|
|
213326
|
+
exports.STALL_REPORT_MS = require_event_loop_stall_monitor.STALL_REPORT_MS;
|
|
213327
|
+
exports.STALL_TICK_MS = require_event_loop_stall_monitor.STALL_TICK_MS;
|
|
213052
213328
|
exports.ScopedLogger = ScopedLogger;
|
|
213053
213329
|
exports.ScopedTokenManager = require_builtins_local_auth_local_auth_addon.ScopedTokenManager;
|
|
213054
213330
|
exports.SocketChannel = require_manifest_system_deps.SocketChannel;
|
|
@@ -213076,6 +213352,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213076
213352
|
exports.addonSettingsCapability = require_dist10.addonSettingsCapability;
|
|
213077
213353
|
exports.allFamiliesListenHost = require_tls$1.allFamiliesListenHost;
|
|
213078
213354
|
exports.applyLanHttp = require_tls$1.applyLanHttp;
|
|
213355
|
+
exports.attributeStall = require_event_loop_stall_monitor.attributeStall;
|
|
213079
213356
|
exports.bindPendingLanHttp = require_tls$1.bindPendingLanHttp;
|
|
213080
213357
|
exports.bootstrapSchema = bootstrapSchema;
|
|
213081
213358
|
exports.brokerCallForCap = require_manifest_system_deps.brokerCallForCap;
|
|
@@ -213108,14 +213385,14 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213108
213385
|
exports.clusterEventTopic = require_manifest_system_deps.clusterEventTopic;
|
|
213109
213386
|
exports.clusterSecretMatches = clusterSecretMatches;
|
|
213110
213387
|
exports.collectCertIdentity = require_tls$1.collectCertIdentity;
|
|
213111
|
-
exports.collectModelFiles =
|
|
213112
|
-
exports.contentTypeFor =
|
|
213388
|
+
exports.collectModelFiles = require_event_loop_stall_monitor.collectModelFiles;
|
|
213389
|
+
exports.contentTypeFor = require_event_loop_stall_monitor.contentTypeFor;
|
|
213113
213390
|
exports.copyDirRecursive = copyDirRecursive;
|
|
213114
213391
|
exports.copyExtraFileDirs = copyExtraFileDirs;
|
|
213115
213392
|
exports.createAddonContext = require_manifest_system_deps.createAddonContext;
|
|
213116
213393
|
exports.createAddonDataPlaneFacility = require_manifest_system_deps.createAddonDataPlaneFacility;
|
|
213117
213394
|
exports.createAddonService = require_manifest_system_deps.createAddonService;
|
|
213118
|
-
exports.createAuthenticatedFileServer =
|
|
213395
|
+
exports.createAuthenticatedFileServer = require_event_loop_stall_monitor.createAuthenticatedFileServer;
|
|
213119
213396
|
exports.createBroker = createBroker2;
|
|
213120
213397
|
exports.createBrokerDeviceManagerApi = require_manifest_system_deps.createBrokerDeviceManagerApi;
|
|
213121
213398
|
exports.createCoreCapService = createCoreCapService;
|
|
@@ -213123,7 +213400,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213123
213400
|
exports.createDoorSettingsView = createDoorSettingsView;
|
|
213124
213401
|
exports.createEventPlaneMeter = require_manifest_system_deps.createEventPlaneMeter;
|
|
213125
213402
|
exports.createEventPlaneReader = require_manifest_system_deps.createEventPlaneReader;
|
|
213126
|
-
exports.createFileDataPlaneHandler =
|
|
213403
|
+
exports.createFileDataPlaneHandler = require_event_loop_stall_monitor.createFileDataPlaneHandler;
|
|
213127
213404
|
exports.createHubCapForwardService = require_hub_cap_forward.createHubCapForwardService;
|
|
213128
213405
|
exports.createHubService = createHubService;
|
|
213129
213406
|
exports.createKernelHwAccel = require_manifest_system_deps.createKernelHwAccel;
|
|
@@ -213144,7 +213421,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213144
213421
|
exports.createUdsLogger = require_manifest_system_deps.createUdsLogger;
|
|
213145
213422
|
exports.createUdsLoggerWithControl = require_manifest_system_deps.createUdsLoggerWithControl;
|
|
213146
213423
|
exports.createV8Reclaimer = require_manifest_system_deps.createV8Reclaimer;
|
|
213147
|
-
exports.deleteModelFromDisk =
|
|
213424
|
+
exports.deleteModelFromDisk = require_event_loop_stall_monitor.deleteModelFromDisk;
|
|
213148
213425
|
exports.deriveAgentListenPort = deriveAgentListenPort;
|
|
213149
213426
|
exports.describeProviderKindDrift = describeProviderKindDrift;
|
|
213150
213427
|
exports.describeRss = require_manifest_system_deps.describeRss;
|
|
@@ -213157,8 +213434,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213157
213434
|
return _camstack_types_node.downloadBinary;
|
|
213158
213435
|
}
|
|
213159
213436
|
});
|
|
213160
|
-
exports.downloadFile =
|
|
213161
|
-
exports.downloadModel =
|
|
213437
|
+
exports.downloadFile = require_event_loop_stall_monitor.downloadFile;
|
|
213438
|
+
exports.downloadModel = require_event_loop_stall_monitor.downloadModel;
|
|
213162
213439
|
exports.emitDownForOwnedCaps = require_dist10.emitDownForOwnedCaps;
|
|
213163
213440
|
exports.emitHeapDiagnosticReport = require_manifest_system_deps.emitHeapDiagnosticReport;
|
|
213164
213441
|
exports.encodeFrame = require_manifest_system_deps.encodeFrame;
|
|
@@ -213177,7 +213454,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213177
213454
|
}
|
|
213178
213455
|
});
|
|
213179
213456
|
exports.ensureLibraryBuilt = ensureLibraryBuilt;
|
|
213180
|
-
exports.ensureModel =
|
|
213457
|
+
exports.ensureModel = require_event_loop_stall_monitor.ensureModel;
|
|
213181
213458
|
exports.ensureNativePrebuilds = ensureNativePrebuilds;
|
|
213182
213459
|
Object.defineProperty(exports, "ensurePython", {
|
|
213183
213460
|
enumerable: true,
|
|
@@ -213188,7 +213465,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213188
213465
|
exports.ensureTlsCert = require_tls$1.ensureTlsCert;
|
|
213189
213466
|
exports.evaluateExistingCert = require_tls$1.evaluateExistingCert;
|
|
213190
213467
|
exports.expandCapMethods = require_dist10.expandCapMethods;
|
|
213191
|
-
exports.fetchJson =
|
|
213468
|
+
exports.fetchJson = require_event_loop_stall_monitor.fetchJson;
|
|
213192
213469
|
Object.defineProperty(exports, "findInPath", {
|
|
213193
213470
|
enumerable: true,
|
|
213194
213471
|
get: function() {
|
|
@@ -213208,7 +213485,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213208
213485
|
}
|
|
213209
213486
|
});
|
|
213210
213487
|
exports.getLoggingGate = getLoggingGate;
|
|
213211
|
-
exports.getModelFilePath =
|
|
213488
|
+
exports.getModelFilePath = require_event_loop_stall_monitor.getModelFilePath;
|
|
213212
213489
|
exports.getMoleculerEventStats = require_manifest_system_deps.getMoleculerEventStats;
|
|
213213
213490
|
exports.getOrInitReadinessRegistry = require_manifest_system_deps.getOrInitReadinessRegistry;
|
|
213214
213491
|
exports.getOrInitReadinessRegistryForClient = require_manifest_system_deps.getOrInitReadinessRegistryForClient;
|
|
@@ -213254,7 +213531,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213254
213531
|
exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
|
|
213255
213532
|
exports.isCollectionArrayMethod = require_dist10.isCollectionArrayMethod;
|
|
213256
213533
|
exports.isInfraCapability = isInfraCapability;
|
|
213257
|
-
exports.isModelDownloaded =
|
|
213534
|
+
exports.isModelDownloaded = require_event_loop_stall_monitor.isModelDownloaded;
|
|
213258
213535
|
exports.isSourceNewer = isSourceNewer;
|
|
213259
213536
|
exports.isolatedBuiltinPhase = isolatedBuiltinPhase;
|
|
213260
213537
|
exports.loadTlsCert = require_tls$1.loadTlsCert;
|
|
@@ -213263,9 +213540,9 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213263
213540
|
exports.mountNativeCapService = require_manifest_system_deps.mountNativeCapService;
|
|
213264
213541
|
exports.nextRssBudgetState = require_manifest_system_deps.nextRssBudgetState;
|
|
213265
213542
|
exports.parseCapAction = require_manifest_system_deps.parseCapAction;
|
|
213266
|
-
exports.parseRangeHeader =
|
|
213543
|
+
exports.parseRangeHeader = require_event_loop_stall_monitor.parseRangeHeader;
|
|
213267
213544
|
exports.parseRssBudgetMb = require_manifest_system_deps.parseRssBudgetMb;
|
|
213268
|
-
exports.parseTokenizedUrl =
|
|
213545
|
+
exports.parseTokenizedUrl = require_event_loop_stall_monitor.parseTokenizedUrl;
|
|
213269
213546
|
exports.partitionIsolatedBuiltinIds = partitionIsolatedBuiltinIds;
|
|
213270
213547
|
exports.proxyToUpstream = proxyToUpstream;
|
|
213271
213548
|
exports.quarantineAddonResidue = quarantineAddonResidue;
|
|
@@ -213282,7 +213559,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213282
213559
|
exports.registerEventBusService = require_manifest_system_deps.registerEventBusService;
|
|
213283
213560
|
exports.registerLanHttpHandler = require_tls$1.registerLanHttpHandler;
|
|
213284
213561
|
exports.reissueTlsLeaf = require_tls$1.reissueTlsLeaf;
|
|
213285
|
-
exports.resolveFilePath =
|
|
213562
|
+
exports.resolveFilePath = require_event_loop_stall_monitor.resolveFilePath;
|
|
213286
213563
|
exports.resolveHwAccel = require_manifest_system_deps.resolveHwAccel;
|
|
213287
213564
|
exports.resolveNpmInvocation = require_manifest_system_deps.resolveNpmInvocation;
|
|
213288
213565
|
exports.runHubAddonBoot = runHubAddonBoot;
|
|
@@ -213300,6 +213577,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
|
|
|
213300
213577
|
exports.shouldReclaim = require_manifest_system_deps.shouldReclaim;
|
|
213301
213578
|
exports.socketDirectionBytes = require_manifest_system_deps.socketDirectionBytes;
|
|
213302
213579
|
exports.socketDirectionMessages = require_manifest_system_deps.socketDirectionMessages;
|
|
213580
|
+
exports.startEventLoopStallMonitor = require_event_loop_stall_monitor.startEventLoopStallMonitor;
|
|
213303
213581
|
exports.startHeapWatch = require_manifest_system_deps.startHeapWatch;
|
|
213304
213582
|
exports.startRunnerHeapWatch = require_manifest_system_deps.startRunnerHeapWatch;
|
|
213305
213583
|
exports.strandedMb = require_manifest_system_deps.strandedMb;
|
|
@@ -213320,7 +213598,7 @@ var require_enums = __commonJS({
|
|
|
213320
213598
|
"../types/dist/enums.js"(exports) {
|
|
213321
213599
|
"use strict";
|
|
213322
213600
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
213323
|
-
var require_event_category =
|
|
213601
|
+
var require_event_category = require_event_category_BNJ9EE5B();
|
|
213324
213602
|
var EventSourceType = /* @__PURE__ */ (function(EventSourceType2) {
|
|
213325
213603
|
EventSourceType2["Addon"] = "addon";
|
|
213326
213604
|
EventSourceType2["Core"] = "core";
|
|
@@ -213340,8 +213618,8 @@ var require_dist4 = __commonJS({
|
|
|
213340
213618
|
"../types/dist/index.js"(exports) {
|
|
213341
213619
|
"use strict";
|
|
213342
213620
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
213343
|
-
var require_event_category =
|
|
213344
|
-
var require_sleep =
|
|
213621
|
+
var require_event_category = require_event_category_BNJ9EE5B();
|
|
213622
|
+
var require_sleep = require_sleep_CTHjJilA();
|
|
213345
213623
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
213346
213624
|
var require_enums2 = require_enums();
|
|
213347
213625
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -220649,7 +220927,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
220649
220927
|
var SourceInfoSchema = zod.z.object({
|
|
220650
220928
|
/** Live dispatch key — mutable when the source system allows rename. */
|
|
220651
220929
|
id: zod.z.string(),
|
|
220652
|
-
/** Source system tag — e.g. 'homeassistant' | 'reolink' | '
|
|
220930
|
+
/** Source system tag — e.g. 'homeassistant' | 'reolink' | 'onvif'. */
|
|
220653
220931
|
system: zod.z.string(),
|
|
220654
220932
|
/** Immutable upstream identifier when available (HA `unique_id`, … ).
|
|
220655
220933
|
* Used to detect rename when `id` changes. */
|
|
@@ -225650,7 +225928,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225650
225928
|
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
225651
225929
|
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
225652
225930
|
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
225653
|
-
* 30 is
|
|
225931
|
+
* 30 s is a widely shipped value for the same decision.
|
|
225654
225932
|
*
|
|
225655
225933
|
* ### What it replaces
|
|
225656
225934
|
*
|
|
@@ -227949,6 +228227,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
227949
228227
|
/** Zone display name at crossing time (falls back to the id). */
|
|
227950
228228
|
zoneName: zod.z.string().optional()
|
|
227951
228229
|
});
|
|
228230
|
+
var ZoneOverlapSchema = zod.z.object({
|
|
228231
|
+
zoneId: zod.z.string(),
|
|
228232
|
+
zoneName: zod.z.string().optional(),
|
|
228233
|
+
/** Percentage of the BOX area inside the zone, 0–100. */
|
|
228234
|
+
overlapPct: zod.z.number()
|
|
228235
|
+
});
|
|
227952
228236
|
var ObjectEventSchema = zod.z.object({
|
|
227953
228237
|
...BaseEventFields,
|
|
227954
228238
|
kind: zod.z.literal("object"),
|
|
@@ -227973,6 +228257,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
227973
228257
|
bbox: BoundingBoxSchema.optional(),
|
|
227974
228258
|
/** Heavy JSON — omitted in slim projection. */
|
|
227975
228259
|
zones: zod.z.array(zod.z.string()).readonly().optional(),
|
|
228260
|
+
/**
|
|
228261
|
+
* How far inside each stamped zone the box actually was, as a percentage of
|
|
228262
|
+
* the BOX area.
|
|
228263
|
+
*
|
|
228264
|
+
* Membership alone cannot express "at least a third of it inside", which is
|
|
228265
|
+
* the bar an operator argues with — and the number already existed: the
|
|
228266
|
+
* engine computed it, the pipeline logged it, and then discarded it. It
|
|
228267
|
+
* matters most on the events that carry no track, where a rule has nothing
|
|
228268
|
+
* else to judge by.
|
|
228269
|
+
*/
|
|
228270
|
+
zoneOverlaps: zod.z.array(ZoneOverlapSchema).readonly().optional(),
|
|
228271
|
+
/**
|
|
228272
|
+
* Present when this event describes a detection the TRACKER refused, so it
|
|
228273
|
+
* has no track and never will.
|
|
228274
|
+
*
|
|
228275
|
+
* A zone-scoped immediate rule asks "is there an animal in the flowerbed
|
|
228276
|
+
* NOW?"; tracking answers a different question ("is this the same subject as
|
|
228277
|
+
* before?") whose confirmation threshold presumes continuity. On 2026-09-09 a
|
|
228278
|
+
* dog at 0.7729, 100% inside a watched zone, was refused three times in six
|
|
228279
|
+
* seconds with three different candidate ids — seven analysed frames in the
|
|
228280
|
+
* window, the subject in a handful of them, metres apart — and produced no
|
|
228281
|
+
* event at all.
|
|
228282
|
+
*
|
|
228283
|
+
* It is NAMED rather than merely implied by a missing `trackId`: an event
|
|
228284
|
+
* with no track and no reason is indistinguishable from a track whose media
|
|
228285
|
+
* went missing, and a consumer that asks this one for a best shot or a
|
|
228286
|
+
* history is asking for something that never existed.
|
|
228287
|
+
*/
|
|
228288
|
+
spawnRefused: zod.z.string().optional(),
|
|
227976
228289
|
/** Omitted in slim projection. */
|
|
227977
228290
|
state: TrackStateSchema.optional(),
|
|
227978
228291
|
/**
|
|
@@ -229455,6 +229768,35 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
229455
229768
|
*/
|
|
229456
229769
|
tier: zod.z.enum(["native", "ram-fullframe"]).optional()
|
|
229457
229770
|
});
|
|
229771
|
+
var ParkedFrameKindSchema = zod.z.enum(["keyFrame", "thumbnail"]);
|
|
229772
|
+
var ParkRefusalSchema = zod.z.enum(["handle-gone", "encode-failed"]);
|
|
229773
|
+
var ParkTrackFrameResultSchema = zod.z.discriminatedUnion("parked", [zod.z.object({
|
|
229774
|
+
parked: zod.z.literal(true),
|
|
229775
|
+
/** The node holding the parcel — what a later retrieval must be pinned to. */
|
|
229776
|
+
nodeId: zod.z.string(),
|
|
229777
|
+
width: zod.z.number().int().positive(),
|
|
229778
|
+
height: zod.z.number().int().positive(),
|
|
229779
|
+
/** JPEG bytes the parcel costs on the node. */
|
|
229780
|
+
bytes: zod.z.number().int().nonnegative(),
|
|
229781
|
+
/** Whether this park replaced a parcel already held for the key. */
|
|
229782
|
+
replaced: zod.z.boolean()
|
|
229783
|
+
}), zod.z.object({
|
|
229784
|
+
parked: zod.z.literal(false),
|
|
229785
|
+
nodeId: zod.z.string(),
|
|
229786
|
+
reason: ParkRefusalSchema,
|
|
229787
|
+
/** Age of the handle at the park, on the runner's clock; null if unknown. */
|
|
229788
|
+
handleAgeMs: zod.z.number().nullable(),
|
|
229789
|
+
detail: zod.z.string().optional()
|
|
229790
|
+
})]);
|
|
229791
|
+
var ParkedTrackFrameSchema = zod.z.object({
|
|
229792
|
+
jpeg: zod.z.string(),
|
|
229793
|
+
width: zod.z.number().int().positive(),
|
|
229794
|
+
height: zod.z.number().int().positive(),
|
|
229795
|
+
/** The frame instant the parcel shows (the caller's clock, echoed back). */
|
|
229796
|
+
timestamp: zod.z.number(),
|
|
229797
|
+
/** When the node stored it (the node's clock). */
|
|
229798
|
+
parkedAt: zod.z.number()
|
|
229799
|
+
});
|
|
229458
229800
|
var DetailParentSchema = zod.z.object({
|
|
229459
229801
|
bbox: NativeCropBboxSchema,
|
|
229460
229802
|
className: zod.z.string()
|
|
@@ -229700,7 +230042,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
229700
230042
|
* - `analyzer`: ML/frame-diff motion detection (motion-wasm or other
|
|
229701
230043
|
* analyzer providers) running on decoded frames in this runner.
|
|
229702
230044
|
* - `onboard`: camera-native motion pushes (Reolink Baichuan, ONVIF
|
|
229703
|
-
* analytics
|
|
230045
|
+
* analytics). The provider emits ProviderMotion
|
|
229704
230046
|
* events; the orchestrator forwards to `reportMotion`.
|
|
229705
230047
|
*/
|
|
229706
230048
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
@@ -230231,7 +230573,60 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
230231
230573
|
className: zod.z.string(),
|
|
230232
230574
|
/** Camera the pixels came from. Diagnostics + log tags ONLY — never routing. */
|
|
230233
230575
|
sourceDeviceId: zod.z.number()
|
|
230234
|
-
}), RunStatelessStepResultSchema, { kind: "mutation" })
|
|
230576
|
+
}), RunStatelessStepResultSchema, { kind: "mutation" }),
|
|
230577
|
+
/**
|
|
230578
|
+
* PARK a frame for a track at the instant it is judged to matter
|
|
230579
|
+
* ([D422](../../../docs/decisions/adr-0422-a-relevant-frame-is-parked-when-it-becomes-relevant.md)).
|
|
230580
|
+
*
|
|
230581
|
+
* The hub's `BestDetectionTracker` — the single "best per track" policy —
|
|
230582
|
+
* concludes a frame is a track's best and calls this on the node that
|
|
230583
|
+
* owns `handle` (`nodePin(handle.nodeId)`), while the handle is young. The
|
|
230584
|
+
* runner cuts `bbox` from the native surface it already holds (a full
|
|
230585
|
+
* frame for `keyFrame`, the caller's subject window for `thumbnail`),
|
|
230586
|
+
* encodes ONE JPEG, and keeps it under `(deviceId, trackId, kind)`. Every
|
|
230587
|
+
* later consumer retrieves by that key (`getParkedTrackFrame`) — a lookup
|
|
230588
|
+
* that cannot miss on age. D52 holds: the rectangle is cut by the runner,
|
|
230589
|
+
* never a pre-cut tile the caller decided. D9/D18 hold: one compressed
|
|
230590
|
+
* encode at a decision point, never a stream.
|
|
230591
|
+
*
|
|
230592
|
+
* Idempotent per `(trackId, kind)`: a later park replaces (the ranking is
|
|
230593
|
+
* the hub's; this adds no second opinion), an out-of-order older instant
|
|
230594
|
+
* is ignored. Bounded per device and per node on the runner
|
|
230595
|
+
* (`parked-frame-store.ts`), oldest-first eviction, never a refusal for
|
|
230596
|
+
* space. A refusal names its reason and is logged on the runner with the
|
|
230597
|
+
* handle's measured age — it is never retried into a loop.
|
|
230598
|
+
*/
|
|
230599
|
+
parkTrackFrame: require_sleep.method(zod.z.object({
|
|
230600
|
+
deviceId: zod.z.number(),
|
|
230601
|
+
/** Opaque to the runner — the hub's track id. */
|
|
230602
|
+
trackId: zod.z.string(),
|
|
230603
|
+
kind: ParkedFrameKindSchema,
|
|
230604
|
+
handle: require_sleep.FrameHandleSchema,
|
|
230605
|
+
/** Normalized [0,1] window to cut. `{0,0,1,1}` for a full frame. */
|
|
230606
|
+
bbox: NativeCropBboxSchema,
|
|
230607
|
+
/** Width cap for a full-frame park (the `keyFrame` native cap). */
|
|
230608
|
+
maxWidth: zod.z.number().int().positive().optional(),
|
|
230609
|
+
/** The frame instant (caller's clock) — orders parks for one key. */
|
|
230610
|
+
timestamp: zod.z.number()
|
|
230611
|
+
}), ParkTrackFrameResultSchema, { kind: "mutation" }),
|
|
230612
|
+
/**
|
|
230613
|
+
* Retrieve a parked parcel by `(deviceId, trackId, kind)`. Pinned to the
|
|
230614
|
+
* node that answered the park (`ParkTrackFrameResult.nodeId`). `null` means
|
|
230615
|
+
* nothing was parked under that key on this node — never "too old".
|
|
230616
|
+
*/
|
|
230617
|
+
getParkedTrackFrame: require_sleep.method(zod.z.object({
|
|
230618
|
+
deviceId: zod.z.number(),
|
|
230619
|
+
trackId: zod.z.string(),
|
|
230620
|
+
kind: ParkedFrameKindSchema
|
|
230621
|
+
}), ParkedTrackFrameSchema.nullable()),
|
|
230622
|
+
/**
|
|
230623
|
+
* Drop every parcel of a track — the hub closed it. Idempotent. A track
|
|
230624
|
+
* whose release is lost ages out on the runner under a hard ceiling.
|
|
230625
|
+
*/
|
|
230626
|
+
releaseParkedTrackFrames: require_sleep.method(zod.z.object({
|
|
230627
|
+
deviceId: zod.z.number(),
|
|
230628
|
+
trackId: zod.z.string()
|
|
230629
|
+
}), zod.z.object({ released: zod.z.number().int().nonnegative() }), { kind: "mutation" })
|
|
230235
230630
|
}
|
|
230236
230631
|
};
|
|
230237
230632
|
var CameraPipelineConfigSchema = zod.z.object({
|
|
@@ -233850,8 +234245,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
233850
234245
|
/**
|
|
233851
234246
|
* Runtime-state slice — every provider that registers this cap
|
|
233852
234247
|
* stores the same shape under `device.runtimeState[battery]`.
|
|
233853
|
-
* Cross-provider uniformity: a Reolink Argus, a
|
|
233854
|
-
*
|
|
234248
|
+
* Cross-provider uniformity: a Reolink Argus, a sensor proxy,
|
|
234249
|
+
* an ONVIF battery cam all read/write the same keys.
|
|
233855
234250
|
* Consumers (BatteryBadge, snapshot wrapper sleep gate) read once
|
|
233856
234251
|
* via `device.runtimeState.getCapState('battery')` regardless of
|
|
233857
234252
|
* the underlying driver.
|
|
@@ -235705,7 +236100,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
235705
236100
|
* Which integration-marker cap the addon declared, so the wizard can
|
|
235706
236101
|
* branch on CAP — never on addon name. `device-adoption` integrations
|
|
235707
236102
|
* (Home Assistant, …) route through the broker step (Approach A);
|
|
235708
|
-
* `device-provider` integrations (Reolink/
|
|
236103
|
+
* `device-provider` integrations (Reolink/ONVIF) keep the
|
|
235709
236104
|
* legacy config → discovery flow.
|
|
235710
236105
|
*/
|
|
235711
236106
|
kind: zod.z.enum(["device-adoption", "device-provider"]),
|
|
@@ -239103,9 +239498,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
239103
239498
|
});
|
|
239104
239499
|
var RecordingDeviceUsageSchema = zod.z.object({
|
|
239105
239500
|
deviceId: zod.z.number(),
|
|
239501
|
+
/** Bytes the ARCHIVE holds for this camera on this node's resolvable
|
|
239502
|
+
* recordings locations. */
|
|
239106
239503
|
usedBytes: zod.z.number(),
|
|
239107
239504
|
/**
|
|
239108
|
-
* Start of this camera's OLDEST
|
|
239505
|
+
* Start of this camera's OLDEST ARCHIVED segment, across every profile and
|
|
239109
239506
|
* location — the "Oldest footage" column in Recordings → Storage, and the
|
|
239110
239507
|
* only honest answer to "is retention actually holding?" per camera.
|
|
239111
239508
|
*
|
|
@@ -239115,7 +239512,24 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
239115
239512
|
* (types) and the addon ship on different trains, and the addon is usually
|
|
239116
239513
|
* the later of the two.
|
|
239117
239514
|
*/
|
|
239118
|
-
oldestMs: zod.z.number().nullable().optional()
|
|
239515
|
+
oldestMs: zod.z.number().nullable().optional(),
|
|
239516
|
+
/** Segments the archive holds for this camera — the "M" beside `usedBytes`.
|
|
239517
|
+
* OPTIONAL for the same train-skew reason as `oldestMs`. */
|
|
239518
|
+
segments: zod.z.number().optional(),
|
|
239519
|
+
/**
|
|
239520
|
+
* RESIDENCY, not the archive: bytes the recorder process currently holds in
|
|
239521
|
+
* its RAM index — the live tail plus the hours a reader hydrated.
|
|
239522
|
+
*
|
|
239523
|
+
* It answers "what can be served without touching the disk", never "how much
|
|
239524
|
+
* footage this camera has". A UI that renders it must label it as such, and
|
|
239525
|
+
* must never total it as storage. OPTIONAL: a recorder predating D418 omits
|
|
239526
|
+
* it, and so does a node whose ledger could not answer.
|
|
239527
|
+
*/
|
|
239528
|
+
residentBytes: zod.z.number().optional(),
|
|
239529
|
+
/** The residency counterpart of `oldestMs` — the oldest segment currently in
|
|
239530
|
+
* RAM, which on a healthy recorder is minutes ago and means nothing about
|
|
239531
|
+
* retention. `null` = nothing resident. */
|
|
239532
|
+
residentOldestMs: zod.z.number().nullable().optional()
|
|
239119
239533
|
});
|
|
239120
239534
|
var RecordingLocationUsageSchema = zod.z.object({
|
|
239121
239535
|
/** StorageLocation id; null for the legacy/degraded single-root fallback. */
|
|
@@ -239149,6 +239563,17 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
239149
239563
|
totalUsedBytes: zod.z.number(),
|
|
239150
239564
|
devices: zod.z.array(RecordingDeviceUsageSchema),
|
|
239151
239565
|
/**
|
|
239566
|
+
* WHERE `devices[]` came from, so an empty table is never mistaken for empty
|
|
239567
|
+
* disks (D418).
|
|
239568
|
+
*
|
|
239569
|
+
* `archive` = the durable hour ledger answered. `unavailable` = this node
|
|
239570
|
+
* declared no ledger and the recorder REFUSED rather than answering the
|
|
239571
|
+
* question with the resident index (D295 rule 3) — the rows are UNKNOWN, not
|
|
239572
|
+
* zero, and a UI must say so. OPTIONAL: a recorder predating D418 omits it,
|
|
239573
|
+
* and its rows are residency.
|
|
239574
|
+
*/
|
|
239575
|
+
devicesRead: zod.z.enum(["archive", "unavailable"]).optional(),
|
|
239576
|
+
/**
|
|
239152
239577
|
* Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
|
|
239153
239578
|
* of the payload without it: the hub serves this method through a BAKED
|
|
239154
239579
|
* router, so a hub whose framework train predates a change to this array
|
|
@@ -250113,6 +250538,24 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
250113
250538
|
addonId: null,
|
|
250114
250539
|
access: "view"
|
|
250115
250540
|
},
|
|
250541
|
+
"pipelineRunner.getParkedTrackFrame": {
|
|
250542
|
+
capName: "pipeline-runner",
|
|
250543
|
+
capScope: "system",
|
|
250544
|
+
addonId: null,
|
|
250545
|
+
access: "view"
|
|
250546
|
+
},
|
|
250547
|
+
"pipelineRunner.parkTrackFrame": {
|
|
250548
|
+
capName: "pipeline-runner",
|
|
250549
|
+
capScope: "system",
|
|
250550
|
+
addonId: null,
|
|
250551
|
+
access: "create"
|
|
250552
|
+
},
|
|
250553
|
+
"pipelineRunner.releaseParkedTrackFrames": {
|
|
250554
|
+
capName: "pipeline-runner",
|
|
250555
|
+
capScope: "system",
|
|
250556
|
+
addonId: null,
|
|
250557
|
+
access: "create"
|
|
250558
|
+
},
|
|
250116
250559
|
"pipelineRunner.reportMotion": {
|
|
250117
250560
|
capName: "pipeline-runner",
|
|
250118
250561
|
capScope: "system",
|
|
@@ -253654,6 +254097,21 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
253654
254097
|
form: "single",
|
|
253655
254098
|
optional: false
|
|
253656
254099
|
}],
|
|
254100
|
+
"pipelineRunner.getParkedTrackFrame": [{
|
|
254101
|
+
name: "deviceId",
|
|
254102
|
+
form: "single",
|
|
254103
|
+
optional: false
|
|
254104
|
+
}],
|
|
254105
|
+
"pipelineRunner.parkTrackFrame": [{
|
|
254106
|
+
name: "deviceId",
|
|
254107
|
+
form: "single",
|
|
254108
|
+
optional: false
|
|
254109
|
+
}],
|
|
254110
|
+
"pipelineRunner.releaseParkedTrackFrames": [{
|
|
254111
|
+
name: "deviceId",
|
|
254112
|
+
form: "single",
|
|
254113
|
+
optional: false
|
|
254114
|
+
}],
|
|
253657
254115
|
"pipelineRunner.reportMotion": [{
|
|
253658
254116
|
name: "deviceId",
|
|
253659
254117
|
form: "single",
|
|
@@ -254331,6 +254789,9 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
254331
254789
|
"pipelineRunner.attachCamera",
|
|
254332
254790
|
"pipelineRunner.detachCamera",
|
|
254333
254791
|
"pipelineRunner.getCameraMetrics",
|
|
254792
|
+
"pipelineRunner.getParkedTrackFrame",
|
|
254793
|
+
"pipelineRunner.parkTrackFrame",
|
|
254794
|
+
"pipelineRunner.releaseParkedTrackFrames",
|
|
254334
254795
|
"pipelineRunner.reportMotion",
|
|
254335
254796
|
"pipelineRunner.runDetailSubtree",
|
|
254336
254797
|
"pipelineRunner.runStatelessStep",
|
|
@@ -258784,6 +259245,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
258784
259245
|
exports.PYTHON_SCRIPT = PYTHON_SCRIPT;
|
|
258785
259246
|
exports.PackageUpdateSchema = PackageUpdateSchema;
|
|
258786
259247
|
exports.PackageVersionInfoSchema = PackageVersionInfoSchema;
|
|
259248
|
+
exports.ParkRefusalSchema = ParkRefusalSchema;
|
|
259249
|
+
exports.ParkTrackFrameResultSchema = ParkTrackFrameResultSchema;
|
|
259250
|
+
exports.ParkedFrameKindSchema = ParkedFrameKindSchema;
|
|
259251
|
+
exports.ParkedTrackFrameSchema = ParkedTrackFrameSchema;
|
|
258787
259252
|
exports.PasskeyLoginMethodSchema = PasskeyLoginMethodSchema;
|
|
258788
259253
|
exports.PasskeySummarySchema = PasskeySummarySchema;
|
|
258789
259254
|
exports.PcmSampleFormatSchema = PcmSampleFormatSchema;
|
|
@@ -432134,6 +432599,8 @@ var require_main4 = __commonJS({
|
|
|
432134
432599
|
heapWatchLogger.warn(line);
|
|
432135
432600
|
}
|
|
432136
432601
|
});
|
|
432602
|
+
const stallLogger = loggingService.createLogger("event-loop");
|
|
432603
|
+
(0, system_1.startEventLoopStallMonitor)(stallLogger);
|
|
432137
432604
|
const addonRouteRegistry = new system_1.AddonRouteRegistry();
|
|
432138
432605
|
const dataPlaneRegistry = new system_1.DataPlaneRegistry();
|
|
432139
432606
|
const { NotificationServiceWrapper } = await Promise.resolve().then(() => __importStar(require_notification_wrapper_service()));
|