camstack 1.2.57 → 1.2.58

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.
package/dist/cli.js CHANGED
@@ -38,7 +38,7 @@ async function runServe(args) {
38
38
  ...typeof values.data === "string" ? { data: values.data } : {}
39
39
  };
40
40
  Object.assign(process.env, buildServeEnv(opts));
41
- await import("./launcher-5UCFBJXW.js");
41
+ await import("./launcher-AL5IQ6H2.js");
42
42
  }
43
43
 
44
44
  // src/commands/agent.ts
@@ -83,7 +83,7 @@ async function runAgent(args) {
83
83
  ...typeof values.port === "string" ? { port: values.port } : {}
84
84
  };
85
85
  Object.assign(process.env, buildAgentEnv(opts));
86
- await import("./launcher-5UCFBJXW.js");
86
+ await import("./launcher-AL5IQ6H2.js");
87
87
  }
88
88
 
89
89
  // src/commands/setup.ts
@@ -23633,9 +23633,9 @@ var require_zod = __commonJS({
23633
23633
  }
23634
23634
  });
23635
23635
 
23636
- // ../system/dist/dist-CImxMt5h.js
23637
- var require_dist_CImxMt5h = __commonJS({
23638
- "../system/dist/dist-CImxMt5h.js"(exports) {
23636
+ // ../system/dist/dist-CxgTulEG.js
23637
+ var require_dist_CxgTulEG = __commonJS({
23638
+ "../system/dist/dist-CxgTulEG.js"(exports) {
23639
23639
  "use strict";
23640
23640
  var zod = require_zod();
23641
23641
  var EventCategory = /* @__PURE__ */ (function(EventCategory2) {
@@ -58639,7 +58639,7 @@ var require_alerts_addon = __commonJS({
58639
58639
  [Symbol.toStringTag]: { value: "Module" }
58640
58640
  });
58641
58641
  require_chunk_Cek0wNdY();
58642
- var require_dist10 = require_dist_CImxMt5h();
58642
+ var require_dist10 = require_dist_CxgTulEG();
58643
58643
  function selectExpired(alerts, cutoffMs) {
58644
58644
  return alerts.filter((a) => a.createdAt < cutoffMs).sort((a, b) => a.createdAt - b.createdAt).map((a) => a.id);
58645
58645
  }
@@ -59458,7 +59458,7 @@ var require_console_logging = __commonJS({
59458
59458
  [Symbol.toStringTag]: { value: "Module" }
59459
59459
  });
59460
59460
  require_chunk_Cek0wNdY();
59461
- var require_dist10 = require_dist_CImxMt5h();
59461
+ var require_dist10 = require_dist_CxgTulEG();
59462
59462
  var require_formatter = require_formatter_DqAKDlvN();
59463
59463
  var LEVEL_RANK = {
59464
59464
  debug: 0,
@@ -59552,7 +59552,7 @@ var require_core_blocks_addon = __commonJS({
59552
59552
  "use strict";
59553
59553
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
59554
59554
  var require_chunk = require_chunk_Cek0wNdY();
59555
- var require_dist10 = require_dist_CImxMt5h();
59555
+ var require_dist10 = require_dist_CxgTulEG();
59556
59556
  var node_crypto = __require("crypto");
59557
59557
  var node_fs_promises = __require("fs/promises");
59558
59558
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -60449,11 +60449,11 @@ var require_core_blocks = __commonJS({
60449
60449
  }
60450
60450
  });
60451
60451
 
60452
- // ../system/dist/retired-settings-keys-C7gLUS3x.js
60453
- var require_retired_settings_keys_C7gLUS3x = __commonJS({
60454
- "../system/dist/retired-settings-keys-C7gLUS3x.js"(exports) {
60452
+ // ../system/dist/retired-settings-keys-BbjWjol0.js
60453
+ var require_retired_settings_keys_BbjWjol0 = __commonJS({
60454
+ "../system/dist/retired-settings-keys-BbjWjol0.js"(exports) {
60455
60455
  "use strict";
60456
- var require_dist10 = require_dist_CImxMt5h();
60456
+ var require_dist10 = require_dist_CxgTulEG();
60457
60457
  function settingsStoreIsAuthoritativeHere(env) {
60458
60458
  const raw = (env["CAMSTACK_ROLE"] ?? "").trim().toLowerCase();
60459
60459
  return raw === "" || raw === "hub";
@@ -62667,8 +62667,8 @@ var require_device_manager_addon = __commonJS({
62667
62667
  [Symbol.toStringTag]: { value: "Module" }
62668
62668
  });
62669
62669
  require_chunk_Cek0wNdY();
62670
- var require_dist10 = require_dist_CImxMt5h();
62671
- var require_retired_settings_keys = require_retired_settings_keys_C7gLUS3x();
62670
+ var require_dist10 = require_dist_CxgTulEG();
62671
+ var require_retired_settings_keys = require_retired_settings_keys_BbjWjol0();
62672
62672
  var node_crypto = __require("crypto");
62673
62673
  var _camstack_types_node = require_node();
62674
62674
  var JOB_HISTORY = 20;
@@ -67417,7 +67417,7 @@ var require_hub_forwarder = __commonJS({
67417
67417
  [Symbol.toStringTag]: { value: "Module" }
67418
67418
  });
67419
67419
  require_chunk_Cek0wNdY();
67420
- var require_dist10 = require_dist_CImxMt5h();
67420
+ var require_dist10 = require_dist_CxgTulEG();
67421
67421
  var require_formatter = require_formatter_DqAKDlvN();
67422
67422
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
67423
67423
  var HubForwarderDestination = class {
@@ -67554,7 +67554,7 @@ var require_liveness_monitor_addon = __commonJS({
67554
67554
  "use strict";
67555
67555
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
67556
67556
  require_chunk_Cek0wNdY();
67557
- var require_dist10 = require_dist_CImxMt5h();
67557
+ var require_dist10 = require_dist_CxgTulEG();
67558
67558
  var NO_DEVICES = "liveness:no-devices";
67559
67559
  var ALL_OFFLINE = "liveness:all-devices-offline";
67560
67560
  var NO_FOOTAGE_PREFIX = "liveness:no-footage:";
@@ -67744,7 +67744,7 @@ var require_local_auth_addon = __commonJS({
67744
67744
  [Symbol.toStringTag]: { value: "Module" }
67745
67745
  });
67746
67746
  var require_chunk = require_chunk_Cek0wNdY();
67747
- var require_dist10 = require_dist_CImxMt5h();
67747
+ var require_dist10 = require_dist_CxgTulEG();
67748
67748
  var node_crypto = __require("crypto");
67749
67749
  node_crypto = require_chunk.__toESM(node_crypto);
67750
67750
  var crypto$1 = __require("crypto");
@@ -75557,7 +75557,7 @@ var require_loki_logging = __commonJS({
75557
75557
  [Symbol.toStringTag]: { value: "Module" }
75558
75558
  });
75559
75559
  require_chunk_Cek0wNdY();
75560
- var require_dist10 = require_dist_CImxMt5h();
75560
+ var require_dist10 = require_dist_CxgTulEG();
75561
75561
  function sanitizeLabelName(raw) {
75562
75562
  const replaced = raw.replaceAll(/[^a-zA-Z0-9_]/g, "_");
75563
75563
  return /^[a-zA-Z_]/.test(replaced) ? replaced : `_${replaced}`;
@@ -76122,7 +76122,7 @@ var require_native_metrics_addon = __commonJS({
76122
76122
  [Symbol.toStringTag]: { value: "Module" }
76123
76123
  });
76124
76124
  var require_chunk = require_chunk_Cek0wNdY();
76125
- var require_dist10 = require_dist_CImxMt5h();
76125
+ var require_dist10 = require_dist_CxgTulEG();
76126
76126
  var node_fs_promises = __require("fs/promises");
76127
76127
  var node_child_process = __require("child_process");
76128
76128
  var node_util = __require("util");
@@ -78079,7 +78079,7 @@ var require_filesystem_storage_addon = __commonJS({
78079
78079
  [Symbol.toStringTag]: { value: "Module" }
78080
78080
  });
78081
78081
  var require_chunk = require_chunk_Cek0wNdY();
78082
- var require_dist10 = require_dist_CImxMt5h();
78082
+ var require_dist10 = require_dist_CxgTulEG();
78083
78083
  var node_crypto = __require("crypto");
78084
78084
  var node_fs_promises = __require("fs/promises");
78085
78085
  var node_path = __require("path");
@@ -79195,8 +79195,8 @@ var require_sqlite_settings_addon = __commonJS({
79195
79195
  [Symbol.toStringTag]: { value: "Module" }
79196
79196
  });
79197
79197
  var require_chunk = require_chunk_Cek0wNdY();
79198
- var require_dist10 = require_dist_CImxMt5h();
79199
- var require_retired_settings_keys = require_retired_settings_keys_C7gLUS3x();
79198
+ var require_dist10 = require_dist_CxgTulEG();
79199
+ var require_retired_settings_keys = require_retired_settings_keys_BbjWjol0();
79200
79200
  var node_crypto = __require("crypto");
79201
79201
  var node_fs = __require("fs");
79202
79202
  var node_module = __require("module");
@@ -81475,7 +81475,7 @@ var require_storage_orchestrator_addon = __commonJS({
81475
81475
  [Symbol.toStringTag]: { value: "Module" }
81476
81476
  });
81477
81477
  var require_chunk = require_chunk_Cek0wNdY();
81478
- var require_dist10 = require_dist_CImxMt5h();
81478
+ var require_dist10 = require_dist_CxgTulEG();
81479
81479
  var node_crypto = __require("crypto");
81480
81480
  var node_fs_promises = __require("fs/promises");
81481
81481
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -83356,7 +83356,7 @@ var require_system_config_addon = __commonJS({
83356
83356
  [Symbol.toStringTag]: { value: "Module" }
83357
83357
  });
83358
83358
  require_chunk_Cek0wNdY();
83359
- var require_dist10 = require_dist_CImxMt5h();
83359
+ var require_dist10 = require_dist_CxgTulEG();
83360
83360
  var SECTION_TITLES = {
83361
83361
  server: "Server",
83362
83362
  auth: "Authentication"
@@ -101417,7 +101417,7 @@ var require_winston_logging = __commonJS({
101417
101417
  [Symbol.toStringTag]: { value: "Module" }
101418
101418
  });
101419
101419
  var require_chunk = require_chunk_Cek0wNdY();
101420
- var require_dist10 = require_dist_CImxMt5h();
101420
+ var require_dist10 = require_dist_CxgTulEG();
101421
101421
  var require_formatter = require_formatter_DqAKDlvN();
101422
101422
  var node_path = __require("path");
101423
101423
  node_path = require_chunk.__toESM(node_path);
@@ -113905,12 +113905,12 @@ var require_dist2 = __commonJS({
113905
113905
  }
113906
113906
  });
113907
113907
 
113908
- // ../system/dist/manifest-python-deps-BqWrDjSN.js
113909
- var require_manifest_python_deps_BqWrDjSN = __commonJS({
113910
- "../system/dist/manifest-python-deps-BqWrDjSN.js"(exports) {
113908
+ // ../system/dist/manifest-python-deps-CcDe4S2Z.js
113909
+ var require_manifest_python_deps_CcDe4S2Z = __commonJS({
113910
+ "../system/dist/manifest-python-deps-CcDe4S2Z.js"(exports) {
113911
113911
  "use strict";
113912
113912
  var require_chunk = require_chunk_Cek0wNdY();
113913
- require_dist_CImxMt5h();
113913
+ require_dist_CxgTulEG();
113914
113914
  var node_crypto = __require("crypto");
113915
113915
  node_crypto = require_chunk.__toESM(node_crypto);
113916
113916
  var _camstack_types_node = require_node();
@@ -113924,14 +113924,161 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
113924
113924
  var node_fs = __require("fs");
113925
113925
  node_fs = require_chunk.__toESM(node_fs);
113926
113926
  var node_http = __require("http");
113927
- var node_perf_hooks = __require("perf_hooks");
113928
113927
  var node_v8 = __require("v8");
113929
113928
  node_v8 = require_chunk.__toESM(node_v8);
113929
+ var node_perf_hooks = __require("perf_hooks");
113930
113930
  var node_vm = __require("vm");
113931
113931
  node_vm = require_chunk.__toESM(node_vm);
113932
113932
  var _camstack_types_addon = require_addon();
113933
113933
  var node_net = __require("net");
113934
113934
  var _trpc_client = require_dist2();
113935
+ function createEventPlaneReader(sources) {
113936
+ return () => {
113937
+ try {
113938
+ const registry = sources.registry();
113939
+ if (registry === null) return void 0;
113940
+ const children = [];
113941
+ const listed = registry.listChildren();
113942
+ for (const child of listed) {
113943
+ const stats = registry.getChildEventStats(child.childId);
113944
+ if (stats === null) continue;
113945
+ children.push({
113946
+ childId: child.childId,
113947
+ sent: stats.sent,
113948
+ suppressed: stats.suppressed
113949
+ });
113950
+ }
113951
+ const crossNode = sources.crossNodeStats();
113952
+ return {
113953
+ udsMode: registry.eventFanoutMode,
113954
+ crossNodeMode: sources.crossNodeMode(),
113955
+ children,
113956
+ childrenConnected: listed.length,
113957
+ childrenUndeclared: registry.undeclaredChildCount(),
113958
+ crossNodeDelivered: crossNode?.delivered ?? 0,
113959
+ crossNodeSuppressed: crossNode?.suppressed ?? 0
113960
+ };
113961
+ } catch {
113962
+ return;
113963
+ }
113964
+ };
113965
+ }
113966
+ var EVENT_PLANE_TOP_N = 5;
113967
+ var EMPTY_EVENT_PLANE_BASELINE = {
113968
+ children: /* @__PURE__ */ new Map(),
113969
+ crossNodeDelivered: 0,
113970
+ crossNodeSuppressed: 0
113971
+ };
113972
+ function diffEventPlane(baseline, current, topN = 5) {
113973
+ const deltas = [];
113974
+ let fanoutSent = 0;
113975
+ let fanoutSuppressed = 0;
113976
+ for (const sample of current.children) {
113977
+ const before = baseline.children.get(sample.childId);
113978
+ const sent = Math.max(0, sample.sent - (before?.sent ?? 0));
113979
+ const suppressed = Math.max(0, sample.suppressed - (before?.suppressed ?? 0));
113980
+ fanoutSent += sent;
113981
+ fanoutSuppressed += suppressed;
113982
+ if (sent > 0 || suppressed > 0) deltas.push({
113983
+ childId: sample.childId,
113984
+ sent,
113985
+ suppressed
113986
+ });
113987
+ }
113988
+ return {
113989
+ udsMode: current.udsMode,
113990
+ crossNodeMode: current.crossNodeMode,
113991
+ childrenConnected: current.childrenConnected,
113992
+ childrenUndeclared: current.childrenUndeclared,
113993
+ fanoutSent,
113994
+ fanoutSuppressed,
113995
+ crossNodeDelivered: Math.max(0, current.crossNodeDelivered - baseline.crossNodeDelivered),
113996
+ crossNodeSuppressed: Math.max(0, current.crossNodeSuppressed - baseline.crossNodeSuppressed),
113997
+ top: deltas.toSorted((a, b) => b.sent - a.sent || a.childId.localeCompare(b.childId)).slice(0, topN)
113998
+ };
113999
+ }
114000
+ function createEventPlaneMeter(reader, topN = 5) {
114001
+ let baseline = EMPTY_EVENT_PLANE_BASELINE;
114002
+ return { read: () => {
114003
+ const current = reader();
114004
+ if (current === void 0) return void 0;
114005
+ const window2 = diffEventPlane(baseline, current, topN);
114006
+ baseline = {
114007
+ children: new Map(current.children.map((s) => [s.childId, s])),
114008
+ crossNodeDelivered: current.crossNodeDelivered,
114009
+ crossNodeSuppressed: current.crossNodeSuppressed
114010
+ };
114011
+ return window2;
114012
+ } };
114013
+ }
114014
+ function formatEventPlane(window2) {
114015
+ if (window2 === void 0) return "";
114016
+ const top = window2.top.map((d) => `${d.childId}:${d.sent}/${d.suppressed}`).join(",");
114017
+ return ` fanoutMode=uds:${window2.udsMode}/cross-node:${window2.crossNodeMode} children=${window2.childrenConnected} childrenUndeclared=${window2.childrenUndeclared} fanoutSent=${window2.fanoutSent} fanoutSuppressed=${window2.fanoutSuppressed} crossNodeDelivered=${window2.crossNodeDelivered} crossNodeSuppressed=${window2.crossNodeSuppressed}` + (top.length === 0 ? "" : ` fanoutTop=${top}`);
114018
+ }
114019
+ var DECISIVE_HEAP_SPACES = ["old_space", "large_object_space"];
114020
+ var HEAP_SPACE_REPORT_MIN_MB = 32;
114021
+ var BYTES_PER_MB = 1048576;
114022
+ function mb(bytes) {
114023
+ return Math.round(bytes / BYTES_PER_MB);
114024
+ }
114025
+ function tenthsMb(bytes) {
114026
+ return Math.round(bytes / BYTES_PER_MB * 10) / 10;
114027
+ }
114028
+ function readHeapSpaces() {
114029
+ try {
114030
+ return node_v8.getHeapSpaceStatistics().map((space) => ({
114031
+ name: space.space_name,
114032
+ usedBytes: space.space_used_size
114033
+ }));
114034
+ } catch {
114035
+ return [];
114036
+ }
114037
+ }
114038
+ function heapSpaceField(v8Name) {
114039
+ return v8Name.replace(/_([a-z])/g, (_match, letter) => letter.toUpperCase());
114040
+ }
114041
+ function selectReportedSpaces(spaces, minMb = 32) {
114042
+ const decisive = DECISIVE_HEAP_SPACES.map((name) => spaces.find((space) => space.name === name)).filter((space) => space !== void 0);
114043
+ const rest = spaces.filter((space) => !DECISIVE_HEAP_SPACES.includes(space.name)).filter((space) => mb(space.usedBytes) >= minMb).toSorted((a, b) => b.usedBytes - a.usedBytes || a.name.localeCompare(b.name));
114044
+ return [...decisive, ...rest];
114045
+ }
114046
+ function formatHeapSpaces(spaces, minMb = 32) {
114047
+ const selected = selectReportedSpaces(spaces, minMb);
114048
+ if (selected.length === 0) return "";
114049
+ return ` ${selected.map((s) => `${heapSpaceField(s.name)}=${mb(s.usedBytes)}MB`).join(" ")}`;
114050
+ }
114051
+ var RUNNER_HEAP_SNAPSHOT_ENV = "CAMSTACK_RUNNER_HEAP_SNAPSHOT";
114052
+ function heapSnapshotAuthorised(env = process.env) {
114053
+ return env[RUNNER_HEAP_SNAPSHOT_ENV] === "on";
114054
+ }
114055
+ var defaultDeps = {
114056
+ readMemory: () => process.memoryUsage(),
114057
+ readSpaces: readHeapSpaces,
114058
+ writeSnapshot: (path) => {
114059
+ node_v8.writeHeapSnapshot(path);
114060
+ },
114061
+ env: process.env
114062
+ };
114063
+ function emitHeapDiagnosticReport(request, deps = defaultDeps) {
114064
+ try {
114065
+ const mu = deps.readMemory();
114066
+ const spaces = deps.readSpaces().filter((space) => space.usedBytes > 0).map((space) => `${space.name}=${tenthsMb(space.usedBytes)}`).join(" ");
114067
+ request.sink.info(`[mem] node="${request.label}" addons=[${request.addons.join(",")}] rss=${tenthsMb(mu.rss)} heapUsed=${tenthsMb(mu.heapUsed)} heapTotal=${tenthsMb(mu.heapTotal)} external=${tenthsMb(mu.external)} arrayBuffers=${tenthsMb(mu.arrayBuffers)} | ${spaces}`);
114068
+ } catch (error) {
114069
+ request.sink.warn(`[mem] node="${request.label}" space report failed: ${error instanceof Error ? error.message : String(error)}`);
114070
+ }
114071
+ if (!heapSnapshotAuthorised(deps.env)) {
114072
+ request.sink.info(`[mem] node="${request.label}" heap snapshot NOT taken \u2014 it is an admin mutation (a multi-GB write and a stop-the-world walk of the heap). The per-space breakdown above is the free half and needs no authorisation. Set ${RUNNER_HEAP_SNAPSHOT_ENV}=on for this runner and signal again to take one.`);
114073
+ return;
114074
+ }
114075
+ try {
114076
+ deps.writeSnapshot(request.snapshotPath);
114077
+ request.sink.info(`[mem] node="${request.label}" heap snapshot written -> ${request.snapshotPath}`);
114078
+ } catch (error) {
114079
+ request.sink.warn(`[mem] node="${request.label}" snapshot failed: ${error instanceof Error ? error.message : String(error)}`);
114080
+ }
114081
+ }
113935
114082
  var HUB_MAIN_HEAP_WATCH_LABEL = "hub-main";
113936
114083
  var HEAP_WATCH_INTERVAL_MS = 6e4;
113937
114084
  var HEAP_WATCH_WARN_RATIO = 0.8;
@@ -113943,6 +114090,10 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
113943
114090
  }
113944
114091
  var HEAP_RECLAIM_TRIGGER_MB = 1024;
113945
114092
  var HEAP_RECLAIM_MIN_INTERVAL_MS = 12e4;
114093
+ var HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS = 6e5;
114094
+ function reclaimIntervalMs(passesAtFloor, minIntervalMs = HEAP_RECLAIM_MIN_INTERVAL_MS, steadyStateIntervalMs = HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, steadyStatePasses = 6) {
114095
+ return passesAtFloor >= steadyStatePasses ? Math.max(minIntervalMs, steadyStateIntervalMs) : minIntervalMs;
114096
+ }
113946
114097
  var ZERO_LOOP_DELAY = {
113947
114098
  p50Ms: 0,
113948
114099
  p99Ms: 0,
@@ -113952,14 +114103,15 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
113952
114103
  try {
113953
114104
  const histogram = (0, node_perf_hooks.monitorEventLoopDelay)({ resolution: resolutionMs });
113954
114105
  histogram.enable();
114106
+ const delay2 = (nanoseconds) => Math.max(0, Math.round(nanoseconds / 1e6) - resolutionMs);
113955
114107
  return {
113956
114108
  read: () => {
113957
114109
  try {
113958
114110
  if (histogram.count === 0) return ZERO_LOOP_DELAY;
113959
114111
  const sample = {
113960
- p50Ms: Math.round(histogram.percentile(50) / 1e6),
113961
- p99Ms: Math.round(histogram.percentile(99) / 1e6),
113962
- maxMs: Math.round(histogram.max / 1e6)
114112
+ p50Ms: delay2(histogram.percentile(50)),
114113
+ p99Ms: delay2(histogram.percentile(99)),
114114
+ maxMs: delay2(histogram.max)
113963
114115
  };
113964
114116
  histogram.reset();
113965
114117
  return sample;
@@ -114069,16 +114221,19 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
114069
114221
  function formatOverBudget(label, b, source) {
114070
114222
  return `[mem] ${label} OVER RSS BUDGET rss=${b.rssMb}MB budget=${b.budgetMb}MB over=+${b.overMb}MB shape=${b.shape} heapUsed=${b.heapUsedMb}MB(${share(b.heapUsedMb, b.rssMb)}%) external=${b.externalMb}MB(${share(b.externalMb, b.rssMb)}%) nativeResidue=${b.nativeResidueMb}MB(${share(b.nativeResidueMb, b.rssMb)}%) arrayBuffers=${b.arrayBuffersMb}MB budgetFrom="${source}" \u2014 ${SHAPE_ADVICE[b.shape]}`;
114071
114223
  }
114072
- function format2(label, s, loop, budgetMb) {
114224
+ function format2(label, s, loop, budgetMb, suffix) {
114073
114225
  const line = `[mem] ${label} rss=${s.rssMb}MB heapUsed=${s.heapUsedMb}MB heapTotal=${s.heapTotalMb}MB heapLimit=${s.heapLimitMb}MB used=${Math.round(s.usedRatio * 100)}% external=${s.externalMb}MB arrayBuffers=${s.arrayBuffersMb}MB` + (budgetMb === void 0 ? "" : ` rssBudget=${budgetMb}MB`);
114074
- if (loop === void 0) return line;
114075
- return `${line} loopP50=${loop.p50Ms}ms loopP99=${loop.p99Ms}ms loopMax=${loop.maxMs}ms`;
114226
+ if (loop === void 0) return `${line}${suffix}`;
114227
+ return `${line} loopP50=${loop.p50Ms}ms loopP99=${loop.p99Ms}ms loopMax=${loop.maxMs}ms${suffix}`;
114076
114228
  }
114077
- function startHeapWatch(label = HUB_MAIN_HEAP_WATCH_LABEL, sink = consoleSink, intervalMs = HEAP_WATCH_INTERVAL_MS, reclaimOptions, loopDelay = createLoopDelayMeter(), execArgv = process.execArgv, announceCeilingOrigin = true, rssBudget) {
114229
+ function startHeapWatch(label = HUB_MAIN_HEAP_WATCH_LABEL, sink = consoleSink, intervalMs = HEAP_WATCH_INTERVAL_MS, reclaimOptions, loopDelay = createLoopDelayMeter(), execArgv = process.execArgv, announceCeilingOrigin = true, rssBudget, probes) {
114230
+ const readSpaces = probes?.readSpaces ?? readHeapSpaces;
114231
+ const eventPlane = probes?.eventPlane === void 0 ? void 0 : createEventPlaneMeter(probes.eventPlane);
114078
114232
  const readMemory = reclaimOptions?.readMemory ?? (() => process.memoryUsage());
114079
114233
  const now = reclaimOptions?.now ?? (() => Date.now());
114080
114234
  const triggerMb = reclaimOptions?.triggerMb ?? 1024;
114081
114235
  const minIntervalMs = reclaimOptions?.minIntervalMs ?? 12e4;
114236
+ const steadyStateIntervalMs = reclaimOptions?.steadyStateIntervalMs ?? 6e5;
114082
114237
  const fastIntervalMs = reclaimOptions?.fastIntervalMs ?? 2e3;
114083
114238
  const escalateRatio = reclaimOptions?.escalateRatio ?? 0.7;
114084
114239
  const deescalateRatio = reclaimOptions?.deescalateRatio ?? 0.6;
@@ -114096,9 +114251,10 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
114096
114251
  steadyStateAnnounced = false;
114097
114252
  return;
114098
114253
  }
114254
+ const floorMs = reclaimIntervalMs(passesAtFloor, minIntervalMs, steadyStateIntervalMs);
114099
114255
  const sinceLast = now() - lastReclaimAt;
114100
- if (sinceLast < minIntervalMs) return;
114101
- passesAtFloor = sinceLast <= minIntervalMs * 2 ? passesAtFloor + 1 : 1;
114256
+ if (sinceLast < floorMs) return;
114257
+ passesAtFloor = sinceLast <= floorMs * 2 ? passesAtFloor + 1 : 1;
114102
114258
  lastReclaimAt = now();
114103
114259
  const startedAt = now();
114104
114260
  try {
@@ -114111,7 +114267,8 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
114111
114267
  sink.info(`[mem] reclaim ${label} stranded=${strandedMb(sample)}MB rss=${sample.rssMb}MB\u2192${after.rssMb}MB freed=${sample.rssMb - after.rssMb}MB arrayBuffers=${sample.arrayBuffersMb}MB\u2192${after.arrayBuffersMb}MB took=${now() - startedAt}ms`);
114112
114268
  if (passesAtFloor >= 6 && !steadyStateAnnounced) {
114113
114269
  steadyStateAnnounced = true;
114114
- sink.warn(`[mem] reclaim ${label} has run at the floor for ${passesAtFloor} consecutive passes (every ${minIntervalMs}ms) \u2014 the stop-the-world is now STEADY STATE, not a rescue. The allocation source is what needs the fix; this pass only bounds its peak.`);
114270
+ const nextFloorMs = reclaimIntervalMs(passesAtFloor, minIntervalMs, steadyStateIntervalMs);
114271
+ sink.warn(`[mem] reclaim ${label} has run at the floor for ${passesAtFloor} consecutive passes (every ${minIntervalMs}ms) \u2014 the stop-the-world is now STEADY STATE, not a rescue: stranded never fell back under ${triggerMb}MB between passes, so the trigger is not discriminating on this process and what is left deciding is the timer. BACKING OFF to every ${nextFloorMs}ms \u2014 the pass keeps running (it is still the only measurement of this process's live ArrayBuffer set) at a cost the router can pay. The allocation source is what needs the fix; this pass only bounds its peak.`);
114115
114272
  }
114116
114273
  };
114117
114274
  let mode = "steady";
@@ -114149,7 +114306,7 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
114149
114306
  const due = at - lastLoggedAt >= intervalMs;
114150
114307
  if (mode === "escalated" || due) {
114151
114308
  lastLoggedAt = at;
114152
- const line = format2(label, sample, loopDelay?.read(), budgetMb);
114309
+ const line = format2(label, sample, loopDelay?.read(), budgetMb, `${formatHeapSpaces(readSpaces())}${formatEventPlane(eventPlane?.read())}`);
114153
114310
  if (sample.nearLimit) sink.warn(`${line} \u2014 APPROACHING HEAP LIMIT`);
114154
114311
  else if (mode === "escalated") sink.warn(`${line} \u2014 heap elevated, sampling every ${probeIntervalMs}ms`);
114155
114312
  else sink.info(line);
@@ -118254,6 +118411,34 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
118254
118411
  };
118255
118412
  }
118256
118413
  /**
118414
+ * The regime the counters above were produced under, read once from
118415
+ * `CAMSTACK_UDS_EVENT_FANOUT` at construction.
118416
+ *
118417
+ * A suppressed count means "nothing WAS dropped" under `filter` and "nothing
118418
+ * WOULD have been dropped" under `shadow`. Those are different claims, and
118419
+ * until this getter existed the mode was invisible at runtime — the counters
118420
+ * were readable and the regime that produced them was not.
118421
+ */
118422
+ get eventFanoutMode() {
118423
+ return this.fanoutMode;
118424
+ }
118425
+ /**
118426
+ * Connected children that never declared a subscription pattern set.
118427
+ *
118428
+ * Each one is a fail-open on BOTH planes: `childWantsEvent` returns true for
118429
+ * an undeclared child ({@link ChildEntry.eventPatterns} `=== null`), and
118430
+ * `aggregateEventInterest` returns `null` — accept everything — if ANY
118431
+ * connected child is undeclared, which disables the node's inbound cross-node
118432
+ * gate as well. **One legacy runner silently turns off the filtering for the
118433
+ * whole node**, and nothing reported it, so a zero here is as load-bearing as
118434
+ * a non-zero one.
118435
+ */
118436
+ undeclaredChildCount() {
118437
+ let count = 0;
118438
+ for (const entry of this.children.values()) if (entry.eventPatterns === null) count += 1;
118439
+ return count;
118440
+ }
118441
+ /**
118257
118442
  * Does `entry` want to receive an event in `category`? Honours the fan-out
118258
118443
  * mode: `broadcast` → always; undeclared patterns (`null`) → always
118259
118444
  * (fail-open); else the child's declared set must match via `matchesPattern`
@@ -120709,12 +120894,24 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120709
120894
  return CapabilityUnavailableError;
120710
120895
  }
120711
120896
  });
120897
+ Object.defineProperty(exports, "DECISIVE_HEAP_SPACES", {
120898
+ enumerable: true,
120899
+ get: function() {
120900
+ return DECISIVE_HEAP_SPACES;
120901
+ }
120902
+ });
120712
120903
  Object.defineProperty(exports, "DeviceRegistry", {
120713
120904
  enumerable: true,
120714
120905
  get: function() {
120715
120906
  return DeviceRegistry;
120716
120907
  }
120717
120908
  });
120909
+ Object.defineProperty(exports, "EVENT_PLANE_TOP_N", {
120910
+ enumerable: true,
120911
+ get: function() {
120912
+ return EVENT_PLANE_TOP_N;
120913
+ }
120914
+ });
120718
120915
  Object.defineProperty(exports, "EVENT_TOPIC_PREFIX", {
120719
120916
  enumerable: true,
120720
120917
  get: function() {
@@ -120733,12 +120930,24 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120733
120930
  return HEAP_RECLAIM_MIN_INTERVAL_MS;
120734
120931
  }
120735
120932
  });
120933
+ Object.defineProperty(exports, "HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS", {
120934
+ enumerable: true,
120935
+ get: function() {
120936
+ return HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS;
120937
+ }
120938
+ });
120736
120939
  Object.defineProperty(exports, "HEAP_RECLAIM_TRIGGER_MB", {
120737
120940
  enumerable: true,
120738
120941
  get: function() {
120739
120942
  return HEAP_RECLAIM_TRIGGER_MB;
120740
120943
  }
120741
120944
  });
120945
+ Object.defineProperty(exports, "HEAP_SPACE_REPORT_MIN_MB", {
120946
+ enumerable: true,
120947
+ get: function() {
120948
+ return HEAP_SPACE_REPORT_MIN_MB;
120949
+ }
120950
+ });
120742
120951
  Object.defineProperty(exports, "HEAP_WATCH_INTERVAL_MS", {
120743
120952
  enumerable: true,
120744
120953
  get: function() {
@@ -120811,6 +121020,12 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120811
121020
  return RSS_BUDGET_RELEASE_RATIO;
120812
121021
  }
120813
121022
  });
121023
+ Object.defineProperty(exports, "RUNNER_HEAP_SNAPSHOT_ENV", {
121024
+ enumerable: true,
121025
+ get: function() {
121026
+ return RUNNER_HEAP_SNAPSHOT_ENV;
121027
+ }
121028
+ });
120814
121029
  Object.defineProperty(exports, "RUNNER_HEAP_WATCH_INTERVAL_MS", {
120815
121030
  enumerable: true,
120816
121031
  get: function() {
@@ -120847,6 +121062,12 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120847
121062
  return UdsLocalTransportServer;
120848
121063
  }
120849
121064
  });
121065
+ Object.defineProperty(exports, "ZERO_LOOP_DELAY", {
121066
+ enumerable: true,
121067
+ get: function() {
121068
+ return ZERO_LOOP_DELAY;
121069
+ }
121070
+ });
120850
121071
  Object.defineProperty(exports, "__resetCapUsageRegistryForTests", {
120851
121072
  enumerable: true,
120852
121073
  get: function() {
@@ -120973,6 +121194,18 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120973
121194
  return createDeferredHeapWatchSink;
120974
121195
  }
120975
121196
  });
121197
+ Object.defineProperty(exports, "createEventPlaneMeter", {
121198
+ enumerable: true,
121199
+ get: function() {
121200
+ return createEventPlaneMeter;
121201
+ }
121202
+ });
121203
+ Object.defineProperty(exports, "createEventPlaneReader", {
121204
+ enumerable: true,
121205
+ get: function() {
121206
+ return createEventPlaneReader;
121207
+ }
121208
+ });
120976
121209
  Object.defineProperty(exports, "createHubCapForwardService", {
120977
121210
  enumerable: true,
120978
121211
  get: function() {
@@ -120991,6 +121224,12 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
120991
121224
  return createLocalTransport;
120992
121225
  }
120993
121226
  });
121227
+ Object.defineProperty(exports, "createLoopDelayMeter", {
121228
+ enumerable: true,
121229
+ get: function() {
121230
+ return createLoopDelayMeter;
121231
+ }
121232
+ });
120994
121233
  Object.defineProperty(exports, "createParentUnownedCallHandler", {
120995
121234
  enumerable: true,
120996
121235
  get: function() {
@@ -121045,12 +121284,36 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
121045
121284
  return deserializeTypedArrays;
121046
121285
  }
121047
121286
  });
121287
+ Object.defineProperty(exports, "diffEventPlane", {
121288
+ enumerable: true,
121289
+ get: function() {
121290
+ return diffEventPlane;
121291
+ }
121292
+ });
121293
+ Object.defineProperty(exports, "emitHeapDiagnosticReport", {
121294
+ enumerable: true,
121295
+ get: function() {
121296
+ return emitHeapDiagnosticReport;
121297
+ }
121298
+ });
121048
121299
  Object.defineProperty(exports, "encodeFrame", {
121049
121300
  enumerable: true,
121050
121301
  get: function() {
121051
121302
  return encodeFrame;
121052
121303
  }
121053
121304
  });
121305
+ Object.defineProperty(exports, "formatEventPlane", {
121306
+ enumerable: true,
121307
+ get: function() {
121308
+ return formatEventPlane;
121309
+ }
121310
+ });
121311
+ Object.defineProperty(exports, "formatHeapSpaces", {
121312
+ enumerable: true,
121313
+ get: function() {
121314
+ return formatHeapSpaces;
121315
+ }
121316
+ });
121054
121317
  Object.defineProperty(exports, "getBrokerEventBus", {
121055
121318
  enumerable: true,
121056
121319
  get: function() {
@@ -121099,6 +121362,18 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
121099
121362
  return getWorkerNativeCapSnapshot;
121100
121363
  }
121101
121364
  });
121365
+ Object.defineProperty(exports, "heapSnapshotAuthorised", {
121366
+ enumerable: true,
121367
+ get: function() {
121368
+ return heapSnapshotAuthorised;
121369
+ }
121370
+ });
121371
+ Object.defineProperty(exports, "heapSpaceField", {
121372
+ enumerable: true,
121373
+ get: function() {
121374
+ return heapSpaceField;
121375
+ }
121376
+ });
121102
121377
  Object.defineProperty(exports, "hubMainRssBudget", {
121103
121378
  enumerable: true,
121104
121379
  get: function() {
@@ -121159,6 +121434,24 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
121159
121434
  return parseRssBudgetMb;
121160
121435
  }
121161
121436
  });
121437
+ Object.defineProperty(exports, "readHeapSpaces", {
121438
+ enumerable: true,
121439
+ get: function() {
121440
+ return readHeapSpaces;
121441
+ }
121442
+ });
121443
+ Object.defineProperty(exports, "readMoleculerFanoutMode", {
121444
+ enumerable: true,
121445
+ get: function() {
121446
+ return readMoleculerFanoutMode;
121447
+ }
121448
+ });
121449
+ Object.defineProperty(exports, "reclaimIntervalMs", {
121450
+ enumerable: true,
121451
+ get: function() {
121452
+ return reclaimIntervalMs;
121453
+ }
121454
+ });
121162
121455
  Object.defineProperty(exports, "registerEventBusService", {
121163
121456
  enumerable: true,
121164
121457
  get: function() {
@@ -121189,6 +121482,12 @@ var require_manifest_python_deps_BqWrDjSN = __commonJS({
121189
121482
  return runNpm;
121190
121483
  }
121191
121484
  });
121485
+ Object.defineProperty(exports, "selectReportedSpaces", {
121486
+ enumerable: true,
121487
+ get: function() {
121488
+ return selectReportedSpaces;
121489
+ }
121490
+ });
121192
121491
  Object.defineProperty(exports, "serializeTypedArrays", {
121193
121492
  enumerable: true,
121194
121493
  get: function() {
@@ -125057,7 +125356,7 @@ var require_dist3 = __commonJS({
125057
125356
  "use strict";
125058
125357
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
125059
125358
  var require_chunk = require_chunk_Cek0wNdY();
125060
- var require_dist10 = require_dist_CImxMt5h();
125359
+ var require_dist10 = require_dist_CxgTulEG();
125061
125360
  var require_builtins_alerts_alerts_addon = require_alerts_addon();
125062
125361
  require_alerts();
125063
125362
  var require_formatter = require_formatter_DqAKDlvN();
@@ -125083,7 +125382,7 @@ var require_dist3 = __commonJS({
125083
125382
  var require_builtins_winston_logging_index = require_winston_logging();
125084
125383
  var require_file_data_plane = require_file_data_plane_DO8KbxCe();
125085
125384
  var require_tls$1 = require_tls_u8QCJCFE();
125086
- var require_manifest_python_deps = require_manifest_python_deps_BqWrDjSN();
125385
+ var require_manifest_python_deps = require_manifest_python_deps_CcDe4S2Z();
125087
125386
  var require_resource_monitor = require_resource_monitor_CdnzxBLP();
125088
125387
  var require_custom_action_registry = require_custom_action_registry_jY0NOZK8();
125089
125388
  var zod = require_zod();
@@ -205454,6 +205753,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205454
205753
  exports.ConsoleLoggingAddon = require_builtins_console_logging_index.ConsoleLoggingAddon$1;
205455
205754
  exports.CoreBlocksAddon = require_builtins_core_blocks_core_blocks_addon.CoreBlocksAddon;
205456
205755
  exports.CustomActionRegistry = require_custom_action_registry.CustomActionRegistry;
205756
+ exports.DECISIVE_HEAP_SPACES = require_manifest_python_deps.DECISIVE_HEAP_SPACES;
205457
205757
  exports.DEFAULT_DATA_PATH = DEFAULT_DATA_PATH;
205458
205758
  exports.DEFAULT_LAN_HTTP_PORT = require_tls$1.DEFAULT_LAN_HTTP_PORT;
205459
205759
  exports.DEFAULT_LOG_LEVEL = DEFAULT_LOG_LEVEL;
@@ -205463,6 +205763,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205463
205763
  exports.DeviceManagerAddon = require_builtins_device_manager_device_manager_addon.DeviceManagerAddon;
205464
205764
  exports.DeviceRegistry = require_manifest_python_deps.DeviceRegistry;
205465
205765
  exports.DeviceStore = require_builtins_sqlite_storage_index.DeviceStore$1;
205766
+ exports.EVENT_PLANE_TOP_N = require_manifest_python_deps.EVENT_PLANE_TOP_N;
205466
205767
  exports.EVENT_TOPIC_PREFIX = require_manifest_python_deps.EVENT_TOPIC_PREFIX;
205467
205768
  exports.EngineManagerResolver = EngineManagerResolver;
205468
205769
  exports.EventBus = EventBus;
@@ -205475,7 +205776,9 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205475
205776
  exports.HEALTH_MONITOR_RETRY_INTERVALS_MS = HEALTH_MONITOR_RETRY_INTERVALS_MS;
205476
205777
  exports.HEALTH_MONITOR_TICK_MS = HEALTH_MONITOR_TICK_MS;
205477
205778
  exports.HEAP_RECLAIM_MIN_INTERVAL_MS = require_manifest_python_deps.HEAP_RECLAIM_MIN_INTERVAL_MS;
205779
+ exports.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS = require_manifest_python_deps.HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS;
205478
205780
  exports.HEAP_RECLAIM_TRIGGER_MB = require_manifest_python_deps.HEAP_RECLAIM_TRIGGER_MB;
205781
+ exports.HEAP_SPACE_REPORT_MIN_MB = require_manifest_python_deps.HEAP_SPACE_REPORT_MIN_MB;
205479
205782
  exports.HEAP_WATCH_INTERVAL_MS = require_manifest_python_deps.HEAP_WATCH_INTERVAL_MS;
205480
205783
  exports.HEAP_WATCH_WARN_RATIO = require_manifest_python_deps.HEAP_WATCH_WARN_RATIO;
205481
205784
  exports.HUB_CAP_FWD_ACTION = require_manifest_python_deps.HUB_CAP_FWD_ACTION;
@@ -205524,6 +205827,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205524
205827
  exports.RESTART_MARKER_FILE = RESTART_MARKER_FILE;
205525
205828
  exports.RSS_BUDGET_REANNOUNCE_MIN_MS = require_manifest_python_deps.RSS_BUDGET_REANNOUNCE_MIN_MS;
205526
205829
  exports.RSS_BUDGET_RELEASE_RATIO = require_manifest_python_deps.RSS_BUDGET_RELEASE_RATIO;
205830
+ exports.RUNNER_HEAP_SNAPSHOT_ENV = require_manifest_python_deps.RUNNER_HEAP_SNAPSHOT_ENV;
205527
205831
  exports.RUNNER_HEAP_WATCH_INTERVAL_MS = require_manifest_python_deps.RUNNER_HEAP_WATCH_INTERVAL_MS;
205528
205832
  exports.RUNNER_RSS_BUDGET_ENV = require_manifest_python_deps.RUNNER_RSS_BUDGET_ENV;
205529
205833
  exports.RUNTIME_DEFAULTS = require_dist10.RUNTIME_DEFAULTS;
@@ -205552,6 +205856,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205552
205856
  exports.UserManager = require_builtins_local_auth_local_auth_addon.UserManager;
205553
205857
  exports.WinstonDestination = require_builtins_winston_logging_index.WinstonDestination$1;
205554
205858
  exports.WinstonLoggingAddon = require_builtins_winston_logging_index.WinstonLoggingAddon$1;
205859
+ exports.ZERO_LOOP_DELAY = require_manifest_python_deps.ZERO_LOOP_DELAY;
205555
205860
  exports.__resetCapUsageRegistryForTests = require_manifest_python_deps.__resetCapUsageRegistryForTests;
205556
205861
  exports.__resetLoggingGateForTests = __resetLoggingGateForTests;
205557
205862
  exports.adaptBrokerToCluster = require_manifest_python_deps.adaptBrokerToCluster;
@@ -205603,11 +205908,14 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205603
205908
  exports.createCoreCapService = createCoreCapService;
205604
205909
  exports.createDeferredHeapWatchSink = require_manifest_python_deps.createDeferredHeapWatchSink;
205605
205910
  exports.createDoorSettingsView = createDoorSettingsView;
205911
+ exports.createEventPlaneMeter = require_manifest_python_deps.createEventPlaneMeter;
205912
+ exports.createEventPlaneReader = require_manifest_python_deps.createEventPlaneReader;
205606
205913
  exports.createFileDataPlaneHandler = require_file_data_plane.createFileDataPlaneHandler;
205607
205914
  exports.createHubCapForwardService = require_manifest_python_deps.createHubCapForwardService;
205608
205915
  exports.createHubService = createHubService;
205609
205916
  exports.createKernelHwAccel = require_manifest_python_deps.createKernelHwAccel;
205610
205917
  exports.createLocalTransport = require_manifest_python_deps.createLocalTransport;
205918
+ exports.createLoopDelayMeter = require_manifest_python_deps.createLoopDelayMeter;
205611
205919
  exports.createParentUnownedCallHandler = require_manifest_python_deps.createParentUnownedCallHandler;
205612
205920
  exports.createProcessService = createProcessService;
205613
205921
  exports.createReadinessService = createReadinessService;
@@ -205625,6 +205933,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205625
205933
  exports.describeProviderKindDrift = describeProviderKindDrift;
205626
205934
  exports.describeRss = require_manifest_python_deps.describeRss;
205627
205935
  exports.detectWorkspacePackagesDir = detectWorkspacePackagesDir;
205936
+ exports.diffEventPlane = require_manifest_python_deps.diffEventPlane;
205628
205937
  Object.defineProperty(exports, "downloadBinary", {
205629
205938
  enumerable: true,
205630
205939
  get: function() {
@@ -205634,6 +205943,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205634
205943
  exports.downloadFile = require_file_data_plane.downloadFile;
205635
205944
  exports.downloadModel = require_file_data_plane.downloadModel;
205636
205945
  exports.emitDownForOwnedCaps = require_dist10.emitDownForOwnedCaps;
205946
+ exports.emitHeapDiagnosticReport = require_manifest_python_deps.emitHeapDiagnosticReport;
205637
205947
  exports.encodeFrame = require_manifest_python_deps.encodeFrame;
205638
205948
  exports.ensureAddonNativePrebuilds = ensureAddonNativePrebuilds;
205639
205949
  Object.defineProperty(exports, "ensureBinary", {
@@ -205668,6 +205978,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205668
205978
  return _camstack_types_node.findInPath;
205669
205979
  }
205670
205980
  });
205981
+ exports.formatEventPlane = require_manifest_python_deps.formatEventPlane;
205982
+ exports.formatHeapSpaces = require_manifest_python_deps.formatHeapSpaces;
205671
205983
  exports.formatLogLine = require_formatter.formatLogLine;
205672
205984
  exports.getBrokerEventBus = require_manifest_python_deps.getBrokerEventBus;
205673
205985
  exports.getCapUsageRegistry = require_manifest_python_deps.getCapUsageRegistry;
@@ -205700,6 +206012,8 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205700
206012
  exports.getWorkerDeviceRegistry = require_manifest_python_deps.getWorkerDeviceRegistry;
205701
206013
  exports.hasDotNode = hasDotNode;
205702
206014
  exports.hashClusterSecret = hashClusterSecret;
206015
+ exports.heapSnapshotAuthorised = require_manifest_python_deps.heapSnapshotAuthorised;
206016
+ exports.heapSpaceField = require_manifest_python_deps.heapSpaceField;
205703
206017
  exports.hubMainRssBudget = require_manifest_python_deps.hubMainRssBudget;
205704
206018
  exports.installManifestNativeDeps = require_manifest_python_deps.installManifestNativeDeps;
205705
206019
  exports.installManifestPythonDeps = require_manifest_python_deps.installManifestPythonDeps;
@@ -205738,11 +206052,14 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205738
206052
  exports.proxyToUpstream = proxyToUpstream;
205739
206053
  exports.quarantineAddonResidue = quarantineAddonResidue;
205740
206054
  exports.readExtraSans = require_tls$1.readExtraSans;
206055
+ exports.readHeapSpaces = require_manifest_python_deps.readHeapSpaces;
205741
206056
  exports.readLanHttpState = require_tls$1.readLanHttpState;
206057
+ exports.readMoleculerFanoutMode = require_manifest_python_deps.readMoleculerFanoutMode;
205742
206058
  exports.readPendingRestart = readPendingRestart;
205743
206059
  exports.readTlsAccessStatus = require_tls$1.readTlsAccessStatus;
205744
206060
  exports.readTlsMode = require_tls$1.readTlsMode;
205745
206061
  exports.readinessKey = require_dist10.readinessKey;
206062
+ exports.reclaimIntervalMs = require_manifest_python_deps.reclaimIntervalMs;
205746
206063
  exports.registerEventBusService = require_manifest_python_deps.registerEventBusService;
205747
206064
  exports.registerLanHttpHandler = require_tls$1.registerLanHttpHandler;
205748
206065
  exports.reissueTlsLeaf = require_tls$1.reissueTlsLeaf;
@@ -205756,6 +206073,7 @@ globstar while`, t, d, e, f, m), this.matchOne(t.slice(d), e.slice(f), s)) retur
205756
206073
  exports.scopesAllowAddon = require_dist10.scopesAllowAddon;
205757
206074
  exports.scopesAllowDeviceCap = require_dist10.scopesAllowDeviceCap;
205758
206075
  exports.selectAddonResidue = selectAddonResidue;
206076
+ exports.selectReportedSpaces = require_manifest_python_deps.selectReportedSpaces;
205759
206077
  exports.serializeTypedArrays = require_manifest_python_deps.serializeTypedArrays;
205760
206078
  exports.setHubConnected = require_manifest_python_deps.setHubConnected;
205761
206079
  exports.setNodeEventInterest = require_manifest_python_deps.setNodeEventInterest;
@@ -420662,7 +420980,17 @@ var require_main4 = __commonJS({
420662
420980
  const heapReclaimer = (0, system_1.createV8Reclaimer)();
420663
420981
  const heapReclaim = heapReclaimer === void 0 ? void 0 : { reclaim: heapReclaimer };
420664
420982
  const heapWatchSink = (0, system_1.createDeferredHeapWatchSink)(system_1.HUB_MAIN_HEAP_WATCH_LABEL);
420665
- (0, system_1.startHeapWatch)(system_1.HUB_MAIN_HEAP_WATCH_LABEL, heapWatchSink.sink, void 0, heapReclaim, void 0, void 0, true, (0, system_1.hubMainRssBudget)());
420983
+ let moleculerForEventPlane = null;
420984
+ (0, system_1.startHeapWatch)(system_1.HUB_MAIN_HEAP_WATCH_LABEL, heapWatchSink.sink, void 0, heapReclaim, void 0, void 0, true, (0, system_1.hubMainRssBudget)(), {
420985
+ eventPlane: (0, system_1.createEventPlaneReader)({
420986
+ registry: () => moleculerForEventPlane?.childRegistry ?? null,
420987
+ crossNodeStats: () => {
420988
+ const broker = moleculerForEventPlane?.broker;
420989
+ return broker === void 0 ? null : (0, system_1.getMoleculerEventStats)(broker);
420990
+ },
420991
+ crossNodeMode: () => (0, system_1.readMoleculerFanoutMode)()
420992
+ })
420993
+ });
420666
420994
  cleanupOrphanProcesses();
420667
420995
  let spaIndexHtml = null;
420668
420996
  const configPath = process.env.CONFIG_PATH ?? path.join(process.env.CAMSTACK_DATA ?? path.join(process.cwd(), "camstack-data"), "config.yaml");
@@ -420782,6 +421110,7 @@ var require_main4 = __commonJS({
420782
421110
  console.log("[bootstrap] app.init() complete \u2014 all onModuleInit hooks have run");
420783
421111
  capabilityRegistry.ready();
420784
421112
  const moleculer = app.get(moleculer_service_1.MoleculerService);
421113
+ moleculerForEventPlane = moleculer;
420785
421114
  moleculer.registerLogReceiver();
420786
421115
  capabilityRegistry.registerProvider("model-distributor", "$hub", (0, model_distributor_js_1.buildModelDistributorProvider)(moleculer, loggingService));
420787
421116
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.2.57",
3
+ "version": "1.2.58",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",