@camstack/system 1.2.472 → 1.2.474

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 (86) hide show
  1. package/dist/{agent-https-JhvY1axF.mjs → agent-https-CbczsyM0.mjs} +3 -6
  2. package/dist/{agent-https-bnyFRK7Y.js → agent-https-DRwEbLL7.js} +2 -5
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +2 -2
  18. package/dist/builtins/composer/composer.addon.mjs +2 -2
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-history/device-history.addon.js +1 -1
  24. package/dist/builtins/device-history/device-history.addon.mjs +1 -1
  25. package/dist/builtins/device-manager/device-manager.addon.js +72 -2
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +72 -2
  27. package/dist/builtins/device-manager/device-state-mirror.d.ts +4 -0
  28. package/dist/builtins/device-manager/running-flip.d.ts +11 -0
  29. package/dist/builtins/hub-forwarder/index.js +1 -1
  30. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  31. package/dist/builtins/keychain/index.js +3 -3
  32. package/dist/builtins/keychain/index.mjs +3 -3
  33. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  34. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  35. package/dist/builtins/local-auth/local-auth.addon.js +16 -2
  36. package/dist/builtins/local-auth/local-auth.addon.mjs +16 -2
  37. package/dist/builtins/local-auth/person-scopes.d.ts +7 -0
  38. package/dist/builtins/local-network/local-network.addon.js +2 -2
  39. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  40. package/dist/builtins/loki-logging/index.js +1 -1
  41. package/dist/builtins/loki-logging/index.mjs +1 -1
  42. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  43. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  44. package/dist/builtins/platform-probe/accelerator-facts-probe.d.ts +24 -0
  45. package/dist/builtins/platform-probe/index.js +110 -10
  46. package/dist/builtins/platform-probe/index.mjs +109 -10
  47. package/dist/builtins/platform-probe/platform-scorer.d.ts +10 -2
  48. package/dist/builtins/record-entries/index.js +1 -1
  49. package/dist/builtins/record-entries/index.mjs +1 -1
  50. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  51. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  52. package/dist/builtins/snapshot/index.js +1 -1
  53. package/dist/builtins/snapshot/index.mjs +1 -1
  54. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  55. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  56. package/dist/builtins/sqlite-storage/index.js +1 -1
  57. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  58. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  59. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  60. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  61. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  62. package/dist/builtins/system-config/system-config.addon.js +3 -3
  63. package/dist/builtins/system-config/system-config.addon.mjs +3 -3
  64. package/dist/builtins/winston-logging/index.js +1 -1
  65. package/dist/builtins/winston-logging/index.mjs +1 -1
  66. package/dist/{composition-sources-D3h-tNoJ.js → composition-sources-CJv3W669.js} +1 -1
  67. package/dist/{composition-sources-BY6rFuAE.mjs → composition-sources-CsBIIit3.mjs} +1 -1
  68. package/dist/{constants-CqbO6e9i.js → constants-C0hrXcEr.js} +1 -1
  69. package/dist/{constants-zBiEodEM.mjs → constants-Dy8CaDeT.mjs} +1 -1
  70. package/dist/{device-ca-BWTWWBcc.mjs → device-ca-CHdsePe5.mjs} +1 -1
  71. package/dist/{device-ca-CfiIg3a9.js → device-ca-Dg3rSU48.js} +1 -1
  72. package/dist/{dist-CdFkkmXW.mjs → dist-BugavoVR.mjs} +302 -110
  73. package/dist/{dist-DX5Fu3mV.js → dist-Sn-HiZ4e.js} +307 -109
  74. package/dist/file-host-worker.js +1 -1
  75. package/dist/file-host-worker.mjs +1 -1
  76. package/dist/{hub-mdns-ciao-CYp1Gipm.mjs → hub-mdns-ciao-BDvqGIw4.mjs} +2 -2
  77. package/dist/{hub-mdns-ciao-C174UDzO.js → hub-mdns-ciao-DkncLbg9.js} +2 -2
  78. package/dist/index.js +15 -7
  79. package/dist/index.mjs +15 -7
  80. package/dist/{restore-archive-BX0gaKtG.mjs → restore-archive-CFBm30Gk.mjs} +1 -1
  81. package/dist/{restore-archive-B2jIFfu_.js → restore-archive-gYKzaJ4Y.js} +1 -1
  82. package/dist/{retired-settings-keys-C_Kjp-Bj.mjs → retired-settings-keys-CWp7ZSeA.mjs} +8 -0
  83. package/dist/{retired-settings-keys-CGUqX-Oz.js → retired-settings-keys-DorakcxV.js} +8 -0
  84. package/dist/{wal-maintenance-KHzJXlF2.mjs → wal-maintenance-BnhkcEkI.mjs} +0 -0
  85. package/dist/{wal-maintenance-Dxqd5igw.js → wal-maintenance-DyMUz_Hy.js} +0 -0
  86. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- import { Ki as defineRecordKinds } from "./dist-CdFkkmXW.mjs";
1
+ import { qi as defineRecordKinds } from "./dist-BugavoVR.mjs";
2
2
  import { S as backdatedNotBefore, _ as NameConstraints, a as KeyUsageFlags, c as Pkcs10CertificateRequest, d as SubjectKeyIdentifierExtension, f as X509Certificate$1, g as GeneralSubtrees, h as GeneralSubtree, i as Extension, l as Pkcs10CertificateRequestGenerator, m as cryptoProvider, n as BasicConstraintsExtension, o as KeyUsagesExtension, p as X509CertificateGenerator, r as ExtendedKeyUsageExtension, s as PemConverter, t as AuthorityKeyIdentifierExtension, u as SubjectAlternativeNameExtension, v as GeneralName, x as AsnConvert } from "./x509.es-DK__ETIe.mjs";
3
3
  import { z } from "zod";
4
4
  import { X509Certificate, createHash, createPrivateKey, randomBytes, webcrypto } from "node:crypto";
@@ -6,7 +6,7 @@ import { writeOwnerOnlyFileSync } from "@camstack/types/node";
6
6
  import { isIP } from "node:net";
7
7
  import { join } from "node:path";
8
8
  import * as os$1 from "node:os";
9
- import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
9
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
10
10
  var MeshNodeCertificateBodySchema = z.object({
11
11
  nodeId: z.string(),
12
12
  serial: z.string(),
@@ -915,14 +915,11 @@ function installAgentHttps(dataDir, input) {
915
915
  if (!leaf.verify(ca.publicKey)) throw new AgentHttpsInstallError("the certificate is not signed by the CA that came with it");
916
916
  if (new Date(leaf.validTo).getTime() <= Date.now()) throw new AgentHttpsInstallError("the certificate is already expired");
917
917
  mkdirSync(paths.dir, { recursive: true });
918
- const tmp = `${paths.bundlePath}.tmp`;
919
- writeOwnerOnlyFileSync(tmp, JSON.stringify({
918
+ writeOwnerOnlyFileSync(paths.bundlePath, JSON.stringify({
920
919
  keyPem,
921
920
  certPem: input.certPem,
922
921
  caCertPem: input.caCertPem
923
922
  }));
924
- renameSync(tmp, paths.bundlePath);
925
- chmodSync(paths.bundlePath, 384);
926
923
  writeFileAtomic(paths.certPath, input.certPem.endsWith("\n") ? input.certPem : `${input.certPem}\n`);
927
924
  return {
928
925
  keyPem,
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-DX5Fu3mV.js");
2
+ const require_dist = require("./dist-Sn-HiZ4e.js");
3
3
  const require_x509_es = require("./x509.es-C4cOo48M.js");
4
4
  let zod = require("zod");
5
5
  let node_crypto = require("node:crypto");
@@ -917,14 +917,11 @@ function installAgentHttps(dataDir, input) {
917
917
  if (!leaf.verify(ca.publicKey)) throw new AgentHttpsInstallError("the certificate is not signed by the CA that came with it");
918
918
  if (new Date(leaf.validTo).getTime() <= Date.now()) throw new AgentHttpsInstallError("the certificate is already expired");
919
919
  (0, node_fs.mkdirSync)(paths.dir, { recursive: true });
920
- const tmp = `${paths.bundlePath}.tmp`;
921
- (0, _camstack_types_node.writeOwnerOnlyFileSync)(tmp, JSON.stringify({
920
+ (0, _camstack_types_node.writeOwnerOnlyFileSync)(paths.bundlePath, JSON.stringify({
922
921
  keyPem,
923
922
  certPem: input.certPem,
924
923
  caCertPem: input.caCertPem
925
924
  }));
926
- (0, node_fs.renameSync)(tmp, paths.bundlePath);
927
- (0, node_fs.chmodSync)(paths.bundlePath, 384);
928
925
  writeFileAtomic(paths.certPath, input.certPem.endsWith("\n") ? input.certPem : `${input.certPem}\n`);
929
926
  return {
930
927
  keyPem,
@@ -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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { $r as errMsg, Da as EventCategory, _t as addonPagesCapability, ei as BaseAddon } from "../../dist-CdFkkmXW.mjs";
1
+ import { Oa as EventCategory, _t as addonPagesCapability, ei as errMsg, ti as BaseAddon } from "../../dist-BugavoVR.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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { $r as errMsg, Da as EventCategory, ei as BaseAddon, yt as addonWidgetsCapability } from "../../dist-CdFkkmXW.mjs";
1
+ import { Oa as EventCategory, ei as errMsg, ti as BaseAddon, yt as addonWidgetsCapability } from "../../dist-BugavoVR.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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  //#region src/builtins/alerts/alert-episode-policy.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { $r as errMsg, Da as EventCategory, Ki as defineRecordKinds, St as alertsCapability, Ui as createEvent, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, ei as BaseAddon, i as AlertSchema, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-CdFkkmXW.mjs";
1
+ import { Oa as EventCategory, St as alertsCapability, Wi as createEvent, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, ei as errMsg, i as AlertSchema, qi as defineRecordKinds, ti as BaseAddon, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-BugavoVR.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
3
  //#region src/builtins/alerts/alert-episode-policy.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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { $r as errMsg, Da as EventCategory, Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, ea as isEvent, ei as BaseAddon, tr as ptzAutotrackCapability } from "../../dist-CdFkkmXW.mjs";
1
+ import { Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, Oa as EventCategory, ei as errMsg, nr as ptzAutotrackCapability, ta as isEvent, ti as BaseAddon } from "../../dist-BugavoVR.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,9 +3,9 @@ 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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
- const require_restore_archive = require("../../restore-archive-B2jIFfu_.js");
8
+ const require_restore_archive = require("../../restore-archive-gYKzaJ4Y.js");
9
9
  let node_crypto = require("node:crypto");
10
10
  let node_fs_promises = require("node:fs/promises");
11
11
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,6 +1,6 @@
1
- import { Da as EventCategory, Er as storageOccupancyCapability, Sa as toNodeId, Tt as backupCapability, Vn as mayWriteToLocation, ca as nodePin, ei as BaseAddon } from "../../dist-CdFkkmXW.mjs";
1
+ import { Ca as toNodeId, Dr as storageOccupancyCapability, Oa as EventCategory, Tt as backupCapability, Vn as mayWriteToLocation, la as nodePin, ti as BaseAddon } from "../../dist-BugavoVR.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, 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-BX0gaKtG.mjs";
3
+ import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, 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-CFBm30Gk.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import * as fsp from "node:fs/promises";
6
6
  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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { Ki as defineRecordKinds, Mt as calendarsCapability, ei as BaseAddon, g as CalendarPreferencesSchema } from "../../dist-CdFkkmXW.mjs";
1
+ import { Mt as calendarsCapability, g as CalendarPreferencesSchema, qi as defineRecordKinds, ti as BaseAddon } from "../../dist-BugavoVR.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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { $r as errMsg, Da as EventCategory, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Or as streamCatalogCapability, Qi as hydrateSchema, Qr as DeviceType, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Ui as createEvent, X as MOTION_CLOSE_AFTER_MS, Xr as DeviceFeature, a as BaseDevice, ei as BaseAddon, qt as declarationOwnerNodeId, xr as snapshotCapability, zr as buildFfmpegArgs } from "../../dist-CdFkkmXW.mjs";
1
+ import { $i as hydrateSchema, $r as DeviceType, Br as buildFfmpegArgs, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Oa as EventCategory, Sr as snapshotCapability, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Wi as createEvent, X as MOTION_CLOSE_AFTER_MS, Zr as DeviceFeature, a as BaseDevice, ei as errMsg, kr as streamCatalogCapability, qt as declarationOwnerNodeId, ti as BaseAddon } from "../../dist-BugavoVR.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-DX5Fu3mV.js");
7
- const require_composition_sources = require("../../composition-sources-D3h-tNoJ.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
7
+ const require_composition_sources = require("../../composition-sources-CJv3W669.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 { $r as errMsg, Br as cloneStatefulExpressionMemory, Da as EventCategory, Gr as compositionSliceKey, Hr as composedDeviceStableId, It as composerCapability, Jr as disarmRoseMemory, Kr as compositionSourceKey, Lt as compositionFieldKey, N as DeclaredDevices, Ot as buildCapabilityLookup, Qn as planComposition, Qr as DeviceType, Rr as COMPOSER_ADDON_ID, Ui as createEvent, Ur as compositionFeatureEnabled, Vr as composedDeviceRef, Wr as compositionItemFieldPath, Yr as toExpressionValue, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as BaseAddon, qr as createStatefulExpressionMemory, r as ALL_CAPABILITY_DEFINITIONS } from "../../dist-CdFkkmXW.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-BY6rFuAE.mjs";
1
+ import { $n as planComposition, $r as DeviceType, Gr as compositionItemFieldPath, Hr as composedDeviceRef, It as composerCapability, Jr as createStatefulExpressionMemory, Kr as compositionSliceKey, Lt as compositionFieldKey, N as DeclaredDevices, Oa as EventCategory, Ot as buildCapabilityLookup, Ur as composedDeviceStableId, Vr as cloneStatefulExpressionMemory, Wi as createEvent, Wr as compositionFeatureEnabled, Xr as toExpressionValue, Yr as disarmRoseMemory, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as errMsg, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, zr as COMPOSER_ADDON_ID } from "../../dist-BugavoVR.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-CsBIIit3.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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { Ln as logDestinationCapability, ei as BaseAddon } from "../../dist-CdFkkmXW.mjs";
1
+ import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-BugavoVR.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,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-DX5Fu3mV.js");
3
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
4
4
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
5
- const require_composition_sources = require("../../composition-sources-D3h-tNoJ.js");
5
+ const require_composition_sources = require("../../composition-sources-CJv3W669.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");
@@ -1,6 +1,6 @@
1
- import { $r as errMsg, Bt as coreBlockComposition, Ht as coreBlockSourceKind, Ki as defineRecordKinds, Kn as normalizeCoreBlockWrite, Kr as compositionSourceKey, Mr as validateComposition, N as DeclaredDevices, Ot as buildCapabilityLookup, Qi as hydrateSchema, Qn as planComposition, Rt as compositionSourceRefs, Ut as coreBlocksCapability, Vi as collectSecretMarkerRefs, Vr as composedDeviceRef, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, _a as resolveSecretMarkers, aa as isSecretRefOwnedBy, ar as replacedFieldKeys, ba as secretTreeFromSchema, cr as resolveCoreBlockEntry, ei as BaseAddon, f as COMPOSER_RUNNER_ID, lr as resolveCoreBlockFiles, m as CORE_BLOCK_ADDON_PREFIX, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, ra as isSecretMarker, v as CoreBlockSchema, wa as transformSecretWrite, zt as coreBlockAddonId } from "../../dist-CdFkkmXW.mjs";
1
+ import { $i as hydrateSchema, $n as planComposition, Bt as coreBlockComposition, Hi as collectSecretMarkerRefs, Hr as composedDeviceRef, Ht as coreBlockSourceKind, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Nr as validateComposition, Ot as buildCapabilityLookup, Rt as compositionSourceRefs, Ta as transformSecretWrite, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, ei as errMsg, f as COMPOSER_RUNNER_ID, ia as isSecretMarker, lr as resolveCoreBlockEntry, m as CORE_BLOCK_ADDON_PREFIX, oa as isSecretRefOwnedBy, or as replacedFieldKeys, p as CORE_BLOCKS_ADDON_ID, qi as defineRecordKinds, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, ur as resolveCoreBlockFiles, v as CoreBlockSchema, va as resolveSecretMarkers, xa as secretTreeFromSchema, zt as coreBlockAddonId } from "../../dist-BugavoVR.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { t as describeCompositionSources } from "../../composition-sources-BY6rFuAE.mjs";
3
+ import { t as describeCompositionSources } from "../../composition-sources-CsBIIit3.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";
@@ -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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
7
7
  //#region src/builtins/device-history/time/bucket-time.ts
8
8
  /**
9
9
  * Bucket arithmetic for the three rollup tiers (D850, plan §4/§5.5).
@@ -1,4 +1,4 @@
1
- import { B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Da as EventCategory, Ji as emitReadiness, Qr as DeviceType, Zi as historyItemFieldPath, ei as BaseAddon, en as deviceHistoryCapability, li as HISTORY_DEFAULT_MIN_INTERVAL_MS, nn as deviceRemovalHookCapability, z as HISTORY_CATALOG } from "../../dist-CdFkkmXW.mjs";
1
+ import { $r as DeviceType, B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Oa as EventCategory, Qi as historyItemFieldPath, Yi as emitReadiness, en as deviceHistoryCapability, nn as deviceRemovalHookCapability, ti as BaseAddon, ui as HISTORY_DEFAULT_MIN_INTERVAL_MS, z as HISTORY_CATALOG } from "../../dist-BugavoVR.mjs";
2
2
  //#region src/builtins/device-history/time/bucket-time.ts
3
3
  /**
4
4
  * Bucket arithmetic for the three rollup tiers (D850, plan §4/§5.5).
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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");
10
- const require_retired_settings_keys = require("../../retired-settings-keys-CGUqX-Oz.js");
10
+ const require_retired_settings_keys = require("../../retired-settings-keys-DorakcxV.js");
11
11
  let zod = require("zod");
12
12
  let node_crypto = require("node:crypto");
13
13
  let _camstack_types_node = require("@camstack/types/node");
@@ -8988,6 +8988,48 @@ function errorMessage$3(err) {
8988
8988
  return err instanceof Error ? err.message : String(err);
8989
8989
  }
8990
8990
  //#endregion
8991
+ //#region src/builtins/device-manager/running-flip.ts
8992
+ function readRunning(slice) {
8993
+ const running = slice["running"];
8994
+ if (running === true || running === false) return running;
8995
+ return null;
8996
+ }
8997
+ var RunningFlipDetector = class {
8998
+ #memory = /* @__PURE__ */ new Map();
8999
+ seed(deviceId, running) {
9000
+ this.#memory.set(deviceId, running);
9001
+ }
9002
+ note(deviceId, slice) {
9003
+ const running = readRunning(slice);
9004
+ const since = typeof slice["since"] === "number" && Number.isFinite(slice["since"]) ? slice["since"] : null;
9005
+ const phase = typeof slice["phase"] === "string" ? slice["phase"] : null;
9006
+ const prev = this.#memory.get(deviceId);
9007
+ this.#memory.set(deviceId, running);
9008
+ if (prev === void 0) {
9009
+ if (running === true) return {
9010
+ kind: "started",
9011
+ deviceId,
9012
+ since,
9013
+ phase
9014
+ };
9015
+ return null;
9016
+ }
9017
+ if (prev === true && running === false) return {
9018
+ kind: "finished",
9019
+ deviceId,
9020
+ since,
9021
+ phase
9022
+ };
9023
+ if (prev !== true && running === true) return {
9024
+ kind: "started",
9025
+ deviceId,
9026
+ since,
9027
+ phase
9028
+ };
9029
+ return null;
9030
+ }
9031
+ };
9032
+ //#endregion
8991
9033
  //#region src/builtins/device-manager/runtime-state-persist-gate.ts
8992
9034
  /**
8993
9035
  * The subset of `blob` that is allowed on disk: slices whose capability
@@ -9490,6 +9532,7 @@ var MirrorRowWriter = class MirrorRowWriter {
9490
9532
  * the owner alone — `nativeSlice` and `DeviceNativeShadowChanged`, a category
9491
9533
  * the public routers refuse (D224).
9492
9534
  */
9535
+ var RUNNING_STATE_CAP = "running-state";
9493
9536
  var SEED_REFUSAL_MESSAGE = "runtime-state row unreadable — native write refused until it reads";
9494
9537
  function errorMessage$1(err) {
9495
9538
  return err instanceof Error ? err.message : String(err);
@@ -9524,6 +9567,8 @@ var DeviceStateMirror = class {
9524
9567
  seedRefusalLogged = /* @__PURE__ */ new Set();
9525
9568
  /** Every write of a device's row, and what is believed to be on it. */
9526
9569
  writer;
9570
+ /** Edge detector for `running-state` flip events (D933). */
9571
+ runningFlip = new RunningFlipDetector();
9527
9572
  constructor(ctx, policyFor = require_dist.runtimeStatePolicyFor, schemaFor = defaultSchemaFor) {
9528
9573
  this.ctx = ctx;
9529
9574
  this.policyFor = policyFor;
@@ -9931,6 +9976,7 @@ var DeviceStateMirror = class {
9931
9976
  meta: { caps: split.dropped }
9932
9977
  });
9933
9978
  for (const [capName, cap] of this.claims.claimsOf(deviceId)) this.claims.seedView(deviceId, capName, cap, this.nativeOf(deviceId, capName));
9979
+ this.seedRunningFlip(deviceId);
9934
9980
  this.seeded.add(deviceId);
9935
9981
  this.rowRead.add(deviceId);
9936
9982
  this.writer.markPersisted(deviceId, persistableBlob(joinRuntimeBlob(split.native, split.owned, this.policyFor), this.policyFor));
@@ -10038,12 +10084,36 @@ var DeviceStateMirror = class {
10038
10084
  for (const deviceId of deviceIds) out[String(deviceId)] = this.snapshotForDevice(deviceId);
10039
10085
  return out;
10040
10086
  }
10087
+ /** Remember a restored running bit so the first public merge does not emit a flip. */
10088
+ seedRunningFlip(deviceId) {
10089
+ const slice = this.capSlice(deviceId, RUNNING_STATE_CAP);
10090
+ if (slice === null) return;
10091
+ const running = slice["running"];
10092
+ this.runningFlip.seed(deviceId, running === true || running === false ? running : null);
10093
+ }
10041
10094
  /**
10042
10095
  * The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
10043
10096
  * claimed or not. The native shadow never rides here (D224) — see
10044
10097
  * `emitNativeShadow`.
10045
10098
  */
10046
10099
  emitStateChanged(deviceId, capName, slice) {
10100
+ if (capName === RUNNING_STATE_CAP) {
10101
+ const flip = this.runningFlip.note(deviceId, slice);
10102
+ if (flip !== null) this.ctx.eventBus.emit({
10103
+ id: (0, node_crypto.randomUUID)(),
10104
+ timestamp: /* @__PURE__ */ new Date(),
10105
+ source: {
10106
+ type: "device",
10107
+ id: deviceId
10108
+ },
10109
+ category: flip.kind === "started" ? require_dist.EventCategory.RunningStarted : require_dist.EventCategory.RunningFinished,
10110
+ data: {
10111
+ deviceId: flip.deviceId,
10112
+ since: flip.since,
10113
+ phase: flip.phase
10114
+ }
10115
+ });
10116
+ }
10047
10117
  this.ctx.eventBus.emit({
10048
10118
  id: (0, node_crypto.randomUUID)(),
10049
10119
  timestamp: /* @__PURE__ */ new Date(),
@@ -1,8 +1,8 @@
1
- import { $i as isDeviceConfigCap, $r as errMsg, $t as deviceExtensionCapability, Ca as toSecretFieldView, Da as EventCategory, Di as SECRET_CLEAR, F as DeviceTombstoneSchema, Hi as collectZodSecretPaths, In as locationIconKey, Ki as defineRecordKinds, L as FieldClaimModeSchema, Mi as WELL_KNOWN_TAB_MAP, Mn as legacyAutoLinkIds, P as DeviceStatusSchema, Pt as canonicalIconKey, Qr as DeviceType, R as FieldClaimSchema, Ta as userError, Wt as createDeviceExtensionProvider, Xn as parseStreamParamsFormPatch, Xr as DeviceFeature, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zr as DeviceRole, _a as resolveSecretMarkers, br as siteZoneKey, ei as BaseAddon, gn as formatMinutes, ia as isSecretMarkerLike, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, l as CAP_NAMES_WITH_STATUS, mr as runtimeStatePolicyFor, na as isSecretClear, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isSecretMarker, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ta as isKeychainStoredField, tn as deviceManagerCapability, un as expandContainer, w as DAY_NAMES, wa as transformSecretWrite, xa as sleep$1, ya as secretTreeFromPaths } from "../../dist-CdFkkmXW.mjs";
1
+ import { $r as DeviceType, $t as deviceExtensionCapability, Ea as userError, F as DeviceTombstoneSchema, In as locationIconKey, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, Ni as WELL_KNOWN_TAB_MAP, Oa as EventCategory, Oi as SECRET_CLEAR, P as DeviceStatusSchema, Pt as canonicalIconKey, Qr as DeviceRole, R as FieldClaimSchema, Sa as sleep$1, Ta as transformSecretWrite, Ui as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, Zr as DeviceFeature, aa as isSecretMarkerLike, ba as secretTreeFromPaths, ea as isDeviceConfigCap, ei as errMsg, gn as formatMinutes, hr as runtimeStatePolicyFor, ia as isSecretMarker, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, l as CAP_NAMES_WITH_STATUS, na as isKeychainStoredField, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qi as defineRecordKinds, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isSecretClear, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ti as BaseAddon, tn as deviceManagerCapability, un as expandContainer, va as resolveSecretMarkers, w as DAY_NAMES, wa as toSecretFieldView, xr as siteZoneKey } from "../../dist-BugavoVR.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";
5
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-C_Kjp-Bj.mjs";
5
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-CWp7ZSeA.mjs";
6
6
  import { z } from "zod";
7
7
  import { randomUUID } from "node:crypto";
8
8
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
@@ -8982,6 +8982,48 @@ function errorMessage$3(err) {
8982
8982
  return err instanceof Error ? err.message : String(err);
8983
8983
  }
8984
8984
  //#endregion
8985
+ //#region src/builtins/device-manager/running-flip.ts
8986
+ function readRunning(slice) {
8987
+ const running = slice["running"];
8988
+ if (running === true || running === false) return running;
8989
+ return null;
8990
+ }
8991
+ var RunningFlipDetector = class {
8992
+ #memory = /* @__PURE__ */ new Map();
8993
+ seed(deviceId, running) {
8994
+ this.#memory.set(deviceId, running);
8995
+ }
8996
+ note(deviceId, slice) {
8997
+ const running = readRunning(slice);
8998
+ const since = typeof slice["since"] === "number" && Number.isFinite(slice["since"]) ? slice["since"] : null;
8999
+ const phase = typeof slice["phase"] === "string" ? slice["phase"] : null;
9000
+ const prev = this.#memory.get(deviceId);
9001
+ this.#memory.set(deviceId, running);
9002
+ if (prev === void 0) {
9003
+ if (running === true) return {
9004
+ kind: "started",
9005
+ deviceId,
9006
+ since,
9007
+ phase
9008
+ };
9009
+ return null;
9010
+ }
9011
+ if (prev === true && running === false) return {
9012
+ kind: "finished",
9013
+ deviceId,
9014
+ since,
9015
+ phase
9016
+ };
9017
+ if (prev !== true && running === true) return {
9018
+ kind: "started",
9019
+ deviceId,
9020
+ since,
9021
+ phase
9022
+ };
9023
+ return null;
9024
+ }
9025
+ };
9026
+ //#endregion
8985
9027
  //#region src/builtins/device-manager/runtime-state-persist-gate.ts
8986
9028
  /**
8987
9029
  * The subset of `blob` that is allowed on disk: slices whose capability
@@ -9484,6 +9526,7 @@ var MirrorRowWriter = class MirrorRowWriter {
9484
9526
  * the owner alone — `nativeSlice` and `DeviceNativeShadowChanged`, a category
9485
9527
  * the public routers refuse (D224).
9486
9528
  */
9529
+ var RUNNING_STATE_CAP = "running-state";
9487
9530
  var SEED_REFUSAL_MESSAGE = "runtime-state row unreadable — native write refused until it reads";
9488
9531
  function errorMessage$1(err) {
9489
9532
  return err instanceof Error ? err.message : String(err);
@@ -9518,6 +9561,8 @@ var DeviceStateMirror = class {
9518
9561
  seedRefusalLogged = /* @__PURE__ */ new Set();
9519
9562
  /** Every write of a device's row, and what is believed to be on it. */
9520
9563
  writer;
9564
+ /** Edge detector for `running-state` flip events (D933). */
9565
+ runningFlip = new RunningFlipDetector();
9521
9566
  constructor(ctx, policyFor = runtimeStatePolicyFor, schemaFor = defaultSchemaFor) {
9522
9567
  this.ctx = ctx;
9523
9568
  this.policyFor = policyFor;
@@ -9925,6 +9970,7 @@ var DeviceStateMirror = class {
9925
9970
  meta: { caps: split.dropped }
9926
9971
  });
9927
9972
  for (const [capName, cap] of this.claims.claimsOf(deviceId)) this.claims.seedView(deviceId, capName, cap, this.nativeOf(deviceId, capName));
9973
+ this.seedRunningFlip(deviceId);
9928
9974
  this.seeded.add(deviceId);
9929
9975
  this.rowRead.add(deviceId);
9930
9976
  this.writer.markPersisted(deviceId, persistableBlob(joinRuntimeBlob(split.native, split.owned, this.policyFor), this.policyFor));
@@ -10032,12 +10078,36 @@ var DeviceStateMirror = class {
10032
10078
  for (const deviceId of deviceIds) out[String(deviceId)] = this.snapshotForDevice(deviceId);
10033
10079
  return out;
10034
10080
  }
10081
+ /** Remember a restored running bit so the first public merge does not emit a flip. */
10082
+ seedRunningFlip(deviceId) {
10083
+ const slice = this.capSlice(deviceId, RUNNING_STATE_CAP);
10084
+ if (slice === null) return;
10085
+ const running = slice["running"];
10086
+ this.runningFlip.seed(deviceId, running === true || running === false ? running : null);
10087
+ }
10035
10088
  /**
10036
10089
  * The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
10037
10090
  * claimed or not. The native shadow never rides here (D224) — see
10038
10091
  * `emitNativeShadow`.
10039
10092
  */
10040
10093
  emitStateChanged(deviceId, capName, slice) {
10094
+ if (capName === RUNNING_STATE_CAP) {
10095
+ const flip = this.runningFlip.note(deviceId, slice);
10096
+ if (flip !== null) this.ctx.eventBus.emit({
10097
+ id: randomUUID(),
10098
+ timestamp: /* @__PURE__ */ new Date(),
10099
+ source: {
10100
+ type: "device",
10101
+ id: deviceId
10102
+ },
10103
+ category: flip.kind === "started" ? EventCategory.RunningStarted : EventCategory.RunningFinished,
10104
+ data: {
10105
+ deviceId: flip.deviceId,
10106
+ since: flip.since,
10107
+ phase: flip.phase
10108
+ }
10109
+ });
10110
+ }
10041
10111
  this.ctx.eventBus.emit({
10042
10112
  id: randomUUID(),
10043
10113
  timestamp: /* @__PURE__ */ new Date(),
@@ -58,6 +58,8 @@ export declare class DeviceStateMirror {
58
58
  private readonly seedRefusalLogged;
59
59
  /** Every write of a device's row, and what is believed to be on it. */
60
60
  private readonly writer;
61
+ /** Edge detector for `running-state` flip events (D933). */
62
+ private readonly runningFlip;
61
63
  constructor(ctx: AddonContext, policyFor?: RuntimeStatePolicyLookup, schemaFor?: RuntimeStateSchemaLookup);
62
64
  /**
63
65
  * Single-cap mirror update — diff against the current mirror,
@@ -247,6 +249,8 @@ export declare class DeviceStateMirror {
247
249
  /** Whole-system mirror dump. Backs `deviceState.getAllSnapshots` — one
248
250
  * round-trip for a warm boot instead of N per-device calls. */
249
251
  allSnapshots(): Record<string, Record<string, Record<string, unknown>>>;
252
+ /** Remember a restored running bit so the first public merge does not emit a flip. */
253
+ private seedRunningFlip;
250
254
  /**
251
255
  * The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
252
256
  * claimed or not. The native shadow never rides here (D224) — see
@@ -0,0 +1,11 @@
1
+ export interface RunningFlipEvent {
2
+ readonly kind: "started" | "finished";
3
+ readonly deviceId: number;
4
+ readonly since: number | null;
5
+ readonly phase: string | null;
6
+ }
7
+ export declare class RunningFlipDetector {
8
+ #private;
9
+ seed(deviceId: number, running: boolean | null): void;
10
+ note(deviceId: number, slice: Record<string, unknown>): RunningFlipEvent | null;
11
+ }
@@ -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-DX5Fu3mV.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { Ln as logDestinationCapability, ei as BaseAddon } from "../../dist-CdFkkmXW.mjs";
1
+ import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-BugavoVR.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -3,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-DX5Fu3mV.js");
7
- const require_device_ca = require("../../device-ca-CfiIg3a9.js");
6
+ const require_dist = require("../../dist-Sn-HiZ4e.js");
7
+ const require_device_ca = require("../../device-ca-Dg3rSU48.js");
8
8
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
9
- const require_constants = require("../../constants-CqbO6e9i.js");
9
+ const require_constants = require("../../constants-C0hrXcEr.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, Da as EventCategory, G as KeychainResetRecordSchema, Ki as defineRecordKinds, U as KEYCHAIN_RESET_TRIGGER_ACTOR, W as KeychainAuditEntrySchema, Xi as formatSecretScope, ei as BaseAddon, jn as keychainCapability, pa as parseSecretRef, ua as normalizeSecretOwner } from "../../dist-CdFkkmXW.mjs";
2
- import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-BWTWWBcc.mjs";
1
+ import { An as keychainAdminCapability, G as KeychainResetRecordSchema, Oa as EventCategory, U as KEYCHAIN_RESET_TRIGGER_ACTOR, W as KeychainAuditEntrySchema, Zi as formatSecretScope, da as normalizeSecretOwner, jn as keychainCapability, ma as parseSecretRef, qi as defineRecordKinds, ti as BaseAddon } from "../../dist-BugavoVR.mjs";
2
+ import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-CHdsePe5.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-zBiEodEM.mjs";
4
+ import { a as MESH_CA_KEY_REF } from "../../constants-Dy8CaDeT.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-DX5Fu3mV.js");
3
+ const require_dist = require("../../dist-Sn-HiZ4e.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 { $r as errMsg, Da as EventCategory, Ui as createEvent, Vn as mayWriteToLocation, ei as BaseAddon, it as RecordingStatusSchema, nt as RECORDING_SOURCE_CAMSTACK_ADDON } from "../../dist-CdFkkmXW.mjs";
1
+ import { Oa as EventCategory, Vn as mayWriteToLocation, Wi as createEvent, ei as errMsg, it as RecordingStatusSchema, nt as RECORDING_SOURCE_CAMSTACK_ADDON, ti as BaseAddon } from "../../dist-BugavoVR.mjs";
2
2
  import * as fsp from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { constants } from "node:fs";