camstack 1.2.126 → 1.2.128
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-uGNYCvYp.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -15582,6 +15582,32 @@ var CameraSwitchGroupSchema = external_exports.object({
|
|
|
15582
15582
|
/** Unix ms when the group was composed server-side. */
|
|
15583
15583
|
fetchedAt: external_exports.number()
|
|
15584
15584
|
});
|
|
15585
|
+
var ArchivedDebugNoteSchema = external_exports.object({
|
|
15586
|
+
/** Archive row id. Derived from `(sourceTrackId, note)`, so re-archiving the
|
|
15587
|
+
* same sentence about the same track lands on the row already there. */
|
|
15588
|
+
id: external_exports.string(),
|
|
15589
|
+
/** The operator's own words, verbatim. */
|
|
15590
|
+
note: external_exports.string(),
|
|
15591
|
+
/** The camera. Required — every question here is asked per-camera. */
|
|
15592
|
+
deviceId: external_exports.number().int(),
|
|
15593
|
+
/** The track the note was written on. PROVENANCE, not ownership: the track
|
|
15594
|
+
* is expected to be gone, and this row is not a reference to it. */
|
|
15595
|
+
sourceTrackId: external_exports.string(),
|
|
15596
|
+
/** Epoch ms the note was moved here, i.e. when the operator reviewed it. */
|
|
15597
|
+
archivedAt: external_exports.number().int(),
|
|
15598
|
+
/** The track's `firstSeen`, when the row still knew it; `null` otherwise. */
|
|
15599
|
+
trackStartedAt: external_exports.number().int().nullable(),
|
|
15600
|
+
/** The track's detector class (`person`, `car`, …); `null` when unknown. */
|
|
15601
|
+
trackClass: external_exports.string().nullable(),
|
|
15602
|
+
/** The track's display label at review time; `null` when it had none. */
|
|
15603
|
+
trackLabel: external_exports.string().nullable()
|
|
15604
|
+
});
|
|
15605
|
+
var ArchivedDebugNoteQueryInputSchema = external_exports.object({
|
|
15606
|
+
/** Restrict to a single camera; omit for every row. */
|
|
15607
|
+
deviceId: external_exports.number().int().optional(),
|
|
15608
|
+
/** Max rows returned, newest-first. */
|
|
15609
|
+
limit: external_exports.number().int().min(1).max(1e3).optional()
|
|
15610
|
+
});
|
|
15585
15611
|
var OpsLogDomainSchema = external_exports.enum(["recording", "events"]);
|
|
15586
15612
|
var OpsLogOpSchema = external_exports.enum([
|
|
15587
15613
|
"prune",
|
|
@@ -27431,6 +27457,31 @@ var pipelineAnalyticsCapability = {
|
|
|
27431
27457
|
flags: TrackFlagsPatchSchema
|
|
27432
27458
|
}), TrackFlagsSchema, { kind: "mutation" }),
|
|
27433
27459
|
/**
|
|
27460
|
+
* The archived debug notes, newest first — the corpus of what operators
|
|
27461
|
+
* have asked to be checked, across tracks that no longer exist (D405).
|
|
27462
|
+
*
|
|
27463
|
+
* `setTrackFlags` writes it: a patch carrying `debug: false` still clears
|
|
27464
|
+
* the note off the track row in the same statement (D353's invariant is
|
|
27465
|
+
* untouched), but the note is APPENDED here first. That is the whole point
|
|
27466
|
+
* — before D405, finishing a review destroyed every note written during it,
|
|
27467
|
+
* and the ones that survived aged out with their tracks. This method is the
|
|
27468
|
+
* only way to read what was kept.
|
|
27469
|
+
*
|
|
27470
|
+
* `auth: 'protected'`, matching `setTrackFlags` next door and for the same
|
|
27471
|
+
* reason: the notes are written from the viewer, by an authenticated
|
|
27472
|
+
* non-admin session, and a corpus only an admin can read is a corpus the
|
|
27473
|
+
* person who wrote it cannot use. It carries operator prose about cameras
|
|
27474
|
+
* and nothing else — no media, no paths, no identities beyond a track's
|
|
27475
|
+
* own display label.
|
|
27476
|
+
*
|
|
27477
|
+
* Newest-first, capped by `limit` (default
|
|
27478
|
+
* {@link ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT}), optionally one camera. The
|
|
27479
|
+
* table itself is bounded by row count, not by age — see
|
|
27480
|
+
* {@link MAX_ARCHIVED_DEBUG_NOTES} for why an age clock would be the wrong
|
|
27481
|
+
* bound for exactly this data.
|
|
27482
|
+
*/
|
|
27483
|
+
listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, external_exports.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
|
|
27484
|
+
/**
|
|
27434
27485
|
* Durable event-store footprint for the management UI: event rows
|
|
27435
27486
|
* (motion + object + audio) counted per camera + total, plus the
|
|
27436
27487
|
* event-owned media bytes on disk per camera + total. Stat/count-based,
|
|
@@ -43500,6 +43551,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
43500
43551
|
addonId: null,
|
|
43501
43552
|
access: "view"
|
|
43502
43553
|
},
|
|
43554
|
+
"pipelineAnalytics.listArchivedDebugNotes": {
|
|
43555
|
+
capName: "pipeline-analytics",
|
|
43556
|
+
capScope: "device",
|
|
43557
|
+
addonId: null,
|
|
43558
|
+
access: "view"
|
|
43559
|
+
},
|
|
43503
43560
|
"pipelineAnalytics.listEventKinds": {
|
|
43504
43561
|
capName: "pipeline-analytics",
|
|
43505
43562
|
capScope: "device",
|
|
@@ -47287,6 +47344,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
47287
47344
|
form: "array",
|
|
47288
47345
|
optional: true
|
|
47289
47346
|
}],
|
|
47347
|
+
"pipelineAnalytics.listArchivedDebugNotes": [{
|
|
47348
|
+
name: "deviceId",
|
|
47349
|
+
form: "single",
|
|
47350
|
+
optional: true
|
|
47351
|
+
}],
|
|
47290
47352
|
"pipelineAnalytics.listEventKinds": [{
|
|
47291
47353
|
name: "deviceId",
|
|
47292
47354
|
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-5NJCDSOQ.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-BSFU3OHE.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-BSFU3OHE.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-7JKBAMMQ.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-C5xJy-uL.js
|
|
23637
|
+
var require_dist_C5xJy_uL = __commonJS({
|
|
23638
|
+
"../system/dist/dist-C5xJy-uL.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -26065,6 +26065,32 @@ var require_dist_C_WvDOQ9 = __commonJS({
|
|
|
26065
26065
|
for (const tab of tabs) for (const child of fieldsOf(tab)) walkField(child, out);
|
|
26066
26066
|
}
|
|
26067
26067
|
}
|
|
26068
|
+
var ArchivedDebugNoteSchema = zod.z.object({
|
|
26069
|
+
/** Archive row id. Derived from `(sourceTrackId, note)`, so re-archiving the
|
|
26070
|
+
* same sentence about the same track lands on the row already there. */
|
|
26071
|
+
id: zod.z.string(),
|
|
26072
|
+
/** The operator's own words, verbatim. */
|
|
26073
|
+
note: zod.z.string(),
|
|
26074
|
+
/** The camera. Required — every question here is asked per-camera. */
|
|
26075
|
+
deviceId: zod.z.number().int(),
|
|
26076
|
+
/** The track the note was written on. PROVENANCE, not ownership: the track
|
|
26077
|
+
* is expected to be gone, and this row is not a reference to it. */
|
|
26078
|
+
sourceTrackId: zod.z.string(),
|
|
26079
|
+
/** Epoch ms the note was moved here, i.e. when the operator reviewed it. */
|
|
26080
|
+
archivedAt: zod.z.number().int(),
|
|
26081
|
+
/** The track's `firstSeen`, when the row still knew it; `null` otherwise. */
|
|
26082
|
+
trackStartedAt: zod.z.number().int().nullable(),
|
|
26083
|
+
/** The track's detector class (`person`, `car`, …); `null` when unknown. */
|
|
26084
|
+
trackClass: zod.z.string().nullable(),
|
|
26085
|
+
/** The track's display label at review time; `null` when it had none. */
|
|
26086
|
+
trackLabel: zod.z.string().nullable()
|
|
26087
|
+
});
|
|
26088
|
+
var ArchivedDebugNoteQueryInputSchema = zod.z.object({
|
|
26089
|
+
/** Restrict to a single camera; omit for every row. */
|
|
26090
|
+
deviceId: zod.z.number().int().optional(),
|
|
26091
|
+
/** Max rows returned, newest-first. */
|
|
26092
|
+
limit: zod.z.number().int().min(1).max(1e3).optional()
|
|
26093
|
+
});
|
|
26068
26094
|
var STREAM_QUALITY_LABELS = {
|
|
26069
26095
|
high: "High",
|
|
26070
26096
|
mid: "Mid",
|
|
@@ -38200,6 +38226,31 @@ var require_dist_C_WvDOQ9 = __commonJS({
|
|
|
38200
38226
|
flags: TrackFlagsPatchSchema
|
|
38201
38227
|
}), TrackFlagsSchema, { kind: "mutation" }),
|
|
38202
38228
|
/**
|
|
38229
|
+
* The archived debug notes, newest first — the corpus of what operators
|
|
38230
|
+
* have asked to be checked, across tracks that no longer exist (D405).
|
|
38231
|
+
*
|
|
38232
|
+
* `setTrackFlags` writes it: a patch carrying `debug: false` still clears
|
|
38233
|
+
* the note off the track row in the same statement (D353's invariant is
|
|
38234
|
+
* untouched), but the note is APPENDED here first. That is the whole point
|
|
38235
|
+
* — before D405, finishing a review destroyed every note written during it,
|
|
38236
|
+
* and the ones that survived aged out with their tracks. This method is the
|
|
38237
|
+
* only way to read what was kept.
|
|
38238
|
+
*
|
|
38239
|
+
* `auth: 'protected'`, matching `setTrackFlags` next door and for the same
|
|
38240
|
+
* reason: the notes are written from the viewer, by an authenticated
|
|
38241
|
+
* non-admin session, and a corpus only an admin can read is a corpus the
|
|
38242
|
+
* person who wrote it cannot use. It carries operator prose about cameras
|
|
38243
|
+
* and nothing else — no media, no paths, no identities beyond a track's
|
|
38244
|
+
* own display label.
|
|
38245
|
+
*
|
|
38246
|
+
* Newest-first, capped by `limit` (default
|
|
38247
|
+
* {@link ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT}), optionally one camera. The
|
|
38248
|
+
* table itself is bounded by row count, not by age — see
|
|
38249
|
+
* {@link MAX_ARCHIVED_DEBUG_NOTES} for why an age clock would be the wrong
|
|
38250
|
+
* bound for exactly this data.
|
|
38251
|
+
*/
|
|
38252
|
+
listArchivedDebugNotes: method(ArchivedDebugNoteQueryInputSchema, zod.z.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
|
|
38253
|
+
/**
|
|
38203
38254
|
* Durable event-store footprint for the management UI: event rows
|
|
38204
38255
|
* (motion + object + audio) counted per camera + total, plus the
|
|
38205
38256
|
* event-owned media bytes on disk per camera + total. Stat/count-based,
|
|
@@ -54944,6 +54995,12 @@ var require_dist_C_WvDOQ9 = __commonJS({
|
|
|
54944
54995
|
addonId: null,
|
|
54945
54996
|
access: "view"
|
|
54946
54997
|
},
|
|
54998
|
+
"pipelineAnalytics.listArchivedDebugNotes": {
|
|
54999
|
+
capName: "pipeline-analytics",
|
|
55000
|
+
capScope: "device",
|
|
55001
|
+
addonId: null,
|
|
55002
|
+
access: "view"
|
|
55003
|
+
},
|
|
54947
55004
|
"pipelineAnalytics.listEventKinds": {
|
|
54948
55005
|
capName: "pipeline-analytics",
|
|
54949
55006
|
capScope: "device",
|
|
@@ -58731,6 +58788,11 @@ var require_dist_C_WvDOQ9 = __commonJS({
|
|
|
58731
58788
|
form: "array",
|
|
58732
58789
|
optional: true
|
|
58733
58790
|
}],
|
|
58791
|
+
"pipelineAnalytics.listArchivedDebugNotes": [{
|
|
58792
|
+
name: "deviceId",
|
|
58793
|
+
form: "single",
|
|
58794
|
+
optional: true
|
|
58795
|
+
}],
|
|
58734
58796
|
"pipelineAnalytics.listEventKinds": [{
|
|
58735
58797
|
name: "deviceId",
|
|
58736
58798
|
form: "single",
|
|
@@ -61043,7 +61105,7 @@ var require_alerts_addon = __commonJS({
|
|
|
61043
61105
|
[Symbol.toStringTag]: { value: "Module" }
|
|
61044
61106
|
});
|
|
61045
61107
|
require_chunk_Cek0wNdY();
|
|
61046
|
-
var require_dist10 =
|
|
61108
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
61047
61109
|
function selectExpired(alerts, cutoffMs) {
|
|
61048
61110
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
61049
61111
|
}
|
|
@@ -61862,7 +61924,7 @@ var require_console_logging = __commonJS({
|
|
|
61862
61924
|
[Symbol.toStringTag]: { value: "Module" }
|
|
61863
61925
|
});
|
|
61864
61926
|
require_chunk_Cek0wNdY();
|
|
61865
|
-
var require_dist10 =
|
|
61927
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
61866
61928
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
61867
61929
|
var LEVEL_RANK = {
|
|
61868
61930
|
debug: 0,
|
|
@@ -61956,7 +62018,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
61956
62018
|
"use strict";
|
|
61957
62019
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
61958
62020
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
61959
|
-
var require_dist10 =
|
|
62021
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
61960
62022
|
var node_crypto = __require("crypto");
|
|
61961
62023
|
var node_fs_promises = __require("fs/promises");
|
|
61962
62024
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -62853,11 +62915,11 @@ var require_core_blocks = __commonJS({
|
|
|
62853
62915
|
}
|
|
62854
62916
|
});
|
|
62855
62917
|
|
|
62856
|
-
// ../system/dist/retired-settings-keys-
|
|
62857
|
-
var
|
|
62858
|
-
"../system/dist/retired-settings-keys-
|
|
62918
|
+
// ../system/dist/retired-settings-keys-CONISA8J.js
|
|
62919
|
+
var require_retired_settings_keys_CONISA8J = __commonJS({
|
|
62920
|
+
"../system/dist/retired-settings-keys-CONISA8J.js"(exports) {
|
|
62859
62921
|
"use strict";
|
|
62860
|
-
var require_dist10 =
|
|
62922
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
62861
62923
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
62862
62924
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
62863
62925
|
return raw === "" || raw === "hub";
|
|
@@ -65092,8 +65154,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
65092
65154
|
[Symbol.toStringTag]: { value: "Module" }
|
|
65093
65155
|
});
|
|
65094
65156
|
require_chunk_Cek0wNdY();
|
|
65095
|
-
var require_dist10 =
|
|
65096
|
-
var require_retired_settings_keys =
|
|
65157
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
65158
|
+
var require_retired_settings_keys = require_retired_settings_keys_CONISA8J();
|
|
65097
65159
|
var node_crypto = __require("crypto");
|
|
65098
65160
|
var _camstack_types_node = require_node();
|
|
65099
65161
|
var JOB_HISTORY = 20;
|
|
@@ -70718,7 +70780,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
70718
70780
|
[Symbol.toStringTag]: { value: "Module" }
|
|
70719
70781
|
});
|
|
70720
70782
|
require_chunk_Cek0wNdY();
|
|
70721
|
-
var require_dist10 =
|
|
70783
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
70722
70784
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
70723
70785
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
70724
70786
|
var HubForwarderDestination = class {
|
|
@@ -70855,7 +70917,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
70855
70917
|
"use strict";
|
|
70856
70918
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
70857
70919
|
require_chunk_Cek0wNdY();
|
|
70858
|
-
var require_dist10 =
|
|
70920
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
70859
70921
|
var NO_DEVICES = "liveness:no-devices";
|
|
70860
70922
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
70861
70923
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -71051,7 +71113,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
71051
71113
|
[Symbol.toStringTag]: { value: "Module" }
|
|
71052
71114
|
});
|
|
71053
71115
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
71054
|
-
var require_dist10 =
|
|
71116
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
71055
71117
|
var node_crypto = __require("crypto");
|
|
71056
71118
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
71057
71119
|
var crypto$1 = __require("crypto");
|
|
@@ -78864,7 +78926,7 @@ var require_loki_logging = __commonJS({
|
|
|
78864
78926
|
[Symbol.toStringTag]: { value: "Module" }
|
|
78865
78927
|
});
|
|
78866
78928
|
require_chunk_Cek0wNdY();
|
|
78867
|
-
var require_dist10 =
|
|
78929
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
78868
78930
|
function sanitizeLabelName(raw) {
|
|
78869
78931
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
78870
78932
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -79429,7 +79491,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
79429
79491
|
[Symbol.toStringTag]: { value: "Module" }
|
|
79430
79492
|
});
|
|
79431
79493
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
79432
|
-
var require_dist10 =
|
|
79494
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
79433
79495
|
var node_fs_promises = __require("fs/promises");
|
|
79434
79496
|
var node_child_process = __require("child_process");
|
|
79435
79497
|
var node_util = __require("util");
|
|
@@ -82013,7 +82075,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
82013
82075
|
[Symbol.toStringTag]: { value: "Module" }
|
|
82014
82076
|
});
|
|
82015
82077
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
82016
|
-
var require_dist10 =
|
|
82078
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
82017
82079
|
var node_crypto = __require("crypto");
|
|
82018
82080
|
var node_fs_promises = __require("fs/promises");
|
|
82019
82081
|
var node_path = __require("path");
|
|
@@ -83129,8 +83191,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
83129
83191
|
[Symbol.toStringTag]: { value: "Module" }
|
|
83130
83192
|
});
|
|
83131
83193
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
83132
|
-
var require_dist10 =
|
|
83133
|
-
var require_retired_settings_keys =
|
|
83194
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
83195
|
+
var require_retired_settings_keys = require_retired_settings_keys_CONISA8J();
|
|
83134
83196
|
var node_crypto = __require("crypto");
|
|
83135
83197
|
var node_fs = __require("fs");
|
|
83136
83198
|
var node_module = __require("module");
|
|
@@ -85634,7 +85696,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
85634
85696
|
[Symbol.toStringTag]: { value: "Module" }
|
|
85635
85697
|
});
|
|
85636
85698
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
85637
|
-
var require_dist10 =
|
|
85699
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
85638
85700
|
var require_hub_cap_forward = require_hub_cap_forward_DmHNjbB0();
|
|
85639
85701
|
var zod = require_zod();
|
|
85640
85702
|
var node_crypto = __require("crypto");
|
|
@@ -89284,7 +89346,7 @@ var require_system_config_addon = __commonJS({
|
|
|
89284
89346
|
[Symbol.toStringTag]: { value: "Module" }
|
|
89285
89347
|
});
|
|
89286
89348
|
require_chunk_Cek0wNdY();
|
|
89287
|
-
var require_dist10 =
|
|
89349
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
89288
89350
|
var SECTION_TITLES = {
|
|
89289
89351
|
server: "Server",
|
|
89290
89352
|
auth: "Authentication"
|
|
@@ -107345,7 +107407,7 @@ var require_winston_logging = __commonJS({
|
|
|
107345
107407
|
[Symbol.toStringTag]: { value: "Module" }
|
|
107346
107408
|
});
|
|
107347
107409
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
107348
|
-
var require_dist10 =
|
|
107410
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
107349
107411
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
107350
107412
|
var node_path = __require("path");
|
|
107351
107413
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -109290,9 +109352,9 @@ var require_event_category_BVo6ta6 = __commonJS({
|
|
|
109290
109352
|
}
|
|
109291
109353
|
});
|
|
109292
109354
|
|
|
109293
|
-
// ../types/dist/sleep-
|
|
109294
|
-
var
|
|
109295
|
-
"../types/dist/sleep-
|
|
109355
|
+
// ../types/dist/sleep-IjLtwkO5.js
|
|
109356
|
+
var require_sleep_IjLtwkO5 = __commonJS({
|
|
109357
|
+
"../types/dist/sleep-IjLtwkO5.js"(exports) {
|
|
109296
109358
|
"use strict";
|
|
109297
109359
|
var require_event_category = require_event_category_BVo6ta6();
|
|
109298
109360
|
var zod = require_zod();
|
|
@@ -112024,6 +112086,7 @@ var require_sleep_BZtO_eFY = __commonJS({
|
|
|
112024
112086
|
reconcileFromDisk: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "reconcileFromDisk", "mutation", input),
|
|
112025
112087
|
deleteTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "deleteTracks", "mutation", input),
|
|
112026
112088
|
setTrackFlags: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "setTrackFlags", "mutation", input),
|
|
112089
|
+
listArchivedDebugNotes: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listArchivedDebugNotes", "query", input),
|
|
112027
112090
|
getEventStoreFootprint: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getEventStoreFootprint", "query", input),
|
|
112028
112091
|
getEventMediaFootprintByKind: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getEventMediaFootprintByKind", "query", input),
|
|
112029
112092
|
pruneEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "pruneEvents", "mutation", input),
|
|
@@ -113024,7 +113087,7 @@ var require_addon = __commonJS({
|
|
|
113024
113087
|
"use strict";
|
|
113025
113088
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
113026
113089
|
var require_event_category = require_event_category_BVo6ta6();
|
|
113027
|
-
var require_sleep =
|
|
113090
|
+
var require_sleep = require_sleep_IjLtwkO5();
|
|
113028
113091
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
113029
113092
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
113030
113093
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -131955,7 +132018,7 @@ var require_dist3 = __commonJS({
|
|
|
131955
132018
|
"use strict";
|
|
131956
132019
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
131957
132020
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
131958
|
-
var require_dist10 =
|
|
132021
|
+
var require_dist10 = require_dist_C5xJy_uL();
|
|
131959
132022
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
131960
132023
|
require_alerts();
|
|
131961
132024
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -213072,7 +213135,7 @@ var require_dist4 = __commonJS({
|
|
|
213072
213135
|
"use strict";
|
|
213073
213136
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
213074
213137
|
var require_event_category = require_event_category_BVo6ta6();
|
|
213075
|
-
var require_sleep =
|
|
213138
|
+
var require_sleep = require_sleep_IjLtwkO5();
|
|
213076
213139
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
213077
213140
|
var require_enums2 = require_enums();
|
|
213078
213141
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -213825,6 +213888,34 @@ var require_dist4 = __commonJS({
|
|
|
213825
213888
|
for (const tab of tabs) for (const child of fieldsOf(tab)) walkField(child, out);
|
|
213826
213889
|
}
|
|
213827
213890
|
}
|
|
213891
|
+
var MAX_ARCHIVED_DEBUG_NOTES = 5e3;
|
|
213892
|
+
var ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT = 200;
|
|
213893
|
+
var ArchivedDebugNoteSchema = zod.z.object({
|
|
213894
|
+
/** Archive row id. Derived from `(sourceTrackId, note)`, so re-archiving the
|
|
213895
|
+
* same sentence about the same track lands on the row already there. */
|
|
213896
|
+
id: zod.z.string(),
|
|
213897
|
+
/** The operator's own words, verbatim. */
|
|
213898
|
+
note: zod.z.string(),
|
|
213899
|
+
/** The camera. Required — every question here is asked per-camera. */
|
|
213900
|
+
deviceId: zod.z.number().int(),
|
|
213901
|
+
/** The track the note was written on. PROVENANCE, not ownership: the track
|
|
213902
|
+
* is expected to be gone, and this row is not a reference to it. */
|
|
213903
|
+
sourceTrackId: zod.z.string(),
|
|
213904
|
+
/** Epoch ms the note was moved here, i.e. when the operator reviewed it. */
|
|
213905
|
+
archivedAt: zod.z.number().int(),
|
|
213906
|
+
/** The track's `firstSeen`, when the row still knew it; `null` otherwise. */
|
|
213907
|
+
trackStartedAt: zod.z.number().int().nullable(),
|
|
213908
|
+
/** The track's detector class (`person`, `car`, …); `null` when unknown. */
|
|
213909
|
+
trackClass: zod.z.string().nullable(),
|
|
213910
|
+
/** The track's display label at review time; `null` when it had none. */
|
|
213911
|
+
trackLabel: zod.z.string().nullable()
|
|
213912
|
+
});
|
|
213913
|
+
var ArchivedDebugNoteQueryInputSchema = zod.z.object({
|
|
213914
|
+
/** Restrict to a single camera; omit for every row. */
|
|
213915
|
+
deviceId: zod.z.number().int().optional(),
|
|
213916
|
+
/** Max rows returned, newest-first. */
|
|
213917
|
+
limit: zod.z.number().int().min(1).max(1e3).optional()
|
|
213918
|
+
});
|
|
213828
213919
|
var STREAM_QUALITY_LABELS = {
|
|
213829
213920
|
high: "High",
|
|
213830
213921
|
mid: "Mid",
|
|
@@ -228380,6 +228471,31 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
228380
228471
|
flags: TrackFlagsPatchSchema
|
|
228381
228472
|
}), TrackFlagsSchema, { kind: "mutation" }),
|
|
228382
228473
|
/**
|
|
228474
|
+
* The archived debug notes, newest first — the corpus of what operators
|
|
228475
|
+
* have asked to be checked, across tracks that no longer exist (D405).
|
|
228476
|
+
*
|
|
228477
|
+
* `setTrackFlags` writes it: a patch carrying `debug: false` still clears
|
|
228478
|
+
* the note off the track row in the same statement (D353's invariant is
|
|
228479
|
+
* untouched), but the note is APPENDED here first. That is the whole point
|
|
228480
|
+
* — before D405, finishing a review destroyed every note written during it,
|
|
228481
|
+
* and the ones that survived aged out with their tracks. This method is the
|
|
228482
|
+
* only way to read what was kept.
|
|
228483
|
+
*
|
|
228484
|
+
* `auth: 'protected'`, matching `setTrackFlags` next door and for the same
|
|
228485
|
+
* reason: the notes are written from the viewer, by an authenticated
|
|
228486
|
+
* non-admin session, and a corpus only an admin can read is a corpus the
|
|
228487
|
+
* person who wrote it cannot use. It carries operator prose about cameras
|
|
228488
|
+
* and nothing else — no media, no paths, no identities beyond a track's
|
|
228489
|
+
* own display label.
|
|
228490
|
+
*
|
|
228491
|
+
* Newest-first, capped by `limit` (default
|
|
228492
|
+
* {@link ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT}), optionally one camera. The
|
|
228493
|
+
* table itself is bounded by row count, not by age — see
|
|
228494
|
+
* {@link MAX_ARCHIVED_DEBUG_NOTES} for why an age clock would be the wrong
|
|
228495
|
+
* bound for exactly this data.
|
|
228496
|
+
*/
|
|
228497
|
+
listArchivedDebugNotes: require_sleep.method(ArchivedDebugNoteQueryInputSchema, zod.z.array(ArchivedDebugNoteSchema).readonly(), { kind: "query" }),
|
|
228498
|
+
/**
|
|
228383
228499
|
* Durable event-store footprint for the management UI: event rows
|
|
228384
228500
|
* (motion + object + audio) counted per camera + total, plus the
|
|
228385
228501
|
* event-owned media bytes on disk per camera + total. Stat/count-based,
|
|
@@ -248811,6 +248927,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
248811
248927
|
addonId: null,
|
|
248812
248928
|
access: "view"
|
|
248813
248929
|
},
|
|
248930
|
+
"pipelineAnalytics.listArchivedDebugNotes": {
|
|
248931
|
+
capName: "pipeline-analytics",
|
|
248932
|
+
capScope: "device",
|
|
248933
|
+
addonId: null,
|
|
248934
|
+
access: "view"
|
|
248935
|
+
},
|
|
248814
248936
|
"pipelineAnalytics.listEventKinds": {
|
|
248815
248937
|
capName: "pipeline-analytics",
|
|
248816
248938
|
capScope: "device",
|
|
@@ -252862,6 +252984,11 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252862
252984
|
form: "array",
|
|
252863
252985
|
optional: true
|
|
252864
252986
|
}],
|
|
252987
|
+
"pipelineAnalytics.listArchivedDebugNotes": [{
|
|
252988
|
+
name: "deviceId",
|
|
252989
|
+
form: "single",
|
|
252990
|
+
optional: true
|
|
252991
|
+
}],
|
|
252865
252992
|
"pipelineAnalytics.listEventKinds": [{
|
|
252866
252993
|
name: "deviceId",
|
|
252867
252994
|
form: "single",
|
|
@@ -257521,6 +257648,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
257521
257648
|
exports.ALEXA_EGRESS_PROFILE = ALEXA_EGRESS_PROFILE;
|
|
257522
257649
|
exports.ALL_CAPABILITY_DEFINITIONS = ALL_CAPABILITY_DEFINITIONS;
|
|
257523
257650
|
exports.APPLE_SA_TO_MACRO = APPLE_SA_TO_MACRO;
|
|
257651
|
+
exports.ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT = ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT;
|
|
257524
257652
|
exports.AUDIO_ANALYSIS_CAP_NAME = AUDIO_ANALYSIS_CAP_NAME;
|
|
257525
257653
|
exports.AUDIO_BACKEND_CHOICES = AUDIO_BACKEND_CHOICES;
|
|
257526
257654
|
exports.AUDIO_MACRO_LABELS = AUDIO_MACRO_LABELS;
|
|
@@ -257558,6 +257686,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
257558
257686
|
exports.ApiKeySummarySchema = ApiKeySummarySchema;
|
|
257559
257687
|
exports.ArchiveEntrySchema = ArchiveEntrySchema;
|
|
257560
257688
|
exports.ArchiveManifestSchema = ArchiveManifestSchema;
|
|
257689
|
+
exports.ArchivedDebugNoteQueryInputSchema = ArchivedDebugNoteQueryInputSchema;
|
|
257690
|
+
exports.ArchivedDebugNoteSchema = ArchivedDebugNoteSchema;
|
|
257561
257691
|
exports.AttachmentMediaTypeSchema = AttachmentMediaTypeSchema;
|
|
257562
257692
|
exports.AttachmentSchema = AttachmentSchema;
|
|
257563
257693
|
exports.AudioAnalysisResultSchema = AudioAnalysisResultSchema;
|
|
@@ -257978,6 +258108,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
257978
258108
|
exports.LoginMethodContributionSchema = LoginMethodContributionSchema;
|
|
257979
258109
|
exports.LoginStageEnum = LoginStageEnum;
|
|
257980
258110
|
exports.MACRO_LABELS = MACRO_LABELS;
|
|
258111
|
+
exports.MAX_ARCHIVED_DEBUG_NOTES = MAX_ARCHIVED_DEBUG_NOTES;
|
|
257981
258112
|
exports.MAX_CLIP_EVENT_IDS = MAX_CLIP_EVENT_IDS;
|
|
257982
258113
|
exports.MAX_CLIP_LABELS = MAX_CLIP_LABELS;
|
|
257983
258114
|
exports.MAX_CONDITION_DEPTH = MAX_CONDITION_DEPTH;
|