@camstack/system 1.2.167 → 1.2.169

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.
Files changed (58) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  14. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.js +97 -31
  16. package/dist/builtins/device-manager/device-manager.addon.mjs +97 -31
  17. package/dist/builtins/device-manager/device-meta-actions.d.ts +36 -15
  18. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  19. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  20. package/dist/builtins/hub-forwarder/index.js +1 -1
  21. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  22. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  23. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  24. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  25. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  26. package/dist/builtins/local-network/local-network.addon.js +1 -1
  27. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  28. package/dist/builtins/loki-logging/index.js +1 -1
  29. package/dist/builtins/loki-logging/index.mjs +1 -1
  30. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  31. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  32. package/dist/builtins/platform-probe/index.js +1 -1
  33. package/dist/builtins/platform-probe/index.mjs +1 -1
  34. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  35. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  36. package/dist/builtins/snapshot/index.js +1 -1
  37. package/dist/builtins/snapshot/index.mjs +1 -1
  38. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  39. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  40. package/dist/builtins/sqlite-storage/retired-collections.d.ts +9 -0
  41. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  42. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +0 -1
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +2 -4
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +2 -4
  46. package/dist/builtins/system-config/system-config.addon.js +1 -1
  47. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  48. package/dist/builtins/winston-logging/index.js +1 -1
  49. package/dist/builtins/winston-logging/index.mjs +1 -1
  50. package/dist/{dist-CFTKQGym.js → dist-D6kBG4fg.js} +30 -75
  51. package/dist/{dist-Dw9cm1NS.mjs → dist-digPByP6.mjs} +30 -75
  52. package/dist/index.js +2 -2
  53. package/dist/index.mjs +2 -2
  54. package/dist/{manifest-system-deps-BIxY1Y5e.js → manifest-system-deps-BjMNGEpl.js} +1 -1
  55. package/dist/{manifest-system-deps-DTz_zNQf.mjs → manifest-system-deps-onn-Eawl.mjs} +1 -1
  56. package/dist/{retired-settings-keys-diW1NmyP.mjs → retired-settings-keys-B5D2hfoN.mjs} +1 -1
  57. package/dist/{retired-settings-keys-dehyu2N3.js → retired-settings-keys-BywIz4dZ.js} +1 -1
  58. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Nt as BaseAddon, an as EventCategory, ot as localNetworkCapability } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Nt as BaseAddon, an as EventCategory, ot as localNetworkCapability } from "../../dist-digPByP6.mjs";
2
2
  import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-DOTmtLCW.mjs";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { Nt as BaseAddon, st as logDestinationCapability } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Nt as BaseAddon, st as logDestinationCapability } from "../../dist-digPByP6.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_child_process = require("node:child_process");
9
9
  let node_util = require("node:util");
@@ -1,4 +1,4 @@
1
- import { Kt as createEvent, Mt as errMsg, Nt as BaseAddon, Z as foldSnapshotByFunction, _t as resolveBucketMs, an as EventCategory, gt as reducePoints, ut as metricsProviderCapability } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Kt as createEvent, Mt as errMsg, Nt as BaseAddon, Z as foldSnapshotByFunction, _t as resolveBucketMs, an as EventCategory, gt as reducePoints, ut as metricsProviderCapability } from "../../dist-digPByP6.mjs";
2
2
  import { readFile, readdir } from "node:fs/promises";
3
3
  import { execFile, execFileSync } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { G as enumerateInferenceDevices, Jt as emitReadiness, Mt as errMsg, Nt as BaseAddon, St as scoreRuntimes, an as EventCategory, mt as platformProbeCapability } from "../../dist-Dw9cm1NS.mjs";
2
+ import { G as enumerateInferenceDevices, Jt as emitReadiness, Mt as errMsg, Nt as BaseAddon, St as scoreRuntimes, an as EventCategory, mt as platformProbeCapability } from "../../dist-digPByP6.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import * as fs from "node:fs";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { Nt as BaseAddon, an as EventCategory } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Nt as BaseAddon, an as EventCategory } from "../../dist-digPByP6.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { B as deriveBatteryPresence, Lt as DeviceFeature, M as batteryCapability, Mt as errMsg, Nt as BaseAddon, Ot as streamQualityLabel, Qt as nodePin, an as EventCategory, i as BatteryStatusSchema, j as bareAddonId, wt as snapshotCapability, zt as DeviceType } from "../../dist-Dw9cm1NS.mjs";
1
+ import { B as deriveBatteryPresence, Lt as DeviceFeature, M as batteryCapability, Mt as errMsg, Nt as BaseAddon, Ot as streamQualityLabel, Qt as nodePin, an as EventCategory, i as BatteryStatusSchema, j as bareAddonId, wt as snapshotCapability, zt as DeviceType } from "../../dist-digPByP6.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Dt as storageProviderCapability, Nt as BaseAddon, X as filesystemBrowseCapability } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Dt as storageProviderCapability, Nt as BaseAddon, X as filesystemBrowseCapability } from "../../dist-digPByP6.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -35,6 +35,15 @@ export interface RetiredCollectionStore {
35
35
  * never had a row. The fleet lives in `device-manager:devices`, under numeric
36
36
  * ids, while these tables key on `dev_NNNN` — the two id-spaces could not be
37
37
  * reconciled even if something had wanted to.
38
+ *
39
+ * `pipeline-analytics:track-groups` / `:track-group-members` — the co-moving
40
+ * GROUP entity. It shipped on 2026-08-24 and was kill-switched the same day
41
+ * (duplicate sealed rows made Library → Gruppi unusable); the operator decided
42
+ * on 2026-09-01 to delete it rather than re-open it. The clusterer, the live
43
+ * buffer, the sealer, the query, the two cap methods and the two custom
44
+ * actions are gone, so nothing declares these tables any more. The group-owned
45
+ * MEDIA rows are NOT here — they live in the shared `pipeline-analytics:media`
46
+ * and are collected by the orphan audit through `RETIRED_OWNER_KINDS`.
38
47
  */
39
48
  export declare const RETIRED_COLLECTIONS: readonly RetiredCollectionSpec[];
40
49
  /**
@@ -7,7 +7,6 @@ export declare class StorageOrchestratorAddon extends BaseAddon<StorageOrchestra
7
7
  private pressureTimer;
8
8
  private pressureSweepInFlight;
9
9
  private migration;
10
- private cleanup;
11
10
  /**
12
11
  * Cached `providerId → nodeLocal` snapshot (SP1). Backs the orchestrator's
13
12
  * synchronous `NodeLocalResolver` — `getProviderInfo()` is async, so we
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -302,7 +302,7 @@ var StorageMigrationCoordinator = class {
302
302
  if (!target) throw new Error(`Storage location "${targetId}" not found`);
303
303
  if (target.type !== storageClass) throw new Error(`Storage location "${targetId}" is type "${target.type}", expected "${storageClass}"`);
304
304
  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`);
305
- const freezeSource = defaultLoc !== void 0 && source.id !== defaultLoc.id;
305
+ const freezeSource = defaultLoc === null || source.id !== defaultLoc.id;
306
306
  if (!MOVER_CLASSES.includes(storageClass)) throw new Error(`No mover owns "${storageClass}" — the migration can repoint its default but cannot move its bytes. Move it by hand, then repoint the default with upsertLocation.`);
307
307
  moves.push({
308
308
  storageClass,
@@ -2485,7 +2485,6 @@ var StorageOrchestratorAddon = class extends require_dist.BaseAddon {
2485
2485
  pressureTimer = null;
2486
2486
  pressureSweepInFlight = false;
2487
2487
  migration = null;
2488
- cleanup = null;
2489
2488
  /**
2490
2489
  * Cached `providerId → nodeLocal` snapshot (SP1). Backs the orchestrator's
2491
2490
  * synchronous `NodeLocalResolver` — `getProviderInfo()` is async, so we
@@ -2791,7 +2790,6 @@ var StorageOrchestratorAddon = class extends require_dist.BaseAddon {
2791
2790
  now: () => Date.now(),
2792
2791
  newId: () => (0, node_crypto.randomUUID)()
2793
2792
  });
2794
- this.cleanup = cleanup;
2795
2793
  const migrationProvider = {
2796
2794
  plan: (input) => migration.plan(input),
2797
2795
  start: async (input) => ({ jobId: await migration.start(input) }),
@@ -1,4 +1,4 @@
1
- import { $t as parseJsonObject, C as StorageMigrationJobSchema, Ct as settingsStoreCapability, Et as storageMigrationCapability, Nt as BaseAddon, P as collectSecretConfigKeys, S as StorageLocationTypeSchema, Tt as storageCapability, m as REDACTED_SECRET, x as StorageCleanupJobSchema } from "../../dist-Dw9cm1NS.mjs";
1
+ import { $t as parseJsonObject, C as StorageMigrationJobSchema, Ct as settingsStoreCapability, Et as storageMigrationCapability, Nt as BaseAddon, P as collectSecretConfigKeys, S as StorageLocationTypeSchema, Tt as storageCapability, m as REDACTED_SECRET, x as StorageCleanupJobSchema } from "../../dist-digPByP6.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import * as fs from "node:fs/promises";
@@ -297,7 +297,7 @@ var StorageMigrationCoordinator = class {
297
297
  if (!target) throw new Error(`Storage location "${targetId}" not found`);
298
298
  if (target.type !== storageClass) throw new Error(`Storage location "${targetId}" is type "${target.type}", expected "${storageClass}"`);
299
299
  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`);
300
- const freezeSource = defaultLoc !== void 0 && source.id !== defaultLoc.id;
300
+ const freezeSource = defaultLoc === null || source.id !== defaultLoc.id;
301
301
  if (!MOVER_CLASSES.includes(storageClass)) throw new Error(`No mover owns "${storageClass}" — the migration can repoint its default but cannot move its bytes. Move it by hand, then repoint the default with upsertLocation.`);
302
302
  moves.push({
303
303
  storageClass,
@@ -2480,7 +2480,6 @@ var StorageOrchestratorAddon = class extends BaseAddon {
2480
2480
  pressureTimer = null;
2481
2481
  pressureSweepInFlight = false;
2482
2482
  migration = null;
2483
- cleanup = null;
2484
2483
  /**
2485
2484
  * Cached `providerId → nodeLocal` snapshot (SP1). Backs the orchestrator's
2486
2485
  * synchronous `NodeLocalResolver` — `getProviderInfo()` is async, so we
@@ -2786,7 +2785,6 @@ var StorageOrchestratorAddon = class extends BaseAddon {
2786
2785
  now: () => Date.now(),
2787
2786
  newId: () => randomUUID()
2788
2787
  });
2789
- this.cleanup = cleanup;
2790
2788
  const migrationProvider = {
2791
2789
  plan: (input) => migration.plan(input),
2792
2790
  start: async (input) => ({ jobId: await migration.start(input) }),
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Mt as errMsg, Nt as BaseAddon, Xt as hydrateSchema } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Mt as errMsg, Nt as BaseAddon, Xt as hydrateSchema } from "../../dist-digPByP6.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CFTKQGym.js");
6
+ const require_dist = require("../../dist-D6kBG4fg.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Nt as BaseAddon, st as logDestinationCapability } from "../../dist-Dw9cm1NS.mjs";
1
+ import { Nt as BaseAddon, st as logDestinationCapability } from "../../dist-digPByP6.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -10833,6 +10833,27 @@ var deviceManagerCapability = {
10833
10833
  kind: "mutation",
10834
10834
  auth: "admin"
10835
10835
  }),
10836
+ /** Rename a room: replace the label in the registry IN PLACE and move
10837
+ * every device that carried it, as ONE server operation.
10838
+ *
10839
+ * The admin UI used to do this as `addLocation(to)` → N ×
10840
+ * `setLocation(device, to)` → `removeLocation(from)` from the browser.
10841
+ * Nothing bound those three together, so a closed tab left the fleet
10842
+ * split across two rooms — one of which the operator believed was gone.
10843
+ *
10844
+ * `from` is matched the way the registry matches everywhere else
10845
+ * (trimmed, case-insensitive) and need NOT be registered: the registry is
10846
+ * a suggestion list, and the devices that most need a rename are exactly
10847
+ * the ones carrying a label nobody registered. `to` renames onto an
10848
+ * existing room by MERGING into it, leaving no duplicate label. An empty
10849
+ * `to` throws before anything is written. */
10850
+ renameLocation: method(zod.z.object({
10851
+ from: zod.z.string(),
10852
+ to: zod.z.string()
10853
+ }), zod.z.object({ moved: zod.z.number() }), {
10854
+ kind: "mutation",
10855
+ auth: "admin"
10856
+ }),
10836
10857
  /** Soft-disable / re-enable the device. Drivers consult
10837
10858
  * `BaseDevice.disabled` to gate lifecycle hooks. */
10838
10859
  setDisabled: method(zod.z.object({
@@ -14323,6 +14344,8 @@ var NcSystemEventKindSchema = zod.z.enum([
14323
14344
  "device-offline",
14324
14345
  "device-disabled",
14325
14346
  "device-enabled",
14347
+ "device-battery-low",
14348
+ "device-battery-normal",
14326
14349
  "stream-online",
14327
14350
  "stream-offline",
14328
14351
  "node-online",
@@ -17908,46 +17931,6 @@ var RecentTracksPageSchema = zod.z.object({
17908
17931
  /** Cursor for the next page, or null when this page is the last. */
17909
17932
  nextCursor: zod.z.string().nullable()
17910
17933
  });
17911
- var LIST_GROUPS_DEFAULT_LIMIT = 40;
17912
- var LIST_GROUPS_MAX_LIMIT = 100;
17913
- var AnalyticsGroupRecordSchema = zod.z.object({
17914
- id: zod.z.string(),
17915
- deviceId: zod.z.number().int(),
17916
- openedAt: zod.z.number().int(),
17917
- closedAt: zod.z.number().int(),
17918
- timestamp: zod.z.number().int(),
17919
- memberCount: zod.z.number().int(),
17920
- memberTrackIds: zod.z.array(zod.z.string()).readonly(),
17921
- className: zod.z.string(),
17922
- classes: zod.z.array(zod.z.string()).readonly(),
17923
- /** Relative event-media path, or null when the group has no picture yet. */
17924
- mediaUrl: zod.z.string().nullable(),
17925
- singleton: zod.z.boolean()
17926
- });
17927
- var AnalyticsGroupMemberSchema = zod.z.object({
17928
- trackId: zod.z.string(),
17929
- deviceId: zod.z.number().int(),
17930
- className: zod.z.string(),
17931
- firstSeen: zod.z.number().int(),
17932
- lastSeen: zod.z.number().int(),
17933
- mediaUrl: zod.z.string().nullable()
17934
- });
17935
- var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: zod.z.array(AnalyticsGroupMemberSchema).readonly() });
17936
- var ListGroupsQueryInput = zod.z.object({
17937
- /** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
17938
- deviceIds: zod.z.array(zod.z.number()),
17939
- /** Window lower bound on `closedAt` (inclusive). */
17940
- since: zod.z.number().optional(),
17941
- /** Window upper bound on `openedAt` (inclusive). */
17942
- until: zod.z.number().optional(),
17943
- limit: zod.z.number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
17944
- /** Opaque continuation cursor from a previous page's `nextCursor`. */
17945
- cursor: zod.z.string().optional()
17946
- });
17947
- var ListGroupsPageSchema = zod.z.object({
17948
- groups: zod.z.array(AnalyticsGroupRecordSchema).readonly(),
17949
- nextCursor: zod.z.string().nullable()
17950
- });
17951
17934
  var KEY_EVENTS_DEFAULT_LIMIT = 50;
17952
17935
  var KEY_EVENTS_MAX_LIMIT = 200;
17953
17936
  var KeyEventQueryInput = zod.z.object({
@@ -18051,9 +18034,7 @@ var TrackCascadeCountsSchema = zod.z.object({
18051
18034
  /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
18052
18035
  plates: zod.z.number().int(),
18053
18036
  /** Per-track CLIP search vectors removed (best-effort). */
18054
- embeddings: zod.z.number().int(),
18055
- /** Group membership + group rows removed with their last member (best-effort). */
18056
- groups: zod.z.number().int()
18037
+ embeddings: zod.z.number().int()
18057
18038
  });
18058
18039
  /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
18059
18040
  var DiskReconcileCountsSchema = zod.z.object({
@@ -18329,16 +18310,6 @@ var pipelineAnalyticsCapability = {
18329
18310
  * are not included (same contract as `listTracks`).
18330
18311
  */
18331
18312
  listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
18332
- /**
18333
- * Batched co-moving group listing — the Groups feed. Same merge/cursor
18334
- * contract as {@link listRecentTracks}. A group is a sealed partition of
18335
- * one session; `getGroup` is the detail with members.
18336
- */
18337
- listGroups: method(ListGroupsQueryInput, ListGroupsPageSchema),
18338
- getGroup: method(zod.z.object({
18339
- deviceId: zod.z.number(),
18340
- groupId: zod.z.string().min(1)
18341
- }), AnalyticsGroupDetailSchema.nullable()),
18342
18313
  clearTracks: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.void(), {
18343
18314
  kind: "mutation",
18344
18315
  auth: "admin"
@@ -35636,6 +35607,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
35636
35607
  addonId: null,
35637
35608
  access: "delete"
35638
35609
  },
35610
+ "deviceManager.renameLocation": {
35611
+ capName: "device-manager",
35612
+ capScope: "system",
35613
+ addonId: null,
35614
+ access: "create"
35615
+ },
35639
35616
  "deviceManager.runDeviceAction": {
35640
35617
  capName: "device-manager",
35641
35618
  capScope: "system",
@@ -37328,12 +37305,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
37328
37305
  addonId: null,
37329
37306
  access: "view"
37330
37307
  },
37331
- "pipelineAnalytics.getGroup": {
37332
- capName: "pipeline-analytics",
37333
- capScope: "device",
37334
- addonId: null,
37335
- access: "view"
37336
- },
37337
37308
  "pipelineAnalytics.getKeyEvents": {
37338
37309
  capName: "pipeline-analytics",
37339
37310
  capScope: "device",
@@ -37436,12 +37407,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
37436
37407
  addonId: null,
37437
37408
  access: "view"
37438
37409
  },
37439
- "pipelineAnalytics.listGroups": {
37440
- capName: "pipeline-analytics",
37441
- capScope: "device",
37442
- addonId: null,
37443
- access: "view"
37444
- },
37445
37410
  "pipelineAnalytics.listOpsLog": {
37446
37411
  capName: "pipeline-analytics",
37447
37412
  capScope: "device",
@@ -41064,11 +41029,6 @@ Object.freeze({
41064
41029
  form: "single",
41065
41030
  optional: true
41066
41031
  }],
41067
- "pipelineAnalytics.getGroup": [{
41068
- name: "deviceId",
41069
- form: "single",
41070
- optional: false
41071
- }],
41072
41032
  "pipelineAnalytics.getKeyEvents": [{
41073
41033
  name: "deviceId",
41074
41034
  form: "single",
@@ -41134,11 +41094,6 @@ Object.freeze({
41134
41094
  form: "single",
41135
41095
  optional: false
41136
41096
  }],
41137
- "pipelineAnalytics.listGroups": [{
41138
- name: "deviceIds",
41139
- form: "array",
41140
- optional: false
41141
- }],
41142
41097
  "pipelineAnalytics.listOpsLog": [{
41143
41098
  name: "deviceId",
41144
41099
  form: "single",
@@ -10833,6 +10833,27 @@ var deviceManagerCapability = {
10833
10833
  kind: "mutation",
10834
10834
  auth: "admin"
10835
10835
  }),
10836
+ /** Rename a room: replace the label in the registry IN PLACE and move
10837
+ * every device that carried it, as ONE server operation.
10838
+ *
10839
+ * The admin UI used to do this as `addLocation(to)` → N ×
10840
+ * `setLocation(device, to)` → `removeLocation(from)` from the browser.
10841
+ * Nothing bound those three together, so a closed tab left the fleet
10842
+ * split across two rooms — one of which the operator believed was gone.
10843
+ *
10844
+ * `from` is matched the way the registry matches everywhere else
10845
+ * (trimmed, case-insensitive) and need NOT be registered: the registry is
10846
+ * a suggestion list, and the devices that most need a rename are exactly
10847
+ * the ones carrying a label nobody registered. `to` renames onto an
10848
+ * existing room by MERGING into it, leaving no duplicate label. An empty
10849
+ * `to` throws before anything is written. */
10850
+ renameLocation: method(z.object({
10851
+ from: z.string(),
10852
+ to: z.string()
10853
+ }), z.object({ moved: z.number() }), {
10854
+ kind: "mutation",
10855
+ auth: "admin"
10856
+ }),
10836
10857
  /** Soft-disable / re-enable the device. Drivers consult
10837
10858
  * `BaseDevice.disabled` to gate lifecycle hooks. */
10838
10859
  setDisabled: method(z.object({
@@ -14323,6 +14344,8 @@ var NcSystemEventKindSchema = z.enum([
14323
14344
  "device-offline",
14324
14345
  "device-disabled",
14325
14346
  "device-enabled",
14347
+ "device-battery-low",
14348
+ "device-battery-normal",
14326
14349
  "stream-online",
14327
14350
  "stream-offline",
14328
14351
  "node-online",
@@ -17908,46 +17931,6 @@ var RecentTracksPageSchema = z.object({
17908
17931
  /** Cursor for the next page, or null when this page is the last. */
17909
17932
  nextCursor: z.string().nullable()
17910
17933
  });
17911
- var LIST_GROUPS_DEFAULT_LIMIT = 40;
17912
- var LIST_GROUPS_MAX_LIMIT = 100;
17913
- var AnalyticsGroupRecordSchema = z.object({
17914
- id: z.string(),
17915
- deviceId: z.number().int(),
17916
- openedAt: z.number().int(),
17917
- closedAt: z.number().int(),
17918
- timestamp: z.number().int(),
17919
- memberCount: z.number().int(),
17920
- memberTrackIds: z.array(z.string()).readonly(),
17921
- className: z.string(),
17922
- classes: z.array(z.string()).readonly(),
17923
- /** Relative event-media path, or null when the group has no picture yet. */
17924
- mediaUrl: z.string().nullable(),
17925
- singleton: z.boolean()
17926
- });
17927
- var AnalyticsGroupMemberSchema = z.object({
17928
- trackId: z.string(),
17929
- deviceId: z.number().int(),
17930
- className: z.string(),
17931
- firstSeen: z.number().int(),
17932
- lastSeen: z.number().int(),
17933
- mediaUrl: z.string().nullable()
17934
- });
17935
- var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: z.array(AnalyticsGroupMemberSchema).readonly() });
17936
- var ListGroupsQueryInput = z.object({
17937
- /** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
17938
- deviceIds: z.array(z.number()),
17939
- /** Window lower bound on `closedAt` (inclusive). */
17940
- since: z.number().optional(),
17941
- /** Window upper bound on `openedAt` (inclusive). */
17942
- until: z.number().optional(),
17943
- limit: z.number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
17944
- /** Opaque continuation cursor from a previous page's `nextCursor`. */
17945
- cursor: z.string().optional()
17946
- });
17947
- var ListGroupsPageSchema = z.object({
17948
- groups: z.array(AnalyticsGroupRecordSchema).readonly(),
17949
- nextCursor: z.string().nullable()
17950
- });
17951
17934
  var KEY_EVENTS_DEFAULT_LIMIT = 50;
17952
17935
  var KEY_EVENTS_MAX_LIMIT = 200;
17953
17936
  var KeyEventQueryInput = z.object({
@@ -18051,9 +18034,7 @@ var TrackCascadeCountsSchema = z.object({
18051
18034
  /** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
18052
18035
  plates: z.number().int(),
18053
18036
  /** Per-track CLIP search vectors removed (best-effort). */
18054
- embeddings: z.number().int(),
18055
- /** Group membership + group rows removed with their last member (best-effort). */
18056
- groups: z.number().int()
18037
+ embeddings: z.number().int()
18057
18038
  });
18058
18039
  /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
18059
18040
  var DiskReconcileCountsSchema = z.object({
@@ -18329,16 +18310,6 @@ var pipelineAnalyticsCapability = {
18329
18310
  * are not included (same contract as `listTracks`).
18330
18311
  */
18331
18312
  listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
18332
- /**
18333
- * Batched co-moving group listing — the Groups feed. Same merge/cursor
18334
- * contract as {@link listRecentTracks}. A group is a sealed partition of
18335
- * one session; `getGroup` is the detail with members.
18336
- */
18337
- listGroups: method(ListGroupsQueryInput, ListGroupsPageSchema),
18338
- getGroup: method(z.object({
18339
- deviceId: z.number(),
18340
- groupId: z.string().min(1)
18341
- }), AnalyticsGroupDetailSchema.nullable()),
18342
18313
  clearTracks: method(z.object({ deviceId: z.number() }), z.void(), {
18343
18314
  kind: "mutation",
18344
18315
  auth: "admin"
@@ -35636,6 +35607,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
35636
35607
  addonId: null,
35637
35608
  access: "delete"
35638
35609
  },
35610
+ "deviceManager.renameLocation": {
35611
+ capName: "device-manager",
35612
+ capScope: "system",
35613
+ addonId: null,
35614
+ access: "create"
35615
+ },
35639
35616
  "deviceManager.runDeviceAction": {
35640
35617
  capName: "device-manager",
35641
35618
  capScope: "system",
@@ -37328,12 +37305,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
37328
37305
  addonId: null,
37329
37306
  access: "view"
37330
37307
  },
37331
- "pipelineAnalytics.getGroup": {
37332
- capName: "pipeline-analytics",
37333
- capScope: "device",
37334
- addonId: null,
37335
- access: "view"
37336
- },
37337
37308
  "pipelineAnalytics.getKeyEvents": {
37338
37309
  capName: "pipeline-analytics",
37339
37310
  capScope: "device",
@@ -37436,12 +37407,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
37436
37407
  addonId: null,
37437
37408
  access: "view"
37438
37409
  },
37439
- "pipelineAnalytics.listGroups": {
37440
- capName: "pipeline-analytics",
37441
- capScope: "device",
37442
- addonId: null,
37443
- access: "view"
37444
- },
37445
37410
  "pipelineAnalytics.listOpsLog": {
37446
37411
  capName: "pipeline-analytics",
37447
37412
  capScope: "device",
@@ -41064,11 +41029,6 @@ Object.freeze({
41064
41029
  form: "single",
41065
41030
  optional: true
41066
41031
  }],
41067
- "pipelineAnalytics.getGroup": [{
41068
- name: "deviceId",
41069
- form: "single",
41070
- optional: false
41071
- }],
41072
41032
  "pipelineAnalytics.getKeyEvents": [{
41073
41033
  name: "deviceId",
41074
41034
  form: "single",
@@ -41134,11 +41094,6 @@ Object.freeze({
41134
41094
  form: "single",
41135
41095
  optional: false
41136
41096
  }],
41137
- "pipelineAnalytics.listGroups": [{
41138
- name: "deviceIds",
41139
- form: "array",
41140
- optional: false
41141
- }],
41142
41097
  "pipelineAnalytics.listOpsLog": [{
41143
41098
  name: "deviceId",
41144
41099
  form: "single",
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-CFTKQGym.js");
3
+ const require_dist = require("./dist-D6kBG4fg.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_formatter = require("./formatter-DqAKDlvN.js");
@@ -26,7 +26,7 @@ require("./builtins/system-config/index.js");
26
26
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
27
27
  const require_file_data_plane = require("./file-data-plane-DO8KbxCe.js");
28
28
  const require_tls$1 = require("./tls-BxQlomxd.js");
29
- const require_manifest_system_deps = require("./manifest-system-deps-BIxY1Y5e.js");
29
+ const require_manifest_system_deps = require("./manifest-system-deps-BjMNGEpl.js");
30
30
  const require_resource_monitor = require("./resource-monitor-CdnzxBLP.js");
31
31
  const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
32
32
  let zod = require("zod");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { $ as isCollectionArrayMethod, $t as parseJsonObject, Bt as ReadinessRegistry, E as addonSettingsCapability, Ft as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Gt as asString$1, It as DEVICE_STATUS_METHOD, Kt as createEvent, Mt as errMsg$1, Pt as DATAPLANE_SECRET_HEADER$1, Q as isArrayOutputSchema, Ut as asJsonObject$1, Vt as ReadinessTimeoutError, Wt as asNumber, Y as extractNestedAddonId, Yt as expandCapMethods, an as EventCategory$1, at as lifecycleJobSchema, bt as scopesAllowAddon, ct as logLevelAtMost, en as parseJsonUnknown$1, et as isObjectInput, f as LOG_LEVEL_RANK, ft as objectInputDeclaresAddonId, h as RUNTIME_DEFAULTS, ht as procedureAuthKey, it as kebabToCamel, lt as looseSchema, nn as resolveCapMount, p as METHOD_ACCESS_MAP, qt as emitDownForOwnedCaps, rn as scopeKey, rt as isVoidInput, t as ALL_CAPABILITY_DEFINITIONS, tn as readinessKey, vt as resolveMethodAuth, xt as scopesAllowDeviceCap } from "./dist-Dw9cm1NS.mjs";
2
+ import { $ as isCollectionArrayMethod, $t as parseJsonObject, Bt as ReadinessRegistry, E as addonSettingsCapability, Ft as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Gt as asString$1, It as DEVICE_STATUS_METHOD, Kt as createEvent, Mt as errMsg$1, Pt as DATAPLANE_SECRET_HEADER$1, Q as isArrayOutputSchema, Ut as asJsonObject$1, Vt as ReadinessTimeoutError, Wt as asNumber, Y as extractNestedAddonId, Yt as expandCapMethods, an as EventCategory$1, at as lifecycleJobSchema, bt as scopesAllowAddon, ct as logLevelAtMost, en as parseJsonUnknown$1, et as isObjectInput, f as LOG_LEVEL_RANK, ft as objectInputDeclaresAddonId, h as RUNTIME_DEFAULTS, ht as procedureAuthKey, it as kebabToCamel, lt as looseSchema, nn as resolveCapMount, p as METHOD_ACCESS_MAP, qt as emitDownForOwnedCaps, rn as scopeKey, rt as isVoidInput, t as ALL_CAPABILITY_DEFINITIONS, tn as readinessKey, vt as resolveMethodAuth, xt as scopesAllowDeviceCap } from "./dist-digPByP6.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
@@ -25,7 +25,7 @@ import "./builtins/system-config/index.mjs";
25
25
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
26
26
  import { a as parseTokenizedUrl, c as collectModelFiles, d as downloadModel, f as ensureModel, h as isModelDownloaded, i as parseRangeHeader, l as deleteModelFromDisk, m as getModelFilePath, n as contentTypeFor, o as resolveFilePath, p as fetchJson, r as createAuthenticatedFileServer, s as ModelDownloadService, t as createFileDataPlaneHandler, u as downloadFile } from "./file-data-plane-BhKdxJgf.mjs";
27
27
  import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-DOTmtLCW.mjs";
28
- import { $ as FrameDecoder, $t as DECISIVE_HEAP_SPACES, A as createUdsEventBus, At as HEAP_WATCH_INTERVAL_MS, B as CapRouteError, Bt as buildHeapSample, C as ipcParentLink, Cn as diffEventPlane, Ct as resolveAddonClass, D as createHubCapForwardService, Dt as HEAP_RECLAIM_MIN_INTERVAL_MS, E as HUB_CAP_FWD_SERVICE, Et as createAddonDataPlaneFacility, F as LocalChildRegistry, Ft as RSS_BUDGET_REANNOUNCE_MIN_MS, G as PARENT_ROUTED_PROVIDER_ADDON_ID, Gt as hubMainRssBudget, H as callWithServiceDiscovery, Ht as createLoopDelayMeter, I as UDS_NO_ROUTE_PREFIX, It as RSS_BUDGET_RELEASE_RATIO, J as createLocalTransport, Jt as reclaimIntervalMs, K as __resetCapUsageRegistryForTests, Kt as nextRssBudgetState, L as AGENT_CAP_FWD_ACTION, Lt as RUNNER_HEAP_WATCH_INTERVAL_MS, M as createUdsLogger, Mt as HUB_MAIN_HEAP_WATCH_LABEL, N as createUdsLoggerWithControl, Nt as HUB_MAIN_RSS_BUDGET_MB, O as createParentUnownedCallHandler, Ot as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, P as LocalChildClient, Pt as HUB_RSS_BUDGET_ENV, Q as localEndpointPath, Qt as strandedMb, R as AGENT_CAP_FWD_SERVICE, Rt as RUNNER_RSS_BUDGET_ENV, S as buildLinkChain, Sn as createEventPlaneReader, St as installManifestNativeDeps, T as HUB_CAP_FWD_ACTION, Tt as runNpm, U as readMoleculerFanoutMode, Ut as createV8Reclaimer, V as classifyCapRoute, Vt as createDeferredHeapWatchSink, W as CapUsageRegistry, Wt as describeRss, X as UdsLocalTransportServer, Xt as startHeapWatch, Y as UdsLocalTransportClient, Yt as shouldReclaim, Z as SocketChannel, Zt as startRunnerHeapWatch, _ as AddonDepsManager, _n as sampleSocketDirection, _t as serializeTypedArrays, a as createUdsAddonContext, an as heapSpaceField, b as brokerCallForCap, bn as EVENT_PLANE_TOP_N, bt as CapabilityUnavailableError, c as getOrInitReadinessRegistryForClient, cn as EMPTY_SOCKET_PLANE_BASELINE, ct as createAddonService, d as clusterEventTopic, dn as createSocketPlaneReader, dt as capActionName, en as HEAP_SPACE_REPORT_MIN_MB, et as encodeFrame, f as getBrokerEventBus, fn as diffSocketPlane, ft as capActionSuffix, g as subscribePassthrough, gn as recordSocketFrame, gt as deserializeTypedArrays, h as setNodeEventInterest, hn as createSocketDirectionCounters, ht as parseCapAction, i as createAddonContext, in as heapSnapshotAuthorised, j as udsChildLogToWorkerEntry, jt as HEAP_WATCH_WARN_RATIO, k as createUdsEventBridge, kt as HEAP_RECLAIM_TRIGGER_MB, l as setHubConnected, ln as SOCKET_PLANE_TOP_N, lt as validateProviderRegistrations, m as registerEventBusService, mn as EMPTY_SOCKET_DIRECTION, mt as capServiceName, n as installManifestPythonDeps, nn as emitHeapDiagnosticReport, nt as buildUdsNativeCapProxy, o as getWorkerDeviceRegistry, on as readHeapSpaces, ot as mountNativeCapService, p as getMoleculerEventStats, pn as formatSocketPlane, pt as capBareAction, q as getCapUsageRegistry, qt as parseRssBudgetMb, r as adaptBrokerToCluster, rn as formatHeapSpaces, rt as createBrokerDeviceManagerApi, s as getOrInitReadinessRegistry, sn as selectReportedSpaces, t as installManifestSystemDeps, tn as RUNNER_HEAP_SNAPSHOT_ENV, tt as buildNativeCapProxy, u as EVENT_TOPIC_PREFIX, un as createSocketPlaneMeter, ut as NATIVE_PROVIDER_SERVICE_INFIX, v as createKernelHwAccel, vn as socketDirectionBytes, vt as DeviceRegistry, w as localProviderLink, wn as formatEventPlane, wt as resolveNpmInvocation, x as brokerTransportLink, xn as createEventPlaneMeter, xt as copyBundledNativeModules, y as resolveHwAccel, yn as socketDirectionMessages, yt as CapabilityHandle, z as CapRouteResolver, zt as ZERO_LOOP_DELAY } from "./manifest-system-deps-DTz_zNQf.mjs";
28
+ import { $ as FrameDecoder, $t as DECISIVE_HEAP_SPACES, A as createUdsEventBus, At as HEAP_WATCH_INTERVAL_MS, B as CapRouteError, Bt as buildHeapSample, C as ipcParentLink, Cn as diffEventPlane, Ct as resolveAddonClass, D as createHubCapForwardService, Dt as HEAP_RECLAIM_MIN_INTERVAL_MS, E as HUB_CAP_FWD_SERVICE, Et as createAddonDataPlaneFacility, F as LocalChildRegistry, Ft as RSS_BUDGET_REANNOUNCE_MIN_MS, G as PARENT_ROUTED_PROVIDER_ADDON_ID, Gt as hubMainRssBudget, H as callWithServiceDiscovery, Ht as createLoopDelayMeter, I as UDS_NO_ROUTE_PREFIX, It as RSS_BUDGET_RELEASE_RATIO, J as createLocalTransport, Jt as reclaimIntervalMs, K as __resetCapUsageRegistryForTests, Kt as nextRssBudgetState, L as AGENT_CAP_FWD_ACTION, Lt as RUNNER_HEAP_WATCH_INTERVAL_MS, M as createUdsLogger, Mt as HUB_MAIN_HEAP_WATCH_LABEL, N as createUdsLoggerWithControl, Nt as HUB_MAIN_RSS_BUDGET_MB, O as createParentUnownedCallHandler, Ot as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, P as LocalChildClient, Pt as HUB_RSS_BUDGET_ENV, Q as localEndpointPath, Qt as strandedMb, R as AGENT_CAP_FWD_SERVICE, Rt as RUNNER_RSS_BUDGET_ENV, S as buildLinkChain, Sn as createEventPlaneReader, St as installManifestNativeDeps, T as HUB_CAP_FWD_ACTION, Tt as runNpm, U as readMoleculerFanoutMode, Ut as createV8Reclaimer, V as classifyCapRoute, Vt as createDeferredHeapWatchSink, W as CapUsageRegistry, Wt as describeRss, X as UdsLocalTransportServer, Xt as startHeapWatch, Y as UdsLocalTransportClient, Yt as shouldReclaim, Z as SocketChannel, Zt as startRunnerHeapWatch, _ as AddonDepsManager, _n as sampleSocketDirection, _t as serializeTypedArrays, a as createUdsAddonContext, an as heapSpaceField, b as brokerCallForCap, bn as EVENT_PLANE_TOP_N, bt as CapabilityUnavailableError, c as getOrInitReadinessRegistryForClient, cn as EMPTY_SOCKET_PLANE_BASELINE, ct as createAddonService, d as clusterEventTopic, dn as createSocketPlaneReader, dt as capActionName, en as HEAP_SPACE_REPORT_MIN_MB, et as encodeFrame, f as getBrokerEventBus, fn as diffSocketPlane, ft as capActionSuffix, g as subscribePassthrough, gn as recordSocketFrame, gt as deserializeTypedArrays, h as setNodeEventInterest, hn as createSocketDirectionCounters, ht as parseCapAction, i as createAddonContext, in as heapSnapshotAuthorised, j as udsChildLogToWorkerEntry, jt as HEAP_WATCH_WARN_RATIO, k as createUdsEventBridge, kt as HEAP_RECLAIM_TRIGGER_MB, l as setHubConnected, ln as SOCKET_PLANE_TOP_N, lt as validateProviderRegistrations, m as registerEventBusService, mn as EMPTY_SOCKET_DIRECTION, mt as capServiceName, n as installManifestPythonDeps, nn as emitHeapDiagnosticReport, nt as buildUdsNativeCapProxy, o as getWorkerDeviceRegistry, on as readHeapSpaces, ot as mountNativeCapService, p as getMoleculerEventStats, pn as formatSocketPlane, pt as capBareAction, q as getCapUsageRegistry, qt as parseRssBudgetMb, r as adaptBrokerToCluster, rn as formatHeapSpaces, rt as createBrokerDeviceManagerApi, s as getOrInitReadinessRegistry, sn as selectReportedSpaces, t as installManifestSystemDeps, tn as RUNNER_HEAP_SNAPSHOT_ENV, tt as buildNativeCapProxy, u as EVENT_TOPIC_PREFIX, un as createSocketPlaneMeter, ut as NATIVE_PROVIDER_SERVICE_INFIX, v as createKernelHwAccel, vn as socketDirectionBytes, vt as DeviceRegistry, w as localProviderLink, wn as formatEventPlane, wt as resolveNpmInvocation, x as brokerTransportLink, xn as createEventPlaneMeter, xt as copyBundledNativeModules, y as resolveHwAccel, yn as socketDirectionMessages, yt as CapabilityHandle, z as CapRouteResolver, zt as ZERO_LOOP_DELAY } from "./manifest-system-deps-onn-Eawl.mjs";
29
29
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BWmQ5i-o.mjs";
30
30
  import { t as CustomActionRegistry } from "./custom-action-registry-F__gp_VX.mjs";
31
31
  import { z } from "zod";