camstack 1.2.71 → 1.2.72
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({
|
|
@@ -26401,46 +26422,6 @@ var RecentTracksPageSchema = external_exports.object({
|
|
|
26401
26422
|
/** Cursor for the next page, or null when this page is the last. */
|
|
26402
26423
|
nextCursor: external_exports.string().nullable()
|
|
26403
26424
|
});
|
|
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
26425
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
26445
26426
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
26446
26427
|
var KeyEventQueryInput = external_exports.object({
|
|
@@ -26533,9 +26514,7 @@ var TrackCascadeCountsSchema = external_exports.object({
|
|
|
26533
26514
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
26534
26515
|
plates: external_exports.number().int(),
|
|
26535
26516
|
/** 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()
|
|
26517
|
+
embeddings: external_exports.number().int()
|
|
26539
26518
|
});
|
|
26540
26519
|
var DiskReconcileCountsSchema = external_exports.object({
|
|
26541
26520
|
mediaDropped: external_exports.number().int(),
|
|
@@ -26748,16 +26727,6 @@ var pipelineAnalyticsCapability = {
|
|
|
26748
26727
|
* are not included (same contract as `listTracks`).
|
|
26749
26728
|
*/
|
|
26750
26729
|
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
26730
|
clearTracks: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
|
|
26762
26731
|
kind: "mutation",
|
|
26763
26732
|
auth: "admin"
|
|
@@ -40651,6 +40620,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40651
40620
|
addonId: null,
|
|
40652
40621
|
access: "delete"
|
|
40653
40622
|
},
|
|
40623
|
+
"deviceManager.renameLocation": {
|
|
40624
|
+
capName: "device-manager",
|
|
40625
|
+
capScope: "system",
|
|
40626
|
+
addonId: null,
|
|
40627
|
+
access: "create"
|
|
40628
|
+
},
|
|
40654
40629
|
"deviceManager.runDeviceAction": {
|
|
40655
40630
|
capName: "device-manager",
|
|
40656
40631
|
capScope: "system",
|
|
@@ -42343,12 +42318,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42343
42318
|
addonId: null,
|
|
42344
42319
|
access: "view"
|
|
42345
42320
|
},
|
|
42346
|
-
"pipelineAnalytics.getGroup": {
|
|
42347
|
-
capName: "pipeline-analytics",
|
|
42348
|
-
capScope: "device",
|
|
42349
|
-
addonId: null,
|
|
42350
|
-
access: "view"
|
|
42351
|
-
},
|
|
42352
42321
|
"pipelineAnalytics.getKeyEvents": {
|
|
42353
42322
|
capName: "pipeline-analytics",
|
|
42354
42323
|
capScope: "device",
|
|
@@ -42451,12 +42420,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42451
42420
|
addonId: null,
|
|
42452
42421
|
access: "view"
|
|
42453
42422
|
},
|
|
42454
|
-
"pipelineAnalytics.listGroups": {
|
|
42455
|
-
capName: "pipeline-analytics",
|
|
42456
|
-
capScope: "device",
|
|
42457
|
-
addonId: null,
|
|
42458
|
-
access: "view"
|
|
42459
|
-
},
|
|
42460
42423
|
"pipelineAnalytics.listOpsLog": {
|
|
42461
42424
|
capName: "pipeline-analytics",
|
|
42462
42425
|
capScope: "device",
|
|
@@ -46079,11 +46042,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
46079
46042
|
form: "single",
|
|
46080
46043
|
optional: true
|
|
46081
46044
|
}],
|
|
46082
|
-
"pipelineAnalytics.getGroup": [{
|
|
46083
|
-
name: "deviceId",
|
|
46084
|
-
form: "single",
|
|
46085
|
-
optional: false
|
|
46086
|
-
}],
|
|
46087
46045
|
"pipelineAnalytics.getKeyEvents": [{
|
|
46088
46046
|
name: "deviceId",
|
|
46089
46047
|
form: "single",
|
|
@@ -46149,11 +46107,6 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
46149
46107
|
form: "single",
|
|
46150
46108
|
optional: false
|
|
46151
46109
|
}],
|
|
46152
|
-
"pipelineAnalytics.listGroups": [{
|
|
46153
|
-
name: "deviceIds",
|
|
46154
|
-
form: "array",
|
|
46155
|
-
optional: false
|
|
46156
|
-
}],
|
|
46157
46110
|
"pipelineAnalytics.listOpsLog": [{
|
|
46158
46111
|
name: "deviceId",
|
|
46159
46112
|
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-CX4PX7YL.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-WAZ55ZSY.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-WAZ55ZSY.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-RIINNWGY.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-DCdtLXgx.js
|
|
23637
|
+
var require_dist_DCdtLXgx = __commonJS({
|
|
23638
|
+
"../system/dist/dist-DCdtLXgx.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({
|
|
@@ -37096,46 +37117,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37096
37117
|
/** Cursor for the next page, or null when this page is the last. */
|
|
37097
37118
|
nextCursor: zod.z.string().nullable()
|
|
37098
37119
|
});
|
|
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
37120
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
37140
37121
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
37141
37122
|
var KeyEventQueryInput = zod.z.object({
|
|
@@ -37228,9 +37209,7 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37228
37209
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
37229
37210
|
plates: zod.z.number().int(),
|
|
37230
37211
|
/** 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()
|
|
37212
|
+
embeddings: zod.z.number().int()
|
|
37234
37213
|
});
|
|
37235
37214
|
var DiskReconcileCountsSchema = zod.z.object({
|
|
37236
37215
|
mediaDropped: zod.z.number().int(),
|
|
@@ -37443,16 +37422,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
37443
37422
|
* are not included (same contract as `listTracks`).
|
|
37444
37423
|
*/
|
|
37445
37424
|
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
37425
|
clearTracks: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
37457
37426
|
kind: "mutation",
|
|
37458
37427
|
auth: "admin"
|
|
@@ -51967,6 +51936,12 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
51967
51936
|
addonId: null,
|
|
51968
51937
|
access: "delete"
|
|
51969
51938
|
},
|
|
51939
|
+
"deviceManager.renameLocation": {
|
|
51940
|
+
capName: "device-manager",
|
|
51941
|
+
capScope: "system",
|
|
51942
|
+
addonId: null,
|
|
51943
|
+
access: "create"
|
|
51944
|
+
},
|
|
51970
51945
|
"deviceManager.runDeviceAction": {
|
|
51971
51946
|
capName: "device-manager",
|
|
51972
51947
|
capScope: "system",
|
|
@@ -53659,12 +53634,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
53659
53634
|
addonId: null,
|
|
53660
53635
|
access: "view"
|
|
53661
53636
|
},
|
|
53662
|
-
"pipelineAnalytics.getGroup": {
|
|
53663
|
-
capName: "pipeline-analytics",
|
|
53664
|
-
capScope: "device",
|
|
53665
|
-
addonId: null,
|
|
53666
|
-
access: "view"
|
|
53667
|
-
},
|
|
53668
53637
|
"pipelineAnalytics.getKeyEvents": {
|
|
53669
53638
|
capName: "pipeline-analytics",
|
|
53670
53639
|
capScope: "device",
|
|
@@ -53767,12 +53736,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
53767
53736
|
addonId: null,
|
|
53768
53737
|
access: "view"
|
|
53769
53738
|
},
|
|
53770
|
-
"pipelineAnalytics.listGroups": {
|
|
53771
|
-
capName: "pipeline-analytics",
|
|
53772
|
-
capScope: "device",
|
|
53773
|
-
addonId: null,
|
|
53774
|
-
access: "view"
|
|
53775
|
-
},
|
|
53776
53739
|
"pipelineAnalytics.listOpsLog": {
|
|
53777
53740
|
capName: "pipeline-analytics",
|
|
53778
53741
|
capScope: "device",
|
|
@@ -57395,11 +57358,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
57395
57358
|
form: "single",
|
|
57396
57359
|
optional: true
|
|
57397
57360
|
}],
|
|
57398
|
-
"pipelineAnalytics.getGroup": [{
|
|
57399
|
-
name: "deviceId",
|
|
57400
|
-
form: "single",
|
|
57401
|
-
optional: false
|
|
57402
|
-
}],
|
|
57403
57361
|
"pipelineAnalytics.getKeyEvents": [{
|
|
57404
57362
|
name: "deviceId",
|
|
57405
57363
|
form: "single",
|
|
@@ -57465,11 +57423,6 @@ var require_dist_CFTKQGym = __commonJS({
|
|
|
57465
57423
|
form: "single",
|
|
57466
57424
|
optional: false
|
|
57467
57425
|
}],
|
|
57468
|
-
"pipelineAnalytics.listGroups": [{
|
|
57469
|
-
name: "deviceIds",
|
|
57470
|
-
form: "array",
|
|
57471
|
-
optional: false
|
|
57472
|
-
}],
|
|
57473
57426
|
"pipelineAnalytics.listOpsLog": [{
|
|
57474
57427
|
name: "deviceId",
|
|
57475
57428
|
form: "single",
|
|
@@ -59640,7 +59593,7 @@ var require_alerts_addon = __commonJS({
|
|
|
59640
59593
|
[Symbol.toStringTag]: { value: "Module" }
|
|
59641
59594
|
});
|
|
59642
59595
|
require_chunk_Cek0wNdY();
|
|
59643
|
-
var require_dist10 =
|
|
59596
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
59644
59597
|
function selectExpired(alerts, cutoffMs) {
|
|
59645
59598
|
return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
|
|
59646
59599
|
}
|
|
@@ -60459,7 +60412,7 @@ var require_console_logging = __commonJS({
|
|
|
60459
60412
|
[Symbol.toStringTag]: { value: "Module" }
|
|
60460
60413
|
});
|
|
60461
60414
|
require_chunk_Cek0wNdY();
|
|
60462
|
-
var require_dist10 =
|
|
60415
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
60463
60416
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
60464
60417
|
var LEVEL_RANK = {
|
|
60465
60418
|
debug: 0,
|
|
@@ -60553,7 +60506,7 @@ var require_core_blocks_addon = __commonJS({
|
|
|
60553
60506
|
"use strict";
|
|
60554
60507
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
60555
60508
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
60556
|
-
var require_dist10 =
|
|
60509
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
60557
60510
|
var node_crypto = __require("crypto");
|
|
60558
60511
|
var node_fs_promises = __require("fs/promises");
|
|
60559
60512
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -61450,11 +61403,11 @@ var require_core_blocks = __commonJS({
|
|
|
61450
61403
|
}
|
|
61451
61404
|
});
|
|
61452
61405
|
|
|
61453
|
-
// ../system/dist/retired-settings-keys-
|
|
61454
|
-
var
|
|
61455
|
-
"../system/dist/retired-settings-keys-
|
|
61406
|
+
// ../system/dist/retired-settings-keys-DobfRRgq.js
|
|
61407
|
+
var require_retired_settings_keys_DobfRRgq = __commonJS({
|
|
61408
|
+
"../system/dist/retired-settings-keys-DobfRRgq.js"(exports) {
|
|
61456
61409
|
"use strict";
|
|
61457
|
-
var require_dist10 =
|
|
61410
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
61458
61411
|
function settingsStoreIsAuthoritativeHere(env) {
|
|
61459
61412
|
const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
|
|
61460
61413
|
return raw === "" || raw === "hub";
|
|
@@ -63668,8 +63621,8 @@ var require_device_manager_addon = __commonJS({
|
|
|
63668
63621
|
[Symbol.toStringTag]: { value: "Module" }
|
|
63669
63622
|
});
|
|
63670
63623
|
require_chunk_Cek0wNdY();
|
|
63671
|
-
var require_dist10 =
|
|
63672
|
-
var require_retired_settings_keys =
|
|
63624
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
63625
|
+
var require_retired_settings_keys = require_retired_settings_keys_DobfRRgq();
|
|
63673
63626
|
var node_crypto = __require("crypto");
|
|
63674
63627
|
var _camstack_types_node = require_node();
|
|
63675
63628
|
var JOB_HISTORY = 20;
|
|
@@ -66426,20 +66379,17 @@ var require_device_manager_addon = __commonJS({
|
|
|
66426
66379
|
const cascaded = [];
|
|
66427
66380
|
const failed = [];
|
|
66428
66381
|
await pctx.metaStore.withMetaWriteLock(async () => {
|
|
66429
|
-
|
|
66430
|
-
if (!persisted) throw new Error(`[device-manager] setLocation: unknown device id=${deviceId}`);
|
|
66382
|
+
if (!await pctx.metaStore.resolvePersistedById(deviceId)) throw new Error(`[device-manager] setLocation: unknown device id=${deviceId}`);
|
|
66431
66383
|
await pctx.metaStore.rows.patch(deviceId, { location });
|
|
66432
|
-
|
|
66433
|
-
|
|
66434
|
-
|
|
66435
|
-
|
|
66436
|
-
|
|
66437
|
-
|
|
66438
|
-
|
|
66439
|
-
|
|
66440
|
-
|
|
66441
|
-
});
|
|
66442
|
-
}
|
|
66384
|
+
const descendants = await collectDescendants(pctx.metaStore, deviceId);
|
|
66385
|
+
for (const descendant of descendants) try {
|
|
66386
|
+
await pctx.metaStore.rows.patch(descendant.id, { location });
|
|
66387
|
+
cascaded.push(descendant.id);
|
|
66388
|
+
} catch (err) {
|
|
66389
|
+
failed.push({
|
|
66390
|
+
id: descendant.id,
|
|
66391
|
+
error: err
|
|
66392
|
+
});
|
|
66443
66393
|
}
|
|
66444
66394
|
});
|
|
66445
66395
|
pctx.host.ctx.eventBus.emit({
|
|
@@ -66470,7 +66420,7 @@ var require_device_manager_addon = __commonJS({
|
|
|
66470
66420
|
value: location
|
|
66471
66421
|
}
|
|
66472
66422
|
});
|
|
66473
|
-
if (cascaded.length > 0 || failed.length > 0) pctx.host.ctx.logger.info("setLocation: cascaded location to
|
|
66423
|
+
if (cascaded.length > 0 || failed.length > 0) pctx.host.ctx.logger.info("setLocation: cascaded location to descendants", {
|
|
66474
66424
|
tags: { deviceId },
|
|
66475
66425
|
meta: {
|
|
66476
66426
|
location,
|
|
@@ -66786,6 +66736,54 @@ var require_device_manager_addon = __commonJS({
|
|
|
66786
66736
|
await pctx.settings.writeAddonStore({ locations: [...current, trimmed] });
|
|
66787
66737
|
});
|
|
66788
66738
|
}
|
|
66739
|
+
async function renameLocation(pctx, input) {
|
|
66740
|
+
const from = input.from.trim();
|
|
66741
|
+
const to = input.to.trim();
|
|
66742
|
+
if (from.length === 0) throw new Error("[device-manager] renameLocation: `from` must be non-empty");
|
|
66743
|
+
if (to.length === 0) throw new Error("[device-manager] renameLocation: `to` must be non-empty");
|
|
66744
|
+
const fromKey = from.toLowerCase();
|
|
66745
|
+
const toKey = to.toLowerCase();
|
|
66746
|
+
await pctx.bindingsDeps.withAddonStoreWriteLock(async () => {
|
|
66747
|
+
const current = (await pctx.metaStore.readStore()).locations ?? [];
|
|
66748
|
+
if (!current.some((l) => l.trim().toLowerCase() === fromKey)) return;
|
|
66749
|
+
const kept = current.filter((l) => {
|
|
66750
|
+
const key = l.trim().toLowerCase();
|
|
66751
|
+
return key !== fromKey && key !== toKey;
|
|
66752
|
+
});
|
|
66753
|
+
await pctx.settings.writeAddonStore({ locations: [...kept, to] });
|
|
66754
|
+
});
|
|
66755
|
+
const moved = await pctx.metaStore.withMetaWriteLock(async () => {
|
|
66756
|
+
const out = [];
|
|
66757
|
+
for (const row of await pctx.metaStore.rows.listAll()) {
|
|
66758
|
+
const location = row.meta.location;
|
|
66759
|
+
if (typeof location !== "string") continue;
|
|
66760
|
+
if (location.trim().toLowerCase() !== fromKey) continue;
|
|
66761
|
+
await pctx.metaStore.rows.patch(row.meta.id, { location: to });
|
|
66762
|
+
out.push(row.meta.id);
|
|
66763
|
+
}
|
|
66764
|
+
return out;
|
|
66765
|
+
});
|
|
66766
|
+
for (const deviceId of moved) pctx.host.ctx.eventBus.emit({
|
|
66767
|
+
id: (0, node_crypto.randomUUID)(),
|
|
66768
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
66769
|
+
source: {
|
|
66770
|
+
type: "device",
|
|
66771
|
+
id: deviceId
|
|
66772
|
+
},
|
|
66773
|
+
category: require_dist10.EventCategory.DeviceMetaChanged,
|
|
66774
|
+
data: {
|
|
66775
|
+
deviceId,
|
|
66776
|
+
field: "location",
|
|
66777
|
+
value: to
|
|
66778
|
+
}
|
|
66779
|
+
});
|
|
66780
|
+
pctx.host.ctx.logger.info("renameLocation: room renamed", { meta: {
|
|
66781
|
+
from,
|
|
66782
|
+
to,
|
|
66783
|
+
moved: moved.length
|
|
66784
|
+
} });
|
|
66785
|
+
return { moved: moved.length };
|
|
66786
|
+
}
|
|
66789
66787
|
async function removeLocation(pctx, input) {
|
|
66790
66788
|
const trimmed = input.name.trim();
|
|
66791
66789
|
if (trimmed.length === 0) return;
|
|
@@ -68279,6 +68277,7 @@ var require_device_manager_addon = __commonJS({
|
|
|
68279
68277
|
listLocations: () => listLocations(pctx),
|
|
68280
68278
|
addLocation: (input) => addLocation(pctx, input),
|
|
68281
68279
|
removeLocation: (input) => removeLocation(pctx, input),
|
|
68280
|
+
renameLocation: (input) => renameLocation(pctx, input),
|
|
68282
68281
|
listPersistedByAddon: (input) => listPersistedByAddon(pctx, input),
|
|
68283
68282
|
listAll: (input) => listAll(pctx, input),
|
|
68284
68283
|
getDevice: (input) => getDevice(pctx, input),
|
|
@@ -68485,7 +68484,7 @@ var require_hub_forwarder = __commonJS({
|
|
|
68485
68484
|
[Symbol.toStringTag]: { value: "Module" }
|
|
68486
68485
|
});
|
|
68487
68486
|
require_chunk_Cek0wNdY();
|
|
68488
|
-
var require_dist10 =
|
|
68487
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
68489
68488
|
var require_formatter = require_formatter_DqAKDlvN();
|
|
68490
68489
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
68491
68490
|
var HubForwarderDestination = class {
|
|
@@ -68622,7 +68621,7 @@ var require_liveness_monitor_addon = __commonJS({
|
|
|
68622
68621
|
"use strict";
|
|
68623
68622
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
68624
68623
|
require_chunk_Cek0wNdY();
|
|
68625
|
-
var require_dist10 =
|
|
68624
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
68626
68625
|
var NO_DEVICES = "liveness:no-devices";
|
|
68627
68626
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
68628
68627
|
var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
|
|
@@ -68812,7 +68811,7 @@ var require_local_auth_addon = __commonJS({
|
|
|
68812
68811
|
[Symbol.toStringTag]: { value: "Module" }
|
|
68813
68812
|
});
|
|
68814
68813
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
68815
|
-
var require_dist10 =
|
|
68814
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
68816
68815
|
var node_crypto = __require("crypto");
|
|
68817
68816
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
68818
68817
|
var crypto$1 = __require("crypto");
|
|
@@ -76625,7 +76624,7 @@ var require_loki_logging = __commonJS({
|
|
|
76625
76624
|
[Symbol.toStringTag]: { value: "Module" }
|
|
76626
76625
|
});
|
|
76627
76626
|
require_chunk_Cek0wNdY();
|
|
76628
|
-
var require_dist10 =
|
|
76627
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
76629
76628
|
function sanitizeLabelName(raw) {
|
|
76630
76629
|
const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
|
|
76631
76630
|
return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
@@ -77190,7 +77189,7 @@ var require_native_metrics_addon = __commonJS({
|
|
|
77190
77189
|
[Symbol.toStringTag]: { value: "Module" }
|
|
77191
77190
|
});
|
|
77192
77191
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
77193
|
-
var require_dist10 =
|
|
77192
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
77194
77193
|
var node_fs_promises = __require("fs/promises");
|
|
77195
77194
|
var node_child_process = __require("child_process");
|
|
77196
77195
|
var node_util = __require("util");
|
|
@@ -79812,7 +79811,7 @@ var require_filesystem_storage_addon = __commonJS({
|
|
|
79812
79811
|
[Symbol.toStringTag]: { value: "Module" }
|
|
79813
79812
|
});
|
|
79814
79813
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
79815
|
-
var require_dist10 =
|
|
79814
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
79816
79815
|
var node_crypto = __require("crypto");
|
|
79817
79816
|
var node_fs_promises = __require("fs/promises");
|
|
79818
79817
|
var node_path = __require("path");
|
|
@@ -80928,8 +80927,8 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
80928
80927
|
[Symbol.toStringTag]: { value: "Module" }
|
|
80929
80928
|
});
|
|
80930
80929
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
80931
|
-
var require_dist10 =
|
|
80932
|
-
var require_retired_settings_keys =
|
|
80930
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
80931
|
+
var require_retired_settings_keys = require_retired_settings_keys_DobfRRgq();
|
|
80933
80932
|
var node_crypto = __require("crypto");
|
|
80934
80933
|
var node_fs = __require("fs");
|
|
80935
80934
|
var node_module = __require("module");
|
|
@@ -81199,15 +81198,28 @@ var require_sqlite_settings_addon = __commonJS({
|
|
|
81199
81198
|
const wanted = sqliteMmapSizeFor(fileSizeBytes);
|
|
81200
81199
|
return wanted > currentMmapBytes ? wanted : null;
|
|
81201
81200
|
}
|
|
81202
|
-
var RETIRED_COLLECTIONS = [
|
|
81203
|
-
|
|
81204
|
-
|
|
81205
|
-
|
|
81206
|
-
|
|
81207
|
-
|
|
81208
|
-
|
|
81209
|
-
|
|
81210
|
-
|
|
81201
|
+
var RETIRED_COLLECTIONS = [
|
|
81202
|
+
{
|
|
81203
|
+
collection: "devices",
|
|
81204
|
+
owner: "integration-registry",
|
|
81205
|
+
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)"
|
|
81206
|
+
},
|
|
81207
|
+
{
|
|
81208
|
+
collection: "device_settings_kv",
|
|
81209
|
+
owner: "integration-registry",
|
|
81210
|
+
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`"
|
|
81211
|
+
},
|
|
81212
|
+
{
|
|
81213
|
+
collection: "pipeline-analytics:track-groups",
|
|
81214
|
+
owner: "pipeline-analytics",
|
|
81215
|
+
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"
|
|
81216
|
+
},
|
|
81217
|
+
{
|
|
81218
|
+
collection: "pipeline-analytics:track-group-members",
|
|
81219
|
+
owner: "pipeline-analytics",
|
|
81220
|
+
reason: "membership rows of the deleted group entity; the track cascade that used to carry them away no longer has a group leg"
|
|
81221
|
+
}
|
|
81222
|
+
];
|
|
81211
81223
|
function retiredCollectionStoreOf(backend) {
|
|
81212
81224
|
return { async drop(collection) {
|
|
81213
81225
|
return backend.dropRetiredTable(collection);
|
|
@@ -83338,7 +83350,7 @@ var require_storage_orchestrator_addon = __commonJS({
|
|
|
83338
83350
|
[Symbol.toStringTag]: { value: "Module" }
|
|
83339
83351
|
});
|
|
83340
83352
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
83341
|
-
var require_dist10 =
|
|
83353
|
+
var require_dist10 = require_dist_DCdtLXgx();
|
|
83342
83354
|
var zod = require_zod();
|
|
83343
83355
|
var node_crypto = __require("crypto");
|
|
83344
83356
|
var node_fs_promises = __require("fs/promises");
|
|
@@ -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_DCdtLXgx();
|
|
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_DCdtLXgx();
|
|
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-Bi7oyXcN.js
|
|
116790
|
+
var require_manifest_system_deps_Bi7oyXcN = __commonJS({
|
|
116791
|
+
"../system/dist/manifest-system-deps-Bi7oyXcN.js"(exports) {
|
|
116783
116792
|
"use strict";
|
|
116784
116793
|
var require_chunk = require_chunk_Cek0wNdY();
|
|
116785
|
-
|
|
116794
|
+
require_dist_DCdtLXgx();
|
|
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_DCdtLXgx();
|
|
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_Bi7oyXcN();
|
|
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({
|
|
@@ -223949,46 +223979,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
223949
223979
|
/** Cursor for the next page, or null when this page is the last. */
|
|
223950
223980
|
nextCursor: zod.z.string().nullable()
|
|
223951
223981
|
});
|
|
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
223982
|
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
223993
223983
|
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
223994
223984
|
var KeyEventQueryInput = zod.z.object({
|
|
@@ -224081,9 +224071,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224081
224071
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
224082
224072
|
plates: zod.z.number().int(),
|
|
224083
224073
|
/** 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()
|
|
224074
|
+
embeddings: zod.z.number().int()
|
|
224087
224075
|
});
|
|
224088
224076
|
var DiskReconcileCountsSchema = zod.z.object({
|
|
224089
224077
|
mediaDropped: zod.z.number().int(),
|
|
@@ -224296,16 +224284,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
224296
224284
|
* are not included (same contract as `listTracks`).
|
|
224297
224285
|
*/
|
|
224298
224286
|
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
224287
|
clearTracks: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
|
|
224310
224288
|
kind: "mutation",
|
|
224311
224289
|
auth: "admin"
|
|
@@ -241929,6 +241907,12 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
241929
241907
|
addonId: null,
|
|
241930
241908
|
access: "delete"
|
|
241931
241909
|
},
|
|
241910
|
+
"deviceManager.renameLocation": {
|
|
241911
|
+
capName: "device-manager",
|
|
241912
|
+
capScope: "system",
|
|
241913
|
+
addonId: null,
|
|
241914
|
+
access: "create"
|
|
241915
|
+
},
|
|
241932
241916
|
"deviceManager.runDeviceAction": {
|
|
241933
241917
|
capName: "device-manager",
|
|
241934
241918
|
capScope: "system",
|
|
@@ -243621,12 +243605,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243621
243605
|
addonId: null,
|
|
243622
243606
|
access: "view"
|
|
243623
243607
|
},
|
|
243624
|
-
"pipelineAnalytics.getGroup": {
|
|
243625
|
-
capName: "pipeline-analytics",
|
|
243626
|
-
capScope: "device",
|
|
243627
|
-
addonId: null,
|
|
243628
|
-
access: "view"
|
|
243629
|
-
},
|
|
243630
243608
|
"pipelineAnalytics.getKeyEvents": {
|
|
243631
243609
|
capName: "pipeline-analytics",
|
|
243632
243610
|
capScope: "device",
|
|
@@ -243729,12 +243707,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
243729
243707
|
addonId: null,
|
|
243730
243708
|
access: "view"
|
|
243731
243709
|
},
|
|
243732
|
-
"pipelineAnalytics.listGroups": {
|
|
243733
|
-
capName: "pipeline-analytics",
|
|
243734
|
-
capScope: "device",
|
|
243735
|
-
addonId: null,
|
|
243736
|
-
access: "view"
|
|
243737
|
-
},
|
|
243738
243710
|
"pipelineAnalytics.listOpsLog": {
|
|
243739
243711
|
capName: "pipeline-analytics",
|
|
243740
243712
|
capScope: "device",
|
|
@@ -247615,11 +247587,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
247615
247587
|
form: "single",
|
|
247616
247588
|
optional: true
|
|
247617
247589
|
}],
|
|
247618
|
-
"pipelineAnalytics.getGroup": [{
|
|
247619
|
-
name: "deviceId",
|
|
247620
|
-
form: "single",
|
|
247621
|
-
optional: false
|
|
247622
|
-
}],
|
|
247623
247590
|
"pipelineAnalytics.getKeyEvents": [{
|
|
247624
247591
|
name: "deviceId",
|
|
247625
247592
|
form: "single",
|
|
@@ -247685,11 +247652,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
247685
247652
|
form: "single",
|
|
247686
247653
|
optional: false
|
|
247687
247654
|
}],
|
|
247688
|
-
"pipelineAnalytics.listGroups": [{
|
|
247689
|
-
name: "deviceIds",
|
|
247690
|
-
form: "array",
|
|
247691
|
-
optional: false
|
|
247692
|
-
}],
|
|
247693
247655
|
"pipelineAnalytics.listOpsLog": [{
|
|
247694
247656
|
name: "deviceId",
|
|
247695
247657
|
form: "single",
|
|
@@ -249170,6 +249132,7 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
249170
249132
|
listLocations: (input) => dispatch("deviceManager", "listLocations", "query", input),
|
|
249171
249133
|
addLocation: (input) => dispatch("deviceManager", "addLocation", "mutation", input),
|
|
249172
249134
|
removeLocation: (input) => dispatch("deviceManager", "removeLocation", "mutation", input),
|
|
249135
|
+
renameLocation: (input) => dispatch("deviceManager", "renameLocation", "mutation", input),
|
|
249173
249136
|
listPersistedByAddon: (input) => dispatch("deviceManager", "listPersistedByAddon", "query", input),
|
|
249174
249137
|
listAll: (input) => dispatch("deviceManager", "listAll", "query", input),
|
|
249175
249138
|
getChildren: (input) => dispatch("deviceManager", "getChildren", "query", input),
|
|
@@ -252319,9 +252282,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252319
252282
|
exports.AlertSourceSchema = AlertSourceSchema;
|
|
252320
252283
|
exports.AlertStatusSchema = AlertStatusSchema;
|
|
252321
252284
|
exports.AmbientLightSensorStatusSchema = AmbientLightSensorStatusSchema;
|
|
252322
|
-
exports.AnalyticsGroupDetailSchema = AnalyticsGroupDetailSchema;
|
|
252323
|
-
exports.AnalyticsGroupMemberSchema = AnalyticsGroupMemberSchema;
|
|
252324
|
-
exports.AnalyticsGroupRecordSchema = AnalyticsGroupRecordSchema;
|
|
252325
252285
|
exports.ApiKeyRecordSchema = ApiKeyRecordSchema;
|
|
252326
252286
|
exports.ApiKeySummarySchema = ApiKeySummarySchema;
|
|
252327
252287
|
exports.ArchiveEntrySchema = ArchiveEntrySchema;
|
|
@@ -252686,8 +252646,6 @@ ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
|
|
|
252686
252646
|
exports.LedgerWalkSkipReasonSchema = LedgerWalkSkipReasonSchema;
|
|
252687
252647
|
exports.LinkedDeviceSchema = LinkedDeviceSchema;
|
|
252688
252648
|
exports.LinkedDevicesModeSchema = LinkedDevicesModeSchema;
|
|
252689
|
-
exports.ListGroupsPageSchema = ListGroupsPageSchema;
|
|
252690
|
-
exports.ListGroupsQueryInput = ListGroupsQueryInput;
|
|
252691
252649
|
exports.LlmDefaultSchema = LlmDefaultSchema;
|
|
252692
252650
|
exports.LlmDefaultSelectorSchema = LlmDefaultSelectorSchema;
|
|
252693
252651
|
exports.LlmDownloadProgressSchema = LlmDownloadProgressSchema;
|