@camstack/system 1.2.485 → 1.2.487

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 (88) hide show
  1. package/dist/{agent-https-DBP7P-ee.js → agent-https-0EEnqeUL.js} +1 -1
  2. package/dist/{agent-https-_EXvi6F8.mjs → agent-https-C24nO-la.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/actuator-dispatch.d.ts +13 -0
  18. package/dist/builtins/composer/actuator-groups.d.ts +54 -0
  19. package/dist/builtins/composer/actuator-invoke.d.ts +11 -0
  20. package/dist/builtins/composer/composed-device.d.ts +13 -24
  21. package/dist/builtins/composer/composer.addon.js +464 -18
  22. package/dist/builtins/composer/composer.addon.mjs +464 -18
  23. package/dist/builtins/composer/composer.d.ts +11 -1
  24. package/dist/builtins/composer/composition-runtime.d.ts +2 -0
  25. package/dist/builtins/console-logging/index.js +1 -1
  26. package/dist/builtins/console-logging/index.mjs +1 -1
  27. package/dist/builtins/core-blocks/composition-sources.d.ts +3 -1
  28. package/dist/builtins/core-blocks/core-blocks.addon.js +53 -28
  29. package/dist/builtins/core-blocks/core-blocks.addon.mjs +53 -28
  30. package/dist/builtins/device-history/device-history.addon.js +2 -2
  31. package/dist/builtins/device-history/device-history.addon.mjs +2 -2
  32. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  33. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  34. package/dist/builtins/hub-forwarder/index.js +1 -1
  35. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  36. package/dist/builtins/keychain/index.js +3 -3
  37. package/dist/builtins/keychain/index.mjs +3 -3
  38. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  39. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  40. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  41. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  42. package/dist/builtins/local-network/local-network.addon.js +2 -2
  43. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  44. package/dist/builtins/loki-logging/index.js +1 -1
  45. package/dist/builtins/loki-logging/index.mjs +1 -1
  46. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  47. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  48. package/dist/builtins/platform-probe/index.js +1 -1
  49. package/dist/builtins/platform-probe/index.mjs +1 -1
  50. package/dist/builtins/record-entries/index.js +1 -1
  51. package/dist/builtins/record-entries/index.mjs +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  53. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/snapshot/index.js +1 -1
  55. package/dist/builtins/snapshot/index.mjs +1 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  57. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  58. package/dist/builtins/sqlite-storage/index.js +1 -1
  59. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  60. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  61. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  62. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  63. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  64. package/dist/builtins/system-config/system-config.addon.js +3 -3
  65. package/dist/builtins/system-config/system-config.addon.mjs +284 -284
  66. package/dist/builtins/winston-logging/index.js +1 -1
  67. package/dist/builtins/winston-logging/index.mjs +1 -1
  68. package/dist/{composition-sources-BnZpIA8u.mjs → composition-sources-BA2e5vh_.mjs} +4 -2
  69. package/dist/{composition-sources-BSQneZV9.js → composition-sources-BulDAgW2.js} +4 -2
  70. package/dist/{constants-CQfTeCnB.js → constants-BntdWx4k.js} +1 -1
  71. package/dist/{constants-7D7xjw0h.mjs → constants-DZKo4kM2.mjs} +1 -1
  72. package/dist/{device-ca-D_4dI5gv.js → device-ca-BuRg4V4x.js} +1 -1
  73. package/dist/{device-ca-Bzd6UO_c.mjs → device-ca-DXm8IH3p.mjs} +1 -1
  74. package/dist/{dist-xCNJAQMh.js → dist-CrsVjBbk.js} +1127 -26
  75. package/dist/{dist-Df6c0RX_.mjs → dist-Dfwxsc_Y.mjs} +1062 -27
  76. package/dist/file-host-worker.js +1 -1
  77. package/dist/file-host-worker.mjs +1 -1
  78. package/dist/{hub-mdns-ciao-D7GMnEz0.mjs → hub-mdns-ciao-BbI8MNtQ.mjs} +2 -2
  79. package/dist/{hub-mdns-ciao-DRfmLR_Z.js → hub-mdns-ciao-CLroVKhP.js} +2 -2
  80. package/dist/index.js +7 -7
  81. package/dist/index.mjs +7 -7
  82. package/dist/{restore-archive-Co70oRya.mjs → restore-archive-BB5QxUIe.mjs} +82 -82
  83. package/dist/{restore-archive-DA7N6ZZA.js → restore-archive-CPoja7N3.js} +1 -1
  84. package/dist/{retention-DNDOPW7Z.js → retention-DgA4qLBj.js} +1 -1
  85. package/dist/{retention-DfCW-dZS.mjs → retention-Dz5t6cWO.mjs} +1 -1
  86. package/dist/{wal-maintenance-71-j48Ci.mjs → wal-maintenance-BJi3_DBN.mjs} +0 -0
  87. package/dist/{wal-maintenance-CA0L6WZ9.js → wal-maintenance-CL9hrbnn.js} +0 -0
  88. package/package.json +1 -1
@@ -13,11 +13,13 @@
13
13
  * Devices are keyed by `{addonId, stableId}` — never a numeric device id,
14
14
  * which is this node's allocation and not the composition's identity.
15
15
  */
16
- import { type CompositionSourceDescription, type CompositionSourceRef, type CompositionTargetDescription, type DeviceType } from "@camstack/types";
16
+ import { type CompositionSourceDescription, type CompositionSourceRef, type CompositionTargetDescription, type DeviceType, type ReadingQuantity } from "@camstack/types";
17
17
  export interface SourceRowView {
18
18
  readonly id: number;
19
19
  readonly stableId: string;
20
20
  readonly type: DeviceType;
21
+ /** The device's stored quantity, when it declares one (D944 §4). */
22
+ readonly quantity?: ReadingQuantity;
21
23
  }
22
24
  /** One `getBindings` entry: the cap, and the addon serving it natively. */
23
25
  export interface BoundCapView {
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-xCNJAQMh.js");
3
+ const require_dist = require("../../dist-CrsVjBbk.js");
4
4
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
5
- const require_composition_sources = require("../../composition-sources-BSQneZV9.js");
5
+ const require_composition_sources = require("../../composition-sources-BulDAgW2.js");
6
6
  const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
7
7
  const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
8
8
  let zod = require("zod");
@@ -1933,6 +1933,16 @@ function refuseIfChanged(deps, blockId, expectedUpdatedAt) {
1933
1933
  function existingTarget(composition) {
1934
1934
  return composition.target.kind === "existing" ? composition.target.device : null;
1935
1935
  }
1936
+ function helperMemberDeviceIds(composition, sources) {
1937
+ const helper = composition.helper;
1938
+ if (helper === void 0) return [];
1939
+ const ids = [];
1940
+ for (const member of helper.members) {
1941
+ const found = sources.get(require_dist.compositionSourceKey(member.source));
1942
+ if (found?.kind === "found") ids.push(found.deviceId);
1943
+ }
1944
+ return ids;
1945
+ }
1936
1946
  async function validateAgainstStore(deps, composition, blockId) {
1937
1947
  if (!deps.store.isLoaded()) throw new Error(`${NOT_LOADED_REASON} — a composition cannot be judged against the stored ones until it has; retry shortly`);
1938
1948
  const self = blockId === null ? null : require_dist.composedDeviceRef(blockId);
@@ -1942,29 +1952,37 @@ async function validateAgainstStore(deps, composition, blockId) {
1942
1952
  const blocks = deps.store.list();
1943
1953
  const read = await deps.describe(refs, [...target === null ? [] : [target], ...storedCustomizationTargets(blocks)]);
1944
1954
  const stored = storedPeers(blocks, read.targets, deps.lookupCap, blockId);
1945
- return require_dist.validateComposition(composition, {
1946
- lookupCap: deps.lookupCap,
1947
- sources: read.sources,
1948
- self,
1949
- blockId,
1950
- target: target === null ? null : read.targets.get(require_dist.compositionSourceKey(target)) ?? {
1951
- kind: "unreadable",
1952
- error: "it was not read"
1953
- },
1954
- peers: stored.peers,
1955
- unreadTargets: stored.unread
1956
- });
1955
+ return {
1956
+ validation: require_dist.validateComposition(composition, {
1957
+ lookupCap: deps.lookupCap,
1958
+ sources: read.sources,
1959
+ self,
1960
+ blockId,
1961
+ target: target === null ? null : read.targets.get(require_dist.compositionSourceKey(target)) ?? {
1962
+ kind: "unreadable",
1963
+ error: "it was not read"
1964
+ },
1965
+ peers: stored.peers,
1966
+ unreadTargets: stored.unread
1967
+ }),
1968
+ memberDeviceIds: helperMemberDeviceIds(composition, read.sources)
1969
+ };
1957
1970
  }
1958
1971
  function describeProblems(validation) {
1959
1972
  return validation.problems.map((p) => `${p.path} [${p.code}]: ${p.message}`);
1960
1973
  }
1961
- function refuse(deps, subject, validation) {
1974
+ function refuse(deps, subject, validation, memberDeviceIds) {
1962
1975
  const problems = describeProblems(validation);
1963
- deps.logger.warn("composition save refused", { meta: {
1976
+ const meta = {
1964
1977
  name: subject.name,
1965
1978
  blockId: subject.blockId,
1966
1979
  problems
1967
- } });
1980
+ };
1981
+ if (memberDeviceIds.length === 0) deps.logger.warn("composition save refused", { meta });
1982
+ else for (const deviceId of memberDeviceIds) deps.logger.warn("composition save refused", {
1983
+ tags: { deviceId },
1984
+ meta
1985
+ });
1968
1986
  throw new Error(`core-blocks: the composition "${subject.name}" was refused — ${problems.join("; ")}`);
1969
1987
  }
1970
1988
  async function readStates(deps, blockIds) {
@@ -2109,11 +2127,11 @@ function buildCompositionApi(deps) {
2109
2127
  return {
2110
2128
  createComposition: ({ block, caller }) => serialized(async () => {
2111
2129
  const name = await nameOnCreate(deps, block);
2112
- const validation = await validateAgainstStore(deps, block.composition, null);
2113
- if (!validation.ok && require_dist.problemsBlockSave(validation.problems)) refuse(deps, {
2130
+ const judged = await validateAgainstStore(deps, block.composition, null);
2131
+ if (!judged.validation.ok && require_dist.problemsBlockSave(judged.validation.problems)) refuse(deps, {
2114
2132
  name,
2115
2133
  blockId: null
2116
- }, validation);
2134
+ }, judged.validation, judged.memberDeviceIds);
2117
2135
  const created = await deps.store.createComposition({
2118
2136
  ...block,
2119
2137
  name
@@ -2130,11 +2148,11 @@ function buildCompositionApi(deps) {
2130
2148
  refuseIfChanged(deps, blockId, expectedUpdatedAt);
2131
2149
  await refuseRetarget(deps, blockId, block);
2132
2150
  if (block.composition !== void 0) {
2133
- const validation = await validateAgainstStore(deps, block.composition, blockId);
2134
- if (!validation.ok && require_dist.problemsBlockSave(validation.problems)) refuse(deps, {
2151
+ const judged = await validateAgainstStore(deps, block.composition, blockId);
2152
+ if (!judged.validation.ok && require_dist.problemsBlockSave(judged.validation.problems)) refuse(deps, {
2135
2153
  name: block.name ?? blockId,
2136
2154
  blockId
2137
- }, validation);
2155
+ }, judged.validation, judged.memberDeviceIds);
2138
2156
  }
2139
2157
  const updated = await deps.store.updateComposition(blockId, block);
2140
2158
  deps.logger.info("composition updated", { meta: {
@@ -2212,7 +2230,7 @@ function buildCompositionApi(deps) {
2212
2230
  }
2213
2231
  };
2214
2232
  },
2215
- validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null),
2233
+ validateComposition: async ({ composition, blockId }) => (await validateAgainstStore(deps, composition, blockId ?? null)).validation,
2216
2234
  listComposableCaps: async ({ deviceType }) => ({ caps: [...require_dist.describeComposableCaps(deps.capabilityDefinitions, deviceType)] })
2217
2235
  };
2218
2236
  }
@@ -2637,10 +2655,17 @@ var CoreBlocksAddon = class extends require_dist.BaseAddon {
2637
2655
  return buildCompositionApi({
2638
2656
  store: this.requireStore(),
2639
2657
  describe: (sources, targets) => require_composition_sources.describeCompositionSources({
2640
- listByAddon: async (addonId) => requireApi().deviceManager.listAll.query({
2641
- addonId,
2642
- projection: "slim"
2643
- }),
2658
+ listByAddon: async (addonId) => {
2659
+ return (await requireApi().deviceManager.listAll.query({
2660
+ addonId,
2661
+ projection: "slim"
2662
+ })).map((row) => ({
2663
+ id: row.id,
2664
+ stableId: row.stableId,
2665
+ type: row.type,
2666
+ ...row.sourceInfo?.quantity === void 0 ? {} : { quantity: row.sourceInfo.quantity }
2667
+ }));
2668
+ },
2644
2669
  bindings: async (deviceId) => (await requireApi().deviceManager.getBindings.query({ deviceId })).entries
2645
2670
  }, sources, targets),
2646
2671
  lookupCap: require_dist.buildCapabilityLookup(require_dist.ALL_CAPABILITY_DEFINITIONS),
@@ -1,6 +1,6 @@
1
- import { $n as planComposition, Bt as coreBlockComposition, Ht as coreBlockSourceKind, Ji as defineRecordKinds, Jr as compositionSourceKey, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Oa as transformSecretWrite, Ot as buildCapabilityLookup, Pr as validateComposition, Rt as compositionSourceRefs, Ui as collectSecretMarkerRefs, Ur as composedDeviceRef, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, dr as resolveCoreBlockFiles, f as COMPOSER_RUNNER_ID, la as isSecretRefOwnedBy, m as CORE_BLOCK_ADDON_PREFIX, ni as BaseAddon, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, sa as isSecretMarker, sr as replacedFieldKeys, ta as hydrateSchema, ti as errMsg, tr as problemsBlockSave, ur as resolveCoreBlockEntry, v as CoreBlockSchema, wa as secretTreeFromSchema, xa as resolveSecretMarkers, zt as coreBlockAddonId } from "../../dist-Df6c0RX_.mjs";
1
+ import { At as buildCapabilityLookup, Fa as secretTreeFromSchema, Gr as validateComposition, Gt as coreBlockSourceKind, Ht as coreBlockAddonId, Kt as coreBlocksCapability, Ma as resolveSecretMarkers, N as DeclaredDevices, Qn as normalizeCoreBlockWrite, Ut as coreBlockComposition, Vt as compositionSourceRefs, Wt as coreBlockIdFromAddonId, _r as resolveCoreBlockEntry, aa as defineRecordKinds, ai as compositionSourceKey, ba as isSecretRefOwnedBy, cr as problemsBlockSave, ea as collectSecretMarkerRefs, ei as composedDeviceRef, en as describeComposableCaps, f as COMPOSER_RUNNER_ID, fa as hydrateSchema, fi as errMsg, m as CORE_BLOCK_ADDON_PREFIX, mr as replacedFieldKeys, or as planComposition, p as CORE_BLOCKS_ADDON_ID, pi as BaseAddon, r as ALL_CAPABILITY_DEFINITIONS, v as CoreBlockSchema, va as isSecretMarker, vr as resolveCoreBlockFiles, za as transformSecretWrite } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { t as describeCompositionSources } from "../../composition-sources-BnZpIA8u.mjs";
3
+ import { t as describeCompositionSources } from "../../composition-sources-BA2e5vh_.mjs";
4
4
  import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
5
5
  import { n as unwrapStoredValue, t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
6
6
  import { createRequire } from "node:module";
@@ -1928,6 +1928,16 @@ function refuseIfChanged(deps, blockId, expectedUpdatedAt) {
1928
1928
  function existingTarget(composition) {
1929
1929
  return composition.target.kind === "existing" ? composition.target.device : null;
1930
1930
  }
1931
+ function helperMemberDeviceIds(composition, sources) {
1932
+ const helper = composition.helper;
1933
+ if (helper === void 0) return [];
1934
+ const ids = [];
1935
+ for (const member of helper.members) {
1936
+ const found = sources.get(compositionSourceKey(member.source));
1937
+ if (found?.kind === "found") ids.push(found.deviceId);
1938
+ }
1939
+ return ids;
1940
+ }
1931
1941
  async function validateAgainstStore(deps, composition, blockId) {
1932
1942
  if (!deps.store.isLoaded()) throw new Error(`${NOT_LOADED_REASON} — a composition cannot be judged against the stored ones until it has; retry shortly`);
1933
1943
  const self = blockId === null ? null : composedDeviceRef(blockId);
@@ -1937,29 +1947,37 @@ async function validateAgainstStore(deps, composition, blockId) {
1937
1947
  const blocks = deps.store.list();
1938
1948
  const read = await deps.describe(refs, [...target === null ? [] : [target], ...storedCustomizationTargets(blocks)]);
1939
1949
  const stored = storedPeers(blocks, read.targets, deps.lookupCap, blockId);
1940
- return validateComposition(composition, {
1941
- lookupCap: deps.lookupCap,
1942
- sources: read.sources,
1943
- self,
1944
- blockId,
1945
- target: target === null ? null : read.targets.get(compositionSourceKey(target)) ?? {
1946
- kind: "unreadable",
1947
- error: "it was not read"
1948
- },
1949
- peers: stored.peers,
1950
- unreadTargets: stored.unread
1951
- });
1950
+ return {
1951
+ validation: validateComposition(composition, {
1952
+ lookupCap: deps.lookupCap,
1953
+ sources: read.sources,
1954
+ self,
1955
+ blockId,
1956
+ target: target === null ? null : read.targets.get(compositionSourceKey(target)) ?? {
1957
+ kind: "unreadable",
1958
+ error: "it was not read"
1959
+ },
1960
+ peers: stored.peers,
1961
+ unreadTargets: stored.unread
1962
+ }),
1963
+ memberDeviceIds: helperMemberDeviceIds(composition, read.sources)
1964
+ };
1952
1965
  }
1953
1966
  function describeProblems(validation) {
1954
1967
  return validation.problems.map((p) => `${p.path} [${p.code}]: ${p.message}`);
1955
1968
  }
1956
- function refuse(deps, subject, validation) {
1969
+ function refuse(deps, subject, validation, memberDeviceIds) {
1957
1970
  const problems = describeProblems(validation);
1958
- deps.logger.warn("composition save refused", { meta: {
1971
+ const meta = {
1959
1972
  name: subject.name,
1960
1973
  blockId: subject.blockId,
1961
1974
  problems
1962
- } });
1975
+ };
1976
+ if (memberDeviceIds.length === 0) deps.logger.warn("composition save refused", { meta });
1977
+ else for (const deviceId of memberDeviceIds) deps.logger.warn("composition save refused", {
1978
+ tags: { deviceId },
1979
+ meta
1980
+ });
1963
1981
  throw new Error(`core-blocks: the composition "${subject.name}" was refused — ${problems.join("; ")}`);
1964
1982
  }
1965
1983
  async function readStates(deps, blockIds) {
@@ -2104,11 +2122,11 @@ function buildCompositionApi(deps) {
2104
2122
  return {
2105
2123
  createComposition: ({ block, caller }) => serialized(async () => {
2106
2124
  const name = await nameOnCreate(deps, block);
2107
- const validation = await validateAgainstStore(deps, block.composition, null);
2108
- if (!validation.ok && problemsBlockSave(validation.problems)) refuse(deps, {
2125
+ const judged = await validateAgainstStore(deps, block.composition, null);
2126
+ if (!judged.validation.ok && problemsBlockSave(judged.validation.problems)) refuse(deps, {
2109
2127
  name,
2110
2128
  blockId: null
2111
- }, validation);
2129
+ }, judged.validation, judged.memberDeviceIds);
2112
2130
  const created = await deps.store.createComposition({
2113
2131
  ...block,
2114
2132
  name
@@ -2125,11 +2143,11 @@ function buildCompositionApi(deps) {
2125
2143
  refuseIfChanged(deps, blockId, expectedUpdatedAt);
2126
2144
  await refuseRetarget(deps, blockId, block);
2127
2145
  if (block.composition !== void 0) {
2128
- const validation = await validateAgainstStore(deps, block.composition, blockId);
2129
- if (!validation.ok && problemsBlockSave(validation.problems)) refuse(deps, {
2146
+ const judged = await validateAgainstStore(deps, block.composition, blockId);
2147
+ if (!judged.validation.ok && problemsBlockSave(judged.validation.problems)) refuse(deps, {
2130
2148
  name: block.name ?? blockId,
2131
2149
  blockId
2132
- }, validation);
2150
+ }, judged.validation, judged.memberDeviceIds);
2133
2151
  }
2134
2152
  const updated = await deps.store.updateComposition(blockId, block);
2135
2153
  deps.logger.info("composition updated", { meta: {
@@ -2207,7 +2225,7 @@ function buildCompositionApi(deps) {
2207
2225
  }
2208
2226
  };
2209
2227
  },
2210
- validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null),
2228
+ validateComposition: async ({ composition, blockId }) => (await validateAgainstStore(deps, composition, blockId ?? null)).validation,
2211
2229
  listComposableCaps: async ({ deviceType }) => ({ caps: [...describeComposableCaps(deps.capabilityDefinitions, deviceType)] })
2212
2230
  };
2213
2231
  }
@@ -2632,10 +2650,17 @@ var CoreBlocksAddon = class extends BaseAddon {
2632
2650
  return buildCompositionApi({
2633
2651
  store: this.requireStore(),
2634
2652
  describe: (sources, targets) => describeCompositionSources({
2635
- listByAddon: async (addonId) => requireApi().deviceManager.listAll.query({
2636
- addonId,
2637
- projection: "slim"
2638
- }),
2653
+ listByAddon: async (addonId) => {
2654
+ return (await requireApi().deviceManager.listAll.query({
2655
+ addonId,
2656
+ projection: "slim"
2657
+ })).map((row) => ({
2658
+ id: row.id,
2659
+ stableId: row.stableId,
2660
+ type: row.type,
2661
+ ...row.sourceInfo?.quantity === void 0 ? {} : { quantity: row.sourceInfo.quantity }
2662
+ }));
2663
+ },
2639
2664
  bindings: async (deviceId) => (await requireApi().deviceManager.getBindings.query({ deviceId })).entries
2640
2665
  }, sources, targets),
2641
2666
  lookupCap: buildCapabilityLookup(ALL_CAPABILITY_DEFINITIONS),
@@ -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-xCNJAQMh.js");
7
- const require_retention = require("../../retention-DNDOPW7Z.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
+ const require_retention = require("../../retention-DgA4qLBj.js");
8
8
  //#region src/builtins/device-history/capture/point-writer.ts
9
9
  var FLUSH_INTERVAL_MS = 1e4;
10
10
  var MAX_BUFFER_AGE_MS = 6e4;
@@ -1,5 +1,5 @@
1
- import { B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Xi as emitReadiness, aa as isReadingQuantity, ea as historyUnitFor, en as deviceHistoryCapability, ja as EventCategory, ni as BaseAddon, nn as deviceRemovalHookCapability, z as HISTORY_CATALOG } from "../../dist-Df6c0RX_.mjs";
2
- import { S as subjectIdOf, _ as readUnit, a as FIVE_MINUTES_MS, b as SeriesRegistry, c as bucketEndOf, d as CAP_KEY_PREFIX, f as CaptureEngine, g as readPath, h as catalogMetrics, i as DAY_MS, l as bucketStartOf, m as capSeriesKey, n as RetentionJob, o as HOUR_MS, p as capItemSeriesKey, r as DepartureTracker, s as ROLLUP_GRACE_MS, t as DEFAULT_RETENTION, u as floorTo, v as DeviceDirectory, x as identityOf, y as isRealDeviceType } from "../../retention-DfCW-dZS.mjs";
1
+ import { B as HISTORY_CATALOG, D as DEVICE_HISTORY_ENERGY_KEY, Ha as EventCategory, V as HISTORY_ITEM_CATALOG, an as deviceRemovalHookCapability, da as historyUnitFor, ga as isReadingQuantity, pi as BaseAddon, rn as deviceHistoryCapability, sa as emitReadiness, wt as armRemovalReconcile } from "../../dist-Dfwxsc_Y.mjs";
2
+ import { S as subjectIdOf, _ as readUnit, a as FIVE_MINUTES_MS, b as SeriesRegistry, c as bucketEndOf, d as CAP_KEY_PREFIX, f as CaptureEngine, g as readPath, h as catalogMetrics, i as DAY_MS, l as bucketStartOf, m as capSeriesKey, n as RetentionJob, o as HOUR_MS, p as capItemSeriesKey, r as DepartureTracker, s as ROLLUP_GRACE_MS, t as DEFAULT_RETENTION, u as floorTo, v as DeviceDirectory, x as identityOf, y as isRealDeviceType } from "../../retention-Dz5t6cWO.mjs";
3
3
  //#region src/builtins/device-history/capture/point-writer.ts
4
4
  var FLUSH_INTERVAL_MS = 1e4;
5
5
  var MAX_BUFFER_AGE_MS = 6e4;
@@ -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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
9
9
  const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
@@ -1,4 +1,4 @@
1
- import { $r as DeviceRole, $t as deviceExtensionCapability, Ca as secretTreeFromPaths, Da as toSecretFieldView, F as DeviceTombstoneSchema, In as locationIconKey, Ji as defineRecordKinds, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, Oa as transformSecretWrite, P as DeviceStatusSchema, Pi as WELL_KNOWN_TAB_MAP, Pt as canonicalIconKey, Qr as DeviceFeature, R as FieldClaimSchema, Sr as siteZoneKey, Ta as sleep$1, Wi as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, ca as isSecretMarkerLike, ei as DeviceType, gn as formatMinutes, gr as runtimeStatePolicyFor, ia as isKeychainStoredField, in as deviceStatusCapability, ja as EventCategory, jt as buildStreamParamsConfigSchema, ka as userError, ki as SECRET_CLEAR, l as CAP_NAMES_WITH_STATUS, na as isDeviceConfigCap, ni as BaseAddon, oa as isSecretClear, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sa as isSecretMarker, sn as enumerateSchemaFields, ti as errMsg, tn as deviceManagerCapability, un as expandContainer, w as DAY_NAMES, xa as resolveSecretMarkers } from "../../dist-Df6c0RX_.mjs";
1
+ import { $n as normalizeUnit, Ba as userError, Bi as SECRET_CLEAR, F as DeviceTombstoneSchema, Gi as WELL_KNOWN_TAB_MAP, Ha as EventCategory, Hn as locationIconKey, Ia as sleep$1, It as canonicalIconKey, L as FieldClaimModeSchema, Ma as resolveSecretMarkers, Mr as siteZoneKey, Nt as buildStreamParamsConfigSchema, P as DeviceStatusSchema, Pa as secretTreeFromPaths, Qt as defineExtensionSlotProvider, R as FieldClaimSchema, Ra as toSecretFieldView, Rn as legacyAutoLinkIds, X as MINUTES_PER_DAY, _a as isSecretClear, aa as defineRecordKinds, bn as formatMinutes, di as DeviceType, fi as errMsg, ha as isKeychainStoredField, in as deviceManagerCapability, ir as parseStreamParamsFormPatch, l as CAP_NAMES_WITH_STATUS, li as DeviceFeature, ln as enumerateItemArrayFields, nn as deviceExtensionCapability, on as deviceStateCapability, pa as isDeviceConfigCap, pi as BaseAddon, pn as expandContainer, qt as createDeviceExtensionProvider, r as ALL_CAPABILITY_DEFINITIONS, s as CAMERA_SWITCH_ORDER, sn as deviceStatusCapability, st as STREAM_PROFILE_META, ta as collectZodSecretPaths, ui as DeviceRole, un as enumerateSchemaFields, va as isSecretMarker, w as DAY_NAMES, wr as runtimeStatePolicyFor, ya as isSecretMarkerLike, za as transformSecretWrite } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
3
  import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
4
4
  import { t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
@@ -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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_formatter = require("../../formatter-xbxeV4GD.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 { Ln as logDestinationCapability, ni as BaseAddon } from "../../dist-Df6c0RX_.mjs";
1
+ import { Un as logDestinationCapability, pi as BaseAddon } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-DkYZ4LXp.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -3,10 +3,10 @@ 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-xCNJAQMh.js");
7
- const require_device_ca = require("../../device-ca-D_4dI5gv.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
+ const require_device_ca = require("../../device-ca-BuRg4V4x.js");
8
8
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
9
- const require_constants = require("../../constants-CQfTeCnB.js");
9
+ const require_constants = require("../../constants-BntdWx4k.js");
10
10
  const require_platform_key_source = require("../../platform-key-source-Di7HrlGR.js");
11
11
  let node_crypto = require("node:crypto");
12
12
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,7 +1,7 @@
1
- import { An as keychainAdminCapability, G as KeychainResetRecordSchema, Ji as defineRecordKinds, Qi as formatSecretScope, U as KEYCHAIN_RESET_TRIGGER_ACTOR, W as KeychainAuditEntrySchema, _a as parseSecretRef, ja as EventCategory, jn as keychainCapability, ma as normalizeSecretOwner, ni as BaseAddon } from "../../dist-Df6c0RX_.mjs";
2
- import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-Bzd6UO_c.mjs";
1
+ import { G as KeychainAuditEntrySchema, Ha as EventCategory, In as keychainAdminCapability, K as KeychainResetRecordSchema, Ln as keychainCapability, Oa as parseSecretRef, Ta as normalizeSecretOwner, W as KEYCHAIN_RESET_TRIGGER_ACTOR, aa as defineRecordKinds, la as formatSecretScope, pi as BaseAddon } from "../../dist-Dfwxsc_Y.mjs";
2
+ import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-DXm8IH3p.mjs";
3
3
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
4
- import { a as MESH_CA_KEY_REF } from "../../constants-7D7xjw0h.mjs";
4
+ import { a as MESH_CA_KEY_REF } from "../../constants-DZKo4kM2.mjs";
5
5
  import { n as getPlatformKeychainKey } from "../../platform-key-source-BWlq0jjn.mjs";
6
6
  import { createCipheriv, createDecipheriv, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
7
7
  import { restrictDirToOwnerSync, restrictFileToOwnerSync, writeOwnerOnlyFileSync } from "@camstack/types/node";
@@ -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-xCNJAQMh.js");
3
+ const require_dist = require("../../dist-CrsVjBbk.js");
4
4
  let node_fs_promises = require("node:fs/promises");
5
5
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
6
6
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Gi as createEvent, Vn as mayWriteToLocation, it as RecordingStatusSchema, ja as EventCategory, ni as BaseAddon, nt as RECORDING_SOURCE_CAMSTACK_ADDON, ti as errMsg } from "../../dist-Df6c0RX_.mjs";
1
+ import { Ha as EventCategory, at as RecordingStatusSchema, fi as errMsg, na as createEvent, pi as BaseAddon, qn as mayWriteToLocation, rt as RECORDING_SOURCE_CAMSTACK_ADDON } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import * as fsp from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { constants } from "node:fs";
@@ -3,10 +3,10 @@ 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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_safe_buffer$1 = require("../../safe-buffer-D3aoa-7X.js");
8
8
  const require_ms$1 = require("../../ms-LB3giGoU.js");
9
- const require_device_ca = require("../../device-ca-D_4dI5gv.js");
9
+ const require_device_ca = require("../../device-ca-BuRg4V4x.js");
10
10
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
11
11
  let zod = require("zod");
12
12
  let node_crypto = require("node:crypto");
@@ -1,8 +1,8 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { $ as PreferenceDeviceIdSchema, At as buildDeviceSignatureMessage, E as DEVICE_ENROLLMENT_TTL_MS, Ji as defineRecordKinds, Nr as userManagementCapability, O as DEVICE_NONCE_TTL_MS, Q as PREFERENCES_MAX_VALUE_BYTES, Qt as deviceCredentialsCapability, et as PreferenceNamespaceSchema, gt as UserRecordSchema, h as CREDENTIAL_TOKEN_AUDIENCE, hn as formatDeviceRevoker, ka as userError, kt as buildDeviceEnrollmentLink, lt as SsoBridgeClaimsSchema, mt as TokenScopeSchema, ni as BaseAddon, sa as isSecretMarker, st as ScopedTokenSchema, tt as PreferenceValueSchema, ua as makeSecretMarker, wn as isCredentialTokenPayload, wt as authProviderCapability, y as CredentialTokenClaimsSchema } from "../../dist-Df6c0RX_.mjs";
2
+ import { $ as PREFERENCES_MAX_VALUE_BYTES, An as isCredentialTokenPayload, Ba as userError, E as DEVICE_ENROLLMENT_TTL_MS, Mt as buildDeviceSignatureMessage, O as DEVICE_NONCE_TTL_MS, Tt as authProviderCapability, Wr as userManagementCapability, _t as UserRecordSchema, aa as defineRecordKinds, ct as ScopedTokenSchema, et as PreferenceDeviceIdSchema, h as CREDENTIAL_TOKEN_AUDIENCE, ht as TokenScopeSchema, jt as buildDeviceEnrollmentLink, nt as PreferenceValueSchema, pi as BaseAddon, tn as deviceCredentialsCapability, tt as PreferenceNamespaceSchema, ut as SsoBridgeClaimsSchema, va as isSecretMarker, xa as makeSecretMarker, y as CredentialTokenClaimsSchema, yn as formatDeviceRevoker } from "../../dist-Dfwxsc_Y.mjs";
3
3
  import { t as require_safe_buffer } from "../../safe-buffer-B1OjL1I9.mjs";
4
4
  import { t as require_ms } from "../../ms-CgH2OFlD.mjs";
5
- import { _ as setProcessJwtSigningKey, a as importDevicePublicKey, c as rebuildDeviceCaCertificate, d as JWT_SIGNING_KEY_REF, g as processJwtSigningKey, h as loadJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, r as DEVICE_CA_SETTINGS_SECTION, s as loadDeviceCa, t as DEVICE_CA_FIELD, u as verifyDeviceSignature } from "../../device-ca-Bzd6UO_c.mjs";
5
+ import { _ as setProcessJwtSigningKey, a as importDevicePublicKey, c as rebuildDeviceCaCertificate, d as JWT_SIGNING_KEY_REF, g as processJwtSigningKey, h as loadJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, r as DEVICE_CA_SETTINGS_SECTION, s as loadDeviceCa, t as DEVICE_CA_FIELD, u as verifyDeviceSignature } from "../../device-ca-DXm8IH3p.mjs";
6
6
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
7
7
  import { z } from "zod";
8
8
  import * as crypto$1 from "node:crypto";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-xCNJAQMh.js");
4
- const require_hub_mdns_ciao = require("../../hub-mdns-ciao-DRfmLR_Z.js");
3
+ const require_dist = require("../../dist-CrsVjBbk.js");
4
+ const require_hub_mdns_ciao = require("../../hub-mdns-ciao-CLroVKhP.js");
5
5
  let zod = require("zod");
6
6
  let node_net = require("node:net");
7
7
  let node_os = require("node:os");
@@ -1,5 +1,5 @@
1
- import { Fn as localNetworkCapability, Fr as validateCustomAddress, Ft as checkRoleAddress, H as HUB_MDNS_TXT_KEYS, Qn as pickAppLinkHub, Tn as isDefaultAppConnectionEndpoint, V as HUB_MDNS_SERVICE_TYPE, Z as NetworkTunnelStartedDataSchema, c as CAMSTACK_APP_LINK_ORIGIN, cr as resolveAppConnections, fr as resolveHubAddressRoles, hr as resolveNotificationTapAddress, ja as EventCategory, ni as BaseAddon, ti as errMsg, xn as isAppLinkBase, xr as shortHostname } from "../../dist-Df6c0RX_.mjs";
2
- import { P as readLanHttpState, a as storeUploadedCertificate, d as servedHttpsLeafFingerprint, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, m as readExtraSans, n as applyCertificateToListener, o as useStoredUploadedCertificate, r as regenerateCertificate, t as createCiaoPublisher, v as writeExtraSans, w as ensureTlsCert } from "../../hub-mdns-ciao-D7GMnEz0.mjs";
1
+ import { Dn as isAppLinkBase, H as HUB_MDNS_SERVICE_TYPE, Ha as EventCategory, Kr as validateCustomAddress, Lt as checkRoleAddress, Q as NetworkTunnelStartedDataSchema, Sr as resolveNotificationTapAddress, U as HUB_MDNS_TXT_KEYS, Vn as localNetworkCapability, ar as pickAppLinkHub, c as CAMSTACK_APP_LINK_ORIGIN, fi as errMsg, hr as resolveAppConnections, jn as isDefaultAppConnectionEndpoint, jr as shortHostname, pi as BaseAddon, yr as resolveHubAddressRoles } from "../../dist-Dfwxsc_Y.mjs";
2
+ import { P as readLanHttpState, a as storeUploadedCertificate, d as servedHttpsLeafFingerprint, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, m as readExtraSans, n as applyCertificateToListener, o as useStoredUploadedCertificate, r as regenerateCertificate, t as createCiaoPublisher, v as writeExtraSans, w as ensureTlsCert } from "../../hub-mdns-ciao-BbI8MNtQ.mjs";
3
3
  import { z } from "zod";
4
4
  import { isIP } from "node:net";
5
5
  import * as os$1 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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_log_read_filter = require("../../log-read-filter-Bi066jwU.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/loki-logging/loki-payload.ts
@@ -1,4 +1,4 @@
1
- import { Ln as logDestinationCapability, ni as BaseAddon } from "../../dist-Df6c0RX_.mjs";
1
+ import { Un as logDestinationCapability, pi as BaseAddon } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { n as compileLogFilter, o as lineMatches } from "../../log-read-filter-D7Ev3zm-.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/loki-logging/loki-payload.ts
@@ -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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Gi as createEvent, Un as metricsProviderCapability, ht as UNATTRIBUTED_BUCKET_KEY, ja as EventCategory, lr as resolveBucketMs, mn as foldSnapshotByFunction, ni as BaseAddon, or as reducePoints, rt as ROOT_BUCKET_KEY, ti as errMsg } from "../../dist-Df6c0RX_.mjs";
1
+ import { Ha as EventCategory, Yn as metricsProviderCapability, fi as errMsg, gr as resolveBucketMs, gt as UNATTRIBUTED_BUCKET_KEY, it as ROOT_BUCKET_KEY, na as createEvent, pi as BaseAddon, pr as reducePoints, vn as foldSnapshotByFunction } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { access, readFile, readdir } from "node:fs/promises";
3
3
  import { promisify } from "node:util";
4
4
  import * as os$1 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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_coral_accelerators = require("../../coral-accelerators-BSVsBVzt.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM, r as __exportAll } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Xi as emitReadiness, Xn as parseAcceleratorFactsJson, an as enumerateInferenceDevices, er as platformProbeCapability, ja as EventCategory, ni as BaseAddon, ti as errMsg, yr as scoreRuntimes } from "../../dist-Df6c0RX_.mjs";
2
+ import { Dr as scoreRuntimes, Ha as EventCategory, cn as enumerateInferenceDevices, fi as errMsg, nr as parseAcceleratorFactsJson, pi as BaseAddon, sa as emitReadiness, sr as platformProbeCapability } from "../../dist-Dfwxsc_Y.mjs";
3
3
  import { n as detectCoralAccelerator, r as nodeCoralFs } from "../../coral-accelerators-DBlgWB8k.mjs";
4
4
  import * as path$1 from "node:path";
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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  //#region src/builtins/record-entries/entries-service.ts
@@ -1,4 +1,4 @@
1
- import { Ni as UnknownRecordKindError, da as mapSecretLeaves, fi as InvalidRecordError, ir as recordEntriesCapability, ni as BaseAddon, ya as recordSecretRef } from "../../dist-Df6c0RX_.mjs";
1
+ import { Aa as recordSecretRef, Ci as InvalidRecordError, Sa as mapSecretLeaves, Wi as UnknownRecordKindError, dr as recordEntriesCapability, pi as BaseAddon } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  //#region src/builtins/record-entries/entries-service.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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.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 { ja as EventCategory, ni as BaseAddon } from "../../dist-Df6c0RX_.mjs";
1
+ import { Ha as EventCategory, pi as BaseAddon } from "../../dist-Dfwxsc_Y.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-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Cr as snapshotCapability, Dt as batteryCapability, Et as bareAddonId, Hn as memoizePinnedFfmpeg, Qr as DeviceFeature, Xt as deriveBatteryPresence, ei as DeviceType, fa as nodePin, ja as EventCategory, jr as streamQualityLabel, ni as BaseAddon, o as BatteryStatusSchema, ti as errMsg } from "../../dist-Df6c0RX_.mjs";
1
+ import { $t as deriveBatteryPresence, Ca as nodePin, Dt as bareAddonId, Ha as EventCategory, Jn as memoizePinnedFfmpeg, Nr as snapshotCapability, Ot as batteryCapability, Vr as streamQualityLabel, di as DeviceType, fi as errMsg, li as DeviceFeature, o as BatteryStatusSchema, pi as BaseAddon } from "../../dist-Dfwxsc_Y.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-xCNJAQMh.js");
6
+ const require_dist = require("../../dist-CrsVjBbk.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 { kr as storageProviderCapability, ni as BaseAddon, pn as filesystemBrowseCapability } from "../../dist-Df6c0RX_.mjs";
1
+ import { _n as filesystemBrowseCapability, pi as BaseAddon, zr as storageProviderCapability } from "../../dist-Dfwxsc_Y.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";
@@ -4,7 +4,7 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
6
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./filesystem-storage.addon.js");
7
- const require_wal_maintenance = require("../../wal-maintenance-CA0L6WZ9.js");
7
+ const require_wal_maintenance = require("../../wal-maintenance-CL9hrbnn.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./sqlite-settings.addon.js");
9
9
  //#region src/builtins/sqlite-storage/config-store.ts
10
10
  var ConfigStore = class {