@camstack/addon-pipeline 1.2.231 → 1.2.233
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/{default-detection-model-C7fsHtHQ.js → default-detection-model-CDhXxOJQ.js} +1 -1
- package/dist/{default-detection-model-DC4yVaFM.mjs → default-detection-model-I8kuDTEi.mjs} +1 -1
- package/dist/detection-pipeline/index.js +4 -4
- package/dist/detection-pipeline/index.mjs +4 -4
- package/dist/{dist-DTPYOq7J.mjs → dist-But4XMDJ.mjs} +107 -6
- package/dist/{dist-p5lZW8pr.js → dist-NX0e_oWp.js} +107 -6
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-Cz92fVGW.mjs → node-BHxRrsoX.mjs} +1 -1
- package/dist/{node-CGVUk5S9.js → node-BgM4n8D4.js} +1 -1
- package/dist/pipeline-runner/index.js +205 -17
- package/dist/pipeline-runner/index.mjs +205 -17
- package/dist/{process-memory-BwijtYhM.mjs → process-memory-C3-EOjjf.mjs} +1 -1
- package/dist/{process-memory-COypUeEc.js → process-memory-C5_Mo9TI.js} +1 -1
- package/dist/recorder/index.js +3 -2
- package/dist/recorder/index.mjs +3 -2
- package/dist/{segment-demux-js-B-yzHYVc.js → segment-demux-js-BAD7i9RI.js} +1 -1
- package/dist/{segment-demux-js-CyaNDtrw.mjs → segment-demux-js-CVZACSOh.mjs} +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B9KO-igY.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DN-9qAgC.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D3XkHB88.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-JoG-yDpV.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DDCieNDB.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-CDwsQyIR.mjs → hostInit-CT06n_gA.mjs} +2 -2
- 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/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-mnvO611B.mjs +0 -26
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_process_memory = require("../process-memory-
|
|
6
|
+
const require_dist = require("../dist-NX0e_oWp.js");
|
|
7
|
+
const require_process_memory = require("../process-memory-C5_Mo9TI.js");
|
|
8
8
|
let node_fs = require("node:fs");
|
|
9
9
|
node_fs = require_chunk.__toESM(node_fs);
|
|
10
10
|
let node_path = require("node:path");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Kt as BaseAddon, N as audioAnalysisCapability, P as audioAnalyzerCapability, Qt as expandAudioChunkToF32le, Xt as audioChunkBytesPerSample, bn as EventCategory, ct as mapAudioLabelToMacro, n as AUDIO_BACKEND_CHOICES, rn as nodePin, s as DEFAULT_AUDIO_ANALYZER_CONFIG, w as PoolMemoryWatchdog, y as HF_BASE_URL, zt as errMsg } from "../dist-
|
|
3
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
2
|
+
import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Kt as BaseAddon, N as audioAnalysisCapability, P as audioAnalyzerCapability, Qt as expandAudioChunkToF32le, Xt as audioChunkBytesPerSample, bn as EventCategory, ct as mapAudioLabelToMacro, n as AUDIO_BACKEND_CHOICES, rn as nodePin, s as DEFAULT_AUDIO_ANALYZER_CONFIG, w as PoolMemoryWatchdog, y as HF_BASE_URL, zt as errMsg } from "../dist-But4XMDJ.mjs";
|
|
3
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C3-EOjjf.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as audioKindId, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS, rt as hfModelUrl } from "./dist-
|
|
1
|
+
import { F as audioKindId, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS, rt as hfModelUrl } from "./dist-But4XMDJ.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
//#region src/detection-pipeline/pipeline/landmark-precision-gate.ts
|
|
4
4
|
/**
|
|
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_node = require("../node-
|
|
8
|
-
const require_default_detection_model = require("../default-detection-model-
|
|
6
|
+
const require_dist = require("../dist-NX0e_oWp.js");
|
|
7
|
+
const require_node = require("../node-BgM4n8D4.js");
|
|
8
|
+
const require_default_detection_model = require("../default-detection-model-CDhXxOJQ.js");
|
|
9
9
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
10
|
-
const require_process_memory = require("../process-memory-
|
|
10
|
+
const require_process_memory = require("../process-memory-C5_Mo9TI.js");
|
|
11
11
|
let node_os = require("node:os");
|
|
12
12
|
node_os = require_chunk.__toESM(node_os);
|
|
13
13
|
let node_fs = require("node:fs");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Dt as resolveClusterStepModelId, H as defaultDeviceFor$1, Kt as BaseAddon, Lt as supportedRuntimes$1, Mt as runtimeDevices$1, Q as evaluateZoneRules, X as enumerateInferenceDevices, Zt as createEvent, _t as pickClusterStepModels, bn as EventCategory, c as DEFAULT_CLUSTER_STEP_MODELS, hn as object, ht as overlayClusterStepSettings, in as parseJsonUnknown, it as inferModelProvider, j as YAMNET_TO_MACRO, l as DEFAULT_CLUSTER_STEP_SETTINGS, ln as array, m as DEVICE_BACKEND_TO_FORMAT, ot as loadContributionCapability, q as detectionPipelineCapability, rn as nodePin, sn as sleep, t as APPLE_SA_TO_MACRO, vn as string, vt as pickClusterStepSettings, w as PoolMemoryWatchdog, xt as pipelineExecutorCapability, yn as union, zt as errMsg } from "../dist-
|
|
3
|
-
import { o as readProcessCost } from "../node-
|
|
4
|
-
import { a as ALL_PIPELINE_STEPS, c as getStep, d as landmarkPrecisionVerdict, l as getStepDefinition, n as resolveDefaultDetectionModel, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as resolveModelForFormat } from "../default-detection-model-
|
|
2
|
+
import { $t as hydrateSchema, At as resolvePoolMemoryPolicy, Dt as resolveClusterStepModelId, H as defaultDeviceFor$1, Kt as BaseAddon, Lt as supportedRuntimes$1, Mt as runtimeDevices$1, Q as evaluateZoneRules, X as enumerateInferenceDevices, Zt as createEvent, _t as pickClusterStepModels, bn as EventCategory, c as DEFAULT_CLUSTER_STEP_MODELS, hn as object, ht as overlayClusterStepSettings, in as parseJsonUnknown, it as inferModelProvider, j as YAMNET_TO_MACRO, l as DEFAULT_CLUSTER_STEP_SETTINGS, ln as array, m as DEVICE_BACKEND_TO_FORMAT, ot as loadContributionCapability, q as detectionPipelineCapability, rn as nodePin, sn as sleep, t as APPLE_SA_TO_MACRO, vn as string, vt as pickClusterStepSettings, w as PoolMemoryWatchdog, xt as pipelineExecutorCapability, yn as union, zt as errMsg } from "../dist-But4XMDJ.mjs";
|
|
3
|
+
import { o as readProcessCost } from "../node-BHxRrsoX.mjs";
|
|
4
|
+
import { a as ALL_PIPELINE_STEPS, c as getStep, d as landmarkPrecisionVerdict, l as getStepDefinition, n as resolveDefaultDetectionModel, o as ALL_STEPS, r as localFrameRegistry, s as getDefaultModelForFormat, u as resolveModelForFormat } from "../default-detection-model-I8kuDTEi.mjs";
|
|
5
5
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
6
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
6
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-C3-EOjjf.mjs";
|
|
7
7
|
import * as os from "node:os";
|
|
8
8
|
import * as fs from "node:fs";
|
|
9
9
|
import * as path$1 from "node:path";
|
|
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
|
|
|
5360
5360
|
var ZodFirstPartyTypeKind;
|
|
5361
5361
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5362
5362
|
//#endregion
|
|
5363
|
-
//#region ../types/dist/sleep-
|
|
5363
|
+
//#region ../types/dist/sleep-BEyvfshj.mjs
|
|
5364
5364
|
/**
|
|
5365
5365
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5366
5366
|
* window to float samples (D455).
|
|
@@ -23916,6 +23916,14 @@ var MotionSourceEnum = _enum([
|
|
|
23916
23916
|
*/
|
|
23917
23917
|
var MotionSourcesSchema = array(MotionSourceEnum);
|
|
23918
23918
|
/**
|
|
23919
|
+
* Which root detectors a camera runs. Deliberately the SAME vocabulary
|
|
23920
|
+
* post-analysis already tags every detection with (`DetectionSource`) rather
|
|
23921
|
+
* than a second spelling of the same two ideas — the value an operator picks
|
|
23922
|
+
* here is the value that comes back on the track, the overlay and the debug
|
|
23923
|
+
* row.
|
|
23924
|
+
*/
|
|
23925
|
+
var DetectionSourcesSchema = array(DetectionSourceSchema);
|
|
23926
|
+
/**
|
|
23919
23927
|
* Input shape for `pipeline-runner.reportMotion` cap method. Exported
|
|
23920
23928
|
* so cap-side consumers (the orchestrator forward, the runner addon's
|
|
23921
23929
|
* cap implementation, tests) can reuse the type instead of redeclaring
|
|
@@ -24066,6 +24074,35 @@ var RunnerCameraConfigSchema = object({
|
|
|
24066
24074
|
* events; the orchestrator forwards to `reportMotion`.
|
|
24067
24075
|
*/
|
|
24068
24076
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
24077
|
+
/**
|
|
24078
|
+
* WHICH root detector runs for this camera. The detection counterpart of
|
|
24079
|
+
* {@link motionSources}, same shape and same discipline: a per-camera list
|
|
24080
|
+
* of sources the system understands, vendor-agnostic, owned here.
|
|
24081
|
+
*
|
|
24082
|
+
* - `pipeline` — this runner's own root step on decoded pixels (`steps`).
|
|
24083
|
+
* - `onboard` — the CAMERA's own detector, admitted only when it is named
|
|
24084
|
+
* here. Its boxes reach post-analysis on the same
|
|
24085
|
+
* `PipelineInferenceResult` payload as the pipeline's, so an onboard-born
|
|
24086
|
+
* track gets the same tracker, the same overlay and the same detail
|
|
24087
|
+
* subtree (face / plate / embedding).
|
|
24088
|
+
*
|
|
24089
|
+
* `['onboard']` alone is the REPLACEMENT: this runner's root step does not
|
|
24090
|
+
* run, and that is where a camera with a usable onboard detector buys back
|
|
24091
|
+
* its share of the accelerator. It saves the root inference, not the decode
|
|
24092
|
+
* — the detail subtree still needs pixels to cut crops from.
|
|
24093
|
+
*
|
|
24094
|
+
* A camera whose onboard detections carry no geometry cannot serve as a root
|
|
24095
|
+
* step at all (there is nothing to track), and the cap that knows this says
|
|
24096
|
+
* so on `native-object-detection.getOptions().geometry`. On Reolink that is
|
|
24097
|
+
* every battery camera: the boxes ride a sub-stream a battery camera never
|
|
24098
|
+
* attaches, so such a camera stays on `['pipeline']` and its onboard AI is
|
|
24099
|
+
* worth exactly what it already is — a wake signal with a class.
|
|
24100
|
+
*
|
|
24101
|
+
* Defaults to `['pipeline']`, which is byte-for-byte today's behaviour: a
|
|
24102
|
+
* vendor never turns a detector on for the operator, and neither does a
|
|
24103
|
+
* default.
|
|
24104
|
+
*/
|
|
24105
|
+
detectionSources: DetectionSourcesSchema.default(["pipeline"]),
|
|
24069
24106
|
pipelineEnabled: boolean().default(true),
|
|
24070
24107
|
/** Ordered tree of video steps. Absent → runner skips video detection. */
|
|
24071
24108
|
steps: array(PipelineStepInputSchema).readonly().optional(),
|
|
@@ -30106,7 +30143,7 @@ var NativeDetectionSchema = object({
|
|
|
30106
30143
|
/** Firmware-provided confidence [0..1]. Reolink pushes don't carry it → undefined. */
|
|
30107
30144
|
confidence: number().min(0).max(1).optional()
|
|
30108
30145
|
});
|
|
30109
|
-
object({
|
|
30146
|
+
var NativeObjectDetectionStatusSchema = object({
|
|
30110
30147
|
/**
|
|
30111
30148
|
* Last observed instance per class. Missing entries mean the class
|
|
30112
30149
|
* is supported but nothing has been seen since the provider started.
|
|
@@ -30123,14 +30160,56 @@ object({
|
|
|
30123
30160
|
supportedClasses: array(NativeObjectClassEnum).readonly(),
|
|
30124
30161
|
/**
|
|
30125
30162
|
* Whether forwarding of onboard AI detections is enabled for this device.
|
|
30126
|
-
*
|
|
30127
|
-
*
|
|
30163
|
+
*
|
|
30164
|
+
* Cold-start OFF on every camera. A vendor does not decide which detector a
|
|
30165
|
+
* camera runs — that is the operator's choice, and it is made where every
|
|
30166
|
+
* other detection choice is made. `geometry` on
|
|
30167
|
+
* {@link NativeObjectDetectionOptionsSchema} is how the form says what the
|
|
30168
|
+
* choice would buy this particular camera.
|
|
30128
30169
|
*/
|
|
30129
30170
|
enabled: boolean()
|
|
30130
|
-
})
|
|
30171
|
+
});
|
|
30172
|
+
/**
|
|
30173
|
+
* WHEN a camera's onboard detections carry geometry.
|
|
30174
|
+
*
|
|
30175
|
+
* - `boxed` — always. The provider holds a standing channel for the boxes, so
|
|
30176
|
+
* a detection is a trackable subject whenever the camera sees one.
|
|
30177
|
+
* - `while-streaming` — only while some stream of this camera is already open.
|
|
30178
|
+
* The boxes ride the video's own side-channel rather than a feed of their
|
|
30179
|
+
* own, so they cost nothing and they exist only when something is pulling.
|
|
30180
|
+
* On Reolink this is every BATTERY camera: a persistent second feed is real
|
|
30181
|
+
* radio drain, but a camera that is awake is awake precisely because
|
|
30182
|
+
* something is in front of it, and its stream is already being pulled.
|
|
30183
|
+
* - `flag-only` — never. The firmware ships the class and nothing else; the
|
|
30184
|
+
* pipeline needs geometry to make a subject, so such a push reaches the
|
|
30185
|
+
* tracker as motion and no further.
|
|
30186
|
+
*
|
|
30187
|
+
* Reported and not inferred, because the operator's question in front of the
|
|
30188
|
+
* picker is "what do I get", and these are three different answers (D14: the
|
|
30189
|
+
* derived form is only as honest as `getOptions`).
|
|
30190
|
+
*/
|
|
30191
|
+
var NativeObjectGeometryEnum = _enum([
|
|
30192
|
+
"boxed",
|
|
30193
|
+
"while-streaming",
|
|
30194
|
+
"flag-only"
|
|
30195
|
+
]);
|
|
30196
|
+
var NativeObjectDetectionOptionsSchema = object({
|
|
30197
|
+
/** Classes this firmware can detect — the same list the status reports. */
|
|
30198
|
+
supportedClasses: array(NativeObjectClassEnum).readonly(),
|
|
30199
|
+
/** What a detection from this camera carries. */
|
|
30200
|
+
geometry: NativeObjectGeometryEnum
|
|
30201
|
+
});
|
|
30202
|
+
var NativeObjectDetectionSettingsPatchSchema = object({ enabled: boolean().optional() });
|
|
30203
|
+
NativeObjectDetectionStatusSchema.extend({
|
|
30131
30204
|
/** Required by createRuntimeStateBridge — epoch ms of last refresh. */
|
|
30132
30205
|
lastFetchedAt: number() });
|
|
30133
|
-
DeviceType.Camera, method(object({
|
|
30206
|
+
DeviceType.Camera, method(object({ deviceId: number() }), NativeObjectDetectionOptionsSchema), method(object({
|
|
30207
|
+
deviceId: number(),
|
|
30208
|
+
settings: NativeObjectDetectionSettingsPatchSchema
|
|
30209
|
+
}), _void(), {
|
|
30210
|
+
kind: "mutation",
|
|
30211
|
+
auth: "admin"
|
|
30212
|
+
}), method(object({
|
|
30134
30213
|
deviceId: number(),
|
|
30135
30214
|
enabled: boolean()
|
|
30136
30215
|
}), _void(), {
|
|
@@ -37282,12 +37361,24 @@ Object.freeze({
|
|
|
37282
37361
|
addonId: null,
|
|
37283
37362
|
access: "create"
|
|
37284
37363
|
},
|
|
37364
|
+
"nativeObjectDetection.getOptions": {
|
|
37365
|
+
capName: "native-object-detection",
|
|
37366
|
+
capScope: "device",
|
|
37367
|
+
addonId: null,
|
|
37368
|
+
access: "view"
|
|
37369
|
+
},
|
|
37285
37370
|
"nativeObjectDetection.setEnabled": {
|
|
37286
37371
|
capName: "native-object-detection",
|
|
37287
37372
|
capScope: "device",
|
|
37288
37373
|
addonId: null,
|
|
37289
37374
|
access: "create"
|
|
37290
37375
|
},
|
|
37376
|
+
"nativeObjectDetection.setSettings": {
|
|
37377
|
+
capName: "native-object-detection",
|
|
37378
|
+
capScope: "device",
|
|
37379
|
+
addonId: null,
|
|
37380
|
+
access: "create"
|
|
37381
|
+
},
|
|
37291
37382
|
"navigation.getFeatures": {
|
|
37292
37383
|
capName: "navigation",
|
|
37293
37384
|
capScope: "device",
|
|
@@ -41514,11 +41605,21 @@ Object.freeze({
|
|
|
41514
41605
|
form: "single",
|
|
41515
41606
|
optional: false
|
|
41516
41607
|
}],
|
|
41608
|
+
"nativeObjectDetection.getOptions": [{
|
|
41609
|
+
name: "deviceId",
|
|
41610
|
+
form: "single",
|
|
41611
|
+
optional: false
|
|
41612
|
+
}],
|
|
41517
41613
|
"nativeObjectDetection.setEnabled": [{
|
|
41518
41614
|
name: "deviceId",
|
|
41519
41615
|
form: "single",
|
|
41520
41616
|
optional: false
|
|
41521
41617
|
}],
|
|
41618
|
+
"nativeObjectDetection.setSettings": [{
|
|
41619
|
+
name: "deviceId",
|
|
41620
|
+
form: "single",
|
|
41621
|
+
optional: false
|
|
41622
|
+
}],
|
|
41522
41623
|
"navigation.getFeatures": [{
|
|
41523
41624
|
name: "deviceId",
|
|
41524
41625
|
form: "single",
|
|
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
|
|
|
5360
5360
|
var ZodFirstPartyTypeKind;
|
|
5361
5361
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5362
5362
|
//#endregion
|
|
5363
|
-
//#region ../types/dist/sleep-
|
|
5363
|
+
//#region ../types/dist/sleep-BEyvfshj.mjs
|
|
5364
5364
|
/**
|
|
5365
5365
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5366
5366
|
* window to float samples (D455).
|
|
@@ -23916,6 +23916,14 @@ var MotionSourceEnum = _enum([
|
|
|
23916
23916
|
*/
|
|
23917
23917
|
var MotionSourcesSchema = array(MotionSourceEnum);
|
|
23918
23918
|
/**
|
|
23919
|
+
* Which root detectors a camera runs. Deliberately the SAME vocabulary
|
|
23920
|
+
* post-analysis already tags every detection with (`DetectionSource`) rather
|
|
23921
|
+
* than a second spelling of the same two ideas — the value an operator picks
|
|
23922
|
+
* here is the value that comes back on the track, the overlay and the debug
|
|
23923
|
+
* row.
|
|
23924
|
+
*/
|
|
23925
|
+
var DetectionSourcesSchema = array(DetectionSourceSchema);
|
|
23926
|
+
/**
|
|
23919
23927
|
* Input shape for `pipeline-runner.reportMotion` cap method. Exported
|
|
23920
23928
|
* so cap-side consumers (the orchestrator forward, the runner addon's
|
|
23921
23929
|
* cap implementation, tests) can reuse the type instead of redeclaring
|
|
@@ -24066,6 +24074,35 @@ var RunnerCameraConfigSchema = object({
|
|
|
24066
24074
|
* events; the orchestrator forwards to `reportMotion`.
|
|
24067
24075
|
*/
|
|
24068
24076
|
motionSources: MotionSourcesSchema.default(["analyzer"]),
|
|
24077
|
+
/**
|
|
24078
|
+
* WHICH root detector runs for this camera. The detection counterpart of
|
|
24079
|
+
* {@link motionSources}, same shape and same discipline: a per-camera list
|
|
24080
|
+
* of sources the system understands, vendor-agnostic, owned here.
|
|
24081
|
+
*
|
|
24082
|
+
* - `pipeline` — this runner's own root step on decoded pixels (`steps`).
|
|
24083
|
+
* - `onboard` — the CAMERA's own detector, admitted only when it is named
|
|
24084
|
+
* here. Its boxes reach post-analysis on the same
|
|
24085
|
+
* `PipelineInferenceResult` payload as the pipeline's, so an onboard-born
|
|
24086
|
+
* track gets the same tracker, the same overlay and the same detail
|
|
24087
|
+
* subtree (face / plate / embedding).
|
|
24088
|
+
*
|
|
24089
|
+
* `['onboard']` alone is the REPLACEMENT: this runner's root step does not
|
|
24090
|
+
* run, and that is where a camera with a usable onboard detector buys back
|
|
24091
|
+
* its share of the accelerator. It saves the root inference, not the decode
|
|
24092
|
+
* — the detail subtree still needs pixels to cut crops from.
|
|
24093
|
+
*
|
|
24094
|
+
* A camera whose onboard detections carry no geometry cannot serve as a root
|
|
24095
|
+
* step at all (there is nothing to track), and the cap that knows this says
|
|
24096
|
+
* so on `native-object-detection.getOptions().geometry`. On Reolink that is
|
|
24097
|
+
* every battery camera: the boxes ride a sub-stream a battery camera never
|
|
24098
|
+
* attaches, so such a camera stays on `['pipeline']` and its onboard AI is
|
|
24099
|
+
* worth exactly what it already is — a wake signal with a class.
|
|
24100
|
+
*
|
|
24101
|
+
* Defaults to `['pipeline']`, which is byte-for-byte today's behaviour: a
|
|
24102
|
+
* vendor never turns a detector on for the operator, and neither does a
|
|
24103
|
+
* default.
|
|
24104
|
+
*/
|
|
24105
|
+
detectionSources: DetectionSourcesSchema.default(["pipeline"]),
|
|
24069
24106
|
pipelineEnabled: boolean().default(true),
|
|
24070
24107
|
/** Ordered tree of video steps. Absent → runner skips video detection. */
|
|
24071
24108
|
steps: array(PipelineStepInputSchema).readonly().optional(),
|
|
@@ -30106,7 +30143,7 @@ var NativeDetectionSchema = object({
|
|
|
30106
30143
|
/** Firmware-provided confidence [0..1]. Reolink pushes don't carry it → undefined. */
|
|
30107
30144
|
confidence: number().min(0).max(1).optional()
|
|
30108
30145
|
});
|
|
30109
|
-
object({
|
|
30146
|
+
var NativeObjectDetectionStatusSchema = object({
|
|
30110
30147
|
/**
|
|
30111
30148
|
* Last observed instance per class. Missing entries mean the class
|
|
30112
30149
|
* is supported but nothing has been seen since the provider started.
|
|
@@ -30123,14 +30160,56 @@ object({
|
|
|
30123
30160
|
supportedClasses: array(NativeObjectClassEnum).readonly(),
|
|
30124
30161
|
/**
|
|
30125
30162
|
* Whether forwarding of onboard AI detections is enabled for this device.
|
|
30126
|
-
*
|
|
30127
|
-
*
|
|
30163
|
+
*
|
|
30164
|
+
* Cold-start OFF on every camera. A vendor does not decide which detector a
|
|
30165
|
+
* camera runs — that is the operator's choice, and it is made where every
|
|
30166
|
+
* other detection choice is made. `geometry` on
|
|
30167
|
+
* {@link NativeObjectDetectionOptionsSchema} is how the form says what the
|
|
30168
|
+
* choice would buy this particular camera.
|
|
30128
30169
|
*/
|
|
30129
30170
|
enabled: boolean()
|
|
30130
|
-
})
|
|
30171
|
+
});
|
|
30172
|
+
/**
|
|
30173
|
+
* WHEN a camera's onboard detections carry geometry.
|
|
30174
|
+
*
|
|
30175
|
+
* - `boxed` — always. The provider holds a standing channel for the boxes, so
|
|
30176
|
+
* a detection is a trackable subject whenever the camera sees one.
|
|
30177
|
+
* - `while-streaming` — only while some stream of this camera is already open.
|
|
30178
|
+
* The boxes ride the video's own side-channel rather than a feed of their
|
|
30179
|
+
* own, so they cost nothing and they exist only when something is pulling.
|
|
30180
|
+
* On Reolink this is every BATTERY camera: a persistent second feed is real
|
|
30181
|
+
* radio drain, but a camera that is awake is awake precisely because
|
|
30182
|
+
* something is in front of it, and its stream is already being pulled.
|
|
30183
|
+
* - `flag-only` — never. The firmware ships the class and nothing else; the
|
|
30184
|
+
* pipeline needs geometry to make a subject, so such a push reaches the
|
|
30185
|
+
* tracker as motion and no further.
|
|
30186
|
+
*
|
|
30187
|
+
* Reported and not inferred, because the operator's question in front of the
|
|
30188
|
+
* picker is "what do I get", and these are three different answers (D14: the
|
|
30189
|
+
* derived form is only as honest as `getOptions`).
|
|
30190
|
+
*/
|
|
30191
|
+
var NativeObjectGeometryEnum = _enum([
|
|
30192
|
+
"boxed",
|
|
30193
|
+
"while-streaming",
|
|
30194
|
+
"flag-only"
|
|
30195
|
+
]);
|
|
30196
|
+
var NativeObjectDetectionOptionsSchema = object({
|
|
30197
|
+
/** Classes this firmware can detect — the same list the status reports. */
|
|
30198
|
+
supportedClasses: array(NativeObjectClassEnum).readonly(),
|
|
30199
|
+
/** What a detection from this camera carries. */
|
|
30200
|
+
geometry: NativeObjectGeometryEnum
|
|
30201
|
+
});
|
|
30202
|
+
var NativeObjectDetectionSettingsPatchSchema = object({ enabled: boolean().optional() });
|
|
30203
|
+
NativeObjectDetectionStatusSchema.extend({
|
|
30131
30204
|
/** Required by createRuntimeStateBridge — epoch ms of last refresh. */
|
|
30132
30205
|
lastFetchedAt: number() });
|
|
30133
|
-
DeviceType.Camera, method(object({
|
|
30206
|
+
DeviceType.Camera, method(object({ deviceId: number() }), NativeObjectDetectionOptionsSchema), method(object({
|
|
30207
|
+
deviceId: number(),
|
|
30208
|
+
settings: NativeObjectDetectionSettingsPatchSchema
|
|
30209
|
+
}), _void(), {
|
|
30210
|
+
kind: "mutation",
|
|
30211
|
+
auth: "admin"
|
|
30212
|
+
}), method(object({
|
|
30134
30213
|
deviceId: number(),
|
|
30135
30214
|
enabled: boolean()
|
|
30136
30215
|
}), _void(), {
|
|
@@ -37282,12 +37361,24 @@ Object.freeze({
|
|
|
37282
37361
|
addonId: null,
|
|
37283
37362
|
access: "create"
|
|
37284
37363
|
},
|
|
37364
|
+
"nativeObjectDetection.getOptions": {
|
|
37365
|
+
capName: "native-object-detection",
|
|
37366
|
+
capScope: "device",
|
|
37367
|
+
addonId: null,
|
|
37368
|
+
access: "view"
|
|
37369
|
+
},
|
|
37285
37370
|
"nativeObjectDetection.setEnabled": {
|
|
37286
37371
|
capName: "native-object-detection",
|
|
37287
37372
|
capScope: "device",
|
|
37288
37373
|
addonId: null,
|
|
37289
37374
|
access: "create"
|
|
37290
37375
|
},
|
|
37376
|
+
"nativeObjectDetection.setSettings": {
|
|
37377
|
+
capName: "native-object-detection",
|
|
37378
|
+
capScope: "device",
|
|
37379
|
+
addonId: null,
|
|
37380
|
+
access: "create"
|
|
37381
|
+
},
|
|
37291
37382
|
"navigation.getFeatures": {
|
|
37292
37383
|
capName: "navigation",
|
|
37293
37384
|
capScope: "device",
|
|
@@ -41514,11 +41605,21 @@ Object.freeze({
|
|
|
41514
41605
|
form: "single",
|
|
41515
41606
|
optional: false
|
|
41516
41607
|
}],
|
|
41608
|
+
"nativeObjectDetection.getOptions": [{
|
|
41609
|
+
name: "deviceId",
|
|
41610
|
+
form: "single",
|
|
41611
|
+
optional: false
|
|
41612
|
+
}],
|
|
41517
41613
|
"nativeObjectDetection.setEnabled": [{
|
|
41518
41614
|
name: "deviceId",
|
|
41519
41615
|
form: "single",
|
|
41520
41616
|
optional: false
|
|
41521
41617
|
}],
|
|
41618
|
+
"nativeObjectDetection.setSettings": [{
|
|
41619
|
+
name: "deviceId",
|
|
41620
|
+
form: "single",
|
|
41621
|
+
optional: false
|
|
41622
|
+
}],
|
|
41522
41623
|
"navigation.getFeatures": [{
|
|
41523
41624
|
name: "deviceId",
|
|
41524
41625
|
form: "single",
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-NX0e_oWp.js");
|
|
6
6
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $t as hydrateSchema, Kt as BaseAddon, Q as evaluateZoneRules, Yt as DeviceType, mt as motionDetectionCapability } from "../dist-
|
|
1
|
+
import { $t as hydrateSchema, Kt as BaseAddon, Q as evaluateZoneRules, Yt as DeviceType, mt as motionDetectionCapability } from "../dist-But4XMDJ.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 { Ht as buildFfmpegArgs, Vt as Fmp4BoxSplitter, Wt as isSoftwareDecode, zt as errMsg } from "./dist-
|
|
1
|
+
import { Ht as buildFfmpegArgs, Vt as Fmp4BoxSplitter, Wt as isSoftwareDecode, zt as errMsg } from "./dist-But4XMDJ.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-NX0e_oWp.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_fs = require("node:fs");
|
|
5
5
|
node_fs = require_chunk.__toESM(node_fs, 1);
|