@camstack/system 1.1.48 → 1.1.50

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 (49) hide show
  1. package/dist/addon-runner.js +15 -3
  2. package/dist/addon-runner.mjs +15 -3
  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/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/hub-forwarder/index.js +1 -1
  16. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  17. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  18. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  19. package/dist/builtins/local-network/local-network.addon.js +1 -1
  20. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  21. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  22. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  23. package/dist/builtins/platform-probe/coral-accelerators.d.ts +22 -0
  24. package/dist/builtins/platform-probe/index.js +67 -2
  25. package/dist/builtins/platform-probe/index.mjs +67 -2
  26. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  27. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  28. package/dist/builtins/snapshot/index.js +1 -1
  29. package/dist/builtins/snapshot/index.mjs +1 -1
  30. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  31. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  32. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  33. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  34. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  35. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  36. package/dist/builtins/system-config/system-config.addon.js +1 -1
  37. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  38. package/dist/builtins/winston-logging/index.js +1 -1
  39. package/dist/builtins/winston-logging/index.mjs +1 -1
  40. package/dist/{dist-BMN1IAl3.mjs → dist-CC3E-_3h.mjs} +1235 -55
  41. package/dist/{dist-CiveK-yv.js → dist-CQYo6Zp8.js} +1252 -54
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.js +6 -3
  44. package/dist/index.mjs +6 -4
  45. package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +2 -0
  46. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +12 -0
  47. package/dist/{manifest-python-deps-CWBvn2eF.mjs → manifest-python-deps-DqATCsK0.mjs} +31 -4
  48. package/dist/{manifest-python-deps-DRE97YbS.js → manifest-python-deps-Wy8dNJpr.js} +31 -4
  49. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ensureBinary, downloadBinary, findInPath, getPlatformInfo, buildBinaryPath, ensureFfmpeg, getFfmpegDownloadUrl, ensurePython, installPythonPackages, installPythonRequirements, getPythonDownloadUrl, PYTHON_VERSION, } from '@camstack/types/node';
2
2
  export type { PlatformInfo } from '@camstack/types/node';
3
- export { ALL_CAPABILITY_DEFINITIONS, METHOD_ACCESS_MAP, expandCapMethods, isArrayOutputSchema, addonSettingsCapability, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, } from '@camstack/types';
3
+ export { ALL_CAPABILITY_DEFINITIONS, METHOD_ACCESS_MAP, expandCapMethods, isArrayOutputSchema, isCollectionArrayMethod, addonSettingsCapability, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, } from '@camstack/types';
4
4
  export { EventBus } from './events/event-bus.js';
5
5
  export { createAuthenticatedFileServer, parseTokenizedUrl, resolveFilePath, contentTypeFor, parseRangeHeader, } from './http/authenticated-file-server.js';
6
6
  export type { AuthenticatedFileServerOptions, FileServerHandle, FileServerTokenVerifier, FileResolveResult, ByteRange, } from './http/authenticated-file-server.js';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-CiveK-yv.js");
3
+ const require_dist = require("./dist-CQYo6Zp8.js");
4
4
  const require_model_download_service = require("./model-download-service-D-Umz4-L.js");
5
5
  const require_resource_monitor = require("./resource-monitor-DNNomR-i.js");
6
6
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
@@ -21,7 +21,7 @@ const require_builtins_local_auth_local_auth_addon = require("./builtins/local-a
21
21
  require("./builtins/local-auth/index.js");
22
22
  const require_builtins_device_manager_device_manager_addon = require("./builtins/device-manager/device-manager.addon.js");
23
23
  require("./builtins/device-manager/index.js");
24
- const require_manifest_python_deps = require("./manifest-python-deps-DRE97YbS.js");
24
+ const require_manifest_python_deps = require("./manifest-python-deps-Wy8dNJpr.js");
25
25
  const require_custom_action_registry = require("./custom-action-registry-vLYEFTtv.js");
26
26
  let _camstack_types_node = require("@camstack/types/node");
27
27
  let zod = require("zod");
@@ -5121,7 +5121,9 @@ function buildOneCapRouter(def, primitives, services) {
5121
5121
  if (isCollection) {
5122
5122
  const { rest, picked } = stripKeys(input, ["nodeId", "addonId"]);
5123
5123
  const nodeId = typeof picked.nodeId === "string" ? picked.nodeId : void 0;
5124
- const addonId = typeof picked.addonId === "string" ? picked.addonId : void 0;
5124
+ const topLevelAddonId = typeof picked.addonId === "string" ? picked.addonId : void 0;
5125
+ const canRecoverNestedAddonId = !require_dist.isArrayOutputSchema(method.schema.output) && !require_dist.objectInputDeclaresAddonId(method.schema.input);
5126
+ const addonId = topLevelAddonId ?? (canRecoverNestedAddonId ? require_dist.extractNestedAddonId(rest) : void 0);
5125
5127
  return resolveProviderForCall(capName, nodeId, () => getLocal(ctx, addonId), services)[method.name]?.(rest);
5126
5128
  }
5127
5129
  const { rest, picked } = stripKeys(input, ["nodeId"]);
@@ -93628,6 +93630,7 @@ exports.ipcParentLink = require_manifest_python_deps.ipcParentLink;
93628
93630
  exports.isAddonDeploySource = isAddonDeploySource;
93629
93631
  exports.isArrayOutputSchema = require_dist.isArrayOutputSchema;
93630
93632
  exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
93633
+ exports.isCollectionArrayMethod = require_dist.isCollectionArrayMethod;
93631
93634
  exports.isInfraCapability = isInfraCapability;
93632
93635
  exports.isModelDownloaded = require_model_download_service.isModelDownloaded;
93633
93636
  exports.isSourceNewer = isSourceNewer;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as errMsg$1, A as isVoidInput, Ct as resolveCapMount, F as looseSchema, M as lifecycleJobSchema, O as isArrayOutputSchema, St as readinessKey, V as procedureAuthKey, _t as expandCapMethods, bt as parseJsonObject, ct as ReadinessRegistry, dt as asJsonObject$1, ft as asNumber, ht as emitDownForOwnedCaps, j as kebabToCamel, k as isObjectInput, lt as ReadinessTimeoutError, mt as createEvent, nt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, o as METHOD_ACCESS_MAP, p as addonSettingsCapability, pt as asString$1, rt as DEVICE_STATUS_METHOD, s as RUNTIME_DEFAULTS, st as EventCategory$1, t as ALL_CAPABILITY_DEFINITIONS, tt as DATAPLANE_SECRET_HEADER$1, wt as scopeKey, xt as parseJsonUnknown$1 } from "./dist-BMN1IAl3.mjs";
1
+ import { A as isCollectionArrayMethod, Ct as parseJsonObject, Dt as scopeKey, E as extractNestedAddonId, Et as resolveCapMount, L as looseSchema, M as isVoidInput, N as kebabToCamel, P as lifecycleJobSchema, Tt as readinessKey, V as objectInputDeclaresAddonId, W as procedureAuthKey, _t as createEvent, at as DEVICE_SETTINGS_CONTRIBUTION_METHODS, bt as expandCapMethods, dt as ReadinessRegistry, ft as ReadinessTimeoutError, gt as asString$1, ht as asNumber, it as DATAPLANE_SECRET_HEADER$1, j as isObjectInput, k as isArrayOutputSchema, mt as asJsonObject$1, nt as errMsg$1, o as METHOD_ACCESS_MAP, ot as DEVICE_STATUS_METHOD, p as addonSettingsCapability, s as RUNTIME_DEFAULTS, t as ALL_CAPABILITY_DEFINITIONS, ut as EventCategory$1, vt as emitDownForOwnedCaps, wt as parseJsonUnknown$1 } from "./dist-CC3E-_3h.mjs";
2
2
  import { a as downloadModel, c as getModelFilePath, d as contentTypeFor, f as createAuthenticatedFileServer, h as resolveFilePath, i as downloadFile, l as isModelDownloaded, m as parseTokenizedUrl, n as collectModelFiles, o as ensureModel, p as parseRangeHeader, r as deleteModelFromDisk, s as fetchJson, t as ModelDownloadService, u as createFileDataPlaneHandler } from "./model-download-service-C-IHWnXx.mjs";
3
3
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Le3l0qS2.mjs";
4
4
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
@@ -19,7 +19,7 @@ import { LocalAuthAddon, a as require_ms, c as __esmMin, d as __toCommonJS, f as
19
19
  import "./builtins/local-auth/index.mjs";
20
20
  import { DeviceManagerAddon } from "./builtins/device-manager/device-manager.addon.mjs";
21
21
  import "./builtins/device-manager/index.mjs";
22
- import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, y as __resetCapUsageRegistryForTests, yt as resolveAddonClass, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-CWBvn2eF.mjs";
22
+ import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, y as __resetCapUsageRegistryForTests, yt as resolveAddonClass, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-DqATCsK0.mjs";
23
23
  import { t as CustomActionRegistry } from "./custom-action-registry-BEXwC-oo.mjs";
24
24
  import { PYTHON_VERSION, buildBinaryPath, downloadBinary, ensureBinary, ensureFfmpeg, ensurePython, findInPath, getFfmpegDownloadUrl, getPlatformInfo, getPythonDownloadUrl, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
25
25
  import { z } from "zod";
@@ -5113,7 +5113,9 @@ function buildOneCapRouter(def, primitives, services) {
5113
5113
  if (isCollection) {
5114
5114
  const { rest, picked } = stripKeys(input, ["nodeId", "addonId"]);
5115
5115
  const nodeId = typeof picked.nodeId === "string" ? picked.nodeId : void 0;
5116
- const addonId = typeof picked.addonId === "string" ? picked.addonId : void 0;
5116
+ const topLevelAddonId = typeof picked.addonId === "string" ? picked.addonId : void 0;
5117
+ const canRecoverNestedAddonId = !isArrayOutputSchema(method.schema.output) && !objectInputDeclaresAddonId(method.schema.input);
5118
+ const addonId = topLevelAddonId ?? (canRecoverNestedAddonId ? extractNestedAddonId(rest) : void 0);
5117
5119
  return resolveProviderForCall(capName, nodeId, () => getLocal(ctx, addonId), services)[method.name]?.(rest);
5118
5120
  }
5119
5121
  const { rest, picked } = stripKeys(input, ["nodeId"]);
@@ -93368,4 +93370,4 @@ async function stageFrameworkLockstep(input) {
93368
93370
  return results;
93369
93371
  }
93370
93372
  //#endregion
93371
- export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CustomActionRegistry, DEFAULT_DATA_PATH, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FRAMEWORK_LOCKSTEP, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LifecycleJobEngine, LifecycleStateMachine, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, RESTART_MARKER_FILE, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, __resetCapUsageRegistryForTests, adaptBrokerToCluster, addonSettingsCapability, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, capActionName, capActionSuffix, capBareAction, capServiceName, classifyCapRoute, clearPendingRestart, clusterSecretMatches, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonService, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCoreCapService, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createKernelHwAccel, createLocalTransport, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, detectWorkspacePackagesDir, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, encodeFrame, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensurePython, ensureTlsCert, expandCapMethods, fetchJson, findInPath, formatLogLine, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hashClusterSecret, installManifestNativeDeps, installManifestPythonDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcChildLink, ipcParentLink, isAddonDeploySource, isArrayOutputSchema, isClusterSecretMismatchError, isInfraCapability, isModelDownloaded, isSourceNewer, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, parseCapAction, parseRangeHeader, parseTokenizedUrl, proxyToUpstream, readPendingRestart, readinessKey, registerEventBusService, resolveFilePath, resolveHwAccel, scheduleSelfRestart, scopeKey, scopesAllowDeviceCap, serializeTypedArrays, setHubConnected, setNodeEventInterest, stageFrameworkLockstep, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, writePendingRestart };
93373
+ export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CustomActionRegistry, DEFAULT_DATA_PATH, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FRAMEWORK_LOCKSTEP, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LifecycleJobEngine, LifecycleStateMachine, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, RESTART_MARKER_FILE, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, __resetCapUsageRegistryForTests, adaptBrokerToCluster, addonSettingsCapability, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, capActionName, capActionSuffix, capBareAction, capServiceName, classifyCapRoute, clearPendingRestart, clusterSecretMatches, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonService, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCoreCapService, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createKernelHwAccel, createLocalTransport, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, detectWorkspacePackagesDir, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, encodeFrame, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensurePython, ensureTlsCert, expandCapMethods, fetchJson, findInPath, formatLogLine, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hashClusterSecret, installManifestNativeDeps, installManifestPythonDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcChildLink, ipcParentLink, isAddonDeploySource, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceNewer, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, parseCapAction, parseRangeHeader, parseTokenizedUrl, proxyToUpstream, readPendingRestart, readinessKey, registerEventBusService, resolveFilePath, resolveHwAccel, scheduleSelfRestart, scopeKey, scopesAllowDeviceCap, serializeTypedArrays, setHubConnected, setNodeEventInterest, stageFrameworkLockstep, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, writePendingRestart };
@@ -8,6 +8,8 @@ export interface PlatformSignals {
8
8
  readonly hasRenderNode: boolean;
9
9
  /** Intel NPU (Meteor Lake / Core Ultra "AI Boost") — exposed as /dev/accel/accel0. */
10
10
  readonly hasIntelNpu: boolean;
11
+ /** Coral USB Edge TPU — a discrete USB accelerator (gates the `edgetpu` runtime). */
12
+ readonly hasCoral: boolean;
11
13
  }
12
14
  export declare function probePlatform(): PlatformSignals;
13
15
  /**
@@ -18,6 +18,18 @@ export interface ChildCapDispatchDeps {
18
18
  getSingletonProvider(capName: string, addonId?: string): object | null | undefined;
19
19
  /** Resolve a device-scoped provider by cap name and device id. */
20
20
  getDeviceProvider(capName: string, deviceId: number): object | null | undefined;
21
+ /**
22
+ * Predicate: is `(capName, method)` a COLLECTION cap's array-returning
23
+ * method? Such methods aggregate a UNION across every registered provider,
24
+ * so a provider that doesn't implement one must contribute `[]` (graceful
25
+ * skip) — the dispatcher returns `[]` instead of throwing "method not found".
26
+ * The hub-side `concatCollection` / `concatArrayMethod` does this skip
27
+ * locally, but a hub→child UDS proxy fabricates a callable for every property
28
+ * so the absence is only observable HERE, on the child that owns the real
29
+ * (possibly partial) provider. For singleton caps and non-array methods a
30
+ * missing method is a genuine bug and still throws.
31
+ */
32
+ isCollectionListMethod(capName: string, method: string): boolean;
21
33
  }
22
34
  /**
23
35
  * Creates a unified dispatcher that routes a {@link CapCallInput} to either a
@@ -1,4 +1,4 @@
1
- import { H as readNodePin } from "./dist-BMN1IAl3.mjs";
1
+ import { G as readNodePin } from "./dist-CC3E-_3h.mjs";
2
2
  import { ensureBinary, ensureFfmpeg, ensurePython, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
3
3
  import { createServer } from "node:http";
4
4
  import * as fs from "node:fs";
@@ -5583,6 +5583,30 @@ function safeExistsSync(path) {
5583
5583
  return false;
5584
5584
  }
5585
5585
  }
5586
+ /**
5587
+ * Detect a Coral USB Edge TPU: a matching USB device (`1a6e:089a` pre-init or
5588
+ * `18d1:9302` post-init) OR the installed libedgetpu delegate (the hub
5589
+ * provisions it out-of-band; its presence is a reliable "Coral is wired"
5590
+ * signal even where the container's `/sys` USB view is limited).
5591
+ */
5592
+ function detectCoralUsb() {
5593
+ const CORAL_IDS = [{
5594
+ vendor: "1a6e",
5595
+ product: "089a"
5596
+ }, {
5597
+ vendor: "18d1",
5598
+ product: "9302"
5599
+ }];
5600
+ try {
5601
+ for (const device of fs.readdirSync("/sys/bus/usb/devices")) try {
5602
+ const base = `/sys/bus/usb/devices/${device}`;
5603
+ const vendor = fs.readFileSync(`${base}/idVendor`, "utf8").trim().toLowerCase();
5604
+ const product = fs.readFileSync(`${base}/idProduct`, "utf8").trim().toLowerCase();
5605
+ if (CORAL_IDS.some((id) => id.vendor === vendor && id.product === product)) return true;
5606
+ } catch {}
5607
+ } catch {}
5608
+ return safeExistsSync(process.env["CAMSTACK_EDGETPU_LIB"] ?? "/data/deps/edgetpu/lib/libedgetpu.so.1");
5609
+ }
5586
5610
  /** Probe Linux GPU vendors by parsing /proc/bus/pci/devices or /sys/class/drm. */
5587
5611
  function probeLinuxGpus() {
5588
5612
  const signals = {
@@ -5590,7 +5614,8 @@ function probeLinuxGpus() {
5590
5614
  hasAmdGpu: false,
5591
5615
  hasIntelGpu: false,
5592
5616
  hasRenderNode: false,
5593
- hasIntelNpu: safeExistsSync("/dev/accel/accel0")
5617
+ hasIntelNpu: safeExistsSync("/dev/accel/accel0"),
5618
+ hasCoral: detectCoralUsb()
5594
5619
  };
5595
5620
  signals.hasRenderNode = safeExistsSync("/dev/dri/renderD128");
5596
5621
  if (safeExistsSync("/dev/nvidia0") || safeExistsSync("/proc/driver/nvidia/version")) signals.hasNvidiaGpu = true;
@@ -5623,7 +5648,8 @@ function probePlatform() {
5623
5648
  hasAmdGpu: false,
5624
5649
  hasIntelGpu: false,
5625
5650
  hasRenderNode: false,
5626
- hasIntelNpu: false
5651
+ hasIntelNpu: false,
5652
+ hasCoral: safeExistsSync(process.env["CAMSTACK_EDGETPU_LIB"] ?? "/data/deps/edgetpu/lib/libedgetpu.so.1")
5627
5653
  };
5628
5654
  }
5629
5655
  function pickBackendsForPlatform(signals) {
@@ -5708,7 +5734,8 @@ function createKernelHwAccel() {
5708
5734
  function mapSignalsToInferenceHardware(signals) {
5709
5735
  return {
5710
5736
  gpu: signals.hasNvidiaGpu ? { type: "nvidia" } : signals.hasIntelGpu || signals.hasRenderNode ? { type: "intel" } : null,
5711
- npu: signals.platform === "darwin" && signals.arch === "arm64" ? { type: "apple-ane" } : signals.hasIntelNpu ? { type: "intel-npu" } : null
5737
+ npu: signals.platform === "darwin" && signals.arch === "arm64" ? { type: "apple-ane" } : signals.hasIntelNpu ? { type: "intel-npu" } : null,
5738
+ coral: signals.hasCoral ? { type: "coral-edgetpu" } : null
5712
5739
  };
5713
5740
  }
5714
5741
  /**
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CiveK-yv.js");
2
+ const require_dist = require("./dist-CQYo6Zp8.js");
3
3
  let _camstack_types_node = require("@camstack/types/node");
4
4
  let node_http = require("node:http");
5
5
  let node_fs = require("node:fs");
@@ -5585,6 +5585,30 @@ function safeExistsSync(path) {
5585
5585
  return false;
5586
5586
  }
5587
5587
  }
5588
+ /**
5589
+ * Detect a Coral USB Edge TPU: a matching USB device (`1a6e:089a` pre-init or
5590
+ * `18d1:9302` post-init) OR the installed libedgetpu delegate (the hub
5591
+ * provisions it out-of-band; its presence is a reliable "Coral is wired"
5592
+ * signal even where the container's `/sys` USB view is limited).
5593
+ */
5594
+ function detectCoralUsb() {
5595
+ const CORAL_IDS = [{
5596
+ vendor: "1a6e",
5597
+ product: "089a"
5598
+ }, {
5599
+ vendor: "18d1",
5600
+ product: "9302"
5601
+ }];
5602
+ try {
5603
+ for (const device of node_fs.readdirSync("/sys/bus/usb/devices")) try {
5604
+ const base = `/sys/bus/usb/devices/${device}`;
5605
+ const vendor = node_fs.readFileSync(`${base}/idVendor`, "utf8").trim().toLowerCase();
5606
+ const product = node_fs.readFileSync(`${base}/idProduct`, "utf8").trim().toLowerCase();
5607
+ if (CORAL_IDS.some((id) => id.vendor === vendor && id.product === product)) return true;
5608
+ } catch {}
5609
+ } catch {}
5610
+ return safeExistsSync(process.env["CAMSTACK_EDGETPU_LIB"] ?? "/data/deps/edgetpu/lib/libedgetpu.so.1");
5611
+ }
5588
5612
  /** Probe Linux GPU vendors by parsing /proc/bus/pci/devices or /sys/class/drm. */
5589
5613
  function probeLinuxGpus() {
5590
5614
  const signals = {
@@ -5592,7 +5616,8 @@ function probeLinuxGpus() {
5592
5616
  hasAmdGpu: false,
5593
5617
  hasIntelGpu: false,
5594
5618
  hasRenderNode: false,
5595
- hasIntelNpu: safeExistsSync("/dev/accel/accel0")
5619
+ hasIntelNpu: safeExistsSync("/dev/accel/accel0"),
5620
+ hasCoral: detectCoralUsb()
5596
5621
  };
5597
5622
  signals.hasRenderNode = safeExistsSync("/dev/dri/renderD128");
5598
5623
  if (safeExistsSync("/dev/nvidia0") || safeExistsSync("/proc/driver/nvidia/version")) signals.hasNvidiaGpu = true;
@@ -5625,7 +5650,8 @@ function probePlatform() {
5625
5650
  hasAmdGpu: false,
5626
5651
  hasIntelGpu: false,
5627
5652
  hasRenderNode: false,
5628
- hasIntelNpu: false
5653
+ hasIntelNpu: false,
5654
+ hasCoral: safeExistsSync(process.env["CAMSTACK_EDGETPU_LIB"] ?? "/data/deps/edgetpu/lib/libedgetpu.so.1")
5629
5655
  };
5630
5656
  }
5631
5657
  function pickBackendsForPlatform(signals) {
@@ -5710,7 +5736,8 @@ function createKernelHwAccel() {
5710
5736
  function mapSignalsToInferenceHardware(signals) {
5711
5737
  return {
5712
5738
  gpu: signals.hasNvidiaGpu ? { type: "nvidia" } : signals.hasIntelGpu || signals.hasRenderNode ? { type: "intel" } : null,
5713
- npu: signals.platform === "darwin" && signals.arch === "arm64" ? { type: "apple-ane" } : signals.hasIntelNpu ? { type: "intel-npu" } : null
5739
+ npu: signals.platform === "darwin" && signals.arch === "arm64" ? { type: "apple-ane" } : signals.hasIntelNpu ? { type: "intel-npu" } : null,
5740
+ coral: signals.hasCoral ? { type: "coral-edgetpu" } : null
5714
5741
  };
5715
5742
  }
5716
5743
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.1.48",
3
+ "version": "1.1.50",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",