@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,7 +1,7 @@
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
  const require_proc_stat = require("./proc-stat-DL-WUOhl.js");
4
- require("./hub-cap-forward-DmHNjbB0.js");
4
+ require("./hub-cap-forward-COCmYaup.js");
5
5
  let node_crypto = require("node:crypto");
6
6
  node_crypto = require_chunk.__toESM(node_crypto);
7
7
  let _camstack_types_node = require("@camstack/types/node");
@@ -3178,6 +3178,118 @@ function createAddonPeerBytesFacility(args) {
3178
3178
  };
3179
3179
  }
3180
3180
  //#endregion
3181
+ //#region src/logging/log-redactor.ts
3182
+ /**
3183
+ * The central log redactor (D787 §8). Every line passes through it before any
3184
+ * destination, ring buffer or subscriber sees it — in hub-main's `LogManager`,
3185
+ * in a forked runner's UDS logger (which alone knows the values that runner
3186
+ * resolved), and on an agent before a child's line is forwarded to the hub.
3187
+ *
3188
+ * Three nets, cheapest first:
3189
+ * 1. KNOWN VALUES — every secret this process resolved through `ctx.secrets`
3190
+ * is replaced wherever it appears (`‹secret:<ref hash>›`). The only net
3191
+ * that catches a value inside a library's error message.
3192
+ * 2. URL CREDENTIALS — `user:pass@` and credential query params in any URL
3193
+ * inside a string (`maskUrlCredentials`), and the value after a
3194
+ * credential-looking CLI flag (`--token X`, `--auth-key=X`).
3195
+ * 3. KEY NAMES — a `meta` value under a credential-named key, at any depth.
3196
+ *
3197
+ * Key names are a LOG heuristic only: whether a field is STORED in the
3198
+ * keychain is decided by its schema type, never by its name.
3199
+ *
3200
+ * Hot path: a line with no meta, no `://`, no `--` and no registered values
3201
+ * costs a few `includes` checks.
3202
+ */
3203
+ var REDACTED = "***";
3204
+ /** Credential-named keys. Substring, case-insensitive; only STRING values are replaced. */
3205
+ var SECRET_KEY_SUBSTRINGS = [
3206
+ "password",
3207
+ "passwd",
3208
+ "secret",
3209
+ "token",
3210
+ "apikey",
3211
+ "api_key",
3212
+ "authkey",
3213
+ "auth_key",
3214
+ "privatekey",
3215
+ "private_key",
3216
+ "passphrase",
3217
+ "credential",
3218
+ "cookie"
3219
+ ];
3220
+ /** True when a meta key names a credential. */
3221
+ function isCredentialKeyName(key) {
3222
+ const lower = key.toLowerCase();
3223
+ return SECRET_KEY_SUBSTRINGS.some((needle) => lower.includes(needle));
3224
+ }
3225
+ var URL_IN_TEXT = /\b[a-z][a-z0-9+.-]*:\/\/[^\s"'<>`]+/gi;
3226
+ var CREDENTIAL_FLAG = /(--(?:token|auth-?key|password|passwd|pass|secret|api-?key|access-?token|refresh-?token)(?:=|\s+))(\S+)/gi;
3227
+ /** Redact one free-form string. */
3228
+ function redactLogText(text) {
3229
+ let out = require_dist.scrubKnownSecrets(text);
3230
+ if (out.includes("://")) out = out.replace(URL_IN_TEXT, (url) => require_dist.maskUrlCredentials(url));
3231
+ if (out.includes("--")) out = out.replace(CREDENTIAL_FLAG, (_m, flag, value) => value.startsWith("‹secret:") ? `${flag}${value}` : `${flag}${REDACTED}`);
3232
+ return out;
3233
+ }
3234
+ /** Bounds on the meta walk — a log line is not a place to traverse a graph. */
3235
+ var MAX_DEPTH = 8;
3236
+ var MAX_NODES = 2e3;
3237
+ /**
3238
+ * Redact a value, returning the SAME reference when nothing in it changed —
3239
+ * most lines carry clean meta, and copying every one would put an allocation
3240
+ * per log line on hub-main's event loop.
3241
+ */
3242
+ function redactValue(value, depth, budget, seen) {
3243
+ if (budget.nodes++ > MAX_NODES) return value;
3244
+ if (typeof value === "string") return redactLogText(value);
3245
+ if (value === null || typeof value !== "object") return value;
3246
+ if (depth >= MAX_DEPTH || seen.has(value)) return value;
3247
+ if (value instanceof Error) {
3248
+ const message = redactLogText(value.message);
3249
+ return message === value.message ? value : message;
3250
+ }
3251
+ if (value instanceof Date || ArrayBuffer.isView(value) || value instanceof ArrayBuffer) return value;
3252
+ seen.add(value);
3253
+ if (Array.isArray(value)) {
3254
+ let copy = null;
3255
+ for (let i = 0; i < value.length; i++) {
3256
+ const item = value[i];
3257
+ const next = redactValue(item, depth + 1, budget, seen);
3258
+ if (next !== item) {
3259
+ copy ??= [...value];
3260
+ copy[i] = next;
3261
+ }
3262
+ }
3263
+ return copy ?? value;
3264
+ }
3265
+ let copy = null;
3266
+ for (const [key, child] of Object.entries(value)) {
3267
+ const next = typeof child === "string" && child.length > 0 && isCredentialKeyName(key) ? REDACTED : redactValue(child, depth + 1, budget, seen);
3268
+ if (next !== child) {
3269
+ copy ??= { ...value };
3270
+ copy[key] = next;
3271
+ }
3272
+ }
3273
+ return copy ?? value;
3274
+ }
3275
+ /** Redact a `meta` record; the same object back when it was already clean. */
3276
+ function redactLogMeta(meta) {
3277
+ const out = redactValue(meta, 0, { nodes: 0 }, /* @__PURE__ */ new WeakSet());
3278
+ if (out === meta) return meta;
3279
+ return out !== null && typeof out === "object" && !Array.isArray(out) ? Object.fromEntries(Object.entries(out)) : meta;
3280
+ }
3281
+ /** Redact a whole entry: message and meta. Tags are identifiers, left alone. */
3282
+ function redactLogEntry(entry) {
3283
+ const message = redactLogText(entry.message);
3284
+ const meta = entry.meta !== void 0 ? redactLogMeta(entry.meta) : void 0;
3285
+ if (message === entry.message && meta === entry.meta) return entry;
3286
+ return {
3287
+ ...entry,
3288
+ message,
3289
+ ...meta !== void 0 ? { meta } : {}
3290
+ };
3291
+ }
3292
+ //#endregion
3181
3293
  //#region src/kernel/deps/npm-command.ts
3182
3294
  /**
3183
3295
  * npm invocation resolver — makes "is npm available?" a solved problem for
@@ -4773,12 +4885,13 @@ function createBrokerDeviceManagerApi(opts) {
4773
4885
  bindRuntimeState: (state) => {
4774
4886
  runtimeStateRef = state;
4775
4887
  },
4776
- persistConfig: async (data) => {
4888
+ persistConfig: async (data, options) => {
4777
4889
  const dataRecord = toPlainRecord(data);
4778
4890
  if (!dataRecord) throw new Error(`worker-device-manager: persistConfig expected a plain object, got ${data === null ? "null" : typeof data}`);
4779
4891
  await callDeviceManager(api, "persistConfig", {
4780
4892
  deviceId: id,
4781
- data: dataRecord
4893
+ data: dataRecord,
4894
+ ...options?.secretConfigPaths !== void 0 ? { secretConfigPaths: [...options.secretConfigPaths] } : {}
4782
4895
  });
4783
4896
  },
4784
4897
  initialRuntimeState,
@@ -8301,22 +8414,33 @@ function extractNodeId(args) {
8301
8414
  return typeof raw === "string" && raw.length > 0 ? raw : void 0;
8302
8415
  }
8303
8416
  /**
8304
- * Merge `callerAddonId` into `args` as an extra field — the SAME "provider
8417
+ * Stamp the CALLER identity into a cap call's args — the SAME "provider
8305
8418
  * destructures what it needs and ignores the rest" convention
8306
8419
  * {@link extractNodeId} already relies on for the inline `nodeId` pin.
8307
- * `undefined` (the overwhelmingly common case: no caller hint, or the census
8308
- * consuming it is disarmed) returns `args` unchanged — no allocation. A
8309
- * non-object `args` (or `null`/array) is returned unchanged too: there is
8310
- * nowhere to attach an extra key without changing the payload's shape, and a
8311
- * provider taking a bare value never reads `callerAddonId` off it anyway.
8312
- */
8313
- function withCallerAddonId(args, callerAddonId) {
8314
- if (callerAddonId === void 0) return args;
8420
+ *
8421
+ * The stamp is the transport's, never the caller's (D787):
8422
+ * - a stamp (`callerAddonId` known to the transport) OVERWRITES whatever the
8423
+ * args carry under that key;
8424
+ * - NO stamp STRIPS the key: a call that crossed a wire with no identity the
8425
+ * transport can vouch for must not arrive carrying a claimed one. The
8426
+ * keychain owner-checks on this field, and until 2026-10-08 an unstamped
8427
+ * call let a child's own `callerAddonId` through untouched.
8428
+ *
8429
+ * A hub in-process caller never reaches this function (`localProviderLink`
8430
+ * calls the provider directly), which is the one place a stated identity is
8431
+ * trusted. A non-object `args` (or `null`/array) is returned unchanged: there
8432
+ * is nowhere to attach a key, and nowhere one could hide.
8433
+ */
8434
+ function stampCallerAddonId(args, callerAddonId) {
8315
8435
  if (args === null || typeof args !== "object" || Array.isArray(args)) return args;
8316
- return {
8436
+ if (callerAddonId !== void 0) return {
8317
8437
  ...args,
8318
8438
  callerAddonId
8319
8439
  };
8440
+ if (!Object.prototype.hasOwnProperty.call(args, "callerAddonId")) return args;
8441
+ const rest = {};
8442
+ for (const [key, value] of Object.entries(args)) if (key !== "callerAddonId") rest[key] = value;
8443
+ return rest;
8320
8444
  }
8321
8445
  var CapRouteResolver = class {
8322
8446
  hubNodeId;
@@ -8420,7 +8544,7 @@ var CapRouteResolver = class {
8420
8544
  */
8421
8545
  async dispatchInner(route, method, args, addonId, callerAddonId) {
8422
8546
  switch (route.kind) {
8423
- case "hub-in-process": return route.ref.invoke(method, withCallerAddonId(args, callerAddonId));
8547
+ case "hub-in-process": return route.ref.invoke(method, stampCallerAddonId(args, callerAddonId));
8424
8548
  case "hub-local-uds": {
8425
8549
  const registry = this.hubLocalRegistry;
8426
8550
  if (registry === null) throw new CapRouteError(route.capName, method, {
@@ -8980,7 +9104,8 @@ var LocalChildRegistry = class {
8980
9104
  method: input.method,
8981
9105
  args: input.args,
8982
9106
  ...input.deviceId !== void 0 ? { deviceId: input.deviceId } : {},
8983
- ...input.addonId !== void 0 ? { addonId: input.addonId } : {}
9107
+ ...input.addonId !== void 0 ? { addonId: input.addonId } : {},
9108
+ ...input.callerAddonId !== void 0 ? { callerAddonId: input.callerAddonId } : {}
8984
9109
  };
8985
9110
  }
8986
9111
  listChildren() {
@@ -9254,7 +9379,8 @@ var LocalChildRegistry = class {
9254
9379
  capName: out.capName,
9255
9380
  method: out.method,
9256
9381
  args: void 0,
9257
- ...out.deviceId !== void 0 ? { deviceId: out.deviceId } : {}
9382
+ ...out.deviceId !== void 0 ? { deviceId: out.deviceId } : {},
9383
+ ...childId !== null ? { callerAddonId: childId } : {}
9258
9384
  };
9259
9385
  const declared = this.capTimeoutMs?.(out.capName, out.method);
9260
9386
  return entry.channel.request(forward, {
@@ -9479,13 +9605,14 @@ var LocalChildClient = class {
9479
9605
  channel.onRequest(async (body, payload) => {
9480
9606
  const msg = body;
9481
9607
  if (msg.kind === "cap-call") {
9482
- const args = payload !== void 0 ? unpackPayload(payload) : msg.args;
9608
+ const args = stampCallerAddonId(payload !== void 0 ? unpackPayload(payload) : msg.args, msg.callerAddonId);
9483
9609
  const result = await this.options.dispatch({
9484
9610
  capName: msg.capName,
9485
9611
  method: msg.method,
9486
9612
  args,
9487
9613
  ...msg.deviceId !== void 0 ? { deviceId: msg.deviceId } : {},
9488
- ...msg.addonId !== void 0 ? { addonId: msg.addonId } : {}
9614
+ ...msg.addonId !== void 0 ? { addonId: msg.addonId } : {},
9615
+ ...msg.callerAddonId !== void 0 ? { callerAddonId: msg.callerAddonId } : {}
9489
9616
  });
9490
9617
  if (payload !== void 0 && result !== void 0) return new PayloadReply(void 0, packPayload(result));
9491
9618
  return result;
@@ -9668,12 +9795,12 @@ function createUdsLoggerWithState(client, addonId, nodeId, levelState, scope, ta
9668
9795
  } : baseTags;
9669
9796
  const entry = {
9670
9797
  level,
9671
- message,
9798
+ message: redactLogText(message),
9672
9799
  addonId,
9673
9800
  nodeId,
9674
9801
  ...scope !== void 0 ? { scope } : {},
9675
9802
  tags: mergedTags,
9676
- ...extras?.meta !== void 0 ? { meta: extras.meta } : {}
9803
+ ...extras?.meta !== void 0 ? { meta: redactLogMeta(extras.meta) } : {}
9677
9804
  };
9678
9805
  client.sendLog(entry);
9679
9806
  }
@@ -9895,7 +10022,8 @@ function createParentUnownedCallHandler(deps) {
9895
10022
  method: input.method,
9896
10023
  args: input.args,
9897
10024
  deviceId,
9898
- native: true
10025
+ native: true,
10026
+ ...input.callerAddonId !== void 0 ? { callerAddonId: input.callerAddonId } : {}
9899
10027
  });
9900
10028
  throw new Error(`no native provider for capability "${input.capName}" on device ${String(deviceId)}`);
9901
10029
  }
@@ -9955,7 +10083,8 @@ function createParentUnownedCallHandler(deps) {
9955
10083
  method: input.method,
9956
10084
  args: input.args,
9957
10085
  deviceId,
9958
- nodeId: owner.nodeId
10086
+ nodeId: owner.nodeId,
10087
+ ...input.callerAddonId !== void 0 ? { callerAddonId: input.callerAddonId } : {}
9959
10088
  });
9960
10089
  return await brokerCallForCap(deps.broker, input.capName, input.method, input.args, { nodeId: owner.nodeId });
9961
10090
  }
@@ -9965,7 +10094,8 @@ function createParentUnownedCallHandler(deps) {
9965
10094
  method: input.method,
9966
10095
  args: input.args,
9967
10096
  ...deviceId !== void 0 ? { deviceId } : {},
9968
- ...nodeId !== void 0 ? { nodeId } : {}
10097
+ ...nodeId !== void 0 ? { nodeId } : {},
10098
+ ...input.callerAddonId !== void 0 ? { callerAddonId: input.callerAddonId } : {}
9969
10099
  });
9970
10100
  if (deps.isCoreServiceCap !== void 0 && !deps.isCoreServiceCap(input.capName)) {
9971
10101
  for (let attempt = 1; attempt <= ADDON_CAP_RETRY_ATTEMPTS; attempt++) {
@@ -9976,7 +10106,7 @@ function createParentUnownedCallHandler(deps) {
9976
10106
  ...nodeId !== void 0 ? { nodeId } : {},
9977
10107
  ...deviceId !== void 0 ? { deviceId } : {}
9978
10108
  });
9979
- return await retryResolver.dispatch(route, input.method, input.args);
10109
+ return input.callerAddonId !== void 0 ? await retryResolver.dispatch(route, input.method, input.args, void 0, input.callerAddonId) : await retryResolver.dispatch(route, input.method, input.args);
9980
10110
  } catch (err) {
9981
10111
  if (!(err instanceof CapRouteError) || err.reason !== "no-provider") throw err;
9982
10112
  }
@@ -11939,6 +12069,19 @@ async function buildAddonContext(runtime, declaration, dataDir, options) {
11939
12069
  api,
11940
12070
  deps: new AddonDepsManager(addonDataDir, scopedLogger),
11941
12071
  settings: settingsView,
12072
+ secrets: (0, _camstack_types_addon.createSecretsAccess)({
12073
+ owner: addonId,
12074
+ transport: {
12075
+ put: (input) => api.keychain.put.mutate({
12076
+ ref: input.ref,
12077
+ value: input.value
12078
+ }),
12079
+ resolve: (input) => api.keychain.resolve.query({ refs: [...input.refs] }),
12080
+ delete: (input) => api.keychain.delete.mutate({ refs: [...input.refs] }),
12081
+ getState: () => api.keychain.getState.query({})
12082
+ },
12083
+ eventBus: scopedEventBus
12084
+ }),
11942
12085
  kernel: (() => {
11943
12086
  const streamProbe = runtime.mode === "broker" ? {
11944
12087
  probe: (url, probeOptions) => runtime.broker.call("$stream-probe.probe", {
@@ -13557,6 +13700,12 @@ Object.defineProperty(exports, "isArrayBufferCensusReport", {
13557
13700
  return isArrayBufferCensusReport;
13558
13701
  }
13559
13702
  });
13703
+ Object.defineProperty(exports, "isCredentialKeyName", {
13704
+ enumerable: true,
13705
+ get: function() {
13706
+ return isCredentialKeyName;
13707
+ }
13708
+ });
13560
13709
  Object.defineProperty(exports, "killOwnRunnerGroupAfterParentLoss", {
13561
13710
  enumerable: true,
13562
13711
  get: function() {
@@ -13629,6 +13778,24 @@ Object.defineProperty(exports, "recordSocketFrame", {
13629
13778
  return recordSocketFrame;
13630
13779
  }
13631
13780
  });
13781
+ Object.defineProperty(exports, "redactLogEntry", {
13782
+ enumerable: true,
13783
+ get: function() {
13784
+ return redactLogEntry;
13785
+ }
13786
+ });
13787
+ Object.defineProperty(exports, "redactLogMeta", {
13788
+ enumerable: true,
13789
+ get: function() {
13790
+ return redactLogMeta;
13791
+ }
13792
+ });
13793
+ Object.defineProperty(exports, "redactLogText", {
13794
+ enumerable: true,
13795
+ get: function() {
13796
+ return redactLogText;
13797
+ }
13798
+ });
13632
13799
  Object.defineProperty(exports, "registerEventBusService", {
13633
13800
  enumerable: true,
13634
13801
  get: function() {
@@ -13737,6 +13904,12 @@ Object.defineProperty(exports, "socketDirectionMessages", {
13737
13904
  return socketDirectionMessages;
13738
13905
  }
13739
13906
  });
13907
+ Object.defineProperty(exports, "stampCallerAddonId", {
13908
+ enumerable: true,
13909
+ get: function() {
13910
+ return stampCallerAddonId;
13911
+ }
13912
+ });
13740
13913
  Object.defineProperty(exports, "startHeapWatch", {
13741
13914
  enumerable: true,
13742
13915
  get: function() {
@@ -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/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 { er as compositionSourceKey, sr as errMsg } from "./dist-D732NygW.mjs";
1
+ import { cr as errMsg, tr as compositionSourceKey } from "./dist-BWNoS-1S.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