@camstack/system 1.2.375 → 1.2.376

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 (74) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/auth/external-identity-manager.d.ts +43 -0
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  7. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  9. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  10. package/dist/builtins/alerts/alerts.addon.js +1 -1
  11. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  12. package/dist/builtins/autotrack/index.js +1 -1
  13. package/dist/builtins/autotrack/index.mjs +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  16. package/dist/builtins/calendars/calendars.addon.js +1 -1
  17. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  18. package/dist/builtins/camera-grid/index.js +1 -1
  19. package/dist/builtins/camera-grid/index.mjs +1 -1
  20. package/dist/builtins/composer/composer.addon.js +2 -2
  21. package/dist/builtins/composer/composer.addon.mjs +2 -2
  22. package/dist/builtins/console-logging/index.js +1 -1
  23. package/dist/builtins/console-logging/index.mjs +1 -1
  24. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  25. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  26. package/dist/builtins/device-manager/device-manager.addon.d.ts +2 -0
  27. package/dist/builtins/device-manager/device-manager.addon.js +36 -2
  28. package/dist/builtins/device-manager/device-manager.addon.mjs +36 -2
  29. package/dist/builtins/device-manager/device-projection.d.ts +2 -1
  30. package/dist/builtins/device-manager/device-provider-context.d.ts +3 -0
  31. package/dist/builtins/device-manager/secret-config-paths.d.ts +24 -0
  32. package/dist/builtins/hub-forwarder/index.js +1 -1
  33. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  34. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  35. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  36. package/dist/builtins/local-auth/auth-schema.d.ts +14 -0
  37. package/dist/builtins/local-auth/local-auth.addon.d.ts +1 -0
  38. package/dist/builtins/local-auth/local-auth.addon.js +1343 -1131
  39. package/dist/builtins/local-auth/local-auth.addon.mjs +1343 -1131
  40. package/dist/builtins/local-network/local-network.addon.js +1 -1
  41. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  42. package/dist/builtins/loki-logging/index.js +1 -1
  43. package/dist/builtins/loki-logging/index.mjs +1 -1
  44. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  45. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  46. package/dist/builtins/platform-probe/index.js +1 -1
  47. package/dist/builtins/platform-probe/index.mjs +1 -1
  48. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  49. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  50. package/dist/builtins/snapshot/index.js +1 -1
  51. package/dist/builtins/snapshot/index.mjs +1 -1
  52. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  53. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  54. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  55. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  56. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  57. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  58. package/dist/builtins/system-config/system-config.addon.js +1 -1
  59. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  60. package/dist/builtins/winston-logging/index.js +1 -1
  61. package/dist/builtins/winston-logging/index.mjs +1 -1
  62. package/dist/{child-cap-dispatch-B9kziY4L.mjs → child-cap-dispatch-8qMgog1O.mjs} +16 -4
  63. package/dist/{child-cap-dispatch-Bfdgkbq3.js → child-cap-dispatch-BWtaSmWf.js} +15 -3
  64. package/dist/{composition-sources-DYlXX2qW.js → composition-sources-DW7CgMsg.js} +1 -1
  65. package/dist/{composition-sources-BfZgiTYD.mjs → composition-sources-zxQPPtP_.mjs} +1 -1
  66. package/dist/{dist-CNbnikIh.js → dist-BcUWQGr9.js} +268 -6
  67. package/dist/{dist-ZdSg09GJ.mjs → dist-D732NygW.mjs} +263 -7
  68. package/dist/{event-loop-stall-monitor-DKcYBHdH.mjs → event-loop-stall-monitor-8W4yWNVW.mjs} +1 -1
  69. package/dist/{event-loop-stall-monitor-CpEH3CoV.js → event-loop-stall-monitor-QX4RjNe7.js} +1 -1
  70. package/dist/index.js +3 -3
  71. package/dist/index.mjs +3 -3
  72. package/dist/{retired-settings-keys-B4ZeKrbR.mjs → retired-settings-keys-CxPOg7BF.mjs} +1 -1
  73. package/dist/{retired-settings-keys-CcWvdy6u.js → retired-settings-keys-MaESpO18.js} +1 -1
  74. package/package.json +1 -1
@@ -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-CNbnikIh.js");
3
+ const require_dist = require("../../dist-BcUWQGr9.js");
4
4
  const require_tls = require("../../tls-CCMX7MjX.js");
5
5
  let zod = require("zod");
6
6
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Nr as EventCategory, Rt as isAppLinkBase, Sn as resolveHubAddressRoles, Tn as resolveNotificationTapAddress, Vn as validateCustomAddress, Vt as isDefaultAppConnectionEndpoint, Yt as localNetworkCapability, cr as BaseAddon, dn as pickAppLinkHub, rt as checkRoleAddress, s as CAMSTACK_APP_LINK_ORIGIN, vn as resolveAppConnections } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Pr as EventCategory, Rt as isAppLinkBase, Sn as resolveHubAddressRoles, Tn as resolveNotificationTapAddress, Vn as validateCustomAddress, Vt as isDefaultAppConnectionEndpoint, Yt as localNetworkCapability, cr as BaseAddon, dn as pickAppLinkHub, rt as checkRoleAddress, s as CAMSTACK_APP_LINK_ORIGIN, vn as resolveAppConnections } from "../../dist-D732NygW.mjs";
2
2
  import { P as readLanHttpState, _ as writeExtraSans, h as readTlsMode, i as storeUploadedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, m as readTlsAccessStatus, n as regenerateCertificate, p as readExtraSans, r as revertToGeneratedCertificate, t as applyCertificateToListener, u as servedHttpsLeafFingerprint, y as ensureTlsCert } from "../../tls-CJHogwTl.mjs";
3
3
  import { z } from "zod";
4
4
  import * as os from "node:os";
@@ -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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.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 { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-D732NygW.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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.js");
7
7
  const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Nr as EventCategory, Pt as foldSnapshotByFunction, cr as BaseAddon, gn as reducePoints, rn as metricsProviderCapability, sr as errMsg, vr as createEvent, yn as resolveBucketMs } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Pr as EventCategory, Pt as foldSnapshotByFunction, cr as BaseAddon, gn as reducePoints, rn as metricsProviderCapability, sr as errMsg, yn as resolveBucketMs, yr as createEvent } from "../../dist-D732NygW.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
3
3
  import { access, readFile, readdir } from "node:fs/promises";
4
4
  import * as os from "node:os";
@@ -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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.js");
7
7
  let node_os = require("node:os");
8
8
  node_os = require_chunk.__toESM(node_os);
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 { Nr as EventCategory, Tt as enumerateInferenceDevices, br as emitReadiness, cr as BaseAddon, kn as scoreRuntimes, pn as platformProbeCapability, sr as errMsg } from "../../dist-ZdSg09GJ.mjs";
2
+ import { Pr as EventCategory, Tt as enumerateInferenceDevices, cr as BaseAddon, kn as scoreRuntimes, pn as platformProbeCapability, sr as errMsg, xr as emitReadiness } from "../../dist-D732NygW.mjs";
3
3
  import * as os from "node:os";
4
4
  import * as fs from "node:fs";
5
5
  import { execFile } from "node:child_process";
@@ -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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.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 { Nr as EventCategory, cr as BaseAddon } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Pr as EventCategory, cr as BaseAddon } from "../../dist-D732NygW.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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Mn as snapshotCapability, Nr as EventCategory, Q as batteryCapability, Rn as streamQualityLabel, Tr as nodePin, Z as bareAddonId, a as BatteryStatusSchema, cr as BaseAddon, ir as DeviceFeature, nn as memoizePinnedFfmpeg, or as DeviceType, sr as errMsg, yt as deriveBatteryPresence } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Er as nodePin, Mn as snapshotCapability, Pr as EventCategory, Q as batteryCapability, Rn as streamQualityLabel, Z as bareAddonId, a as BatteryStatusSchema, cr as BaseAddon, ir as DeviceFeature, nn as memoizePinnedFfmpeg, or as DeviceType, sr as errMsg, yt as deriveBatteryPresence } from "../../dist-D732NygW.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.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 { In as storageProviderCapability, Nt as filesystemBrowseCapability, cr as BaseAddon } from "../../dist-ZdSg09GJ.mjs";
1
+ import { In as storageProviderCapability, Nt as filesystemBrowseCapability, cr as BaseAddon } from "../../dist-D732NygW.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";
@@ -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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { An as settingsStoreCapability, B as StorageCleanupJobSchema, Cn as resolveLocationMode, D as LegacyStorageLocationDefaultSchema, Er as parseJsonObject, Gn as withLocationMode, H as StorageLocationTypeSchema, Ht as isLocationEnabled, It as gbToBytes, Nn as storageCapability, Nr as EventCategory, P as REDACTED_SECRET, Pn as storageMigrationCapability, U as StorageMigrationJobSchema, V as StorageLocationModeSchema, cr as BaseAddon, en as mayReadLocation, in as modeMayWrite, it as collectSecretConfigKeys, kt as evictionPolicyOfLocation, qt as legacyModeOf, tn as mayWriteToLocation } from "../../dist-ZdSg09GJ.mjs";
1
+ import { An as settingsStoreCapability, B as StorageCleanupJobSchema, Cn as resolveLocationMode, D as LegacyStorageLocationDefaultSchema, Dr as parseJsonObject, Gn as withLocationMode, H as StorageLocationTypeSchema, Ht as isLocationEnabled, It as gbToBytes, Nn as storageCapability, P as REDACTED_SECRET, Pn as storageMigrationCapability, Pr as EventCategory, U as StorageMigrationJobSchema, V as StorageLocationModeSchema, cr as BaseAddon, en as mayReadLocation, in as modeMayWrite, it as collectSecretConfigKeys, kt as evictionPolicyOfLocation, qt as legacyModeOf, tn as mayWriteToLocation } from "../../dist-D732NygW.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.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 { Sr as hydrateSchema, cr as BaseAddon, sr as errMsg } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Cr as hydrateSchema, cr as BaseAddon, sr as errMsg } from "../../dist-D732NygW.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-CNbnikIh.js");
6
+ const require_dist = require("../../dist-BcUWQGr9.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 { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-ZdSg09GJ.mjs";
1
+ import { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-D732NygW.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";
@@ -1,4 +1,4 @@
1
- import { Nr as EventCategory$1, vr as createEvent } from "./dist-ZdSg09GJ.mjs";
1
+ import { Pr as EventCategory$1, yr as createEvent } from "./dist-D732NygW.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader } from "./proc-stat-CbC55Kqi.mjs";
3
3
  import "./hub-cap-forward-BdT320dq.mjs";
4
4
  import * as crypto$1 from "node:crypto";
@@ -18,7 +18,7 @@ import * as v8 from "node:v8";
18
18
  import { Session } from "node:inspector/promises";
19
19
  import { monitorEventLoopDelay } from "node:perf_hooks";
20
20
  import * as vm from "node:vm";
21
- import { BOOT_RECOVERY_BACKOFF_MS, DATAPLANE_SECRET_HEADER, DEVICE_CHILDREN_BATCH_MAX, DeviceType, DisposerChain, EventCategory, PEER_BYTES_CHUNK_BYTES, PEER_BYTES_MAX_OUTSTANDING, PEER_BYTES_STALL_MS, PEER_BYTES_TICKET_TTL_MS, ReadinessRegistry, asJsonObject, asString, createDeviceProxy, createEventBusSliceSource, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, readNodePin, scopeKey, sleep, withCapInputDefaults } from "@camstack/types/addon";
21
+ import { BOOT_RECOVERY_BACKOFF_MS, DATAPLANE_SECRET_HEADER, DEVICE_CHILDREN_BATCH_MAX, DeviceType, DisposerChain, EventCategory, PEER_BYTES_CHUNK_BYTES, PEER_BYTES_MAX_OUTSTANDING, PEER_BYTES_STALL_MS, PEER_BYTES_TICKET_TTL_MS, ReadinessRegistry, asJsonObject, asString, collectZodSecretPaths, createDeviceProxy, createEventBusSliceSource, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, readNodePin, scopeKey, sleep, withCapInputDefaults } from "@camstack/types/addon";
22
22
  import { once } from "node:events";
23
23
  import { connect, createConnection, createServer as createServer$1 } from "node:net";
24
24
  import { TRPCClientError, createTRPCClient } from "@trpc/client";
@@ -4709,6 +4709,16 @@ function buildDeviceOpsProvider(device) {
4709
4709
  }
4710
4710
  };
4711
4711
  }
4712
+ /**
4713
+ * The secret paths a live device's config schema declares (D783). A device
4714
+ * whose `config` carries no readable schema (a test double) declares none —
4715
+ * the hub's keyword backstop still applies to it.
4716
+ */
4717
+ function declaredSecretConfigPaths(device) {
4718
+ const schema = device.config?.schema;
4719
+ if (schema === void 0 || schema === null || typeof schema !== "object") return [];
4720
+ return [...collectZodSecretPaths(schema)];
4721
+ }
4712
4722
  function callDeviceManager(api, method, input) {
4713
4723
  const leaf = Reflect.get(Reflect.get(api, "deviceManager"), method);
4714
4724
  return (leaf.mutate ?? leaf.query)(input);
@@ -5155,7 +5165,8 @@ function createBrokerDeviceManagerApi(opts) {
5155
5165
  name: device.name,
5156
5166
  parentDeviceId: device.parentDeviceId,
5157
5167
  features: [...device.features],
5158
- config: {}
5168
+ config: {},
5169
+ secretConfigPaths: declaredSecretConfigPaths(device)
5159
5170
  });
5160
5171
  } catch (err) {
5161
5172
  registry.remove(device.id);
@@ -5174,7 +5185,8 @@ function createBrokerDeviceManagerApi(opts) {
5174
5185
  name: device.name,
5175
5186
  parentDeviceId: device.parentDeviceId,
5176
5187
  features: [...device.features],
5177
- config: {}
5188
+ config: {},
5189
+ secretConfigPaths: declaredSecretConfigPaths(device)
5178
5190
  });
5179
5191
  } catch (err) {
5180
5192
  opts.logger.debug("post-probe features meta refresh failed (non-fatal)", {
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CNbnikIh.js");
2
+ const require_dist = require("./dist-BcUWQGr9.js");
3
3
  const require_proc_stat = require("./proc-stat-DL-WUOhl.js");
4
4
  require("./hub-cap-forward-DmHNjbB0.js");
5
5
  let node_crypto = require("node:crypto");
@@ -4712,6 +4712,16 @@ function buildDeviceOpsProvider(device) {
4712
4712
  }
4713
4713
  };
4714
4714
  }
4715
+ /**
4716
+ * The secret paths a live device's config schema declares (D783). A device
4717
+ * whose `config` carries no readable schema (a test double) declares none —
4718
+ * the hub's keyword backstop still applies to it.
4719
+ */
4720
+ function declaredSecretConfigPaths(device) {
4721
+ const schema = device.config?.schema;
4722
+ if (schema === void 0 || schema === null || typeof schema !== "object") return [];
4723
+ return [...(0, _camstack_types_addon.collectZodSecretPaths)(schema)];
4724
+ }
4715
4725
  function callDeviceManager(api, method, input) {
4716
4726
  const leaf = Reflect.get(Reflect.get(api, "deviceManager"), method);
4717
4727
  return (leaf.mutate ?? leaf.query)(input);
@@ -5158,7 +5168,8 @@ function createBrokerDeviceManagerApi(opts) {
5158
5168
  name: device.name,
5159
5169
  parentDeviceId: device.parentDeviceId,
5160
5170
  features: [...device.features],
5161
- config: {}
5171
+ config: {},
5172
+ secretConfigPaths: declaredSecretConfigPaths(device)
5162
5173
  });
5163
5174
  } catch (err) {
5164
5175
  registry.remove(device.id);
@@ -5177,7 +5188,8 @@ function createBrokerDeviceManagerApi(opts) {
5177
5188
  name: device.name,
5178
5189
  parentDeviceId: device.parentDeviceId,
5179
5190
  features: [...device.features],
5180
- config: {}
5191
+ config: {},
5192
+ secretConfigPaths: declaredSecretConfigPaths(device)
5181
5193
  });
5182
5194
  } catch (err) {
5183
5195
  opts.logger.debug("post-probe features meta refresh failed (non-fatal)", {
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CNbnikIh.js");
1
+ const require_dist = require("./dist-BcUWQGr9.js");
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- import { er as compositionSourceKey, sr as errMsg } from "./dist-ZdSg09GJ.mjs";
1
+ import { er as compositionSourceKey, sr as errMsg } from "./dist-D732NygW.mjs";
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation