@camstack/addon-pipeline 1.2.191 → 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-PQArEi7A.js → dist-HG5geL9t.js} +135 -1
- package/dist/{dist-Cjazw3T-.mjs → dist-mYDK58Jp.mjs} +124 -2
- package/dist/{lazy-sharp-DfnnPeG5.js → lazy-sharp-DmAwZ0s9.js} +1 -1
- package/dist/{local-frame-registry-CrLITJ5O.mjs → local-frame-registry-av9ObDG0.mjs} +1 -1
- package/dist/{local-frame-registry-DNVTAOrZ.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-wFmd_eR_.js → node--my8JTOW.js} +1 -1
- package/dist/{node-KFUZT2L-.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-BgX9_XQ5.mjs → process-memory-BDHR3lxe.mjs} +1 -1
- package/dist/{process-memory-B4o15Ps9.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-C36b7S82.js → segment-demux-js-CBynn9Gh.js} +1 -1
- package/dist/{segment-demux-js-Cgz-NlSg.mjs → segment-demux-js-CXvgKfsn.mjs} +1 -1
- package/dist/session-decode/decode-worker-child.js +45 -10
- package/dist/session-decode/decode-worker-child.mjs +44 -9
- package/dist/stream-broker/_stub.js +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-YWGmRusr.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-CuZBoqi0.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-n4hf2NsC.mjs → worker-protocol-C0R1DDC0.mjs} +1 -1
- package/dist/{worker-protocol-BulRQMSK.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 = [
|
|
@@ -5429,6 +5429,12 @@ Object.fromEntries([
|
|
|
5429
5429
|
icon: "move",
|
|
5430
5430
|
order: 40
|
|
5431
5431
|
},
|
|
5432
|
+
{
|
|
5433
|
+
id: "navigation",
|
|
5434
|
+
label: "Navigation",
|
|
5435
|
+
icon: "compass",
|
|
5436
|
+
order: 41
|
|
5437
|
+
},
|
|
5432
5438
|
{
|
|
5433
5439
|
id: "consumables",
|
|
5434
5440
|
label: "Consumables",
|
|
@@ -6484,6 +6490,21 @@ var CameraStreamSchema = object({
|
|
|
6484
6490
|
*/
|
|
6485
6491
|
autoEligible: boolean().optional(),
|
|
6486
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
|
+
/**
|
|
6487
6508
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6488
6509
|
* the source reader without inspecting it. Currently used by
|
|
6489
6510
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -9149,7 +9170,22 @@ var RecordingTriggersSchema = object({
|
|
|
9149
9170
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
9150
9171
|
* registrare.
|
|
9151
9172
|
*/
|
|
9152
|
-
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()
|
|
9153
9189
|
});
|
|
9154
9190
|
/**
|
|
9155
9191
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -12915,6 +12951,8 @@ var streamBrokerCapability = {
|
|
|
12915
12951
|
label: string().optional(),
|
|
12916
12952
|
deviceFeatures: array(string()).optional(),
|
|
12917
12953
|
autoEligible: boolean().optional(),
|
|
12954
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
12955
|
+
profileHint: CamProfileSchema.optional(),
|
|
12918
12956
|
metadata: record(string(), unknown()).optional(),
|
|
12919
12957
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
12920
12958
|
* derived broker reads its encoded plane from.
|
|
@@ -30718,6 +30756,77 @@ var recordingExportCapability = {
|
|
|
30718
30756
|
}
|
|
30719
30757
|
};
|
|
30720
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
|
+
/**
|
|
30721
30830
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30722
30831
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30723
30832
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31090,6 +31199,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31090
31199
|
deviceFeatures: array(string()).optional(),
|
|
31091
31200
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31092
31201
|
autoEligible: boolean().optional(),
|
|
31202
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31203
|
+
profileHint: CamProfileSchema.optional(),
|
|
31093
31204
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31094
31205
|
metadata: record(string(), unknown()).optional()
|
|
31095
31206
|
});
|
|
@@ -37194,6 +37305,12 @@ Object.freeze({
|
|
|
37194
37305
|
addonId: null,
|
|
37195
37306
|
access: "view"
|
|
37196
37307
|
},
|
|
37308
|
+
"recordingSignal.getStatus": {
|
|
37309
|
+
capName: "recording-signal",
|
|
37310
|
+
capScope: "device",
|
|
37311
|
+
addonId: null,
|
|
37312
|
+
access: "view"
|
|
37313
|
+
},
|
|
37197
37314
|
"sceneMonitor.captureReference": {
|
|
37198
37315
|
capName: "scene-monitor",
|
|
37199
37316
|
capScope: "device",
|
|
@@ -40186,6 +40303,11 @@ Object.freeze({
|
|
|
40186
40303
|
form: "single",
|
|
40187
40304
|
optional: true
|
|
40188
40305
|
}],
|
|
40306
|
+
"recordingSignal.getStatus": [{
|
|
40307
|
+
name: "deviceId",
|
|
40308
|
+
form: "single",
|
|
40309
|
+
optional: false
|
|
40310
|
+
}],
|
|
40189
40311
|
"sceneMonitor.captureReference": [{
|
|
40190
40312
|
name: "deviceId",
|
|
40191
40313
|
form: "single",
|
|
@@ -42324,6 +42446,12 @@ Object.defineProperty(exports, "RecordingConfigSchema", {
|
|
|
42324
42446
|
return RecordingConfigSchema;
|
|
42325
42447
|
}
|
|
42326
42448
|
});
|
|
42449
|
+
Object.defineProperty(exports, "RecordingSignalStatusSchema", {
|
|
42450
|
+
enumerable: true,
|
|
42451
|
+
get: function() {
|
|
42452
|
+
return RecordingSignalStatusSchema;
|
|
42453
|
+
}
|
|
42454
|
+
});
|
|
42327
42455
|
Object.defineProperty(exports, "RingBuffer", {
|
|
42328
42456
|
enumerable: true,
|
|
42329
42457
|
get: function() {
|
|
@@ -42714,6 +42842,12 @@ Object.defineProperty(exports, "recordingExportCapability", {
|
|
|
42714
42842
|
return recordingExportCapability;
|
|
42715
42843
|
}
|
|
42716
42844
|
});
|
|
42845
|
+
Object.defineProperty(exports, "recordingSignalCapability", {
|
|
42846
|
+
enumerable: true,
|
|
42847
|
+
get: function() {
|
|
42848
|
+
return recordingSignalCapability;
|
|
42849
|
+
}
|
|
42850
|
+
});
|
|
42717
42851
|
Object.defineProperty(exports, "resolveClusterStepModelId", {
|
|
42718
42852
|
enumerable: true,
|
|
42719
42853
|
get: function() {
|
|
@@ -5406,6 +5406,12 @@ Object.fromEntries([
|
|
|
5406
5406
|
icon: "move",
|
|
5407
5407
|
order: 40
|
|
5408
5408
|
},
|
|
5409
|
+
{
|
|
5410
|
+
id: "navigation",
|
|
5411
|
+
label: "Navigation",
|
|
5412
|
+
icon: "compass",
|
|
5413
|
+
order: 41
|
|
5414
|
+
},
|
|
5409
5415
|
{
|
|
5410
5416
|
id: "consumables",
|
|
5411
5417
|
label: "Consumables",
|
|
@@ -6461,6 +6467,21 @@ var CameraStreamSchema = object({
|
|
|
6461
6467
|
*/
|
|
6462
6468
|
autoEligible: boolean().optional(),
|
|
6463
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
|
+
/**
|
|
6464
6485
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
6465
6486
|
* the source reader without inspecting it. Currently used by
|
|
6466
6487
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -9126,7 +9147,22 @@ var RecordingTriggersSchema = object({
|
|
|
9126
9147
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
9127
9148
|
* registrare.
|
|
9128
9149
|
*/
|
|
9129
|
-
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()
|
|
9130
9166
|
});
|
|
9131
9167
|
/**
|
|
9132
9168
|
* Mode of a single recording band — the recorder per-band vocabulary.
|
|
@@ -12892,6 +12928,8 @@ var streamBrokerCapability = {
|
|
|
12892
12928
|
label: string().optional(),
|
|
12893
12929
|
deviceFeatures: array(string()).optional(),
|
|
12894
12930
|
autoEligible: boolean().optional(),
|
|
12931
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
12932
|
+
profileHint: CamProfileSchema.optional(),
|
|
12895
12933
|
metadata: record(string(), unknown()).optional(),
|
|
12896
12934
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
12897
12935
|
* derived broker reads its encoded plane from.
|
|
@@ -30695,6 +30733,77 @@ var recordingExportCapability = {
|
|
|
30695
30733
|
}
|
|
30696
30734
|
};
|
|
30697
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
|
+
/**
|
|
30698
30807
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
30699
30808
|
* a rect ROI on a camera frame and names one or more states; the engine
|
|
30700
30809
|
* (pipeline-analytics, designated post-processing node) reports which state is
|
|
@@ -31067,6 +31176,8 @@ var CamStreamDescriptorSchema = object({
|
|
|
31067
31176
|
deviceFeatures: array(string()).optional(),
|
|
31068
31177
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
31069
31178
|
autoEligible: boolean().optional(),
|
|
31179
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
31180
|
+
profileHint: CamProfileSchema.optional(),
|
|
31070
31181
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
31071
31182
|
metadata: record(string(), unknown()).optional()
|
|
31072
31183
|
});
|
|
@@ -37171,6 +37282,12 @@ Object.freeze({
|
|
|
37171
37282
|
addonId: null,
|
|
37172
37283
|
access: "view"
|
|
37173
37284
|
},
|
|
37285
|
+
"recordingSignal.getStatus": {
|
|
37286
|
+
capName: "recording-signal",
|
|
37287
|
+
capScope: "device",
|
|
37288
|
+
addonId: null,
|
|
37289
|
+
access: "view"
|
|
37290
|
+
},
|
|
37174
37291
|
"sceneMonitor.captureReference": {
|
|
37175
37292
|
capName: "scene-monitor",
|
|
37176
37293
|
capScope: "device",
|
|
@@ -40163,6 +40280,11 @@ Object.freeze({
|
|
|
40163
40280
|
form: "single",
|
|
40164
40281
|
optional: true
|
|
40165
40282
|
}],
|
|
40283
|
+
"recordingSignal.getStatus": [{
|
|
40284
|
+
name: "deviceId",
|
|
40285
|
+
form: "single",
|
|
40286
|
+
optional: false
|
|
40287
|
+
}],
|
|
40166
40288
|
"sceneMonitor.captureReference": [{
|
|
40167
40289
|
name: "deviceId",
|
|
40168
40290
|
form: "single",
|
|
@@ -42097,4 +42219,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
42097
42219
|
return out;
|
|
42098
42220
|
}
|
|
42099
42221
|
//#endregion
|
|
42100
|
-
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";
|