@camstack/system 1.2.417 → 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 (78) hide show
  1. package/dist/addon-utils.js +1 -1
  2. package/dist/addon-utils.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +2 -2
  18. package/dist/builtins/composer/composer.addon.mjs +2 -2
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  24. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  25. package/dist/builtins/hub-forwarder/index.js +1 -1
  26. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  27. package/dist/builtins/keychain/index.js +7 -9
  28. package/dist/builtins/keychain/index.mjs +7 -9
  29. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  31. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  32. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  33. package/dist/builtins/local-network/local-network.addon.js +2 -2
  34. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  35. package/dist/builtins/loki-logging/index.js +1 -1
  36. package/dist/builtins/loki-logging/index.mjs +1 -1
  37. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  39. package/dist/builtins/platform-probe/amd-npu.d.ts +6 -0
  40. package/dist/builtins/platform-probe/index.js +317 -19
  41. package/dist/builtins/platform-probe/index.mjs +318 -20
  42. package/dist/builtins/platform-probe/platform-scorer.d.ts +4 -0
  43. package/dist/builtins/platform-probe/windows-hardware.d.ts +77 -0
  44. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  46. package/dist/builtins/snapshot/index.js +1 -1
  47. package/dist/builtins/snapshot/index.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/system-config/system-config.addon.js +2 -2
  55. package/dist/builtins/system-config/system-config.addon.mjs +2 -2
  56. package/dist/builtins/winston-logging/index.js +1 -1
  57. package/dist/builtins/winston-logging/index.mjs +1 -1
  58. package/dist/{composition-sources-CndJVssc.mjs → composition-sources-0cPw9E0M.mjs} +1 -1
  59. package/dist/{composition-sources-ChAX2Kdo.js → composition-sources-BVjuMvpb.js} +1 -1
  60. package/dist/{constants-VXvZkGgw.js → constants-Aj0OBqlt.js} +1 -1
  61. package/dist/{constants-BzxwnfDc.mjs → constants-C8T7u1_Z.mjs} +1 -1
  62. package/dist/{custom-action-registry-DHv0kYcT.mjs → custom-action-registry-BQnbN0DP.mjs} +1 -2
  63. package/dist/{custom-action-registry-Bb28ibZV.js → custom-action-registry-Bf_YnagS.js} +3 -4
  64. package/dist/{dist-BMOD9OyH.js → dist-DVUg8e1T.js} +56 -72
  65. package/dist/{dist-H_RapIeM.mjs → dist-DlmdESNT.mjs} +57 -55
  66. package/dist/index.js +38 -10
  67. package/dist/index.mjs +38 -10
  68. package/dist/{jwt-signing-key-xQxqpwMC.mjs → jwt-signing-key-CGg61A5v.mjs} +1 -1
  69. package/dist/{jwt-signing-key-BiKHENST.js → jwt-signing-key-Jyu81jZR.js} +1 -1
  70. package/dist/{restore-archive-BobsETEp.js → restore-archive-Bq5PpQ-H.js} +1 -1
  71. package/dist/{restore-archive-CCAQicV-.mjs → restore-archive-DVo5ooBt.mjs} +1 -1
  72. package/dist/{retired-settings-keys-BMq2u4Wv.js → retired-settings-keys-CihMX6h9.js} +1 -1
  73. package/dist/{retired-settings-keys-CwL4zHLg.mjs → retired-settings-keys-k_XuC-Mt.mjs} +1 -1
  74. package/dist/{tls-C0TRPfqc.js → tls-BgImdxCO.js} +4 -11
  75. package/dist/{tls-D-2dPY-5.mjs → tls-CaOLZ09W.mjs} +5 -12
  76. package/package.json +1 -1
  77. package/dist/amd-npu-B-QyyMyF.js +0 -53
  78. package/dist/amd-npu-Db_SoSuL.mjs +0 -52
@@ -1,15 +1,14 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-BMOD9OyH.js");
3
2
  let node_crypto = require("node:crypto");
4
3
  let node_path = require("node:path");
5
4
  node_path = require_chunk.__toESM(node_path);
6
5
  let node_fs = require("node:fs");
7
6
  node_fs = require_chunk.__toESM(node_fs);
8
7
  let node_util = require("node:util");
8
+ let _camstack_types_addon = require("@camstack/types/addon");
9
9
  let node_http = require("node:http");
10
10
  let node_zlib = require("node:zlib");
11
11
  let node_perf_hooks = require("node:perf_hooks");
12
- let _camstack_types_addon = require("@camstack/types/addon");
13
12
  //#region src/download/hosted-model-revisions.ts
14
13
  /**
15
14
  * GENERATED by `scripts/check-hosted-model-revisions.ts --write` — DO NOT EDIT.
@@ -439,7 +438,7 @@ function readRevisionRecord(modelPath) {
439
438
  }
440
439
  }
441
440
  /** The CamStack model mirror. Every artefact under it has a generated revision. */
442
- var HOSTED_MODEL_MIRROR_PREFIX = require_dist.hfModelUrl(require_dist.HF_REPO, "");
441
+ var HOSTED_MODEL_MIRROR_PREFIX = (0, _camstack_types_addon.hfModelUrl)(_camstack_types_addon.HF_REPO, "");
443
442
  /**
444
443
  * The revision a format must be at — the ONE rule every model download path
445
444
  * reads (D743, D744). An inline `revision` wins; otherwise a format hosted on
@@ -609,7 +608,7 @@ async function adoptModelRevisions(modelsDir, entries) {
609
608
  };
610
609
  }
611
610
  function isModelFormat(value) {
612
- return require_dist.MODEL_FORMATS.some((f) => f === value);
611
+ return _camstack_types_addon.MODEL_FORMATS.some((f) => f === value);
613
612
  }
614
613
  /** Compute the on-disk path for a given model + format, even when not yet downloaded. */
615
614
  function getModelFilePath(modelsDir, entry, format) {
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
718
718
  return EventCategory;
719
719
  }({});
720
720
  //#endregion
721
- //#region ../types/dist/sleep-BjDbnx6-.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).
@@ -3887,6 +3887,21 @@ function emitDownForOwnedCaps(registry, owned) {
3887
3887
  for (const { capName, scope } of owned) registry.emitDown(capName, scope);
3888
3888
  }
3889
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
+ /**
3890
3905
  * Per-call node pinning for `ctx.api` capability calls.
3891
3906
  *
3892
3907
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -4306,6 +4321,42 @@ var deviceOpsCapability = {
4306
4321
  getRawState: method(zod.z.object({ deviceId: zod.z.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
4307
4322
  }
4308
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
+ };
4309
4360
  function defOf(schema) {
4310
4361
  return schema._zod?.def ?? {};
4311
4362
  }
@@ -4765,7 +4816,7 @@ function errMsg(err) {
4765
4816
  return String(err);
4766
4817
  }
4767
4818
  //#endregion
4768
- //#region ../types/dist/composition-Bzr7GwgP.mjs
4819
+ //#region ../types/dist/composition-C-WpVYTX.mjs
4769
4820
  var AUDIO_ENCODER_BY_CODEC = {
4770
4821
  opus: "libopus",
4771
4822
  aac: "aac",
@@ -5209,7 +5260,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
5209
5260
  function portable(target) {
5210
5261
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
5211
5262
  }
5212
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
5263
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
5213
5264
  /**
5214
5265
  * THE table "which boolean of this device type counts as HIGH", and the
5215
5266
  * pure evaluator of its EDGE.
@@ -9265,14 +9316,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
9265
9316
  ...CROP_SUPPLY_STEP_IDS,
9266
9317
  ...MASK_SUPPLY_STEP_IDS
9267
9318
  ];
9268
- var MODEL_FORMATS = [
9269
- "onnx",
9270
- "coreml",
9271
- "openvino",
9272
- "tflite",
9273
- "pt",
9274
- "gguf"
9275
- ];
9276
9319
  /**
9277
9320
  * Multi-file format payload.
9278
9321
  *
@@ -50083,44 +50126,6 @@ Object.freeze({
50083
50126
  vehicle: .65,
50084
50127
  animal: .65
50085
50128
  });
50086
- var HF_REPO = "camstack/camstack-models";
50087
- `${HF_REPO}`;
50088
- /**
50089
- * Runtime defaults -- used by ConfigManager.get() for backward compatibility
50090
- * until Plan B wires all runtime settings to the system_settings SQL table.
50091
- *
50092
- * Moved from @camstack/system/config-schema to @camstack/types so that
50093
- * @camstack/system can reference it without a cross-package kernel import.
50094
- */
50095
- var RUNTIME_DEFAULTS = {
50096
- "features.streaming": true,
50097
- "features.notifications": true,
50098
- "features.objectDetection": false,
50099
- "features.remoteAccess": true,
50100
- "features.agentCluster": false,
50101
- "features.smartHome": true,
50102
- "features.recordings": true,
50103
- "features.backup": true,
50104
- "features.repl": true,
50105
- "retention.detectionEventsDays": 30,
50106
- "retention.audioLevelsDays": 7,
50107
- "logging.level": "info",
50108
- "logging.retentionDays": 30,
50109
- "eventBus.ringBufferSize": 1e4,
50110
- "storage.provider": "sqlite-storage",
50111
- "storage.locations": {
50112
- data: "camstack-data/data",
50113
- media: "camstack-data/media",
50114
- recordings: "camstack-data/recordings",
50115
- cache: "/tmp/camstack-cache",
50116
- logs: "camstack-data/logs",
50117
- models: "camstack-data/models"
50118
- },
50119
- providers: [],
50120
- "ffmpeg.hwAccel": "auto",
50121
- "ffmpeg.threadCount": 0,
50122
- "auth.tokenExpiry": "30d"
50123
- };
50124
50129
  /**
50125
50130
  * Accessory device helpers — shared across drivers.
50126
50131
  *
@@ -64861,9 +64866,6 @@ var ADDON_ID_PREFIX = "addon:";
64861
64866
  function bareAddonId(id) {
64862
64867
  return id.startsWith(ADDON_ID_PREFIX) ? id.slice(6) : id;
64863
64868
  }
64864
- function hfModelUrl(repo, path) {
64865
- return `https://huggingface.co/${repo}/resolve/main/${path}`;
64866
- }
64867
64869
  var MB = 1024 * 1024;
64868
64870
  1024 * MB, 3072 * MB;
64869
64871
  /**
@@ -64907,7 +64909,7 @@ var RUNTIMES = [
64907
64909
  value: "cuda",
64908
64910
  label: "CUDA"
64909
64911
  });
64910
- if (hw.gpu?.type === "amd") out.push({
64912
+ if (hw.gpu?.type === "amd" && hw.platform === "linux") out.push({
64911
64913
  value: "webgpu",
64912
64914
  label: "WebGPU (AMD iGPU)"
64913
64915
  });
@@ -65018,7 +65020,7 @@ function scoreRuntimes(hw) {
65018
65020
  });
65019
65021
  }
65020
65022
  if (hw.gpu?.type === "amd") {
65021
- scores.push({
65023
+ if (hw.platform === "linux") scores.push({
65022
65024
  runtime: "python",
65023
65025
  backend: "onnx",
65024
65026
  format: "onnx",
@@ -65309,12 +65311,6 @@ Object.defineProperty(exports, "FieldClaimSchema", {
65309
65311
  return FieldClaimSchema;
65310
65312
  }
65311
65313
  });
65312
- Object.defineProperty(exports, "HF_REPO", {
65313
- enumerable: true,
65314
- get: function() {
65315
- return HF_REPO;
65316
- }
65317
- });
65318
65314
  Object.defineProperty(exports, "HUB_MDNS_SERVICE_TYPE", {
65319
65315
  enumerable: true,
65320
65316
  get: function() {
@@ -65363,12 +65359,6 @@ Object.defineProperty(exports, "MINUTES_PER_DAY", {
65363
65359
  return MINUTES_PER_DAY;
65364
65360
  }
65365
65361
  });
65366
- Object.defineProperty(exports, "MODEL_FORMATS", {
65367
- enumerable: true,
65368
- get: function() {
65369
- return MODEL_FORMATS;
65370
- }
65371
- });
65372
65362
  Object.defineProperty(exports, "MOTION_CLOSE_AFTER_MS", {
65373
65363
  enumerable: true,
65374
65364
  get: function() {
@@ -65885,12 +65875,6 @@ Object.defineProperty(exports, "gbToBytes", {
65885
65875
  return gbToBytes;
65886
65876
  }
65887
65877
  });
65888
- Object.defineProperty(exports, "hfModelUrl", {
65889
- enumerable: true,
65890
- get: function() {
65891
- return hfModelUrl;
65892
- }
65893
- });
65894
65878
  Object.defineProperty(exports, "hydrateSchema", {
65895
65879
  enumerable: true,
65896
65880
  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-BjDbnx6-.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).
@@ -3887,6 +3887,21 @@ function emitDownForOwnedCaps(registry, owned) {
3887
3887
  for (const { capName, scope } of owned) registry.emitDown(capName, scope);
3888
3888
  }
3889
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
+ /**
3890
3905
  * Per-call node pinning for `ctx.api` capability calls.
3891
3906
  *
3892
3907
  * A capability call normally resolves to its DEFAULT provider — a `singleton`
@@ -4306,6 +4321,42 @@ var deviceOpsCapability = {
4306
4321
  getRawState: method(z.object({ deviceId: z.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
4307
4322
  }
4308
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
+ };
4309
4360
  function defOf(schema) {
4310
4361
  return schema._zod?.def ?? {};
4311
4362
  }
@@ -4765,7 +4816,7 @@ function errMsg(err) {
4765
4816
  return String(err);
4766
4817
  }
4767
4818
  //#endregion
4768
- //#region ../types/dist/composition-Bzr7GwgP.mjs
4819
+ //#region ../types/dist/composition-C-WpVYTX.mjs
4769
4820
  var AUDIO_ENCODER_BY_CODEC = {
4770
4821
  opus: "libopus",
4771
4822
  aac: "aac",
@@ -5209,7 +5260,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
5209
5260
  function portable(target) {
5210
5261
  return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
5211
5262
  }
5212
- portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
5263
+ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
5213
5264
  /**
5214
5265
  * THE table "which boolean of this device type counts as HIGH", and the
5215
5266
  * pure evaluator of its EDGE.
@@ -9265,14 +9316,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
9265
9316
  ...CROP_SUPPLY_STEP_IDS,
9266
9317
  ...MASK_SUPPLY_STEP_IDS
9267
9318
  ];
9268
- var MODEL_FORMATS = [
9269
- "onnx",
9270
- "coreml",
9271
- "openvino",
9272
- "tflite",
9273
- "pt",
9274
- "gguf"
9275
- ];
9276
9319
  /**
9277
9320
  * Multi-file format payload.
9278
9321
  *
@@ -50083,44 +50126,6 @@ Object.freeze({
50083
50126
  vehicle: .65,
50084
50127
  animal: .65
50085
50128
  });
50086
- var HF_REPO = "camstack/camstack-models";
50087
- `${HF_REPO}`;
50088
- /**
50089
- * Runtime defaults -- used by ConfigManager.get() for backward compatibility
50090
- * until Plan B wires all runtime settings to the system_settings SQL table.
50091
- *
50092
- * Moved from @camstack/system/config-schema to @camstack/types so that
50093
- * @camstack/system can reference it without a cross-package kernel import.
50094
- */
50095
- var RUNTIME_DEFAULTS = {
50096
- "features.streaming": true,
50097
- "features.notifications": true,
50098
- "features.objectDetection": false,
50099
- "features.remoteAccess": true,
50100
- "features.agentCluster": false,
50101
- "features.smartHome": true,
50102
- "features.recordings": true,
50103
- "features.backup": true,
50104
- "features.repl": true,
50105
- "retention.detectionEventsDays": 30,
50106
- "retention.audioLevelsDays": 7,
50107
- "logging.level": "info",
50108
- "logging.retentionDays": 30,
50109
- "eventBus.ringBufferSize": 1e4,
50110
- "storage.provider": "sqlite-storage",
50111
- "storage.locations": {
50112
- data: "camstack-data/data",
50113
- media: "camstack-data/media",
50114
- recordings: "camstack-data/recordings",
50115
- cache: "/tmp/camstack-cache",
50116
- logs: "camstack-data/logs",
50117
- models: "camstack-data/models"
50118
- },
50119
- providers: [],
50120
- "ffmpeg.hwAccel": "auto",
50121
- "ffmpeg.threadCount": 0,
50122
- "auth.tokenExpiry": "30d"
50123
- };
50124
50129
  /**
50125
50130
  * Accessory device helpers — shared across drivers.
50126
50131
  *
@@ -64861,9 +64866,6 @@ var ADDON_ID_PREFIX = "addon:";
64861
64866
  function bareAddonId(id) {
64862
64867
  return id.startsWith(ADDON_ID_PREFIX) ? id.slice(6) : id;
64863
64868
  }
64864
- function hfModelUrl(repo, path) {
64865
- return `https://huggingface.co/${repo}/resolve/main/${path}`;
64866
- }
64867
64869
  var MB = 1024 * 1024;
64868
64870
  1024 * MB, 3072 * MB;
64869
64871
  /**
@@ -64907,7 +64909,7 @@ var RUNTIMES = [
64907
64909
  value: "cuda",
64908
64910
  label: "CUDA"
64909
64911
  });
64910
- if (hw.gpu?.type === "amd") out.push({
64912
+ if (hw.gpu?.type === "amd" && hw.platform === "linux") out.push({
64911
64913
  value: "webgpu",
64912
64914
  label: "WebGPU (AMD iGPU)"
64913
64915
  });
@@ -65018,7 +65020,7 @@ function scoreRuntimes(hw) {
65018
65020
  });
65019
65021
  }
65020
65022
  if (hw.gpu?.type === "amd") {
65021
- scores.push({
65023
+ if (hw.platform === "linux") scores.push({
65022
65024
  runtime: "python",
65023
65025
  backend: "onnx",
65024
65026
  format: "onnx",
@@ -65111,4 +65113,4 @@ function enumerateInferenceDevices(hw) {
65111
65113
  return out;
65112
65114
  }
65113
65115
  //#endregion
65114
- export { bareAddonId as $, composedDeviceRef as $n, sleep as $r, locationIconKey as $t, LegacyStorageLocationDefaultSchema as A, scopesAllowAddon as An, emitDownForOwnedCaps as Ar, evictionPolicyOfLocation as At, STREAM_PROFILE_META as B, streamCatalogCapability as Bn, isSecretMarkerLike as Br, isArrayOutputSchema as Bt, FieldClaimModeSchema as C, resolveCoreBlockEntry as Cn, asString$1 as Cr, deviceManagerCapability as Ct, HUB_MDNS_TXT_KEYS as D, resolveMethodAuth as Dn, createEvent as Dr, enumerateItemArrayFields as Dt, HUB_MDNS_SERVICE_TYPE as E, resolveLocationMode as En, collectZodSecretPaths as Er, enumerateInferenceDevices as Et, MOTION_CLOSE_AFTER_MS as F, snapshotCapability as Fn, isDeviceConfigCap as Fr, foldSnapshotByFunction as Ft, StorageMigrationJobSchema as G, validateCustomAddress as Gn, parseJsonUnknown as Gr, isVoidInput as Gt, StorageCleanupJobSchema as H, supportedRuntimes as Hn, nodePin as Hr, isDefaultAppConnectionEndpoint as Ht, RECORDING_SOURCE_CAMSTACK_ADDON as I, storageCapability as In, isEvent as Ir, formatMinutes as It, addonSettingsCapability as J, vectorStoreCapability as Jn, resolveCapMount as Jr, keychainCapability as Jt, UserRecordSchema as K, vectorDimFromBase64 as Kn, parseSecretRef as Kr, kebabToCamel as Kt, RUNTIME_DEFAULTS as L, storageMigrationCapability as Ln, isKeychainStoredField as Lr, gbToBytes as Lt, METHOD_ACCESS_MAP as M, scoreRuntimes as Mn, expandCapMethods as Mr, expressionContainsBuiltinCall as Mt, MINUTES_PER_DAY as N, settingsStoreCapability as Nn, formatSecretScope as Nr, extractNestedAddonId as Nt, KEYCHAIN_RESET_TRIGGER_ACTOR as O, resolveNotificationTapAddress as On, customAction as Or, enumerateSchemaFields as Ot, MODEL_FORMATS as P, siteZoneKey as Pn, hydrateSchema as Pr, filesystemBrowseCapability as Pt, backupCapability as Q, cloneStatefulExpressionMemory as Qn, secretTreeFromSchema as Qr, localNetworkCapability as Qt, RecordingStatusSchema as R, storageOccupancyCapability as Rn, isSecretClear as Rr, hfModelUrl as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveBucketMs as Sn, asNumber as Sr, deviceExtensionCapability as St, HF_REPO as T, resolveHubAddressRoles as Tn, collectSecretConfigKeys as Tr, deviceStatusCapability as Tt, StorageLocationModeSchema as U, userManagementCapability as Un, normalizeSecretOwner as Ur, isLocationEnabled as Ut, ScopedTokenSchema as V, streamQualityLabel as Vn, makeSecretMarker as Vr, isCollectionArrayMethod as Vt, StorageLocationTypeSchema as W, validateComposition as Wn, parseJsonObject as Wr, isObjectInput as Wt, alertsCapability as X, COMPOSER_ADDON_ID as Xn, scopeKey as Xr, legacyModeOf as Xt, addonWidgetsCapability as Y, withLocationMode as Yn, resolveSecretMarkers as Yr, legacyAutoLinkIds as Yt, authProviderCapability as Z, buildFfmpegArgs as Zn, secretTreeFromPaths as Zr, lifecycleJobSchema as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, procedureAuthKey as _n, ReadinessRegistry as _r, declarationOwnerNodeId as _t, BatteryStatusSchema as a, memoizePinnedFfmpeg as an, createStatefulExpressionMemory as ar, checkRoleAddress as at, DeclaredDevices as b, replacedFieldKeys as bn, WELL_KNOWN_TAB_MAP as br, deriveBatteryPresence as bt, CAP_NAMES_WITH_STATUS as c, motionCapability as cn, DeviceFeature as cr, compositionSourceRefs as ct, CORE_BLOCKS_ADDON_ID as d, objectInputDeclaresAddonId as dn, errMsg as dr, coreBlockIdFromAddonId as dt, toNodeId as ei, logDestinationCapability as en, composedDeviceStableId as er, batteryCapability as et, CORE_BLOCK_ADDON_PREFIX as f, objectInputDeclaresRequiredDeviceId as fn, BaseAddon as fr, coreBlockSourceKind as ft, DATABASE_SNAPSHOT_SUFFIX as g, platformProbeCapability as gn, REDACTED_SECRET as gr, databaseSnapshotCapability as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, planComposition as hn, DEVICE_STATUS_METHOD as hr, dataStoreProviderCapability as ht, BaseDevice as i, mayWriteToLocation as in, compositionSourceKey as ir, cameraGridLayoutCapability as it, LocationIconIdSchema as j, scopesAllowDeviceCap as jn, emitReadiness as jr, expandContainer as jt, LOG_LEVEL_RANK as k, runtimeStatePolicyFor as kn, defineCustomActions as kr, evaluateCompositionField as kt, COMPOSED_ITEM_FIXED_FIELDS as l, normalizeCoreBlockWrite as ln, DeviceRole as lr, coreBlockAddonId as lt, CoreBlockSchema as m, pickAppLinkHub as mn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as mr, createDeviceExtensionProvider as mt, AlertSchema as n, transformSecretWrite as ni, looseSchema as nn, compositionItemFieldPath as nr, buildStreamParamsConfigSchema as nt, CAMERA_SWITCH_ORDER as o, metricsProviderCapability as on, disarmRoseMemory as or, composerCapability as ot, CalendarPreferencesSchema as p, parseStreamParamsFormPatch as pn, DATAPLANE_SECRET_HEADER as pr, coreBlocksCapability as pt, addonPagesCapability as q, vectorIndexDimConflictError as qn, readinessKey as qr, keychainAdminCapability as qt, ApiKeyRecordSchema as r, EventCategory as ri, mayReadLocation as rn, compositionSliceKey as rr, calendarsCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, modeMayWrite as sn, toExpressionValue as sr, compositionFieldKey as st, ALL_CAPABILITY_DEFINITIONS as t, toSecretFieldView as ti, logLevelAtMost as tn, compositionFeatureEnabled as tr, buildCapabilityLookup as tt, COMPOSER_RUNNER_ID as u, normalizeUnit as un, DeviceType as ur, coreBlockComposition as ut, DAY_NAMES as v, ptzAutotrackCapability as vn, ReadinessTimeoutError as vr, decodeVectorBase64 as vt, FieldClaimSchema as w, resolveCoreBlockFiles as wn, buildSecretRef as wr, deviceStateCapability as wt, DeviceStatusSchema as x, resolveAppConnections as xn, asJsonObject as xr, describeComposableCaps as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, reducePoints as yn, SECRET_CLEAR as yr, defineExtensionSlotProvider as yt, STORAGE_ACCESS_FALLBACK as z, storageProviderCapability as zn, isSecretMarker 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 };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-BMOD9OyH.js");
4
- const require_jwt_signing_key = require("./jwt-signing-key-BiKHENST.js");
3
+ const require_dist = require("./dist-DVUg8e1T.js");
4
+ const require_jwt_signing_key = require("./jwt-signing-key-Jyu81jZR.js");
5
5
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
6
6
  require("./builtins/alerts/index.js");
7
7
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -26,15 +26,15 @@ const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtin
26
26
  const require_builtins_sqlite_storage_index = require("./builtins/sqlite-storage/index.js");
27
27
  const require_builtins_storage_orchestrator_storage_orchestrator_addon = require("./builtins/storage-orchestrator/storage-orchestrator.addon.js");
28
28
  require("./builtins/storage-orchestrator/index.js");
29
- const require_constants = require("./constants-VXvZkGgw.js");
29
+ const require_constants = require("./constants-Aj0OBqlt.js");
30
30
  const require_builtins_system_config_system_config_addon = require("./builtins/system-config/system-config.addon.js");
31
31
  require("./builtins/system-config/index.js");
32
32
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
33
- const require_custom_action_registry = require("./custom-action-registry-Bb28ibZV.js");
34
- const require_tls = require("./tls-C0TRPfqc.js");
33
+ const require_custom_action_registry = require("./custom-action-registry-Bf_YnagS.js");
34
+ const require_tls = require("./tls-BgImdxCO.js");
35
35
  const require_platform_key_source = require("./platform-key-source-Di7HrlGR.js");
36
36
  const require_resource_monitor = require("./resource-monitor-mio9dSCT.js");
37
- const require_restore_archive = require("./restore-archive-BobsETEp.js");
37
+ const require_restore_archive = require("./restore-archive-Bq5PpQ-H.js");
38
38
  let zod = require("zod");
39
39
  let node_crypto = require("node:crypto");
40
40
  node_crypto = require_chunk.__toESM(node_crypto);
@@ -52,6 +52,7 @@ let node_child_process = require("node:child_process");
52
52
  let node_util = require("node:util");
53
53
  node_util = require_chunk.__toESM(node_util);
54
54
  let node_events = require("node:events");
55
+ let _camstack_types_addon = require("@camstack/types/addon");
55
56
  let node_http = require("node:http");
56
57
  let node_v8 = require("node:v8");
57
58
  node_v8 = require_chunk.__toESM(node_v8);
@@ -59,7 +60,6 @@ let node_inspector_promises = require("node:inspector/promises");
59
60
  let node_perf_hooks = require("node:perf_hooks");
60
61
  let node_vm = require("node:vm");
61
62
  node_vm = require_chunk.__toESM(node_vm);
62
- let _camstack_types_addon = require("@camstack/types/addon");
63
63
  let _trpc_client = require("@trpc/client");
64
64
  //#region src/addon/addon-api-factory.ts
65
65
  /**
@@ -24065,6 +24065,8 @@ function stripForgedIdentity(action, params) {
24065
24065
  }
24066
24066
  return withoutIdentity(params);
24067
24067
  }
24068
+ /** Minimum gap between two "mesh event refused" lines for one sender. */
24069
+ var DROPPED_EVENT_LOG_INTERVAL_MS = 6e4;
24068
24070
  function senderOf(ctx) {
24069
24071
  const nodeID = ctx.nodeID;
24070
24072
  return typeof nodeID === "string" && nodeID.length > 0 ? nodeID : null;
@@ -24078,6 +24080,29 @@ function paramNodeId(params) {
24078
24080
  */
24079
24081
  function createMeshAccessMiddleware(options) {
24080
24082
  const { ownNodeId, authenticator, logger } = options;
24083
+ const dropped = /* @__PURE__ */ new Map();
24084
+ const noteDroppedEvent = (sender, eventName) => {
24085
+ const now = Date.now();
24086
+ const entry = dropped.get(sender) ?? {
24087
+ lastLogAt: 0,
24088
+ count: 0
24089
+ };
24090
+ const count = entry.count + 1;
24091
+ if (now - entry.lastLogAt >= DROPPED_EVENT_LOG_INTERVAL_MS) {
24092
+ logger?.warn("mesh event refused", {
24093
+ sender,
24094
+ event: eventName,
24095
+ droppedSinceLastLog: count
24096
+ });
24097
+ dropped.set(sender, {
24098
+ lastLogAt: now,
24099
+ count: 0
24100
+ });
24101
+ } else dropped.set(sender, {
24102
+ lastLogAt: entry.lastLogAt,
24103
+ count
24104
+ });
24105
+ };
24081
24106
  return {
24082
24107
  name: "CamstackMeshAccess",
24083
24108
  localAction(next, action) {
@@ -24103,9 +24128,12 @@ function createMeshAccessMiddleware(options) {
24103
24128
  const name = event.name ?? "";
24104
24129
  return function meshGatedEvent(ctx) {
24105
24130
  const sender = senderOf(ctx);
24106
- if (sender === null || sender === ownNodeId) return next.call(this, ctx);
24107
- if (authenticator.admitEvent(sender, name).verdict === "deny") return void 0;
24108
- return next.call(this, ctx);
24131
+ if (sender === null || sender === ownNodeId) return Promise.resolve(next.call(this, ctx));
24132
+ if (authenticator.admitEvent(sender, name).verdict === "deny") {
24133
+ noteDroppedEvent(sender, name);
24134
+ return Promise.resolve();
24135
+ }
24136
+ return Promise.resolve(next.call(this, ctx));
24109
24137
  };
24110
24138
  }
24111
24139
  };