@camstack/system 1.2.376 → 1.2.377

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 (92) hide show
  1. package/dist/addon-runner.js +9 -4
  2. package/dist/addon-runner.mjs +10 -5
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +1 -1
  10. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  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 +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  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-config-secrets.d.ts +21 -0
  26. package/dist/builtins/device-manager/device-manager.addon.js +85 -6
  27. package/dist/builtins/device-manager/device-manager.addon.mjs +85 -6
  28. package/dist/builtins/hub-forwarder/index.js +1 -1
  29. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  30. package/dist/builtins/keychain/index.d.ts +1 -0
  31. package/dist/builtins/keychain/index.js +1416 -0
  32. package/dist/builtins/keychain/index.mjs +1409 -0
  33. package/dist/builtins/keychain/key-sources.d.ts +37 -0
  34. package/dist/builtins/keychain/keychain-crypto.d.ts +28 -0
  35. package/dist/builtins/keychain/keychain-service.d.ts +103 -0
  36. package/dist/builtins/keychain/keychain-store.d.ts +82 -0
  37. package/dist/builtins/keychain/keychain-usage.d.ts +6 -0
  38. package/dist/builtins/keychain/keychain.addon.d.ts +11 -0
  39. package/dist/builtins/keychain/platform-key-source.d.ts +24 -0
  40. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  41. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  42. package/dist/builtins/local-auth/local-auth.addon.js +19 -2
  43. package/dist/builtins/local-auth/local-auth.addon.mjs +19 -2
  44. package/dist/builtins/local-network/local-network.addon.js +1 -1
  45. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  46. package/dist/builtins/loki-logging/index.js +1 -1
  47. package/dist/builtins/loki-logging/index.mjs +1 -1
  48. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  49. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  50. package/dist/builtins/platform-probe/index.js +1 -1
  51. package/dist/builtins/platform-probe/index.mjs +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  53. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/snapshot/index.js +1 -1
  55. package/dist/builtins/snapshot/index.mjs +1 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  57. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  58. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  59. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  60. package/dist/builtins/storage-orchestrator/location-store.d.ts +6 -0
  61. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +15 -0
  62. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +74 -14
  63. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +74 -14
  64. package/dist/builtins/system-config/system-config.addon.js +1 -1
  65. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  66. package/dist/builtins/winston-logging/index.js +1 -1
  67. package/dist/builtins/winston-logging/index.mjs +1 -1
  68. package/dist/{child-cap-dispatch-8qMgog1O.mjs → child-cap-dispatch-CgmOo0yl.mjs} +170 -27
  69. package/dist/{child-cap-dispatch-BWtaSmWf.js → child-cap-dispatch-DlDSoqm1.js} +198 -25
  70. package/dist/{composition-sources-DW7CgMsg.js → composition-sources-BNyXPSs_.js} +1 -1
  71. package/dist/{composition-sources-zxQPPtP_.mjs → composition-sources-D39bl0nP.mjs} +1 -1
  72. package/dist/{dist-D732NygW.mjs → dist-BWNoS-1S.mjs} +2195 -105
  73. package/dist/{dist-BcUWQGr9.js → dist-D_a9mUiM.js} +2260 -104
  74. package/dist/{event-loop-stall-monitor-8W4yWNVW.mjs → event-loop-stall-monitor-ClPhfx7Y.mjs} +1 -1
  75. package/dist/{event-loop-stall-monitor-QX4RjNe7.js → event-loop-stall-monitor-DuOn8H1n.js} +1 -1
  76. package/dist/{hub-cap-forward-BdT320dq.mjs → hub-cap-forward-CH6_VWVO.mjs} +13 -4
  77. package/dist/{hub-cap-forward-DmHNjbB0.js → hub-cap-forward-COCmYaup.js} +13 -4
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.js +20 -6
  80. package/dist/index.mjs +13 -7
  81. package/dist/kernel/config-schema.d.ts +4 -0
  82. package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +6 -0
  83. package/dist/kernel/transport/cap-route-resolver.d.ts +19 -0
  84. package/dist/kernel/transport/hub-cap-forward.d.ts +22 -1
  85. package/dist/kernel/transport/index.d.ts +2 -2
  86. package/dist/kernel/transport/local-child-registry.d.ts +4 -3
  87. package/dist/logging/log-redactor.d.ts +9 -0
  88. package/dist/platform-key-source-BWlq0jjn.mjs +23 -0
  89. package/dist/platform-key-source-Di7HrlGR.js +40 -0
  90. package/dist/{retired-settings-keys-MaESpO18.js → retired-settings-keys-CDyOGAje.js} +1 -1
  91. package/dist/{retired-settings-keys-CxPOg7BF.mjs → retired-settings-keys-iGcmzwLV.mjs} +1 -1
  92. package/package.json +17 -1
@@ -1,4 +1,4 @@
1
- import { Lt as hfModelUrl, T as HF_REPO, j as MODEL_FORMATS } from "./dist-D732NygW.mjs";
1
+ import { Ft as hfModelUrl, T as HF_REPO, j as MODEL_FORMATS } from "./dist-BWNoS-1S.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-BcUWQGr9.js");
2
+ const require_dist = require("./dist-D_a9mUiM.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);
@@ -15,13 +15,15 @@ function narrowParams(raw) {
15
15
  const deviceId = Reflect.get(raw, "deviceId");
16
16
  const nodeId = Reflect.get(raw, "nodeId");
17
17
  const native = Reflect.get(raw, "native");
18
+ const callerAddonId = Reflect.get(raw, "callerAddonId");
18
19
  return {
19
20
  capName,
20
21
  method,
21
22
  args: Reflect.get(raw, "args"),
22
23
  deviceId: typeof deviceId === "number" ? deviceId : void 0,
23
24
  nodeId: typeof nodeId === "string" && nodeId.length > 0 ? nodeId : void 0,
24
- native: native === true ? true : void 0
25
+ native: native === true ? true : void 0,
26
+ callerAddonId: typeof callerAddonId === "string" && callerAddonId.length > 0 ? callerAddonId : void 0
25
27
  };
26
28
  }
27
29
  /**
@@ -33,18 +35,25 @@ function narrowParams(raw) {
33
35
  * `createParentUnownedCallHandler`). Reused verbatim so
34
36
  * forwarded calls route exactly like a hub-local child's.
35
37
  */
36
- function createHubCapForwardService(onUnownedCall) {
38
+ function createHubCapForwardService(onUnownedCall, options = {}) {
37
39
  return {
38
40
  name: HUB_CAP_FWD_SERVICE,
39
41
  actions: { forward: { handler: async (ctx) => {
40
- const { capName, method, args, deviceId, nodeId, native } = narrowParams(ctx.params);
42
+ const { capName, method, args, deviceId, nodeId, native, callerAddonId } = narrowParams(ctx.params);
43
+ const sender = typeof ctx.nodeID === "string" ? ctx.nodeID : null;
44
+ let caller = callerAddonId;
45
+ if (caller !== void 0 && options.isCallerOnNode !== void 0 && (sender === null || !options.isCallerOnNode(sender, caller))) {
46
+ options.onRejectedCaller?.(sender ?? "(unknown node)", caller);
47
+ caller = void 0;
48
+ }
41
49
  return onUnownedCall({
42
50
  capName,
43
51
  method,
44
52
  args,
45
53
  ...deviceId !== void 0 ? { deviceId } : {},
46
54
  ...nodeId !== void 0 ? { nodeId } : {},
47
- ...native === true ? { native: true } : {}
55
+ ...native === true ? { native: true } : {},
56
+ ...caller !== void 0 ? { callerAddonId: caller } : {}
48
57
  });
49
58
  } } }
50
59
  };
@@ -15,13 +15,15 @@ function narrowParams(raw) {
15
15
  const deviceId = Reflect.get(raw, "deviceId");
16
16
  const nodeId = Reflect.get(raw, "nodeId");
17
17
  const native = Reflect.get(raw, "native");
18
+ const callerAddonId = Reflect.get(raw, "callerAddonId");
18
19
  return {
19
20
  capName,
20
21
  method,
21
22
  args: Reflect.get(raw, "args"),
22
23
  deviceId: typeof deviceId === "number" ? deviceId : void 0,
23
24
  nodeId: typeof nodeId === "string" && nodeId.length > 0 ? nodeId : void 0,
24
- native: native === true ? true : void 0
25
+ native: native === true ? true : void 0,
26
+ callerAddonId: typeof callerAddonId === "string" && callerAddonId.length > 0 ? callerAddonId : void 0
25
27
  };
26
28
  }
27
29
  /**
@@ -33,18 +35,25 @@ function narrowParams(raw) {
33
35
  * `createParentUnownedCallHandler`). Reused verbatim so
34
36
  * forwarded calls route exactly like a hub-local child's.
35
37
  */
36
- function createHubCapForwardService(onUnownedCall) {
38
+ function createHubCapForwardService(onUnownedCall, options = {}) {
37
39
  return {
38
40
  name: HUB_CAP_FWD_SERVICE,
39
41
  actions: { forward: { handler: async (ctx) => {
40
- const { capName, method, args, deviceId, nodeId, native } = narrowParams(ctx.params);
42
+ const { capName, method, args, deviceId, nodeId, native, callerAddonId } = narrowParams(ctx.params);
43
+ const sender = typeof ctx.nodeID === "string" ? ctx.nodeID : null;
44
+ let caller = callerAddonId;
45
+ if (caller !== void 0 && options.isCallerOnNode !== void 0 && (sender === null || !options.isCallerOnNode(sender, caller))) {
46
+ options.onRejectedCaller?.(sender ?? "(unknown node)", caller);
47
+ caller = void 0;
48
+ }
41
49
  return onUnownedCall({
42
50
  capName,
43
51
  method,
44
52
  args,
45
53
  ...deviceId !== void 0 ? { deviceId } : {},
46
54
  ...nodeId !== void 0 ? { nodeId } : {},
47
- ...native === true ? { native: true } : {}
55
+ ...native === true ? { native: true } : {},
56
+ ...caller !== void 0 ? { callerAddonId: caller } : {}
48
57
  });
49
58
  } } }
50
59
  };
package/dist/index.d.ts CHANGED
@@ -80,6 +80,8 @@ export { LifecycleStateMachine } from './lifecycle/lifecycle-state-machine.js';
80
80
  export { formatLogLine } from './logging/formatter.js';
81
81
  export type { ILogDestination } from './logging/log-manager.js';
82
82
  export { LogManager } from './logging/log-manager.js';
83
+ export { isCredentialKeyName, redactLogEntry, redactLogMeta, redactLogText, } from './logging/log-redactor.js';
84
+ export { clearPlatformKeychainKey, getPlatformKeychainKey, type PlatformKeychainKey, setPlatformKeychainKey, } from './builtins/keychain/platform-key-source.js';
83
85
  export type { LogEntry, LogFilter, LogLevel } from './logging/log-ring-buffer.js';
84
86
  export { LogRingBuffer } from './logging/log-ring-buffer.js';
85
87
  export type { LevelBearing } from './logging/logging-gate.js';
package/dist/index.js CHANGED
@@ -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-BcUWQGr9.js");
3
+ const require_dist = require("./dist-D_a9mUiM.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -23,15 +23,16 @@ const require_builtins_native_metrics_native_metrics_addon = require("./builtins
23
23
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
24
24
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtins/sqlite-storage/sqlite-settings.addon.js");
25
25
  const require_builtins_sqlite_storage_index = require("./builtins/sqlite-storage/index.js");
26
- const require_hub_cap_forward = require("./hub-cap-forward-DmHNjbB0.js");
26
+ const require_hub_cap_forward = require("./hub-cap-forward-COCmYaup.js");
27
27
  const require_builtins_storage_orchestrator_storage_orchestrator_addon = require("./builtins/storage-orchestrator/storage-orchestrator.addon.js");
28
28
  require("./builtins/storage-orchestrator/index.js");
29
29
  const require_builtins_system_config_system_config_addon = require("./builtins/system-config/system-config.addon.js");
30
30
  require("./builtins/system-config/index.js");
31
31
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
32
- const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-QX4RjNe7.js");
32
+ const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-DuOn8H1n.js");
33
33
  const require_tls$1 = require("./tls-CCMX7MjX.js");
34
- const require_child_cap_dispatch = require("./child-cap-dispatch-BWtaSmWf.js");
34
+ const require_child_cap_dispatch = require("./child-cap-dispatch-DlDSoqm1.js");
35
+ const require_platform_key_source = require("./platform-key-source-Di7HrlGR.js");
35
36
  const require_resource_monitor = require("./resource-monitor-BgWGRxN5.js");
36
37
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
37
38
  let zod = require("zod");
@@ -1212,7 +1213,7 @@ var LogManager = class {
1212
1213
  }
1213
1214
  createLogger(scope) {
1214
1215
  return new ScopedLogger(scope, (entry) => {
1215
- const enriched = this.enrichDeviceName(entry);
1216
+ const enriched = require_child_cap_dispatch.redactLogEntry(this.enrichDeviceName(entry));
1216
1217
  if (this.isDestinationEnabled?.("log-buffer") !== false) this.ringBuffer.push(enriched);
1217
1218
  if (this.gate.allowsDestination(enriched)) for (const entry of this.destinations) {
1218
1219
  if (entry.addonId !== void 0 && this.isDestinationEnabled?.(entry.addonId) === false) continue;
@@ -7474,6 +7475,10 @@ var INFRA_CAPABILITIES = [
7474
7475
  name: "settings-store",
7475
7476
  required: true
7476
7477
  },
7478
+ {
7479
+ name: "keychain",
7480
+ required: false
7481
+ },
7477
7482
  {
7478
7483
  name: "log-destination",
7479
7484
  required: false
@@ -10335,7 +10340,8 @@ var BOOTSTRAP_OWNED_SECTIONS = new Set([
10335
10340
  "hub",
10336
10341
  "agent",
10337
10342
  "tls",
10338
- "bootstrap"
10343
+ "bootstrap",
10344
+ "keychain"
10339
10345
  ]);
10340
10346
  /** The only keys under a bootstrap-owned section the store may answer. */
10341
10347
  var STORE_READABLE_BOOTSTRAP_KEYS = new Set(["auth.tokenExpiry"]);
@@ -96521,6 +96527,7 @@ exports.classifyAddonDir = classifyAddonDir;
96521
96527
  exports.classifyCapRoute = require_child_cap_dispatch.classifyCapRoute;
96522
96528
  exports.clearHttpsListener = require_tls$1.clearHttpsListener;
96523
96529
  exports.clearPendingRestart = clearPendingRestart;
96530
+ exports.clearPlatformKeychainKey = require_platform_key_source.clearPlatformKeychainKey;
96524
96531
  exports.closeLanHttp = require_tls$1.closeLanHttp;
96525
96532
  exports.clusterEventTopic = require_child_cap_dispatch.clusterEventTopic;
96526
96533
  exports.clusterSecretMatches = clusterSecretMatches;
@@ -96648,6 +96655,7 @@ Object.defineProperty(exports, "getPlatformInfo", {
96648
96655
  return _camstack_types_node.getPlatformInfo;
96649
96656
  }
96650
96657
  });
96658
+ exports.getPlatformKeychainKey = require_platform_key_source.getPlatformKeychainKey;
96651
96659
  Object.defineProperty(exports, "getPythonDownloadUrl", {
96652
96660
  enumerable: true,
96653
96661
  get: function() {
@@ -96684,6 +96692,7 @@ exports.isArrayBufferCensusReport = require_child_cap_dispatch.isArrayBufferCens
96684
96692
  exports.isArrayOutputSchema = require_dist.isArrayOutputSchema;
96685
96693
  exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
96686
96694
  exports.isCollectionArrayMethod = require_dist.isCollectionArrayMethod;
96695
+ exports.isCredentialKeyName = require_child_cap_dispatch.isCredentialKeyName;
96687
96696
  exports.isInfraCapability = isInfraCapability;
96688
96697
  exports.isModelDownloaded = require_event_loop_stall_monitor.isModelDownloaded;
96689
96698
  exports.isSettingsReadUnavailable = require_builtins_local_auth_local_auth_addon.isSettingsReadUnavailable;
@@ -96714,6 +96723,9 @@ exports.readTlsMode = require_tls$1.readTlsMode;
96714
96723
  exports.readinessKey = require_dist.readinessKey;
96715
96724
  exports.reclaimIntervalMs = require_child_cap_dispatch.reclaimIntervalMs;
96716
96725
  exports.recordSocketFrame = require_child_cap_dispatch.recordSocketFrame;
96726
+ exports.redactLogEntry = require_child_cap_dispatch.redactLogEntry;
96727
+ exports.redactLogMeta = require_child_cap_dispatch.redactLogMeta;
96728
+ exports.redactLogText = require_child_cap_dispatch.redactLogText;
96717
96729
  exports.regenerateCertificate = require_tls$1.regenerateCertificate;
96718
96730
  exports.registerEventBusService = require_child_cap_dispatch.registerEventBusService;
96719
96731
  exports.registerHttpsListener = require_tls$1.registerHttpsListener;
@@ -96739,12 +96751,14 @@ exports.serializeTypedArrays = require_child_cap_dispatch.serializeTypedArrays;
96739
96751
  exports.servedHttpsLeafFingerprint = require_tls$1.servedHttpsLeafFingerprint;
96740
96752
  exports.setHubConnected = require_child_cap_dispatch.setHubConnected;
96741
96753
  exports.setNodeEventInterest = require_child_cap_dispatch.setNodeEventInterest;
96754
+ exports.setPlatformKeychainKey = require_platform_key_source.setPlatformKeychainKey;
96742
96755
  exports.setWrapperActive = require_builtins_device_manager_device_manager_addon.setWrapperActive;
96743
96756
  exports.shouldReclaim = require_child_cap_dispatch.shouldReclaim;
96744
96757
  exports.signalAllRunnerGroups = require_child_cap_dispatch.signalAllRunnerGroups;
96745
96758
  exports.socketDirectionBytes = require_child_cap_dispatch.socketDirectionBytes;
96746
96759
  exports.socketDirectionMessages = require_child_cap_dispatch.socketDirectionMessages;
96747
96760
  exports.splitPemCertificates = require_tls$1.splitPemCertificates;
96761
+ exports.stampCallerAddonId = require_child_cap_dispatch.stampCallerAddonId;
96748
96762
  exports.startEventLoopStallMonitor = require_event_loop_stall_monitor.startEventLoopStallMonitor;
96749
96763
  exports.startHeapWatch = require_child_cap_dispatch.startHeapWatch;
96750
96764
  exports.startRunnerHeapWatch = require_child_cap_dispatch.startRunnerHeapWatch;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { $t as looseSchema, Ar as resolveCapMount, Bt as isCollectionArrayMethod, Dn as scopesAllowAddon, Dr as parseJsonObject, E as LOG_LEVEL_RANK, F as RUNTIME_DEFAULTS, Gt as kebabToCamel, Jt as lifecycleJobSchema, K as addonSettingsCapability, Mt as extractNestedAddonId, On as scopesAllowDeviceCap, Or as parseJsonUnknown, Pr as EventCategory$1, Qt as logLevelAtMost, Sr as expandCapMethods, Ut as isObjectInput, Wt as isVoidInput, _r as asString$1, br as emitDownForOwnedCaps, cn as objectInputDeclaresAddonId, dr as DEVICE_STATUS_METHOD, fr as ReadinessRegistry, gr as asNumber, hr as asJsonObject$1, jr as scopeKey, k as METHOD_ACCESS_MAP, kr as readinessKey, ln as objectInputDeclaresRequiredDeviceId, lr as DATAPLANE_SECRET_HEADER$1, mn as procedureAuthKey, pr as ReadinessTimeoutError, sr as errMsg$1, t as ALL_CAPABILITY_DEFINITIONS, ur as DEVICE_SETTINGS_CONTRIBUTION_METHODS, wn as resolveMethodAuth, yr as createEvent, zt as isArrayOutputSchema } from "./dist-D732NygW.mjs";
2
+ import { $t as looseSchema, At as extractNestedAddonId, Cr as emitDownForOwnedCaps, E as LOG_LEVEL_RANK, G as addonSettingsCapability, Gr as EventCategory$1, Ht as isVoidInput, Ir as readinessKey, Jt as lifecycleJobSchema, Lr as resolveCapMount, Lt as isArrayOutputSchema, Nr as parseJsonObject, On as scopesAllowAddon, P as RUNTIME_DEFAULTS, Pr as parseJsonUnknown, Qt as logLevelAtMost, Rt as isCollectionArrayMethod, Sr as createEvent, Tn as resolveMethodAuth, Tr as expandCapMethods, Ut as kebabToCamel, Vt as isObjectInput, _r as asJsonObject$1, cr as errMsg$1, dr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, fr as DEVICE_STATUS_METHOD, hn as procedureAuthKey, hr as ReadinessTimeoutError, k as METHOD_ACCESS_MAP, kn as scopesAllowDeviceCap, ln as objectInputDeclaresAddonId, mr as ReadinessRegistry, t as ALL_CAPABILITY_DEFINITIONS, un as objectInputDeclaresRequiredDeviceId, ur as DATAPLANE_SECRET_HEADER$1, vr as asNumber, yr as asString$1, zr as scopeKey } from "./dist-BWNoS-1S.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -22,15 +22,16 @@ import NativeMetricsAddon, { t as NativeMetricsProvider } from "./builtins/nativ
22
22
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
23
23
  import { SqliteSettingsAddon, o as SqliteSettingsBackend, s as prefixRange } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
24
24
  import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
25
- import { n as HUB_CAP_FWD_SERVICE, r as createHubCapForwardService, t as HUB_CAP_FWD_ACTION } from "./hub-cap-forward-BdT320dq.mjs";
25
+ import { n as HUB_CAP_FWD_SERVICE, r as createHubCapForwardService, t as HUB_CAP_FWD_ACTION } from "./hub-cap-forward-CH6_VWVO.mjs";
26
26
  import { StorageOrchestratorAddon, n as buildStorageLocationRegistry, t as StorageOrchestratorService } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
27
27
  import "./builtins/storage-orchestrator/index.mjs";
28
28
  import { SystemConfigAddon } from "./builtins/system-config/system-config.addon.mjs";
29
29
  import "./builtins/system-config/index.mjs";
30
30
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
31
- 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-8W4yWNVW.mjs";
31
+ 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-ClPhfx7Y.mjs";
32
32
  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-CJHogwTl.mjs";
33
- import { $ as CapRouteError, $n as EMPTY_CAP_ACTION_READING, $t as RUNNER_RSS_BUDGET_ENV, A as resolveHwAccel, An as OUTBOUND_QUEUE_SUSTAIN_MS, At as DeviceRegistry, B as udsChildLogToWorkerEntry, Bn as createSocketPlaneMeter, Bt as hostNodeIdOf, C as getBrokerEventBus, Cn as HEAP_SPACE_REPORT_MIN_MB, Ct as capActionName, D as subscribePassthrough, Dn as readHeapSpaces, Dt as parseCapAction, E as setNodeEventInterest, En as heapSpaceField, Et as capServiceName, F as ipcParentLink, Fn as createMeshQueueReader, Ft as resolveAddonClass, G as UDS_NO_ROUTE_PREFIX, Gn as EMPTY_SOCKET_DIRECTION, Gt as HEAP_WATCH_INTERVAL_MS, H as createUdsLoggerWithControl, Hn as diffSocketPlane, Ht as HEAP_RECLAIM_MIN_INTERVAL_MS, I as localProviderLink, In as formatMeshQueue, It as buildNpmChildEnv, J as answerClaimedGetStatus, Jn as sampleSocketDirection, Jt as HUB_MAIN_RSS_BUDGET_MB, K as afterWorkerOnlineAnnounce, Kn as createSocketDirectionCounters, Kt as HEAP_WATCH_WARN_RATIO, L as createParentUnownedCallHandler, Ln as EMPTY_SOCKET_PLANE_BASELINE, Lt as resolveNpmInvocation, M as brokerTransportLink, Mn as createOutboundQueueGate, Mt as CapabilityUnavailableError, N as buildLinkChain, Nn as formatOutboundQueueVerdict, Nt as copyBundledNativeModules, O as AddonDepsManager, On as selectReportedSpaces, Ot as deserializeTypedArrays, P as deviceCapResolverLink, Pn as MESH_QUEUE_TOP_N, Pt as installManifestNativeDeps, Q as CapRouteResolver, Qn as CAP_ACTION_UNLABELLED, Qt as RUNNER_HEAP_WATCH_INTERVAL_MS, R as createUdsEventBridge, Rn as SOCKET_PLANE_TOP_N, Rt as runNpm, S as clusterEventTopic, Sn as DECISIVE_HEAP_SPACES, St as NATIVE_PROVIDER_SERVICE_INFIX, T as registerEventBusService, Tn as formatHeapSpaces, Tt as capBareAction, U as LocalChildClient, Un as formatSocketPlane, Ut as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneReader, Vt as createAddonDataPlaneFacility, W as LocalChildRegistry, Wn as readSocketQueues, Wt as HEAP_RECLAIM_TRIGGER_MB, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionMessages, Xt as RSS_BUDGET_REANNOUNCE_MIN_MS, Y as deviceOfGetStatus, Yn as socketDirectionBytes, Yt as HUB_RSS_BUDGET_ENV, Z as AGENT_CAP_FWD_SERVICE, Zn as CAP_ACTION_OVERFLOW_LABEL, Zt as RSS_BUDGET_RELEASE_RATIO, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, a as reapProcessGroup, an as describeRss, ar as createEventPlaneMeter, at as getCapUsageRegistry, b as setHubConnected, bn as formatArrayBufferCensus, bt as createAddonService, c as runnerOwnsProcessGroup, cn as parseRssBudgetMb, cr as formatEventPlane, ct as UdsLocalTransportServer, d as summarizeMembers, dn as startHeapWatch, dt as localEndpointPath, en as ZERO_LOOP_DELAY, er as MAX_CAP_ACTIONS_PER_PEER, et as classifyCapRoute, f as installManifestSystemDeps, fn as startRunnerHeapWatch, ft as FrameDecoder, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ht as createBrokerDeviceManagerApi, in as createV8Reclaimer, ir as EVENT_PLANE_TOP_N, it as __resetCapUsageRegistryForTests, j as brokerCallForCap, jn as OUTBOUND_QUEUE_THRESHOLD_BYTES, jt as CapabilityHandle, k as createKernelHwAccel, kn as OUTBOUND_QUEUE_COOLDOWN_MS, kt as serializeTypedArrays, l as signalAllRunnerGroups, ln as reclaimIntervalMs, lt as SocketChannel, m as adaptBrokerToCluster, mn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, mt as buildNativeCapProxy, nn as createDeferredHeapWatchSink, nr as createCapActionCensus, nt as CapUsageRegistry, o as registerRunnerGroup, on as hubMainRssBudget, or as createEventPlaneReader, ot as createLocalTransport, p as installManifestPythonDeps, pn as strandedMb, pt as encodeFrame, q as GET_STATUS_METHOD, qn as recordSocketFrame, qt as HUB_MAIN_HEAP_WATCH_LABEL, r as defaultProcessGroupOps, rn as createLoopDelayMeter, rr as diffCapActionCensus, rt as PARENT_ROUTED_PROVIDER_ADDON_ID, s as releaseRunnerGroup, sn as nextRssBudgetState, sr as diffEventPlane, st as UdsLocalTransportClient, t as CAP_METHOD_NOT_IMPLEMENTED, tn as buildHeapSample, tr as capActionLabel, tt as callWithServiceDiscovery, un as shouldReclaim, ut as PeerAnsweredError, v as getOrInitReadinessRegistry, vn as createArrayBufferCensusGate, vt as mountNativeCapService, w as getMoleculerEventStats, wn as emitHeapDiagnosticReport, wt as capActionSuffix, x as EVENT_TOPIC_PREFIX, xn as isArrayBufferCensusReport, xt as validateProviderRegistrations, y as getOrInitReadinessRegistryForClient, yn as createInspectorArrayBufferCensus, z as createUdsEventBus, zn as SOCKET_QUEUE_TOP_N, zt as createAddonPeerBytesFacility } from "./child-cap-dispatch-8qMgog1O.mjs";
33
+ import { $ as stampCallerAddonId, $n as sampleSocketDirection, $t as HUB_MAIN_RSS_BUDGET_MB, A as resolveHwAccel, An as formatHeapSpaces, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as createMeshQueueReader, Bt as isCredentialKeyName, C as getBrokerEventBus, Cn as createArrayBufferCensusGate, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as DECISIVE_HEAP_SPACES, Dt as capServiceName, E as setNodeEventInterest, En as isArrayBufferCensusReport, Et as capBareAction, F as ipcParentLink, Fn as OUTBOUND_QUEUE_SUSTAIN_MS, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as createSocketPlaneMeter, Gt as hostNodeIdOf, H as createUdsLoggerWithControl, Hn as EMPTY_SOCKET_PLANE_BASELINE, Ht as redactLogMeta, I as localProviderLink, In as OUTBOUND_QUEUE_THRESHOLD_BYTES, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as formatSocketPlane, Jt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, K as afterWorkerOnlineAnnounce, Kn as createSocketPlaneReader, Kt as createAddonDataPlaneFacility, L as createParentUnownedCallHandler, Ln as createOutboundQueueGate, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as readHeapSpaces, Mt as CapabilityHandle, N as buildLinkChain, Nn as selectReportedSpaces, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as HEAP_SPACE_REPORT_MIN_MB, Ot as parseCapAction, P as deviceCapResolverLink, Pn as OUTBOUND_QUEUE_COOLDOWN_MS, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as recordSocketFrame, Qt as HUB_MAIN_HEAP_WATCH_LABEL, R as createUdsEventBridge, Rn as formatOutboundQueueVerdict, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, St as validateProviderRegistrations, T as registerEventBusService, Tn as formatArrayBufferCensus, Tt as capActionSuffix, U as LocalChildClient, Un as SOCKET_PLANE_TOP_N, Ut as redactLogText, V as createUdsLogger, Vn as formatMeshQueue, Vt as redactLogEntry, W as LocalChildRegistry, Wn as SOCKET_QUEUE_TOP_N, Wt as createAddonPeerBytesFacility, X as AGENT_CAP_FWD_ACTION, Xn as EMPTY_SOCKET_DIRECTION, Xt as HEAP_WATCH_INTERVAL_MS, Y as deviceOfGetStatus, Yn as readSocketQueues, Yt as HEAP_RECLAIM_TRIGGER_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as createSocketDirectionCounters, Zt as HEAP_WATCH_WARN_RATIO, _ as getWorkerDeviceRegistry, _n as startRunnerHeapWatch, a as reapProcessGroup, an as ZERO_LOOP_DELAY, ar as MAX_CAP_ACTIONS_PER_PEER, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, c as runnerOwnsProcessGroup, cn as createLoopDelayMeter, cr as diffCapActionCensus, ct as UdsLocalTransportClient, d as summarizeMembers, dn as hubMainRssBudget, dr as createEventPlaneReader, dt as PeerAnsweredError, en as HUB_RSS_BUDGET_ENV, er as socketDirectionBytes, et as CapRouteError, f as installManifestSystemDeps, fn as nextRssBudgetState, fr as diffEventPlane, ft as localEndpointPath, g as createUdsAddonContext, gn as startHeapWatch, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as shouldReclaim, ht as buildNativeCapProxy, in as RUNNER_RSS_BUDGET_ENV, ir as EMPTY_CAP_ACTION_READING, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as heapSpaceField, jt as DeviceRegistry, k as createKernelHwAccel, kn as emitHeapDiagnosticReport, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as createV8Reclaimer, lr as EVENT_PLANE_TOP_N, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as reclaimIntervalMs, mt as encodeFrame, nn as RSS_BUDGET_RELEASE_RATIO, nr as CAP_ACTION_OVERFLOW_LABEL, nt as callWithServiceDiscovery, o as registerRunnerGroup, on as buildHeapSample, or as capActionLabel, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as parseRssBudgetMb, pr as formatEventPlane, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as diffSocketPlane, qt as HEAP_RECLAIM_MIN_INTERVAL_MS, r as defaultProcessGroupOps, rn as RUNNER_HEAP_WATCH_INTERVAL_MS, rr as CAP_ACTION_UNLABELLED, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as createDeferredHeapWatchSink, sr as createCapActionCensus, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as RSS_BUDGET_REANNOUNCE_MIN_MS, tr as socketDirectionMessages, tt as classifyCapRoute, un as describeRss, ur as createEventPlaneMeter, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as strandedMb, w as getMoleculerEventStats, wn as createInspectorArrayBufferCensus, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, yt as mountNativeCapService, z as createUdsEventBus, zn as MESH_QUEUE_TOP_N, zt as runNpm } from "./child-cap-dispatch-CgmOo0yl.mjs";
34
+ import { n as getPlatformKeychainKey, r as setPlatformKeychainKey, t as clearPlatformKeychainKey } from "./platform-key-source-BWlq0jjn.mjs";
34
35
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B2WZ8_q9.mjs";
35
36
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
36
37
  import { z } from "zod";
@@ -1205,7 +1206,7 @@ var LogManager = class {
1205
1206
  }
1206
1207
  createLogger(scope) {
1207
1208
  return new ScopedLogger(scope, (entry) => {
1208
- const enriched = this.enrichDeviceName(entry);
1209
+ const enriched = redactLogEntry(this.enrichDeviceName(entry));
1209
1210
  if (this.isDestinationEnabled?.("log-buffer") !== false) this.ringBuffer.push(enriched);
1210
1211
  if (this.gate.allowsDestination(enriched)) for (const entry of this.destinations) {
1211
1212
  if (entry.addonId !== void 0 && this.isDestinationEnabled?.(entry.addonId) === false) continue;
@@ -7467,6 +7468,10 @@ var INFRA_CAPABILITIES = [
7467
7468
  name: "settings-store",
7468
7469
  required: true
7469
7470
  },
7471
+ {
7472
+ name: "keychain",
7473
+ required: false
7474
+ },
7470
7475
  {
7471
7476
  name: "log-destination",
7472
7477
  required: false
@@ -10328,7 +10333,8 @@ var BOOTSTRAP_OWNED_SECTIONS = new Set([
10328
10333
  "hub",
10329
10334
  "agent",
10330
10335
  "tls",
10331
- "bootstrap"
10336
+ "bootstrap",
10337
+ "keychain"
10332
10338
  ]);
10333
10339
  /** The only keys under a bootstrap-owned section the store may answer. */
10334
10340
  var STORE_READABLE_BOOTSTRAP_KEYS = new Set(["auth.tokenExpiry"]);
@@ -96310,4 +96316,4 @@ var LifecycleJobEngine = class {
96310
96316
  }
96311
96317
  };
96312
96318
  //#endregion
96313
- export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CAP_METHOD_NOT_IMPLEMENTED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CalendarsAddon, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ComposerAddon, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, GET_STATUS_METHOD, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_QUEUE_TOP_N, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PeerAnsweredError, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, STORE_READABLE_BOOTSTRAP_KEYS, ScopedLogger, ScopedTokenManager, SettingsReadUnavailableError, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UNCLAIMED, UPLOADED_CA_FILE, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, adoptModelRevisions, afterWorkerOnlineAnnounce, allFamiliesListenHost, answerClaimedGetStatus, applyCertificateToListener, applyLanHttp, attributeStall, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, classifyAddonDir, classifyCapRoute, clearHttpsListener, clearPendingRestart, closeLanHttp, clusterEventTopic, clusterSecretMatches, collectCertIdentity, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonPeerBytesFacility, createAddonService, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCoreCapService, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createLocalTransport, createLoopDelayMeter, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, deviceOfGetStatus, diffCapActionCensus, diffEventPlane, diffSocketPlane, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, emitHeapDiagnosticReport, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, fetchJson, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, heapSpaceField, hostNodeIdOf, hubMainRssBudget, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcParentLink, isAddonDeploySource, isArrayBufferCensusReport, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSettingsReadUnavailable, isSourceNewer, isolatedBuiltinPhase, leafFingerprintOf, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, overlayGetStatus, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, prepareBootTls, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, regenerateCertificate, registerEventBusService, registerHttpsListener, registerLanHttpHandler, reissueTlsLeaf, reloadHttpsListener, resolveFilePath, resolveFormatRevision, resolveHwAccel, resolveNpmInvocation, revertToGeneratedCertificate, revisionWeightUrl, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, servedHttpsLeafFingerprint, setHubConnected, setNodeEventInterest, setWrapperActive, shouldReclaim, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, splitPemCertificates, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, storeMayAnswer, storeUploadedCertificate, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
96319
+ export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CAP_METHOD_NOT_IMPLEMENTED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CalendarsAddon, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ComposerAddon, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, GET_STATUS_METHOD, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_QUEUE_TOP_N, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PeerAnsweredError, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, STORE_READABLE_BOOTSTRAP_KEYS, ScopedLogger, ScopedTokenManager, SettingsReadUnavailableError, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UNCLAIMED, UPLOADED_CA_FILE, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, adoptModelRevisions, afterWorkerOnlineAnnounce, allFamiliesListenHost, answerClaimedGetStatus, applyCertificateToListener, applyLanHttp, attributeStall, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, classifyAddonDir, classifyCapRoute, clearHttpsListener, clearPendingRestart, clearPlatformKeychainKey, closeLanHttp, clusterEventTopic, clusterSecretMatches, collectCertIdentity, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonPeerBytesFacility, createAddonService, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCoreCapService, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createLocalTransport, createLoopDelayMeter, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, deviceOfGetStatus, diffCapActionCensus, diffEventPlane, diffSocketPlane, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, emitHeapDiagnosticReport, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, fetchJson, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPlatformKeychainKey, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, heapSpaceField, hostNodeIdOf, hubMainRssBudget, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcParentLink, isAddonDeploySource, isArrayBufferCensusReport, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isCredentialKeyName, isInfraCapability, isModelDownloaded, isSettingsReadUnavailable, isSourceNewer, isolatedBuiltinPhase, leafFingerprintOf, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, overlayGetStatus, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, prepareBootTls, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, redactLogEntry, redactLogMeta, redactLogText, regenerateCertificate, registerEventBusService, registerHttpsListener, registerLanHttpHandler, reissueTlsLeaf, reloadHttpsListener, resolveFilePath, resolveFormatRevision, resolveHwAccel, resolveNpmInvocation, revertToGeneratedCertificate, revisionWeightUrl, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, servedHttpsLeafFingerprint, setHubConnected, setNodeEventInterest, setPlatformKeychainKey, setWrapperActive, shouldReclaim, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, splitPemCertificates, stampCallerAddonId, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, storeMayAnswer, storeUploadedCertificate, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
@@ -45,6 +45,10 @@ export declare const bootstrapSchema: z.ZodObject<{
45
45
  requiredAddons: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
46
  forceDisable: z.ZodDefault<z.ZodArray<z.ZodString>>;
47
47
  }, z.core.$strip>>;
48
+ keychain: z.ZodDefault<z.ZodObject<{
49
+ keyFile: z.ZodOptional<z.ZodString>;
50
+ previousKeyFile: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$strip>>;
48
52
  }, z.core.$strip>;
49
53
  export type BootstrapConfig = z.infer<typeof bootstrapSchema>;
50
54
  /**
@@ -31,6 +31,12 @@ export interface ChildAddonCallDispatchDeps {
31
31
  /** Resolve an addon's live HTTP data-plane endpoints (published by its
32
32
  * `ctx.dataPlane` facility). Empty when the addon serves no data-plane. */
33
33
  getDataPlanes: (addonId: string) => readonly AddonDataPlaneEndpoint[];
34
+ /**
35
+ * Swap the secret VIEWS a form sent as action input for their values,
36
+ * through the owner addon's own `ctx.secrets` (D789). Absent → the input is
37
+ * parsed as it arrived.
38
+ */
39
+ resolveSecretViews?: (addonId: string, args: unknown) => Promise<unknown>;
34
40
  }
35
41
  /**
36
42
  * Creates the addon-level dispatcher the addon-runner wires to
@@ -148,6 +148,25 @@ export declare function extractDeviceId(args: unknown): number | undefined;
148
148
  * `getEngineProvisioning({nodeId})`) still receive it unchanged.
149
149
  */
150
150
  export declare function extractNodeId(args: unknown): string | undefined;
151
+ /**
152
+ * Stamp the CALLER identity into a cap call's args — the SAME "provider
153
+ * destructures what it needs and ignores the rest" convention
154
+ * {@link extractNodeId} already relies on for the inline `nodeId` pin.
155
+ *
156
+ * The stamp is the transport's, never the caller's (D787):
157
+ * - a stamp (`callerAddonId` known to the transport) OVERWRITES whatever the
158
+ * args carry under that key;
159
+ * - NO stamp STRIPS the key: a call that crossed a wire with no identity the
160
+ * transport can vouch for must not arrive carrying a claimed one. The
161
+ * keychain owner-checks on this field, and until 2026-10-08 an unstamped
162
+ * call let a child's own `callerAddonId` through untouched.
163
+ *
164
+ * A hub in-process caller never reaches this function (`localProviderLink`
165
+ * calls the provider directly), which is the one place a stated identity is
166
+ * trusted. A non-object `args` (or `null`/array) is returned unchanged: there
167
+ * is nowhere to attach a key, and nowhere one could hide.
168
+ */
169
+ export declare function stampCallerAddonId(args: unknown, callerAddonId: string | undefined): unknown;
151
170
  export declare class CapRouteResolver {
152
171
  private readonly hubNodeId;
153
172
  private readonly broker;
@@ -24,6 +24,27 @@ export interface HubCapForwardParams {
24
24
  * trying to skip.
25
25
  */
26
26
  readonly native?: boolean;
27
+ /**
28
+ * The ORIGINATING addon, stamped by the AGENT's `LocalChildRegistry` off the
29
+ * child connection the call arrived on (D787) — the agent-side equivalent of
30
+ * what the hub's own registry stamps for a hub-local child. The hub trusts it
31
+ * because the agent node is authenticated by the cluster secret, and checks
32
+ * it against the node the request came from ({@link HubCapForwardOptions}).
33
+ * Absent → the call is anonymous, and an owner-checked cap refuses it.
34
+ */
35
+ readonly callerAddonId?: string;
36
+ }
37
+ /** How the hub decides whether an agent's caller stamp is believable. */
38
+ export interface HubCapForwardOptions {
39
+ /**
40
+ * Is `callerAddonId` (a runner id) actually running on `nodeId`, the agent
41
+ * this request came from? A stamp that fails the check is DROPPED — the call
42
+ * proceeds anonymous, it is not refused here. Omitted → stamps are trusted
43
+ * as the cluster secret already authenticates the node.
44
+ */
45
+ readonly isCallerOnNode?: (nodeId: string, callerAddonId: string) => boolean;
46
+ /** Told about a dropped stamp — a misrouted or lying runner deserves a line. */
47
+ readonly onRejectedCaller?: (nodeId: string, callerAddonId: string) => void;
27
48
  }
28
49
  /**
29
50
  * Handler that routes an agent-originated cap call through the hub's own
@@ -39,4 +60,4 @@ export type HubUnownedCallHandler = (input: CapCallInput) => Promise<unknown>;
39
60
  * `createParentUnownedCallHandler`). Reused verbatim so
40
61
  * forwarded calls route exactly like a hub-local child's.
41
62
  */
42
- export declare function createHubCapForwardService(onUnownedCall: HubUnownedCallHandler): ServiceSchema;
63
+ export declare function createHubCapForwardService(onUnownedCall: HubUnownedCallHandler, options?: HubCapForwardOptions): ServiceSchema;
@@ -16,7 +16,7 @@ export type { LocalChildClientOptions, AddonCallHandler } from './local-child-cl
16
16
  export { LocalChildClient } from './local-child-client.js';
17
17
  export type { CapRoute, CapRouteBase, CapRouteOpts, HubInProcessRoute, HubLocalUdsRoute, RemoteMoleculerRoute, AgentChildForwardRoute, CapInvoker, InProcessProviderRef, CapRouteReason, RejectedRoute, CapRouteErrorDetail, } from './cap-route.js';
18
18
  export { CapRouteError, classifyCapRoute } from './cap-route.js';
19
- export { CapRouteResolver, AGENT_CAP_FWD_SERVICE, AGENT_CAP_FWD_ACTION, } from './cap-route-resolver.js';
19
+ export { CapRouteResolver, AGENT_CAP_FWD_SERVICE, AGENT_CAP_FWD_ACTION, stampCallerAddonId, } from './cap-route-resolver.js';
20
20
  export type { NodeCapAuthority, InProcessProviderLookup, CapRouteResolverDeps, AgentCapForwardParams, HubLocalChildDispatcher, } from './cap-route-resolver.js';
21
21
  export { NATIVE_PROVIDER_SERVICE_INFIX, capServiceName, capActionName, capActionSuffix, capBareAction, parseCapAction, } from './cap-action-name.js';
22
22
  export type { ParsedCapAction } from './cap-action-name.js';
@@ -33,4 +33,4 @@ export { answerClaimedGetStatus, deviceOfGetStatus, GET_STATUS_METHOD, } from '.
33
33
  export type { ClaimedGetStatusAnswer, ClaimedGetStatusCall } from './claimed-get-status.js';
34
34
  export type { ParentUnownedCallDeps, ParentUnownedCallLogger } from './parent-unowned-call.js';
35
35
  export { createHubCapForwardService, HUB_CAP_FWD_SERVICE, HUB_CAP_FWD_ACTION, } from './hub-cap-forward.js';
36
- export type { HubCapForwardParams, HubUnownedCallHandler } from './hub-cap-forward.js';
36
+ export type { HubCapForwardOptions, HubCapForwardParams, HubUnownedCallHandler, } from './hub-cap-forward.js';
@@ -273,9 +273,10 @@ export interface LocalChildRegistryOptions {
273
273
  * `ml` execution groups have co-located providers at all (D9, D29).
274
274
  * 3. **An agent's own runners.** Their parent is the agent process, whose
275
275
  * `LocalChildRegistry` writes to the agent's singleton. Aggregating that
276
- * needs a transport hop; `$hub-cap-fwd`'s envelope carries no
277
- * `callerAddonId` today, so an agent-originated call reaching the hub is
278
- * recorded with no caller at all — i.e. not recorded.
276
+ * needs a transport hop. `$hub-cap-fwd`'s envelope has carried the
277
+ * agent-stamped `callerAddonId` since D787 (the keychain owner-checks
278
+ * it), but the hub does not feed it to this observer — an
279
+ * agent-originated call is still not recorded here.
279
280
  *
280
281
  * MUST NOT throw; the call site catches anyway (see the record site).
281
282
  */
@@ -0,0 +1,9 @@
1
+ import { LogEntry } from '@camstack/types';
2
+ /** True when a meta key names a credential. */
3
+ export declare function isCredentialKeyName(key: string): boolean;
4
+ /** Redact one free-form string. */
5
+ export declare function redactLogText(text: string): string;
6
+ /** Redact a `meta` record; the same object back when it was already clean. */
7
+ export declare function redactLogMeta(meta: Record<string, unknown>): Record<string, unknown>;
8
+ /** Redact a whole entry: message and meta. Tags are identifiers, left alone. */
9
+ export declare function redactLogEntry(entry: LogEntry): LogEntry;
@@ -0,0 +1,23 @@
1
+ //#region src/builtins/keychain/platform-key-source.ts
2
+ var SLOT = Symbol.for("camstack.keychain.platform-key");
3
+ /** Register the platform key. Called once, by the hub's boot. */
4
+ function setPlatformKeychainKey(entry) {
5
+ Reflect.set(globalThis, SLOT, entry);
6
+ }
7
+ /** Drop the platform key (tests). */
8
+ function clearPlatformKeychainKey() {
9
+ Reflect.deleteProperty(globalThis, SLOT);
10
+ }
11
+ function isPlatformKey(value) {
12
+ if (value === null || typeof value !== "object") return false;
13
+ const label = Reflect.get(value, "label");
14
+ const key = Reflect.get(value, "key");
15
+ return typeof label === "string" && Buffer.isBuffer(key);
16
+ }
17
+ /** The platform key, when this hub was started by the desktop app with one. */
18
+ function getPlatformKeychainKey() {
19
+ const value = Reflect.get(globalThis, SLOT);
20
+ return isPlatformKey(value) ? value : null;
21
+ }
22
+ //#endregion
23
+ export { getPlatformKeychainKey as n, setPlatformKeychainKey as r, clearPlatformKeychainKey as t };
@@ -0,0 +1,40 @@
1
+ //#region src/builtins/keychain/platform-key-source.ts
2
+ var SLOT = Symbol.for("camstack.keychain.platform-key");
3
+ /** Register the platform key. Called once, by the hub's boot. */
4
+ function setPlatformKeychainKey(entry) {
5
+ Reflect.set(globalThis, SLOT, entry);
6
+ }
7
+ /** Drop the platform key (tests). */
8
+ function clearPlatformKeychainKey() {
9
+ Reflect.deleteProperty(globalThis, SLOT);
10
+ }
11
+ function isPlatformKey(value) {
12
+ if (value === null || typeof value !== "object") return false;
13
+ const label = Reflect.get(value, "label");
14
+ const key = Reflect.get(value, "key");
15
+ return typeof label === "string" && Buffer.isBuffer(key);
16
+ }
17
+ /** The platform key, when this hub was started by the desktop app with one. */
18
+ function getPlatformKeychainKey() {
19
+ const value = Reflect.get(globalThis, SLOT);
20
+ return isPlatformKey(value) ? value : null;
21
+ }
22
+ //#endregion
23
+ Object.defineProperty(exports, "clearPlatformKeychainKey", {
24
+ enumerable: true,
25
+ get: function() {
26
+ return clearPlatformKeychainKey;
27
+ }
28
+ });
29
+ Object.defineProperty(exports, "getPlatformKeychainKey", {
30
+ enumerable: true,
31
+ get: function() {
32
+ return getPlatformKeychainKey;
33
+ }
34
+ });
35
+ Object.defineProperty(exports, "setPlatformKeychainKey", {
36
+ enumerable: true,
37
+ get: function() {
38
+ return setPlatformKeychainKey;
39
+ }
40
+ });
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-BcUWQGr9.js");
1
+ const require_dist = require("./dist-D_a9mUiM.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?
@@ -1,4 +1,4 @@
1
- import { hr as asJsonObject } from "./dist-D732NygW.mjs";
1
+ import { _r as asJsonObject } from "./dist-BWNoS-1S.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?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.376",
3
+ "version": "1.2.377",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",
@@ -162,6 +162,22 @@
162
162
  }
163
163
  ]
164
164
  },
165
+ {
166
+ "id": "keychain",
167
+ "category": "system",
168
+ "name": "Keychain",
169
+ "description": "Hub-only store of every secret value. Settings blobs hold a marker; the value lives here, AES-256-GCM under a data key wrapped by a master key whose location is configuration (config.yaml `keychain.keyFile`, the desktop OS keychain, else the data-dir default). Registers `keychain` (internal, owner-checked against the transport-stamped caller) and `keychain-admin` (System → Secrets). Boots in the infrastructure pass, right after the settings door.",
170
+ "entry": "./dist/builtins/keychain/index.js",
171
+ "protected": true,
172
+ "capabilities": [
173
+ {
174
+ "name": "keychain"
175
+ },
176
+ {
177
+ "name": "keychain-admin"
178
+ }
179
+ ]
180
+ },
165
181
  {
166
182
  "id": "metrics-native",
167
183
  "category": "system",