@camstack/system 1.2.416 → 1.2.418

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 (95) hide show
  1. package/dist/addon-runner.js +9969 -27
  2. package/dist/addon-runner.mjs +9930 -9
  3. package/dist/addon-utils.js +19 -20
  4. package/dist/addon-utils.mjs +1 -2
  5. package/dist/auth/auth-audit-log.d.ts +1 -1
  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 +2 -2
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  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.js +2 -2
  27. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  28. package/dist/builtins/hub-forwarder/index.js +1 -1
  29. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  30. package/dist/builtins/keychain/index.js +7 -9
  31. package/dist/builtins/keychain/index.mjs +7 -9
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  33. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  34. package/dist/builtins/local-auth/local-auth.addon.js +5 -3
  35. package/dist/builtins/local-auth/local-auth.addon.mjs +5 -3
  36. package/dist/builtins/local-network/local-network.addon.js +2 -2
  37. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  38. package/dist/builtins/loki-logging/index.js +1 -1
  39. package/dist/builtins/loki-logging/index.mjs +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.js +102 -10
  41. package/dist/builtins/native-metrics/native-metrics.addon.mjs +92 -4
  42. package/dist/builtins/platform-probe/amd-npu.d.ts +6 -0
  43. package/dist/builtins/platform-probe/index.js +317 -19
  44. package/dist/builtins/platform-probe/index.mjs +318 -20
  45. package/dist/builtins/platform-probe/platform-scorer.d.ts +4 -0
  46. package/dist/builtins/platform-probe/windows-hardware.d.ts +77 -0
  47. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  48. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  49. package/dist/builtins/snapshot/index.js +1 -1
  50. package/dist/builtins/snapshot/index.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  52. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  54. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  55. package/dist/builtins/storage-orchestrator/index.mjs +1 -1
  56. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +83 -3
  57. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +79 -3
  58. package/dist/builtins/system-config/system-config.addon.js +2 -2
  59. package/dist/builtins/system-config/system-config.addon.mjs +2 -2
  60. package/dist/builtins/winston-logging/index.js +1 -1
  61. package/dist/builtins/winston-logging/index.mjs +1 -1
  62. package/dist/{composition-sources-DEZqZLPT.mjs → composition-sources-0cPw9E0M.mjs} +1 -1
  63. package/dist/{composition-sources-DBcOVpGn.js → composition-sources-BVjuMvpb.js} +1 -1
  64. package/dist/{constants-C4jZO_qO.js → constants-Aj0OBqlt.js} +1 -1
  65. package/dist/{constants-BSBtmzm3.mjs → constants-C8T7u1_Z.mjs} +1 -1
  66. package/dist/{event-loop-stall-monitor-LBZskC1S.mjs → custom-action-registry-BQnbN0DP.mjs} +57 -2
  67. package/dist/{event-loop-stall-monitor-E2hFvhDg.js → custom-action-registry-Bf_YnagS.js} +64 -3
  68. package/dist/{dist-DxiDI8hZ.js → dist-DVUg8e1T.js} +56 -182
  69. package/dist/{dist-DwE9yHdk.mjs → dist-DlmdESNT.mjs} +57 -153
  70. package/dist/index.js +22901 -10154
  71. package/dist/index.mjs +22616 -9869
  72. package/dist/{jwt-signing-key-DLbjTIuA.mjs → jwt-signing-key-CGg61A5v.mjs} +1 -1
  73. package/dist/{jwt-signing-key-CsC-FxSm.js → jwt-signing-key-Jyu81jZR.js} +1 -1
  74. package/dist/kernel/moleculer/broker-factory.d.ts +2 -4
  75. package/dist/kernel/transport/local-child-registry.d.ts +1 -1
  76. package/dist/logging/log-redactor.d.ts +1 -1
  77. package/dist/{resource-monitor-B2WZ8_q9.mjs → resource-monitor-Di9daRwI.mjs} +1 -1
  78. package/dist/{resource-monitor-BgWGRxN5.js → resource-monitor-mio9dSCT.js} +5 -5
  79. package/dist/{restore-archive-BtKjaVua.js → restore-archive-Bq5PpQ-H.js} +1 -1
  80. package/dist/{restore-archive-CImzbuRo.mjs → restore-archive-DVo5ooBt.mjs} +1 -1
  81. package/dist/{retired-settings-keys-Cl1tnkmq.js → retired-settings-keys-CihMX6h9.js} +1 -1
  82. package/dist/{retired-settings-keys-D1WsCdUY.mjs → retired-settings-keys-k_XuC-Mt.mjs} +1 -1
  83. package/dist/{tls-C0TRPfqc.js → tls-BgImdxCO.js} +4 -11
  84. package/dist/{tls-D-2dPY-5.mjs → tls-CaOLZ09W.mjs} +5 -12
  85. package/package.json +2 -2
  86. package/dist/amd-npu-B-QyyMyF.js +0 -53
  87. package/dist/amd-npu-Db_SoSuL.mjs +0 -52
  88. package/dist/child-cap-dispatch-B87B0FrC.js +0 -13986
  89. package/dist/child-cap-dispatch-CmfT-OR2.mjs +0 -12916
  90. package/dist/custom-action-registry-B4Cf4O_X.mjs +0 -57
  91. package/dist/custom-action-registry-acBY3mHA.js +0 -62
  92. package/dist/hub-cap-forward-CDiN1p98.mjs +0 -78
  93. package/dist/hub-cap-forward-W8oEm4ME.js +0 -101
  94. package/dist/proc-stat-CbC55Kqi.mjs +0 -92
  95. package/dist/proc-stat-DL-WUOhl.js +0 -127
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
718
718
  return EventCategory;
719
719
  }({});
720
720
  //#endregion
721
- //#region ../types/dist/sleep-Tkp9dHXv.mjs
721
+ //#region ../types/dist/sleep-vWTnHq9G.mjs
722
722
  /**
723
723
  * The audio chunk plane's byte format, and the ONE expansion from a coded
724
724
  * window to float samples (D455).
@@ -3156,31 +3156,6 @@ var PeerBytesTicketSchema = zod.z.object({
3156
3156
  */
3157
3157
  declaredBytes: zod.z.number().int().nonnegative().nullable()
3158
3158
  });
3159
- /**
3160
- * One store per PROCESS, even when two copies of this module are loaded (an
3161
- * addon bundle next to the framework's): keyed on a registered symbol.
3162
- */
3163
- var STORE_KEY = Symbol.for("camstack.keychain.known-secrets");
3164
- function store() {
3165
- const existing = Reflect.get(globalThis, STORE_KEY);
3166
- if (existing !== void 0 && existing !== null) return existing;
3167
- const created = {
3168
- values: /* @__PURE__ */ new Map(),
3169
- compiled: null
3170
- };
3171
- Reflect.set(globalThis, STORE_KEY, created);
3172
- return created;
3173
- }
3174
- /** Replace every registered value inside `text` with its label. */
3175
- function scrubKnownSecrets(text) {
3176
- const s = store();
3177
- const re = s.compiled;
3178
- if (re === null || text.length < 8) return text;
3179
- re.lastIndex = 0;
3180
- if (!re.test(text)) return text;
3181
- re.lastIndex = 0;
3182
- return text.replace(re, (match) => s.values.get(match) ?? "‹secret›");
3183
- }
3184
3159
  /** Shared Zod schemas used across streaming capabilities. */
3185
3160
  var CamProfileSchema = zod.z.enum([
3186
3161
  "high",
@@ -3912,6 +3887,21 @@ function emitDownForOwnedCaps(registry, owned) {
3912
3887
  for (const { capName, scope } of owned) registry.emitDown(capName, scope);
3913
3888
  }
3914
3889
  /**
3890
+ * The model weight formats a catalog entry can ship. Schema-free on purpose:
3891
+ * `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
3892
+ * (the model downloader in `@camstack/system`) needs only the list and must
3893
+ * reach it through `@camstack/types/addon` without building the cap schema
3894
+ * graph (D28).
3895
+ */
3896
+ var MODEL_FORMATS = [
3897
+ "onnx",
3898
+ "coreml",
3899
+ "openvino",
3900
+ "tflite",
3901
+ "pt",
3902
+ "gguf"
3903
+ ];
3904
+ /**
3915
3905
  * Per-call node pinning for `ctx.api` capability calls.
3916
3906
  *
3917
3907
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -4331,6 +4321,42 @@ var deviceOpsCapability = {
4331
4321
  getRawState: method(zod.z.object({ deviceId: zod.z.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
4332
4322
  }
4333
4323
  };
4324
+ /**
4325
+ * Runtime defaults -- used by ConfigManager.get() for backward compatibility
4326
+ * until Plan B wires all runtime settings to the system_settings SQL table.
4327
+ *
4328
+ * Moved from @camstack/system/config-schema to @camstack/types so that
4329
+ * @camstack/system can reference it without a cross-package kernel import.
4330
+ */
4331
+ var RUNTIME_DEFAULTS = {
4332
+ "features.streaming": true,
4333
+ "features.notifications": true,
4334
+ "features.objectDetection": false,
4335
+ "features.remoteAccess": true,
4336
+ "features.agentCluster": false,
4337
+ "features.smartHome": true,
4338
+ "features.recordings": true,
4339
+ "features.backup": true,
4340
+ "features.repl": true,
4341
+ "retention.detectionEventsDays": 30,
4342
+ "retention.audioLevelsDays": 7,
4343
+ "logging.level": "info",
4344
+ "logging.retentionDays": 30,
4345
+ "eventBus.ringBufferSize": 1e4,
4346
+ "storage.provider": "sqlite-storage",
4347
+ "storage.locations": {
4348
+ data: "camstack-data/data",
4349
+ media: "camstack-data/media",
4350
+ recordings: "camstack-data/recordings",
4351
+ cache: "/tmp/camstack-cache",
4352
+ logs: "camstack-data/logs",
4353
+ models: "camstack-data/models"
4354
+ },
4355
+ providers: [],
4356
+ "ffmpeg.hwAccel": "auto",
4357
+ "ffmpeg.threadCount": 0,
4358
+ "auth.tokenExpiry": "30d"
4359
+ };
4334
4360
  function defOf(schema) {
4335
4361
  return schema._zod?.def ?? {};
4336
4362
  }
@@ -4790,7 +4816,7 @@ function errMsg(err) {
4790
4816
  return String(err);
4791
4817
  }
4792
4818
  //#endregion
4793
- //#region ../types/dist/composition-Bzr7GwgP.mjs
4819
+ //#region ../types/dist/composition-C-WpVYTX.mjs
4794
4820
  var AUDIO_ENCODER_BY_CODEC = {
4795
4821
  opus: "libopus",
4796
4822
  aac: "aac",
@@ -5234,7 +5260,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
5234
5260
  function portable(target) {
5235
5261
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
5236
5262
  }
5237
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
5263
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
5238
5264
  /**
5239
5265
  * THE table "which boolean of this device type counts as HIGH", and the
5240
5266
  * pure evaluator of its EDGE.
@@ -9290,14 +9316,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
9290
9316
  ...CROP_SUPPLY_STEP_IDS,
9291
9317
  ...MASK_SUPPLY_STEP_IDS
9292
9318
  ];
9293
- var MODEL_FORMATS = [
9294
- "onnx",
9295
- "coreml",
9296
- "openvino",
9297
- "tflite",
9298
- "pt",
9299
- "gguf"
9300
- ];
9301
9319
  /**
9302
9320
  * Multi-file format payload.
9303
9321
  *
@@ -50108,44 +50126,6 @@ Object.freeze({
50108
50126
  vehicle: .65,
50109
50127
  animal: .65
50110
50128
  });
50111
- var HF_REPO = "camstack/camstack-models";
50112
- `${HF_REPO}`;
50113
- /**
50114
- * Runtime defaults -- used by ConfigManager.get() for backward compatibility
50115
- * until Plan B wires all runtime settings to the system_settings SQL table.
50116
- *
50117
- * Moved from @camstack/system/config-schema to @camstack/types so that
50118
- * @camstack/system can reference it without a cross-package kernel import.
50119
- */
50120
- var RUNTIME_DEFAULTS = {
50121
- "features.streaming": true,
50122
- "features.notifications": true,
50123
- "features.objectDetection": false,
50124
- "features.remoteAccess": true,
50125
- "features.agentCluster": false,
50126
- "features.smartHome": true,
50127
- "features.recordings": true,
50128
- "features.backup": true,
50129
- "features.repl": true,
50130
- "retention.detectionEventsDays": 30,
50131
- "retention.audioLevelsDays": 7,
50132
- "logging.level": "info",
50133
- "logging.retentionDays": 30,
50134
- "eventBus.ringBufferSize": 1e4,
50135
- "storage.provider": "sqlite-storage",
50136
- "storage.locations": {
50137
- data: "camstack-data/data",
50138
- media: "camstack-data/media",
50139
- recordings: "camstack-data/recordings",
50140
- cache: "/tmp/camstack-cache",
50141
- logs: "camstack-data/logs",
50142
- models: "camstack-data/models"
50143
- },
50144
- providers: [],
50145
- "ffmpeg.hwAccel": "auto",
50146
- "ffmpeg.threadCount": 0,
50147
- "auth.tokenExpiry": "30d"
50148
- };
50149
50129
  /**
50150
50130
  * Accessory device helpers — shared across drivers.
50151
50131
  *
@@ -64886,82 +64866,6 @@ var ADDON_ID_PREFIX = "addon:";
64886
64866
  function bareAddonId(id) {
64887
64867
  return id.startsWith(ADDON_ID_PREFIX) ? id.slice(6) : id;
64888
64868
  }
64889
- function hfModelUrl(repo, path) {
64890
- return `https://huggingface.co/${repo}/resolve/main/${path}`;
64891
- }
64892
- /**
64893
- * Names that, when used as URL query parameters, almost certainly carry
64894
- * a secret. Matching is case-insensitive and anchored to the full param
64895
- * name to avoid false positives like `user_id` (an entity reference, not
64896
- * a credential) or `topic=password-reset` (a value happens to contain
64897
- * the substring "password" but the param name is unrelated).
64898
- *
64899
- * Add new patterns here as we encounter cameras/APIs that leak through
64900
- * the existing list.
64901
- */
64902
- var CREDENTIAL_PARAM_PATTERNS = [
64903
- /^user$/i,
64904
- /^usr$/i,
64905
- /^username$/i,
64906
- /^password$/i,
64907
- /^pwd$/i,
64908
- /^pass$/i,
64909
- /^passwd$/i,
64910
- /^secret$/i,
64911
- /^token$/i,
64912
- /^auth$/i,
64913
- /^auth[_-]?token$/i,
64914
- /^bearer$/i,
64915
- /^api[_-]?key$/i,
64916
- /^access[_-]?token$/i,
64917
- /^refresh[_-]?token$/i,
64918
- /^bridge$/i,
64919
- /^code$/i,
64920
- /^state$/i,
64921
- /^challenge$/i,
64922
- /^link$/i
64923
- ];
64924
- function isCredentialParam(name) {
64925
- return CREDENTIAL_PARAM_PATTERNS.some((re) => re.test(name));
64926
- }
64927
- /**
64928
- * Redact secrets we may surface in logs or telemetry:
64929
- * 1. `userinfo` (`user:password@host`) — the classic RTSP shape.
64930
- * 2. Query-string credential params (`?user=...&password=...`) — the
64931
- * Reolink RTMP shape and several HTTP-pushed-stream APIs.
64932
- *
64933
- * Returns the original string verbatim when the input is not a parseable
64934
- * URL — a log helper must never throw. Param values are replaced with
64935
- * `***` so an operator reading logs still sees WHICH credential was
64936
- * present (useful for debugging "wrong password" issues) without
64937
- * exposing the value.
64938
- *
64939
- * The credential-name match is case-insensitive but anchored to the
64940
- * whole param name; values like `user_id=42` or `topic=password-reset`
64941
- * are NOT masked (those are entity references, not credentials).
64942
- */
64943
- function maskUrlCredentials(rawUrl) {
64944
- if (rawUrl.startsWith("/") && !rawUrl.startsWith("//")) {
64945
- const masked = maskUrlCredentials(`http://relative.invalid${rawUrl}`);
64946
- return masked.startsWith("http://relative.invalid") ? masked.slice(23) : rawUrl;
64947
- }
64948
- try {
64949
- const u = new URL(rawUrl);
64950
- let touched = false;
64951
- if (u.username || u.password) {
64952
- u.username = "";
64953
- u.password = "";
64954
- touched = true;
64955
- }
64956
- for (const key of Array.from(u.searchParams.keys())) if (isCredentialParam(key)) {
64957
- u.searchParams.set(key, "***");
64958
- touched = true;
64959
- }
64960
- return touched ? u.toString() : rawUrl;
64961
- } catch {
64962
- return rawUrl;
64963
- }
64964
- }
64965
64869
  var MB = 1024 * 1024;
64966
64870
  1024 * MB, 3072 * MB;
64967
64871
  /**
@@ -65005,7 +64909,7 @@ var RUNTIMES = [
65005
64909
  value: "cuda",
65006
64910
  label: "CUDA"
65007
64911
  });
65008
- if (hw.gpu?.type === "amd") out.push({
64912
+ if (hw.gpu?.type === "amd" && hw.platform === "linux") out.push({
65009
64913
  value: "webgpu",
65010
64914
  label: "WebGPU (AMD iGPU)"
65011
64915
  });
@@ -65116,7 +65020,7 @@ function scoreRuntimes(hw) {
65116
65020
  });
65117
65021
  }
65118
65022
  if (hw.gpu?.type === "amd") {
65119
- scores.push({
65023
+ if (hw.platform === "linux") scores.push({
65120
65024
  runtime: "python",
65121
65025
  backend: "onnx",
65122
65026
  format: "onnx",
@@ -65407,12 +65311,6 @@ Object.defineProperty(exports, "FieldClaimSchema", {
65407
65311
  return FieldClaimSchema;
65408
65312
  }
65409
65313
  });
65410
- Object.defineProperty(exports, "HF_REPO", {
65411
- enumerable: true,
65412
- get: function() {
65413
- return HF_REPO;
65414
- }
65415
- });
65416
65314
  Object.defineProperty(exports, "HUB_MDNS_SERVICE_TYPE", {
65417
65315
  enumerable: true,
65418
65316
  get: function() {
@@ -65461,12 +65359,6 @@ Object.defineProperty(exports, "MINUTES_PER_DAY", {
65461
65359
  return MINUTES_PER_DAY;
65462
65360
  }
65463
65361
  });
65464
- Object.defineProperty(exports, "MODEL_FORMATS", {
65465
- enumerable: true,
65466
- get: function() {
65467
- return MODEL_FORMATS;
65468
- }
65469
- });
65470
65362
  Object.defineProperty(exports, "MOTION_CLOSE_AFTER_MS", {
65471
65363
  enumerable: true,
65472
65364
  get: function() {
@@ -65983,12 +65875,6 @@ Object.defineProperty(exports, "gbToBytes", {
65983
65875
  return gbToBytes;
65984
65876
  }
65985
65877
  });
65986
- Object.defineProperty(exports, "hfModelUrl", {
65987
- enumerable: true,
65988
- get: function() {
65989
- return hfModelUrl;
65990
- }
65991
- });
65992
65878
  Object.defineProperty(exports, "hydrateSchema", {
65993
65879
  enumerable: true,
65994
65880
  get: function() {
@@ -66145,12 +66031,6 @@ Object.defineProperty(exports, "makeSecretMarker", {
66145
66031
  return makeSecretMarker;
66146
66032
  }
66147
66033
  });
66148
- Object.defineProperty(exports, "maskUrlCredentials", {
66149
- enumerable: true,
66150
- get: function() {
66151
- return maskUrlCredentials;
66152
- }
66153
- });
66154
66034
  Object.defineProperty(exports, "mayReadLocation", {
66155
66035
  enumerable: true,
66156
66036
  get: function() {
@@ -66385,12 +66265,6 @@ Object.defineProperty(exports, "scoreRuntimes", {
66385
66265
  return scoreRuntimes;
66386
66266
  }
66387
66267
  });
66388
- Object.defineProperty(exports, "scrubKnownSecrets", {
66389
- enumerable: true,
66390
- get: function() {
66391
- return scrubKnownSecrets;
66392
- }
66393
- });
66394
66268
  Object.defineProperty(exports, "secretTreeFromPaths", {
66395
66269
  enumerable: true,
66396
66270
  get: function() {
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
718
718
  return EventCategory;
719
719
  }({});
720
720
  //#endregion
721
- //#region ../types/dist/sleep-Tkp9dHXv.mjs
721
+ //#region ../types/dist/sleep-vWTnHq9G.mjs
722
722
  /**
723
723
  * The audio chunk plane's byte format, and the ONE expansion from a coded
724
724
  * window to float samples (D455).
@@ -3156,31 +3156,6 @@ var PeerBytesTicketSchema = z.object({
3156
3156
  */
3157
3157
  declaredBytes: z.number().int().nonnegative().nullable()
3158
3158
  });
3159
- /**
3160
- * One store per PROCESS, even when two copies of this module are loaded (an
3161
- * addon bundle next to the framework's): keyed on a registered symbol.
3162
- */
3163
- var STORE_KEY = Symbol.for("camstack.keychain.known-secrets");
3164
- function store() {
3165
- const existing = Reflect.get(globalThis, STORE_KEY);
3166
- if (existing !== void 0 && existing !== null) return existing;
3167
- const created = {
3168
- values: /* @__PURE__ */ new Map(),
3169
- compiled: null
3170
- };
3171
- Reflect.set(globalThis, STORE_KEY, created);
3172
- return created;
3173
- }
3174
- /** Replace every registered value inside `text` with its label. */
3175
- function scrubKnownSecrets(text) {
3176
- const s = store();
3177
- const re = s.compiled;
3178
- if (re === null || text.length < 8) return text;
3179
- re.lastIndex = 0;
3180
- if (!re.test(text)) return text;
3181
- re.lastIndex = 0;
3182
- return text.replace(re, (match) => s.values.get(match) ?? "‹secret›");
3183
- }
3184
3159
  /** Shared Zod schemas used across streaming capabilities. */
3185
3160
  var CamProfileSchema = z.enum([
3186
3161
  "high",
@@ -3912,6 +3887,21 @@ function emitDownForOwnedCaps(registry, owned) {
3912
3887
  for (const { capName, scope } of owned) registry.emitDown(capName, scope);
3913
3888
  }
3914
3889
  /**
3890
+ * The model weight formats a catalog entry can ship. Schema-free on purpose:
3891
+ * `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
3892
+ * (the model downloader in `@camstack/system`) needs only the list and must
3893
+ * reach it through `@camstack/types/addon` without building the cap schema
3894
+ * graph (D28).
3895
+ */
3896
+ var MODEL_FORMATS = [
3897
+ "onnx",
3898
+ "coreml",
3899
+ "openvino",
3900
+ "tflite",
3901
+ "pt",
3902
+ "gguf"
3903
+ ];
3904
+ /**
3915
3905
  * Per-call node pinning for `ctx.api` capability calls.
3916
3906
  *
3917
3907
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -4331,6 +4321,42 @@ var deviceOpsCapability = {
4331
4321
  getRawState: method(z.object({ deviceId: z.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
4332
4322
  }
4333
4323
  };
4324
+ /**
4325
+ * Runtime defaults -- used by ConfigManager.get() for backward compatibility
4326
+ * until Plan B wires all runtime settings to the system_settings SQL table.
4327
+ *
4328
+ * Moved from @camstack/system/config-schema to @camstack/types so that
4329
+ * @camstack/system can reference it without a cross-package kernel import.
4330
+ */
4331
+ var RUNTIME_DEFAULTS = {
4332
+ "features.streaming": true,
4333
+ "features.notifications": true,
4334
+ "features.objectDetection": false,
4335
+ "features.remoteAccess": true,
4336
+ "features.agentCluster": false,
4337
+ "features.smartHome": true,
4338
+ "features.recordings": true,
4339
+ "features.backup": true,
4340
+ "features.repl": true,
4341
+ "retention.detectionEventsDays": 30,
4342
+ "retention.audioLevelsDays": 7,
4343
+ "logging.level": "info",
4344
+ "logging.retentionDays": 30,
4345
+ "eventBus.ringBufferSize": 1e4,
4346
+ "storage.provider": "sqlite-storage",
4347
+ "storage.locations": {
4348
+ data: "camstack-data/data",
4349
+ media: "camstack-data/media",
4350
+ recordings: "camstack-data/recordings",
4351
+ cache: "/tmp/camstack-cache",
4352
+ logs: "camstack-data/logs",
4353
+ models: "camstack-data/models"
4354
+ },
4355
+ providers: [],
4356
+ "ffmpeg.hwAccel": "auto",
4357
+ "ffmpeg.threadCount": 0,
4358
+ "auth.tokenExpiry": "30d"
4359
+ };
4334
4360
  function defOf(schema) {
4335
4361
  return schema._zod?.def ?? {};
4336
4362
  }
@@ -4790,7 +4816,7 @@ function errMsg(err) {
4790
4816
  return String(err);
4791
4817
  }
4792
4818
  //#endregion
4793
- //#region ../types/dist/composition-Bzr7GwgP.mjs
4819
+ //#region ../types/dist/composition-C-WpVYTX.mjs
4794
4820
  var AUDIO_ENCODER_BY_CODEC = {
4795
4821
  opus: "libopus",
4796
4822
  aac: "aac",
@@ -5234,7 +5260,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
5234
5260
  function portable(target) {
5235
5261
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
5236
5262
  }
5237
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
5263
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
5238
5264
  /**
5239
5265
  * THE table "which boolean of this device type counts as HIGH", and the
5240
5266
  * pure evaluator of its EDGE.
@@ -9290,14 +9316,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
9290
9316
  ...CROP_SUPPLY_STEP_IDS,
9291
9317
  ...MASK_SUPPLY_STEP_IDS
9292
9318
  ];
9293
- var MODEL_FORMATS = [
9294
- "onnx",
9295
- "coreml",
9296
- "openvino",
9297
- "tflite",
9298
- "pt",
9299
- "gguf"
9300
- ];
9301
9319
  /**
9302
9320
  * Multi-file format payload.
9303
9321
  *
@@ -50108,44 +50126,6 @@ Object.freeze({
50108
50126
  vehicle: .65,
50109
50127
  animal: .65
50110
50128
  });
50111
- var HF_REPO = "camstack/camstack-models";
50112
- `${HF_REPO}`;
50113
- /**
50114
- * Runtime defaults -- used by ConfigManager.get() for backward compatibility
50115
- * until Plan B wires all runtime settings to the system_settings SQL table.
50116
- *
50117
- * Moved from @camstack/system/config-schema to @camstack/types so that
50118
- * @camstack/system can reference it without a cross-package kernel import.
50119
- */
50120
- var RUNTIME_DEFAULTS = {
50121
- "features.streaming": true,
50122
- "features.notifications": true,
50123
- "features.objectDetection": false,
50124
- "features.remoteAccess": true,
50125
- "features.agentCluster": false,
50126
- "features.smartHome": true,
50127
- "features.recordings": true,
50128
- "features.backup": true,
50129
- "features.repl": true,
50130
- "retention.detectionEventsDays": 30,
50131
- "retention.audioLevelsDays": 7,
50132
- "logging.level": "info",
50133
- "logging.retentionDays": 30,
50134
- "eventBus.ringBufferSize": 1e4,
50135
- "storage.provider": "sqlite-storage",
50136
- "storage.locations": {
50137
- data: "camstack-data/data",
50138
- media: "camstack-data/media",
50139
- recordings: "camstack-data/recordings",
50140
- cache: "/tmp/camstack-cache",
50141
- logs: "camstack-data/logs",
50142
- models: "camstack-data/models"
50143
- },
50144
- providers: [],
50145
- "ffmpeg.hwAccel": "auto",
50146
- "ffmpeg.threadCount": 0,
50147
- "auth.tokenExpiry": "30d"
50148
- };
50149
50129
  /**
50150
50130
  * Accessory device helpers — shared across drivers.
50151
50131
  *
@@ -64886,82 +64866,6 @@ var ADDON_ID_PREFIX = "addon:";
64886
64866
  function bareAddonId(id) {
64887
64867
  return id.startsWith(ADDON_ID_PREFIX) ? id.slice(6) : id;
64888
64868
  }
64889
- function hfModelUrl(repo, path) {
64890
- return `https://huggingface.co/${repo}/resolve/main/${path}`;
64891
- }
64892
- /**
64893
- * Names that, when used as URL query parameters, almost certainly carry
64894
- * a secret. Matching is case-insensitive and anchored to the full param
64895
- * name to avoid false positives like `user_id` (an entity reference, not
64896
- * a credential) or `topic=password-reset` (a value happens to contain
64897
- * the substring "password" but the param name is unrelated).
64898
- *
64899
- * Add new patterns here as we encounter cameras/APIs that leak through
64900
- * the existing list.
64901
- */
64902
- var CREDENTIAL_PARAM_PATTERNS = [
64903
- /^user$/i,
64904
- /^usr$/i,
64905
- /^username$/i,
64906
- /^password$/i,
64907
- /^pwd$/i,
64908
- /^pass$/i,
64909
- /^passwd$/i,
64910
- /^secret$/i,
64911
- /^token$/i,
64912
- /^auth$/i,
64913
- /^auth[_-]?token$/i,
64914
- /^bearer$/i,
64915
- /^api[_-]?key$/i,
64916
- /^access[_-]?token$/i,
64917
- /^refresh[_-]?token$/i,
64918
- /^bridge$/i,
64919
- /^code$/i,
64920
- /^state$/i,
64921
- /^challenge$/i,
64922
- /^link$/i
64923
- ];
64924
- function isCredentialParam(name) {
64925
- return CREDENTIAL_PARAM_PATTERNS.some((re) => re.test(name));
64926
- }
64927
- /**
64928
- * Redact secrets we may surface in logs or telemetry:
64929
- * 1. `userinfo` (`user:password@host`) — the classic RTSP shape.
64930
- * 2. Query-string credential params (`?user=...&password=...`) — the
64931
- * Reolink RTMP shape and several HTTP-pushed-stream APIs.
64932
- *
64933
- * Returns the original string verbatim when the input is not a parseable
64934
- * URL — a log helper must never throw. Param values are replaced with
64935
- * `***` so an operator reading logs still sees WHICH credential was
64936
- * present (useful for debugging "wrong password" issues) without
64937
- * exposing the value.
64938
- *
64939
- * The credential-name match is case-insensitive but anchored to the
64940
- * whole param name; values like `user_id=42` or `topic=password-reset`
64941
- * are NOT masked (those are entity references, not credentials).
64942
- */
64943
- function maskUrlCredentials(rawUrl) {
64944
- if (rawUrl.startsWith("/") && !rawUrl.startsWith("//")) {
64945
- const masked = maskUrlCredentials(`http://relative.invalid${rawUrl}`);
64946
- return masked.startsWith("http://relative.invalid") ? masked.slice(23) : rawUrl;
64947
- }
64948
- try {
64949
- const u = new URL(rawUrl);
64950
- let touched = false;
64951
- if (u.username || u.password) {
64952
- u.username = "";
64953
- u.password = "";
64954
- touched = true;
64955
- }
64956
- for (const key of Array.from(u.searchParams.keys())) if (isCredentialParam(key)) {
64957
- u.searchParams.set(key, "***");
64958
- touched = true;
64959
- }
64960
- return touched ? u.toString() : rawUrl;
64961
- } catch {
64962
- return rawUrl;
64963
- }
64964
- }
64965
64869
  var MB = 1024 * 1024;
64966
64870
  1024 * MB, 3072 * MB;
64967
64871
  /**
@@ -65005,7 +64909,7 @@ var RUNTIMES = [
65005
64909
  value: "cuda",
65006
64910
  label: "CUDA"
65007
64911
  });
65008
- if (hw.gpu?.type === "amd") out.push({
64912
+ if (hw.gpu?.type === "amd" && hw.platform === "linux") out.push({
65009
64913
  value: "webgpu",
65010
64914
  label: "WebGPU (AMD iGPU)"
65011
64915
  });
@@ -65116,7 +65020,7 @@ function scoreRuntimes(hw) {
65116
65020
  });
65117
65021
  }
65118
65022
  if (hw.gpu?.type === "amd") {
65119
- scores.push({
65023
+ if (hw.platform === "linux") scores.push({
65120
65024
  runtime: "python",
65121
65025
  backend: "onnx",
65122
65026
  format: "onnx",
@@ -65209,4 +65113,4 @@ function enumerateInferenceDevices(hw) {
65209
65113
  return out;
65210
65114
  }
65211
65115
  //#endregion
65212
- export { bareAddonId as $, cloneStatefulExpressionMemory as $n, secretTreeFromPaths as $r, locationIconKey as $t, LegacyStorageLocationDefaultSchema as A, runtimeStatePolicyFor as An, defineCustomActions as Ar, evictionPolicyOfLocation as At, STREAM_PROFILE_META as B, storageProviderCapability as Bn, isSecretMarker as Br, isArrayOutputSchema as Bt, FieldClaimModeSchema as C, resolveBucketMs as Cn, asNumber as Cr, deviceManagerCapability as Ct, HUB_MDNS_TXT_KEYS as D, resolveLocationMode as Dn, collectZodSecretPaths as Dr, enumerateItemArrayFields as Dt, HUB_MDNS_SERVICE_TYPE as E, resolveHubAddressRoles as En, collectSecretConfigKeys as Er, enumerateInferenceDevices as Et, MOTION_CLOSE_AFTER_MS as F, siteZoneKey as Fn, hydrateSchema as Fr, foldSnapshotByFunction as Ft, StorageMigrationJobSchema as G, validateComposition as Gn, parseJsonObject as Gr, isVoidInput as Gt, StorageCleanupJobSchema as H, streamQualityLabel as Hn, makeSecretMarker as Hr, isDefaultAppConnectionEndpoint as Ht, RECORDING_SOURCE_CAMSTACK_ADDON as I, snapshotCapability as In, isDeviceConfigCap as Ir, formatMinutes as It, addonSettingsCapability as J, vectorIndexDimConflictError as Jn, readinessKey as Jr, keychainCapability as Jt, UserRecordSchema as K, validateCustomAddress as Kn, parseJsonUnknown as Kr, kebabToCamel as Kt, RUNTIME_DEFAULTS as L, storageCapability as Ln, isEvent as Lr, gbToBytes as Lt, METHOD_ACCESS_MAP as M, scopesAllowDeviceCap as Mn, emitReadiness as Mr, expressionContainsBuiltinCall as Mt, MINUTES_PER_DAY as N, scoreRuntimes as Nn, expandCapMethods as Nr, extractNestedAddonId as Nt, KEYCHAIN_RESET_TRIGGER_ACTOR as O, resolveMethodAuth as On, createEvent as Or, enumerateSchemaFields as Ot, MODEL_FORMATS as P, settingsStoreCapability as Pn, formatSecretScope as Pr, filesystemBrowseCapability as Pt, backupCapability as Q, buildFfmpegArgs as Qn, scrubKnownSecrets as Qr, localNetworkCapability as Qt, RecordingStatusSchema as R, storageMigrationCapability as Rn, isKeychainStoredField as Rr, hfModelUrl as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveAppConnections as Sn, asJsonObject as Sr, deviceExtensionCapability as St, HF_REPO as T, resolveCoreBlockFiles as Tn, buildSecretRef as Tr, deviceStatusCapability as Tt, StorageLocationModeSchema as U, supportedRuntimes as Un, nodePin as Ur, isLocationEnabled as Ut, ScopedTokenSchema as V, streamCatalogCapability as Vn, isSecretMarkerLike as Vr, isCollectionArrayMethod as Vt, StorageLocationTypeSchema as W, userManagementCapability as Wn, normalizeSecretOwner as Wr, isObjectInput as Wt, alertsCapability as X, withLocationMode as Xn, resolveSecretMarkers as Xr, legacyModeOf as Xt, addonWidgetsCapability as Y, vectorStoreCapability as Yn, resolveCapMount as Yr, legacyAutoLinkIds as Yt, authProviderCapability as Z, COMPOSER_ADDON_ID as Zn, scopeKey as Zr, lifecycleJobSchema as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, platformProbeCapability as _n, REDACTED_SECRET as _r, declarationOwnerNodeId as _t, BatteryStatusSchema as a, EventCategory as ai, mayWriteToLocation as an, compositionSourceKey as ar, checkRoleAddress as at, DeclaredDevices as b, reducePoints as bn, SECRET_CLEAR as br, deriveBatteryPresence as bt, CAP_NAMES_WITH_STATUS as c, modeMayWrite as cn, toExpressionValue as cr, compositionSourceRefs as ct, CORE_BLOCKS_ADDON_ID as d, normalizeUnit as dn, DeviceType as dr, coreBlockIdFromAddonId as dt, secretTreeFromSchema as ei, logDestinationCapability as en, composedDeviceRef as er, batteryCapability as et, CORE_BLOCK_ADDON_PREFIX as f, objectInputDeclaresAddonId as fn, errMsg as fr, coreBlockSourceKind as ft, DATABASE_SNAPSHOT_SUFFIX as g, planComposition as gn, DEVICE_STATUS_METHOD as gr, databaseSnapshotCapability as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, pickAppLinkHub as hn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as hr, dataStoreProviderCapability as ht, BaseDevice as i, transformSecretWrite as ii, mayReadLocation as in, compositionSliceKey as ir, cameraGridLayoutCapability as it, LocationIconIdSchema as j, scopesAllowAddon as jn, emitDownForOwnedCaps as jr, expandContainer as jt, LOG_LEVEL_RANK as k, resolveNotificationTapAddress as kn, customAction as kr, evaluateCompositionField as kt, COMPOSED_ITEM_FIXED_FIELDS as l, motionCapability as ln, DeviceFeature as lr, coreBlockAddonId as lt, CoreBlockSchema as m, parseStreamParamsFormPatch as mn, DATAPLANE_SECRET_HEADER as mr, createDeviceExtensionProvider as mt, AlertSchema as n, toNodeId as ni, looseSchema as nn, compositionFeatureEnabled as nr, buildStreamParamsConfigSchema as nt, CAMERA_SWITCH_ORDER as o, memoizePinnedFfmpeg as on, createStatefulExpressionMemory as or, composerCapability as ot, CalendarPreferencesSchema as p, objectInputDeclaresRequiredDeviceId as pn, BaseAddon as pr, coreBlocksCapability as pt, addonPagesCapability as q, vectorDimFromBase64 as qn, parseSecretRef as qr, keychainAdminCapability as qt, ApiKeyRecordSchema as r, toSecretFieldView as ri, maskUrlCredentials as rn, compositionItemFieldPath as rr, calendarsCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, metricsProviderCapability as sn, disarmRoseMemory as sr, compositionFieldKey as st, ALL_CAPABILITY_DEFINITIONS as t, sleep as ti, logLevelAtMost as tn, composedDeviceStableId as tr, buildCapabilityLookup as tt, COMPOSER_RUNNER_ID as u, normalizeCoreBlockWrite as un, DeviceRole as ur, coreBlockComposition as ut, DAY_NAMES as v, procedureAuthKey as vn, ReadinessRegistry as vr, decodeVectorBase64 as vt, FieldClaimSchema as w, resolveCoreBlockEntry as wn, asString$1 as wr, deviceStateCapability as wt, DeviceStatusSchema as x, replacedFieldKeys as xn, WELL_KNOWN_TAB_MAP as xr, describeComposableCaps as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, ptzAutotrackCapability as yn, ReadinessTimeoutError as yr, defineExtensionSlotProvider as yt, STORAGE_ACCESS_FALLBACK as z, storageOccupancyCapability as zn, isSecretClear as zr, isAppLinkBase as zt };
65116
+ export { buildStreamParamsConfigSchema as $, compositionSliceKey as $n, transformSecretWrite as $r, mayReadLocation as $t, LocationIconIdSchema as A, siteZoneKey as An, formatSecretScope as Ar, extractNestedAddonId as At, StorageLocationModeSchema as B, validateComposition as Bn, normalizeSecretOwner as Br, isObjectInput as Bt, FieldClaimModeSchema as C, resolveMethodAuth as Cn, collectZodSecretPaths as Cr, enumerateInferenceDevices as Ct, KEYCHAIN_RESET_TRIGGER_ACTOR as D, scopesAllowDeviceCap as Dn, emitDownForOwnedCaps as Dr, evictionPolicyOfLocation as Dt, HUB_MDNS_TXT_KEYS as E, scopesAllowAddon as En, defineCustomActions as Er, evaluateCompositionField as Et, RecordingStatusSchema as F, storageProviderCapability as Fn, isSecretClear as Fr, isAppLinkBase as Ft, addonSettingsCapability as G, withLocationMode as Gn, resolveCapMount as Gr, legacyAutoLinkIds as Gt, StorageMigrationJobSchema as H, vectorDimFromBase64 as Hn, parseJsonUnknown as Hr, kebabToCamel as Ht, STORAGE_ACCESS_FALLBACK as I, streamCatalogCapability as In, isSecretMarker as Ir, isArrayOutputSchema as It, authProviderCapability as J, cloneStatefulExpressionMemory as Jn, secretTreeFromPaths as Jr, localNetworkCapability as Jt, addonWidgetsCapability as K, COMPOSER_ADDON_ID as Kn, resolveSecretMarkers as Kr, legacyModeOf as Kt, STREAM_PROFILE_META as L, streamQualityLabel as Ln, isSecretMarkerLike as Lr, isCollectionArrayMethod as Lt, MINUTES_PER_DAY as M, storageCapability as Mn, isDeviceConfigCap as Mr, foldSnapshotByFunction as Mt, MOTION_CLOSE_AFTER_MS as N, storageMigrationCapability as Nn, isEvent as Nr, formatMinutes as Nt, LOG_LEVEL_RANK as O, scoreRuntimes as On, emitReadiness as Or, expandContainer as Ot, RECORDING_SOURCE_CAMSTACK_ADDON as P, storageOccupancyCapability as Pn, isKeychainStoredField as Pr, gbToBytes as Pt, buildCapabilityLookup as Q, compositionItemFieldPath as Qn, toSecretFieldView as Qr, looseSchema as Qt, ScopedTokenSchema as R, supportedRuntimes as Rn, makeSecretMarker as Rr, isDefaultAppConnectionEndpoint as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveLocationMode as Sn, collectSecretConfigKeys as Sr, deviceStatusCapability as St, HUB_MDNS_SERVICE_TYPE as T, runtimeStatePolicyFor as Tn, customAction as Tr, enumerateSchemaFields as Tt, UserRecordSchema as U, vectorIndexDimConflictError as Un, parseSecretRef as Ur, keychainAdminCapability as Ut, StorageLocationTypeSchema as V, validateCustomAddress as Vn, parseJsonObject as Vr, isVoidInput as Vt, addonPagesCapability as W, vectorStoreCapability as Wn, readinessKey as Wr, keychainCapability as Wt, bareAddonId as X, composedDeviceStableId as Xn, sleep as Xr, logDestinationCapability as Xt, backupCapability as Y, composedDeviceRef as Yn, secretTreeFromSchema as Yr, locationIconKey as Yt, batteryCapability as Z, compositionFeatureEnabled as Zn, toNodeId as Zr, logLevelAtMost as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, resolveAppConnections as _n, WELL_KNOWN_TAB_MAP as _r, deriveBatteryPresence as _t, BatteryStatusSchema as a, normalizeCoreBlockWrite as an, DeviceRole as ar, compositionSourceRefs as at, DeclaredDevices as b, resolveCoreBlockFiles as bn, asString$1 as br, deviceManagerCapability as bt, CAP_NAMES_WITH_STATUS as c, objectInputDeclaresRequiredDeviceId as cn, BaseAddon as cr, coreBlockIdFromAddonId as ct, CORE_BLOCKS_ADDON_ID as d, planComposition as dn, DEVICE_STATUS_METHOD as dr, createDeviceExtensionProvider as dt, EventCategory as ei, mayWriteToLocation as en, compositionSourceKey as er, calendarsCapability as et, CORE_BLOCK_ADDON_PREFIX as f, platformProbeCapability as fn, REDACTED_SECRET as fr, dataStoreProviderCapability as ft, DATABASE_SNAPSHOT_SUFFIX as g, replacedFieldKeys as gn, SECRET_CLEAR as gr, defineExtensionSlotProvider as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, reducePoints as hn, ReadinessTimeoutError as hr, decodeVectorBase64 as ht, BaseDevice as i, motionCapability as in, DeviceFeature as ir, compositionFieldKey as it, METHOD_ACCESS_MAP as j, snapshotCapability as jn, hydrateSchema as jr, filesystemBrowseCapability as jt, LegacyStorageLocationDefaultSchema as k, settingsStoreCapability as kn, expandCapMethods as kr, expressionContainsBuiltinCall as kt, COMPOSED_ITEM_FIXED_FIELDS as l, parseStreamParamsFormPatch as ln, DATAPLANE_SECRET_HEADER as lr, coreBlockSourceKind as lt, CoreBlockSchema as m, ptzAutotrackCapability as mn, ReadinessRegistry as mr, declarationOwnerNodeId as mt, AlertSchema as n, metricsProviderCapability as nn, disarmRoseMemory as nr, checkRoleAddress as nt, CAMERA_SWITCH_ORDER as o, normalizeUnit as on, DeviceType as or, coreBlockAddonId as ot, CalendarPreferencesSchema as p, procedureAuthKey as pn, RUNTIME_DEFAULTS as pr, databaseSnapshotCapability as pt, alertsCapability as q, buildFfmpegArgs as qn, scopeKey as qr, lifecycleJobSchema as qt, ApiKeyRecordSchema as r, modeMayWrite as rn, toExpressionValue as rr, composerCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, objectInputDeclaresAddonId as sn, errMsg as sr, coreBlockComposition as st, ALL_CAPABILITY_DEFINITIONS as t, memoizePinnedFfmpeg as tn, createStatefulExpressionMemory as tr, cameraGridLayoutCapability as tt, COMPOSER_RUNNER_ID as u, pickAppLinkHub as un, DEVICE_SETTINGS_CONTRIBUTION_METHODS as ur, coreBlocksCapability as ut, DAY_NAMES as v, resolveBucketMs as vn, asJsonObject as vr, describeComposableCaps as vt, FieldClaimSchema as w, resolveNotificationTapAddress as wn, createEvent as wr, enumerateItemArrayFields as wt, DeviceStatusSchema as x, resolveHubAddressRoles as xn, buildSecretRef as xr, deviceStateCapability as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, resolveCoreBlockEntry as yn, asNumber as yr, deviceExtensionCapability as yt, StorageCleanupJobSchema as z, userManagementCapability as zn, nodePin as zr, isLocationEnabled as zt };