@camstack/addon-pipeline 1.2.160 → 1.2.162
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/audio-analyzer/index.js +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/detection-pipeline/index.js +5 -5
- package/dist/detection-pipeline/index.mjs +4 -4
- package/dist/{dist-5VmTxa8x.js → dist-15qysRyR.js} +148 -6
- package/dist/{dist-C8zVKhzA.mjs → dist-Bz00AHCy.mjs} +148 -6
- package/dist/{lazy-sharp-C89jIlwj.js → lazy-sharp-CusvUEdy.js} +1 -1
- package/dist/{local-frame-registry-Bh-egEcl.mjs → local-frame-registry-B7cPLEW-.mjs} +1 -1
- package/dist/{local-frame-registry-BNMgZ5uA.js → local-frame-registry-BnimNHwT.js} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-FsbZDqyh.js → node-BdjJPTLk.js} +1 -1
- package/dist/{node-G9AiO_JJ.mjs → node-CpW6WY9n.mjs} +1 -1
- package/dist/pipeline-runner/index.js +5 -5
- package/dist/pipeline-runner/index.mjs +4 -4
- package/dist/{process-memory-Bbvc_vQS.mjs → process-memory-BosDzc_U.mjs} +1 -1
- package/dist/{process-memory-CMC_42XT.js → process-memory-CJHwbMAy.js} +1 -1
- package/dist/recorder/index.js +132 -40
- package/dist/recorder/index.mjs +132 -40
- package/dist/{segment-demux-js-Cw--C40J.mjs → segment-demux-js-CmaBsM0K.mjs} +1 -1
- package/dist/{segment-demux-js-iEt5OWTd.js → segment-demux-js-DoH8TCnt.js} +1 -1
- package/dist/session-decode/decode-worker-child.js +2 -2
- package/dist/session-decode/decode-worker-child.mjs +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-l7NtBWCj.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-sfos9TiN.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CqO3zOjL.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CWtPG7OH.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B6HSEhpx.mjs} +1 -1
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-C2zs9368.mjs → hostInit-hk0XBAnv.mjs} +3 -3
- package/dist/stream-broker/index.js +3 -3
- package/dist/stream-broker/index.mjs +3 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-CA_SVsYj.mjs → worker-protocol-B2RCeDwS.mjs} +1 -1
- package/dist/{worker-protocol-CB8pNFkV.js → worker-protocol-DczDySjo.js} +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Blnh70uP.mjs +0 -26
|
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_process_memory = require("../process-memory-
|
|
5
|
+
const require_dist = require("../dist-15qysRyR.js");
|
|
6
|
+
const require_process_memory = require("../process-memory-CJHwbMAy.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
node_fs = require_dist.__toESM(node_fs);
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { A as audioAnalysisCapability, It as hydrateSchema, S as PoolMemoryWatchdog, _t as resolvePoolMemoryPolicy, j as audioAnalyzerCapability, jt as BaseAddon, n as AUDIO_BACKEND_CHOICES, nt as mapAudioLabelToMacro, s as DEFAULT_AUDIO_ANALYZER_CONFIG, v as HF_BASE_URL, wt as errMsg } from "../dist-
|
|
3
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
2
|
+
import { A as audioAnalysisCapability, It as hydrateSchema, S as PoolMemoryWatchdog, _t as resolvePoolMemoryPolicy, j as audioAnalyzerCapability, jt as BaseAddon, n as AUDIO_BACKEND_CHOICES, nt as mapAudioLabelToMacro, s as DEFAULT_AUDIO_ANALYZER_CONFIG, v as HF_BASE_URL, wt as errMsg } from "../dist-Bz00AHCy.mjs";
|
|
3
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-BosDzc_U.mjs";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
6
6
|
import { downloadFile } from "@camstack/system/addon-utils";
|
|
@@ -2,12 +2,12 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_node = require("../node-
|
|
7
|
-
const require_local_frame_registry = require("../local-frame-registry-
|
|
8
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
5
|
+
const require_dist = require("../dist-15qysRyR.js");
|
|
6
|
+
const require_node = require("../node-BdjJPTLk.js");
|
|
7
|
+
const require_local_frame_registry = require("../local-frame-registry-BnimNHwT.js");
|
|
8
|
+
const require_lazy_sharp = require("../lazy-sharp-CusvUEdy.js");
|
|
9
9
|
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DaUBcb13.js");
|
|
10
|
-
const require_process_memory = require("../process-memory-
|
|
10
|
+
const require_process_memory = require("../process-memory-CJHwbMAy.js");
|
|
11
11
|
let node_fs = require("node:fs");
|
|
12
12
|
node_fs = require_dist.__toESM(node_fs);
|
|
13
13
|
let node_path = require("node:path");
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { Bt as nodePin, Ft as createEvent, It as hydrateSchema, Kt as array, O as YAMNET_TO_MACRO, Q as inferModelProvider, Qt as object, S as PoolMemoryWatchdog, St as supportedRuntimes$1, Vt as parseJsonUnknown, W as detectionPipelineCapability, Wt as sleep, Y as evaluateZoneRules, _t as resolvePoolMemoryPolicy, at as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, ct as pickClusterStepSettings, dt as pipelineExecutorCapability, en as string, et as loadContributionCapability, ht as resolveClusterStepModelId, jt as BaseAddon, l as DEFAULT_CLUSTER_STEP_SETTINGS, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, q as enumerateInferenceDevices, st as pickClusterStepModels, t as APPLE_SA_TO_MACRO, tn as union, wt as errMsg, yt as runtimeDevices$1, z as defaultDeviceFor$1 } from "../dist-
|
|
3
|
-
import { a as readProcessCost } from "../node-
|
|
4
|
-
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep, t as localFrameRegistry, u as landmarkPrecisionVerdict } from "../local-frame-registry-
|
|
2
|
+
import { Bt as nodePin, Ft as createEvent, It as hydrateSchema, Kt as array, O as YAMNET_TO_MACRO, Q as inferModelProvider, Qt as object, S as PoolMemoryWatchdog, St as supportedRuntimes$1, Vt as parseJsonUnknown, W as detectionPipelineCapability, Wt as sleep, Y as evaluateZoneRules, _t as resolvePoolMemoryPolicy, at as overlayClusterStepSettings, c as DEFAULT_CLUSTER_STEP_MODELS, ct as pickClusterStepSettings, dt as pipelineExecutorCapability, en as string, et as loadContributionCapability, ht as resolveClusterStepModelId, jt as BaseAddon, l as DEFAULT_CLUSTER_STEP_SETTINGS, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, q as enumerateInferenceDevices, st as pickClusterStepModels, t as APPLE_SA_TO_MACRO, tn as union, wt as errMsg, yt as runtimeDevices$1, z as defaultDeviceFor$1 } from "../dist-Bz00AHCy.mjs";
|
|
3
|
+
import { a as readProcessCost } from "../node-CpW6WY9n.mjs";
|
|
4
|
+
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep, t as localFrameRegistry, u as landmarkPrecisionVerdict } from "../local-frame-registry-B7cPLEW-.mjs";
|
|
5
5
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
6
6
|
import { n as startEventLoopStallMonitor } from "../event-loop-stall-monitor-DXLNBMkY.mjs";
|
|
7
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
7
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-BosDzc_U.mjs";
|
|
8
8
|
import * as fs from "node:fs";
|
|
9
9
|
import * as path$1 from "node:path";
|
|
10
10
|
import { spawn } from "node:child_process";
|
|
@@ -17886,6 +17886,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
17886
17886
|
"device-offline",
|
|
17887
17887
|
"device-disabled",
|
|
17888
17888
|
"device-enabled",
|
|
17889
|
+
"device-battery-low",
|
|
17890
|
+
"device-battery-normal",
|
|
17889
17891
|
"stream-online",
|
|
17890
17892
|
"stream-offline",
|
|
17891
17893
|
"node-online",
|
|
@@ -21344,6 +21346,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
21344
21346
|
deviceId: number(),
|
|
21345
21347
|
events: array(KeyEventSchema).readonly()
|
|
21346
21348
|
});
|
|
21349
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
21350
|
+
var EventDensityBucketSchema = object({
|
|
21351
|
+
bucketStart: number(),
|
|
21352
|
+
motion: number().int(),
|
|
21353
|
+
object: number().int(),
|
|
21354
|
+
audio: number().int()
|
|
21355
|
+
});
|
|
21356
|
+
/**
|
|
21357
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
21358
|
+
*
|
|
21359
|
+
* TWO facts, and the timeline draws them differently:
|
|
21360
|
+
*
|
|
21361
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
21362
|
+
* claim: read, and nothing happened in the window.
|
|
21363
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
21364
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
21365
|
+
* not quiet.
|
|
21366
|
+
*
|
|
21367
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
21368
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
21369
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
21370
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
21371
|
+
*/
|
|
21372
|
+
var EventDensityForDeviceSchema = object({
|
|
21373
|
+
deviceId: number(),
|
|
21374
|
+
read: _enum(["read", "unreadable"]),
|
|
21375
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
21376
|
+
});
|
|
21347
21377
|
object({
|
|
21348
21378
|
trackId: string(),
|
|
21349
21379
|
className: string(),
|
|
@@ -21654,12 +21684,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
21654
21684
|
since: number(),
|
|
21655
21685
|
until: number(),
|
|
21656
21686
|
bucketMs: number().int().positive()
|
|
21657
|
-
}), array(object({
|
|
21658
|
-
|
|
21659
|
-
|
|
21660
|
-
|
|
21661
|
-
|
|
21662
|
-
})).readonly()), method(object({
|
|
21687
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
21688
|
+
deviceIds: array(number()).min(1).max(200),
|
|
21689
|
+
since: number(),
|
|
21690
|
+
until: number(),
|
|
21691
|
+
bucketMs: number().int().positive()
|
|
21692
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
21663
21693
|
deviceId: number(),
|
|
21664
21694
|
cutoffMs: number()
|
|
21665
21695
|
}), object({
|
|
@@ -29280,6 +29310,39 @@ var RecordingDaysSchema = object({
|
|
|
29280
29310
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29281
29311
|
days: array(number())
|
|
29282
29312
|
});
|
|
29313
|
+
/**
|
|
29314
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29315
|
+
*
|
|
29316
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29317
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29318
|
+
* method never had to say:
|
|
29319
|
+
*
|
|
29320
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29321
|
+
* no footage in the window", which is a real claim.
|
|
29322
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29323
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29324
|
+
* that emptiness means NOTHING.
|
|
29325
|
+
*
|
|
29326
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29327
|
+
* footage when the truth is that nobody looked.
|
|
29328
|
+
*/
|
|
29329
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29330
|
+
deviceId: number(),
|
|
29331
|
+
read: _enum(["read", "unreadable"]),
|
|
29332
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29333
|
+
});
|
|
29334
|
+
/**
|
|
29335
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29336
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29337
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29338
|
+
* the date-picker's day dots must not spell them the same.
|
|
29339
|
+
*/
|
|
29340
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29341
|
+
deviceId: number(),
|
|
29342
|
+
read: _enum(["read", "unreadable"]),
|
|
29343
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29344
|
+
days: array(number()).readonly()
|
|
29345
|
+
});
|
|
29283
29346
|
var RecordingManifestSchema = object({
|
|
29284
29347
|
deviceId: number(),
|
|
29285
29348
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29525,6 +29588,32 @@ var recordingCapability = {
|
|
|
29525
29588
|
kind: "query",
|
|
29526
29589
|
auth: "protected"
|
|
29527
29590
|
}),
|
|
29591
|
+
/**
|
|
29592
|
+
* `getAvailability` for a SET of cameras, in one round trip.
|
|
29593
|
+
*
|
|
29594
|
+
* A multi-camera timeline re-asks availability for every camera in the grid
|
|
29595
|
+
* on every day change; fanned out that is one request per camera for N
|
|
29596
|
+
* independent calendar walks. The per-camera work is IDENTICAL (the same
|
|
29597
|
+
* `availabilityProfileFor` + `rangesIn`, run concurrently inside the
|
|
29598
|
+
* recorder) — only the transport collapses.
|
|
29599
|
+
*
|
|
29600
|
+
* `protected` for the same reason the singular method is: every id in
|
|
29601
|
+
* `deviceIds` is a device reference, so the F1 #3 gate refuses any camera
|
|
29602
|
+
* outside the caller's scope — one id out of scope refuses the CALL, it
|
|
29603
|
+
* does not quietly drop a row.
|
|
29604
|
+
*
|
|
29605
|
+
* Every requested id gets a row, marked — see
|
|
29606
|
+
* {@link RecordingAvailabilityForDeviceSchema}. `deviceIds` is capped at
|
|
29607
|
+
* {@link RECORDING_TIMELINE_BATCH_MAX} and an over-cap ask is refused.
|
|
29608
|
+
*/
|
|
29609
|
+
getAvailabilityBatch: method(object({
|
|
29610
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29611
|
+
fromMs: number(),
|
|
29612
|
+
toMs: number()
|
|
29613
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29614
|
+
kind: "query",
|
|
29615
|
+
auth: "protected"
|
|
29616
|
+
}),
|
|
29528
29617
|
/** Which calendar days in [fromMs,toMs) have ≥1 recorded segment, bucketed by
|
|
29529
29618
|
* the client's local day (`tzOffsetMinutes` = minutes to add to UTC). Drives
|
|
29530
29619
|
* the theater date-picker's day dots. */
|
|
@@ -29537,6 +29626,26 @@ var recordingCapability = {
|
|
|
29537
29626
|
kind: "query",
|
|
29538
29627
|
auth: "protected"
|
|
29539
29628
|
}),
|
|
29629
|
+
/**
|
|
29630
|
+
* `getDaysWithRecordings` for a SET of cameras, in one round trip.
|
|
29631
|
+
*
|
|
29632
|
+
* The cheapest question in the product, asked once per camera per month
|
|
29633
|
+
* change. One directory read per day per camera at the owner, unchanged;
|
|
29634
|
+
* what collapses is the N requests it took to ask.
|
|
29635
|
+
*
|
|
29636
|
+
* Every requested id gets a row, marked — see
|
|
29637
|
+
* {@link RecordingDaysForDeviceSchema}. `deviceIds` is capped at
|
|
29638
|
+
* {@link RECORDING_TIMELINE_BATCH_MAX} and an over-cap ask is refused.
|
|
29639
|
+
*/
|
|
29640
|
+
getDaysWithRecordingsBatch: method(object({
|
|
29641
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29642
|
+
fromMs: number(),
|
|
29643
|
+
toMs: number(),
|
|
29644
|
+
tzOffsetMinutes: number()
|
|
29645
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29646
|
+
kind: "query",
|
|
29647
|
+
auth: "protected"
|
|
29648
|
+
}),
|
|
29540
29649
|
getPlaybackManifest: method(object({
|
|
29541
29650
|
deviceId: number(),
|
|
29542
29651
|
fromMs: number(),
|
|
@@ -35072,6 +35181,12 @@ Object.freeze({
|
|
|
35072
35181
|
addonId: null,
|
|
35073
35182
|
access: "view"
|
|
35074
35183
|
},
|
|
35184
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35185
|
+
capName: "pipeline-analytics",
|
|
35186
|
+
capScope: "device",
|
|
35187
|
+
addonId: null,
|
|
35188
|
+
access: "view"
|
|
35189
|
+
},
|
|
35075
35190
|
"pipelineAnalytics.getEventMedia": {
|
|
35076
35191
|
capName: "pipeline-analytics",
|
|
35077
35192
|
capScope: "device",
|
|
@@ -36194,12 +36309,24 @@ Object.freeze({
|
|
|
36194
36309
|
addonId: null,
|
|
36195
36310
|
access: "view"
|
|
36196
36311
|
},
|
|
36312
|
+
"recording.getAvailabilityBatch": {
|
|
36313
|
+
capName: "recording",
|
|
36314
|
+
capScope: "system",
|
|
36315
|
+
addonId: null,
|
|
36316
|
+
access: "view"
|
|
36317
|
+
},
|
|
36197
36318
|
"recording.getDaysWithRecordings": {
|
|
36198
36319
|
capName: "recording",
|
|
36199
36320
|
capScope: "system",
|
|
36200
36321
|
addonId: null,
|
|
36201
36322
|
access: "view"
|
|
36202
36323
|
},
|
|
36324
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36325
|
+
capName: "recording",
|
|
36326
|
+
capScope: "system",
|
|
36327
|
+
addonId: null,
|
|
36328
|
+
access: "view"
|
|
36329
|
+
},
|
|
36203
36330
|
"recording.getDeviceConfig": {
|
|
36204
36331
|
capName: "recording",
|
|
36205
36332
|
capScope: "system",
|
|
@@ -38804,6 +38931,11 @@ Object.freeze({
|
|
|
38804
38931
|
form: "single",
|
|
38805
38932
|
optional: false
|
|
38806
38933
|
}],
|
|
38934
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
38935
|
+
name: "deviceIds",
|
|
38936
|
+
form: "array",
|
|
38937
|
+
optional: false
|
|
38938
|
+
}],
|
|
38807
38939
|
"pipelineAnalytics.getEventMedia": [{
|
|
38808
38940
|
name: "deviceId",
|
|
38809
38941
|
form: "single",
|
|
@@ -39219,11 +39351,21 @@ Object.freeze({
|
|
|
39219
39351
|
form: "single",
|
|
39220
39352
|
optional: false
|
|
39221
39353
|
}],
|
|
39354
|
+
"recording.getAvailabilityBatch": [{
|
|
39355
|
+
name: "deviceIds",
|
|
39356
|
+
form: "array",
|
|
39357
|
+
optional: false
|
|
39358
|
+
}],
|
|
39222
39359
|
"recording.getDaysWithRecordings": [{
|
|
39223
39360
|
name: "deviceId",
|
|
39224
39361
|
form: "single",
|
|
39225
39362
|
optional: false
|
|
39226
39363
|
}],
|
|
39364
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39365
|
+
name: "deviceIds",
|
|
39366
|
+
form: "array",
|
|
39367
|
+
optional: false
|
|
39368
|
+
}],
|
|
39227
39369
|
"recording.getDeviceConfig": [{
|
|
39228
39370
|
name: "deviceId",
|
|
39229
39371
|
form: "single",
|
|
@@ -17863,6 +17863,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
17863
17863
|
"device-offline",
|
|
17864
17864
|
"device-disabled",
|
|
17865
17865
|
"device-enabled",
|
|
17866
|
+
"device-battery-low",
|
|
17867
|
+
"device-battery-normal",
|
|
17866
17868
|
"stream-online",
|
|
17867
17869
|
"stream-offline",
|
|
17868
17870
|
"node-online",
|
|
@@ -21321,6 +21323,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
21321
21323
|
deviceId: number(),
|
|
21322
21324
|
events: array(KeyEventSchema).readonly()
|
|
21323
21325
|
});
|
|
21326
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
21327
|
+
var EventDensityBucketSchema = object({
|
|
21328
|
+
bucketStart: number(),
|
|
21329
|
+
motion: number().int(),
|
|
21330
|
+
object: number().int(),
|
|
21331
|
+
audio: number().int()
|
|
21332
|
+
});
|
|
21333
|
+
/**
|
|
21334
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
21335
|
+
*
|
|
21336
|
+
* TWO facts, and the timeline draws them differently:
|
|
21337
|
+
*
|
|
21338
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
21339
|
+
* claim: read, and nothing happened in the window.
|
|
21340
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
21341
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
21342
|
+
* not quiet.
|
|
21343
|
+
*
|
|
21344
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
21345
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
21346
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
21347
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
21348
|
+
*/
|
|
21349
|
+
var EventDensityForDeviceSchema = object({
|
|
21350
|
+
deviceId: number(),
|
|
21351
|
+
read: _enum(["read", "unreadable"]),
|
|
21352
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
21353
|
+
});
|
|
21324
21354
|
object({
|
|
21325
21355
|
trackId: string(),
|
|
21326
21356
|
className: string(),
|
|
@@ -21631,12 +21661,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
21631
21661
|
since: number(),
|
|
21632
21662
|
until: number(),
|
|
21633
21663
|
bucketMs: number().int().positive()
|
|
21634
|
-
}), array(object({
|
|
21635
|
-
|
|
21636
|
-
|
|
21637
|
-
|
|
21638
|
-
|
|
21639
|
-
})).readonly()), method(object({
|
|
21664
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
21665
|
+
deviceIds: array(number()).min(1).max(200),
|
|
21666
|
+
since: number(),
|
|
21667
|
+
until: number(),
|
|
21668
|
+
bucketMs: number().int().positive()
|
|
21669
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
21640
21670
|
deviceId: number(),
|
|
21641
21671
|
cutoffMs: number()
|
|
21642
21672
|
}), object({
|
|
@@ -29257,6 +29287,39 @@ var RecordingDaysSchema = object({
|
|
|
29257
29287
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29258
29288
|
days: array(number())
|
|
29259
29289
|
});
|
|
29290
|
+
/**
|
|
29291
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
29292
|
+
*
|
|
29293
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
29294
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
29295
|
+
* method never had to say:
|
|
29296
|
+
*
|
|
29297
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
29298
|
+
* no footage in the window", which is a real claim.
|
|
29299
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
29300
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
29301
|
+
* that emptiness means NOTHING.
|
|
29302
|
+
*
|
|
29303
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
29304
|
+
* footage when the truth is that nobody looked.
|
|
29305
|
+
*/
|
|
29306
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
29307
|
+
deviceId: number(),
|
|
29308
|
+
read: _enum(["read", "unreadable"]),
|
|
29309
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
29310
|
+
});
|
|
29311
|
+
/**
|
|
29312
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
29313
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
29314
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
29315
|
+
* the date-picker's day dots must not spell them the same.
|
|
29316
|
+
*/
|
|
29317
|
+
var RecordingDaysForDeviceSchema = object({
|
|
29318
|
+
deviceId: number(),
|
|
29319
|
+
read: _enum(["read", "unreadable"]),
|
|
29320
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
29321
|
+
days: array(number()).readonly()
|
|
29322
|
+
});
|
|
29260
29323
|
var RecordingManifestSchema = object({
|
|
29261
29324
|
deviceId: number(),
|
|
29262
29325
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -29502,6 +29565,32 @@ var recordingCapability = {
|
|
|
29502
29565
|
kind: "query",
|
|
29503
29566
|
auth: "protected"
|
|
29504
29567
|
}),
|
|
29568
|
+
/**
|
|
29569
|
+
* `getAvailability` for a SET of cameras, in one round trip.
|
|
29570
|
+
*
|
|
29571
|
+
* A multi-camera timeline re-asks availability for every camera in the grid
|
|
29572
|
+
* on every day change; fanned out that is one request per camera for N
|
|
29573
|
+
* independent calendar walks. The per-camera work is IDENTICAL (the same
|
|
29574
|
+
* `availabilityProfileFor` + `rangesIn`, run concurrently inside the
|
|
29575
|
+
* recorder) — only the transport collapses.
|
|
29576
|
+
*
|
|
29577
|
+
* `protected` for the same reason the singular method is: every id in
|
|
29578
|
+
* `deviceIds` is a device reference, so the F1 #3 gate refuses any camera
|
|
29579
|
+
* outside the caller's scope — one id out of scope refuses the CALL, it
|
|
29580
|
+
* does not quietly drop a row.
|
|
29581
|
+
*
|
|
29582
|
+
* Every requested id gets a row, marked — see
|
|
29583
|
+
* {@link RecordingAvailabilityForDeviceSchema}. `deviceIds` is capped at
|
|
29584
|
+
* {@link RECORDING_TIMELINE_BATCH_MAX} and an over-cap ask is refused.
|
|
29585
|
+
*/
|
|
29586
|
+
getAvailabilityBatch: method(object({
|
|
29587
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29588
|
+
fromMs: number(),
|
|
29589
|
+
toMs: number()
|
|
29590
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
29591
|
+
kind: "query",
|
|
29592
|
+
auth: "protected"
|
|
29593
|
+
}),
|
|
29505
29594
|
/** Which calendar days in [fromMs,toMs) have ≥1 recorded segment, bucketed by
|
|
29506
29595
|
* the client's local day (`tzOffsetMinutes` = minutes to add to UTC). Drives
|
|
29507
29596
|
* the theater date-picker's day dots. */
|
|
@@ -29514,6 +29603,26 @@ var recordingCapability = {
|
|
|
29514
29603
|
kind: "query",
|
|
29515
29604
|
auth: "protected"
|
|
29516
29605
|
}),
|
|
29606
|
+
/**
|
|
29607
|
+
* `getDaysWithRecordings` for a SET of cameras, in one round trip.
|
|
29608
|
+
*
|
|
29609
|
+
* The cheapest question in the product, asked once per camera per month
|
|
29610
|
+
* change. One directory read per day per camera at the owner, unchanged;
|
|
29611
|
+
* what collapses is the N requests it took to ask.
|
|
29612
|
+
*
|
|
29613
|
+
* Every requested id gets a row, marked — see
|
|
29614
|
+
* {@link RecordingDaysForDeviceSchema}. `deviceIds` is capped at
|
|
29615
|
+
* {@link RECORDING_TIMELINE_BATCH_MAX} and an over-cap ask is refused.
|
|
29616
|
+
*/
|
|
29617
|
+
getDaysWithRecordingsBatch: method(object({
|
|
29618
|
+
deviceIds: array(number()).min(1).max(200),
|
|
29619
|
+
fromMs: number(),
|
|
29620
|
+
toMs: number(),
|
|
29621
|
+
tzOffsetMinutes: number()
|
|
29622
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
29623
|
+
kind: "query",
|
|
29624
|
+
auth: "protected"
|
|
29625
|
+
}),
|
|
29517
29626
|
getPlaybackManifest: method(object({
|
|
29518
29627
|
deviceId: number(),
|
|
29519
29628
|
fromMs: number(),
|
|
@@ -35049,6 +35158,12 @@ Object.freeze({
|
|
|
35049
35158
|
addonId: null,
|
|
35050
35159
|
access: "view"
|
|
35051
35160
|
},
|
|
35161
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
35162
|
+
capName: "pipeline-analytics",
|
|
35163
|
+
capScope: "device",
|
|
35164
|
+
addonId: null,
|
|
35165
|
+
access: "view"
|
|
35166
|
+
},
|
|
35052
35167
|
"pipelineAnalytics.getEventMedia": {
|
|
35053
35168
|
capName: "pipeline-analytics",
|
|
35054
35169
|
capScope: "device",
|
|
@@ -36171,12 +36286,24 @@ Object.freeze({
|
|
|
36171
36286
|
addonId: null,
|
|
36172
36287
|
access: "view"
|
|
36173
36288
|
},
|
|
36289
|
+
"recording.getAvailabilityBatch": {
|
|
36290
|
+
capName: "recording",
|
|
36291
|
+
capScope: "system",
|
|
36292
|
+
addonId: null,
|
|
36293
|
+
access: "view"
|
|
36294
|
+
},
|
|
36174
36295
|
"recording.getDaysWithRecordings": {
|
|
36175
36296
|
capName: "recording",
|
|
36176
36297
|
capScope: "system",
|
|
36177
36298
|
addonId: null,
|
|
36178
36299
|
access: "view"
|
|
36179
36300
|
},
|
|
36301
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
36302
|
+
capName: "recording",
|
|
36303
|
+
capScope: "system",
|
|
36304
|
+
addonId: null,
|
|
36305
|
+
access: "view"
|
|
36306
|
+
},
|
|
36180
36307
|
"recording.getDeviceConfig": {
|
|
36181
36308
|
capName: "recording",
|
|
36182
36309
|
capScope: "system",
|
|
@@ -38781,6 +38908,11 @@ Object.freeze({
|
|
|
38781
38908
|
form: "single",
|
|
38782
38909
|
optional: false
|
|
38783
38910
|
}],
|
|
38911
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
38912
|
+
name: "deviceIds",
|
|
38913
|
+
form: "array",
|
|
38914
|
+
optional: false
|
|
38915
|
+
}],
|
|
38784
38916
|
"pipelineAnalytics.getEventMedia": [{
|
|
38785
38917
|
name: "deviceId",
|
|
38786
38918
|
form: "single",
|
|
@@ -39196,11 +39328,21 @@ Object.freeze({
|
|
|
39196
39328
|
form: "single",
|
|
39197
39329
|
optional: false
|
|
39198
39330
|
}],
|
|
39331
|
+
"recording.getAvailabilityBatch": [{
|
|
39332
|
+
name: "deviceIds",
|
|
39333
|
+
form: "array",
|
|
39334
|
+
optional: false
|
|
39335
|
+
}],
|
|
39199
39336
|
"recording.getDaysWithRecordings": [{
|
|
39200
39337
|
name: "deviceId",
|
|
39201
39338
|
form: "single",
|
|
39202
39339
|
optional: false
|
|
39203
39340
|
}],
|
|
39341
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
39342
|
+
name: "deviceIds",
|
|
39343
|
+
form: "array",
|
|
39344
|
+
optional: false
|
|
39345
|
+
}],
|
|
39204
39346
|
"recording.getDeviceConfig": [{
|
|
39205
39347
|
name: "deviceId",
|
|
39206
39348
|
form: "single",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-
|
|
1
|
+
import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-Bz00AHCy.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
//#region src/detection-pipeline/registry/model-catalogs.ts
|
|
4
4
|
var HF_REPO = "camstack/camstack-models";
|
|
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
5
|
+
const require_dist = require("../dist-15qysRyR.js");
|
|
6
|
+
const require_lazy_sharp = require("../lazy-sharp-CusvUEdy.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-
|
|
1
|
+
import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-Bz00AHCy.mjs";
|
|
2
2
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-
|
|
1
|
+
import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-Bz00AHCy.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import "node:fs";
|
|
4
4
|
import "node:path";
|
|
@@ -2,12 +2,12 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_node = require("../node-
|
|
7
|
-
const require_local_frame_registry = require("../local-frame-registry-
|
|
8
|
-
const require_worker_protocol = require("../worker-protocol-
|
|
5
|
+
const require_dist = require("../dist-15qysRyR.js");
|
|
6
|
+
const require_node = require("../node-BdjJPTLk.js");
|
|
7
|
+
const require_local_frame_registry = require("../local-frame-registry-BnimNHwT.js");
|
|
8
|
+
const require_worker_protocol = require("../worker-protocol-DczDySjo.js");
|
|
9
9
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
10
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
10
|
+
const require_lazy_sharp = require("../lazy-sharp-CusvUEdy.js");
|
|
11
11
|
const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
|
|
12
12
|
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DaUBcb13.js");
|
|
13
13
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-
|
|
2
|
-
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-
|
|
3
|
-
import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-
|
|
4
|
-
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-
|
|
1
|
+
import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-Bz00AHCy.mjs";
|
|
2
|
+
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CpW6WY9n.mjs";
|
|
3
|
+
import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-B7cPLEW-.mjs";
|
|
4
|
+
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-B2RCeDwS.mjs";
|
|
5
5
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
6
6
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
7
7
|
import { n as withDetectionIntent } from "../restream-intent-B4BXZra7.mjs";
|