@camstack/system 1.2.29 → 1.2.31

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 (53) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +135 -92
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +135 -92
  9. package/dist/builtins/backup-orchestrator/destination-policy.d.ts +12 -14
  10. package/dist/builtins/backup-orchestrator/schedule-store.d.ts +6 -6
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  20. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  21. package/dist/builtins/local-network/local-network.addon.js +1 -1
  22. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  23. package/dist/builtins/loki-logging/index.js +1 -1
  24. package/dist/builtins/loki-logging/index.mjs +1 -1
  25. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  26. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  27. package/dist/builtins/platform-probe/index.js +1 -1
  28. package/dist/builtins/platform-probe/index.mjs +1 -1
  29. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  30. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  31. package/dist/builtins/snapshot/index.js +1 -1
  32. package/dist/builtins/snapshot/index.mjs +1 -1
  33. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  34. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  35. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +61 -0
  36. package/dist/builtins/sqlite-storage/integration-registry.d.ts +3 -3
  37. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +49 -8
  38. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +117 -85
  39. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +117 -85
  40. package/dist/builtins/storage-orchestrator/location-store.d.ts +17 -24
  41. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +0 -6
  42. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +132 -121
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +132 -121
  44. package/dist/builtins/system-config/system-config.addon.js +1 -1
  45. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  46. package/dist/builtins/winston-logging/index.js +1 -1
  47. package/dist/builtins/winston-logging/index.mjs +1 -1
  48. package/dist/{dist-CPmFYLqq.js → dist-CDv5YTHQ.js} +93 -1
  49. package/dist/{dist-B7hOpr5i.mjs → dist-CNmXITJ-.mjs} +93 -1
  50. package/dist/index.js +406 -224
  51. package/dist/index.mjs +406 -224
  52. package/dist/kernel/addon-installer.d.ts +38 -0
  53. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Mt as EventCategory, ot as BaseAddon, y as backupCapability } from "../../dist-B7hOpr5i.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon, y as backupCapability } from "../../dist-CNmXITJ-.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import Kt from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -4189,8 +4189,8 @@ function previewNextRuns(cron, count, after) {
4189
4189
  }
4190
4190
  //#endregion
4191
4191
  //#region src/builtins/backup-orchestrator/destination-policy.ts
4192
- var TABLE_NAME$1 = "backup_destination_policies";
4193
- var BACKUP_DESTINATION_POLICIES_SCHEMA = { columns: [
4192
+ var BACKUP_DESTINATION_POLICIES = "backup_destination_policies";
4193
+ var BACKUP_DESTINATION_POLICIES_COLUMNS = [
4194
4194
  {
4195
4195
  name: "location_id",
4196
4196
  type: "TEXT",
@@ -4220,64 +4220,81 @@ var BACKUP_DESTINATION_POLICIES_SCHEMA = { columns: [
4220
4220
  name: "last_run_at",
4221
4221
  type: "INTEGER"
4222
4222
  }
4223
- ] };
4223
+ ];
4224
4224
  var BackupDestinationPolicyService = class {
4225
- backend;
4226
- tableEnsured = false;
4227
- constructor(backend) {
4228
- this.backend = backend;
4225
+ store;
4226
+ declared = false;
4227
+ constructor(store) {
4228
+ this.store = store;
4229
4229
  }
4230
4230
  /**
4231
- * Lazy `ensureTable` — called from every read/write path. The
4232
- * settings backend's own `ensureTable` is idempotent (additive
4233
- * migration), so repeated calls collapse to a no-op after the first.
4234
- * This keeps the constructor synchronous and avoids a separate
4235
- * `initialize()` step that callers could forget.
4231
+ * Lazy `declareCollection` — called from every read/write path.
4232
+ * `declareCollection` is idempotent, so repeated calls collapse to a no-op
4233
+ * after the first. This keeps the constructor synchronous and avoids a
4234
+ * separate `initialize()` step that callers could forget.
4236
4235
  */
4237
4236
  async initialize() {
4238
- await this.ensureTable();
4237
+ await this.ensureDeclared();
4239
4238
  }
4240
- async ensureTable() {
4241
- if (this.tableEnsured) return;
4242
- if (!this.backend.ensureTable) throw new Error("BackupDestinationPolicyService: settings backend does not implement ensureTable — expected the SQLite settings backend, got a backend without structured-table support");
4243
- await this.backend.ensureTable(TABLE_NAME$1, BACKUP_DESTINATION_POLICIES_SCHEMA);
4244
- this.tableEnsured = true;
4239
+ async ensureDeclared() {
4240
+ if (this.declared) return;
4241
+ await this.store.declareCollection({
4242
+ collection: BACKUP_DESTINATION_POLICIES,
4243
+ columns: BACKUP_DESTINATION_POLICIES_COLUMNS
4244
+ });
4245
+ this.declared = true;
4245
4246
  }
4246
4247
  async list() {
4247
- await this.ensureTable();
4248
- if (!this.backend.tableQuery) return [];
4249
- const rows = await this.backend.tableQuery(TABLE_NAME$1, { orderBy: {
4250
- field: "location_id",
4251
- direction: "asc"
4252
- } });
4248
+ await this.ensureDeclared();
4249
+ const rows = await this.store.query({
4250
+ collection: BACKUP_DESTINATION_POLICIES,
4251
+ filter: { orderBy: {
4252
+ field: "location_id",
4253
+ direction: "asc"
4254
+ } }
4255
+ });
4253
4256
  const out = [];
4254
4257
  for (const row of rows) {
4255
- const mapped = mapRowToPolicy(row);
4258
+ const mapped = mapRowToPolicy(row.data);
4256
4259
  if (mapped) out.push(mapped);
4257
4260
  }
4258
4261
  return out;
4259
4262
  }
4260
4263
  async get(locationId) {
4261
- await this.ensureTable();
4262
- if (!this.backend.tableGet) return null;
4263
- const row = await this.backend.tableGet(TABLE_NAME$1, { location_id: locationId });
4264
- return row ? mapRowToPolicy(row) : null;
4264
+ await this.ensureDeclared();
4265
+ const rows = await this.store.query({
4266
+ collection: BACKUP_DESTINATION_POLICIES,
4267
+ filter: {
4268
+ where: { location_id: locationId },
4269
+ limit: 1
4270
+ }
4271
+ });
4272
+ return rows[0] ? mapRowToPolicy(rows[0].data) : null;
4265
4273
  }
4266
4274
  /**
4267
- * Replace-or-insert. Implemented as `delete` + `insert` (mirrors the
4268
- * `SqliteLocationStore` contract) so backends that don't surface
4269
- * `tableUpdate` still work.
4275
+ * Replace-or-insert. Implemented as delete + insert, mirroring the
4276
+ * `SqliteLocationStore` contract.
4270
4277
  */
4271
4278
  async upsert(p) {
4272
- await this.ensureTable();
4273
- if (!this.backend.tableDelete || !this.backend.tableInsert) throw new Error("BackupDestinationPolicyService: backend missing tableDelete/tableInsert");
4274
- await this.backend.tableDelete(TABLE_NAME$1, { location_id: p.locationId });
4275
- await this.backend.tableInsert(TABLE_NAME$1, mapPolicyToRow(p));
4279
+ await this.ensureDeclared();
4280
+ await this.store.deleteWhere({
4281
+ collection: BACKUP_DESTINATION_POLICIES,
4282
+ filter: { where: { location_id: p.locationId } }
4283
+ });
4284
+ await this.store.insert({
4285
+ collection: BACKUP_DESTINATION_POLICIES,
4286
+ record: {
4287
+ id: p.locationId,
4288
+ data: mapPolicyToRow(p)
4289
+ }
4290
+ });
4276
4291
  }
4277
4292
  async delete(locationId) {
4278
- await this.ensureTable();
4279
- if (!this.backend.tableDelete) throw new Error("BackupDestinationPolicyService: backend missing tableDelete");
4280
- await this.backend.tableDelete(TABLE_NAME$1, { location_id: locationId });
4293
+ await this.ensureDeclared();
4294
+ await this.store.deleteWhere({
4295
+ collection: BACKUP_DESTINATION_POLICIES,
4296
+ filter: { where: { location_id: locationId } }
4297
+ });
4281
4298
  }
4282
4299
  /**
4283
4300
  * Auto-create a default policy for a `backups` location seen for the
@@ -4558,8 +4575,8 @@ var LocationManifestLock = class {
4558
4575
  };
4559
4576
  //#endregion
4560
4577
  //#region src/builtins/backup-orchestrator/schedule-store.ts
4561
- var TABLE_NAME = "backup_schedules";
4562
- var BACKUP_SCHEDULES_SCHEMA = { columns: [
4578
+ var BACKUP_SCHEDULES = "backup_schedules";
4579
+ var BACKUP_SCHEDULES_COLUMNS = [
4563
4580
  {
4564
4581
  name: "id",
4565
4582
  type: "TEXT",
@@ -4585,7 +4602,7 @@ var BACKUP_SCHEDULES_SCHEMA = { columns: [
4585
4602
  },
4586
4603
  {
4587
4604
  name: "location_ids",
4588
- type: "TEXT",
4605
+ type: "JSON",
4589
4606
  notNull: true,
4590
4607
  defaultValue: "[]"
4591
4608
  },
@@ -4597,59 +4614,78 @@ var BACKUP_SCHEDULES_SCHEMA = { columns: [
4597
4614
  },
4598
4615
  {
4599
4616
  name: "data_sources",
4600
- type: "TEXT"
4617
+ type: "JSON"
4601
4618
  },
4602
4619
  {
4603
4620
  name: "last_run_at",
4604
4621
  type: "INTEGER"
4605
4622
  }
4606
- ] };
4623
+ ];
4607
4624
  var BackupScheduleService = class {
4608
- backend;
4609
- tableEnsured = false;
4610
- constructor(backend) {
4611
- this.backend = backend;
4625
+ store;
4626
+ declared = false;
4627
+ constructor(store) {
4628
+ this.store = store;
4612
4629
  }
4613
4630
  async initialize() {
4614
- await this.ensureTable();
4631
+ await this.ensureDeclared();
4615
4632
  }
4616
- async ensureTable() {
4617
- if (this.tableEnsured) return;
4618
- if (!this.backend.ensureTable) throw new Error("BackupScheduleService: settings backend does not implement ensureTable — expected the SQLite settings backend, got a backend without structured-table support");
4619
- await this.backend.ensureTable(TABLE_NAME, BACKUP_SCHEDULES_SCHEMA);
4620
- this.tableEnsured = true;
4633
+ async ensureDeclared() {
4634
+ if (this.declared) return;
4635
+ await this.store.declareCollection({
4636
+ collection: BACKUP_SCHEDULES,
4637
+ columns: BACKUP_SCHEDULES_COLUMNS
4638
+ });
4639
+ this.declared = true;
4621
4640
  }
4622
4641
  async list() {
4623
- await this.ensureTable();
4624
- if (!this.backend.tableQuery) return [];
4625
- const rows = await this.backend.tableQuery(TABLE_NAME, { orderBy: {
4626
- field: "id",
4627
- direction: "asc"
4628
- } });
4642
+ await this.ensureDeclared();
4643
+ const rows = await this.store.query({
4644
+ collection: BACKUP_SCHEDULES,
4645
+ filter: { orderBy: {
4646
+ field: "id",
4647
+ direction: "asc"
4648
+ } }
4649
+ });
4629
4650
  const out = [];
4630
4651
  for (const row of rows) {
4631
- const mapped = mapRowToSchedule(row);
4652
+ const mapped = mapRowToSchedule(row.data);
4632
4653
  if (mapped) out.push(mapped);
4633
4654
  }
4634
4655
  return out;
4635
4656
  }
4636
4657
  async get(id) {
4637
- await this.ensureTable();
4638
- if (!this.backend.tableGet) return null;
4639
- const row = await this.backend.tableGet(TABLE_NAME, { id });
4640
- return row ? mapRowToSchedule(row) : null;
4658
+ await this.ensureDeclared();
4659
+ const rows = await this.store.query({
4660
+ collection: BACKUP_SCHEDULES,
4661
+ filter: {
4662
+ where: { id },
4663
+ limit: 1
4664
+ }
4665
+ });
4666
+ return rows[0] ? mapRowToSchedule(rows[0].data) : null;
4641
4667
  }
4642
4668
  /** Replace-or-insert (delete + insert — mirrors the policy store). */
4643
4669
  async upsert(s) {
4644
- await this.ensureTable();
4645
- if (!this.backend.tableDelete || !this.backend.tableInsert) throw new Error("BackupScheduleService: backend missing tableDelete/tableInsert");
4646
- await this.backend.tableDelete(TABLE_NAME, { id: s.id });
4647
- await this.backend.tableInsert(TABLE_NAME, mapScheduleToRow(s));
4670
+ await this.ensureDeclared();
4671
+ await this.store.deleteWhere({
4672
+ collection: BACKUP_SCHEDULES,
4673
+ filter: { where: { id: s.id } }
4674
+ });
4675
+ await this.store.insert({
4676
+ collection: BACKUP_SCHEDULES,
4677
+ record: {
4678
+ id: s.id,
4679
+ data: mapScheduleToRow(s)
4680
+ }
4681
+ });
4648
4682
  }
4649
4683
  async delete(id) {
4650
- await this.ensureTable();
4651
- if (!this.backend.tableDelete) throw new Error("BackupScheduleService: backend missing tableDelete");
4652
- await this.backend.tableDelete(TABLE_NAME, { id });
4684
+ await this.ensureDeclared();
4685
+ await this.store.deleteWhere({
4686
+ collection: BACKUP_SCHEDULES,
4687
+ filter: { where: { id } }
4688
+ });
4653
4689
  }
4654
4690
  };
4655
4691
  function mapScheduleToRow(s) {
@@ -4658,27 +4694,36 @@ function mapScheduleToRow(s) {
4658
4694
  label: s.label,
4659
4695
  cron: s.cron,
4660
4696
  enabled: s.enabled ? 1 : 0,
4661
- location_ids: JSON.stringify([...s.locationIds]),
4697
+ location_ids: [...s.locationIds],
4662
4698
  retention_count: s.retentionCount,
4663
- data_sources: s.dataSources ? JSON.stringify([...s.dataSources]) : null,
4699
+ data_sources: s.dataSources ? [...s.dataSources] : null,
4664
4700
  last_run_at: s.lastRunAt ?? null
4665
4701
  };
4666
4702
  }
4703
+ /**
4704
+ * `location_ids` / `data_sources` are `JSON` columns, so the surface hands
4705
+ * back real arrays. A STRING still arrives for rows an older build wrote and
4706
+ * nothing has rewritten since — a schedule whose fan-out set silently read as
4707
+ * empty would back up to nowhere, so both shapes are accepted.
4708
+ */
4667
4709
  function parseStringArray(raw) {
4668
- if (typeof raw !== "string" || raw.length === 0) return [];
4710
+ const value = typeof raw === "string" ? tryParseJson(raw) : raw;
4711
+ if (!Array.isArray(value)) return [];
4712
+ return value.filter((v) => typeof v === "string");
4713
+ }
4714
+ function tryParseJson(raw) {
4715
+ if (raw.length === 0) return null;
4669
4716
  try {
4670
- const parsed = JSON.parse(raw);
4671
- if (!Array.isArray(parsed)) return [];
4672
- return parsed.filter((v) => typeof v === "string");
4717
+ return JSON.parse(raw);
4673
4718
  } catch {
4674
- return [];
4719
+ return null;
4675
4720
  }
4676
4721
  }
4677
4722
  function mapRowToSchedule(row) {
4678
4723
  const id = String(row["id"] ?? "");
4679
4724
  if (!id) return null;
4680
4725
  const dataSourcesRaw = row["data_sources"];
4681
- const dataSources = typeof dataSourcesRaw === "string" && dataSourcesRaw.length > 0 ? parseStringArray(dataSourcesRaw) : void 0;
4726
+ const dataSources = dataSourcesRaw === null || dataSourcesRaw === void 0 ? void 0 : parseStringArray(dataSourcesRaw);
4682
4727
  const lastRunRaw = row["last_run_at"];
4683
4728
  const lastRunAt = typeof lastRunRaw === "number" && lastRunRaw > 0 ? lastRunRaw : void 0;
4684
4729
  return {
@@ -5436,24 +5481,22 @@ var BackupOrchestratorAddon = class extends BaseAddon {
5436
5481
  resolveScheduleService() {
5437
5482
  const reg = this.ctx.kernel.capabilityRegistry;
5438
5483
  if (!reg) return null;
5439
- const backend = reg.getSingleton("settings-store");
5440
- if (!backend) return null;
5441
- if (!backend.ensureTable || !backend.tableInsert) return null;
5442
- return new BackupScheduleService(backend);
5484
+ const store = reg.getSingleton("settings-store");
5485
+ if (!store) {
5486
+ this.ctx.logger.warn("backup-orchestrator: no settings-store provider — backup schedules will not persist");
5487
+ return null;
5488
+ }
5489
+ return new BackupScheduleService(store);
5443
5490
  }
5444
5491
  resolvePolicyService() {
5445
5492
  const reg = this.ctx.kernel.capabilityRegistry;
5446
5493
  if (!reg) return null;
5447
- const backend = reg.getSingleton("settings-store");
5448
- if (!backend) {
5494
+ const store = reg.getSingleton("settings-store");
5495
+ if (!store) {
5449
5496
  this.ctx.logger.warn("backup-orchestrator: no settings-store provider — destination policies will not persist");
5450
5497
  return null;
5451
5498
  }
5452
- if (!backend.ensureTable || !backend.tableInsert) {
5453
- this.ctx.logger.warn("backup-orchestrator: settings backend lacks structured-table support — destination policies will not persist");
5454
- return null;
5455
- }
5456
- return new BackupDestinationPolicyService(backend);
5499
+ return new BackupDestinationPolicyService(store);
5457
5500
  }
5458
5501
  /**
5459
5502
  * Narrow `ctx.api.storage` to the subset the manifest helpers need.
@@ -1,4 +1,4 @@
1
- import { ISettingsBackend, TableSchema } from '@camstack/types';
1
+ import { CollectionColumn, ISettingsStoreProvider } from '@camstack/types';
2
2
  /**
3
3
  * Per-`backups`-location policy. `locationId` is the foreign-key into
4
4
  * the storage orchestrator's `storage_locations` table.
@@ -30,26 +30,24 @@ export interface BackupDestinationPolicy {
30
30
  /** ms-epoch of the last successful backup completion to this destination. */
31
31
  readonly lastRunAt?: number;
32
32
  }
33
- export declare const BACKUP_DESTINATION_POLICIES_SCHEMA: TableSchema;
33
+ export declare const BACKUP_DESTINATION_POLICIES_COLUMNS: readonly CollectionColumn[];
34
34
  export declare class BackupDestinationPolicyService {
35
- private readonly backend;
36
- private tableEnsured;
37
- constructor(backend: ISettingsBackend);
35
+ private readonly store;
36
+ private declared;
37
+ constructor(store: ISettingsStoreProvider);
38
38
  /**
39
- * Lazy `ensureTable` — called from every read/write path. The
40
- * settings backend's own `ensureTable` is idempotent (additive
41
- * migration), so repeated calls collapse to a no-op after the first.
42
- * This keeps the constructor synchronous and avoids a separate
43
- * `initialize()` step that callers could forget.
39
+ * Lazy `declareCollection` — called from every read/write path.
40
+ * `declareCollection` is idempotent, so repeated calls collapse to a no-op
41
+ * after the first. This keeps the constructor synchronous and avoids a
42
+ * separate `initialize()` step that callers could forget.
44
43
  */
45
44
  initialize(): Promise<void>;
46
- private ensureTable;
45
+ private ensureDeclared;
47
46
  list(): Promise<readonly BackupDestinationPolicy[]>;
48
47
  get(locationId: string): Promise<BackupDestinationPolicy | null>;
49
48
  /**
50
- * Replace-or-insert. Implemented as `delete` + `insert` (mirrors the
51
- * `SqliteLocationStore` contract) so backends that don't surface
52
- * `tableUpdate` still work.
49
+ * Replace-or-insert. Implemented as delete + insert, mirroring the
50
+ * `SqliteLocationStore` contract.
53
51
  */
54
52
  upsert(p: BackupDestinationPolicy): Promise<void>;
55
53
  delete(locationId: string): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { ISettingsBackend, TableSchema } from '@camstack/types';
1
+ import { CollectionColumn, ISettingsStoreProvider } from '@camstack/types';
2
2
  /**
3
3
  * A backup schedule row.
4
4
  *
@@ -18,13 +18,13 @@ export interface BackupSchedule {
18
18
  /** ms-epoch of the last successful run. */
19
19
  readonly lastRunAt?: number;
20
20
  }
21
- export declare const BACKUP_SCHEDULES_SCHEMA: TableSchema;
21
+ export declare const BACKUP_SCHEDULES_COLUMNS: readonly CollectionColumn[];
22
22
  export declare class BackupScheduleService {
23
- private readonly backend;
24
- private tableEnsured;
25
- constructor(backend: ISettingsBackend);
23
+ private readonly store;
24
+ private declared;
25
+ constructor(store: ISettingsStoreProvider);
26
26
  initialize(): Promise<void>;
27
- private ensureTable;
27
+ private ensureDeclared;
28
28
  list(): Promise<readonly BackupSchedule[]>;
29
29
  get(id: string): Promise<BackupSchedule | null>;
30
30
  /** Replace-or-insert (delete + insert — mirrors the policy store). */
@@ -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-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
@@ -1,4 +1,4 @@
1
- import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-B7hOpr5i.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-CNmXITJ-.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let _camstack_types_node = require("@camstack/types/node");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { C as deviceStateCapability, D as enumerateItemArrayFields, K as parseStreamParamsFormPatch, M as getByPath, Mt as EventCategory, O as enumerateSchemaFields, S as deviceManagerCapability, W as normalizeUnit, X as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as errMsg, b as buildStreamParamsConfigSchema, dt as DeviceRole, ft as DeviceType, ht as WELL_KNOWN_TAB_MAP, it as validateExpressionSource, jt as sleep, k as evaluateLinkExpression, l as STREAM_PROFILE_META, nt as toExpressionValue, o as DeviceStatusSchema, ot as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceFeature, w as deviceStatusCapability, wt as isDeviceConfigCap } from "../../dist-B7hOpr5i.mjs";
1
+ import { C as deviceStateCapability, D as enumerateItemArrayFields, K as parseStreamParamsFormPatch, M as getByPath, Mt as EventCategory, O as enumerateSchemaFields, S as deviceManagerCapability, W as normalizeUnit, X as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as errMsg, b as buildStreamParamsConfigSchema, dt as DeviceRole, ft as DeviceType, ht as WELL_KNOWN_TAB_MAP, it as validateExpressionSource, jt as sleep, k as evaluateLinkExpression, l as STREAM_PROFILE_META, nt as toExpressionValue, o as DeviceStatusSchema, ot as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceFeature, w as deviceStatusCapability, wt as isDeviceConfigCap } from "../../dist-CNmXITJ-.mjs";
2
2
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { Mt as EventCategory, T as doorbellCapability, at as errMsg, ft as DeviceType, ot as BaseAddon, yt as createEvent } from "../../dist-B7hOpr5i.mjs";
1
+ import { Mt as EventCategory, T as doorbellCapability, at as errMsg, ft as DeviceType, ot as BaseAddon, yt as createEvent } from "../../dist-CNmXITJ-.mjs";
2
2
  //#region src/builtins/doorbell/trigger-engine.ts
3
3
  /**
4
4
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-B7hOpr5i.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-CNmXITJ-.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { f as UserRecordSchema, ot as BaseAddon, r as ApiKeyRecordSchema, rt as userManagementCapability, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-B7hOpr5i.mjs";
2
+ import { f as UserRecordSchema, ot as BaseAddon, r as ApiKeyRecordSchema, rt as userManagementCapability, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-CNmXITJ-.mjs";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-CPmFYLqq.js");
3
+ const require_dist = require("../../dist-CDv5YTHQ.js");
4
4
  let node_os = require("node:os");
5
5
  node_os = require_chunk.__toESM(node_os);
6
6
  //#region src/builtins/local-network/local-network.addon.ts
@@ -1,4 +1,4 @@
1
- import { Mt as EventCategory, ot as BaseAddon, z as localNetworkCapability } from "../../dist-B7hOpr5i.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon, z as localNetworkCapability } from "../../dist-CNmXITJ-.mjs";
2
2
  import * as os from "node:os";
3
3
  //#region src/builtins/local-network/local-network.addon.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.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 { B as logDestinationCapability, ot as BaseAddon } from "../../dist-B7hOpr5i.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-CNmXITJ-.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-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { Mt as EventCategory, U as metricsProviderCapability, ot as BaseAddon, yt as createEvent } from "../../dist-B7hOpr5i.mjs";
1
+ import { Mt as EventCategory, U as metricsProviderCapability, ot as BaseAddon, yt as createEvent } from "../../dist-CNmXITJ-.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile, execFileSync } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { E as enumerateInferenceDevices, Mt as EventCategory, Y as scoreRuntimes, at as errMsg, ot as BaseAddon, q as platformProbeCapability, xt as emitReadiness } from "../../dist-B7hOpr5i.mjs";
2
+ import { E as enumerateInferenceDevices, Mt as EventCategory, Y as scoreRuntimes, at as errMsg, ot as BaseAddon, q as platformProbeCapability, xt as emitReadiness } from "../../dist-CNmXITJ-.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  import { promisify } from "node:util";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.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 { Mt as EventCategory, ot as BaseAddon } from "../../dist-B7hOpr5i.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon } from "../../dist-CNmXITJ-.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/builtins/snapshot/snapshot-coalescing.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { Q as snapshotCapability, Tt as nodePin, at as errMsg, ft as DeviceType, i as BatteryStatusSchema, ot as BaseAddon, tt as streamQualityLabel, ut as DeviceFeature } from "../../dist-B7hOpr5i.mjs";
1
+ import { Q as snapshotCapability, Tt as nodePin, at as errMsg, ft as DeviceType, i as BatteryStatusSchema, ot as BaseAddon, tt as streamQualityLabel, ut as DeviceFeature } from "../../dist-CNmXITJ-.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  //#region src/builtins/snapshot/snapshot-coalescing.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CPmFYLqq.js");
6
+ const require_dist = require("../../dist-CDv5YTHQ.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { et as storageProviderCapability, j as filesystemBrowseCapability, ot as BaseAddon } from "../../dist-B7hOpr5i.mjs";
1
+ import { et as storageProviderCapability, j as filesystemBrowseCapability, ot as BaseAddon } from "../../dist-CNmXITJ-.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import * as path$1 from "node:path";
4
4
  import { basename, dirname, join, resolve, sep } from "node:path";