@camstack/system 1.2.89 → 1.2.91

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 +25 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +25 -1
  9. package/dist/builtins/console-logging/index.js +1 -1
  10. package/dist/builtins/console-logging/index.mjs +1 -1
  11. package/dist/builtins/core-blocks/core-block-store.d.ts +11 -0
  12. package/dist/builtins/core-blocks/core-blocks.addon.js +12 -1
  13. package/dist/builtins/core-blocks/core-blocks.addon.mjs +12 -1
  14. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  17. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  18. package/dist/builtins/hub-forwarder/index.js +1 -1
  19. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  20. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  21. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  22. package/dist/builtins/local-auth/auth-schema.d.ts +42 -0
  23. package/dist/builtins/local-auth/local-auth.addon.js +43 -1
  24. package/dist/builtins/local-auth/local-auth.addon.mjs +43 -1
  25. package/dist/builtins/local-network/local-network.addon.js +1 -1
  26. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  27. package/dist/builtins/loki-logging/index.js +1 -1
  28. package/dist/builtins/loki-logging/index.mjs +1 -1
  29. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  30. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  31. package/dist/builtins/platform-probe/index.js +1 -1
  32. package/dist/builtins/platform-probe/index.mjs +1 -1
  33. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  34. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  35. package/dist/builtins/snapshot/index.js +1 -1
  36. package/dist/builtins/snapshot/index.mjs +1 -1
  37. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  38. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +16 -5
  40. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +16 -5
  41. package/dist/builtins/storage-orchestrator/index.mjs +1 -1
  42. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +65 -4
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +64 -4
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +12 -0
  45. package/dist/builtins/system-config/system-config.addon.js +1 -1
  46. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  47. package/dist/builtins/winston-logging/index.js +1 -1
  48. package/dist/builtins/winston-logging/index.mjs +1 -1
  49. package/dist/{dist-Dq0ebOuS.js → dist-9Gfk4KOk.js} +500 -47
  50. package/dist/{dist-Bij6agsS.mjs → dist-DhrTd8LL.mjs} +500 -47
  51. package/dist/index.js +39 -46
  52. package/dist/index.mjs +39 -46
  53. package/package.json +1 -1
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Ut as EventCategory, _t as BaseAddon, gt as errMsg, v as addonPagesCapability } from "../../dist-Bij6agsS.mjs";
1
+ import { Ut as EventCategory, _t as BaseAddon, gt as errMsg, v as addonPagesCapability } from "../../dist-DhrTd8LL.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Ut as EventCategory, _t as BaseAddon, b as addonWidgetsCapability, gt as errMsg } from "../../dist-Bij6agsS.mjs";
1
+ import { Ut as EventCategory, _t as BaseAddon, b as addonWidgetsCapability, gt as errMsg } from "../../dist-DhrTd8LL.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  //#region src/builtins/alerts/prune-policy.ts
8
8
  /**
9
9
  * Ids older than `cutoffMs`, oldest first.
@@ -1,4 +1,4 @@
1
- import { At as createEvent, Ut as EventCategory, _t as BaseAddon, gt as errMsg, n as AlertSchema, x as alertsCapability } from "../../dist-Bij6agsS.mjs";
1
+ import { At as createEvent, Ut as EventCategory, _t as BaseAddon, gt as errMsg, n as AlertSchema, x as alertsCapability } from "../../dist-DhrTd8LL.mjs";
2
2
  //#region src/builtins/alerts/prune-policy.ts
3
3
  /**
4
4
  * Ids older than `cutoffMs`, oldest first.
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let buffer = require("buffer");
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -4204,6 +4204,18 @@ function previewNextRuns(cron, count, after) {
4204
4204
  }
4205
4205
  //#endregion
4206
4206
  //#region src/builtins/backup-orchestrator/destination-policy.ts
4207
+ /**
4208
+ * @durable class=config owner=backup-orchestrator
4209
+ * write="`ensureDefault` auto-creates one row the first time a `backups` storage
4210
+ * location is listed (enabled, retentionCount 7, cron `0 3 * * *`), and an operator
4211
+ * edit rewrites it (`upsert` = delete + insert, carrying `last_run_at` forward so a
4212
+ * label change does not reset the schedule baseline)"
4213
+ * retention="none — `delete(locationId)` exists but NOTHING calls it, so a policy row
4214
+ * outlives the `StorageLocation` it names and the table only ever grows, by one row
4215
+ * per backups location ever seen. Losing a row is recoverable: the next
4216
+ * `listDestinations` pass re-creates it from the defaults, which silently discards
4217
+ * the operator's own retention count and cron."
4218
+ */
4207
4219
  var BACKUP_DESTINATION_POLICIES = "backup_destination_policies";
4208
4220
  var BACKUP_DESTINATION_POLICIES_COLUMNS = [
4209
4221
  {
@@ -4590,6 +4602,18 @@ var LocationManifestLock = class {
4590
4602
  };
4591
4603
  //#endregion
4592
4604
  //#region src/builtins/backup-orchestrator/schedule-store.ts
4605
+ /**
4606
+ * @durable class=config owner=backup-orchestrator
4607
+ * write="an operator creating or editing a schedule (`upsert`, implemented as
4608
+ * delete + insert: cron, enabled, the fan-out `location_ids`, `retention_count`,
4609
+ * optional `data_sources`), plus a `last_run_at` stamp the orchestrator writes on
4610
+ * every due tick BEFORE the archive runs, so an upload outliving the tick cannot
4611
+ * fire the same schedule twice"
4612
+ * retention="only the operator's `delete(id)` — no sweep, no expiry, and `retention_count`
4613
+ * bounds the ARCHIVES at the destination, never these rows. Losing the table stops
4614
+ * every scheduled backup silently: no cron remains to fire, and the fan-out sets and
4615
+ * retention counts are gone with it."
4616
+ */
4593
4617
  var BACKUP_SCHEDULES = "backup_schedules";
4594
4618
  var BACKUP_SCHEDULES_COLUMNS = [
4595
4619
  {
@@ -1,4 +1,4 @@
1
- import { C as backupCapability, Ut as EventCategory, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { C as backupCapability, Ut as EventCategory, _t as BaseAddon } from "../../dist-DhrTd8LL.mjs";
2
2
  import { randomBytes, randomUUID } from "node:crypto";
3
3
  import { Buffer as Buffer$1 } from "buffer";
4
4
  import * as fsp from "node:fs/promises";
@@ -4189,6 +4189,18 @@ function previewNextRuns(cron, count, after) {
4189
4189
  }
4190
4190
  //#endregion
4191
4191
  //#region src/builtins/backup-orchestrator/destination-policy.ts
4192
+ /**
4193
+ * @durable class=config owner=backup-orchestrator
4194
+ * write="`ensureDefault` auto-creates one row the first time a `backups` storage
4195
+ * location is listed (enabled, retentionCount 7, cron `0 3 * * *`), and an operator
4196
+ * edit rewrites it (`upsert` = delete + insert, carrying `last_run_at` forward so a
4197
+ * label change does not reset the schedule baseline)"
4198
+ * retention="none — `delete(locationId)` exists but NOTHING calls it, so a policy row
4199
+ * outlives the `StorageLocation` it names and the table only ever grows, by one row
4200
+ * per backups location ever seen. Losing a row is recoverable: the next
4201
+ * `listDestinations` pass re-creates it from the defaults, which silently discards
4202
+ * the operator's own retention count and cron."
4203
+ */
4192
4204
  var BACKUP_DESTINATION_POLICIES = "backup_destination_policies";
4193
4205
  var BACKUP_DESTINATION_POLICIES_COLUMNS = [
4194
4206
  {
@@ -4575,6 +4587,18 @@ var LocationManifestLock = class {
4575
4587
  };
4576
4588
  //#endregion
4577
4589
  //#region src/builtins/backup-orchestrator/schedule-store.ts
4590
+ /**
4591
+ * @durable class=config owner=backup-orchestrator
4592
+ * write="an operator creating or editing a schedule (`upsert`, implemented as
4593
+ * delete + insert: cron, enabled, the fan-out `location_ids`, `retention_count`,
4594
+ * optional `data_sources`), plus a `last_run_at` stamp the orchestrator writes on
4595
+ * every due tick BEFORE the archive runs, so an upload outliving the tick cannot
4596
+ * fire the same schedule twice"
4597
+ * retention="only the operator's `delete(id)` — no sweep, no expiry, and `retention_count`
4598
+ * bounds the ARCHIVES at the destination, never these rows. Losing the table stops
4599
+ * every scheduled backup silently: no cron remains to fire, and the fan-out sets and
4600
+ * retention counts are gone with it."
4601
+ */
4578
4602
  var BACKUP_SCHEDULES = "backup_schedules";
4579
4603
  var BACKUP_SCHEDULES_COLUMNS = [
4580
4604
  {
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.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 { J as logDestinationCapability, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { J as logDestinationCapability, _t as BaseAddon } from "../../dist-DhrTd8LL.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 = {
@@ -1,4 +1,15 @@
1
1
  import { CoreBlock, CoreBlockInput, IScopedLogger, SettingsStoreClient } from '@camstack/types';
2
+ /**
3
+ * @durable class=config owner=core-blocks
4
+ * write="`create` and `update` persist the operator's block after it compiles;
5
+ * `setStatus` rewrites what the runner reported (status, `lastChangedAt`,
6
+ * `lastError`) — so a running block is written on every state change"
7
+ * retention="`delete` only, when the operator removes a block. Nothing ages out,
8
+ * and a row whose JSON stops validating is left on disk rather than repaired.
9
+ * The real loss path is a `declareCollection` REBUILD — a legacy (id, data)
10
+ * shape, or a new PK/UNIQUE/NOT-NULL-without-default column — which drops the
11
+ * table and takes the operator's source code with it."
12
+ */
2
13
  export declare const CORE_BLOCKS_COLLECTION = "core_blocks";
3
14
  export declare const CORE_BLOCKS_COLUMNS: readonly [{
4
15
  readonly name: "id";
@@ -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-Dq0ebOuS.js");
3
+ const require_dist = require("../../dist-9Gfk4KOk.js");
4
4
  let node_crypto = require("node:crypto");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -495,6 +495,17 @@ async function compileBlock(transpiler, code) {
495
495
  * is a fork failure the operator meets minutes later inside a log — so the
496
496
  * compile happens where they are still looking at the editor.
497
497
  */
498
+ /**
499
+ * @durable class=config owner=core-blocks
500
+ * write="`create` and `update` persist the operator's block after it compiles;
501
+ * `setStatus` rewrites what the runner reported (status, `lastChangedAt`,
502
+ * `lastError`) — so a running block is written on every state change"
503
+ * retention="`delete` only, when the operator removes a block. Nothing ages out,
504
+ * and a row whose JSON stops validating is left on disk rather than repaired.
505
+ * The real loss path is a `declareCollection` REBUILD — a legacy (id, data)
506
+ * shape, or a new PK/UNIQUE/NOT-NULL-without-default column — which drops the
507
+ * table and takes the operator's source code with it."
508
+ */
498
509
  var CORE_BLOCKS_COLLECTION = "core_blocks";
499
510
  var CORE_BLOCKS_COLUMNS = [
500
511
  {
@@ -1,4 +1,4 @@
1
- import { D as coreBlockIdFromAddonId, E as coreBlockAddonId, O as coreBlocksCapability, _t as BaseAddon, c as CoreBlockSchema, l as DeclaredDevices, o as CORE_BLOCKS_ADDON_ID, s as CORE_BLOCK_ADDON_PREFIX } from "../../dist-Bij6agsS.mjs";
1
+ import { D as coreBlockIdFromAddonId, E as coreBlockAddonId, O as coreBlocksCapability, _t as BaseAddon, c as CoreBlockSchema, l as DeclaredDevices, o as CORE_BLOCKS_ADDON_ID, s as CORE_BLOCK_ADDON_PREFIX } from "../../dist-DhrTd8LL.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as fs from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -491,6 +491,17 @@ async function compileBlock(transpiler, code) {
491
491
  * is a fork failure the operator meets minutes later inside a log — so the
492
492
  * compile happens where they are still looking at the editor.
493
493
  */
494
+ /**
495
+ * @durable class=config owner=core-blocks
496
+ * write="`create` and `update` persist the operator's block after it compiles;
497
+ * `setStatus` rewrites what the runner reported (status, `lastChangedAt`,
498
+ * `lastError`) — so a running block is written on every state change"
499
+ * retention="`delete` only, when the operator removes a block. Nothing ages out,
500
+ * and a row whose JSON stops validating is left on disk rather than repaired.
501
+ * The real loss path is a `declareCollection` REBUILD — a legacy (id, data)
502
+ * shape, or a new PK/UNIQUE/NOT-NULL-without-default column — which drops the
503
+ * table and takes the operator's source code with it."
504
+ */
494
505
  var CORE_BLOCKS_COLLECTION = "core_blocks";
495
506
  var CORE_BLOCKS_COLUMNS = [
496
507
  {
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -1,4 +1,4 @@
1
- import { Ct as DeviceType, Et as WELL_KNOWN_TAB_MAP, Ft as isDeviceConfigCap, Ht as sleep, I as enumerateItemArrayFields, L as enumerateSchemaFields, M as deviceStateCapability, N as deviceStatusCapability, Q as normalizeUnit, St as DeviceRole, T as buildStreamParamsConfigSchema, Ut as EventCategory, _t as BaseAddon, a as CAP_NAMES_WITH_STATUS, et as parseStreamParamsFormPatch, gt as errMsg, j as deviceManagerCapability, p as STREAM_PROFILE_META, rt as runtimeStatePolicyFor, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, xt as DeviceFeature } from "../../dist-Bij6agsS.mjs";
1
+ import { Ct as DeviceType, Et as WELL_KNOWN_TAB_MAP, Ft as isDeviceConfigCap, Ht as sleep, I as enumerateItemArrayFields, L as enumerateSchemaFields, M as deviceStateCapability, N as deviceStatusCapability, Q as normalizeUnit, St as DeviceRole, T as buildStreamParamsConfigSchema, Ut as EventCategory, _t as BaseAddon, a as CAP_NAMES_WITH_STATUS, et as parseStreamParamsFormPatch, gt as errMsg, j as deviceManagerCapability, p as STREAM_PROFILE_META, rt as runtimeStatePolicyFor, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, xt as DeviceFeature } from "../../dist-DhrTd8LL.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
4
4
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { At as createEvent, Ct as DeviceType, P as doorbellCapability, U as isSameAddonId, Ut as EventCategory, _t as BaseAddon, gt as errMsg, w as bareAddonId } from "../../dist-Bij6agsS.mjs";
1
+ import { At as createEvent, Ct as DeviceType, P as doorbellCapability, U as isSameAddonId, Ut as EventCategory, _t as BaseAddon, gt as errMsg, w as bareAddonId } from "../../dist-DhrTd8LL.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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.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 { J as logDestinationCapability, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { J as logDestinationCapability, _t as BaseAddon } from "../../dist-DhrTd8LL.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;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-Dq0ebOuS.js");
3
+ const require_dist = require("../../dist-9Gfk4KOk.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { At as createEvent, Ut as EventCategory, _t as BaseAddon, gt as errMsg } from "../../dist-Bij6agsS.mjs";
1
+ import { At as createEvent, Ut as EventCategory, _t as BaseAddon, gt as errMsg } from "../../dist-DhrTd8LL.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,7 +1,42 @@
1
1
  import { SettingsStoreClient } from '@camstack/types';
2
+ /**
3
+ * @durable class=config owner=local-auth
4
+ * write="an operator creates a user, or `ensureAdminExists` seeds/re-syncs the
5
+ * configured admin at boot; updated on scope, isAdmin and password edits"
6
+ * retention="none — a row goes only when an operator deletes the user. A
7
+ * `declareCollection` that adds a PK/UNIQUE/NOT-NULL-without-default column
8
+ * REBUILDS the table: every account is wiped and only the configured admin
9
+ * comes back on the next boot."
10
+ */
2
11
  export declare const USERS_COLLECTION = "users";
12
+ /**
13
+ * @durable class=config owner=local-auth
14
+ * write="an operator mints an API key; `validateToken` rewrites `lastUsedAt` on
15
+ * every request the key authorises"
16
+ * retention="none — an explicit `revoke` is the only delete. API keys have no
17
+ * expiry column and no sweep, so a key lives until someone removes it (or the
18
+ * destructive `declareCollection` rebuild takes the table)."
19
+ */
3
20
  export declare const API_KEYS_COLLECTION = "api_keys";
21
+ /**
22
+ * @durable class=config owner=local-auth
23
+ * write="an operator or the CLI mints a scoped token; `validate` fires
24
+ * `updateLastUsed` on every accepted call"
25
+ * retention="`revoke` deletes one. The daily sweep `reapExpired` drops rows past
26
+ * `expiresAt` — a NULL expiry is a deliberate never-expires token and BETWEEN
27
+ * never matches it. `cleanupOrphans` drops tokens owned by the legacy 'system'
28
+ * id or by a user that no longer exists."
29
+ */
4
30
  export declare const SCOPED_TOKENS_COLLECTION = "scoped_tokens";
31
+ /**
32
+ * @durable class=ledger owner=local-auth
33
+ * write="one row per redeemed OAuth code — every completed account link through
34
+ * `oauthExchangeCode`; `touch` rewrites `lastUsedAt` on each refresh"
35
+ * retention="ONLY revoked rows are pruned: the daily sweep deletes sessions
36
+ * revoked more than OAUTH_REVOKED_RETENTION_MS (30 d) ago. An ACTIVE session
37
+ * has `revokedAt` NULL, never expires and is never swept — the table grows one
38
+ * row per login until an operator revokes the link."
39
+ */
5
40
  export declare const OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
6
41
  /**
7
42
  * TOTP enrollment table — split off from `users` to avoid the
@@ -15,6 +50,13 @@ export declare const OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
15
50
  *
16
51
  * "Enabled" means `confirmedAt != null`. A half-enrolled row (`confirmedAt
17
52
  * = null`) is INACTIVE — `verifyTotp` returns false until confirmation.
53
+ *
54
+ * @durable class=config owner=local-auth
55
+ * write="`setup` inserts a fresh secret for the user (deleting any pending row
56
+ * first); `confirm` flips `confirmedAt` once a valid code proves possession"
57
+ * retention="`disable` deletes the row, and `setup` deletes before re-inserting.
58
+ * Nothing else prunes — deleting a USER does not cascade here, so their
59
+ * enrollment row outlives the account."
18
60
  */
19
61
  export declare const USER_TOTP_COLLECTION = "user_totp";
20
62
  /**
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.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");
@@ -8823,9 +8823,44 @@ var TotpManager = class {
8823
8823
  };
8824
8824
  //#endregion
8825
8825
  //#region src/builtins/local-auth/auth-schema.ts
8826
+ /**
8827
+ * @durable class=config owner=local-auth
8828
+ * write="an operator creates a user, or `ensureAdminExists` seeds/re-syncs the
8829
+ * configured admin at boot; updated on scope, isAdmin and password edits"
8830
+ * retention="none — a row goes only when an operator deletes the user. A
8831
+ * `declareCollection` that adds a PK/UNIQUE/NOT-NULL-without-default column
8832
+ * REBUILDS the table: every account is wiped and only the configured admin
8833
+ * comes back on the next boot."
8834
+ */
8826
8835
  var USERS_COLLECTION = "users";
8836
+ /**
8837
+ * @durable class=config owner=local-auth
8838
+ * write="an operator mints an API key; `validateToken` rewrites `lastUsedAt` on
8839
+ * every request the key authorises"
8840
+ * retention="none — an explicit `revoke` is the only delete. API keys have no
8841
+ * expiry column and no sweep, so a key lives until someone removes it (or the
8842
+ * destructive `declareCollection` rebuild takes the table)."
8843
+ */
8827
8844
  var API_KEYS_COLLECTION = "api_keys";
8845
+ /**
8846
+ * @durable class=config owner=local-auth
8847
+ * write="an operator or the CLI mints a scoped token; `validate` fires
8848
+ * `updateLastUsed` on every accepted call"
8849
+ * retention="`revoke` deletes one. The daily sweep `reapExpired` drops rows past
8850
+ * `expiresAt` — a NULL expiry is a deliberate never-expires token and BETWEEN
8851
+ * never matches it. `cleanupOrphans` drops tokens owned by the legacy 'system'
8852
+ * id or by a user that no longer exists."
8853
+ */
8828
8854
  var SCOPED_TOKENS_COLLECTION = "scoped_tokens";
8855
+ /**
8856
+ * @durable class=ledger owner=local-auth
8857
+ * write="one row per redeemed OAuth code — every completed account link through
8858
+ * `oauthExchangeCode`; `touch` rewrites `lastUsedAt` on each refresh"
8859
+ * retention="ONLY revoked rows are pruned: the daily sweep deletes sessions
8860
+ * revoked more than OAUTH_REVOKED_RETENTION_MS (30 d) ago. An ACTIVE session
8861
+ * has `revokedAt` NULL, never expires and is never swept — the table grows one
8862
+ * row per login until an operator revokes the link."
8863
+ */
8829
8864
  var OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
8830
8865
  /**
8831
8866
  * TOTP enrollment table — split off from `users` to avoid the
@@ -8839,6 +8874,13 @@ var OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
8839
8874
  *
8840
8875
  * "Enabled" means `confirmedAt != null`. A half-enrolled row (`confirmedAt
8841
8876
  * = null`) is INACTIVE — `verifyTotp` returns false until confirmation.
8877
+ *
8878
+ * @durable class=config owner=local-auth
8879
+ * write="`setup` inserts a fresh secret for the user (deleting any pending row
8880
+ * first); `confirm` flips `confirmedAt` once a valid code proves possession"
8881
+ * retention="`disable` deletes the row, and `setup` deletes before re-inserting.
8882
+ * Nothing else prunes — deleting a USER does not cascade here, so their
8883
+ * enrollment row outlives the account."
8842
8884
  */
8843
8885
  var USER_TOTP_COLLECTION = "user_totp";
8844
8886
  var USERS_COLUMNS = [
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { S as authProviderCapability, _ as UserRecordSchema, _t as BaseAddon, m as ScopedTokenSchema, pt as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-Bij6agsS.mjs";
2
+ import { S as authProviderCapability, _ as UserRecordSchema, _t as BaseAddon, m as ScopedTokenSchema, pt as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-DhrTd8LL.mjs";
3
3
  import * as crypto$2 from "node:crypto";
4
4
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -8815,9 +8815,44 @@ var TotpManager = class {
8815
8815
  };
8816
8816
  //#endregion
8817
8817
  //#region src/builtins/local-auth/auth-schema.ts
8818
+ /**
8819
+ * @durable class=config owner=local-auth
8820
+ * write="an operator creates a user, or `ensureAdminExists` seeds/re-syncs the
8821
+ * configured admin at boot; updated on scope, isAdmin and password edits"
8822
+ * retention="none — a row goes only when an operator deletes the user. A
8823
+ * `declareCollection` that adds a PK/UNIQUE/NOT-NULL-without-default column
8824
+ * REBUILDS the table: every account is wiped and only the configured admin
8825
+ * comes back on the next boot."
8826
+ */
8818
8827
  var USERS_COLLECTION = "users";
8828
+ /**
8829
+ * @durable class=config owner=local-auth
8830
+ * write="an operator mints an API key; `validateToken` rewrites `lastUsedAt` on
8831
+ * every request the key authorises"
8832
+ * retention="none — an explicit `revoke` is the only delete. API keys have no
8833
+ * expiry column and no sweep, so a key lives until someone removes it (or the
8834
+ * destructive `declareCollection` rebuild takes the table)."
8835
+ */
8819
8836
  var API_KEYS_COLLECTION = "api_keys";
8837
+ /**
8838
+ * @durable class=config owner=local-auth
8839
+ * write="an operator or the CLI mints a scoped token; `validate` fires
8840
+ * `updateLastUsed` on every accepted call"
8841
+ * retention="`revoke` deletes one. The daily sweep `reapExpired` drops rows past
8842
+ * `expiresAt` — a NULL expiry is a deliberate never-expires token and BETWEEN
8843
+ * never matches it. `cleanupOrphans` drops tokens owned by the legacy 'system'
8844
+ * id or by a user that no longer exists."
8845
+ */
8820
8846
  var SCOPED_TOKENS_COLLECTION = "scoped_tokens";
8847
+ /**
8848
+ * @durable class=ledger owner=local-auth
8849
+ * write="one row per redeemed OAuth code — every completed account link through
8850
+ * `oauthExchangeCode`; `touch` rewrites `lastUsedAt` on each refresh"
8851
+ * retention="ONLY revoked rows are pruned: the daily sweep deletes sessions
8852
+ * revoked more than OAUTH_REVOKED_RETENTION_MS (30 d) ago. An ACTIVE session
8853
+ * has `revokedAt` NULL, never expires and is never swept — the table grows one
8854
+ * row per login until an operator revokes the link."
8855
+ */
8821
8856
  var OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
8822
8857
  /**
8823
8858
  * TOTP enrollment table — split off from `users` to avoid the
@@ -8831,6 +8866,13 @@ var OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
8831
8866
  *
8832
8867
  * "Enabled" means `confirmedAt != null`. A half-enrolled row (`confirmedAt
8833
8868
  * = null`) is INACTIVE — `verifyTotp` returns false until confirmation.
8869
+ *
8870
+ * @durable class=config owner=local-auth
8871
+ * write="`setup` inserts a fresh secret for the user (deleting any pending row
8872
+ * first); `confirm` flips `confirmedAt` once a valid code proves possession"
8873
+ * retention="`disable` deletes the row, and `setup` deletes before re-inserting.
8874
+ * Nothing else prunes — deleting a USER does not cascade here, so their
8875
+ * enrollment row outlives the account."
8834
8876
  */
8835
8877
  var USER_TOTP_COLLECTION = "user_totp";
8836
8878
  var USERS_COLUMNS = [
@@ -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-Dq0ebOuS.js");
3
+ const require_dist = require("../../dist-9Gfk4KOk.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 { Ut as EventCategory, _t as BaseAddon, q as localNetworkCapability } from "../../dist-Bij6agsS.mjs";
1
+ import { Ut as EventCategory, _t as BaseAddon, q as localNetworkCapability } from "../../dist-DhrTd8LL.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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.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 { J as logDestinationCapability, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { J as logDestinationCapability, _t as BaseAddon } from "../../dist-DhrTd8LL.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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { At as createEvent, Ut as EventCategory, Z as metricsProviderCapability, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { At as createEvent, Ut as EventCategory, Z as metricsProviderCapability, _t as BaseAddon } from "../../dist-DhrTd8LL.mjs";
2
2
  import { execFile, execFileSync } from "node:child_process";
3
3
  import { promisify } from "node:util";
4
4
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { F as enumerateInferenceDevices, Mt as emitReadiness, Ut as EventCategory, _t as BaseAddon, gt as errMsg, ot as scoreRuntimes, tt as platformProbeCapability } from "../../dist-Bij6agsS.mjs";
2
+ import { F as enumerateInferenceDevices, Mt as emitReadiness, Ut as EventCategory, _t as BaseAddon, gt as errMsg, ot as scoreRuntimes, tt as platformProbeCapability } from "../../dist-DhrTd8LL.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.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 { Ut as EventCategory, _t as BaseAddon } from "../../dist-Bij6agsS.mjs";
1
+ import { Ut as EventCategory, _t as BaseAddon } from "../../dist-DhrTd8LL.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { Ct as DeviceType, It as nodePin, Ut as EventCategory, _t as BaseAddon, ct as snapshotCapability, ft as streamQualityLabel, gt as errMsg, i as BatteryStatusSchema, w as bareAddonId, xt as DeviceFeature } from "../../dist-Bij6agsS.mjs";
1
+ import { Ct as DeviceType, It as nodePin, Ut as EventCategory, _t as BaseAddon, ct as snapshotCapability, ft as streamQualityLabel, gt as errMsg, i as BatteryStatusSchema, w as bareAddonId, xt as DeviceFeature } from "../../dist-DhrTd8LL.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
@@ -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-Dq0ebOuS.js");
6
+ const require_dist = require("../../dist-9Gfk4KOk.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { _t as BaseAddon, dt as storageProviderCapability, z as filesystemBrowseCapability } from "../../dist-Bij6agsS.mjs";
1
+ import { _t as BaseAddon, dt as storageProviderCapability, z as filesystemBrowseCapability } from "../../dist-DhrTd8LL.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";