@camstack/system 1.2.411 → 1.2.413

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 (78) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/auth/scoped-token-manager.d.ts +5 -1
  6. package/dist/auth/user-management-internal.d.ts +16 -0
  7. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  10. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  11. package/dist/builtins/alerts/alerts.addon.js +1 -1
  12. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  13. package/dist/builtins/autotrack/index.js +1 -1
  14. package/dist/builtins/autotrack/index.mjs +1 -1
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  16. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  17. package/dist/builtins/calendars/calendars.addon.js +1 -1
  18. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  19. package/dist/builtins/camera-grid/index.js +1 -1
  20. package/dist/builtins/camera-grid/index.mjs +1 -1
  21. package/dist/builtins/composer/composer.addon.js +2 -2
  22. package/dist/builtins/composer/composer.addon.mjs +2 -2
  23. package/dist/builtins/console-logging/index.js +1 -1
  24. package/dist/builtins/console-logging/index.mjs +1 -1
  25. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  26. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  27. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  28. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  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 +36 -6
  36. package/dist/builtins/local-auth/local-auth.addon.mjs +36 -6
  37. package/dist/builtins/local-auth/oauth-session-manager.d.ts +6 -0
  38. package/dist/builtins/local-network/local-network.addon.js +1 -1
  39. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  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/index.js +1 -1
  45. package/dist/builtins/platform-probe/index.mjs +1 -1
  46. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  47. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  48. package/dist/builtins/snapshot/index.js +1 -1
  49. package/dist/builtins/snapshot/index.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  51. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  52. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  54. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  55. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  56. package/dist/builtins/system-config/system-config.addon.js +2 -2
  57. package/dist/builtins/system-config/system-config.addon.mjs +2 -2
  58. package/dist/builtins/winston-logging/index.js +1 -1
  59. package/dist/builtins/winston-logging/index.mjs +1 -1
  60. package/dist/{child-cap-dispatch-DIXACzJZ.mjs → child-cap-dispatch-CpYnlLNt.mjs} +1 -1
  61. package/dist/{child-cap-dispatch-DpQYxjCT.js → child-cap-dispatch-fnYkJDjG.js} +1 -1
  62. package/dist/{composition-sources-BWt1BQhu.js → composition-sources-BX6Caql_.js} +1 -1
  63. package/dist/{composition-sources-B9uGTwzQ.mjs → composition-sources-QndhKNb5.mjs} +1 -1
  64. package/dist/{constants-Dq3Xlo3-.js → constants-CMXQ1QIC.js} +1 -1
  65. package/dist/{constants-WWxjfUOV.mjs → constants-vMEWqCqG.mjs} +1 -1
  66. package/dist/{dist-CpYg1PaO.js → dist-BcnmH70Z.js} +8 -1
  67. package/dist/{dist-rbHhiEZA.mjs → dist-ItJ3qAAA.mjs} +8 -1
  68. package/dist/{event-loop-stall-monitor-dbJ_rR8a.mjs → event-loop-stall-monitor-CogzcENb.mjs} +1 -1
  69. package/dist/{event-loop-stall-monitor-IeiQqOdV.js → event-loop-stall-monitor-DoFaUgFf.js} +1 -1
  70. package/dist/index.js +6 -6
  71. package/dist/index.mjs +6 -6
  72. package/dist/{jwt-signing-key-DiBm2MuN.js → jwt-signing-key-CST1LdM6.js} +1 -1
  73. package/dist/{jwt-signing-key-2T2J63Bz.mjs → jwt-signing-key-CpMSrZuI.mjs} +1 -1
  74. package/dist/{restore-archive-DqozDqhZ.mjs → restore-archive-8F_M_wW0.mjs} +1 -1
  75. package/dist/{restore-archive-COzu_h0N.js → restore-archive-pSlTKRgU.js} +1 -1
  76. package/dist/{retired-settings-keys-BtpL65F2.mjs → retired-settings-keys-CbkMnFXg.mjs} +1 -1
  77. package/dist/{retired-settings-keys-WcubTmKK.js → retired-settings-keys-D3E47aR_.js} +1 -1
  78. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_child_cap_dispatch = require("./child-cap-dispatch-DpQYxjCT.js");
2
+ const require_child_cap_dispatch = require("./child-cap-dispatch-fnYkJDjG.js");
3
3
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Ct as setWorkerNativeCapsChangeListener, G as createUdsLoggerWithControl, K as LocalChildClient, Mn as emitHeapDiagnosticReport, Rt as installManifestNativeDeps, Tt as validateProviderRegistrations, bn as startRunnerHeapWatch, bt as getWorkerNativeCapProvider, f as installManifestSystemDeps, g as createUdsAddonContext, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, sn as RUNNER_RSS_BUDGET_ENV, u as startRunnerParentDeathWatchdog, xt as getWorkerNativeCapSnapshot, zt as resolveAddonClass } from "./child-cap-dispatch-DIXACzJZ.mjs";
1
+ import { Ct as setWorkerNativeCapsChangeListener, G as createUdsLoggerWithControl, K as LocalChildClient, Mn as emitHeapDiagnosticReport, Rt as installManifestNativeDeps, Tt as validateProviderRegistrations, bn as startRunnerHeapWatch, bt as getWorkerNativeCapProvider, f as installManifestSystemDeps, g as createUdsAddonContext, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, sn as RUNNER_RSS_BUDGET_ENV, u as startRunnerParentDeathWatchdog, xt as getWorkerNativeCapSnapshot, zt as resolveAddonClass } from "./child-cap-dispatch-CpYnlLNt.mjs";
2
2
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
3
3
  import { register } from "node:module";
4
4
  import * as path$1 from "node:path";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("./chunk-Cek0wNdY.js");
3
- const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-IeiQqOdV.js");
3
+ const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-DoFaUgFf.js");
4
4
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
5
5
  const require_snapshot_courtesy = require("./snapshot-courtesy-D_C5-nC0.js");
6
6
  exports.COURTESY_DEFAULT_WIDTH = require_snapshot_courtesy.COURTESY_DEFAULT_WIDTH;
@@ -1,4 +1,4 @@
1
- import { C as resolveFormatRevision, S as isModelDownloaded, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, f as ModelDownloadHttpError, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, t as STALL_REPORT_MS, v as ensureModel, x as isModelDownloadHttpError } from "./event-loop-stall-monitor-dbJ_rR8a.mjs";
1
+ import { C as resolveFormatRevision, S as isModelDownloaded, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, f as ModelDownloadHttpError, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, t as STALL_REPORT_MS, v as ensureModel, x as isModelDownloadHttpError } from "./event-loop-stall-monitor-CogzcENb.mjs";
2
2
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
3
3
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg, t as COURTESY_DEFAULT_WIDTH } from "./snapshot-courtesy-CyFs1M3I.mjs";
4
4
  export { COURTESY_DEFAULT_WIDTH, CustomActionRegistry, ModelDownloadHttpError, ModelDownloadService, STALL_REPORT_MS, STALL_TICK_MS, adoptModelRevisions, attributeStall, collectModelFiles, contentTypeFor, courtesyCacheKey, createFileDataPlaneHandler, deleteModelFromDisk, downloadFile, ensureModel, getModelFilePath, isModelDownloadHttpError, isModelDownloaded, parseRangeHeader, renderCourtesyJpeg, renderCourtesyOverlayJpeg, resolveFormatRevision, startEventLoopStallMonitor };
@@ -18,7 +18,11 @@ export declare class ScopedTokenManager {
18
18
  * `protectedProcedure`.
19
19
  */
20
20
  matchesScope(token: ScopedToken, addonId?: string, capability?: string): boolean;
21
- revoke(tokenId: string): Promise<void>;
21
+ /**
22
+ * Delete the token row. `true` when a row was removed; `false` when the id
23
+ * was already gone (unknown or previously revoked).
24
+ */
25
+ revoke(tokenId: string): Promise<boolean>;
22
26
  listForUser(userId: string): Promise<ScopedToken[]>;
23
27
  updateLastUsed(tokenId: string): Promise<void>;
24
28
  /**
@@ -51,9 +51,25 @@ export interface UserManagementInternal {
51
51
  setPassword(input: SetPasswordInput): Promise<void>;
52
52
  /** Admin tokens (`csa_`) — the hub router gates creation (admin + re-auth). */
53
53
  readonly adminTokens: AdminTokensInternal;
54
+ /**
55
+ * Scoped tokens (`cst_`) — hub bulk revoke (`auth.revokeCredentials`).
56
+ * `revoke` deletes the row; `false` when the id was already gone.
57
+ */
58
+ readonly scopedTokens: ScopedTokensInternal;
59
+ /**
60
+ * OAuth account-link sessions — hub bulk revoke. Active → mark revoked;
61
+ * already revoked → delete the row (so "Remove revoked" clears the list).
62
+ */
63
+ readonly oauthSessions: OauthSessionsInternal;
54
64
  /** The authentication audit trail. */
55
65
  readonly audit: AuthAuditInternal;
56
66
  }
67
+ export interface ScopedTokensInternal {
68
+ revoke(id: string): Promise<boolean>;
69
+ }
70
+ export interface OauthSessionsInternal {
71
+ revoke(id: string): Promise<boolean>;
72
+ }
57
73
  export interface AdminTokensInternal {
58
74
  create(input: {
59
75
  readonly createdBy: string;
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { G as addonPagesCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
1
+ import { G as addonPagesCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { dr as BaseAddon, q as addonWidgetsCapability, ri as EventCategory, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
1
+ import { dr as BaseAddon, q as addonWidgetsCapability, ri as EventCategory, ur as errMsg } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  //#region src/builtins/alerts/device-label.ts
8
8
  /**
9
9
  * Operator-facing device label for alert messages.
@@ -1,4 +1,4 @@
1
- import { Er as createEvent, J as alertsCapability, dr as BaseAddon, n as AlertSchema, ri as EventCategory, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
1
+ import { Er as createEvent, J as alertsCapability, dr as BaseAddon, n as AlertSchema, ri as EventCategory, ur as errMsg } from "../../dist-ItJ3qAAA.mjs";
2
2
  //#region src/builtins/alerts/device-label.ts
3
3
  /**
4
4
  * Operator-facing device label for alert messages.
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Fr as isEvent, S as FIRST_LEVEL_MACRO_CLASSES, Z as bareAddonId, _n as ptzAutotrackCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
1
+ import { Fr as isEvent, S as FIRST_LEVEL_MACRO_CLASSES, Z as bareAddonId, _n as ptzAutotrackCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-ItJ3qAAA.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CpYg1PaO.js");
7
- const require_restore_archive = require("../../restore-archive-COzu_h0N.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
+ const require_restore_archive = require("../../restore-archive-pSlTKRgU.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_fs_promises = require("node:fs/promises");
10
10
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,5 +1,5 @@
1
- import { Ln as storageOccupancyCapability, Vr as nodePin, X as backupCapability, dr as BaseAddon, ei as toNodeId, ri as EventCategory, rn as mayWriteToLocation } from "../../dist-rbHhiEZA.mjs";
2
- import { a as BackupSnapshotRefusedError, c as BackupKeyFormatError, d as generateBackupKeyPair, f as parseBackupPublicKey, i as BackupCancelledError, n as precheckRestoreKey, o as SystemBackupService, p as parseBackupSecretKey, r as prepareRestoreArchive, u as ENCRYPTED_BACKUP_SUFFIX } from "../../restore-archive-DqozDqhZ.mjs";
1
+ import { Ln as storageOccupancyCapability, Vr as nodePin, X as backupCapability, dr as BaseAddon, ei as toNodeId, ri as EventCategory, rn as mayWriteToLocation } from "../../dist-ItJ3qAAA.mjs";
2
+ import { a as BackupSnapshotRefusedError, c as BackupKeyFormatError, d as generateBackupKeyPair, f as parseBackupPublicKey, i as BackupCancelledError, n as precheckRestoreKey, o as SystemBackupService, p as parseBackupSecretKey, r as prepareRestoreArchive, u as ENCRYPTED_BACKUP_SUFFIX } from "../../restore-archive-8F_M_wW0.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import * as fsp from "node:fs/promises";
5
5
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { dr as BaseAddon, p as CalendarPreferencesSchema, tt as calendarsCapability } from "../../dist-rbHhiEZA.mjs";
1
+ import { dr as BaseAddon, p as CalendarPreferencesSchema, tt as calendarsCapability } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Er as createEvent, N as MOTION_CLOSE_AFTER_MS, Nr as hydrateSchema, Pn as snapshotCapability, Xn as buildFfmpegArgs, b as DeclaredDevices, dr as BaseAddon, ht as declarationOwnerNodeId, i as BaseDevice, in as memoizePinnedFfmpeg, lr as DeviceType, nt as cameraGridLayoutCapability, ri as EventCategory, sn as motionCapability, sr as DeviceFeature, ur as errMsg, y as DERIVED_CAMERA_SILENCED_CAP_NAMES, zn as streamCatalogCapability } from "../../dist-rbHhiEZA.mjs";
1
+ import { Er as createEvent, N as MOTION_CLOSE_AFTER_MS, Nr as hydrateSchema, Pn as snapshotCapability, Xn as buildFfmpegArgs, b as DeclaredDevices, dr as BaseAddon, ht as declarationOwnerNodeId, i as BaseDevice, in as memoizePinnedFfmpeg, lr as DeviceType, nt as cameraGridLayoutCapability, ri as EventCategory, sn as motionCapability, sr as DeviceFeature, ur as errMsg, y as DERIVED_CAMERA_SILENCED_CAP_NAMES, zn as streamCatalogCapability } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
7
- const require_composition_sources = require("../../composition-sources-BWt1BQhu.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
+ const require_composition_sources = require("../../composition-sources-BX6Caql_.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 { $ as buildCapabilityLookup, $n as composedDeviceStableId, At as expressionContainsBuiltinCall, Dt as evaluateCompositionField, Er as createEvent, Qn as composedDeviceRef, Yn as COMPOSER_ADDON_ID, Zn as cloneStatefulExpressionMemory, ar as disarmRoseMemory, at as compositionFieldKey, b as DeclaredDevices, dr as BaseAddon, er as compositionFeatureEnabled, i as BaseDevice, ir as createStatefulExpressionMemory, it as composerCapability, l as COMPOSED_ITEM_FIXED_FIELDS, lr as DeviceType, mn as planComposition, nr as compositionSliceKey, or as toExpressionValue, ri as EventCategory, rr as compositionSourceKey, t as ALL_CAPABILITY_DEFINITIONS, tr as compositionItemFieldPath, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-B9uGTwzQ.mjs";
1
+ import { $ as buildCapabilityLookup, $n as composedDeviceStableId, At as expressionContainsBuiltinCall, Dt as evaluateCompositionField, Er as createEvent, Qn as composedDeviceRef, Yn as COMPOSER_ADDON_ID, Zn as cloneStatefulExpressionMemory, ar as disarmRoseMemory, at as compositionFieldKey, b as DeclaredDevices, dr as BaseAddon, er as compositionFeatureEnabled, i as BaseDevice, ir as createStatefulExpressionMemory, it as composerCapability, l as COMPOSED_ITEM_FIXED_FIELDS, lr as DeviceType, mn as planComposition, nr as compositionSliceKey, or as toExpressionValue, ri as EventCategory, rr as compositionSourceKey, t as ALL_CAPABILITY_DEFINITIONS, tr as compositionItemFieldPath, ur as errMsg } from "../../dist-ItJ3qAAA.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-QndhKNb5.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-rbHhiEZA.mjs";
1
+ import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-ItJ3qAAA.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,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-CpYg1PaO.js");
4
- const require_composition_sources = require("../../composition-sources-BWt1BQhu.js");
3
+ const require_dist = require("../../dist-BcnmH70Z.js");
4
+ const require_composition_sources = require("../../composition-sources-BX6Caql_.js");
5
5
  let node_crypto = require("node:crypto");
6
6
  let _camstack_types_node = require("@camstack/types/node");
7
7
  let node_fs_promises = require("node:fs/promises");
@@ -1,5 +1,5 @@
1
- import { $ as buildCapabilityLookup, Cn as resolveCoreBlockFiles, Nr as hydrateSchema, Qn as composedDeviceRef, Sn as resolveCoreBlockEntry, Un as validateComposition, b as DeclaredDevices, cn as normalizeCoreBlockWrite, ct as coreBlockComposition, d as CORE_BLOCKS_ADDON_ID, dr as BaseAddon, dt as coreBlocksCapability, f as CORE_BLOCK_ADDON_PREFIX, lt as coreBlockIdFromAddonId, m as CoreBlockSchema, mn as planComposition, ot as compositionSourceRefs, rr as compositionSourceKey, st as coreBlockAddonId, t as ALL_CAPABILITY_DEFINITIONS, u as COMPOSER_RUNNER_ID, ur as errMsg, ut as coreBlockSourceKind, yn as replacedFieldKeys, yt as describeComposableCaps } from "../../dist-rbHhiEZA.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-B9uGTwzQ.mjs";
1
+ import { $ as buildCapabilityLookup, Cn as resolveCoreBlockFiles, Nr as hydrateSchema, Qn as composedDeviceRef, Sn as resolveCoreBlockEntry, Un as validateComposition, b as DeclaredDevices, cn as normalizeCoreBlockWrite, ct as coreBlockComposition, d as CORE_BLOCKS_ADDON_ID, dr as BaseAddon, dt as coreBlocksCapability, f as CORE_BLOCK_ADDON_PREFIX, lt as coreBlockIdFromAddonId, m as CoreBlockSchema, mn as planComposition, ot as compositionSourceRefs, rr as compositionSourceKey, st as coreBlockAddonId, t as ALL_CAPABILITY_DEFINITIONS, u as COMPOSER_RUNNER_ID, ur as errMsg, ut as coreBlockSourceKind, yn as replacedFieldKeys, yt as describeComposableCaps } from "../../dist-ItJ3qAAA.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-QndhKNb5.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { customizationBlockName } from "@camstack/types/node";
@@ -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-CpYg1PaO.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-WcubTmKK.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-D3E47aR_.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
10
10
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,5 +1,5 @@
1
- import { $r as sleep$1, C as FieldClaimModeSchema, Ct as deviceStatusCapability, Et as enumerateSchemaFields, Ir as isKeychainStoredField, Jr as resolveSecretMarkers, Lr as isSecretClear, Nn as siteZoneKey, On as runtimeStatePolicyFor, Pr as isDeviceConfigCap, Pt as formatMinutes, R as STREAM_PROFILE_META, Rr as isSecretMarker, St as deviceStateCapability, Tr as collectZodSecretPaths, Tt as enumerateItemArrayFields, Zr as secretTreeFromPaths, Zt as locationIconKey, _t as defineExtensionSlotProvider, bt as deviceExtensionCapability, c as CAP_NAMES_WITH_STATUS, cr as DeviceRole, dr as BaseAddon, et as buildStreamParamsConfigSchema, fn as parseStreamParamsFormPatch, ft as createDeviceExtensionProvider, j as MINUTES_PER_DAY, k as LocationIconIdSchema, kt as expandContainer, ln as normalizeUnit, lr as DeviceType, ni as transformSecretWrite, o as CAMERA_SWITCH_ORDER, qt as legacyAutoLinkIds, ri as EventCategory, sr as DeviceFeature, t as ALL_CAPABILITY_DEFINITIONS, ti as toSecretFieldView, ur as errMsg, v as DAY_NAMES, vr as SECRET_CLEAR, w as FieldClaimSchema, x as DeviceStatusSchema, xt as deviceManagerCapability, yr as WELL_KNOWN_TAB_MAP, zr as isSecretMarkerLike } from "../../dist-rbHhiEZA.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-BtpL65F2.mjs";
1
+ import { $r as sleep$1, C as FieldClaimModeSchema, Ct as deviceStatusCapability, Et as enumerateSchemaFields, Ir as isKeychainStoredField, Jr as resolveSecretMarkers, Lr as isSecretClear, Nn as siteZoneKey, On as runtimeStatePolicyFor, Pr as isDeviceConfigCap, Pt as formatMinutes, R as STREAM_PROFILE_META, Rr as isSecretMarker, St as deviceStateCapability, Tr as collectZodSecretPaths, Tt as enumerateItemArrayFields, Zr as secretTreeFromPaths, Zt as locationIconKey, _t as defineExtensionSlotProvider, bt as deviceExtensionCapability, c as CAP_NAMES_WITH_STATUS, cr as DeviceRole, dr as BaseAddon, et as buildStreamParamsConfigSchema, fn as parseStreamParamsFormPatch, ft as createDeviceExtensionProvider, j as MINUTES_PER_DAY, k as LocationIconIdSchema, kt as expandContainer, ln as normalizeUnit, lr as DeviceType, ni as transformSecretWrite, o as CAMERA_SWITCH_ORDER, qt as legacyAutoLinkIds, ri as EventCategory, sr as DeviceFeature, t as ALL_CAPABILITY_DEFINITIONS, ti as toSecretFieldView, ur as errMsg, v as DAY_NAMES, vr as SECRET_CLEAR, w as FieldClaimSchema, x as DeviceStatusSchema, xt as deviceManagerCapability, yr as WELL_KNOWN_TAB_MAP, zr as isSecretMarkerLike } from "../../dist-ItJ3qAAA.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-CbkMnFXg.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-rbHhiEZA.mjs";
1
+ import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-ItJ3qAAA.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,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-CpYg1PaO.js");
7
- const require_jwt_signing_key = require("../../jwt-signing-key-DiBm2MuN.js");
8
- const require_constants = require("../../constants-Dq3Xlo3-.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
+ const require_jwt_signing_key = require("../../jwt-signing-key-CST1LdM6.js");
8
+ const require_constants = require("../../constants-CMXQ1QIC.js");
9
9
  const require_platform_key_source = require("../../platform-key-source-Di7HrlGR.js");
10
10
  let node_crypto = require("node:crypto");
11
11
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
- import { E as KEYCHAIN_RESET_TRIGGER_ACTOR, Gr as parseSecretRef, Gt as keychainAdminCapability, Hr as normalizeSecretOwner, Kt as keychainCapability, Mr as formatSecretScope, dr as BaseAddon, ri as EventCategory } from "../../dist-rbHhiEZA.mjs";
2
- import { r as SYSTEM_SECRET_OWNER, t as JWT_SIGNING_KEY_REF } from "../../jwt-signing-key-2T2J63Bz.mjs";
3
- import { a as MESH_CA_KEY_REF, p as CLUSTER_SECRET_SETTINGS_KEY } from "../../constants-WWxjfUOV.mjs";
1
+ import { E as KEYCHAIN_RESET_TRIGGER_ACTOR, Gr as parseSecretRef, Gt as keychainAdminCapability, Hr as normalizeSecretOwner, Kt as keychainCapability, Mr as formatSecretScope, dr as BaseAddon, ri as EventCategory } from "../../dist-ItJ3qAAA.mjs";
2
+ import { r as SYSTEM_SECRET_OWNER, t as JWT_SIGNING_KEY_REF } from "../../jwt-signing-key-CpMSrZuI.mjs";
3
+ import { a as MESH_CA_KEY_REF, p as CLUSTER_SECRET_SETTINGS_KEY } from "../../constants-vMEWqCqG.mjs";
4
4
  import { n as getPlatformKeychainKey } from "../../platform-key-source-BWlq0jjn.mjs";
5
5
  import { createCipheriv, createDecipheriv, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
6
6
  import * as path$1 from "node:path";
@@ -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-CpYg1PaO.js");
3
+ const require_dist = require("../../dist-BcnmH70Z.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 { Er as createEvent, I as RecordingStatusSchema, P as RECORDING_SOURCE_CAMSTACK_ADDON, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
1
+ import { Er as createEvent, I as RecordingStatusSchema, P as RECORDING_SOURCE_CAMSTACK_ADDON, dr as BaseAddon, ri as EventCategory, ur as errMsg } from "../../dist-ItJ3qAAA.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,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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  const require_ms$1 = require("../../ms-t68_FaqE.js");
8
- const require_jwt_signing_key = require("../../jwt-signing-key-DiBm2MuN.js");
8
+ const require_jwt_signing_key = require("../../jwt-signing-key-CST1LdM6.js");
9
9
  let node_crypto = require("node:crypto");
10
10
  node_crypto = require_chunk.__toESM(node_crypto);
11
11
  let crypto$1 = require("crypto");
@@ -6349,11 +6349,20 @@ var ScopedTokenManager = class {
6349
6349
  }
6350
6350
  return false;
6351
6351
  }
6352
+ /**
6353
+ * Delete the token row. `true` when a row was removed; `false` when the id
6354
+ * was already gone (unknown or previously revoked).
6355
+ */
6352
6356
  async revoke(tokenId) {
6357
+ if ((await this.store.query.query({
6358
+ collection: TOKENS_COLLECTION,
6359
+ filter: { where: { id: tokenId } }
6360
+ })).length === 0) return false;
6353
6361
  await this.store.delete.mutate({
6354
6362
  collection: TOKENS_COLLECTION,
6355
6363
  key: tokenId
6356
6364
  });
6365
+ return true;
6357
6366
  }
6358
6367
  async listForUser(userId) {
6359
6368
  return (await this.store.query.query({
@@ -7138,10 +7147,11 @@ var RETENTION_MS = 90 * 864e5;
7138
7147
  var MAX_LIST = 500;
7139
7148
  function parseRecord(data) {
7140
7149
  const id = data["id"];
7141
- const at = data["at"];
7150
+ const rawAt = data["at"];
7151
+ const at = typeof rawAt === "number" ? rawAt : typeof rawAt === "string" && rawAt.trim() !== "" && Number.isFinite(Number(rawAt)) ? Number(rawAt) : null;
7142
7152
  const action = data["action"];
7143
7153
  const known = AUTH_AUDIT_ACTIONS.find((a) => a === action);
7144
- if (typeof id !== "string" || typeof at !== "number" || known === void 0) return null;
7154
+ if (typeof id !== "string" || at === null || known === void 0) return null;
7145
7155
  let detail;
7146
7156
  if (typeof data["detail"] === "string") try {
7147
7157
  const parsed = JSON.parse(data["detail"]);
@@ -10641,6 +10651,19 @@ var OauthSessionManager = class {
10641
10651
  return true;
10642
10652
  }
10643
10653
  /**
10654
+ * Delete one session row. Used by hub bulk revoke when the link is already
10655
+ * revoked ("Remove revoked"): absence fails closed the same way as a
10656
+ * revoked row, so dropping it only clears the list.
10657
+ */
10658
+ async remove(id) {
10659
+ if (await this.getById(id) === null) return false;
10660
+ await this.store.delete.mutate({
10661
+ collection: SESSIONS_COLLECTION,
10662
+ key: id
10663
+ });
10664
+ return true;
10665
+ }
10666
+ /**
10644
10667
  * Delete sessions revoked longer ago than `horizonMs`.
10645
10668
  *
10646
10669
  * Safe because an ABSENT session already fails closed exactly like a revoked
@@ -10899,8 +10922,7 @@ var LocalAuthAddon = class extends require_dist.BaseAddon {
10899
10922
  },
10900
10923
  revokeScopedToken: async (input) => {
10901
10924
  if (!this.scopedTokenManager) throw new Error("Scoped token management not available");
10902
- await this.scopedTokenManager.revoke(input.id);
10903
- return { success: true };
10925
+ return { success: await this.scopedTokenManager.revoke(input.id) };
10904
10926
  },
10905
10927
  validateScopedToken: async (input) => {
10906
10928
  if (!this.scopedTokenManager || !this.userManager) return null;
@@ -11031,6 +11053,14 @@ var LocalAuthAddon = class extends require_dist.BaseAddon {
11031
11053
  list: async () => this.adminTokens === null ? [] : this.adminTokens.list(),
11032
11054
  revoke: async (id) => this.adminTokens === null ? false : this.adminTokens.revoke(id)
11033
11055
  },
11056
+ scopedTokens: { revoke: async (id) => this.scopedTokenManager === null ? false : this.scopedTokenManager.revoke(id) },
11057
+ oauthSessions: { revoke: async (id) => {
11058
+ if (this.oauthSessionManager === null) return false;
11059
+ const session = await this.oauthSessionManager.getById(id);
11060
+ if (session === null) return false;
11061
+ if (session.revokedAt !== null) return this.oauthSessionManager.remove(id);
11062
+ return this.oauthSessionManager.markRevoked(id);
11063
+ } },
11034
11064
  audit: {
11035
11065
  record: async (event) => {
11036
11066
  await this.auditLog?.record(event);
@@ -1,7 +1,7 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Hn as userManagementCapability, W as UserRecordSchema, Y as authProviderCapability, dr as BaseAddon, r as ApiKeyRecordSchema, z as ScopedTokenSchema } from "../../dist-rbHhiEZA.mjs";
2
+ import { Hn as userManagementCapability, W as UserRecordSchema, Y as authProviderCapability, dr as BaseAddon, r as ApiKeyRecordSchema, z as ScopedTokenSchema } from "../../dist-ItJ3qAAA.mjs";
3
3
  import { n as require_safe_buffer, t as require_ms } from "../../ms-DlIWNkkk.mjs";
4
- import { a as loadJwtSigningKey, i as getProcessJwtSigningKeyState, o as processJwtSigningKey, s as setProcessJwtSigningKey, t as JWT_SIGNING_KEY_REF } from "../../jwt-signing-key-2T2J63Bz.mjs";
4
+ import { a as loadJwtSigningKey, i as getProcessJwtSigningKeyState, o as processJwtSigningKey, s as setProcessJwtSigningKey, t as JWT_SIGNING_KEY_REF } from "../../jwt-signing-key-CpMSrZuI.mjs";
5
5
  import * as crypto$1 from "node:crypto";
6
6
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
7
7
  import nodeCrypto from "crypto";
@@ -6339,11 +6339,20 @@ var ScopedTokenManager = class {
6339
6339
  }
6340
6340
  return false;
6341
6341
  }
6342
+ /**
6343
+ * Delete the token row. `true` when a row was removed; `false` when the id
6344
+ * was already gone (unknown or previously revoked).
6345
+ */
6342
6346
  async revoke(tokenId) {
6347
+ if ((await this.store.query.query({
6348
+ collection: TOKENS_COLLECTION,
6349
+ filter: { where: { id: tokenId } }
6350
+ })).length === 0) return false;
6343
6351
  await this.store.delete.mutate({
6344
6352
  collection: TOKENS_COLLECTION,
6345
6353
  key: tokenId
6346
6354
  });
6355
+ return true;
6347
6356
  }
6348
6357
  async listForUser(userId) {
6349
6358
  return (await this.store.query.query({
@@ -7128,10 +7137,11 @@ var RETENTION_MS = 90 * 864e5;
7128
7137
  var MAX_LIST = 500;
7129
7138
  function parseRecord(data) {
7130
7139
  const id = data["id"];
7131
- const at = data["at"];
7140
+ const rawAt = data["at"];
7141
+ const at = typeof rawAt === "number" ? rawAt : typeof rawAt === "string" && rawAt.trim() !== "" && Number.isFinite(Number(rawAt)) ? Number(rawAt) : null;
7132
7142
  const action = data["action"];
7133
7143
  const known = AUTH_AUDIT_ACTIONS.find((a) => a === action);
7134
- if (typeof id !== "string" || typeof at !== "number" || known === void 0) return null;
7144
+ if (typeof id !== "string" || at === null || known === void 0) return null;
7135
7145
  let detail;
7136
7146
  if (typeof data["detail"] === "string") try {
7137
7147
  const parsed = JSON.parse(data["detail"]);
@@ -10631,6 +10641,19 @@ var OauthSessionManager = class {
10631
10641
  return true;
10632
10642
  }
10633
10643
  /**
10644
+ * Delete one session row. Used by hub bulk revoke when the link is already
10645
+ * revoked ("Remove revoked"): absence fails closed the same way as a
10646
+ * revoked row, so dropping it only clears the list.
10647
+ */
10648
+ async remove(id) {
10649
+ if (await this.getById(id) === null) return false;
10650
+ await this.store.delete.mutate({
10651
+ collection: SESSIONS_COLLECTION,
10652
+ key: id
10653
+ });
10654
+ return true;
10655
+ }
10656
+ /**
10634
10657
  * Delete sessions revoked longer ago than `horizonMs`.
10635
10658
  *
10636
10659
  * Safe because an ABSENT session already fails closed exactly like a revoked
@@ -10889,8 +10912,7 @@ var LocalAuthAddon = class extends BaseAddon {
10889
10912
  },
10890
10913
  revokeScopedToken: async (input) => {
10891
10914
  if (!this.scopedTokenManager) throw new Error("Scoped token management not available");
10892
- await this.scopedTokenManager.revoke(input.id);
10893
- return { success: true };
10915
+ return { success: await this.scopedTokenManager.revoke(input.id) };
10894
10916
  },
10895
10917
  validateScopedToken: async (input) => {
10896
10918
  if (!this.scopedTokenManager || !this.userManager) return null;
@@ -11021,6 +11043,14 @@ var LocalAuthAddon = class extends BaseAddon {
11021
11043
  list: async () => this.adminTokens === null ? [] : this.adminTokens.list(),
11022
11044
  revoke: async (id) => this.adminTokens === null ? false : this.adminTokens.revoke(id)
11023
11045
  },
11046
+ scopedTokens: { revoke: async (id) => this.scopedTokenManager === null ? false : this.scopedTokenManager.revoke(id) },
11047
+ oauthSessions: { revoke: async (id) => {
11048
+ if (this.oauthSessionManager === null) return false;
11049
+ const session = await this.oauthSessionManager.getById(id);
11050
+ if (session === null) return false;
11051
+ if (session.revokedAt !== null) return this.oauthSessionManager.remove(id);
11052
+ return this.oauthSessionManager.markRevoked(id);
11053
+ } },
11024
11054
  audit: {
11025
11055
  record: async (event) => {
11026
11056
  await this.auditLog?.record(event);
@@ -41,6 +41,12 @@ export declare class OauthSessionManager {
41
41
  */
42
42
  markRevoked(id: string): Promise<boolean>;
43
43
  /**
44
+ * Delete one session row. Used by hub bulk revoke when the link is already
45
+ * revoked ("Remove revoked"): absence fails closed the same way as a
46
+ * revoked row, so dropping it only clears the list.
47
+ */
48
+ remove(id: string): Promise<boolean>;
49
+ /**
44
50
  * Delete sessions revoked longer ago than `horizonMs`.
45
51
  *
46
52
  * Safe because an ABSENT session already fails closed exactly like a revoked
@@ -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-CpYg1PaO.js");
3
+ const require_dist = require("../../dist-BcnmH70Z.js");
4
4
  const require_tls = require("../../tls-BWpwU-d5.js");
5
5
  let zod = require("zod");
6
6
  let node_net = require("node:net");
@@ -1,4 +1,4 @@
1
- import { Bt as isDefaultAppConnectionEndpoint, Dn as resolveNotificationTapAddress, Lt as isAppLinkBase, Wn as validateCustomAddress, Xt as localNetworkCapability, bn as resolveAppConnections, dr as BaseAddon, pn as pickAppLinkHub, ri as EventCategory, rt as checkRoleAddress, s as CAMSTACK_APP_LINK_ORIGIN, wn as resolveHubAddressRoles } from "../../dist-rbHhiEZA.mjs";
1
+ import { Bt as isDefaultAppConnectionEndpoint, Dn as resolveNotificationTapAddress, Lt as isAppLinkBase, Wn as validateCustomAddress, Xt as localNetworkCapability, bn as resolveAppConnections, dr as BaseAddon, pn as pickAppLinkHub, ri as EventCategory, rt as checkRoleAddress, s as CAMSTACK_APP_LINK_ORIGIN, wn as resolveHubAddressRoles } from "../../dist-ItJ3qAAA.mjs";
2
2
  import { P as readLanHttpState, _ as writeExtraSans, h as readTlsMode, i as storeUploadedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, m as readTlsAccessStatus, n as regenerateCertificate, p as readExtraSans, r as revertToGeneratedCertificate, t as applyCertificateToListener, u as servedHttpsLeafFingerprint, y as ensureTlsCert } from "../../tls-C2NT-Orr.mjs";
3
3
  import { z } from "zod";
4
4
  import { isIP } from "node:net";
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-rbHhiEZA.mjs";
1
+ import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-ItJ3qAAA.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Er as createEvent, Nt as foldSnapshotByFunction, an as metricsProviderCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg, vn as reducePoints, xn as resolveBucketMs } from "../../dist-rbHhiEZA.mjs";
1
+ import { Er as createEvent, Nt as foldSnapshotByFunction, an as metricsProviderCapability, dr as BaseAddon, ri as EventCategory, ur as errMsg, vn as reducePoints, xn as resolveBucketMs } from "../../dist-ItJ3qAAA.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
3
3
  import { access, readFile, readdir } from "node:fs/promises";
4
4
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  let node_os = require("node:os");
8
8
  node_os = require_chunk.__toESM(node_os);
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Ar as emitReadiness, dr as BaseAddon, hn as platformProbeCapability, jn as scoreRuntimes, ri as EventCategory, ur as errMsg, wt as enumerateInferenceDevices } from "../../dist-rbHhiEZA.mjs";
2
+ import { Ar as emitReadiness, dr as BaseAddon, hn as platformProbeCapability, jn as scoreRuntimes, ri as EventCategory, ur as errMsg, wt as enumerateInferenceDevices } from "../../dist-ItJ3qAAA.mjs";
3
3
  import * as os from "node:os";
4
4
  import * as fs from "node:fs";
5
5
  import { execFile } from "node:child_process";
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { dr as BaseAddon, ri as EventCategory } from "../../dist-rbHhiEZA.mjs";
1
+ import { dr as BaseAddon, ri as EventCategory } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Bn as streamQualityLabel, Pn as snapshotCapability, Q as batteryCapability, Vr as nodePin, Z as bareAddonId, a as BatteryStatusSchema, dr as BaseAddon, in as memoizePinnedFfmpeg, lr as DeviceType, ri as EventCategory, sr as DeviceFeature, ur as errMsg, vt as deriveBatteryPresence } from "../../dist-rbHhiEZA.mjs";
1
+ import { Bn as streamQualityLabel, Pn as snapshotCapability, Q as batteryCapability, Vr as nodePin, Z as bareAddonId, a as BatteryStatusSchema, dr as BaseAddon, in as memoizePinnedFfmpeg, lr as DeviceType, ri as EventCategory, sr as DeviceFeature, ur as errMsg, vt as deriveBatteryPresence } from "../../dist-ItJ3qAAA.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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.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 { Mt as filesystemBrowseCapability, Rn as storageProviderCapability, dr as BaseAddon } from "../../dist-rbHhiEZA.mjs";
1
+ import { Mt as filesystemBrowseCapability, Rn as storageProviderCapability, dr as BaseAddon } from "../../dist-ItJ3qAAA.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";
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-W8oEm4ME.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { B as StorageCleanupJobSchema, Fn as storageCapability, Ft as gbToBytes, H as StorageLocationTypeSchema, In as storageMigrationCapability, Jn as withLocationMode, Jr as resolveSecretMarkers, Jt as legacyModeOf, Mn as settingsStoreCapability, O as LegacyStorageLocationDefaultSchema, Ot as evictionPolicyOfLocation, Rr as isSecretMarker, Tn as resolveLocationMode, U as StorageMigrationJobSchema, Ur as parseJsonObject, V as StorageLocationModeSchema, Vt as isLocationEnabled, Zr as secretTreeFromPaths, dr as BaseAddon, hr as REDACTED_SECRET, ni as transformSecretWrite, nn as mayReadLocation, on as modeMayWrite, ri as EventCategory, rn as mayWriteToLocation, wr as collectSecretConfigKeys } from "../../dist-rbHhiEZA.mjs";
1
+ import { B as StorageCleanupJobSchema, Fn as storageCapability, Ft as gbToBytes, H as StorageLocationTypeSchema, In as storageMigrationCapability, Jn as withLocationMode, Jr as resolveSecretMarkers, Jt as legacyModeOf, Mn as settingsStoreCapability, O as LegacyStorageLocationDefaultSchema, Ot as evictionPolicyOfLocation, Rr as isSecretMarker, Tn as resolveLocationMode, U as StorageMigrationJobSchema, Ur as parseJsonObject, V as StorageLocationModeSchema, Vt as isLocationEnabled, Zr as secretTreeFromPaths, dr as BaseAddon, hr as REDACTED_SECRET, ni as transformSecretWrite, nn as mayReadLocation, on as modeMayWrite, ri as EventCategory, rn as mayWriteToLocation, wr as collectSecretConfigKeys } from "../../dist-ItJ3qAAA.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-CDiN1p98.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  const require_ms$1 = require("../../ms-t68_FaqE.js");
8
- const require_constants$8 = require("../../constants-Dq3Xlo3-.js");
8
+ const require_constants$8 = require("../../constants-CMXQ1QIC.js");
9
9
  const require_x509_es = require("../../x509.es-BhTzcFhZ.js");
10
10
  let zod = require("zod");
11
11
  let node_crypto = require("node:crypto");
@@ -1,7 +1,7 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Br as makeSecretMarker, Dr as customAction, Lr as isSecretClear, Nr as hydrateSchema, Or as defineCustomActions, Qr as secretTreeFromSchema, Rr as isSecretMarker, dr as BaseAddon, ni as transformSecretWrite, ur as errMsg } from "../../dist-rbHhiEZA.mjs";
2
+ import { Br as makeSecretMarker, Dr as customAction, Lr as isSecretClear, Nr as hydrateSchema, Or as defineCustomActions, Qr as secretTreeFromSchema, Rr as isSecretMarker, dr as BaseAddon, ni as transformSecretWrite, ur as errMsg } from "../../dist-ItJ3qAAA.mjs";
3
3
  import { n as require_safe_buffer, t as require_ms } from "../../ms-DlIWNkkk.mjs";
4
- import { a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, c as MESH_JOIN_TOKEN_MAX_TTL_SEC, d as CLUSTER_SECRET_REF, i as MESH_CA_FIELD, l as SERVER_AUTH_OID, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID, v as hashClusterSecret } from "../../constants-WWxjfUOV.mjs";
4
+ import { a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, c as MESH_JOIN_TOKEN_MAX_TTL_SEC, d as CLUSTER_SECRET_REF, i as MESH_CA_FIELD, l as SERVER_AUTH_OID, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID, v as hashClusterSecret } from "../../constants-vMEWqCqG.mjs";
5
5
  import { a as KeyUsagesExtension, c as Pkcs10CertificateRequestGenerator, d as X509Certificate$1, f as X509CertificateGenerator, i as KeyUsageFlags, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, s as Pkcs10CertificateRequest, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "../../x509.es-Xf3K_brW.mjs";
6
6
  import { z } from "zod";
7
7
  import { X509Certificate, createHash, createHmac, randomBytes, timingSafeEqual, webcrypto } 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-CpYg1PaO.js");
6
+ const require_dist = require("../../dist-BcnmH70Z.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-rbHhiEZA.mjs";
1
+ import { Qt as logDestinationCapability, dr as BaseAddon } from "../../dist-ItJ3qAAA.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { Er as createEvent, Xr as scrubKnownSecrets, ri as EventCategory$1, tn as maskUrlCredentials } from "./dist-rbHhiEZA.mjs";
1
+ import { Er as createEvent, Xr as scrubKnownSecrets, ri as EventCategory$1, tn as maskUrlCredentials } from "./dist-ItJ3qAAA.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader } from "./proc-stat-CbC55Kqi.mjs";
3
3
  import "./hub-cap-forward-CDiN1p98.mjs";
4
4
  import * as crypto$1 from "node:crypto";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CpYg1PaO.js");
2
+ const require_dist = require("./dist-BcnmH70Z.js");
3
3
  const require_proc_stat = require("./proc-stat-DL-WUOhl.js");
4
4
  require("./hub-cap-forward-W8oEm4ME.js");
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CpYg1PaO.js");
1
+ const require_dist = require("./dist-BcnmH70Z.js");
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- import { rr as compositionSourceKey, ur as errMsg } from "./dist-rbHhiEZA.mjs";
1
+ import { rr as compositionSourceKey, ur as errMsg } from "./dist-ItJ3qAAA.mjs";
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CpYg1PaO.js");
1
+ const require_dist = require("./dist-BcnmH70Z.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/kernel/moleculer/cluster-secret.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { Cr as buildSecretRef } from "./dist-rbHhiEZA.mjs";
1
+ import { Cr as buildSecretRef } from "./dist-ItJ3qAAA.mjs";
2
2
  import { createHash, timingSafeEqual } from "node:crypto";
3
3
  //#region src/kernel/moleculer/cluster-secret.ts
4
4
  /**
@@ -11558,7 +11558,14 @@ var BrokerProviderInfoSchema = zod.z.object({
11558
11558
  /** Broker kinds this provider can create, with a display label. */
11559
11559
  kinds: zod.z.array(zod.z.object({
11560
11560
  kind: zod.z.string(),
11561
- label: zod.z.string()
11561
+ label: zod.z.string(),
11562
+ /**
11563
+ * Relative hub path to start an interactive account link (OAuth popup).
11564
+ * May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
11565
+ */
11566
+ interactiveConnectPath: zod.z.string().min(1).optional(),
11567
+ /** Relative hub path to disconnect the linked account (same popup pattern). */
11568
+ interactiveDisconnectPath: zod.z.string().min(1).optional()
11562
11569
  }))
11563
11570
  });
11564
11571
  var ListInputSchema = zod.z.object({
@@ -11558,7 +11558,14 @@ var BrokerProviderInfoSchema = z.object({
11558
11558
  /** Broker kinds this provider can create, with a display label. */
11559
11559
  kinds: z.array(z.object({
11560
11560
  kind: z.string(),
11561
- label: z.string()
11561
+ label: z.string(),
11562
+ /**
11563
+ * Relative hub path to start an interactive account link (OAuth popup).
11564
+ * May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
11565
+ */
11566
+ interactiveConnectPath: z.string().min(1).optional(),
11567
+ /** Relative hub path to disconnect the linked account (same popup pattern). */
11568
+ interactiveDisconnectPath: z.string().min(1).optional()
11562
11569
  }))
11563
11570
  });
11564
11571
  var ListInputSchema = z.object({
@@ -1,4 +1,4 @@
1
- import { It as hfModelUrl, M as MODEL_FORMATS, T as HF_REPO } from "./dist-rbHhiEZA.mjs";
1
+ import { It as hfModelUrl, M as MODEL_FORMATS, T as HF_REPO } from "./dist-ItJ3qAAA.mjs";
2
2
  import { createHash } from "node:crypto";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CpYg1PaO.js");
2
+ const require_dist = require("./dist-BcnmH70Z.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
package/dist/index.js CHANGED
@@ -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-CpYg1PaO.js");
4
- const require_jwt_signing_key = require("./jwt-signing-key-DiBm2MuN.js");
3
+ const require_dist = require("./dist-BcnmH70Z.js");
4
+ const require_jwt_signing_key = require("./jwt-signing-key-CST1LdM6.js");
5
5
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
6
6
  require("./builtins/alerts/index.js");
7
7
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -27,17 +27,17 @@ const require_builtins_sqlite_storage_index = require("./builtins/sqlite-storage
27
27
  const require_hub_cap_forward = require("./hub-cap-forward-W8oEm4ME.js");
28
28
  const require_builtins_storage_orchestrator_storage_orchestrator_addon = require("./builtins/storage-orchestrator/storage-orchestrator.addon.js");
29
29
  require("./builtins/storage-orchestrator/index.js");
30
- const require_constants = require("./constants-Dq3Xlo3-.js");
30
+ const require_constants = require("./constants-CMXQ1QIC.js");
31
31
  const require_builtins_system_config_system_config_addon = require("./builtins/system-config/system-config.addon.js");
32
32
  require("./builtins/system-config/index.js");
33
33
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
34
- const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-IeiQqOdV.js");
34
+ const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-DoFaUgFf.js");
35
35
  const require_tls = require("./tls-BWpwU-d5.js");
36
- const require_child_cap_dispatch = require("./child-cap-dispatch-DpQYxjCT.js");
36
+ const require_child_cap_dispatch = require("./child-cap-dispatch-fnYkJDjG.js");
37
37
  const require_platform_key_source = require("./platform-key-source-Di7HrlGR.js");
38
38
  const require_resource_monitor = require("./resource-monitor-BgWGRxN5.js");
39
39
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
40
- const require_restore_archive = require("./restore-archive-COzu_h0N.js");
40
+ const require_restore_archive = require("./restore-archive-pSlTKRgU.js");
41
41
  let zod = require("zod");
42
42
  let node_crypto = require("node:crypto");
43
43
  let _camstack_types_node = require("@camstack/types/node");
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { i as __require } from "./chunk-CNf5ZN-e.mjs";
2
- import { $t as logLevelAtMost, A as METHOD_ACCESS_MAP, An as scopesAllowDeviceCap, D as LOG_LEVEL_RANK, En as resolveMethodAuth, Er as createEvent, F as RUNTIME_DEFAULTS, Ht as isObjectInput, K as addonSettingsCapability, Kr as readinessKey, Rt as isArrayOutputSchema, Sr as asString$1, Ur as parseJsonObject, Ut as isVoidInput, Vn as supportedRuntimes, Wr as parseJsonUnknown, Wt as kebabToCamel, Yr as scopeKey, Yt as lifecycleJobSchema, _r as ReadinessTimeoutError, br as asJsonObject$1, dn as objectInputDeclaresRequiredDeviceId, en as looseSchema, fr as DATAPLANE_SECRET_HEADER$1, gn as procedureAuthKey, gr as ReadinessRegistry, jr as expandCapMethods, jt as extractNestedAddonId, kn as scopesAllowAddon, kr as emitDownForOwnedCaps, mr as DEVICE_STATUS_METHOD, pr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, qr as resolveCapMount, ri as EventCategory$1, t as ALL_CAPABILITY_DEFINITIONS, un as objectInputDeclaresAddonId, ur as errMsg$1, xr as asNumber, zt as isCollectionArrayMethod } from "./dist-rbHhiEZA.mjs";
3
- import { c as staticJwtSigningKey, i as getProcessJwtSigningKeyState, n as JwtSigningKeyUnavailableError, o as processJwtSigningKey, r as SYSTEM_SECRET_OWNER, t as JWT_SIGNING_KEY_REF } from "./jwt-signing-key-2T2J63Bz.mjs";
2
+ import { $t as logLevelAtMost, A as METHOD_ACCESS_MAP, An as scopesAllowDeviceCap, D as LOG_LEVEL_RANK, En as resolveMethodAuth, Er as createEvent, F as RUNTIME_DEFAULTS, Ht as isObjectInput, K as addonSettingsCapability, Kr as readinessKey, Rt as isArrayOutputSchema, Sr as asString$1, Ur as parseJsonObject, Ut as isVoidInput, Vn as supportedRuntimes, Wr as parseJsonUnknown, Wt as kebabToCamel, Yr as scopeKey, Yt as lifecycleJobSchema, _r as ReadinessTimeoutError, br as asJsonObject$1, dn as objectInputDeclaresRequiredDeviceId, en as looseSchema, fr as DATAPLANE_SECRET_HEADER$1, gn as procedureAuthKey, gr as ReadinessRegistry, jr as expandCapMethods, jt as extractNestedAddonId, kn as scopesAllowAddon, kr as emitDownForOwnedCaps, mr as DEVICE_STATUS_METHOD, pr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, qr as resolveCapMount, ri as EventCategory$1, t as ALL_CAPABILITY_DEFINITIONS, un as objectInputDeclaresAddonId, ur as errMsg$1, xr as asNumber, zt as isCollectionArrayMethod } from "./dist-ItJ3qAAA.mjs";
3
+ import { c as staticJwtSigningKey, i as getProcessJwtSigningKeyState, n as JwtSigningKeyUnavailableError, o as processJwtSigningKey, r as SYSTEM_SECRET_OWNER, t as JWT_SIGNING_KEY_REF } from "./jwt-signing-key-CpMSrZuI.mjs";
4
4
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
5
5
  import "./builtins/alerts/index.mjs";
6
6
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -26,17 +26,17 @@ import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
26
26
  import { i as stripForwardedCaller, n as HUB_CAP_FWD_SERVICE, r as createHubCapForwardService, t as HUB_CAP_FWD_ACTION } from "./hub-cap-forward-CDiN1p98.mjs";
27
27
  import { StorageOrchestratorAddon, n as buildStorageLocationRegistry, t as StorageOrchestratorService } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
28
28
  import "./builtins/storage-orchestrator/index.mjs";
29
- import { _ as getProcessClusterSecretGate, a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, d as CLUSTER_SECRET_REF, f as CLUSTER_SECRET_REJECTED_EXIT_CODE, g as clusterSecretMatches, h as checkClusterSecret, i as MESH_CA_FIELD, m as CLUSTER_SECRET_UNAVAILABLE_TYPE, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, p as CLUSTER_SECRET_SETTINGS_KEY, u as CLUSTER_SECRET_MISMATCH_TYPE, v as hashClusterSecret, y as isClusterSecretMismatchError } from "./constants-WWxjfUOV.mjs";
29
+ import { _ as getProcessClusterSecretGate, a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, d as CLUSTER_SECRET_REF, f as CLUSTER_SECRET_REJECTED_EXIT_CODE, g as clusterSecretMatches, h as checkClusterSecret, i as MESH_CA_FIELD, m as CLUSTER_SECRET_UNAVAILABLE_TYPE, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, p as CLUSTER_SECRET_SETTINGS_KEY, u as CLUSTER_SECRET_MISMATCH_TYPE, v as hashClusterSecret, y as isClusterSecretMismatchError } from "./constants-vMEWqCqG.mjs";
30
30
  import { A as AGENT_UI_UNLOCK_VERSION, B as parseMeshAuthMode, C as generateMeshKeyPair, D as AGENT_DASHBOARD_ORIGINS_FIELD, E as loadMeshCa, F as verifyAgentUiUnlockTicket, G as createCidrMatcher, H as setProcessMeshAuthMode, I as MESH_AUTH_MODE_FIELD, J as readCidrSetting, K as normalizeIp, L as getProcessMeshAuthMode, M as isAllowedAgentDashboardReturnTo, N as mintAgentUiUnlockTicket, O as AGENT_UI_UNLOCK_DOMAIN, P as parseAgentDashboardOrigins, R as getProcessMeshAuthStatus, S as generateMeshCa, SystemConfigAddon, T as issueMeshLeafFromCsr, U as setProcessMeshAuthStatusSource, V as requestProcessMeshEnforcement, W as setProcessMeshEnforcer, _ as requireProcessMeshCa, a as setProcessMeshTlsEnabler, b as createMeshCsrPem, c as mintMeshJoinToken, d as getProcessNodeMeshTransport, f as setProcessMeshPeerTransportLookup, g as getProcessMeshCaState, h as MeshCaKeeper, i as ServiceBroker, j as UnlockTicketJtiStore, k as AGENT_UI_UNLOCK_TTL_MS, l as processJoinTokenJtiStore, m as processMeshCrl, n as TlsTcpTransporter, o as enrollMeshNode, p as MeshCrl, q as parseCidrList, r as Errors, s as JoinTokenJtiStore, u as verifyMeshJoinToken, v as caFingerprint, w as issueMeshLeafForNode, x as exportMeshPrivateKeyPem, y as caFingerprintCompact, z as isMeshAuthMode } from "./builtins/system-config/system-config.addon.mjs";
31
31
  import "./builtins/system-config/index.mjs";
32
32
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
33
- import { C as resolveFormatRevision, S as isModelDownloaded, _ as downloadModel, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as ensureModel, w as revisionWeightUrl, y as fetchJson } from "./event-loop-stall-monitor-dbJ_rR8a.mjs";
33
+ import { C as resolveFormatRevision, S as isModelDownloaded, _ as downloadModel, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as ensureModel, w as revisionWeightUrl, y as fetchJson } from "./event-loop-stall-monitor-CogzcENb.mjs";
34
34
  import { A as allFamiliesListenHost, C as collectCertIdentity, D as SERVER_AUTH_OID, E as MAX_LEAF_VALIDITY_DAYS, F as registerLanHttpHandler, M as bindPendingLanHttp, N as closeLanHttp, O as evaluateExistingCert, P as readLanHttpState, S as CA_COMMON_NAME, T as LEAF_RENEWAL_WINDOW_DAYS, _ as writeExtraSans, a as validateUploadedTls, b as loadTlsCert, c as registerHttpsListener, d as prepareBootTls, f as UPLOADED_CA_FILE, g as splitPemCertificates, h as readTlsMode, i as storeUploadedCertificate, j as applyLanHttp, k as DEFAULT_LAN_HTTP_PORT, l as reloadHttpsListener, m as readTlsAccessStatus, n as regenerateCertificate, o as clearHttpsListener, p as readExtraSans, r as revertToGeneratedCertificate, s as leafFingerprintOf, t as applyCertificateToListener, u as servedHttpsLeafFingerprint, v as writeTlsMode, w as CA_VALIDITY_DAYS, x as reissueTlsLeaf, y as ensureTlsCert } from "./tls-C2NT-Orr.mjs";
35
- import { $ as AGENT_CAP_FWD_ACTION, $n as EMPTY_SOCKET_DIRECTION, $t as HEAP_WATCH_INTERVAL_MS, A as mapSignalsToInferenceHardware, An as DECISIVE_HEAP_SPACES, At as capServiceName, B as createParentUnownedCallHandler, Bn as createOutboundQueueGate, Bt as buildNpmChildEnv, C as getBrokerEventBus, Cn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, D as subscribePassthrough, Dn as createInspectorArrayBufferCensus, Dt as capActionName, E as setNodeEventInterest, En as createArrayBufferCensusGate, Et as NATIVE_PROVIDER_SERVICE_INFIX, F as brokerTransportLink, Fn as readHeapSpaces, Ft as CapabilityHandle, G as createUdsLoggerWithControl, Gn as EMPTY_SOCKET_PLANE_BASELINE, Gt as redactLogMeta, H as createUdsEventBus, Hn as MESH_QUEUE_TOP_N, Ht as runNpm, I as buildLinkChain, In as selectReportedSpaces, It as CapabilityUnavailableError, J as UDS_NO_ROUTE_PREFIX, Jn as createSocketPlaneMeter, Jt as hostNodeIdOf, K as LocalChildClient, Kn as SOCKET_PLANE_TOP_N, Kt as redactLogText, L as deviceCapResolverLink, Ln as OUTBOUND_QUEUE_COOLDOWN_MS, Lt as copyBundledNativeModules, M as probePlatform, Mn as emitHeapDiagnosticReport, Mt as deserializeTypedArrays, N as resolveHwAccel, Nn as formatHeapSpaces, Nt as serializeTypedArrays, O as AddonDepsManager, On as formatArrayBufferCensus, Ot as capActionSuffix, P as brokerCallForCap, Pn as heapSpaceField, Pt as DeviceRegistry, Q as deviceOfGetStatus, Qn as readSocketQueues, Qt as HEAP_RECLAIM_TRIGGER_MB, R as ipcParentLink, Rn as OUTBOUND_QUEUE_SUSTAIN_MS, Rt as installManifestNativeDeps, S as clusterEventTopic, Sn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, St as mountNativeCapService, T as registerEventBusService, Tn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, Tt as validateProviderRegistrations, U as udsChildLogToWorkerEntry, Un as createMeshQueueReader, Ut as isCredentialKeyName, V as createUdsEventBridge, Vn as formatOutboundQueueVerdict, Vt as resolveNpmInvocation, W as createUdsLogger, Wn as formatMeshQueue, Wt as redactLogEntry, X as GET_STATUS_METHOD, Xn as diffSocketPlane, Xt as HEAP_RECLAIM_MIN_INTERVAL_MS, Y as afterWorkerOnlineAnnounce, Yn as createSocketPlaneReader, Yt as createAddonDataPlaneFacility, Z as answerClaimedGetStatus, Zn as formatSocketPlane, Zt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, _ as getWorkerDeviceRegistry, _n as reclaimIntervalMs, _t as encodeFrame, a as reapProcessGroup, an as RSS_BUDGET_RELEASE_RATIO, ar as CAP_ACTION_OVERFLOW_LABEL, at as callWithServiceDiscovery, b as setHubConnected, bn as startRunnerHeapWatch, c as runnerOwnsProcessGroup, cn as ZERO_LOOP_DELAY, cr as MAX_CAP_ACTIONS_PER_PEER, ct as __resetCapUsageRegistryForTests, d as summarizeMembers, dn as createLoopDelayMeter, dr as diffCapActionCensus, dt as UdsLocalTransportClient, en as HEAP_WATCH_WARN_RATIO, er as createSocketDirectionCounters, et as AGENT_CAP_FWD_SERVICE, f as installManifestSystemDeps, fn as createV8Reclaimer, fr as EVENT_PLANE_TOP_N, ft as UdsLocalTransportServer, g as createUdsAddonContext, gn as parseRssBudgetMb, gr as formatEventPlane, gt as FrameDecoder, h as createAddonContext, hn as nextRssBudgetState, hr as diffEventPlane, ht as localEndpointPath, in as RSS_BUDGET_REANNOUNCE_MIN_MS, ir as socketDirectionMessages, it as classifyCapRoute, j as createKernelHwAccel, jn as HEAP_SPACE_REPORT_MIN_MB, jt as parseCapAction, k as createKernelInferenceEngine, kn as isArrayBufferCensusReport, kt as capBareAction, l as signalAllRunnerGroups, ln as buildHeapSample, lr as capActionLabel, lt as getCapUsageRegistry, m as adaptBrokerToCluster, mn as hubMainRssBudget, mr as createEventPlaneReader, mt as PeerAnsweredError, nn as HUB_MAIN_RSS_BUDGET_MB, nr as sampleSocketDirection, nt as stampCallerAddonId, o as registerRunnerGroup, on as RUNNER_HEAP_WATCH_INTERVAL_MS, or as CAP_ACTION_UNLABELLED, ot as CapUsageRegistry, p as installManifestPythonDeps, pn as describeRss, pr as createEventPlaneMeter, pt as SocketChannel, q as LocalChildRegistry, qn as SOCKET_QUEUE_TOP_N, qt as createAddonPeerBytesFacility, r as defaultProcessGroupOps, rn as HUB_RSS_BUDGET_ENV, rr as socketDirectionBytes, rt as CapRouteError, s as releaseRunnerGroup, sn as RUNNER_RSS_BUDGET_ENV, sr as EMPTY_CAP_ACTION_READING, st as PARENT_ROUTED_PROVIDER_ADDON_ID, t as CAP_METHOD_NOT_IMPLEMENTED, tn as HUB_MAIN_HEAP_WATCH_LABEL, tr as recordSocketFrame, tt as CapRouteResolver, un as createDeferredHeapWatchSink, ur as createCapActionCensus, ut as createLocalTransport, v as getOrInitReadinessRegistry, vn as shouldReclaim, vt as buildNativeCapProxy, w as getMoleculerEventStats, wn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, wt as createAddonService, x as EVENT_TOPIC_PREFIX, xn as strandedMb, y as getOrInitReadinessRegistryForClient, yn as startHeapWatch, yt as createBrokerDeviceManagerApi, z as localProviderLink, zn as OUTBOUND_QUEUE_THRESHOLD_BYTES, zt as resolveAddonClass } from "./child-cap-dispatch-DIXACzJZ.mjs";
35
+ import { $ as AGENT_CAP_FWD_ACTION, $n as EMPTY_SOCKET_DIRECTION, $t as HEAP_WATCH_INTERVAL_MS, A as mapSignalsToInferenceHardware, An as DECISIVE_HEAP_SPACES, At as capServiceName, B as createParentUnownedCallHandler, Bn as createOutboundQueueGate, Bt as buildNpmChildEnv, C as getBrokerEventBus, Cn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, D as subscribePassthrough, Dn as createInspectorArrayBufferCensus, Dt as capActionName, E as setNodeEventInterest, En as createArrayBufferCensusGate, Et as NATIVE_PROVIDER_SERVICE_INFIX, F as brokerTransportLink, Fn as readHeapSpaces, Ft as CapabilityHandle, G as createUdsLoggerWithControl, Gn as EMPTY_SOCKET_PLANE_BASELINE, Gt as redactLogMeta, H as createUdsEventBus, Hn as MESH_QUEUE_TOP_N, Ht as runNpm, I as buildLinkChain, In as selectReportedSpaces, It as CapabilityUnavailableError, J as UDS_NO_ROUTE_PREFIX, Jn as createSocketPlaneMeter, Jt as hostNodeIdOf, K as LocalChildClient, Kn as SOCKET_PLANE_TOP_N, Kt as redactLogText, L as deviceCapResolverLink, Ln as OUTBOUND_QUEUE_COOLDOWN_MS, Lt as copyBundledNativeModules, M as probePlatform, Mn as emitHeapDiagnosticReport, Mt as deserializeTypedArrays, N as resolveHwAccel, Nn as formatHeapSpaces, Nt as serializeTypedArrays, O as AddonDepsManager, On as formatArrayBufferCensus, Ot as capActionSuffix, P as brokerCallForCap, Pn as heapSpaceField, Pt as DeviceRegistry, Q as deviceOfGetStatus, Qn as readSocketQueues, Qt as HEAP_RECLAIM_TRIGGER_MB, R as ipcParentLink, Rn as OUTBOUND_QUEUE_SUSTAIN_MS, Rt as installManifestNativeDeps, S as clusterEventTopic, Sn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, St as mountNativeCapService, T as registerEventBusService, Tn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, Tt as validateProviderRegistrations, U as udsChildLogToWorkerEntry, Un as createMeshQueueReader, Ut as isCredentialKeyName, V as createUdsEventBridge, Vn as formatOutboundQueueVerdict, Vt as resolveNpmInvocation, W as createUdsLogger, Wn as formatMeshQueue, Wt as redactLogEntry, X as GET_STATUS_METHOD, Xn as diffSocketPlane, Xt as HEAP_RECLAIM_MIN_INTERVAL_MS, Y as afterWorkerOnlineAnnounce, Yn as createSocketPlaneReader, Yt as createAddonDataPlaneFacility, Z as answerClaimedGetStatus, Zn as formatSocketPlane, Zt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, _ as getWorkerDeviceRegistry, _n as reclaimIntervalMs, _t as encodeFrame, a as reapProcessGroup, an as RSS_BUDGET_RELEASE_RATIO, ar as CAP_ACTION_OVERFLOW_LABEL, at as callWithServiceDiscovery, b as setHubConnected, bn as startRunnerHeapWatch, c as runnerOwnsProcessGroup, cn as ZERO_LOOP_DELAY, cr as MAX_CAP_ACTIONS_PER_PEER, ct as __resetCapUsageRegistryForTests, d as summarizeMembers, dn as createLoopDelayMeter, dr as diffCapActionCensus, dt as UdsLocalTransportClient, en as HEAP_WATCH_WARN_RATIO, er as createSocketDirectionCounters, et as AGENT_CAP_FWD_SERVICE, f as installManifestSystemDeps, fn as createV8Reclaimer, fr as EVENT_PLANE_TOP_N, ft as UdsLocalTransportServer, g as createUdsAddonContext, gn as parseRssBudgetMb, gr as formatEventPlane, gt as FrameDecoder, h as createAddonContext, hn as nextRssBudgetState, hr as diffEventPlane, ht as localEndpointPath, in as RSS_BUDGET_REANNOUNCE_MIN_MS, ir as socketDirectionMessages, it as classifyCapRoute, j as createKernelHwAccel, jn as HEAP_SPACE_REPORT_MIN_MB, jt as parseCapAction, k as createKernelInferenceEngine, kn as isArrayBufferCensusReport, kt as capBareAction, l as signalAllRunnerGroups, ln as buildHeapSample, lr as capActionLabel, lt as getCapUsageRegistry, m as adaptBrokerToCluster, mn as hubMainRssBudget, mr as createEventPlaneReader, mt as PeerAnsweredError, nn as HUB_MAIN_RSS_BUDGET_MB, nr as sampleSocketDirection, nt as stampCallerAddonId, o as registerRunnerGroup, on as RUNNER_HEAP_WATCH_INTERVAL_MS, or as CAP_ACTION_UNLABELLED, ot as CapUsageRegistry, p as installManifestPythonDeps, pn as describeRss, pr as createEventPlaneMeter, pt as SocketChannel, q as LocalChildRegistry, qn as SOCKET_QUEUE_TOP_N, qt as createAddonPeerBytesFacility, r as defaultProcessGroupOps, rn as HUB_RSS_BUDGET_ENV, rr as socketDirectionBytes, rt as CapRouteError, s as releaseRunnerGroup, sn as RUNNER_RSS_BUDGET_ENV, sr as EMPTY_CAP_ACTION_READING, st as PARENT_ROUTED_PROVIDER_ADDON_ID, t as CAP_METHOD_NOT_IMPLEMENTED, tn as HUB_MAIN_HEAP_WATCH_LABEL, tr as recordSocketFrame, tt as CapRouteResolver, un as createDeferredHeapWatchSink, ur as createCapActionCensus, ut as createLocalTransport, v as getOrInitReadinessRegistry, vn as shouldReclaim, vt as buildNativeCapProxy, w as getMoleculerEventStats, wn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, wt as createAddonService, x as EVENT_TOPIC_PREFIX, xn as strandedMb, y as getOrInitReadinessRegistryForClient, yn as startHeapWatch, yt as createBrokerDeviceManagerApi, z as localProviderLink, zn as OUTBOUND_QUEUE_THRESHOLD_BYTES, zt as resolveAddonClass } from "./child-cap-dispatch-CpYnlLNt.mjs";
36
36
  import { n as getPlatformKeychainKey, r as setPlatformKeychainKey, t as clearPlatformKeychainKey } from "./platform-key-source-BWlq0jjn.mjs";
37
37
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B2WZ8_q9.mjs";
38
38
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
39
- import { c as BackupKeyFormatError, d as generateBackupKeyPair, l as BackupKeyMismatchError, m as readBackupEncryptionHeader, o as SystemBackupService, r as prepareRestoreArchive, s as BackupDecryptError, t as BackupKeyRequiredError } from "./restore-archive-DqozDqhZ.mjs";
39
+ import { c as BackupKeyFormatError, d as generateBackupKeyPair, l as BackupKeyMismatchError, m as readBackupEncryptionHeader, o as SystemBackupService, r as prepareRestoreArchive, s as BackupDecryptError, t as BackupKeyRequiredError } from "./restore-archive-8F_M_wW0.mjs";
40
40
  import { z } from "zod";
41
41
  import { createHash, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
42
42
  import { PYTHON_VERSION, buildBinaryPath, downloadBinary, ensureBinary, ensureFfmpeg, ensurePython, findInPath, getFfmpegDownloadUrl, getPlatformInfo, getPythonDownloadUrl, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CpYg1PaO.js");
1
+ const require_dist = require("./dist-BcnmH70Z.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/auth/jwt-signing-key.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { Cr as buildSecretRef } from "./dist-rbHhiEZA.mjs";
1
+ import { Cr as buildSecretRef } from "./dist-ItJ3qAAA.mjs";
2
2
  import { randomBytes } from "node:crypto";
3
3
  //#region src/auth/jwt-signing-key.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { g as DATABASE_SNAPSHOT_SUFFIX } from "./dist-rbHhiEZA.mjs";
1
+ import { g as DATABASE_SNAPSHOT_SUFFIX } from "./dist-ItJ3qAAA.mjs";
2
2
  import { createCipheriv, createDecipheriv, createHash, createPrivateKey, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
3
3
  import { Buffer as Buffer$1 } from "buffer";
4
4
  import * as fsp from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CpYg1PaO.js");
2
+ const require_dist = require("./dist-BcnmH70Z.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let buffer = require("buffer");
5
5
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { br as asJsonObject } from "./dist-rbHhiEZA.mjs";
1
+ import { br as asJsonObject } from "./dist-ItJ3qAAA.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CpYg1PaO.js");
1
+ const require_dist = require("./dist-BcnmH70Z.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.411",
3
+ "version": "1.2.413",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",