camstack 1.2.45 → 1.2.46
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-CdbM8ge4.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -23694,7 +23694,23 @@ var NcHistoryEntrySchema = external_exports.object({
|
|
|
23694
23694
|
updatedAt: external_exports.number(),
|
|
23695
23695
|
/** Failure detail — present on a `dead` row. */
|
|
23696
23696
|
error: external_exports.string().optional(),
|
|
23697
|
-
subject: NcHistorySubjectSchema
|
|
23697
|
+
subject: NcHistorySubjectSchema,
|
|
23698
|
+
/**
|
|
23699
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
23700
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
23701
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
23702
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
23703
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
23704
|
+
*
|
|
23705
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
23706
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
23707
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
23708
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
23709
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
23710
|
+
* Assistant export) must render as "no image right now", never as a
|
|
23711
|
+
* broken link.
|
|
23712
|
+
*/
|
|
23713
|
+
artifactIds: external_exports.array(external_exports.string().min(1)).optional()
|
|
23698
23714
|
});
|
|
23699
23715
|
var NcHistoryFilterSchema = external_exports.object({
|
|
23700
23716
|
ruleId: external_exports.string().optional(),
|
|
@@ -23940,6 +23956,20 @@ var notificationRulesCapability = {
|
|
|
23940
23956
|
*/
|
|
23941
23957
|
getHistory: method(external_exports.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), external_exports.object({ entries: external_exports.array(NcHistoryEntrySchema) }), { auth: "admin" }),
|
|
23942
23958
|
/**
|
|
23959
|
+
* Mint a fresh, externally-reachable URL for one artefact a history row
|
|
23960
|
+
* named in {@link NcHistoryEntrySchema.shape.artifactIds} — the SAME
|
|
23961
|
+
* signed-link mechanism the dispatcher uses to attach media to an
|
|
23962
|
+
* outgoing notification (one derivation; this never re-implements it).
|
|
23963
|
+
*
|
|
23964
|
+
* `url: null` on THREE causes a caller must treat identically ("no image
|
|
23965
|
+
* right now", never a broken link): the id is unknown, its artefact has
|
|
23966
|
+
* expired past the retained shelf's own age bound, or this install has no
|
|
23967
|
+
* externally-reachable base URL. A caller that received a URL on a
|
|
23968
|
+
* previous call and now gets `null` must stop showing it — a link that
|
|
23969
|
+
* worked five minutes ago is not proof it works now.
|
|
23970
|
+
*/
|
|
23971
|
+
resolveArtifactUrl: method(external_exports.object({ artifactId: external_exports.string().min(1) }), external_exports.object({ url: external_exports.string().nullable() }), { auth: "admin" }),
|
|
23972
|
+
/**
|
|
23943
23973
|
* Snooze windows currently in effect, plus any whose digest has not yet
|
|
23944
23974
|
* gone out. `caller: 'required'`: a user sees their OWN windows and the
|
|
23945
23975
|
* global ones that silence them, never another person's private silence.
|
|
@@ -35381,6 +35411,23 @@ var ReadGopBytesResultSchema = external_exports.object({
|
|
|
35381
35411
|
/** Media ms the returned fragment covers. */
|
|
35382
35412
|
gopDurMs: external_exports.number()
|
|
35383
35413
|
});
|
|
35414
|
+
var ReadWindowBytesResultSchema = external_exports.discriminatedUnion("kind", [external_exports.object({
|
|
35415
|
+
kind: external_exports.literal("ok"),
|
|
35416
|
+
data: external_exports.instanceof(Uint8Array),
|
|
35417
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
35418
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
35419
|
+
gopStartMs: external_exports.number(),
|
|
35420
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
35421
|
+
gopDurMs: external_exports.number(),
|
|
35422
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
35423
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
35424
|
+
reachesRequestedEnd: external_exports.boolean()
|
|
35425
|
+
}), external_exports.object({
|
|
35426
|
+
kind: external_exports.literal("spans-multiple-segments"),
|
|
35427
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
35428
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
35429
|
+
segmentEndMs: external_exports.number()
|
|
35430
|
+
})]);
|
|
35384
35431
|
var recordingCapability = {
|
|
35385
35432
|
name: "recording",
|
|
35386
35433
|
scope: "system",
|
|
@@ -35460,6 +35507,21 @@ var recordingCapability = {
|
|
|
35460
35507
|
kind: "query",
|
|
35461
35508
|
auth: "admin"
|
|
35462
35509
|
}),
|
|
35510
|
+
/** Read a WINDOW `[fromMs, toMs)` of segment `startMs`, by mfra byte
|
|
35511
|
+
* range — the multi-GOP twin of `readGopBytes`. Refuses (does not
|
|
35512
|
+
* degrade) when the window runs past the covering segment. Used by the
|
|
35513
|
+
* replay clip's `recording` source to fetch several seconds of native
|
|
35514
|
+
* footage for its single ffmpeg decode pass. */
|
|
35515
|
+
readWindowBytes: method(external_exports.object({
|
|
35516
|
+
deviceId: external_exports.number(),
|
|
35517
|
+
profile: external_exports.string(),
|
|
35518
|
+
startMs: external_exports.number(),
|
|
35519
|
+
fromMs: external_exports.number(),
|
|
35520
|
+
toMs: external_exports.number()
|
|
35521
|
+
}), ReadWindowBytesResultSchema, {
|
|
35522
|
+
kind: "query",
|
|
35523
|
+
auth: "admin"
|
|
35524
|
+
}),
|
|
35463
35525
|
setDeviceConfig: method(external_exports.object({
|
|
35464
35526
|
deviceId: external_exports.number(),
|
|
35465
35527
|
config: RecordingConfigSchema
|
|
@@ -40278,6 +40340,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40278
40340
|
addonId: null,
|
|
40279
40341
|
access: "view"
|
|
40280
40342
|
},
|
|
40343
|
+
"notificationRules.resolveArtifactUrl": {
|
|
40344
|
+
capName: "notification-rules",
|
|
40345
|
+
capScope: "system",
|
|
40346
|
+
addonId: null,
|
|
40347
|
+
access: "view"
|
|
40348
|
+
},
|
|
40281
40349
|
"notificationRules.setAlarmConfig": {
|
|
40282
40350
|
capName: "notification-rules",
|
|
40283
40351
|
capScope: "system",
|
|
@@ -41682,6 +41750,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
41682
41750
|
addonId: null,
|
|
41683
41751
|
access: "view"
|
|
41684
41752
|
},
|
|
41753
|
+
"recording.readWindowBytes": {
|
|
41754
|
+
capName: "recording",
|
|
41755
|
+
capScope: "system",
|
|
41756
|
+
addonId: null,
|
|
41757
|
+
access: "view"
|
|
41758
|
+
},
|
|
41685
41759
|
"recording.refreshStorageLocationsForMigration": {
|
|
41686
41760
|
capName: "recording",
|
|
41687
41761
|
capScope: "system",
|
|
@@ -44512,6 +44586,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
44512
44586
|
form: "single",
|
|
44513
44587
|
optional: false
|
|
44514
44588
|
}],
|
|
44589
|
+
"recording.readWindowBytes": [{
|
|
44590
|
+
name: "deviceId",
|
|
44591
|
+
form: "single",
|
|
44592
|
+
optional: false
|
|
44593
|
+
}],
|
|
44515
44594
|
"recording.relocateFootage": [{
|
|
44516
44595
|
name: "deviceId",
|
|
44517
44596
|
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-HAO7UL6U.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-Y5I6QU24.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-Y5I6QU24.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-27QPK6P7.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-jRSrzoXr.js
|
|
23637
|
+
var require_dist_jRSrzoXr = __commonJS({
|
|
23638
|
+
"../system/dist/dist-jRSrzoXr.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -34136,7 +34136,23 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
34136
34136
|
updatedAt: zod.z.number(),
|
|
34137
34137
|
/** Failure detail — present on a `dead` row. */
|
|
34138
34138
|
error: zod.z.string().optional(),
|
|
34139
|
-
subject: NcHistorySubjectSchema
|
|
34139
|
+
subject: NcHistorySubjectSchema,
|
|
34140
|
+
/**
|
|
34141
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
34142
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
34143
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
34144
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
34145
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
34146
|
+
*
|
|
34147
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
34148
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
34149
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
34150
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
34151
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
34152
|
+
* Assistant export) must render as "no image right now", never as a
|
|
34153
|
+
* broken link.
|
|
34154
|
+
*/
|
|
34155
|
+
artifactIds: zod.z.array(zod.z.string().min(1)).optional()
|
|
34140
34156
|
});
|
|
34141
34157
|
var NcHistoryFilterSchema = zod.z.object({
|
|
34142
34158
|
ruleId: zod.z.string().optional(),
|
|
@@ -34382,6 +34398,20 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
34382
34398
|
*/
|
|
34383
34399
|
getHistory: method(zod.z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), zod.z.object({ entries: zod.z.array(NcHistoryEntrySchema) }), { auth: "admin" }),
|
|
34384
34400
|
/**
|
|
34401
|
+
* Mint a fresh, externally-reachable URL for one artefact a history row
|
|
34402
|
+
* named in {@link NcHistoryEntrySchema.shape.artifactIds} — the SAME
|
|
34403
|
+
* signed-link mechanism the dispatcher uses to attach media to an
|
|
34404
|
+
* outgoing notification (one derivation; this never re-implements it).
|
|
34405
|
+
*
|
|
34406
|
+
* `url: null` on THREE causes a caller must treat identically ("no image
|
|
34407
|
+
* right now", never a broken link): the id is unknown, its artefact has
|
|
34408
|
+
* expired past the retained shelf's own age bound, or this install has no
|
|
34409
|
+
* externally-reachable base URL. A caller that received a URL on a
|
|
34410
|
+
* previous call and now gets `null` must stop showing it — a link that
|
|
34411
|
+
* worked five minutes ago is not proof it works now.
|
|
34412
|
+
*/
|
|
34413
|
+
resolveArtifactUrl: method(zod.z.object({ artifactId: zod.z.string().min(1) }), zod.z.object({ url: zod.z.string().nullable() }), { auth: "admin" }),
|
|
34414
|
+
/**
|
|
34385
34415
|
* Snooze windows currently in effect, plus any whose digest has not yet
|
|
34386
34416
|
* gone out. `caller: 'required'`: a user sees their OWN windows and the
|
|
34387
34417
|
* global ones that silence them, never another person's private silence.
|
|
@@ -45678,6 +45708,23 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
45678
45708
|
/** Media ms the returned fragment covers. */
|
|
45679
45709
|
gopDurMs: zod.z.number()
|
|
45680
45710
|
});
|
|
45711
|
+
var ReadWindowBytesResultSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
|
|
45712
|
+
kind: zod.z.literal("ok"),
|
|
45713
|
+
data: zod.z.instanceof(Uint8Array),
|
|
45714
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
45715
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
45716
|
+
gopStartMs: zod.z.number(),
|
|
45717
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
45718
|
+
gopDurMs: zod.z.number(),
|
|
45719
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
45720
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
45721
|
+
reachesRequestedEnd: zod.z.boolean()
|
|
45722
|
+
}), zod.z.object({
|
|
45723
|
+
kind: zod.z.literal("spans-multiple-segments"),
|
|
45724
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
45725
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
45726
|
+
segmentEndMs: zod.z.number()
|
|
45727
|
+
})]);
|
|
45681
45728
|
var recordingCapability = {
|
|
45682
45729
|
name: "recording",
|
|
45683
45730
|
scope: "system",
|
|
@@ -45757,6 +45804,21 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
45757
45804
|
kind: "query",
|
|
45758
45805
|
auth: "admin"
|
|
45759
45806
|
}),
|
|
45807
|
+
/** Read a WINDOW `[fromMs, toMs)` of segment `startMs`, by mfra byte
|
|
45808
|
+
* range — the multi-GOP twin of `readGopBytes`. Refuses (does not
|
|
45809
|
+
* degrade) when the window runs past the covering segment. Used by the
|
|
45810
|
+
* replay clip's `recording` source to fetch several seconds of native
|
|
45811
|
+
* footage for its single ffmpeg decode pass. */
|
|
45812
|
+
readWindowBytes: method(zod.z.object({
|
|
45813
|
+
deviceId: zod.z.number(),
|
|
45814
|
+
profile: zod.z.string(),
|
|
45815
|
+
startMs: zod.z.number(),
|
|
45816
|
+
fromMs: zod.z.number(),
|
|
45817
|
+
toMs: zod.z.number()
|
|
45818
|
+
}), ReadWindowBytesResultSchema, {
|
|
45819
|
+
kind: "query",
|
|
45820
|
+
auth: "admin"
|
|
45821
|
+
}),
|
|
45760
45822
|
setDeviceConfig: method(zod.z.object({
|
|
45761
45823
|
deviceId: zod.z.number(),
|
|
45762
45824
|
config: RecordingConfigSchema
|
|
@@ -51265,6 +51327,12 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
51265
51327
|
addonId: null,
|
|
51266
51328
|
access: "view"
|
|
51267
51329
|
},
|
|
51330
|
+
"notificationRules.resolveArtifactUrl": {
|
|
51331
|
+
capName: "notification-rules",
|
|
51332
|
+
capScope: "system",
|
|
51333
|
+
addonId: null,
|
|
51334
|
+
access: "view"
|
|
51335
|
+
},
|
|
51268
51336
|
"notificationRules.setAlarmConfig": {
|
|
51269
51337
|
capName: "notification-rules",
|
|
51270
51338
|
capScope: "system",
|
|
@@ -52669,6 +52737,12 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
52669
52737
|
addonId: null,
|
|
52670
52738
|
access: "view"
|
|
52671
52739
|
},
|
|
52740
|
+
"recording.readWindowBytes": {
|
|
52741
|
+
capName: "recording",
|
|
52742
|
+
capScope: "system",
|
|
52743
|
+
addonId: null,
|
|
52744
|
+
access: "view"
|
|
52745
|
+
},
|
|
52672
52746
|
"recording.refreshStorageLocationsForMigration": {
|
|
52673
52747
|
capName: "recording",
|
|
52674
52748
|
capScope: "system",
|
|
@@ -55499,6 +55573,11 @@ var require_dist_BNhvXrQk = __commonJS({
|
|
|
55499
55573
|
form: "single",
|
|
55500
55574
|
optional: false
|
|
55501
55575
|
}],
|
|
55576
|
+
"recording.readWindowBytes": [{
|
|
55577
|
+
name: "deviceId",
|
|
55578
|
+
form: "single",
|
|
55579
|
+
optional: false
|
|
55580
|
+
}],
|
|
55502
55581
|
"recording.relocateFootage": [{
|
|
55503
55582
|
name: "deviceId",
|
|
55504
55583
|
form: "single",
|
|
@@ -57153,7 +57232,7 @@ var require_alerts_addon = __commonJS({
|
|
|
57153
57232
|
[Symbol.toStringTag]: { value: "Module" }
|
|
57154
57233
|
});
|
|
57155
57234
|
require_chunk_Cek0wNdY();
|
|
57156
|
-
var require_dist10 =
|
|
57235
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
57157
57236
|
function selectExpired(alerts, cutoffMs) {
|
|
57158
57237
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
57159
57238
|
}
|
|
@@ -57972,7 +58051,7 @@ var require_console_logging = __commonJS({
|
|
|
57972
58051
|
[Symbol.toStringTag]: { value: "Module" }
|
|
57973
58052
|
});
|
|
57974
58053
|
require_chunk_Cek0wNdY();
|
|
57975
|
-
var require_dist10 =
|
|
58054
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
57976
58055
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
57977
58056
|
var LEVEL_RANK = {
|
|
57978
58057
|
debug: 0,
|
|
@@ -58066,7 +58145,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
58066
58145
|
"use strict";
|
|
58067
58146
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
58068
58147
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
58069
|
-
var require_dist10 =
|
|
58148
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
58070
58149
|
var node_crypto = __require("crypto");
|
|
58071
58150
|
var node_fs_promises = __require("fs/promises");
|
|
58072
58151
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -58963,11 +59042,11 @@ var require_core_blocks = __commonJS({
|
|
|
58963
59042
|
}
|
|
58964
59043
|
});
|
|
58965
59044
|
|
|
58966
|
-
// ../system/dist/retired-settings-keys-
|
|
58967
|
-
var
|
|
58968
|
-
"../system/dist/retired-settings-keys-
|
|
59045
|
+
// ../system/dist/retired-settings-keys-ovd_DQzc.js
|
|
59046
|
+
var require_retired_settings_keys_ovd_DQzc = __commonJS({
|
|
59047
|
+
"../system/dist/retired-settings-keys-ovd_DQzc.js"(exports) {
|
|
58969
59048
|
"use strict";
|
|
58970
|
-
var require_dist10 =
|
|
59049
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
58971
59050
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
58972
59051
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
58973
59052
|
return raw === "" || raw === "hub";
|
|
@@ -61010,8 +61089,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
61010
61089
|
[Symbol.toStringTag]: { value: "Module" }
|
|
61011
61090
|
});
|
|
61012
61091
|
require_chunk_Cek0wNdY();
|
|
61013
|
-
var require_dist10 =
|
|
61014
|
-
var require_retired_settings_keys =
|
|
61092
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
61093
|
+
var require_retired_settings_keys = require_retired_settings_keys_ovd_DQzc();
|
|
61015
61094
|
var node_crypto = __require("crypto");
|
|
61016
61095
|
var _camstack_types_node = require_node();
|
|
61017
61096
|
var JOB_HISTORY = 20;
|
|
@@ -65680,7 +65759,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
65680
65759
|
[Symbol.toStringTag]: { value: "Module" }
|
|
65681
65760
|
});
|
|
65682
65761
|
require_chunk_Cek0wNdY();
|
|
65683
|
-
var require_dist10 =
|
|
65762
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
65684
65763
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
65685
65764
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
65686
65765
|
var HubForwarderDestination = class {
|
|
@@ -65817,7 +65896,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
65817
65896
|
"use strict";
|
|
65818
65897
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
65819
65898
|
require_chunk_Cek0wNdY();
|
|
65820
|
-
var require_dist10 =
|
|
65899
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
65821
65900
|
var NO_DEVICES = "liveness:no-devices";
|
|
65822
65901
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
65823
65902
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -66007,7 +66086,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
66007
66086
|
[Symbol.toStringTag]: { value: "Module" }
|
|
66008
66087
|
});
|
|
66009
66088
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
66010
|
-
var require_dist10 =
|
|
66089
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
66011
66090
|
var node_crypto = __require("crypto");
|
|
66012
66091
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
66013
66092
|
var crypto$1 = __require("crypto");
|
|
@@ -73691,7 +73770,7 @@ var require_loki_logging = __commonJS({
|
|
|
73691
73770
|
[Symbol.toStringTag]: { value: "Module" }
|
|
73692
73771
|
});
|
|
73693
73772
|
require_chunk_Cek0wNdY();
|
|
73694
|
-
var require_dist10 =
|
|
73773
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
73695
73774
|
function sanitizeLabelName(raw) {
|
|
73696
73775
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
73697
73776
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -74256,7 +74335,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
74256
74335
|
[Symbol.toStringTag]: { value: "Module" }
|
|
74257
74336
|
});
|
|
74258
74337
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
74259
|
-
var require_dist10 =
|
|
74338
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
74260
74339
|
var node_child_process = __require("child_process");
|
|
74261
74340
|
var node_util = __require("util");
|
|
74262
74341
|
var node_os = __require("os");
|
|
@@ -75198,7 +75277,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
75198
75277
|
[Symbol.toStringTag]: { value: "Module" }
|
|
75199
75278
|
});
|
|
75200
75279
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
75201
|
-
var require_dist10 =
|
|
75280
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
75202
75281
|
var node_crypto = __require("crypto");
|
|
75203
75282
|
var node_fs_promises = __require("fs/promises");
|
|
75204
75283
|
var node_path = __require("path");
|
|
@@ -76314,8 +76393,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
76314
76393
|
[Symbol.toStringTag]: { value: "Module" }
|
|
76315
76394
|
});
|
|
76316
76395
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
76317
|
-
var require_dist10 =
|
|
76318
|
-
var require_retired_settings_keys =
|
|
76396
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
76397
|
+
var require_retired_settings_keys = require_retired_settings_keys_ovd_DQzc();
|
|
76319
76398
|
var node_crypto = __require("crypto");
|
|
76320
76399
|
var node_fs = __require("fs");
|
|
76321
76400
|
var node_module = __require("module");
|
|
@@ -78509,7 +78588,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
78509
78588
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78510
78589
|
});
|
|
78511
78590
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
78512
|
-
var require_dist10 =
|
|
78591
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
78513
78592
|
var node_crypto = __require("crypto");
|
|
78514
78593
|
var node_fs_promises = __require("fs/promises");
|
|
78515
78594
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -80388,7 +80467,7 @@ var require_system_config_addon = __commonJS({
|
|
|
80388
80467
|
[Symbol.toStringTag]: { value: "Module" }
|
|
80389
80468
|
});
|
|
80390
80469
|
require_chunk_Cek0wNdY();
|
|
80391
|
-
var require_dist10 =
|
|
80470
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
80392
80471
|
var SECTION_TITLES = {
|
|
80393
80472
|
server: "Server",
|
|
80394
80473
|
auth: "Authentication"
|
|
@@ -98449,7 +98528,7 @@ var require_winston_logging = __commonJS({
|
|
|
98449
98528
|
[Symbol.toStringTag]: { value: "Module" }
|
|
98450
98529
|
});
|
|
98451
98530
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
98452
|
-
var require_dist10 =
|
|
98531
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
98453
98532
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
98454
98533
|
var node_path = __require("path");
|
|
98455
98534
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -100392,9 +100471,9 @@ var require_event_category_EY0GNjV9 = __commonJS({
|
|
|
100392
100471
|
}
|
|
100393
100472
|
});
|
|
100394
100473
|
|
|
100395
|
-
// ../types/dist/sleep-
|
|
100396
|
-
var
|
|
100397
|
-
"../types/dist/sleep-
|
|
100474
|
+
// ../types/dist/sleep-CSodb2vQ.js
|
|
100475
|
+
var require_sleep_CSodb2vQ = __commonJS({
|
|
100476
|
+
"../types/dist/sleep-CSodb2vQ.js"(exports) {
|
|
100398
100477
|
"use strict";
|
|
100399
100478
|
var require_event_category = require_event_category_EY0GNjV9();
|
|
100400
100479
|
var zod = require_zod();
|
|
@@ -102922,6 +103001,7 @@ var require_sleep_BCRrMlni = __commonJS({
|
|
|
102922
103001
|
testRule: (input) => dispatch("notification-rules", "notificationRules", "testRule", "mutation", input),
|
|
102923
103002
|
getConditionCatalog: (input) => dispatch("notification-rules", "notificationRules", "getConditionCatalog", "query", input),
|
|
102924
103003
|
getHistory: (input) => dispatch("notification-rules", "notificationRules", "getHistory", "query", input),
|
|
103004
|
+
resolveArtifactUrl: (input) => dispatch("notification-rules", "notificationRules", "resolveArtifactUrl", "query", input),
|
|
102925
103005
|
listSnoozes: (input) => dispatch("notification-rules", "notificationRules", "listSnoozes", "query", input),
|
|
102926
103006
|
createSnooze: (input) => dispatch("notification-rules", "notificationRules", "createSnooze", "mutation", input),
|
|
102927
103007
|
cancelSnooze: (input) => dispatch("notification-rules", "notificationRules", "cancelSnooze", "mutation", input),
|
|
@@ -103265,6 +103345,7 @@ var require_sleep_BCRrMlni = __commonJS({
|
|
|
103265
103345
|
locateSegment: (input) => dispatchSystem("recording", "locateSegment", "query", input),
|
|
103266
103346
|
readSegmentBytes: (input) => dispatchSystem("recording", "readSegmentBytes", "query", input),
|
|
103267
103347
|
readGopBytes: (input) => dispatchSystem("recording", "readGopBytes", "query", input),
|
|
103348
|
+
readWindowBytes: (input) => dispatchSystem("recording", "readWindowBytes", "query", input),
|
|
103268
103349
|
setDeviceConfig: (input) => dispatchSystem("recording", "setDeviceConfig", "mutation", input),
|
|
103269
103350
|
rescanStorage: (input) => dispatchSystem("recording", "rescanStorage", "mutation", input),
|
|
103270
103351
|
pruneFootage: (input) => dispatchSystem("recording", "pruneFootage", "mutation", input),
|
|
@@ -103946,7 +104027,7 @@ var require_addon = __commonJS({
|
|
|
103946
104027
|
"use strict";
|
|
103947
104028
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
103948
104029
|
var require_event_category = require_event_category_EY0GNjV9();
|
|
103949
|
-
var require_sleep =
|
|
104030
|
+
var require_sleep = require_sleep_CSodb2vQ();
|
|
103950
104031
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
103951
104032
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
103952
104033
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -121685,7 +121766,7 @@ var require_dist3 = __commonJS({
|
|
|
121685
121766
|
"use strict";
|
|
121686
121767
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
121687
121768
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
121688
|
-
var require_dist10 =
|
|
121769
|
+
var require_dist10 = require_dist_jRSrzoXr();
|
|
121689
121770
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
121690
121771
|
require_alerts();
|
|
121691
121772
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -202333,7 +202414,7 @@ var require_dist4 = __commonJS({
|
|
|
202333
202414
|
"use strict";
|
|
202334
202415
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
202335
202416
|
var require_event_category = require_event_category_EY0GNjV9();
|
|
202336
|
-
var require_sleep =
|
|
202417
|
+
var require_sleep = require_sleep_CSodb2vQ();
|
|
202337
202418
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
202338
202419
|
var require_enums2 = require_enums();
|
|
202339
202420
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -213320,7 +213401,23 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
213320
213401
|
updatedAt: zod.z.number(),
|
|
213321
213402
|
/** Failure detail — present on a `dead` row. */
|
|
213322
213403
|
error: zod.z.string().optional(),
|
|
213323
|
-
subject: NcHistorySubjectSchema
|
|
213404
|
+
subject: NcHistorySubjectSchema,
|
|
213405
|
+
/**
|
|
213406
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
213407
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
213408
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
213409
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
213410
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
213411
|
+
*
|
|
213412
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
213413
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
213414
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
213415
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
213416
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
213417
|
+
* Assistant export) must render as "no image right now", never as a
|
|
213418
|
+
* broken link.
|
|
213419
|
+
*/
|
|
213420
|
+
artifactIds: zod.z.array(zod.z.string().min(1)).optional()
|
|
213324
213421
|
});
|
|
213325
213422
|
var NC_HISTORY_LIMIT_DEFAULT = 100;
|
|
213326
213423
|
var NC_HISTORY_LIMIT_MAX = 500;
|
|
@@ -213568,6 +213665,20 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
213568
213665
|
*/
|
|
213569
213666
|
getHistory: require_sleep.method(zod.z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), zod.z.object({ entries: zod.z.array(NcHistoryEntrySchema) }), { auth: "admin" }),
|
|
213570
213667
|
/**
|
|
213668
|
+
* Mint a fresh, externally-reachable URL for one artefact a history row
|
|
213669
|
+
* named in {@link NcHistoryEntrySchema.shape.artifactIds} — the SAME
|
|
213670
|
+
* signed-link mechanism the dispatcher uses to attach media to an
|
|
213671
|
+
* outgoing notification (one derivation; this never re-implements it).
|
|
213672
|
+
*
|
|
213673
|
+
* `url: null` on THREE causes a caller must treat identically ("no image
|
|
213674
|
+
* right now", never a broken link): the id is unknown, its artefact has
|
|
213675
|
+
* expired past the retained shelf's own age bound, or this install has no
|
|
213676
|
+
* externally-reachable base URL. A caller that received a URL on a
|
|
213677
|
+
* previous call and now gets `null` must stop showing it — a link that
|
|
213678
|
+
* worked five minutes ago is not proof it works now.
|
|
213679
|
+
*/
|
|
213680
|
+
resolveArtifactUrl: require_sleep.method(zod.z.object({ artifactId: zod.z.string().min(1) }), zod.z.object({ url: zod.z.string().nullable() }), { auth: "admin" }),
|
|
213681
|
+
/**
|
|
213571
213682
|
* Snooze windows currently in effect, plus any whose digest has not yet
|
|
213572
213683
|
* gone out. `caller: 'required'`: a user sees their OWN windows and the
|
|
213573
213684
|
* global ones that silence them, never another person's private silence.
|
|
@@ -225037,6 +225148,23 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225037
225148
|
/** Media ms the returned fragment covers. */
|
|
225038
225149
|
gopDurMs: zod.z.number()
|
|
225039
225150
|
});
|
|
225151
|
+
var ReadWindowBytesResultSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
|
|
225152
|
+
kind: zod.z.literal("ok"),
|
|
225153
|
+
data: zod.z.instanceof(Uint8Array),
|
|
225154
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
225155
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
225156
|
+
gopStartMs: zod.z.number(),
|
|
225157
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
225158
|
+
gopDurMs: zod.z.number(),
|
|
225159
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
225160
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
225161
|
+
reachesRequestedEnd: zod.z.boolean()
|
|
225162
|
+
}), zod.z.object({
|
|
225163
|
+
kind: zod.z.literal("spans-multiple-segments"),
|
|
225164
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
225165
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
225166
|
+
segmentEndMs: zod.z.number()
|
|
225167
|
+
})]);
|
|
225040
225168
|
var recordingCapability = {
|
|
225041
225169
|
name: "recording",
|
|
225042
225170
|
scope: "system",
|
|
@@ -225116,6 +225244,21 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
225116
225244
|
kind: "query",
|
|
225117
225245
|
auth: "admin"
|
|
225118
225246
|
}),
|
|
225247
|
+
/** Read a WINDOW `[fromMs, toMs)` of segment `startMs`, by mfra byte
|
|
225248
|
+
* range — the multi-GOP twin of `readGopBytes`. Refuses (does not
|
|
225249
|
+
* degrade) when the window runs past the covering segment. Used by the
|
|
225250
|
+
* replay clip's `recording` source to fetch several seconds of native
|
|
225251
|
+
* footage for its single ffmpeg decode pass. */
|
|
225252
|
+
readWindowBytes: require_sleep.method(zod.z.object({
|
|
225253
|
+
deviceId: zod.z.number(),
|
|
225254
|
+
profile: zod.z.string(),
|
|
225255
|
+
startMs: zod.z.number(),
|
|
225256
|
+
fromMs: zod.z.number(),
|
|
225257
|
+
toMs: zod.z.number()
|
|
225258
|
+
}), ReadWindowBytesResultSchema, {
|
|
225259
|
+
kind: "query",
|
|
225260
|
+
auth: "admin"
|
|
225261
|
+
}),
|
|
225119
225262
|
setDeviceConfig: require_sleep.method(zod.z.object({
|
|
225120
225263
|
deviceId: zod.z.number(),
|
|
225121
225264
|
config: RecordingConfigSchema
|
|
@@ -233543,6 +233686,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
233543
233686
|
addonId: null,
|
|
233544
233687
|
access: "view"
|
|
233545
233688
|
},
|
|
233689
|
+
"notificationRules.resolveArtifactUrl": {
|
|
233690
|
+
capName: "notification-rules",
|
|
233691
|
+
capScope: "system",
|
|
233692
|
+
addonId: null,
|
|
233693
|
+
access: "view"
|
|
233694
|
+
},
|
|
233546
233695
|
"notificationRules.setAlarmConfig": {
|
|
233547
233696
|
capName: "notification-rules",
|
|
233548
233697
|
capScope: "system",
|
|
@@ -234947,6 +235096,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
234947
235096
|
addonId: null,
|
|
234948
235097
|
access: "view"
|
|
234949
235098
|
},
|
|
235099
|
+
"recording.readWindowBytes": {
|
|
235100
|
+
capName: "recording",
|
|
235101
|
+
capScope: "system",
|
|
235102
|
+
addonId: null,
|
|
235103
|
+
access: "view"
|
|
235104
|
+
},
|
|
234950
235105
|
"recording.refreshStorageLocationsForMigration": {
|
|
234951
235106
|
capName: "recording",
|
|
234952
235107
|
capScope: "system",
|
|
@@ -238029,6 +238184,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
238029
238184
|
form: "single",
|
|
238030
238185
|
optional: false
|
|
238031
238186
|
}],
|
|
238187
|
+
"recording.readWindowBytes": [{
|
|
238188
|
+
name: "deviceId",
|
|
238189
|
+
form: "single",
|
|
238190
|
+
optional: false
|
|
238191
|
+
}],
|
|
238032
238192
|
"recording.relocateFootage": [{
|
|
238033
238193
|
name: "deviceId",
|
|
238034
238194
|
form: "single",
|
|
@@ -238505,6 +238665,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
238505
238665
|
"recording.pruneFootage",
|
|
238506
238666
|
"recording.readGopBytes",
|
|
238507
238667
|
"recording.readSegmentBytes",
|
|
238668
|
+
"recording.readWindowBytes",
|
|
238508
238669
|
"recording.relocateFootage",
|
|
238509
238670
|
"recording.renderClip",
|
|
238510
238671
|
"recording.renderGif",
|
|
@@ -242826,6 +242987,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
242826
242987
|
exports.RawStateResultSchema = require_sleep.RawStateResultSchema;
|
|
242827
242988
|
exports.ReadGopBytesResultSchema = ReadGopBytesResultSchema;
|
|
242828
242989
|
exports.ReadSegmentBytesResultSchema = ReadSegmentBytesResultSchema;
|
|
242990
|
+
exports.ReadWindowBytesResultSchema = ReadWindowBytesResultSchema;
|
|
242829
242991
|
exports.ReadinessRegistry = require_sleep.ReadinessRegistry;
|
|
242830
242992
|
exports.ReadinessTimeoutError = require_sleep.ReadinessTimeoutError;
|
|
242831
242993
|
exports.RecentTracksPageSchema = RecentTracksPageSchema;
|