@camstack/system 1.2.290 → 1.2.292

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 (64) hide show
  1. package/dist/addon-runner.js +20 -62
  2. package/dist/addon-runner.mjs +4 -46
  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/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/console-logging/index.js +1 -1
  16. package/dist/builtins/console-logging/index.mjs +1 -1
  17. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  18. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  19. package/dist/builtins/device-manager/device-linked-devices.d.ts +2 -37
  20. package/dist/builtins/device-manager/device-manager.addon.js +4 -73
  21. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -71
  22. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  23. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  24. package/dist/builtins/hub-forwarder/index.js +1 -1
  25. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +9 -0
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +18 -2
  28. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +18 -2
  29. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  30. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  31. package/dist/builtins/local-network/local-network.addon.js +1 -1
  32. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  33. package/dist/builtins/loki-logging/index.js +1 -1
  34. package/dist/builtins/loki-logging/index.mjs +1 -1
  35. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  36. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  37. package/dist/builtins/platform-probe/index.js +1 -1
  38. package/dist/builtins/platform-probe/index.mjs +1 -1
  39. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  40. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  41. package/dist/builtins/snapshot/index.js +1 -1
  42. package/dist/builtins/snapshot/index.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  44. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  46. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  47. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +11 -11
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +11 -11
  49. package/dist/builtins/system-config/system-config.addon.js +1 -1
  50. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  51. package/dist/builtins/winston-logging/index.js +1 -1
  52. package/dist/builtins/winston-logging/index.mjs +1 -1
  53. package/dist/{manifest-system-deps-D_5UXqDb.mjs → child-cap-dispatch-CWkcQIRe.mjs} +55 -6
  54. package/dist/{manifest-system-deps-Dm7QhyvL.js → child-cap-dispatch-CzNzGnGm.js} +66 -5
  55. package/dist/{dist-KRK9zLWt.js → dist-D3zw1yHp.js} +1727 -1407
  56. package/dist/{dist-BkjMEa2F.mjs → dist-DU72-y3J.mjs} +1375 -1049
  57. package/dist/index.d.ts +4 -0
  58. package/dist/index.js +167 -166
  59. package/dist/index.mjs +3 -3
  60. package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +2 -1
  61. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +19 -0
  62. package/dist/{retired-settings-keys-DNK-p6aa.mjs → retired-settings-keys-DLOBYMC4.mjs} +1 -1
  63. package/dist/{retired-settings-keys-BSLMlTcz.js → retired-settings-keys-t6UWp6mL.js} +1 -1
  64. package/package.json +1 -1
@@ -1,4 +1,3 @@
1
- import { C as PEER_BYTES_CHUNK_BYTES } from "./dist-BkjMEa2F.mjs";
2
1
  import "./hub-cap-forward-BdT320dq.mjs";
3
2
  import * as crypto$1 from "node:crypto";
4
3
  import { randomBytes, randomUUID } from "node:crypto";
@@ -17,7 +16,7 @@ import * as v8 from "node:v8";
17
16
  import { Session } from "node:inspector/promises";
18
17
  import { monitorEventLoopDelay } from "node:perf_hooks";
19
18
  import * as vm from "node:vm";
20
- import { BOOT_RECOVERY_BACKOFF_MS, DATAPLANE_SECRET_HEADER, DEVICE_CHILDREN_BATCH_MAX, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, asJsonObject, asString, createDeviceProxy, createEventBusSliceSource, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, readNodePin, scopeKey, sleep, withCapInputDefaults } from "@camstack/types/addon";
19
+ import { BOOT_RECOVERY_BACKOFF_MS, DATAPLANE_SECRET_HEADER, DEVICE_CHILDREN_BATCH_MAX, DeviceType, DisposerChain, EventCategory, PEER_BYTES_CHUNK_BYTES, PEER_BYTES_MAX_OUTSTANDING, PEER_BYTES_STALL_MS, PEER_BYTES_TICKET_TTL_MS, ReadinessRegistry, asJsonObject, asString, createDeviceProxy, createEventBusSliceSource, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, readNodePin, scopeKey, sleep, withCapInputDefaults } from "@camstack/types/addon";
21
20
  import { once } from "node:events";
22
21
  import { connect, createConnection, createServer as createServer$1 } from "node:net";
23
22
  import { TRPCClientError, createTRPCClient } from "@trpc/client";
@@ -2707,9 +2706,9 @@ async function writeBufferWithBackpressure(res, bytes, stallMs) {
2707
2706
  }
2708
2707
  function createAddonPeerBytesFacility(args) {
2709
2708
  const now = args.now ?? (() => Date.now());
2710
- const ttlMs = args.ttlMs ?? 3e4;
2711
- const maxOutstanding = args.maxOutstanding ?? 64;
2712
- const stallMs = args.stallMs ?? 15e3;
2709
+ const ttlMs = args.ttlMs ?? PEER_BYTES_TICKET_TTL_MS;
2710
+ const maxOutstanding = args.maxOutstanding ?? PEER_BYTES_MAX_OUTSTANDING;
2711
+ const stallMs = args.stallMs ?? PEER_BYTES_STALL_MS;
2713
2712
  const host = args.host ?? "127.0.0.1";
2714
2713
  const hostNodeId = hostNodeIdOf(args.nodeId);
2715
2714
  const offers = /* @__PURE__ */ new Map();
@@ -12271,4 +12270,54 @@ async function defaultRun(command, args) {
12271
12270
  await execFileAsync(command, [...args], { timeout: INSTALL_TIMEOUT_MS });
12272
12271
  }
12273
12272
  //#endregion
12274
- export { buildNativeCapProxy as $, strandedMb as $t, createUdsLogger as A, readSocketQueues as An, HEAP_RECLAIM_TRIGGER_MB as At, UDS_NO_ROUTE_PREFIX as B, MAX_CAP_ACTIONS_PER_PEER as Bn, ZERO_LOOP_DELAY as Bt, deviceCapResolverLink as C, EMPTY_SOCKET_PLANE_BASELINE as Cn, resolveNpmInvocation as Ct, createUdsEventBridge as D, createSocketPlaneReader as Dn, createAddonDataPlaneFacility as Dt, createParentUnownedCallHandler as E, createSocketPlaneMeter as En, hostNodeIdOf as Et, callWithServiceDiscovery as F, socketDirectionBytes as Fn, HUB_RSS_BUDGET_ENV as Ft, getCapUsageRegistry as G, createEventPlaneMeter as Gn, describeRss as Gt, CapUsageRegistry as H, createCapActionCensus as Hn, createDeferredHeapWatchSink as Ht, CapRouteError as I, socketDirectionMessages as In, RSS_BUDGET_REANNOUNCE_MIN_MS as It, UdsLocalTransportServer as J, formatEventPlane as Jn, parseRssBudgetMb as Jt, createLocalTransport as K, createEventPlaneReader as Kn, hubMainRssBudget as Kt, classifyCapRoute as L, CAP_ACTION_OVERFLOW_LABEL as Ln, RSS_BUDGET_RELEASE_RATIO as Lt, AGENT_CAP_FWD_ACTION as M, createSocketDirectionCounters as Mn, HEAP_WATCH_WARN_RATIO as Mt, AGENT_CAP_FWD_SERVICE as N, recordSocketFrame as Nn, HUB_MAIN_HEAP_WATCH_LABEL as Nt, createUdsEventBus as O, diffSocketPlane as On, HEAP_RECLAIM_MIN_INTERVAL_MS as Ot, CapRouteResolver as P, sampleSocketDirection as Pn, HUB_MAIN_RSS_BUDGET_MB as Pt, encodeFrame as Q, startRunnerHeapWatch as Qt, LocalChildClient as R, CAP_ACTION_UNLABELLED as Rn, RUNNER_HEAP_WATCH_INTERVAL_MS as Rt, buildLinkChain as S, formatMeshQueue as Sn, buildNpmChildEnv as St, localProviderLink as T, SOCKET_QUEUE_TOP_N as Tn, createAddonPeerBytesFacility as Tt, PARENT_ROUTED_PROVIDER_ADDON_ID as U, diffCapActionCensus as Un, createLoopDelayMeter as Ut, readMoleculerFanoutMode as V, capActionLabel as Vn, buildHeapSample as Vt, __resetCapUsageRegistryForTests as W, EVENT_PLANE_TOP_N as Wn, createV8Reclaimer as Wt, localEndpointPath as X, shouldReclaim as Xt, SocketChannel as Y, reclaimIntervalMs as Yt, FrameDecoder as Z, startHeapWatch as Zt, AddonDepsManager as _, OUTBOUND_QUEUE_THRESHOLD_BYTES as _n, CapabilityHandle as _t, createUdsAddonContext as a, createInspectorArrayBufferCensus as an, setWorkerNativeCapsChangeListener as at, brokerCallForCap as b, MESH_QUEUE_TOP_N as bn, installManifestNativeDeps as bt, getOrInitReadinessRegistryForClient as c, DECISIVE_HEAP_SPACES as cn, NATIVE_PROVIDER_SERVICE_INFIX as ct, clusterEventTopic as d, formatHeapSpaces as dn, capBareAction as dt, ARRAY_BUFFER_CENSUS_COOLDOWN_MS as en, buildUdsNativeCapProxy as et, getBrokerEventBus as f, heapSpaceField as fn, capServiceName as ft, subscribePassthrough as g, OUTBOUND_QUEUE_SUSTAIN_MS as gn, DeviceRegistry as gt, setNodeEventInterest as h, OUTBOUND_QUEUE_COOLDOWN_MS as hn, serializeTypedArrays as ht, createAddonContext as i, createArrayBufferCensusGate as in, mountNativeCapService as it, createUdsLoggerWithControl as j, EMPTY_SOCKET_DIRECTION as jn, HEAP_WATCH_INTERVAL_MS as jt, udsChildLogToWorkerEntry as k, formatSocketPlane as kn, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS as kt, setHubConnected as l, HEAP_SPACE_REPORT_MIN_MB as ln, capActionName as lt, registerEventBusService as m, selectReportedSpaces as mn, deserializeTypedArrays as mt, installManifestPythonDeps as n, ARRAY_BUFFER_CENSUS_THRESHOLD_MB as nn, getWorkerNativeCapProvider as nt, getWorkerDeviceRegistry as o, formatArrayBufferCensus as on, createAddonService as ot, getMoleculerEventStats as p, readHeapSpaces as pn, parseCapAction as pt, UdsLocalTransportClient as q, diffEventPlane as qn, nextRssBudgetState as qt, adaptBrokerToCluster as r, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO as rn, getWorkerNativeCapSnapshot as rt, getOrInitReadinessRegistry as s, isArrayBufferCensusReport as sn, validateProviderRegistrations as st, installManifestSystemDeps as t, ARRAY_BUFFER_CENSUS_SUSTAIN_MS as tn, createBrokerDeviceManagerApi as tt, EVENT_TOPIC_PREFIX as u, emitHeapDiagnosticReport as un, capActionSuffix as ut, createKernelHwAccel as v, createOutboundQueueGate as vn, CapabilityUnavailableError as vt, ipcParentLink as w, SOCKET_PLANE_TOP_N as wn, runNpm as wt, brokerTransportLink as x, createMeshQueueReader as xn, resolveAddonClass as xt, resolveHwAccel as y, formatOutboundQueueVerdict as yn, copyBundledNativeModules as yt, LocalChildRegistry as z, EMPTY_CAP_ACTION_READING as zn, RUNNER_RSS_BUDGET_ENV as zt };
12273
+ //#region src/kernel/moleculer/child-cap-dispatch.ts
12274
+ /** Type guard narrowing a dynamically-read provider member to a callable method. */
12275
+ function isCapMethod(value) {
12276
+ return typeof value === "function";
12277
+ }
12278
+ /**
12279
+ * Prefix the hub matches to turn a child-side "declared optional, not served"
12280
+ * into a `NOT_IMPLEMENTED`. A prefix rather than an error subclass because the
12281
+ * error crosses a UDS boundary as a plain message.
12282
+ */
12283
+ var CAP_METHOD_NOT_IMPLEMENTED = "CAP_METHOD_NOT_IMPLEMENTED";
12284
+ /**
12285
+ * Extract a string `addonId` out of arbitrary method args — the fallback
12286
+ * provider-selection hint for calls that arrive WITHOUT the out-of-band
12287
+ * `CapCallMessage.addonId` (e.g. a sibling child's unowned collection call
12288
+ * forwarded by the parent, where the raw input still carries `addonId`).
12289
+ */
12290
+ function extractArgsAddonId(args) {
12291
+ if (args === null || typeof args !== "object") return void 0;
12292
+ const raw = Reflect.get(args, "addonId");
12293
+ return typeof raw === "string" ? raw : void 0;
12294
+ }
12295
+ /**
12296
+ * Creates a unified dispatcher that routes a {@link CapCallInput} to either a
12297
+ * device-scoped or singleton provider, then invokes the requested method.
12298
+ *
12299
+ * Pure module — no Moleculer, no broker, no addon-runner dependency.
12300
+ */
12301
+ function createChildCapDispatch(deps) {
12302
+ return async (call) => {
12303
+ const { capName, method, args, deviceId } = call;
12304
+ const addonId = call.addonId ?? extractArgsAddonId(args);
12305
+ let provider;
12306
+ if (deviceId !== void 0) {
12307
+ provider = deps.getDeviceProvider(capName, deviceId) ?? deps.getSingletonProvider(capName, addonId);
12308
+ if (provider == null) throw new Error(`child-cap-dispatch: no provider for '${capName}' (device '${String(deviceId)}' or singleton)`);
12309
+ } else {
12310
+ provider = deps.getSingletonProvider(capName, addonId);
12311
+ if (provider == null) throw new Error(`child-cap-dispatch: no singleton provider for '${capName}'`);
12312
+ }
12313
+ const fn = Reflect.get(provider, method);
12314
+ if (!isCapMethod(fn)) {
12315
+ if (deps.isCollectionListMethod(capName, method)) return [];
12316
+ if (deps.isProviderOptionalMethod(capName, method)) throw new Error(`${CAP_METHOD_NOT_IMPLEMENTED}: '${capName}.${method}' is declared optional and this provider does not serve it`);
12317
+ throw new Error(`child-cap-dispatch: method '${method}' not found on provider '${capName}'`);
12318
+ }
12319
+ return await fn.call(provider, args);
12320
+ };
12321
+ }
12322
+ //#endregion
12323
+ export { FrameDecoder as $, startHeapWatch as $t, createUdsEventBus as A, diffSocketPlane as An, HEAP_RECLAIM_MIN_INTERVAL_MS as At, LocalChildClient as B, CAP_ACTION_UNLABELLED as Bn, RUNNER_HEAP_WATCH_INTERVAL_MS as Bt, brokerTransportLink as C, createMeshQueueReader as Cn, resolveAddonClass as Ct, localProviderLink as D, SOCKET_QUEUE_TOP_N as Dn, createAddonPeerBytesFacility as Dt, ipcParentLink as E, SOCKET_PLANE_TOP_N as En, runNpm as Et, AGENT_CAP_FWD_SERVICE as F, recordSocketFrame as Fn, HUB_MAIN_HEAP_WATCH_LABEL as Ft, PARENT_ROUTED_PROVIDER_ADDON_ID as G, diffCapActionCensus as Gn, createLoopDelayMeter as Gt, UDS_NO_ROUTE_PREFIX as H, MAX_CAP_ACTIONS_PER_PEER as Hn, ZERO_LOOP_DELAY as Ht, CapRouteResolver as I, sampleSocketDirection as In, HUB_MAIN_RSS_BUDGET_MB as It, createLocalTransport as J, createEventPlaneReader as Jn, hubMainRssBudget as Jt, __resetCapUsageRegistryForTests as K, EVENT_PLANE_TOP_N as Kn, createV8Reclaimer as Kt, callWithServiceDiscovery as L, socketDirectionBytes as Ln, HUB_RSS_BUDGET_ENV as Lt, createUdsLogger as M, readSocketQueues as Mn, HEAP_RECLAIM_TRIGGER_MB as Mt, createUdsLoggerWithControl as N, EMPTY_SOCKET_DIRECTION as Nn, HEAP_WATCH_INTERVAL_MS as Nt, createParentUnownedCallHandler as O, createSocketPlaneMeter as On, hostNodeIdOf as Ot, AGENT_CAP_FWD_ACTION as P, createSocketDirectionCounters as Pn, HEAP_WATCH_WARN_RATIO as Pt, localEndpointPath as Q, shouldReclaim as Qt, CapRouteError as R, socketDirectionMessages as Rn, RSS_BUDGET_REANNOUNCE_MIN_MS as Rt, brokerCallForCap as S, MESH_QUEUE_TOP_N as Sn, installManifestNativeDeps as St, deviceCapResolverLink as T, EMPTY_SOCKET_PLANE_BASELINE as Tn, resolveNpmInvocation as Tt, readMoleculerFanoutMode as U, capActionLabel as Un, buildHeapSample as Ut, LocalChildRegistry as V, EMPTY_CAP_ACTION_READING as Vn, RUNNER_RSS_BUDGET_ENV as Vt, CapUsageRegistry as W, createCapActionCensus as Wn, createDeferredHeapWatchSink as Wt, UdsLocalTransportServer as X, formatEventPlane as Xn, parseRssBudgetMb as Xt, UdsLocalTransportClient as Y, diffEventPlane as Yn, nextRssBudgetState as Yt, SocketChannel as Z, reclaimIntervalMs as Zt, setNodeEventInterest as _, OUTBOUND_QUEUE_COOLDOWN_MS as _n, serializeTypedArrays as _t, adaptBrokerToCluster as a, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO as an, getWorkerNativeCapSnapshot as at, createKernelHwAccel as b, createOutboundQueueGate as bn, CapabilityUnavailableError as bt, getWorkerDeviceRegistry as c, formatArrayBufferCensus as cn, createAddonService as ct, setHubConnected as d, HEAP_SPACE_REPORT_MIN_MB as dn, capActionName as dt, startRunnerHeapWatch as en, encodeFrame as et, EVENT_TOPIC_PREFIX as f, emitHeapDiagnosticReport as fn, capActionSuffix as ft, registerEventBusService as g, selectReportedSpaces as gn, deserializeTypedArrays as gt, getMoleculerEventStats as h, readHeapSpaces as hn, parseCapAction as ht, installManifestPythonDeps as i, ARRAY_BUFFER_CENSUS_THRESHOLD_MB as in, getWorkerNativeCapProvider as it, udsChildLogToWorkerEntry as j, formatSocketPlane as jn, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS as jt, createUdsEventBridge as k, createSocketPlaneReader as kn, createAddonDataPlaneFacility as kt, getOrInitReadinessRegistry as l, isArrayBufferCensusReport as ln, validateProviderRegistrations as lt, getBrokerEventBus as m, heapSpaceField as mn, capServiceName as mt, createChildCapDispatch as n, ARRAY_BUFFER_CENSUS_COOLDOWN_MS as nn, buildUdsNativeCapProxy as nt, createAddonContext as o, createArrayBufferCensusGate as on, mountNativeCapService as ot, clusterEventTopic as p, formatHeapSpaces as pn, capBareAction as pt, getCapUsageRegistry as q, createEventPlaneMeter as qn, describeRss as qt, installManifestSystemDeps as r, ARRAY_BUFFER_CENSUS_SUSTAIN_MS as rn, createBrokerDeviceManagerApi as rt, createUdsAddonContext as s, createInspectorArrayBufferCensus as sn, setWorkerNativeCapsChangeListener as st, CAP_METHOD_NOT_IMPLEMENTED as t, strandedMb as tn, buildNativeCapProxy as tt, getOrInitReadinessRegistryForClient as u, DECISIVE_HEAP_SPACES as un, NATIVE_PROVIDER_SERVICE_INFIX as ut, subscribePassthrough as v, OUTBOUND_QUEUE_SUSTAIN_MS as vn, DeviceRegistry as vt, buildLinkChain as w, formatMeshQueue as wn, buildNpmChildEnv as wt, resolveHwAccel as x, formatOutboundQueueVerdict as xn, copyBundledNativeModules as xt, AddonDepsManager as y, OUTBOUND_QUEUE_THRESHOLD_BYTES as yn, CapabilityHandle as yt, classifyCapRoute as z, CAP_ACTION_OVERFLOW_LABEL as zn, RSS_BUDGET_RELEASE_RATIO as zt };
@@ -1,5 +1,4 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-KRK9zLWt.js");
3
2
  require("./hub-cap-forward-DmHNjbB0.js");
4
3
  let node_crypto = require("node:crypto");
5
4
  node_crypto = require_chunk.__toESM(node_crypto);
@@ -2692,7 +2691,7 @@ async function writeBufferWithBackpressure(res, bytes, stallMs) {
2692
2691
  sent,
2693
2692
  outcome: "peer-gone"
2694
2693
  };
2695
- const end = Math.min(sent + require_dist.PEER_BYTES_CHUNK_BYTES, bytes.byteLength);
2694
+ const end = Math.min(sent + _camstack_types_addon.PEER_BYTES_CHUNK_BYTES, bytes.byteLength);
2696
2695
  const took = res.write(bytes.subarray(sent, end));
2697
2696
  sent = end;
2698
2697
  if (took) continue;
@@ -2710,9 +2709,9 @@ async function writeBufferWithBackpressure(res, bytes, stallMs) {
2710
2709
  }
2711
2710
  function createAddonPeerBytesFacility(args) {
2712
2711
  const now = args.now ?? (() => Date.now());
2713
- const ttlMs = args.ttlMs ?? 3e4;
2714
- const maxOutstanding = args.maxOutstanding ?? 64;
2715
- const stallMs = args.stallMs ?? 15e3;
2712
+ const ttlMs = args.ttlMs ?? _camstack_types_addon.PEER_BYTES_TICKET_TTL_MS;
2713
+ const maxOutstanding = args.maxOutstanding ?? _camstack_types_addon.PEER_BYTES_MAX_OUTSTANDING;
2714
+ const stallMs = args.stallMs ?? _camstack_types_addon.PEER_BYTES_STALL_MS;
2716
2715
  const host = args.host ?? "127.0.0.1";
2717
2716
  const hostNodeId = hostNodeIdOf(args.nodeId);
2718
2717
  const offers = /* @__PURE__ */ new Map();
@@ -12274,6 +12273,56 @@ async function defaultRun(command, args) {
12274
12273
  await execFileAsync(command, [...args], { timeout: INSTALL_TIMEOUT_MS });
12275
12274
  }
12276
12275
  //#endregion
12276
+ //#region src/kernel/moleculer/child-cap-dispatch.ts
12277
+ /** Type guard narrowing a dynamically-read provider member to a callable method. */
12278
+ function isCapMethod(value) {
12279
+ return typeof value === "function";
12280
+ }
12281
+ /**
12282
+ * Prefix the hub matches to turn a child-side "declared optional, not served"
12283
+ * into a `NOT_IMPLEMENTED`. A prefix rather than an error subclass because the
12284
+ * error crosses a UDS boundary as a plain message.
12285
+ */
12286
+ var CAP_METHOD_NOT_IMPLEMENTED = "CAP_METHOD_NOT_IMPLEMENTED";
12287
+ /**
12288
+ * Extract a string `addonId` out of arbitrary method args — the fallback
12289
+ * provider-selection hint for calls that arrive WITHOUT the out-of-band
12290
+ * `CapCallMessage.addonId` (e.g. a sibling child's unowned collection call
12291
+ * forwarded by the parent, where the raw input still carries `addonId`).
12292
+ */
12293
+ function extractArgsAddonId(args) {
12294
+ if (args === null || typeof args !== "object") return void 0;
12295
+ const raw = Reflect.get(args, "addonId");
12296
+ return typeof raw === "string" ? raw : void 0;
12297
+ }
12298
+ /**
12299
+ * Creates a unified dispatcher that routes a {@link CapCallInput} to either a
12300
+ * device-scoped or singleton provider, then invokes the requested method.
12301
+ *
12302
+ * Pure module — no Moleculer, no broker, no addon-runner dependency.
12303
+ */
12304
+ function createChildCapDispatch(deps) {
12305
+ return async (call) => {
12306
+ const { capName, method, args, deviceId } = call;
12307
+ const addonId = call.addonId ?? extractArgsAddonId(args);
12308
+ let provider;
12309
+ if (deviceId !== void 0) {
12310
+ provider = deps.getDeviceProvider(capName, deviceId) ?? deps.getSingletonProvider(capName, addonId);
12311
+ if (provider == null) throw new Error(`child-cap-dispatch: no provider for '${capName}' (device '${String(deviceId)}' or singleton)`);
12312
+ } else {
12313
+ provider = deps.getSingletonProvider(capName, addonId);
12314
+ if (provider == null) throw new Error(`child-cap-dispatch: no singleton provider for '${capName}'`);
12315
+ }
12316
+ const fn = Reflect.get(provider, method);
12317
+ if (!isCapMethod(fn)) {
12318
+ if (deps.isCollectionListMethod(capName, method)) return [];
12319
+ if (deps.isProviderOptionalMethod(capName, method)) throw new Error(`${CAP_METHOD_NOT_IMPLEMENTED}: '${capName}.${method}' is declared optional and this provider does not serve it`);
12320
+ throw new Error(`child-cap-dispatch: method '${method}' not found on provider '${capName}'`);
12321
+ }
12322
+ return await fn.call(provider, args);
12323
+ };
12324
+ }
12325
+ //#endregion
12277
12326
  Object.defineProperty(exports, "AGENT_CAP_FWD_ACTION", {
12278
12327
  enumerable: true,
12279
12328
  get: function() {
@@ -12328,6 +12377,12 @@ Object.defineProperty(exports, "CAP_ACTION_UNLABELLED", {
12328
12377
  return CAP_ACTION_UNLABELLED;
12329
12378
  }
12330
12379
  });
12380
+ Object.defineProperty(exports, "CAP_METHOD_NOT_IMPLEMENTED", {
12381
+ enumerable: true,
12382
+ get: function() {
12383
+ return CAP_METHOD_NOT_IMPLEMENTED;
12384
+ }
12385
+ });
12331
12386
  Object.defineProperty(exports, "CapRouteError", {
12332
12387
  enumerable: true,
12333
12388
  get: function() {
@@ -12730,6 +12785,12 @@ Object.defineProperty(exports, "createCapActionCensus", {
12730
12785
  return createCapActionCensus;
12731
12786
  }
12732
12787
  });
12788
+ Object.defineProperty(exports, "createChildCapDispatch", {
12789
+ enumerable: true,
12790
+ get: function() {
12791
+ return createChildCapDispatch;
12792
+ }
12793
+ });
12733
12794
  Object.defineProperty(exports, "createDeferredHeapWatchSink", {
12734
12795
  enumerable: true,
12735
12796
  get: function() {