@camstack/system 1.2.442 → 1.2.443

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 (79) 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/block-package.d.ts +4 -2
  22. package/dist/builtins/core-blocks/block-settings-store.d.ts +65 -19
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +365 -38
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +365 -38
  25. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/keychain/index.js +3 -3
  30. package/dist/builtins/keychain/index.mjs +3 -3
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  33. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  34. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  35. package/dist/builtins/local-network/local-network.addon.js +2 -2
  36. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  37. package/dist/builtins/loki-logging/index.js +1 -1
  38. package/dist/builtins/loki-logging/index.mjs +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.js +2 -2
  40. package/dist/builtins/native-metrics/native-metrics.addon.mjs +2 -2
  41. package/dist/builtins/platform-probe/index.js +2 -2
  42. package/dist/builtins/platform-probe/index.mjs +2 -2
  43. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  44. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  45. package/dist/builtins/snapshot/index.js +1 -1
  46. package/dist/builtins/snapshot/index.mjs +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/index.js +1 -1
  50. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  52. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  54. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  55. package/dist/builtins/system-config/system-config.addon.js +2 -2
  56. package/dist/builtins/system-config/system-config.addon.mjs +2 -2
  57. package/dist/builtins/winston-logging/index.js +1 -1
  58. package/dist/builtins/winston-logging/index.mjs +1 -1
  59. package/dist/{composition-sources-DmSEMtUD.js → composition-sources-BUXX1e8j.js} +1 -1
  60. package/dist/{composition-sources-CftPpY4O.mjs → composition-sources-C8tUG2uL.mjs} +1 -1
  61. package/dist/{constants-2iWQ-Nx-.mjs → constants-CGwVaAV3.mjs} +1 -1
  62. package/dist/{constants-b7kpjuO4.js → constants-DWmm7_of.js} +1 -1
  63. package/dist/{device-ca-BJpYTAPg.mjs → device-ca-DBfiJ_SB.mjs} +1 -1
  64. package/dist/{device-ca-tKY_ZS9H.js → device-ca-DGayRmC0.js} +1 -1
  65. package/dist/{dist-DsrQYcLm.mjs → dist-Bxt_S-9a.mjs} +59 -36
  66. package/dist/{dist-CyIHDLCg.js → dist-D9qT3jHr.js} +76 -35
  67. package/dist/file-host-worker.js +1 -1
  68. package/dist/file-host-worker.mjs +1 -1
  69. package/dist/{hub-mdns-ciao-Da-0NEyr.js → hub-mdns-ciao-B-wk9nzx.js} +1 -1
  70. package/dist/{hub-mdns-ciao-BS2akjWx.mjs → hub-mdns-ciao-DpPcQDg-.mjs} +1 -1
  71. package/dist/index.js +9 -9
  72. package/dist/index.mjs +9 -9
  73. package/dist/{restore-archive-RaA3uZ7H.mjs → restore-archive-9CGgeBzD.mjs} +1 -1
  74. package/dist/{restore-archive-Cdf09dHm.js → restore-archive-BMNXwWWD.js} +1 -1
  75. package/dist/{wal-maintenance-C-bmkDhm.js → wal-maintenance-cRHR4rUY.js} +0 -0
  76. package/dist/{wal-maintenance-DE8QrreK.mjs → wal-maintenance-sIB32ONp.mjs} +0 -0
  77. package/package.json +1 -1
  78. package/dist/{custom-action-registry-BKmoaqG0.js → custom-action-registry-COyb49zm.js} +1 -1
  79. package/dist/{custom-action-registry-CyUuhATc.mjs → custom-action-registry-stpC3Zy-.mjs} +1 -1
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("./chunk-Cek0wNdY.js");
3
- const require_custom_action_registry = require("./custom-action-registry-BKmoaqG0.js");
3
+ const require_custom_action_registry = require("./custom-action-registry-COyb49zm.js");
4
4
  const require_snapshot_courtesy = require("./snapshot-courtesy-D_C5-nC0.js");
5
5
  exports.COURTESY_DEFAULT_WIDTH = require_snapshot_courtesy.COURTESY_DEFAULT_WIDTH;
6
6
  exports.CustomActionRegistry = require_custom_action_registry.CustomActionRegistry;
@@ -1,3 +1,3 @@
1
- import { C as isModelDownloaded, S as isModelDownloadHttpError, _ as downloadFile, a as startEventLoopStallMonitor, f as ModelDownloadService, g as deleteModelFromDisk, h as collectModelFiles, i as attributeStall, l as parseRangeHeader, m as adoptModelRevisions, n as STALL_REPORT_MS, o as createFileDataPlaneHandler, p as ModelDownloadHttpError, r as STALL_TICK_MS, s as contentTypeFor, t as CustomActionRegistry, w as resolveFormatRevision, x as getModelFilePath, y as ensureModel } from "./custom-action-registry-CyUuhATc.mjs";
1
+ import { C as isModelDownloaded, S as isModelDownloadHttpError, _ as downloadFile, a as startEventLoopStallMonitor, f as ModelDownloadService, g as deleteModelFromDisk, h as collectModelFiles, i as attributeStall, l as parseRangeHeader, m as adoptModelRevisions, n as STALL_REPORT_MS, o as createFileDataPlaneHandler, p as ModelDownloadHttpError, r as STALL_TICK_MS, s as contentTypeFor, t as CustomActionRegistry, w as resolveFormatRevision, x as getModelFilePath, y as ensureModel } from "./custom-action-registry-stpC3Zy-.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg, t as COURTESY_DEFAULT_WIDTH } from "./snapshot-courtesy-CyFs1M3I.mjs";
3
3
  export { COURTESY_DEFAULT_WIDTH, CustomActionRegistry, ModelDownloadHttpError, ModelDownloadService, STALL_REPORT_MS, STALL_TICK_MS, adoptModelRevisions, attributeStall, collectModelFiles, contentTypeFor, courtesyCacheKey, createFileDataPlaneHandler, deleteModelFromDisk, downloadFile, ensureModel, getModelFilePath, isModelDownloadHttpError, isModelDownloaded, parseRangeHeader, renderCourtesyJpeg, renderCourtesyOverlayJpeg, resolveFormatRevision, startEventLoopStallMonitor };
@@ -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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.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 { Ar as errMsg, Ci as EventCategory, it as addonPagesCapability, jr as BaseAddon } from "../../dist-DsrQYcLm.mjs";
1
+ import { Ar as errMsg, Ei as EventCategory, it as addonPagesCapability, jr as BaseAddon } from "../../dist-Bxt_S-9a.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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.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 { Ar as errMsg, Ci as EventCategory, jr as BaseAddon, ot as addonWidgetsCapability } from "../../dist-DsrQYcLm.mjs";
1
+ import { Ar as errMsg, Ei as EventCategory, jr as BaseAddon, ot as addonWidgetsCapability } from "../../dist-Bxt_S-9a.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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
7
  //#region src/builtins/alerts/critical-push.ts
8
8
  /** Alert categories that are critical system findings. */
9
9
  var CRITICAL_CATEGORIES = new Set([
@@ -1,4 +1,4 @@
1
- import { Ar as errMsg, Ci as EventCategory, i as AlertSchema, jr as BaseAddon, qr as createEvent, st as alertsCapability } from "../../dist-DsrQYcLm.mjs";
1
+ import { Ar as errMsg, Ei as EventCategory, Jr as createEvent, i as AlertSchema, jr as BaseAddon, st as alertsCapability } from "../../dist-Bxt_S-9a.mjs";
2
2
  //#region src/builtins/alerts/critical-push.ts
3
3
  /** Alert categories that are critical system findings. */
4
4
  var CRITICAL_CATEGORIES = new Set([
@@ -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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
7
  //#region src/builtins/autotrack/autotrack-config.ts
8
8
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
9
9
  deadZoneFraction: .5,
@@ -1,4 +1,4 @@
1
- import { Ar as errMsg, Ci as EventCategory, M as FIRST_LEVEL_MACRO_CLASSES, Pn as ptzAutotrackCapability, jr as BaseAddon, ni as isEvent, ut as bareAddonId } from "../../dist-DsrQYcLm.mjs";
1
+ import { Ar as errMsg, Ei as EventCategory, M as FIRST_LEVEL_MACRO_CLASSES, Pn as ptzAutotrackCapability, jr as BaseAddon, ri as isEvent, ut as bareAddonId } from "../../dist-Bxt_S-9a.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,8 +3,8 @@ 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-CyIHDLCg.js");
7
- const require_restore_archive = require("../../restore-archive-Cdf09dHm.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
+ const require_restore_archive = require("../../restore-archive-BMNXwWWD.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_fs_promises = require("node:fs/promises");
10
10
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,5 +1,5 @@
1
- import { Ci as EventCategory, bn as mayWriteToLocation, ci as nodePin, jr as BaseAddon, lt as backupCapability, rr as storageOccupancyCapability, yi as toNodeId } from "../../dist-DsrQYcLm.mjs";
2
- import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-RaA3uZ7H.mjs";
1
+ import { Ei as EventCategory, Si as toNodeId, bn as mayWriteToLocation, jr as BaseAddon, lt as backupCapability, rr as storageOccupancyCapability, ui as nodePin } from "../../dist-Bxt_S-9a.mjs";
2
+ import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-9CGgeBzD.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import * as fsp from "node:fs/promises";
5
5
  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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/calendars/calendar-color.ts
@@ -1,4 +1,4 @@
1
- import { g as CalendarPreferencesSchema, gt as calendarsCapability, jr as BaseAddon } from "../../dist-DsrQYcLm.mjs";
1
+ import { g as CalendarPreferencesSchema, gt as calendarsCapability, jr as BaseAddon } from "../../dist-Bxt_S-9a.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/calendars/calendar-color.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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
7
  let zod = require("zod");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { A as DeclaredDevices, Ar as errMsg, Ci as EventCategory, Dr as DeviceFeature, H as MOTION_CLOSE_AFTER_MS, Qn as snapshotCapability, _t as cameraGridLayoutCapability, ar as streamCatalogCapability, ei as hydrateSchema, gr as buildFfmpegArgs, jr as BaseAddon, jt as declarationOwnerNodeId, kr as DeviceType, o as BaseDevice, qr as createEvent, w as DERIVED_CAMERA_SILENCED_CAP_NAMES, wn as motionCapability, xn as memoizePinnedFfmpeg } from "../../dist-DsrQYcLm.mjs";
1
+ import { A as DeclaredDevices, Ar as errMsg, Dr as DeviceFeature, Ei as EventCategory, H as MOTION_CLOSE_AFTER_MS, Jr as createEvent, Qn as snapshotCapability, _t as cameraGridLayoutCapability, ar as streamCatalogCapability, gr as buildFfmpegArgs, jr as BaseAddon, jt as declarationOwnerNodeId, kr as DeviceType, o as BaseDevice, ti as hydrateSchema, w as DERIVED_CAMERA_SILENCED_CAP_NAMES, wn as motionCapability, xn as memoizePinnedFfmpeg } from "../../dist-Bxt_S-9a.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CyIHDLCg.js");
7
- const require_composition_sources = require("../../composition-sources-DmSEMtUD.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.js");
7
+ const require_composition_sources = require("../../composition-sources-BUXX1e8j.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/shared/device-state-changed.ts
10
10
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -1,5 +1,5 @@
1
- import { A as DeclaredDevices, Ar as errMsg, Ci as EventCategory, Cr as compositionSourceKey, Er as toExpressionValue, Sr as compositionSliceKey, Tr as disarmRoseMemory, Wt as evaluateCompositionField, _r as cloneStatefulExpressionMemory, br as compositionFeatureEnabled, bt as composerCapability, f as COMPOSED_ITEM_FIXED_FIELDS, ft as buildCapabilityLookup, hr as COMPOSER_ADDON_ID, jn as planComposition, jr as BaseAddon, kr as DeviceType, o as BaseDevice, qr as createEvent, qt as expressionContainsBuiltinCall, r as ALL_CAPABILITY_DEFINITIONS, vr as composedDeviceRef, wr as createStatefulExpressionMemory, xr as compositionItemFieldPath, xt as compositionFieldKey, yr as composedDeviceStableId } from "../../dist-DsrQYcLm.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-CftPpY4O.mjs";
1
+ import { A as DeclaredDevices, Ar as errMsg, Cr as compositionSourceKey, Ei as EventCategory, Er as toExpressionValue, Jr as createEvent, Sr as compositionSliceKey, Tr as disarmRoseMemory, Wt as evaluateCompositionField, _r as cloneStatefulExpressionMemory, br as compositionFeatureEnabled, bt as composerCapability, f as COMPOSED_ITEM_FIXED_FIELDS, ft as buildCapabilityLookup, hr as COMPOSER_ADDON_ID, jn as planComposition, jr as BaseAddon, kr as DeviceType, o as BaseDevice, qt as expressionContainsBuiltinCall, r as ALL_CAPABILITY_DEFINITIONS, vr as composedDeviceRef, wr as createStatefulExpressionMemory, xr as compositionItemFieldPath, xt as compositionFieldKey, yr as composedDeviceStableId } from "../../dist-Bxt_S-9a.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-C8tUG2uL.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/shared/device-state-changed.ts
5
5
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -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-CyIHDLCg.js");
6
+ const require_dist = require("../../dist-D9qT3jHr.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 { gn as logDestinationCapability, jr as BaseAddon } from "../../dist-DsrQYcLm.mjs";
1
+ import { gn as logDestinationCapability, jr as BaseAddon } from "../../dist-Bxt_S-9a.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,4 @@
1
- import { coreBlockAddonId, coreBlockIdFromAddonId } from "@camstack/types";
1
+ import { type ConfigUISchema, coreBlockAddonId, coreBlockIdFromAddonId } from "@camstack/types";
2
2
  /**
3
3
  * The runner id lives on the CAPABILITY, not here.
4
4
  *
@@ -24,6 +24,8 @@ export interface MaterializeBlockInput {
24
24
  * loads. Absent for a legacy single-file materialize.
25
25
  */
26
26
  readonly files?: Readonly<Record<string, string>>;
27
+ /** The block's settings form: its secret fields are keychain-backed at runtime (D880). */
28
+ readonly settingsSchema?: ConfigUISchema | undefined;
27
29
  }
28
30
  export interface MaterializedBlock {
29
31
  /** What `$process.spawnRunner` gets as `addonDir` — the package root. */
@@ -32,7 +34,7 @@ export interface MaterializedBlock {
32
34
  }
33
35
  /** Build the wrapper for one block. Exported for the test that asserts the
34
36
  * generated source actually carries the block's identity. */
35
- export declare function renderBlockWrapper(blockId: string, blockName: string): string;
37
+ export declare function renderBlockWrapper(blockId: string, blockName: string, settingsSchema?: ConfigUISchema | undefined): string;
36
38
  /** The package manifest the addon runner reads to find the entry point. */
37
39
  export declare function renderBlockManifest(blockId: string, blockName: string): string;
38
40
  /**
@@ -1,21 +1,8 @@
1
- /**
2
- * Preference values for core blocks.
3
- *
4
- * Schema lives on the block record (`settingsSchema`, extracted from the
5
- * compiled entry's named export or set by the editor). Values live HERE —
6
- * one JSON blob per blockId — so a settings patch never rewrites the
7
- * operator's source, and so a block that has not yet declared a schema still
8
- * keeps any values the UI already wrote.
9
- *
10
- * On every patch the same values are mirrored into the block addon's
11
- * `addon-settings` rows so a running script reads them the same way any
12
- * addon does: `ctx.settings.readAddonStore()`.
13
- */
14
- import type { SettingsStoreClient } from "@camstack/types";
1
+ import { type ConfigUISchema, type RawSecretMigrationReport, type SecretsAccess, type SettingsStoreClient } from "@camstack/types";
15
2
  /**
16
3
  * @durable class=config owner=core-blocks
17
- * write="`setValues` / `mergeValues` persist the operator's prefs for one block"
18
- * retention="`delete` when the block is deleted. Nothing ages out."
4
+ * write="NOTHING since D880 - the values live in the block addon's `addon-settings` rows. Only the one-shot `migrateRawSecrets` reads it, then deletes each row."
5
+ * retention="legacy: every row is deleted by the verified operator migration; the declaration goes with it once every hub ran it."
19
6
  */
20
7
  export declare const CORE_BLOCK_SETTINGS_COLLECTION = "core-blocks:settings";
21
8
  export declare const CORE_BLOCK_SETTINGS_COLUMNS: readonly [{
@@ -29,15 +16,74 @@ export declare const CORE_BLOCK_SETTINGS_COLUMNS: readonly [{
29
16
  readonly notNull: true;
30
17
  readonly defaultValue: "{}";
31
18
  }];
19
+ /** The keychain door for a given owner, or null when this process has none. */
20
+ export type SecretsForOwner = (owner: string) => SecretsAccess | null;
32
21
  export interface BlockSettingsStoreDeps {
33
22
  readonly store: SettingsStoreClient;
23
+ readonly keychainFor: SecretsForOwner;
24
+ /** Told about keychain refs a write dropped but could not delete (they are now orphans). */
25
+ readonly onOrphaned?: (blockId: string, refs: readonly string[]) => void;
26
+ }
27
+ /** The block declares a secret, but this process has no keychain door to put it in. */
28
+ export declare class BlockSecretsUnavailableError extends Error {
29
+ readonly blockId: string;
30
+ constructor(blockId: string);
31
+ }
32
+ /** The block addon's settings rows could not be read: never answered as "empty". */
33
+ export declare class BlockSettingsUnreadableError extends Error {
34
+ readonly blockId: string;
35
+ constructor(blockId: string, reason: string);
36
+ }
37
+ /** One block as the migration sees it. */
38
+ export interface BlockSecretsSubject {
39
+ readonly id: string;
40
+ readonly settingsSchema?: ConfigUISchema | undefined;
34
41
  }
35
42
  export declare class BlockSettingsStore {
36
43
  private readonly store;
44
+ private readonly keychainFor;
45
+ private readonly onOrphaned;
37
46
  constructor(deps: BlockSettingsStoreDeps);
47
+ /** Declares the LEGACY collection, so the migration can read it. */
38
48
  static declare(store: SettingsStoreClient): Promise<void>;
39
- getValues(blockId: string): Promise<Record<string, unknown>>;
40
- mergeValues(blockId: string, patch: Record<string, unknown>): Promise<Record<string, unknown>>;
49
+ private rows;
50
+ /**
51
+ * The block's stored values - markers, NOT resolved. For the admin form
52
+ * (`hydrateSchema` turns a marker into a "set" view) and as the `stored`
53
+ * side of a write. Absent answers `{}`; an unreadable store THROWS.
54
+ */
55
+ readStored(blockId: string): Promise<Record<string, unknown>>;
56
+ /**
57
+ * Patch the block's values. Secret fields (by the schema TYPE) go to the
58
+ * keychain first and the row gets the marker; a keychain that cannot take
59
+ * them refuses the whole patch.
60
+ */
61
+ mergeValues(blockId: string, schema: ConfigUISchema | undefined, patch: Record<string, unknown>): Promise<void>;
62
+ /** The block is gone: its rows, its keychain values and the legacy blob go with it. */
41
63
  delete(blockId: string): Promise<void>;
42
- private mirrorToBlockAddon;
64
+ /**
65
+ * D880: move every plaintext secret a block's `settingsSchema` declares into
66
+ * the keychain, and delete the legacy `core-blocks:settings` blob.
67
+ *
68
+ * Per block: gather the values (the addon-settings rows win; a key only the
69
+ * blob holds is carried over), put each secret, READ IT BACK and compare,
70
+ * and only then write the marker. The legacy row is deleted only after the
71
+ * block's rows hold every key it had and every secret resolves. A block that
72
+ * fails stays exactly as it was. Dry run unless `apply`; idempotent; counts
73
+ * only - never a value, a ref or a block id.
74
+ */
75
+ migrateRawSecrets(blocks: readonly BlockSecretsSubject[], apply: boolean): Promise<RawSecretMigrationReport>;
76
+ /**
77
+ * The keys of the legacy blob that may be copied into the block's rows: not in
78
+ * the rows already, not a secret the tree moves, not a credential-named value no
79
+ * schema declares (flagged instead), and not a marker that points at another
80
+ * owner's secret (counted as `foreign`, never copied).
81
+ */
82
+ private carryable;
83
+ private dropLegacy;
84
+ /** put -> read back -> compare -> only then the marker rows. */
85
+ private moveBlock;
86
+ /** Remove the values a failed move put, never one the row already pointed at. */
87
+ private discard;
88
+ private report;
43
89
  }