camstack 1.2.103 → 1.2.105
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.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-IaOr7P-z.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -14596,6 +14596,12 @@ var WELL_KNOWN_TABS = [
|
|
|
14596
14596
|
icon: "move",
|
|
14597
14597
|
order: 40
|
|
14598
14598
|
},
|
|
14599
|
+
{
|
|
14600
|
+
id: "navigation",
|
|
14601
|
+
label: "Navigation",
|
|
14602
|
+
icon: "compass",
|
|
14603
|
+
order: 41
|
|
14604
|
+
},
|
|
14599
14605
|
{
|
|
14600
14606
|
id: "consumables",
|
|
14601
14607
|
label: "Consumables",
|
|
@@ -14736,6 +14742,21 @@ var CameraStreamSchema = external_exports.object({
|
|
|
14736
14742
|
*/
|
|
14737
14743
|
autoEligible: external_exports.boolean().optional(),
|
|
14738
14744
|
/**
|
|
14745
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
14746
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
14747
|
+
* stream. Consulted by the broker's automatic ranking
|
|
14748
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
14749
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
14750
|
+
* pixel-ranked default every camera had before this field existed.
|
|
14751
|
+
*
|
|
14752
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
14753
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
14754
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
14755
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
14756
|
+
* heuristic put it in.
|
|
14757
|
+
*/
|
|
14758
|
+
profileHint: CamProfileSchema.optional(),
|
|
14759
|
+
/**
|
|
14739
14760
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
14740
14761
|
* the source reader without inspecting it. Currently used by
|
|
14741
14762
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -15709,7 +15730,22 @@ var RecordingTriggersSchema = external_exports.object({
|
|
|
15709
15730
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
15710
15731
|
* registrare.
|
|
15711
15732
|
*/
|
|
15712
|
-
sensorDeviceIds: external_exports.array(external_exports.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
15733
|
+
sensorDeviceIds: external_exports.array(external_exports.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
15734
|
+
/**
|
|
15735
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
15736
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
15737
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
15738
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
15739
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
15740
|
+
*
|
|
15741
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
15742
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
15743
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
15744
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
15745
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
15746
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
15747
|
+
*/
|
|
15748
|
+
deviceSignal: external_exports.boolean().optional()
|
|
15713
15749
|
});
|
|
15714
15750
|
var RecordingBandModeSchema = external_exports.enum(["continuous", "events"]);
|
|
15715
15751
|
var RecordingBandTriggersSchema = RecordingTriggersSchema;
|
|
@@ -18717,6 +18753,8 @@ var streamBrokerCapability = {
|
|
|
18717
18753
|
label: external_exports.string().optional(),
|
|
18718
18754
|
deviceFeatures: external_exports.array(external_exports.string()).optional(),
|
|
18719
18755
|
autoEligible: external_exports.boolean().optional(),
|
|
18756
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
18757
|
+
profileHint: CamProfileSchema.optional(),
|
|
18720
18758
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
18721
18759
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
18722
18760
|
* derived broker reads its encoded plane from.
|
|
@@ -37811,6 +37849,50 @@ var recordingExportCapability = {
|
|
|
37811
37849
|
})
|
|
37812
37850
|
}
|
|
37813
37851
|
};
|
|
37852
|
+
var RecordingSignalStatusSchema = external_exports.object({
|
|
37853
|
+
/** True while the device asks to be recorded. */
|
|
37854
|
+
active: external_exports.boolean(),
|
|
37855
|
+
/**
|
|
37856
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
37857
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
37858
|
+
* branches on it.
|
|
37859
|
+
*/
|
|
37860
|
+
reason: external_exports.string(),
|
|
37861
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
37862
|
+
lastChangedAt: external_exports.number()
|
|
37863
|
+
});
|
|
37864
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: external_exports.number() });
|
|
37865
|
+
var recordingSignalCapability = {
|
|
37866
|
+
name: "recording-signal",
|
|
37867
|
+
scope: "device",
|
|
37868
|
+
deviceNative: true,
|
|
37869
|
+
mode: "singleton",
|
|
37870
|
+
deviceTypes: [DeviceType.Camera],
|
|
37871
|
+
methods: {
|
|
37872
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
37873
|
+
getStatus: method(external_exports.object({ deviceId: external_exports.number() }), RecordingSignalStatusSchema)
|
|
37874
|
+
},
|
|
37875
|
+
status: {
|
|
37876
|
+
schema: RecordingSignalStatusSchema,
|
|
37877
|
+
kind: "push",
|
|
37878
|
+
empty: {
|
|
37879
|
+
active: false,
|
|
37880
|
+
reason: "unknown",
|
|
37881
|
+
lastChangedAt: 0
|
|
37882
|
+
}
|
|
37883
|
+
},
|
|
37884
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
37885
|
+
/**
|
|
37886
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
37887
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
37888
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
37889
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
37890
|
+
*
|
|
37891
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
37892
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
37893
|
+
*/
|
|
37894
|
+
durability: "session"
|
|
37895
|
+
};
|
|
37814
37896
|
var SceneConditionSchema = external_exports.string();
|
|
37815
37897
|
var SceneUncoveredPolicySchema = external_exports.enum(["skip", "judge-anyway"]);
|
|
37816
37898
|
var SceneVerdictSchema = external_exports.enum([
|
|
@@ -38179,6 +38261,8 @@ var CamStreamDescriptorSchema = external_exports.object({
|
|
|
38179
38261
|
deviceFeatures: external_exports.array(external_exports.string()).optional(),
|
|
38180
38262
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
38181
38263
|
autoEligible: external_exports.boolean().optional(),
|
|
38264
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
38265
|
+
profileHint: CamProfileSchema.optional(),
|
|
38182
38266
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
38183
38267
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
38184
38268
|
});
|
|
@@ -44414,6 +44498,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
44414
44498
|
addonId: null,
|
|
44415
44499
|
access: "view"
|
|
44416
44500
|
},
|
|
44501
|
+
"recordingSignal.getStatus": {
|
|
44502
|
+
capName: "recording-signal",
|
|
44503
|
+
capScope: "device",
|
|
44504
|
+
addonId: null,
|
|
44505
|
+
access: "view"
|
|
44506
|
+
},
|
|
44417
44507
|
"sceneMonitor.captureReference": {
|
|
44418
44508
|
capName: "scene-monitor",
|
|
44419
44509
|
capScope: "device",
|
|
@@ -47406,6 +47496,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
47406
47496
|
form: "single",
|
|
47407
47497
|
optional: true
|
|
47408
47498
|
}],
|
|
47499
|
+
"recordingSignal.getStatus": [{
|
|
47500
|
+
name: "deviceId",
|
|
47501
|
+
form: "single",
|
|
47502
|
+
optional: false
|
|
47503
|
+
}],
|
|
47409
47504
|
"sceneMonitor.captureReference": [{
|
|
47410
47505
|
name: "deviceId",
|
|
47411
47506
|
form: "single",
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OLHRHGNY.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-P5VZSWZR.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-P5VZSWZR.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-MHBOYSVK.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|
|
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
|
|
|
23633
23633
|
}
|
|
23634
23634
|
});
|
|
23635
23635
|
|
|
23636
|
-
// ../system/dist/dist-
|
|
23637
|
-
var
|
|
23638
|
-
"../system/dist/dist-
|
|
23636
|
+
// ../system/dist/dist-BNaW68aZ.js
|
|
23637
|
+
var require_dist_BNaW68aZ = __commonJS({
|
|
23638
|
+
"../system/dist/dist-BNaW68aZ.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -23866,6 +23866,12 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
23866
23866
|
icon: "move",
|
|
23867
23867
|
order: 40
|
|
23868
23868
|
},
|
|
23869
|
+
{
|
|
23870
|
+
id: "navigation",
|
|
23871
|
+
label: "Navigation",
|
|
23872
|
+
icon: "compass",
|
|
23873
|
+
order: 41
|
|
23874
|
+
},
|
|
23869
23875
|
{
|
|
23870
23876
|
id: "consumables",
|
|
23871
23877
|
label: "Consumables",
|
|
@@ -24726,6 +24732,21 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
24726
24732
|
*/
|
|
24727
24733
|
autoEligible: zod.z.boolean().optional(),
|
|
24728
24734
|
/**
|
|
24735
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
24736
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
24737
|
+
* stream. Consulted by the broker's automatic ranking
|
|
24738
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
24739
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
24740
|
+
* pixel-ranked default every camera had before this field existed.
|
|
24741
|
+
*
|
|
24742
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
24743
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
24744
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
24745
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
24746
|
+
* heuristic put it in.
|
|
24747
|
+
*/
|
|
24748
|
+
profileHint: CamProfileSchema.optional(),
|
|
24749
|
+
/**
|
|
24729
24750
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
24730
24751
|
* the source reader without inspecting it. Currently used by
|
|
24731
24752
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -26208,7 +26229,22 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
26208
26229
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
26209
26230
|
* registrare.
|
|
26210
26231
|
*/
|
|
26211
|
-
sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
26232
|
+
sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
26233
|
+
/**
|
|
26234
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
26235
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
26236
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
26237
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
26238
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
26239
|
+
*
|
|
26240
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
26241
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
26242
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
26243
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
26244
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
26245
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
26246
|
+
*/
|
|
26247
|
+
deviceSignal: zod.z.boolean().optional()
|
|
26212
26248
|
});
|
|
26213
26249
|
var RecordingBandModeSchema = zod.z.enum(["continuous", "events"]);
|
|
26214
26250
|
var RecordingBandTriggersSchema = RecordingTriggersSchema;
|
|
@@ -29331,6 +29367,8 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
29331
29367
|
label: zod.z.string().optional(),
|
|
29332
29368
|
deviceFeatures: zod.z.array(zod.z.string()).optional(),
|
|
29333
29369
|
autoEligible: zod.z.boolean().optional(),
|
|
29370
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
29371
|
+
profileHint: CamProfileSchema.optional(),
|
|
29334
29372
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
29335
29373
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
29336
29374
|
* derived broker reads its encoded plane from.
|
|
@@ -48369,6 +48407,50 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
48369
48407
|
})
|
|
48370
48408
|
}
|
|
48371
48409
|
};
|
|
48410
|
+
var RecordingSignalStatusSchema = zod.z.object({
|
|
48411
|
+
/** True while the device asks to be recorded. */
|
|
48412
|
+
active: zod.z.boolean(),
|
|
48413
|
+
/**
|
|
48414
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
48415
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
48416
|
+
* branches on it.
|
|
48417
|
+
*/
|
|
48418
|
+
reason: zod.z.string(),
|
|
48419
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
48420
|
+
lastChangedAt: zod.z.number()
|
|
48421
|
+
});
|
|
48422
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: zod.z.number() });
|
|
48423
|
+
var recordingSignalCapability = {
|
|
48424
|
+
name: "recording-signal",
|
|
48425
|
+
scope: "device",
|
|
48426
|
+
deviceNative: true,
|
|
48427
|
+
mode: "singleton",
|
|
48428
|
+
deviceTypes: [DeviceType.Camera],
|
|
48429
|
+
methods: {
|
|
48430
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
48431
|
+
getStatus: method(zod.z.object({ deviceId: zod.z.number() }), RecordingSignalStatusSchema)
|
|
48432
|
+
},
|
|
48433
|
+
status: {
|
|
48434
|
+
schema: RecordingSignalStatusSchema,
|
|
48435
|
+
kind: "push",
|
|
48436
|
+
empty: {
|
|
48437
|
+
active: false,
|
|
48438
|
+
reason: "unknown",
|
|
48439
|
+
lastChangedAt: 0
|
|
48440
|
+
}
|
|
48441
|
+
},
|
|
48442
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
48443
|
+
/**
|
|
48444
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
48445
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
48446
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
48447
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
48448
|
+
*
|
|
48449
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
48450
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
48451
|
+
*/
|
|
48452
|
+
durability: "session"
|
|
48453
|
+
};
|
|
48372
48454
|
var SceneConditionSchema = zod.z.string();
|
|
48373
48455
|
var SceneUncoveredPolicySchema = zod.z.enum(["skip", "judge-anyway"]);
|
|
48374
48456
|
var SceneVerdictSchema = zod.z.enum([
|
|
@@ -48736,6 +48818,8 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
48736
48818
|
deviceFeatures: zod.z.array(zod.z.string()).optional(),
|
|
48737
48819
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
48738
48820
|
autoEligible: zod.z.boolean().optional(),
|
|
48821
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
48822
|
+
profileHint: CamProfileSchema.optional(),
|
|
48739
48823
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
48740
48824
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
48741
48825
|
});
|
|
@@ -50989,6 +51073,7 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
50989
51073
|
"ptz",
|
|
50990
51074
|
"ptz-autotrack",
|
|
50991
51075
|
"recording",
|
|
51076
|
+
"recording-signal",
|
|
50992
51077
|
"scene-monitor",
|
|
50993
51078
|
"script-runner",
|
|
50994
51079
|
"smoke",
|
|
@@ -51122,6 +51207,7 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
51122
51207
|
rebootCapability,
|
|
51123
51208
|
recordingCapability,
|
|
51124
51209
|
recordingExportCapability,
|
|
51210
|
+
recordingSignalCapability,
|
|
51125
51211
|
sceneMonitorCapability,
|
|
51126
51212
|
scriptRunnerCapability,
|
|
51127
51213
|
serverManagementCapability,
|
|
@@ -55799,6 +55885,12 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
55799
55885
|
addonId: null,
|
|
55800
55886
|
access: "view"
|
|
55801
55887
|
},
|
|
55888
|
+
"recordingSignal.getStatus": {
|
|
55889
|
+
capName: "recording-signal",
|
|
55890
|
+
capScope: "device",
|
|
55891
|
+
addonId: null,
|
|
55892
|
+
access: "view"
|
|
55893
|
+
},
|
|
55802
55894
|
"sceneMonitor.captureReference": {
|
|
55803
55895
|
capName: "scene-monitor",
|
|
55804
55896
|
capScope: "device",
|
|
@@ -58791,6 +58883,11 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
58791
58883
|
form: "single",
|
|
58792
58884
|
optional: true
|
|
58793
58885
|
}],
|
|
58886
|
+
"recordingSignal.getStatus": [{
|
|
58887
|
+
name: "deviceId",
|
|
58888
|
+
form: "single",
|
|
58889
|
+
optional: false
|
|
58890
|
+
}],
|
|
58794
58891
|
"sceneMonitor.captureReference": [{
|
|
58795
58892
|
name: "deviceId",
|
|
58796
58893
|
form: "single",
|
|
@@ -59339,6 +59436,10 @@ var require_dist_C7g13BfN = __commonJS({
|
|
|
59339
59436
|
durability: "session",
|
|
59340
59437
|
volatileFields: []
|
|
59341
59438
|
},
|
|
59439
|
+
"recording-signal": {
|
|
59440
|
+
durability: "session",
|
|
59441
|
+
volatileFields: []
|
|
59442
|
+
},
|
|
59342
59443
|
"scene-monitor": {
|
|
59343
59444
|
durability: "session",
|
|
59344
59445
|
volatileFields: []
|
|
@@ -60557,7 +60658,7 @@ var require_alerts_addon = __commonJS({
|
|
|
60557
60658
|
[Symbol.toStringTag]: { value: "Module" }
|
|
60558
60659
|
});
|
|
60559
60660
|
require_chunk_Cek0wNdY();
|
|
60560
|
-
var require_dist10 =
|
|
60661
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
60561
60662
|
function selectExpired(alerts, cutoffMs) {
|
|
60562
60663
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
60563
60664
|
}
|
|
@@ -61376,7 +61477,7 @@ var require_console_logging = __commonJS({
|
|
|
61376
61477
|
[Symbol.toStringTag]: { value: "Module" }
|
|
61377
61478
|
});
|
|
61378
61479
|
require_chunk_Cek0wNdY();
|
|
61379
|
-
var require_dist10 =
|
|
61480
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
61380
61481
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
61381
61482
|
var LEVEL_RANK = {
|
|
61382
61483
|
debug: 0,
|
|
@@ -61470,7 +61571,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
61470
61571
|
"use strict";
|
|
61471
61572
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
61472
61573
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
61473
|
-
var require_dist10 =
|
|
61574
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
61474
61575
|
var node_crypto = __require("crypto");
|
|
61475
61576
|
var node_fs_promises = __require("fs/promises");
|
|
61476
61577
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -62367,11 +62468,11 @@ var require_core_blocks = __commonJS({
|
|
|
62367
62468
|
}
|
|
62368
62469
|
});
|
|
62369
62470
|
|
|
62370
|
-
// ../system/dist/retired-settings-keys-
|
|
62371
|
-
var
|
|
62372
|
-
"../system/dist/retired-settings-keys-
|
|
62471
|
+
// ../system/dist/retired-settings-keys-FwgzdSHJ.js
|
|
62472
|
+
var require_retired_settings_keys_FwgzdSHJ = __commonJS({
|
|
62473
|
+
"../system/dist/retired-settings-keys-FwgzdSHJ.js"(exports) {
|
|
62373
62474
|
"use strict";
|
|
62374
|
-
var require_dist10 =
|
|
62475
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
62375
62476
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
62376
62477
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
62377
62478
|
return raw === "" || raw === "hub";
|
|
@@ -64585,8 +64686,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
64585
64686
|
[Symbol.toStringTag]: { value: "Module" }
|
|
64586
64687
|
});
|
|
64587
64688
|
require_chunk_Cek0wNdY();
|
|
64588
|
-
var require_dist10 =
|
|
64589
|
-
var require_retired_settings_keys =
|
|
64689
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
64690
|
+
var require_retired_settings_keys = require_retired_settings_keys_FwgzdSHJ();
|
|
64590
64691
|
var node_crypto = __require("crypto");
|
|
64591
64692
|
var _camstack_types_node = require_node();
|
|
64592
64693
|
var JOB_HISTORY = 20;
|
|
@@ -70101,7 +70202,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
70101
70202
|
[Symbol.toStringTag]: { value: "Module" }
|
|
70102
70203
|
});
|
|
70103
70204
|
require_chunk_Cek0wNdY();
|
|
70104
|
-
var require_dist10 =
|
|
70205
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
70105
70206
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
70106
70207
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
70107
70208
|
var HubForwarderDestination = class {
|
|
@@ -70238,7 +70339,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
70238
70339
|
"use strict";
|
|
70239
70340
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
70240
70341
|
require_chunk_Cek0wNdY();
|
|
70241
|
-
var require_dist10 =
|
|
70342
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
70242
70343
|
var NO_DEVICES = "liveness:no-devices";
|
|
70243
70344
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
70244
70345
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -70434,7 +70535,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
70434
70535
|
[Symbol.toStringTag]: { value: "Module" }
|
|
70435
70536
|
});
|
|
70436
70537
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
70437
|
-
var require_dist10 =
|
|
70538
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
70438
70539
|
var node_crypto = __require("crypto");
|
|
70439
70540
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
70440
70541
|
var crypto$1 = __require("crypto");
|
|
@@ -78247,7 +78348,7 @@ var require_loki_logging = __commonJS({
|
|
|
78247
78348
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78248
78349
|
});
|
|
78249
78350
|
require_chunk_Cek0wNdY();
|
|
78250
|
-
var require_dist10 =
|
|
78351
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
78251
78352
|
function sanitizeLabelName(raw) {
|
|
78252
78353
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
78253
78354
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -78812,7 +78913,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
78812
78913
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78813
78914
|
});
|
|
78814
78915
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
78815
|
-
var require_dist10 =
|
|
78916
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
78816
78917
|
var node_fs_promises = __require("fs/promises");
|
|
78817
78918
|
var node_child_process = __require("child_process");
|
|
78818
78919
|
var node_util = __require("util");
|
|
@@ -81396,7 +81497,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
81396
81497
|
[Symbol.toStringTag]: { value: "Module" }
|
|
81397
81498
|
});
|
|
81398
81499
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
81399
|
-
var require_dist10 =
|
|
81500
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
81400
81501
|
var node_crypto = __require("crypto");
|
|
81401
81502
|
var node_fs_promises = __require("fs/promises");
|
|
81402
81503
|
var node_path = __require("path");
|
|
@@ -82512,8 +82613,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
82512
82613
|
[Symbol.toStringTag]: { value: "Module" }
|
|
82513
82614
|
});
|
|
82514
82615
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
82515
|
-
var require_dist10 =
|
|
82516
|
-
var require_retired_settings_keys =
|
|
82616
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
82617
|
+
var require_retired_settings_keys = require_retired_settings_keys_FwgzdSHJ();
|
|
82517
82618
|
var node_crypto = __require("crypto");
|
|
82518
82619
|
var node_fs = __require("fs");
|
|
82519
82620
|
var node_module = __require("module");
|
|
@@ -85003,7 +85104,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
85003
85104
|
[Symbol.toStringTag]: { value: "Module" }
|
|
85004
85105
|
});
|
|
85005
85106
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
85006
|
-
var require_dist10 =
|
|
85107
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
85007
85108
|
var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
|
|
85008
85109
|
var zod = require_zod();
|
|
85009
85110
|
var node_crypto = __require("crypto");
|
|
@@ -87954,7 +88055,7 @@ var require_system_config_addon = __commonJS({
|
|
|
87954
88055
|
[Symbol.toStringTag]: { value: "Module" }
|
|
87955
88056
|
});
|
|
87956
88057
|
require_chunk_Cek0wNdY();
|
|
87957
|
-
var require_dist10 =
|
|
88058
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
87958
88059
|
var SECTION_TITLES = {
|
|
87959
88060
|
server: "Server",
|
|
87960
88061
|
auth: "Authentication"
|
|
@@ -106015,7 +106116,7 @@ var require_winston_logging = __commonJS({
|
|
|
106015
106116
|
[Symbol.toStringTag]: { value: "Module" }
|
|
106016
106117
|
});
|
|
106017
106118
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
106018
|
-
var require_dist10 =
|
|
106119
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
106019
106120
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
106020
106121
|
var node_path = __require("path");
|
|
106021
106122
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -107959,9 +108060,9 @@ var require_event_category_b8kBSOTT = __commonJS({
|
|
|
107959
108060
|
}
|
|
107960
108061
|
});
|
|
107961
108062
|
|
|
107962
|
-
// ../types/dist/sleep-
|
|
107963
|
-
var
|
|
107964
|
-
"../types/dist/sleep-
|
|
108063
|
+
// ../types/dist/sleep-BGiOgxye.js
|
|
108064
|
+
var require_sleep_BGiOgxye = __commonJS({
|
|
108065
|
+
"../types/dist/sleep-BGiOgxye.js"(exports) {
|
|
107965
108066
|
"use strict";
|
|
107966
108067
|
var require_event_category = require_event_category_b8kBSOTT();
|
|
107967
108068
|
var zod = require_zod();
|
|
@@ -108038,6 +108139,12 @@ var require_sleep_Dp0uukHR = __commonJS({
|
|
|
108038
108139
|
icon: "move",
|
|
108039
108140
|
order: 40
|
|
108040
108141
|
},
|
|
108142
|
+
{
|
|
108143
|
+
id: "navigation",
|
|
108144
|
+
label: "Navigation",
|
|
108145
|
+
icon: "compass",
|
|
108146
|
+
order: 41
|
|
108147
|
+
},
|
|
108041
108148
|
{
|
|
108042
108149
|
id: "consumables",
|
|
108043
108150
|
label: "Consumables",
|
|
@@ -109013,6 +109120,21 @@ var require_sleep_Dp0uukHR = __commonJS({
|
|
|
109013
109120
|
*/
|
|
109014
109121
|
autoEligible: zod.z.boolean().optional(),
|
|
109015
109122
|
/**
|
|
109123
|
+
* The profile slot the PUBLISHER says this stream is: `low` for a stream
|
|
109124
|
+
* whose only sensible role is the low-bandwidth one, `high` for a main
|
|
109125
|
+
* stream. Consulted by the broker's automatic ranking
|
|
109126
|
+
* (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
|
|
109127
|
+
* an operator's manual assignment still wins, and an absent hint is the
|
|
109128
|
+
* pixel-ranked default every camera had before this field existed.
|
|
109129
|
+
*
|
|
109130
|
+
* Why it exists: a camera with ONE stream ranked to `mid` — the slot no
|
|
109131
|
+
* storage class is written for on its own (`recordings` is high|mid,
|
|
109132
|
+
* `recordingsLow` is low) and the one profile scrub does not read. The robot
|
|
109133
|
+
* camera's single 720p relay is a `low` in every respect except the slot the
|
|
109134
|
+
* heuristic put it in.
|
|
109135
|
+
*/
|
|
109136
|
+
profileHint: CamProfileSchema.optional(),
|
|
109137
|
+
/**
|
|
109016
109138
|
* Transport-specific opaque metadata. The broker passes it through to
|
|
109017
109139
|
* the source reader without inspecting it. Currently used by
|
|
109018
109140
|
* `pull-rfc4571` streams to carry the upstream SDP (so the reader can
|
|
@@ -110366,6 +110488,7 @@ var require_sleep_Dp0uukHR = __commonJS({
|
|
|
110366
110488
|
pressureSensor: createSliceHandle(stateSource, binding.deviceId, "pressure-sensor"),
|
|
110367
110489
|
privacyMask: createSliceHandle(stateSource, binding.deviceId, "privacy-mask"),
|
|
110368
110490
|
ptzAutotrack: createSliceHandle(stateSource, binding.deviceId, "ptz-autotrack"),
|
|
110491
|
+
recordingSignal: createSliceHandle(stateSource, binding.deviceId, "recording-signal"),
|
|
110369
110492
|
sceneMonitor: createSliceHandle(stateSource, binding.deviceId, "scene-monitor"),
|
|
110370
110493
|
scriptRunner: createSliceHandle(stateSource, binding.deviceId, "script-runner"),
|
|
110371
110494
|
smoke: createSliceHandle(stateSource, binding.deviceId, "smoke"),
|
|
@@ -110745,6 +110868,7 @@ var require_sleep_Dp0uukHR = __commonJS({
|
|
|
110745
110868
|
setSettings: (input) => dispatch("ptz-autotrack", "ptzAutotrack", "setSettings", "mutation", input)
|
|
110746
110869
|
},
|
|
110747
110870
|
reboot: { reboot: (input) => dispatch("reboot", "reboot", "reboot", "mutation", input) },
|
|
110871
|
+
recordingSignal: { getStatus: (input) => dispatch("recording-signal", "recordingSignal", "getStatus", "query", input) },
|
|
110748
110872
|
sceneMonitor: {
|
|
110749
110873
|
listScenes: (input) => dispatch("scene-monitor", "sceneMonitor", "listScenes", "query", input),
|
|
110750
110874
|
listScenesBatch: (input) => dispatch("scene-monitor", "sceneMonitor", "listScenesBatch", "query", input),
|
|
@@ -111669,7 +111793,7 @@ var require_addon = __commonJS({
|
|
|
111669
111793
|
"use strict";
|
|
111670
111794
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
111671
111795
|
var require_event_category = require_event_category_b8kBSOTT();
|
|
111672
|
-
var require_sleep =
|
|
111796
|
+
var require_sleep = require_sleep_BGiOgxye();
|
|
111673
111797
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
111674
111798
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
111675
111799
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -130629,7 +130753,7 @@ var require_dist3 = __commonJS({
|
|
|
130629
130753
|
"use strict";
|
|
130630
130754
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
130631
130755
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
130632
|
-
var require_dist10 =
|
|
130756
|
+
var require_dist10 = require_dist_BNaW68aZ();
|
|
130633
130757
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
130634
130758
|
require_alerts();
|
|
130635
130759
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -211746,7 +211870,7 @@ var require_dist4 = __commonJS({
|
|
|
211746
211870
|
"use strict";
|
|
211747
211871
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
211748
211872
|
var require_event_category = require_event_category_b8kBSOTT();
|
|
211749
|
-
var require_sleep =
|
|
211873
|
+
var require_sleep = require_sleep_BGiOgxye();
|
|
211750
211874
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
211751
211875
|
var require_enums2 = require_enums();
|
|
211752
211876
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -213001,7 +213125,22 @@ var require_dist4 = __commonJS({
|
|
|
213001
213125
|
* il livello: un contatto trovato già aperto al riavvio del runner non fa
|
|
213002
213126
|
* registrare.
|
|
213003
213127
|
*/
|
|
213004
|
-
sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
213128
|
+
sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
|
|
213129
|
+
/**
|
|
213130
|
+
* La camera registra per tutta la durata del SEGNALE che lei stessa
|
|
213131
|
+
* pubblica — la cap `recording-signal` (`active: true` mentre il device è in
|
|
213132
|
+
* funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
|
|
213133
|
+
* resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
|
|
213134
|
+
* caduta, così una pulizia di quaranta minuti è UNA clip.
|
|
213135
|
+
*
|
|
213136
|
+
* Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
|
|
213137
|
+
* suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
|
|
213138
|
+
* riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
|
|
213139
|
+
* segnale mai abbassato (un evento perso) non può tenere aperta una
|
|
213140
|
+
* registrazione (D11). Vedi `recorder/addon/band-decision.ts`
|
|
213141
|
+
* (`holdTrigger` / `releaseTrigger`).
|
|
213142
|
+
*/
|
|
213143
|
+
deviceSignal: zod.z.boolean().optional()
|
|
213005
213144
|
});
|
|
213006
213145
|
var RecordingBandModeSchema = zod.z.enum(["continuous", "events"]);
|
|
213007
213146
|
var RecordingBandTriggersSchema = RecordingTriggersSchema;
|
|
@@ -217198,6 +217337,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
217198
217337
|
label: zod.z.string().optional(),
|
|
217199
217338
|
deviceFeatures: zod.z.array(zod.z.string()).optional(),
|
|
217200
217339
|
autoEligible: zod.z.boolean().optional(),
|
|
217340
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
217341
|
+
profileHint: require_sleep.CamProfileSchema.optional(),
|
|
217201
217342
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
217202
217343
|
/** Required when kind === 'derived' — the source camStreamId the
|
|
217203
217344
|
* derived broker reads its encoded plane from.
|
|
@@ -237478,6 +237619,50 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
237478
237619
|
})
|
|
237479
237620
|
}
|
|
237480
237621
|
};
|
|
237622
|
+
var RecordingSignalStatusSchema = zod.z.object({
|
|
237623
|
+
/** True while the device asks to be recorded. */
|
|
237624
|
+
active: zod.z.boolean(),
|
|
237625
|
+
/**
|
|
237626
|
+
* Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
|
|
237627
|
+
* …). Free text for the log line and the UI badge; the recorder never
|
|
237628
|
+
* branches on it.
|
|
237629
|
+
*/
|
|
237630
|
+
reason: zod.z.string(),
|
|
237631
|
+
/** Ms epoch of the last `active` transition. 0 if never observed. */
|
|
237632
|
+
lastChangedAt: zod.z.number()
|
|
237633
|
+
});
|
|
237634
|
+
var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: zod.z.number() });
|
|
237635
|
+
var recordingSignalCapability = {
|
|
237636
|
+
name: "recording-signal",
|
|
237637
|
+
scope: "device",
|
|
237638
|
+
deviceNative: true,
|
|
237639
|
+
mode: "singleton",
|
|
237640
|
+
deviceTypes: [require_sleep.DeviceType.Camera],
|
|
237641
|
+
methods: {
|
|
237642
|
+
/** The current level, straight from the slice the provider keeps fresh. */
|
|
237643
|
+
getStatus: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), RecordingSignalStatusSchema)
|
|
237644
|
+
},
|
|
237645
|
+
status: {
|
|
237646
|
+
schema: RecordingSignalStatusSchema,
|
|
237647
|
+
kind: "push",
|
|
237648
|
+
empty: {
|
|
237649
|
+
active: false,
|
|
237650
|
+
reason: "unknown",
|
|
237651
|
+
lastChangedAt: 0
|
|
237652
|
+
}
|
|
237653
|
+
},
|
|
237654
|
+
runtimeState: RecordingSignalRuntimeStateSchema,
|
|
237655
|
+
/**
|
|
237656
|
+
* Runtime-state durability: **session** — a restored `active: true` from
|
|
237657
|
+
* before a restart is exactly the stale level the recorder's reconcile bound
|
|
237658
|
+
* exists to end, and the provider re-derives the true level on activation
|
|
237659
|
+
* anyway. Nothing is lost by forgetting it; a lie is avoided.
|
|
237660
|
+
*
|
|
237661
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
237662
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
237663
|
+
*/
|
|
237664
|
+
durability: "session"
|
|
237665
|
+
};
|
|
237481
237666
|
var SceneConditionSchema = zod.z.string();
|
|
237482
237667
|
var SCENE_CONDITIONS = [
|
|
237483
237668
|
"day",
|
|
@@ -237859,6 +238044,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
237859
238044
|
deviceFeatures: zod.z.array(zod.z.string()).optional(),
|
|
237860
238045
|
/** Eligible for automatic profile assignment. Absent = `true`. */
|
|
237861
238046
|
autoEligible: zod.z.boolean().optional(),
|
|
238047
|
+
/** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
|
|
238048
|
+
profileHint: require_sleep.CamProfileSchema.optional(),
|
|
237862
238049
|
/** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
|
|
237863
238050
|
metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
237864
238051
|
});
|
|
@@ -240142,6 +240329,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
240142
240329
|
pressureSensor: pressureSensorCapability,
|
|
240143
240330
|
privacyMask: privacyMaskCapability,
|
|
240144
240331
|
ptzAutotrack: ptzAutotrackCapability,
|
|
240332
|
+
recordingSignal: recordingSignalCapability,
|
|
240145
240333
|
sceneMonitor: sceneMonitorCapability,
|
|
240146
240334
|
scriptRunner: scriptRunnerCapability,
|
|
240147
240335
|
smoke: smokeCapability,
|
|
@@ -242626,6 +242814,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
242626
242814
|
"ptz",
|
|
242627
242815
|
"ptz-autotrack",
|
|
242628
242816
|
"recording",
|
|
242817
|
+
"recording-signal",
|
|
242629
242818
|
"scene-monitor",
|
|
242630
242819
|
"script-runner",
|
|
242631
242820
|
"smoke",
|
|
@@ -242759,6 +242948,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
242759
242948
|
reboot: "reboot",
|
|
242760
242949
|
recording: "recording",
|
|
242761
242950
|
recordingExport: "recording-export",
|
|
242951
|
+
recordingSignal: "recording-signal",
|
|
242762
242952
|
sceneMonitor: "scene-monitor",
|
|
242763
242953
|
scriptRunner: "script-runner",
|
|
242764
242954
|
serverManagement: "server-management",
|
|
@@ -243266,6 +243456,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243266
243456
|
key: "recordingExport",
|
|
243267
243457
|
name: "recording-export"
|
|
243268
243458
|
},
|
|
243459
|
+
{
|
|
243460
|
+
key: "recordingSignal",
|
|
243461
|
+
name: "recording-signal"
|
|
243462
|
+
},
|
|
243269
243463
|
{
|
|
243270
243464
|
key: "sceneMonitor",
|
|
243271
243465
|
name: "scene-monitor"
|
|
@@ -243533,6 +243727,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243533
243727
|
rebootCapability,
|
|
243534
243728
|
recordingCapability,
|
|
243535
243729
|
recordingExportCapability,
|
|
243730
|
+
recordingSignalCapability,
|
|
243536
243731
|
sceneMonitorCapability,
|
|
243537
243732
|
scriptRunnerCapability,
|
|
243538
243733
|
serverManagementCapability,
|
|
@@ -248210,6 +248405,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
248210
248405
|
addonId: null,
|
|
248211
248406
|
access: "view"
|
|
248212
248407
|
},
|
|
248408
|
+
"recordingSignal.getStatus": {
|
|
248409
|
+
capName: "recording-signal",
|
|
248410
|
+
capScope: "device",
|
|
248411
|
+
addonId: null,
|
|
248412
|
+
access: "view"
|
|
248413
|
+
},
|
|
248213
248414
|
"sceneMonitor.captureReference": {
|
|
248214
248415
|
capName: "scene-monitor",
|
|
248215
248416
|
capScope: "device",
|
|
@@ -249783,6 +249984,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249783
249984
|
"reboot",
|
|
249784
249985
|
"recording",
|
|
249785
249986
|
"recording-export",
|
|
249987
|
+
"recording-signal",
|
|
249786
249988
|
"scene-monitor",
|
|
249787
249989
|
"script-runner",
|
|
249788
249990
|
"server-management",
|
|
@@ -249857,6 +250059,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249857
250059
|
"ptz",
|
|
249858
250060
|
"ptz-autotrack",
|
|
249859
250061
|
"reboot",
|
|
250062
|
+
"recording-signal",
|
|
249860
250063
|
"scene-monitor",
|
|
249861
250064
|
"script-runner",
|
|
249862
250065
|
"snapshot",
|
|
@@ -251462,6 +251665,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
251462
251665
|
form: "single",
|
|
251463
251666
|
optional: true
|
|
251464
251667
|
}],
|
|
251668
|
+
"recordingSignal.getStatus": [{
|
|
251669
|
+
name: "deviceId",
|
|
251670
|
+
form: "single",
|
|
251671
|
+
optional: false
|
|
251672
|
+
}],
|
|
251465
251673
|
"sceneMonitor.captureReference": [{
|
|
251466
251674
|
name: "deviceId",
|
|
251467
251675
|
form: "single",
|
|
@@ -252160,6 +252368,10 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252160
252368
|
durability: "session",
|
|
252161
252369
|
volatileFields: []
|
|
252162
252370
|
},
|
|
252371
|
+
"recording-signal": {
|
|
252372
|
+
durability: "session",
|
|
252373
|
+
volatileFields: []
|
|
252374
|
+
},
|
|
252163
252375
|
"scene-monitor": {
|
|
252164
252376
|
durability: "session",
|
|
252165
252377
|
volatileFields: []
|
|
@@ -256418,6 +256630,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
256418
256630
|
exports.RecordingRebalanceSkipReasonSchema = RecordingRebalanceSkipReasonSchema;
|
|
256419
256631
|
exports.RecordingRebalanceSkipSchema = RecordingRebalanceSkipSchema;
|
|
256420
256632
|
exports.RecordingRetentionSchema = RecordingRetentionSchema;
|
|
256633
|
+
exports.RecordingSignalRuntimeStateSchema = RecordingSignalRuntimeStateSchema;
|
|
256634
|
+
exports.RecordingSignalStatusSchema = RecordingSignalStatusSchema;
|
|
256421
256635
|
exports.RecordingStatusSchema = RecordingStatusSchema;
|
|
256422
256636
|
exports.RecordingStorageModeSchema = RecordingStorageModeSchema;
|
|
256423
256637
|
exports.RecordingStorageUsageSchema = RecordingStorageUsageSchema;
|
|
@@ -257021,6 +257235,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
257021
257235
|
exports.rebootCapability = rebootCapability;
|
|
257022
257236
|
exports.recordingCapability = recordingCapability;
|
|
257023
257237
|
exports.recordingExportCapability = recordingExportCapability;
|
|
257238
|
+
exports.recordingSignalCapability = recordingSignalCapability;
|
|
257024
257239
|
exports.rectsToCells = rectsToCells;
|
|
257025
257240
|
exports.reducePoints = reducePoints;
|
|
257026
257241
|
exports.requiresPython = requiresPython;
|