@camstack/system 1.2.354 → 1.2.355

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 (79) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/calendars/calendar-prefs-store.d.ts +7 -0
  14. package/dist/builtins/calendars/calendars.addon.js +3 -2
  15. package/dist/builtins/calendars/calendars.addon.mjs +3 -2
  16. package/dist/builtins/camera-grid/index.js +1 -1
  17. package/dist/builtins/camera-grid/index.mjs +1 -1
  18. package/dist/builtins/composer/composer.addon.js +53 -12
  19. package/dist/builtins/composer/composer.addon.mjs +53 -12
  20. package/dist/builtins/console-logging/index.js +1 -1
  21. package/dist/builtins/console-logging/index.mjs +1 -1
  22. package/dist/builtins/core-blocks/block-settings-store.d.ts +5 -0
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +7 -2
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +7 -2
  25. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  31. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  32. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  33. package/dist/builtins/local-network/local-network.addon.js +1 -1
  34. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  35. package/dist/builtins/loki-logging/index.js +1 -1
  36. package/dist/builtins/loki-logging/index.mjs +1 -1
  37. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  39. package/dist/builtins/platform-probe/index.js +1 -1
  40. package/dist/builtins/platform-probe/index.mjs +1 -1
  41. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  43. package/dist/builtins/snapshot/index.js +1 -1
  44. package/dist/builtins/snapshot/index.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/analyze-stats.d.ts +0 -2
  46. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +9 -11
  49. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  51. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  53. package/dist/builtins/system-config/system-config.addon.js +1 -1
  54. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  55. package/dist/builtins/winston-logging/index.js +1 -1
  56. package/dist/builtins/winston-logging/index.mjs +1 -1
  57. package/dist/{child-cap-dispatch-CRqYKHAb.js → child-cap-dispatch-CqV-7-QZ.js} +27 -86
  58. package/dist/{child-cap-dispatch-C1x1kNJK.mjs → child-cap-dispatch-DMx2axev.mjs} +28 -81
  59. package/dist/{composition-sources-0nuWOdNd.js → composition-sources-Bk-MjK1D.js} +1 -1
  60. package/dist/{composition-sources-DzkEFd8q.mjs → composition-sources-Dpl1G0Gr.mjs} +1 -1
  61. package/dist/{dist-DePB7uwU.js → dist-BWicEEVA.js} +77 -47
  62. package/dist/{dist-DVyXxn41.mjs → dist-OCi0K-iM.mjs} +72 -48
  63. package/dist/index.d.ts +1 -1
  64. package/dist/index.js +18 -46
  65. package/dist/index.mjs +19 -46
  66. package/dist/kernel/event-plane-report.d.ts +7 -36
  67. package/dist/kernel/fs-utils.d.ts +1 -5
  68. package/dist/kernel/heap-spaces.d.ts +2 -23
  69. package/dist/kernel/index.d.ts +0 -2
  70. package/dist/kernel/moleculer/event-bus-core.d.ts +6 -28
  71. package/dist/kernel/moleculer/process-service.d.ts +2 -5
  72. package/dist/kernel/moleculer/runner-native-allocator.d.ts +1 -6
  73. package/dist/kernel/transport/index.d.ts +1 -1
  74. package/dist/kernel/transport/local-child-registry.d.ts +8 -41
  75. package/dist/kernel/transport/uds-event-bridge.d.ts +2 -2
  76. package/dist/{retired-settings-keys-BTKZdPn6.js → retired-settings-keys-DLJ7MvIB.js} +1 -1
  77. package/dist/{retired-settings-keys-DFur4hJF.mjs → retired-settings-keys-TDzxE6GA.mjs} +1 -1
  78. package/package.json +1 -1
  79. package/dist/kernel/heap-allocation-sample.d.ts +0 -107
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-DePB7uwU.js");
3
+ const require_dist = require("./dist-BWicEEVA.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");
@@ -31,7 +31,7 @@ require("./builtins/system-config/index.js");
31
31
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
32
32
  const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-ey4mbofz.js");
33
33
  const require_tls$1 = require("./tls-ue_Xefmv.js");
34
- const require_child_cap_dispatch = require("./child-cap-dispatch-CRqYKHAb.js");
34
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CqV-7-QZ.js");
35
35
  const require_resource_monitor = require("./resource-monitor-BgWGRxN5.js");
36
36
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
37
37
  let zod = require("zod");
@@ -3237,8 +3237,7 @@ async function copyDirRecursive(src, dest) {
3237
3237
  * `addons/` stays node_modules-free, which is what lets the backup tar the whole
3238
3238
  * folder with no exclusion list (see ADR-0027). An addon that genuinely needs an
3239
3239
  * un-bundleable runtime dep declares it explicitly in
3240
- * `camstack.runtimeDependencies`; the debug escape hatch
3241
- * `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy install-everything path.
3240
+ * `camstack.runtimeDependencies`.
3242
3241
  *
3243
3242
  * (Historically this mirrored the build preset's COMMON_NATIVE_DEPS and
3244
3243
  * per-addon-installed node-av/sharp/onnxruntime-node/ssh2/werift/systeminformation
@@ -3269,13 +3268,9 @@ function readRuntimeDependencies(pkg) {
3269
3268
  * `dependencies` so `--omit=peer` installs can't drop them (pipeline's
3270
3269
  * patched `werift`).
3271
3270
  *
3272
- * Escape hatch: `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy behaviour
3273
- * (strip only @camstack/*) for debugging a suspected undeclared runtime dep.
3274
- *
3275
3271
  * Returns a new object (immutable).
3276
3272
  */
3277
3273
  function stripBundledDeps(pkg) {
3278
- if (process.env.CAMSTACK_INSTALL_FULL_DEPS === "1") return stripCamstackDeps(pkg);
3279
3274
  const camstack = pkg.camstack;
3280
3275
  if (camstack !== null && typeof camstack === "object" && !Array.isArray(camstack) && camstack.system === true) return stripCamstackDeps(pkg);
3281
3276
  const keep = new Set([...RUNTIME_NATIVE_KEEP, ...readRuntimeDependencies(pkg)]);
@@ -94409,9 +94404,8 @@ function resolveUseHostname() {
94409
94404
  function createBroker(config) {
94410
94405
  const { nodeID, mode, hubAddress, logLevel = "warn", secret, tcpPort = DEFAULT_HUB_TCP_PORT, udpPort = DEFAULT_UDP_PORT } = config;
94411
94406
  const useHostname = resolveUseHostname();
94412
- const moleculerDebug = process.env["CAMSTACK_MOLECULER_DEBUG"] === "1" || process.env["CAMSTACK_MOLECULER_DEBUG"] === "true";
94413
- const infraLevel = moleculerDebug ? "debug" : "error";
94414
- const wildcardLevel = moleculerDebug ? "debug" : logLevel;
94407
+ const infraLevel = "error";
94408
+ const wildcardLevel = logLevel;
94415
94409
  if (mode === "test") return new ServiceBroker({
94416
94410
  nodeID,
94417
94411
  transporter: "Fake",
@@ -94441,7 +94435,7 @@ function createBroker(config) {
94441
94435
  udpDiscovery: true,
94442
94436
  udpPort,
94443
94437
  udpPeriod: 5,
94444
- debug: moleculerDebug
94438
+ debug: false
94445
94439
  }
94446
94440
  },
94447
94441
  logger: {
@@ -94461,7 +94455,7 @@ function createBroker(config) {
94461
94455
  maxPacketSize: 10 * 1024 * 1024,
94462
94456
  port: config.agentListenPort ?? deriveAgentListenPort(nodeID),
94463
94457
  useHostname,
94464
- debug: moleculerDebug
94458
+ debug: false
94465
94459
  };
94466
94460
  if (hubAddress) {
94467
94461
  tcpOptions.urls = normalizeHubUrl(hubAddress, tcpPort);
@@ -95269,26 +95263,16 @@ var CrashSupervisor = class {
95269
95263
  * restores the glibc/sharp defaults. Recoverable without a rebuild.
95270
95264
  * 2. A value the operator already put in the environment (`MALLOC_ARENA_MAX`,
95271
95265
  * `VIPS_CONCURRENCY`) — inherited verbatim, never overwritten.
95272
- * 3. `CAMSTACK_RUNNER_MALLOC_ARENA_MAX` — the CamStack override.
95273
- * 4. The defaults above.
95274
- *
95275
- * A nonsense override falls back to the default rather than being passed through:
95276
- * glibc reads `MALLOC_ARENA_MAX=0` as "unbounded", which is the very state this
95277
- * exists to leave.
95266
+ * 3. The defaults above.
95278
95267
  */
95279
95268
  function runnerNativeAllocatorEnv(parentEnv, platform = process.platform) {
95280
95269
  if (platform !== "linux") return {};
95281
95270
  if (parentEnv["CAMSTACK_RUNNER_NATIVE_ALLOCATOR"] === "off") return {};
95282
95271
  return {
95283
- MALLOC_ARENA_MAX: parentEnv["MALLOC_ARENA_MAX"] ?? String(positiveInt(parentEnv["CAMSTACK_RUNNER_MALLOC_ARENA_MAX"], 2)),
95272
+ MALLOC_ARENA_MAX: parentEnv["MALLOC_ARENA_MAX"] ?? String(2),
95284
95273
  VIPS_CONCURRENCY: parentEnv["VIPS_CONCURRENCY"] ?? String(1)
95285
95274
  };
95286
95275
  }
95287
- function positiveInt(raw, fallback) {
95288
- if (raw === void 0) return fallback;
95289
- const n = Number.parseInt(raw, 10);
95290
- return Number.isFinite(n) && n > 0 ? n : fallback;
95291
- }
95292
95276
  /**
95293
95277
  * The child's environment, with the allocator pair applied or REMOVED.
95294
95278
  *
@@ -95497,6 +95481,8 @@ function isHeavyRunner(addons) {
95497
95481
  * Reaching for a bigger number here when RSS is the complaint is the standard wrong move.
95498
95482
  */
95499
95483
  var HEAVY_MAX_OLD_MB_DEFAULT = 1024;
95484
+ /** Light runners' young-generation semi-space, in MB. */
95485
+ var LIGHT_SEMI_SPACE_MB = 2;
95500
95486
  /**
95501
95487
  * The runner's old-space ceiling in MB, or 0 for "uncapped".
95502
95488
  *
@@ -95506,7 +95492,7 @@ var HEAVY_MAX_OLD_MB_DEFAULT = 1024;
95506
95492
  * the cap for the whole runner, which is the intended escape hatch.
95507
95493
  */
95508
95494
  function runnerMaxOldSpaceMb(addons, heavy) {
95509
- const envDefault = heavy ? positiveIntEnv("CAMSTACK_RUNNER_HEAVY_MAX_OLD_MB", HEAVY_MAX_OLD_MB_DEFAULT) : positiveIntEnv("CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB", 0);
95495
+ const envDefault = heavy ? HEAVY_MAX_OLD_MB_DEFAULT : 0;
95510
95496
  const declared = addons.map((a) => readAddonHeapDeclaration(a).maxOldSpaceMb).filter((mb) => mb !== void 0);
95511
95497
  if (declared.length === 0) return envDefault;
95512
95498
  if (declared.includes(0)) return 0;
@@ -95533,38 +95519,25 @@ function runnerRssBudgetMb(addons) {
95533
95519
  * (`--max-semi-space-size`) to reclaim V8's over-reservation — a measured ~15 MB/runner win — bound
95534
95520
  * V8's platform thread pool (`--v8-pool-size`, see {@link LIGHT_V8_POOL_SIZE_DEFAULT}: a measured
95535
95521
  * ~58 threads across the hub's 29 light runners, against a cgroup `pids.max` this host has already
95536
- * hit) and keep an opt-in old-space cap (`CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB`, unset = uncapped). HEAVY
95522
+ * hit) and carry no old-space cap unless a manifest declares one. HEAVY
95537
95523
  * runners keep V8's default young generation but ALWAYS carry an old-space ceiling; see
95538
95524
  * {@link HEAVY_MAX_OLD_MB_DEFAULT} for why, and how a runner declares its own.
95539
95525
  *
95540
- * Kill-switch: `CAMSTACK_RUNNER_HEAP_TUNING=off` disables all flags (recover without a rebuild).
95541
- * Overrides: `CAMSTACK_RUNNER_LIGHT_SEMI_SPACE_MB` (default 2),
95542
- * `CAMSTACK_RUNNER_LIGHT_V8_POOL_SIZE` (default {@link LIGHT_V8_POOL_SIZE_DEFAULT}; below 1 omits
95543
- * the flag — `0` means "size from the CPU count" to V8, not "off"),
95544
- * `CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB`
95545
- * (default unset = no old-space cap), `CAMSTACK_RUNNER_HEAVY_MAX_OLD_MB`
95546
- * (default {@link HEAVY_MAX_OLD_MB_DEFAULT}; `0` restores the old uncapped behaviour).
95526
+ * The per-addon override is the manifest's declared `maxOldSpaceMb` (`0` = uncapped); the
95527
+ * environment overrides and the `CAMSTACK_RUNNER_HEAP_TUNING=off` kill switch were removed on
95528
+ * 2026-10-06 — nothing had set them since the rollout.
95547
95529
  */
95548
95530
  function runnerHeapFlags(addons) {
95549
- if (process.env["CAMSTACK_RUNNER_HEAP_TUNING"] === "off") return [];
95550
95531
  const heavy = isHeavyRunner(addons);
95551
95532
  const flags = [];
95552
95533
  if (!heavy) {
95553
- const semiMb = positiveIntEnv("CAMSTACK_RUNNER_LIGHT_SEMI_SPACE_MB", 2);
95554
- if (semiMb > 0) flags.push(`--max-semi-space-size=${semiMb}`);
95555
- const v8Pool = positiveIntEnv("CAMSTACK_RUNNER_LIGHT_V8_POOL_SIZE", 2);
95556
- if (v8Pool > 0) flags.push(`--v8-pool-size=${v8Pool}`);
95534
+ flags.push(`--max-semi-space-size=${LIGHT_SEMI_SPACE_MB}`);
95535
+ flags.push(`--v8-pool-size=2`);
95557
95536
  }
95558
95537
  const oldMb = runnerMaxOldSpaceMb(addons, heavy);
95559
95538
  if (oldMb > 0) flags.push(`--max-old-space-size=${oldMb}`);
95560
95539
  return flags;
95561
95540
  }
95562
- function positiveIntEnv(name, fallback) {
95563
- const raw = process.env[name];
95564
- if (raw === void 0) return fallback;
95565
- const n = Number.parseInt(raw, 10);
95566
- return Number.isFinite(n) && n >= 0 ? n : fallback;
95567
- }
95568
95541
  var MAX_BACKOFF_MS = 3e4;
95569
95542
  var CRASH_WINDOW_MS = 6e4;
95570
95543
  var MAX_CRASHES_IN_WINDOW = 5;
@@ -96864,7 +96837,6 @@ exports.quarantineAddonResidue = quarantineAddonResidue;
96864
96837
  exports.readExtraSans = require_tls$1.readExtraSans;
96865
96838
  exports.readHeapSpaces = require_child_cap_dispatch.readHeapSpaces;
96866
96839
  exports.readLanHttpState = require_tls$1.readLanHttpState;
96867
- exports.readMoleculerFanoutMode = require_child_cap_dispatch.readMoleculerFanoutMode;
96868
96840
  exports.readPendingRestart = readPendingRestart;
96869
96841
  exports.readSocketQueues = require_child_cap_dispatch.readSocketQueues;
96870
96842
  exports.readTlsAccessStatus = require_tls$1.readTlsAccessStatus;
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 { $n as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Gt as logLevelAtMost, It as isObjectInput, Kt as looseSchema, Lt as isVoidInput, N as RUNTIME_DEFAULTS, Nt as isArrayOutputSchema, O as METHOD_ACCESS_MAP, Ot as extractNestedAddonId, Pt as isCollectionArrayMethod, Qn as DATAPLANE_SECRET_HEADER$1, Rt as kebabToCamel, Sr as EventCategory$1, T as LOG_LEVEL_RANK, Vt as lifecycleJobSchema, W as addonSettingsCapability, Xn as errMsg$1, _n as scopesAllowAddon, _r as readinessKey, ar as asNumber, cr as emitDownForOwnedCaps, er as DEVICE_STATUS_METHOD, gr as parseJsonUnknown, hn as resolveMethodAuth, hr as parseJsonObject, ir as asJsonObject$1, nn as objectInputDeclaresRequiredDeviceId, nr as ReadinessTimeoutError, or as asString$1, sn as procedureAuthKey, sr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, tn as objectInputDeclaresAddonId, tr as ReadinessRegistry, ur as expandCapMethods, vn as scopesAllowDeviceCap, vr as resolveCapMount, yr as scopeKey } from "./dist-DVyXxn41.mjs";
2
+ import { $n as DATAPLANE_SECRET_HEADER$1, Cr as EventCategory$1, Ft as isCollectionArrayMethod, Ht as lifecycleJobSchema, Kt as logLevelAtMost, Lt as isObjectInput, N as RUNTIME_DEFAULTS, O as METHOD_ACCESS_MAP, Pt as isArrayOutputSchema, Rt as isVoidInput, T as LOG_LEVEL_RANK, W as addonSettingsCapability, Zn as errMsg$1, _r as parseJsonUnknown, ar as asJsonObject$1, br as scopeKey, cn as procedureAuthKey, cr as createEvent, dr as expandCapMethods, er as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gn as resolveMethodAuth, gr as parseJsonObject, kt as extractNestedAddonId, lr as emitDownForOwnedCaps, nn as objectInputDeclaresAddonId, nr as ReadinessRegistry, or as asNumber, qt as looseSchema, rn as objectInputDeclaresRequiredDeviceId, rr as ReadinessTimeoutError, sr as asString$1, t as ALL_CAPABILITY_DEFINITIONS, tr as DEVICE_STATUS_METHOD, vn as scopesAllowAddon, vr as readinessKey, yn as scopesAllowDeviceCap, yr as resolveCapMount, zt as kebabToCamel } from "./dist-OCi0K-iM.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";
@@ -30,7 +30,7 @@ import "./builtins/system-config/index.mjs";
30
30
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
31
31
  import { _ as ensureModel, a as createFileDataPlaneHandler, c as parseRangeHeader, d as ModelDownloadService, g as downloadModel, h as downloadFile, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as deleteModelFromDisk, n as STALL_TICK_MS, o as contentTypeFor, p as collectModelFiles, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as fetchJson, x as isModelDownloaded, y as getModelFilePath } from "./event-loop-stall-monitor-EXjzIxDz.mjs";
32
32
  import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-DTlVWwAI.mjs";
33
- import { $ as CapRouteError, $n as CAP_ACTION_UNLABELLED, $t as RUNNER_HEAP_WATCH_INTERVAL_MS, A as resolveHwAccel, An as OUTBOUND_QUEUE_COOLDOWN_MS, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as SOCKET_QUEUE_TOP_N, Bt as createAddonPeerBytesFacility, C as getBrokerEventBus, Cn as DECISIVE_HEAP_SPACES, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as heapSpaceField, Dt as capServiceName, E as setNodeEventInterest, En as formatHeapSpaces, Et as capBareAction, F as ipcParentLink, Fn as MESH_QUEUE_TOP_N, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as readSocketQueues, Gt as HEAP_RECLAIM_TRIGGER_MB, H as createUdsLoggerWithControl, Hn as createSocketPlaneReader, Ht as createAddonDataPlaneFacility, I as localProviderLink, In as createMeshQueueReader, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as recordSocketFrame, Jt as HUB_MAIN_HEAP_WATCH_LABEL, K as afterWorkerOnlineAnnounce, Kn as EMPTY_SOCKET_DIRECTION, Kt as HEAP_WATCH_INTERVAL_MS, L as createParentUnownedCallHandler, Ln as formatMeshQueue, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as OUTBOUND_QUEUE_THRESHOLD_BYTES, Mt as CapabilityHandle, N as buildLinkChain, Nn as createOutboundQueueGate, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as readHeapSpaces, Ot as parseCapAction, P as deviceCapResolverLink, Pn as formatOutboundQueueVerdict, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as CAP_ACTION_OVERFLOW_LABEL, Qt as RSS_BUDGET_RELEASE_RATIO, R as createUdsEventBridge, Rn as EMPTY_SOCKET_PLANE_BASELINE, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as isArrayBufferCensusReport, St as validateProviderRegistrations, T as registerEventBusService, Tn as emitHeapDiagnosticReport, Tt as capActionSuffix, U as LocalChildClient, Un as diffSocketPlane, Ut as HEAP_RECLAIM_MIN_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneMeter, Vt as hostNodeIdOf, W as LocalChildRegistry, Wn as formatSocketPlane, Wt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionBytes, Xt as HUB_RSS_BUDGET_ENV, Y as deviceOfGetStatus, Yn as sampleSocketDirection, Yt as HUB_MAIN_RSS_BUDGET_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as socketDirectionMessages, Zt as RSS_BUDGET_REANNOUNCE_MIN_MS, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, a as reapProcessGroup, an as createV8Reclaimer, ar as EVENT_PLANE_TOP_N, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as createInspectorArrayBufferCensus, c as runnerOwnsProcessGroup, cn as nextRssBudgetState, cr as diffEventPlane, ct as UdsLocalTransportClient, d as summarizeMembers, dn as shouldReclaim, dt as PeerAnsweredError, en as RUNNER_RSS_BUDGET_ENV, er as EMPTY_CAP_ACTION_READING, et as classifyCapRoute, f as installManifestSystemDeps, fn as startHeapWatch, ft as localEndpointPath, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ht as buildNativeCapProxy, in as createLoopDelayMeter, ir as diffCapActionCensus, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as OUTBOUND_QUEUE_SUSTAIN_MS, jt as DeviceRegistry, k as createKernelHwAccel, kn as selectReportedSpaces, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as parseRssBudgetMb, lr as formatEventPlane, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as strandedMb, mt as encodeFrame, nn as buildHeapSample, nr as capActionLabel, nt as readMoleculerFanoutMode, o as registerRunnerGroup, on as describeRss, or as createEventPlaneMeter, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as startRunnerHeapWatch, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as createSocketDirectionCounters, qt as HEAP_WATCH_WARN_RATIO, r as defaultProcessGroupOps, rn as createDeferredHeapWatchSink, rr as createCapActionCensus, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as hubMainRssBudget, sr as createEventPlaneReader, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as ZERO_LOOP_DELAY, tr as MAX_CAP_ACTIONS_PER_PEER, tt as callWithServiceDiscovery, un as reclaimIntervalMs, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, w as getMoleculerEventStats, wn as HEAP_SPACE_REPORT_MIN_MB, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as formatArrayBufferCensus, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as createArrayBufferCensusGate, yt as mountNativeCapService, z as createUdsEventBus, zn as SOCKET_PLANE_TOP_N, zt as runNpm } from "./child-cap-dispatch-C1x1kNJK.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-DMx2axev.mjs";
34
34
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B2WZ8_q9.mjs";
35
35
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
36
36
  import { z } from "zod";
@@ -3230,8 +3230,7 @@ async function copyDirRecursive(src, dest) {
3230
3230
  * `addons/` stays node_modules-free, which is what lets the backup tar the whole
3231
3231
  * folder with no exclusion list (see ADR-0027). An addon that genuinely needs an
3232
3232
  * un-bundleable runtime dep declares it explicitly in
3233
- * `camstack.runtimeDependencies`; the debug escape hatch
3234
- * `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy install-everything path.
3233
+ * `camstack.runtimeDependencies`.
3235
3234
  *
3236
3235
  * (Historically this mirrored the build preset's COMMON_NATIVE_DEPS and
3237
3236
  * per-addon-installed node-av/sharp/onnxruntime-node/ssh2/werift/systeminformation
@@ -3262,13 +3261,9 @@ function readRuntimeDependencies(pkg) {
3262
3261
  * `dependencies` so `--omit=peer` installs can't drop them (pipeline's
3263
3262
  * patched `werift`).
3264
3263
  *
3265
- * Escape hatch: `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy behaviour
3266
- * (strip only @camstack/*) for debugging a suspected undeclared runtime dep.
3267
- *
3268
3264
  * Returns a new object (immutable).
3269
3265
  */
3270
3266
  function stripBundledDeps(pkg) {
3271
- if (process.env.CAMSTACK_INSTALL_FULL_DEPS === "1") return stripCamstackDeps(pkg);
3272
3267
  const camstack = pkg.camstack;
3273
3268
  if (camstack !== null && typeof camstack === "object" && !Array.isArray(camstack) && camstack.system === true) return stripCamstackDeps(pkg);
3274
3269
  const keep = new Set([...RUNTIME_NATIVE_KEEP, ...readRuntimeDependencies(pkg)]);
@@ -94402,9 +94397,8 @@ function resolveUseHostname() {
94402
94397
  function createBroker(config) {
94403
94398
  const { nodeID, mode, hubAddress, logLevel = "warn", secret, tcpPort = DEFAULT_HUB_TCP_PORT, udpPort = DEFAULT_UDP_PORT } = config;
94404
94399
  const useHostname = resolveUseHostname();
94405
- const moleculerDebug = process.env["CAMSTACK_MOLECULER_DEBUG"] === "1" || process.env["CAMSTACK_MOLECULER_DEBUG"] === "true";
94406
- const infraLevel = moleculerDebug ? "debug" : "error";
94407
- const wildcardLevel = moleculerDebug ? "debug" : logLevel;
94400
+ const infraLevel = "error";
94401
+ const wildcardLevel = logLevel;
94408
94402
  if (mode === "test") return new ServiceBroker({
94409
94403
  nodeID,
94410
94404
  transporter: "Fake",
@@ -94434,7 +94428,7 @@ function createBroker(config) {
94434
94428
  udpDiscovery: true,
94435
94429
  udpPort,
94436
94430
  udpPeriod: 5,
94437
- debug: moleculerDebug
94431
+ debug: false
94438
94432
  }
94439
94433
  },
94440
94434
  logger: {
@@ -94454,7 +94448,7 @@ function createBroker(config) {
94454
94448
  maxPacketSize: 10 * 1024 * 1024,
94455
94449
  port: config.agentListenPort ?? deriveAgentListenPort(nodeID),
94456
94450
  useHostname,
94457
- debug: moleculerDebug
94451
+ debug: false
94458
94452
  };
94459
94453
  if (hubAddress) {
94460
94454
  tcpOptions.urls = normalizeHubUrl(hubAddress, tcpPort);
@@ -95262,26 +95256,16 @@ var CrashSupervisor = class {
95262
95256
  * restores the glibc/sharp defaults. Recoverable without a rebuild.
95263
95257
  * 2. A value the operator already put in the environment (`MALLOC_ARENA_MAX`,
95264
95258
  * `VIPS_CONCURRENCY`) — inherited verbatim, never overwritten.
95265
- * 3. `CAMSTACK_RUNNER_MALLOC_ARENA_MAX` — the CamStack override.
95266
- * 4. The defaults above.
95267
- *
95268
- * A nonsense override falls back to the default rather than being passed through:
95269
- * glibc reads `MALLOC_ARENA_MAX=0` as "unbounded", which is the very state this
95270
- * exists to leave.
95259
+ * 3. The defaults above.
95271
95260
  */
95272
95261
  function runnerNativeAllocatorEnv(parentEnv, platform = process.platform) {
95273
95262
  if (platform !== "linux") return {};
95274
95263
  if (parentEnv["CAMSTACK_RUNNER_NATIVE_ALLOCATOR"] === "off") return {};
95275
95264
  return {
95276
- MALLOC_ARENA_MAX: parentEnv["MALLOC_ARENA_MAX"] ?? String(positiveInt(parentEnv["CAMSTACK_RUNNER_MALLOC_ARENA_MAX"], 2)),
95265
+ MALLOC_ARENA_MAX: parentEnv["MALLOC_ARENA_MAX"] ?? String(2),
95277
95266
  VIPS_CONCURRENCY: parentEnv["VIPS_CONCURRENCY"] ?? String(1)
95278
95267
  };
95279
95268
  }
95280
- function positiveInt(raw, fallback) {
95281
- if (raw === void 0) return fallback;
95282
- const n = Number.parseInt(raw, 10);
95283
- return Number.isFinite(n) && n > 0 ? n : fallback;
95284
- }
95285
95269
  /**
95286
95270
  * The child's environment, with the allocator pair applied or REMOVED.
95287
95271
  *
@@ -95490,6 +95474,8 @@ function isHeavyRunner(addons) {
95490
95474
  * Reaching for a bigger number here when RSS is the complaint is the standard wrong move.
95491
95475
  */
95492
95476
  var HEAVY_MAX_OLD_MB_DEFAULT = 1024;
95477
+ /** Light runners' young-generation semi-space, in MB. */
95478
+ var LIGHT_SEMI_SPACE_MB = 2;
95493
95479
  /**
95494
95480
  * The runner's old-space ceiling in MB, or 0 for "uncapped".
95495
95481
  *
@@ -95499,7 +95485,7 @@ var HEAVY_MAX_OLD_MB_DEFAULT = 1024;
95499
95485
  * the cap for the whole runner, which is the intended escape hatch.
95500
95486
  */
95501
95487
  function runnerMaxOldSpaceMb(addons, heavy) {
95502
- const envDefault = heavy ? positiveIntEnv("CAMSTACK_RUNNER_HEAVY_MAX_OLD_MB", HEAVY_MAX_OLD_MB_DEFAULT) : positiveIntEnv("CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB", 0);
95488
+ const envDefault = heavy ? HEAVY_MAX_OLD_MB_DEFAULT : 0;
95503
95489
  const declared = addons.map((a) => readAddonHeapDeclaration(a).maxOldSpaceMb).filter((mb) => mb !== void 0);
95504
95490
  if (declared.length === 0) return envDefault;
95505
95491
  if (declared.includes(0)) return 0;
@@ -95526,38 +95512,25 @@ function runnerRssBudgetMb(addons) {
95526
95512
  * (`--max-semi-space-size`) to reclaim V8's over-reservation — a measured ~15 MB/runner win — bound
95527
95513
  * V8's platform thread pool (`--v8-pool-size`, see {@link LIGHT_V8_POOL_SIZE_DEFAULT}: a measured
95528
95514
  * ~58 threads across the hub's 29 light runners, against a cgroup `pids.max` this host has already
95529
- * hit) and keep an opt-in old-space cap (`CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB`, unset = uncapped). HEAVY
95515
+ * hit) and carry no old-space cap unless a manifest declares one. HEAVY
95530
95516
  * runners keep V8's default young generation but ALWAYS carry an old-space ceiling; see
95531
95517
  * {@link HEAVY_MAX_OLD_MB_DEFAULT} for why, and how a runner declares its own.
95532
95518
  *
95533
- * Kill-switch: `CAMSTACK_RUNNER_HEAP_TUNING=off` disables all flags (recover without a rebuild).
95534
- * Overrides: `CAMSTACK_RUNNER_LIGHT_SEMI_SPACE_MB` (default 2),
95535
- * `CAMSTACK_RUNNER_LIGHT_V8_POOL_SIZE` (default {@link LIGHT_V8_POOL_SIZE_DEFAULT}; below 1 omits
95536
- * the flag — `0` means "size from the CPU count" to V8, not "off"),
95537
- * `CAMSTACK_RUNNER_LIGHT_MAX_OLD_MB`
95538
- * (default unset = no old-space cap), `CAMSTACK_RUNNER_HEAVY_MAX_OLD_MB`
95539
- * (default {@link HEAVY_MAX_OLD_MB_DEFAULT}; `0` restores the old uncapped behaviour).
95519
+ * The per-addon override is the manifest's declared `maxOldSpaceMb` (`0` = uncapped); the
95520
+ * environment overrides and the `CAMSTACK_RUNNER_HEAP_TUNING=off` kill switch were removed on
95521
+ * 2026-10-06 — nothing had set them since the rollout.
95540
95522
  */
95541
95523
  function runnerHeapFlags(addons) {
95542
- if (process.env["CAMSTACK_RUNNER_HEAP_TUNING"] === "off") return [];
95543
95524
  const heavy = isHeavyRunner(addons);
95544
95525
  const flags = [];
95545
95526
  if (!heavy) {
95546
- const semiMb = positiveIntEnv("CAMSTACK_RUNNER_LIGHT_SEMI_SPACE_MB", 2);
95547
- if (semiMb > 0) flags.push(`--max-semi-space-size=${semiMb}`);
95548
- const v8Pool = positiveIntEnv("CAMSTACK_RUNNER_LIGHT_V8_POOL_SIZE", 2);
95549
- if (v8Pool > 0) flags.push(`--v8-pool-size=${v8Pool}`);
95527
+ flags.push(`--max-semi-space-size=${LIGHT_SEMI_SPACE_MB}`);
95528
+ flags.push(`--v8-pool-size=2`);
95550
95529
  }
95551
95530
  const oldMb = runnerMaxOldSpaceMb(addons, heavy);
95552
95531
  if (oldMb > 0) flags.push(`--max-old-space-size=${oldMb}`);
95553
95532
  return flags;
95554
95533
  }
95555
- function positiveIntEnv(name, fallback) {
95556
- const raw = process.env[name];
95557
- if (raw === void 0) return fallback;
95558
- const n = Number.parseInt(raw, 10);
95559
- return Number.isFinite(n) && n >= 0 ? n : fallback;
95560
- }
95561
95534
  var MAX_BACKOFF_MS = 3e4;
95562
95535
  var CRASH_WINDOW_MS = 6e4;
95563
95536
  var MAX_CRASHES_IN_WINDOW = 5;
@@ -96473,4 +96446,4 @@ var LifecycleJobEngine = class {
96473
96446
  }
96474
96447
  };
96475
96448
  //#endregion
96476
- 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, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, afterWorkerOnlineAnnounce, allFamiliesListenHost, answerClaimedGetStatus, 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, 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, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, overlayGetStatus, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readMoleculerFanoutMode, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, registerEventBusService, registerLanHttpHandler, reissueTlsLeaf, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, setHubConnected, setNodeEventInterest, setWrapperActive, shouldReclaim, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, storeMayAnswer, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
96449
+ 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, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, afterWorkerOnlineAnnounce, allFamiliesListenHost, answerClaimedGetStatus, 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, 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, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, overlayGetStatus, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, registerEventBusService, registerLanHttpHandler, reissueTlsLeaf, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, setHubConnected, setNodeEventInterest, setWrapperActive, shouldReclaim, signalAllRunnerGroups, socketDirectionBytes, socketDirectionMessages, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, storeMayAnswer, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
@@ -22,27 +22,13 @@
22
22
  * on that runner also counts page-cache reads and it owns a vector store, so the
23
23
  * correlation is not an attribution. `fanoutTop` turns it into one.
24
24
  *
25
- * ## And the burn-in that has been running forever
26
- *
27
- * `event-bus-core.ts:310` states the procedure in its own words: *"Recommended
28
- * first fleet-wide enable: `shadow` on both, watch the suppressed counters
29
- * (`getMoleculerEventStats` / `getChildEventStats`), then flip to `filter` once
30
- * burn-in shows zero would-be-starved deliveries."*
31
- *
32
- * The hub runs with `CAMSTACK_MOLECULER_EVENT_FANOUT=shadow` — which computes
33
- * the drop decision, counts the would-suppresses and **still delivers every
34
- * event** — and **neither counter has ever had a production caller**: both
35
- * functions are reachable only from barrel re-exports and unit tests. So the
36
- * burn-in has no end condition, and the promotion to `filter` never happened
37
- * because the evidence that would authorise it was never surfaced. This module
38
- * surfaces it. It changes no default and flips no env: the promotion stays a
39
- * one-env decision for the operator, and it now has a number behind it.
40
- *
41
- * Read the modes with the counts, always. A suppressed count of 0 means
42
- * "nothing would have been dropped" under `shadow` and "nothing WAS dropped"
43
- * under `filter`, and those are different claims. A count printed without its
44
- * regime is unreadable, and the regime is read ONCE at construction — invisible
45
- * at runtime until now.
25
+ * ## Both planes always filter
26
+ *
27
+ * The cross-node plane ran a `shadow` burn-in (`CAMSTACK_MOLECULER_EVENT_FANOUT`)
28
+ * with no end condition, and the UDS plane carried the same three-mode switch
29
+ * (`CAMSTACK_UDS_EVENT_FANOUT`). Both switches were removed on 2026-10-06: a
30
+ * suppressed count now always means "this many WERE dropped", and the line no
31
+ * longer prints a regime because there is only one.
46
32
  *
47
33
  * ## The fail-open nobody can see
48
34
  *
@@ -81,16 +67,7 @@
81
67
  * `fanoutOrphans` counts what was serialised and walked across every child with
82
68
  * zero subscribers. A suppressed pair was measured at **255 ns** — 1.84 ms/s of
83
69
  * event loop at this rate — so the filter is not the cost; the emit is.
84
- *
85
- * ## What this is NOT evidence of
86
- *
87
- * `shadow` is the CROSS-NODE plane. The local UDS plane defaults to `filter` and
88
- * its env is unset, so it is filtering. hub-main's ~44 000 socket syscalls/s are
89
- * mostly to LOCAL runners, so the shadow mode is a real defect and is **not**
90
- * established as the source of that load. Do not read these two facts as one.
91
70
  */
92
- /** Fan-out regime for one plane. Same three values on both. */
93
- export type EventFanoutMode = 'filter' | 'shadow' | 'broadcast';
94
71
  /** One child's fan-out counters, as the registry keeps them (cumulative). */
95
72
  export interface ChildFanoutSample {
96
73
  readonly childId: string;
@@ -127,7 +104,6 @@ export interface ChildFanoutRegistry {
127
104
  readonly listChildren: () => readonly ChildFanoutRegistryChild[];
128
105
  readonly getChildEventStats: (childId: string) => ChildFanoutRegistryStats | null;
129
106
  readonly undeclaredChildCount: () => number;
130
- readonly eventFanoutMode: EventFanoutMode;
131
107
  readonly categoryFanout: () => readonly CategoryFanoutSample[];
132
108
  readonly categoryCensusOverflow: () => number;
133
109
  }
@@ -138,8 +114,6 @@ export interface CrossNodeEventStats {
138
114
  }
139
115
  /** One cumulative reading of both planes. */
140
116
  export interface EventPlaneCounters {
141
- readonly udsMode: EventFanoutMode;
142
- readonly crossNodeMode: EventFanoutMode;
143
117
  readonly children: readonly ChildFanoutSample[];
144
118
  readonly childrenConnected: number;
145
119
  readonly childrenUndeclared: number;
@@ -156,7 +130,6 @@ export type EventPlaneReader = () => EventPlaneCounters | undefined;
156
130
  export interface EventPlaneSources {
157
131
  readonly registry: () => ChildFanoutRegistry | null;
158
132
  readonly crossNodeStats: () => CrossNodeEventStats | null;
159
- readonly crossNodeMode: () => EventFanoutMode;
160
133
  }
161
134
  /**
162
135
  * Build a reader over the two registries.
@@ -183,8 +156,6 @@ export declare function createEventPlaneReader(sources: EventPlaneSources): Even
183
156
  export declare const EVENT_PLANE_TOP_N = 5;
184
157
  /** Both planes over one heartbeat window. */
185
158
  export interface EventPlaneWindow {
186
- readonly udsMode: EventFanoutMode;
187
- readonly crossNodeMode: EventFanoutMode;
188
159
  readonly childrenConnected: number;
189
160
  readonly childrenUndeclared: number;
190
161
  readonly fanoutSent: number;
@@ -26,8 +26,7 @@ export declare function copyDirRecursive(src: string, dest: string): Promise<voi
26
26
  * `addons/` stays node_modules-free, which is what lets the backup tar the whole
27
27
  * folder with no exclusion list (see ADR-0027). An addon that genuinely needs an
28
28
  * un-bundleable runtime dep declares it explicitly in
29
- * `camstack.runtimeDependencies`; the debug escape hatch
30
- * `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy install-everything path.
29
+ * `camstack.runtimeDependencies`.
31
30
  *
32
31
  * (Historically this mirrored the build preset's COMMON_NATIVE_DEPS and
33
32
  * per-addon-installed node-av/sharp/onnxruntime-node/ssh2/werift/systeminformation
@@ -49,9 +48,6 @@ export declare const RUNTIME_NATIVE_KEEP: readonly string[];
49
48
  * `dependencies` so `--omit=peer` installs can't drop them (pipeline's
50
49
  * patched `werift`).
51
50
  *
52
- * Escape hatch: `CAMSTACK_INSTALL_FULL_DEPS=1` restores the legacy behaviour
53
- * (strip only @camstack/*) for debugging a suspected undeclared runtime dep.
54
- *
55
51
  * Returns a new object (immutable).
56
52
  */
57
53
  export declare function stripBundledDeps(pkg: Record<string, unknown>): Record<string, unknown>;
@@ -88,22 +88,6 @@ export declare function selectReportedSpaces(spaces: readonly HeapSpaceUsage[],
88
88
  * a query someone already wrote.
89
89
  */
90
90
  export declare function formatHeapSpaces(spaces: readonly HeapSpaceUsage[], minMb?: number): string;
91
- /**
92
- * Env var that authorises a heap snapshot on SIGUSR2.
93
- *
94
- * A snapshot is an admin mutation on a production hub: `writeHeapSnapshot`
95
- * streams a file the size of the heap to `/tmp` and stops the world while it
96
- * walks it — on the recorder that is a multi-GB file and a stall measured in
97
- * seconds. The per-space breakdown is ~1.2 µs and changes nothing. Welding them
98
- * to one signal priced the free answer at the cost of the expensive one.
99
- */
100
- /**
101
- * Whether the operator has authorised the snapshot half of SIGUSR2.
102
- *
103
- * Explicit `'on'` only. Anything else — unset, empty, `'true'`, `'1'` — is NOT
104
- * authorisation: a multi-GB stop-the-world write must never be reachable by a
105
- * value someone set for a different purpose.
106
- */
107
91
  /** What a diagnostic report is ABOUT. */
108
92
  export interface HeapDiagnosticRequest {
109
93
  /** The runner's nodeId, so the line groups with its `[mem]` heartbeat. */
@@ -115,19 +99,14 @@ export interface HeapDiagnosticRequest {
115
99
  export interface HeapDiagnosticDeps {
116
100
  readonly readMemory: () => NodeJS.MemoryUsage;
117
101
  readonly readSpaces: HeapSpaceReader;
118
- readonly env: NodeJS.ProcessEnv;
119
102
  }
120
103
  /**
121
- * The SIGUSR2 report — memory + the FULL per-space breakdown, always; the
122
- * snapshot NEVER — see the note in the body.
104
+ * The SIGUSR2 report — memory + the FULL per-space breakdown; never a heap
105
+ * snapshot (D718) — see the note in the body.
123
106
  *
124
107
  * The breakdown here keeps every non-empty space at 0.1 MB, unlike the
125
108
  * heartbeat's filtered whole-MB pair: this is a hand-fired diagnostic read once
126
109
  * by a human who asked for it, so completeness costs nothing. The heartbeat runs
127
110
  * unattended on every runner forever, so it pays for every field it prints.
128
- *
129
- * A refused snapshot SAYS SO. A branch that drops work silently reads as "it was
130
- * never requested", and this one is fired by an operator who is standing there
131
- * waiting for a file.
132
111
  */
133
112
  export declare function emitHeapDiagnosticReport(request: HeapDiagnosticRequest, deps?: HeapDiagnosticDeps): void;
@@ -45,8 +45,6 @@ export { createCoreCapService, CORE_CAP_SERVICE_NAME } from './moleculer/core-ca
45
45
  export type { CoreCapAction, CoreCapCallOrigin, CoreCapServiceOptions, } from './moleculer/core-cap-service.js';
46
46
  export { createAddonContext, createUdsAddonContext, setHubConnected, adaptBrokerToCluster, registerEventBusService, setNodeEventInterest, getMoleculerEventStats, subscribePassthrough, getBrokerEventBus, clusterEventTopic, EVENT_TOPIC_PREFIX, } from './moleculer/addon-context-factory.js';
47
47
  export type { MoleculerEventStats } from './moleculer/addon-context-factory.js';
48
- export type { MoleculerEventFanoutMode } from './moleculer/event-bus-core.js';
49
- export { readMoleculerFanoutMode } from './moleculer/event-bus-core.js';
50
48
  export { HubLogForwarder } from './moleculer/hub-log-forwarder.js';
51
49
  export type { AddonContextOptions } from './moleculer/addon-context-factory.js';
52
50
  export { createHubService } from './moleculer/hub-service.js';
@@ -142,31 +142,12 @@ export declare const RING_BUFFER_DENY_PATTERNS: readonly string[];
142
142
  export declare const MAX_RECENT_EVENTS = 1000;
143
143
  export declare function isHighFrequencyCategory(category: string): boolean;
144
144
  /**
145
- * Fan-out mode for cross-node (Moleculer) event delivery, read from the
146
- * `CAMSTACK_MOLECULER_EVENT_FANOUT` env. The inter-node analogue of the
147
- * intra-host `CAMSTACK_UDS_EVENT_FANOUT` gate (`local-child-registry.ts`):
148
- * - `filter` (default) — drop an inbound cross-node event whose category
149
- * no local subscriber on THIS node wants (the union of its children's
150
- * declared patterns).
151
- * - `shadow` — compute the drop decision + count would-suppresses, but
152
- * STILL deliver every event (burn-in: prove zero would-be-starved deliveries
153
- * before flipping to `filter`).
154
- * - `broadcast` — ignore the gate entirely (pre-D2 behaviour).
155
- *
156
- * ROLLBACK CONTRACT (operators, read this): this env governs ONLY the inter-node
157
- * (Moleculer) gate. The intra-host UDS fan-out has a SEPARATE, independent
158
- * kill-switch, `CAMSTACK_UDS_EVENT_FANOUT` (see `local-child-registry.ts`). A
159
- * FULL rollback to pre-D2 / pre-#44 delivery therefore requires BOTH env vars
160
- * set to `broadcast` AND a process restart on EVERY node (hub + all agents) —
161
- * each is read ONCE at registration/construction, so a running process will not
162
- * pick up a change. Flipping only one leg leaves the other filtering and yields
163
- * inconsistent behaviour. Recommended first fleet-wide enable: `shadow` on both,
164
- * watch the suppressed counters (`getMoleculerEventStats` /
165
- * `getChildEventStats`), then flip to `filter` once burn-in shows zero
166
- * would-be-starved deliveries.
145
+ * Cross-node (Moleculer) inbound gate: an inbound cross-node event whose
146
+ * category no local subscriber on THIS node wants (the union of its children's
147
+ * declared patterns) is dropped and counted (`suppressed`). It always filters —
148
+ * the `CAMSTACK_MOLECULER_EVENT_FANOUT` shadow/broadcast modes were removed on
149
+ * 2026-10-06; the intra-host analogue is `LocalChildRegistry.childWantsEvent`.
167
150
  */
168
- export type MoleculerEventFanoutMode = 'filter' | 'shadow' | 'broadcast';
169
- export declare function readMoleculerFanoutMode(): MoleculerEventFanoutMode;
170
151
  /**
171
152
  * A node's inbound-interest snapshot used by {@link crossNodeAcceptsCategory}.
172
153
  * - `retainRecent` — the receiving bus retains events for `getRecent`/audit
@@ -185,16 +166,13 @@ export interface CrossNodeInterestSnapshot {
185
166
  /**
186
167
  * Does this node want to accept an inbound cross-node event in `category`?
187
168
  * The receiving-side mirror of `LocalChildRegistry.childWantsEvent`:
188
- * - `broadcast` mode → always (gate disabled).
189
169
  * - a retaining bus (hub main) → always (it serves `getRecent` + admin-ui;
190
170
  * its interest is genuinely everything).
191
171
  * - undeclared interest (`null`) → always (fail-open).
192
172
  * - else the declared union must match via `matchesPattern` — the SAME
193
173
  * function the local subscriber map-key gate uses, giving delivery parity.
194
- * `shadow` is handled by the caller (it counts the would-suppress but still
195
- * delivers), exactly like the UDS fan-out.
196
174
  */
197
- export declare function crossNodeAcceptsCategory(mode: MoleculerEventFanoutMode, snapshot: CrossNodeInterestSnapshot, category: string): boolean;
175
+ export declare function crossNodeAcceptsCategory(snapshot: CrossNodeInterestSnapshot, category: string): boolean;
198
176
  /**
199
177
  * Deliver `event` to all matching local subscribers and — ONLY on a bus that
200
178
  * opted into retention (`state.retainRecent`, i.e. the hub main process) and