@camstack/system 1.2.445 → 1.2.446

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 (81) hide show
  1. package/dist/{agent-https-CiOW0-sj.js → agent-https-5DYAOJMO.js} +2 -2
  2. package/dist/{agent-https-D4Q8iFNd.mjs → agent-https-BWUEf6ev.mjs} +2 -2
  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 +86 -6
  8. package/dist/builtins/alerts/alerts.addon.mjs +86 -6
  9. package/dist/builtins/alerts/critical-push.d.ts +4 -0
  10. package/dist/builtins/alerts/emit-alert-policy.d.ts +28 -0
  11. package/dist/builtins/autotrack/index.js +1 -1
  12. package/dist/builtins/autotrack/index.mjs +1 -1
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  15. package/dist/builtins/calendars/calendars.addon.js +1 -1
  16. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  17. package/dist/builtins/camera-grid/index.js +1 -1
  18. package/dist/builtins/camera-grid/index.mjs +1 -1
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/index.js +1 -1
  22. package/dist/builtins/console-logging/index.mjs +1 -1
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/keychain/index.js +4 -4
  30. package/dist/builtins/keychain/index.mjs +4 -4
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  33. package/dist/builtins/local-auth/local-auth.addon.js +3 -3
  34. package/dist/builtins/local-auth/local-auth.addon.mjs +3 -3
  35. package/dist/builtins/local-network/local-network.addon.js +2 -2
  36. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  37. package/dist/builtins/loki-logging/index.js +1 -1
  38. package/dist/builtins/loki-logging/index.mjs +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  41. package/dist/builtins/platform-probe/index.js +1 -1
  42. package/dist/builtins/platform-probe/index.mjs +1 -1
  43. package/dist/builtins/record-entries/index.js +1 -1
  44. package/dist/builtins/record-entries/index.mjs +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  46. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/snapshot/index.js +1 -1
  48. package/dist/builtins/snapshot/index.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  50. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/index.js +1 -1
  52. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  54. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  55. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  56. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  57. package/dist/builtins/system-config/system-config.addon.js +3 -3
  58. package/dist/builtins/system-config/system-config.addon.mjs +3 -3
  59. package/dist/builtins/winston-logging/index.js +1 -1
  60. package/dist/builtins/winston-logging/index.mjs +1 -1
  61. package/dist/{composition-sources-BMt5cFYb.mjs → composition-sources-BmC5jAUv.mjs} +1 -1
  62. package/dist/{composition-sources-D3fi9Xns.js → composition-sources-BwIIltnZ.js} +1 -1
  63. package/dist/{constants-BMHCxRzb.mjs → constants-6XHGmEUF.mjs} +1 -1
  64. package/dist/{constants-Br879Axi.js → constants-DA_tjzIk.js} +1 -1
  65. package/dist/{device-ca-T8osSMos.mjs → device-ca-Bh_ClxMO.mjs} +1 -1
  66. package/dist/{device-ca-CnJ_va7i.js → device-ca-CnbrgfmW.js} +1 -1
  67. package/dist/{dist-DgOG8flk.js → dist-BkNfEJKa.js} +292 -11
  68. package/dist/{dist-BNunRyXT.mjs → dist-CkZIrsAP.mjs} +292 -11
  69. package/dist/file-host-worker.js +1 -1
  70. package/dist/file-host-worker.mjs +1 -1
  71. package/dist/{hub-mdns-ciao-D16oRQ9K.mjs → hub-mdns-ciao-CoyIUWHC.mjs} +2 -2
  72. package/dist/{hub-mdns-ciao-BIkTHq-n.js → hub-mdns-ciao-m5LIr4oA.js} +2 -2
  73. package/dist/index.js +9 -8
  74. package/dist/index.mjs +9 -8
  75. package/dist/{phase6-declare-gate-tkKOEitw.mjs → phase6-declare-gate-BDWZuB2n.mjs} +1 -1
  76. package/dist/{phase6-declare-gate-Ci1-8uUn.js → phase6-declare-gate-Bl7KocEs.js} +1 -1
  77. package/dist/{restore-archive-DjJnCgap.js → restore-archive-B57xI5Ue.js} +1 -1
  78. package/dist/{restore-archive-DR9MtO7J.mjs → restore-archive-CMr4V7Fi.mjs} +1 -1
  79. package/dist/{wal-maintenance-CfvgtQ7C.mjs → wal-maintenance-Bqm4zrNA.mjs} +0 -0
  80. package/dist/{wal-maintenance-CODGqhKY.js → wal-maintenance-CuG1DUca.js} +0 -0
  81. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-DgOG8flk.js");
2
+ const require_dist = require("./dist-BkNfEJKa.js");
3
3
  const require_x509_es = require("./x509.es-C4cOo48M.js");
4
- const require_constants = require("./constants-Br879Axi.js");
4
+ const require_constants = require("./constants-DA_tjzIk.js");
5
5
  let zod = require("zod");
6
6
  let node_crypto = require("node:crypto");
7
7
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,6 +1,6 @@
1
- import { Di as defineRecordKinds } from "./dist-BNunRyXT.mjs";
1
+ import { Di as defineRecordKinds } from "./dist-CkZIrsAP.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
- import { c as SERVER_AUTH_OID$1, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID } from "./constants-BMHCxRzb.mjs";
3
+ import { c as SERVER_AUTH_OID$1, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID } from "./constants-6XHGmEUF.mjs";
4
4
  import { z } from "zod";
5
5
  import { X509Certificate, createHash, createPrivateKey, randomBytes, webcrypto } from "node:crypto";
6
6
  import { writeOwnerOnlyFileSync } from "@camstack/types/node";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Lr as errMsg, Rr as BaseAddon, la as EventCategory, lt as addonPagesCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Lr as errMsg, Rr as BaseAddon, la as EventCategory, lt as addonPagesCapability } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Lr as errMsg, Rr as BaseAddon, dt as addonWidgetsCapability, la as EventCategory } from "../../dist-BNunRyXT.mjs";
1
+ import { Lr as errMsg, Rr as BaseAddon, dt as addonWidgetsCapability, la as EventCategory } from "../../dist-CkZIrsAP.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,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
- const require_phase6_declare_gate = require("../../phase6-declare-gate-Ci1-8uUn.js");
8
+ const require_phase6_declare_gate = require("../../phase6-declare-gate-Bl7KocEs.js");
9
9
  //#region src/builtins/alerts/critical-push.ts
10
10
  /** Alert categories that are critical system findings. */
11
11
  var CRITICAL_CATEGORIES = new Set([
@@ -13,6 +13,9 @@ var CRITICAL_CATEGORIES = new Set([
13
13
  "addon.runner-refused",
14
14
  "system.runner-check"
15
15
  ]);
16
+ function isCriticalPush(alert) {
17
+ return alert.severity === "critical" || CRITICAL_CATEGORIES.has(alert.category);
18
+ }
16
19
  function isPushState(value) {
17
20
  if (typeof value !== "object" || value === null) return false;
18
21
  const rec = value;
@@ -110,6 +113,59 @@ async function deliverDigest(input) {
110
113
  return out;
111
114
  }
112
115
  //#endregion
116
+ //#region src/builtins/alerts/emit-alert-policy.ts
117
+ function episodeKeyFromMetadata(metadata) {
118
+ const key = metadata?.["episodeKey"];
119
+ return typeof key === "string" ? key : void 0;
120
+ }
121
+ /** Completed episodes start fresh — prior push must not suppress the next digest. */
122
+ function shouldDropPriorPush(existingStatus) {
123
+ return existingStatus === "completed";
124
+ }
125
+ function alertWithRetainedPush(toStore, existingPush, existingStatus) {
126
+ if (existingPush === void 0 || shouldDropPriorPush(existingStatus)) return toStore;
127
+ return {
128
+ ...toStore,
129
+ metadata: {
130
+ ...toStore.metadata,
131
+ push: existingPush
132
+ }
133
+ };
134
+ }
135
+ /**
136
+ * Re-emit of the same alert id: preserve read when the episode is unchanged
137
+ * and still active. A completed episode starts again. Queue a critical push
138
+ * only for active, unread critical findings.
139
+ */
140
+ function mergeEmitAlert(input) {
141
+ const incomingKey = episodeKeyFromMetadata(input.incoming.metadata);
142
+ const existingKey = input.existing?.episodeKey;
143
+ if (input.existing?.read === true) {
144
+ const sameEpisode = incomingKey === void 0 || incomingKey === existingKey;
145
+ const priorCompleted = input.existing.status === "completed";
146
+ if (sameEpisode && !priorCompleted) return {
147
+ alert: {
148
+ ...input.incoming,
149
+ read: true
150
+ },
151
+ queuePush: false
152
+ };
153
+ }
154
+ const queuePush = isCriticalPush(input.incoming) && input.incoming.status === "active" && input.incoming.read === false;
155
+ return {
156
+ alert: input.incoming,
157
+ queuePush
158
+ };
159
+ }
160
+ function criticalPushPayload(alert) {
161
+ const key = episodeKeyFromMetadata(alert.metadata) ?? alert.id;
162
+ const pushLine = alert.metadata?.["pushLine"];
163
+ return {
164
+ key,
165
+ line: typeof pushLine === "string" ? pushLine : alert.title
166
+ };
167
+ }
168
+ //#endregion
113
169
  //#region src/builtins/alerts/device-label.ts
114
170
  /**
115
171
  * Operator-facing device label for alert messages.
@@ -1053,10 +1109,13 @@ var AlertCenterAddon = class extends require_dist.BaseAddon {
1053
1109
  const rec = Object.fromEntries(Object.entries(raw));
1054
1110
  const meta = rec["metadata"];
1055
1111
  const push = typeof meta === "object" && meta !== null && !Array.isArray(meta) ? meta["push"] : void 0;
1112
+ const metadata = typeof meta === "object" && meta !== null && !Array.isArray(meta) ? meta : void 0;
1056
1113
  return {
1057
1114
  ...typeof rec["createdAt"] === "number" ? { createdAt: rec["createdAt"] } : {},
1058
1115
  ...typeof rec["read"] === "boolean" ? { read: rec["read"] } : {},
1059
- ...isPushState(push) ? { push } : {}
1116
+ ...typeof rec["status"] === "string" ? { status: rec["status"] } : {},
1117
+ ...isPushState(push) ? { push } : {},
1118
+ ...episodeKeyFromMetadata(metadata) !== void 0 ? { episodeKey: episodeKeyFromMetadata(metadata) } : {}
1060
1119
  };
1061
1120
  }
1062
1121
  /** Pushes run one at a time so a burst can never send the same state twice. */
@@ -1183,7 +1242,7 @@ var AlertCenterAddon = class extends require_dist.BaseAddon {
1183
1242
  ...row.data
1184
1243
  });
1185
1244
  if (!parsed.success || parsed.data.status !== "active") continue;
1186
- if (!CRITICAL_CATEGORIES.has(parsed.data.category)) continue;
1245
+ if (!isCriticalPush(parsed.data)) continue;
1187
1246
  const push = parsed.data.metadata?.["push"];
1188
1247
  if (!isPushState(push) || push.state !== "pending") continue;
1189
1248
  this.pushQueue.set(parsed.data.id, {
@@ -1529,8 +1588,29 @@ var AlertCenterAddon = class extends require_dist.BaseAddon {
1529
1588
  }
1530
1589
  }
1531
1590
  async emitAlert(alert) {
1532
- await this.persistAlert(alert);
1533
- this.emitAlertCreatedEvent(alert);
1591
+ const existingRaw = await this.readAlertRaw(alert.id);
1592
+ const { alert: toStore, queuePush } = mergeEmitAlert({
1593
+ existing: existingRaw === null ? null : {
1594
+ read: existingRaw.read,
1595
+ episodeKey: existingRaw.episodeKey,
1596
+ status: existingRaw.status
1597
+ },
1598
+ incoming: alert
1599
+ });
1600
+ const stored = alertWithRetainedPush(toStore, existingRaw?.push, existingRaw?.status);
1601
+ const isNew = existingRaw === null;
1602
+ await this.persistAlert(stored);
1603
+ if (isNew) this.emitAlertCreatedEvent(stored);
1604
+ else this.emitAlertUpdatedEvent(alert.id, stored);
1605
+ if (queuePush) {
1606
+ const { key, line } = criticalPushPayload(stored);
1607
+ this.queuePush({
1608
+ alertId: stored.id,
1609
+ key,
1610
+ title: stored.title,
1611
+ line
1612
+ });
1613
+ }
1534
1614
  await this.enforceMaxAlerts();
1535
1615
  await this.enforceRetention();
1536
1616
  }
@@ -1,6 +1,6 @@
1
- import { Ci as createEvent, Di as defineRecordKinds, Lr as errMsg, Rr as BaseAddon, ft as alertsCapability, i as AlertSchema, la as EventCategory } from "../../dist-BNunRyXT.mjs";
1
+ import { Ci as createEvent, Di as defineRecordKinds, Lr as errMsg, Rr as BaseAddon, ft as alertsCapability, i as AlertSchema, la as EventCategory } from "../../dist-CkZIrsAP.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { t as resolvePhase6UseRecordsPathForHub } from "../../phase6-declare-gate-tkKOEitw.mjs";
3
+ import { t as resolvePhase6UseRecordsPathForHub } from "../../phase6-declare-gate-BDWZuB2n.mjs";
4
4
  //#region src/builtins/alerts/critical-push.ts
5
5
  /** Alert categories that are critical system findings. */
6
6
  var CRITICAL_CATEGORIES = new Set([
@@ -8,6 +8,9 @@ var CRITICAL_CATEGORIES = new Set([
8
8
  "addon.runner-refused",
9
9
  "system.runner-check"
10
10
  ]);
11
+ function isCriticalPush(alert) {
12
+ return alert.severity === "critical" || CRITICAL_CATEGORIES.has(alert.category);
13
+ }
11
14
  function isPushState(value) {
12
15
  if (typeof value !== "object" || value === null) return false;
13
16
  const rec = value;
@@ -105,6 +108,59 @@ async function deliverDigest(input) {
105
108
  return out;
106
109
  }
107
110
  //#endregion
111
+ //#region src/builtins/alerts/emit-alert-policy.ts
112
+ function episodeKeyFromMetadata(metadata) {
113
+ const key = metadata?.["episodeKey"];
114
+ return typeof key === "string" ? key : void 0;
115
+ }
116
+ /** Completed episodes start fresh — prior push must not suppress the next digest. */
117
+ function shouldDropPriorPush(existingStatus) {
118
+ return existingStatus === "completed";
119
+ }
120
+ function alertWithRetainedPush(toStore, existingPush, existingStatus) {
121
+ if (existingPush === void 0 || shouldDropPriorPush(existingStatus)) return toStore;
122
+ return {
123
+ ...toStore,
124
+ metadata: {
125
+ ...toStore.metadata,
126
+ push: existingPush
127
+ }
128
+ };
129
+ }
130
+ /**
131
+ * Re-emit of the same alert id: preserve read when the episode is unchanged
132
+ * and still active. A completed episode starts again. Queue a critical push
133
+ * only for active, unread critical findings.
134
+ */
135
+ function mergeEmitAlert(input) {
136
+ const incomingKey = episodeKeyFromMetadata(input.incoming.metadata);
137
+ const existingKey = input.existing?.episodeKey;
138
+ if (input.existing?.read === true) {
139
+ const sameEpisode = incomingKey === void 0 || incomingKey === existingKey;
140
+ const priorCompleted = input.existing.status === "completed";
141
+ if (sameEpisode && !priorCompleted) return {
142
+ alert: {
143
+ ...input.incoming,
144
+ read: true
145
+ },
146
+ queuePush: false
147
+ };
148
+ }
149
+ const queuePush = isCriticalPush(input.incoming) && input.incoming.status === "active" && input.incoming.read === false;
150
+ return {
151
+ alert: input.incoming,
152
+ queuePush
153
+ };
154
+ }
155
+ function criticalPushPayload(alert) {
156
+ const key = episodeKeyFromMetadata(alert.metadata) ?? alert.id;
157
+ const pushLine = alert.metadata?.["pushLine"];
158
+ return {
159
+ key,
160
+ line: typeof pushLine === "string" ? pushLine : alert.title
161
+ };
162
+ }
163
+ //#endregion
108
164
  //#region src/builtins/alerts/device-label.ts
109
165
  /**
110
166
  * Operator-facing device label for alert messages.
@@ -1047,10 +1103,13 @@ var AlertCenterAddon = class extends BaseAddon {
1047
1103
  const rec = Object.fromEntries(Object.entries(raw));
1048
1104
  const meta = rec["metadata"];
1049
1105
  const push = typeof meta === "object" && meta !== null && !Array.isArray(meta) ? meta["push"] : void 0;
1106
+ const metadata = typeof meta === "object" && meta !== null && !Array.isArray(meta) ? meta : void 0;
1050
1107
  return {
1051
1108
  ...typeof rec["createdAt"] === "number" ? { createdAt: rec["createdAt"] } : {},
1052
1109
  ...typeof rec["read"] === "boolean" ? { read: rec["read"] } : {},
1053
- ...isPushState(push) ? { push } : {}
1110
+ ...typeof rec["status"] === "string" ? { status: rec["status"] } : {},
1111
+ ...isPushState(push) ? { push } : {},
1112
+ ...episodeKeyFromMetadata(metadata) !== void 0 ? { episodeKey: episodeKeyFromMetadata(metadata) } : {}
1054
1113
  };
1055
1114
  }
1056
1115
  /** Pushes run one at a time so a burst can never send the same state twice. */
@@ -1177,7 +1236,7 @@ var AlertCenterAddon = class extends BaseAddon {
1177
1236
  ...row.data
1178
1237
  });
1179
1238
  if (!parsed.success || parsed.data.status !== "active") continue;
1180
- if (!CRITICAL_CATEGORIES.has(parsed.data.category)) continue;
1239
+ if (!isCriticalPush(parsed.data)) continue;
1181
1240
  const push = parsed.data.metadata?.["push"];
1182
1241
  if (!isPushState(push) || push.state !== "pending") continue;
1183
1242
  this.pushQueue.set(parsed.data.id, {
@@ -1523,8 +1582,29 @@ var AlertCenterAddon = class extends BaseAddon {
1523
1582
  }
1524
1583
  }
1525
1584
  async emitAlert(alert) {
1526
- await this.persistAlert(alert);
1527
- this.emitAlertCreatedEvent(alert);
1585
+ const existingRaw = await this.readAlertRaw(alert.id);
1586
+ const { alert: toStore, queuePush } = mergeEmitAlert({
1587
+ existing: existingRaw === null ? null : {
1588
+ read: existingRaw.read,
1589
+ episodeKey: existingRaw.episodeKey,
1590
+ status: existingRaw.status
1591
+ },
1592
+ incoming: alert
1593
+ });
1594
+ const stored = alertWithRetainedPush(toStore, existingRaw?.push, existingRaw?.status);
1595
+ const isNew = existingRaw === null;
1596
+ await this.persistAlert(stored);
1597
+ if (isNew) this.emitAlertCreatedEvent(stored);
1598
+ else this.emitAlertUpdatedEvent(alert.id, stored);
1599
+ if (queuePush) {
1600
+ const { key, line } = criticalPushPayload(stored);
1601
+ this.queuePush({
1602
+ alertId: stored.id,
1603
+ key,
1604
+ title: stored.title,
1605
+ line
1606
+ });
1607
+ }
1528
1608
  await this.enforceMaxAlerts();
1529
1609
  await this.enforceRetention();
1530
1610
  }
@@ -59,6 +59,10 @@ export interface PushPolicy {
59
59
  }
60
60
  /** Alert categories that are critical system findings. */
61
61
  export declare const CRITICAL_CATEGORIES: ReadonlySet<string>;
62
+ export declare function isCriticalPush(alert: {
63
+ readonly severity: string;
64
+ readonly category: string;
65
+ }): boolean;
62
66
  export declare function isPushState(value: unknown): value is PushState;
63
67
  export declare function selectPushTargets(targets: readonly PushTarget[], policy: PushPolicy): readonly PushTarget[];
64
68
  /** One critical finding waiting for its push. */
@@ -0,0 +1,28 @@
1
+ import type { Alert } from "@camstack/types";
2
+ import { type PushState } from "./critical-push.js";
3
+ export declare function episodeKeyFromMetadata(metadata: Record<string, unknown> | undefined): string | undefined;
4
+ export interface EmitMergeInput {
5
+ readonly existing: {
6
+ readonly read?: boolean;
7
+ readonly episodeKey?: string;
8
+ readonly status?: string;
9
+ } | null;
10
+ readonly incoming: Alert;
11
+ }
12
+ export interface EmitMergeResult {
13
+ readonly alert: Alert;
14
+ readonly queuePush: boolean;
15
+ }
16
+ /** Completed episodes start fresh — prior push must not suppress the next digest. */
17
+ export declare function shouldDropPriorPush(existingStatus: string | undefined): boolean;
18
+ export declare function alertWithRetainedPush(toStore: Alert, existingPush: PushState | undefined, existingStatus: string | undefined): Alert;
19
+ /**
20
+ * Re-emit of the same alert id: preserve read when the episode is unchanged
21
+ * and still active. A completed episode starts again. Queue a critical push
22
+ * only for active, unread critical findings.
23
+ */
24
+ export declare function mergeEmitAlert(input: EmitMergeInput): EmitMergeResult;
25
+ export declare function criticalPushPayload(alert: Alert): {
26
+ readonly key: string;
27
+ readonly line: string;
28
+ };
@@ -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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Lr as errMsg, P as FIRST_LEVEL_MACRO_CLASSES, Pi as isEvent, Rr as BaseAddon, ht as bareAddonId, la as EventCategory, zn as ptzAutotrackCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Lr as errMsg, P as FIRST_LEVEL_MACRO_CLASSES, Pi as isEvent, Rr as BaseAddon, ht as bareAddonId, la as EventCategory, zn as ptzAutotrackCapability } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
- const require_restore_archive = require("../../restore-archive-DjJnCgap.js");
8
+ const require_restore_archive = require("../../restore-archive-B57xI5Ue.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 { Hi as nodePin, Rr as BaseAddon, Tn as mayWriteToLocation, ia as toNodeId, la as EventCategory, mt as backupCapability, ur as storageOccupancyCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Hi as nodePin, Rr as BaseAddon, Tn as mayWriteToLocation, ia as toNodeId, la as EventCategory, mt as backupCapability, ur as storageOccupancyCapability } from "../../dist-CkZIrsAP.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { _ as parseBackupSecretKey, a as BackupSnapshotRefusedError, c as backupOrchestratorRecordKinds, d as BackupEncryptionKeyStore, g as generateBackupKeyPair, h as ENCRYPTED_BACKUP_SUFFIX, i as BackupCancelledError, l as backupRecordStoresOf, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, u as BackupSeedMarkerStore } from "../../restore-archive-DR9MtO7J.mjs";
3
+ import { _ as parseBackupSecretKey, a as BackupSnapshotRefusedError, c as backupOrchestratorRecordKinds, d as BackupEncryptionKeyStore, g as generateBackupKeyPair, h as ENCRYPTED_BACKUP_SUFFIX, i as BackupCancelledError, l as backupRecordStoresOf, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, u as BackupSeedMarkerStore } from "../../restore-archive-CMr4V7Fi.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Di as defineRecordKinds, Rr as BaseAddon, g as CalendarPreferencesSchema, xt as calendarsCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Di as defineRecordKinds, Rr as BaseAddon, g as CalendarPreferencesSchema, xt as calendarsCapability } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Ci as createEvent, Cr as buildFfmpegArgs, En as memoizePinnedFfmpeg, Ir as DeviceType, It as declarationOwnerNodeId, K as MOTION_CLOSE_AFTER_MS, Lr as errMsg, Mi as hydrateSchema, Pr as DeviceFeature, Rr as BaseAddon, St as cameraGridLayoutCapability, ar as snapshotCapability, fr as streamCatalogCapability, j as DeclaredDevices, kn as motionCapability, la as EventCategory, o as BaseDevice, w as DERIVED_CAMERA_SILENCED_CAP_NAMES } from "../../dist-BNunRyXT.mjs";
1
+ import { Ci as createEvent, Cr as buildFfmpegArgs, En as memoizePinnedFfmpeg, Ir as DeviceType, It as declarationOwnerNodeId, K as MOTION_CLOSE_AFTER_MS, Lr as errMsg, Mi as hydrateSchema, Pr as DeviceFeature, Rr as BaseAddon, St as cameraGridLayoutCapability, ar as snapshotCapability, fr as streamCatalogCapability, j as DeclaredDevices, kn as motionCapability, la as EventCategory, o as BaseDevice, w as DERIVED_CAMERA_SILENCED_CAP_NAMES } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
7
- const require_composition_sources = require("../../composition-sources-D3fi9Xns.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.js");
7
+ const require_composition_sources = require("../../composition-sources-BwIIltnZ.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 { Ar as compositionSourceKey, Ci as createEvent, Dr as compositionFeatureEnabled, Er as composedDeviceStableId, Et as compositionFieldKey, In as planComposition, Ir as DeviceType, Lr as errMsg, Mr as disarmRoseMemory, Nr as toExpressionValue, Or as compositionItemFieldPath, Qt as expressionContainsBuiltinCall, Rr as BaseAddon, Sr as COMPOSER_ADDON_ID, Tr as composedDeviceRef, Tt as composerCapability, Yt as evaluateCompositionField, _t as buildCapabilityLookup, f as COMPOSED_ITEM_FIXED_FIELDS, j as DeclaredDevices, jr as createStatefulExpressionMemory, kr as compositionSliceKey, la as EventCategory, o as BaseDevice, r as ALL_CAPABILITY_DEFINITIONS, wr as cloneStatefulExpressionMemory } from "../../dist-BNunRyXT.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-BMt5cFYb.mjs";
1
+ import { Ar as compositionSourceKey, Ci as createEvent, Dr as compositionFeatureEnabled, Er as composedDeviceStableId, Et as compositionFieldKey, In as planComposition, Ir as DeviceType, Lr as errMsg, Mr as disarmRoseMemory, Nr as toExpressionValue, Or as compositionItemFieldPath, Qt as expressionContainsBuiltinCall, Rr as BaseAddon, Sr as COMPOSER_ADDON_ID, Tr as composedDeviceRef, Tt as composerCapability, Yt as evaluateCompositionField, _t as buildCapabilityLookup, f as COMPOSED_ITEM_FIXED_FIELDS, j as DeclaredDevices, jr as createStatefulExpressionMemory, kr as compositionSliceKey, la as EventCategory, o as BaseDevice, r as ALL_CAPABILITY_DEFINITIONS, wr as cloneStatefulExpressionMemory } from "../../dist-CkZIrsAP.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-BmC5jAUv.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Rr as BaseAddon, xn as logDestinationCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Rr as BaseAddon, xn as logDestinationCapability } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
3
+ const require_dist = require("../../dist-BkNfEJKa.js");
4
4
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
5
- const require_composition_sources = require("../../composition-sources-D3fi9Xns.js");
5
+ const require_composition_sources = require("../../composition-sources-BwIIltnZ.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 { $i as resolveSecretMarkers, An as normalizeCoreBlockWrite, Ar as compositionSourceKey, At as coreBlockIdFromAddonId, Bt as describeComposableCaps, Di as defineRecordKinds, Dt as compositionSourceRefs, In as planComposition, Kn as resolveCoreBlockEntry, Li as isSecretMarker, Lr as errMsg, Mi as hydrateSchema, Mt as coreBlocksCapability, Ot as coreBlockAddonId, Rr as BaseAddon, Tr as composedDeviceRef, Un as replacedFieldKeys, _t as buildCapabilityLookup, gr as validateComposition, h as CORE_BLOCK_ADDON_PREFIX, j as DeclaredDevices, jt as coreBlockSourceKind, kt as coreBlockComposition, m as CORE_BLOCKS_ADDON_ID, na as secretTreeFromSchema, oa as transformSecretWrite, p as COMPOSER_RUNNER_ID, qn as resolveCoreBlockFiles, r as ALL_CAPABILITY_DEFINITIONS, v as CoreBlockSchema, xi as collectSecretMarkerRefs, zi as isSecretRefOwnedBy } from "../../dist-BNunRyXT.mjs";
1
+ import { $i as resolveSecretMarkers, An as normalizeCoreBlockWrite, Ar as compositionSourceKey, At as coreBlockIdFromAddonId, Bt as describeComposableCaps, Di as defineRecordKinds, Dt as compositionSourceRefs, In as planComposition, Kn as resolveCoreBlockEntry, Li as isSecretMarker, Lr as errMsg, Mi as hydrateSchema, Mt as coreBlocksCapability, Ot as coreBlockAddonId, Rr as BaseAddon, Tr as composedDeviceRef, Un as replacedFieldKeys, _t as buildCapabilityLookup, gr as validateComposition, h as CORE_BLOCK_ADDON_PREFIX, j as DeclaredDevices, jt as coreBlockSourceKind, kt as coreBlockComposition, m as CORE_BLOCKS_ADDON_ID, na as secretTreeFromSchema, oa as transformSecretWrite, p as COMPOSER_RUNNER_ID, qn as resolveCoreBlockFiles, r as ALL_CAPABILITY_DEFINITIONS, v as CoreBlockSchema, xi as collectSecretMarkerRefs, zi as isSecretRefOwnedBy } from "../../dist-CkZIrsAP.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { t as describeCompositionSources } from "../../composition-sources-BMt5cFYb.mjs";
3
+ import { t as describeCompositionSources } from "../../composition-sources-BmC5jAUv.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { $ as STREAM_PROFILE_META, $i as resolveSecretMarkers, C as DAY_NAMES, Ct as canonicalIconKey, Di as defineRecordKinds, F as FieldClaimModeSchema, Fi as isKeychainStoredField, Fr as DeviceRole, G as MINUTES_PER_DAY, Gt as deviceStatusCapability, Ht as deviceExtensionCapability, I as FieldClaimSchema, Ii as isSecretClear, Ir as DeviceType, Jt as enumerateSchemaFields, Li as isSecretMarker, Lr as errMsg, M as DeviceStatusSchema, N as DeviceTombstoneSchema, Ni as isDeviceConfigCap, Nt as createDeviceExtensionProvider, Pn as parseStreamParamsFormPatch, Pr as DeviceFeature, Qn as runtimeStatePolicyFor, Ri as isSecretMarkerLike, Rr as BaseAddon, Rt as defineExtensionSlotProvider, Si as collectZodSecretPaths, Ut as deviceManagerCapability, Wt as deviceStateCapability, Zt as expandContainer, aa as toSecretFieldView, bn as locationIconKey, bt as buildStreamParamsConfigSchema, c as CAMERA_SWITCH_ORDER, gn as legacyAutoLinkIds, ir as siteZoneKey, jn as normalizeUnit, la as EventCategory, oa as transformSecretWrite, pi as WELL_KNOWN_TAB_MAP, qt as enumerateItemArrayFields, r as ALL_CAPABILITY_DEFINITIONS, ra as sleep$1, rn as formatMinutes, sa as userError, ta as secretTreeFromPaths, u as CAP_NAMES_WITH_STATUS, ui as SECRET_CLEAR } from "../../dist-BNunRyXT.mjs";
1
+ import { $ as STREAM_PROFILE_META, $i as resolveSecretMarkers, C as DAY_NAMES, Ct as canonicalIconKey, Di as defineRecordKinds, F as FieldClaimModeSchema, Fi as isKeychainStoredField, Fr as DeviceRole, G as MINUTES_PER_DAY, Gt as deviceStatusCapability, Ht as deviceExtensionCapability, I as FieldClaimSchema, Ii as isSecretClear, Ir as DeviceType, Jt as enumerateSchemaFields, Li as isSecretMarker, Lr as errMsg, M as DeviceStatusSchema, N as DeviceTombstoneSchema, Ni as isDeviceConfigCap, Nt as createDeviceExtensionProvider, Pn as parseStreamParamsFormPatch, Pr as DeviceFeature, Qn as runtimeStatePolicyFor, Ri as isSecretMarkerLike, Rr as BaseAddon, Rt as defineExtensionSlotProvider, Si as collectZodSecretPaths, Ut as deviceManagerCapability, Wt as deviceStateCapability, Zt as expandContainer, aa as toSecretFieldView, bn as locationIconKey, bt as buildStreamParamsConfigSchema, c as CAMERA_SWITCH_ORDER, gn as legacyAutoLinkIds, ir as siteZoneKey, jn as normalizeUnit, la as EventCategory, oa as transformSecretWrite, pi as WELL_KNOWN_TAB_MAP, qt as enumerateItemArrayFields, r as ALL_CAPABILITY_DEFINITIONS, ra as sleep$1, rn as formatMinutes, sa as userError, ta as secretTreeFromPaths, u as CAP_NAMES_WITH_STATUS, ui as SECRET_CLEAR } from "../../dist-CkZIrsAP.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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.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 { Rr as BaseAddon, xn as logDestinationCapability } from "../../dist-BNunRyXT.mjs";
1
+ import { Rr as BaseAddon, xn as logDestinationCapability } from "../../dist-CkZIrsAP.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,11 +3,11 @@ 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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
- const require_device_ca = require("../../device-ca-CnJ_va7i.js");
9
- const require_phase6_declare_gate = require("../../phase6-declare-gate-Ci1-8uUn.js");
10
- const require_constants = require("../../constants-Br879Axi.js");
8
+ const require_device_ca = require("../../device-ca-CnbrgfmW.js");
9
+ const require_phase6_declare_gate = require("../../phase6-declare-gate-Bl7KocEs.js");
10
+ const require_constants = require("../../constants-DA_tjzIk.js");
11
11
  const require_platform_key_source = require("../../platform-key-source-Di7HrlGR.js");
12
12
  let node_crypto = require("node:crypto");
13
13
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,8 +1,8 @@
1
- import { B as KeychainAuditEntrySchema, Di as defineRecordKinds, Rr as BaseAddon, V as KeychainResetRecordSchema, Wi as normalizeSecretOwner, hn as keychainCapability, ji as formatSecretScope, la as EventCategory, mn as keychainAdminCapability, qi as parseSecretRef, z as KEYCHAIN_RESET_TRIGGER_ACTOR } from "../../dist-BNunRyXT.mjs";
1
+ import { B as KeychainAuditEntrySchema, Di as defineRecordKinds, Rr as BaseAddon, V as KeychainResetRecordSchema, Wi as normalizeSecretOwner, hn as keychainCapability, ji as formatSecretScope, la as EventCategory, mn as keychainAdminCapability, qi as parseSecretRef, z as KEYCHAIN_RESET_TRIGGER_ACTOR } from "../../dist-CkZIrsAP.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
- import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-T8osSMos.mjs";
4
- import { t as resolvePhase6UseRecordsPathForHub } from "../../phase6-declare-gate-tkKOEitw.mjs";
5
- import { a as MESH_CA_KEY_REF } from "../../constants-BMHCxRzb.mjs";
3
+ import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-Bh_ClxMO.mjs";
4
+ import { t as resolvePhase6UseRecordsPathForHub } from "../../phase6-declare-gate-BDWZuB2n.mjs";
5
+ import { a as MESH_CA_KEY_REF } from "../../constants-6XHGmEUF.mjs";
6
6
  import { n as getPlatformKeychainKey } from "../../platform-key-source-BWlq0jjn.mjs";
7
7
  import { createCipheriv, createDecipheriv, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
8
8
  import { restrictDirToOwnerSync, restrictFileToOwnerSync, writeOwnerOnlyFileSync } from "@camstack/types/node";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-DgOG8flk.js");
3
+ const require_dist = require("../../dist-BkNfEJKa.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { Ci as createEvent, J as RECORDING_SOURCE_CAMSTACK_ADDON, Lr as errMsg, Rr as BaseAddon, Y as RecordingStatusSchema, la as EventCategory } from "../../dist-BNunRyXT.mjs";
1
+ import { Ci as createEvent, J as RECORDING_SOURCE_CAMSTACK_ADDON, Lr as errMsg, Rr as BaseAddon, Y as RecordingStatusSchema, la as EventCategory } from "../../dist-CkZIrsAP.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -3,12 +3,12 @@ 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-DgOG8flk.js");
6
+ const require_dist = require("../../dist-BkNfEJKa.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  const require_safe_buffer$1 = require("../../safe-buffer-D3aoa-7X.js");
9
9
  const require_ms$1 = require("../../ms-LB3giGoU.js");
10
- const require_device_ca = require("../../device-ca-CnJ_va7i.js");
11
- const require_phase6_declare_gate = require("../../phase6-declare-gate-Ci1-8uUn.js");
10
+ const require_device_ca = require("../../device-ca-CnbrgfmW.js");
11
+ const require_phase6_declare_gate = require("../../phase6-declare-gate-Bl7KocEs.js");
12
12
  let zod = require("zod");
13
13
  let node_crypto = require("node:crypto");
14
14
  node_crypto = require_chunk.__toESM(node_crypto);