camstack 1.2.71 → 1.2.73
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-DAxSW8cv.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -20772,6 +20772,27 @@ var deviceManagerCapability = {
|
|
|
20772
20772
|
kind: "mutation",
|
|
20773
20773
|
auth: "admin"
|
|
20774
20774
|
}),
|
|
20775
|
+
/** Rename a room: replace the label in the registry IN PLACE and move
|
|
20776
|
+
* every device that carried it, as ONE server operation.
|
|
20777
|
+
*
|
|
20778
|
+
* The admin UI used to do this as `addLocation(to)` → N ×
|
|
20779
|
+
* `setLocation(device, to)` → `removeLocation(from)` from the browser.
|
|
20780
|
+
* Nothing bound those three together, so a closed tab left the fleet
|
|
20781
|
+
* split across two rooms — one of which the operator believed was gone.
|
|
20782
|
+
*
|
|
20783
|
+
* `from` is matched the way the registry matches everywhere else
|
|
20784
|
+
* (trimmed, case-insensitive) and need NOT be registered: the registry is
|
|
20785
|
+
* a suggestion list, and the devices that most need a rename are exactly
|
|
20786
|
+
* the ones carrying a label nobody registered. `to` renames onto an
|
|
20787
|
+
* existing room by MERGING into it, leaving no duplicate label. An empty
|
|
20788
|
+
* `to` throws before anything is written. */
|
|
20789
|
+
renameLocation: method(external_exports.object({
|
|
20790
|
+
from: external_exports.string(),
|
|
20791
|
+
to: external_exports.string()
|
|
20792
|
+
}), external_exports.object({ moved: external_exports.number() }), {
|
|
20793
|
+
kind: "mutation",
|
|
20794
|
+
auth: "admin"
|
|
20795
|
+
}),
|
|
20775
20796
|
/** Soft-disable / re-enable the device. Drivers consult
|
|
20776
20797
|
* `BaseDevice.disabled` to gate lifecycle hooks. */
|
|
20777
20798
|
setDisabled: method(external_exports.object({
|
|
@@ -23696,6 +23717,8 @@ var NcSystemEventKindSchema = external_exports.enum([
|
|
|
23696
23717
|
"device-offline",
|
|
23697
23718
|
"device-disabled",
|
|
23698
23719
|
"device-enabled",
|
|
23720
|
+
"device-battery-low",
|
|
23721
|
+
"device-battery-normal",
|
|
23699
23722
|
"stream-online",
|
|
23700
23723
|
"stream-offline",
|
|
23701
23724
|
"node-online",
|
|
@@ -26401,46 +26424,6 @@ var RecentTracksPageSchema = external_exports.object({
|
|
|
26401
26424
|
/** Cursor for the next page, or null when this page is the last. */
|
|
26402
26425
|
nextCursor: external_exports.string().nullable()
|
|
26403
26426
|
});
|
|
26404
|
-
var LIST_GROUPS_DEFAULT_LIMIT = 40;
|
|
26405
|
-
var LIST_GROUPS_MAX_LIMIT = 100;
|
|
26406
|
-
var AnalyticsGroupRecordSchema = external_exports.object({
|
|
26407
|
-
id: external_exports.string(),
|
|
26408
|
-
deviceId: external_exports.number().int(),
|
|
26409
|
-
openedAt: external_exports.number().int(),
|
|
26410
|
-
closedAt: external_exports.number().int(),
|
|
26411
|
-
timestamp: external_exports.number().int(),
|
|
26412
|
-
memberCount: external_exports.number().int(),
|
|
26413
|
-
memberTrackIds: external_exports.array(external_exports.string()).readonly(),
|
|
26414
|
-
className: external_exports.string(),
|
|
26415
|
-
classes: external_exports.array(external_exports.string()).readonly(),
|
|
26416
|
-
/** Relative event-media path, or null when the group has no picture yet. */
|
|
26417
|
-
mediaUrl: external_exports.string().nullable(),
|
|
26418
|
-
singleton: external_exports.boolean()
|
|
26419
|
-
});
|
|
26420
|
-
var AnalyticsGroupMemberSchema = external_exports.object({
|
|
26421
|
-
trackId: external_exports.string(),
|
|
26422
|
-
deviceId: external_exports.number().int(),
|
|
26423
|
-
className: external_exports.string(),
|
|
26424
|
-
firstSeen: external_exports.number().int(),
|
|
26425
|
-
lastSeen: external_exports.number().int(),
|
|
26426
|
-
mediaUrl: external_exports.string().nullable()
|
|
26427
|
-
});
|
|
26428
|
-
var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: external_exports.array(AnalyticsGroupMemberSchema).readonly() });
|
|
26429
|
-
var ListGroupsQueryInput = external_exports.object({
|
|
26430
|
-
/** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
|
|
26431
|
-
deviceIds: external_exports.array(external_exports.number()),
|
|
26432
|
-
/** Window lower bound on `closedAt` (inclusive). */
|
|
26433
|
-
since: external_exports.number().optional(),
|
|
26434
|
-
/** Window upper bound on `openedAt` (inclusive). */
|
|
26435
|
-
until: external_exports.number().optional(),
|
|
26436
|
-
limit: external_exports.number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
|
|
26437
|
-
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
26438
|
-
cursor: external_exports.string().optional()
|
|
26439
|
-
});
|
|
26440
|
-
var ListGroupsPageSchema = external_exports.object({
|
|
26441
|
-
groups: external_exports.array(AnalyticsGroupRecordSchema).readonly(),
|
|
26442
|
-
nextCursor: external_exports.string().nullable()
|
|
26443
|
-
});
|
|
26444
26427
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
26445
26428
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
26446
26429
|
var KeyEventQueryInput = external_exports.object({
|
|
@@ -26533,9 +26516,7 @@ var TrackCascadeCountsSchema = external_exports.object({
|
|
|
26533
26516
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
26534
26517
|
plates: external_exports.number().int(),
|
|
26535
26518
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
26536
|
-
embeddings: external_exports.number().int()
|
|
26537
|
-
/** Group membership + group rows removed with their last member (best-effort). */
|
|
26538
|
-
groups: external_exports.number().int()
|
|
26519
|
+
embeddings: external_exports.number().int()
|
|
26539
26520
|
});
|
|
26540
26521
|
var DiskReconcileCountsSchema = external_exports.object({
|
|
26541
26522
|
mediaDropped: external_exports.number().int(),
|
|
@@ -26748,16 +26729,6 @@ var pipelineAnalyticsCapability = {
|
|
|
26748
26729
|
* are not included (same contract as `listTracks`).
|
|
26749
26730
|
*/
|
|
26750
26731
|
listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
26751
|
-
/**
|
|
26752
|
-
* Batched co-moving group listing — the Groups feed. Same merge/cursor
|
|
26753
|
-
* contract as {@link listRecentTracks}. A group is a sealed partition of
|
|
26754
|
-
* one session; `getGroup` is the detail with members.
|
|
26755
|
-
*/
|
|
26756
|
-
listGroups: method(ListGroupsQueryInput, ListGroupsPageSchema),
|
|
26757
|
-
getGroup: method(external_exports.object({
|
|
26758
|
-
deviceId: external_exports.number(),
|
|
26759
|
-
groupId: external_exports.string().min(1)
|
|
26760
|
-
}), AnalyticsGroupDetailSchema.nullable()),
|
|
26761
26732
|
clearTracks: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
|
|
26762
26733
|
kind: "mutation",
|
|
26763
26734
|
auth: "admin"
|
|
@@ -40651,6 +40622,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40651
40622
|
addonId: null,
|
|
40652
40623
|
access: "delete"
|
|
40653
40624
|
},
|
|
40625
|
+
"deviceManager.renameLocation": {
|
|
40626
|
+
capName: "device-manager",
|
|
40627
|
+
capScope: "system",
|
|
40628
|
+
addonId: null,
|
|
40629
|
+
access: "create"
|
|
40630
|
+
},
|
|
40654
40631
|
"deviceManager.runDeviceAction": {
|
|
40655
40632
|
capName: "device-manager",
|
|
40656
40633
|
capScope: "system",
|
|
@@ -42343,12 +42320,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42343
42320
|
addonId: null,
|
|
42344
42321
|
access: "view"
|
|
42345
42322
|
},
|
|
42346
|
-
"pipelineAnalytics.getGroup": {
|
|
42347
|
-
capName: "pipeline-analytics",
|
|
42348
|
-
capScope: "device",
|
|
42349
|
-
addonId: null,
|
|
42350
|
-
access: "view"
|
|
42351
|
-
},
|
|
42352
42323
|
"pipelineAnalytics.getKeyEvents": {
|
|
42353
42324
|
capName: "pipeline-analytics",
|
|
42354
42325
|
capScope: "device",
|
|
@@ -42451,12 +42422,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42451
42422
|
addonId: null,
|
|
42452
42423
|
access: "view"
|
|
42453
42424
|
},
|
|
42454
|
-
"pipelineAnalytics.listGroups": {
|
|
42455
|
-
capName: "pipeline-analytics",
|
|
42456
|
-
capScope: "device",
|
|
42457
|
-
addonId: null,
|
|
42458
|
-
access: "view"
|
|
42459
|
-
},
|
|
42460
42425
|
"pipelineAnalytics.listOpsLog": {
|
|
42461
42426
|
capName: "pipeline-analytics",
|
|
42462
42427
|
capScope: "device",
|
|
@@ -46079,11 +46044,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
46079
46044
|
form: "single",
|
|
46080
46045
|
optional: true
|
|
46081
46046
|
}],
|
|
46082
|
-
"pipelineAnalytics.getGroup": [{
|
|
46083
|
-
name: "deviceId",
|
|
46084
|
-
form: "single",
|
|
46085
|
-
optional: false
|
|
46086
|
-
}],
|
|
46087
46047
|
"pipelineAnalytics.getKeyEvents": [{
|
|
46088
46048
|
name: "deviceId",
|
|
46089
46049
|
form: "single",
|
|
@@ -46149,11 +46109,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
46149
46109
|
form: "single",
|
|
46150
46110
|
optional: false
|
|
46151
46111
|
}],
|
|
46152
|
-
"pipelineAnalytics.listGroups": [{
|
|
46153
|
-
name: "deviceIds",
|
|
46154
|
-
form: "array",
|
|
46155
|
-
optional: false
|
|
46156
|
-
}],
|
|
46157
46112
|
"pipelineAnalytics.listOpsLog": [{
|
|
46158
46113
|
name: "deviceId",
|
|
46159
46114
|
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-LRCTXS6S.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-NDZBIQHT.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-NDZBIQHT.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-GSZPRHPC.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-D6kBG4fg.js
|
|
23637
|
+
var require_dist_D6kBG4fg = __commonJS({
|
|
23638
|
+
"../system/dist/dist-D6kBG4fg.js"(exports) {
|
|
23639
23639
|
"use strict";
|
|
23640
23640
|
var zod = require_zod();
|
|
23641
23641
|
var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
|
|
@@ -31475,6 +31475,27 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
31475
31475
|
kind: "mutation",
|
|
31476
31476
|
auth: "admin"
|
|
31477
31477
|
}),
|
|
31478
|
+
/** Rename a room: replace the label in the registry IN PLACE and move
|
|
31479
|
+
* every device that carried it, as ONE server operation.
|
|
31480
|
+
*
|
|
31481
|
+
* The admin UI used to do this as `addLocation(to)` → N ×
|
|
31482
|
+
* `setLocation(device, to)` → `removeLocation(from)` from the browser.
|
|
31483
|
+
* Nothing bound those three together, so a closed tab left the fleet
|
|
31484
|
+
* split across two rooms — one of which the operator believed was gone.
|
|
31485
|
+
*
|
|
31486
|
+
* `from` is matched the way the registry matches everywhere else
|
|
31487
|
+
* (trimmed, case-insensitive) and need NOT be registered: the registry is
|
|
31488
|
+
* a suggestion list, and the devices that most need a rename are exactly
|
|
31489
|
+
* the ones carrying a label nobody registered. `to` renames onto an
|
|
31490
|
+
* existing room by MERGING into it, leaving no duplicate label. An empty
|
|
31491
|
+
* `to` throws before anything is written. */
|
|
31492
|
+
renameLocation: method(zod.z.object({
|
|
31493
|
+
from: zod.z.string(),
|
|
31494
|
+
to: zod.z.string()
|
|
31495
|
+
}), zod.z.object({ moved: zod.z.number() }), {
|
|
31496
|
+
kind: "mutation",
|
|
31497
|
+
auth: "admin"
|
|
31498
|
+
}),
|
|
31478
31499
|
/** Soft-disable / re-enable the device. Drivers consult
|
|
31479
31500
|
* `BaseDevice.disabled` to gate lifecycle hooks. */
|
|
31480
31501
|
setDisabled: method(zod.z.object({
|
|
@@ -34392,6 +34413,8 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
34392
34413
|
"device-offline",
|
|
34393
34414
|
"device-disabled",
|
|
34394
34415
|
"device-enabled",
|
|
34416
|
+
"device-battery-low",
|
|
34417
|
+
"device-battery-normal",
|
|
34395
34418
|
"stream-online",
|
|
34396
34419
|
"stream-offline",
|
|
34397
34420
|
"node-online",
|
|
@@ -37096,46 +37119,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37096
37119
|
/** Cursor for the next page, or null when this page is the last. */
|
|
37097
37120
|
nextCursor: zod.z.string().nullable()
|
|
37098
37121
|
});
|
|
37099
|
-
var LIST_GROUPS_DEFAULT_LIMIT = 40;
|
|
37100
|
-
var LIST_GROUPS_MAX_LIMIT = 100;
|
|
37101
|
-
var AnalyticsGroupRecordSchema = zod.z.object({
|
|
37102
|
-
id: zod.z.string(),
|
|
37103
|
-
deviceId: zod.z.number().int(),
|
|
37104
|
-
openedAt: zod.z.number().int(),
|
|
37105
|
-
closedAt: zod.z.number().int(),
|
|
37106
|
-
timestamp: zod.z.number().int(),
|
|
37107
|
-
memberCount: zod.z.number().int(),
|
|
37108
|
-
memberTrackIds: zod.z.array(zod.z.string()).readonly(),
|
|
37109
|
-
className: zod.z.string(),
|
|
37110
|
-
classes: zod.z.array(zod.z.string()).readonly(),
|
|
37111
|
-
/** Relative event-media path, or null when the group has no picture yet. */
|
|
37112
|
-
mediaUrl: zod.z.string().nullable(),
|
|
37113
|
-
singleton: zod.z.boolean()
|
|
37114
|
-
});
|
|
37115
|
-
var AnalyticsGroupMemberSchema = zod.z.object({
|
|
37116
|
-
trackId: zod.z.string(),
|
|
37117
|
-
deviceId: zod.z.number().int(),
|
|
37118
|
-
className: zod.z.string(),
|
|
37119
|
-
firstSeen: zod.z.number().int(),
|
|
37120
|
-
lastSeen: zod.z.number().int(),
|
|
37121
|
-
mediaUrl: zod.z.string().nullable()
|
|
37122
|
-
});
|
|
37123
|
-
var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: zod.z.array(AnalyticsGroupMemberSchema).readonly() });
|
|
37124
|
-
var ListGroupsQueryInput = zod.z.object({
|
|
37125
|
-
/** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
|
|
37126
|
-
deviceIds: zod.z.array(zod.z.number()),
|
|
37127
|
-
/** Window lower bound on `closedAt` (inclusive). */
|
|
37128
|
-
since: zod.z.number().optional(),
|
|
37129
|
-
/** Window upper bound on `openedAt` (inclusive). */
|
|
37130
|
-
until: zod.z.number().optional(),
|
|
37131
|
-
limit: zod.z.number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
|
|
37132
|
-
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
37133
|
-
cursor: zod.z.string().optional()
|
|
37134
|
-
});
|
|
37135
|
-
var ListGroupsPageSchema = zod.z.object({
|
|
37136
|
-
groups: zod.z.array(AnalyticsGroupRecordSchema).readonly(),
|
|
37137
|
-
nextCursor: zod.z.string().nullable()
|
|
37138
|
-
});
|
|
37139
37122
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
37140
37123
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
37141
37124
|
var KeyEventQueryInput = zod.z.object({
|
|
@@ -37228,9 +37211,7 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37228
37211
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
37229
37212
|
plates: zod.z.number().int(),
|
|
37230
37213
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
37231
|
-
embeddings: zod.z.number().int()
|
|
37232
|
-
/** Group membership + group rows removed with their last member (best-effort). */
|
|
37233
|
-
groups: zod.z.number().int()
|
|
37214
|
+
embeddings: zod.z.number().int()
|
|
37234
37215
|
});
|
|
37235
37216
|
var DiskReconcileCountsSchema = zod.z.object({
|
|
37236
37217
|
mediaDropped: zod.z.number().int(),
|
|
@@ -37443,16 +37424,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37443
37424
|
* are not included (same contract as `listTracks`).
|
|
37444
37425
|
*/
|
|
37445
37426
|
listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
37446
|
-
/**
|
|
37447
|
-
* Batched co-moving group listing — the Groups feed. Same merge/cursor
|
|
37448
|
-
* contract as {@link listRecentTracks}. A group is a sealed partition of
|
|
37449
|
-
* one session; `getGroup` is the detail with members.
|
|
37450
|
-
*/
|
|
37451
|
-
listGroups: method(ListGroupsQueryInput, ListGroupsPageSchema),
|
|
37452
|
-
getGroup: method(zod.z.object({
|
|
37453
|
-
deviceId: zod.z.number(),
|
|
37454
|
-
groupId: zod.z.string().min(1)
|
|
37455
|
-
}), AnalyticsGroupDetailSchema.nullable()),
|
|
37456
37427
|
clearTracks: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
37457
37428
|
kind: "mutation",
|
|
37458
37429
|
auth: "admin"
|
|
@@ -51967,6 +51938,12 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
51967
51938
|
addonId: null,
|
|
51968
51939
|
access: "delete"
|
|
51969
51940
|
},
|
|
51941
|
+
"deviceManager.renameLocation": {
|
|
51942
|
+
capName: "device-manager",
|
|
51943
|
+
capScope: "system",
|
|
51944
|
+
addonId: null,
|
|
51945
|
+
access: "create"
|
|
51946
|
+
},
|
|
51970
51947
|
"deviceManager.runDeviceAction": {
|
|
51971
51948
|
capName: "device-manager",
|
|
51972
51949
|
capScope: "system",
|
|
@@ -53659,12 +53636,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
53659
53636
|
addonId: null,
|
|
53660
53637
|
access: "view"
|
|
53661
53638
|
},
|
|
53662
|
-
"pipelineAnalytics.getGroup": {
|
|
53663
|
-
capName: "pipeline-analytics",
|
|
53664
|
-
capScope: "device",
|
|
53665
|
-
addonId: null,
|
|
53666
|
-
access: "view"
|
|
53667
|
-
},
|
|
53668
53639
|
"pipelineAnalytics.getKeyEvents": {
|
|
53669
53640
|
capName: "pipeline-analytics",
|
|
53670
53641
|
capScope: "device",
|
|
@@ -53767,12 +53738,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
53767
53738
|
addonId: null,
|
|
53768
53739
|
access: "view"
|
|
53769
53740
|
},
|
|
53770
|
-
"pipelineAnalytics.listGroups": {
|
|
53771
|
-
capName: "pipeline-analytics",
|
|
53772
|
-
capScope: "device",
|
|
53773
|
-
addonId: null,
|
|
53774
|
-
access: "view"
|
|
53775
|
-
},
|
|
53776
53741
|
"pipelineAnalytics.listOpsLog": {
|
|
53777
53742
|
capName: "pipeline-analytics",
|
|
53778
53743
|
capScope: "device",
|
|
@@ -57395,11 +57360,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
57395
57360
|
form: "single",
|
|
57396
57361
|
optional: true
|
|
57397
57362
|
}],
|
|
57398
|
-
"pipelineAnalytics.getGroup": [{
|
|
57399
|
-
name: "deviceId",
|
|
57400
|
-
form: "single",
|
|
57401
|
-
optional: false
|
|
57402
|
-
}],
|
|
57403
57363
|
"pipelineAnalytics.getKeyEvents": [{
|
|
57404
57364
|
name: "deviceId",
|
|
57405
57365
|
form: "single",
|
|
@@ -57465,11 +57425,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
57465
57425
|
form: "single",
|
|
57466
57426
|
optional: false
|
|
57467
57427
|
}],
|
|
57468
|
-
"pipelineAnalytics.listGroups": [{
|
|
57469
|
-
name: "deviceIds",
|
|
57470
|
-
form: "array",
|
|
57471
|
-
optional: false
|
|
57472
|
-
}],
|
|
57473
57428
|
"pipelineAnalytics.listOpsLog": [{
|
|
57474
57429
|
name: "deviceId",
|
|
57475
57430
|
form: "single",
|
|
@@ -59640,7 +59595,7 @@ var require_alerts_addon = __commonJS({
|
|
|
59640
59595
|
[Symbol.toStringTag]: { value: "Module" }
|
|
59641
59596
|
});
|
|
59642
59597
|
require_chunk_Cek0wNdY();
|
|
59643
|
-
var require_dist10 =
|
|
59598
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
59644
59599
|
function selectExpired(alerts, cutoffMs) {
|
|
59645
59600
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
59646
59601
|
}
|
|
@@ -60459,7 +60414,7 @@ var require_console_logging = __commonJS({
|
|
|
60459
60414
|
[Symbol.toStringTag]: { value: "Module" }
|
|
60460
60415
|
});
|
|
60461
60416
|
require_chunk_Cek0wNdY();
|
|
60462
|
-
var require_dist10 =
|
|
60417
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
60463
60418
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
60464
60419
|
var LEVEL_RANK = {
|
|
60465
60420
|
debug: 0,
|
|
@@ -60553,7 +60508,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
60553
60508
|
"use strict";
|
|
60554
60509
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
60555
60510
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
60556
|
-
var require_dist10 =
|
|
60511
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
60557
60512
|
var node_crypto = __require("crypto");
|
|
60558
60513
|
var node_fs_promises = __require("fs/promises");
|
|
60559
60514
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -61450,11 +61405,11 @@ var require_core_blocks = __commonJS({
|
|
|
61450
61405
|
}
|
|
61451
61406
|
});
|
|
61452
61407
|
|
|
61453
|
-
// ../system/dist/retired-settings-keys-
|
|
61454
|
-
var
|
|
61455
|
-
"../system/dist/retired-settings-keys-
|
|
61408
|
+
// ../system/dist/retired-settings-keys-BywIz4dZ.js
|
|
61409
|
+
var require_retired_settings_keys_BywIz4dZ = __commonJS({
|
|
61410
|
+
"../system/dist/retired-settings-keys-BywIz4dZ.js"(exports) {
|
|
61456
61411
|
"use strict";
|
|
61457
|
-
var require_dist10 =
|
|
61412
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
61458
61413
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
61459
61414
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
61460
61415
|
return raw === "" || raw === "hub";
|
|
@@ -63668,8 +63623,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
63668
63623
|
[Symbol.toStringTag]: { value: "Module" }
|
|
63669
63624
|
});
|
|
63670
63625
|
require_chunk_Cek0wNdY();
|
|
63671
|
-
var require_dist10 =
|
|
63672
|
-
var require_retired_settings_keys =
|
|
63626
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
63627
|
+
var require_retired_settings_keys = require_retired_settings_keys_BywIz4dZ();
|
|
63673
63628
|
var node_crypto = __require("crypto");
|
|
63674
63629
|
var _camstack_types_node = require_node();
|
|
63675
63630
|
var JOB_HISTORY = 20;
|
|
@@ -66426,20 +66381,17 @@ var require_device_manager_addon = __commonJS({
|
|
|
66426
66381
|
const cascaded = [];
|
|
66427
66382
|
const failed = [];
|
|
66428
66383
|
await pctx.metaStore.withMetaWriteLock(async () => {
|
|
66429
|
-
|
|
66430
|
-
if (!persisted) throw new Error(`[device-manager] setLocation: unknown device id=${deviceId}`);
|
|
66384
|
+
if (!await pctx.metaStore.resolvePersistedById(deviceId)) throw new Error(`[device-manager] setLocation: unknown device id=${deviceId}`);
|
|
66431
66385
|
await pctx.metaStore.rows.patch(deviceId, { location });
|
|
66432
|
-
|
|
66433
|
-
|
|
66434
|
-
|
|
66435
|
-
|
|
66436
|
-
|
|
66437
|
-
|
|
66438
|
-
|
|
66439
|
-
|
|
66440
|
-
|
|
66441
|
-
});
|
|
66442
|
-
}
|
|
66386
|
+
const descendants = await collectDescendants(pctx.metaStore, deviceId);
|
|
66387
|
+
for (const descendant of descendants) try {
|
|
66388
|
+
await pctx.metaStore.rows.patch(descendant.id, { location });
|
|
66389
|
+
cascaded.push(descendant.id);
|
|
66390
|
+
} catch (err) {
|
|
66391
|
+
failed.push({
|
|
66392
|
+
id: descendant.id,
|
|
66393
|
+
error: err
|
|
66394
|
+
});
|
|
66443
66395
|
}
|
|
66444
66396
|
});
|
|
66445
66397
|
pctx.host.ctx.eventBus.emit({
|
|
@@ -66470,7 +66422,7 @@ var require_device_manager_addon = __commonJS({
|
|
|
66470
66422
|
value: location
|
|
66471
66423
|
}
|
|
66472
66424
|
});
|
|
66473
|
-
if (cascaded.length > 0 || failed.length > 0) pctx.host.ctx.logger.info("setLocation: cascaded location to
|
|
66425
|
+
if (cascaded.length > 0 || failed.length > 0) pctx.host.ctx.logger.info("setLocation: cascaded location to descendants", {
|
|
66474
66426
|
tags: { deviceId },
|
|
66475
66427
|
meta: {
|
|
66476
66428
|
location,
|
|
@@ -66786,6 +66738,54 @@ var require_device_manager_addon = __commonJS({
|
|
|
66786
66738
|
await pctx.settings.writeAddonStore({ locations: [...current, trimmed] });
|
|
66787
66739
|
});
|
|
66788
66740
|
}
|
|
66741
|
+
async function renameLocation(pctx, input) {
|
|
66742
|
+
const from = input.from.trim();
|
|
66743
|
+
const to = input.to.trim();
|
|
66744
|
+
if (from.length === 0) throw new Error("[device-manager] renameLocation: `from` must be non-empty");
|
|
66745
|
+
if (to.length === 0) throw new Error("[device-manager] renameLocation: `to` must be non-empty");
|
|
66746
|
+
const fromKey = from.toLowerCase();
|
|
66747
|
+
const toKey = to.toLowerCase();
|
|
66748
|
+
await pctx.bindingsDeps.withAddonStoreWriteLock(async () => {
|
|
66749
|
+
const current = (await pctx.metaStore.readStore()).locations ?? [];
|
|
66750
|
+
if (!current.some((l) => l.trim().toLowerCase() === fromKey)) return;
|
|
66751
|
+
const kept = current.filter((l) => {
|
|
66752
|
+
const key = l.trim().toLowerCase();
|
|
66753
|
+
return key !== fromKey && key !== toKey;
|
|
66754
|
+
});
|
|
66755
|
+
await pctx.settings.writeAddonStore({ locations: [...kept, to] });
|
|
66756
|
+
});
|
|
66757
|
+
const moved = await pctx.metaStore.withMetaWriteLock(async () => {
|
|
66758
|
+
const out = [];
|
|
66759
|
+
for (const row of await pctx.metaStore.rows.listAll()) {
|
|
66760
|
+
const location = row.meta.location;
|
|
66761
|
+
if (typeof location !== "string") continue;
|
|
66762
|
+
if (location.trim().toLowerCase() !== fromKey) continue;
|
|
66763
|
+
await pctx.metaStore.rows.patch(row.meta.id, { location: to });
|
|
66764
|
+
out.push(row.meta.id);
|
|
66765
|
+
}
|
|
66766
|
+
return out;
|
|
66767
|
+
});
|
|
66768
|
+
for (const deviceId of moved) pctx.host.ctx.eventBus.emit({
|
|
66769
|
+
id: (0, node_crypto.randomUUID)(),
|
|
66770
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
66771
|
+
source: {
|
|
66772
|
+
type: "device",
|
|
66773
|
+
id: deviceId
|
|
66774
|
+
},
|
|
66775
|
+
category: require_dist10.EventCategory.DeviceMetaChanged,
|
|
66776
|
+
data: {
|
|
66777
|
+
deviceId,
|
|
66778
|
+
field: "location",
|
|
66779
|
+
value: to
|
|
66780
|
+
}
|
|
66781
|
+
});
|
|
66782
|
+
pctx.host.ctx.logger.info("renameLocation: room renamed", { meta: {
|
|
66783
|
+
from,
|
|
66784
|
+
to,
|
|
66785
|
+
moved: moved.length
|
|
66786
|
+
} });
|
|
66787
|
+
return { moved: moved.length };
|
|
66788
|
+
}
|
|
66789
66789
|
async function removeLocation(pctx, input) {
|
|
66790
66790
|
const trimmed = input.name.trim();
|
|
66791
66791
|
if (trimmed.length === 0) return;
|
|
@@ -68279,6 +68279,7 @@ var require_device_manager_addon = __commonJS({
|
|
|
68279
68279
|
listLocations: () => listLocations(pctx),
|
|
68280
68280
|
addLocation: (input) => addLocation(pctx, input),
|
|
68281
68281
|
removeLocation: (input) => removeLocation(pctx, input),
|
|
68282
|
+
renameLocation: (input) => renameLocation(pctx, input),
|
|
68282
68283
|
listPersistedByAddon: (input) => listPersistedByAddon(pctx, input),
|
|
68283
68284
|
listAll: (input) => listAll(pctx, input),
|
|
68284
68285
|
getDevice: (input) => getDevice(pctx, input),
|
|
@@ -68485,7 +68486,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
68485
68486
|
[Symbol.toStringTag]: { value: "Module" }
|
|
68486
68487
|
});
|
|
68487
68488
|
require_chunk_Cek0wNdY();
|
|
68488
|
-
var require_dist10 =
|
|
68489
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
68489
68490
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
68490
68491
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
68491
68492
|
var HubForwarderDestination = class {
|
|
@@ -68622,7 +68623,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
68622
68623
|
"use strict";
|
|
68623
68624
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
68624
68625
|
require_chunk_Cek0wNdY();
|
|
68625
|
-
var require_dist10 =
|
|
68626
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
68626
68627
|
var NO_DEVICES = "liveness:no-devices";
|
|
68627
68628
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
68628
68629
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -68812,7 +68813,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
68812
68813
|
[Symbol.toStringTag]: { value: "Module" }
|
|
68813
68814
|
});
|
|
68814
68815
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
68815
|
-
var require_dist10 =
|
|
68816
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
68816
68817
|
var node_crypto = __require("crypto");
|
|
68817
68818
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
68818
68819
|
var crypto$1 = __require("crypto");
|
|
@@ -76625,7 +76626,7 @@ var require_loki_logging = __commonJS({
|
|
|
76625
76626
|
[Symbol.toStringTag]: { value: "Module" }
|
|
76626
76627
|
});
|
|
76627
76628
|
require_chunk_Cek0wNdY();
|
|
76628
|
-
var require_dist10 =
|
|
76629
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
76629
76630
|
function sanitizeLabelName(raw) {
|
|
76630
76631
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
76631
76632
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -77190,7 +77191,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
77190
77191
|
[Symbol.toStringTag]: { value: "Module" }
|
|
77191
77192
|
});
|
|
77192
77193
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
77193
|
-
var require_dist10 =
|
|
77194
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
77194
77195
|
var node_fs_promises = __require("fs/promises");
|
|
77195
77196
|
var node_child_process = __require("child_process");
|
|
77196
77197
|
var node_util = __require("util");
|
|
@@ -79812,7 +79813,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
79812
79813
|
[Symbol.toStringTag]: { value: "Module" }
|
|
79813
79814
|
});
|
|
79814
79815
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
79815
|
-
var require_dist10 =
|
|
79816
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
79816
79817
|
var node_crypto = __require("crypto");
|
|
79817
79818
|
var node_fs_promises = __require("fs/promises");
|
|
79818
79819
|
var node_path = __require("path");
|
|
@@ -80928,8 +80929,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
80928
80929
|
[Symbol.toStringTag]: { value: "Module" }
|
|
80929
80930
|
});
|
|
80930
80931
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
80931
|
-
var require_dist10 =
|
|
80932
|
-
var require_retired_settings_keys =
|
|
80932
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
80933
|
+
var require_retired_settings_keys = require_retired_settings_keys_BywIz4dZ();
|
|
80933
80934
|
var node_crypto = __require("crypto");
|
|
80934
80935
|
var node_fs = __require("fs");
|
|
80935
80936
|
var node_module = __require("module");
|
|
@@ -81199,15 +81200,28 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
81199
81200
|
const wanted = sqliteMmapSizeFor(fileSizeBytes);
|
|
81200
81201
|
return wanted > currentMmapBytes ? wanted : null;
|
|
81201
81202
|
}
|
|
81202
|
-
var RETIRED_COLLECTIONS = [
|
|
81203
|
-
|
|
81204
|
-
|
|
81205
|
-
|
|
81206
|
-
|
|
81207
|
-
|
|
81208
|
-
|
|
81209
|
-
|
|
81210
|
-
|
|
81203
|
+
var RETIRED_COLLECTIONS = [
|
|
81204
|
+
{
|
|
81205
|
+
collection: "devices",
|
|
81206
|
+
owner: "integration-registry",
|
|
81207
|
+
reason: "the device half of the integration-registry is deleted; the fleet is `device-manager:devices` and always was (0 rows here against 974 live devices)"
|
|
81208
|
+
},
|
|
81209
|
+
{
|
|
81210
|
+
collection: "device_settings_kv",
|
|
81211
|
+
owner: "integration-registry",
|
|
81212
|
+
reason: "per-device settings of a device table that never had a row; the live per-camera store is the device-manager row plus `addon-device-settings`"
|
|
81213
|
+
},
|
|
81214
|
+
{
|
|
81215
|
+
collection: "pipeline-analytics:track-groups",
|
|
81216
|
+
owner: "pipeline-analytics",
|
|
81217
|
+
reason: "the co-moving group entity is deleted (operator decision 2026-09-01, after the 2026-08-24 kill switch); nothing declares, writes or reads it"
|
|
81218
|
+
},
|
|
81219
|
+
{
|
|
81220
|
+
collection: "pipeline-analytics:track-group-members",
|
|
81221
|
+
owner: "pipeline-analytics",
|
|
81222
|
+
reason: "membership rows of the deleted group entity; the track cascade that used to carry them away no longer has a group leg"
|
|
81223
|
+
}
|
|
81224
|
+
];
|
|
81211
81225
|
function retiredCollectionStoreOf(backend) {
|
|
81212
81226
|
return { async drop(collection) {
|
|
81213
81227
|
return backend.dropRetiredTable(collection);
|
|
@@ -83338,7 +83352,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83338
83352
|
[Symbol.toStringTag]: { value: "Module" }
|
|
83339
83353
|
});
|
|
83340
83354
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
83341
|
-
var require_dist10 =
|
|
83355
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
83342
83356
|
var zod = require_zod();
|
|
83343
83357
|
var node_crypto = __require("crypto");
|
|
83344
83358
|
var node_fs_promises = __require("fs/promises");
|
|
@@ -83570,7 +83584,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83570
83584
|
if (!target) throw new Error(`Storage location "${targetId}" not found`);
|
|
83571
83585
|
if (target.type !== storageClass) throw new Error(`Storage location "${targetId}" is type "${target.type}", expected "${storageClass}"`);
|
|
83572
83586
|
if (source.id === target.id) throw new Error(namedSourceId ? `Source and destination are the same location ("${targetId}")` : `Storage location "${targetId}" is already the "${storageClass}" default`);
|
|
83573
|
-
const freezeSource = defaultLoc
|
|
83587
|
+
const freezeSource = defaultLoc === null || source.id !== defaultLoc.id;
|
|
83574
83588
|
if (!MOVER_CLASSES.includes(storageClass)) throw new Error(`No mover owns "${storageClass}" \u2014 the migration can repoint its default but cannot move its bytes. Move it by hand, then repoint the default with upsertLocation.`);
|
|
83575
83589
|
moves.push({
|
|
83576
83590
|
storageClass,
|
|
@@ -85461,7 +85475,6 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
85461
85475
|
pressureTimer = null;
|
|
85462
85476
|
pressureSweepInFlight = false;
|
|
85463
85477
|
migration = null;
|
|
85464
|
-
cleanup = null;
|
|
85465
85478
|
/**
|
|
85466
85479
|
* Cached `providerId → nodeLocal` snapshot (SP1). Backs the orchestrator's
|
|
85467
85480
|
* synchronous `NodeLocalResolver` — `getProviderInfo()` is async, so we
|
|
@@ -85767,7 +85780,6 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
85767
85780
|
now: () => Date.now(),
|
|
85768
85781
|
newId: () => (0, node_crypto.randomUUID)()
|
|
85769
85782
|
});
|
|
85770
|
-
this.cleanup = cleanup;
|
|
85771
85783
|
const migrationProvider = {
|
|
85772
85784
|
plan: (input) => migration.plan(input),
|
|
85773
85785
|
start: async (input) => ({ jobId: await migration.start(input) }),
|
|
@@ -86214,7 +86226,7 @@ var require_system_config_addon = __commonJS({
|
|
|
86214
86226
|
[Symbol.toStringTag]: { value: "Module" }
|
|
86215
86227
|
});
|
|
86216
86228
|
require_chunk_Cek0wNdY();
|
|
86217
|
-
var require_dist10 =
|
|
86229
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
86218
86230
|
var SECTION_TITLES = {
|
|
86219
86231
|
server: "Server",
|
|
86220
86232
|
auth: "Authentication"
|
|
@@ -104275,7 +104287,7 @@ var require_winston_logging = __commonJS({
|
|
|
104275
104287
|
[Symbol.toStringTag]: { value: "Module" }
|
|
104276
104288
|
});
|
|
104277
104289
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
104278
|
-
var require_dist10 =
|
|
104290
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
104279
104291
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
104280
104292
|
var node_path = __require("path");
|
|
104281
104293
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -106218,9 +106230,9 @@ var require_event_category_BaEgqJNv = __commonJS({
|
|
|
106218
106230
|
}
|
|
106219
106231
|
});
|
|
106220
106232
|
|
|
106221
|
-
// ../types/dist/sleep-
|
|
106222
|
-
var
|
|
106223
|
-
"../types/dist/sleep-
|
|
106233
|
+
// ../types/dist/sleep-DkBAyPva.js
|
|
106234
|
+
var require_sleep_DkBAyPva = __commonJS({
|
|
106235
|
+
"../types/dist/sleep-DkBAyPva.js"(exports) {
|
|
106224
106236
|
"use strict";
|
|
106225
106237
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
106226
106238
|
var zod = require_zod();
|
|
@@ -108893,8 +108905,6 @@ var require_sleep_CqVyhcl = __commonJS({
|
|
|
108893
108905
|
getTrack: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrack", "query", input),
|
|
108894
108906
|
listTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listTracks", "query", input),
|
|
108895
108907
|
listRecentTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listRecentTracks", "query", input),
|
|
108896
|
-
listGroups: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "listGroups", "query", input),
|
|
108897
|
-
getGroup: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getGroup", "query", input),
|
|
108898
108908
|
clearTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "clearTracks", "mutation", input),
|
|
108899
108909
|
getMotionEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getMotionEvents", "query", input),
|
|
108900
108910
|
getObjectEvents: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getObjectEvents", "query", input),
|
|
@@ -109893,7 +109903,7 @@ var require_addon = __commonJS({
|
|
|
109893
109903
|
"use strict";
|
|
109894
109904
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
109895
109905
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
109896
|
-
var require_sleep =
|
|
109906
|
+
var require_sleep = require_sleep_DkBAyPva();
|
|
109897
109907
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
109898
109908
|
var CAP_INPUT_DEFAULTS = Object.freeze({
|
|
109899
109909
|
"addons": { "getLogs": { "limit": 100 } },
|
|
@@ -110007,7 +110017,6 @@ var require_addon = __commonJS({
|
|
|
110007
110017
|
"getMotionEvents": { "limit": 1e3 },
|
|
110008
110018
|
"getObjectEvents": { "limit": 1e3 },
|
|
110009
110019
|
"getSensorEvents": { "limit": 1e3 },
|
|
110010
|
-
"listGroups": { "limit": 40 },
|
|
110011
110020
|
"listRecentTracks": { "limit": 200 },
|
|
110012
110021
|
"reclaimDebugMedia": { "mode": "report" },
|
|
110013
110022
|
"searchObjectEvents": {
|
|
@@ -116777,12 +116786,12 @@ var require_dist2 = __commonJS({
|
|
|
116777
116786
|
}
|
|
116778
116787
|
});
|
|
116779
116788
|
|
|
116780
|
-
// ../system/dist/manifest-system-deps-
|
|
116781
|
-
var
|
|
116782
|
-
"../system/dist/manifest-system-deps-
|
|
116789
|
+
// ../system/dist/manifest-system-deps-BjMNGEpl.js
|
|
116790
|
+
var require_manifest_system_deps_BjMNGEpl = __commonJS({
|
|
116791
|
+
"../system/dist/manifest-system-deps-BjMNGEpl.js"(exports) {
|
|
116783
116792
|
"use strict";
|
|
116784
116793
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
116785
|
-
|
|
116794
|
+
require_dist_D6kBG4fg();
|
|
116786
116795
|
var node_crypto = __require("crypto");
|
|
116787
116796
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
116788
116797
|
var _camstack_types_node = require_node();
|
|
@@ -128930,7 +128939,7 @@ var require_dist3 = __commonJS({
|
|
|
128930
128939
|
"use strict";
|
|
128931
128940
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
128932
128941
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
128933
|
-
var require_dist10 =
|
|
128942
|
+
var require_dist10 = require_dist_D6kBG4fg();
|
|
128934
128943
|
var require_builtins_alerts_alerts_addon = require_alerts_addon();
|
|
128935
128944
|
require_alerts();
|
|
128936
128945
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
@@ -128956,7 +128965,7 @@ var require_dist3 = __commonJS({
|
|
|
128956
128965
|
var require_builtins_winston_logging_index = require_winston_logging();
|
|
128957
128966
|
var require_file_data_plane = require_file_data_plane_DO8KbxCe();
|
|
128958
128967
|
var require_tls$1 = require_tls_BxQlomxd();
|
|
128959
|
-
var require_manifest_system_deps =
|
|
128968
|
+
var require_manifest_system_deps = require_manifest_system_deps_BjMNGEpl();
|
|
128960
128969
|
var require_resource_monitor = require_resource_monitor_CdnzxBLP();
|
|
128961
128970
|
var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
|
|
128962
128971
|
var zod = require_zod();
|
|
@@ -209798,7 +209807,7 @@ var require_dist4 = __commonJS({
|
|
|
209798
209807
|
"use strict";
|
|
209799
209808
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
209800
209809
|
var require_event_category = require_event_category_BaEgqJNv();
|
|
209801
|
-
var require_sleep =
|
|
209810
|
+
var require_sleep = require_sleep_DkBAyPva();
|
|
209802
209811
|
var require_canonical_hash = require_canonical_hash_DNV8S5ET();
|
|
209803
209812
|
var require_enums2 = require_enums();
|
|
209804
209813
|
var require_err_msg = require_err_msg_COpsHMw2();
|
|
@@ -217515,6 +217524,27 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
217515
217524
|
kind: "mutation",
|
|
217516
217525
|
auth: "admin"
|
|
217517
217526
|
}),
|
|
217527
|
+
/** Rename a room: replace the label in the registry IN PLACE and move
|
|
217528
|
+
* every device that carried it, as ONE server operation.
|
|
217529
|
+
*
|
|
217530
|
+
* The admin UI used to do this as `addLocation(to)` → N ×
|
|
217531
|
+
* `setLocation(device, to)` → `removeLocation(from)` from the browser.
|
|
217532
|
+
* Nothing bound those three together, so a closed tab left the fleet
|
|
217533
|
+
* split across two rooms — one of which the operator believed was gone.
|
|
217534
|
+
*
|
|
217535
|
+
* `from` is matched the way the registry matches everywhere else
|
|
217536
|
+
* (trimmed, case-insensitive) and need NOT be registered: the registry is
|
|
217537
|
+
* a suggestion list, and the devices that most need a rename are exactly
|
|
217538
|
+
* the ones carrying a label nobody registered. `to` renames onto an
|
|
217539
|
+
* existing room by MERGING into it, leaving no duplicate label. An empty
|
|
217540
|
+
* `to` throws before anything is written. */
|
|
217541
|
+
renameLocation: require_sleep.method(zod.z.object({
|
|
217542
|
+
from: zod.z.string(),
|
|
217543
|
+
to: zod.z.string()
|
|
217544
|
+
}), zod.z.object({ moved: zod.z.number() }), {
|
|
217545
|
+
kind: "mutation",
|
|
217546
|
+
auth: "admin"
|
|
217547
|
+
}),
|
|
217518
217548
|
/** Soft-disable / re-enable the device. Drivers consult
|
|
217519
217549
|
* `BaseDevice.disabled` to gate lifecycle hooks. */
|
|
217520
217550
|
setDisabled: require_sleep.method(zod.z.object({
|
|
@@ -220788,6 +220818,8 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
220788
220818
|
"device-offline",
|
|
220789
220819
|
"device-disabled",
|
|
220790
220820
|
"device-enabled",
|
|
220821
|
+
"device-battery-low",
|
|
220822
|
+
"device-battery-normal",
|
|
220791
220823
|
"stream-online",
|
|
220792
220824
|
"stream-offline",
|
|
220793
220825
|
"node-online",
|
|
@@ -223949,46 +223981,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
223949
223981
|
/** Cursor for the next page, or null when this page is the last. */
|
|
223950
223982
|
nextCursor: zod.z.string().nullable()
|
|
223951
223983
|
});
|
|
223952
|
-
var LIST_GROUPS_DEFAULT_LIMIT = 40;
|
|
223953
|
-
var LIST_GROUPS_MAX_LIMIT = 100;
|
|
223954
|
-
var AnalyticsGroupRecordSchema = zod.z.object({
|
|
223955
|
-
id: zod.z.string(),
|
|
223956
|
-
deviceId: zod.z.number().int(),
|
|
223957
|
-
openedAt: zod.z.number().int(),
|
|
223958
|
-
closedAt: zod.z.number().int(),
|
|
223959
|
-
timestamp: zod.z.number().int(),
|
|
223960
|
-
memberCount: zod.z.number().int(),
|
|
223961
|
-
memberTrackIds: zod.z.array(zod.z.string()).readonly(),
|
|
223962
|
-
className: zod.z.string(),
|
|
223963
|
-
classes: zod.z.array(zod.z.string()).readonly(),
|
|
223964
|
-
/** Relative event-media path, or null when the group has no picture yet. */
|
|
223965
|
-
mediaUrl: zod.z.string().nullable(),
|
|
223966
|
-
singleton: zod.z.boolean()
|
|
223967
|
-
});
|
|
223968
|
-
var AnalyticsGroupMemberSchema = zod.z.object({
|
|
223969
|
-
trackId: zod.z.string(),
|
|
223970
|
-
deviceId: zod.z.number().int(),
|
|
223971
|
-
className: zod.z.string(),
|
|
223972
|
-
firstSeen: zod.z.number().int(),
|
|
223973
|
-
lastSeen: zod.z.number().int(),
|
|
223974
|
-
mediaUrl: zod.z.string().nullable()
|
|
223975
|
-
});
|
|
223976
|
-
var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: zod.z.array(AnalyticsGroupMemberSchema).readonly() });
|
|
223977
|
-
var ListGroupsQueryInput = zod.z.object({
|
|
223978
|
-
/** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
|
|
223979
|
-
deviceIds: zod.z.array(zod.z.number()),
|
|
223980
|
-
/** Window lower bound on `closedAt` (inclusive). */
|
|
223981
|
-
since: zod.z.number().optional(),
|
|
223982
|
-
/** Window upper bound on `openedAt` (inclusive). */
|
|
223983
|
-
until: zod.z.number().optional(),
|
|
223984
|
-
limit: zod.z.number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
|
|
223985
|
-
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
223986
|
-
cursor: zod.z.string().optional()
|
|
223987
|
-
});
|
|
223988
|
-
var ListGroupsPageSchema = zod.z.object({
|
|
223989
|
-
groups: zod.z.array(AnalyticsGroupRecordSchema).readonly(),
|
|
223990
|
-
nextCursor: zod.z.string().nullable()
|
|
223991
|
-
});
|
|
223992
223984
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
223993
223985
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
223994
223986
|
var KeyEventQueryInput = zod.z.object({
|
|
@@ -224081,9 +224073,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224081
224073
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
224082
224074
|
plates: zod.z.number().int(),
|
|
224083
224075
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
224084
|
-
embeddings: zod.z.number().int()
|
|
224085
|
-
/** Group membership + group rows removed with their last member (best-effort). */
|
|
224086
|
-
groups: zod.z.number().int()
|
|
224076
|
+
embeddings: zod.z.number().int()
|
|
224087
224077
|
});
|
|
224088
224078
|
var DiskReconcileCountsSchema = zod.z.object({
|
|
224089
224079
|
mediaDropped: zod.z.number().int(),
|
|
@@ -224296,16 +224286,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224296
224286
|
* are not included (same contract as `listTracks`).
|
|
224297
224287
|
*/
|
|
224298
224288
|
listRecentTracks: require_sleep.method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
224299
|
-
/**
|
|
224300
|
-
* Batched co-moving group listing — the Groups feed. Same merge/cursor
|
|
224301
|
-
* contract as {@link listRecentTracks}. A group is a sealed partition of
|
|
224302
|
-
* one session; `getGroup` is the detail with members.
|
|
224303
|
-
*/
|
|
224304
|
-
listGroups: require_sleep.method(ListGroupsQueryInput, ListGroupsPageSchema),
|
|
224305
|
-
getGroup: require_sleep.method(zod.z.object({
|
|
224306
|
-
deviceId: zod.z.number(),
|
|
224307
|
-
groupId: zod.z.string().min(1)
|
|
224308
|
-
}), AnalyticsGroupDetailSchema.nullable()),
|
|
224309
224289
|
clearTracks: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
224310
224290
|
kind: "mutation",
|
|
224311
224291
|
auth: "admin"
|
|
@@ -241929,6 +241909,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
241929
241909
|
addonId: null,
|
|
241930
241910
|
access: "delete"
|
|
241931
241911
|
},
|
|
241912
|
+
"deviceManager.renameLocation": {
|
|
241913
|
+
capName: "device-manager",
|
|
241914
|
+
capScope: "system",
|
|
241915
|
+
addonId: null,
|
|
241916
|
+
access: "create"
|
|
241917
|
+
},
|
|
241932
241918
|
"deviceManager.runDeviceAction": {
|
|
241933
241919
|
capName: "device-manager",
|
|
241934
241920
|
capScope: "system",
|
|
@@ -243621,12 +243607,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243621
243607
|
addonId: null,
|
|
243622
243608
|
access: "view"
|
|
243623
243609
|
},
|
|
243624
|
-
"pipelineAnalytics.getGroup": {
|
|
243625
|
-
capName: "pipeline-analytics",
|
|
243626
|
-
capScope: "device",
|
|
243627
|
-
addonId: null,
|
|
243628
|
-
access: "view"
|
|
243629
|
-
},
|
|
243630
243610
|
"pipelineAnalytics.getKeyEvents": {
|
|
243631
243611
|
capName: "pipeline-analytics",
|
|
243632
243612
|
capScope: "device",
|
|
@@ -243729,12 +243709,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243729
243709
|
addonId: null,
|
|
243730
243710
|
access: "view"
|
|
243731
243711
|
},
|
|
243732
|
-
"pipelineAnalytics.listGroups": {
|
|
243733
|
-
capName: "pipeline-analytics",
|
|
243734
|
-
capScope: "device",
|
|
243735
|
-
addonId: null,
|
|
243736
|
-
access: "view"
|
|
243737
|
-
},
|
|
243738
243712
|
"pipelineAnalytics.listOpsLog": {
|
|
243739
243713
|
capName: "pipeline-analytics",
|
|
243740
243714
|
capScope: "device",
|
|
@@ -247615,11 +247589,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
247615
247589
|
form: "single",
|
|
247616
247590
|
optional: true
|
|
247617
247591
|
}],
|
|
247618
|
-
"pipelineAnalytics.getGroup": [{
|
|
247619
|
-
name: "deviceId",
|
|
247620
|
-
form: "single",
|
|
247621
|
-
optional: false
|
|
247622
|
-
}],
|
|
247623
247592
|
"pipelineAnalytics.getKeyEvents": [{
|
|
247624
247593
|
name: "deviceId",
|
|
247625
247594
|
form: "single",
|
|
@@ -247685,11 +247654,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
247685
247654
|
form: "single",
|
|
247686
247655
|
optional: false
|
|
247687
247656
|
}],
|
|
247688
|
-
"pipelineAnalytics.listGroups": [{
|
|
247689
|
-
name: "deviceIds",
|
|
247690
|
-
form: "array",
|
|
247691
|
-
optional: false
|
|
247692
|
-
}],
|
|
247693
247657
|
"pipelineAnalytics.listOpsLog": [{
|
|
247694
247658
|
name: "deviceId",
|
|
247695
247659
|
form: "single",
|
|
@@ -249170,6 +249134,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249170
249134
|
listLocations: (input) => dispatch("deviceManager", "listLocations", "query", input),
|
|
249171
249135
|
addLocation: (input) => dispatch("deviceManager", "addLocation", "mutation", input),
|
|
249172
249136
|
removeLocation: (input) => dispatch("deviceManager", "removeLocation", "mutation", input),
|
|
249137
|
+
renameLocation: (input) => dispatch("deviceManager", "renameLocation", "mutation", input),
|
|
249173
249138
|
listPersistedByAddon: (input) => dispatch("deviceManager", "listPersistedByAddon", "query", input),
|
|
249174
249139
|
listAll: (input) => dispatch("deviceManager", "listAll", "query", input),
|
|
249175
249140
|
getChildren: (input) => dispatch("deviceManager", "getChildren", "query", input),
|
|
@@ -252319,9 +252284,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252319
252284
|
exports.AlertSourceSchema = AlertSourceSchema;
|
|
252320
252285
|
exports.AlertStatusSchema = AlertStatusSchema;
|
|
252321
252286
|
exports.AmbientLightSensorStatusSchema = AmbientLightSensorStatusSchema;
|
|
252322
|
-
exports.AnalyticsGroupDetailSchema = AnalyticsGroupDetailSchema;
|
|
252323
|
-
exports.AnalyticsGroupMemberSchema = AnalyticsGroupMemberSchema;
|
|
252324
|
-
exports.AnalyticsGroupRecordSchema = AnalyticsGroupRecordSchema;
|
|
252325
252287
|
exports.ApiKeyRecordSchema = ApiKeyRecordSchema;
|
|
252326
252288
|
exports.ApiKeySummarySchema = ApiKeySummarySchema;
|
|
252327
252289
|
exports.ArchiveEntrySchema = ArchiveEntrySchema;
|
|
@@ -252686,8 +252648,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252686
252648
|
exports.LedgerWalkSkipReasonSchema = LedgerWalkSkipReasonSchema;
|
|
252687
252649
|
exports.LinkedDeviceSchema = LinkedDeviceSchema;
|
|
252688
252650
|
exports.LinkedDevicesModeSchema = LinkedDevicesModeSchema;
|
|
252689
|
-
exports.ListGroupsPageSchema = ListGroupsPageSchema;
|
|
252690
|
-
exports.ListGroupsQueryInput = ListGroupsQueryInput;
|
|
252691
252651
|
exports.LlmDefaultSchema = LlmDefaultSchema;
|
|
252692
252652
|
exports.LlmDefaultSelectorSchema = LlmDefaultSelectorSchema;
|
|
252693
252653
|
exports.LlmDownloadProgressSchema = LlmDownloadProgressSchema;
|