@camstack/system 1.1.63 → 1.1.76

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 (47) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  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/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  20. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  21. package/dist/builtins/local-network/local-network.addon.js +1 -1
  22. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  23. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  24. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  25. package/dist/builtins/platform-probe/index.js +1 -1
  26. package/dist/builtins/platform-probe/index.mjs +1 -1
  27. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  28. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  29. package/dist/builtins/snapshot/index.js +1 -1
  30. package/dist/builtins/snapshot/index.mjs +1 -1
  31. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  32. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  33. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  34. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  35. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  36. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  37. package/dist/builtins/system-config/system-config.addon.js +1 -1
  38. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  39. package/dist/builtins/winston-logging/index.js +1 -1
  40. package/dist/builtins/winston-logging/index.mjs +1 -1
  41. package/dist/{dist-lZmvymPa.js → dist-C0Pf5ShP.js} +139 -51
  42. package/dist/{dist-BilBS8T_.mjs → dist-Dycu89sF.mjs} +139 -51
  43. package/dist/index.js +2 -2
  44. package/dist/index.mjs +2 -2
  45. package/dist/{manifest-python-deps-0seVlhMM.js → manifest-python-deps-BRFns0U-.js} +1 -1
  46. package/dist/{manifest-python-deps-Dydd-bKS.mjs → manifest-python-deps-BiM1uDhe.mjs} +1 -1
  47. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-lZmvymPa.js");
3
- const require_manifest_python_deps = require("./manifest-python-deps-0seVlhMM.js");
2
+ const require_dist = require("./dist-C0Pf5ShP.js");
3
+ const require_manifest_python_deps = require("./manifest-python-deps-BRFns0U-.js");
4
4
  const require_custom_action_registry = require("./custom-action-registry-vLYEFTtv.js");
5
5
  let node_fs = require("node:fs");
6
6
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,5 +1,5 @@
1
- import { M as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-BilBS8T_.mjs";
2
- import { F as createUdsLoggerWithControl, I as LocalChildClient, bt as resolveAddonClass, i as createUdsAddonContext, it as setWorkerNativeCapsChangeListener, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestPythonDeps, tt as getWorkerNativeCapProvider, vt as installManifestNativeDeps } from "./manifest-python-deps-Dydd-bKS.mjs";
1
+ import { M as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-Dycu89sF.mjs";
2
+ import { F as createUdsLoggerWithControl, I as LocalChildClient, bt as resolveAddonClass, i as createUdsAddonContext, it as setWorkerNativeCapsChangeListener, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestPythonDeps, tt as getWorkerNativeCapProvider, vt as installManifestNativeDeps } from "./manifest-python-deps-BiM1uDhe.mjs";
3
3
  import { t as CustomActionRegistry } from "./custom-action-registry-BEXwC-oo.mjs";
4
4
  import { register } from "node:module";
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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, f as addonPagesCapability, it as errMsg } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, at as BaseAddon, f as addonPagesCapability, it as errMsg } from "../../dist-Dycu89sF.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, it as errMsg, m as addonWidgetsCapability } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, at as BaseAddon, it as errMsg, m as addonWidgetsCapability } from "../../dist-Dycu89sF.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  //#region src/builtins/alerts/alerts.addon.ts
8
8
  var CATEGORY_MAPPINGS = {
9
9
  "addon.crashed": {
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, h as alertsCapability, it as errMsg, n as AlertSchema, vt as createEvent } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, at as BaseAddon, h as alertsCapability, it as errMsg, n as AlertSchema, vt as createEvent } from "../../dist-Dycu89sF.mjs";
2
2
  //#region src/builtins/alerts/alerts.addon.ts
3
3
  var CATEGORY_MAPPINGS = {
4
4
  "addon.crashed": {
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_fs$1 = require_chunk.__toESM(node_fs, 1);
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, v as backupCapability } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, at as BaseAddon, v as backupCapability } from "../../dist-Dycu89sF.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import Kt from "node:fs";
4
4
  import * as path$1 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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
@@ -1,4 +1,4 @@
1
- import { R as logDestinationCapability, at as BaseAddon } from "../../dist-BilBS8T_.mjs";
1
+ import { R as logDestinationCapability, at as BaseAddon } from "../../dist-Dycu89sF.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let _camstack_types_node = require("@camstack/types/node");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { A as getByPath, At as EventCategory, Ct as isDeviceConfigCap, D as evaluateLinkExpression, E as enumerateSchemaFields, H as normalizeUnit, S as deviceStatusCapability, T as enumerateItemArrayFields, W as parseStreamParamsFormPatch, Y as setByPath, a as DeviceStatusSchema, at as BaseAddon, b as deviceManagerCapability, c as STREAM_PROFILE_META, dt as DeviceType, g as applyTransform, i as CAP_NAMES_WITH_STATUS, it as errMsg, kt as sleep, lt as DeviceFeature, mt as WELL_KNOWN_TAB_MAP, rt as validateExpressionSource, t as ALL_CAPABILITY_DEFINITIONS, tt as toExpressionValue, ut as DeviceRole, x as deviceStateCapability, y as buildStreamParamsConfigSchema } from "../../dist-BilBS8T_.mjs";
1
+ import { A as getByPath, At as EventCategory, Ct as isDeviceConfigCap, D as evaluateLinkExpression, E as enumerateSchemaFields, H as normalizeUnit, S as deviceStatusCapability, T as enumerateItemArrayFields, W as parseStreamParamsFormPatch, Y as setByPath, a as DeviceStatusSchema, at as BaseAddon, b as deviceManagerCapability, c as STREAM_PROFILE_META, dt as DeviceType, g as applyTransform, i as CAP_NAMES_WITH_STATUS, it as errMsg, kt as sleep, lt as DeviceFeature, mt as WELL_KNOWN_TAB_MAP, rt as validateExpressionSource, t as ALL_CAPABILITY_DEFINITIONS, tt as toExpressionValue, ut as DeviceRole, x as deviceStateCapability, y as buildStreamParamsConfigSchema } from "../../dist-Dycu89sF.mjs";
2
2
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, C as doorbellCapability, at as BaseAddon, dt as DeviceType, it as errMsg, vt as createEvent } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, C as doorbellCapability, at as BaseAddon, dt as DeviceType, it as errMsg, vt as createEvent } from "../../dist-Dycu89sF.mjs";
2
2
  //#region src/builtins/doorbell/trigger-engine.ts
3
3
  /**
4
4
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { R as logDestinationCapability, at as BaseAddon } from "../../dist-BilBS8T_.mjs";
1
+ import { R as logDestinationCapability, at as BaseAddon } from "../../dist-Dycu89sF.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,4 +1,4 @@
1
- import { _ as authProviderCapability, at as BaseAddon, d as UserRecordSchema, l as ScopedTokenSchema, nt as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-BilBS8T_.mjs";
1
+ import { _ as authProviderCapability, at as BaseAddon, d as UserRecordSchema, l as ScopedTokenSchema, nt as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-Dycu89sF.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-lZmvymPa.js");
3
+ const require_dist = require("../../dist-C0Pf5ShP.js");
4
4
  let node_os = require("node:os");
5
5
  node_os = require_chunk.__toESM(node_os);
6
6
  //#region src/builtins/local-network/local-network.addon.ts
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, L as localNetworkCapability, at as BaseAddon } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, L as localNetworkCapability, at as BaseAddon } from "../../dist-Dycu89sF.mjs";
2
2
  import * as os from "node:os";
3
3
  //#region src/builtins/local-network/local-network.addon.ts
4
4
  /**
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, B as metricsProviderCapability, at as BaseAddon, vt as createEvent } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, B as metricsProviderCapability, at as BaseAddon, vt as createEvent } from "../../dist-Dycu89sF.mjs";
2
2
  import * as fs from "node:fs";
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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, G as platformProbeCapability, J as scoreRuntimes, at as BaseAddon, bt as emitReadiness, it as errMsg, w as enumerateInferenceDevices } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, G as platformProbeCapability, J as scoreRuntimes, at as BaseAddon, bt as emitReadiness, it as errMsg, w as enumerateInferenceDevices } from "../../dist-Dycu89sF.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } 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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.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 { At as EventCategory, at as BaseAddon } from "../../dist-BilBS8T_.mjs";
1
+ import { At as EventCategory, at as BaseAddon } from "../../dist-Dycu89sF.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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/builtins/snapshot/snapshot-coalescing.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { V as nodePin, Z as snapshotCapability, at as BaseAddon, dt as DeviceType, et as streamQualityLabel, it as errMsg, lt as DeviceFeature } from "../../dist-BilBS8T_.mjs";
1
+ import { V as nodePin, Z as snapshotCapability, at as BaseAddon, dt as DeviceType, et as streamQualityLabel, it as errMsg, lt as DeviceFeature } from "../../dist-Dycu89sF.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  //#region src/builtins/snapshot/snapshot-coalescing.ts
4
4
  /**
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $ as storageProviderCapability, at as BaseAddon, k as filesystemBrowseCapability } from "../../dist-BilBS8T_.mjs";
1
+ import { $ as storageProviderCapability, at as BaseAddon, k as filesystemBrowseCapability } from "../../dist-Dycu89sF.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import * as path$1 from "node:path";
4
4
  import { basename, dirname, join, resolve, sep } from "node:path";
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let better_sqlite3 = require("better-sqlite3");
9
9
  better_sqlite3 = require_chunk.__toESM(better_sqlite3);
@@ -1,4 +1,4 @@
1
- import { Tt as parseJsonUnknown, X as settingsStoreCapability, at as BaseAddon, ht as asJsonObject, it as errMsg, s as RUNTIME_DEFAULTS } from "../../dist-BilBS8T_.mjs";
1
+ import { Tt as parseJsonUnknown, X as settingsStoreCapability, at as BaseAddon, ht as asJsonObject, it as errMsg, s as RUNTIME_DEFAULTS } from "../../dist-Dycu89sF.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import Database from "better-sqlite3";
4
4
  //#region src/builtins/sqlite-storage/sqlite-settings-backend.ts
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.js");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_chunk.__toESM(node_path);
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { Q as storageCapability, at as BaseAddon, u as StorageLocationTypeSchema, wt as parseJsonObject } from "../../dist-BilBS8T_.mjs";
1
+ import { Q as storageCapability, at as BaseAddon, u as StorageLocationTypeSchema, wt as parseJsonObject } from "../../dist-Dycu89sF.mjs";
2
2
  import * as path$1 from "node:path";
3
3
  import * as fs from "node:fs/promises";
4
4
  import { buildStorageLocationRegistry } from "@camstack/system";
@@ -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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.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 { St as hydrateSchema, at as BaseAddon, it as errMsg } from "../../dist-BilBS8T_.mjs";
1
+ import { St as hydrateSchema, at as BaseAddon, it as errMsg } from "../../dist-Dycu89sF.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-lZmvymPa.js");
6
+ const require_dist = require("../../dist-C0Pf5ShP.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 { R as logDestinationCapability, at as BaseAddon } from "../../dist-BilBS8T_.mjs";
1
+ import { R as logDestinationCapability, at as BaseAddon } from "../../dist-Dycu89sF.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";
@@ -8594,20 +8594,6 @@ var pipelineExecutorCapability = {
8594
8594
  getSelectedEngine: method(zod.z.void(), PipelineEngineChoiceSchema),
8595
8595
  getDefaultSteps: method(PipelineEngineChoiceSchema, zod.z.array(PipelineDefaultStepSchema)),
8596
8596
  /**
8597
- * Re-run the platform probe for the inference engine and write the
8598
- * detected runtime / backend / device back into the addon's own
8599
- * global settings store. Returns the engine that was picked so the
8600
- * UI can confirm without a second round-trip. Triggers the standard
8601
- * `requiresRestart` auto-restart flow because all three fields are
8602
- * marked restart-required. Replaces the legacy per-agent
8603
- * `pipeline-orchestrator.reprobeAgentHwAccel` surface for the
8604
- * engine dimension — each addon now owns its own probe.
8605
- */
8606
- reprobeEngine: method(zod.z.void(), PipelineEngineChoiceSchema, {
8607
- kind: "mutation",
8608
- auth: "admin"
8609
- }),
8610
- /**
8611
8597
  * Per-node detection-engine provisioning snapshot. Returns the live
8612
8598
  * state of the lazy runtime-provisioning machine on `nodeId`
8613
8599
  * (idle / installing / verifying / ready / failed). The UI pairs this
@@ -9271,6 +9257,19 @@ var RunnerLocalLoadSchema = zod.z.object({
9271
9257
  avgInferenceTimeMs: zod.z.number(),
9272
9258
  /** Total queue depth across motion + detection queues. */
9273
9259
  queueDepthTotal: zod.z.number(),
9260
+ /**
9261
+ * Per-inference-device live load (multi-device C4). One entry per deviceKey
9262
+ * this runner currently has attached cameras on, so the orchestrator's second
9263
+ * `balance()` pass (over a node's devices) weights on real per-pool session
9264
+ * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
9265
+ * per device is 0 until the pool backlog gets a public accessor (follow-up).
9266
+ */
9267
+ devices: zod.z.array(zod.z.object({
9268
+ deviceKey: zod.z.string(),
9269
+ backend: zod.z.string(),
9270
+ attachedCameras: zod.z.number(),
9271
+ queueDepthTotal: zod.z.number()
9272
+ })).default([]),
9274
9273
  /** Hardware capability flags reported by this node. */
9275
9274
  hardware: zod.z.object({
9276
9275
  hasGpu: zod.z.boolean(),
@@ -16925,13 +16924,11 @@ var PipelineTemplateSchema = zod.z.object({
16925
16924
  createdAt: zod.z.string(),
16926
16925
  updatedAt: zod.z.string()
16927
16926
  });
16928
- var AgentAddonConfigSchema = zod.z.object({
16929
- enabled: zod.z.boolean(),
16927
+ var DeviceStepConfigSchema = zod.z.object({
16930
16928
  modelId: zod.z.string().optional(),
16931
- settings: zod.z.record(zod.z.string(), zod.z.unknown()).readonly()
16929
+ settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
16932
16930
  });
16933
16931
  var AgentPipelineSettingsSchema = zod.z.object({
16934
- addonDefaults: zod.z.record(zod.z.string(), AgentAddonConfigSchema).readonly(),
16935
16932
  maxCameras: zod.z.number().int().nonnegative().nullable().default(null),
16936
16933
  /** Per-node detection weight (relative share for the quota balancer). */
16937
16934
  detectWeight: zod.z.number().positive().optional(),
@@ -16958,13 +16955,18 @@ var AgentPipelineSettingsSchema = zod.z.object({
16958
16955
  reachableHost: zod.z.string().optional(),
16959
16956
  /**
16960
16957
  * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
16961
- * weight}. Absent / all-disabled ⇒ the node's single default accelerator
16962
- * (safe default); two+ enabled ⇒ the dispatcher balances detection sessions
16963
- * across them so they run CONCURRENTLY.
16958
+ * weight, steps}. Absent / all-disabled ⇒ the node's single default
16959
+ * accelerator (safe default); two+ enabled ⇒ the dispatcher balances
16960
+ * detection sessions across them so they run CONCURRENTLY. `steps` is the
16961
+ * per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
16962
+ * the default model/settings for every camera landing on that accelerator;
16963
+ * a stepId absent ⇒ the step uses that device's format default.
16964
16964
  */
16965
16965
  inferenceDevices: zod.z.record(zod.z.string(), zod.z.object({
16966
16966
  enabled: zod.z.boolean(),
16967
- weight: zod.z.number().positive().optional()
16967
+ weight: zod.z.number().positive().optional(),
16968
+ maxSessions: zod.z.number().int().positive().optional(),
16969
+ steps: zod.z.record(zod.z.string(), DeviceStepConfigSchema).optional()
16968
16970
  })).optional()
16969
16971
  });
16970
16972
  var CameraPipelineForAgentSchema = zod.z.object({
@@ -16975,14 +16977,13 @@ var CameraPipelineForAgentSchema = zod.z.object({
16975
16977
  }).nullable()
16976
16978
  });
16977
16979
  var CameraStepOverridePatchSchema = zod.z.object({
16978
- enabled: zod.z.boolean().optional(),
16979
16980
  modelId: zod.z.string().optional(),
16980
16981
  settings: zod.z.record(zod.z.string(), zod.z.unknown()).readonly().optional()
16981
16982
  });
16982
16983
  var CameraPipelineSettingsSchema = zod.z.object({
16983
16984
  pinnedAgentNodeId: zod.z.string().optional(),
16984
16985
  stepToggles: zod.z.record(zod.z.string(), zod.z.boolean()).optional(),
16985
- stepOverridesByAgent: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), CameraStepOverridePatchSchema)).optional(),
16986
+ stepOverridesByDevice: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), CameraStepOverridePatchSchema))).optional(),
16986
16987
  pipelineByAgent: zod.z.record(zod.z.string(), CameraPipelineForAgentSchema).optional()
16987
16988
  });
16988
16989
  /**
@@ -17204,6 +17205,44 @@ var CameraStatusSchema = zod.z.object({
17204
17205
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
17205
17206
  fetchedAt: zod.z.number()
17206
17207
  });
17208
+ var NodeInferenceDeviceSchema = zod.z.object({
17209
+ /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
17210
+ key: zod.z.string(),
17211
+ backend: zod.z.string(),
17212
+ device: zod.z.string(),
17213
+ format: zod.z.enum(MODEL_FORMATS),
17214
+ /** Whether the node's live probe reports the device as usable right now. */
17215
+ available: zod.z.boolean(),
17216
+ /**
17217
+ * Whether this device participates in dispatch. AUTO default (spec C2):
17218
+ * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
17219
+ * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
17220
+ * not a balanced target). An explicit stored value always wins; a stored-only
17221
+ * (unavailable) key keeps its stored value.
17222
+ */
17223
+ enabled: zod.z.boolean(),
17224
+ /** Relative balancer weight for the enabled device (default 1). */
17225
+ weight: zod.z.number(),
17226
+ /** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
17227
+ maxSessions: zod.z.number().nullable(),
17228
+ /** Object-detection model the executor defaults to for this deviceKey. */
17229
+ defaultModelId: zod.z.string(),
17230
+ /**
17231
+ * Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
17232
+ * `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
17233
+ * Absent/empty ⇒ no base (every step uses its device format default). The
17234
+ * UI cross-references `pipelineExecutor.getSchema` for the models actually
17235
+ * available per format; this is the stored selection that becomes the
17236
+ * default for EVERY camera landing on this accelerator.
17237
+ */
17238
+ steps: zod.z.record(zod.z.string(), DeviceStepConfigSchema).optional()
17239
+ });
17240
+ var NodeInferenceDevicesSchema = zod.z.object({
17241
+ nodeId: zod.z.string(),
17242
+ /** False when the node's platform-probe was unreachable (no live device set). */
17243
+ reachable: zod.z.boolean(),
17244
+ devices: zod.z.array(NodeInferenceDeviceSchema).readonly()
17245
+ });
17207
17246
  /**
17208
17247
  * Pipeline Orchestrator capability — global load balancer + camera dispatcher.
17209
17248
  *
@@ -17253,6 +17292,34 @@ var pipelineOrchestratorCapability = {
17253
17292
  auth: "admin"
17254
17293
  }),
17255
17294
  /**
17295
+ * Pin a camera's detection to a specific INFERENCE DEVICE (accelerator)
17296
+ * within its node — a SOFT L1 device affinity honoured by the per-session
17297
+ * device `balance()` pass (sibling of the node-level `pipelineNodeId` pin;
17298
+ * persisted as `pipelineDeviceKey` in the device store, read by
17299
+ * `readPipelineDevicePin`). `deviceKey` is a concrete key
17300
+ * (`openvino:npu` / `edgetpu:usb` / `cpu`), or the `'auto'` sentinel /
17301
+ * empty string to CLEAR the pin and let the balancer pick the device.
17302
+ *
17303
+ * Applies promptly: the device is chosen per-session at dispatch, so any
17304
+ * running detection session is closed and re-dispatched onto the new pin
17305
+ * (the camera stays on the SAME node — a device pin never moves the camera).
17306
+ * Cameras with no active session pick it up on their next dispatch.
17307
+ */
17308
+ setPipelineDevicePin: method(zod.z.object({
17309
+ deviceId: zod.z.number(),
17310
+ deviceKey: zod.z.string()
17311
+ }), zod.z.object({ success: zod.z.literal(true) }), {
17312
+ kind: "mutation",
17313
+ auth: "admin"
17314
+ }),
17315
+ /**
17316
+ * Read a camera's persisted inference-device pin (`pipelineDeviceKey`).
17317
+ * Returns the concrete device key, or `null` when unpinned (auto). Lets the
17318
+ * UI show the current pin alongside the node pin (parity with the node-pin
17319
+ * value carried on the assignment record).
17320
+ */
17321
+ getPipelineDevicePin: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.object({ deviceKey: zod.z.string().nullable() })),
17322
+ /**
17256
17323
  * Trigger a full rebalance pass. Iterates over all assigned cameras,
17257
17324
  * recomputes the optimal agent for each one based on current load +
17258
17325
  * hardware affinity, and migrates cameras whose current agent is no
@@ -17337,14 +17404,6 @@ var pipelineOrchestratorCapability = {
17337
17404
  nodeId: zod.z.string(),
17338
17405
  settings: AgentPipelineSettingsSchema
17339
17406
  })).readonly()),
17340
- /** Bulk-replace ALL addon configs on one agent. Used by the agent-level PipelineEditor which emits the full map per edit. Merges on top of existing entries — omitted addonIds are left alone. */
17341
- setAgentAddonDefaults: method(zod.z.object({
17342
- agentNodeId: zod.z.string(),
17343
- defaults: zod.z.record(zod.z.string(), AgentAddonConfigSchema)
17344
- }), zod.z.object({ success: zod.z.literal(true) }), {
17345
- kind: "mutation",
17346
- auth: "admin"
17347
- }),
17348
17407
  /**
17349
17408
  * Drop a single agent's persisted settings. Used by the cluster
17350
17409
  * "Offline agents" panel to evict stale entries left behind when an
@@ -17437,21 +17496,40 @@ var pipelineOrchestratorCapability = {
17437
17496
  * The map REPLACES the node's stored `inferenceDevices` wholesale (pass the
17438
17497
  * complete desired set; an empty map clears the opt-in → the node reverts to
17439
17498
  * its single DEFAULT accelerator). `weight` is optional and defaults to 1.
17499
+ * `models` is the optional per-device model override (`stepId → modelId`,
17500
+ * C7.2/C7.4) — a stepId absent ⇒ the step uses that device's default model.
17440
17501
  * Creates the node's settings entry if absent. Changes take effect on the
17441
17502
  * next dispatch/rebalance cycle — the dispatcher reads the enabled set via
17442
- * `PipelineSettingsStore.buildNodeInferenceDevices` when placing sessions.
17503
+ * `PipelineSettingsStore.buildNodeInferenceDevices` when placing sessions
17504
+ * and the per-(node,device) base provisioning via
17505
+ * `buildNodeInferenceDeviceSteps`.
17443
17506
  */
17444
17507
  setAgentInferenceDevices: method(zod.z.object({
17445
17508
  agentNodeId: zod.z.string(),
17446
17509
  inferenceDevices: zod.z.record(zod.z.string(), zod.z.object({
17447
17510
  enabled: zod.z.boolean(),
17448
- weight: zod.z.number().positive().optional()
17511
+ weight: zod.z.number().positive().optional(),
17512
+ maxSessions: zod.z.number().int().positive().optional(),
17513
+ steps: zod.z.record(zod.z.string(), DeviceStepConfigSchema).optional()
17449
17514
  }))
17450
17515
  }), zod.z.object({ success: zod.z.literal(true) }), {
17451
17516
  kind: "mutation",
17452
17517
  auth: "admin"
17453
17518
  }),
17454
17519
  /**
17520
+ * DEVICE-AWARE merged view of ONE node's inference accelerators. Joins each
17521
+ * physical device the node HAS — probed live via a node-pinned
17522
+ * `platformProbe.getCapabilities` (the platform-probe singleton is targeted
17523
+ * by the `nodeId` cap INPUT, since a `nodePin` context is ignored by a
17524
+ * singleton mount) — with its stored opt-in (`enabled`/`weight`) and the
17525
+ * object-detection `defaultModelId` the executor would run for that
17526
+ * deviceKey. Disabled-but-configured keys still appear. An unreachable node
17527
+ * returns `reachable:false` + best-effort stored-only devices (never
17528
+ * throws). Read surface for the cluster/agent multi-device UI — hence a
17529
+ * default (read-level) auth, matching the other `getAgent*` reads.
17530
+ */
17531
+ getNodeInferenceDevices: method(zod.z.object({ nodeId: zod.z.string() }), NodeInferenceDevicesSchema),
17532
+ /**
17455
17533
  * Reset one node's pipeline to its hardware-aware defaults — the HONEST
17456
17534
  * reset (replaces the executor's legacy `resetToDefault`, which cleared a
17457
17535
  * dead persisted step-tree seed nothing in the live path read):
@@ -17490,15 +17568,18 @@ var pipelineOrchestratorCapability = {
17490
17568
  kind: "mutation",
17491
17569
  auth: "admin"
17492
17570
  }),
17493
- /** Read every L2.5 override map for a device. Null when device has no overrides. */
17494
- getCameraStepOverrides: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), CameraStepOverridePatchSchema)).nullable()),
17571
+ /** Read every per-(node,device) override map for a device. Null when device has no overrides. */
17572
+ getCameraStepOverrides: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), CameraStepOverridePatchSchema))).nullable()),
17495
17573
  /**
17496
- * Write or clear the L2.5 per-agent override for one addonId on a device.
17497
- * `patch: null` clears the entry entirely for that (agent, addon) pair.
17574
+ * Write or clear the per-(camera,node,device) override for one addonId.
17575
+ * `patch: null` clears the entry entirely for that (node, deviceKey, addon)
17576
+ * triple (empty parents are pruned). Model/settings only — enablement is
17577
+ * the per-camera `stepToggles` authority.
17498
17578
  */
17499
17579
  setCameraStepOverride: method(zod.z.object({
17500
17580
  deviceId: zod.z.number(),
17501
17581
  agentNodeId: zod.z.string(),
17582
+ deviceKey: zod.z.string(),
17502
17583
  addonId: zod.z.string(),
17503
17584
  patch: CameraStepOverridePatchSchema.nullable()
17504
17585
  }), zod.z.object({ success: zod.z.literal(true) }), {
@@ -17694,7 +17775,8 @@ var serverManagementCapability = {
17694
17775
  /** Explicit target version; omitted = latest from the registry. */
17695
17776
  version: zod.z.string().optional() }), ServerUpdateActionResultSchema, {
17696
17777
  kind: "mutation",
17697
- auth: "admin"
17778
+ auth: "admin",
17779
+ timeoutMs: 16 * 6e4
17698
17780
  }),
17699
17781
  rollbackServerUpdate: method(zod.z.void(), ServerUpdateActionResultSchema, {
17700
17782
  kind: "mutation",
@@ -25508,12 +25590,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
25508
25590
  addonId: null,
25509
25591
  access: "view"
25510
25592
  },
25511
- "pipelineExecutor.reprobeEngine": {
25512
- capName: "pipeline-executor",
25513
- capScope: "system",
25514
- addonId: null,
25515
- access: "create"
25516
- },
25517
25593
  "pipelineExecutor.runAudioTest": {
25518
25594
  capName: "pipeline-executor",
25519
25595
  capScope: "system",
@@ -25664,6 +25740,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25664
25740
  addonId: null,
25665
25741
  access: "view"
25666
25742
  },
25743
+ "pipelineOrchestrator.getNodeInferenceDevices": {
25744
+ capName: "pipeline-orchestrator",
25745
+ capScope: "system",
25746
+ addonId: null,
25747
+ access: "view"
25748
+ },
25667
25749
  "pipelineOrchestrator.getPipelineAssignment": {
25668
25750
  capName: "pipeline-orchestrator",
25669
25751
  capScope: "system",
@@ -25676,6 +25758,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25676
25758
  addonId: null,
25677
25759
  access: "view"
25678
25760
  },
25761
+ "pipelineOrchestrator.getPipelineDevicePin": {
25762
+ capName: "pipeline-orchestrator",
25763
+ capScope: "system",
25764
+ addonId: null,
25765
+ access: "view"
25766
+ },
25679
25767
  "pipelineOrchestrator.listAgentSettings": {
25680
25768
  capName: "pipeline-orchestrator",
25681
25769
  capScope: "system",
@@ -25718,12 +25806,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
25718
25806
  addonId: null,
25719
25807
  access: "create"
25720
25808
  },
25721
- "pipelineOrchestrator.setAgentAddonDefaults": {
25722
- capName: "pipeline-orchestrator",
25723
- capScope: "system",
25724
- addonId: null,
25725
- access: "create"
25726
- },
25727
25809
  "pipelineOrchestrator.setAgentCapabilities": {
25728
25810
  capName: "pipeline-orchestrator",
25729
25811
  capScope: "system",
@@ -25778,6 +25860,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25778
25860
  addonId: null,
25779
25861
  access: "create"
25780
25862
  },
25863
+ "pipelineOrchestrator.setPipelineDevicePin": {
25864
+ capName: "pipeline-orchestrator",
25865
+ capScope: "system",
25866
+ addonId: null,
25867
+ access: "create"
25868
+ },
25781
25869
  "pipelineOrchestrator.unassignAudio": {
25782
25870
  capName: "pipeline-orchestrator",
25783
25871
  capScope: "system",
@@ -8594,20 +8594,6 @@ var pipelineExecutorCapability = {
8594
8594
  getSelectedEngine: method(z.void(), PipelineEngineChoiceSchema),
8595
8595
  getDefaultSteps: method(PipelineEngineChoiceSchema, z.array(PipelineDefaultStepSchema)),
8596
8596
  /**
8597
- * Re-run the platform probe for the inference engine and write the
8598
- * detected runtime / backend / device back into the addon's own
8599
- * global settings store. Returns the engine that was picked so the
8600
- * UI can confirm without a second round-trip. Triggers the standard
8601
- * `requiresRestart` auto-restart flow because all three fields are
8602
- * marked restart-required. Replaces the legacy per-agent
8603
- * `pipeline-orchestrator.reprobeAgentHwAccel` surface for the
8604
- * engine dimension — each addon now owns its own probe.
8605
- */
8606
- reprobeEngine: method(z.void(), PipelineEngineChoiceSchema, {
8607
- kind: "mutation",
8608
- auth: "admin"
8609
- }),
8610
- /**
8611
8597
  * Per-node detection-engine provisioning snapshot. Returns the live
8612
8598
  * state of the lazy runtime-provisioning machine on `nodeId`
8613
8599
  * (idle / installing / verifying / ready / failed). The UI pairs this
@@ -9271,6 +9257,19 @@ var RunnerLocalLoadSchema = z.object({
9271
9257
  avgInferenceTimeMs: z.number(),
9272
9258
  /** Total queue depth across motion + detection queues. */
9273
9259
  queueDepthTotal: z.number(),
9260
+ /**
9261
+ * Per-inference-device live load (multi-device C4). One entry per deviceKey
9262
+ * this runner currently has attached cameras on, so the orchestrator's second
9263
+ * `balance()` pass (over a node's devices) weights on real per-pool session
9264
+ * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
9265
+ * per device is 0 until the pool backlog gets a public accessor (follow-up).
9266
+ */
9267
+ devices: z.array(z.object({
9268
+ deviceKey: z.string(),
9269
+ backend: z.string(),
9270
+ attachedCameras: z.number(),
9271
+ queueDepthTotal: z.number()
9272
+ })).default([]),
9274
9273
  /** Hardware capability flags reported by this node. */
9275
9274
  hardware: z.object({
9276
9275
  hasGpu: z.boolean(),
@@ -16925,13 +16924,11 @@ var PipelineTemplateSchema = z.object({
16925
16924
  createdAt: z.string(),
16926
16925
  updatedAt: z.string()
16927
16926
  });
16928
- var AgentAddonConfigSchema = z.object({
16929
- enabled: z.boolean(),
16927
+ var DeviceStepConfigSchema = z.object({
16930
16928
  modelId: z.string().optional(),
16931
- settings: z.record(z.string(), z.unknown()).readonly()
16929
+ settings: z.record(z.string(), z.unknown()).optional()
16932
16930
  });
16933
16931
  var AgentPipelineSettingsSchema = z.object({
16934
- addonDefaults: z.record(z.string(), AgentAddonConfigSchema).readonly(),
16935
16932
  maxCameras: z.number().int().nonnegative().nullable().default(null),
16936
16933
  /** Per-node detection weight (relative share for the quota balancer). */
16937
16934
  detectWeight: z.number().positive().optional(),
@@ -16958,13 +16955,18 @@ var AgentPipelineSettingsSchema = z.object({
16958
16955
  reachableHost: z.string().optional(),
16959
16956
  /**
16960
16957
  * Multi-device inference opt-in (Phase 4). Per-node map deviceKey → {enabled,
16961
- * weight}. Absent / all-disabled ⇒ the node's single default accelerator
16962
- * (safe default); two+ enabled ⇒ the dispatcher balances detection sessions
16963
- * across them so they run CONCURRENTLY.
16958
+ * weight, steps}. Absent / all-disabled ⇒ the node's single default
16959
+ * accelerator (safe default); two+ enabled ⇒ the dispatcher balances
16960
+ * detection sessions across them so they run CONCURRENTLY. `steps` is the
16961
+ * per-(node,device) BASE provisioning (`stepId → {modelId?, settings?}`) —
16962
+ * the default model/settings for every camera landing on that accelerator;
16963
+ * a stepId absent ⇒ the step uses that device's format default.
16964
16964
  */
16965
16965
  inferenceDevices: z.record(z.string(), z.object({
16966
16966
  enabled: z.boolean(),
16967
- weight: z.number().positive().optional()
16967
+ weight: z.number().positive().optional(),
16968
+ maxSessions: z.number().int().positive().optional(),
16969
+ steps: z.record(z.string(), DeviceStepConfigSchema).optional()
16968
16970
  })).optional()
16969
16971
  });
16970
16972
  var CameraPipelineForAgentSchema = z.object({
@@ -16975,14 +16977,13 @@ var CameraPipelineForAgentSchema = z.object({
16975
16977
  }).nullable()
16976
16978
  });
16977
16979
  var CameraStepOverridePatchSchema = z.object({
16978
- enabled: z.boolean().optional(),
16979
16980
  modelId: z.string().optional(),
16980
16981
  settings: z.record(z.string(), z.unknown()).readonly().optional()
16981
16982
  });
16982
16983
  var CameraPipelineSettingsSchema = z.object({
16983
16984
  pinnedAgentNodeId: z.string().optional(),
16984
16985
  stepToggles: z.record(z.string(), z.boolean()).optional(),
16985
- stepOverridesByAgent: z.record(z.string(), z.record(z.string(), CameraStepOverridePatchSchema)).optional(),
16986
+ stepOverridesByDevice: z.record(z.string(), z.record(z.string(), z.record(z.string(), CameraStepOverridePatchSchema))).optional(),
16986
16987
  pipelineByAgent: z.record(z.string(), CameraPipelineForAgentSchema).optional()
16987
16988
  });
16988
16989
  /**
@@ -17204,6 +17205,44 @@ var CameraStatusSchema = z.object({
17204
17205
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
17205
17206
  fetchedAt: z.number()
17206
17207
  });
17208
+ var NodeInferenceDeviceSchema = z.object({
17209
+ /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
17210
+ key: z.string(),
17211
+ backend: z.string(),
17212
+ device: z.string(),
17213
+ format: z.enum(MODEL_FORMATS),
17214
+ /** Whether the node's live probe reports the device as usable right now. */
17215
+ available: z.boolean(),
17216
+ /**
17217
+ * Whether this device participates in dispatch. AUTO default (spec C2):
17218
+ * accelerators are opt-OUT (a discovered NPU/iGPU/Coral/ANE with no stored
17219
+ * entry is `true`); CPU is opt-IN (`false` by default — the fallback pool,
17220
+ * not a balanced target). An explicit stored value always wins; a stored-only
17221
+ * (unavailable) key keeps its stored value.
17222
+ */
17223
+ enabled: z.boolean(),
17224
+ /** Relative balancer weight for the enabled device (default 1). */
17225
+ weight: z.number(),
17226
+ /** Per-device concurrent-session cap; null = unlimited (multi-device C4). */
17227
+ maxSessions: z.number().nullable(),
17228
+ /** Object-detection model the executor defaults to for this deviceKey. */
17229
+ defaultModelId: z.string(),
17230
+ /**
17231
+ * Per-(node,device) BASE provisioning (C7.2/C7.4) — the RAW stored
17232
+ * `stepId → {modelId?, settings?}` map from `inferenceDevices[key].steps`.
17233
+ * Absent/empty ⇒ no base (every step uses its device format default). The
17234
+ * UI cross-references `pipelineExecutor.getSchema` for the models actually
17235
+ * available per format; this is the stored selection that becomes the
17236
+ * default for EVERY camera landing on this accelerator.
17237
+ */
17238
+ steps: z.record(z.string(), DeviceStepConfigSchema).optional()
17239
+ });
17240
+ var NodeInferenceDevicesSchema = z.object({
17241
+ nodeId: z.string(),
17242
+ /** False when the node's platform-probe was unreachable (no live device set). */
17243
+ reachable: z.boolean(),
17244
+ devices: z.array(NodeInferenceDeviceSchema).readonly()
17245
+ });
17207
17246
  /**
17208
17247
  * Pipeline Orchestrator capability — global load balancer + camera dispatcher.
17209
17248
  *
@@ -17253,6 +17292,34 @@ var pipelineOrchestratorCapability = {
17253
17292
  auth: "admin"
17254
17293
  }),
17255
17294
  /**
17295
+ * Pin a camera's detection to a specific INFERENCE DEVICE (accelerator)
17296
+ * within its node — a SOFT L1 device affinity honoured by the per-session
17297
+ * device `balance()` pass (sibling of the node-level `pipelineNodeId` pin;
17298
+ * persisted as `pipelineDeviceKey` in the device store, read by
17299
+ * `readPipelineDevicePin`). `deviceKey` is a concrete key
17300
+ * (`openvino:npu` / `edgetpu:usb` / `cpu`), or the `'auto'` sentinel /
17301
+ * empty string to CLEAR the pin and let the balancer pick the device.
17302
+ *
17303
+ * Applies promptly: the device is chosen per-session at dispatch, so any
17304
+ * running detection session is closed and re-dispatched onto the new pin
17305
+ * (the camera stays on the SAME node — a device pin never moves the camera).
17306
+ * Cameras with no active session pick it up on their next dispatch.
17307
+ */
17308
+ setPipelineDevicePin: method(z.object({
17309
+ deviceId: z.number(),
17310
+ deviceKey: z.string()
17311
+ }), z.object({ success: z.literal(true) }), {
17312
+ kind: "mutation",
17313
+ auth: "admin"
17314
+ }),
17315
+ /**
17316
+ * Read a camera's persisted inference-device pin (`pipelineDeviceKey`).
17317
+ * Returns the concrete device key, or `null` when unpinned (auto). Lets the
17318
+ * UI show the current pin alongside the node pin (parity with the node-pin
17319
+ * value carried on the assignment record).
17320
+ */
17321
+ getPipelineDevicePin: method(z.object({ deviceId: z.number() }), z.object({ deviceKey: z.string().nullable() })),
17322
+ /**
17256
17323
  * Trigger a full rebalance pass. Iterates over all assigned cameras,
17257
17324
  * recomputes the optimal agent for each one based on current load +
17258
17325
  * hardware affinity, and migrates cameras whose current agent is no
@@ -17337,14 +17404,6 @@ var pipelineOrchestratorCapability = {
17337
17404
  nodeId: z.string(),
17338
17405
  settings: AgentPipelineSettingsSchema
17339
17406
  })).readonly()),
17340
- /** Bulk-replace ALL addon configs on one agent. Used by the agent-level PipelineEditor which emits the full map per edit. Merges on top of existing entries — omitted addonIds are left alone. */
17341
- setAgentAddonDefaults: method(z.object({
17342
- agentNodeId: z.string(),
17343
- defaults: z.record(z.string(), AgentAddonConfigSchema)
17344
- }), z.object({ success: z.literal(true) }), {
17345
- kind: "mutation",
17346
- auth: "admin"
17347
- }),
17348
17407
  /**
17349
17408
  * Drop a single agent's persisted settings. Used by the cluster
17350
17409
  * "Offline agents" panel to evict stale entries left behind when an
@@ -17437,21 +17496,40 @@ var pipelineOrchestratorCapability = {
17437
17496
  * The map REPLACES the node's stored `inferenceDevices` wholesale (pass the
17438
17497
  * complete desired set; an empty map clears the opt-in → the node reverts to
17439
17498
  * its single DEFAULT accelerator). `weight` is optional and defaults to 1.
17499
+ * `models` is the optional per-device model override (`stepId → modelId`,
17500
+ * C7.2/C7.4) — a stepId absent ⇒ the step uses that device's default model.
17440
17501
  * Creates the node's settings entry if absent. Changes take effect on the
17441
17502
  * next dispatch/rebalance cycle — the dispatcher reads the enabled set via
17442
- * `PipelineSettingsStore.buildNodeInferenceDevices` when placing sessions.
17503
+ * `PipelineSettingsStore.buildNodeInferenceDevices` when placing sessions
17504
+ * and the per-(node,device) base provisioning via
17505
+ * `buildNodeInferenceDeviceSteps`.
17443
17506
  */
17444
17507
  setAgentInferenceDevices: method(z.object({
17445
17508
  agentNodeId: z.string(),
17446
17509
  inferenceDevices: z.record(z.string(), z.object({
17447
17510
  enabled: z.boolean(),
17448
- weight: z.number().positive().optional()
17511
+ weight: z.number().positive().optional(),
17512
+ maxSessions: z.number().int().positive().optional(),
17513
+ steps: z.record(z.string(), DeviceStepConfigSchema).optional()
17449
17514
  }))
17450
17515
  }), z.object({ success: z.literal(true) }), {
17451
17516
  kind: "mutation",
17452
17517
  auth: "admin"
17453
17518
  }),
17454
17519
  /**
17520
+ * DEVICE-AWARE merged view of ONE node's inference accelerators. Joins each
17521
+ * physical device the node HAS — probed live via a node-pinned
17522
+ * `platformProbe.getCapabilities` (the platform-probe singleton is targeted
17523
+ * by the `nodeId` cap INPUT, since a `nodePin` context is ignored by a
17524
+ * singleton mount) — with its stored opt-in (`enabled`/`weight`) and the
17525
+ * object-detection `defaultModelId` the executor would run for that
17526
+ * deviceKey. Disabled-but-configured keys still appear. An unreachable node
17527
+ * returns `reachable:false` + best-effort stored-only devices (never
17528
+ * throws). Read surface for the cluster/agent multi-device UI — hence a
17529
+ * default (read-level) auth, matching the other `getAgent*` reads.
17530
+ */
17531
+ getNodeInferenceDevices: method(z.object({ nodeId: z.string() }), NodeInferenceDevicesSchema),
17532
+ /**
17455
17533
  * Reset one node's pipeline to its hardware-aware defaults — the HONEST
17456
17534
  * reset (replaces the executor's legacy `resetToDefault`, which cleared a
17457
17535
  * dead persisted step-tree seed nothing in the live path read):
@@ -17490,15 +17568,18 @@ var pipelineOrchestratorCapability = {
17490
17568
  kind: "mutation",
17491
17569
  auth: "admin"
17492
17570
  }),
17493
- /** Read every L2.5 override map for a device. Null when device has no overrides. */
17494
- getCameraStepOverrides: method(z.object({ deviceId: z.number() }), z.record(z.string(), z.record(z.string(), CameraStepOverridePatchSchema)).nullable()),
17571
+ /** Read every per-(node,device) override map for a device. Null when device has no overrides. */
17572
+ getCameraStepOverrides: method(z.object({ deviceId: z.number() }), z.record(z.string(), z.record(z.string(), z.record(z.string(), CameraStepOverridePatchSchema))).nullable()),
17495
17573
  /**
17496
- * Write or clear the L2.5 per-agent override for one addonId on a device.
17497
- * `patch: null` clears the entry entirely for that (agent, addon) pair.
17574
+ * Write or clear the per-(camera,node,device) override for one addonId.
17575
+ * `patch: null` clears the entry entirely for that (node, deviceKey, addon)
17576
+ * triple (empty parents are pruned). Model/settings only — enablement is
17577
+ * the per-camera `stepToggles` authority.
17498
17578
  */
17499
17579
  setCameraStepOverride: method(z.object({
17500
17580
  deviceId: z.number(),
17501
17581
  agentNodeId: z.string(),
17582
+ deviceKey: z.string(),
17502
17583
  addonId: z.string(),
17503
17584
  patch: CameraStepOverridePatchSchema.nullable()
17504
17585
  }), z.object({ success: z.literal(true) }), {
@@ -17694,7 +17775,8 @@ var serverManagementCapability = {
17694
17775
  /** Explicit target version; omitted = latest from the registry. */
17695
17776
  version: z.string().optional() }), ServerUpdateActionResultSchema, {
17696
17777
  kind: "mutation",
17697
- auth: "admin"
17778
+ auth: "admin",
17779
+ timeoutMs: 16 * 6e4
17698
17780
  }),
17699
17781
  rollbackServerUpdate: method(z.void(), ServerUpdateActionResultSchema, {
17700
17782
  kind: "mutation",
@@ -25508,12 +25590,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
25508
25590
  addonId: null,
25509
25591
  access: "view"
25510
25592
  },
25511
- "pipelineExecutor.reprobeEngine": {
25512
- capName: "pipeline-executor",
25513
- capScope: "system",
25514
- addonId: null,
25515
- access: "create"
25516
- },
25517
25593
  "pipelineExecutor.runAudioTest": {
25518
25594
  capName: "pipeline-executor",
25519
25595
  capScope: "system",
@@ -25664,6 +25740,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25664
25740
  addonId: null,
25665
25741
  access: "view"
25666
25742
  },
25743
+ "pipelineOrchestrator.getNodeInferenceDevices": {
25744
+ capName: "pipeline-orchestrator",
25745
+ capScope: "system",
25746
+ addonId: null,
25747
+ access: "view"
25748
+ },
25667
25749
  "pipelineOrchestrator.getPipelineAssignment": {
25668
25750
  capName: "pipeline-orchestrator",
25669
25751
  capScope: "system",
@@ -25676,6 +25758,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25676
25758
  addonId: null,
25677
25759
  access: "view"
25678
25760
  },
25761
+ "pipelineOrchestrator.getPipelineDevicePin": {
25762
+ capName: "pipeline-orchestrator",
25763
+ capScope: "system",
25764
+ addonId: null,
25765
+ access: "view"
25766
+ },
25679
25767
  "pipelineOrchestrator.listAgentSettings": {
25680
25768
  capName: "pipeline-orchestrator",
25681
25769
  capScope: "system",
@@ -25718,12 +25806,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
25718
25806
  addonId: null,
25719
25807
  access: "create"
25720
25808
  },
25721
- "pipelineOrchestrator.setAgentAddonDefaults": {
25722
- capName: "pipeline-orchestrator",
25723
- capScope: "system",
25724
- addonId: null,
25725
- access: "create"
25726
- },
25727
25809
  "pipelineOrchestrator.setAgentCapabilities": {
25728
25810
  capName: "pipeline-orchestrator",
25729
25811
  capScope: "system",
@@ -25778,6 +25860,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25778
25860
  addonId: null,
25779
25861
  access: "create"
25780
25862
  },
25863
+ "pipelineOrchestrator.setPipelineDevicePin": {
25864
+ capName: "pipeline-orchestrator",
25865
+ capScope: "system",
25866
+ addonId: null,
25867
+ access: "create"
25868
+ },
25781
25869
  "pipelineOrchestrator.unassignAudio": {
25782
25870
  capName: "pipeline-orchestrator",
25783
25871
  capScope: "system",
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-lZmvymPa.js");
3
+ const require_dist = require("./dist-C0Pf5ShP.js");
4
4
  const require_model_download_service = require("./model-download-service-hf0ookyy.js");
5
- const require_manifest_python_deps = require("./manifest-python-deps-0seVlhMM.js");
5
+ const require_manifest_python_deps = require("./manifest-python-deps-BRFns0U-.js");
6
6
  const require_resource_monitor = require("./resource-monitor-DNNomR-i.js");
7
7
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtins/sqlite-storage/sqlite-settings.addon.js");
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { At as EventCategory$1, Dt as resolveCapMount, Et as readinessKey, F as kebabToCamel, I as lifecycleJobSchema, K as procedureAuthKey, M as isCollectionArrayMethod, N as isObjectInput, O as extractNestedAddonId, Ot as scopeKey, P as isVoidInput, Tt as parseJsonUnknown$1, U as objectInputDeclaresAddonId, _t as asString$1, ct as DEVICE_STATUS_METHOD, ft as ReadinessRegistry, gt as asNumber, ht as asJsonObject$1, it as errMsg$1, j as isArrayOutputSchema, o as METHOD_ACCESS_MAP, ot as DATAPLANE_SECRET_HEADER$1, p as addonSettingsCapability, pt as ReadinessTimeoutError, s as RUNTIME_DEFAULTS, st as DEVICE_SETTINGS_CONTRIBUTION_METHODS, t as ALL_CAPABILITY_DEFINITIONS, vt as createEvent, wt as parseJsonObject, xt as expandCapMethods, yt as emitDownForOwnedCaps, z as looseSchema } from "./dist-BilBS8T_.mjs";
1
+ import { At as EventCategory$1, Dt as resolveCapMount, Et as readinessKey, F as kebabToCamel, I as lifecycleJobSchema, K as procedureAuthKey, M as isCollectionArrayMethod, N as isObjectInput, O as extractNestedAddonId, Ot as scopeKey, P as isVoidInput, Tt as parseJsonUnknown$1, U as objectInputDeclaresAddonId, _t as asString$1, ct as DEVICE_STATUS_METHOD, ft as ReadinessRegistry, gt as asNumber, ht as asJsonObject$1, it as errMsg$1, j as isArrayOutputSchema, o as METHOD_ACCESS_MAP, ot as DATAPLANE_SECRET_HEADER$1, p as addonSettingsCapability, pt as ReadinessTimeoutError, s as RUNTIME_DEFAULTS, st as DEVICE_SETTINGS_CONTRIBUTION_METHODS, t as ALL_CAPABILITY_DEFINITIONS, vt as createEvent, wt as parseJsonObject, xt as expandCapMethods, yt as emitDownForOwnedCaps, z as looseSchema } from "./dist-Dycu89sF.mjs";
2
2
  import { a as downloadModel, c as getModelFilePath, d as contentTypeFor, f as createAuthenticatedFileServer, h as resolveFilePath, i as downloadFile, l as isModelDownloaded, m as parseTokenizedUrl, n as collectModelFiles, o as ensureModel, p as parseRangeHeader, r as deleteModelFromDisk, s as fetchJson, t as ModelDownloadService, u as createFileDataPlaneHandler } from "./model-download-service-Cp9f4dk6.mjs";
3
- import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, bt as resolveAddonClass, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, xt as createAddonDataPlaneFacility, y as __resetCapUsageRegistryForTests, yt as runNpm, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-Dydd-bKS.mjs";
3
+ import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, bt as resolveAddonClass, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, xt as createAddonDataPlaneFacility, y as __resetCapUsageRegistryForTests, yt as runNpm, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-BiM1uDhe.mjs";
4
4
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Le3l0qS2.mjs";
5
5
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
6
6
  import { SqliteSettingsAddon, t as SqliteSettingsBackend } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-lZmvymPa.js");
2
+ const require_dist = require("./dist-C0Pf5ShP.js");
3
3
  let _camstack_types_node = require("@camstack/types/node");
4
4
  let node_http = require("node:http");
5
5
  let node_fs = require("node:fs");
@@ -1,4 +1,4 @@
1
- import { q as readNodePin } from "./dist-BilBS8T_.mjs";
1
+ import { q as readNodePin } from "./dist-Dycu89sF.mjs";
2
2
  import { ensureBinary, ensureFfmpeg, ensurePython, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
3
3
  import { createServer } from "node:http";
4
4
  import * as fs from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.1.63",
3
+ "version": "1.1.76",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",