@camstack/addon-pipeline 1.2.192 → 1.2.193
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 +7 -7
- package/dist/detection-pipeline/index.mjs +5 -5
- package/dist/{dist-CXO_Fmx6.js → dist-HG5geL9t.js} +129 -1
- package/dist/{dist-B8J7wrtY.mjs → dist-mYDK58Jp.mjs} +118 -2
- package/dist/{lazy-sharp-o-aNNXuz.js → lazy-sharp-DmAwZ0s9.js} +1 -1
- package/dist/{local-frame-registry-BDeDpYQk.mjs → local-frame-registry-av9ObDG0.mjs} +1 -1
- package/dist/{local-frame-registry-P7tSfvaY.js → local-frame-registry-x3m6SNqf.js} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-DF98pVP7.js → node--my8JTOW.js} +1 -1
- package/dist/{node-BSbB0or0.mjs → node-xRsaPwBa.mjs} +1 -1
- package/dist/pipeline-runner/index.js +255 -221
- package/dist/pipeline-runner/index.mjs +253 -219
- package/dist/{process-memory-BZTgJyE8.mjs → process-memory-BDHR3lxe.mjs} +1 -1
- package/dist/{process-memory-BVMk3gfY.js → process-memory-CoCSce63.js} +1 -1
- package/dist/recorder/index.js +319 -8
- package/dist/recorder/index.mjs +319 -8
- package/dist/{segment-demux-js-CLaSHw0n.js → segment-demux-js-CBynn9Gh.js} +1 -1
- package/dist/{segment-demux-js-0L1EF4Fg.mjs → segment-demux-js-CXvgKfsn.mjs} +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 +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BmNfrv_U.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CUjbLOm9.mjs} +3 -3
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D8AK-_F6.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B_NVJXAy.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-DQLtjntf.mjs → hostInit-DnBCyuSA.mjs} +3 -3
- package/dist/stream-broker/index.js +93 -43
- package/dist/stream-broker/index.mjs +93 -43
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-WiXU2VuW.mjs → worker-protocol-C0R1DDC0.mjs} +1 -1
- package/dist/{worker-protocol-BJzhw3t0.js → worker-protocol-DCsi4YS1.js} +1 -1
- package/package.json +1 -1
|
@@ -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-HG5geL9t.js");
|
|
6
|
+
const require_process_memory = require("../process-memory-CoCSce63.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 {
|
|
3
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
2
|
+
import { Et as errMsg, M as audioAnalyzerCapability, Nt as BaseAddon, Rt as hydrateSchema, S as PoolMemoryWatchdog, j as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, rt as mapAudioLabelToMacro, s as DEFAULT_AUDIO_ANALYZER_CONFIG, v as HF_BASE_URL, yt as resolvePoolMemoryPolicy } from "../dist-mYDK58Jp.mjs";
|
|
3
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-BDHR3lxe.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,14 @@ 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-HG5geL9t.js");
|
|
6
|
+
const require_node = require("../node--my8JTOW.js");
|
|
7
|
+
const require_local_frame_registry = require("../local-frame-registry-x3m6SNqf.js");
|
|
8
|
+
const require_lazy_sharp = require("../lazy-sharp-DmAwZ0s9.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-CoCSce63.js");
|
|
11
|
+
let node_os = require("node:os");
|
|
12
|
+
node_os = require_dist.__toESM(node_os);
|
|
11
13
|
let node_fs = require("node:fs");
|
|
12
14
|
node_fs = require_dist.__toESM(node_fs);
|
|
13
15
|
let node_path = require("node:path");
|
|
@@ -15,8 +17,6 @@ node_path = require_dist.__toESM(node_path);
|
|
|
15
17
|
let node_child_process = require("node:child_process");
|
|
16
18
|
let sharp = require("sharp");
|
|
17
19
|
sharp = require_dist.__toESM(sharp);
|
|
18
|
-
let node_os = require("node:os");
|
|
19
|
-
node_os = require_dist.__toESM(node_os);
|
|
20
20
|
let _camstack_system_addon_utils = require("@camstack/system/addon-utils");
|
|
21
21
|
//#region src/detection-pipeline/runtimes.ts
|
|
22
22
|
var KNOWN_PLATFORMS = [
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import {
|
|
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 { $ as inferModelProvider, B as defaultDeviceFor$1, Et as errMsg, G as detectionPipelineCapability, Ht as nodePin, J as enumerateInferenceDevices, Jt as array, Kt as sleep, Lt as createEvent, Nt as BaseAddon, Rt as hydrateSchema, S as PoolMemoryWatchdog, Ut as parseJsonUnknown, X as evaluateZoneRules, _t as resolveClusterStepModelId, c as DEFAULT_CLUSTER_STEP_MODELS, ct as pickClusterStepModels, en as object, ft as pipelineExecutorCapability, in as EventCategory, k as YAMNET_TO_MACRO, l as DEFAULT_CLUSTER_STEP_SETTINGS, lt as pickClusterStepSettings, m as DEVICE_BACKEND_TO_FORMAT, nn as string, ot as overlayClusterStepSettings, rn as union, t as APPLE_SA_TO_MACRO, tt as loadContributionCapability, wt as supportedRuntimes$1, xt as runtimeDevices$1, yt as resolvePoolMemoryPolicy } from "../dist-mYDK58Jp.mjs";
|
|
3
|
+
import { a as readProcessCost } from "../node-xRsaPwBa.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-av9ObDG0.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-BDHR3lxe.mjs";
|
|
8
|
+
import * as os from "node:os";
|
|
8
9
|
import * as fs from "node:fs";
|
|
9
10
|
import * as path$1 from "node:path";
|
|
10
11
|
import { dirname, join } from "node:path";
|
|
11
12
|
import { spawn } from "node:child_process";
|
|
12
13
|
import sharp from "sharp";
|
|
13
|
-
import * as os from "node:os";
|
|
14
14
|
import { deleteModelFromDisk, ensureModel, isModelDownloaded } from "@camstack/system/addon-utils";
|
|
15
15
|
//#region src/detection-pipeline/runtimes.ts
|
|
16
16
|
var KNOWN_PLATFORMS = [
|
|
@@ -6490,6 +6490,21 @@ var CameraStreamSchema = object({
|
|
|
6490
6490
|
*/
|
|
6491
6491
|
autoEligible: boolean().optional(),
|
|
6492
6492
|
/**
|
|
6493
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
6494
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
6495
|
+
* stream. Consulted by the broker's automatic ranking
|
|
6496
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
6497
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
6498
|
+
* pixel-ranked default every camera had before this field existed.
|
|
6499
|
+
*
|
|
6500
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
6501
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
6502
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
6503
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
6504
|
+
* heuristic put it in.
|
|
6505
|
+
*/
|
|
6506
|
+
profileHint: CamProfileSchema.optional(),
|
|
6507
|
+
/**
|
|
6493
6508
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6494
6509
|
* the source reader without inspecting it. Currently used by
|
|
6495
6510
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -9155,7 +9170,22 @@ var RecordingTriggersSchema = object({
|
|
|
9155
9170
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
9156
9171
|
* registrare.
|
|
9157
9172
|
*/
|
|
9158
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9173
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
9174
|
+
/**
|
|
9175
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
9176
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
9177
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
9178
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
9179
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
9180
|
+
*
|
|
9181
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
9182
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
9183
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
9184
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
9185
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
9186
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
9187
|
+
*/
|
|
9188
|
+
deviceSignal: boolean().optional()
|
|
9159
9189
|
});
|
|
9160
9190
|
/**
|
|
9161
9191
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -12921,6 +12951,8 @@ var streamBrokerCapability = {
|
|
|
12921
12951
|
label: string().optional(),
|
|
12922
12952
|
deviceFeatures: array(string()).optional(),
|
|
12923
12953
|
autoEligible: boolean().optional(),
|
|
12954
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
12955
|
+
profileHint: CamProfileSchema.optional(),
|
|
12924
12956
|
metadata: record(string(), unknown()).optional(),
|
|
12925
12957
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
12926
12958
|
* derived broker reads its encoded plane from.
|
|
@@ -30724,6 +30756,77 @@ var recordingExportCapability = {
|
|
|
30724
30756
|
}
|
|
30725
30757
|
};
|
|
30726
30758
|
/**
|
|
30759
|
+
* A camera's own "record me NOW" LEVEL — a signal the device raises while
|
|
30760
|
+
* something it knows about is happening (a robot vacuum cleaning, a machine
|
|
30761
|
+
* running, a gate open) and lowers when it stops.
|
|
30762
|
+
*
|
|
30763
|
+
* It is a level, not an edge. The sensor triggers the recorder already listens
|
|
30764
|
+
* to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
|
|
30765
|
+
* post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
|
|
30766
|
+
* still happening" cannot be expressed as an edge plus a post-buffer without
|
|
30767
|
+
* either re-triggering on a timer (polling — D224 forbids the consumer keeping
|
|
30768
|
+
* the fact fresh) or picking a post-buffer long enough to cover every job,
|
|
30769
|
+
* which records the dock for that long after every short one. So the recorder
|
|
30770
|
+
* reads the LEVEL: it records for as long as `active` is true, plus the band's
|
|
30771
|
+
* own post-buffer once it falls.
|
|
30772
|
+
*
|
|
30773
|
+
* Who owns the fact: the PROVIDER of the device, which already reads the state
|
|
30774
|
+
* the signal is derived from (the vacuum's lifecycle state, for Dreame). It
|
|
30775
|
+
* writes this slice on every change; consumers subscribe to the kernel's
|
|
30776
|
+
* `DeviceStateChanged` for it and read it back through
|
|
30777
|
+
* `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
|
|
30778
|
+
* against the device (D224, D8/D11).
|
|
30779
|
+
*
|
|
30780
|
+
* Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
|
|
30781
|
+
* to Home Assistant, HomeKit and the sensor picker as a thing an operator can
|
|
30782
|
+
* bind, and "the camera wants to record" is not a room sensor. It is a fact
|
|
30783
|
+
* about the camera, on the camera.
|
|
30784
|
+
*/
|
|
30785
|
+
var RecordingSignalStatusSchema = object({
|
|
30786
|
+
/** True while the device asks to be recorded. */
|
|
30787
|
+
active: boolean(),
|
|
30788
|
+
/**
|
|
30789
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
30790
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
30791
|
+
* branches on it.
|
|
30792
|
+
*/
|
|
30793
|
+
reason: string(),
|
|
30794
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
30795
|
+
lastChangedAt: number()
|
|
30796
|
+
});
|
|
30797
|
+
/** The runtime-state slice: the status plus the clock every slice carries. */
|
|
30798
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: number() });
|
|
30799
|
+
var recordingSignalCapability = {
|
|
30800
|
+
name: "recording-signal",
|
|
30801
|
+
scope: "device",
|
|
30802
|
+
deviceNative: true,
|
|
30803
|
+
mode: "singleton",
|
|
30804
|
+
deviceTypes: [DeviceType.Camera],
|
|
30805
|
+
methods: {
|
|
30806
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
30807
|
+
getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) },
|
|
30808
|
+
status: {
|
|
30809
|
+
schema: RecordingSignalStatusSchema,
|
|
30810
|
+
kind: "push",
|
|
30811
|
+
empty: {
|
|
30812
|
+
active: false,
|
|
30813
|
+
reason: "unknown",
|
|
30814
|
+
lastChangedAt: 0
|
|
30815
|
+
}
|
|
30816
|
+
},
|
|
30817
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
30818
|
+
/**
|
|
30819
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
30820
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
30821
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
30822
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
30823
|
+
*
|
|
30824
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
30825
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
30826
|
+
*/
|
|
30827
|
+
durability: "session"
|
|
30828
|
+
};
|
|
30829
|
+
/**
|
|
30727
30830
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30728
30831
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30729
30832
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31096,6 +31199,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31096
31199
|
deviceFeatures: array(string()).optional(),
|
|
31097
31200
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31098
31201
|
autoEligible: boolean().optional(),
|
|
31202
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31203
|
+
profileHint: CamProfileSchema.optional(),
|
|
31099
31204
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31100
31205
|
metadata: record(string(), unknown()).optional()
|
|
31101
31206
|
});
|
|
@@ -37200,6 +37305,12 @@ Object.freeze({
|
|
|
37200
37305
|
addonId: null,
|
|
37201
37306
|
access: "view"
|
|
37202
37307
|
},
|
|
37308
|
+
"recordingSignal.getStatus": {
|
|
37309
|
+
capName: "recording-signal",
|
|
37310
|
+
capScope: "device",
|
|
37311
|
+
addonId: null,
|
|
37312
|
+
access: "view"
|
|
37313
|
+
},
|
|
37203
37314
|
"sceneMonitor.captureReference": {
|
|
37204
37315
|
capName: "scene-monitor",
|
|
37205
37316
|
capScope: "device",
|
|
@@ -40192,6 +40303,11 @@ Object.freeze({
|
|
|
40192
40303
|
form: "single",
|
|
40193
40304
|
optional: true
|
|
40194
40305
|
}],
|
|
40306
|
+
"recordingSignal.getStatus": [{
|
|
40307
|
+
name: "deviceId",
|
|
40308
|
+
form: "single",
|
|
40309
|
+
optional: false
|
|
40310
|
+
}],
|
|
40195
40311
|
"sceneMonitor.captureReference": [{
|
|
40196
40312
|
name: "deviceId",
|
|
40197
40313
|
form: "single",
|
|
@@ -42330,6 +42446,12 @@ Object.defineProperty(exports, "RecordingConfigSchema", {
|
|
|
42330
42446
|
return RecordingConfigSchema;
|
|
42331
42447
|
}
|
|
42332
42448
|
});
|
|
42449
|
+
Object.defineProperty(exports, "RecordingSignalStatusSchema", {
|
|
42450
|
+
enumerable: true,
|
|
42451
|
+
get: function() {
|
|
42452
|
+
return RecordingSignalStatusSchema;
|
|
42453
|
+
}
|
|
42454
|
+
});
|
|
42333
42455
|
Object.defineProperty(exports, "RingBuffer", {
|
|
42334
42456
|
enumerable: true,
|
|
42335
42457
|
get: function() {
|
|
@@ -42720,6 +42842,12 @@ Object.defineProperty(exports, "recordingExportCapability", {
|
|
|
42720
42842
|
return recordingExportCapability;
|
|
42721
42843
|
}
|
|
42722
42844
|
});
|
|
42845
|
+
Object.defineProperty(exports, "recordingSignalCapability", {
|
|
42846
|
+
enumerable: true,
|
|
42847
|
+
get: function() {
|
|
42848
|
+
return recordingSignalCapability;
|
|
42849
|
+
}
|
|
42850
|
+
});
|
|
42723
42851
|
Object.defineProperty(exports, "resolveClusterStepModelId", {
|
|
42724
42852
|
enumerable: true,
|
|
42725
42853
|
get: function() {
|
|
@@ -6467,6 +6467,21 @@ var CameraStreamSchema = object({
|
|
|
6467
6467
|
*/
|
|
6468
6468
|
autoEligible: boolean().optional(),
|
|
6469
6469
|
/**
|
|
6470
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
6471
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
6472
|
+
* stream. Consulted by the broker's automatic ranking
|
|
6473
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
6474
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
6475
|
+
* pixel-ranked default every camera had before this field existed.
|
|
6476
|
+
*
|
|
6477
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
6478
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
6479
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
6480
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
6481
|
+
* heuristic put it in.
|
|
6482
|
+
*/
|
|
6483
|
+
profileHint: CamProfileSchema.optional(),
|
|
6484
|
+
/**
|
|
6470
6485
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6471
6486
|
* the source reader without inspecting it. Currently used by
|
|
6472
6487
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -9132,7 +9147,22 @@ var RecordingTriggersSchema = object({
|
|
|
9132
9147
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
9133
9148
|
* registrare.
|
|
9134
9149
|
*/
|
|
9135
|
-
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9150
|
+
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
9151
|
+
/**
|
|
9152
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
9153
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
9154
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
9155
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
9156
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
9157
|
+
*
|
|
9158
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
9159
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
9160
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
9161
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
9162
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
9163
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
9164
|
+
*/
|
|
9165
|
+
deviceSignal: boolean().optional()
|
|
9136
9166
|
});
|
|
9137
9167
|
/**
|
|
9138
9168
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -12898,6 +12928,8 @@ var streamBrokerCapability = {
|
|
|
12898
12928
|
label: string().optional(),
|
|
12899
12929
|
deviceFeatures: array(string()).optional(),
|
|
12900
12930
|
autoEligible: boolean().optional(),
|
|
12931
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
12932
|
+
profileHint: CamProfileSchema.optional(),
|
|
12901
12933
|
metadata: record(string(), unknown()).optional(),
|
|
12902
12934
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
12903
12935
|
* derived broker reads its encoded plane from.
|
|
@@ -30701,6 +30733,77 @@ var recordingExportCapability = {
|
|
|
30701
30733
|
}
|
|
30702
30734
|
};
|
|
30703
30735
|
/**
|
|
30736
|
+
* A camera's own "record me NOW" LEVEL — a signal the device raises while
|
|
30737
|
+
* something it knows about is happening (a robot vacuum cleaning, a machine
|
|
30738
|
+
* running, a gate open) and lowers when it stops.
|
|
30739
|
+
*
|
|
30740
|
+
* It is a level, not an edge. The sensor triggers the recorder already listens
|
|
30741
|
+
* to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
|
|
30742
|
+
* post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
|
|
30743
|
+
* still happening" cannot be expressed as an edge plus a post-buffer without
|
|
30744
|
+
* either re-triggering on a timer (polling — D224 forbids the consumer keeping
|
|
30745
|
+
* the fact fresh) or picking a post-buffer long enough to cover every job,
|
|
30746
|
+
* which records the dock for that long after every short one. So the recorder
|
|
30747
|
+
* reads the LEVEL: it records for as long as `active` is true, plus the band's
|
|
30748
|
+
* own post-buffer once it falls.
|
|
30749
|
+
*
|
|
30750
|
+
* Who owns the fact: the PROVIDER of the device, which already reads the state
|
|
30751
|
+
* the signal is derived from (the vacuum's lifecycle state, for Dreame). It
|
|
30752
|
+
* writes this slice on every change; consumers subscribe to the kernel's
|
|
30753
|
+
* `DeviceStateChanged` for it and read it back through
|
|
30754
|
+
* `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
|
|
30755
|
+
* against the device (D224, D8/D11).
|
|
30756
|
+
*
|
|
30757
|
+
* Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
|
|
30758
|
+
* to Home Assistant, HomeKit and the sensor picker as a thing an operator can
|
|
30759
|
+
* bind, and "the camera wants to record" is not a room sensor. It is a fact
|
|
30760
|
+
* about the camera, on the camera.
|
|
30761
|
+
*/
|
|
30762
|
+
var RecordingSignalStatusSchema = object({
|
|
30763
|
+
/** True while the device asks to be recorded. */
|
|
30764
|
+
active: boolean(),
|
|
30765
|
+
/**
|
|
30766
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
30767
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
30768
|
+
* branches on it.
|
|
30769
|
+
*/
|
|
30770
|
+
reason: string(),
|
|
30771
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
30772
|
+
lastChangedAt: number()
|
|
30773
|
+
});
|
|
30774
|
+
/** The runtime-state slice: the status plus the clock every slice carries. */
|
|
30775
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: number() });
|
|
30776
|
+
var recordingSignalCapability = {
|
|
30777
|
+
name: "recording-signal",
|
|
30778
|
+
scope: "device",
|
|
30779
|
+
deviceNative: true,
|
|
30780
|
+
mode: "singleton",
|
|
30781
|
+
deviceTypes: [DeviceType.Camera],
|
|
30782
|
+
methods: {
|
|
30783
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
30784
|
+
getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) },
|
|
30785
|
+
status: {
|
|
30786
|
+
schema: RecordingSignalStatusSchema,
|
|
30787
|
+
kind: "push",
|
|
30788
|
+
empty: {
|
|
30789
|
+
active: false,
|
|
30790
|
+
reason: "unknown",
|
|
30791
|
+
lastChangedAt: 0
|
|
30792
|
+
}
|
|
30793
|
+
},
|
|
30794
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
30795
|
+
/**
|
|
30796
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
30797
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
30798
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
30799
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
30800
|
+
*
|
|
30801
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
30802
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
30803
|
+
*/
|
|
30804
|
+
durability: "session"
|
|
30805
|
+
};
|
|
30806
|
+
/**
|
|
30704
30807
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30705
30808
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30706
30809
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31073,6 +31176,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31073
31176
|
deviceFeatures: array(string()).optional(),
|
|
31074
31177
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31075
31178
|
autoEligible: boolean().optional(),
|
|
31179
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31180
|
+
profileHint: CamProfileSchema.optional(),
|
|
31076
31181
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31077
31182
|
metadata: record(string(), unknown()).optional()
|
|
31078
31183
|
});
|
|
@@ -37177,6 +37282,12 @@ Object.freeze({
|
|
|
37177
37282
|
addonId: null,
|
|
37178
37283
|
access: "view"
|
|
37179
37284
|
},
|
|
37285
|
+
"recordingSignal.getStatus": {
|
|
37286
|
+
capName: "recording-signal",
|
|
37287
|
+
capScope: "device",
|
|
37288
|
+
addonId: null,
|
|
37289
|
+
access: "view"
|
|
37290
|
+
},
|
|
37180
37291
|
"sceneMonitor.captureReference": {
|
|
37181
37292
|
capName: "scene-monitor",
|
|
37182
37293
|
capScope: "device",
|
|
@@ -40169,6 +40280,11 @@ Object.freeze({
|
|
|
40169
40280
|
form: "single",
|
|
40170
40281
|
optional: true
|
|
40171
40282
|
}],
|
|
40283
|
+
"recordingSignal.getStatus": [{
|
|
40284
|
+
name: "deviceId",
|
|
40285
|
+
form: "single",
|
|
40286
|
+
optional: false
|
|
40287
|
+
}],
|
|
40172
40288
|
"sceneMonitor.captureReference": [{
|
|
40173
40289
|
name: "deviceId",
|
|
40174
40290
|
form: "single",
|
|
@@ -42103,4 +42219,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
42103
42219
|
return out;
|
|
42104
42220
|
}
|
|
42105
42221
|
//#endregion
|
|
42106
|
-
export {
|
|
42222
|
+
export { inferModelProvider as $, number as $t, addonWidgetsSourceCapability as A, invocationFromEncodeProfile as At, defaultDeviceFor as B, makeProfileBrokerId as Bt, RATE_CONTROL_RELAXED as C, streamBrokerCapability as Ct, RecordingSignalStatusSchema as D, AUDIO_PRESETS as Dt, RecordingConfigSchema as E, errMsg as Et, cameraStreamsCapability as F, DeviceFeature as Ft, detectionPipelineCapability as G, selectAssignedProfileSlots as Gt, deriveBatteryPresence as H, nodePin as Ht, createHwAccelCache as I, DeviceType as It, enumerateInferenceDevices as J, array as Jt, egressTranscodeSharingKey as K, sleep as Kt, createLogChannelsProvider as L, createEvent as Lt, audioAnalyzerCapability as M, BOOT_RECOVERY_BACKOFF_MS as Mt, audioKindId as N, BaseAddon as Nt, RingBuffer as O, Fmp4BoxSplitter as Ot, batteryCapability as P, CAM_PROFILE_ORDER as Pt, hfModelUrl as Q, literal as Qt, customAction as R, hydrateSchema as Rt, PoolMemoryWatchdog as S, storageEvictableCapability as St, RECORDING_EXPORT_MAX_READ_BYTES as T, webrtcSessionCapability as Tt, deriveDetailCropRect as U, parseJsonUnknown as Ut, defineCustomActions as V, makeSourceBrokerId as Vt, deriveRecordingMode as W, parseProfileBrokerId as Wt, evaluateZoneRules as X, discriminatedUnion as Xt, evaluateSensorEdge as Y, boolean as Yt, failureContributionCapability as Z, lazy as Zt, FailureCounters as _, resolveClusterStepModelId as _t, COCO_80_LABELS as a, motionDetectionCapability as at, NativeLeaseSettingsSchema as b, resolveRecordingProfiles as bt, DEFAULT_CLUSTER_STEP_MODELS as c, pickClusterStepModels as ct, DEFAULT_EVENTS_BAND_BUFFER_SEC as d, pickNativeLeaseOverride as dt, object as en, isFirstLevelMacroClass as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, pipelineExecutorCapability as ft, ExportRecordSchema as g, recordingSignalCapability as gt, EncodeProfileSchema as h, recordingExportCapability as ht, BatteryStatusSchema as i, EventCategory as in, maskUrlCredentials as it, audioAnalysisCapability as j, isSoftwareDecode as jt, YAMNET_TO_MACRO as k, buildFfmpegArgs as kt, DEFAULT_CLUSTER_STEP_SETTINGS as l, pickClusterStepSettings as lt, DEVICE_BACKEND_TO_FORMAT as m, recordingCapability as mt, AUDIO_BACKEND_CHOICES as n, string as nn, logChannelsCapability as nt, COCO_TO_MACRO as o, overlayClusterStepSettings as ot, DEFAULT_NATIVE_LEASE_SETTINGS as p, pipelineRunnerCapability as pt, egressTransportFromRequest as q, _enum as qt, AUDIO_MACRO_LABELS as r, union as rn, mapAudioLabelToMacro as rt, DEFAULT_AUDIO_ANALYZER_CONFIG as s, parseProcStatus as st, APPLE_SA_TO_MACRO as t, record as tn, loadContributionCapability as tt, DEFAULT_DETAIL_CROP_CONVENTION as u, pickDetailCropConvention as ut, HF_BASE_URL as v, resolveEgressDecodeHwAccel as vt, RATE_CONTROL_TIGHT as w, supportedRuntimes as wt, OpsLogEntrySchema as x, runtimeDevices as xt, NativeLeaseAdmissionSchema as y, resolvePoolMemoryPolicy as yt, declareLogChannel as z, isEvent as zt };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { N as audioKindId, Q as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-mYDK58Jp.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-HG5geL9t.js");
|
|
6
|
+
const require_lazy_sharp = require("../lazy-sharp-DmAwZ0s9.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
|
|
1
|
+
import { It as DeviceType, Nt as BaseAddon, Rt as hydrateSchema, X as evaluateZoneRules, at as motionDetectionCapability } from "../dist-mYDK58Jp.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 {
|
|
1
|
+
import { Et as errMsg, Ot as Fmp4BoxSplitter, jt as isSoftwareDecode, kt as buildFfmpegArgs } from "./dist-mYDK58Jp.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import "node:fs";
|
|
4
4
|
import "node:path";
|